From b7213666d6035713c3a2786ee418085e07cb3cca Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 17 Oct 2017 17:15:02 -0700 Subject: [PATCH] microblaze: Check for indirect and warning symbols Relocations against indirect and warning symbols should be applied to real symbols. * elf32-microblaze.c (microblaze_elf_check_relocs): Check for indirect and warning symbols. --- bfd/ChangeLog | 5 +++++ bfd/elf32-microblaze.c | 3 +++ 2 files changed, 8 insertions(+) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 2373816806..c574a9abc6 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2017-10-17 H.J. Lu + + * elf32-microblaze.c (microblaze_elf_check_relocs): Check for + indirect and warning symbols. + 2017-10-17 Alan Modra PR 22307 diff --git a/bfd/elf32-microblaze.c b/bfd/elf32-microblaze.c index 1a69b6da72..a54044fdb3 100644 --- a/bfd/elf32-microblaze.c +++ b/bfd/elf32-microblaze.c @@ -2307,6 +2307,9 @@ microblaze_elf_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; /* PR15323, ref flags aren't set for references in the same object. */