[binutils-gdb] bfin: Check bfd_link_hash_indirect
H.J. Lu
hjl@sourceware.org
Thu Jan 7 00:41:00 GMT 2021
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=d4e57b87a3d5879917c30e33b14760fd76ff7b38
commit d4e57b87a3d5879917c30e33b14760fd76ff7b38
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Tue Dec 29 10:41:51 2020 -0800
bfin: Check bfd_link_hash_indirect
Add bfd_link_hash_indirect check to check_relocs. This fixed:
FAIL: ld-elf/pr26979a
FAIL: ld-elf/pr26979b
FAIL: Symbol export class test (final shared object)
* elf32-bfin.c (bfin_check_relocs): Check bfd_link_hash_indirect.
(bfinfdpic_check_relocs): Likewise.
Diff:
---
bfd/ChangeLog | 5 +++++
bfd/elf32-bfin.c | 10 +++++++++-
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 06d6e393060..3a219c7f4b7 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2021-01-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ * elf32-bfin.c (bfin_check_relocs): Check bfd_link_hash_indirect.
+ (bfinfdpic_check_relocs): Likewise.
+
2021-01-06 Alan Modra <amodra@gmail.com>
* elf32-score.c (s3_bfd_score_info_to_howto): Report an error
diff --git a/bfd/elf32-bfin.c b/bfd/elf32-bfin.c
index 0d8050f99c0..7c926b8a96e 100644
--- a/bfd/elf32-bfin.c
+++ b/bfd/elf32-bfin.c
@@ -1197,6 +1197,9 @@ bfin_check_relocs (bfd * abfd,
else
{
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 (ELF32_R_TYPE (rel->r_info))
@@ -4523,7 +4526,12 @@ bfinfdpic_check_relocs (bfd *abfd, struct bfd_link_info *info,
if (r_symndx < symtab_hdr->sh_info)
h = NULL;
else
- 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 (ELF32_R_TYPE (rel->r_info))
{
More information about the Binutils-cvs
mailing list