]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
PR31872, Segfault in objdump (elf_slurp_reloc_table_from_section)
authorAlan Modra <amodra@gmail.com>
Mon, 10 Jun 2024 23:52:49 +0000 (09:22 +0930)
committerAlan Modra <amodra@gmail.com>
Tue, 11 Jun 2024 03:13:06 +0000 (12:43 +0930)
This one was triggered by trying to dump an AMDGPU object.
elf64-amdgcn.c lacks support for objdump relocation handling.

PR 31872
* elfcode.h (elf_slurp_reloc_table_from_section): Don't segfault
on NULL elf_info_to_howto_rel.

bfd/elfcode.h

index 39dfe0ba234b172371f9bb87e41715af5556eebb..3dcba4c4fd7728db09684f75a77804dc8ab507e4 100644 (file)
@@ -1614,11 +1614,11 @@ elf_slurp_reloc_table_from_section (bfd *abfd,
 
       relent->addend = rela.r_addend;
 
-      if ((entsize == sizeof (Elf_External_Rela)
-          && ebd->elf_info_to_howto != NULL)
-         || ebd->elf_info_to_howto_rel == NULL)
+      res = false;
+      if (entsize == sizeof (Elf_External_Rela)
+         && ebd->elf_info_to_howto != NULL)
        res = ebd->elf_info_to_howto (abfd, relent, &rela);
-      else
+      else if (ebd->elf_info_to_howto_rel != NULL)
        res = ebd->elf_info_to_howto_rel (abfd, relent, &rela);
 
       if (! res || relent->howto == NULL)