PowerPC64 GOT reloc reserving PLT entry for ifunc
authorAlan Modra <amodra@gmail.com>
Thu, 16 Apr 2020 03:15:30 +0000 (12:45 +0930)
committerAlan Modra <amodra@gmail.com>
Thu, 16 Apr 2020 06:13:19 +0000 (15:43 +0930)
I can't see any reason why ELFv2 should create a PLT entry for ifuncs
referenced by GOT relocs as long as the GOT entry remains.  The GOT
entry ought to be resolved by ld.so to the value returned by the ifunc
resolver, or if there is global entry stub created for some other
reason, by the linker to the stub address.

* elf64-ppc.c (ppc64_elf_check_relocs): Don't create plt entries
for GOT relocs against ifuncs.

bfd/elf64-ppc.c

index 25a3e468a733cc12407f2adb29008fed6ab1c569..63de3aba594fa4de8d556342505cb38321e1eaca 100644 (file)
@@ -4774,14 +4774,6 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
            if (!update_local_sym_info (abfd, symtab_hdr, r_symndx,
                                        rel->r_addend, tls_type))
              return FALSE;
-
-         /* We may also need a plt entry if the symbol turns out to be
-            an ifunc.  */
-         if (h != NULL && !bfd_link_pic (info) && abiversion (abfd) != 1)
-           {
-             if (!update_plt_info (abfd, &h->plt.plist, rel->r_addend))
-               return FALSE;
-           }
          break;
 
        case R_PPC64_PLT16_HA: