mirror_ubuntu-kernels/tools/testing/selftests/arm64
Andre Przywara ec3c7cecec kselftest/arm64: bti: force static linking
BugLink: https://bugs.launchpad.net/bugs/1981864

[ Upstream commit d7a49291d7 ]

The "bti" selftests are built with -nostdlib, which apparently
automatically creates a statically linked binary, which is what we want
and need for BTI (to avoid interactions with the dynamic linker).

However this is not true when building a PIE binary, which some
toolchains (Ubuntu) configure as the default.
When compiling btitest with such a toolchain, it will create a
dynamically linked binary, which will probably fail some tests, as the
dynamic linker might not support BTI:
===================
TAP version 13
1..18
not ok 1 nohint_func/call_using_br_x0
not ok 2 nohint_func/call_using_br_x16
not ok 3 nohint_func/call_using_blr
....
===================

To make sure we create static binaries, add an explicit -static on the
linker command line. This forces static linking even if the toolchain
defaults to PIE builds, and fixes btitest runs on BTI enabled machines.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Mark Brown <broonie@kernel.org>
Fixes: 314bcbf09f ("kselftest: arm64: Add BTI tests")
Link: https://lore.kernel.org/r/20220511172129.2078337-1-andre.przywara@arm.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
2022-08-10 09:24:31 +02:00
..
bti kselftest/arm64: bti: force static linking 2022-08-10 09:24:31 +02:00
fp kselftest/arm64: Add a TODO list for floating point tests 2021-08-03 16:20:05 +01:00
mte kselftest/arm64: mte: Fix misleading output when skipping tests 2021-08-20 11:11:05 +01:00
pauth kselftest/arm64: pac: Fix skipping of tests on systems without PAC 2021-08-20 12:06:59 +01:00
signal kselftest/arm64: signal: Skip tests if required features are missing 2021-09-21 18:12:03 +01:00
tags .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
Makefile kselftest: arm64: Add BTI tests 2021-03-24 15:43:20 +00:00
README kselftest: arm64: extend toplevel skeleton Makefile 2019-11-08 11:10:30 +00:00

KSelfTest ARM64
===============

- These tests are arm64 specific and so not built or run but just skipped
  completely when env-variable ARCH is found to be different than 'arm64'
  and `uname -m` reports other than 'aarch64'.

- Holding true the above, ARM64 KSFT tests can be run within the KSelfTest
  framework using standard Linux top-level-makefile targets:

      $ make TARGETS=arm64 kselftest-clean
      $ make TARGETS=arm64 kselftest

      or

      $ make -C tools/testing/selftests TARGETS=arm64 \
		INSTALL_PATH=<your-installation-path> install

      or, alternatively, only specific arm64/ subtargets can be picked:

      $ make -C tools/testing/selftests TARGETS=arm64 ARM64_SUBTARGETS="tags signal" \
		INSTALL_PATH=<your-installation-path> install

   Further details on building and running KFST can be found in:
     Documentation/dev-tools/kselftest.rst