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 <christophe.le...@csgroup.eu> > --- > 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 >