public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Leo Yan <leo.yan@arm.com>
Cc: "Arnaldo Carvalho de Melo" <acme@kernel.org>,
	"Ian Rogers" <irogers@google.com>,
	"James Clark" <james.clark@linaro.org>,
	"Kees Cook" <kees@kernel.org>, "Quentin Monnet" <qmo@kernel.org>,
	"Nathan Chancellor" <nathan@kernel.org>,
	"Nicolas Schier" <nsc@kernel.org>,
	"Nick Desaulniers" <nick.desaulniers+lkml@gmail.com>,
	"Bill Wendling" <morbo@google.com>,
	"Justin Stitt" <justinstitt@google.com>,
	"Alexei Starovoitov" <ast@kernel.org>,
	"Daniel Borkmann" <daniel@iogearbox.net>,
	"Andrii Nakryiko" <andrii@kernel.org>,
	"Martin KaFai Lau" <martin.lau@linux.dev>,
	"Eduard Zingerman" <eddyz87@gmail.com>,
	"Song Liu" <song@kernel.org>,
	"Yonghong Song" <yonghong.song@linux.dev>,
	"John Fastabend" <john.fastabend@gmail.com>,
	"KP Singh" <kpsingh@kernel.org>,
	"Stanislav Fomichev" <sdf@fomichev.me>,
	"Hao Luo" <haoluo@google.com>, "Jiri Olsa" <jolsa@kernel.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	"Daniel Lezcano" <daniel.lezcano@kernel.org>,
	"Zhang Rui" <rui.zhang@intel.com>,
	"Lukasz Luba" <lukasz.luba@arm.com>,
	"Peter Zijlstra" <peterz@infradead.org>,
	"Ingo Molnar" <mingo@redhat.com>,
	"Mark Rutland" <mark.rutland@arm.com>,
	"Alexander Shishkin" <alexander.shishkin@linux.intel.com>,
	"Adrian Hunter" <adrian.hunter@intel.com>,
	"Masami Hiramatsu" <mhiramat@kernel.org>,
	"William Breathitt Gray" <wbg@kernel.org>,
	"Barry Song" <baohua@kernel.org>,
	"Qinxin Xia" <xiaqinxin@huawei.com>,
	"Bartosz Golaszewski" <brgl@kernel.org>,
	"Kent Gibson" <warthog618@gmail.com>,
	"K. Y. Srinivasan" <kys@microsoft.com>,
	"Haiyang Zhang" <haiyangz@microsoft.com>,
	"Wei Liu" <wei.liu@kernel.org>,
	"Dexuan Cui" <decui@microsoft.com>,
	"Long Li" <longli@microsoft.com>,
	"Jonathan Cameron" <jic23@kernel.org>,
	"David Lechner" <dlechner@baylibre.com>,
	"Nuno Sá" <nuno.sa@analog.com>,
	"Andy Shevchenko" <andy@kernel.org>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Willy Tarreau" <w@1wt.eu>,
	"Thomas Weißschuh" <linux@weissschuh.net>,
	"Josh Poimboeuf" <jpoimboe@kernel.org>,
	"Robert Moore" <robert.moore@intel.com>,
	"Len Brown" <lenb@kernel.org>,
	"Srinivas Pandruvada" <srinivas.pandruvada@linux.intel.com>,
	"Tejun Heo" <tj@kernel.org>, "David Vernet" <void@manifault.com>,
	"Andrea Righi" <arighi@nvidia.com>,
	"Changwoo Min" <changwoo@igalia.com>,
	"Mark Brown" <broonie@kernel.org>,
	"Steven Rostedt" <rostedt@goodmis.org>,
	"Gabriele Monaco" <gmonaco@redhat.com>,
	"Shuah Khan" <shuah@kernel.org>, "Jiri Kosina" <jikos@kernel.org>,
	"Benjamin Tissoires" <bentiss@kernel.org>,
	linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org,
	llvm@lists.linux.dev, bpf@vger.kernel.org,
	linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v4 08/30] tools build: Append -fzero-init-padding-bits=all to extra cflags
Date: Thu, 12 Mar 2026 11:31:22 -0700	[thread overview]
Message-ID: <abMGesVohx_UUt44@google.com> (raw)
In-Reply-To: <20260311-tools_build_fix_zero_init-v4-8-9e35bdb99cb3@arm.com>

On Wed, Mar 11, 2026 at 08:29:33AM +0000, Leo Yan wrote:
> GCC-15 release claims [1]:
> 
>   {0} initializer in C or C++ for unions no longer guarantees clearing
>   of the whole union (except for static storage duration initialization),
>   it just initializes the first union member to zero. If initialization
>   of the whole union including padding bits is desirable, use {} (valid
>   in C23 or C++) or use -fzero-init-padding-bits=unions option to
>   restore old GCC behavior.
> 
> As a result, this new behaviour might cause unexpected data when we
> initialize a union with using the '{ 0 }' initializer.
> 
> Since commit dce4aab8441d ("kbuild: Use -fzero-init-padding-bits=all"),
> the kernel has enabled -fzero-init-padding-bits=all to zero padding bits
> in unions and structures.  This commit applies the same option for tools
> building.
> 
> The option is not supported by any version older than GCC 15, nor is it
> supported by LLVM.  This patch adds the cc-option and host-cc-option
> functions to dynamically detect compiler option and append it to the
> EXTRA_CFLAGS and HOST_EXTRACFLAGS respectively.
> 
> [1] https://gcc.gnu.org/gcc-15/changes.html
> 
> Acked-by: Quentin Monnet <qmo@kernel.org>
> Signed-off-by: Leo Yan <leo.yan@arm.com>

Acked-by: Namhyung Kim <namhyung@kernel.org>

Thanks,
Namhyung

> ---
>  tools/scripts/Makefile.include | 30 ++++++++++++++++++++++++++++++
>  1 file changed, 30 insertions(+)
> 
> diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include
> index b5ecf137febcae59f506e107a7f2e2ad72f4bef4..a2397ceae512c1bc54adb15cb1a111ff34e28e43 100644
> --- a/tools/scripts/Makefile.include
> +++ b/tools/scripts/Makefile.include
> @@ -137,6 +137,36 @@ else
>  EXTRA_WARNINGS += -Wshadow
>  endif
>  
> +# output directory for tests below
> +TMPOUT = .tmp_$$$$
> +
> +# try-run
> +# Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise)
> +# Exit code chooses option. "$$TMP" serves as a temporary file and is
> +# automatically cleaned up.
> +try-run = $(shell set -e;		\
> +	TMP=$(TMPOUT)/tmp;		\
> +	trap "rm -rf $(TMPOUT)" EXIT;	\
> +	mkdir -p $(TMPOUT);		\
> +	if ($(1)) >/dev/null 2>&1;	\
> +	then echo "$(2)";		\
> +	else echo "$(3)";		\
> +	fi)
> +
> +# cc-option
> +# Usage: CFLAGS += $(call cc-option,-march=winchip-c6,-march=i586)
> +cc-option = $(call try-run, \
> +	$(CC) -Werror $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2))
> +
> +host-cc-option = $(call try-run, \
> +	$(HOSTCC) -Werror $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2))
> +
> +# Explicitly clear padding bits with the initializer '{ 0 }'
> +FLAG_ZERO_INIT := $(call cc-option,-fzero-init-padding-bits=all)
> +override EXTRA_CFLAGS += $(FLAG_ZERO_INIT)
> +HOST_FLAG_ZERO_INIT := $(call host-cc-option,-fzero-init-padding-bits=all)
> +override HOST_EXTRACFLAGS += $(HOST_FLAG_ZERO_INIT)
> +
>  ifneq ($(findstring $(MAKEFLAGS), w),w)
>  PRINT_DIR = --no-print-directory
>  else
> 
> -- 
> 2.34.1
> 

  reply	other threads:[~2026-03-12 18:31 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-11  8:29 [PATCH v4 00/30] tools build: Append -fzero-init-padding-bits=all option Leo Yan
2026-03-11  8:29 ` [PATCH v4 01/30] tools: lib: thermal: Fix typo Leo Yan
2026-03-16 11:50   ` Daniel Lezcano
2026-03-11  8:29 ` [PATCH v4 02/30] tools/thermal: " Leo Yan
2026-03-16 11:51   ` Daniel Lezcano
2026-03-11  8:29 ` [PATCH v4 03/30] tools: lib: thermal: Initialize CFLAGS before including Makefile.include Leo Yan
2026-03-16 11:51   ` Daniel Lezcano
2026-03-11  8:29 ` [PATCH v4 04/30] tools/thermal: " Leo Yan
2026-03-11  8:29 ` [PATCH v4 05/30] bpftool: Avoid adding EXTRA_CFLAGS to HOST_CFLAGS Leo Yan
2026-03-12 17:19   ` Ian Rogers
2026-03-13 15:56     ` Leo Yan
2026-03-13 16:07       ` Quentin Monnet
2026-03-13 16:24         ` Leo Yan
2026-03-13 16:26           ` Quentin Monnet
2026-03-11  8:29 ` [PATCH v4 06/30] libbpf: Remove duplicate $(CLANG_CROSS_FLAGS) Leo Yan
2026-03-11  9:02   ` bot+bpf-ci
2026-03-11  9:35     ` Leo Yan
2026-03-11  8:29 ` [PATCH v4 07/30] libbpf: Initialize CFLAGS before including Makefile.include Leo Yan
2026-03-16 10:18   ` Leo Yan
2026-03-16 14:17     ` Alexei Starovoitov
2026-03-11  8:29 ` [PATCH v4 08/30] tools build: Append -fzero-init-padding-bits=all to extra cflags Leo Yan
2026-03-12 18:31   ` Namhyung Kim [this message]
2026-03-11  8:29 ` [PATCH v4 09/30] bpftool: Append extra host flags Leo Yan
2026-03-11  8:29 ` [PATCH v4 10/30] perf build: " Leo Yan
2026-03-12 18:31   ` Namhyung Kim
2026-03-11  8:29 ` [PATCH v4 11/30] tools/bpf: build: Append extra cflags Leo Yan
2026-03-11  8:29 ` [PATCH v4 12/30] tools build: Append extra host cflags Leo Yan
2026-03-12  0:29   ` Ian Rogers
2026-03-11  8:29 ` [PATCH v4 13/30] tools: bootconfig: Append extra cflags Leo Yan
2026-03-11  8:29 ` [PATCH v4 14/30] tools: counter: " Leo Yan
2026-03-11  8:29 ` [PATCH v4 15/30] tools: dma: " Leo Yan
2026-03-11  8:29 ` [PATCH v4 16/30] tools: gpio: " Leo Yan
2026-03-11  8:29 ` [PATCH v4 17/30] tools: hv: " Leo Yan
2026-03-11  8:29 ` [PATCH v4 18/30] tools: iio: " Leo Yan
2026-03-22 12:00   ` Jonathan Cameron
2026-03-11  8:29 ` [PATCH v4 19/30] tools: mm: " Leo Yan
2026-03-11  8:29 ` [PATCH v4 20/30] tools: objtool: Append extra host cflags Leo Yan
2026-03-11  8:29 ` [PATCH v4 21/30] tools: power: acpi: Append extra cflags Leo Yan
2026-03-11  8:29 ` [PATCH v4 22/30] tools: power: x86/intel-speed-select: " Leo Yan
2026-03-11  8:29 ` [PATCH v4 23/30] tools: sched_ext: " Leo Yan
2026-03-11  8:29 ` [PATCH v4 24/30] tools: spi: " Leo Yan
2026-03-11  8:29 ` [PATCH v4 25/30] tools: tracing: " Leo Yan
2026-03-11  8:29 ` [PATCH v4 26/30] tools: usb: " Leo Yan
2026-03-11  8:29 ` [PATCH v4 27/30] selftests/bpf: " Leo Yan
2026-03-12 17:24   ` Ian Rogers
2026-03-13 16:11     ` Leo Yan
2026-03-11  8:29 ` [PATCH v4 28/30] selftests/hid: " Leo Yan
2026-03-13 13:33   ` Benjamin Tissoires
2026-03-11  8:29 ` [PATCH v4 29/30] selftests/nolibc: " Leo Yan
2026-03-16 22:27   ` Thomas Weißschuh
2026-03-17 11:00     ` Leo Yan
2026-03-11  8:29 ` [PATCH v4 30/30] selftests/sched_ext: " Leo Yan
2026-03-11  8:44 ` [PATCH v4 00/30] tools build: Append -fzero-init-padding-bits=all option Daniel Lezcano
2026-03-11  8:52   ` Jonathan Cameron
2026-03-11  9:23     ` Leo Yan
2026-03-11 18:35       ` Andrew Morton
2026-03-11  9:15   ` Leo Yan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=abMGesVohx_UUt44@google.com \
    --to=namhyung@kernel.org \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=andrii@kernel.org \
    --cc=andy@kernel.org \
    --cc=arighi@nvidia.com \
    --cc=ast@kernel.org \
    --cc=baohua@kernel.org \
    --cc=bentiss@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=brgl@kernel.org \
    --cc=broonie@kernel.org \
    --cc=changwoo@igalia.com \
    --cc=daniel.lezcano@kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=decui@microsoft.com \
    --cc=dlechner@baylibre.com \
    --cc=eddyz87@gmail.com \
    --cc=gmonaco@redhat.com \
    --cc=haiyangz@microsoft.com \
    --cc=haoluo@google.com \
    --cc=irogers@google.com \
    --cc=james.clark@linaro.org \
    --cc=jic23@kernel.org \
    --cc=jikos@kernel.org \
    --cc=john.fastabend@gmail.com \
    --cc=jolsa@kernel.org \
    --cc=jpoimboe@kernel.org \
    --cc=justinstitt@google.com \
    --cc=kees@kernel.org \
    --cc=kpsingh@kernel.org \
    --cc=kys@microsoft.com \
    --cc=lenb@kernel.org \
    --cc=leo.yan@arm.com \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=linux@weissschuh.net \
    --cc=llvm@lists.linux.dev \
    --cc=longli@microsoft.com \
    --cc=lukasz.luba@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=martin.lau@linux.dev \
    --cc=mhiramat@kernel.org \
    --cc=mingo@redhat.com \
    --cc=morbo@google.com \
    --cc=nathan@kernel.org \
    --cc=nick.desaulniers+lkml@gmail.com \
    --cc=nsc@kernel.org \
    --cc=nuno.sa@analog.com \
    --cc=peterz@infradead.org \
    --cc=qmo@kernel.org \
    --cc=rafael@kernel.org \
    --cc=robert.moore@intel.com \
    --cc=rostedt@goodmis.org \
    --cc=rui.zhang@intel.com \
    --cc=sdf@fomichev.me \
    --cc=shuah@kernel.org \
    --cc=song@kernel.org \
    --cc=srinivas.pandruvada@linux.intel.com \
    --cc=tj@kernel.org \
    --cc=void@manifault.com \
    --cc=w@1wt.eu \
    --cc=warthog618@gmail.com \
    --cc=wbg@kernel.org \
    --cc=wei.liu@kernel.org \
    --cc=xiaqinxin@huawei.com \
    --cc=yonghong.song@linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox