|
79 | 79 | #define FUNC_ALIGN |
80 | 80 | #endif |
81 | 81 |
|
82 | | -// BTI and PAC gnu property note |
| 82 | +// BTI, PAC, and GCS gnu property note |
83 | 83 | #define NT_GNU_PROPERTY_TYPE_0 5 |
84 | 84 | #define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000 |
85 | 85 | #define GNU_PROPERTY_AARCH64_FEATURE_1_BTI 1 |
86 | 86 | #define GNU_PROPERTY_AARCH64_FEATURE_1_PAC 2 |
| 87 | +#define GNU_PROPERTY_AARCH64_FEATURE_1_GCS 4 |
87 | 88 |
|
88 | 89 | #if defined(__ARM_FEATURE_BTI_DEFAULT) |
89 | 90 | #define BTI_FLAG GNU_PROPERTY_AARCH64_FEATURE_1_BTI |
|
97 | 98 | #define PAC_FLAG 0 |
98 | 99 | #endif |
99 | 100 |
|
| 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 | + |
100 | 107 | #define GNU_PROPERTY(type, value) \ |
101 | 108 | .pushsection .note.gnu.property, "a" SEPARATOR \ |
102 | 109 | .p2align 3 SEPARATOR \ |
|
118 | 125 | #define BTI_J |
119 | 126 | #endif |
120 | 127 |
|
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) |
124 | 132 | #else |
125 | | -#define GNU_PROPERTY_BTI_PAC |
| 133 | +#define GNU_PROPERTY_BTI_PAC_GCS |
126 | 134 | #endif |
127 | 135 |
|
128 | 136 | #if defined(__clang__) || defined(__GCC_HAVE_DWARF2_CFI_ASM) |
|
0 commit comments