mirror of
https://code.videolan.org/videolan/dav1d
synced 2026-06-11 04:03:05 +00:00
arm: Add Armv9.3-A GCS (Guarded Control Stack) support
Signal that our assembly is compliant with the GCS feature, if the GCS feature is enabled in the compiler (available since Clang 18 and GCC 15) - this is enabled by -mbranch-protection=standard with a new enough compiler. GCS doesn't require any specific modifications to the assembly code, but requires that all functions return to the expected call address (checked through a shadow stack).
This commit is contained in:
+9
-3
@@ -193,8 +193,14 @@ DISABLE_SVE2
|
||||
|
||||
#endif /* !__ARM_FEATURE_PAC_DEFAULT */
|
||||
|
||||
#if defined(__ARM_FEATURE_GCS_DEFAULT) && __ARM_FEATURE_GCS_DEFAULT == 1
|
||||
#define GNU_PROPERTY_AARCH64_GCS (1 << 2)
|
||||
#else
|
||||
#define GNU_PROPERTY_AARCH64_GCS 0 /* No GCS */
|
||||
#endif
|
||||
|
||||
#if (GNU_PROPERTY_AARCH64_BTI != 0 || GNU_PROPERTY_AARCH64_PAC != 0) && defined(__ELF__)
|
||||
|
||||
#if (GNU_PROPERTY_AARCH64_BTI != 0 || GNU_PROPERTY_AARCH64_PAC != 0 || GNU_PROPERTY_AARCH64_GCS != 0) && defined(__ELF__)
|
||||
.pushsection .note.gnu.property, "a"
|
||||
.balign 8
|
||||
.long 4
|
||||
@@ -203,10 +209,10 @@ DISABLE_SVE2
|
||||
.asciz "GNU"
|
||||
.long 0xc0000000 /* GNU_PROPERTY_AARCH64_FEATURE_1_AND */
|
||||
.long 4
|
||||
.long (GNU_PROPERTY_AARCH64_BTI | GNU_PROPERTY_AARCH64_PAC)
|
||||
.long (GNU_PROPERTY_AARCH64_BTI | GNU_PROPERTY_AARCH64_PAC | GNU_PROPERTY_AARCH64_GCS)
|
||||
.long 0
|
||||
.popsection
|
||||
#endif /* (GNU_PROPERTY_AARCH64_BTI != 0 || GNU_PROPERTY_AARCH64_PAC != 0) && defined(__ELF__) */
|
||||
#endif /* (GNU_PROPERTY_AARCH64_BTI != 0 || GNU_PROPERTY_AARCH64_PAC != 0 || GNU_PROPERTY_AARCH64_GCS != 0) && defined(__ELF__) */
|
||||
#endif /* ARCH_AARCH64 */
|
||||
|
||||
#if ARCH_ARM
|
||||
|
||||
Reference in New Issue
Block a user