2 _load = 0x10000; /* kernel load address */
4 OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
7 SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib);
11 . = _load + SIZEOF_HEADERS;
15 PROVIDE_HIDDEN (__rel_iplt_start = .);
17 PROVIDE_HIDDEN (__rel_iplt_end = .);
21 _kernel_image_start = .;
26 *(.text .stub .text.* .gnu.linkonce.t.*)
36 *(.rodata .rodata.* .gnu.linkonce.r.*)
37 /* Discarding the build-id section will yield to an error from the
38 * linker so just put it here */
43 PROVIDE (__preinit_array_start = .);
45 PROVIDE (__preinit_array_end = .);
50 PROVIDE (__init_array_start = .);
51 KEEP (*(SORT (.init_array.*)))
53 PROVIDE (__init_array_end = .);
58 PROVIDE (__fini_array_start = .);
61 PROVIDE (__fini_array_end = .);
70 KEEP(*(.initkip.version))
71 KEEP(*(.initkip.features))
72 KEEP(*(.initkip.features.fini))
78 PROVIDE (_kernel_data_start = .);
79 *(.data .data.* .gnu.linkonce.d.*)
81 __PER_CPU_INIT_ARRAY_START__ = .;
82 KEEP (*(.init_array.65534))
83 KEEP (*(.init_array.65533))
84 KEEP (*(.init_array.65532))
85 KEEP (*(.init_array.65531))
86 KEEP (*(.init_array.65530))
87 KEEP (*(.init_array.65529))
88 KEEP (*(.init_array.65528))
89 KEEP (*(.init_array.65527))
90 KEEP (*(.init_array.65526))
91 KEEP (*(.init_array.65525))
92 __PER_CPU_INIT_ARRAY_END__ = .;
94 __PER_CPU_LATE_INIT_ARRAY_START__ = .;
95 KEEP (*(.init_array.65524))
96 KEEP (*(.init_array.65523))
97 KEEP (*(.init_array.65522))
98 KEEP (*(.init_array.65521))
99 KEEP (*(.init_array.65520))
100 KEEP (*(.init_array.65519))
101 KEEP (*(.init_array.65518))
102 KEEP (*(.init_array.65517))
103 KEEP (*(.init_array.65516))
104 KEEP (*(.init_array.65515))
105 __PER_CPU_LATE_INIT_ARRAY_END__ = .;
107 __INIT_ARRAY_START__ = .;
108 PROVIDE (__init_array_start = .);
109 KEEP (*(SORT (.init_array.*)))
110 KEEP (*(.init_array))
111 PROVIDE (__init_array_end = .);
112 __INIT_ARRAY_END__ = .;
118 __PER_CPU_CTORS_END__ = .;
119 KEEP (*(.ctors.00010))
120 KEEP (*(.ctors.00009))
121 KEEP (*(.ctors.00008))
122 KEEP (*(.ctors.00007))
123 KEEP (*(.ctors.00006))
124 KEEP (*(.ctors.00005))
125 KEEP (*(.ctors.00004))
126 KEEP (*(.ctors.00003))
127 KEEP (*(.ctors.00002))
128 KEEP (*(.ctors.00001))
129 __PER_CPU_CTORS_LIST__ = .;
131 __PER_CPU_LATE_CTORS_END__ = .;
132 KEEP (*(.ctors.00020))
133 KEEP (*(.ctors.00019))
134 KEEP (*(.ctors.00018))
135 KEEP (*(.ctors.00017))
136 KEEP (*(.ctors.00016))
137 KEEP (*(.ctors.00015))
138 KEEP (*(.ctors.00014))
139 KEEP (*(.ctors.00013))
140 KEEP (*(.ctors.00012))
141 KEEP (*(.ctors.00011))
142 __PER_CPU_LATE_CTORS_LIST__ = .;
145 PROVIDE (_log_table = .);
147 * The section must start with ".debug" because else the linker
148 * complains about references to discarded sections
150 KEEP(*(SORT(.debug.jdb.log_table)))
151 PROVIDE (_log_table_end = .);
155 *(.tdata .tdata.* .gnu.linkonce.td.*)
158 *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
161 .eh_frame : { KEEP (*(.eh_frame)) }
162 .gcc_except_table : { *(.gcc_except_table) }
165 KEEP (*crtbegin.o(.ctors))
166 KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
167 KEEP (*(SORT(.ctors.*)))
172 KEEP (*crtbegin.o(.dtors))
173 KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
174 KEEP (*(SORT(.dtors.*)))
185 PROVIDE (_per_cpu_data_start = .);
188 PROVIDE (_per_cpu_data_end = .);
191 PROVIDE (_edata = .);
195 PROVIDE (_initcall_start = .);
198 PROVIDE (_initcall_end = .);
202 .bss : { /* Linux 2.2 requires BSS to be last */
205 _per_cpu_ctor_data_start = .;
206 KEEP (*(.bss.per_cpu_ctor_data))
207 _per_cpu_ctor_data_end = .;
208 *(.bss .bss.* .gnu.linkonce.b.*)
214 /* make the kip_init code happy */
215 PROVIDE (_boot_sys_start = .);
216 PROVIDE (_boot_sys_end = .);
218 /* make the construction.cc code happy w/o dtros */
219 PROVIDE (__DTOR_END__ = .);
220 PROVIDE (__DTOR_LIST__ = __DTOR_END__);