AArch64: Revert setting of elf class in linker stub.
[deliverable/binutils-gdb.git] / opcodes / h8300-dis.c
index 769c12e37d43206225e4f5af2b70d5ff18c3ee14..83a82c09bda74d30d75de50a5a5a82c29987372d 100644 (file)
@@ -1,16 +1,17 @@
 /* Disassemble h8300 instructions.
-   Copyright 1993, 1994, 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
-   Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
-   This program is free software; you can redistribute it and/or modify
+   This file is part of the GNU opcodes library.
+
+   This library is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
 
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   It is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
@@ -22,7 +23,7 @@
 #include "sysdep.h"
 #define h8_opcodes h8ops
 #include "opcode/h8300.h"
-#include "dis-asm.h"
+#include "disassemble.h"
 #include "opintl.h"
 #include "libiberty.h"
 
@@ -51,19 +52,6 @@ bfd_h8_disassemble_init (void)
 
   for (p = h8_opcodes, pi = h8_instructions; p->name; p++, pi++)
     {
-      int n1 = 0;
-      int n2 = 0;
-
-      if ((int) p->data.nib[0] < 16)
-       n1 = (int) p->data.nib[0];
-      else
-       n1 = 0;
-
-      if ((int) p->data.nib[1] < 16)
-       n2 = (int) p->data.nib[1];
-      else
-       n2 = 0;
-
       /* Just make sure there are an even number of nibbles in it, and
         that the count is the same as the length.  */
       for (i = 0; p->data.nib[i] != (op_type) E; i++)
@@ -71,7 +59,8 @@ bfd_h8_disassemble_init (void)
 
       if (i & 1)
        {
-         fprintf (stderr, "Internal error, h8_disassemble_init.\n");
+         /* xgettext:c-format */
+         opcodes_error_handler (_("internal error, h8_disassemble_init"));
          abort ();
        }
 
@@ -151,7 +140,8 @@ extract_immediate (FILE *stream,
       break;
     case L_32:
       *len = 32;
-      *cst = (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3];
+      *cst = (((unsigned) data[0] << 24) + (data[1] << 16)
+             + (data[2] << 8) + data[3]);
       break;
     default:
       *len = 0;
@@ -281,14 +271,14 @@ print_one_arg (disassemble_info *info,
        {
          outfn (stream, ".%s%d (0x%lx)",
                   (short) cst > 0 ? "+" : "",
-                  (short) cst, 
+                  (short) cst,
                   (long)(addr + (short) cst + len));
        }
       else
        {
          outfn (stream, ".%s%d (0x%lx)",
                   (char) cst > 0 ? "+" : "",
-                  (char) cst, 
+                  (char) cst,
                   (long)(addr + (char) cst + len));
        }
     }
@@ -297,19 +287,19 @@ print_one_arg (disassemble_info *info,
 
   else if ((x & MODE) == INDEXB)
     /* Always take low half of reg.  */
-    outfn (stream, "@(0x%x:%d,%s.b)", cst, cstlen, 
+    outfn (stream, "@(0x%x:%d,%s.b)", cst, cstlen,
           regnames[rdisp_n < 8 ? rdisp_n + 8 : rdisp_n]);
 
   else if ((x & MODE) == INDEXW)
     /* Always take low half of reg.  */
-    outfn (stream, "@(0x%x:%d,%s.w)", cst, cstlen, 
+    outfn (stream, "@(0x%x:%d,%s.w)", cst, cstlen,
           wregnames[rdisp_n < 8 ? rdisp_n : rdisp_n - 8]);
 
   else if ((x & MODE) == INDEXL)
     outfn (stream, "@(0x%x:%d,%s.l)", cst, cstlen, lregnames[rdisp_n]);
 
   else if (x & CTRL)
-    outfn (stream, cregnames[rn]);
+    outfn (stream, "%s", cregnames[rn]);
 
   else if ((x & MODE) == CCR)
     outfn (stream, "ccr");
@@ -362,7 +352,7 @@ bfd_h8_disassemble (bfd_vma addr, disassemble_info *info, int mach)
   for (qi = h8_instructions; qi->opcode->name; qi++)
     {
       const struct h8_opcode *q = qi->opcode;
-      op_type *nib = q->data.nib;
+      const op_type *nib = q->data.nib;
       unsigned int len = 0;
 
       while (1)
@@ -472,8 +462,8 @@ bfd_h8_disassemble (bfd_vma addr, disassemble_info *info, int mach)
                       || (looking_for & MODE) == INDEXW
                       || (looking_for & MODE) == INDEXL)
                {
-                 extract_immediate (stream, looking_for, thisnib, 
-                                    data + len / 2, cst + opnr, 
+                 extract_immediate (stream, looking_for, thisnib,
+                                    data + len / 2, cst + opnr,
                                     cstlen + opnr, q);
                  /* Even address == bra, odd == bra/s.  */
                  if (q->how == O (O_BRAS, SB))
@@ -541,8 +531,8 @@ bfd_h8_disassemble (bfd_vma addr, disassemble_info *info, int mach)
                {
                  int i = len / 2;
 
-                 cst[opnr] = ((data[i] << 24) 
-                              | (data[i + 1] << 16) 
+                 cst[opnr] = (((unsigned) data[i] << 24)
+                              | (data[i + 1] << 16)
                               | (data[i + 2] << 8)
                               | (data[i + 3]));
 
@@ -552,14 +542,10 @@ bfd_h8_disassemble (bfd_vma addr, disassemble_info *info, int mach)
                {
                  int i = len / 2;
 
-                 cst[opnr] = 
+                 cst[opnr] =
                    (data[i] << 16) | (data[i + 1] << 8) | (data[i + 2]);
                  cstlen[opnr] = 24;
                }
-             else if (looking_for & IGNORE)
-               {
-                 ;
-               }
              else if (looking_for & DISPREG)
                {
                  dispregno[opnr] = thisnib & 7;
@@ -638,35 +624,35 @@ bfd_h8_disassemble (bfd_vma addr, disassemble_info *info, int mach)
                               regno[1]);
                      return qi->length;
                    }
-                 if (strncmp (q->name, "mova", 4) == 0)
+                 if (CONST_STRNEQ (q->name, "mova"))
                    {
-                     op_type *args = q->args.nib;
+                     const op_type *args = q->args.nib;
 
                      if (args[1] == (op_type) E)
                        {
                          /* Short form.  */
-                         print_one_arg (info, addr, args[0], cst[0], 
-                                        cstlen[0], dispregno[0], regno[0], 
+                         print_one_arg (info, addr, args[0], cst[0],
+                                        cstlen[0], dispregno[0], regno[0],
                                         pregnames, qi->length);
                          outfn (stream, ",er%d", dispregno[0]);
                        }
                      else
                        {
                          outfn (stream, "@(0x%x:%d,", cst[0], cstlen[0]);
-                         print_one_arg (info, addr, args[1], cst[1], 
-                                        cstlen[1], dispregno[1], regno[1], 
+                         print_one_arg (info, addr, args[1], cst[1],
+                                        cstlen[1], dispregno[1], regno[1],
                                         pregnames, qi->length);
                          outfn (stream, ".%c),",
                                 (args[0] & MODE) == INDEXB ? 'b' : 'w');
-                         print_one_arg (info, addr, args[2], cst[2], 
-                                        cstlen[2], dispregno[2], regno[2], 
+                         print_one_arg (info, addr, args[2], cst[2],
+                                        cstlen[2], dispregno[2], regno[2],
                                         pregnames, qi->length);
                        }
                      return qi->length;
                    }
                  /* Fill in the args.  */
                  {
-                   op_type *args = q->args.nib;
+                   const op_type *args = q->args.nib;
                    int hadone = 0;
                    int nargs;
 
@@ -681,7 +667,7 @@ bfd_h8_disassemble (bfd_vma addr, disassemble_info *info, int mach)
                        return qi->length;
                      }
 
-                   for (nargs = 0; 
+                   for (nargs = 0;
                         nargs < 3 && args[nargs] != (op_type) E;
                         nargs++)
                      {
This page took 0.02781 seconds and 4 git commands to generate.