.set GNU_PROPERTY_AARCH64_FEATURE_1_AND, 0xc0000000
.set GNU_PROPERTY_AARCH64_FEATURE_1_BTI, (0x1 << 0)
.set GNU_PROPERTY_AARCH64_FEATURE_1_PAC, (0x1 << 1)
+ .set GNU_PROPERTY_AARCH64_FEATURE_1_GCS, (0x1 << 2)
.set GNU_PROPERTY_AARCH64_FEATURE_1_VALUE, 0x0
.ifndef __mask_property_bti__
.set GNU_PROPERTY_AARCH64_FEATURE_1_VALUE, ( GNU_PROPERTY_AARCH64_FEATURE_1_VALUE | GNU_PROPERTY_AARCH64_FEATURE_1_BTI )
.ifndef __mask_property_pac__
.set GNU_PROPERTY_AARCH64_FEATURE_1_VALUE, ( GNU_PROPERTY_AARCH64_FEATURE_1_VALUE | GNU_PROPERTY_AARCH64_FEATURE_1_PAC )
.endif
+.ifndef __mask_property_gcs__
+ .set GNU_PROPERTY_AARCH64_FEATURE_1_VALUE, ( GNU_PROPERTY_AARCH64_FEATURE_1_VALUE | GNU_PROPERTY_AARCH64_FEATURE_1_GCS )
+.endif
.if GNU_PROPERTY_AARCH64_FEATURE_1_VALUE
.section ".note.gnu.property", "a"
.p2align 3
.set GNU_PROPERTY_AARCH64_FEATURE_1_AND, 0xc0000000
.set GNU_PROPERTY_AARCH64_FEATURE_1_BTI, (0x1 << 0)
.set GNU_PROPERTY_AARCH64_FEATURE_1_PAC, (0x1 << 1)
+ .set GNU_PROPERTY_AARCH64_FEATURE_1_GCS, (0x1 << 2)
.set GNU_PROPERTY_AARCH64_FEATURE_1_VALUE, 0x0
.ifndef __mask_property_bti__
.ifndef __mask_property_pac__
.set GNU_PROPERTY_AARCH64_FEATURE_1_VALUE, ( GNU_PROPERTY_AARCH64_FEATURE_1_VALUE | GNU_PROPERTY_AARCH64_FEATURE_1_PAC )
.endif
+.ifndef __mask_property_gcs__
+ .set GNU_PROPERTY_AARCH64_FEATURE_1_VALUE, ( GNU_PROPERTY_AARCH64_FEATURE_1_VALUE | GNU_PROPERTY_AARCH64_FEATURE_1_GCS )
+.endif
.if GNU_PROPERTY_AARCH64_FEATURE_1_VALUE
.section ".note.gnu.property", "a"
5:
.endif
+.ifndef __mask_property_gcs__
+ .p2align 3
+ .long 1f - 0f /* name length */
+ .long 5f - 2f /* data length */
+ .long NT_GNU_PROPERTY_TYPE_0 /* note type */
+0: .asciz "GNU" /* vendor name */
+1:
+ .p2align 3
+2: .long GNU_PROPERTY_AARCH64_FEATURE_1_AND /* pr_type. */
+ .long 4f - 3f /* pr_datasz. */
+3:
+ .long GNU_PROPERTY_AARCH64_FEATURE_1_GCS
+4:
+ .p2align 3
+5:
+.endif
+
.endif
.set GNU_PROPERTY_AARCH64_FEATURE_1_AND, 0xc0000000
.set GNU_PROPERTY_AARCH64_FEATURE_1_BTI, (0x1 << 0)
.set GNU_PROPERTY_AARCH64_FEATURE_1_PAC, (0x1 << 1)
+ .set GNU_PROPERTY_AARCH64_FEATURE_1_GCS, (0x1 << 2)
.set GNU_PROPERTY_AARCH64_FEATURE_1_VALUE, 0x0
.ifdef __property_bti__
.set GNU_PROPERTY_AARCH64_FEATURE_1_VALUE, ( GNU_PROPERTY_AARCH64_FEATURE_1_VALUE | GNU_PROPERTY_AARCH64_FEATURE_1_BTI )
.ifdef __property_pac__
.set GNU_PROPERTY_AARCH64_FEATURE_1_VALUE, ( GNU_PROPERTY_AARCH64_FEATURE_1_VALUE | GNU_PROPERTY_AARCH64_FEATURE_1_PAC )
.endif
+.ifdef __property_gcs__
+ .set GNU_PROPERTY_AARCH64_FEATURE_1_VALUE, ( GNU_PROPERTY_AARCH64_FEATURE_1_VALUE | GNU_PROPERTY_AARCH64_FEATURE_1_GCS )
+.endif
.if GNU_PROPERTY_AARCH64_FEATURE_1_VALUE
.section ".note.gnu.property", "a"
.p2align 3
.set GNU_PROPERTY_AARCH64_FEATURE_1_AND, 0xc0000000
.set GNU_PROPERTY_AARCH64_FEATURE_1_BTI, (0x1 << 0)
.set GNU_PROPERTY_AARCH64_FEATURE_1_PAC, (0x1 << 1)
+ .set GNU_PROPERTY_AARCH64_FEATURE_1_GCS, (0x1 << 2)
.set GNU_PROPERTY_AARCH64_FEATURE_1_VALUE, 0x0
.ifndef __mask_property_bti__
.ifndef __mask_property_pac__
.set GNU_PROPERTY_AARCH64_FEATURE_1_VALUE, ( GNU_PROPERTY_AARCH64_FEATURE_1_VALUE | GNU_PROPERTY_AARCH64_FEATURE_1_PAC )
.endif
+.ifndef __mask_property_gcs__
+ .set GNU_PROPERTY_AARCH64_FEATURE_1_VALUE, ( GNU_PROPERTY_AARCH64_FEATURE_1_VALUE | GNU_PROPERTY_AARCH64_FEATURE_1_GCS )
+.endif
.if GNU_PROPERTY_AARCH64_FEATURE_1_VALUE
.section ".note.gnu.property", "a"
5:
.endif
+.ifdef __property_gcs__
+ .p2align 3
+ .long 1f - 0f /* name length */
+ .long 5f - 2f /* data length */
+ .long NT_GNU_PROPERTY_TYPE_0 /* note type */
+0: .asciz "GNU" /* vendor name */
+1:
+ .p2align 3
+2: .long GNU_PROPERTY_AARCH64_FEATURE_1_AND /* pr_type. */
+ .long 4f - 3f /* pr_datasz. */
+3:
+ .long GNU_PROPERTY_AARCH64_FEATURE_1_GCS
+4:
+ .p2align 3
+5:
+.endif
+
.endif
Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
- Properties: AArch64 feature: BTI, PAC
+ Properties: AArch64 feature: BTI, PAC, GCS
Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
- Properties: AArch64 feature: BTI, PAC
+ Properties: AArch64 feature: BTI, PAC, GCS
.set GNU_PROPERTY_AARCH64_FEATURE_1_AND, 0xc0000000
.set GNU_PROPERTY_AARCH64_FEATURE_1_BTI, (0x1 << 0)
.set GNU_PROPERTY_AARCH64_FEATURE_1_PAC, (0x1 << 1)
- .set GNU_PROPERTY_AARCH64_FEATURE_1_VALUE, ( GNU_PROPERTY_AARCH64_FEATURE_1_BTI | GNU_PROPERTY_AARCH64_FEATURE_1_PAC )
+ .set GNU_PROPERTY_AARCH64_FEATURE_1_GCS, (0x1 << 2)
+ .set GNU_PROPERTY_AARCH64_FEATURE_1_VALUE, ( GNU_PROPERTY_AARCH64_FEATURE_1_BTI | GNU_PROPERTY_AARCH64_FEATURE_1_PAC | GNU_PROPERTY_AARCH64_FEATURE_1_GCS )
.section ".note.gnu.property", "a"
.p2align 3
#name: GNU Property: readelf (combine 2 object files: all + all)
#source: gnu-properties-all.s
#source: gnu-properties-selectable.s
-#as: -mabi=lp64 -defsym __property_bti__=1 -defsym __property_pac__=1
+#as: -mabi=lp64 -defsym __property_bti__=1 -defsym __property_pac__=1 -defsym __property_gcs__=1
#ld: -e _start
#readelf: -n
#target: *linux*
Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
- Properties: AArch64 feature: BTI, PAC
+ Properties: AArch64 feature: BTI, PAC, GCS
--- /dev/null
+#name: GNU Property: readelf (combine 2 object files: all + BTI + PAC)
+#source: gnu-properties-all.s
+#source: gnu-properties-selectable.s
+#as: -mabi=lp64 -defsym __property_bti__=1 -defsym __property_pac__=1
+#ld: -e _start
+#readelf: -n
+#target: *linux*
+
+Displaying notes found in: .note.gnu.property
+[ ]+Owner[ ]+Data size[ ]+Description
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
+ Properties: AArch64 feature: BTI, PAC
--- /dev/null
+#name: GNU Property: readelf (combine 2 object files: all + GCS only)
+#source: gnu-properties-all.s
+#source: gnu-properties-selectable.s
+#as: -mabi=lp64 -defsym __property_gcs__=1
+#ld: -e _start
+#readelf: -n
+#target: *linux*
+
+Displaying notes found in: .note.gnu.property
+[ ]+Owner[ ]+Data size[ ]+Description
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
+ Properties: AArch64 feature: GCS