--- /dev/null
+#name: Specifying '-z force-bti' along feature properties (BTI) forces the generation of BTI PLT (shared)
+#source: bti-plt-1.s
+#target: [check_shared_lib_support]
+#as: -mabi=lp64 -defsym __property_bti__=1
+#ld: -shared -z force-bti -T bti-plt.ld -L./tmpdir -lbti-plt-so
+#objdump: -dr -j .plt
+
+[^:]*: *file format elf64-.*aarch64
+
+Disassembly of section \.plt:
+
+[0-9]+ <\.plt>:
+.*: d503245f bti c
+.*: a9bf7bf0 stp x16, x30, \[sp, #-16\]!
+.*: 90000090 adrp x16, 28000 <_GLOBAL_OFFSET_TABLE_>
+.*: f9400e11 ldr x17, \[x16, #24\]
+.*: 91006210 add x16, x16, #0x18
+.*: d61f0220 br x17
+.*: d503201f nop
+.*: d503201f nop
+
+[0-9]+ <.*>:
+.*: 90000090 adrp x16, 28000 <_GLOBAL_OFFSET_TABLE_>
+.*: f9401211 ldr x17, \[x16, #32\]
+.*: 91008210 add x16, x16, #0x20
+.*: d61f0220 br x17
+
+[0-9]+ <.*>:
+.*: 90000090 adrp x16, 28000 <_GLOBAL_OFFSET_TABLE_>
+.*: f9401611 ldr x17, \[x16, #40\]
+.*: 9100a210 add x16, x16, #0x28
+.*: d61f0220 br x17
--- /dev/null
+#name: No '-z force-bti' with feature properties (BTI) forces the generation of BTI PLT (shared)
+#source: bti-plt-1.s
+#target: [check_shared_lib_support]
+#as: -mabi=lp64 -defsym __property_bti__=1
+#ld: -shared -z force-bti -T bti-plt.ld -L./tmpdir -lbti-plt-so
+#objdump: -dr -j .plt
+
+[^:]*: *file format elf64-.*aarch64
+
+Disassembly of section \.plt:
+
+[0-9]+ <\.plt>:
+.*: d503245f bti c
+.*: a9bf7bf0 stp x16, x30, \[sp, #-16\]!
+.*: 90000090 adrp x16, 28000 <_GLOBAL_OFFSET_TABLE_>
+.*: f9400e11 ldr x17, \[x16, #24\]
+.*: 91006210 add x16, x16, #0x18
+.*: d61f0220 br x17
+.*: d503201f nop
+.*: d503201f nop
+
+[0-9]+ <.*>:
+.*: 90000090 adrp x16, 28000 <_GLOBAL_OFFSET_TABLE_>
+.*: f9401211 ldr x17, \[x16, #32\]
+.*: 91008210 add x16, x16, #0x20
+.*: d61f0220 br x17
+
+[0-9]+ <.*>:
+.*: 90000090 adrp x16, 28000 <_GLOBAL_OFFSET_TABLE_>
+.*: f9401611 ldr x17, \[x16, #40\]
+.*: 9100a210 add x16, x16, #0x28
+.*: d61f0220 br x17
--- /dev/null
+#name: Specifying '-z force-bti' without feature properties forces the generation of BTI PLT (shared)
+#source: bti-plt-1.s
+#target: [check_shared_lib_support]
+#as: -mabi=lp64
+#ld: -shared -z force-bti -T bti-plt.ld -L./tmpdir -lbti-plt-so
+#warning: .*bti-plt-1\.o: warning: BTI turned on by -z force-bti.*
+#objdump: -dr -j .plt
+
+[^:]*: *file format elf64-.*aarch64
+
+Disassembly of section \.plt:
+
+[0-9]+ <\.plt>:
+.*: d503245f bti c
+.*: a9bf7bf0 stp x16, x30, \[sp, #-16\]!
+.*: 90000090 adrp x16, 28000 <_GLOBAL_OFFSET_TABLE_>
+.*: f9400e11 ldr x17, \[x16, #24\]
+.*: 91006210 add x16, x16, #0x18
+.*: d61f0220 br x17
+.*: d503201f nop
+.*: d503201f nop
+
+[0-9]+ <.*>:
+.*: 90000090 adrp x16, 28000 <_GLOBAL_OFFSET_TABLE_>
+.*: f9401211 ldr x17, \[x16, #32\]
+.*: 91008210 add x16, x16, #0x20
+.*: d61f0220 br x17
+
+[0-9]+ <.*>:
+.*: 90000090 adrp x16, 28000 <_GLOBAL_OFFSET_TABLE_>
+.*: f9401611 ldr x17, \[x16, #40\]
+.*: 9100a210 add x16, x16, #0x28
+.*: d61f0220 br x17
--- /dev/null
+#name: Specifying only '-z force-bti' emits BTI feature and reports warnings (shared)
+#source: bti-plt-1.s
+#source: bti-plt-2.s
+#target: [check_shared_lib_support]
+#as: -mabi=lp64
+#ld: -shared -z force-bti -T bti-plt.ld
+#warning: .*bti-plt-2\.o: warning: BTI turned on by -z force-bti.*
+#warning: .*bti-plt-1\.o: warning: BTI turned on by -z force-bti.*
+#readelf: -n
+
+# Should warn about the missing input BTI NOTE but should still mark
+# output as BTI.
+
+Displaying notes found in: .note.gnu.property
+[ ]+Owner[ ]+Data size[ ]+Description
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
+ Properties: AArch64 feature: BTI
--- /dev/null
+#name: Specifying '-z force-bti -z bti-report=error' reports errors (shared)
+#source: bti-plt-1.s
+#source: bti-plt-2.s
+#target: [check_shared_lib_support]
+#as: -mabi=lp64
+#ld: -shared -z force-bti -z bti-report=error -T bti-plt.ld
+#error: .*bti-plt-2\.o: error: BTI turned on by -z force-bti.*
+#error: .*bti-plt-1\.o: error: BTI turned on by -z force-bti.*
--- /dev/null
+#name: Specifying '-z force-bti -z bti-report=warning' emits BTI feature and reports warnings (shared)
+#source: bti-plt-1.s
+#source: bti-plt-2.s
+#target: [check_shared_lib_support]
+#as: -mabi=lp64
+#ld: -shared -z force-bti -z bti-report=warning -T bti-plt.ld
+#warning: .*bti-plt-2\.o: warning: BTI turned on by -z force-bti.*
+#warning: .*bti-plt-1\.o: warning: BTI turned on by -z force-bti.*
+#readelf: -n
+
+# Should warn about the missing input BTI NOTE but should still mark
+# output as BTI.
+
+Displaying notes found in: .note.gnu.property
+[ ]+Owner[ ]+Data size[ ]+Description
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
+ Properties: AArch64 feature: BTI
--- /dev/null
+#name: Specifying '-z force-bti -z bti-report=none' emits BTI feature and reports nothing (shared)
+#source: bti-plt-1.s
+#source: bti-plt-2.s
+#target: [check_shared_lib_support]
+#as: -mabi=lp64
+#ld: -shared -z force-bti -z bti-report=none -T bti-plt.ld
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ ]+Owner[ ]+Data size[ ]+Description
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
+ Properties: AArch64 feature: BTI
--- /dev/null
+#name: Specifying '-z force-bti -z bti-report' emits BTI feature and reports warnings (shared)
+#source: bti-plt-1.s
+#source: bti-plt-2.s
+#target: [check_shared_lib_support]
+#as: -mabi=lp64
+#ld: -shared -z force-bti -z bti-report -T bti-plt.ld
+#warning: .*bti-plt-2\.o: warning: BTI turned on by -z force-bti.*
+#warning: .*bti-plt-1\.o: warning: BTI turned on by -z force-bti.*
+#readelf: -n
+
+# Should warn about the missing input BTI NOTE but should still mark
+# output as BTI.
+
+Displaying notes found in: .note.gnu.property
+[ ]+Owner[ ]+Data size[ ]+Description
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
+ Properties: AArch64 feature: BTI
--- /dev/null
+#name: No '-z force-bti' and all input objects with BTI feature emits BTI feature (shared)
+#source: bti-plt-1.s
+#source: bti-plt-2.s
+#target: [check_shared_lib_support]
+#as: -mabi=lp64 -defsym __property_bti__=1
+#ld: -shared -T bti-plt.ld
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ ]+Owner[ ]+Data size[ ]+Description
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
+ Properties: AArch64 feature: BTI
--- /dev/null
+#name: Specifying '-z force-bti' and all input objects with BTI feature emits BTI feature and reports no warning (shared)
+#source: bti-plt-1.s
+#source: bti-plt-2.s
+#target: [check_shared_lib_support]
+#as: -mabi=lp64 -defsym __property_bti__=1
+#ld: -shared -z force-bti -T bti-plt.ld
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ ]+Owner[ ]+Data size[ ]+Description
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
+ Properties: AArch64 feature: BTI
-#name: Check -z force-bti emits BTI PLT (exec)
+#name: Specifying '-z force-bti' along feature properties (BTI) forces the generation of BTI PLT (exec)
#source: bti-plt-1.s
#target: [check_shared_lib_support]
#as: -mabi=lp64 -defsym __property_bti__=1
Disassembly of section \.plt:
-[0-9]+ <.*>:
+[0-9]+ <\.plt>:
.*: d503245f bti c
.*: a9bf7bf0 stp x16, x30, \[sp, #-16\]!
.*: 90000090 adrp x16, 28000 <_GLOBAL_OFFSET_TABLE_>
--- /dev/null
+#name: Specifying only '-z force-bti' emits BTI feature and reports warnings (exec)
+#source: bti-plt-1.s
+#target: [check_shared_lib_support]
+#as: -mabi=lp64
+#ld: -z force-bti -e _start -T bti-plt.ld -L./tmpdir -lbti-plt-so
+#warning: .*bti-plt-1\.o: warning: BTI turned on by -z force-bti.*
+#readelf: -n
+
+# Should warn about the missing input BTI NOTE but should still mark
+# output as BTI.
+
+Displaying notes found in: .note.gnu.property
+[ ]+Owner[ ]+Data size[ ]+Description
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
+ Properties: AArch64 feature: BTI
\ No newline at end of file
--- /dev/null
+#name: Specifying '-z force-bti -z bti-report=error' reports errors (exec)
+#source: bti-plt-1.s
+#target: [check_shared_lib_support]
+#as: -mabi=lp64
+#ld: -z force-bti -z bti-report=error -e _start -T bti-plt.ld -L./tmpdir -lbti-plt-so
+#error: .*bti-plt-1\.o: error: BTI turned on by -z force-bti.*
--- /dev/null
+#name: Specifying '-z force-bti -z bti-report=warning' emits BTI feature and reports warnings (exec)
+#source: bti-plt-1.s
+#target: [check_shared_lib_support]
+#as: -mabi=lp64
+#ld: -z force-bti -z bti-report=warning -e _start -T bti-plt.ld -L./tmpdir -lbti-plt-so
+#warning: .*bti-plt-1\.o: warning: BTI turned on by -z force-bti.*
+#readelf: -n
+
+# Should warn about the missing input BTI NOTE but should still mark
+# output as BTI.
+
+Displaying notes found in: .note.gnu.property
+[ ]+Owner[ ]+Data size[ ]+Description
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
+ Properties: AArch64 feature: BTI
--- /dev/null
+#name: Specifying '-z force-bti -z bti-report=none' emits BTI feature and reports nothing (exec)
+#source: bti-plt-1.s
+#target: [check_shared_lib_support]
+#as: -mabi=lp64
+#ld: -z force-bti -z bti-report=none -e _start -T bti-plt.ld -L./tmpdir -lbti-plt-so
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ ]+Owner[ ]+Data size[ ]+Description
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
+ Properties: AArch64 feature: BTI
--- /dev/null
+#name: Specifying '-z force-bti -z bti-report' emits BTI feature and reports warnings (exec)
+#source: bti-plt-1.s
+#target: [check_shared_lib_support]
+#as: -mabi=lp64
+#ld: -z force-bti -z bti-report -e _start -T bti-plt.ld -L./tmpdir -lbti-plt-so
+#warning: .*bti-plt-1\.o: warning: BTI turned on by -z force-bti.*
+#readelf: -n
+
+# Should warn about the missing input BTI NOTE but should still mark
+# output as BTI.
+
+Displaying notes found in: .note.gnu.property
+[ ]+Owner[ ]+Data size[ ]+Description
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
+ Properties: AArch64 feature: BTI
--- /dev/null
+#name: No '-z force-bti' and all input objects with BTI feature emits BTI feature (exec)
+#source: bti-plt-1.s
+#target: [check_shared_lib_support]
+#as: -mabi=lp64 -defsym __property_bti__=1
+#ld: -e _start -T bti-plt.ld -L./tmpdir -lbti-plt-so
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ ]+Owner[ ]+Data size[ ]+Description
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
+ Properties: AArch64 feature: BTI
--- /dev/null
+#name: Specifying '-z force-bti' and all input objects with BTI feature emits BTI feature and reports no warning (exec)
+#source: bti-plt-1.s
+#target: [check_shared_lib_support]
+#as: -mabi=lp64 -defsym __property_bti__=1
+#ld: -z force-bti -e _start -T bti-plt.ld -L./tmpdir -lbti-plt-so
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ ]+Owner[ ]+Data size[ ]+Description
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
+ Properties: AArch64 feature: BTI
-#name: Warn with one missing GNU NOTE BTI input
+#name: Specifying '-z force-bti' and warn only on inputs with missing BTI feature
#source: property-bti-pac2.s
#source: property-bti-pac1.s
#target: [check_shared_lib_support]
#warning: .*property-bti-pac2.*: warning: BTI turned on by -z force-bti.*$
#readelf: -n
-# Should warn about the missing input BTI NOTE but should
-# still mark output as BTI
+# Should warn about the missing input BTI NOTE but should still mark
+# output as BTI.
Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description