objtool: Fix rare switch jump table pattern detection
The following commit:3732710ff6
("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:3732710ff6
("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>
This commit is contained in:
parent
9fe68cad6e
commit
56fb2d6eb6
@ -754,7 +754,7 @@ static struct rela *find_switch_table(struct objtool_file *file,
|
||||
if (insn->type == INSN_JUMP_UNCONDITIONAL &&
|
||||
insn->jump_dest &&
|
||||
(insn->jump_dest->offset <= insn->offset ||
|
||||
insn->jump_dest->offset >= orig_insn->offset))
|
||||
insn->jump_dest->offset > orig_insn->offset))
|
||||
break;
|
||||
|
||||
text_rela = find_rela_by_dest_range(insn->sec, insn->offset,
|
||||
|
Loading…
Reference in New Issue
Block a user