X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=opcodes%2Fd30v-dis.c;h=d2e0caa39d73372ac1ab57fa20beaed9fb5049c9;hb=d043f8c867f85f1c36cc957da8204fe2907b3aea;hp=5f5d07fcd8e0be081992cfdf3a8a8721f2f2cded;hpb=91d6fa6a035cc7d0b7be5c99c194a64cb80924b0;p=deliverable%2Fbinutils-gdb.git diff --git a/opcodes/d30v-dis.c b/opcodes/d30v-dis.c index 5f5d07fcd8..d2e0caa39d 100644 --- a/opcodes/d30v-dis.c +++ b/opcodes/d30v-dis.c @@ -1,6 +1,5 @@ /* Disassemble D30V instructions. - Copyright 1997, 1998, 2000, 2001, 2005, 2007 - Free Software Foundation, Inc. + Copyright (C) 1997-2019 Free Software Foundation, Inc. This file is part of the GNU opcodes library. @@ -19,11 +18,12 @@ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -#include #include "sysdep.h" +#include #include "opcode/d30v.h" -#include "dis-asm.h" +#include "disassemble.h" #include "opintl.h" +#include "libiberty.h" #define PC_MASK 0xFFFFFFFF @@ -125,7 +125,8 @@ print_insn (struct disassemble_info *info, { int val, opnum, need_comma = 0; struct d30v_operand *oper; - int i, match, opind = 0, need_paren = 0, found_control = 0; + int i, match, need_paren = 0, found_control = 0; + unsigned int opind = 0; (*info->fprintf_func) (info->stream, "%s", insn->op->name); @@ -154,7 +155,8 @@ print_insn (struct disassemble_info *info, (*info->fprintf_func) (info->stream, "\t"); - while ((opnum = insn->form->operands[opind++]) != 0) + while (opind < ARRAY_SIZE (insn->form->operands) + && (opnum = insn->form->operands[opind++]) != 0) { int bits; @@ -226,7 +228,9 @@ print_insn (struct disassemble_info *info, val |= OPERAND_FLAG; break; default: - fprintf (stderr, "illegal id (%d)\n", id); + /* xgettext: c-format */ + opcodes_error_handler (_("illegal id (%d)"), id); + abort (); } } else if (oper->flags & OPERAND_ACC) @@ -312,7 +316,9 @@ print_insn (struct disassemble_info *info, (*info->fprintf_func) (info->stream, "0x%x", val); } /* If there is another operand, then write a comma and space. */ - if (insn->form->operands[opind] && !(found_control && opind == 2)) + if (opind < ARRAY_SIZE (insn->form->operands) + && insn->form->operands[opind] + && !(found_control && opind == 2)) need_comma = 1; } if (need_paren)