kselftest/arm64: Don't enable v8.5 for MTE selftest builds
authorMark Brown <broonie@kernel.org>
Wed, 28 Sep 2022 15:45:17 +0000 (16:45 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Thu, 29 Sep 2022 16:34:40 +0000 (17:34 +0100)
Currently we set -march=armv8.5+memtag when building the MTE selftests,
allowing the compiler to emit v8.5 and MTE instructions for anything it
generates. This means that we may get code that will generate SIGILLs when
run on older systems rather than skipping on non-MTE systems as should be
the case. Most toolchains don't select any incompatible instructions but
I have seen some reports which suggest that some may be appearing which do
so. This is also potentially problematic in that if the compiler chooses to
emit any MTE instructions for the C code it may interfere with the MTE
usage we are trying to test.

Since the only reason we are specifying this option is to allow us to
assemble MTE instructions in mte_helper.S we can avoid these issues by
moving to using a .arch directive there and adding the -march explicitly to
the toolchain support check instead of the generic CFLAGS.

Signed-off-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20220928154517.173108-1-broonie@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
tools/testing/selftests/arm64/mte/Makefile
tools/testing/selftests/arm64/mte/mte_helper.S

index a5a0744423d8671a2b76bdedc302892139a9cd8e..037046f5784eac18aa868171c65867806752b270 100644 (file)
@@ -11,11 +11,8 @@ LDFLAGS += -pthread
 SRCS := $(filter-out mte_common_util.c,$(wildcard *.c))
 PROGS := $(patsubst %.c,%,$(SRCS))
 
-#Add mte compiler option
-CFLAGS += -march=armv8.5-a+memtag
-
 #check if the compiler works well
-mte_cc_support := $(shell if ($(CC) $(CFLAGS) -E -x c /dev/null -o /dev/null 2>&1) then echo "1"; fi)
+mte_cc_support := $(shell if ($(CC) $(CFLAGS) -march=armv8.5-a+memtag -E -x c /dev/null -o /dev/null 2>&1) then echo "1"; fi)
 
 ifeq ($(mte_cc_support),1)
 # Generated binaries to be installed by top KSFT script
index a02c04cd0aac981f7171a2128186a5e389aca635..a55dbbc56ed190f779f9309d990e46ddac283512 100644 (file)
@@ -3,6 +3,8 @@
 
 #include "mte_def.h"
 
+.arch  armv8.5-a+memtag
+
 #define ENTRY(name) \
        .globl name ;\
        .p2align 2;\