0.179-2 - Add elfutils-0.179-debug-client-alt-link.patch

This commit is contained in:
Mark Wielaard 2020-05-01 00:15:04 +02:00
parent 21eb5dd8d1
commit a02de95640
2 changed files with 66 additions and 1 deletions

View File

@ -0,0 +1,60 @@
From b1d2404cc6ca0d9ce786e229a87c24db49163cfe Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Thu, 30 Apr 2020 23:57:26 +0200
Subject: [PATCH] libdwfl: Handle debugaltlink in dwfl_standard_find_debuginfo.
When we fall back to the debuginfod client then we need to do the
same trick we do for local lookups in dwfl_build_id_find_debuginfo.
If the debug file (dw) is already set, then we must be looking for
the altfile. But we cannot use the actual file/path name given as
hint. We'll have to lookup the alt file "build-id". Because the
debuginfod client only handles build-ids.
Previously we would use the build-id of the main file which meant
the debuginfod client would give us another copy of the debug file,
which would then be set as its own altfile. This caused lots of
confusion...
Signed-off-by: Mark Wielaard <mark@klomp.org>
---
libdwfl/ChangeLog | 5 +++++
libdwfl/find-debuginfo.c | 23 +++++++++++++++++++++--
2 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/libdwfl/find-debuginfo.c b/libdwfl/find-debuginfo.c
index 2dd11c48..4cfd0b8b 100644
--- a/libdwfl/find-debuginfo.c
+++ b/libdwfl/find-debuginfo.c
@@ -398,8 +398,27 @@ dwfl_standard_find_debuginfo (Dwfl_Module *mod,
free (canon);
}
- if (fd < 0 && bits_len > 0)
- fd = __libdwfl_debuginfod_find_debuginfo (mod->dwfl, bits, bits_len);
+ /* Still nothing? Try if we can use the debuginfod client.
+ But note that we might be looking for the alt file.
+ We use the same trick as dwfl_build_id_find_debuginfo.
+ If the debug file (dw) is already set, then we must be
+ looking for the altfile. But we cannot use the actual
+ file/path name given as hint. We'll have to lookup the
+ alt file "build-id". Because the debuginfod client only
+ handles build-ids. */
+ if (fd < 0)
+ {
+ if (mod->dw != NULL)
+ {
+ const char *altname;
+ bits_len = INTUSE(dwelf_dwarf_gnu_debugaltlink) (mod->dw, &altname,
+ (const void **)
+ &bits);
+ }
+
+ if (bits_len > 0)
+ fd = __libdwfl_debuginfod_find_debuginfo (mod->dwfl, bits, bits_len);
+ }
return fd;
}
--
2.18.2

View File

@ -1,6 +1,6 @@
Name: elfutils
Version: 0.179
%global baserelease 1
%global baserelease 2
Release: %{baserelease}%{?dist}
URL: http://elfutils.org/
%global source_url ftp://sourceware.org/pub/elfutils/%{version}/
@ -55,6 +55,7 @@ BuildRequires: curl
%endif
# Patches
Patch1: elfutils-0.179-debug-client-alt-link.patch
%description
Elfutils is a collection of utilities, including stack (to show
@ -246,6 +247,7 @@ such servers to download those files on demand.
%setup -q
# Apply patches
%patch1 -p1 -b .debug-client-alt
# In case the above patches added any new test scripts, make sure they
# are executable.
@ -423,6 +425,9 @@ exit 0
%systemd_postun_with_restart debuginfod.service
%changelog
* Thu Apr 30 2020 Mark Wielaard <mjw@fedoraproject.org> - 0.179-2
- Add elfutils-0.179-debug-client-alt-link.patch
* Mon Mar 30 2020 Mark Wielaard <mjw@fedoraproject.org> - 0.179-1
- New upstream release.
debuginfod-client: