aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1998-10-05 03:11:55 +0000
committerIan Lance Taylor <ian@airs.com>1998-10-05 03:11:55 +0000
commit1bec01fc8bdbc4870d6f19d735eb99bb3d09cd7c (patch)
treef35b0d920423efd2d6e5f7a6b5f5d3f1ee36c9c9 /bfd
parent6886ab292b8d2f4d666d39366c3da9a0cc8aa79a (diff)
downloadgdb-1bec01fc8bdbc4870d6f19d735eb99bb3d09cd7c.zip
gdb-1bec01fc8bdbc4870d6f19d735eb99bb3d09cd7c.tar.gz
gdb-1bec01fc8bdbc4870d6f19d735eb99bb3d09cd7c.tar.bz2
* 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.
Diffstat (limited to 'bfd')
-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