From: Jan Beulich Date: Thu, 19 Dec 2024 09:39:38 +0000 (+0100) Subject: bfd/ELF: refine PR binutils/31872 fix X-Git-Tag: gdb-16-branchpoint~44 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2c0c13933a6d08ae87c2852b3421ede090499f09;p=thirdparty%2Fbinutils-gdb.git bfd/ELF: refine PR binutils/31872 fix 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. --- diff --git a/bfd/elfcode.h b/bfd/elfcode.h index baf38fef5a5..72af344845e 100644 --- a/bfd/elfcode.h +++ b/bfd/elfcode.h @@ -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)