* elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Test for a
dynamic function descriptor symbol, not the associated function symbol.
This commit is contained in:
parent
ecace851a6
commit
40b8271bdd
|
@ -1,3 +1,9 @@
|
|||
2002-01-18 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Test for a
|
||||
dynamic function descriptor symbol, not the associated function
|
||||
symbol.
|
||||
|
||||
2002-01-17 Eric Christopher <echristo@redhat.com>
|
||||
|
||||
* elf32-mips.c (mips_elf_calculate_relocation): Fix typo.
|
||||
|
|
|
@ -2384,16 +2384,8 @@ ppc64_elf_adjust_dynamic_symbol (info, h)
|
|||
|
||||
if (h->plt.refcount <= 0
|
||||
|| h->root.root.string[0] != '.'
|
||||
|| h->root.root.string[1] == '\0'
|
||||
|| (! info->shared
|
||||
&& (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0
|
||||
&& (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0))
|
||||
|| h->root.root.string[1] == '\0')
|
||||
{
|
||||
/* This case can occur if we saw a PLT reloc in an input
|
||||
file, but the symbol was never referred to by a dynamic
|
||||
object, or if all references were garbage collected. In
|
||||
such a case, we don't actually need to build a procedure
|
||||
linkage table entry. */
|
||||
h->plt.offset = (bfd_vma) -1;
|
||||
h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
|
||||
return true;
|
||||
|
@ -2426,6 +2418,25 @@ ppc64_elf_adjust_dynamic_symbol (info, h)
|
|||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
while (fdh->root.type == bfd_link_hash_indirect
|
||||
|| fdh->root.type == bfd_link_hash_warning)
|
||||
fdh = (struct elf_link_hash_entry *) fdh->root.u.i.link;
|
||||
|
||||
if (! info->shared
|
||||
&& (fdh->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0
|
||||
&& (fdh->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0)
|
||||
{
|
||||
/* This case can occur if we saw a PLT reloc in an input
|
||||
file, but the symbol was never referred to by a dynamic
|
||||
object, or if all references were garbage collected. In
|
||||
such a case, we don't actually need to build a procedure
|
||||
linkage table entry. */
|
||||
h->plt.offset = (bfd_vma) -1;
|
||||
h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue