aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--opcodes/pj-dis.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/opcodes/pj-dis.c b/opcodes/pj-dis.c
index a67ea38..f0708a0 100644
--- a/opcodes/pj-dis.c
+++ b/opcodes/pj-dis.c
@@ -21,6 +21,7 @@
#include "sysdep.h"
#include <stdio.h>
+#include "libiberty.h"
#include "opcode/pj.h"
#include "disassemble.h"
@@ -65,7 +66,7 @@ print_insn_pj (bfd_vma addr, struct disassemble_info *info)
char *sep = "\t";
int insn_start = addr;
const pj_opc_info_t *op = &pj_opc_info[opcode];
- int a;
+ unsigned int a;
addr++;
fprintf_fn (stream, "%s", op->u.name);
@@ -145,7 +146,7 @@ print_insn_pj (bfd_vma addr, struct disassemble_info *info)
return addr - insn_start;
}
- for (a = 0; op->arg[a]; a++)
+ for (a = 0; a < ARRAY_SIZE (op->arg) && op->arg[a]; a++)
{
unsigned char data[4];
int val = 0;
@@ -158,7 +159,7 @@ print_insn_pj (bfd_vma addr, struct disassemble_info *info)
val = (UNS (op->arg[0]) || ((data[0] & 0x80) == 0)) ? 0 : -1;
for (i = 0; i < size; i++)
- val = (val << 8) | (data[i] & 0xff);
+ val = ((unsigned) val << 8) | (data[i] & 0xff);
fprintf_fn (stream, "%s", sep);
if (PCREL (op->arg[a]))