]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
aarch64: improve test coverage for combination of BTI options
authorMatthieu Longo <matthieu.longo@arm.com>
Mon, 2 Dec 2024 09:46:21 +0000 (09:46 +0000)
committerMatthieu Longo <matthieu.longo@arm.com>
Mon, 2 Dec 2024 15:18:41 +0000 (15:18 +0000)
19 files changed:
ld/testsuite/ld-aarch64/protections/bti-plt-1-a.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/protections/bti-plt-1-b.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/protections/bti-plt-1-c.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/protections/bti-plt-2-a-i.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/protections/bti-plt-2-a-ii.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/protections/bti-plt-2-a-iii.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/protections/bti-plt-2-a-iv.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/protections/bti-plt-2-a-v.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/protections/bti-plt-2-b.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/protections/bti-plt-2-c.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/protections/bti-plt-3.d
ld/testsuite/ld-aarch64/protections/bti-plt-4-a-i.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/protections/bti-plt-4-a-ii.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/protections/bti-plt-4-a-iii.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/protections/bti-plt-4-a-iv.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/protections/bti-plt-4-a-v.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/protections/bti-plt-4-b.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/protections/bti-plt-4-c.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/protections/bti-plt-6.d

diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-1-a.d b/ld/testsuite/ld-aarch64/protections/bti-plt-1-a.d
new file mode 100644 (file)
index 0000000..2dc3864
--- /dev/null
@@ -0,0 +1,32 @@
+#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
diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-1-b.d b/ld/testsuite/ld-aarch64/protections/bti-plt-1-b.d
new file mode 100644 (file)
index 0000000..1bf956c
--- /dev/null
@@ -0,0 +1,32 @@
+#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
diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-1-c.d b/ld/testsuite/ld-aarch64/protections/bti-plt-1-c.d
new file mode 100644 (file)
index 0000000..2eba994
--- /dev/null
@@ -0,0 +1,33 @@
+#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
diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-2-a-i.d b/ld/testsuite/ld-aarch64/protections/bti-plt-2-a-i.d
new file mode 100644 (file)
index 0000000..52fa96c
--- /dev/null
@@ -0,0 +1,17 @@
+#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
diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-2-a-ii.d b/ld/testsuite/ld-aarch64/protections/bti-plt-2-a-ii.d
new file mode 100644 (file)
index 0000000..c1c6db6
--- /dev/null
@@ -0,0 +1,8 @@
+#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.*
diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-2-a-iii.d b/ld/testsuite/ld-aarch64/protections/bti-plt-2-a-iii.d
new file mode 100644 (file)
index 0000000..1bf038d
--- /dev/null
@@ -0,0 +1,17 @@
+#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
diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-2-a-iv.d b/ld/testsuite/ld-aarch64/protections/bti-plt-2-a-iv.d
new file mode 100644 (file)
index 0000000..02a6a3c
--- /dev/null
@@ -0,0 +1,12 @@
+#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
diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-2-a-v.d b/ld/testsuite/ld-aarch64/protections/bti-plt-2-a-v.d
new file mode 100644 (file)
index 0000000..895d64e
--- /dev/null
@@ -0,0 +1,17 @@
+#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
diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-2-b.d b/ld/testsuite/ld-aarch64/protections/bti-plt-2-b.d
new file mode 100644 (file)
index 0000000..2873918
--- /dev/null
@@ -0,0 +1,12 @@
+#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
diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-2-c.d b/ld/testsuite/ld-aarch64/protections/bti-plt-2-c.d
new file mode 100644 (file)
index 0000000..1f3df04
--- /dev/null
@@ -0,0 +1,12 @@
+#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
index 80dbceccf64cf97dee428b7061a86f75466f8d2f..e457babb4cedb6d7473039c695adbf56f84481f7 100644 (file)
@@ -1,4 +1,4 @@
-#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
@@ -9,7 +9,7 @@
 
 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_>
diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-4-a-i.d b/ld/testsuite/ld-aarch64/protections/bti-plt-4-a-i.d
new file mode 100644 (file)
index 0000000..ed85f96
--- /dev/null
@@ -0,0 +1,15 @@
+#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
diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-4-a-ii.d b/ld/testsuite/ld-aarch64/protections/bti-plt-4-a-ii.d
new file mode 100644 (file)
index 0000000..2d8b9b5
--- /dev/null
@@ -0,0 +1,6 @@
+#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.*
diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-4-a-iii.d b/ld/testsuite/ld-aarch64/protections/bti-plt-4-a-iii.d
new file mode 100644 (file)
index 0000000..1abd61b
--- /dev/null
@@ -0,0 +1,15 @@
+#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
diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-4-a-iv.d b/ld/testsuite/ld-aarch64/protections/bti-plt-4-a-iv.d
new file mode 100644 (file)
index 0000000..0f26b45
--- /dev/null
@@ -0,0 +1,11 @@
+#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
diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-4-a-v.d b/ld/testsuite/ld-aarch64/protections/bti-plt-4-a-v.d
new file mode 100644 (file)
index 0000000..44b3276
--- /dev/null
@@ -0,0 +1,15 @@
+#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
diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-4-b.d b/ld/testsuite/ld-aarch64/protections/bti-plt-4-b.d
new file mode 100644 (file)
index 0000000..e38ef21
--- /dev/null
@@ -0,0 +1,11 @@
+#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
diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-4-c.d b/ld/testsuite/ld-aarch64/protections/bti-plt-4-c.d
new file mode 100644 (file)
index 0000000..575d559
--- /dev/null
@@ -0,0 +1,11 @@
+#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
index df5c063431773061e86ed790b0bca450efcb1d56..6bbba57ff035a27460b2004b5b2cf5b552b14cd7 100644 (file)
@@ -1,4 +1,4 @@
-#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]
@@ -7,8 +7,8 @@
 #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