Subject: Re: bug#20102: Problem with ld.so RUNPATH on armhf

From: [email-masked] (Ludovic Courtès)
Date: Wed, 08 Apr 2015 17:48:09 +0200

Mark H Weaver <[email-masked]> skribis:

> Mark H Weaver <[email-masked]> writes:
>
>> [email-masked] (Ludovic Courtès) writes:
>>
>>> Could you try the same on armhf?
>>
>> I've done so.  Here's the transcript:
>>
>> mhw@novena:/tmp/nix-build-glibc-2.21.drv-0$ source environment-variables 
>> 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 345 -f -o ,,s gcc --verbose   -nostdlib -nostartfiles -shared -o /tmp/nix-build-glibc-2.21.drv-0/build/elf/ld.so.new		\
>> 	  -Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=both -Wl,-z,defs 	\
>> 	  /tmp/nix-build-glibc-2.21.drv-0/build/elf/librtld.os -Wl,--version-script=/tmp/nix-build-glibc-2.21.drv-0/build/ld.map		\
>> 	  -Wl,-soname=ld-linux-armhf.so.3			\
>> 	  -Wl,-defsym=_begin=0
>>> > > > Using built-in specs.
>> COLLECT_GCC=gcc
>> COLLECT_LTO_WRAPPER=/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: 
>> Thread model: posix
>> gcc version 4.8.4 (GCC) 
>> COLLECT_GCC_OPTIONS='-v' '-nostdlib' '-nostartfiles' '-shared' '-o' '/tmp/nix-build-glibc-2.21.drv-0/build/elf/ld.so.new' '-march=armv7-a' '-mfloat-abi=hard' '-mfpu=vfpv3-d16' '-mthumb' '-mtls-dialect=gnu'
>> mhw@novena:/tmp/nix-build-glibc-2.21.drv-0/build/elf$
>
> and I should add this sanity check:
>
> mhw@novena:/tmp/nix-build-glibc-2.21.drv-0/build/elf$ readelf -a ld.so.new | grep RUNPATH
>  0x0000001d (RUNPATH)                    Library runpath: [/gnu/store/fbdjazgwy3zyx8qc5z4ag0j78k2d7raw-glibc-2.21/lib]

So there’s no explicit -rpath, yet it slips through.

In that build directory, can you rm elf/ld*so* and then restart the
build, but this time with:

  export GUIX_LD_WRAPPER_DEBUG=yes

TIA!

Ludo’.