all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>,
	54728@debbugs.gnu.org
Subject: bug#54728: [PATCH 2/2] gnu: valgrind: fix ld.so symbols not found
Date: Fri, 15 Apr 2022 01:30:12 +0200	[thread overview]
Message-ID: <20220414233012.13243-2-GNUtoo@cyberdimension.org> (raw)
In-Reply-To: <20220414233012.13243-1-GNUtoo@cyberdimension.org>

* gnu/packages/valgrind.scm (valgrind/interactive)[native-inputs]:
  Add libc:debug
  [arguments]: Add patch-default-debuginfo-path phase
* gnu/packages/commencement.scm (glibc-final): Export variable.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
---
 gnu/packages/commencement.scm |  2 +-
 gnu/packages/valgrind.scm     | 66 +++++++++++++++++++++++++++++++----
 2 files changed, 61 insertions(+), 7 deletions(-)

diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index e8b47fbeab..c2de02411c 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -3381,7 +3381,7 @@ (define gettext-boot0
                         (("^PROGRAMS =.*$")
                          "PROGRAMS =\n")))))))))
 
-(define glibc-final
+(define-public glibc-final
   ;; The final glibc, which embeds the statically-linked Bash built above.
   ;; Use 'package/inherit' so we get the 'replacement' of 'glibc', if any.
   (package/inherit
diff --git a/gnu/packages/valgrind.scm b/gnu/packages/valgrind.scm
index 6648f17dfa..a09721071d 100644
--- a/gnu/packages/valgrind.scm
+++ b/gnu/packages/valgrind.scm
@@ -25,8 +25,10 @@
 (define-module (gnu packages valgrind)
   #: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 gdb)
   #:use-module (gnu packages perl))
@@ -91,12 +93,64 @@ (define-public valgrind
     (properties '((hidden? . #t)))))
 
 (define-public valgrind/interactive
-  (package/inherit
-   valgrind
-   (inputs
-    ;; GDB is needed to provide a sane default for `--db-command'.
-    `(("gdb" ,gdb)))
-   (properties '())))
+  (package/inherit valgrind
+    (inputs
+     ;; GDB is needed to provide a sane default for `--db-command'.
+     `(("gdb" ,gdb)
+       ("libc:debug" ,(@@ (gnu packages commencement) glibc-final) "debug")))
+    (arguments
+     (substitute-keyword-arguments (package-arguments valgrind)
+       ((#:phases those-phases #~%standard-phases)
+        #~(let* ((those-phases #$those-phases)
+                 (unpack (assoc-ref those-phases 'unpack)))
+            (modify-phases those-phases
+              (add-before 'build 'patch-default-debuginfo-path
+                (lambda _
+                  ;; 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
+                  (substitute* '
+                    ("coregrind/m_debuginfo/readelf.c"
+                      "docs/xml/manual-core-adv.xml"
+                      "docs/xml/manual-core.xml")
+                    (("/usr/lib/debug")
+                     (string-append
+                       (assoc-ref %build-inputs "libc:debug")
+                       "/lib/debug")))
+                  ;; We also need to account for the bigger path in
+                  ;; the malloc-ed variables
+                  (substitute* '
+                    ("coregrind/m_debuginfo/readelf.c")
+                    (("VG_\\(strlen\\)\\(buildid\\) \\+ 33")
+                      (string-append
+                        "VG_(strlen)(buildid) + "
+                        (number->string
+                         (+ (string-length
+                            (string-append
+                              (assoc-ref %build-inputs "libc:debug")
+                              "/lib/debug"))
+                            (string-length "/.build-id//.debug")
+                            1)))))
+                  (substitute* '
+                    ("coregrind/m_debuginfo/readelf.c")
+                    ((string-append
+                      "VG_\\(strlen\\)\\(objdir\\) \\+ "
+                      "VG_\\(strlen\\)\\(debugname\\) \\+ 64")
+                     (string-append
+                      "VG_(strlen)(objdir) + VG_(strlen)(debugname) + "
+                      (number->string
+                        (+ (string-length
+                            (string-append
+                             (assoc-ref
+                              %build-inputs
+                              "libc:debug")
+                             "/lib/debug"))
+                           (string-length
+                            "/usr/lib/debug")
+                           1)))))
+                  #t)))))))
+    (properties '())))
 
 (define-public valgrind-3.18
   (package
-- 
2.35.1





  reply	other threads:[~2022-04-14 23:30 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-05 15:01 bug#54728: Valgrind not working out of the box due to stripped ld.so Denis 'GNUtoo' Carikli
2022-04-07 16:40 ` Ludovic Courtès
2022-04-14 23:26   ` Denis 'GNUtoo' Carikli
2022-04-14 23:30     ` bug#54728: [PATCH 1/2] gnu: valgrind: impots: sort imports alphabetically Denis 'GNUtoo' Carikli
2022-04-14 23:30       ` Denis 'GNUtoo' Carikli [this message]
2022-04-15 16:21         ` bug#54728: [PATCH 2/2] gnu: valgrind: fix ld.so symbols not found Ludovic Courtès
2022-04-25 16:39           ` Denis 'GNUtoo' Carikli
2022-04-25 17:41             ` Maxime Devos
2022-04-26  1:39               ` Denis 'GNUtoo' Carikli
2022-04-26  1:39                 ` bug#54728: [PATCH v2 1/2] gnu: valgrind: impots: sort imports alphabetically Denis 'GNUtoo' Carikli
2022-04-26  1:39                 ` bug#54728: [PATCH v2 2/2] gnu: valgrind: fix ld.so symbols not found Denis 'GNUtoo' Carikli
2022-04-26 22:37                   ` Denis 'GNUtoo' Carikli
2022-05-06 20:16                     ` Denis 'GNUtoo' Carikli
2022-05-06 20:20                       ` Maxime Devos
2022-05-09  9:24                   ` bug#54728: Valgrind not working out of the box due to stripped ld.so Ludovic Courtès

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=20220414233012.13243-2-GNUtoo@cyberdimension.org \
    --to=gnutoo@cyberdimension.org \
    --cc=54728@debbugs.gnu.org \
    --cc=ludo@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.