g++ -g -O2 -fno-exceptions -fno-rtti -O2 -I/usr/local/include -I/usr/local/ssl/include -UHAVE_SIMD -c -o simd-checksum-x86_64.o ./simd-checksum-x86_64.cpp
./simd-checksum-x86_64.cpp: In function 'uint32_t get_checksum1_cpp(char*, int32_t)':
./simd-checksum-x86_64.cpp:88:52: error: multiversioning needs ifunc which is not supported on this target
88 | __attribute__ ((target("default"))) MVSTATIC int32 get_checksum1_avx2_6(schar* buf, int32 len, int32 i, uint32* ps1, uint32* ps2) { return i; }
| ^~~~~~~~~~~~~~~~~~~~
./simd-checksum-x86_64.cpp:474:1: error: use of multiversioned function without a default
474 | }
| ^
./simd-checksum-x86_64.cpp:89:52: error: multiversioning needs ifunc which is not supported on this target
89 | __attribute__ ((target("default"))) MVSTATIC int32 get_checksum1_ssse3_32(schar* buf, int32 len, int32 i, uint32* ps1, uint32* ps2) { return i; }
| ^~~~~~~~~~~~~~~~~~~~~~
./simd-checksum-x86_64.cpp:474:1: error: use of multiversioned function without a default
474 | }
| ^
gmake: *** [Makefile:135: simd-checksum-x86_64.o] Error 1
The same error occurs on SmartOS.
I'm guessing that's because
ifuncis a glibc feature, which would not work on a Linux that uses non-GNU libc like Alpine with musl libc.The same error occurs on SmartOS.