Re: [PATCH v6 00/24] tools build: Append -fzero-init-padding-bits=all option
From: Ian Rogers
Date: Mon Mar 23 2026 - 18:02:25 EST
On Mon, Mar 23, 2026 at 8:13 AM Leo Yan <leo.yan@xxxxxxx> wrote:
>
> GCC-15 doesn't guarantee that a {0} initializer clears the whole union [1].
> This may cause bugs if data is not intialized properly.
>
> The kernel enabld the -fzero-init-padding-bits=all option to tackle the
> issue, which was merged in commit dce4aab8441d ("kbuild: Use
> -fzero-init-padding-bits=all").
>
> This series propagates the same flag to the tools build. It uses
> tools/scripts/Makefile.include as the central place to add the
> option to EXTRA_CFLAGS and HOST_EXTRACFLAGS for the CC and HOSTCC
> compilers. Each project under tools/ appends the variables as needed.
>
> BPF/bpftool related patches will be sent separately, as maintainers
> prefer them to go via the BPF tree.
>
> The changes are organized into three parts:
>
> Patches 01 – 04: Fixes for thermal build.
> Patch 05: Propagate -fzero-init-padding-bits=all to
> EXTRA_CFLAGS and HOST_EXTRACFLAGS for the
> CC and HOSTCC compilers, respectively.
> Patches 06 – 24: Apply EXTRA_CFLAGS and HOST_EXTRACFLAGS in
> project Makefiles.
>
> The change has been verified:
>
> Test 1: Cross compiling perf
> host: gcc 15.2.0 (x86_64), target: aarch64-linux-gnu-gcc
>
> make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- LDFLAGS="-static" \
> -C tools/perf VF=1 CORESIGHT=1 NO_JEVENTS=1 DEBUG=1
>
> Test 2: Cross compiling selftest bpf and sched_ext
> host: gcc 15.2.0 (x86_64), target: aarch64-linux-gnu-gcc
>
> export ARCH=arm64
> export CROSS_COMPILE=aarch64-linux-gnu-
> make -C tools/testing/selftests/ TARGETS="bpf sched_ext" SKIP_TARGETS=""
>
> Test 3: Native compiling selftest bpf and sched_ext
> host: gcc 15.2.0 (x86_64)
>
> make -C tools/testing/selftests/ TARGETS="bpf sched_ext" SKIP_TARGETS=""
>
> Test 4: BPF CI test (with BPF patches sent separately)
>
> https://github.com/kernel-patches/bpf/actions/runs/23439834394
>
> [1] https://gcc.gnu.org/gcc-15/changes.html
>
> Signed-off-by: Leo Yan <leo.yan@xxxxxxx>
Acked-by: Ian Rogers <irogers@xxxxxxxxxx>
At some point the AI reviews appear to be increasingly off in the
weeds. I believe the nolibc stuff, read-only file system things, etc.
in:
https://sashiko.dev/#/patchset/20260323-tools_build_fix_zero_init-v6-0-235858c51af9%40arm.com
are not a major concern. Thanks for humoring them, they were able to
consider a far wider impact than I could from a snippet of Makefile.
Thanks,
Ian
> ---
> Changes in v6:
> - Gathered Acked tags (thanks Jonathan!)
> - Left out bpftool patches and will send together with other BPF patches (Quentin)
> - Added back complete info in cover (Peter.Z)
> - Link to v5: https://lore.kernel.org/r/20260318-tools_build_fix_zero_init-v5-0-bbeffd8da199@xxxxxxx
>
> Changes in v5:
> - Gathered Acked tags (thanks Daniel, Namhyung, Benjamin!)
> - Appended HOST_EXTRACFLAGS after KBUILD_HOSTCFLAGS (Ian)
> - Appended CFLAGS for libc-test (Thomas)
> - Left out BPF patches and will send out separately (Alexei)
> - Rebase on v7.0.0-rc4
> - Link to v4: https://lore.kernel.org/r/20260311-tools_build_fix_zero_init-v4-0-9e35bdb99cb3@xxxxxxx
>
> ---
> Leo Yan (24):
> tools: lib: thermal: Fix typo
> tools/thermal: Fix typo
> tools: lib: thermal: Initialize CFLAGS before including Makefile.include
> tools/thermal: Initialize CFLAGS before including Makefile.include
> tools build: Append -fzero-init-padding-bits=all to extra cflags
> perf build: Append extra host flags
> tools build: Append extra host cflags
> tools: bootconfig: Append extra cflags
> tools: counter: Append extra cflags
> tools: dma: Append extra cflags
> tools: gpio: Append extra cflags
> tools: hv: Append extra cflags
> tools: iio: Append extra cflags
> tools: mm: Append extra cflags
> tools: objtool: Append extra host cflags
> tools: power: acpi: Append extra cflags
> tools: power: x86/intel-speed-select: Append extra cflags
> tools: sched_ext: Append extra cflags
> tools: spi: Append extra cflags
> tools: tracing: Append extra cflags
> tools: usb: Append extra cflags
> selftests/hid: Append extra cflags
> selftests/nolibc: Append extra cflags
> selftests/sched_ext: Append extra cflags
>
> tools/bootconfig/Makefile | 1 +
> tools/build/Makefile | 6 ++++--
> tools/counter/Makefile | 1 +
> tools/dma/Makefile | 1 +
> tools/gpio/Makefile | 1 +
> tools/hv/Makefile | 1 +
> tools/iio/Makefile | 1 +
> tools/lib/thermal/Makefile | 20 ++++++++++---------
> tools/mm/Makefile | 1 +
> tools/objtool/Makefile | 2 ++
> tools/perf/Makefile.config | 2 +-
> tools/power/acpi/Makefile.config | 1 +
> tools/power/x86/intel-speed-select/Makefile | 1 +
> tools/sched_ext/Makefile | 1 +
> tools/scripts/Makefile.include | 30 +++++++++++++++++++++++++++++
> tools/spi/Makefile | 1 +
> tools/testing/selftests/hid/Makefile | 1 +
> tools/testing/selftests/nolibc/Makefile | 7 +++----
> tools/testing/selftests/sched_ext/Makefile | 1 +
> tools/thermal/lib/Makefile | 20 ++++++++++---------
> tools/tracing/latency/Makefile | 1 +
> tools/usb/Makefile | 1 +
> 22 files changed, 77 insertions(+), 25 deletions(-)
> ---
> base-commit: bfec8e88ff6022b056615ec71506703e7e54de82
> change-id: 20260224-tools_build_fix_zero_init-dc5261bd8b8b
>
> Best regards,
> --
> Leo Yan <leo.yan@xxxxxxx>
>