[Devel] [PATCH vz10 v2] selftests: do not override CFLAGS set by the build environment
Konstantin Khorenko
khorenko at virtuozzo.com
Wed Feb 18 12:47:53 MSK 2026
On 2/17/26 16:55, 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.
>
> 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
> ---
...
> 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
1. `size/Makefile` — should NOT be changed (bug)
/ttt/kernels/rh9/diff-10-selftests-do-not-override-CFLAGS-set-by-the-build-environment lines 211-213
# SPDX-License-Identifier: GPL-2.0-only
-CFLAGS := -static -ffreestanding -nostartfiles -s
+CFLAGS += -static -ffreestanding -nostartfiles -s
This test (get_size) builds a minimal static binary without standard startup files to measure
kernel size overhead.
The flags -static -ffreestanding -nostartfiles -s fundamentally define the build mode. If the
environment provides -fPIE + -pie, it directly conflicts with -static, and the combination of -fPIE
with -ffreestanding -nostartfiles is nonsensical.
The commit message itself says: "The fix is not applied to the Makefiles in x86, riscv, mm, arm64
and powerpc as they fully define their flags." The size/Makefile also fully defines its flags in a
highly specialized way and should be excluded for the same reason.
>
> TEST_GEN_PROGS := get_size
>
More information about the Devel
mailing list