import elfutils-0.180-1.el8

This commit is contained in:
CentOS Sources 2020-07-28 07:09:35 -04:00 committed by Stepan Oksanichenko
parent 386b3d71b3
commit 01abc9b016
7 changed files with 14 additions and 214 deletions

View File

@ -1 +1 @@
5f52d04105a89e50caf69cea40629c323c1eccd9 SOURCES/elfutils-0.178.tar.bz2
c1ed871515b0f7fcdf2d94fea23e4b8ba67e8fe3 SOURCES/elfutils-0.180.tar.bz2

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/elfutils-0.178.tar.bz2
SOURCES/elfutils-0.180.tar.bz2

View File

@ -1,62 +0,0 @@
commit 4a90cb11140a6bb3712228861a32e4035013ad85
Author: Mark Wielaard <mark@klomp.org>
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 <amerey@redhat.com>
Tested-by: Frank Ch. Eigler <fche@redhat.com>
Signed-off-by: Mark Wielaard <mark@klomp.org>
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;
}

View File

@ -1,53 +0,0 @@
commit 374fbed3da0197f794a904e78e75e961c7e2e92c
Author: Mark Wielaard <mark@klomp.org>
Date: Wed Dec 4 00:39:26 2019 +0100
debuginfod: Fix implicit conversion from 'CURLcode' to 'CURLMcode'
GCC10 warns when converting the value of one enum type into another:
debuginfod-client.c:530:24: error: implicit conversion from CURLcode
to CURLMcode [-Werror=enum-conversion]
530 | curl_res = curl_easy_getinfo(target_handle,
| ^
libcurl has different error code enums. The "easy" interfaces return
a CURLcode error. The "multi" interface functions return a CURLMcode.
Signed-off-by: Mark Wielaard <mark@klomp.org>
diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c
index 6e62b86c..302ea2dc 100644
--- a/debuginfod/debuginfod-client.c
+++ b/debuginfod/debuginfod-client.c
@@ -509,8 +509,6 @@ debuginfod_query_server (debuginfod_client *c,
long loops = 0;
do
{
- CURLMcode curl_res;
-
if (c->progressfn) /* inform/check progress callback */
{
loops ++;
@@ -518,6 +516,7 @@ debuginfod_query_server (debuginfod_client *c,
long pb = 0;
if (target_handle) /* we've committed to a server; report its download progress */
{
+ CURLcode curl_res;
#ifdef CURLINFO_SIZE_DOWNLOAD_T
curl_off_t dl;
curl_res = curl_easy_getinfo(target_handle,
@@ -564,10 +563,10 @@ debuginfod_query_server (debuginfod_client *c,
if (data[i].handle != target_handle)
curl_multi_remove_handle(curlm, data[i].handle);
- curl_res = curl_multi_perform(curlm, &still_running);
- if (curl_res != CURLM_OK)
+ CURLMcode curlm_res = curl_multi_perform(curlm, &still_running);
+ if (curlm_res != CURLM_OK)
{
- switch (curl_res)
+ switch (curlm_res)
{
case CURLM_CALL_MULTI_PERFORM: continue;
case CURLM_OUT_OF_MEMORY: rc = -ENOMEM; break;

View File

@ -1,67 +0,0 @@
commit d8bad02afc7b7f30402b4e0e458df874a6d600da
Author: Mark Wielaard <mark@klomp.org>
Date: Mon Dec 9 19:38:19 2019 +0100
debuginfod: Check the DEBUGINFOD_URLS environment variable early in client.
If the debuginfod-client isn't configured we should do as little
as possible. Simply return early with ENOSYS if no servers are
configured. This means we won't check
This does change the behavior of the debuginfod_find calls slightly.
Previously we would setup and check the cache if the given build-id
was valid. Which might have provided a result if an earlier client
had run with the same cache and valid server URLs which knew about
that particular build-id. Now we don't return any cached results
unless at least one server is configured.
This prevents selinux errors when the library is used in a confined
setup.
Signed-off-by: Mark Wielaard <mark@klomp.org>
diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c
index 302ea2dc..ab7b4e13 100644
--- a/debuginfod/debuginfod-client.c
+++ b/debuginfod/debuginfod-client.c
@@ -301,6 +301,16 @@ debuginfod_query_server (debuginfod_client *c,
char target_cache_tmppath[PATH_MAX*5];
char suffix[PATH_MAX*2];
char build_id_bytes[MAX_BUILD_ID_BYTES * 2 + 1];
+ int rc;
+
+ /* Is there any server we can query? If not, don't do any work,
+ just return with ENOSYS. Don't even access the cache. */
+ urls_envvar = getenv(server_urls_envvar);
+ if (urls_envvar == NULL || urls_envvar[0] == '\0')
+ {
+ rc = -ENOSYS;
+ goto out;
+ }
/* Copy lowercase hex representation of build_id into buf. */
if ((build_id_len >= MAX_BUILD_ID_BYTES) ||
@@ -373,7 +383,7 @@ debuginfod_query_server (debuginfod_client *c,
/* XXX combine these */
snprintf(interval_path, sizeof(interval_path), "%s/%s", cache_path, cache_clean_interval_filename);
snprintf(maxage_path, sizeof(maxage_path), "%s/%s", cache_path, cache_max_unused_age_filename);
- int rc = debuginfod_init_cache(cache_path, interval_path, maxage_path);
+ rc = debuginfod_init_cache(cache_path, interval_path, maxage_path);
if (rc != 0)
goto out;
rc = debuginfod_clean_cache(c, cache_path, interval_path, maxage_path);
@@ -390,14 +400,6 @@ debuginfod_query_server (debuginfod_client *c,
return fd;
}
-
- urls_envvar = getenv(server_urls_envvar);
- if (urls_envvar == NULL || urls_envvar[0] == '\0')
- {
- rc = -ENOSYS;
- goto out;
- }
-
if (getenv(server_timeout_envvar))
server_timeout = atoi (getenv(server_timeout_envvar));

View File

@ -1,18 +0,0 @@
diff --git a/src/elflint.c b/src/elflint.c
index 810c8bd..1acf1bc 100644
--- a/src/elflint.c
+++ b/src/elflint.c
@@ -4483,8 +4483,13 @@ only executables, shared objects, and core files can have program headers\n"));
continue;
}
+#ifndef PT_GNU_PROPERTY
+#define PT_GNU_PROPERTY (PT_LOOS + 0x474e553)
+#endif
+
if (phdr->p_type >= PT_NUM && phdr->p_type != PT_GNU_EH_FRAME
&& phdr->p_type != PT_GNU_STACK && phdr->p_type != PT_GNU_RELRO
+ && phdr->p_type != PT_GNU_PROPERTY
/* Check for a known machine-specific type. */
&& ebl_segment_type_name (ebl, phdr->p_type, NULL, 0) == NULL)
ERROR (gettext ("\

View File

@ -1,6 +1,6 @@
Name: elfutils
Version: 0.178
%global baserelease 6
Version: 0.180
%global baserelease 1
Release: %{baserelease}%{?dist}
URL: http://elfutils.org/
%global source_url ftp://sourceware.org/pub/elfutils/%{version}/
@ -42,6 +42,7 @@ BuildRequires: pkgconfig(libarchive) >= 3.1.2
BuildRequires: bzip2
# For the run-debuginfod-find.sh test case in %check for /usr/sbin/ss
BuildRequires: iproute
BuildRequires: bsdtar
BuildRequires: curl
%global _gnu %{nil}
@ -54,10 +55,6 @@ BuildRequires: curl
%endif
# Patches
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
@ -225,8 +222,8 @@ Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
Requires(pre): shadow-utils
# For /usr/bin/cpio2rpm
Requires: rpm
# To extract .deb files with a bsdtar (= libarchive) subshell
Requires: bsdtar
%description debuginfod-client
The elfutils-debuginfod-client package contains shared libraries
@ -249,10 +246,6 @@ such servers to download those files on demand.
%setup -q
# Apply patches
%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.
@ -430,6 +423,13 @@ exit 0
%systemd_postun_with_restart debuginfod.service
%changelog
* Thu Jun 11 2020 Mark Wielaard <mjw@redhat.com> - 0.180-1
- New upstream release.
* Fri Jan 10 2020 Mark Wielaard <mjw@redhat.com> - 0.178-7
- Add elfutils-0.178-debuginfod-timeoutprogress.patch
- Add elfutils-0.178-libasm-ebl.patch
* Fri Dec 13 2019 Mark Wielaard <mjw@redhat.com> - 0.178-6
- Add elfutils-0.178-curl-code-gcc-10.patch
- Add elfutils-0.178-compressed-vmlinuz.patch