]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
aarch64: ld: add tests for combination of bti and memory-seal
authorYury Khrustalev <yury.khrustalev@arm.com>
Tue, 1 Apr 2025 14:42:18 +0000 (15:42 +0100)
committerYury Khrustalev <yury.khrustalev@arm.com>
Thu, 17 Apr 2025 11:34:30 +0000 (12:34 +0100)
Both BTI and memory sealing require use of GNU properties and
we should check that there is no interference.

ld/testsuite/ld-aarch64/protections/bti-and-memory-seal-plt-1-a.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/protections/bti-and-memory-seal-plt-1-b.d [new file with mode: 0644]

diff --git a/ld/testsuite/ld-aarch64/protections/bti-and-memory-seal-plt-1-a.d b/ld/testsuite/ld-aarch64/protections/bti-and-memory-seal-plt-1-a.d
new file mode 100644 (file)
index 0000000..f8b1c21
--- /dev/null
@@ -0,0 +1,45 @@
+#name: No '-z force-bti' with '-z memory-seal' with feature properties (BTI) forces the generation of BTI PLT (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 memory-seal -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
+
+[0-9]+ <.*>:
+.*:    90000090        adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
+.*:    f9401a11        ldr     x17, \[x16, #48\]
+.*:    9100c210        add     x16, x16, #0x30
+.*:    d61f0220        br      x17
+
+[0-9]+ <.*>:
+.*:    90000090        adrp    x16, 28000 <_GLOBAL_OFFSET_TABLE_>
+.*:    f9401e11        ldr     x17, \[x16, #56\]
+.*:    9100e210        add     x16, x16, #0x38
+.*:    d61f0220        br      x17
diff --git a/ld/testsuite/ld-aarch64/protections/bti-and-memory-seal-plt-1-b.d b/ld/testsuite/ld-aarch64/protections/bti-and-memory-seal-plt-1-b.d
new file mode 100644 (file)
index 0000000..0dadcc9
--- /dev/null
@@ -0,0 +1,14 @@
+#name: No '-z force-bti' with '-z memory-seal' all input objects have BTI 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: -z memory-seal -shared -T bti-plt.ld
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[      ]+Owner[        ]+Data size[    ]+Description
+  GNU                  0x00000018      NT_GNU_PROPERTY_TYPE_0
+      Properties: memory seal\s
+\s+AArch64 feature: BTI
+#pass