From bddc25c9ca7f587e969e765cb73d904348ce9e00 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 1 Jul 2010 04:12:29 +0000 Subject: [PATCH] * 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 6d8f791fcbf..bf26c58ae69 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 97d607b22c2..482be3e754e 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; -- 2.30.2