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)
Sun, Mar 9, 12:53 PM
Unknown Object (File)
Sun, Mar 9, 9:30 AM
Unknown Object (File)
Feb 21 2025, 11:45 PM
Unknown Object (File)
Feb 6 2025, 5:17 PM
Unknown Object (File)
Jan 31 2025, 10:01 AM
Unknown Object (File)
Jan 11 2025, 12:12 AM
Unknown Object (File)
Dec 4 2024, 9:25 PM
Unknown Object (File)
Dec 3 2024, 1:54 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.