kbuild: prevent CC_FLAGS_LTO self-bloating on recursive rebuilds
authorAlexander Lobakin <alobakin@pm.me>
Thu, 21 Jan 2021 18:45:55 +0000 (18:45 +0000)
committerKees Cook <keescook@chromium.org>
Wed, 17 Feb 2021 18:10:37 +0000 (10:10 -0800)
CC_FLAGS_LTO gets initialized only via +=, never with := or =.
When building with CONFIG_TRIM_UNUSED_KSYMS, Kbuild may perform
several kernel rebuilds to satisfy symbol dependencies. In this
case, value of CC_FLAGS_LTO is concatenated each time, which
triggers a full rebuild.
Initialize it with := to fix this.

Fixes: dc5723b02e52 ("kbuild: add support for Clang LTO")
Signed-off-by: Alexander Lobakin <alobakin@pm.me>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20210121184544.659998-1-alobakin@pm.me
Makefile

index 668909e7a460096f6b85a2ff4616997776f11efa..2233951666f76eb9d6142475d49e70d40eb80f2a 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -895,10 +895,10 @@ endif
 
 ifdef CONFIG_LTO_CLANG
 ifdef CONFIG_LTO_CLANG_THIN
-CC_FLAGS_LTO   += -flto=thin -fsplit-lto-unit
+CC_FLAGS_LTO   := -flto=thin -fsplit-lto-unit
 KBUILD_LDFLAGS += --thinlto-cache-dir=$(extmod-prefix).thinlto-cache
 else
-CC_FLAGS_LTO   += -flto
+CC_FLAGS_LTO   := -flto
 endif
 CC_FLAGS_LTO   += -fvisibility=hidden