[ARC] Make sure global symbol is not an indirect or warning.
[binutils-gdb.git] / bfd / elf32-arc.c
index 3f60d097e62bab5781766fa2adc4f79dd4d0b830..4d36a4175610d887f85bd401e4bfd1fc1ce0c924 100644 (file)
@@ -1976,7 +1976,12 @@ elf_arc_check_relocs (bfd *                       abfd,
       if (r_symndx < symtab_hdr->sh_info) /* Is a local symbol.  */
        h = NULL;
       else /* Global one.  */
-       h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+       {
+         h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+         while (h->root.type == bfd_link_hash_indirect
+                || h->root.type == bfd_link_hash_warning)
+           h = (struct elf_link_hash_entry *) h->root.u.i.link;
+       }
 
 
       switch (r_type)