]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - ld/scripttempl/armbpabi.sc
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / ld / scripttempl / armbpabi.sc
CommitLineData
229fcec5
MM
1# This variant of elf.sc is used for ARM BPABI platforms, like Symbian
2# OS, where a separate postlinker will operated on the generated
ba916c8a
MM
3# executable or shared object. See elf.sc for configuration variables
4# that apply; only BPABI-specific variables will be noted here.
985743c7 5#
250d07de 6# Copyright (C) 2014-2021 Free Software Foundation, Inc.
6c19b93b 7#
985743c7
NC
8# Copying and distribution of this file, with or without modification,
9# are permitted in any medium without royalty provided the copyright
10# notice and this notice are preserved.
229fcec5
MM
11
12test -z "$ENTRY" && ENTRY=_start
13test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
14test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
15if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
16test -z "${ELFSIZE}" && ELFSIZE=32
17test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
18test "$LD_FLAG" = "N" && DATA_ADDR=.
19test -n "$CREATE_SHLIB$CREATE_PIE" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE=""
20test -z "$CREATE_SHLIB$CREATE_PIE" && test -n "$DATA_ADDR" && COMMONPAGESIZE=""
21test -n "$RELRO_NOW" && unset SEPARATE_GOTPLT
22DATA_SEGMENT_ALIGN="ALIGN(${SEGMENT_SIZE}) + (. & (${MAXPAGESIZE} - 1))"
23DATA_SEGMENT_RELRO_END=""
24DATA_SEGMENT_RELRO_GOTPLT_END=""
25DATA_SEGMENT_END=""
26if test -n "${COMMONPAGESIZE}"; then
27 DATA_SEGMENT_ALIGN="ALIGN (${SEGMENT_SIZE}) - ((${MAXPAGESIZE} - .) & (${MAXPAGESIZE} - 1)); . = DATA_SEGMENT_ALIGN (${MAXPAGESIZE}, ${COMMONPAGESIZE})"
28 DATA_SEGMENT_END=". = DATA_SEGMENT_END (.);"
29 if test -n "${SEPARATE_GOTPLT}"; then
30 DATA_SEGMENT_RELRO_GOTPLT_END=". = DATA_SEGMENT_RELRO_END (. + ${SEPARATE_GOTPLT});"
31 else
32 DATA_SEGMENT_RELRO_END=". = DATA_SEGMENT_RELRO_END (.);"
33 fi
34fi
35INTERP=".interp 0 : { *(.interp) }"
ec2d9b29
AM
36PLT=".plt ${RELOCATING-0} : { *(.plt) }"
37RODATA=".rodata ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
18bbc1c5 38DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro .data.rel.ro.*) }"
43e56c34 39DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }"
229fcec5 40if test -z "${NO_SMALL_DATA}"; then
ec2d9b29 41 SBSS=".sbss ${RELOCATING-0} :
229fcec5
MM
42 {
43 ${RELOCATING+PROVIDE (__sbss_start = .);}
44 ${RELOCATING+PROVIDE (___sbss_start = .);}
2bf2bf23 45 ${RELOCATING+*(.dynsbss)}
229fcec5 46 *(.sbss${RELOCATING+ .sbss.* .gnu.linkonce.sb.*})
2bf2bf23 47 ${RELOCATING+*(.scommon)}
229fcec5
MM
48 ${RELOCATING+PROVIDE (__sbss_end = .);}
49 ${RELOCATING+PROVIDE (___sbss_end = .);}
50 }"
ec2d9b29 51 SBSS2=".sbss2 ${RELOCATING-0} : { *(.sbss2${RELOCATING+ .sbss2.* .gnu.linkonce.sb2.*}) }"
229fcec5
MM
52 SDATA="/* We want the small data sections together, so single-instruction offsets
53 can access them all, and initialized data all before uninitialized, so
54 we can shorten the on-disk segment size. */
6c19b93b 55 .sdata ${RELOCATING-0} :
229fcec5
MM
56 {
57 ${RELOCATING+${SDATA_START_SYMBOLS}}
58 *(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*})
59 }"
ec2d9b29
AM
60 SDATA2=".sdata2 ${RELOCATING-0} : { *(.sdata2${RELOCATING+ .sdata2.* .gnu.linkonce.s2.*}) }"
61 REL_SDATA=".rel.sdata ${RELOCATING-0} : { *(.rel.sdata${RELOCATING+ .rel.sdata.* .rel.gnu.linkonce.s.*}) }
62 .rela.sdata ${RELOCATING-0} : { *(.rela.sdata${RELOCATING+ .rela.sdata.* .rela.gnu.linkonce.s.*}) }"
63 REL_SBSS=".rel.sbss ${RELOCATING-0} : { *(.rel.sbss${RELOCATING+ .rel.sbss.* .rel.gnu.linkonce.sb.*}) }
64 .rela.sbss ${RELOCATING-0} : { *(.rela.sbss${RELOCATING+ .rela.sbss.* .rela.gnu.linkonce.sb.*}) }"
65 REL_SDATA2=".rel.sdata2 ${RELOCATING-0} : { *(.rel.sdata2${RELOCATING+ .rel.sdata2.* .rel.gnu.linkonce.s2.*}) }
66 .rela.sdata2 ${RELOCATING-0} : { *(.rela.sdata2${RELOCATING+ .rela.sdata2.* .rela.gnu.linkonce.s2.*}) }"
67 REL_SBSS2=".rel.sbss2 ${RELOCATING-0} : { *(.rel.sbss2${RELOCATING+ .rel.sbss2.* .rel.gnu.linkonce.sb2.*}) }
68 .rela.sbss2 ${RELOCATING-0} : { *(.rela.sbss2${RELOCATING+ .rela.sbss2.* .rela.gnu.linkonce.sb2.*}) }"
229fcec5
MM
69else
70 NO_SMALL_DATA=" "
71fi
72test -n "$SEPARATE_GOTPLT" && SEPARATE_GOTPLT=" "
3cff7cc7
JZ
73INIT_ARRAY=".init_array ${RELOCATING-0} :
74 {
75 /* SymbianOS uses this symbol. */
76 ${RELOCATING+PROVIDE (SHT\$\$INIT_ARRAY\$\$Base = .);}
77 ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__init_array_start = .);}}
78 KEEP (*(SORT(.init_array.*)))
79 KEEP (*(.init_array))
80 ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__init_array_end = .);}}
81 /* SymbianOS uses this symbol. */
82 ${RELOCATING+PROVIDE (SHT\$\$INIT_ARRAY\$\$Limit = .);}
83 }"
84FINI_ARRAY=".fini_array ${RELOCATING-0} :
85 {
86 ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__fini_array_start = .);}}
87 KEEP (*(SORT(.fini_array.*)))
88 KEEP (*(.fini_array))
89 ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__fini_array_end = .);}}
90 }"
6c19b93b 91CTOR=".ctors ${CONSTRUCTING-0} :
229fcec5
MM
92 {
93 ${CONSTRUCTING+${CTOR_START}}
94 /* gcc uses crtbegin.o to find the start of
95 the constructors, so we make sure it is
96 first. Because this is a wildcard, it
97 doesn't matter if the user does not
98 actually link against crtbegin.o; the
99 linker won't look for a file to match a
100 wildcard. The wildcard also means that it
101 doesn't matter which directory crtbegin.o
102 is in. */
103
40cf2291
AM
104 KEEP (*crtbegin.o(.ctors))
105 KEEP (*crtbegin?.o(.ctors))
229fcec5
MM
106
107 /* We don't want to include the .ctor section from
bd6791bc 108 the crtend.o file until after the sorted ctors.
229fcec5
MM
109 The .ctor section from the crtend file contains the
110 end of ctors marker and it must be last */
111
40cf2291 112 KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .ctors))
229fcec5
MM
113 KEEP (*(SORT(.ctors.*)))
114 KEEP (*(.ctors))
115 ${CONSTRUCTING+${CTOR_END}}
116 }"
ec2d9b29 117DTOR=".dtors ${CONSTRUCTING-0} :
229fcec5
MM
118 {
119 ${CONSTRUCTING+${DTOR_START}}
40cf2291
AM
120 KEEP (*crtbegin.o(.dtors))
121 KEEP (*crtbegin?.o(.dtors))
122 KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .dtors))
229fcec5
MM
123 KEEP (*(SORT(.dtors.*)))
124 KEEP (*(.dtors))
125 ${CONSTRUCTING+${DTOR_END}}
126 }"
ec2d9b29 127STACK=" .stack ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
229fcec5
MM
128 {
129 ${RELOCATING+_stack = .;}
130 *(.stack)
131 }"
132
ba916c8a
MM
133TEXT_START_ADDR="SEGMENT_START(\"text\", ${TEXT_START_ADDR})"
134SHLIB_TEXT_START_ADDR="SEGMENT_START(\"text\", ${SHLIB_TEXT_START_ADDR:-0})"
135DATA_ADDR="SEGMENT_START(\"data\", ${DATA_ADDR-${DATA_SEGMENT_ALIGN}})"
136SHLIB_DATA_ADDR="SEGMENT_START(\"data\", ${SHLIB_DATA_ADDR-${DATA_SEGMENT_ALIGN}})"
137
985743c7 138# If this is for an embedded system, don't add SIZEOF_HEADERS.
229fcec5
MM
139if [ -z "$EMBEDDED" ]; then
140 test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR} + SIZEOF_HEADERS"
ba916c8a 141 SHLIB_BASE_ADDRESS="${SHLIB_TEXT_START_ADDR} + SIZEOF_HEADERS"
229fcec5
MM
142else
143 test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR}"
ba916c8a 144 SHLIB_BASE_ADDRESS="${SHLIB_TEXT_START_ADDR}"
229fcec5
MM
145fi
146
147cat <<EOF
250d07de 148/* Copyright (C) 2014-2021 Free Software Foundation, Inc.
985743c7
NC
149
150 Copying and distribution of this script, with or without modification,
151 are permitted in any medium without royalty provided the copyright
152 notice and this notice are preserved. */
153
229fcec5
MM
154OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
155 "${LITTLE_OUTPUT_FORMAT}")
156OUTPUT_ARCH(${OUTPUT_ARCH})
2bf2bf23
AM
157EOF
158
159test -n "${RELOCATING}" && cat <<EOF
160ENTRY(${ENTRY})
161
162${LIB_SEARCH_DIRS}
163/* Do we need any of these for elf?
164 __DYNAMIC = 0; ${STACKZERO+${STACKZERO}} ${SHLIB_PATH+${SHLIB_PATH}} */
165${EXECUTABLE_SYMBOLS}
166${INPUT_FILES}
229fcec5 167
6c19b93b 168/* ARM's proprietary toolchain generate these symbols to match the start
4e5db43b 169 and end of particular sections of the image. SymbianOS uses these
6c19b93b
AM
170 symbols. We provide them for compatibility with ARM's toolchains.
171 These symbols should be bound locally; each shared object may define
172 its own version of these symbols. */
173
4e5db43b 174VERSION
6c19b93b 175{
c68dac40
PB
176 /* Give these a dummy version to work around linker lameness.
177 The name used shouldn't matter as these are all local symbols. */
6c19b93b
AM
178 __GNU {
179 local:
4e5db43b
MM
180 Image\$\$ER_RO\$\$Base;
181 Image\$\$ER_RO\$\$Limit;
182 SHT\$\$INIT_ARRAY\$\$Base;
183 SHT\$\$INIT_ARRAY\$\$Limit;
6c19b93b 184 .ARM.exidx\$\$Base;
4e5db43b
MM
185 .ARM.exidx\$\$Limit;
186 };
187}
188
2bf2bf23
AM
189EOF
190
191cat <<EOF
229fcec5
MM
192SECTIONS
193{
194 /* Read-only sections, merged into text segment: */
dc4c9c19 195 ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (__executable_start = ${TEXT_START_ADDR});}}}
4e5db43b 196
dc4c9c19 197 ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+ . = ${TEXT_BASE_ADDRESS};}}}
ba916c8a
MM
198 ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_BASE_ADDRESS};}}
199 ${CREATE_PIE+${RELOCATING+. = ${SHLIB_BASE_ADDRESS};}}
4e5db43b
MM
200
201 /* Define Image\$\$ER_RO\$\$Base. */
202 ${RELOCATING+PROVIDE (Image\$\$ER_RO\$\$Base = .);}
203
229fcec5 204 ${INITIAL_READONLY_SECTIONS}
229fcec5
MM
205
206EOF
229fcec5 207cat <<EOF
6c19b93b
AM
208 .init ${RELOCATING-0} :
209 {
229fcec5 210 ${RELOCATING+${INIT_START}}
2d3181c7 211 KEEP (*(SORT_NONE(.init)))
229fcec5
MM
212 ${RELOCATING+${INIT_END}}
213 } =${NOP-0}
ec2d9b29 214 .text ${RELOCATING-0} :
229fcec5
MM
215 {
216 ${RELOCATING+${TEXT_START_SYMBOLS}}
217 *(.text .stub${RELOCATING+ .text.* .gnu.linkonce.t.*})
075a2b89 218 /* .gnu.warning sections are handled specially by elf.em. */
229fcec5
MM
219 *(.gnu.warning)
220 ${RELOCATING+${OTHER_TEXT_SECTIONS}}
221 } =${NOP-0}
ec2d9b29 222 .fini ${RELOCATING-0} :
229fcec5
MM
223 {
224 ${RELOCATING+${FINI_START}}
2d3181c7 225 KEEP (*(SORT_NONE(.fini)))
229fcec5
MM
226 ${RELOCATING+${FINI_END}}
227 } =${NOP-0}
dc4c9c19
MM
228 /* The SymbianOS kernel requires that the PLT go at the end of the
229 text section. */
230 ${DATA_PLT-${BSS_PLT-${PLT}}}
229fcec5
MM
231 ${RELOCATING+PROVIDE (__etext = .);}
232 ${RELOCATING+PROVIDE (_etext = .);}
233 ${RELOCATING+PROVIDE (etext = .);}
4e5db43b
MM
234
235 /* Define Image\$\$ER_RO\$\$Limit. */
dc4c9c19 236 ${RELOCATING+PROVIDE (Image\$\$ER_RO\$\$Limit = .);}
4e5db43b 237
229fcec5 238 ${WRITABLE_RODATA-${RODATA}}
ec2d9b29 239 .rodata1 ${RELOCATING-0} : { *(.rodata1) }
229fcec5
MM
240 ${CREATE_SHLIB-${SDATA2}}
241 ${CREATE_SHLIB-${SBSS2}}
229fcec5 242
dc4c9c19
MM
243 /* On SymbianOS, put .init_array and friends in the read-only
244 segment; there is no runtime relocation applied to these
245 arrays. */
229fcec5 246
ec2d9b29 247 .preinit_array ${RELOCATING-0} :
6f2942ed
PB
248 {
249 ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__preinit_array_start = .);}}
250 KEEP (*(.preinit_array))
251 ${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__preinit_array_end = .);}}
252 }
3cff7cc7
JZ
253 ${RELOCATING+${INIT_ARRAY}}
254 ${RELOCATING+${FINI_ARRAY}}
229fcec5 255
dc4c9c19 256 ${OTHER_READONLY_SECTIONS}
c2e86386 257 .eh_frame_hdr ${RELOCATING-0} : { *(.eh_frame_hdr) }
ec2d9b29 258 .eh_frame ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) }
2bf2bf23 259 .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.gcc_except_table${RELOCATING+ .gcc_except_table.*})) }
dc4c9c19
MM
260
261 /* Adjust the address for the data segment. We want to adjust up to
262 the same address within the page on the next page up. */
263 ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+. = ${DATA_ADDR};}}}
264 ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_DATA_ADDR};}}
265 ${CREATE_PIE+${RELOCATING+. = ${SHLIB_DATA_ADDR};}}
266
267 /* Exception handling */
ec2d9b29 268 .eh_frame ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.eh_frame)) }
2bf2bf23 269 .gcc_except_table ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.gcc_except_table${RELOCATING+ .gcc_except_table.*})) }
dc4c9c19
MM
270
271 /* Thread Local Storage sections */
ec2d9b29
AM
272 .tdata ${RELOCATING-0} : { *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }
273 .tbss ${RELOCATING-0} : { *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }
dc4c9c19 274
229fcec5
MM
275 ${RELOCATING+${CTOR}}
276 ${RELOCATING+${DTOR}}
ec2d9b29 277 .jcr ${RELOCATING-0} : { KEEP (*(.jcr)) }
229fcec5
MM
278
279 ${RELOCATING+${DATARELRO}}
280 ${OTHER_RELRO_SECTIONS}
281 ${RELOCATING+${DATA_SEGMENT_RELRO_END}}
282
283 ${DATA_PLT+${PLT_BEFORE_GOT-${PLT}}}
284
ec2d9b29 285 .data ${RELOCATING-0} :
229fcec5
MM
286 {
287 ${RELOCATING+${DATA_START_SYMBOLS}}
288 *(.data${RELOCATING+ .data.* .gnu.linkonce.d.*})
229fcec5
MM
289 ${CONSTRUCTING+SORT(CONSTRUCTORS)}
290 }
ec2d9b29 291 .data1 ${RELOCATING-0} : { *(.data1) }
229fcec5
MM
292 ${WRITABLE_RODATA+${RODATA}}
293 ${OTHER_READWRITE_SECTIONS}
294 ${DATA_PLT+${PLT_BEFORE_GOT+${PLT}}}
295 ${CREATE_SHLIB+${SDATA2}}
296 ${CREATE_SHLIB+${SBSS2}}
297 ${SDATA}
298 ${OTHER_SDATA_SECTIONS}
299 ${RELOCATING+_edata = .;}
300 ${RELOCATING+PROVIDE (edata = .);}
ba916c8a 301 ${RELOCATING+. = DEFINED(__bss_segment_start) ? __bss_segment_start : .;}
229fcec5
MM
302 ${RELOCATING+__bss_start = .;}
303 ${RELOCATING+${OTHER_BSS_SYMBOLS}}
304 ${SBSS}
305 ${BSS_PLT+${PLT}}
ec2d9b29 306 .bss ${RELOCATING-0} :
229fcec5 307 {
2bf2bf23 308 ${RELOCATING+*(.dynbss)}
229fcec5 309 *(.bss${RELOCATING+ .bss.* .gnu.linkonce.b.*})
2bf2bf23 310 ${RELOCATING+*(COMMON)
229fcec5
MM
311 /* Align here to ensure that the .bss section occupies space up to
312 _end. Align after .bss to ensure correct alignment even if the
313 .bss section disappears because there are no input sections. */
2bf2bf23 314 . = ALIGN(${ALIGNMENT});}
229fcec5 315 }
827a1c67 316 ${RELOCATING+${OTHER_BSS_END_SYMBOLS}}
229fcec5 317 ${RELOCATING+. = ALIGN(${ALIGNMENT});}
9f4fb502 318 ${RELOCATING+${OTHER_END_SYMBOLS}}
827a1c67 319 ${RELOCATING+_end = .;}
229fcec5
MM
320 ${RELOCATING+PROVIDE (end = .);}
321 ${RELOCATING+${DATA_SEGMENT_END}}
74dc9032 322 ${STACK_ADDR+${STACK}}
229fcec5
MM
323
324 /* These sections are not mapped under the BPABI. */
325 .dynamic 0 : { *(.dynamic) }
326 .hash 0 : { *(.hash) }
327 .dynsym 0 : { *(.dynsym) }
328 .dynstr 0 : { *(.dynstr) }
c0042f5d
MM
329 .gnu.version 0 : { *(.gnu.version) }
330 .gnu.version_d 0: { *(.gnu.version_d) }
331 .gnu.version_r 0: { *(.gnu.version_r) }
229fcec5
MM
332 ${CREATE_SHLIB-${INTERP}}
333
334 /* Stabs debugging sections. */
335 .stab 0 : { *(.stab) }
336 .stabstr 0 : { *(.stabstr) }
337 .stab.excl 0 : { *(.stab.excl) }
338 .stab.exclstr 0 : { *(.stab.exclstr) }
339 .stab.index 0 : { *(.stab.index) }
340 .stab.indexstr 0 : { *(.stab.indexstr) }
341
342 .comment 0 : { *(.comment) }
ceb0a680 343EOF
229fcec5 344
d061dfac 345. $srcdir/scripttempl/DWARF.sc
2a995fc1 346
ceb0a680 347cat <<EOF
229fcec5 348 ${OTHER_SECTIONS}
827a1c67 349 ${RELOCATING+${OTHER_SYMBOLS}}
1c68693b 350 ${RELOCATING+${DISCARDED}}
ba916c8a
MM
351EOF
352
353# These relocations sections are part of the read-only segment in SVR4
354# executables, but are not mapped in BPABI executables.
355if [ "x$COMBRELOC" = x ]; then
356 COMBRELOCCAT=cat
357else
358 COMBRELOCCAT="cat > $COMBRELOC"
359fi
360eval $COMBRELOCCAT <<EOF
361 .rel.init 0 : { *(.rel.init) }
362 .rela.init 0 : { *(.rela.init) }
363 .rel.text 0 : { *(.rel.text${RELOCATING+ .rel.text.* .rel.gnu.linkonce.t.*}) }
364 .rela.text 0 : { *(.rela.text${RELOCATING+ .rela.text.* .rela.gnu.linkonce.t.*}) }
365 .rel.fini 0 : { *(.rel.fini) }
366 .rela.fini 0 : { *(.rela.fini) }
367 .rel.rodata 0 : { *(.rel.rodata${RELOCATING+ .rel.rodata.* .rel.gnu.linkonce.r.*}) }
368 .rela.rodata 0 : { *(.rela.rodata${RELOCATING+ .rela.rodata.* .rela.gnu.linkonce.r.*}) }
369 ${OTHER_READONLY_RELOC_SECTIONS}
18bbc1c5
CC
370 .rel.data.rel.ro 0 : { *(.rel.data.rel.ro${RELOCATING+ .rel.data.rel.ro.*}) }
371 .rela.data.rel.ro 0 : { *(.rela.data.rel.ro${RELOCATING+ .rela.data.rel.ro.*}) }
ba916c8a
MM
372 .rel.data 0 : { *(.rel.data${RELOCATING+ .rel.data.* .rel.gnu.linkonce.d.*}) }
373 .rela.data 0 : { *(.rela.data${RELOCATING+ .rela.data.* .rela.gnu.linkonce.d.*}) }
374 .rel.tdata 0 : { *(.rel.tdata${RELOCATING+ .rel.tdata.* .rel.gnu.linkonce.td.*}) }
375 .rela.tdata 0 : { *(.rela.tdata${RELOCATING+ .rela.tdata.* .rela.gnu.linkonce.td.*}) }
376 .rel.tbss 0 : { *(.rel.tbss${RELOCATING+ .rel.tbss.* .rel.gnu.linkonce.tb.*}) }
377 .rela.tbss 0 : { *(.rela.tbss${RELOCATING+ .rela.tbss.* .rela.gnu.linkonce.tb.*}) }
378 .rel.ctors 0 : { *(.rel.ctors) }
379 .rela.ctors 0 : { *(.rela.ctors) }
380 .rel.dtors 0 : { *(.rel.dtors) }
381 .rela.dtors 0 : { *(.rela.dtors) }
382 ${REL_SDATA}
383 ${REL_SBSS}
384 ${REL_SDATA2}
385 ${REL_SBSS2}
386 .rel.bss 0 : { *(.rel.bss${RELOCATING+ .rel.bss.* .rel.gnu.linkonce.b.*}) }
387 .rela.bss 0 : { *(.rela.bss${RELOCATING+ .rela.bss.* .rela.gnu.linkonce.b.*}) }
2a2a7c94
JB
388 .rel.init_array 0 : { *(.rel.init_array) }
389 .rela.init_array 0 : { *(.rela.init_array) }
390 .rel.fini_array 0 : { *(.rel.fini_array) }
391 .rela.fini_array 0 : { *(.rela.fini_array) }
ba916c8a
MM
392EOF
393if [ -n "$COMBRELOC" ]; then
394cat <<EOF
395 .rel.dyn 0 :
396 {
397EOF
6c19b93b 398sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC
ba916c8a
MM
399cat <<EOF
400 }
401 .rela.dyn 0 :
402 {
403EOF
6c19b93b 404sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC
ba916c8a
MM
405cat <<EOF
406 }
407EOF
408fi
409cat <<EOF
410 .rel.plt 0 : { *(.rel.plt) }
411 .rela.plt 0 : { *(.rela.plt) }
412 ${OTHER_PLT_RELOC_SECTIONS}
2a2a7c94
JB
413 .rel.other 0 : { *(.rel.*) }
414 .rela.other 0 : { *(.rela.*) }
415 .reli.other 0 : { *(.reli.*) }
229fcec5
MM
416}
417EOF