|
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