summary refs log tree commit diff
path: root/gnu/packages/valgrind.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/valgrind.scm')
-rw-r--r--gnu/packages/valgrind.scm67
1 files changed, 59 insertions, 8 deletions
diff --git a/gnu/packages/valgrind.scm b/gnu/packages/valgrind.scm
index 1cdc0f3b71..63524d59e9 100644
--- a/gnu/packages/valgrind.scm
+++ b/gnu/packages/valgrind.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2016, 2020, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2022 Denis Carikli <GNUtoo@cyberdimension.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,13 +23,16 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages valgrind)
-  #:use-module (guix packages)
-  #:use-module (guix download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix licenses)
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages gdb)
-  #:use-module (gnu packages perl)
-  #:use-module (gnu packages))
+  #:use-module (gnu packages perl))
 
 (define-public valgrind
   (package
@@ -92,9 +96,57 @@ also use Valgrind to build new tools.")
 (define-public valgrind/interactive
   (package/inherit
    valgrind
+   (version "3.17.0")
+   (source (origin
+             (method url-fetch)
+             (uri (list (string-append "https://sourceware.org/pub/valgrind"
+                                       "/valgrind-" version ".tar.bz2")
+                        (string-append "ftp://sourceware.org/pub/valgrind"
+                                       "/valgrind-" version ".tar.bz2")))
+             (sha256
+              (base32
+               "18l5jbk301j3462gipqn9bkfx44mdmwn0pwr73r40gl1irkfqfmd"))
+             (patches (search-patches
+                       "valgrind-enable-arm.patch"
+                       "valgrind-fix-default-debuginfo-path.patch"))))
    (inputs
     ;; GDB is needed to provide a sane default for `--db-command'.
-    `(("gdb" ,gdb)))
+    (list gdb `(,(canonical-package glibc) "debug")))
+   (arguments
+    (substitute-keyword-arguments (package-arguments valgrind)
+      ((#:phases phases #~%standard-phases)
+       #~(modify-phases #$phases
+           (add-before 'configure 'patch-default-debuginfo-path
+             (lambda* (#:key inputs #:allow-other-keys)
+               ;; This helps Valgrind find the debug symbols of ld.so.
+               ;; Without it, Valgrind does not work in a Guix shell
+               ;; container and cannot be used as-is during packages tests
+               ;; phases.
+               ;; TODO: Remove on the next rebuild cycle, when libc is not
+               ;; longer fully stripped.
+               (define libc-debug
+                 (string-append (ungexp (this-package-input "glibc") "debug")
+                                "/lib/debug"))
+
+               (substitute* '("coregrind/m_debuginfo/readelf.c"
+                              "docs/xml/manual-core-adv.xml"
+                              "docs/xml/manual-core.xml")
+                 (("DEFAULT_DEBUGINFO_PATH")
+                  libc-debug))
+               ;; We also need to account for the bigger path in
+               ;; the malloc-ed variables.
+               (substitute* '("coregrind/m_debuginfo/readelf.c")
+                 (("DEBUGPATH_EXTRA_BYTES_1")
+                  (number->string
+                   (+ (string-length libc-debug)
+                      (string-length "/.build-id//.debug")
+                      1))))
+               (substitute* '("coregrind/m_debuginfo/readelf.c")
+                 (("DEBUGPATH_EXTRA_BYTES_2")
+                  (number->string
+                   (+ (string-length libc-debug)
+                      (string-length "/usr/lib/debug")
+                      1))))))))))
    (properties '())))
 
 (define-public valgrind-3.18
@@ -102,12 +154,11 @@ also use Valgrind to build new tools.")
     (inherit valgrind/interactive)
     (version "3.18.1")
     (source (origin
-              (method url-fetch)
+              (inherit (package-source valgrind/interactive))
               (uri (list (string-append "https://sourceware.org/pub/valgrind"
                                         "/valgrind-" version ".tar.bz2")
                          (string-append "ftp://sourceware.org/pub/valgrind"
                                         "/valgrind-" version ".tar.bz2")))
               (sha256
                (base32
-                "1xgph509i6adv9w2glviw3xrmlz0dssg8992hbvxsbkp7ahrm180"))
-              (patches (search-patches "valgrind-enable-arm.patch"))))))
+                "1xgph509i6adv9w2glviw3xrmlz0dssg8992hbvxsbkp7ahrm180"))))))