2 OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
10 ro PT_LOAD FILEHDR PHDRS;
19 PROVIDE (__executable_start = 0x010000);
20 . = __executable_start + SIZEOF_HEADERS;
21 /* No program code/data before _stext/_prog_img_start! */
23 /* Read-only sections, merged into text segment. The start address of
24 * the text segment is : */
26 { *(.note.gnu.build-id)
36 *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
37 *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
40 *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
41 *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
42 *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
43 *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*)
44 *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
45 *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
46 *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
47 *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
48 *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
49 *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
56 *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
57 *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
64 _prog_img_start = _stext;
67 *(.text .text.* .gnu.linkonce.t.*)
68 KEEP (*(.text.*personality*))
69 *(.glue_7t) *(.glue_7)
70 /* .gnu.warning sections are handled specially by elf32.em. */
80 /* LONG(0xc3) * terminate .fini */
86 KEEP (*(.rol4re_elf_aux))
88 .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } : ro
89 .rodata1 : { *(.rodata1) }
90 .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
92 .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
94 .eh_frame_hdr : { *(.eh_frame_hdr) } :ro
96 .eh_frame : ONLY_IF_RO
98 /* PROVIDE(__eh_frame_start__ = .);*/
100 /* KEEP (*(.eh_frame_terminator)) */
103 .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
105 . = ALIGN(CONSTANT(MAXPAGESIZE));
106 /* Adjust the address for the data segment. We want to adjust up to
107 the same address within the page on the next page up. */
108 . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
109 PROVIDE (_sdata = .);
110 /* Exception handling */
111 .eh_frame : ONLY_IF_RW
113 /* PROVIDE (__eh_frame_start__ = .); */
115 /* KEEP (*(.eh_frame_terminator)) */
117 .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } :rw
118 /* Thread Local Storage sections */
119 .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } :rw : tls
120 .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
123 PROVIDE_HIDDEN (__preinit_array_start = .);
124 KEEP (*(.preinit_array))
125 PROVIDE_HIDDEN (__preinit_array_end = .);
129 PROVIDE_HIDDEN (__init_array_start = .);
130 KEEP (*(SORT(.init_array.*)))
131 KEEP (*(.init_array))
132 PROVIDE_HIDDEN (__init_array_end = .);
136 PROVIDE_HIDDEN (__fini_array_start = .);
137 KEEP (*(.fini_array))
138 KEEP (*(SORT(.fini_array.*)))
139 PROVIDE_HIDDEN (__fini_array_end = .);
141 /* ensure that data starts at a new L4 page */
146 KEEP (*(.mark_beg_l4dde_ctors))
147 KEEP (*(.l4dde_ctors))
148 KEEP (*(.mark_end_l4dde_ctors))
150 KEEP (*(.mark_beg_ctors))
153 /* gcc uses crtbegin.o to find the start of
154 the constructors, so we make sure it is
155 first. Because this is a wildcard, it
156 doesn't matter if the user does not
157 actually link against crtbegin.o; the
158 linker won't look for a file to match a
159 wildcard. The wildcard also means that it
160 doesn't matter which directory crtbegin.o
162 KEEP (*crtbegin.o(.ctors))
163 KEEP (*crtbegin?.o(.ctors))
164 /* We don't want to include the .ctor section from
165 the crtend.o file until after the sorted ctors.
166 The .ctor section from the crtend file contains the
167 end of ctors marker and it must be last */
168 KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
169 KEEP (*(SORT(.ctors.*)))
172 KEEP (*(.mark_end_ctors))
174 KEEP (*(.mark_beg_c_ctors))
175 KEEP (*(SORT(.c_ctors.?)))
176 KEEP (*(SORT(.c_ctors.??)))
177 KEEP (*(SORT(.c_ctors.???)))
178 KEEP (*(SORT(.c_ctors.????)))
179 KEEP (*(SORT(.c_ctors.?????)))
181 KEEP (*(.mark_end_c_ctors))
188 KEEP (*(.mark_beg_dtors))*/
189 KEEP (*crtbegin.o(.dtors))
190 KEEP (*crtbegin?.o(.dtors))
191 KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
192 KEEP (*(SORT(.dtors.*)))
195 KEEP (*(.mark_end_dtors))
197 KEEP (*(.mark_beg_c_sys_dtors))
198 KEEP (*(SORT(.c_dtors.?)))
199 KEEP (*(SORT(.c_dtors.??)))
200 KEEP (*(.mark_end_c_sys_dtors))
202 KEEP (*(.mark_beg_c_dtors))
203 KEEP (*(SORT(.c_dtors.???)))
204 KEEP (*(SORT(.c_dtors.????)))
205 KEEP (*(SORT(.c_dtors.?????)))
207 KEEP (*(.mark_end_c_dtors))*/
209 .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) }
212 *(.data .data.* .gnu.linkonce.d.*)
213 KEEP (*(.gnu.linkonce.d.*personality*))
216 .data1 : { *(.data1) }
217 _edata = .; PROVIDE (edata = .);
222 *(.bss .bss.* .gnu.linkonce.b.*)
224 /* Align here to ensure that the .bss section occupies space up to
225 _end. Align after .bss to ensure correct alignment even if the
226 .bss section disappears because there are no input sections.
227 FIXME: Why do we need it? When there is no .bss section, we don't
228 pad the .data section. */
229 . = ALIGN(. != 0 ? 32 / 8 : 1);
233 _end = .; PROVIDE (end = .);
234 . = DATA_SEGMENT_END (.);
235 . = ALIGN(CONSTANT(MAXPAGESIZE));
236 /* Stabs debugging sections. */
237 .stab 0 : { *(.stab) } :NONE
238 .stabstr 0 : { *(.stabstr) }
239 .stab.excl 0 : { *(.stab.excl) }
240 .stab.exclstr 0 : { *(.stab.exclstr) }
241 .stab.index 0 : { *(.stab.index) }
242 .stab.indexstr 0 : { *(.stab.indexstr) }
243 .comment 0 : { *(.comment) }
244 /* DWARF debug sections.
245 Symbols in the DWARF debugging sections are relative to the beginning
246 of the section so we begin them at 0. */
248 .debug 0 : { *(.debug) }
249 .line 0 : { *(.line) }
250 /* GNU DWARF 1 extensions */
251 .debug_srcinfo 0 : { *(.debug_srcinfo) }
252 .debug_sfnames 0 : { *(.debug_sfnames) }
253 /* DWARF 1.1 and DWARF 2 */
254 .debug_aranges 0 : { *(.debug_aranges) }
255 .debug_pubnames 0 : { *(.debug_pubnames) }
257 .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
258 .debug_abbrev 0 : { *(.debug_abbrev) }
259 .debug_line 0 : { *(.debug_line) }
260 .debug_frame 0 : { *(.debug_frame) }
261 .debug_str 0 : { *(.debug_str) }
262 .debug_loc 0 : { *(.debug_loc) }
263 .debug_macinfo 0 : { *(.debug_macinfo) }
264 /* SGI/MIPS DWARF 2 extensions */
265 .debug_weaknames 0 : { *(.debug_weaknames) }
266 .debug_funcnames 0 : { *(.debug_funcnames) }
267 .debug_typenames 0 : { *(.debug_typenames) }
268 .debug_varnames 0 : { *(.debug_varnames) }
270 .debug_pubtypes 0 : { *(.debug_pubtypes) }
271 .debug_ranges 0 : { *(.debug_ranges) }
272 .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
273 /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.interp) }