es32vf2264.ld 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. /*
  2. * Copyright (C) 2017-2019 Alibaba Group Holding Limited
  3. */
  4. /******************************************************************************
  5. * @file gcc_csky.ld
  6. * @brief csky linker file
  7. * @version V1.0
  8. * @date 02. June 2017
  9. ******************************************************************************/
  10. MEMORY
  11. {
  12. I-SRAM : ORIGIN = 0x00000000 , LENGTH = 0x40000 /* I-SRAM 256KB */
  13. D-SRAM : ORIGIN = 0x20000000 , LENGTH = 0x8000 /* D-SRAM 32KB */
  14. O-SRAM : ORIGIN = 0x50000000 , LENGTH = 0x800000 /* off-chip SRAM 8MB */
  15. SRAM : ORIGIN = 0x60000000 , LENGTH = 0x20000 /* on-chip SRAM 128KB */
  16. }
  17. __min_heap_size = 0x200;
  18. __rt_rvstack_bss_size = 0x400;
  19. PROVIDE (__ram_end = 0x20007FFF);
  20. PROVIDE (__heap_end = __ram_end);
  21. REGION_ALIAS("REGION_TEXT", I-SRAM);
  22. REGION_ALIAS("REGION_RODATA", I-SRAM);
  23. REGION_ALIAS("REGION_DATA", D-SRAM);
  24. REGION_ALIAS("REGION_BSS", D-SRAM);
  25. ENTRY(Reset_Handler)
  26. SECTIONS
  27. {
  28. .text : {
  29. . = ALIGN(0x4) ;
  30. __stext = . ;
  31. KEEP(*startup_es32vf2264.o(*.text*))
  32. *(.text)
  33. *(.text*)
  34. *(.text.*)
  35. *(.gnu.warning)
  36. *(.stub)
  37. *(.gnu.linkonce.t*)
  38. *(.glue_7t)
  39. *(.glue_7)
  40. *(.jcr)
  41. KEEP (*(.init))
  42. KEEP (*(.fini))
  43. . = ALIGN (4) ;
  44. PROVIDE(__ctors_start__ = .);
  45. KEEP (*(SORT(.init_array.*)))
  46. KEEP (*(.init_array))
  47. PROVIDE(__ctors_end__ = .);
  48. . = ALIGN(0x40) ;
  49. KEEP(*startup_es32vf2264.o(*.vectors*))
  50. /* section information for finsh shell */
  51. . = ALIGN(4);
  52. __fsymtab_start = .;
  53. KEEP(*(FSymTab))
  54. __fsymtab_end = .;
  55. . = ALIGN (4) ;
  56. PROVIDE(__ctbp = .);
  57. *(.call_table_data)
  58. *(.call_table_text)
  59. . = ALIGN(0x10) ;
  60. __etext = . ;
  61. } > REGION_TEXT
  62. .eh_frame_hdr : {
  63. *(.eh_frame_hdr)
  64. } > REGION_TEXT
  65. .eh_frame : ONLY_IF_RO {
  66. KEEP (*(.eh_frame))
  67. } > REGION_TEXT
  68. .gcc_except_table : ONLY_IF_RO {
  69. *(.gcc_except_table .gcc_except_table.*)
  70. } > REGION_TEXT
  71. .rodata : {
  72. . = ALIGN(0x4) ;
  73. __srodata = .;
  74. *(.rdata)
  75. *(.rdata*)
  76. *(.rdata1)
  77. *(.rdata.*)
  78. KEEP (*(.rti_fn.0))
  79. KEEP (*(.rti_fn.0.end))
  80. KEEP (*(.rti_fn.1))
  81. KEEP (*(.rti_fn.1.end))
  82. KEEP (*(.rti_fn.2))
  83. KEEP (*(.rti_fn.2.end))
  84. KEEP (*(.rti_fn.3))
  85. KEEP (*(.rti_fn.3.end))
  86. KEEP (*(.rti_fn.4))
  87. KEEP (*(.rti_fn.4.end))
  88. KEEP (*(.rti_fn.5))
  89. KEEP (*(.rti_fn.5.end))
  90. KEEP (*(.rti_fn.6))
  91. KEEP (*(.rti_fn.6.end))
  92. *(.rodata)
  93. *(.rodata1)
  94. *(.rodata*)
  95. *(.rodata.*)
  96. *(.rodata.str1.4)
  97. *(.srodata*)
  98. . = ALIGN(0x4) ;
  99. __erodata = .;
  100. __rodata_end__ = .;
  101. } > REGION_RODATA
  102. .data : {
  103. . = ALIGN(0x4) ;
  104. __sdata = . ;
  105. __data_start__ = . ;
  106. data_start = . ;
  107. *(.got.plt)
  108. *(.got)
  109. *(.gnu.linkonce.r*)
  110. *(.data)
  111. *(.data*)
  112. *(.data1)
  113. *(.data.*)
  114. *(.gnu.linkonce.d*)
  115. *(.data1)
  116. *(.gcc_except_table)
  117. *(.gcc_except_table*)
  118. __start_init_call = .;
  119. *(.initcall.init)
  120. __stop_init_call = .;
  121. __start_cmd = .;
  122. *(.bootloaddata.cmd)
  123. . = ALIGN(4) ;
  124. PROVIDE(__dtors_start__ = .);
  125. KEEP(*(SORT(.dtors.*)))
  126. KEEP(*(.dtors))
  127. PROVIDE(__dtors_end__ = .);
  128. __stop_cmd = .;
  129. __global_pointer$ = .;
  130. *(.sdata)
  131. *(.sdata.*)
  132. *(.sdata2.*)
  133. *(.gnu.linkonce.s.*)
  134. *(__libc_atexit)
  135. *(__libc_subinit)
  136. *(__libc_subfreeres)
  137. *(.note.ABI-tag)
  138. __edata = .;
  139. __data_end__ = .;
  140. . = ALIGN(0x4) ;
  141. } > REGION_DATA AT > REGION_RODATA
  142. .eh_frame : ONLY_IF_RW {
  143. KEEP (*(.eh_frame))
  144. } > REGION_DATA AT > REGION_RODATA
  145. .gcc_except_table : ONLY_IF_RW {
  146. *(.gcc_except_table .gcc_except_table.*)
  147. __edata = .;
  148. __data_end__ = .;
  149. } > REGION_DATA AT > REGION_RODATA
  150. .bss : {
  151. . = ALIGN(0x4) ;
  152. __sbss = ALIGN(0x4) ;
  153. __bss_start__ = . ;
  154. *(.dynsbss)
  155. *(.sbss)
  156. *(.sbss.*)
  157. *(.scommon)
  158. *(.dynbss)
  159. *(.bss)
  160. *(.bss.*)
  161. *(COMMON)
  162. . = ALIGN(0x4) ;
  163. __ebss = . ;
  164. __bss_end__ = .;
  165. __end = . ;
  166. end = . ;
  167. } > REGION_BSS AT > REGION_BSS
  168. ._user_heap : {
  169. . = ALIGN(0x4) ;
  170. __heap_start = .;
  171. . += __min_heap_size;
  172. . = ALIGN(0x4) ;
  173. } > REGION_BSS AT > REGION_BSS
  174. ._rtt_v5_use_stack1 : {
  175. . = ALIGN(0x4) ;
  176. . += __rt_rvstack_bss_size;
  177. __rt_rvstack = .;
  178. . = ALIGN(0x4) ;
  179. } > REGION_BSS AT > REGION_BSS
  180. }