• P
    x86/retpoline: Fix retpoline unwind · cc1ac9c7
    Peter Zijlstra 提交于
    Currently objtool cannot understand retpolines, and thus cannot
    generate ORC unwind information for them. This means that we cannot
    unwind from the middle of a retpoline.
    
    The recent ANNOTATE_INTRA_FUNCTION_CALL and UNWIND_HINT_RET_OFFSET
    support in objtool enables it to understand the basic retpoline
    construct. A further problem is that the ORC unwind information is
    alternative invariant; IOW. every alternative should have the same
    ORC, retpolines obviously violate this. This means we need to
    out-of-line them.
    
    Since all GCC generated code already uses out-of-line retpolines, this
    should not affect performance much, if anything.
    
    This will enable objtool to generate valid ORC data for the
    out-of-line copies, which means we can correctly and reliably unwind
    through a retpoline.
    Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: NJosh Poimboeuf <jpoimboe@redhat.com>
    Link: https://lkml.kernel.org/r/20200428191700.210835357@infradead.org
    cc1ac9c7
retpoline.S 1.6 KB