all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Mark Wielaard <mark@klomp.org>
To: 38803@debbugs.gnu.org
Cc: Mark Wielaard <mark@klomp.org>, Brett Gilio <brettg@gnu.org>
Subject: [bug#38803] [PATCH] gnu: elfutils: Update to 0.178
Date: Sun, 12 Jan 2020 21:39:39 +0100	[thread overview]
Message-ID: <20200112203939.20141-1-mark@klomp.org> (raw)
In-Reply-To: <20191230014101.2425-1-mark@klomp.org>

This introduces debuginfod support which requires a couple of new inputs.

* gnu/local.ml (dist_patch_DATA): Remove elfutils-tests-ptrace.patch.
  Add elfutils-0.178-tests-build-id.patch.
* 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.
  [synopsis]: Updated.
  [description]: Updated.
  [license]: List all licenses used.
* 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.
---

This updated patch adds the licenses list. Updates the synopsis and
description of the package. And adds/removes the patches from gnu/local.ml.

 gnu/local.mk                                  |   2 +-
 gnu/packages/elf.scm                          |  51 ++++--
 .../elfutils-0.178-tests-build-id.patch       | 159 ++++++++++++++++++
 .../patches/elfutils-tests-ptrace.patch       |  64 -------
 4 files changed, 198 insertions(+), 78 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/local.mk b/gnu/local.mk
index 33cf439870..6574d2aa78 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -813,7 +813,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/dstat-skip-devices-without-io.patch	\
   %D%/packages/patches/dvd+rw-tools-add-include.patch 		\
   %D%/packages/patches/einstein-build.patch			\
-  %D%/packages/patches/elfutils-tests-ptrace.patch		\
+  %D%/packages/patches/elfutils-0.178-tests-build-id.patch	\
   %D%/packages/patches/elixir-path-length.patch			\
   %D%/packages/patches/elm-compiler-disable-reactor.patch	\
   %D%/packages/patches/elm-compiler-fix-map-key.patch		\
diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index 75caa54296..9f38c519aa 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.
 ;;;
@@ -27,36 +28,44 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
-  #:use-module ((guix licenses) #:select (gpl3+ lgpl3+ lgpl2.0+))
+  #:use-module ((guix licenses) #:select (gpl2+ gpl3+ lgpl3+ lgpl2.0+ fdl1.3+))
   #: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,
-    ;; and because they duplicate what Binutils provides.
+    ;; and because they duplicate what Binutils provides (but are named
+    ;; differently, using the eu- prefix and can be installed in parallel).
     (outputs '("out"                           ; libelf.so, elfutils/*.h, etc.
-               "bin"))                         ; ld, nm, objdump, etc.
+               "bin"))                         ; eu-nm, eu-objdump, etc.
 
     (arguments
      ;; Programs don't have libelf.so in their RUNPATH and libraries don't
@@ -81,17 +90,33 @@
                (("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")
+    (synopsis "Collection of utilities and libraries to handle ELF files and
+DWARF data")
     (description
-     "This package provides command-line tools to manipulate binaries in the
-Executable and Linkable Format (@dfn{ELF}).  This includes @command{ld},
-@command{ar}, @command{objdump}, @command{addr2line}, and more.")
+     "A collection of utilities and libraries to read, create and modify ELF
+binary files, find and handle DWARF debug data, symbols, thread state and
+stacktraces for processes and core files on GNU/Linux.  Includes libelf for
+manipulating ELF files, libdw for inspecting DWARF data and process state and
+utilities like eu-stack (to show backtraces), eu-nm (for listing symbols from
+object files), eu-size (for listing the section sizes of an object or archive
+file), eu-strip (for discarding symbols), eu-readelf (to see the raw ELF file
+structures), eu-elflint (to check for well-formed ELF files) and
+eu-elfcompress (to compress or decompress ELF sections).")
 
     ;; Libraries are dual-licensed LGPLv3.0+ | GPLv2, and programs are GPLv3+.
-    (license lgpl3+)))
+    ;; Some documentation is under the GFDL1.3+, without invariant texts.
+    (license (list lgpl3+ gpl2+ gpl3+ fdl1.3+))))
 
 (define-public libabigail
   (package
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));
-- 
2.18.1

  parent reply	other threads:[~2020-01-12 20:41 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-30  1:41 [bug#38803] [PATCH] gnu: elfutils: Update to 0.178 Mark Wielaard
2019-12-30  1:44 ` Brett Gilio
2019-12-30  2:04   ` Mark Wielaard
2020-01-12 20:39 ` Mark Wielaard [this message]
2020-01-12 20:54   ` Marius Bakke
2020-01-13  0:03     ` Mark Wielaard
2020-01-13 22:26       ` Marius Bakke
2020-01-31 12:43         ` Mark Wielaard
2020-01-31 15:49           ` Marius Bakke
2020-01-31 16:55             ` Mark Wielaard
2020-02-05 20:41               ` Marius Bakke
2020-02-06 11:04                 ` Mark Wielaard
2020-02-06 11:36                   ` Marius Bakke
2020-02-06 13:23                   ` Mark Wielaard
2020-02-06 14:31                     ` Marius Bakke
2023-09-02 18:39 ` Vagrant Cascadian

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200112203939.20141-1-mark@klomp.org \
    --to=mark@klomp.org \
    --cc=38803@debbugs.gnu.org \
    --cc=brettg@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.