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