From 1009ef284f3932c41cff1158818c87821fe511fa Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 18 Aug 2014 18:14:56 +0930 Subject: PowerPC fix for ifunc broken by d1eca1e4 This probably could be fixed by making changes in relocate_section for ifunc, but it's simpler to disable the optimisation for ifunc. * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Don't attempt to use dynrelocs for ifunc. * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Similarly. --- bfd/elf32-ppc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'bfd/elf32-ppc.c') diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index e20e804..97f4724 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -5512,9 +5512,12 @@ ppc_elf_adjust_dynamic_symbol (struct bfd_link_info *info, { /* Taking a function's address in a read/write section doesn't require us to define the function symbol in the - executable on a global entry stub. A dynamic reloc can + executable on a plt call stub. A dynamic reloc can be used instead. */ if (h->pointer_equality_needed + && h->type != STT_GNU_IFUNC + && !htab->is_vxworks + && !ppc_elf_hash_entry (h)->has_sda_refs && !readonly_dynrelocs (h)) { h->pointer_equality_needed = 0; -- cgit v1.1