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)
Thu, Oct 16, 9:09 PM
Unknown Object (File)
Wed, Oct 15, 10:30 PM
Unknown Object (File)
Sun, Oct 12, 4:24 AM
Unknown Object (File)
Sun, Oct 5, 12:53 AM
Unknown Object (File)
Sat, Oct 4, 2:04 AM
Unknown Object (File)
Sep 2 2025, 9:52 AM
Unknown Object (File)
Aug 30 2025, 8:20 PM
Unknown Object (File)
Aug 9 2025, 1:10 PM
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.