From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark H Weaver Subject: bug#20102: Problem with ld.so RUNPATH on armhf Date: Wed, 08 Apr 2015 11:21:45 -0400 Message-ID: <87bniyy7au.fsf@netris.org> References: <87y4n0ybdd.fsf@netris.org> <87pp7jh7y8.fsf@gnu.org> <87384f5goy.fsf@netris.org> <87oan16m4z.fsf@gnu.org> <87d23hynqe.fsf@netris.org> <87fv8b0wwx.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:37420) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yfrnr-0004Hc-DT for bug-guix@gnu.org; Wed, 08 Apr 2015 11:22:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Yfrnm-0000Hx-Ss for bug-guix@gnu.org; Wed, 08 Apr 2015 11:22:07 -0400 Received: from debbugs.gnu.org ([140.186.70.43]:59544) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yfrnm-0000Hr-Pj for bug-guix@gnu.org; Wed, 08 Apr 2015 11:22:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1Yfrnm-0003Sr-Ag for bug-guix@gnu.org; Wed, 08 Apr 2015 11:22:02 -0400 Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: <87fv8b0wwx.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Wed, 08 Apr 2015 11:52:30 +0200") List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 20102@debbugs.gnu.org ludo@gnu.org (Ludovic Court=C3=A8s) writes: > Mark H Weaver skribis: > > The difference between =E2=80=98glibc-final=E2=80=99 and (@ (gnu packages= base) glibc) > (used to build glibc-utf8-locales) is that the latter is built with > =E2=80=98gcc-final=E2=80=99, and =E2=80=98gcc-final=E2=80=99 always passe= s =E2=80=9C-rpath $libc/lib=E2=80=9D when > linking a shared object, as seen above. > > However, when linking ld.so, -nostdlib is used, so IIUC the =E2=80=9Clib= =E2=80=9D spec > is ignored, so the -rpath flag isn=E2=80=99t passed. > > At least that=E2=80=99s what happens on x86_64: I interrupted the (@ (gnu > packages base) glibc) build on x86_64 and ran the command manually: > > ludo@pluto /tmp/nix-build-glibc-2.21.drv-0/build/elf$ strace -s 345 -f -o= ,,s gcc --verbose -nostdlib -nostartfiles -shared -o /tmp/nix-build-glib= c-2.21.drv-0/build/elf/ld.so.new \ > -Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=3Dboth -Wl,-z,defs \ > /tmp/nix-build-glibc-2.21.drv-0/build/elf/librtld.os -Wl,--version-scr= ipt=3D/tmp/nix-build-glibc-2.21.drv-0/build/ld.map \ > -Wl,-soname=3Dld-linux-x86-64.so.2 \ > -Wl,-defsym=3D_begin=3D0 > >> > > > Using built-in specs. > COLLECT_GCC=3Dgcc > COLLECT_LTO_WRAPPER=3D/gnu/store/4sqgnc9bc1kmn058yp4xnj4vpydmfzpq-gcc-4.8= .4/libexec/gcc/x86_64-unknown-linux-gnu/4.8.4/lto-wrapper > Target: x86_64-unknown-linux-gnu > Configured with:=20 > Thread model: posix > gcc version 4.8.4 (GCC)=20 > COMPILER_PATH=3D/gnu/store/4sqgnc9bc1kmn058yp4xnj4vpydmfzpq-gcc-4.8.4/lib= exec/gcc/x86_64-unknown-linux-gnu/4.8.4/:/gnu/store/4sqgnc9bc1kmn058yp4xnj4= vpydmfzpq-gcc-4.8.4/libexec/gcc/x86_64-unknown-linux-gnu/4.8.4/:/gnu/store/= 4sqgnc9bc1kmn058yp4xnj4vpydmfzpq-gcc-4.8.4/libexec/gcc/x86_64-unknown-linux= -gnu/:/gnu/store/h132igxl2lkj3sbfcbknn2rd493j7d1l-gcc-4.8.4-lib/lib/gcc/x86= _64-unknown-linux-gnu/4.8.4/:/gnu/store/h132igxl2lkj3sbfcbknn2rd493j7d1l-gc= c-4.8.4-lib/lib/gcc/x86_64-unknown-linux-gnu/ > LIBRARY_PATH=3D/gnu/store/xxjla3x9lv9djgszi9g2i7sp3zdh2fhz-perl-5.16.1/li= b/:/gnu/store/zf0lrd865zxwkx30zmmv2s9pm3cbnyq9-bzip2-1.0.6/lib/:/gnu/store/= yc75pismby9n46pimi7l9ifjwmj2ybix-xz-5.0.4/lib/:/gnu/store/ip9ydlmc7kwb1q472= rh8539rkplx8xgl-file-5.22/lib/:/gnu/store/vmlwh55kmsjk7mmrw5qi8n71f02l4w0p-= gawk-4.1.1/lib/:/gnu/store/z9d24s2wkri1z0ix5r7qqyp7zy3dklb4-binutils-2.25/l= ib/:/gnu/store/wiqbxcvzj3r35hd55yxzz919b1dv1hnv-glibc-2.21/lib/:/gnu/store/= 43mpxdd1qwmlsfgnl79jy1zkkx25nz6r-glibc-utf8-locales-2.21/lib/:/gnu/store/h1= 32igxl2lkj3sbfcbknn2rd493j7d1l-gcc-4.8.4-lib/lib/gcc/x86_64-unknown-linux-g= nu/4.8.4/:/gnu/store/h132igxl2lkj3sbfcbknn2rd493j7d1l-gcc-4.8.4-lib/lib/gcc= /x86_64-unknown-linux-gnu/4.8.4/../../../:/gnu/store/wiqbxcvzj3r35hd55yxzz9= 19b1dv1hnv-glibc-2.21/lib > COLLECT_GCC_OPTIONS=3D'-v' '-nostdlib' '-nostartfiles' '-shared' '-o' '/t= mp/nix-build-glibc-2.21.drv-0/build/elf/ld.so.new' '-mtune=3Dgeneric' '-mar= ch=3Dx86-64' > /gnu/store/4sqgnc9bc1kmn058yp4xnj4vpydmfzpq-gcc-4.8.4/libexec/gcc/x86_64= -unknown-linux-gnu/4.8.4/collect2 --eh-frame-hdr -m elf_x86_64 -shared -o /= tmp/nix-build-glibc-2.21.drv-0/build/elf/ld.so.new -L/gnu/store/xxjla3x9lv9= djgszi9g2i7sp3zdh2fhz-perl-5.16.1/lib -L/gnu/store/zf0lrd865zxwkx30zmmv2s9p= m3cbnyq9-bzip2-1.0.6/lib -L/gnu/store/yc75pismby9n46pimi7l9ifjwmj2ybix-xz-5= .0.4/lib -L/gnu/store/ip9ydlmc7kwb1q472rh8539rkplx8xgl-file-5.22/lib -L/gnu= /store/vmlwh55kmsjk7mmrw5qi8n71f02l4w0p-gawk-4.1.1/lib -L/gnu/store/z9d24s2= wkri1z0ix5r7qqyp7zy3dklb4-binutils-2.25/lib -L/gnu/store/wiqbxcvzj3r35hd55y= xzz919b1dv1hnv-glibc-2.21/lib -L/gnu/store/43mpxdd1qwmlsfgnl79jy1zkkx25nz6r= -glibc-utf8-locales-2.21/lib -L/gnu/store/h132igxl2lkj3sbfcbknn2rd493j7d1l-= gcc-4.8.4-lib/lib/gcc/x86_64-unknown-linux-gnu/4.8.4 -L/gnu/store/h132igxl2= lkj3sbfcbknn2rd493j7d1l-gcc-4.8.4-lib/lib/gcc/x86_64-unknown-linux-gnu/4.8.= 4/../../.. -L/gnu/store/wiqbxcvzj3r35hd55yxzz919b1dv1hnv-glibc-2.21/lib -z = combreloc -z relro --hash-style=3Dboth -z defs /tmp/nix-build-glibc-2.21.dr= v-0/build/elf/librtld.os --version-script=3D/tmp/nix-build-glibc-2.21.drv-0= /build/ld.map -soname=3Dld-linux-x86-64.so.2 -defsym=3D_begin=3D0 > > The strace log shows that ld is not passed the -rpath flags that appear > in the =E2=80=9Clib=E2=80=9D spec: > > 13261 execve("/gnu/store/crfqrvj1g3ldyhfqq8wpwqx3sd6qn4k7-ld-wrapper-0/bi= n/ld", ["/gnu/store/crfqrvj1g3ldyhfqq8wpwqx3sd6qn4k7-ld-wrapper-0/bin/ld", = "--eh-frame-hdr", "-m", "elf_x86_64", "-shared", "-o", "/tmp/nix-build-glib= c-2.21.drv-0/build/elf/ld.so.new", "-L/gnu/store/xxjla3x9lv9djgszi9g2i7sp3z= dh2fhz-perl-5.16.1/lib", "-L/gnu/store/zf0lrd865zxwkx30zmmv2s9pm3cbnyq9-bzi= p2-1.0.6/lib", "-L/gnu/store/yc75pismby9n46pimi7l9ifjwmj2ybix-xz-5.0.4/lib"= , "-L/gnu/store/ip9ydlmc7kwb1q472rh8539rkplx8xgl-file-5.22/lib", "-L/gnu/st= ore/vmlwh55kmsjk7mmrw5qi8n71f02l4w0p-gawk-4.1.1/lib", "-L/gnu/store/z9d24s2= wkri1z0ix5r7qqyp7zy3dklb4-binutils-2.25/lib", "-L/gnu/store/wiqbxcvzj3r35hd= 55yxzz919b1dv1hnv-glibc-2.21/lib", "-L/gnu/store/43mpxdd1qwmlsfgnl79jy1zkkx= 25nz6r-glibc-utf8-locales-2.21/lib", "-L/gnu/store/h132igxl2lkj3sbfcbknn2rd= 493j7d1l-gcc-4.8.4-lib/lib/gcc/x86_64-unknown-linux-gnu/4.8.4", "-L/gnu/sto= re/h132igxl2lkj3sbfcbknn2rd493j7d1l-gcc-4.8.4-lib/lib/gcc/x86_64-unknown-li= nux-gnu/4.8.4/../../..", "-L/gnu/store/wiqbxcvzj3r35hd55yxzz919b1dv1hnv-gli= bc-2.21/lib", "-z", "combreloc", "-z", "relro", "--hash-style=3Dboth", "-z"= , "defs", "/tmp/nix-build-glibc-2.21.drv-0/build/elf/librtld.os", "--versio= n-script=3D/tmp/nix-build-glibc-2.21.drv-0/build/ld.map", "-soname=3Dld-lin= ux-x86-64.so.2", "-defsym=3D_begin=3D0"], [/* 73 vars */] > > Could you try the same on armhf? I've done so. Here's the transcript: --8<---------------cut here---------------start------------->8--- mhw@novena:/tmp/nix-build-glibc-2.21.drv-0$ source environment-variables=20 mhw@novena:/tmp/nix-build-glibc-2.21.drv-0/build$ cd /tmp/nix-build-glibc-2= .21.drv-0/build/elf/ mhw@novena:/tmp/nix-build-glibc-2.21.drv-0/build/elf$ /usr/bin/strace -s 34= 5 -f -o ,,s gcc --verbose -nostdlib -nostartfiles -shared -o /tmp/nix-bui= ld-glibc-2.21.drv-0/build/elf/ld.so.new \ -Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=3Dboth -Wl,-z,defs \ /tmp/nix-build-glibc-2.21.drv-0/build/elf/librtld.os -Wl,--version-scrip= t=3D/tmp/nix-build-glibc-2.21.drv-0/build/ld.map \ -Wl,-soname=3Dld-linux-armhf.so.3 \ -Wl,-defsym=3D_begin=3D0 > > > > Using built-in specs. COLLECT_GCC=3Dgcc COLLECT_LTO_WRAPPER=3D/gnu/store/qchkhdj4nn4aqs8rrbbyybrj2sarjs3j-gcc-4.8.4= /libexec/gcc/armv7l-unknown-linux-gnueabihf/4.8.4/lto-wrapper Target: armv7l-unknown-linux-gnueabihf Configured with:=20 Thread model: posix gcc version 4.8.4 (GCC)=20 COMPILER_PATH=3D/gnu/store/qchkhdj4nn4aqs8rrbbyybrj2sarjs3j-gcc-4.8.4/libex= ec/gcc/armv7l-unknown-linux-gnueabihf/4.8.4/:/gnu/store/qchkhdj4nn4aqs8rrbb= yybrj2sarjs3j-gcc-4.8.4/libexec/gcc/armv7l-unknown-linux-gnueabihf/4.8.4/:/= gnu/store/qchkhdj4nn4aqs8rrbbyybrj2sarjs3j-gcc-4.8.4/libexec/gcc/armv7l-unk= nown-linux-gnueabihf/:/gnu/store/fc8kqk3dazn6mcgcjxd931752b2pf3wj-gcc-4.8.4= -lib/lib/gcc/armv7l-unknown-linux-gnueabihf/4.8.4/:/gnu/store/fc8kqk3dazn6m= cgcjxd931752b2pf3wj-gcc-4.8.4-lib/lib/gcc/armv7l-unknown-linux-gnueabihf/ LIBRARY_PATH=3D/gnu/store/84bsc47g2052allrmh4ph6xaqvp6f4cm-perl-5.16.1/lib/= :/gnu/store/lakz7x2m4vqvvfdasn5x95a91rkqqs3c-bzip2-1.0.6/lib/:/gnu/store/mr= b163wwjc45hgrcjwmb6nxp8fgab3lk-xz-5.0.4/lib/:/gnu/store/f1fnh2sp1j32jysdr2n= w9z296iba6b5d-file-5.22/lib/:/gnu/store/l9ji7gc640j2r8c1c561iwcnqpcd585m-ga= wk-4.1.1/lib/:/gnu/store/w7gjnx5rz64mssxndnryazlwlhflfd2j-binutils-2.25/lib= /:/gnu/store/fbdjazgwy3zyx8qc5z4ag0j78k2d7raw-glibc-2.21/lib/:/gnu/store/ps= mxs9gcr9l4arz7agmp94vm8fjwninv-glibc-utf8-locales-2.21/lib/:/gnu/store/fc8k= qk3dazn6mcgcjxd931752b2pf3wj-gcc-4.8.4-lib/lib/gcc/armv7l-unknown-linux-gnu= eabihf/4.8.4/:/gnu/store/fc8kqk3dazn6mcgcjxd931752b2pf3wj-gcc-4.8.4-lib/lib= /gcc/armv7l-unknown-linux-gnueabihf/4.8.4/../../../:/gnu/store/fbdjazgwy3zy= x8qc5z4ag0j78k2d7raw-glibc-2.21/lib COLLECT_GCC_OPTIONS=3D'-v' '-nostdlib' '-nostartfiles' '-shared' '-o' '/tmp= /nix-build-glibc-2.21.drv-0/build/elf/ld.so.new' '-march=3Darmv7-a' '-mfloa= t-abi=3Dhard' '-mfpu=3Dvfpv3-d16' '-mthumb' '-mtls-dialect=3Dgnu' /gnu/store/qchkhdj4nn4aqs8rrbbyybrj2sarjs3j-gcc-4.8.4/libexec/gcc/armv7l-u= nknown-linux-gnueabihf/4.8.4/collect2 --eh-frame-hdr -shared -dynamic-linke= r /gnu/store/fbdjazgwy3zyx8qc5z4ag0j78k2d7raw-glibc-2.21/lib/ld-linux-armhf= .so.3 -X -m armelf_linux_eabi -o /tmp/nix-build-glibc-2.21.drv-0/build/elf/= ld.so.new -L/gnu/store/84bsc47g2052allrmh4ph6xaqvp6f4cm-perl-5.16.1/lib -L/= gnu/store/lakz7x2m4vqvvfdasn5x95a91rkqqs3c-bzip2-1.0.6/lib -L/gnu/store/mrb= 163wwjc45hgrcjwmb6nxp8fgab3lk-xz-5.0.4/lib -L/gnu/store/f1fnh2sp1j32jysdr2n= w9z296iba6b5d-file-5.22/lib -L/gnu/store/l9ji7gc640j2r8c1c561iwcnqpcd585m-g= awk-4.1.1/lib -L/gnu/store/w7gjnx5rz64mssxndnryazlwlhflfd2j-binutils-2.25/l= ib -L/gnu/store/fbdjazgwy3zyx8qc5z4ag0j78k2d7raw-glibc-2.21/lib -L/gnu/stor= e/psmxs9gcr9l4arz7agmp94vm8fjwninv-glibc-utf8-locales-2.21/lib -L/gnu/store= /fc8kqk3dazn6mcgcjxd931752b2pf3wj-gcc-4.8.4-lib/lib/gcc/armv7l-unknown-linu= x-gnueabihf/4.8.4 -L/gnu/store/fc8kqk3dazn6mcgcjxd931752b2pf3wj-gcc-4.8.4-l= ib/lib/gcc/armv7l-unknown-linux-gnueabihf/4.8.4/../../.. -L/gnu/store/fbdja= zgwy3zyx8qc5z4ag0j78k2d7raw-glibc-2.21/lib -z combreloc -z relro --hash-sty= le=3Dboth -z defs /tmp/nix-build-glibc-2.21.drv-0/build/elf/librtld.os --ve= rsion-script=3D/tmp/nix-build-glibc-2.21.drv-0/build/ld.map -soname=3Dld-li= nux-armhf.so.3 -defsym=3D_begin=3D0 mhw@novena:/tmp/nix-build-glibc-2.21.drv-0/build/elf$ --8<---------------cut here---------------end--------------->8--- and here's the corresponding line in the strace log: --8<---------------cut here---------------start------------->8--- 13440 execve("/gnu/store/p70wvylq6xdrlxblnk76k3ljgkrmvpnq-ld-wrapper-0/bin/= ld", ["/gnu/store/p70wvylq6xdrlxblnk76k3ljgkrmvpnq-ld-wrapper-0/bin/ld", "-= -eh-frame-hdr", "-shared", "-dynamic-linker", "/gnu/store/fbdjazgwy3zyx8qc5= z4ag0j78k2d7raw-glibc-2.21/lib/ld-linux-armhf.so.3", "-X", "-m", "armelf_li= nux_eabi", "-o", "/tmp/nix-build-glibc-2.21.drv-0/build/elf/ld.so.new", "-L= /gnu/store/84bsc47g2052allrmh4ph6xaqvp6f4cm-perl-5.16.1/lib", "-L/gnu/store= /lakz7x2m4vqvvfdasn5x95a91rkqqs3c-bzip2-1.0.6/lib", "-L/gnu/store/mrb163wwj= c45hgrcjwmb6nxp8fgab3lk-xz-5.0.4/lib", "-L/gnu/store/f1fnh2sp1j32jysdr2nw9z= 296iba6b5d-file-5.22/lib", "-L/gnu/store/l9ji7gc640j2r8c1c561iwcnqpcd585m-g= awk-4.1.1/lib", "-L/gnu/store/w7gjnx5rz64mssxndnryazlwlhflfd2j-binutils-2.2= 5/lib", "-L/gnu/store/fbdjazgwy3zyx8qc5z4ag0j78k2d7raw-glibc-2.21/lib", "-L= /gnu/store/psmxs9gcr9l4arz7agmp94vm8fjwninv-glibc-utf8-locales-2.21/lib", "= -L/gnu/store/fc8kqk3dazn6mcgcjxd931752b2pf3wj-gcc-4.8.4-lib/lib/gcc/armv7l-= unknown-linux-gnueabihf/4.8.4", "-L/gnu/store/fc8kqk3dazn6mcgcjxd931752b2pf= 3wj-gcc-4.8.4-lib/lib/gcc/armv7l-unknown-linux-gnueabihf/4.8.4/../../..", "= -L/gnu/store/fbdjazgwy3zyx8qc5z4ag0j78k2d7raw-glibc-2.21/lib", "-z", "combr= eloc", "-z", "relro", "--hash-style=3Dboth", "-z", "defs", "/tmp/nix-build-= glibc-2.21.drv-0/build/elf/librtld.os", "--version-script=3D/tmp/nix-build-= glibc-2.21.drv-0/build/ld.map", "-soname=3Dld-linux-armhf.so.3", "-defsym= =3D_begin=3D0"], [/* 55 vars */] --8<---------------cut here---------------end--------------->8--- Thanks! Mark