From 83259ef8d8c95420eced29e45e27b9ceb5689fd6 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 11 Dec 2019 16:08:01 +0100 Subject: [PATCH] 0.178-6 - Add elfutils-0.178-compressed-vmlinuz.patch --- elfutils-0.178-compressed-vmlinuz.patch | 62 +++++++++++++++++++++++++ elfutils.spec | 7 ++- 2 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 elfutils-0.178-compressed-vmlinuz.patch diff --git a/elfutils-0.178-compressed-vmlinuz.patch b/elfutils-0.178-compressed-vmlinuz.patch new file mode 100644 index 0000000..1df54a1 --- /dev/null +++ b/elfutils-0.178-compressed-vmlinuz.patch @@ -0,0 +1,62 @@ +commit 4a90cb11140a6bb3712228861a32e4035013ad85 +Author: Mark Wielaard +Date: Thu Dec 5 15:03:54 2019 +0100 + + libdwfl: Find and handle compressed vmlinuz image. + + Both the dwfl_linux_kernel_find_elf callback and the + dwfl_linux_kernel_report_offline reporting function only handled + vmlinix images possibly compressed with .gz, .bz2 or .xz extension. + They did not find or handle the much more common vmlinuz compressed + images. + + It is not completely clear why we didn't up to now. Support for + compressed ELF files was added in 2009 and the code was updated to + to try to find the .gz, .bz2 or .xz extension variants in 2011. + But not the vmlinuz named variant. + + Reported-by: Aaron Merey + Tested-by: Frank Ch. Eigler + Signed-off-by: Mark Wielaard + +diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c +index d46ab5aa..48fb1ff0 100644 +--- a/libdwfl/linux-kernel-modules.c ++++ b/libdwfl/linux-kernel-modules.c +@@ -174,6 +174,8 @@ kernel_release (void) + static int + find_kernel_elf (Dwfl *dwfl, const char *release, char **fname) + { ++ /* First try to find an uncompressed vmlinux image. Possibly ++ including debuginfo. */ + if ((release[0] == '/' + ? asprintf (fname, "%s/vmlinux", release) + : asprintf (fname, "/boot/vmlinux-%s", release)) < 0) +@@ -188,6 +190,27 @@ find_kernel_elf (Dwfl *dwfl, const char *release, char **fname) + fd = try_kernel_name (dwfl, fname, true); + } + ++ /* There might be a compressed vmlinuz image. Probably without ++ debuginfo, but try to find it under the debug path also, just in ++ case. */ ++ if (fd < 0) ++ { ++ free (*fname); ++ if ((release[0] == '/' ++ ? asprintf (fname, "%s/vmlinuz", release) ++ : asprintf (fname, "/boot/vmlinuz-%s", release)) < 0) ++ return -1; ++ ++ fd = try_kernel_name (dwfl, fname, true); ++ if (fd < 0 && release[0] != '/') ++ { ++ free (*fname); ++ if (asprintf (fname, MODULEDIRFMT "/vmlinuz", release) < 0) ++ return -1; ++ fd = try_kernel_name (dwfl, fname, true); ++ } ++ } ++ + return fd; + } + diff --git a/elfutils.spec b/elfutils.spec index dcb8bf9..a2e31e1 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.178 -%global baserelease 5 +%global baserelease 6 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -57,6 +57,7 @@ BuildRequires: curl Patch1: elfutils-0.178-pt-gnu-prop.patch Patch2: elfutils-0.178-debuginfod-no-cache.patch Patch3: elfutils-0.178-curl-code-gcc-10.patch +Patch4: elfutils-0.178-compressed-vmlinuz.patch %description Elfutils is a collection of utilities, including stack (to show @@ -251,6 +252,7 @@ such servers to download those files on demand. %patch1 -p1 -b .pt-gnu-prop %patch2 -p1 -b .debuginfod-client-cache %patch3 -p1 -b .curl-gcc-10 +%patch4 -p1 -b .vmlinuz # In case the above patches added any new test scripts, make sure they # are executable. @@ -428,8 +430,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog -* Wed Dec 11 2019 Mark Wielaard +* Wed Dec 11 2019 Mark Wielaard - 0.178-6 - Add elfutils-0.178-curl-code-gcc-10.patch +- Add elfutils-0.178-compressed-vmlinuz.patch * Mon Dec 9 2019 Mark Wielaard - 0.178-5 - Add elfutils-0.178-debuginfod-no-cache.patch.