From 752e9a1c64834bc6e9f2d20cbccf180f6347b1f7 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Tue, 28 Jan 2025 12:51:15 -0500 Subject: [PATCH] [libc++] Disable CFI in __libcpp_allocate Since we're casting uninitialized memory, we must disable CFI checks. --- libcxx/include/__new/allocate.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libcxx/include/__new/allocate.h b/libcxx/include/__new/allocate.h index a64663c09fa35..738fa62af4d61 100644 --- a/libcxx/include/__new/allocate.h +++ b/libcxx/include/__new/allocate.h @@ -50,7 +50,8 @@ _LIBCPP_HIDE_FROM_ABI void __libcpp_operator_delete(_Args... __args) _NOEXCEPT { } template -inline _LIBCPP_HIDE_FROM_ABI _Tp* __libcpp_allocate(__element_count __n, size_t __align = _LIBCPP_ALIGNOF(_Tp)) { +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_NO_CFI _Tp* +__libcpp_allocate(__element_count __n, size_t __align = _LIBCPP_ALIGNOF(_Tp)) { size_t __size = static_cast(__n) * sizeof(_Tp); #if _LIBCPP_HAS_ALIGNED_ALLOCATION if (__is_overaligned_for_new(__align)) {