|
Panu Matilainen |
3abc97 |
From d48981ad7e36abb3500161d823acf92345c94f5d Mon Sep 17 00:00:00 2001
|
|
Panu Matilainen |
3abc97 |
Message-Id: <d48981ad7e36abb3500161d823acf92345c94f5d.1558430547.git.pmatilai@redhat.com>
|
|
Panu Matilainen |
3abc97 |
In-Reply-To: <68d383c39cef8d58b80940b13dd132d3f41a03f0.1558430547.git.pmatilai@redhat.com>
|
|
Panu Matilainen |
3abc97 |
References: <68d383c39cef8d58b80940b13dd132d3f41a03f0.1558430547.git.pmatilai@redhat.com>
|
|
Panu Matilainen |
3abc97 |
From: Panu Matilainen <pmatilai@redhat.com>
|
|
Panu Matilainen |
3abc97 |
Date: Tue, 2 Apr 2019 16:07:56 +0300
|
|
Panu Matilainen |
3abc97 |
Subject: [PATCH 2/2] Support build-id generation from compressed ELF files
|
|
Panu Matilainen |
3abc97 |
(elfutils >= 0.175)
|
|
Panu Matilainen |
3abc97 |
|
|
Panu Matilainen |
3abc97 |
Use dwelf_elf_begin() for reading ELF files for build-id generation on
|
|
Panu Matilainen |
3abc97 |
versions that have it to support compressed ELF files such as kernel
|
|
Panu Matilainen |
3abc97 |
modules (RhBug:1650072,1650074). Note that debugedit still cannot handle
|
|
Panu Matilainen |
3abc97 |
compressed files, this is only for build-id generation.
|
|
Panu Matilainen |
3abc97 |
---
|
|
Panu Matilainen |
3abc97 |
build/files.c | 4 ++++
|
|
Panu Matilainen |
3abc97 |
configure.ac | 4 ++++
|
|
Panu Matilainen |
3abc97 |
2 files changed, 8 insertions(+)
|
|
Panu Matilainen |
3abc97 |
|
|
Panu Matilainen |
3abc97 |
diff --git a/build/files.c b/build/files.c
|
|
Panu Matilainen |
3abc97 |
index 3822be3d3..f72a7c866 100644
|
|
Panu Matilainen |
3abc97 |
--- a/build/files.c
|
|
Panu Matilainen |
3abc97 |
+++ b/build/files.c
|
|
Panu Matilainen |
3abc97 |
@@ -1828,7 +1828,11 @@ static int generateBuildIDs(FileList fl, ARGV_t *files)
|
|
Panu Matilainen |
3abc97 |
kernel modules (ET_REL files with .modinfo section)
|
|
Panu Matilainen |
3abc97 |
should have build-ids. */
|
|
Panu Matilainen |
3abc97 |
GElf_Ehdr ehdr;
|
|
Panu Matilainen |
3abc97 |
+#if HAVE_DWELF_ELF_BEGIN
|
|
Panu Matilainen |
3abc97 |
+ Elf *elf = dwelf_elf_begin(fd);
|
|
Panu Matilainen |
3abc97 |
+#else
|
|
Panu Matilainen |
3abc97 |
Elf *elf = elf_begin (fd, ELF_C_READ, NULL);
|
|
Panu Matilainen |
3abc97 |
+#endif
|
|
Panu Matilainen |
3abc97 |
if (elf != NULL && elf_kind(elf) == ELF_K_ELF
|
|
Panu Matilainen |
3abc97 |
&& gelf_getehdr(elf, &ehdr) != NULL
|
|
Panu Matilainen |
3abc97 |
&& (ehdr.e_type == ET_EXEC || ehdr.e_type == ET_DYN
|
|
Panu Matilainen |
3abc97 |
diff --git a/configure.ac b/configure.ac
|
|
Panu Matilainen |
3abc97 |
index 99ce7df32..b2d7ed806 100644
|
|
Panu Matilainen |
3abc97 |
--- a/configure.ac
|
|
Panu Matilainen |
3abc97 |
+++ b/configure.ac
|
|
Panu Matilainen |
3abc97 |
@@ -487,6 +487,10 @@ AS_IF([test "$WITH_LIBELF" = yes],[
|
|
Panu Matilainen |
3abc97 |
# If possible we also want the strtab functions from elfutils 0.167.
|
|
Panu Matilainen |
3abc97 |
# But we can fall back on the (unsupported) ebl alternatives if not.
|
|
Panu Matilainen |
3abc97 |
AC_CHECK_LIB(dw, dwelf_strtab_init, [HAVE_LIBDW_STRTAB=yes])
|
|
Panu Matilainen |
3abc97 |
+ # whether libdw supports compressed ELF objects
|
|
Panu Matilainen |
3abc97 |
+ AC_CHECK_LIB(dw, dwelf_elf_begin, [
|
|
Panu Matilainen |
3abc97 |
+ AC_DEFINE(HAVE_DWELF_ELF_BEGIN, 1, [Have dwelf_elf_begin?])
|
|
Panu Matilainen |
3abc97 |
+ ])
|
|
Panu Matilainen |
3abc97 |
])
|
|
Panu Matilainen |
3abc97 |
])
|
|
Panu Matilainen |
3abc97 |
])
|
|
Panu Matilainen |
3abc97 |
--
|
|
Panu Matilainen |
3abc97 |
2.21.0
|
|
Panu Matilainen |
3abc97 |
|