https://gcc.gnu.org/g:99a291c0313e8e839c3ffd1fdc5132b4d6462968

commit 99a291c0313e8e839c3ffd1fdc5132b4d6462968
Author: Szabolcs Nagy <szabolcs.n...@arm.com>
Date:   Tue May 9 14:32:46 2023 +0100

    aarch64: Emit GNU property NOTE for GCS
    
    TODO: relies on experimental binutils ABI, should use build attributes.
    
    gcc/ChangeLog:
    
            * config/aarch64/aarch64.cc (GNU_PROPERTY_AARCH64_FEATURE_1_GCS):
            Define.
            (aarch64_file_end_indicate_exec_stack): Set GCS property bit.

Diff:
---
 gcc/config/aarch64/aarch64.cc | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
index 73969721906..0119cfdd67b 100644
--- a/gcc/config/aarch64/aarch64.cc
+++ b/gcc/config/aarch64/aarch64.cc
@@ -28962,6 +28962,7 @@ aarch64_can_tag_addresses ()
 #define GNU_PROPERTY_AARCH64_FEATURE_1_AND     0xc0000000
 #define GNU_PROPERTY_AARCH64_FEATURE_1_BTI     (1U << 0)
 #define GNU_PROPERTY_AARCH64_FEATURE_1_PAC     (1U << 1)
+#define GNU_PROPERTY_AARCH64_FEATURE_1_GCS     (1U << 2)
 void
 aarch64_file_end_indicate_exec_stack ()
 {
@@ -28974,6 +28975,9 @@ aarch64_file_end_indicate_exec_stack ()
   if (aarch_ra_sign_scope != AARCH_FUNCTION_NONE)
     feature_1_and |= GNU_PROPERTY_AARCH64_FEATURE_1_PAC;
 
+  if (aarch64_gcs_enabled ())
+    feature_1_and |= GNU_PROPERTY_AARCH64_FEATURE_1_GCS;
+
   if (feature_1_and)
     {
       /* Generate .note.gnu.property section.  */
@@ -29005,6 +29009,7 @@ aarch64_file_end_indicate_exec_stack ()
       assemble_align (POINTER_SIZE);
     }
 }
+#undef GNU_PROPERTY_AARCH64_FEATURE_1_GCS
 #undef GNU_PROPERTY_AARCH64_FEATURE_1_PAC
 #undef GNU_PROPERTY_AARCH64_FEATURE_1_BTI
 #undef GNU_PROPERTY_AARCH64_FEATURE_1_AND

Reply via email to