• Josh Poimboeuf's avatar
    x86/ftrace: Remove OBJECT_FILES_NON_STANDARD usage · 7b6c7a87
    Josh Poimboeuf authored
    The file-wide OBJECT_FILES_NON_STANDARD annotation is used with
    CONFIG_FRAME_POINTER to tell objtool to skip the entire file when frame
    pointers are enabled.  However that annotation is now deprecated because
    it doesn't work with IBT, where objtool runs on vmlinux.o instead of
    individual translation units.
    
    Instead, use more fine-grained function-specific annotations:
    
    - The 'save_mcount_regs' macro does funny things with the frame pointer.
      Use STACK_FRAME_NON_STANDARD_FP to tell objtool to ignore the
      functions using it.
    
    - The return_to_handler() "function" isn't actually a callable function.
      Instead of being called, it's returned to.  The real return address
      isn't on the stack, so unwinding is already doomed no matter which
      unwinder is used.  So just remove the STT_FUNC annotation, telling
      objtool to ignore it.  That also removes the implicit
      ANNOTATE_NOENDBR, which now needs to be made explicit.
    
    Fixes the following warning:
    
      vmlinux.o: warning: objtool: __fentry__+0x16: return with modified stack frame
    
    Fixes: ed53a0d9 ("x86/alternative: Use .ibt_endbr_seal to seal indirect calls")
    Reported-by: default avatarkernel test robot <lkp@intel.com>
    Signed-off-by: default avatarJosh Poimboeuf <jpoimboe@kernel.org>
    Link: https://lore.kernel.org/r/b7a7a42fe306aca37826043dac89e113a1acdbac.1654268610.git.jpoimboe@kernel.org
    7b6c7a87
ftrace_64.S 8.47 KB