[GIT PULL] objtool changes for v5.8

From: Ingo Molnar
Date: Mon Jun 01 2020 - 11:31:21 EST


Linus,

Please pull the latest objtool/core git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git objtool-core-2020-06-01

# HEAD: 0decf1f8de919782b152daf9c991967a2bac54f0 objtool: Enable compilation of objtool for all architectures

There are a lot of objtool changes in this cycle, all across the map:

- Speed up objtool significantly, especially when there are large number of sections
- Improve objtool's understanding of special instructions such as IRET,
to reduce the number of annotations required
- Implement 'noinstr' validation
- Do baby steps for non-x86 objtool use
- Simplify/fix retpoline decoding
- Add vmlinux validation
- Improve documentation
- Fix various bugs and apply smaller cleanups

Thanks,

Ingo

------------------>
Alexandre Chartre (4):
objtool: Uniquely identify alternative instruction groups
objtool: is_fentry_call() crashes if call has no destination
objtool: UNWIND_HINT_RET_OFFSET should not check registers
objtool: Add support for intra-function calls

Ingo Molnar (3):
objtool: Constify 'struct elf *' parameters
objtool: Rename elf_read() to elf_open_read()
objtool: Constify arch_decode_instruction()

Josh Poimboeuf (2):
samples/ftrace: Fix asm function ELF annotations
objtool: Add check_kcov_mode() to the uaccess safelist

Julien Thierry (9):
objtool: Fix off-by-one in symbol_by_offset()
objtool: Always do header sync check
objtool: Remove redundant checks on operand type
objtool: Clean instruction state before each function validation
objtool: Ignore empty alternatives
objtool: Use arch specific values in restore_reg()
objtool: Split out arch-specific CFI definitions
objtool: Support multiple stack_op per instruction
objtool: Remove check preventing branches within alternative

Matt Helsley (3):
objtool: Exit successfully when requesting help
objtool: Move struct objtool_file into arch-independent header
objtool: Enable compilation of objtool for all architectures

Miroslav Benes (1):
objtool: Move the IRET hack into the arch decoder

Muchun Song (1):
objtool: Remove redundant .rodata section name comparison

Nick Desaulniers (1):
objtool: Documentation: document UACCESS warnings

Peter Zijlstra (26):
objtool: Fix 32bit cross builds
objtool: Better handle IRET
objtool: Introduce HINT_RET_OFFSET
x86,ftrace: Fix ftrace_regs_caller() unwind
x86,ftrace: Use SIZEOF_PTREGS
x86,ftrace: Shrink ftrace_regs_caller() by one byte
objtool: Remove SAVE/RESTORE hints
objtool: Rename struct cfi_state
objtool: Fix !CFI insn_state propagation
objtool: Implement noinstr validation
objtool: Optimize !vmlinux.o again
objtool: Use sec_offset_hash() for insn_hash
kbuild/objtool: Add objtool-vmlinux.o pass
objtool: Avoid iterating !text section symbols
objtool: Rearrange validate_section()
objtool: Add STT_NOTYPE noinstr validation
objtool: Fix ORC vs alternatives
x86,smap: Fix smap_{save,restore}() alternatives
objtool: Rework allocating stack_ops on decode
objtool: Make handle_insn_ops() unconditional
objtool: Remove INSN_STACK
x86/speculation: Change FILL_RETURN_BUFFER to work with objtool
x86: Simplify retpoline declaration
x86: Change {JMP,CALL}_NOSPEC argument
x86/retpoline: Fix retpoline unwind
objtool: Allow no-op CFI ops in alternatives

Raphael Gault (1):
objtool: Add abstraction for destination offsets

Sami Tolvanen (2):
objtool: use gelf_getsymshndx to handle >64k sections
objtool: optimize add_dead_ends for split sections

Thomas Gleixner (1):
objtool: Also consider .entry.text as noinstr


arch/x86/crypto/aesni-intel_asm.S | 4 +-
arch/x86/crypto/camellia-aesni-avx-asm_64.S | 2 +-
arch/x86/crypto/camellia-aesni-avx2-asm_64.S | 2 +-
arch/x86/crypto/crc32c-pcl-intel-asm_64.S | 26 +-
arch/x86/entry/entry_32.S | 6 +-
arch/x86/entry/entry_64.S | 2 +-
arch/x86/include/asm/GEN-for-each-reg.h | 25 +
arch/x86/include/asm/asm-prototypes.h | 35 +-
arch/x86/include/asm/nospec-branch.h | 76 +--
arch/x86/include/asm/orc_types.h | 3 +-
arch/x86/include/asm/processor.h | 2 -
arch/x86/include/asm/smap.h | 11 +-
arch/x86/include/asm/unwind_hints.h | 31 +-
arch/x86/kernel/ftrace.c | 14 +-
arch/x86/kernel/ftrace_32.S | 2 +-
arch/x86/kernel/ftrace_64.S | 44 +-
arch/x86/lib/checksum_32.S | 4 +-
arch/x86/lib/retpoline.S | 63 +-
arch/x86/platform/efi/efi_stub_64.S | 2 +-
include/linux/frame.h | 11 +
lib/Kconfig.debug | 5 +
samples/ftrace/ftrace-direct-modify.c | 4 +
samples/ftrace/ftrace-direct-too.c | 2 +
samples/ftrace/ftrace-direct.c | 2 +
scripts/link-vmlinux.sh | 24 +
tools/arch/x86/include/asm/orc_types.h | 3 +-
tools/objtool/Build | 13 +-
tools/objtool/Documentation/stack-validation.txt | 41 ++
tools/objtool/Makefile | 15 +-
tools/objtool/arch.h | 19 +-
tools/objtool/arch/x86/decode.c | 302 +++++----
tools/objtool/arch/x86/include/cfi_regs.h | 25 +
tools/objtool/builtin-check.c | 13 +-
tools/objtool/builtin-orc.c | 3 +-
tools/objtool/builtin.h | 2 +-
tools/objtool/cfi.h | 35 +-
tools/objtool/check.c | 801 +++++++++++++++--------
tools/objtool/check.h | 35 +-
tools/objtool/elf.c | 102 ++-
tools/objtool/elf.h | 37 +-
tools/objtool/objtool.c | 4 +-
tools/objtool/objtool.h | 27 +
tools/objtool/orc.h | 18 -
tools/objtool/orc_dump.c | 3 +-
tools/objtool/orc_gen.c | 12 +-
tools/objtool/weak.c | 40 ++
46 files changed, 1228 insertions(+), 724 deletions(-)
create mode 100644 arch/x86/include/asm/GEN-for-each-reg.h
create mode 100644 tools/objtool/arch/x86/include/cfi_regs.h
create mode 100644 tools/objtool/objtool.h
delete mode 100644 tools/objtool/orc.h
create mode 100644 tools/objtool/weak.c