This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH 3/6] [ARC] Make sure global symbol is not an indirect or warning.
- From: cupertinomiranda at gmail dot com
- To: binutils at sourceware dot org
- Cc: claziss at synopsys dot com, fbedard at synopsys dot com, nickc at redhat dot com, Cupertino Miranda <cmiranda at synopsys dot com>
- Date: Thu, 13 Sep 2018 16:38:36 +0100
- Subject: [PATCH 3/6] [ARC] Make sure global symbol is not an indirect or warning.
- References: <20180913153839.7771-1-cupertinomiranda@gmail.com>
From: Cupertino Miranda <cmiranda@synopsys.com>
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.
---
bfd/elf32-arc.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
index 3f60d09..4d36a41 100644
--- a/bfd/elf32-arc.c
+++ b/bfd/elf32-arc.c
@@ -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)
--
2.9.0