2001-02-20 Andreas Jaeger <aj@suse.de>
authorAndreas Jaeger <aj@suse.de>
Tue, 20 Feb 2001 08:01:32 +0000 (08:01 +0000)
committerAndreas Jaeger <aj@suse.de>
Tue, 20 Feb 2001 08:01:32 +0000 (08:01 +0000)
* elf64-x86-64.c (elf64_x86_64_finish_dynamic_symbol): Don't make
PLT entries that could serve as a definition for a weak symbol.

bfd/ChangeLog
bfd/elf64-x86-64.c

index 1b74b5cb0f979b960f4ef008dfff18ad7378b879..9740fd0aac6b1c00500d0bbd2be47743d865a890 100644 (file)
@@ -1,3 +1,8 @@
+2001-02-20  Andreas Jaeger  <aj@suse.de>
+
+       * elf64-x86-64.c (elf64_x86_64_finish_dynamic_symbol): Don't make
+       PLT entries that could serve as a definition for a weak symbol.
+
 2001-02-19  Jakub Jelinek  <jakub@redhat.com>
 
        * elf32-sparc.c (elf32_sparc_finish_dynamic_symbol): Don't make PLT
index 9e10c917f0d50542046371d7463685d4053003f7..3845cc183ab1b5476749759b4eb7ddd510d501af 100644 (file)
@@ -1656,6 +1656,13 @@ elf64_x86_64_finish_dynamic_symbol (output_bfd, info, h, sym)
          /* Mark the symbol as undefined, rather than as defined in
             the .plt section.  Leave the value alone.  */
          sym->st_shndx = SHN_UNDEF;
+         /* If the symbol is weak, we do need to clear the value.
+            Otherwise, the PLT entry would provide a definition for
+            the symbol even if the symbol wasn't defined anywhere,
+            and so the symbol would never be NULL.  */
+         if ((h->elf_link_hash_flags & ELF_LINK_HASH_REF_REGULAR_NONWEAK)
+             == 0)
+           sym->st_value = 0;
        }
     }