[PATCH][gdb] Fix fbsd core matching

Tom de Vries tdevries@suse.de
Thu Jun 9 08:58:44 GMT 2022


Hi,

With an --enable-targets=all build and target board unix/-m32 I run into a
FAIL in test-case gdb.base/corefile.exp:
...
(gdb) file outputs/gdb.base/corefile/corefile^M
Reading symbols from outputs/gdb.base/corefile/corefile...^M
(gdb) core-file outputs/gdb.base/corefile/corefile.core^M
warning: core file may not match specified executable file.^M
[New LWP 12011]^M
Core was generated by `outputs/gdb.base/corefile/co'.^M
Program terminated with signal SIGABRT, Aborted.^M
(gdb) FAIL: gdb.base/corefile.exp: core-file warning-free
...

The warning is there because of this mismatch between core and exec:
...
(gdb) p core_bfd->xvec
$3 = (const struct bfd_target *) 0x20112a0 <i386_elf32_fbsd_vec>
(gdb) p exec_bfd->xvec
$4 = (const struct bfd_target *) 0x2010b00 <i386_elf32_vec>
...

In the exec case, the detected architecture is i386_elf32_vec because this bit
of code in elfcode.h:elf_object_p():
...
  if (ebd->elf_machine_code != EM_NONE
      && i_ehdrp->e_ident[EI_OSABI] != ebd->elf_osabi
      && ebd->elf_osabi != ELFOSABI_NONE)
    goto got_wrong_format_error;
...
prevents i386_elf32_fbsd from matching.

Fix the core matching by copying that code to elfcore.h:elf_core_file_p().

Tested on x86_64-linux.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29227

Any comments?

Thanks,
- Tom

[gdb] Fix fbsd core matching

---
 bfd/elfcore.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/bfd/elfcore.h b/bfd/elfcore.h
index 809f6711aed..4ce81e2e383 100644
--- a/bfd/elfcore.h
+++ b/bfd/elfcore.h
@@ -272,6 +272,11 @@ elf_core_file_p (bfd *abfd)
       && ebd->elf_machine_code != EM_NONE)
     goto fail;
 
+  if (ebd->elf_machine_code != EM_NONE
+      && i_ehdrp->e_ident[EI_OSABI] != ebd->elf_osabi
+      && ebd->elf_osabi != ELFOSABI_NONE)
+    goto fail;
+
   /* Let the backend double check the format and override global
      information.  We do this before processing the program headers
      to allow the correct machine (as opposed to just the default


More information about the Binutils mailing list