diff --git a/librz/arch/isa/xtensa/xtensa.c b/librz/arch/isa/xtensa/xtensa.c index c2111352d42..e906a6552dd 100644 --- a/librz/arch/isa/xtensa/xtensa.c +++ b/librz/arch/isa/xtensa/xtensa.c @@ -27,16 +27,16 @@ bool xtensa_open(XtensaContext *ctx, const char *cpu, bool big_endian) { return false; } cs_mode mode = big_endian ? CS_MODE_BIG_ENDIAN : CS_MODE_LITTLE_ENDIAN; - if (RZ_STR_ISEMPTY(cpu)) { - mode |= xtensa_cpu_modes[0].mode; - } else { + cs_mode mcpu = xtensa_cpu_modes[0].mode; + if (RZ_STR_ISNOTEMPTY(cpu)) { for (int i = 0; i < RZ_ARRAY_SIZE(xtensa_cpu_modes); ++i) { if (RZ_STR_EQ(cpu, xtensa_cpu_modes[i].cpu)) { - mode |= xtensa_cpu_modes[i].mode; + mcpu = xtensa_cpu_modes[i].mode; break; } } } + mode |= mcpu; if (mode == ctx->mode) { return true; } diff --git a/librz/arch/p/asm/asm_xtensa_cs.c b/librz/arch/p/asm/asm_xtensa_cs.c index 522cdbb27db..3dba0341cde 100644 --- a/librz/arch/p/asm/asm_xtensa_cs.c +++ b/librz/arch/p/asm/asm_xtensa_cs.c @@ -22,7 +22,9 @@ static int asm_xtensa_disassemble(RzAsm *a, RzAsmOp *op, const ut8 *buf, int len op->size = ctx->insn->size; xtensa_disassemble_fini(ctx); return op->size; + beach: + rz_asm_op_set_asm(op, "illegal"); xtensa_disassemble_fini(ctx); return -1; }