2001-03-11 Philip Blundell <philb@gnu.org>
authorPhil Blundell <philb@gnu.org>
Sun, 11 Mar 2001 13:10:51 +0000 (13:10 +0000)
committerPhil Blundell <philb@gnu.org>
Sun, 11 Mar 2001 13:10:51 +0000 (13:10 +0000)
* elf32-arm.h (elf32_arm_finish_dynamic_symbol): Don't make PLT
entries that could serve as a definition for a weak symbol.

bfd/ChangeLog
bfd/elf32-arm.h

index 21932c54e0b63d68292ea3e0fd31d00be8d49032..136fdab968aef3deae1670a88ed12eb54a53bfe3 100644 (file)
@@ -1,3 +1,8 @@
+2001-03-11  Philip Blundell  <philb@gnu.org>
+
+       * elf32-arm.h (elf32_arm_finish_dynamic_symbol): Don't make PLT
+       entries that could serve as a definition for a weak symbol.
+
 2001-03-08  Nick Clifton  <nickc@redhat.com>
 
        * Most files: Update copyright notices using Perl script created
index 9129b8e44463b36c1f6c7abc2d31c12199cb49fd..58edefea212b32a3695ecd6cba2268dd3e806c3e 100644 (file)
@@ -3197,6 +3197,13 @@ elf32_arm_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;
        }
     }