1 /* Script for --shared -z combreloc: shared library, combine & sort relocs */
2 OUTPUT_FORMAT("elf32-shbig-linux", "elf32-shbig-linux",
6 SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
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) }
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) }
22 *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
24 *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
25 *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
26 *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
27 *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
31 *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
32 *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
33 *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
34 *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
35 *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
41 .rela.plt : { *(.rela.plt) }
49 *(.text .stub .text.* .gnu.linkonce.t.*)
50 /* .gnu.warning sections are handled specially by elf32.em. */
57 PROVIDE (__etext = .);
60 .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
61 .rodata1 : { *(.rodata1) }
62 .eh_frame_hdr : { *(.eh_frame_hdr) }
63 .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) }
64 .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
65 /* Adjust the address for the data segment. We want to adjust up to
66 the same address within the page on the next page up. */
67 . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
68 /* Exception handling */
69 .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) }
70 .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
71 /* Thread Local Storage sections */
72 .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
73 .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
76 KEEP (*(.preinit_array))
80 KEEP (*(SORT(.init_array.*)))
86 KEEP (*(SORT(.fini_array.*)))
90 /* gcc uses crtbegin.o to find the start of
91 the constructors, so we make sure it is
92 first. Because this is a wildcard, it
93 doesn't matter if the user does not
94 actually link against crtbegin.o; the
95 linker won't look for a file to match a
96 wildcard. The wildcard also means that it
97 doesn't matter which directory crtbegin.o
99 KEEP (*crtbegin.o(.ctors))
100 KEEP (*crtbegin?.o(.ctors))
101 /* We don't want to include the .ctor section from
102 the crtend.o file until after the sorted ctors.
103 The .ctor section from the crtend file contains the
104 end of ctors marker and it must be last */
105 KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
106 KEEP (*(SORT(.ctors.*)))
111 KEEP (*crtbegin.o(.dtors))
112 KEEP (*crtbegin?.o(.dtors))
113 KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
114 KEEP (*(SORT(.dtors.*)))
117 .jcr : { KEEP (*(.jcr)) }
118 .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
119 .dynamic : { *(.dynamic) }
120 . = DATA_SEGMENT_RELRO_END (0, .);
123 PROVIDE (__data_start = .);
124 *(.data .data.* .gnu.linkonce.d.*)
127 .data1 : { *(.data1) }
128 .note.ABI-tag : { *(.note.ABI-tag) }
129 .got : { *(.got.plt) *(.got) }
130 /* We want the small data sections together, so single-instruction offsets
131 can access them all, and initialized data all before uninitialized, so
132 we can shorten the on-disk segment size. */
135 *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
136 *(.sdata .sdata.* .gnu.linkonce.s.*)
138 _edata = .; PROVIDE (edata = .);
142 *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
144 *(.sbss .sbss.* .gnu.linkonce.sb.*)
150 *(.bss .bss.* .gnu.linkonce.b.*)
152 /* Align here to ensure that the .bss section occupies space up to
153 _end. Align after .bss to ensure correct alignment even if the
154 .bss section disappears because there are no input sections.
155 FIXME: Why do we need it? When there is no .bss section, we don't
156 pad the .data section. */
157 . = ALIGN(. != 0 ? 32 / 8 : 1);
161 _end = .; PROVIDE (end = .);
162 . = DATA_SEGMENT_END (.);
163 /* Stabs debugging sections. */
164 .stab 0 : { *(.stab) }
165 .stabstr 0 : { *(.stabstr) }
166 .stab.excl 0 : { *(.stab.excl) }
167 .stab.exclstr 0 : { *(.stab.exclstr) }
168 .stab.index 0 : { *(.stab.index) }
169 .stab.indexstr 0 : { *(.stab.indexstr) }
170 .comment 0 : { *(.comment) }
171 /* DWARF debug sections.
172 Symbols in the DWARF debugging sections are relative to the beginning
173 of the section so we begin them at 0. */
175 .debug 0 : { *(.debug) }
176 .line 0 : { *(.line) }
177 /* GNU DWARF 1 extensions */
178 .debug_srcinfo 0 : { *(.debug_srcinfo) }
179 .debug_sfnames 0 : { *(.debug_sfnames) }
180 /* DWARF 1.1 and DWARF 2 */
181 .debug_aranges 0 : { *(.debug_aranges) }
182 .debug_pubnames 0 : { *(.debug_pubnames) }
184 .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
185 .debug_abbrev 0 : { *(.debug_abbrev) }
186 .debug_line 0 : { *(.debug_line) }
187 .debug_frame 0 : { *(.debug_frame) }
188 .debug_str 0 : { *(.debug_str) }
189 .debug_loc 0 : { *(.debug_loc) }
190 .debug_macinfo 0 : { *(.debug_macinfo) }
191 /* SGI/MIPS DWARF 2 extensions */
192 .debug_weaknames 0 : { *(.debug_weaknames) }
193 .debug_funcnames 0 : { *(.debug_funcnames) }
194 .debug_typenames 0 : { *(.debug_typenames) }
195 .debug_varnames 0 : { *(.debug_varnames) }
197 .debug_pubtypes 0 : { *(.debug_pubtypes) }
198 .debug_ranges 0 : { *(.debug_ranges) }
199 .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
200 /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) }