[libcxx-commits] [libcxx] [libc++] Disable CFI in __libcpp_allocate (PR #124805)

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Tue Jan 28 09:51:55 PST 2025


https://github.com/ldionne created https://github.com/llvm/llvm-project/pull/124805

Since we're casting uninitialized memory, we must disable CFI checks.

>From 752e9a1c64834bc6e9f2d20cbccf180f6347b1f7 Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
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 a64663c09fa35d..738fa62af4d61d 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 <class _Tp>
-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<size_t>(__n) * sizeof(_Tp);
 #if _LIBCPP_HAS_ALIGNED_ALLOCATION
   if (__is_overaligned_for_new(__align)) {



More information about the libcxx-commits mailing list