[OE-core] [PATCH] glibc: Fix ldd bug: not a dynamic executable error

richard.purdie at linuxfoundation.org richard.purdie at linuxfoundation.org
Wed Aug 22 13:21:04 UTC 2018


On Wed, 2018-08-22 at 15:13 +0200, Ricardo Ribalda Delgado wrote:
> > Here I see:
> > 
> > $ MACHINE=qemux86-64 bitbake glibc -e | grep ^RTLDLIST=
> > RTLDLIST="/lib/ld-linux-x86-64.so.2"
> 
> The output of RTLDLIST that I shared was from
> root at qt5122:~# cat /usr/bin/ldd | grep ^RTLD
> RTLDLIST="/lib/ld-linux.so.2 /lib64/ld-linux-x86-64.so.2
> /libx32/ld-linux-x32.so.2"
> 
> If I run your command
> 
> pokyuser at c10753884d1a:/workdir/build$ bitbake glibc -e | grep
> ^RTLDLIST=
> RTLDLIST=""
> 
> If we look at log.do_compile we can see how the the value from ldd is
> rewritten:
> 
> LC_ALL=C sed -e 's%@RTLD@%/lib/ld-linux-x86-64.so.2%g' -e
> 's%@VERSION@%2.27%g' -e 's|@PKGVERSION@|(GNU libc) |g' -e
> 's|@REPORT_BUGS_TO@|<http://www.gnu.org/software/libc/bugs.html>|g'
> -e
> 's%@BASH@%/bin/bash%g' -e 's%@TEXTDOMAINDIR@%/usr/share/locale%g' <
> ldd.bash.in | LC_ALL=C sed -f
> ../sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed >
> /workdir/build/tmp/work/dbfp4-poky-linux/glibc/2.27-r0/build-x86_64-
> poky-linux/elf/ldd.new
> 
> cat git/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed
> /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 \2\3\4\5\6"_
> 
> which basically converts
> /lib/ld-linux-x86-64.so.2
>  into:
>  /lib/ld-linux.so.2 /lib64/ld-linux-x86-64.so.2 /libx32/ld-linux-
> x32.so.2
> 
> I agree that this bug is too obvious for not being noticed for a long
> time. At least I use ldd a lot when thing fails ;)

If you look at glibc_2.28.bb, it rewrites RTLDLIST if the value passed
in is not empty. Yours is empty, the question is therefore why.

Can you add -C10 to the command and see the variable history, here its:

# $RTLDLIST [2 operations]
#   set /media/build3/poky/meta/recipes-core/glibc/glibc-ld.inc:46
#     "${@glibc_dl_info(d)['lddrewrite']}"
#   override[class-nativesdk]:set /media/build3/poky/meta/recipes-core/glibc/glibc-ld.inc:47
#     "${base_libdir}/${@bb.utils.contains('SDK_ARCH', 'x86_64', 'ld-linux-x86-64.so.2', 'ld-linux.so.2', d)}"
# pre-expansion value:
#   "${@glibc_dl_info(d)['lddrewrite']}"
RTLDLIST="/lib/ld-linux-x86-64.so.2"

Cheers,

Richard



More information about the Openembedded-core mailing list