aboutsummaryrefslogtreecommitdiff
path: root/bfd/ChangeLog
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2015-08-07 05:04:21 -0700
committerH.J. Lu <hjl.tools@gmail.com>2015-08-07 05:04:35 -0700
commit6e33951edcbed1fd803beabcde2af3b252b92164 (patch)
treec7a0d6fc3c3d61e67ddbfa8a7afd8b76c619b735 /bfd/ChangeLog
parent060967202b8def804d9afccad343d2eaef8a81cf (diff)
downloadgdb-6e33951edcbed1fd803beabcde2af3b252b92164.zip
gdb-6e33951edcbed1fd803beabcde2af3b252b92164.tar.gz
gdb-6e33951edcbed1fd803beabcde2af3b252b92164.tar.bz2
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.
Diffstat (limited to 'bfd/ChangeLog')
-rw-r--r--bfd/ChangeLog22
1 files changed, 22 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 601ce3b..36fae0e 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,25 @@
+2015-08-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ 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.
+
2015-08-05 Nick Clifton <nickc@redhat.com>
* elf.c (_bfd_elf_copy_private_bfd_data): Copy the sh_link and