Page MenuHomeFreeBSD

libcxxrt: allow build with gcc13 and --no-undefined-version
ClosedPublic

Authored by brooks on May 17 2024, 7:31 PM.
Tags
None
Referenced Files
Unknown Object (File)
Wed, Oct 23, 9:26 PM
Unknown Object (File)
Tue, Oct 22, 11:12 AM
Unknown Object (File)
Oct 8 2024, 2:14 PM
Unknown Object (File)
Oct 8 2024, 2:14 PM
Unknown Object (File)
Oct 8 2024, 2:14 PM
Unknown Object (File)
Oct 8 2024, 1:51 PM
Unknown Object (File)
Oct 6 2024, 10:56 AM
Unknown Object (File)
Oct 5 2024, 11:01 AM
Subscribers

Details

Summary

GCC supports _Float16 and __int128 on fewer architectures than clang and
thus libcxxrt compiled with gcc13 is sometimes missing related symbols.
Hack around this by explicitly appending --undefined-version to LDFLAGS
in problematic cases.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 57741
Build 54629: arc lint + arc unit

Event Timeline

This revision is now accepted and ready to land.May 17 2024, 7:32 PM

This is fine for now, but may be can put some #ifdefs in the version maps? Or some more fine-grained gcc version checks?

In D45233#1031909, @dim wrote:

This is fine for now, but may be can put some #ifdefs in the version maps? Or some more fine-grained gcc version checks?

Unfortunately this library uses the VERSION_MAP format (what the linker actually understands) rather than our local SYMBOL_MAPS which generates a version map from a set of CPP processed map files. It does this because the script that generates version maps doesn't understand the extern C++ parts. I did take brief look at updating the script to handle (or perhaps more accurately ignore) the C++ cases, but didn't feel like I was making enough progress so gave up.