objtool: Move the IRET hack into the arch decoder
Quoting Julien: "And the other suggestion is my other email was that you don't even need to add INSN_EXCEPTION_RETURN. You can keep IRET as INSN_CONTEXT_SWITCH by default and x86 decoder lookups the symbol conaining an iret. If it's a function symbol, it can just set the type to INSN_OTHER so that it caries on to the next instruction after having handled the stack_op." Suggested-by: Julien Thierry <jthierry@redhat.com> Signed-off-by: Miroslav Benes <mbenes@suse.cz> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Reviewed-by: Miroslav Benes <mbenes@suse.cz> Acked-by: Josh Poimboeuf <jpoimboe@redhat.com> Link: https://lkml.kernel.org/r/20200428191659.913283807@infradead.org
This commit is contained in:

committed by
Peter Zijlstra

parent
b09fb65e86
commit
b490f45362
@@ -2320,17 +2320,6 @@ static int validate_branch(struct objtool_file *file, struct symbol *func,
|
||||
|
||||
break;
|
||||
|
||||
case INSN_EXCEPTION_RETURN:
|
||||
/*
|
||||
* This handles x86's sync_core() case, where we use an
|
||||
* IRET to self. All 'normal' IRET instructions are in
|
||||
* STT_NOTYPE entry symbols.
|
||||
*/
|
||||
if (func)
|
||||
break;
|
||||
|
||||
return 0;
|
||||
|
||||
case INSN_CONTEXT_SWITCH:
|
||||
if (func && (!next_insn || !next_insn->hint)) {
|
||||
WARN_FUNC("unsupported instruction in callable function",
|
||||
|
Reference in New Issue
Block a user