binutils-gdb/ld/emultempl
H.J. Lu 496afd1705 elf: Add -z unique-symbol to avoid duplicated local symbol names
The symbol string table in the .symtab section is optional and cosmetic.
The contents of the .symtab section have no impact on run-time execution.
The symbol names in the symbol string table help distinguish addresses at
different locations.  Add a linker option, -z unique-symbol, to avoid
duplicated local symbol names in the symbol string table.

This feature was well received by the livepatch maintainers.  It not only
solves the duplicated local symbol name problem, but also would allow
livepatch to more precisely locate duplicate symbols in general for
patching.

bfd/

	PR ld/26391
	* elflink.c (elf_final_link_info): Add local_hash_table.
	(local_hash_entry): New.
	(local_hash_newfunc): Likewise.
	(elf_link_output_symstrtab): Append ".COUNT" to duplicated local
	symbols.
	(bfd_elf_final_link): Initialize and free local_hash_table for
	"-z unique-symbol".

include/

	PR ld/26391
	* bfdlink.h (bfd_link_info): Add unique_symbol.

ld/

	PR ld/26391
	* NEWS: Mention "-z unique-symbol".
	* emultempl/elf.em (gld${EMULATION_NAME}_handle_option): Handle
	"-z unique-symbol" and "-z nounique-symbol".
	* ld.texi: Document "-z unique-symbol" and "-z nounique-symbol".
	* lexsup.c (elf_static_list_options): Add "-z unique-symbol" and
	"-z nounique-symbol".
	* testsuite/ld-elf/elf.exp: Add PR ld/26391 tests.
	* testsuite/ld-elf/pr26391.nd: New file.
	* testsuite/ld-elf/pr26391.out: Likewise.
	* testsuite/ld-elf/pr26391a.c: Likewise.
	* testsuite/ld-elf/pr26391b.c: Likewise.
	* testsuite/ld-elf/pr26391c.c: Likewise.
	* testsuite/ld-elf/pr26391d.c: Likewise.
2020-09-12 05:37:43 -07:00
..
aarch64elf.em Emit a warning when -z relro is unsupported 2020-06-19 09:50:20 +09:30
aix.em XCOFF linker script PROVIDE support 2020-07-07 18:26:33 +09:30
alphaelf.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
arclinux.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
armcoff.em Show AIX gc'd symbol address adjustments in map file 2020-05-18 22:41:32 +09:30
armelf.em Emit a warning when -z relro is unsupported 2020-06-19 09:50:20 +09:30
astring.sed
avrelf.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
beos.em Remove powerpc PE support 2020-07-09 22:58:16 +09:30
bfin.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
cr16elf.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
crxelf.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
cskyelf.em ld --help output 2020-06-24 20:00:08 +09:30
elf-generic.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
elf-x86.em x86: Check static link of dynamic objects 2020-03-13 07:39:06 -07:00
elf.em elf: Add -z unique-symbol to avoid duplicated local symbol names 2020-09-12 05:37:43 -07:00
epiphanyelf_4x4.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
genelf.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
generic.em Show AIX gc'd symbol address adjustments in map file 2020-05-18 22:41:32 +09:30
hppaelf.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
ia64elf.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
irix.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
linux.em Emit a warning when -z relro is unsupported 2020-06-19 09:50:20 +09:30
m68hc1xelf.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
m68kelf.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
metagelf.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
mipself.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
mmix-elfnmmo.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
mmixelf.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
mmo.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
msp430.em MSP430: Fix alignment of __*_array_start symbols in default linker script 2020-08-28 14:01:10 +01:00
nds32elf.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
needrelax.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
netbsd.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
nios2elf.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
ostring.sed
pdp11.em Fixes for the magic number used in PDP11 AOUT binaries. 2020-04-14 14:41:27 +01:00
pe.em Fix a segfault when creating an import library with 0 exports. 2020-09-11 17:51:16 +01:00
pep.em Fix a segfault when creating an import library with 0 exports. 2020-09-11 17:51:16 +01:00
ppc32elf.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
ppc64elf.em PowerPC64 --no-pcrel-optimize 2020-08-13 08:10:18 +09:30
pruelf.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
README Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
riscvelf.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
rxelf.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
rxlinux.em ld: Add rx-linux emulation. gas: Change ELF flags initial value in rx-linux 2020-04-30 13:35:37 +01:00
s390.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
scoreelf.em Emit a warning when -z relro is unsupported 2020-06-19 09:50:20 +09:30
solaris2-x86.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
solaris2.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
spu_icache.o_c Regenerate spu overlay and icache manager files 2014-11-04 22:36:13 +10:30
spu_icache.S
spu_ovl.o_c Regenerate spu_ovl.o_c 2016-10-15 12:53:57 +10:30
spu_ovl.S Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
spuelf.em PR26499 UBSAN: eelf32_spu.c:537 member access null pointer 2020-08-26 23:23:45 +09:30
tic6xdsbt.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
ticoff.em Show AIX gc'd symbol address adjustments in map file 2020-05-18 22:41:32 +09:30
v850elf.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
vanilla.em Show AIX gc'd symbol address adjustments in map file 2020-05-18 22:41:32 +09:30
vms.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
vxworks.em Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
xtensaelf.em xtensa: allow runtime ABI selection 2020-06-15 13:01:30 -07:00
z80.em Various fixes for the Z80 support. 2020-02-19 17:46:10 +00:00

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 sourced by genscripts.sh, after
setting some variables to substitute in, to produce
C source files that contain jump tables for each emulation.

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.