• Josh Poimboeuf's avatar
    objtool: Add Clang support · 3c1f0583
    Josh Poimboeuf authored
    Since the ORC unwinder was made the default on x86_64, Clang-built
    defconfig kernels have triggered some new objtool warnings:
    
      drivers/gpu/drm/i915/i915_gpu_error.o: warning: objtool: i915_error_printf()+0x6c: return with modified stack frame
      drivers/gpu/drm/i915/intel_display.o: warning: objtool: pipe_config_err()+0xa6: return with modified stack frame
    
    The problem is that objtool has never seen clang-built binaries before.
    
    Shockingly enough, objtool is apparently able to follow the code flow
    mostly fine, except for one instruction sequence.  Instead of a LEAVE
    instruction, clang restores RSP and RBP the long way:
    
       67c:   48 89 ec                mov    %rbp,%rsp
       67f:   5d                      pop    %rbp
    
    Teach objtool about this new code sequence.
    Reported-and-test-by: default avatarMatthias Kaehlcke <mka@chromium.org>
    Signed-off-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Matthias Kaehlcke <mka@chromium.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/fce88ce81c356eedcae7f00ed349cfaddb3363cc.1521741586.git.jpoimboe@redhat.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    3c1f0583
check.c 51.2 KB