]> git.baikalelectronics.ru Git - kernel.git/commit
kbuild: lto: force rebuilds when switching CONFIG_LTO
authorSami Tolvanen <samitolvanen@google.com>
Tue, 23 Feb 2021 21:59:52 +0000 (13:59 -0800)
committerKees Cook <keescook@chromium.org>
Tue, 23 Feb 2021 22:10:44 +0000 (14:10 -0800)
commit9f9388194a5f3fa7332d44dfb6c20f1d9c0e58b0
tree20a72533b15f1fac23f09b881d1e3ec63c1f2a31
parentd33fec438058262b1285f8413cea4720bb576f56
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 <samitolvanen@google.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
Makefile