Based on tip/objtool/core. v3: - Too many changes to list. Did a lot of testing and fixed a bunch of issues (many of which have already been merged in tip/objtool/core).
v2: https://lore.kernel.org/[email protected] - patches 1-2 were merged, rebase on tip/master - improve commit message for "objtool: Extricate checksum calculation from validate_branch()" - add review tags v1: https://lore.kernel.org/[email protected] Port objtool and the klp-build tooling (for building livepatch modules) to arm64. Note this doesn't bring all the objtool bells and whistles to arm64, nor any of the CFG reverse engineering. This only adds the bare minimum needed for 'objtool --checksum'. And note that objtool still doesn't get enabled at all for normal arm64 kernel builds, so this doesn't affect any users other than those running klp-build directly. Josh Poimboeuf (21): klp-build: Reject patches to init/*.c arm64: Annotate intra-function calls arm64: Fix EFI linking with -fdata-sections arm64: Rename TRAMP_VALIAS -> TRAMP_VALIAS_ASM in asm-offsets arm64: vdso: Discard .discard.* sections arm64: Annotate special section entries crypto: arm64: Move data to .rodata objtool: Allow setting --mnop without --mcount kbuild: Only run objtool if there is at least one command objtool: Ignore jumps to the end of the function for checksum runs objtool: Allow empty alternatives objtool: Refactor elf_add_data() to use a growable data buffer objtool: Reuse string references objtool: Prevent kCFI hashes from being decoded as instructions objtool/klp: Add arm64 support for prefix/PFE detection objtool/klp: Filter arm64 mapping symbols in find_symbol_by_offset() objtool/klp: Don't correlate arm64 mapping symbols objtool/klp: Clone inline alternative replacements objtool/klp: Introduce objtool for arm64 klp-build: Support cross-compilation klp-build: Add arm64 syscall patching macro arch/arm64/Kconfig | 2 + arch/arm64/include/asm/alternative-macros.h | 27 +- arch/arm64/include/asm/asm-bug.h | 2 + arch/arm64/include/asm/asm-extable.h | 21 +- arch/arm64/include/asm/jump_label.h | 2 + arch/arm64/kernel/asm-offsets.c | 7 +- arch/arm64/kernel/entry.S | 10 +- arch/arm64/kernel/proton-pack.c | 12 +- arch/arm64/kernel/vdso/vdso.lds.S | 1 + arch/arm64/kernel/vmlinux.lds.S | 2 +- arch/x86/boot/startup/Makefile | 2 +- include/linux/annotate.h | 14 +- include/linux/livepatch_helpers.h | 19 ++ include/linux/objtool_types.h | 1 + lib/crypto/arm64/sha2-armv8.pl | 18 +- scripts/Makefile.build | 4 +- scripts/Makefile.lib | 52 ++-- scripts/Makefile.vmlinux_o | 15 +- scripts/livepatch/klp-build | 24 +- tools/include/linux/objtool_types.h | 1 + tools/objtool/Makefile | 4 + tools/objtool/arch/arm64/Build | 2 + tools/objtool/arch/arm64/decode.c | 177 +++++++++++++ .../arch/arm64/include/arch/cfi_regs.h | 11 + tools/objtool/arch/arm64/include/arch/elf.h | 15 ++ .../objtool/arch/arm64/include/arch/special.h | 21 ++ tools/objtool/arch/arm64/special.c | 21 ++ tools/objtool/arch/x86/include/arch/elf.h | 2 + tools/objtool/builtin-check.c | 5 - tools/objtool/check.c | 65 +++-- tools/objtool/elf.c | 170 +++++++------ tools/objtool/include/objtool/elf.h | 48 +++- tools/objtool/klp-diff.c | 237 ++++++++++++++++-- 33 files changed, 819 insertions(+), 195 deletions(-) create mode 100644 tools/objtool/arch/arm64/Build create mode 100644 tools/objtool/arch/arm64/decode.c create mode 100644 tools/objtool/arch/arm64/include/arch/cfi_regs.h create mode 100644 tools/objtool/arch/arm64/include/arch/elf.h create mode 100644 tools/objtool/arch/arm64/include/arch/special.h create mode 100644 tools/objtool/arch/arm64/special.c -- 2.53.0

