• Song Liu's avatar
    x86/purgatory: Remove LTO flags · 75b2f7e4
    Song Liu authored
    -flto* implies -ffunction-sections. With LTO enabled, ld.lld generates
    multiple .text sections for purgatory.ro:
    
      $ readelf -S purgatory.ro  | grep " .text"
        [ 1] .text             PROGBITS         0000000000000000  00000040
        [ 7] .text.purgatory   PROGBITS         0000000000000000  000020e0
        [ 9] .text.warn        PROGBITS         0000000000000000  000021c0
        [13] .text.sha256_upda PROGBITS         0000000000000000  000022f0
        [15] .text.sha224_upda PROGBITS         0000000000000000  00002be0
        [17] .text.sha256_fina PROGBITS         0000000000000000  00002bf0
        [19] .text.sha224_fina PROGBITS         0000000000000000  00002cc0
    
    This causes WARNING from kexec_purgatory_setup_sechdrs():
    
      WARNING: CPU: 26 PID: 110894 at kernel/kexec_file.c:919
      kexec_load_purgatory+0x37f/0x390
    
    Fix this by disabling LTO for purgatory.
    
    [ AFAICT, x86 is the only arch that supports LTO and purgatory. ]
    
    We could also fix this with an explicit linker script to rejoin .text.*
    sections back into .text. However, given the benefit of LTOing purgatory
    is small, simply disable the production of more .text.* sections for now.
    
    Fixes: b33fff07 ("x86, build: allow LTO to be selected")
    Signed-off-by: default avatarSong Liu <song@kernel.org>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: default avatarSami Tolvanen <samitolvanen@google.com>
    Link: https://lore.kernel.org/r/20230914170138.995606-1-song@kernel.org
    75b2f7e4
Makefile 2.92 KB