(elf32_arm_adjust_dynamic_symbol): Update ELF_LINK_HASH_NEEDS_PLT logic.

This commit is contained in:
Nick Clifton 2002-09-19 14:59:51 +00:00
parent 4f2a7c9e31
commit 9d7404b762
2 changed files with 17 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2002-09-19 Daniel Jacobowitz <drow@mvista.com>
* elf32-arm.h (elf32_arm_adjust_dynamic_symbol): Update
ELF_LINK_HASH_NEEDS_PLT logic.
2002-09-18 Daniel Jacobowitz <drow@mvista.com>
* elfcode.h (elf_slurp_reloc_table_from_section): Check

View File

@ -2966,16 +2966,22 @@ elf32_arm_adjust_dynamic_symbol (info, h)
if (h->type == STT_FUNC
|| (h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0)
{
/* If we link a program (not a DSO), we'll get rid of unnecessary
PLT entries; we point to the actual symbols -- even for pic
relocs, because a program built with -fpic should have the same
result as one built without -fpic, specifically considering weak
symbols.
FIXME: m68k and i386 differ here, for unclear reasons. */
if (! 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->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0)
{
/* This case can occur if we saw a PLT32 reloc in an input
file, but the symbol was never referred to by a dynamic
object. In such a case, we don't actually need to build
a procedure linkage table, and we can just do a PC32
reloc instead. */
file, but the symbol was not defined by a dynamic object.
In such a case, we don't actually need to build a
procedure linkage table, and we can just do a PC32 reloc
instead. */
BFD_ASSERT ((h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0);
h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
return true;
}