7 ro PT_LOAD FILEHDR PHDRS;
16 L4_DEFINE_X86_KERNEL_ENTRY_SYMS
17 PROVIDE (__executable_start = 0x0100000);
18 . = __executable_start + SIZEOF_HEADERS;
20 /* No program code/data before _stext/_prog_img_start! */
22 /* Read-only sections, merged into text segment. The start address of
23 * the text segment is : */
25 { *(.note.gnu.build-id)
35 *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
36 *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
39 *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
40 *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
41 *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
42 *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*)
43 *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
44 *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
45 *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
46 *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
47 *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
48 *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
55 *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
56 *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
65 *(.text .text.* .gnu.linkonce.t.*)
66 *(.text .stub .text.* .gnu.linkonce.t.*)
67 KEEP (*(.text.*personality*))
68 /* .gnu.warning sections are handled specially by elf32.em. */
83 KEEP (*(.rol4re_elf_aux))
85 .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } : ro
86 .rodata1 : { *(.rodata1) }
87 .eh_frame_hdr : { *(.eh_frame_hdr) } :ro
89 .eh_frame : ONLY_IF_RO
91 PROVIDE(__eh_frame_start__ = .);
93 KEEP (*(.eh_frame_terminator))
96 .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
99 . = ALIGN(CONSTANT(MAXPAGESIZE));
100 /* Adjust the address for the data segment. We want to adjust up to
101 the same address within the page on the next page up. */
102 . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
103 PROVIDE (_sdata = .);
104 /* Exception handling */
105 .eh_frame : ONLY_IF_RW
107 PROVIDE (__eh_frame_start__ = .);
109 KEEP (*(.eh_frame_terminator))
111 .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } :rw
112 /* Thread Local Storage sections */
113 .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } : rw : tls
114 .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
117 PROVIDE_HIDDEN (__preinit_array_start = .);
118 KEEP (*(.preinit_array))
119 PROVIDE_HIDDEN (__preinit_array_end = .);
123 PROVIDE_HIDDEN (__init_array_start = .);
124 KEEP (*(SORT(.init_array.*)))
125 KEEP (*(.init_array))
126 PROVIDE_HIDDEN (__init_array_end = .);
130 PROVIDE_HIDDEN (__fini_array_start = .);
131 KEEP (*(.fini_array))
132 KEEP (*(SORT(.fini_array.*)))
133 PROVIDE_HIDDEN (__fini_array_end = .);
135 /* ensure that data starts at a new L4 page */
136 /*. = ALIGN(0x1000);*/
140 /* gcc uses crtbegin.o to find the start of
141 the constructors, so we make sure it is
142 first. Because this is a wildcard, it
143 doesn't matter if the user does not
144 actually link against crtbegin.o; the
145 linker won't look for a file to match a
146 wildcard. The wildcard also means that it
147 doesn't matter which directory crtbegin.o
149 KEEP (*crtbegin.o(.ctors))
150 KEEP (*crtbegin?.o(.ctors))
151 /* We don't want to include the .ctor section from
152 the crtend.o file until after the sorted ctors.
153 The .ctor section from the crtend file contains the
154 end of ctors marker and it must be last */
155 KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
156 KEEP (*(SORT(.ctors.*)))
159 KEEP (*(.mark_end_ctors))
161 KEEP (*(.mark_beg_c_ctors))
162 KEEP (*(SORT(.c_ctors.?)))
163 KEEP (*(SORT(.c_ctors.??)))
164 KEEP (*(SORT(.c_ctors.???)))
165 KEEP (*(SORT(.c_ctors.????)))
166 KEEP (*(SORT(.c_ctors.?????)))
168 KEEP (*(.mark_end_c_ctors))
175 KEEP (*(.mark_beg_dtors))*/
176 KEEP (*crtbegin.o(.dtors))
177 KEEP (*crtbegin?.o(.dtors))
178 KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
179 KEEP (*(SORT(.dtors.*)))
182 KEEP (*(.mark_end_dtors))
184 KEEP (*(.mark_beg_c_sys_dtors))
185 KEEP (*(SORT(.c_dtors.?)))
186 KEEP (*(SORT(.c_dtors.??)))
187 KEEP (*(.mark_end_c_sys_dtors))
189 KEEP (*(.mark_beg_c_dtors))
190 KEEP (*(SORT(.c_dtors.???)))
191 KEEP (*(SORT(.c_dtors.????)))
192 KEEP (*(SORT(.c_dtors.?????)))
194 KEEP (*(.mark_end_c_dtors))*/
196 .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
197 .dynamic : { *(.dynamic) } :rw
198 .got : { *(.got) } :rw
199 . = DATA_SEGMENT_RELRO_END (12, .);
200 .got.plt : { *(.got.plt) }
203 *(.data .data.* .gnu.linkonce.d.*)
204 KEEP (*(.gnu.linkonce.d.*personality*))
207 .data1 : { *(.data1) }
208 _edata = .; PROVIDE (edata = .);
213 *(.bss .bss.* .gnu.linkonce.b.*)
215 /* Align here to ensure that the .bss section occupies space up to
216 _end. Align after .bss to ensure correct alignment even if the
217 .bss section disappears because there are no input sections.
218 FIXME: Why do we need it? When there is no .bss section, we don't
219 pad the .data section. */
220 . = ALIGN(. != 0 ? 64 / 8 : 1);
224 _end = .; PROVIDE (end = .);
225 . = DATA_SEGMENT_END (.);
226 . = ALIGN(CONSTANT(MAXPAGESIZE));
227 /* Stabs debugging sections. */
228 .stab 0 : { *(.stab) } :NONE
229 .stabstr 0 : { *(.stabstr) }
230 .stab.excl 0 : { *(.stab.excl) }
231 .stab.exclstr 0 : { *(.stab.exclstr) }
232 .stab.index 0 : { *(.stab.index) }
233 .stab.indexstr 0 : { *(.stab.indexstr) }
234 .comment 0 : { *(.comment) }
235 /* DWARF debug sections.
236 Symbols in the DWARF debugging sections are relative to the beginning
237 of the section so we begin them at 0. */
239 .debug 0 : { *(.debug) }
240 .line 0 : { *(.line) }
241 /* GNU DWARF 1 extensions */
242 .debug_srcinfo 0 : { *(.debug_srcinfo) }
243 .debug_sfnames 0 : { *(.debug_sfnames) }
244 /* DWARF 1.1 and DWARF 2 */
245 .debug_aranges 0 : { *(.debug_aranges) }
246 .debug_pubnames 0 : { *(.debug_pubnames) }
248 .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
249 .debug_abbrev 0 : { *(.debug_abbrev) }
250 .debug_line 0 : { *(.debug_line) }
251 .debug_frame 0 : { *(.debug_frame) }
252 .debug_str 0 : { *(.debug_str) }
253 .debug_loc 0 : { *(.debug_loc) }
254 .debug_macinfo 0 : { *(.debug_macinfo) }
255 /* SGI/MIPS DWARF 2 extensions */
256 .debug_weaknames 0 : { *(.debug_weaknames) }
257 .debug_funcnames 0 : { *(.debug_funcnames) }
258 .debug_typenames 0 : { *(.debug_typenames) }
259 .debug_varnames 0 : { *(.debug_varnames) }
261 .debug_pubtypes 0 : { *(.debug_pubtypes) }
262 .debug_ranges 0 : { *(.debug_ranges) }
263 .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
264 /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.interp) }