summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-09-15 23:37:32 +0200
committerLudovic Courtès <ludo@gnu.org>2013-09-15 23:37:32 +0200
commit692b93408f9f3ac3e43192fb869de966fa1d1204 (patch)
treebcea42c90755639280b3f85ca24f399e7880f4d1
parent66018f1c338375796a8a2d5130bae5cdb9a48b5f (diff)
downloadguix-692b93408f9f3ac3e43192fb869de966fa1d1204.tar.gz
gnu: glibc: Fix 'ldd' on x86_64.
Reported by Cyril Roelandt at
<https://lists.gnu.org/archive/html/guix-devel/2013-09/msg00136.html>.

* gnu/packages/patches/glibc-ldd-x86_64.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/base.scm (glibc): Use it.
-rw-r--r--gnu-system.am1
-rw-r--r--gnu/packages/base.scm6
-rw-r--r--gnu/packages/patches/glibc-ldd-x86_64.patch10
3 files changed, 15 insertions, 2 deletions
diff --git a/gnu-system.am b/gnu-system.am
index a5000bcdfe..2b81579983 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -201,6 +201,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/glib-tests-homedir.patch			\
   gnu/packages/patches/glib-tests-prlimit.patch			\
   gnu/packages/patches/glibc-bootstrap-system.patch		\
+  gnu/packages/patches/glibc-ldd-x86_64.patch			\
   gnu/packages/patches/glibc-no-ld-so-cache.patch		\
   gnu/packages/patches/gnutls-fix-tests-on-32-bits-system.patch	\
   gnu/packages/patches/grub-gets-undeclared.patch		\
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 3356c078f7..5a32e57535 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -409,7 +409,8 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
 
    (arguments
     `(#:out-of-source? #t
-      #:patches (list (assoc-ref %build-inputs "patch/ld.so.cache"))
+      #:patches (list (assoc-ref %build-inputs "patch/ld.so.cache")
+                      (assoc-ref %build-inputs "patch/ldd"))
       #:configure-flags
       (list "--enable-add-ons"
             "--sysconfdir=/etc"
@@ -422,7 +423,6 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
                            (assoc-ref %outputs "locales")
                            "/share/locale")
 
-
             (string-append "--with-headers="
                            (assoc-ref %build-inputs "linux-headers")
                            "/include")
@@ -496,6 +496,8 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
 
    (inputs `(("patch/ld.so.cache"
               ,(search-patch "glibc-no-ld-so-cache.patch"))
+             ("patch/ldd"
+              ,(search-patch "glibc-ldd-x86_64.patch"))
              ("static-bash" ,(static-package bash-light))))
    (synopsis "The GNU C Library")
    (description
diff --git a/gnu/packages/patches/glibc-ldd-x86_64.patch b/gnu/packages/patches/glibc-ldd-x86_64.patch
new file mode 100644
index 0000000000..b1b6d5a548
--- /dev/null
+++ b/gnu/packages/patches/glibc-ldd-x86_64.patch
@@ -0,0 +1,10 @@
+By default, 'RTDLLIST' in 'ldd' refers to 'lib64/ld-linux-x86-64.so', whereas
+it's in 'lib/' for us.  This patch fixes that.
+
+--- glibc-2.17/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed	2012-12-25 04:02:13.000000000 +0100
++++ glibc-2.17/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed	2013-09-15 23:08:03.000000000 +0200
+@@ -1,3 +1,3 @@
+ /LD_TRACE_LOADED_OBJECTS=1/a\
+ add_env="$add_env LD_LIBRARY_VERSION=\\$verify_out"
+-s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|x32\)\(/[^/]*\)\(-x86-64\|-x32\)\(\.so\.[0-9.]*\)[ 	]*$_\1"\2\4\6 \264\4-x86-64\6 \2x32\4-x32\6"_
++s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|x32\)\(/[^/]*\)\(-x86-64\|-x32\)\(\.so\.[0-9.]*\)[ 	]*$_\1"\2\4\6 \2\4-x86-64\6 \2x32\4-x32\6"_