diff options
author | Alan Modra <amodra@gmail.com> | 2016-05-30 09:43:44 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2016-06-02 12:28:39 +0930 |
commit | 5b677558bc6c7b2477bb33c709e6017e68e7ae8c (patch) | |
tree | a2de1189d6388b1a57720e0efee53831055dba30 /bfd/elf-bfd.h | |
parent | c273521c9aad56a596202dfaedc54182cf5543eb (diff) | |
download | gdb-5b677558bc6c7b2477bb33c709e6017e68e7ae8c.zip gdb-5b677558bc6c7b2477bb33c709e6017e68e7ae8c.tar.gz gdb-5b677558bc6c7b2477bb33c709e6017e68e7ae8c.tar.bz2 |
Revert PR16467 change
This reverts the pr16467 change, which was incorrect due to faulty
analysis of the pr16467 testcase. The failure was not due to a
mismatch in symbol type (ifunc/non-ifunc) but due to a symbol loop
being set up.
See https://sourceware.org/ml/binutils/2016-06/msg00013.html for some
rambling on versioned symbols and ELF shared library symbol overriding
that explain this patch.
bfd/
PR ld/20159
PR ld/16467
* elflink.c (_bfd_elf_merge_symbol): Revert PR16467 change.
(_bfd_elf_add_default_symbol): Don't indirect to/from defined
symbol given a version by a script different to the version
of the symbol being added.
(elf_link_add_object_symbols): Use _bfd_elf_strtab_save and
_bfd_elf_strtab_restore. Don't fudge dynstr references.
* elf-strtab.c (_bfd_elf_strtab_restore_size): Delete.
(struct strtab_save): New.
(_bfd_elf_strtab_save, _bfd_elf_strtab_restore): New functions.
* elf-bfd.h (_bfd_elf_strtab_restore_size): Delete.
(_bfd_elf_strtab_save, _bfd_elf_strtab_restore): Declare.
Diffstat (limited to 'bfd/elf-bfd.h')
-rw-r--r-- | bfd/elf-bfd.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index 3184e57..99dbbce 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -2058,9 +2058,11 @@ extern void _bfd_elf_strtab_delref extern unsigned int _bfd_elf_strtab_refcount (struct elf_strtab_hash *, bfd_size_type); extern void _bfd_elf_strtab_clear_all_refs - (struct elf_strtab_hash *tab); -extern void _bfd_elf_strtab_restore_size - (struct elf_strtab_hash *, bfd_size_type); + (struct elf_strtab_hash *); +extern void *_bfd_elf_strtab_save + (struct elf_strtab_hash *); +extern void _bfd_elf_strtab_restore + (struct elf_strtab_hash *, void *); extern bfd_size_type _bfd_elf_strtab_size (struct elf_strtab_hash *); extern bfd_size_type _bfd_elf_strtab_offset |