Messages in this thread Patch in this message | | | Date | Tue, 28 Apr 2020 21:11:09 +0200 | From | Peter Zijlstra <> | Subject | [PATCH v2 08/14] objtool: Remove INSN_STACK |
| |
With the unconditional use of handle_insn_ops(), INSN_STACK has lost its purpose. Remove it.
Suggested-by: Julien Thierry <jthierry@redhat.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> --- tools/objtool/arch.h | 1 - tools/objtool/arch/x86/decode.c | 23 ----------------------- tools/objtool/check.c | 3 --- 3 files changed, 27 deletions(-)
--- a/tools/objtool/arch.h +++ b/tools/objtool/arch.h @@ -21,7 +21,6 @@ enum insn_type { INSN_RETURN, INSN_EXCEPTION_RETURN, INSN_CONTEXT_SWITCH, - INSN_STACK, INSN_BUG, INSN_NOP, INSN_STAC, --- a/tools/objtool/arch/x86/decode.c +++ b/tools/objtool/arch/x86/decode.c @@ -141,7 +141,6 @@ int arch_decode_instruction(const struct if (rex_w && !rex_b && modrm_mod == 3 && modrm_rm == 4) { /* add/sub reg, %rsp */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_ADD; op->src.reg = op_to_cfi_reg[modrm_reg][rex_r]; @@ -154,7 +153,6 @@ int arch_decode_instruction(const struct case 0x50 ... 0x57: /* push reg */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_REG; op->src.reg = op_to_cfi_reg[op1 & 0x7][rex_b]; @@ -166,7 +164,6 @@ int arch_decode_instruction(const struct case 0x58 ... 0x5f: /* pop reg */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_POP; op->dest.type = OP_DEST_REG; @@ -178,7 +175,6 @@ int arch_decode_instruction(const struct case 0x68: case 0x6a: /* push immediate */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_CONST; op->dest.type = OP_DEST_PUSH; @@ -196,7 +192,6 @@ int arch_decode_instruction(const struct if (modrm == 0xe4) { /* and imm, %rsp */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_AND; op->src.reg = CFI_SP; @@ -215,7 +210,6 @@ int arch_decode_instruction(const struct break; /* add/sub imm, %rsp */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_ADD; op->src.reg = CFI_SP; @@ -229,7 +223,6 @@ int arch_decode_instruction(const struct if (rex_w && !rex_r && modrm_mod == 3 && modrm_reg == 4) { /* mov %rsp, reg */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_REG; op->src.reg = CFI_SP; @@ -242,7 +235,6 @@ int arch_decode_instruction(const struct if (rex_w && !rex_b && modrm_mod == 3 && modrm_rm == 4) { /* mov reg, %rsp */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_REG; op->src.reg = op_to_cfi_reg[modrm_reg][rex_r]; @@ -258,7 +250,6 @@ int arch_decode_instruction(const struct (modrm_mod == 1 || modrm_mod == 2) && modrm_rm == 5) { /* mov reg, disp(%rbp) */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_REG; op->src.reg = op_to_cfi_reg[modrm_reg][rex_r]; @@ -270,7 +261,6 @@ int arch_decode_instruction(const struct } else if (rex_w && !rex_b && modrm_rm == 4 && sib == 0x24) { /* mov reg, disp(%rsp) */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_REG; op->src.reg = op_to_cfi_reg[modrm_reg][rex_r]; @@ -286,7 +276,6 @@ int arch_decode_instruction(const struct if (rex_w && !rex_b && modrm_mod == 1 && modrm_rm == 5) { /* mov disp(%rbp), reg */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_REG_INDIRECT; op->src.reg = CFI_BP; @@ -299,7 +288,6 @@ int arch_decode_instruction(const struct modrm_mod != 3 && modrm_rm == 4) { /* mov disp(%rsp), reg */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_REG_INDIRECT; op->src.reg = CFI_SP; @@ -314,7 +302,6 @@ int arch_decode_instruction(const struct case 0x8d: if (sib == 0x24 && rex_w && !rex_b && !rex_x) { - *type = INSN_STACK; ADD_OP(op) { if (!insn.displacement.value) { /* lea (%rsp), reg */ @@ -332,7 +319,6 @@ int arch_decode_instruction(const struct } else if (rex == 0x48 && modrm == 0x65) { /* lea disp(%rbp), %rsp */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_ADD; op->src.reg = CFI_BP; @@ -350,7 +336,6 @@ int arch_decode_instruction(const struct * Restoring rsp back to its original value after a * stack realignment. */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_ADD; op->src.reg = CFI_R10; @@ -368,7 +353,6 @@ int arch_decode_instruction(const struct * Restoring rsp back to its original value after a * stack realignment. */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_ADD; op->src.reg = CFI_R13; @@ -382,7 +366,6 @@ int arch_decode_instruction(const struct case 0x8f: /* pop to mem */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_POP; op->dest.type = OP_DEST_MEM; @@ -395,7 +378,6 @@ int arch_decode_instruction(const struct case 0x9c: /* pushf */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_CONST; op->dest.type = OP_DEST_PUSHF; @@ -404,7 +386,6 @@ int arch_decode_instruction(const struct case 0x9d: /* popf */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_POPF; op->dest.type = OP_DEST_MEM; @@ -443,7 +424,6 @@ int arch_decode_instruction(const struct } else if (op2 == 0xa0 || op2 == 0xa8) { /* push fs/gs */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_CONST; op->dest.type = OP_DEST_PUSH; @@ -452,7 +432,6 @@ int arch_decode_instruction(const struct } else if (op2 == 0xa1 || op2 == 0xa9) { /* pop fs/gs */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_POP; op->dest.type = OP_DEST_MEM; @@ -469,7 +448,6 @@ int arch_decode_instruction(const struct * mov bp, sp * pop bp */ - *type = INSN_STACK; ADD_OP(op) op->dest.type = OP_DEST_LEAVE; @@ -537,7 +515,6 @@ int arch_decode_instruction(const struct else if (modrm_reg == 6) { /* push from mem */ - *type = INSN_STACK; ADD_OP(op) { op->src.type = OP_SRC_CONST; op->dest.type = OP_DEST_PUSH; --- a/tools/objtool/check.c +++ b/tools/objtool/check.c @@ -2327,9 +2327,6 @@ static int validate_branch(struct objtoo } return 0; - case INSN_STACK: - break; - case INSN_STAC: if (state.uaccess) { WARN_FUNC("recursive UACCESS enable", sec, insn->offset);
| |