]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
From 2000-10-14 Geoffrey Keating <geoffk@cygnus.com>
authorGeoffrey Keating <geoffk@geoffk.org>
Mon, 16 Oct 2000 18:08:29 +0000 (18:08 +0000)
committerGeoffrey Keating <geoffk@geoffk.org>
Mon, 16 Oct 2000 18:08:29 +0000 (18:08 +0000)
* elf32-ppc.c (ppc_elf_finish_dynamic_symbol): Don't make PLT
entries that could serve as a definition for a weak symbol.

bfd/ChangeLog
bfd/elf32-ppc.c

index 7659ec68400efe3c4749fabc47e3aebca8983d94..e510060f991f3162e515bb94b1a7fb6869dc683d 100644 (file)
@@ -1,3 +1,9 @@
+2000-10-16  Geoffrey Keating  <geoffk@cygnus.com>
+
+       From 2000-10-14  Geoffrey Keating  <geoffk@cygnus.com>
+       * elf32-ppc.c (ppc_elf_finish_dynamic_symbol): Don't make PLT
+       entries that could serve as a definition for a weak symbol.
+
 2000-10-15  Philip Blundell  <philb@gnu.org>
 
        From 2000-09-08  Nick Clifton  <nickc@redhat.com>
index 242cfb730ab5f12fe792969c1f49ff10b5bf7958..e648f0256c28b0ad7d837018c9b71f1bd98f1f06 100644 (file)
@@ -2687,6 +2687,13 @@ ppc_elf_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;
        }
     }