8sa1-binutils-gdb/ld/testsuite
H.J. Lu 6e33951edc Properly merge hidden versioned symbol
The hidden versioned symbol can only be merged with the versioned
symbol with the same symbol version.  _bfd_elf_merge_symbol should
check the symbol version before merging the new hidden versioned
symbol with the existing symbol.  _bfd_elf_link_hash_copy_indirect can't
copy any references to the hidden versioned symbol.   We need to
bind a symbol locally when linking executable if it is locally defined,
hidden versioned, not referenced by shared library and not exported.

bfd/

	PR ld/18720
	* elflink.c (_bfd_elf_merge_symbol): Add a parameter to indicate
	if the new symbol matches the existing one.  The new hidden
	versioned symbol matches the existing symbol if they have the
	same symbol version. Update the existing symbol only if they
	match.
	(_bfd_elf_add_default_symbol): Update call to
	_bfd_elf_merge_symbol.
	(_bfd_elf_link_assign_sym_version): Don't set the hidden field
	here.
	(elf_link_add_object_symbols): Override a definition only if the
	new symbol matches the existing one.
	(_bfd_elf_link_hash_copy_indirect): Don't copy any references to
	the hidden versioned symbol.
	(elf_link_output_extsym): Bind a symbol locally when linking
	executable if it is locally defined, hidden versioned, not
	referenced by shared library and not exported.  Turn on
	VERSYM_HIDDEN only if the hidden vesioned symbol is defined
	locally.

ld/testsuite/

	PR ld/18720
	* ld-elf/indirect.exp: Run tests for PR ld/18720.
	* ld-elf/pr18720.out: New file.
	* ld-elf/pr18720a.c: Likewise.
	* ld-elf/pr18720b.c: Likewise.
	* ld-elf/pr18720c.c: Likewise.
2015-08-07 05:04:35 -07:00
..
config Set NOPIE_CFLAGS and NOPIE_LDFLAGS 2015-07-27 16:20:49 -07:00
ld-aarch64 [AArch64] Fix extern protected data handling 2015-07-27 11:48:48 +01:00
ld-alpha
ld-arm [ARM] Fix extern protected data handling 2015-07-27 11:45:27 +01:00
ld-auto-import
ld-avr Define DIFF_EXPR_OK for avr target to allow PC relative difference relocation. 2015-07-08 21:41:52 +03:00
ld-bootstrap
ld-cdtest
ld-checks
ld-cris
ld-crx
ld-cygwin
ld-d10v
ld-discard
ld-elf Properly merge hidden versioned symbol 2015-08-07 05:04:35 -07:00
ld-elfcomm
ld-elfvers Pass $PLT_CFLAGS to build_binary 2015-07-27 05:13:55 -07:00
ld-elfvsb Pass $PLT_CFLAGS to ld_compile 2015-07-27 05:15:01 -07:00
ld-elfweak
ld-fastcall
ld-frv
ld-gc
ld-h8300
ld-i386 Add $PLT_CFLAGS to -fPIC for run_cc_link_tests 2015-07-27 05:15:48 -07:00
ld-ia64
ld-ifunc
ld-libs
ld-linkonce
ld-m68hc11
ld-m68k
ld-mep
ld-metag
ld-mips-elf 2015-07-09 Catherine Moore <clm@codesourcery.com> 2015-07-09 08:26:10 -07:00
ld-misc
ld-mmix Update .strtab section sizes in mmix tests 2015-06-25 10:07:53 -07:00
ld-mn10300
ld-nds32
ld-nios2 Add Nios II arch flags and compatibility tests 2015-07-01 15:55:28 -07:00
ld-pe Fix building PE test executables in environments where $CFLAGS is needed. 2015-05-29 11:51:41 +01:00
ld-pie
ld-plugin
ld-powerpc Fallout from "Reorder more powerpc64 sections for -z relro" 2015-07-28 18:42:43 +09:30
ld-s390
ld-scripts Append $PLT_CFLAGS to CC for NOCROSSREFS tests 2015-07-27 05:16:38 -07:00
ld-selective
ld-sh
ld-shared Pass $PLT_CFLAGS to ld_compile 2015-07-27 05:17:26 -07:00
ld-size Move run-time support check for size relocation 2015-07-29 10:52:38 -07:00
ld-sparc
ld-spu
ld-srec Append $PLT_CFLAGS to CC/CXX for S-records tests 2015-07-27 05:18:20 -07:00
ld-tic6x
ld-tilegx
ld-tilepro
ld-undefined ld: Add '--require-defined' command line option. 2015-08-04 10:00:05 +01:00
ld-unique
ld-v850
ld-vax-elf
ld-versados
ld-visium
ld-vxworks
ld-x86-64 Add $PLT_CFLAGS to -fPIC for run_cc_link_tests 2015-07-27 05:15:48 -07:00
ld-xc16x
ld-xstormy16
ld-xtensa Update xtensa linker tests 2015-06-27 16:25:34 -07:00
lib ld: map option for run_dump_test requires no program. 2015-08-04 11:25:37 +01:00
ChangeLog Properly merge hidden versioned symbol 2015-08-07 05:04:35 -07:00
ChangeLog-2004
ChangeLog-2005
ChangeLog-2006
ChangeLog-2007
ChangeLog-2008
ChangeLog-2009
ChangeLog-2010
ChangeLog-2011
ChangeLog-2012
ChangeLog-2013
ChangeLog-2014
ChangeLog-9303