[Devel] [PATCH vz10 v2] selftests: do not override CFLAGS set by the build environment

Aleksei Oladko aleksey.oladko at virtuozzo.com
Tue Feb 17 18:55:50 MSK 2026


Some kselftests Makefiles assign CFLAGS using 'CFLAGS=...'
which overrides any CFLAGS provided by the build environment.

If the environment set flags, overriding CFLAGS may result in
inconsistent compiler and linker options and cause build failures,
for example when building PIE binaries:

  # export CFLAGS="-fPIE"
  # export LDFLAGS="-pie"
  # make -C tools/testing/selftests/ TARGETS=mount_setattr
  make: Entering directory '/build/kernel/tools/testing/selftests'
  make[1]: Entering directory '/build/kernel/tools/testing/selftests/mount_setattr'
    CC       mount_setattr_test
  /usr/bin/ld: warning: -z pack-relative-relocs ignored
  /usr/bin/ld: /tmp/ccikConN.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIE
  collect2: error: ld returned 1 exit status
  make[1]: *** [../lib.mk:222: /build/kernel/tools/testing/selftests/mount_setattr/mount_setattr_test] Error 1

Fix this by appending to CFLAGS using 'CFLAGS+=' instead of
overriding them.

The fix is not applied to the Makefiles in x86, riscv, mm, arm64
and powerpc as they fully define their flags.

https://virtuozzo.atlassian.net/browse/VSTOR-123250

Signed-off-by: Aleksei Oladko <aleksey.oladko at virtuozzo.com>

---
v2:
- added fix to Makefiles in ve_printk, size, efivarfs, vDSO, resctrl,
  move_mount_set_group, firmware, filesystems/overlayfs
---
 tools/testing/selftests/efivarfs/Makefile              | 2 +-
 tools/testing/selftests/exec/Makefile                  | 2 +-
 tools/testing/selftests/filesystems/overlayfs/Makefile | 2 +-
 tools/testing/selftests/firmware/Makefile              | 4 ++--
 tools/testing/selftests/ipc/Makefile                   | 4 ++--
 tools/testing/selftests/mount/Makefile                 | 4 ++--
 tools/testing/selftests/mount_setattr/Makefile         | 2 +-
 tools/testing/selftests/move_mount_set_group/Makefile  | 2 +-
 tools/testing/selftests/nsfs/Makefile                  | 2 +-
 tools/testing/selftests/resctrl/Makefile               | 2 +-
 tools/testing/selftests/safesetid/Makefile             | 2 +-
 tools/testing/selftests/sigaltstack/Makefile           | 2 +-
 tools/testing/selftests/size/Makefile                  | 2 +-
 tools/testing/selftests/timens/Makefile                | 2 +-
 tools/testing/selftests/tty/Makefile                   | 2 +-
 tools/testing/selftests/vDSO/Makefile                  | 2 +-
 tools/testing/selftests/ve_printk/Makefile             | 2 +-
 17 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/tools/testing/selftests/efivarfs/Makefile b/tools/testing/selftests/efivarfs/Makefile
index e3181338ba5e..f6c412059af3 100644
--- a/tools/testing/selftests/efivarfs/Makefile
+++ b/tools/testing/selftests/efivarfs/Makefile
@@ -1,5 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0-only
-CFLAGS = -Wall
+CFLAGS += -Wall
 
 TEST_GEN_FILES := open-unlink create-read
 TEST_PROGS := efivarfs.sh
diff --git a/tools/testing/selftests/exec/Makefile b/tools/testing/selftests/exec/Makefile
index ba012bc5aab9..e0d3f7cbf54c 100644
--- a/tools/testing/selftests/exec/Makefile
+++ b/tools/testing/selftests/exec/Makefile
@@ -1,5 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0
-CFLAGS = -Wall
+CFLAGS += -Wall
 CFLAGS += -Wno-nonnull
 
 ALIGNS := 0x1000 0x200000 0x1000000
diff --git a/tools/testing/selftests/filesystems/overlayfs/Makefile b/tools/testing/selftests/filesystems/overlayfs/Makefile
index 56b2b48a765b..f87b34c4c244 100644
--- a/tools/testing/selftests/filesystems/overlayfs/Makefile
+++ b/tools/testing/selftests/filesystems/overlayfs/Makefile
@@ -2,6 +2,6 @@
 
 TEST_GEN_PROGS := dev_in_maps
 
-CFLAGS := -Wall -Werror
+CFLAGS += -Wall -Werror
 
 include ../../lib.mk
diff --git a/tools/testing/selftests/firmware/Makefile b/tools/testing/selftests/firmware/Makefile
index 7992969deaa2..dd9acf972cf5 100644
--- a/tools/testing/selftests/firmware/Makefile
+++ b/tools/testing/selftests/firmware/Makefile
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 # Makefile for firmware loading selftests
-CFLAGS = -Wall \
-         -O2
+CFLAGS += -Wall \
+          -O2
 
 TEST_PROGS := fw_run_tests.sh
 TEST_FILES := fw_fallback.sh fw_filesystem.sh fw_upload.sh fw_lib.sh
diff --git a/tools/testing/selftests/ipc/Makefile b/tools/testing/selftests/ipc/Makefile
index 50e9c299fc4a..5a5577767a35 100644
--- a/tools/testing/selftests/ipc/Makefile
+++ b/tools/testing/selftests/ipc/Makefile
@@ -3,11 +3,11 @@ uname_M := $(shell uname -m 2>/dev/null || echo not)
 ARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/i386/)
 ifeq ($(ARCH),i386)
         ARCH := x86
-	CFLAGS := -DCONFIG_X86_32 -D__i386__
+	CFLAGS += -DCONFIG_X86_32 -D__i386__
 endif
 ifeq ($(ARCH),x86_64)
 	ARCH := x86
-	CFLAGS := -DCONFIG_X86_64 -D__x86_64__
+	CFLAGS += -DCONFIG_X86_64 -D__x86_64__
 endif
 
 CFLAGS += $(KHDR_INCLUDES)
diff --git a/tools/testing/selftests/mount/Makefile b/tools/testing/selftests/mount/Makefile
index 2d9454841644..38361a896363 100644
--- a/tools/testing/selftests/mount/Makefile
+++ b/tools/testing/selftests/mount/Makefile
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 # Makefile for mount selftests.
-CFLAGS = -Wall \
-         -O2
+CFLAGS += -Wall \
+          -O2
 
 TEST_PROGS := run_unprivileged_remount.sh run_nosymfollow.sh
 TEST_GEN_FILES := unprivileged-remount-test nosymfollow-test
diff --git a/tools/testing/selftests/mount_setattr/Makefile b/tools/testing/selftests/mount_setattr/Makefile
index 0c0d7b1234c1..f5eb8d8223d7 100644
--- a/tools/testing/selftests/mount_setattr/Makefile
+++ b/tools/testing/selftests/mount_setattr/Makefile
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 # Makefile for mount selftests.
-CFLAGS = -g $(KHDR_INCLUDES) -Wall -O2 -pthread
+CFLAGS += -g $(KHDR_INCLUDES) -Wall -O2 -pthread
 
 TEST_GEN_PROGS := mount_setattr_test
 
diff --git a/tools/testing/selftests/move_mount_set_group/Makefile b/tools/testing/selftests/move_mount_set_group/Makefile
index 94235846b6f9..8771a5491ea3 100644
--- a/tools/testing/selftests/move_mount_set_group/Makefile
+++ b/tools/testing/selftests/move_mount_set_group/Makefile
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 # Makefile for mount selftests.
-CFLAGS = -g $(KHDR_INCLUDES) -Wall -O2
+CFLAGS += -g $(KHDR_INCLUDES) -Wall -O2
 
 TEST_GEN_FILES += move_mount_set_group_test
 
diff --git a/tools/testing/selftests/nsfs/Makefile b/tools/testing/selftests/nsfs/Makefile
index dd9bd50b7b93..b51379b3f35c 100644
--- a/tools/testing/selftests/nsfs/Makefile
+++ b/tools/testing/selftests/nsfs/Makefile
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0-only
 TEST_GEN_PROGS := owner pidns
 
-CFLAGS := -Wall -Werror
+CFLAGS += -Wall -Werror
 
 include ../lib.mk
diff --git a/tools/testing/selftests/resctrl/Makefile b/tools/testing/selftests/resctrl/Makefile
index f408bd6bfc3d..f38b45b773d0 100644
--- a/tools/testing/selftests/resctrl/Makefile
+++ b/tools/testing/selftests/resctrl/Makefile
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 
-CFLAGS = -g -Wall -O2 -D_FORTIFY_SOURCE=2
+CFLAGS += -g -Wall -O2 -D_FORTIFY_SOURCE=2
 CFLAGS += $(KHDR_INCLUDES)
 
 TEST_GEN_PROGS := resctrl_tests
diff --git a/tools/testing/selftests/safesetid/Makefile b/tools/testing/selftests/safesetid/Makefile
index e815bbf2d0f4..d3811515d8e3 100644
--- a/tools/testing/selftests/safesetid/Makefile
+++ b/tools/testing/selftests/safesetid/Makefile
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 # Makefile for SafeSetID selftest.
-CFLAGS = -Wall -O2
+CFLAGS += -Wall -O2
 LDLIBS = -lcap
 
 TEST_PROGS := safesetid-test.sh
diff --git a/tools/testing/selftests/sigaltstack/Makefile b/tools/testing/selftests/sigaltstack/Makefile
index 3e96d5d47036..5b41d660143c 100644
--- a/tools/testing/selftests/sigaltstack/Makefile
+++ b/tools/testing/selftests/sigaltstack/Makefile
@@ -1,5 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0-only
-CFLAGS = -Wall
+CFLAGS += -Wall
 TEST_GEN_PROGS = sas
 
 include ../lib.mk
diff --git a/tools/testing/selftests/size/Makefile b/tools/testing/selftests/size/Makefile
index b87facc00a6e..c17d0c1f6f4a 100644
--- a/tools/testing/selftests/size/Makefile
+++ b/tools/testing/selftests/size/Makefile
@@ -1,5 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0-only
-CFLAGS := -static -ffreestanding -nostartfiles -s
+CFLAGS += -static -ffreestanding -nostartfiles -s
 
 TEST_GEN_PROGS := get_size
 
diff --git a/tools/testing/selftests/timens/Makefile b/tools/testing/selftests/timens/Makefile
index f0d51d4d2c87..357077792395 100644
--- a/tools/testing/selftests/timens/Makefile
+++ b/tools/testing/selftests/timens/Makefile
@@ -1,7 +1,7 @@
 TEST_GEN_PROGS := timens timerfd timer clock_nanosleep procfs exec futex vfork_exec
 TEST_GEN_PROGS_EXTENDED := gettime_perf
 
-CFLAGS := -Wall -Werror -pthread
+CFLAGS += -Wall -Werror -pthread
 LDLIBS := -lrt -ldl
 
 include ../lib.mk
diff --git a/tools/testing/selftests/tty/Makefile b/tools/testing/selftests/tty/Makefile
index 50d7027b2ae3..03cb8de7e20e 100644
--- a/tools/testing/selftests/tty/Makefile
+++ b/tools/testing/selftests/tty/Makefile
@@ -1,5 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0
-CFLAGS = -O2 -Wall
+CFLAGS += -O2 -Wall
 TEST_GEN_PROGS := tty_tstamp_update
 
 include ../lib.mk
diff --git a/tools/testing/selftests/vDSO/Makefile b/tools/testing/selftests/vDSO/Makefile
index 1cf14a8da438..9e6bd936960f 100644
--- a/tools/testing/selftests/vDSO/Makefile
+++ b/tools/testing/selftests/vDSO/Makefile
@@ -12,7 +12,7 @@ TEST_GEN_PROGS += vdso_test_correctness
 TEST_GEN_PROGS += vdso_test_getrandom
 TEST_GEN_PROGS += vdso_test_chacha
 
-CFLAGS := -std=gnu99 -O2
+CFLAGS += -std=gnu99 -O2
 
 ifeq ($(CONFIG_X86_32),y)
 LDLIBS += -lgcc_s
diff --git a/tools/testing/selftests/ve_printk/Makefile b/tools/testing/selftests/ve_printk/Makefile
index e3edcbacda1e..9e171908c237 100644
--- a/tools/testing/selftests/ve_printk/Makefile
+++ b/tools/testing/selftests/ve_printk/Makefile
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 # Makefile for ve_printk selftests.
-CFLAGS = -g -I../../../../usr/include/ -Wall -O2
+CFLAGS += -g -I../../../../usr/include/ -Wall -O2
 
 TEST_GEN_PROGS += ve_printk_test
 TEST_GEN_FILES += test_segf test_trap
-- 
2.43.0



More information about the Devel mailing list