HomeFreeBSD

Revert commit 6255157d24e2 from llvm-project (by Dimitry Andric):

Description

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

(cherry picked from commit ce4f1f49e036fd806b534decfe38020dae32a384)

Details

Provenance
dimAuthored on Mar 19 2024, 1:07 PM
Parents
rGb09953d54d75: Merge llvm-project release/18.x llvmorg-18.1.1-0-gdba2a75e9c7e
Branches
Unknown
Tags
Unknown