Skip to content

Failure to handle SSE definition on some architectures, and synthetictest needs SSE headers #226

@pgrt

Description

@pgrt

Hello,

I am working on upgrading beagle-lib in Debian. It turns out version 4.0.1 cannot build on some architectures like Arm Eabi, Arm hard Float, MIPS, IBM Power, s390x because the emmintrin.h header is unavailable there. Could the mmintrin.h header possibly provide symbols for the source file libhmsbeagle/CPU/SSEDefinitions.h?

Also when I build the software with BUILD_SSE=OFF, all is good on amd64 but on e.g. Arm Eabi I get the error message

/usr/bin/ld: CMakeFiles/synthetictest.dir/synthetictest/synthetictest.cpp.o: in function std::__atomic_futex_unsigned<2147483648u>::_M_store_notify_all(unsigned int, std::memory_order)': /usr/include/c++/14/bits/atomic_futex.h:278:(.text+0x1620): undefined reference to std::__atomic_futex_unsigned_base::_M_futex_notify_all(unsigned int*)'
/usr/bin/ld: /usr/include/c++/14/bits/atomic_futex.h:278:(.text+0x3940): undefined reference to std::__atomic_futex_unsigned_base::_M_futex_notify_all(unsigned int*)' /usr/bin/ld: CMakeFiles/synthetictest.dir/synthetictest/synthetictest.cpp.o: in function std::__atomic_futex_unsigned<2147483648u>::_M_load_and_test_until(unsigned int, unsigned int, bool, std::memory_order, bool, std::chrono::duration<long long, std::ratio<1ll, 1ll> >, std::chrono::duration<long long, std::ratio<1ll, 1000000000ll> >)':
/usr/include/c++/14/bits/atomic_futex.h:109:(.text+0xae64): undefined reference to std::__atomic_futex_unsigned_base::_M_futex_wait_until(unsigned int*, unsigned int, bool, std::chrono::duration<long long, std::ratio<1ll, 1ll> >, std::chrono::duration<long long, std::ratio<1ll, 1000000000ll> >)' /usr/bin/ld: CMakeFiles/synthetictest.dir/synthetictest/synthetictest.cpp.o: in function std::__atomic_futex_unsigned<2147483648u>::_M_store_notify_all(unsigned int, std::memory_order)':
/usr/include/c++/14/bits/atomic_futex.h:278:(.text._ZNSt13__future_base13_State_baseV216_M_break_promiseESt10unique_ptrINS_12_Result_baseENS2_8_DeleterEE[_ZNSt13__future_base13_State_baseV216_M_break_promiseESt10unique_ptrINS_12_Result_baseENS2_8_DeleterEE]+0x25c): undefined reference to `std::__atomic_futex_unsigned_base::_M_futex_notify_all(unsigned int*)'
collect2: error: ld returned 1 exit status

which suggests synthetictest.cpp might require some SSE symbols on some architectures even if BUILD_SSE is specified.

For the moment in Debian, I have disabled BUILD_SSE and skipped synthetictest, but if you could come up with / have suggestions about solutions to the above problems this would be useful!

Thanks for the develoment of beagle-lib,

Pierre

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions