Bug 4789 - can't build gcc recipe - /usr/lib/libstdc++.so: could not read symbols: File in wrong format
Summary: can't build gcc recipe - /usr/lib/libstdc++.so: could not read symbols: File ...
Status: VERIFIED FIXED
Alias: None
Product: OE-Core
Classification: Build System, Metadata & Runtime
Component: devtools / tool chain (show other bugs)
Version: unspecified
Hardware: x86 Multiple
: Medium+ normal
Target Milestone: 1.5 M3
Assignee: Jonathan Liu
QA Contact:
URL:
Whiteboard:
Depends on:
Blocks:
 
Reported: 2013-06-29 03:45 UTC by Jonathan Liu
Modified: 2013-10-29 12:53 UTC (History)
6 users (show)

See Also:
OS type for building Yocto: ---
Type of Regression: ---
Verified:
Documentation change: No (bug/feature does not impact docs)


Attachments
Compile log for gcc recipe (2.14 MB, text/plain)
2013-06-29 03:45 UTC, Jonathan Liu
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jonathan Liu 2013-06-29 03:45:55 UTC
Created attachment 1296 [details]
Compile log for gcc recipe

Build Configuration:
BB_VERSION        = "1.19.1"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "arch-rolling"
TARGET_SYS        = "i586-poky-linux"
MACHINE           = "qemux86"
DISTRO            = "poky"
DISTRO_VERSION    = "1.4+snapshot-20130629"
TUNE_FEATURES     = "m32 i586"
TARGET_FPU        = ""
meta
meta-yocto
meta-yocto-bsp    = "master:5e49280cc07f511c6436a7c9951d433e8ea39f46"

I get the following error running "bitbake gcc" with default generated qemux86 local.conf:

/bin/sh ../libtool --tag=CXX   --mode=link i586-poky-linux-g++  -m32 -march=i586 --sysroot=/home/build/git/poky/builds/qemux86-sysvinit/tmp/sysroots/qemux86 -m32 -march=i586 -isystem/home/build/git/poky/builds/qemux86-sysvinit/tmp/sysroots/qemux86/usr/include -I/home/build/git/poky/builds/qemux86-sysvinit/tmp/work/i586-poky-linux/gcc/4.8.1-r0/gcc-4.8.1/build.i586-poky-linux.i586-poky-linux/gcc/include/  --sysroot=/home/build/git/poky/builds/qemux86-sysvinit/tmp/sysroots/qemux86   -Wall -W -Wno-unused-parameter -Wwrite-strings -pedantic -Wno-long-long -fPIC -fno-builtin -fno-exceptions -fomit-frame-pointer -funwind-tables -fvisibility=hidden -Wno-variadic-macros -I../../libstdc++-v3/include     -I../../libstdc++-v3/include/i586-poky-linux     -I/home/build/git/poky/builds/qemux86-sysvinit/tmp/work-shared/gcc-4.8.1-r0/gcc-4.8.1/libsanitizer/../libstdc++-v3/libsupc++ -g -Os -version-info `grep -v '^#' /home/build/git/poky/builds/qemux86-sysvinit/tmp/work-shared/gcc-4.8.1-r0/gcc-4.8.1/libsanitizer/asan/libtool-version` -lpthread -ldl -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o libasan.la -rpath /usr/lib/../lib asan_allocator.lo asan_allocator2.lo asan_interceptors.lo asan_mac.lo asan_malloc_mac.lo asan_new_delete.lo asan_posix.lo asan_rtl.lo asan_stats.lo asan_thread_registry.lo asan_fake_stack.lo asan_globals.lo asan_linux.lo asan_malloc_linux.lo asan_malloc_win.lo asan_poisoning.lo asan_report.lo asan_stack.lo asan_thread.lo asan_win.lo ../sanitizer_common/libsanitizer_common.la ../interception/libinterception.la ../../libstdc++-v3/src/libstdc++.la 
libtool: link:  i586-poky-linux-g++  -m32 -march=i586 --sysroot=/home/build/git/poky/builds/qemux86-sysvinit/tmp/sysroots/qemux86 -m32 -march=i586 -isystem/home/build/git/poky/builds/qemux86-sysvinit/tmp/sysroots/qemux86/usr/include -I/home/build/git/poky/builds/qemux86-sysvinit/tmp/work/i586-poky-linux/gcc/4.8.1-r0/gcc-4.8.1/build.i586-poky-linux.i586-poky-linux/gcc/include/  --sysroot=/home/build/git/poky/builds/qemux86-sysvinit/tmp/sysroots/qemux86   -shared -nostdlib /home/build/git/poky/builds/qemux86-sysvinit/tmp/sysroots/qemux86/usr/lib/../lib/crti.o /home/build/git/poky/builds/qemux86-sysvinit/tmp/sysroots/qemux86/usr/lib/i586-poky-linux/4.8.1/crtbeginS.o  .libs/asan_allocator.o .libs/asan_allocator2.o .libs/asan_interceptors.o .libs/asan_mac.o .libs/asan_malloc_mac.o .libs/asan_new_delete.o .libs/asan_posix.o .libs/asan_rtl.o .libs/asan_stats.o .libs/asan_thread_registry.o .libs/asan_fake_stack.o .libs/asan_globals.o .libs/asan_linux.o .libs/asan_malloc_linux.o .libs/asan_malloc_win.o .libs/asan_poisoning.o .libs/asan_report.o .libs/asan_stack.o .libs/asan_thread.o .libs/asan_win.o  -Wl,--whole-archive ../sanitizer_common/.libs/libsanitizer_common.a ../interception/.libs/libinterception.a -Wl,--no-whole-archive  -Wl,-rpath -Wl,/home/build/git/poky/builds/qemux86-sysvinit/tmp/work/i586-poky-linux/gcc/4.8.1-r0/gcc-4.8.1/build.i586-poky-linux.i586-poky-linux/i586-poky-linux/libstdc++-v3/src/.libs -lpthread -ldl ../../libstdc++-v3/src/.libs/libstdc++.so -L/home/build/git/poky/builds/qemux86-sysvinit/tmp/sysroots/x86_64-linux/usr/lib/i586-poky-linux/gcc/i586-poky-linux/4.8.1 -L/home/build/git/poky/builds/qemux86-sysvinit/tmp/sysroots/qemux86/lib/../lib -L/home/build/git/poky/builds/qemux86-sysvinit/tmp/sysroots/qemux86/usr/lib/i586-poky-linux/4.8.1 -L/home/build/git/poky/builds/qemux86-sysvinit/tmp/sysroots/qemux86/usr/lib/../lib -L/home/build/git/poky/builds/qemux86-sysvinit/tmp/sysroots/qemux86/lib -L/home/build/git/poky/builds/qemux86-sysvinit/tmp/sysroots/qemux86/usr/lib /usr/lib/libstdc++.so -lm -lc -lgcc_s /home/build/git/poky/builds/qemux86-sysvinit/tmp/sysroots/qemux86/usr/lib/i586-poky-linux/4.8.1/crtendS.o /home/build/git/poky/builds/qemux86-sysvinit/tmp/sysroots/qemux86/usr/lib/../lib/crtn.o  -m32 -march=i586 -m32 -march=i586 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed   -Wl,-soname -Wl,libasan.so.0 -o .libs/libasan.so.0.0.0
/usr/lib/libstdc++.so: could not read symbols: File in wrong format
collect2: error: ld returned 1 exit status
make[3]: *** [libasan.la] Error 1
make[3]: Leaving directory `/home/build/git/poky/builds/qemux86-sysvinit/tmp/work/i586-poky-linux/gcc/4.8.1-r0/gcc-4.8.1/build.i586-poky-linux.i586-poky-linux/i586-poky-linux/libsanitizer/asan'
Comment 1 Jonathan Liu 2013-07-09 02:21:04 UTC
The gcc recipe compiles fine for GCC 4.7.2 but not GCC 4.8.1.
Comment 2 Khem Raj 2013-07-09 03:33:33 UTC
this seems to be related to your build system it builds fine for me on ubuntu 12.04, can you reproduce it on non archlinux hosts
Comment 3 Jonathan Liu 2013-07-09 03:51:13 UTC
I haven't had time to test on non Arch Linux host. I am using GCC 4.8.1 multilib on Arch Linux x86_64 host. Could you attach your successful compile log for gcc 4.8.1 recipe?
Comment 4 Jonathan Liu 2013-07-09 04:33:46 UTC
/usr/lib/libstdc++.so seems to be coming from the following in libsanitizer/libtool script:
postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s"

Only -lstdc++ is resolved to library in /usr/lib by libtool. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942 seems somewhat related.
Comment 5 Khem Raj 2013-07-09 05:04:56 UTC
(In reply to comment #4)
> /usr/lib/libstdc++.so seems to be coming from the following in
> libsanitizer/libtool script:
> postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s"
> 
> Only -lstdc++ is resolved to library in /usr/lib by libtool.
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942 seems somewhat related.

look at the YP auto builder, it should be there.
Comment 6 Jonathan Liu 2013-07-09 05:05:48 UTC
I tracked it down to tmp/sysroots/qemux86/usr/lib/libstdc++.la having:
# Directory that this library needs to be installed in:
libdir='/usr/lib'
Comment 7 Jonathan Liu 2013-07-09 05:27:22 UTC
(In reply to comment #5)
> (In reply to comment #4)
> > /usr/lib/libstdc++.so seems to be coming from the following in
> > libsanitizer/libtool script:
> > postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s"
> > 
> > Only -lstdc++ is resolved to library in /usr/lib by libtool.
> > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942 seems somewhat related.
> 
> look at the YP auto builder, it should be there.

I am not sure how to access compile.log file for a specific recipe in YP auto builder. Can you be more specific?
Comment 8 Jonathan Liu 2013-07-21 02:53:54 UTC
libtool seems to pick it up /usr/lib/libstdc++.so if it exists. On many distributions though, /usr/lib/libstdc++.so does not exist.

I was able to reproduce this on Ubuntu 12.10 x86_64 by doing the following:
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/libstdc++.so
bitbake gcc
Comment 9 Laszlo Papp 2013-07-26 10:29:43 UTC
Any progress on this?
Comment 10 Jonathan Liu 2013-07-26 10:39:55 UTC
It is going through QA/testing at the moment. Should be integrated within the next week.
http://patchwork.openembedded.org/patch/54135/
Comment 12 Ionut Chisanovici 2013-10-29 12:47:21 UTC
Verified on:

Build Configuration:
BB_VERSION        = "1.21.0"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "Fedora-19"
TARGET_SYS        = "i586-poky-linux"
MACHINE           = "qemux86"
DISTRO            = "poky"
DISTRO_VERSION    = "1.5+snapshot-20131029"
TUNE_FEATURES     = "m32 i586"
TARGET_FPU        = ""
meta              
meta-yocto        
meta-yocto-bsp    = "master:76751a03b1475f22499c488395274453096b9c38"

and it is ok.
Comment 13 Laszlo Papp 2013-10-29 12:53:09 UTC
Thanks.