[llvm-branch-commits] [libunwind] c3da16b - [libunwind] Be more careful about enabling GCS (#101973)
Tobias Hieta via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Aug 20 00:30:58 PDT 2024
Author: John Brawn
Date: 2024-08-20T09:29:19+02:00
New Revision: c3da16b094511e42022e534b5eb665dbc3f8db0f
URL: https://github.com/llvm/llvm-project/commit/c3da16b094511e42022e534b5eb665dbc3f8db0f
DIFF: https://github.com/llvm/llvm-project/commit/c3da16b094511e42022e534b5eb665dbc3f8db0f.diff
LOG: [libunwind] Be more careful about enabling GCS (#101973)
We need both GCS to be enabled by the compiler (which we do by checking
if __ARM_FEATURE_GCS_DEFAULT is defined) and for arm_acle.h to define
the GCS intrinsics. Check the latter by checking if _CHKFEAT_GCS is
defined.
(cherry picked from commit c649194a71b47431f2eb2e041435d564e3b51072)
Added:
Modified:
libunwind/src/cet_unwind.h
Removed:
################################################################################
diff --git a/libunwind/src/cet_unwind.h b/libunwind/src/cet_unwind.h
index 45c11973cb7fa3..47d7616a7322c3 100644
--- a/libunwind/src/cet_unwind.h
+++ b/libunwind/src/cet_unwind.h
@@ -39,9 +39,13 @@
// need to guard any use of GCS instructions with __chkfeat though, as GCS may
// not be enabled.
#if defined(_LIBUNWIND_TARGET_AARCH64) && defined(__ARM_FEATURE_GCS_DEFAULT)
-#define _LIBUNWIND_USE_GCS 1
#include <arm_acle.h>
+// We can only use GCS if arm_acle.h defines the GCS intrinsics.
+#ifdef _CHKFEAT_GCS
+#define _LIBUNWIND_USE_GCS 1
+#endif
+
#define _LIBUNWIND_POP_CET_SSP(x) \
do { \
if (__chkfeat(_CHKFEAT_GCS)) { \
More information about the llvm-branch-commits
mailing list