mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-22 19:09:31 +08:00
* 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:
@ -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>
|
2002-01-17 Eric Christopher <echristo@redhat.com>
|
||||||
|
|
||||||
* elf32-mips.c (mips_elf_calculate_relocation): Fix typo.
|
* 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
|
if (h->plt.refcount <= 0
|
||||||
|| h->root.root.string[0] != '.'
|
|| h->root.root.string[0] != '.'
|
||||||
|| h->root.root.string[1] == '\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))
|
|
||||||
{
|
{
|
||||||
/* 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->plt.offset = (bfd_vma) -1;
|
||||||
h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
|
h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
|
||||||
return true;
|
return true;
|
||||||
@ -2426,6 +2418,25 @@ ppc64_elf_adjust_dynamic_symbol (info, h)
|
|||||||
return false;
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user