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
F86391619: D45233.diff
Wed, Jun 19, 7:19 PM
Unknown Object (File)
Sat, May 25, 5:35 PM
Unknown Object (File)
Mon, May 20, 10:46 PM
Unknown Object (File)
May 18 2024, 1:13 AM
Unknown Object (File)
May 18 2024, 1:09 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.