aboutsummaryrefslogtreecommitdiffstats
path: root/tools/testing/selftests/arm64/bti/trampoline.S
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2021-03-09 19:37:31 +0000
committerCatalin Marinas <catalin.marinas@arm.com>2021-03-24 15:43:20 +0000
commit314bcbf09f147cfb069bc22207215b6b0b7da510 (patch)
tree2f40e8b4b1e21e84c693821a1786399be5a93936 /tools/testing/selftests/arm64/bti/trampoline.S
parentkselftest/arm64: mte: Report filename on failing temp file creation (diff)
downloadlinux-dev-314bcbf09f147cfb069bc22207215b6b0b7da510.tar.xz
linux-dev-314bcbf09f147cfb069bc22207215b6b0b7da510.zip
kselftest: arm64: Add BTI tests
Add some tests that verify that BTI functions correctly for static binaries built with and without BTI support, verifying that SIGILL is generated when expected and is not generated in other situations. Since BTI support is still being rolled out in distributions these tests are built entirely free standing, no libc support is used at all so none of the standard helper functions for kselftest can be used and we open code everything. This also means we aren't testing the kernel support for the dynamic linker, though the test program can be readily adapted for that once it becomes something that we can reliably build and run. These tests were originally written by Dave Martin, I've adapted them for kselftest, mainly around the build system and the output format. Signed-off-by: Mark Brown <broonie@kernel.org> Cc: Dave Martin <Dave.Martin@arm.com> Link: https://lore.kernel.org/r/20210309193731.57247-1-broonie@kernel.org Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to '')
-rw-r--r--tools/testing/selftests/arm64/bti/trampoline.S29
1 files changed, 29 insertions, 0 deletions
diff --git a/tools/testing/selftests/arm64/bti/trampoline.S b/tools/testing/selftests/arm64/bti/trampoline.S
new file mode 100644
index 000000000000..09beb3f361f1
--- /dev/null
+++ b/tools/testing/selftests/arm64/bti/trampoline.S
@@ -0,0 +1,29 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (C) 2019 Arm Limited
+ * Original author: Dave Martin <Dave.Martin@arm.com>
+ */
+
+#include "assembler.h"
+
+startfn call_using_br_x0
+ bti c
+ br x0
+endfn
+
+startfn call_using_br_x16
+ bti c
+ mov x16, x0
+ br x16
+endfn
+
+startfn call_using_blr
+ paciasp
+ stp x29, x30, [sp, #-16]!
+ blr x0
+ ldp x29, x30, [sp], #16
+ autiasp
+ ret
+endfn
+
+emit_aarch64_feature_1_and