[llvm-branch-commits] [libcxx] Prepare libcxx and libcxxabi for pointer field protection. (PR #151651)
Peter Collingbourne via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Nov 25 22:17:32 PST 2025
https://github.com/pcc updated https://github.com/llvm/llvm-project/pull/151651
>From 7820ec4faa7ecb99217569794db9328211a61553 Mon Sep 17 00:00:00 2001
From: Peter Collingbourne <pcc at google.com>
Date: Fri, 10 Oct 2025 16:11:52 -0700
Subject: [PATCH] Address review comments
Created using spr 1.3.6-beta.1
---
libcxx/CMakeLists.txt | 6 +++++-
libcxx/include/__config | 15 +--------------
2 files changed, 6 insertions(+), 15 deletions(-)
diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt
index a119850cd808e..3a87029b52980 100644
--- a/libcxx/CMakeLists.txt
+++ b/libcxx/CMakeLists.txt
@@ -201,7 +201,11 @@ set(LIBCXX_LIBRARY_VERSION "${LIBCXX_ABI_VERSION}.0" CACHE STRING
For example, -DLIBCXX_LIBRARY_VERSION=x.y will result in the library being named
libc++.x.y.dylib, along with the usual symlinks pointing to that. On Apple platforms,
this also controls the linker's 'current_version' property.")
-set(LIBCXX_ABI_NAMESPACE "__${LIBCXX_ABI_VERSION}" CACHE STRING "The inline ABI namespace used by libc++. It defaults to __n where `n` is the current ABI version.")
+set(default_abi_namespace "__${LIBCXX_ABI_VERSION}")
+if(NOT LIBCXX_PFP STREQUAL "none")
+ set(default_abi_namespace "${default_abi_namespace}_pfp_${LIBCXX_PFP}")
+endif()
+set(LIBCXX_ABI_NAMESPACE "${default_abi_namespace}" CACHE STRING "The inline ABI namespace used by libc++. It defaults to __n where `n` is the current ABI version.")
if (NOT LIBCXX_ABI_NAMESPACE MATCHES "__.*")
message(FATAL_ERROR "LIBCXX_ABI_NAMESPACE must be a reserved identifier, got '${LIBCXX_ABI_NAMESPACE}'.")
endif()
diff --git a/libcxx/include/__config b/libcxx/include/__config
index 63e6eceabd5ec..7e996bbf92ba0 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -484,21 +484,8 @@ typedef __char32_t char32_t;
# define _LIBCPP_EXCEPTIONS_SIG e
# endif
-# if !_LIBCPP_HAS_EXCEPTIONS
-# define _LIBCPP_EXCEPTIONS_SIG n
-# else
-# define _LIBCPP_EXCEPTIONS_SIG e
-# endif
-
-# if defined(__POINTER_FIELD_PROTECTION__)
-# define _LIBCPP_PFP_SIG p
-# else
-# define _LIBCPP_PFP_SIG
-# endif
-
# define _LIBCPP_ODR_SIGNATURE \
- _LIBCPP_CONCAT(_LIBCPP_CONCAT(_LIBCPP_CONCAT(_LIBCPP_HARDENING_SIG, _LIBCPP_EXCEPTIONS_SIG), _LIBCPP_PFP_SIG), \
- _LIBCPP_VERSION)
+ _LIBCPP_CONCAT(_LIBCPP_CONCAT(_LIBCPP_HARDENING_SIG, _LIBCPP_EXCEPTIONS_SIG), _LIBCPP_VERSION)
// This macro marks a symbol as being hidden from libc++'s ABI. This is achieved
// on two levels:
More information about the llvm-branch-commits
mailing list