aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elflink.h10
2 files changed, 13 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 0001aac..8e6777f 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -8,6 +8,11 @@ Sun Oct 4 20:38:29 1998 Jeffrey A Law (law@cygnus.com)
Sun Oct 4 21:19:09 1998 Ian Lance Taylor <ian@cygnus.com>
+ * elflink.h (elf_link_add_object_symbols): When a versioned symbol
+ has a base which is already defined, only add the referenced
+ symbol to the dynamic symbol table if it is defined or referenced
+ by a regular file.
+
* elf32-i386.c (elf_i386_info_to_howto_rel): Handle vtable relocs
correctly.
diff --git a/bfd/elflink.h b/bfd/elflink.h
index 64f8de80..2c38793 100644
--- a/bfd/elflink.h
+++ b/bfd/elflink.h
@@ -1423,8 +1423,14 @@ elf_link_add_object_symbols (abfd, info)
{
h->elf_link_hash_flags &=~ ELF_LINK_HASH_DEF_DYNAMIC;
hi->elf_link_hash_flags |= ELF_LINK_HASH_REF_DYNAMIC;
- if (! _bfd_elf_link_record_dynamic_symbol (info, hi))
- goto error_return;
+ if (hi->elf_link_hash_flags
+ & (ELF_LINK_HASH_REF_REGULAR
+ | ELF_LINK_HASH_DEF_REGULAR))
+ {
+ if (! _bfd_elf_link_record_dynamic_symbol (info,
+ hi))
+ goto error_return;
+ }
}
/* Now set HI to H, so that the following code