On Thu, Oct 15, 2020 at 1:39 PM Josh Poimboeuf <jpoimboe@xxxxxxxxxx> wrote: > > On Thu, Oct 15, 2020 at 12:22:16PM +0200, Peter Zijlstra wrote: > > On Thu, Oct 15, 2020 at 01:23:41AM +0200, Jann Horn wrote: > > > > > It would probably be good to keep LTO and non-LTO builds in sync about > > > which files are subjected to objtool checks. So either you should be > > > removing the OBJECT_FILES_NON_STANDARD annotations for anything that > > > is linked into the main kernel (which would be a nice cleanup, if that > > > is possible), > > > > This, I've had to do that for a number of files already for the limited > > vmlinux.o passes we needed for noinstr validation. > > Getting rid of OBJECT_FILES_NON_STANDARD is indeed the end goal, though > I'm not sure how practical that will be for some of the weirder edge > case. > > On a related note, I have some old crypto cleanups which need dusting > off. Building allyesconfig with this series and LTO enabled, I still see the following objtool warnings for vmlinux.o, grouped by source file: arch/x86/entry/entry_64.S: __switch_to_asm()+0x0: undefined stack state .entry.text+0xffd: sibling call from callable instruction with modified stack frame .entry.text+0x48: stack state mismatch: cfa1=7-8 cfa2=-1+0 arch/x86/entry/entry_64_compat.S: .entry.text+0x1754: unsupported instruction in callable function .entry.text+0x1634: redundant CLD .entry.text+0x15fd: stack state mismatch: cfa1=7-8 cfa2=-1+0 .entry.text+0x168c: stack state mismatch: cfa1=7-8 cfa2=-1+0 arch/x86/kernel/head_64.S: .head.text+0xfb: unsupported instruction in callable function arch/x86/kernel/acpi/wakeup_64.S: do_suspend_lowlevel()+0x116: sibling call from callable instruction with modified stack frame arch/x86/crypto/camellia-aesni-avx2-asm_64.S: camellia_cbc_dec_32way()+0xb3: stack state mismatch: cfa1=7+520 cfa2=7+8 camellia_ctr_32way()+0x1a: stack state mismatch: cfa1=7+520 cfa2=7+8 arch/x86/crypto/aesni-intel_avx-x86_64.S: aesni_gcm_init_avx_gen2()+0x12: unsupported stack pointer realignment aesni_gcm_enc_update_avx_gen2()+0x12: unsupported stack pointer realignment aesni_gcm_dec_update_avx_gen2()+0x12: unsupported stack pointer realignment aesni_gcm_finalize_avx_gen2()+0x12: unsupported stack pointer realignment aesni_gcm_init_avx_gen4()+0x12: unsupported stack pointer realignment aesni_gcm_enc_update_avx_gen4()+0x12: unsupported stack pointer realignment aesni_gcm_dec_update_avx_gen4()+0x12: unsupported stack pointer realignment aesni_gcm_finalize_avx_gen4()+0x12: unsupported stack pointer realignment arch/x86/crypto/sha1_avx2_x86_64_asm.S: sha1_transform_avx2()+0xc: unsupported stack pointer realignment arch/x86/crypto/sha1_ni_asm.S: sha1_ni_transform()+0x7: unsupported stack pointer realignment arch/x86/crypto/sha256-avx2-asm.S: sha256_transform_rorx()+0x13: unsupported stack pointer realignment arch/x86/crypto/sha512-ssse3-asm.S: sha512_transform_ssse3()+0x14: unsupported stack pointer realignment arch/x86/crypto/sha512-avx-asm.S: sha512_transform_avx()+0x14: unsupported stack pointer realignment arch/x86/crypto/sha512-avx2-asm.S: sha512_transform_rorx()+0x7: unsupported stack pointer realignment arch/x86/lib/retpoline.S: __x86_retpoline_rdi()+0x10: return with modified stack frame __x86_retpoline_rdi()+0x0: stack state mismatch: cfa1=7+32 cfa2=7+8 __x86_retpoline_rdi()+0x0: stack state mismatch: cfa1=7+32 cfa2=-1+0 Josh, Peter, any thoughts on what would be the preferred way to fix these, or how to tell objtool to ignore this code? Sami