ce4f1f49 | 19-Mar-2024 |
Dimitry Andric <dim@FreeBSD.org> |
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
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
show more ...
|
868ee3f2 | 05-Feb-2024 |
Dimitry Andric <dim@FreeBSD.org> |
[libc++] Rename __bit_reference template parameter to avoid conflict
As of 4d20cfcf4eb08217ed37c4d4c38dc395d7a66d26, `__bit_reference` contains a template `__fill_n` with a bool `_FillValue` paramet
[libc++] Rename __bit_reference template parameter to avoid conflict
As of 4d20cfcf4eb08217ed37c4d4c38dc395d7a66d26, `__bit_reference` contains a template `__fill_n` with a bool `_FillValue` parameter.
Unfortunately there is a relatively widely used piece of scientific software called NetCDF, which exposes a (C) macro `_FillValue` in its public headers.
When building the NetCDF C++ bindings, this quickly leads to compilation errors when the macro interferes with the template in `__bit_reference`.
Rename the parameter to `_FillVal` to avoid the conflict.
PR: 276104 MFC after: 1 month
show more ...
|
878ed495 | 26-Jan-2024 |
Dimitry Andric <dim@FreeBSD.org> |
Merge llvm-project release/18.x llvmorg-18-init-18361-g22683463740e
This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvm-project release/18.x llvmorg-18-init-18361-
Merge llvm-project release/18.x llvmorg-18-init-18361-g22683463740e
This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvm-project release/18.x llvmorg-18-init-18361-g22683463740e.
PR: 276104 MFC after: 1 month
show more ...
|
46c59ea9 | 14-Jan-2024 |
Dimitry Andric <dim@FreeBSD.org> |
Redo libc++ customizations
* Remove osreldate include because _LIBCPP_HAS_NO_GETS has disappeared * Instead, add direct major __FreeBSD__ check for using ::gets declaration * Mark EINTEGRITY values
Redo libc++ customizations
* Remove osreldate include because _LIBCPP_HAS_NO_GETS has disappeared * Instead, add direct major __FreeBSD__ check for using ::gets declaration * Mark EINTEGRITY values as FreeBSD customization * Reformat _LIBCPP_TYPE_VISIBILITY_DEFAULT customization
PR: 276104 MFC after: 1 month
show more ...
|
412fa343 | 07-Jan-2024 |
Dimitry Andric <dim@FreeBSD.org> |
Add two FreeBSD customizations to libc++
This is intended to better support ports usage of older clang versions: * Add _LIBCPP_ENABLE_COMPILER_VERSION_CHECKS block around compiler version checks,
Add two FreeBSD customizations to libc++
This is intended to better support ports usage of older clang versions: * Add _LIBCPP_ENABLE_COMPILER_VERSION_CHECKS block around compiler version checks, to avoid any warnings about support. This makes some ports that use -Werror fall over. * When using clang < 15.0, avoid using a type visibility attribute on the std namespace, as older versions of clang do not support this.
PR: 276104 MFC after: 1 month
show more ...
|
653487bb | 07-Jan-2024 |
Dimitry Andric <dim@FreeBSD.org> |
Tentatively merge https://github.com/llvm/llvm-project/pull/77242
[libcxx] Re-include <osreldate.h> in __config for FreeBSD
In 0a97720d0197 some changes were made to `__config` for assuming tha
Tentatively merge https://github.com/llvm/llvm-project/pull/77242
[libcxx] Re-include <osreldate.h> in __config for FreeBSD
In 0a97720d0197 some changes were made to `__config` for assuming that `__BYTE_ORDER__` is always present.
However, this deleted a `<osreldate.h>` include for FreeBSD, which is required to get the value of `__FreeBSD_version`, and that is used later in the file to determine whether `_LIBCPP_C_HAS_NO_GETS` needs to be enabled.
Include `<osreldate.h>` just after the other includes used for feature detection, to fix this.
Note that when FreeBSD 13 is EOLed, this can be removed, as then all supported FreeBSD versions will no longer have `gets()`.
PR: 276104 MFC after: 1 month
show more ...
|