From: Sami Tolvanen Date: Tue, 23 Feb 2021 21:59:52 +0000 (-0800) Subject: kbuild: lto: force rebuilds when switching CONFIG_LTO X-Git-Tag: microblaze-v5.13~29^2~2 X-Git-Url: http://git.monstr.eu/?a=commitdiff_plain;h=5e95325fbbbdea96de91e7bdb05fe95a3031e37d;p=linux-2.6-microblaze.git kbuild: lto: force rebuilds when switching CONFIG_LTO When doing non-clean builds and switching between CONFIG_LTO=n and CONFIG_LTO=y, the build system (correctly) didn't notice that assembly and LTO-excluded C object files were rewritten in place by objtool (to add the .orc_unwind* sections), since their build command lines were the same between CONFIG_LTO=y and CONFIG_LTO=n. The objtool step would fail: vmlinux.o: warning: objtool: file already has .orc_unwind section, skipping make: *** [Makefile:1194: vmlinux] Error 255 Avoid this by making sure the build will see a difference between an LTO and non-LTO build (by including "-fno-lto" in KBUILD_*FLAGS). This will get ignored when CC_FLAGS_LTO is present, and will not be included at all when CONFIG_LTO=n. Signed-off-by: Sami Tolvanen Signed-off-by: Kees Cook --- diff --git a/Makefile b/Makefile index 3189eacf3185..639873def1fd 100644 --- a/Makefile +++ b/Makefile @@ -910,7 +910,8 @@ KBUILD_LDFLAGS += -mllvm -import-instr-limit=5 endif ifdef CONFIG_LTO -KBUILD_CFLAGS += $(CC_FLAGS_LTO) +KBUILD_CFLAGS += -fno-lto $(CC_FLAGS_LTO) +KBUILD_AFLAGS += -fno-lto export CC_FLAGS_LTO endif