On Thu, Jan 14, 2021 at 8:40 PM Josh Poimboeuf <jpoim...@redhat.com> wrote:
>
> Add support for proper vmlinux.o validation, which will be needed for
> Sami's upcoming x86 LTO set.  (And vmlinux validation is the future for
> objtool anyway, for other reasons.)
>
> This isn't 100% done -- most notably, crypto still needs to be supported
> -- but I think this gets us most of the way there.
>
> This can also be found at
>
>   git://git.kernel.org/pub/scm/linux/kernel/git/jpoimboe/linux.git 
> objtool-vmlinux
>
> And for more testing it can be combined with Sami's x86 LTO patches:
>
>   https://github.com/samitolvanen/linux clang-lto
>
>
>
> Josh Poimboeuf (21):
>   objtool: Fix seg fault in BT_FUNC() with fake jump
>   objtool: Fix error handling for STD/CLD warnings
>   objtool: Fix retpoline detection in asm code
>   objtool: Fix ".cold" section suffix check for newer versions of GCC
>   objtool: Support retpoline jump detection for vmlinux.o
>   x86/ftrace: Add UNWIND_HINT_FUNC annotation for ftrace_stub
>   objtool: Assume only ELF functions do sibling calls
>   objtool: Add asm version of STACK_FRAME_NON_STANDARD
>   objtool: Combine UNWIND_HINT_RET_OFFSET and UNWIND_HINT_FUNC
>   objtool: Add xen_start_kernel() to noreturn list
>   objtool: Move unsuffixed symbol conversion to a helper function
>   objtool: Add CONFIG_CFI_CLANG support
>   x86/xen: Support objtool validation in xen-asm.S
>   x86/xen: Support objtool vmlinux.o validation in xen-head.S
>   x86/xen/pvh: Convert indirect jump to retpoline
>   x86/ftrace: Support objtool vmlinux.o validation in ftrace_64.S
>   x86/acpi: Convert indirect jump to retpoline
>   x86/acpi: Support objtool validation in wakeup_64.S
>   x86/power: Convert indirect jumps to retpolines
>   x86/power: Move restore_registers() to top of the file
>   x86/power: Support objtool validation in hibernate_asm_64.S
>
>  arch/x86/include/asm/unwind_hints.h |  13 +---
>  arch/x86/kernel/acpi/Makefile       |   1 -
>  arch/x86/kernel/acpi/wakeup_64.S    |   5 +-
>  arch/x86/kernel/ftrace_64.S         |   8 +--
>  arch/x86/lib/retpoline.S            |   2 +-
>  arch/x86/platform/pvh/head.S        |   3 +-
>  arch/x86/power/Makefile             |   1 -
>  arch/x86/power/hibernate_asm_64.S   | 105 ++++++++++++++--------------
>  arch/x86/xen/Makefile               |   1 -
>  arch/x86/xen/xen-asm.S              |  29 +++++---
>  arch/x86/xen/xen-head.S             |   5 +-
>  include/linux/objtool.h             |  13 +++-
>  tools/include/linux/objtool.h       |  13 +++-
>  tools/objtool/arch/x86/decode.c     |   4 +-
>  tools/objtool/arch/x86/special.c    |   2 +-
>  tools/objtool/check.c               |  91 +++++++++++++-----------
>  tools/objtool/check.h               |  12 +++-
>  tools/objtool/elf.c                 |  87 +++++++++++++++++------
>  tools/objtool/elf.h                 |   2 +-
>  19 files changed, 241 insertions(+), 156 deletions(-)
>
> --
> 2.29.2
>

I tried this series on top of clang-cfi and it segfaults here.

+ info OBJTOOL vmlinux.o
+ [  != silent_ ]
+ printf   %-7s %s\n OBJTOOL vmlinux.o
 OBJTOOL vmlinux.o
+ tools/objtool/objtool orc generate --duplicate --mcount --vmlinux
--no-fp --no-unreachable --retpoline --uaccess vmlinux.o
Segmentation fault
+ on_exit
+ [ 139 -ne 0 ]
+ cleanup
+ rm -f .btf.*
+ rm -f .tmp_System.map
+ rm -f .tmp_initcalls.lds
+ rm -f .tmp_symversions.lds
+ rm -f .tmp_vmlinux*
+ rm -f System.map
+ rm -f vmlinux
+ rm -f vmlinux.o
make[3]: *** [Makefile:1213: vmlinux] Error 139

- Sedat -

Reply via email to