mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-30 12:44:10 +08:00
223d5266de
With this patch, ld/pr24511 test passes for ARC. At first glance, the test was failing because the order of "__init_array_start" and "__fini_array_start" weak symbols were reversed: $ nm -n dump.out expected output | real output 00002104 D __init_array_start | 00002104 D __fini_array_start 0000210c D __fini_array_start | 00002104 D __init_array_start The order of the symbols are different as a side effect of both symbols being mapped to the _same_ address (0x2104). Looking further into the mapping logs [1] revealed that the linker script must consider all instances of ".init_array" (in other words ".init_array.*") inside its relevant section. Same logic holds for ".fini_array". Therefore, adding "KEEP (*(SORT(.init_array.*)))" to the linker script, along with the one for ".finit_array.*", resolved the problem. While at it, I took the liberty of refactoring the script a little bit and made those pieces of script macros. [1] Linker's mapping for the relevant part of the test --------------------------------------------------------------- .init_array 0x2104 0x0 0x2104 PROVIDE (__init_array_start = .) *(.init_array) [!provide] PROVIDE (__init_array_end = .) .fini_array 0x2104 0x0 0x2104 PROVIDE (__fini_array_start = .) *(.fini_array) [!provide] PROVIDE (__fini_array_end = .) .data 0x2104 0x0 *(.data .data.* .gnu.linkonce.d.*) .data 0x2104 0x0 pr24511.o .init_array.01000 0x2104 0x8 .init_array.01000 0x2104 0x8 pr24511.o .fini_array.01000 0x210c 0x8 .fini_array.01000 0x210c 0x8 pr24511.o --------------------------------------------------------------- ld: * scripttempl/elfarc.sc (.init_array): Keep ".init_array.*". (.fini_array): Keep ".fini_array.*". Signed-off-by: Claudiu Zissulescu <claziss@gmail.com> |
||
---|---|---|
.. | ||
aix.sc | ||
alpha.sc | ||
alphavms.sc | ||
aout.sc | ||
arclinux.sc | ||
armbpabi.sc | ||
avr.sc | ||
crisaout.sc | ||
dlx.sc | ||
DWARF.sc | ||
elf32cr16.sc | ||
elf32crx.sc | ||
elf32msp430.sc | ||
elf32xc16x.sc | ||
elf32xc16xl.sc | ||
elf32xc16xs.sc | ||
elf64bpf.sc | ||
elf64hppa.sc | ||
elf_chaos.sc | ||
elf.sc | ||
elfarc.sc | ||
elfarcv2.sc | ||
elfd10v.sc | ||
elfd30v.sc | ||
elfm9s12z.sc | ||
elfm68hc11.sc | ||
elfm68hc12.sc | ||
elfmicroblaze.sc | ||
elfxgate.sc | ||
elfxtensa.sc | ||
epiphany_4x4.sc | ||
ft32.sc | ||
hppaelf.sc | ||
i386beos.sc | ||
i386go32.sc | ||
i386msdos.sc | ||
ia64vms.sc | ||
ip2k.sc | ||
iq2000.sc | ||
mcorepe.sc | ||
mep.sc | ||
mips.sc | ||
mipsbsd.sc | ||
mmo.sc | ||
moxie.sc | ||
nds32elf.sc | ||
pdp11.sc | ||
pe.sc | ||
pep.sc | ||
pj.sc | ||
pru.sc | ||
README | ||
sh.sc | ||
tic4xcoff.sc | ||
tic30coff.sc | ||
tic54xcoff.sc | ||
v850_rh850.sc | ||
v850.sc | ||
vanilla.sc | ||
visium.sc | ||
xstormy16.sc | ||
z80.sc | ||
z8000.sc |
The files in this directory are linker script templates.
genscripts.sh sets some shell variables, then sources
EMULATION.sc, to generate EMULATION.{x,xr,xu,xn,xbn} -- the script
files for default, -r, -Ur, -n, -N.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.