]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
bfd/ELF: refine PR binutils/31872 fix
authorJan Beulich <jbeulich@suse.com>
Thu, 19 Dec 2024 09:39:38 +0000 (10:39 +0100)
committerJan Beulich <jbeulich@suse.com>
Thu, 19 Dec 2024 09:39:38 +0000 (10:39 +0100)
The fix for PR binutils/31872 (commit b20ab53f81db) neglected the case
of targets with only RELA support, where nevertheless object files using
REL exist. In particular objcopy will create such objects for x86-64
when converting from an i?86 ELF object (this by itself probably isn't
quite right, but we ought to cope with what our own tools are doing).

Restore the fallback to the RELA lookup, just without re-introducing the
blind NULL de-ref that was there before.

bfd/elfcode.h

index baf38fef5a51250eb2ddded1c2036a6012a35014..72af344845e0714d37b8990a27a8f5e84f577608 100644 (file)
@@ -1615,7 +1615,8 @@ elf_slurp_reloc_table_from_section (bfd *abfd,
       relent->addend = rela.r_addend;
 
       res = false;
-      if (entsize == sizeof (Elf_External_Rela)
+      if ((entsize == sizeof (Elf_External_Rela)
+          || ebd->elf_info_to_howto_rel == NULL)
          && ebd->elf_info_to_howto != NULL)
        res = ebd->elf_info_to_howto (abfd, relent, &rela);
       else if (ebd->elf_info_to_howto_rel != NULL)