* elf32-mips.c (_bfd_mips_elf_copy_indirect_symbol): Bail out after
authorAlan Modra <amodra@gmail.com>
Thu, 4 Oct 2001 16:09:03 +0000 (16:09 +0000)
committerAlan Modra <amodra@gmail.com>
Thu, 4 Oct 2001 16:09:03 +0000 (16:09 +0000)
copying flags if this is a weakdef.

bfd/ChangeLog
bfd/elf32-mips.c

index 1f058878cec785cad99cc97361528885a8f103af..e97b1b85742615253013dbb222874901cf7494f6 100644 (file)
@@ -1,3 +1,8 @@
+2001-10-04  Alan Modra  <amodra@bigpond.net.au>
+
+       * elf32-mips.c (_bfd_mips_elf_copy_indirect_symbol): Bail out after
+       copying flags if this is a weakdef.
+
 2001-10-04  Alan Modra  <amodra@bigpond.net.au>
 
        * elf-bfd.h (struct elf_link_hash_entry): Reorganise for better
index fd79bbaec62c8aac23e304aca0de7c81e510da88..6f39d9f2b7563f1d2aac1084b83dbd303cf74141 100644 (file)
@@ -8074,7 +8074,8 @@ _bfd_mips_elf_gc_sweep_hook (abfd, info, sec, relocs)
 
 /* Copy data from a MIPS ELF indirect symbol to its direct symbol,
    hiding the old indirect symbol.  Process additional relocation
-   information.  */
+   information.  Also called for weakdefs, in which case we just let
+   _bfd_elf_link_hach_copy_indirect copy the flags for us.  */
 
 static void
 _bfd_mips_elf_copy_indirect_symbol (dir, ind)
@@ -8084,6 +8085,9 @@ _bfd_mips_elf_copy_indirect_symbol (dir, ind)
 
   _bfd_elf_link_hash_copy_indirect (dir, ind);
 
+  if (dir == ind->weakdef)
+    return;
+
   dirmips = (struct mips_elf_link_hash_entry *) dir;
   indmips = (struct mips_elf_link_hash_entry *) ind;
   dirmips->possibly_dynamic_relocs += indmips->possibly_dynamic_relocs;