kraj / meta-clang

Clang C/C++ cross compiler and runtime for OpenEmbedded/Yocto Project
MIT License
160 stars 206 forks source link

[zeus] libcxx fails to build for armv5e #327

Closed chlongv closed 4 years ago

chlongv commented 4 years ago

I try to generate a SDK that targets the quite old armv5e architecture (require conf/machine/include/tune-arm926ejs.inc). libcxx fails for this arch, while it is fine for all other archs I need (armv7, powerpc, x86) with the following error at link:

` /home/chvalon/wcom-build-dir/tmp-glibc/work/armv5e-oe-linux-gnueabi/libcxx/9.0.1-r0/recipe-sysroot-native/usr/bin/arm-oe-linux-gnueabi/arm-oe-linux-gnueabi-clang++ -fPIC -march=armv5te -marm -mlittle-endian -Wno-error=unused-command-line-argument -Qunused-arguments --sysroot=/home/chvalon/wcom-build-dir/tmp-glibc/work/armv5e-oe-linux-gnueabi/libcxx/9.0.1-r0/recipe-sysroot -O2 -pipe -g -feliminate-unused-debug-types -fmacro-prefix-map=/home/chvalon/wcom-build-dir/tmp-glibc/work/armv5e-oe-linux-gnueabi/libcxx/9.0.1-r0=/usr/src/debug/libcxx/9.0.1-r0 -fdebug-prefix-map=/home/chvalon/wcom-build-dir/tmp-glibc/work/armv5e-oe-linux-gnueabi/libcxx/9.0.1-r0=/usr/src/debug/libcxx/9.0.1-r0 -fdebug-prefix-map=/home/chvalon/wcom-build-dir/tmp-glibc/work/armv5e-oe-linux-gnueabi/libcxx/9.0.1-r0/recipe-sysroot= -fdebug-prefix-map=/home/chvalon/wcom-build-dir/tmp-glibc/work/armv5e-oe-linux-gnueabi/libcxx/9.0.1-r0/recipe-sysroot-native= -fvisibility-inlines-hidden -march=armv5te -marm -mlittle-endian -Wno-error=unused-command-line-argument -Qunused-arguments --sysroot=/home/chvalon/wcom-build-dir/tmp-glibc/work/armv5e-oe-linux-gnueabi/libcxx/9.0.1-r0/recipe-sysroot -mfpu=vfp2 -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -std=c++11 -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion -fdiagnostics-color -g -latomic -Wl,-z,defs -Wl,-z,nodelete -L/home/chvalon/wcom-build-dir/tmp-glibc/work/armv5e-oe-linux-gnueabi/libcxx/9.0.1-r0/build/lib -shared -Wl,-soname,libc++.so.1 -o lib/libc++.so.1.0 projects/libcxx/src/CMakeFiles/cxx_shared.dir/algorithm.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/any.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/bind.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/charconv.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/chrono.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/condition_variable.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/condition_variable_destructor.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/debug.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/exception.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/functional.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/future.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/hash.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/ios.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/iostream.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/locale.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/memory.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/mutex.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/mutex_destructor.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/new.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/optional.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/random.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/regex.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/shared_mutex.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/stdexcept.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/string.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/strstream.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/system_error.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/thread.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/typeinfo.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/utility.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/valarray.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/variant.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/vector.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/filesystem/operations.cpp.o projects/libcxx/src/CMakeFiles/cxx_shared.dir/filesystem/directory_iterator.cpp.o -Wl,-rpath,"\$ORIGIN/../lib" -nodefaultlibs -lpthread -lc -lm -lrt /home/chvalon/wcom-build-dir/tmp-glibc/work/armv5e-oe-linux-gnueabi/libcxx/9.0.1-r0/recipe-sysroot/usr/lib/clang/9.0.1/lib/linux/libclang_rt.builtins-arm.a -lc++abi && : /home/chvalon/wcom-build-dir/tmp-glibc/work/armv5e-oe-linux-gnueabi/libcxx/9.0.1-r0/recipe-sysroot-native/usr/bin/arm-oe-linux-gnueabi/arm-oe-linux-gnueabi-ld: projects/libcxx/src/CMakeFiles/cxx_shared.dir/locale.cpp.o: in function `std::1::cloc()': /home/chvalon/wcom-build-dir/tmp-glibc/work-shared/llvm-project-source-9.0.1-r0/git/libcxx/src/locale.cpp:72: undefined reference to `__sync_val_compare_and_swap_1' /home/chvalon/wcom-build-dir/tmp-glibc/work/armv5e-oe-linux-gnueabi/libcxx/9.0.1-r0/recipe-sysroot-native/usr/bin/arm-oe-linux-gnueabi/arm-oe-linux-gnueabi-ld: /home/chvalon/wcom-build-dir/tmp-glibc/work-shared/llvm-project-source-9.0.1-r0/git/libcxx/src/locale.cpp:72: undefined reference to `__sync_val_compare_and_swap_1' /home/chvalon/wcom-build-dir/tmp-glibc/work/armv5e-oe-linux-gnueabi/libcxx/9.0.1-r0/recipe-sysroot-native/usr/bin/arm-oe-linux-gnueabi/arm-oe-linux-gnueabi-ld: /home/chvalon/wcom-build-dir/tmp-glibc/work-shared/llvm-project-source-9.0.1-r0/git/libcxx/src/locale.cpp:72: undefined reference to `__sync_val_compare_and_swap_1' /home/chvalon/wcom-build-dir/tmp-glibc/work/armv5e-oe-linux-gnueabi/libcxx/9.0.1-r0/recipe-sysroot-native/usr/bin/arm-oe-linux-gnueabi/arm-oe-linux-gnueabi-ld: /home/chvalon/wcom-build-dir/tmp-glibc/work-shared/llvm-project-source-9.0.1-r0/git/libcxx/src/locale.cpp:72: undefined reference to `__sync_val_compare_and_swap_1' /home/chvalon/wcom-build-dir/tmp-glibc/work/armv5e-oe-linux-gnueabi/libcxx/9.0.1-r0/recipe-sysroot-native/usr/bin/arm-oe-linux-gnueabi/arm-oe-linux-gnueabi-ld: /home/chvalon/wcom-build-dir/tmp-glibc/work-shared/llvm-project-source-9.0.1-r0/git/libcxx/src/locale.cpp:72: undefined reference to `__sync_val_compare_and_swap_1' /home/chvalon/wcom-build-dir/tmp-glibc/work/armv5e-oe-linux-gnueabi/libcxx/9.0.1-r0/recipe-sysroot-native/usr/bin/arm-oe-linux-gnueabi/arm-oe-linux-gnueabi-ld: projects/libcxx/src/CMakeFiles/cxx_shared.dir/locale.cpp.o:/home/chvalon/wcom-build-dir/tmp-glibc/work-shared/llvm-project-source-9.0.1-r0/git/libcxx/src/locale.cpp:491: more undefined references to `__sync_val_compare_and_swap_1' follow clang-9: error: linker command failed with exit code 1 (use -v to see invocation) ninja: build stopped: subcommand failed. WARNING: exit code 1 from a shell command.

ERROR: Task (/home/chvalon/yocto-tree/poky/meta-clang/recipes-devtools/clang/libcxx_git.bb:do_compile) failed with exit code '1'

`

It's very easy to reproduce: MACHINE=qemuarmv5 bitbake libcxx

I have noticed that libcxx sets PACKAGECONFIG[no-atomics] for armv5, I have the impression that this is a problem in the same area.

I'm currently working with zeus, so it's version 9, with master it works.

chlongv commented 4 years ago

Fixed by #328