[GIT PULL] core/objtool changes for v5.7

From: Ingo Molnar
Date: Mon Mar 30 2020 - 08:31:45 EST


Linus,

Please pull the latest core-objtool-for-linus git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core-objtool-for-linus

# HEAD: 350994bf95414d6da67a72f27d7ac3832ce3725d objtool: Re-arrange validate_functions()

The biggest changes in this cycle were the vmlinux.o optimizations by
Peter Zijlstra, which are preparatory and optimization work to run
objtool against the much richer vmlinux.o object file, to perform new,
whole-program section based logic. That work exposed a handful of
problems with the existing code, which fixes and optimizations are merged
here. The complete 'vmlinux.o and noinstr' work is still work in
progress, targeted for v5.8.

There's also assorted fixes and enhancements from Josh Poimboeuf.

In particular I'd like to draw attention to commit 644592d328370, which
turns fatal objtool errors into failed kernel builds. This behavior is
IMO now justified on multiple grounds (it's easy currently to not notice
an essentially corrupted kernel build), and the commit has been in -next
testing for several weeks, but there could still be build failures with
old or weird toolchains. Should that be widespread or high profile enough
then I'd suggest a quick revert, to not hold up the merge window.

Thanks,

Ingo

------------------>
Josh Poimboeuf (5):
objtool: Fail the kernel build on fatal errors
objtool: Add is_static_jump() helper
objtool: Add relocation check for alternative sections
objtool: Fix clang switch table edge case
objtool: Improve call destination function detection

Peter Zijlstra (17):
objtool: Introduce validate_return()
objtool: Rename func_for_each_insn()
objtool: Rename func_for_each_insn_all()
x86/kexec: Use RIP relative addressing
x86/kexec: Make relocate_kernel_64.S objtool clean
objtool: Optimize find_symbol_by_index()
objtool: Add a statistics mode
objtool: Optimize find_section_by_index()
objtool: Optimize find_section_by_name()
objtool: Optimize find_symbol_*() and read_symbols()
objtool: Rename find_containing_func()
objtool: Resize insn_hash
objtool: Optimize find_symbol_by_name()
objtool: Optimize read_sections()
objtool: Delete cleanup()
objtool: Optimize find_rela_by_dest_range()
objtool: Re-arrange validate_functions()


arch/x86/kernel/Makefile | 1 -
arch/x86/kernel/relocate_kernel_64.S | 12 +-
tools/objtool/Build | 5 +
tools/objtool/builtin-check.c | 3 +-
tools/objtool/builtin.h | 2 +-
tools/objtool/check.c | 268 +++++++++++++++++++--------------
tools/objtool/check.h | 2 +-
tools/objtool/elf.c | 281 +++++++++++++++++++++++++----------
tools/objtool/elf.h | 51 ++++++-
tools/objtool/orc_gen.c | 9 +-
tools/objtool/special.c | 4 +-
tools/objtool/warn.h | 2 +-
12 files changed, 429 insertions(+), 211 deletions(-)