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 Not Applicable
Unit
Tests Not Applicable

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.