]> 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 abac01ea0f503cc4a5a909dfad8ddb6fceda2615..3699477d881226cfc1c10bdba473f8308c17a817 100644 (file)
@@ -1,5 +1,5 @@
 /* pj-dis.c -- Disassemble picoJava instructions.
-   Copyright (C) 1999-2020 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"
 
@@ -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;