target/xtensa: disas/xtensa: fix coverity warnings
Coverity warnings CID 1385146, 1385148 1385149 and 1385150 point that xtensa_opcode_num_operands and xtensa_format_num_slots may return -1 even when xtensa_opcode_decode and xtensa_format_decode succeed. In that case unsigned counters used to iterate through operands/slots will not do the right thing. Make counters and loop bounds signed to fix the warnings. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
This commit is contained in:
parent
251634f4ce
commit
847a647320
@ -37,7 +37,7 @@ int print_insn_xtensa(bfd_vma memaddr, struct disassemble_info *info)
|
|||||||
bfd_byte *buffer = g_malloc(1);
|
bfd_byte *buffer = g_malloc(1);
|
||||||
int status = info->read_memory_func(memaddr, buffer, 1, info);
|
int status = info->read_memory_func(memaddr, buffer, 1, info);
|
||||||
xtensa_format fmt;
|
xtensa_format fmt;
|
||||||
unsigned slot, slots;
|
int slot, slots;
|
||||||
unsigned len;
|
unsigned len;
|
||||||
|
|
||||||
if (status) {
|
if (status) {
|
||||||
@ -79,7 +79,7 @@ int print_insn_xtensa(bfd_vma memaddr, struct disassemble_info *info)
|
|||||||
|
|
||||||
for (slot = 0; slot < slots; ++slot) {
|
for (slot = 0; slot < slots; ++slot) {
|
||||||
xtensa_opcode opc;
|
xtensa_opcode opc;
|
||||||
unsigned opnd, vopnd, opnds;
|
int opnd, vopnd, opnds;
|
||||||
|
|
||||||
if (slot) {
|
if (slot) {
|
||||||
info->fprintf_func(info->stream, "; ");
|
info->fprintf_func(info->stream, "; ");
|
||||||
|
@ -942,7 +942,7 @@ static void disas_xtensa_insn(CPUXtensaState *env, DisasContext *dc)
|
|||||||
unsigned char b[MAX_INSN_LENGTH] = {cpu_ldub_code(env, dc->pc)};
|
unsigned char b[MAX_INSN_LENGTH] = {cpu_ldub_code(env, dc->pc)};
|
||||||
unsigned len = xtensa_op0_insn_len(dc, b[0]);
|
unsigned len = xtensa_op0_insn_len(dc, b[0]);
|
||||||
xtensa_format fmt;
|
xtensa_format fmt;
|
||||||
unsigned slot, slots;
|
int slot, slots;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
if (len == XTENSA_UNDEFINED) {
|
if (len == XTENSA_UNDEFINED) {
|
||||||
@ -969,7 +969,7 @@ static void disas_xtensa_insn(CPUXtensaState *env, DisasContext *dc)
|
|||||||
slots = xtensa_format_num_slots(isa, fmt);
|
slots = xtensa_format_num_slots(isa, fmt);
|
||||||
for (slot = 0; slot < slots; ++slot) {
|
for (slot = 0; slot < slots; ++slot) {
|
||||||
xtensa_opcode opc;
|
xtensa_opcode opc;
|
||||||
unsigned opnd, vopnd, opnds;
|
int opnd, vopnd, opnds;
|
||||||
uint32_t raw_arg[MAX_OPCODE_ARGS];
|
uint32_t raw_arg[MAX_OPCODE_ARGS];
|
||||||
uint32_t arg[MAX_OPCODE_ARGS];
|
uint32_t arg[MAX_OPCODE_ARGS];
|
||||||
XtensaOpcodeOps *ops;
|
XtensaOpcodeOps *ops;
|
||||||
|
Loading…
Reference in New Issue
Block a user