diff options
author | Peter Zijlstra <peterz@infradead.org> | 2020-03-25 14:04:45 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2020-04-22 10:53:50 +0200 |
commit | e7c0219b328c96746767f21b9532eed6a48f61c5 (patch) | |
tree | 1947692e76fbe7f377b5cac9b674fc5027b5c44c /tools/objtool/cfi.h | |
parent | objtool: Rename struct cfi_state (diff) | |
download | linux-e7c0219b328c96746767f21b9532eed6a48f61c5.tar.xz linux-e7c0219b328c96746767f21b9532eed6a48f61c5.zip |
objtool: Fix !CFI insn_state propagation
Objtool keeps per instruction CFI state in struct insn_state and will
save/restore this where required. However, insn_state has grown some
!CFI state, and this must not be saved/restored (that would
loose/destroy state).
Fix this by moving the CFI specific parts of insn_state into struct
cfi_state.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Miroslav Benes <mbenes@suse.cz>
Reviewed-by: Alexandre Chartre <alexandre.chartre@oracle.com>
Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lkml.kernel.org/r/20200416115119.045821071@infradead.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'tools/objtool/cfi.h')
-rw-r--r-- | tools/objtool/cfi.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/tools/objtool/cfi.h b/tools/objtool/cfi.h index 6faf97666d6b..c7c59c6a44ee 100644 --- a/tools/objtool/cfi.h +++ b/tools/objtool/cfi.h @@ -19,8 +19,20 @@ struct cfi_reg { }; struct cfi_init_state { + struct cfi_reg regs[CFI_NUM_REGS]; struct cfi_reg cfa; +}; + +struct cfi_state { struct cfi_reg regs[CFI_NUM_REGS]; + struct cfi_reg vals[CFI_NUM_REGS]; + struct cfi_reg cfa; + int stack_size; + int drap_reg, drap_offset; + unsigned char type; + bool bp_scratch; + bool drap; + bool end; }; #endif /* _OBJTOOL_CFI_H */ |