Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build fails on some architectures: ld: error: undefined symbol: roundevenf #85

Closed
yurivict opened this issue Jan 12, 2024 · 12 comments
Closed

Comments

@yurivict
Copy link

Build fails on i386, armv7, powerpc64le architectures:

ld: error: undefined symbol: roundevenf
>>> referenced by CSProfile.cpp
>>>               CSProfile.cpp.o:(float* CSProfile::computeProfile<2>(unsigned char*, int, float*, float*, float, float, float)) in archive lib/mmseqs/src/libmmseqs-framework.a
>>> referenced by CSProfile.cpp
>>>               CSProfile.cpp.o:(float* CSProfile::computeProfile<2>(unsigned char*, int, float*, float*, float, float, float)) in archive lib/mmseqs/src/libmmseqs-framework.a
>>> referenced by CSProfile.cpp
>>>               CSProfile.cpp.o:(float* CSProfile::computeProfile<2>(unsigned char*, int, float*, float*, float, float, float)) in archive lib/mmseqs/src/libmmseqs-framework.a
>>> referenced 13 more times
c++: error: linker command failed with exit code 1 (use -v to see invocation)

Version: 6
clang-16
FreeBSD 14.0

@milot-mirdita
Copy link
Member

32-bit platforms are not supported and produce wrong results. ppc64le should work, but that looks like some missing linked library?

@yurivict
Copy link
Author

The roundevenf symbol seems to be related to the bundled simde library.
It is supposedly a compiler built-in function.

@milot-mirdita
Copy link
Member

If not a built in then it uses the libm version. I see that glibc added it only some years ago. Maybe the BSD libc doesn’t have roundf implemented? We might also not explicitly link to libm, though I thought I fixed that issue a while ago.

@yurivict
Copy link
Author

roundf is present in the FreeBSD's libm, but the problem is in a different function roundevenf.
roundevenf isn't called directly, only through simde.

@pkubaj
Copy link

pkubaj commented Jan 12, 2024

@yurivict
Are you sure it fails on powerpc64 as well? Here's my build log:
metaeuk-6_2.log

@milot-mirdita
This bug raport is about ppc64, not ppc64le.

@yurivict
Copy link
Author

The failures are on powerpc64le.

@yurivict
Copy link
Author

yurivict commented Jan 12, 2024

Oh, I am very sorry!

powerpc64le has a different error and it is a clang crash.
I'll report it to the FreeBSD's toolchain support.

@yurivict yurivict closed this as not planned Won't fix, can't repro, duplicate, stale Jan 12, 2024
@milot-mirdita
Copy link
Member

ppc64 (big-endian) should also not work, only a very limited number of modules are big endian compatible. Metaeuk definitely uses modules that don't work (correctly) on big-endian.

@milot-mirdita
Copy link
Member

Just out of curiosity, where is the compiler crash?

@yurivict
Copy link
Author

Here is the log.

@milot-mirdita
Copy link
Member

Attributes 'zeroext and signext' are incompatible!
ptr @omp_get_proc_bind
fatal error: error in backend: Broken module found, compilation aborted!

this suggests an issue with libomp/openmp.

The proc bind call is not really necessary, it’s just there to find out if we are in a somewhat common performance failure case and warn about it.

@pkubaj
Copy link

pkubaj commented Jan 12, 2024

That looks like llvm/llvm-project#63807

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants