taskflow / taskflow

A General-purpose Parallel and Heterogeneous Task Programming System

Home Page:https://taskflow.github.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

buildtest failed on armel: "undefined reference to `__atomic_store_8'"

juliangilbey opened this issue · comments

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

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.