[Bug debuginfod/26599] New: eu-readelf -n works on /boot/vmlinuz-* but debuginfod-find doesn't

2020-09-11 Thread fche at redhat dot com via Elfutils-devel
https://sourceware.org/bugzilla/show_bug.cgi?id=26599

Bug ID: 26599
   Summary: eu-readelf -n works on /boot/vmlinuz-*  but
debuginfod-find doesn't
   Product: elfutils
   Version: unspecified
Status: NEW
  Severity: normal
  Priority: P2
 Component: debuginfod
  Assignee: unassigned at sourceware dot org
  Reporter: fche at redhat dot com
CC: elfutils-devel at sourceware dot org
  Target Milestone: ---

eu-readelf appears to unwrap the bzImage header on a vmlinuz kernel file, and
can thus extract buildids, but debuginfod-find cannot:

% eu-readelf -n  /lib/modules/5.7.15-200.fc32.x86_64/vmlinuz
[...]
  GNU   20  GNU_BUILD_ID
Build ID: 8820b044b7717b53bd9a9795a1fbca152d2fae63

% debuginfod-find debuginfo  /lib/modules/5.7.15-200.fc32.x86_64/vmlinuz  
Cannot extract build-id from /lib/modules/5.7.15-200.fc32.x86_64/vmlinuz:
invalid `Elf' handle


It would be handy to teach debuginfod-find how to use the elfutils entry point
that unwraps bzImage.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

[Bug debuginfod/26599] eu-readelf -n works on /boot/vmlinuz-* but debuginfod-find doesn't

2020-09-11 Thread mark at klomp dot org via Elfutils-devel
https://sourceware.org/bugzilla/show_bug.cgi?id=26599

Mark Wielaard  changed:

   What|Removed |Added

 CC||mark at klomp dot org
 Status|NEW |ASSIGNED

--- Comment #1 from Mark Wielaard  ---
Only quickly tested patch, use dwelf_elf_begin:

/* Creates a read-only Elf handle from the given file handle.  The
   file may be compressed and/or contain a linux kernel image header,
   in which case it is eagerly decompressed in full and the Elf handle
   is created as if created with elf_memory ().  On decompression or
   file errors NULL is returned (and elf_errno will be set).  If there
   was no error, but the file is not an ELF file, then an ELF_K_NONE
   Elf handle is returned (just like with elf_begin).  The Elf handle
   should be closed with elf_end ().  The file handle will not be
   closed.  */

diff --git a/debuginfod/debuginfod-find.c b/debuginfod/debuginfod-find.c
index 83a43ce4..214256da 100644
--- a/debuginfod/debuginfod-find.c
+++ b/debuginfod/debuginfod-find.c
@@ -138,9 +138,10 @@ main(int argc, char** argv)
 }
   if (fd >= 0)
 {
-  elf = elf_begin (fd, ELF_C_READ_MMAP_PRIVATE, NULL);
+  elf = dwelf_elf_begin (fd);
   if (elf == NULL)
-fprintf (stderr, "Cannot elf_begin %s: %s\n", build_id,
elf_errmsg(-1));
+fprintf (stderr, "Cannot open as ELF file %s: %s\n", build_id,
+elf_errmsg (-1));
 }
   if (elf != NULL)
 {

-- 
You are receiving this mail because:
You are on the CC list for the bug.