aboutsummaryrefslogtreecommitdiff
path: root/bfd/elflink.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2009-08-10 06:14:04 +0000
committerAlan Modra <amodra@gmail.com>2009-08-10 06:14:04 +0000
commit91e21fb75f551371192d1138db38b0ee73d59b71 (patch)
treea3ed837bc51a279b5a7e424c2f70cfee9e29c675 /bfd/elflink.c
parent952b2d6368151e609e6312e2e83f3ac40433ba41 (diff)
downloadgdb-91e21fb75f551371192d1138db38b0ee73d59b71.zip
gdb-91e21fb75f551371192d1138db38b0ee73d59b71.tar.gz
gdb-91e21fb75f551371192d1138db38b0ee73d59b71.tar.bz2
* elflink.c (_bfd_elf_adjust_dynamic_symbol): Don't clear plt
info for STT_GNU_IFUNC. * elf32-ppc.c (ppc_elf_check_relocs): Count a needed plt entry on got refs in case the symbol turns out to be ifunc. (ppc_elf_gc_sweep_hook): Similarly. (ppc_elf_adjust_dynamic_symbol): Adjust assertion. (allocate_dynrelocs): Don't specially allocate got relocs for ifunc. (ppc_elf_size_dynamic_sections): Likewise. (ppc_elf_relocate_section): Likewise.
Diffstat (limited to 'bfd/elflink.c')
-rw-r--r--bfd/elflink.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/bfd/elflink.c b/bfd/elflink.c
index a117063..5818912 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -2605,6 +2605,7 @@ _bfd_elf_adjust_dynamic_symbol (struct elf_link_hash_entry *h, void *data)
about symbols which are defined by one dynamic object and
referenced by another one? */
if (!h->needs_plt
+ && h->type != STT_GNU_IFUNC
&& (h->def_regular
|| !h->def_dynamic
|| (!h->ref_regular