From bddc25c9ca7f587e969e765cb73d904348ce9e00 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 1 Jul 2010 04:12:29 +0000 Subject: * elf64-ppc.c (ppc64_elf_edit_toc): Keep toc entries for ifuncs. --- bfd/ChangeLog | 4 ++++ bfd/elf64-ppc.c | 12 ++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 6d8f791..bf26c58 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,7 @@ +2010-07-01 Alan Modra + + * elf64-ppc.c (ppc64_elf_edit_toc): Keep toc entries for ifuncs. + 2010-06-29 Alan Modra * cpu-maxq.c: Delete file. diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index 97d607b..482be3e 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -8043,9 +8043,17 @@ ppc64_elf_edit_toc (struct bfd_link_info *info) continue; if (h != NULL) - val = h->root.u.def.value; + { + if (h->type == STT_GNU_IFUNC) + continue; + val = h->root.u.def.value; + } else - val = sym->st_value; + { + if (ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) + continue; + val = sym->st_value; + } val += rel->r_addend; val += sym_sec->output_section->vma + sym_sec->output_offset; -- cgit v1.1