From aa71524235bce7aa6f0b9ae12aa679ed8c3fd96f Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Thu, 21 Apr 2011 22:25:39 +0000 Subject: Skip local IFUNC symbols when checking dynamic relocs in read-only sections. bfd/ 2011-04-21 H.J. Lu PR ld/12694 * elf32-i386.c (elf_i386_readonly_dynrelocs): Skip local IFUNC symbols. * elf64-x86-64.c (elf_x86_64_readonly_dynrelocs): Likewise. ld/testsuite/ 2011-04-21 H.J. Lu PR ld/12694 * ld-ifunc/ifunc-14-i386.d: New. * ld-ifunc/ifunc-14-x86-64.d: Likewise. * ld-ifunc/ifunc-14a.s: Likewise. * ld-ifunc/ifunc-14b.s: Likewise. --- bfd/elf32-i386.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'bfd/elf32-i386.c') diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c index 1bdc05e..bb79f89 100644 --- a/bfd/elf32-i386.c +++ b/bfd/elf32-i386.c @@ -2384,6 +2384,10 @@ elf_i386_readonly_dynrelocs (struct elf_link_hash_entry *h, void *inf) if (h->root.type == bfd_link_hash_warning) h = (struct elf_link_hash_entry *) h->root.u.i.link; + /* Skip local IFUNC symbols. */ + if (h->forced_local && h->type == STT_GNU_IFUNC) + return TRUE; + eh = (struct elf_i386_link_hash_entry *) h; for (p = eh->dyn_relocs; p != NULL; p = p->next) { -- cgit v1.1