_linkcmds 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. /* memory-config builder in ACoreIDE by qxbin*/
  2. /*7 Mar 2025 08:21:44 GMT*/
  3. ENTRY(_start)
  4. MEMORY
  5. {
  6. ram : ORIGIN = 0x85000000, LENGTH = 0x3000000
  7. }
  8. SECTIONS {
  9. .text ((0x85000000 + (0x00001000-1))& ~ (0x00001000-1)) :
  10. {
  11. ".text_start" = .;
  12. _code_start = .;
  13. .__start_code = .;
  14. *(.__start);
  15. . = .__start_code + 0x20;
  16. *(.__ImageInfo);
  17. CREATE_OBJECT_SYMBOLS *( .text ) ;
  18. *(.m_hdr) ;
  19. *(.fixup);
  20. __EH_FRAME_BEGIN__ = .;
  21. *(.eh_frame) ;
  22. *(.gnu.linkonce.t*) ;
  23. . = ALIGN(4);
  24. ___CTOR_LIST__ = .;
  25. __CTOR_LIST__ = .;
  26. LONG (-1);
  27. *(.ctors);
  28. *(.ctor);
  29. LONG (0);
  30. __CTOR_END__ = .;
  31. ___DTOR_LIST__ = .;
  32. __DTOR_LIST__ = .;
  33. LONG (-1);
  34. *(.dtors);
  35. *(.dtor);
  36. LONG (0);
  37. __DTOR_END__ = .;
  38. *(.gnu.linkonce.r*);
  39. *(.rodata);
  40. *(.rodata*);
  41. *(.jcr);
  42. *(.init_begin);
  43. *(.init);
  44. *(.init_end);
  45. *(.fini);
  46. *(.text.unlikely);
  47. *(.gcc_except_table);
  48. . = ALIGN(0x1000);
  49. ;
  50. _code_end = .;
  51. } >ram
  52. _code_size = SIZEOF(.text);
  53. .data ((".text_start" + "_code_size" + (0x00001000-1))& ~ (0x00001000-1)) :
  54. {
  55. ".data_start" = .;
  56. _data_start = .;
  57. *(.data);
  58. *(.gnu.linkonce.d*);
  59. *(.gcc_except_table);
  60. *(.init_array*);
  61. *(.fini_array*);
  62. *(.data.rel.local);
  63. __SDATA_START__ = .;
  64. *(.sdata);
  65. __SDATA2_START__ = .;
  66. *(.sdata2);
  67. __GOT_START__ = .;
  68. *(.got);
  69. __GOT_END__ = .;
  70. __GOT2_START__ = .;
  71. *(.got2);
  72. __GOT2_END__ = .;
  73. *(.flash*);
  74. __FIXUP_START__ = .;
  75. __FIXUP_END__ = .;
  76. __EXCEPT_START__ = .;
  77. __EXCEPT_END__ = .;
  78. . = ALIGN(0x1000);
  79. ;
  80. _data_end = .;
  81. } >ram
  82. _data_size = SIZEOF(.data);
  83. .bss ((".data_start" + "_data_size" + (0x00001000-1))& ~ (0x00001000-1)) :
  84. {
  85. ".bss_start" = .;
  86. _bss_start = .;
  87. *(.bss);
  88. *(COMMON);
  89. *(.sbss);
  90. __SBSS_END__ = .;
  91. *(.sbss2);
  92. __SBSS2_END__ = .;
  93. . = ALIGN(0x1000);
  94. ;
  95. _bss_end = .;
  96. } >ram
  97. _bss_size = SIZEOF(.bss);
  98. .ARM.exidx ((".bss_start" + "_bss_size" + (0x00001000-1))& ~ (0x00001000-1)) :
  99. {
  100. ".ARM.exidx_start" = .;
  101. .ARM.exidx_start = .;
  102. *(.ARM.exidx* .gnu.linkonce.armexidx.*) ;
  103. .ARM.exidx_end = .;
  104. } >ram
  105. .ARM.exidx_size = SIZEOF(.ARM.exidx);
  106. HEAP ((".ARM.exidx_start" + ".ARM.exidx_size" + (0x00001000-1))& ~ (0x00001000-1)) :
  107. {
  108. "HEAP_start" = .;
  109. _crtl_heap_start = .;
  110. _crtl_heap_end = .;
  111. } >ram
  112. _crtl_heap_size = 0x2200000;
  113. }
  114. load__code_start =( 0x00001000-1 )&~(0x00001000 -1 );
  115. load__data_start =( load__code_start + _code_size + ( 0x00001000 -1 ))&~(0x00001000 -1 );
  116. load__bss_start =( load__data_start + _data_size + ( 0x00001000 -1 ))&~(0x00001000 -1 );