Opened 6 years ago
Last modified 2 years ago
#57576 new enhancement
llvm 8+ usuability — at Initial Version
Reported by: | RJVB (René Bertin) | Owned by: | |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | |
Keywords: | Cc: | jeremyhu (Jeremy Huddleston Sequoia) | |
Port: | libcxx |
Description
I just saw this
Starting with LLVM 8.0.0, users that wish to link together translation units built with different versions of libc++’s headers into the same final linked image MUST define the _LIBCPP_HIDE_FROM_ABI_PER_TU macro to 1 when building those translation units. Not defining _LIBCPP_HIDE_FROM_ABI_PER_TU to 1 and linking translation units built with different versions of libc++’s headers together may lead to ODR violations and ABI issues. On the flipside, code size improvements should be expected for everyone not defining the macro.
(https://libcxx.llvm.org/docs/ReleaseNotes.html#what-s-new-in-libc-8-0-0)
I interpret this as "define _LIBCPP_HIDE_FROM_ABI_PER_TU if you want to use the libc++ headers to build code that will link against system libraries".
A really strange decision if that interpretation is correct but if it is correct wouldn't it be a least-worst idea revert the logic in c++/v1/__config
to avoid having to add -D_LIBCPP_HIDE_FROM_ABI_PER_TU
to just about every C++ compiler invocation?
Note: See
TracTickets for help on using
tickets.