diff options
author | Matthieu Longo <matthieu.longo@arm.com> | 2024-12-02 09:46:21 +0000 |
---|---|---|
committer | Matthieu Longo <matthieu.longo@arm.com> | 2024-12-02 15:18:41 +0000 |
commit | 83c22eb44e4b9c594e7d7590d1a9f1a509ae7b0a (patch) | |
tree | 0c938c1e15e98473f71bfcc7e1ddff40e06bb3bf | |
parent | 82061f8093f1ddd5bb26708de6be220315460ff9 (diff) | |
download | binutils-83c22eb44e4b9c594e7d7590d1a9f1a509ae7b0a.zip binutils-83c22eb44e4b9c594e7d7590d1a9f1a509ae7b0a.tar.gz binutils-83c22eb44e4b9c594e7d7590d1a9f1a509ae7b0a.tar.bz2 |
aarch64: improve test coverage for combination of BTI options
19 files changed, 281 insertions, 5 deletions
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 index 0000000..2dc3864 --- /dev/null +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-1-a.d @@ -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 index 0000000..1bf956c --- /dev/null +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-1-b.d @@ -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 index 0000000..2eba994 --- /dev/null +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-1-c.d @@ -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 index 0000000..52fa96c --- /dev/null +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-2-a-i.d @@ -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 index 0000000..c1c6db6 --- /dev/null +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-2-a-ii.d @@ -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 index 0000000..1bf038d --- /dev/null +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-2-a-iii.d @@ -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 index 0000000..02a6a3c --- /dev/null +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-2-a-iv.d @@ -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 index 0000000..895d64e --- /dev/null +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-2-a-v.d @@ -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 index 0000000..2873918 --- /dev/null +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-2-b.d @@ -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 index 0000000..1f3df04 --- /dev/null +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-2-c.d @@ -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 diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-3.d b/ld/testsuite/ld-aarch64/protections/bti-plt-3.d index 80dbcec..e457bab 100644 --- a/ld/testsuite/ld-aarch64/protections/bti-plt-3.d +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-3.d @@ -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 index 0000000..ed85f96 --- /dev/null +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-4-a-i.d @@ -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 index 0000000..2d8b9b5 --- /dev/null +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-4-a-ii.d @@ -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 index 0000000..1abd61b --- /dev/null +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-4-a-iii.d @@ -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 index 0000000..0f26b45 --- /dev/null +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-4-a-iv.d @@ -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 index 0000000..44b3276 --- /dev/null +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-4-a-v.d @@ -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 index 0000000..e38ef21 --- /dev/null +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-4-b.d @@ -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 index 0000000..575d559 --- /dev/null +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-4-c.d @@ -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 diff --git a/ld/testsuite/ld-aarch64/protections/bti-plt-6.d b/ld/testsuite/ld-aarch64/protections/bti-plt-6.d index df5c063..6bbba57 100644 --- a/ld/testsuite/ld-aarch64/protections/bti-plt-6.d +++ b/ld/testsuite/ld-aarch64/protections/bti-plt-6.d @@ -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 |