diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2024-03-19 13:07:27 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2024-04-06 20:14:31 +0000 |
commit | ce4f1f49e036fd806b534decfe38020dae32a384 (patch) | |
tree | 9ab775b5a1c8e37470b37845ec09bb9d0d3f2ce5 /contrib | |
parent | 4c2d3b022a1d543dbbff75a0c53e8d3d7242216d (diff) | |
download | src-ce4f1f49e036fd806b534decfe38020dae32a384.tar.gz src-ce4f1f49e036fd806b534decfe38020dae32a384.zip |
Revert commit 6255157d24e2 from llvm-project (by Dimitry Andric):
[libc++] Re-enable std::pair trivial copy constructor for FreeBSD >= 14
After many years of using the really old std::pair ABI which did not yet
have a trivial copy constructor, FreeBSD 14 and later will finally get
rid of it. Only use the old ABI for FreeBSD 13 and earlier.
Note: on the FreeBSD side, we will bump our libc++.so version for this,
and keep an old compatibility library in a separate package.
Differential Revision: https://reviews.llvm.org/D126462
This ABI change can cause crashes when binaries compiled against older
libc++ versions are run against binaries compiled against this libc++
version.
For example, lang/ldc uses a precompiled bootstrap ldc2 binary that was
compiled against the old libc++, but also links against libLLVM-15.so.
If libLLVM-15.so is compiled against the new libc++ version, the ABI
mismatch results in segfaults or even stack overflows.
Note: we can only re-enable the std::pair trivial copy constructors
again when the official libc++ ABI version is bumped to 2.
PR: 276104
MFC after: 1 month
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/llvm-project/libcxx/include/__config | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/contrib/llvm-project/libcxx/include/__config b/contrib/llvm-project/libcxx/include/__config index fa5535facb14..a5981984d37e 100644 --- a/contrib/llvm-project/libcxx/include/__config +++ b/contrib/llvm-project/libcxx/include/__config @@ -190,7 +190,7 @@ # endif // Feature macros for disabling pre ABI v1 features. All of these options // are deprecated. -# if defined(__FreeBSD__) && __FreeBSD__ < 14 +# if defined(__FreeBSD__) # define _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR # endif // For XCOFF linkers, we have problems if we see a weak hidden version of a symbol |