binutils-gdb/ld/scripttempl
Shahab Vahedi 223d5266de ARC: Fix ld/pr24511 test
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>
2020-07-31 12:15:17 +03:00
..
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 ARC: Fix ld/pr24511 test 2020-07-31 12:15:17 +03:00
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

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.