diff mbox series

[bug#38803] gnu: elfutils: Update to 0.178

Message ID 20191230014101.2425-1-mark@klomp.org
State Superseded
Headers show
Series [bug#38803] gnu: elfutils: Update to 0.178 | expand

Checks

Context Check Description
cbaines/applying patch fail View Laminar job

Commit Message

Mark Wielaard Dec. 30, 2019, 1:41 a.m. UTC
This introduces debuginfod support which requires a couple of new inputs.

* gnu/packages/elf.scm (elfutils): Update to 0.178
  [native-inputs]: Add iproute and pkg-config.
  [inputs]: Add cpio, libarchive, libmicrohttpd, libcurl, rpm and sqlite.
* gnu/packages/patches/elfutils-tests-ptrace.patch: Removed. Fixed upstream.
* gnu/packages/patches/elfutils-0.178-tests-build-id.patch: New. Patches
  backported from upstream git.
---
 gnu/packages/elf.scm                          |  26 ++-
 .../elfutils-0.178-tests-build-id.patch       | 159 ++++++++++++++++++
 .../patches/elfutils-tests-ptrace.patch       |  64 -------
 3 files changed, 180 insertions(+), 69 deletions(-)
 create mode 100644 gnu/packages/patches/elfutils-0.178-tests-build-id.patch
 delete mode 100644 gnu/packages/patches/elfutils-tests-ptrace.patch

Comments

Brett Gilio Dec. 30, 2019, 1:44 a.m. UTC | #1
Dec 29, 2019 7:42:34 PM Mark Wielaard :

> This introduces debuginfod support which requires a couple of new inputs.
>
> * gnu/packages/elf.scm (elfutils): Update to 0.178
> [native-inputs]: Add iproute and pkg-config.
> [inputs]: Add cpio, libarchive, libmicrohttpd, libcurl, rpm and sqlite.
> * gnu/packages/patches/elfutils-tests-ptrace.patch: Removed. Fixed upstream.
> * gnu/packages/patches/elfutils-0.178-tests-build-id.patch: New. Patches
> backported from upstream git.
> ---
> gnu/packages/elf.scm | 26 ++-
> .../elfutils-0.178-tests-build-id.patch | 159 ++++++++++++++++++
> .../patches/elfutils-tests-ptrace.patch | 64 -------
> 3 files changed, 180 insertions(+), 69 deletions(-)
> create mode 100644 gnu/packages/patches/elfutils-0.178-tests-build-id.patch
> delete mode 100644 gnu/packages/patches/elfutils-tests-ptrace.patch
>
> diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
> index 75caa54296..169e8d1af8 100644
> --- a/gnu/packages/elf.scm
> +++ b/gnu/packages/elf.scm
> @@ -6,6 +6,7 @@
> ;;; Copyright © 2017 Leo Famulari
> ;;; Copyright © 2018 Tobias Geerinckx-Rice
> ;;; Copyright © 2018 Marius Bakke
> +;;; Copyright © 2019 Mark Wielaard
> ;;;
> ;;; This file is part of GNU Guix.
> ;;;
> @@ -29,28 +30,35 @@
> #:use-module (guix build-system gnu)
> #:use-module ((guix licenses) #:select (gpl3+ lgpl3+ lgpl2.0+))
> #:use-module (gnu packages)
> + #:use-module (gnu packages backup)
> #:use-module (gnu packages compression)
> + #:use-module (gnu packages cpio)
> + #:use-module (gnu packages curl)
> #:use-module (gnu packages documentation)
> #:use-module (gnu packages gcc)
> + #:use-module (gnu packages gnunet) ; for libmicrohttpd
> + #:use-module (gnu packages linux) ; for iproute
> #:use-module (gnu packages m4)
> + #:use-module (gnu packages package-management) ; for rpm
> #:use-module (gnu packages pkg-config)
> #:use-module (gnu packages python)
> #:use-module (gnu packages sphinx)
> + #:use-module (gnu packages sqlite)
> #:use-module (gnu packages texinfo)
> #:use-module (gnu packages xml))
>
> (define-public elfutils
> (package
> (name "elfutils")
> - (version "0.176")
> + (version "0.178")
> (source (origin
> (method url-fetch)
> (uri (string-append "https://sourceware.org/elfutils/ftp/"
> version "/elfutils-" version ".tar.bz2"))
> (sha256
> (base32
> - "08qhrl4g6qqr4ga46jhh78y56a47p3msa5b2x1qhzbxhf71lfmzb"))
> - (patches (search-patches "elfutils-tests-ptrace.patch"))))
> + "1wm0yfcih4rjwbg59qgm4jyqmbsdmk6z5qajljyw9sfljq7a1rri"))
> + (patches (search-patches "elfutils-0.178-tests-build-id.patch"))))
> (build-system gnu-build-system)
>
> ;; Separate programs because that's usually not what elfutils users want,
> @@ -81,8 +89,16 @@
> (("run-backtrace-native.sh") ""))
> #t)))))
>
> - (native-inputs `(("m4" ,m4)))
> - (inputs `(("zlib" ,zlib)))
> + (native-inputs `(("iproute", iproute) ;; needed in tests for ss
> + ("m4", m4)
> + ("pkg-config", pkg-config)))
> + (inputs `(("cpio", cpio)
> + ("libarchive", libarchive)
> + ("libmicrohttpd", libmicrohttpd)
> + ("libcurl", curl)
> + ("rpm", rpm)
> + ("sqlite", sqlite)
> + ("zlib" ,zlib)))
> (home-page "https://sourceware.org/elfutils/")
> (synopsis "Linker and ELF manipulation tools")
> (description
> diff --git a/gnu/packages/patches/elfutils-0.178-tests-build-id.patch b/gnu/packages/patches/elfutils-0.178-tests-build-id.patch
> new file mode 100644
> index 0000000000..ca9bd480b8
> --- /dev/null
> +++ b/gnu/packages/patches/elfutils-0.178-tests-build-id.patch
> @@ -0,0 +1,159 @@
> +commit 3f445279b60b16b6cb062921b74ae400344b4a68
> +Author: Mark Wielaard
> +Date: Thu Dec 5 14:22:56 2019 +0100
> +
> + tests: Run elfcompress under testrun in run-elfclassify.sh
> +
> + Otherwise elfcompress might run against the system libelf which might
> + be too old or missing.
> +
> + Signed-off-by: Mark Wielaard
> +
> +diff --git a/tests/run-elfclassify.sh b/tests/run-elfclassify.sh
> +index 5a849bbd..fb14139d 100755
> +--- a/tests/run-elfclassify.sh
> ++++ b/tests/run-elfclassify.sh
> +@@ -267,7 +267,7 @@ $(echo $kmod_files | sed -e "s/ /\n/g")
> + EOF
> +
> + echo "gnu compressed kmods are unstripped"
> +-${abs_top_builddir}/src/elfcompress -t gnu --force $kmod_files
> ++testrun ${abs_top_builddir}/src/elfcompress -t gnu --force $kmod_files
> + testrun ${abs_top_builddir}/src/elfclassify --unstripped $kmod_files
> + testrun_compare ${abs_top_builddir}/src/elfclassify --unstripped --print $kmod_files <
> + $(echo $kmod_files | sed -e "s/ /\n/g")
> +@@ -312,7 +312,7 @@ $(echo $debug_files | sed -e "s/ /\n/g")
> + EOF
> +
> + echo "compress the debug sections and try again"
> +-${abs_top_builddir}/src/elfcompress -t gnu --force $debug_files
> ++testrun ${abs_top_builddir}/src/elfcompress -t gnu --force $debug_files
> +
> + echo "again unstripped"
> + testrun ${abs_top_builddir}/src/elfclassify --unstripped $debug_files
> +
> +commit eaffa79d52da7454044be53d28b525cebdb0093b
> +Author: Mark Wielaard
> +Date: Fri Dec 6 15:48:00 2019 +0100
> +
> + tests: Run strip under testrun in run-debuginfod-find.sh
> +
> + Otherwise strip might run against the system libelf which might be too
> + old or missing.
> +
> + Signed-off-by: Mark Wielaard
> +
> +diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh
> +index 0ade03b7..6f92fbf1 100755
> +--- a/tests/run-debuginfod-find.sh
> ++++ b/tests/run-debuginfod-find.sh
> +@@ -102,7 +102,7 @@ export DEBUGINFOD_TIMEOUT=10
> + echo "int main() { return 0; }" > ${PWD}/prog.c
> + tempfiles prog.c
> + gcc -g -o prog ${PWD}/prog.c
> +- ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
> ++testrun ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
> + BUILDID=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
> + -a prog | grep 'Build ID' | cut -d ' ' -f 7`
> +
> +
> +commit cf1b5fe170fa24f32871ef284ff2968c73816f98
> +Author: Mark Wielaard
> +Date: Fri Dec 6 17:20:00 2019 +0100
> +
> + Make sure to always build with build-ids.
> +
> + We really need build-ids for various things. If the system compiler
> + doesn't generate build-ids warn and generate them anyway for both the
> + binaries and the tests.
> +
> + Signed-off-by: Mark Wielaard
> +
> +diff --git a/configure.ac b/configure.ac
> +index 5a2dc373..36a6b6c2 100644
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -197,6 +197,15 @@ if test "$ac_cv_zdefs" = "yes"; then
> + dso_LDFLAGS="$dso_LDFLAGS $ZDEFS_LDFLAGS"
> + fi
> +
> ++# We really want build-ids. Warn and force generating them if gcc was
> ++# configure without --enable-linker-build-id
> ++AC_CACHE_CHECK([whether the compiler generates build-ids], ac_cv_buildid, [dnl
> ++AC_LINK_IFELSE([AC_LANG_PROGRAM()],[ac_cv_buildid=yes; readelf -n conftest$EXEEXT | grep -q NT_GNU_BUILD_ID || ac_cv_buildid=no],AC_MSG_FAILURE([unexpected compile failure]))])
> ++if test "$ac_cv_buildid" = "no"; then
> ++ AC_MSG_WARN([compiler doesn't generate build-id by default])
> ++ LDFLAGS="$LDFLAGS -Wl,--build-id"
> ++fi
> ++
> + ZRELRO_LDFLAGS="-Wl,-z,relro"
> + AC_CACHE_CHECK([whether gcc supports $ZRELRO_LDFLAGS], ac_cv_zrelro, [dnl
> + save_LDFLAGS="$LDFLAGS"
> +diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh
> +index 6f92fbf1..6533996a 100755
> +--- a/tests/run-debuginfod-find.sh
> ++++ b/tests/run-debuginfod-find.sh
> +@@ -101,7 +101,7 @@ export DEBUGINFOD_TIMEOUT=10
> + # cannot find it without debuginfod.
> + echo "int main() { return 0; }" > ${PWD}/prog.c
> + tempfiles prog.c
> +-gcc -g -o prog ${PWD}/prog.c
> ++gcc -Wl,--build-id -g -o prog ${PWD}/prog.c
> + testrun ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
> + BUILDID=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
> + -a prog | grep 'Build ID' | cut -d ' ' -f 7`
> +@@ -138,7 +138,7 @@ cmp $filename ${PWD}/prog.c
> + # Build another, non-stripped binary
> + echo "int main() { return 0; }" > ${PWD}/prog2.c
> + tempfiles prog2.c
> +-gcc -g -o prog2 ${PWD}/prog2.c
> ++gcc -Wl,--build-id -g -o prog2 ${PWD}/prog2.c
> + BUILDID2=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
> + -a prog2 | grep 'Build ID' | cut -d ' ' -f 7`
> +
> +--- a/configure 1970-01-01 01:00:00.000000000 +0100
> ++++ b/configure 2019-12-11 14:18:11.812008097 +0100
> +@@ -5325,6 +5325,43 @@
> + dso_LDFLAGS="$dso_LDFLAGS $ZDEFS_LDFLAGS"
> + fi
> +
> ++# We really want build-ids. Warn and force generating them if gcc was
> ++# configure without --enable-linker-build-id
> ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler generates build-ids" >&5
> ++$as_echo_n "checking whether the compiler generates build-ids... " >&6; }
> ++if ${ac_cv_buildid+:} false; then :
> ++ $as_echo_n "(cached) " >&6
> ++else
> ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> ++/* end confdefs.h. */
> ++
> ++int
> ++main ()
> ++{
> ++
> ++ ;
> ++ return 0;
> ++}
> ++_ACEOF
> ++if ac_fn_c_try_link "$LINENO"; then :
> ++ ac_cv_buildid=yes; readelf -n conftest$EXEEXT | grep -q NT_GNU_BUILD_ID || ac_cv_buildid=no
> ++else
> ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
> ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
> ++as_fn_error $? "unexpected compile failure
> ++See \`config.log' for more details" "$LINENO" 5; }
> ++fi
> ++rm -f core conftest.err conftest.$ac_objext \
> ++ conftest$ac_exeext conftest.$ac_ext
> ++fi
> ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_buildid" >&5
> ++$as_echo "$ac_cv_buildid" >&6; }
> ++if test "$ac_cv_buildid" = "no"; then
> ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: compiler doesn't generate build-id by default" >&5
> ++$as_echo "$as_me: WARNING: compiler doesn't generate build-id by default" >&2;}
> ++ LDFLAGS="$LDFLAGS -Wl,--build-id"
> ++fi
> ++
> + ZRELRO_LDFLAGS="-Wl,-z,relro"
> + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gcc supports $ZRELRO_LDFLAGS" >&5
> + $as_echo_n "checking whether gcc supports $ZRELRO_LDFLAGS... " >&6; }
> diff --git a/gnu/packages/patches/elfutils-tests-ptrace.patch b/gnu/packages/patches/elfutils-tests-ptrace.patch
> deleted file mode 100644
> index cd46999063..0000000000
> --- a/gnu/packages/patches/elfutils-tests-ptrace.patch
> +++ /dev/null
> @@ -1,64 +0,0 @@
> -This patch allows us to skip tests that require PTRACE_ATTACH in situations
> -where PTRACE_ATTACH is only allowed when CAP_SYS_PTRACE is held (i.e., for
> -root, by default.)
> -
> -Reported at .
> -
> ---- elfutils-0.161/tests/run-deleted.sh 2015-04-11 16:38:33.028556235 +0200
> -+++ elfutils-0.161/tests/run-deleted.sh 2015-04-11 16:46:15.012442185 +0200
> -@@ -17,6 +17,15 @@
> -
> - . $srcdir/backtrace-subr.sh
> -
> -+# Check whether the Yama policy allows us to use PTRACE_ATTACH.
> -+if [ -f /proc/sys/kernel/yama/ptrace_scope ]
> -+then
> -+ if [ `cat /proc/sys/kernel/yama/ptrace_scope` -ne 0 ]
> -+ then
> -+ exit 77
> -+ fi
> -+fi
> -+
> - tempfiles deleted deleted-lib.so
> - cp -p ${abs_builddir}/deleted ${abs_builddir}/deleted-lib.so .
> -
> ---- elfutils-0.161/tests/vdsosyms.c 2015-04-11 16:40:20.633461110 +0200
> -+++ elfutils-0.161/tests/vdsosyms.c 2015-04-11 16:45:06.611866677 +0200
> -@@ -23,6 +23,8 @@
> - #include
> - #include
> - #include
> -+#include
> -+#include
> - #include
> - #include ELFUTILS_HEADER(dwfl)
> -
> -@@ -68,6 +70,7 @@ module_callback (Dwfl_Module *mod, void
> - int
> - main (int argc __attribute__ ((unused)), char **argv __attribute__ ((unused)))
> - {
> -+ static const char ptrace_scope_file[] = "/proc/sys/kernel/yama/ptrace_scope";
> - static char *debuginfo_path;
> - static const Dwfl_Callbacks proc_callbacks =
> - {
> -@@ -76,6 +79,20 @@ main (int argc __attribute__ ((unused)),
> -
> - .find_elf = dwfl_linux_proc_find_elf,
> - };
> -+
> -+ /* Check whether the Yama policy allows us to use PTRACE_ATTACH. */
> -+ int ptrace_scope = open (ptrace_scope_file, O_RDONLY);
> -+ if (ptrace_scope >= 0)
> -+ {
> -+ char buf[10];
> -+ int count = read (ptrace_scope, buf, sizeof buf);
> -+ assert (count > 0);
> -+ if (buf[0] != '0')
> -+ /* We're not allowed, so skip this test. */
> -+ return 77;
> -+ close (ptrace_scope);
> -+ }
> -+
> - Dwfl *dwfl = dwfl_begin (&proc_callbacks);
> - if (dwfl == NULL)
> - error (2, 0, "dwfl_begin: %s", dwfl_errmsg (-1));
> --
> 2.20.1
>


Hi Mark! Funny you submitted this, I was working on the same package about an hour ago. We must be reading each other's minds. You got significantly farther than I did. One thing I did do differently was that I extended the list of licenses to include the ones mentioned in the comment.

I'll look at your patch, and hopefully this will be ready for core-updates. Thank you :)
Mark Wielaard Dec. 30, 2019, 2:04 a.m. UTC | #2
Hi Brett,

On Mon, Dec 30, 2019 at 01:44:21AM +0000, Brett Gilio wrote:
> Funny you submitted this, I was working on the same package
> about an hour ago. We must be reading each other's minds. You got
> significantly farther than I did.

Thanks for looking at it. This is my first guix patch, so please be
gentle. I do maintain elfutils upstream, so I did have a little
advantage picking some upstream patches which hadn't gone into the
release yet.

> One thing I did do differently was that I extended the list of
> licenses to include the ones mentioned in the comment.  I'll look at
> your patch, and hopefully this will be ready for core-updates. Thank
> you :)

Good you mention the licenses. I forgot to update them licenses. 0.178
introduces some new documentation (man pages), one of them is under
the GFDL (without invariant sections).

Also I am not sure how precisely we should mention the dual
gplv2+/lgplv3+ license for the "out" output libraries and the gplv3+
license for the "bin" output (and where the gfdl should be added).

Thanks,

Mark
Vagrant Cascadian Sept. 2, 2023, 6:39 p.m. UTC | #3
retitle 38803 gnu: elfutils: Enable debuginfod
thanks

On 2019-12-30, Mark Wielaard wrote:
> This introduces debuginfod support which requires a couple of new inputs.
>
> * gnu/packages/elf.scm (elfutils): Update to 0.178

Newer versions of elfutils have been included:

1a97959b22668af999ebc79c3ddc1664420eadd4 gnu: elfutils: Update to 0.187.

The outstanding issue from this bug is to enable the debuginfod server,
which is referred to in the comments for the current elfutils
package. Retitled appropriately.

live well,
  vagrant
diff mbox series

Patch

diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index 75caa54296..169e8d1af8 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -6,6 +6,7 @@ 
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2019 Mark Wielaard <mark@klomp.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,28 +30,35 @@ 
   #:use-module (guix build-system gnu)
   #:use-module ((guix licenses) #:select (gpl3+ lgpl3+ lgpl2.0+))
   #:use-module (gnu packages)
+  #:use-module (gnu packages backup)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cpio)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages gnunet) ; for libmicrohttpd
+  #:use-module (gnu packages linux)  ; for iproute
   #:use-module (gnu packages m4)
+  #:use-module (gnu packages package-management) ; for rpm
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages sphinx)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages xml))
 
 (define-public elfutils
   (package
     (name "elfutils")
-    (version "0.176")
+    (version "0.178")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://sourceware.org/elfutils/ftp/"
                                   version "/elfutils-" version ".tar.bz2"))
               (sha256
                (base32
-                "08qhrl4g6qqr4ga46jhh78y56a47p3msa5b2x1qhzbxhf71lfmzb"))
-              (patches (search-patches "elfutils-tests-ptrace.patch"))))
+                "1wm0yfcih4rjwbg59qgm4jyqmbsdmk6z5qajljyw9sfljq7a1rri"))
+              (patches (search-patches "elfutils-0.178-tests-build-id.patch"))))
     (build-system gnu-build-system)
 
     ;; Separate programs because that's usually not what elfutils users want,
@@ -81,8 +89,16 @@ 
                (("run-backtrace-native.sh") ""))
              #t)))))
 
-    (native-inputs `(("m4" ,m4)))
-    (inputs `(("zlib" ,zlib)))
+    (native-inputs `(("iproute", iproute) ;; needed in tests for ss
+                     ("m4", m4)
+                     ("pkg-config", pkg-config)))
+    (inputs `(("cpio", cpio)
+              ("libarchive", libarchive)
+              ("libmicrohttpd", libmicrohttpd)
+              ("libcurl", curl)
+              ("rpm", rpm)
+              ("sqlite", sqlite)
+              ("zlib" ,zlib)))
     (home-page "https://sourceware.org/elfutils/")
     (synopsis "Linker and ELF manipulation tools")
     (description
diff --git a/gnu/packages/patches/elfutils-0.178-tests-build-id.patch b/gnu/packages/patches/elfutils-0.178-tests-build-id.patch
new file mode 100644
index 0000000000..ca9bd480b8
--- /dev/null
+++ b/gnu/packages/patches/elfutils-0.178-tests-build-id.patch
@@ -0,0 +1,159 @@ 
+commit 3f445279b60b16b6cb062921b74ae400344b4a68
+Author: Mark Wielaard <mark@klomp.org>
+Date:   Thu Dec 5 14:22:56 2019 +0100
+
+    tests: Run elfcompress under testrun in run-elfclassify.sh
+    
+    Otherwise elfcompress might run against the system libelf which might
+    be too old or missing.
+    
+    Signed-off-by: Mark Wielaard <mark@klomp.org>
+
+diff --git a/tests/run-elfclassify.sh b/tests/run-elfclassify.sh
+index 5a849bbd..fb14139d 100755
+--- a/tests/run-elfclassify.sh
++++ b/tests/run-elfclassify.sh
+@@ -267,7 +267,7 @@ $(echo $kmod_files | sed -e "s/ /\n/g")
+ EOF
+ 
+ echo "gnu compressed kmods are unstripped"
+-${abs_top_builddir}/src/elfcompress -t gnu --force $kmod_files
++testrun ${abs_top_builddir}/src/elfcompress -t gnu --force $kmod_files
+ testrun ${abs_top_builddir}/src/elfclassify --unstripped $kmod_files
+ testrun_compare ${abs_top_builddir}/src/elfclassify --unstripped --print $kmod_files <<EOF
+ $(echo $kmod_files | sed -e "s/ /\n/g")
+@@ -312,7 +312,7 @@ $(echo $debug_files | sed -e "s/ /\n/g")
+ EOF
+ 
+ echo "compress the debug sections and try again"
+-${abs_top_builddir}/src/elfcompress -t gnu --force $debug_files
++testrun ${abs_top_builddir}/src/elfcompress -t gnu --force $debug_files
+ 
+ echo "again unstripped"
+ testrun ${abs_top_builddir}/src/elfclassify --unstripped $debug_files
+
+commit eaffa79d52da7454044be53d28b525cebdb0093b
+Author: Mark Wielaard <mark@klomp.org>
+Date:   Fri Dec 6 15:48:00 2019 +0100
+
+    tests: Run strip under testrun in run-debuginfod-find.sh
+    
+    Otherwise strip might run against the system libelf which might be too
+    old or missing.
+    
+    Signed-off-by: Mark Wielaard <mark@klomp.org>
+
+diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh
+index 0ade03b7..6f92fbf1 100755
+--- a/tests/run-debuginfod-find.sh
++++ b/tests/run-debuginfod-find.sh
+@@ -102,7 +102,7 @@ export DEBUGINFOD_TIMEOUT=10
+ echo "int main() { return 0; }" > ${PWD}/prog.c
+ tempfiles prog.c
+ gcc -g -o prog ${PWD}/prog.c
+- ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
++testrun ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
+ BUILDID=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
+           -a prog | grep 'Build ID' | cut -d ' ' -f 7`
+ 
+
+commit cf1b5fe170fa24f32871ef284ff2968c73816f98
+Author: Mark Wielaard <mark@klomp.org>
+Date:   Fri Dec 6 17:20:00 2019 +0100
+
+    Make sure to always build with build-ids.
+    
+    We really need build-ids for various things.  If the system compiler
+    doesn't generate build-ids warn and generate them anyway for both the
+    binaries and the tests.
+    
+    Signed-off-by: Mark Wielaard <mark@klomp.org>
+
+diff --git a/configure.ac b/configure.ac
+index 5a2dc373..36a6b6c2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -197,6 +197,15 @@ if test "$ac_cv_zdefs" = "yes"; then
+ 	dso_LDFLAGS="$dso_LDFLAGS $ZDEFS_LDFLAGS"
+ fi
+ 
++# We really want build-ids. Warn and force generating them if gcc was
++# configure without --enable-linker-build-id
++AC_CACHE_CHECK([whether the compiler generates build-ids], ac_cv_buildid, [dnl
++AC_LINK_IFELSE([AC_LANG_PROGRAM()],[ac_cv_buildid=yes; readelf -n conftest$EXEEXT | grep -q NT_GNU_BUILD_ID || ac_cv_buildid=no],AC_MSG_FAILURE([unexpected compile failure]))])
++if test "$ac_cv_buildid" = "no"; then
++	AC_MSG_WARN([compiler doesn't generate build-id by default])
++	LDFLAGS="$LDFLAGS -Wl,--build-id"
++fi
++
+ ZRELRO_LDFLAGS="-Wl,-z,relro"
+ AC_CACHE_CHECK([whether gcc supports $ZRELRO_LDFLAGS], ac_cv_zrelro, [dnl
+ save_LDFLAGS="$LDFLAGS"
+diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh
+index 6f92fbf1..6533996a 100755
+--- a/tests/run-debuginfod-find.sh
++++ b/tests/run-debuginfod-find.sh
+@@ -101,7 +101,7 @@ export DEBUGINFOD_TIMEOUT=10
+ # cannot find it without debuginfod.
+ echo "int main() { return 0; }" > ${PWD}/prog.c
+ tempfiles prog.c
+-gcc -g -o prog ${PWD}/prog.c
++gcc -Wl,--build-id -g -o prog ${PWD}/prog.c
+ testrun ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
+ BUILDID=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
+           -a prog | grep 'Build ID' | cut -d ' ' -f 7`
+@@ -138,7 +138,7 @@ cmp $filename  ${PWD}/prog.c
+ # Build another, non-stripped binary
+ echo "int main() { return 0; }" > ${PWD}/prog2.c
+ tempfiles prog2.c
+-gcc -g -o prog2 ${PWD}/prog2.c
++gcc -Wl,--build-id -g -o prog2 ${PWD}/prog2.c
+ BUILDID2=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
+           -a prog2 | grep 'Build ID' | cut -d ' ' -f 7`
+ 
+--- a/configure	1970-01-01 01:00:00.000000000 +0100
++++ b/configure	2019-12-11 14:18:11.812008097 +0100
+@@ -5325,6 +5325,43 @@
+ 	dso_LDFLAGS="$dso_LDFLAGS $ZDEFS_LDFLAGS"
+ fi
+ 
++# We really want build-ids. Warn and force generating them if gcc was
++# configure without --enable-linker-build-id
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler generates build-ids" >&5
++$as_echo_n "checking whether the compiler generates build-ids... " >&6; }
++if ${ac_cv_buildid+:} false; then :
++  $as_echo_n "(cached) " >&6
++else
++  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++
++int
++main ()
++{
++
++  ;
++  return 0;
++}
++_ACEOF
++if ac_fn_c_try_link "$LINENO"; then :
++  ac_cv_buildid=yes; readelf -n conftest$EXEEXT | grep -q NT_GNU_BUILD_ID || ac_cv_buildid=no
++else
++  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++as_fn_error $? "unexpected compile failure
++See \`config.log' for more details" "$LINENO" 5; }
++fi
++rm -f core conftest.err conftest.$ac_objext \
++    conftest$ac_exeext conftest.$ac_ext
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_buildid" >&5
++$as_echo "$ac_cv_buildid" >&6; }
++if test "$ac_cv_buildid" = "no"; then
++	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: compiler doesn't generate build-id by default" >&5
++$as_echo "$as_me: WARNING: compiler doesn't generate build-id by default" >&2;}
++	LDFLAGS="$LDFLAGS -Wl,--build-id"
++fi
++
+ ZRELRO_LDFLAGS="-Wl,-z,relro"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gcc supports $ZRELRO_LDFLAGS" >&5
+ $as_echo_n "checking whether gcc supports $ZRELRO_LDFLAGS... " >&6; }
diff --git a/gnu/packages/patches/elfutils-tests-ptrace.patch b/gnu/packages/patches/elfutils-tests-ptrace.patch
deleted file mode 100644
index cd46999063..0000000000
--- a/gnu/packages/patches/elfutils-tests-ptrace.patch
+++ /dev/null
@@ -1,64 +0,0 @@ 
-This patch allows us to skip tests that require PTRACE_ATTACH in situations
-where PTRACE_ATTACH is only allowed when CAP_SYS_PTRACE is held (i.e., for
-root, by default.)
-
-Reported at <https://bugzilla.redhat.com/show_bug.cgi?id=1210966>.
-
---- elfutils-0.161/tests/run-deleted.sh	2015-04-11 16:38:33.028556235 +0200
-+++ elfutils-0.161/tests/run-deleted.sh	2015-04-11 16:46:15.012442185 +0200
-@@ -17,6 +17,15 @@
- 
- . $srcdir/backtrace-subr.sh
- 
-+# Check whether the Yama policy allows us to use PTRACE_ATTACH.
-+if [ -f /proc/sys/kernel/yama/ptrace_scope ]
-+then
-+    if [ `cat /proc/sys/kernel/yama/ptrace_scope` -ne 0 ]
-+    then
-+	exit 77
-+    fi
-+fi
-+
- tempfiles deleted deleted-lib.so
- cp -p ${abs_builddir}/deleted ${abs_builddir}/deleted-lib.so .
- 
---- elfutils-0.161/tests/vdsosyms.c	2015-04-11 16:40:20.633461110 +0200
-+++ elfutils-0.161/tests/vdsosyms.c	2015-04-11 16:45:06.611866677 +0200
-@@ -23,6 +23,8 @@
- #include <stdio.h>
- #include <string.h>
- #include <sys/types.h>
-+#include <sys/stat.h>
-+#include <fcntl.h>
- #include <unistd.h>
- #include ELFUTILS_HEADER(dwfl)
- 
-@@ -68,6 +70,7 @@ module_callback (Dwfl_Module *mod, void
- int
- main (int argc __attribute__ ((unused)), char **argv __attribute__ ((unused)))
- {
-+  static const char ptrace_scope_file[] = "/proc/sys/kernel/yama/ptrace_scope";
-   static char *debuginfo_path;
-   static const Dwfl_Callbacks proc_callbacks =
-     {
-@@ -76,6 +79,20 @@ main (int argc __attribute__ ((unused)),
- 
-       .find_elf = dwfl_linux_proc_find_elf,
-     };
-+
-+  /* Check whether the Yama policy allows us to use PTRACE_ATTACH.  */
-+  int ptrace_scope = open (ptrace_scope_file, O_RDONLY);
-+  if (ptrace_scope >= 0)
-+    {
-+      char buf[10];
-+      int count = read (ptrace_scope, buf, sizeof buf);
-+      assert (count > 0);
-+      if (buf[0] != '0')
-+	/* We're not allowed, so skip this test.  */
-+	return 77;
-+      close (ptrace_scope);
-+    }
-+
-   Dwfl *dwfl = dwfl_begin (&proc_callbacks);
-   if (dwfl == NULL)
-     error (2, 0, "dwfl_begin: %s", dwfl_errmsg (-1));