buildtest failed on armel: "undefined reference to `__atomic_store_8'"
juliangilbey opened this issue · comments
Julian Gilbey commented
Describe the bug
The package (version 3.6.0) fails to successfully compile the testsuite on the armel architecture.
The build proceeds without problem (though lots of warning messages about parameter passing changing in GCC 7.1) until:
[ 7%] Linking CXX executable test_work_stealing
cd /home/jdg/taskflow-3.6.0+ds/buildtest/unittests && /usr/bin/cmake -E cmake_link_script CMakeFiles/test_work_stealing.dir/link.txt --verbose=1
/usr/bin/c++ -g -O2 -ffile-prefix-map=/home/jdg/taskflow-3.6.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -O3 -DNDEBUG -Wl,-z,relro -Wl,-z,now CMakeFiles/test_work_stealing.dir/test_work_stealing.cpp.o -o test_work_stealing
/usr/bin/ld: CMakeFiles/test_work_stealing.dir/test_work_stealing.cpp.o: in function `std::__atomic_base<long long>::store(long long, std::memory_order)':
/usr/include/c++/13/bits/atomic_base.h:481:(.text+0x347c): undefined reference to `__atomic_store_8'
/usr/bin/ld: /usr/include/c++/13/bits/atomic_base.h:481:(.text+0x3490): undefined reference to `__atomic_store_8'
/usr/bin/ld: /usr/include/c++/13/bits/atomic_base.h:481:(.text+0x34f0): undefined reference to `__atomic_store_8'
/usr/bin/ld: /usr/include/c++/13/bits/atomic_base.h:481:(.text+0x3504): undefined reference to `__atomic_store_8'
/usr/bin/ld: /usr/include/c++/13/bits/atomic_base.h:481:(.text+0x3564): undefined reference to `__atomic_store_8'
/usr/bin/ld: CMakeFiles/test_work_stealing.dir/test_work_stealing.cpp.o:/usr/include/c++/13/bits/atomic_base.h:481: more undefined references to `__atomic_store_8' follow
/usr/bin/ld: CMakeFiles/test_work_stealing.dir/test_work_stealing.cpp.o: in function `std::__atomic_base<long long>::load(std::memory_order) const':
/usr/include/c++/13/bits/atomic_base.h:505:(.text+0x21ad0): undefined reference to `__atomic_load_8'
/usr/bin/ld: /usr/include/c++/13/bits/atomic_base.h:505:(.text+0x21ae4): undefined reference to `__atomic_load_8'
/usr/bin/ld: CMakeFiles/test_work_stealing.dir/test_work_stealing.cpp.o: in function `std::__atomic_base<long long>::store(long long, std::memory_order)':
/usr/include/c++/13/bits/atomic_base.h:481:(.text+0x21c00): undefined reference to `__atomic_store_8'
/usr/bin/ld: CMakeFiles/test_work_stealing.dir/test_work_stealing.cpp.o: in function `std::__atomic_base<long long>::load(std::memory_order) const':
/usr/include/c++/13/bits/atomic_base.h:505:(.text+0x21c30): undefined reference to `__atomic_load_8'
/usr/bin/ld: /usr/include/c++/13/bits/atomic_base.h:505:(.text+0x21c44): undefined reference to `__atomic_load_8'
/usr/bin/ld: CMakeFiles/test_work_stealing.dir/test_work_stealing.cpp.o: in function `std::__atomic_base<long long>::store(long long, std::memory_order)':
/usr/include/c++/13/bits/atomic_base.h:481:(.text+0x22120): undefined reference to `__atomic_store_8'
/usr/bin/ld: CMakeFiles/test_work_stealing.dir/test_work_stealing.cpp.o: in function `std::__atomic_base<long long>::load(std::memory_order) const':
/usr/include/c++/13/bits/atomic_base.h:505:(.text+0x22144): undefined reference to `__atomic_load_8'
/usr/bin/ld: /usr/include/c++/13/bits/atomic_base.h:505:(.text+0x22158): undefined reference to `__atomic_load_8'
/usr/bin/ld: CMakeFiles/test_work_stealing.dir/test_work_stealing.cpp.o: in function `std::__atomic_base<long long>::store(long long, std::memory_order)':
/usr/include/c++/13/bits/atomic_base.h:481:(.text+0x230ec): undefined reference to `__atomic_store_8'
/usr/bin/ld: CMakeFiles/test_work_stealing.dir/test_work_stealing.cpp.o: in function `std::__atomic_base<long long>::load(std::memory_order) const':
/usr/include/c++/13/bits/atomic_base.h:505:(.text+0x23110): undefined reference to `__atomic_load_8'
[... lots more similar lines snipped ...]
/usr/bin/ld: CMakeFiles/test_work_stealing.dir/test_work_stealing.cpp.o: in function `std::__atomic_base<unsigned long long>::compare_exchange_weak(unsigned long long&, unsigned long long, std::memory_order, std::memory_order)':
/usr/include/c++/13/bits/atomic_base.h:540:(.text._ZZN2tf8Executor6_spawnEjENKUlRNS_6WorkerERSt5mutexRSt18condition_variableRjE_clES2_S4_S6_S7_[_ZZN2tf8Executor6_spawnEjENKUlRNS_6WorkerERSt5mutexRSt18condition_variableRjE_clES2_S4_S6_S7_]+0x710): undefined reference to `__atomic_compare_exchange_8'
/usr/bin/ld: CMakeFiles/test_work_stealing.dir/test_work_stealing.cpp.o: in function `std::__atomic_base<unsigned long long>::store(unsigned long long, std::memory_order)':
/usr/include/c++/13/bits/atomic_base.h:481:(.text._ZN2tf8ExecutorC2EjSt10shared_ptrINS_15WorkerInterfaceEE[_ZN2tf8ExecutorC5EjSt10shared_ptrINS_15WorkerInterfaceEE]+0x290): undefined reference to `__atomic_store_8'
collect2: error: ld returned 1 exit status
Desktop (please complete the following information):
- OS: Linux (on Debian GNU/Linux system)
- Version: Debian unstable
Julian Gilbey commented
I forgot to say: it's possible that badaix/snapcast#490 and https://github.com/badaix/snapcast/blob/develop/cmake/CheckAtomic.cmake might be useful for this.