* elflink.h (elf_link_add_object_symbols): When a versioned symbol
authorIan Lance Taylor <ian@airs.com>
Mon, 5 Oct 1998 03:11:55 +0000 (03:11 +0000)
committerIan Lance Taylor <ian@airs.com>
Mon, 5 Oct 1998 03:11:55 +0000 (03:11 +0000)
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.

bfd/ChangeLog
bfd/elflink.h

index 0001aac760b85ac16b5de731135edf6319f0488d..8e6777f7f535ab628eab1cdc320eaad18371e015 100644 (file)
@@ -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.
 
index 64f8de80f9870b82894105f4b0218832011318bd..2c38793b2d3c24ac6886db713359cfe9d6af13ed 100644 (file)
@@ -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