(elf32_arm_adjust_dynamic_symbol): Update ELF_LINK_HASH_NEEDS_PLT logic.
This commit is contained in:
parent
4f2a7c9e31
commit
9d7404b762
|
@ -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>
|
2002-09-18 Daniel Jacobowitz <drow@mvista.com>
|
||||||
|
|
||||||
* elfcode.h (elf_slurp_reloc_table_from_section): Check
|
* elfcode.h (elf_slurp_reloc_table_from_section): Check
|
||||||
|
|
|
@ -2966,16 +2966,22 @@ elf32_arm_adjust_dynamic_symbol (info, h)
|
||||||
if (h->type == STT_FUNC
|
if (h->type == STT_FUNC
|
||||||
|| (h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0)
|
|| (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
|
if (! info->shared
|
||||||
&& (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0
|
&& (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 PLT32 reloc in an input
|
/* This case can occur if we saw a PLT32 reloc in an input
|
||||||
file, but the symbol was never referred to by a dynamic
|
file, but the symbol was not defined by a dynamic object.
|
||||||
object. In such a case, we don't actually need to build
|
In such a case, we don't actually need to build a
|
||||||
a procedure linkage table, and we can just do a PC32
|
procedure linkage table, and we can just do a PC32 reloc
|
||||||
reloc instead. */
|
instead. */
|
||||||
BFD_ASSERT ((h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue