[compiler-rt][AArch64] Add GCS property in assembly files (#152502)
Only BTI and PAC properties were added previously. Fixes https://github.com/llvm/llvm-project/issues/152427.
This commit is contained in:
parent
f3db0cb4d8
commit
c088b5ffca
@ -264,7 +264,7 @@ END_COMPILERRT_OUTLINE_FUNCTION(NAME(LDNM))
|
|||||||
|
|
||||||
NO_EXEC_STACK_DIRECTIVE
|
NO_EXEC_STACK_DIRECTIVE
|
||||||
|
|
||||||
// GNU property note for BTI and PAC
|
// GNU property note for BTI, PAC, and GCS
|
||||||
GNU_PROPERTY_BTI_PAC
|
GNU_PROPERTY_BTI_PAC_GCS
|
||||||
|
|
||||||
#endif // defined(__aarch64__) || defined(__arm64ec__)
|
#endif // defined(__aarch64__) || defined(__arm64ec__)
|
||||||
|
@ -371,5 +371,5 @@ END_COMPILERRT_FUNCTION(__arm_sme_restore)
|
|||||||
|
|
||||||
NO_EXEC_STACK_DIRECTIVE
|
NO_EXEC_STACK_DIRECTIVE
|
||||||
|
|
||||||
// GNU property note for BTI and PAC
|
// GNU property note for BTI, PAC, and GCS
|
||||||
GNU_PROPERTY_BTI_PAC
|
GNU_PROPERTY_BTI_PAC_GCS
|
||||||
|
@ -79,11 +79,12 @@
|
|||||||
#define FUNC_ALIGN
|
#define FUNC_ALIGN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// BTI and PAC gnu property note
|
// BTI, PAC, and GCS gnu property note
|
||||||
#define NT_GNU_PROPERTY_TYPE_0 5
|
#define NT_GNU_PROPERTY_TYPE_0 5
|
||||||
#define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000
|
#define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000
|
||||||
#define GNU_PROPERTY_AARCH64_FEATURE_1_BTI 1
|
#define GNU_PROPERTY_AARCH64_FEATURE_1_BTI 1
|
||||||
#define GNU_PROPERTY_AARCH64_FEATURE_1_PAC 2
|
#define GNU_PROPERTY_AARCH64_FEATURE_1_PAC 2
|
||||||
|
#define GNU_PROPERTY_AARCH64_FEATURE_1_GCS 4
|
||||||
|
|
||||||
#if defined(__ARM_FEATURE_BTI_DEFAULT)
|
#if defined(__ARM_FEATURE_BTI_DEFAULT)
|
||||||
#define BTI_FLAG GNU_PROPERTY_AARCH64_FEATURE_1_BTI
|
#define BTI_FLAG GNU_PROPERTY_AARCH64_FEATURE_1_BTI
|
||||||
@ -97,6 +98,12 @@
|
|||||||
#define PAC_FLAG 0
|
#define PAC_FLAG 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__ARM_FEATURE_GCS_DEFAULT)
|
||||||
|
#define GCS_FLAG GNU_PROPERTY_AARCH64_FEATURE_1_GCS
|
||||||
|
#else
|
||||||
|
#define GCS_FLAG 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#define GNU_PROPERTY(type, value) \
|
#define GNU_PROPERTY(type, value) \
|
||||||
.pushsection .note.gnu.property, "a" SEPARATOR \
|
.pushsection .note.gnu.property, "a" SEPARATOR \
|
||||||
.p2align 3 SEPARATOR \
|
.p2align 3 SEPARATOR \
|
||||||
@ -118,11 +125,12 @@
|
|||||||
#define BTI_J
|
#define BTI_J
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (BTI_FLAG | PAC_FLAG) != 0
|
#if (BTI_FLAG | PAC_FLAG | GCS_FLAG) != 0
|
||||||
#define GNU_PROPERTY_BTI_PAC \
|
#define GNU_PROPERTY_BTI_PAC_GCS \
|
||||||
GNU_PROPERTY(GNU_PROPERTY_AARCH64_FEATURE_1_AND, BTI_FLAG | PAC_FLAG)
|
GNU_PROPERTY(GNU_PROPERTY_AARCH64_FEATURE_1_AND, \
|
||||||
|
BTI_FLAG | PAC_FLAG | GCS_FLAG)
|
||||||
#else
|
#else
|
||||||
#define GNU_PROPERTY_BTI_PAC
|
#define GNU_PROPERTY_BTI_PAC_GCS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__clang__) || defined(__GCC_HAVE_DWARF2_CFI_ASM)
|
#if defined(__clang__) || defined(__GCC_HAVE_DWARF2_CFI_ASM)
|
||||||
|
@ -11,4 +11,4 @@
|
|||||||
|
|
||||||
NO_EXEC_STACK_DIRECTIVE
|
NO_EXEC_STACK_DIRECTIVE
|
||||||
|
|
||||||
GNU_PROPERTY_BTI_PAC
|
GNU_PROPERTY_BTI_PAC_GCS
|
||||||
|
@ -99,4 +99,4 @@ ASM_TRAMPOLINE_ALIAS(_setjmp, setjmp)
|
|||||||
// We do not need executable stack.
|
// We do not need executable stack.
|
||||||
NO_EXEC_STACK_DIRECTIVE
|
NO_EXEC_STACK_DIRECTIVE
|
||||||
|
|
||||||
GNU_PROPERTY_BTI_PAC
|
GNU_PROPERTY_BTI_PAC_GCS
|
||||||
|
@ -157,4 +157,4 @@ mismatch:
|
|||||||
// We do not need executable stack.
|
// We do not need executable stack.
|
||||||
NO_EXEC_STACK_DIRECTIVE
|
NO_EXEC_STACK_DIRECTIVE
|
||||||
|
|
||||||
GNU_PROPERTY_BTI_PAC
|
GNU_PROPERTY_BTI_PAC_GCS
|
||||||
|
@ -43,6 +43,6 @@ ASM_SIZE(vfork)
|
|||||||
ASM_INTERCEPTOR_TRAMPOLINE(vfork)
|
ASM_INTERCEPTOR_TRAMPOLINE(vfork)
|
||||||
ASM_TRAMPOLINE_ALIAS(vfork, vfork)
|
ASM_TRAMPOLINE_ALIAS(vfork, vfork)
|
||||||
|
|
||||||
GNU_PROPERTY_BTI_PAC
|
GNU_PROPERTY_BTI_PAC_GCS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -222,6 +222,6 @@ ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(__sigsetjmp))
|
|||||||
|
|
||||||
NO_EXEC_STACK_DIRECTIVE
|
NO_EXEC_STACK_DIRECTIVE
|
||||||
|
|
||||||
GNU_PROPERTY_BTI_PAC
|
GNU_PROPERTY_BTI_PAC_GCS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user