Skip to content

Commit 56fb2d6

Browse files
jpoimboeingomolnar
authored andcommitted
objtool: Fix rare switch jump table pattern detection
The following commit: 3732710 ("objtool: Improve rare switch jump table pattern detection") ... improved objtool's ability to detect GCC switch statement jump tables for GCC 6. However the check to allow short jumps with the scanned range of instructions wasn't quite right. The pattern detection should allow jumps to the indirect jump instruction itself. This fixes the following warning: drivers/infiniband/sw/rxe/rxe_comp.o: warning: objtool: rxe_completer()+0x315: sibling call from callable instruction with changed frame pointer Reported-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Fixes: 3732710 ("objtool: Improve rare switch jump table pattern detection") Link: http://lkml.kernel.org/r/20161026153408.2rifnw7bvoc5sex7@treble Signed-off-by: Ingo Molnar <mingo@kernel.org>
1 parent 9fe68ca commit 56fb2d6

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

tools/objtool/builtin-check.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -754,7 +754,7 @@ static struct rela *find_switch_table(struct objtool_file *file,
754754
if (insn->type == INSN_JUMP_UNCONDITIONAL &&
755755
insn->jump_dest &&
756756
(insn->jump_dest->offset <= insn->offset ||
757-
insn->jump_dest->offset >= orig_insn->offset))
757+
insn->jump_dest->offset > orig_insn->offset))
758758
break;
759759

760760
text_rela = find_rela_by_dest_range(insn->sec, insn->offset,

0 commit comments

Comments
 (0)