Skip to content

Commit c088b5f

Browse files
authored
[compiler-rt][AArch64] Add GCS property in assembly files (#152502)
Only BTI and PAC properties were added previously. Fixes #152427.
1 parent f3db0cb commit c088b5f

File tree

8 files changed

+22
-14
lines changed

8 files changed

+22
-14
lines changed

compiler-rt/lib/builtins/aarch64/lse.S

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ END_COMPILERRT_OUTLINE_FUNCTION(NAME(LDNM))
264264

265265
NO_EXEC_STACK_DIRECTIVE
266266

267-
// GNU property note for BTI and PAC
268-
GNU_PROPERTY_BTI_PAC
267+
// GNU property note for BTI, PAC, and GCS
268+
GNU_PROPERTY_BTI_PAC_GCS
269269

270270
#endif // defined(__aarch64__) || defined(__arm64ec__)

compiler-rt/lib/builtins/aarch64/sme-abi.S

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -371,5 +371,5 @@ END_COMPILERRT_FUNCTION(__arm_sme_restore)
371371

372372
NO_EXEC_STACK_DIRECTIVE
373373

374-
// GNU property note for BTI and PAC
375-
GNU_PROPERTY_BTI_PAC
374+
// GNU property note for BTI, PAC, and GCS
375+
GNU_PROPERTY_BTI_PAC_GCS

compiler-rt/lib/builtins/assembly.h

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,12 @@
7979
#define FUNC_ALIGN
8080
#endif
8181

82-
// BTI and PAC gnu property note
82+
// BTI, PAC, and GCS gnu property note
8383
#define NT_GNU_PROPERTY_TYPE_0 5
8484
#define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000
8585
#define GNU_PROPERTY_AARCH64_FEATURE_1_BTI 1
8686
#define GNU_PROPERTY_AARCH64_FEATURE_1_PAC 2
87+
#define GNU_PROPERTY_AARCH64_FEATURE_1_GCS 4
8788

8889
#if defined(__ARM_FEATURE_BTI_DEFAULT)
8990
#define BTI_FLAG GNU_PROPERTY_AARCH64_FEATURE_1_BTI
@@ -97,6 +98,12 @@
9798
#define PAC_FLAG 0
9899
#endif
99100

101+
#if defined(__ARM_FEATURE_GCS_DEFAULT)
102+
#define GCS_FLAG GNU_PROPERTY_AARCH64_FEATURE_1_GCS
103+
#else
104+
#define GCS_FLAG 0
105+
#endif
106+
100107
#define GNU_PROPERTY(type, value) \
101108
.pushsection .note.gnu.property, "a" SEPARATOR \
102109
.p2align 3 SEPARATOR \
@@ -118,11 +125,12 @@
118125
#define BTI_J
119126
#endif
120127

121-
#if (BTI_FLAG | PAC_FLAG) != 0
122-
#define GNU_PROPERTY_BTI_PAC \
123-
GNU_PROPERTY(GNU_PROPERTY_AARCH64_FEATURE_1_AND, BTI_FLAG | PAC_FLAG)
128+
#if (BTI_FLAG | PAC_FLAG | GCS_FLAG) != 0
129+
#define GNU_PROPERTY_BTI_PAC_GCS \
130+
GNU_PROPERTY(GNU_PROPERTY_AARCH64_FEATURE_1_AND, \
131+
BTI_FLAG | PAC_FLAG | GCS_FLAG)
124132
#else
125-
#define GNU_PROPERTY_BTI_PAC
133+
#define GNU_PROPERTY_BTI_PAC_GCS
126134
#endif
127135

128136
#if defined(__clang__) || defined(__GCC_HAVE_DWARF2_CFI_ASM)

compiler-rt/lib/hwasan/hwasan_interceptors_vfork.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@
1111

1212
NO_EXEC_STACK_DIRECTIVE
1313

14-
GNU_PROPERTY_BTI_PAC
14+
GNU_PROPERTY_BTI_PAC_GCS

compiler-rt/lib/hwasan/hwasan_setjmp_aarch64.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,4 @@ ASM_TRAMPOLINE_ALIAS(_setjmp, setjmp)
9999
// We do not need executable stack.
100100
NO_EXEC_STACK_DIRECTIVE
101101

102-
GNU_PROPERTY_BTI_PAC
102+
GNU_PROPERTY_BTI_PAC_GCS

compiler-rt/lib/hwasan/hwasan_tag_mismatch_aarch64.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,4 +157,4 @@ mismatch:
157157
// We do not need executable stack.
158158
NO_EXEC_STACK_DIRECTIVE
159159

160-
GNU_PROPERTY_BTI_PAC
160+
GNU_PROPERTY_BTI_PAC_GCS

compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,6 @@ ASM_SIZE(vfork)
4343
ASM_INTERCEPTOR_TRAMPOLINE(vfork)
4444
ASM_TRAMPOLINE_ALIAS(vfork, vfork)
4545

46-
GNU_PROPERTY_BTI_PAC
46+
GNU_PROPERTY_BTI_PAC_GCS
4747

4848
#endif

compiler-rt/lib/tsan/rtl/tsan_rtl_aarch64.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,6 @@ ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(__sigsetjmp))
222222

223223
NO_EXEC_STACK_DIRECTIVE
224224

225-
GNU_PROPERTY_BTI_PAC
225+
GNU_PROPERTY_BTI_PAC_GCS
226226

227227
#endif

0 commit comments

Comments
 (0)