stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Stephen Boyd <swboyd@chromium.org>,
	Peter Smith <peter.smith@linaro.org>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Douglas Anderson <dianders@chromium.org>,
	Nathan Chancellor <natechancellor@gmail.com>,
	Masahiro Yamada <yamada.masahiro@socionext.com>,
	Sasha Levin <sashal@kernel.org>,
	linux-kbuild@vger.kernel.org, clang-built-linux@googlegroups.com
Subject: [PATCH AUTOSEL 4.19 19/32] kbuild: Check for unknown options with cc-option usage in Kconfig and clang
Date: Tue,  6 Aug 2019 17:35:07 -0400	[thread overview]
Message-ID: <20190806213522.19859-19-sashal@kernel.org> (raw)
In-Reply-To: <20190806213522.19859-1-sashal@kernel.org>

From: Stephen Boyd <swboyd@chromium.org>

[ Upstream commit e8de12fb7cde2c85bc31097cd098da79a4818305 ]

If the particular version of clang a user has doesn't enable
-Werror=unknown-warning-option by default, even though it is the
default[1], then make sure to pass the option to the Kconfig cc-option
command so that testing options from Kconfig files works properly.
Otherwise, depending on the default values setup in the clang toolchain
we will silently assume options such as -Wmaybe-uninitialized are
supported by clang, when they really aren't.

A compilation issue only started happening for me once commit
589834b3a009 ("kbuild: Add -Werror=unknown-warning-option to
CLANG_FLAGS") was applied on top of commit b303c6df80c9 ("kbuild:
compute false-positive -Wmaybe-uninitialized cases in Kconfig"). This
leads kbuild to try and test for the existence of the
-Wmaybe-uninitialized flag with the cc-option command in
scripts/Kconfig.include, and it doesn't see an error returned from the
option test so it sets the config value to Y. Then the Makefile tries to
pass the unknown option on the command line and
-Werror=unknown-warning-option catches the invalid option and breaks the
build. Before commit 589834b3a009 ("kbuild: Add
-Werror=unknown-warning-option to CLANG_FLAGS") the build works fine,
but any cc-option test of a warning option in Kconfig files silently
evaluates to true, even if the warning option flag isn't supported on
clang.

Note: This doesn't change cc-option usages in Makefiles because those
use a different rule that includes KBUILD_CFLAGS by default (see the
__cc-option command in scripts/Kbuild.incluide). The KBUILD_CFLAGS
variable already has the -Werror=unknown-warning-option flag set. Thanks
to Doug for pointing out the different rule.

[1] https://clang.llvm.org/docs/DiagnosticsReference.html#wunknown-warning-option
Cc: Peter Smith <peter.smith@linaro.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Stephen Boyd <swboyd@chromium.org>
Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 scripts/Kconfig.include | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include
index dad5583451afb..3b2861f47709b 100644
--- a/scripts/Kconfig.include
+++ b/scripts/Kconfig.include
@@ -20,7 +20,7 @@ success = $(if-success,$(1),y,n)
 
 # $(cc-option,<flag>)
 # Return y if the compiler supports <flag>, n otherwise
-cc-option = $(success,$(CC) -Werror $(1) -E -x c /dev/null -o /dev/null)
+cc-option = $(success,$(CC) -Werror $(CLANG_FLAGS) $(1) -E -x c /dev/null -o /dev/null)
 
 # $(ld-option,<flag>)
 # Return y if the linker supports <flag>, n otherwise
-- 
2.20.1


  parent reply	other threads:[~2019-08-06 21:41 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-06 21:34 [PATCH AUTOSEL 4.19 01/32] clk: at91: generated: Truncate divisor to GENERATED_MAX_DIV + 1 Sasha Levin
2019-08-06 21:34 ` [PATCH AUTOSEL 4.19 02/32] clk: sprd: Select REGMAP_MMIO to avoid compile errors Sasha Levin
2019-08-06 21:34 ` [PATCH AUTOSEL 4.19 03/32] clk: renesas: cpg-mssr: Fix reset control race condition Sasha Levin
2019-08-06 21:34 ` [PATCH AUTOSEL 4.19 04/32] xtensa: fix build for cores with coprocessors Sasha Levin
2019-08-06 21:34 ` [PATCH AUTOSEL 4.19 05/32] xen/pciback: remove set but not used variable 'old_state' Sasha Levin
2019-08-06 21:34 ` [PATCH AUTOSEL 4.19 06/32] irqchip/gic-v3-its: Free unused vpt_page when alloc vpe table fail Sasha Levin
2019-08-06 21:34 ` [PATCH AUTOSEL 4.19 07/32] irqchip/irq-imx-gpcv2: Forward irq type to parent Sasha Levin
2019-08-06 21:34 ` [PATCH AUTOSEL 4.19 08/32] perf header: Fix divide by zero error if f_header.attr_size==0 Sasha Levin
2019-08-06 21:34 ` [PATCH AUTOSEL 4.19 09/32] perf header: Fix use of unitialized value warning Sasha Levin
2019-08-06 21:34 ` [PATCH AUTOSEL 4.19 10/32] libata: zpodd: Fix small read overflow in zpodd_get_mech_type() Sasha Levin
2019-08-06 21:34 ` [PATCH AUTOSEL 4.19 11/32] drm/bridge: lvds-encoder: Fix build error while CONFIG_DRM_KMS_HELPER=m Sasha Levin
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 12/32] Btrfs: fix deadlock between fiemap and transaction commits Sasha Levin
2019-08-07  9:47   ` David Sterba
2019-08-07 10:51     ` Greg KH
2019-08-07 12:44       ` David Sterba
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 13/32] scsi: hpsa: correct scsi command status issue after reset Sasha Levin
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 14/32] scsi: qla2xxx: Fix possible fcport null-pointer dereferences Sasha Levin
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 15/32] exit: make setting exit_state consistent Sasha Levin
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 16/32] drm/amdgpu: fix a potential information leaking bug Sasha Levin
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 17/32] ata: libahci: do not complain in case of deferred probe Sasha Levin
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 18/32] kbuild: modpost: handle KBUILD_EXTRA_SYMBOLS only for external modules Sasha Levin
2019-08-06 21:35 ` Sasha Levin [this message]
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 20/32] arm64/efi: fix variable 'si' set but not used Sasha Levin
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 21/32] drm/vgem: fix cache synchronization on arm/arm64 Sasha Levin
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 22/32] arm64: unwind: Prohibit probing on return_address() Sasha Levin
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 23/32] arm64/mm: fix variable 'pud' set but not used Sasha Levin
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 24/32] IB/core: Add mitigation for Spectre V1 Sasha Levin
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 25/32] IB/mlx5: Fix MR registration flow to use UMR properly Sasha Levin
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 26/32] IB/mad: Fix use-after-free in ib mad completion handling Sasha Levin
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 27/32] drm: msm: Fix add_gpu_components Sasha Levin
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 28/32] drm/exynos: fix missing decrement of retry counter Sasha Levin
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 29/32] Revert "kmemleak: allow to coexist with fault injection" Sasha Levin
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 30/32] ocfs2: remove set but not used variable 'last_hash' Sasha Levin
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 31/32] coredump: split pipe command whitespace before expanding template Sasha Levin
2019-08-06 21:35 ` [PATCH AUTOSEL 4.19 32/32] asm-generic: fix -Wtype-limits compiler warnings Sasha Levin

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=20190806213522.19859-19-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=clang-built-linux@googlegroups.com \
    --cc=dianders@chromium.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=natechancellor@gmail.com \
    --cc=ndesaulniers@google.com \
    --cc=peter.smith@linaro.org \
    --cc=stable@vger.kernel.org \
    --cc=swboyd@chromium.org \
    --cc=yamada.masahiro@socionext.com \
    /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;
as well as URLs for NNTP newsgroup(s).