* elflink.c (elf_link_add_object_symbols): Don't omit reading
authorAlan Modra <amodra@gmail.com>
Wed, 8 May 2013 23:31:38 +0000 (23:31 +0000)
committerAlan Modra <amodra@gmail.com>
Wed, 8 May 2013 23:31:38 +0000 (23:31 +0000)
of symbols when hashes already exist.

bfd/ChangeLog
bfd/elflink.c

index a670a24d345a9b2a24369ea40c9d945ec48015cc..da19766a4307a00c058f3202f08c6f3a36426ed6 100644 (file)
@@ -1,3 +1,8 @@
+2013-05-09  Alan Modra  <amodra@gmail.com>
+
+       * elflink.c (elf_link_add_object_symbols): Don't omit reading
+       of symbols when hashes already exist.
+
 2013-05-07  Will Newton  <will.newton@linaro.org>
 
        * elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Add a
 
 2013-05-07  Will Newton  <will.newton@linaro.org>
 
-        * elf-ifunc.c (_bfd_elf_create_ifunc_dyn_reloc): Remove unused
+       * elf-ifunc.c (_bfd_elf_create_ifunc_dyn_reloc): Remove unused
        function.
        * elf-bfd.h: Likewise.
 
 2013-05-06  Paul Brook  <paul@codesourcery.com>
 
-        * elf64-mips.c (elf_mips_gnu_pcrel32): New.
-        (bfd_elf64_bfd_reloc_type_lookup, bfd_elf64_bfd_reloc_name_lookup,
-        mips_elf64_rtype_to_howto): Handle R_MIPS_PC32.
-        * elfn32-mips.c (elf_mips_gnu_pcrel32): New.
-        (bfd_elfn32_bfd_reloc_type_lookup, bfd_elfn32_bfd_reloc_name_lookup,
-        mips_elfn32_rtype_to_howto): Handle R_MIPS_PC32.
+       * elf64-mips.c (elf_mips_gnu_pcrel32): New.
+       (bfd_elf64_bfd_reloc_type_lookup, bfd_elf64_bfd_reloc_name_lookup,
+       mips_elf64_rtype_to_howto): Handle R_MIPS_PC32.
+       * elfn32-mips.c (elf_mips_gnu_pcrel32): New.
+       (bfd_elfn32_bfd_reloc_type_lookup, bfd_elfn32_bfd_reloc_name_lookup,
+       mips_elfn32_rtype_to_howto): Handle R_MIPS_PC32.
 
 2013-05-06  Alan Modra  <amodra@gmail.com>
 
index 43c54fc3c105c16af527a8593043c720ccf7b475..34bbcd51dfc051717610b369b1185c052ef930d1 100644 (file)
@@ -3699,20 +3699,23 @@ error_free_dyn:
     }
 
   sym_hash = elf_sym_hashes (abfd);
-  if (sym_hash == NULL && extsymcount != 0)
+  if (extsymcount != 0)
     {
       isymbuf = bfd_elf_get_elf_syms (abfd, hdr, extsymcount, extsymoff,
                                      NULL, NULL, NULL);
       if (isymbuf == NULL)
        goto error_return;
 
-      /* We store a pointer to the hash table entry for each external
-        symbol.  */
-      amt = extsymcount * sizeof (struct elf_link_hash_entry *);
-      sym_hash = (struct elf_link_hash_entry **) bfd_zalloc (abfd, amt);
       if (sym_hash == NULL)
-       goto error_free_sym;
-      elf_sym_hashes (abfd) = sym_hash;
+       {
+         /* We store a pointer to the hash table entry for each
+            external symbol.  */
+         amt = extsymcount * sizeof (struct elf_link_hash_entry *);
+         sym_hash = (struct elf_link_hash_entry **) bfd_zalloc (abfd, amt);
+         if (sym_hash == NULL)
+           goto error_free_sym;
+         elf_sym_hashes (abfd) = sym_hash;
+       }
     }
 
   if (dynamic)