]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Revert commit 6255157d24e2 from llvm-project (by Dimitry Andric):
authorDimitry Andric <dim@FreeBSD.org>
Tue, 19 Mar 2024 13:07:27 +0000 (14:07 +0100)
committerDimitry Andric <dim@FreeBSD.org>
Sat, 6 Apr 2024 20:14:31 +0000 (22:14 +0200)
commitce4f1f49e036fd806b534decfe38020dae32a384
tree9ab775b5a1c8e37470b37845ec09bb9d0d3f2ce5
parent4c2d3b022a1d543dbbff75a0c53e8d3d7242216d
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
contrib/llvm-project/libcxx/include/__config