Re: [PATCH v2 11/14] objtool: Remove too strict constraint in jump table search
From: Peter Zijlstra <peterz@infradead.org>
Date: 2023-06-22 11:48:56
Also in:
lkml
From: Peter Zijlstra <peterz@infradead.org>
Date: 2023-06-22 11:48:56
Also in:
lkml
On Thu, Jun 22, 2023 at 12:54:33PM +0200, Christophe Leroy wrote:
In code there is often a pattern like: load jump table address do some test conditional jump to label1: do something unconditional jump to label2: label1: do something else read jump table dynamic jump label2: do other job here .... find_jump_table() contains a constraint that stops the backsearch of the table address loading when a jump is found in-between. Remove that constraint.
Josh, happen to remember why this code exists ?
Signed-off-by: Christophe Leroy <redacted> --- tools/objtool/check.c | 7 ------- 1 file changed, 7 deletions(-)diff --git a/tools/objtool/check.c b/tools/objtool/check.c index b810be087d7c..1911de0e1008 100644 --- a/tools/objtool/check.c +++ b/tools/objtool/check.c@@ -2130,13 +2130,6 @@ static struct reloc *find_jump_table(struct objtool_file *file, if (insn != orig_insn && insn->type == INSN_JUMP_DYNAMIC) break; - /* allow small jumps within the range */ - if (insn->type == INSN_JUMP_UNCONDITIONAL && - insn->jump_dest && - (insn->jump_dest->offset <= insn->offset || - insn->jump_dest->offset > orig_insn->offset)) - break; - table_reloc = arch_find_switch_table(file, insn, is_rel); if (!table_reloc) continue;-- 2.40.1