[ARC] Make sure global symbol is not an indirect or warning.
Problem identified in the context of glibc with latest upstream binutils. Dynamic symbol space was being reserved but, no actual information for the symbol was being set. Data for the symbol was kept initialized with -1. No easy test case was possible to be created. bfd/ 2018-03-01 Cupertino Miranda <cmiranda@synopsys.com> * elf32-arc.c (elf_arc_check_relocs): Changed.
This commit is contained in:
parent
c834917fda
commit
2936af9015
|
@ -1976,7 +1976,12 @@ elf_arc_check_relocs (bfd * abfd,
|
||||||
if (r_symndx < symtab_hdr->sh_info) /* Is a local symbol. */
|
if (r_symndx < symtab_hdr->sh_info) /* Is a local symbol. */
|
||||||
h = NULL;
|
h = NULL;
|
||||||
else /* Global one. */
|
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)
|
switch (r_type)
|
||||||
|
|
Loading…
Reference in New Issue