diff --git a/.elfutils.metadata b/.elfutils.metadata index 47e5453..05a788a 100644 --- a/.elfutils.metadata +++ b/.elfutils.metadata @@ -1 +1 @@ -c1ed871515b0f7fcdf2d94fea23e4b8ba67e8fe3 SOURCES/elfutils-0.180.tar.bz2 +3efc2253564a2ca8be0a5cf9aba3e4b5f544ee22 SOURCES/elfutils-0.182.tar.bz2 diff --git a/.gitignore b/.gitignore index 7da1245..617df92 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/elfutils-0.180.tar.bz2 +SOURCES/elfutils-0.182.tar.bz2 diff --git a/SOURCES/elfutils-0.182-debuginfod-test-fix.patch b/SOURCES/elfutils-0.182-debuginfod-test-fix.patch new file mode 100644 index 0000000..62efd07 --- /dev/null +++ b/SOURCES/elfutils-0.182-debuginfod-test-fix.patch @@ -0,0 +1,43 @@ +commit f172a31c56405750114924eba0786999bccc501f +Author: Mark Wielaard +Date: Mon Nov 2 15:20:54 2020 +0100 + + tests: Create bogus R/nothing.rpm with cyclic symlink. + + We used to try to trigger an error during debuginfod scanning using + a chmod 000 file. But this doesn't always result in an error. Create + a cyclic symlink instead, which always results in a failure to open/read. + + Signed-off-by: Mark Wielaard + +diff --git a/tests/ChangeLog b/tests/ChangeLog +index 57fc4c8e..2f8b75c3 100644 +--- a/tests/ChangeLog ++++ b/tests/ChangeLog +@@ -1,3 +1,8 @@ ++2020-11-02 Mark Wielaard ++ ++ * run-debuginfod-find.sh: Create bogus R/nothing.rpm with cyclic ++ symlink instead of chmod 000. ++ + 2020-10-31 Mark Wielaard + + * dwfl-proc-attach.c (dlopen): New external function override. +diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh +index 48dbc7d4..5af45667 100755 +--- a/tests/run-debuginfod-find.sh ++++ b/tests/run-debuginfod-find.sh +@@ -95,9 +95,10 @@ wait_ready() + fi + } + +-# create a 000 empty .rpm file to evoke a metric-visible error +-touch R/nothing.rpm +-chmod 000 R/nothing.rpm ++# create a bogus .rpm file to evoke a metric-visible error ++# Use a cyclic symlink instead of chmod 000 to make sure even root ++# would see an error (running the testsuite under root is NOT encouraged). ++ln -s R/nothing.rpm R/nothing.rpm + + env LD_LIBRARY_PATH=$ldpath DEBUGINFOD_URLS= ${abs_builddir}/../debuginfod/debuginfod $VERBOSE -F -R -d $DB -p $PORT1 -t0 -g0 --fdcache-fds 1 --fdcache-mbs 2 -Z .tar.xz -Z .tar.bz2=bzcat -v R F Z L > vlog4 2>&1 & + PID1=$! diff --git a/SOURCES/elfutils-0.182-s390-pid_memory_read.patch b/SOURCES/elfutils-0.182-s390-pid_memory_read.patch new file mode 100644 index 0000000..2c056cb --- /dev/null +++ b/SOURCES/elfutils-0.182-s390-pid_memory_read.patch @@ -0,0 +1,39 @@ +commit e4d985a3c1c873f77d20fa0cd421458cc2824996 +Author: Andreas Krebbel +Date: Thu Nov 19 20:32:24 2020 +0100 + + IBM Z: Fix endianess problem in pid_memory_read + + The cached reads lack the big endian adjustments done in the fallback + path. + + Signed-off-by: Andreas Krebbel + +diff --git a/libdwfl/linux-pid-attach.c b/libdwfl/linux-pid-attach.c +index 3a6af997..b23139d9 100644 +--- a/libdwfl/linux-pid-attach.c ++++ b/libdwfl/linux-pid-attach.c +@@ -193,14 +193,22 @@ pid_memory_read (Dwfl *dwfl, Dwarf_Addr addr, Dwarf_Word *result, void *arg) + { + struct __libdwfl_pid_arg *pid_arg = arg; + pid_t tid = pid_arg->tid_attached; ++ Dwfl_Process *process = dwfl->process; + assert (tid > 0); + + #ifdef HAVE_PROCESS_VM_READV + if (read_cached_memory (pid_arg, addr, result)) ++ { ++#if SIZEOF_LONG == 8 ++# if BYTE_ORDER == BIG_ENDIAN ++ if (ebl_get_elfclass (process->ebl) == ELFCLASS32) ++ *result >>= 32; ++# endif ++#endif + return true; ++ } + #endif + +- Dwfl_Process *process = dwfl->process; + if (ebl_get_elfclass (process->ebl) == ELFCLASS64) + { + #if SIZEOF_LONG == 8 diff --git a/SPECS/elfutils.spec b/SPECS/elfutils.spec index 54d1b2e..df8247c 100644 --- a/SPECS/elfutils.spec +++ b/SPECS/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils -Version: 0.180 -%global baserelease 1 +Version: 0.182 +%global baserelease 3 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -31,6 +31,7 @@ BuildRequires: flex BuildRequires: zlib-devel BuildRequires: bzip2-devel BuildRequires: xz-devel +BuildRequires: libzstd-devel # For debuginfod BuildRequires: pkgconfig(libmicrohttpd) >= 0.9.33 @@ -40,7 +41,8 @@ BuildRequires: pkgconfig(libarchive) >= 3.1.2 # For tests need to bunzip2 test files. BuildRequires: bzip2 -# For the run-debuginfod-find.sh test case in %check for /usr/sbin/ss +BuildRequires: zstd +# For the run-debuginfod-find.sh test case in %%check for /usr/sbin/ss BuildRequires: iproute BuildRequires: bsdtar BuildRequires: curl @@ -55,6 +57,8 @@ BuildRequires: curl %endif # Patches +Patch1: elfutils-0.182-debuginfod-test-fix.patch +Patch2: elfutils-0.182-s390-pid_memory_read.patch %description Elfutils is a collection of utilities, including stack (to show @@ -246,6 +250,8 @@ such servers to download those files on demand. %setup -q # Apply patches +%patch1 -p1 -b .debuginfod_test_fix +%patch2 -p1 # In case the above patches added any new test scripts, make sure they # are executable. @@ -264,14 +270,18 @@ RPM_OPT_FLAGS="${RPM_OPT_FLAGS} -Wformat" trap 'cat config.log' EXIT %configure CFLAGS="$RPM_OPT_FLAGS -fexceptions" trap '' EXIT -make -s %{?_smp_mflags} +%make_build -s %install rm -rf ${RPM_BUILD_ROOT} -make -s install DESTDIR=${RPM_BUILD_ROOT} +%make_install -s chmod +x ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/lib*.so* +# We don't have standard DEBUGINFOD_URLS yet. +rm ${RPM_BUILD_ROOT}%{_sysconfdir}/profile.d/debuginfod.sh +rm ${RPM_BUILD_ROOT}%{_sysconfdir}/profile.d/debuginfod.csh + %find_lang %{name} %if %{provide_yama_scope} @@ -287,7 +297,7 @@ touch ${RPM_BUILD_ROOT}%{_localstatedir}/cache/debuginfod/debuginfod.sqlite # Record some build root versions in build.log uname -r; rpm -q binutils gcc glibc -make -s %{?_smp_mflags} check || (cat tests/test-suite.log; false) +%make_build -s check || (cat tests/test-suite.log; false) # Only the latest Fedora and EPEL have these scriptlets, # older Fedora and plain RHEL don't. @@ -401,13 +411,13 @@ fi %files debuginfod %defattr(-,root,root) %{_bindir}/debuginfod -%config(noreplace) %verify(not md5 size mtime) %{_sysconfdir}/sysconfig/debuginfod +%config(noreplace) %{_sysconfdir}/sysconfig/debuginfod %{_unitdir}/debuginfod.service %{_sysconfdir}/sysconfig/debuginfod %{_mandir}/man8/debuginfod.8* %dir %attr(0700,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod -%verify(not md5 size mtime) %attr(0600,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod/debuginfod.sqlite +%ghost %attr(0600,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod/debuginfod.sqlite %pre debuginfod getent group debuginfod >/dev/null || groupadd -r debuginfod @@ -423,6 +433,22 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Thu Dec 17 2020 Mark Wielaard - 0.182-3 +- Add elfutils-0.182-s390-pid_memory_read.patch + +* Mon Nov 2 2020 Mark Wielaard - 0.182-2 +- Add elfutils-0.182-debuginfod-test-fix.patch. + +* Mon Nov 2 2020 Mark Wielaard - 0.182-1 +- Upgrade to upstream 0.182 + - backends: Support for tilegx has been removed. + - config: New /etc/profile.d files to provide default $DEBUGINFOD_URLS. + - debuginfod: More efficient package traversal, tolerate various + errors during scanning, grooming progress is more visible and + interruptible, more prometheus metrics. + - debuginfod-client: Now supports compressed (kernel) ELF images. + - libdwfl: Add ZSTD compression support. + * Thu Jun 11 2020 Mark Wielaard - 0.180-1 - New upstream release.