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.
2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
Backport from mainline
- 2018-03-01 Cupertino Miranda <cmiranda@synopsys.com>
+ 2018-03-02 Cupertino Miranda <cmiranda@synopsys.com>
+ * elf32-arc.c (elf_arc_check_relocs): Changed.
+
+
+2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
+
+ Backport from mainline
+ 2018-03-02 Cupertino Miranda <cmiranda@synopsys.com>
* elf32-arc.c (elf_arc_finish_dynamic_symbol) Return FALSE in case
arc_htab is NULL.
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)