ae210p.ld 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. /* This file is generated by nds_ldsag (version (2017-01-11) ). */
  2. ENTRY(_start)
  3. SECTIONS
  4. {
  5. PROVIDE (__executable_start = 0x0);
  6. NDS_SAG_LMA_FLASH1 = 0x0 ;
  7. . = 0x0;
  8. ROM_BEGIN = .;
  9. .nds32_init : { KEEP(*(.nds32_init )) }
  10. .interp : { *(.interp ) }
  11. .hash : { *(.hash ) }
  12. .dynsym : { *(.dynsym ) }
  13. .dynstr : { *(.dynstr ) }
  14. .gnu.version : { *(.gnu.version ) }
  15. .gnu.version_d : { *(.gnu.version_d ) }
  16. .gnu.version_r : { *(.gnu.version_r ) }
  17. .rel.init : { *(.rel.init ) }
  18. .rela.init : { *(.rela.init ) }
  19. .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.* ) }
  20. .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.* ) }
  21. .rel.fini : { *(.rel.fini ) }
  22. .rela.fini : { *(.rela.fini ) }
  23. .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.* ) }
  24. .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.* ) }
  25. .rel.data.rel.ro : { *(.rel.data.rel.ro* ) }
  26. .rela.data.rel.ro : { *(.rel.data.rel.ro* ) }
  27. .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.* ) }
  28. .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.* ) }
  29. .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.* ) }
  30. .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.* ) }
  31. .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.* ) }
  32. .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.* ) }
  33. .rel.ctors : { *(.rel.ctors ) }
  34. .rela.ctors : { *(.rela.ctors ) }
  35. .rel.dtors : { *(.rel.dtors ) }
  36. .rela.dtors : { *(.rela.dtors ) }
  37. .rela.dyn : { *(rela.dyn ) *(.rela__libc_subfreeres ) *(.rela__libc_atexit ) *(.rela__libc_thread_subfreeres ) *(.rela.init_array ) *(.rela.fini_array ) }
  38. .rel.got : { *(.rel.got ) }
  39. .rela.got : { *(.rela.got ) }
  40. .rel.sdata : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.* ) }
  41. .rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.* ) }
  42. .rel.sbss : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.* ) }
  43. .rela.sbss : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.* ) }
  44. .rel.sdata2 : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.* ) }
  45. .rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.* ) }
  46. .rel.sbss2 : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.* ) }
  47. .rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.* ) }
  48. .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.* ) }
  49. .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.* ) }
  50. .rel.plt : { *(.rel.plt ) }
  51. .rela.plt : { *(.rela.plt ) }
  52. .init : { KEEP(*(.init )) }
  53. .plt : { *(.plt ) }
  54. .text : { *(.text .stub .text.* .gnu.linkonce.t.* ) KEEP(*(.text.*personality* )) *(.gnu.warning ) . = ALIGN(4); }
  55. .fini : { KEEP(*(.fini )) }
  56. .ex9.itable : { *(.ex9.itable ) }
  57. PROVIDE (__etext = .);
  58. PROVIDE (_etext = .);
  59. PROVIDE (etext = .);
  60. .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.* ) }
  61. .rodata1 : { *(.rodata1 ) }
  62. .sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.* ) }
  63. .sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.* ) }
  64. .eh_frame_hdr : { *(.eh_frame_hdr ) }
  65. . = ALIGN(4);
  66. __fsymtab_start = .;
  67. FSymTab : { KEEP(*(FSymTab )) }
  68. . = ALIGN(4);
  69. __fsymtab_end = .;
  70. . = ALIGN(4);
  71. __vsymtab_start = .;
  72. VSymTab : { KEEP(*(VSymTab )) }
  73. . = ALIGN(4);
  74. __vsymtab_end = .;
  75. . = ALIGN(4);
  76. __rt_init_start = .;
  77. .rti_fn.0 : { KEEP(*(.rti_fn.0 )) }
  78. .rti_fn.0.end : { KEEP(*(.rti_fn.0.end )) }
  79. .rti_fn.1 : { KEEP(*(.rti_fn.1 )) }
  80. .rti_fn.1.end : { KEEP(*(.rti_fn.1.end )) }
  81. .rti_fn.2 : { KEEP(*(.rti_fn.2 )) }
  82. .rti_fn.2.end : { KEEP(*(.rti_fn.2.end )) }
  83. .rti_fn.3 : { KEEP(*(.rti_fn.3 )) }
  84. .rti_fn.3.end : { KEEP(*(.rti_fn.3.end )) }
  85. .rti_fn.4 : { KEEP(*(.rti_fn.4 )) }
  86. .rti_fn.4.end : { KEEP(*(.rti_fn.4.end )) }
  87. .rti_fn.5 : { KEEP(*(.rti_fn.5 )) }
  88. .rti_fn.5.end : { KEEP(*(.rti_fn.5.end )) }
  89. .rti_fn.6 : { KEEP(*(.rti_fn.6 )) }
  90. .rti_fn.6.end : { KEEP(*(.rti_fn.6.end )) }
  91. .rti_fn.7 : { KEEP(*(.rti_fn.7 )) }
  92. .rti_fn.7.end : { KEEP(*(.rti_fn.7.end )) }
  93. . = ALIGN(4);
  94. __rt_init_end = .;
  95. ROM_SIZE = . - ROM_BEGIN;
  96. . = 0x200000;
  97. RAM_BEGIN = .;
  98. . = ALIGN(0x20);
  99. __rw_lma_start = LOADADDR (.eh_frame);
  100. __rw_vma_start = ADDR(.eh_frame);
  101. .eh_frame : AT(ALIGN(LOADADDR (.rti_fn.7.end) + SIZEOF (.rti_fn.7.end), 32))
  102. { KEEP(*(.eh_frame )) }
  103. .gcc_except_table : AT(ALIGN(LOADADDR (.eh_frame) + SIZEOF (.eh_frame), ALIGNOF(.gcc_except_table)))
  104. { KEEP(*(.gcc_except_table )) *(.gcc_except_table.* ) }
  105. .tdata : AT(ALIGN(LOADADDR (.gcc_except_table) + SIZEOF (.gcc_except_table), ALIGNOF(.tdata)))
  106. { *(.tdata .tdata.* .gnu.linkonce.td.* ) }
  107. . = ALIGN(4);
  108. PROVIDE (__preinit_array_start = .);
  109. .preinit_array : AT(ALIGN(ALIGN(LOADADDR (.tdata) + SIZEOF (.tdata), ALIGNOF(.preinit_array)), 4))
  110. { KEEP(*(.preinit_array )) }
  111. PROVIDE (__preinit_array_end = .);
  112. PROVIDE (__init_array_start = .);
  113. .init_array : AT(ALIGN(LOADADDR (.preinit_array) + SIZEOF (.preinit_array), ALIGNOF(.init_array)))
  114. { KEEP(*(.init_array )) }
  115. PROVIDE (__init_array_end = .);
  116. PROVIDE (__fini_array_start = .);
  117. .fini_array : AT(ALIGN(LOADADDR (.init_array) + SIZEOF (.init_array), ALIGNOF(.fini_array)))
  118. { KEEP(*(.fini_array )) }
  119. PROVIDE (__fini_array_end = .);
  120. .ctors : AT(ALIGN(LOADADDR (.fini_array) + SIZEOF (.fini_array), ALIGNOF(.ctors)))
  121. { KEEP(*crtbegin*.o(.ctors)) KEEP(*(EXCLUDE_FILE (*crtend*.o) .ctors)) KEEP(*(SORT(.ctors.* ))) KEEP(*(.ctors )) }
  122. .dtors : AT(ALIGN(LOADADDR (.ctors) + SIZEOF (.ctors), ALIGNOF(.dtors)))
  123. { KEEP(*crtbegin*.o(.dtors)) KEEP(*(EXCLUDE_FILE (*crtend*.o) .dtors)) KEEP(*(SORT(.dtors.* ))) KEEP(*(.dtors )) }
  124. .jcr : AT(ALIGN(LOADADDR (.dtors) + SIZEOF (.dtors), ALIGNOF(.jcr)))
  125. { KEEP(*(.jcr )) }
  126. .data.rel.ro : AT(ALIGN(LOADADDR (.jcr) + SIZEOF (.jcr), ALIGNOF(.data.rel.ro)))
  127. { *(.data.rel.ro.local ) *(.data.rel.ro* ) }
  128. .dynamic : AT(ALIGN(LOADADDR (.data.rel.ro) + SIZEOF (.data.rel.ro), ALIGNOF(.dynamic)))
  129. { *(.dynamic ) }
  130. .data : AT(ALIGN(LOADADDR (.dynamic) + SIZEOF (.dynamic), ALIGNOF(.data)))
  131. { *(.data .data.* .gnu.linkonce.d.* ) KEEP(*(.gnu.linkonce.d.*personality* )) SORT(CONSTRUCTORS) . = ALIGN(8); }
  132. .data1 : AT(ALIGN(LOADADDR (.data) + SIZEOF (.data), ALIGNOF(.data1)))
  133. { *(.data1 ) . = ALIGN(8); }
  134. . = ALIGN(4);
  135. .got : AT(ALIGN(ALIGN(LOADADDR (.data1) + SIZEOF (.data1), ALIGNOF(.got)), 4))
  136. { *(.got.plt ) *(.got ) }
  137. .sdata_d : AT(ALIGN(LOADADDR (.got) + SIZEOF (.got), ALIGNOF(.sdata_d)))
  138. { *(.sdata_d .sdata_d.* ) }
  139. .sdata_w : AT(ALIGN(LOADADDR (.sdata_d) + SIZEOF (.sdata_d), ALIGNOF(.sdata_w)))
  140. { *(.sdata_w .sdata_w.* ) }
  141. .sdata_h : AT(ALIGN(LOADADDR (.sdata_w) + SIZEOF (.sdata_w), ALIGNOF(.sdata_h)))
  142. { *(.sdata_h .sdata_h.* ) }
  143. .sdata_b : AT(ALIGN(LOADADDR (.sdata_h) + SIZEOF (.sdata_h), ALIGNOF(.sdata_b)))
  144. { *(.sdata_b .sdata_b.* ) }
  145. .sdata_f : AT(ALIGN(LOADADDR (.sdata_b) + SIZEOF (.sdata_b), ALIGNOF(.sdata_f)))
  146. { *(.sdata_f .sdata_f.* ) }
  147. . = ALIGN(4);
  148. _edata = .;
  149. PROVIDE (edata = .);
  150. __bss_start = .;
  151. PROVIDE (__sbss_start = .);
  152. PROVIDE (___sbss_start = .);
  153. __rw_lma_end = LOADADDR (.tbss);
  154. .tbss : AT(ALIGN(ALIGN(LOADADDR (.sdata_f) + SIZEOF (.sdata_f), ALIGNOF(.tbss)), 4))
  155. { *(.tbss .tbss.* .gnu.linkonce.tb.* ) *(.tcommon ) }
  156. .sbss_f : AT(ALIGN(LOADADDR (.tbss) + SIZEOF (.tbss), ALIGNOF(.sbss_f)))
  157. { *(.sbss_f .sbss_f.* ) *(.scommon_f .scommon_f.* ) }
  158. .sbss_b : AT(ALIGN(LOADADDR (.sbss_f) + SIZEOF (.sbss_f), ALIGNOF(.sbss_b)))
  159. { *(.sbss_b .sbss_b.* ) *(.scommon_b .scommon_b.* ) . = ALIGN(2); }
  160. .sbss_h : AT(ALIGN(LOADADDR (.sbss_b) + SIZEOF (.sbss_b), ALIGNOF(.sbss_h)))
  161. { *(.sbss_h .sbss_h.* ) *(.scommon_h .scommon_h.* ) . = ALIGN(4); }
  162. .sbss_w : AT(ALIGN(LOADADDR (.sbss_h) + SIZEOF (.sbss_h), ALIGNOF(.sbss_w)))
  163. { *(.sbss_w .sbss_w.* ) *(.scommon_w .scommon_w.* ) *(.dynsbss ) *(.scommon ) . = ALIGN(8); }
  164. .sbss_d : AT(ALIGN(LOADADDR (.sbss_w) + SIZEOF (.sbss_w), ALIGNOF(.sbss_d)))
  165. { *(.sbss_d .sbss_d.* ) *(.scommon_d .scommon_d.* ) }
  166. .bss : AT(ALIGN(LOADADDR (.sbss_d) + SIZEOF (.sbss_d), ALIGNOF(.bss)))
  167. { *(.dynbss ) *(.bss .bss.* .gnu.linkonce.b.* ) *(COMMON ) . = ALIGN(4); }
  168. PROVIDE (__sbss_end = .);
  169. PROVIDE (___sbss_end = .);
  170. . = ALIGN(4);
  171. _end = .;
  172. PROVIDE (end = .);
  173. PROVIDE (_stack = 0x24fff8);
  174. RAM_SIZE = . - RAM_BEGIN;
  175. .stab 0 : { *(.stab) }
  176. .stabstr 0 : { *(.stabstr) }
  177. .stab.excl 0 : { *(.stab.excl) }
  178. .stab.exclstr 0 : { *(.stab.exclstr) }
  179. .stab.index 0 : { *(.stab.index) }
  180. .stab.indexstr 0 : { *(.stab.indexstr) }
  181. .note.nds32 0 : { *(.note.nds32) *(.note.nds32.*) }
  182. .comment 0 : { *(.comment) }
  183. .debug 0 : { *(.debug) }
  184. .line 0 : { *(.line) }
  185. .debug_srcinfo 0 : { *(.debug_srcinfo) }
  186. .debug_sfnames 0 : { *(.debug_sfnames) }
  187. .debug_aranges 0 : { *(.debug_aranges) }
  188. .debug_pubnames 0 : { *(.debug_pubnames) }
  189. .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
  190. .debug_abbrev 0 : { *(.debug_abbrev) }
  191. .debug_line 0 : { *(.debug_line) }
  192. .debug_frame 0 : { *(.debug_frame) }
  193. .debug_str 0 : { *(.debug_str) }
  194. .debug_loc 0 : { *(.debug_loc) }
  195. .debug_macinfo 0 : { *(.debug_macinfo) }
  196. .debug_weaknames 0 : { *(.debug_weaknames) }
  197. .debug_funcnames 0 : { *(.debug_funcnames) }
  198. .debug_typenames 0 : { *(.debug_typenames) }
  199. .debug_varnames 0 : { *(.debug_varnames) }
  200. }
  201. ASSERT((DEFINED (_RELAX_END_) ? ROM_SIZE : 0x0)<= 0x80000, "ROM OVERFLOW");
  202. ASSERT((DEFINED (_RELAX_END_) ? RAM_SIZE : 0x0)<= 0x50000, "RAM OVERFLOW");