[GIT PULL] objtool changes for v6.14

From: Ingo Molnar
Date: Mon Jan 20 2025 - 05:00:06 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-2025-01-20

# HEAD: 41a1e976623eb430f7b5a8619d3810b44e6235ad x86/mm: Convert unreachable() to BUG()

Objtool changes for v6.14:

- Introduce the generic section-based annotation
infrastructure a.k.a. ASM_ANNOTATE/ANNOTATE (Peter Zijlstra)

- Convert various facilities to ASM_ANNOTATE/ANNOTATE: (Peter Zijlstra)

- ANNOTATE_NOENDBR
- ANNOTATE_RETPOLINE_SAFE
- instrumentation_{begin,end}()
- VALIDATE_UNRET_BEGIN
- ANNOTATE_IGNORE_ALTERNATIVE
- ANNOTATE_INTRA_FUNCTION_CALL
- {.UN}REACHABLE

- Optimize the annotation-sections parsing code (Peter Zijlstra)

- Centralize annotation definitions in <linux/objtool.h>

- Unify & simplify the barrier_before_unreachable()/unreachable()
definitions (Peter Zijlstra)

- Convert unreachable() calls to BUG() in x86 code, as
unreachable() has unreliable code generation (Peter Zijlstra)

- Remove annotate_reachable() and annotate_unreachable(), as it's
unreliable against compiler optimizations (Peter Zijlstra)

- Fix non-standard ANNOTATE_REACHABLE annotation order (Peter Zijlstra)

- Robustify the annotation code by warning about unknown annotation
types (Peter Zijlstra)

- Allow arch code to discover jump table size, in preparation of
annotated jump table support (Ard Biesheuvel)

Thanks,

Ingo

------------------>
Ard Biesheuvel (1):
objtool: Allow arch code to discover jump table size

Peter Zijlstra (17):
objtool: Generic annotation infrastructure
objtool: Convert ANNOTATE_NOENDBR to ANNOTATE
objtool: Convert ANNOTATE_RETPOLINE_SAFE to ANNOTATE
objtool: Convert instrumentation_{begin,end}() to ANNOTATE
objtool: Convert VALIDATE_UNRET_BEGIN to ANNOTATE
objtool: Convert ANNOTATE_IGNORE_ALTERNATIVE to ANNOTATE
objtool: Convert ANNOTATE_INTRA_FUNCTION_CALL to ANNOTATE
objtool: Collapse annotate sequences
objtool: Collect more annotations in objtool.h
unreachable: Unify
x86: Convert unreachable() to BUG()
loongarch: Use ASM_REACHABLE
objtool: Remove annotate_{,un}reachable()
objtool: Convert {.UN}REACHABLE to ANNOTATE
objtool: Fix ANNOTATE_REACHABLE to be a normal annotation
objtool: Warn about unknown annotation types
x86/mm: Convert unreachable() to BUG()


arch/loongarch/include/asm/bug.h | 13 +-
arch/x86/entry/entry_64.S | 9 +-
arch/x86/include/asm/alternative.h | 22 +-
arch/x86/include/asm/bug.h | 2 +-
arch/x86/include/asm/irq_stack.h | 4 +-
arch/x86/include/asm/nospec-branch.h | 18 --
arch/x86/kernel/process.c | 2 +-
arch/x86/kernel/reboot.c | 2 +-
arch/x86/kvm/svm/sev.c | 2 +-
arch/x86/mm/fault.c | 2 +-
include/linux/compiler-gcc.h | 12 -
include/linux/compiler.h | 37 +--
include/linux/instrumentation.h | 11 +-
include/linux/objtool.h | 126 ++++++----
include/linux/objtool_types.h | 12 +
tools/include/linux/objtool_types.h | 12 +
tools/objtool/arch/loongarch/special.c | 3 +-
tools/objtool/arch/powerpc/special.c | 3 +-
tools/objtool/arch/x86/special.c | 4 +-
tools/objtool/check.c | 426 +++++++++-----------------------
tools/objtool/include/objtool/check.h | 5 +-
tools/objtool/include/objtool/special.h | 3 +-
22 files changed, 267 insertions(+), 463 deletions(-)