* elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Don't copy got and

plt info when called to transfer weak sym info.
This commit is contained in:
Alan Modra 2003-02-05 15:49:04 +00:00
parent 5aa5d4b987
commit 6349e62823
2 changed files with 23 additions and 17 deletions

View File

@ -1,3 +1,8 @@
2003-02-06 Alan Modra <amodra@bigpond.net.au>
* elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Don't copy got and
plt info when called to transfer weak sym info.
2003-02-05 Alan Modra <amodra@bigpond.net.au>
* reloc.c: Add PPC and PPC64 TLS relocs.

View File

@ -3286,7 +3286,24 @@ ppc64_elf_copy_indirect_symbol (bed, dir, ind)
eind->dyn_relocs = NULL;
}
/* Do the same for got entries. */
edir->is_func |= eind->is_func;
edir->is_func_descriptor |= eind->is_func_descriptor;
edir->is_entry |= eind->is_entry;
/* Copy down any references that we may have already seen to the
symbol which just became indirect. */
edir->elf.elf_link_hash_flags |=
(eind->elf.elf_link_hash_flags
& (ELF_LINK_HASH_REF_DYNAMIC
| ELF_LINK_HASH_REF_REGULAR
| ELF_LINK_HASH_REF_REGULAR_NONWEAK
| ELF_LINK_NON_GOT_REF));
/* If we were called to copy over info for a weak sym, that's all. */
if (eind->elf.root.type != bfd_link_hash_indirect)
return;
/* Copy over got entries. */
if (eind->elf.got.glist != NULL)
{
if (edir->elf.got.glist != NULL)
@ -3345,22 +3362,6 @@ ppc64_elf_copy_indirect_symbol (bed, dir, ind)
eind->elf.plt.plist = NULL;
}
edir->is_func |= eind->is_func;
edir->is_func_descriptor |= eind->is_func_descriptor;
edir->is_entry |= eind->is_entry;
/* Copy down any references that we may have already seen to the
symbol which just became indirect. */
edir->elf.elf_link_hash_flags |=
(eind->elf.elf_link_hash_flags
& (ELF_LINK_HASH_REF_DYNAMIC
| ELF_LINK_HASH_REF_REGULAR
| ELF_LINK_HASH_REF_REGULAR_NONWEAK
| ELF_LINK_NON_GOT_REF));
if (eind->elf.root.type != bfd_link_hash_indirect)
return;
if (edir->elf.dynindx == -1)
{
edir->elf.dynindx = eind->elf.dynindx;