summaryrefslogtreecommitdiff
path: root/bfd/elfxx-ia64.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2001-10-03 08:33:18 +0000
committerAlan Modra <amodra@bigpond.net.au>2001-10-03 08:33:18 +0000
commitd99864dbe5f27e3235b6a33c92020dfaedc2d7a5 (patch)
tree77ea180bee623edb55035704d84b3ba14f780cce /bfd/elfxx-ia64.c
parent2c311d5c10f2c656382abc4eae7cdf5e50d00c4d (diff)
downloadgdb-d99864dbe5f27e3235b6a33c92020dfaedc2d7a5.tar.gz
* elflink.h (elf_fix_symbol_flags): Copy flags to weakdef using
elf_backend_copy_indirect_symbol so that backend has a chance to copy other necessary fields. * elf-bfd.h (struct elf_backend_data): Update description of elf_backend_copy_indirect_symbol. * elf.c (_bfd_elf_link_hash_copy_indirect): Bail out after copying flags if this is a weakdef. * elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Likewise. (elfNN_ia64_aix_add_symbol_hook): Use elf_link_hash_lookup rather than bfd_link_hash_lookup. * elf32-i386 (elf_i386_adjust_dynamic_symbol): Don't do copy reloc processing for weakdefs. * elf32-hppa.c (elf32_hppa_adjust_dynamic_symbol): Likewise. * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Likewise.
Diffstat (limited to 'bfd/elfxx-ia64.c')
-rw-r--r--bfd/elfxx-ia64.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/bfd/elfxx-ia64.c b/bfd/elfxx-ia64.c
index 739fe7a5aa6..d467a980952 100644
--- a/bfd/elfxx-ia64.c
+++ b/bfd/elfxx-ia64.c
@@ -1190,7 +1190,8 @@ elfNN_ia64_aix_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
no one else should use it b/c it is undocumented. */
struct elf_link_hash_entry *h;
- h = (struct elf_link_hash_entry *) bfd_link_hash_lookup (info->hash, *namep, false, false, false);
+ h = elf_link_hash_lookup (elf_hash_table (info), *namep,
+ false, false, false);
if (h == NULL)
{
struct elf_backend_data *bed;
@@ -1523,6 +1524,9 @@ elfNN_ia64_hash_copy_indirect (xdir, xind)
| ELF_LINK_HASH_REF_REGULAR
| ELF_LINK_HASH_REF_REGULAR_NONWEAK));
+ if (dir == ind->weakdef)
+ return;
+
/* Copy over the got and plt data. This would have been done
by check_relocs. */