]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - opcodes/pj-dis.c
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / opcodes / pj-dis.c
index f34f05f1d882642b4e6536218cfb3ad03d96e659..3699477d881226cfc1c10bdba473f8308c17a817 100644 (file)
@@ -1,5 +1,5 @@
 /* pj-dis.c -- Disassemble picoJava instructions.
-   Copyright (C) 1999-2017 Free Software Foundation, Inc.
+   Copyright (C) 1999-2022 Free Software Foundation, Inc.
    Contributed by Steve Chamberlain, of Transmeta (sac@pobox.com).
 
    This file is part of the GNU opcodes library.
@@ -21,6 +21,7 @@
 
 #include "sysdep.h"
 #include <stdio.h>
+#include "libiberty.h"
 #include "opcode/pj.h"
 #include "disassemble.h"
 
@@ -32,10 +33,10 @@ get_int (bfd_vma memaddr, int *iptr, struct disassemble_info *info)
   unsigned char ival[4];
   int status = info->read_memory_func (memaddr, ival, 4, info);
 
-  *iptr = (ival[0] << 24)
-    | (ival[1] << 16)
-    | (ival[2] << 8)
-    | (ival[3] << 0);
+  *iptr = (((unsigned) ival[0] << 24)
+          | (ival[1] << 16)
+          | (ival[2] << 8)
+          | (ival[3] << 0));
 
   return status;
 }
@@ -57,7 +58,7 @@ print_insn_pj (bfd_vma addr, struct disassemble_info *info)
 
       if ((status = info->read_memory_func (addr + 1, &byte_2, 1, info)))
        goto fail;
-      fprintf_fn (stream, "%s\t", pj_opc_info[opcode + byte_2].u.name);
+      fprintf_fn (stream, "%s", pj_opc_info[opcode + byte_2].u.name);
       return 2;
     }
   else
@@ -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,12 +159,13 @@ 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]))
            (*info->print_address_func) (val + insn_start, info);
          else
-           fprintf_fn (stream, "%s%d", sep, val);
+           fprintf_fn (stream, "%d", val);
 
          sep = ",";
          addr += size;