Hi,

I just wanted to gently follow up to see if you had a chance to review this patch. Please let me know if there is anything I can clarify or improve.

Thanks!

On 3/6/26 1:21 AM, Aleksei Oladko wrote:
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.

Signed-off-by: Aleksei Oladko <[email protected]>
---
  tools/testing/selftests/efivarfs/Makefile             | 2 +-
  tools/testing/selftests/exec/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/resctrl/Makefile              | 2 +-
  tools/testing/selftests/safesetid/Makefile            | 2 +-
  tools/testing/selftests/signal/Makefile               | 2 +-
  tools/testing/selftests/timens/Makefile               | 2 +-
  tools/testing/selftests/tty/Makefile                  | 2 +-
  tools/testing/selftests/vDSO/Makefile                 | 2 +-
  13 files changed, 16 insertions(+), 16 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 45a3cfc435cf..54cdefb9ccb0 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
  CFLAGS += $(KHDR_INCLUDES)
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 4d4f810cdf2c..fbdb8f69b548 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
LOCAL_HDRS += ../filesystems/wrappers.h 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/resctrl/Makefile b/tools/testing/selftests/resctrl/Makefile
index 984534cfbf1b..1d566a91faa7 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/signal/Makefile 
b/tools/testing/selftests/signal/Makefile
index e0bf7058d19c..6c437f95132d 100644
--- a/tools/testing/selftests/signal/Makefile
+++ b/tools/testing/selftests/signal/Makefile
@@ -1,5 +1,5 @@
  # SPDX-License-Identifier: GPL-2.0-only
-CFLAGS = -Wall
+CFLAGS += -Wall
  TEST_GEN_PROGS = mangle_uc_sigmask
  TEST_GEN_PROGS += sas
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 7f6fbe5a0cd5..e9c22dafe5e1 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 tty_tiocsti_test
  LDLIBS += -lcap
diff --git a/tools/testing/selftests/vDSO/Makefile b/tools/testing/selftests/vDSO/Makefile
index e361aca22a74..1f4628ceb975 100644
--- a/tools/testing/selftests/vDSO/Makefile
+++ b/tools/testing/selftests/vDSO/Makefile
@@ -11,7 +11,7 @@ TEST_GEN_PROGS += vdso_test_correctness
  TEST_GEN_PROGS += vdso_test_getrandom
  TEST_GEN_PROGS += vdso_test_chacha
-CFLAGS := -std=gnu99 -O2 -Wall -Wstrict-prototypes
+CFLAGS += -std=gnu99 -O2 -Wall -Wstrict-prototypes
ifeq ($(CONFIG_X86_32),y)
  LDLIBS += -lgcc_s

Reply via email to