[OE-core] meta-toolchain doesn't compile working binaries

Denys Dmytriyenko denis at denix.org
Tue May 6 20:55:18 UTC 2014


On Tue, May 06, 2014 at 10:14:45AM +0200, Björn Krombholz wrote:
> Hi,
> 
> I'm having trouble building a working toolchain (meta-toolchain) on 
> yocto-1.4 release.
> 
> Buildsystem is x86_64, on current Debian Sid.
> 
> The problem seems to be with ld-linux[...].so, SDKMACHINE doesn't seem to 
> matter (x86_64 and i686 produce broken binaries).
> 
> The effect is, that (almost) every binary in the toolchain segfaults when 
> being run.
> 
> 
> Example m4:
> (in /usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux)
> 
> Host ld:
> $ usr/bin/m4 --help
> Segmentation fault
> 
> Explicitly using the toolchain ld:
> $ lib/ld-linux-x86-64.so.2 usr/bin/m4 --help
> Usage: usr/bin/m4 [OPTION]... [FILE]...
> [...]
> 
> 
> Comparing the build with a toolchain created on Jul 30th 2013 (which works 
> fine) I see one major difference:
> 
> Old (working) toolchain:
> $ ldd m4
>         linux-vdso.so.1 (0x00007fffdae00000)
>         libc.so.6 => /usr/local/oecore-x86_64.old_201307/sysroots/x86_64-angstromsdk-linux/usr/bin/./../../lib/libc.so.6 (0x00007f6a71ed0000)
>         /usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f6a72280000)
> 
> 
> New (broken) toolchain:
> $ ldd m4
>         linux-vdso.so.1 (0x00007fff36e00000)
>         libc.so.6 => /usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/bin/./../../lib/libc.so.6 (0x00007f00e7860000)
>         /lib64/ld-linux-x86-64.so.2 (0x00007f00e7c10000)
> 
> 
> The internal toolchain (from tmp/build/) is working fine, though the ldd output looks similar to the broken built one:
> 
> [...]build/tmp-angstrom_v2013_06-eglibc/sysroots/x86_64-linux/usr/bin$ ldd m4 
>         linux-vdso.so.1 (0x00007fff9fdc8000)                                                                                                                                                                                                                                   
>         libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f481cda8000)                                                                                                                                                                                                      
>         /lib64/ld-linux-x86-64.so.2 (0x00007f481d188000)
> 
> ATM, on Debian Sid /lib64/ld-linux-x86-64.so.2 is just a link 
> /lib64/ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-2.18.so
> 
> I'd appreciate if someone could give me a hint on this matter, or a point me 
> in a direction, where the problem might be. As mentioned I already tried 
> changing the SDKMACHINE and a completely clean build folder with no effect.

Do you know that OE toolchain is not relocatable? The above symptoms are very 
similar to when you try to execute toolchain binaries from a different 
location that the toolchain was built for or installed to. There is a script 
called relocate_sdk.py that adjusts binaries and libraries to work in the 
required location - it's called during install of the SDK. See pages 24-27 of 
my last year ELC presentation about more details on how OE SDK works:

http://elinux.org/images/c/c8/ExternalToolchainsInYocto.pdf

-- 
Denys



More information about the Openembedded-core mailing list