Don't bind unique symbol locally.

bfd/

2010-04-06  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/11434
	* elf-bfd.h (SYMBOLIC_BIND): Don't bind unique symbol locally.

ld/testsuite/

2010-04-06  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/11434
	* ld/testsuite/ld-x86-64/unique1.d: New.
	* ld/testsuite/ld-x86-64/unique1.s: Likewise.

	* ld-x86-64/x86-64.exp: Run unique1.
This commit is contained in:
H.J. Lu
2010-04-07 02:41:35 +00:00
parent db564246a8
commit 6f8bcf84a1
6 changed files with 36 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2010-04-06 H.J. Lu <hongjiu.lu@intel.com>
PR ld/11434
* elf-bfd.h (SYMBOLIC_BIND): Don't bind unique symbol locally.
2010-04-06 Tristan Gingold <gingold@adacore.com>
* vms-lib.c (_bfd_vms_lib_write_archive_contents): Fix idd flags.

View File

@ -2328,8 +2328,9 @@ extern asection _bfd_elf_large_com_section;
while (0)
/* Will a symbol be bound to the the definition within the shared
library, if any. */
library, if any. A unique symbol can never be bound locally. */
#define SYMBOLIC_BIND(INFO, H) \
((INFO)->symbolic || ((INFO)->dynamic && !(H)->dynamic))
(!(H)->unique_global \
&& ((INFO)->symbolic || ((INFO)->dynamic && !(H)->dynamic)))
#endif /* _LIBELF_H_ */

View File

@ -1,3 +1,11 @@
2010-04-06 H.J. Lu <hongjiu.lu@intel.com>
PR ld/11434
* ld/testsuite/ld-x86-64/unique1.d: New.
* ld/testsuite/ld-x86-64/unique1.s: Likewise.
* ld-x86-64/x86-64.exp: Run unique1.
2010-04-05 Kai Tietz <kai.tietz@onevision.com>
* emultempl/pep.em (U): Macro modified.

View File

@ -0,0 +1,10 @@
#name: STB_GNU_UNIQUE with -Bsymbolic
#as: --64
#ld: -melf_x86_64 -shared -Bsymbolic
#readelf: -rs --wide
#...
[0-9a-f]+ +[0-9a-f]+ +R_X86_64_GLOB_DAT +[0-9a-f]+ bar \+ 0
#...
+[0-9]+: +[0-9a-f]+ +8 +OBJECT +UNIQUE +DEFAULT +[0-9]+ bar
#pass

View File

@ -0,0 +1,9 @@
.text
foo:
movq bar@GOTPCREL(%rip), %rbp
.weak bar
.data
.type bar, @gnu_unique_object
.size bar, 8
bar:
.quad 8

View File

@ -97,3 +97,4 @@ run_dump_test "protected3"
run_dump_test "protected3-l1om"
run_dump_test "tlsle1"
run_dump_test "tlspie1"
run_dump_test "unique1"