• Sami Tolvanen's avatar
    kbuild: lto: force rebuilds when switching CONFIG_LTO · 5e95325f
    Sami Tolvanen authored
    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: default avatarSami Tolvanen <samitolvanen@google.com>
    Signed-off-by: default avatarKees Cook <keescook@chromium.org>
    5e95325f
Makefile 63.5 KB