• 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-2011.09/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.gnu.linkonce.d.rel.ro.*) }
29  .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 (*(.init))
67  } =0
68  .plt            : { *(.plt) }
69  .iplt           : { *(.iplt) }
70  .text           :
71  {
72    *(.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  } =0
81  .fini           :
82  {
83    KEEP (*(.fini))
84  } =0
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) }
95  .eh_frame       : ONLY_IF_RO { KEEP (*(.eh_frame)) }
96  .gcc_except_table   : ONLY_IF_RO { *(.gcc_except_table
97  .gcc_except_table.*) }
98  /* These sections are generated by the Sun/Oracle C++ compiler.  */
99  .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
100  .exception_ranges*) }
101  /* Adjust the address for the data segment.  We want to adjust up to
102     the same address within the page on the next page up.  */
103  . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1));
104  /* Exception handling  */
105  .eh_frame       : ONLY_IF_RW { KEEP (*(.eh_frame)) }
106  .gcc_except_table   : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
107  .exception_ranges   : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) }
108  /* Thread Local Storage sections  */
109  .tdata	  : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
110  .tbss		  : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
111  .preinit_array     :
112  {
113    PROVIDE_HIDDEN (__preinit_array_start = .);
114    KEEP (*(.preinit_array))
115    PROVIDE_HIDDEN (__preinit_array_end = .);
116  }
117  .init_array     :
118  {
119    PROVIDE_HIDDEN (__init_array_start = .);
120    KEEP (*(SORT(.init_array.*)))
121    KEEP (*(.init_array))
122    PROVIDE_HIDDEN (__init_array_end = .);
123  }
124  .fini_array     :
125  {
126    PROVIDE_HIDDEN (__fini_array_start = .);
127    KEEP (*(SORT(.fini_array.*)))
128    KEEP (*(.fini_array))
129    PROVIDE_HIDDEN (__fini_array_end = .);
130  }
131  .ctors          :
132  {
133    /* gcc uses crtbegin.o to find the start of
134       the constructors, so we make sure it is
135       first.  Because this is a wildcard, it
136       doesn't matter if the user does not
137       actually link against crtbegin.o; the
138       linker won't look for a file to match a
139       wildcard.  The wildcard also means that it
140       doesn't matter which directory crtbegin.o
141       is in.  */
142    KEEP (*crtbegin.o(.ctors))
143    KEEP (*crtbegin?.o(.ctors))
144    /* We don't want to include the .ctor section from
145       the crtend.o file until after the sorted ctors.
146       The .ctor section from the crtend file contains the
147       end of ctors marker and it must be last */
148    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
149    KEEP (*(SORT(.ctors.*)))
150    KEEP (*(.ctors))
151  }
152  .dtors          :
153  {
154    KEEP (*crtbegin.o(.dtors))
155    KEEP (*crtbegin?.o(.dtors))
156    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
157    KEEP (*(SORT(.dtors.*)))
158    KEEP (*(.dtors))
159  }
160  .jcr            : { KEEP (*(.jcr)) }
161  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
162  .dynamic        : { *(.dynamic) }
163  .got            : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) }
164  .data           :
165  {
166    __data_start = . ;
167    *(.data .data.* .gnu.linkonce.d.*)
168    SORT(CONSTRUCTORS)
169  }
170  .data1          : { *(.data1) }
171  _edata = .; PROVIDE (edata = .);
172  __bss_start = .;
173  __bss_start__ = .;
174  .bss            :
175  {
176   *(.dynbss)
177   *(.bss .bss.* .gnu.linkonce.b.*)
178   *(COMMON)
179   /* Align here to ensure that the .bss section occupies space up to
180      _end.  Align after .bss to ensure correct alignment even if the
181      .bss section disappears because there are no input sections.
182      FIXME: Why do we need it? When there is no .bss section, we don't
183      pad the .data section.  */
184   . = ALIGN(. != 0 ? 32 / 8 : 1);
185  }
186  _bss_end__ = . ; __bss_end__ = . ;
187  . = ALIGN(32 / 8);
188  . = ALIGN(32 / 8);
189  __end__ = . ;
190  _end = .; PROVIDE (end = .);
191  /* Stabs debugging sections.  */
192  .stab          0 : { *(.stab) }
193  .stabstr       0 : { *(.stabstr) }
194  .stab.excl     0 : { *(.stab.excl) }
195  .stab.exclstr  0 : { *(.stab.exclstr) }
196  .stab.index    0 : { *(.stab.index) }
197  .stab.indexstr 0 : { *(.stab.indexstr) }
198  .comment       0 : { *(.comment) }
199  /* DWARF debug sections.
200     Symbols in the DWARF debugging sections are relative to the beginning
201     of the section so we begin them at 0.  */
202  /* DWARF 1 */
203  .debug          0 : { *(.debug) }
204  .line           0 : { *(.line) }
205  /* GNU DWARF 1 extensions */
206  .debug_srcinfo  0 : { *(.debug_srcinfo) }
207  .debug_sfnames  0 : { *(.debug_sfnames) }
208  /* DWARF 1.1 and DWARF 2 */
209  .debug_aranges  0 : { *(.debug_aranges) }
210  .debug_pubnames 0 : { *(.debug_pubnames) }
211  /* DWARF 2 */
212  .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
213  .debug_abbrev   0 : { *(.debug_abbrev) }
214  .debug_line     0 : { *(.debug_line) }
215  .debug_frame    0 : { *(.debug_frame) }
216  .debug_str      0 : { *(.debug_str) }
217  .debug_loc      0 : { *(.debug_loc) }
218  .debug_macinfo  0 : { *(.debug_macinfo) }
219  /* SGI/MIPS DWARF 2 extensions */
220  .debug_weaknames 0 : { *(.debug_weaknames) }
221  .debug_funcnames 0 : { *(.debug_funcnames) }
222  .debug_typenames 0 : { *(.debug_typenames) }
223  .debug_varnames  0 : { *(.debug_varnames) }
224  /* DWARF 3 */
225  .debug_pubtypes 0 : { *(.debug_pubtypes) }
226  .debug_ranges   0 : { *(.debug_ranges) }
227    .stack         0x80000 :
228  {
229    _stack = .;
230    *(.stack)
231  }
232  .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) KEEP (*(.gnu.attributes)) }
233  .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
234  /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
235}
236