43 lines
1.3 KiB
Diff
43 lines
1.3 KiB
Diff
|
From b182c9f81daa08cf18cd78af3e7aca74640e8551 Mon Sep 17 00:00:00 2001
|
||
|
From: Cupertino Miranda <cmiranda@synopsys.com>
|
||
|
Date: Fri, 2 Mar 2018 17:38:14 +0100
|
||
|
Subject: [PATCH] [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.
|
||
|
|
||
|
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
|
||
|
---
|
||
|
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 72b808b99127..6f6470f6f202 100644
|
||
|
--- a/bfd/elf32-arc.c
|
||
|
+++ b/bfd/elf32-arc.c
|
||
|
@@ -1943,7 +1943,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.17.1
|
||
|
|