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

Ricardo Ribalda Delgado ricardo.ribalda at gmail.com
Wed Aug 22 13:33:34 UTC 2018


Hello
On Wed, Aug 22, 2018 at 3:28 PM Ricardo Ribalda Delgado
<ricardo.ribalda at gmail.com> wrote:
>
> On Wed, Aug 22, 2018 at 3:21 PM <richard.purdie at linuxfoundation.org> wrote:
> >
> > 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"
> >
>
>
> # $RTLDLIST [2 operations]
> #   set /workdir/repo/poky/meta/recipes-core/glibc/glibc-ld.inc:46
> #     "${@glibc_dl_info(d)['lddrewrite']}"
> #   override[class-nativesdk]:set
> /workdir/repo/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=""
> #
>
> # $RTLDLIST_class-nativesdk
> #   set /workdir/repo/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)}"
> RTLDLIST_class-nativesdk="/lib/ld-linux-x86-64.so.2"
>
>
> I have just upgraded my work build to 19.0.1 / 2.5.1 Let me build ldd
> again to see if the problem still persists

19.0.1 gives the same results as 19.0.0


RTLDLIST="/lib/ld-linux.so.2 /lib64/ld-linux-x86-64.so.2
/libx32/ld-linux-x32.so.


> > Cheers,
> >
> > Richard
>
>
>
> --
> Ricardo Ribalda



-- 
Ricardo Ribalda



More information about the Openembedded-core mailing list