[PATCH 1/5] selftests/prctl: build generated tests for the target architecture

From: Sasha Levin

Date: Wed Oct 14 2026 - 16:05:30 EST


The prctl Makefile builds nothing when CROSS_COMPILE is set, even when
the target is x86, and it lists its compiled programs in TEST_PROGS,
which lib.mk treats as source-tree scripts. The binaries are therefore
built into the source directory rather than OUTPUT. The architecture
check also restricts set-anon-vma-name-test and set-process-name to x86
although neither depends on the architecture.

Build the programs as TEST_GEN_PROGS, build the two generic tests on
every architecture, and keep only the TSC tests x86 specific. Select
them from the target ARCH when it is given and from the host's SUBARCH
otherwise, using a private ARCH_PROCESSED instead of overriding ARCH.
The override added by commit 5a1292137e89 ("selftests: fix ARCH
normalization to handle command-line argument") changed the value that
lib.mk uses to choose the clang target: leaving ARCH unset again lets
lib.mk use the compiler's native triple. A command-line ARCH such as
x86_64 is still normalized for the TSC test selection, while an ARCH
spelling that lib.mk does not know, such as i686 with LLVM=1, is
rejected in the same way as for the other selftests.

Fixes: f59514b6a8c5 ("Documentation/prctl: don't build tsc tests when cross compiling")
Fixes: 5290586186d2 ("selftests: prctl: Add new prctl test for PR_SET_VMA action")
Fixes: e0606daeaab4 ("selftests: prctl: Add new prctl test for PR_SET_NAME")
Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
---
tools/testing/selftests/prctl/Makefile | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/tools/testing/selftests/prctl/Makefile b/tools/testing/selftests/prctl/Makefile
index e770e86fad9ac..123f884e9dfa5 100644
--- a/tools/testing/selftests/prctl/Makefile
+++ b/tools/testing/selftests/prctl/Makefile
@@ -1,14 +1,12 @@
# SPDX-License-Identifier: GPL-2.0
-ifndef CROSS_COMPILE
-ARCH ?= $(shell uname -m 2>/dev/null || echo not)
-override ARCH := $(shell echo $(ARCH) | sed -e s/i.86/x86/ -e s/x86_64/x86/)
+top_srcdir = ../../../..
+include $(top_srcdir)/scripts/subarch.include
+ARCH_PROCESSED := $(shell echo $(or $(ARCH),$(SUBARCH)) | sed -e s/i.86/x86/ -e s/x86_64/x86/)

-ifeq ($(ARCH),x86)
-TEST_PROGS := disable-tsc-ctxt-sw-stress-test disable-tsc-on-off-stress-test \
- disable-tsc-test set-anon-vma-name-test set-process-name
-all: $(TEST_PROGS)
+TEST_GEN_PROGS := set-anon-vma-name-test set-process-name
+ifeq ($(ARCH_PROCESSED),x86)
+TEST_GEN_PROGS += disable-tsc-ctxt-sw-stress-test disable-tsc-on-off-stress-test \
+ disable-tsc-test
+endif

include ../lib.mk
-
-endif
-endif
--
2.53.0