twx-linux/tools/objtool
Josh Poimboeuf ef753d6605 objtool: Fix detection of consecutive jump tables on Clang 20
The jump table detection code assumes jump tables are in the same order
as their corresponding indirect branches.  That's apparently not always
true with Clang 20.

Fix that by changing how multiple jump tables are detected.  In the
first detection pass, mark the beginning of each jump table so the
second pass can tell where one ends and the next one begins.

Fixes the following warnings:

  vmlinux.o: warning: objtool: SiS_GetCRT2Ptr+0x1ad: stack state mismatch: cfa1=4+8 cfa2=5+16
  sound/core/seq/snd-seq.o: warning: objtool: cc_ev_to_ump_midi2+0x589: return with modified stack frame

Fixes: be2f0b1e1264 ("objtool: Get rid of reloc->jump_table_start")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: https://lore.kernel.org/r/141752fff614eab962dba6bdfaa54aa67ff03bba.1742852846.git.jpoimboe@kernel.org
Closes: https://lore.kernel.org/oe-kbuild-all/202503171547.LlCTJLQL-lkp@intel.com/
Closes: https://lore.kernel.org/oe-kbuild-all/202503200535.J3hAvcjw-lkp@intel.com/
2025-03-25 09:20:25 +01:00
..
arch [ Merge note: this pull request depends on you having merged 2025-03-24 22:06:11 -07:00
Documentation objtool: Update documentation 2025-03-17 11:36:00 +01:00
include/objtool objtool: Fix detection of consecutive jump tables on Clang 20 2025-03-25 09:20:25 +01:00
.gitignore objtool: Install libsubcmd in build 2023-01-30 16:27:46 -08:00
Build objtool: Install libsubcmd in build 2023-01-30 16:27:46 -08:00
builtin-check.c objtool: Use O_CREAT with explicit mode mask 2025-03-17 12:24:02 +01:00
check.c objtool: Fix detection of consecutive jump tables on Clang 20 2025-03-25 09:20:25 +01:00
elf.c objtool: Fix detection of consecutive jump tables on Clang 20 2025-03-25 09:20:25 +01:00
Makefile objtool: Hide unnecessary compiler error message 2025-03-12 15:43:38 -07:00
noreturns.h Merge branch 'x86/urgent' into x86/cpu, to pick up dependent commits 2025-03-04 11:15:26 +01:00
objtool.c objtool: Create backup on error and print args 2025-03-17 11:36:02 +01:00
orc_dump.c objtool: Add --output option 2025-03-17 11:36:01 +01:00
orc_gen.c objtool/x86: Separate arch-specific and generic parts 2024-03-11 22:23:47 +08:00
special.c x86/alternatives: Add nested alternatives macros 2024-06-11 17:13:08 +02:00
sync-check.sh objtool: Add objtool_types.h 2023-03-23 23:18:56 +01:00
weak.c objtool: Ditch subcommands 2022-04-22 12:32:01 +02:00