• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/toolchains/hndtools-armeabi-2013.11/arm-none-eabi/lib/ldscripts/
1/* Default linker script, for normal executables */
2OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
3	      "elf32-littlearm")
4OUTPUT_ARCH(arm)
5ENTRY(_start)
6SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
7SECTIONS
8{
9  /* Read-only sections, merged into text segment: */
10  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x8000)); . = SEGMENT_START("text-segment", 0x8000);
11  .interp         : { *(.interp) }
12  .note.gnu.build-id : { *(.note.gnu.build-id) }
13  .hash           : { *(.hash) }
14  .gnu.hash       : { *(.gnu.hash) }
15  .dynsym         : { *(.dynsym) }
16  .dynstr         : { *(.dynstr) }
17  .gnu.version    : { *(.gnu.version) }
18  .gnu.version_d  : { *(.gnu.version_d) }
19  .gnu.version_r  : { *(.gnu.version_r) }
20  .rel.init       : { *(.rel.init) }
21  .rela.init      : { *(.rela.init) }
22  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
23  .rela.text      : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
24  .rel.fini       : { *(.rel.fini) }
25  .rela.fini      : { *(.rela.fini) }
26  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
27  .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
28  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
29  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
30  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
31  .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
32  .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
33  .rela.tdata	  : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
34  .rel.tbss	  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
35  .rela.tbss	  : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
36  .rel.ctors      : { *(.rel.ctors) }
37  .rela.ctors     : { *(.rela.ctors) }
38  .rel.dtors      : { *(.rel.dtors) }
39  .rela.dtors     : { *(.rela.dtors) }
40  .rel.got        : { *(.rel.got) }
41  .rela.got       : { *(.rela.got) }
42  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
43  .rela.bss       : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
44  .rel.iplt       :
45    {
46      PROVIDE_HIDDEN (__rel_iplt_start = .);
47      *(.rel.iplt)
48      PROVIDE_HIDDEN (__rel_iplt_end = .);
49    }
50  .rela.iplt      :
51    {
52      PROVIDE_HIDDEN (__rela_iplt_start = .);
53      *(.rela.iplt)
54      PROVIDE_HIDDEN (__rela_iplt_end = .);
55    }
56  .rel.plt        :
57    {
58      *(.rel.plt)
59    }
60  .rela.plt       :
61    {
62      *(.rela.plt)
63    }
64  .init           :
65  {
66    KEEP (*(SORT_NONE(.init)))
67  }
68  .plt            : { *(.plt) }
69  .iplt           : { *(.iplt) }
70  .text           :
71  {
72    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
73    *(.text.exit .text.exit.*)
74    *(.text.startup .text.startup.*)
75    *(.text.hot .text.hot.*)
76    *(.text .stub .text.* .gnu.linkonce.t.*)
77    /* .gnu.warning sections are handled specially by elf32.em.  */
78    *(.gnu.warning)
79    *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx)
80  }
81  .fini           :
82  {
83    KEEP (*(SORT_NONE(.fini)))
84  }
85  PROVIDE (__etext = .);
86  PROVIDE (_etext = .);
87  PROVIDE (etext = .);
88  .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
89  .rodata1        : { *(.rodata1) }
90  .ARM.extab   : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
91   PROVIDE_HIDDEN (__exidx_start = .);
92  .ARM.exidx   : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
93   PROVIDE_HIDDEN (__exidx_end = .);
94  .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) }
95  .eh_frame       : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) }
96  .gcc_except_table   : ONLY_IF_RO { *(.gcc_except_table
97  .gcc_except_table.*) }
98  .gnu_extab   : ONLY_IF_RO { *(.gnu_extab*) }
99  /* These sections are generated by the Sun/Oracle C++ compiler.  */
100  .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
101  .exception_ranges*) }
102  /* Adjust the address for the data segment.  We want to adjust up to
103     the same address within the page on the next page up.  */
104  . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1));
105  /* Exception handling  */
106  .eh_frame       : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) }
107  .gnu_extab      : ONLY_IF_RW { *(.gnu_extab) }
108  .gcc_except_table   : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
109  .exception_ranges   : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) }
110  /* Thread Local Storage sections  */
111  .tdata	  : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
112  .tbss		  : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
113  .preinit_array     :
114  {
115    PROVIDE_HIDDEN (__preinit_array_start = .);
116    KEEP (*(.preinit_array))
117    PROVIDE_HIDDEN (__preinit_array_end = .);
118  }
119  .init_array     :
120  {
121    PROVIDE_HIDDEN (__init_array_start = .);
122    KEEP (*(SORT(.init_array.*)))
123    KEEP (*(.init_array ))
124    PROVIDE_HIDDEN (__init_array_end = .);
125  }
126  .fini_array     :
127  {
128    PROVIDE_HIDDEN (__fini_array_start = .);
129    KEEP (*(SORT(.fini_array.*)))
130    KEEP (*(.fini_array ))
131    PROVIDE_HIDDEN (__fini_array_end = .);
132  }
133  .ctors          :
134  {
135    /* gcc uses crtbegin.o to find the start of
136       the constructors, so we make sure it is
137       first.  Because this is a wildcard, it
138       doesn't matter if the user does not
139       actually link against crtbegin.o; the
140       linker won't look for a file to match a
141       wildcard.  The wildcard also means that it
142       doesn't matter which directory crtbegin.o
143       is in.  */
144    KEEP (*crtbegin.o(.ctors))
145    KEEP (*crtbegin?.o(.ctors))
146    /* We don't want to include the .ctor section from
147       the crtend.o file until after the sorted ctors.
148       The .ctor section from the crtend file contains the
149       end of ctors marker and it must be last */
150    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
151    KEEP (*(SORT(.ctors.*)))
152    KEEP (*(.ctors))
153  }
154  .dtors          :
155  {
156    KEEP (*crtbegin.o(.dtors))
157    KEEP (*crtbegin?.o(.dtors))
158    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
159    KEEP (*(SORT(.dtors.*)))
160    KEEP (*(.dtors))
161  }
162  .jcr            : { KEEP (*(.jcr)) }
163  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
164  .dynamic        : { *(.dynamic) }
165  .got            : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) }
166  .data           :
167  {
168    __data_start = . ;
169    *(.data .data.* .gnu.linkonce.d.*)
170    SORT(CONSTRUCTORS)
171  }
172  .data1          : { *(.data1) }
173  _edata = .; PROVIDE (edata = .);
174  . = .;
175  __bss_start = .;
176  __bss_start__ = .;
177  .bss            :
178  {
179   *(.dynbss)
180   *(.bss .bss.* .gnu.linkonce.b.*)
181   *(COMMON)
182   /* Align here to ensure that the .bss section occupies space up to
183      _end.  Align after .bss to ensure correct alignment even if the
184      .bss section disappears because there are no input sections.
185      FIXME: Why do we need it? When there is no .bss section, we don't
186      pad the .data section.  */
187   . = ALIGN(. != 0 ? 32 / 8 : 1);
188  }
189  _bss_end__ = . ; __bss_end__ = . ;
190  . = ALIGN(32 / 8);
191  . = SEGMENT_START("ldata-segment", .);
192  . = ALIGN(32 / 8);
193  __end__ = . ;
194  _end = .; PROVIDE (end = .);
195  /* Stabs debugging sections.  */
196  .stab          0 : { *(.stab) }
197  .stabstr       0 : { *(.stabstr) }
198  .stab.excl     0 : { *(.stab.excl) }
199  .stab.exclstr  0 : { *(.stab.exclstr) }
200  .stab.index    0 : { *(.stab.index) }
201  .stab.indexstr 0 : { *(.stab.indexstr) }
202  .comment       0 : { *(.comment) }
203  /* DWARF debug sections.
204     Symbols in the DWARF debugging sections are relative to the beginning
205     of the section so we begin them at 0.  */
206  /* DWARF 1 */
207  .debug          0 : { *(.debug) }
208  .line           0 : { *(.line) }
209  /* GNU DWARF 1 extensions */
210  .debug_srcinfo  0 : { *(.debug_srcinfo) }
211  .debug_sfnames  0 : { *(.debug_sfnames) }
212  /* DWARF 1.1 and DWARF 2 */
213  .debug_aranges  0 : { *(.debug_aranges) }
214  .debug_pubnames 0 : { *(.debug_pubnames) }
215  /* DWARF 2 */
216  .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
217  .debug_abbrev   0 : { *(.debug_abbrev) }
218  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
219  .debug_frame    0 : { *(.debug_frame) }
220  .debug_str      0 : { *(.debug_str) }
221  .debug_loc      0 : { *(.debug_loc) }
222  .debug_macinfo  0 : { *(.debug_macinfo) }
223  /* SGI/MIPS DWARF 2 extensions */
224  .debug_weaknames 0 : { *(.debug_weaknames) }
225  .debug_funcnames 0 : { *(.debug_funcnames) }
226  .debug_typenames 0 : { *(.debug_typenames) }
227  .debug_varnames  0 : { *(.debug_varnames) }
228  /* DWARF 3 */
229  .debug_pubtypes 0 : { *(.debug_pubtypes) }
230  .debug_ranges   0 : { *(.debug_ranges) }
231  /* DWARF Extension.  */
232  .debug_macro    0 : { *(.debug_macro) }
233    .stack         0x80000 :
234  {
235    _stack = .;
236    *(.stack)
237  }
238  .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) KEEP (*(.gnu.attributes)) }
239  .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
240  /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
241}
242