aboutsummaryrefslogtreecommitdiff
path: root/opcodes
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>1998-05-22 23:03:45 +0000
committerDoug Evans <dje@google.com>1998-05-22 23:03:45 +0000
commitcbc6c9b2bf1ccf602b17c44776a23915419a890a (patch)
treeead12b1aa2e66cb344b2c2888cab131ab2845c60 /opcodes
parent05f704645d34a24a0e60abf1d9ca6dbf330d004b (diff)
downloadgdb-cbc6c9b2bf1ccf602b17c44776a23915419a890a.zip
gdb-cbc6c9b2bf1ccf602b17c44776a23915419a890a.tar.gz
gdb-cbc6c9b2bf1ccf602b17c44776a23915419a890a.tar.bz2
* cgen-asm.in (insert_normal): Handle empty fields and 64 bit hosts.
* cgen-dis.in (extract_normal): Likewise. * m32r-asm.c,m32r-dis.c: Regenerate.
Diffstat (limited to 'opcodes')
-rw-r--r--opcodes/ChangeLog1
-rw-r--r--opcodes/m32r-asm.c67
2 files changed, 42 insertions, 26 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index a2ac84c..ce228e2 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -2,6 +2,7 @@ Fri May 22 16:00:00 1998 Doug Evans <devans@canuck.cygnus.com>
* cgen-asm.in (insert_normal): Handle empty fields and 64 bit hosts.
* cgen-dis.in (extract_normal): Likewise.
+ * m32r-asm.c,m32r-dis.c: Regenerate.
start-sanitize-sky
Fri May 22 11:44:10 1998 Doug Evans <devans@canuck.cygnus.com>
diff --git a/opcodes/m32r-asm.c b/opcodes/m32r-asm.c
index 4e5911a..3318233 100644
--- a/opcodes/m32r-asm.c
+++ b/opcodes/m32r-asm.c
@@ -28,6 +28,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "symcat.h"
#include "m32r-opc.h"
+#include "opintl.h"
/* ??? The layout of this stuff is still work in progress.
For speed in assembly/disassembly, we use inline functions. That of course
@@ -73,7 +74,7 @@ parse_hi16 (strp, opindex, valuep)
if (**strp == '#')
++*strp;
- if (strncmp (*strp, "high(", 5) == 0)
+ if (strncasecmp (*strp, "high(", 5) == 0)
{
*strp += 5;
errmsg = cgen_parse_address (strp, opindex, BFD_RELOC_M32R_HI16_ULO,
@@ -86,7 +87,7 @@ parse_hi16 (strp, opindex, valuep)
*valuep >>= 16;
return errmsg;
}
- else if (strncmp (*strp, "shigh(", 6) == 0)
+ else if (strncasecmp (*strp, "shigh(", 6) == 0)
{
*strp += 6;
errmsg = cgen_parse_address (strp, opindex, BFD_RELOC_M32R_HI16_SLO,
@@ -119,7 +120,7 @@ parse_slo16 (strp, opindex, valuep)
if (**strp == '#')
++*strp;
- if (strncmp (*strp, "low(", 4) == 0)
+ if (strncasecmp (*strp, "low(", 4) == 0)
{
*strp += 4;
errmsg = cgen_parse_address (strp, opindex, BFD_RELOC_M32R_LO16,
@@ -133,7 +134,7 @@ parse_slo16 (strp, opindex, valuep)
return errmsg;
}
- if (strncmp (*strp, "sda(", 4) == 0)
+ if (strncasecmp (*strp, "sda(", 4) == 0)
{
*strp += 4;
errmsg = cgen_parse_address (strp, opindex, BFD_RELOC_M32R_SDA16, NULL, valuep);
@@ -162,7 +163,7 @@ parse_ulo16 (strp, opindex, valuep)
if (**strp == '#')
++*strp;
- if (strncmp (*strp, "low(", 4) == 0)
+ if (strncasecmp (*strp, "low(", 4) == 0)
{
*strp += 4;
errmsg = cgen_parse_address (strp, opindex, BFD_RELOC_M32R_LO16,
@@ -284,7 +285,8 @@ m32r_cgen_parse_operand (opindex, strp, fields)
break;
default :
- fprintf (stderr, "Unrecognized field %d while parsing.\n", opindex);
+ /* xgettext:c-format */
+ fprintf (stderr, _("Unrecognized field %d while parsing.\n"), opindex);
abort ();
}
@@ -407,7 +409,8 @@ m32r_cgen_insert_operand (opindex, fields, buffer)
break;
default :
- fprintf (stderr, "Unrecognized field %d while building insn.\n",
+ /* xgettext:c-format */
+ fprintf (stderr, _("Unrecognized field %d while building insn.\n"),
opindex);
abort ();
}
@@ -462,35 +465,42 @@ insert_normal (value, attrs, start, length, total_length, buffer)
{
bfd_vma x;
static char buf[100];
+ /* Written this way to avoid undefined behaviour.
+ Yes, `long' will be bfd_vma but not yet. */
+ long mask = (((1L << (length - 1)) - 1) << 1) | 1;
+
+ /* If LENGTH is zero, this operand doesn't contribute to the value. */
+ if (length == 0)
+ return NULL;
/* Ensure VALUE will fit. */
- if ((attrs & (1 << CGEN_OPERAND_UNSIGNED)) != 0)
+ if ((attrs & CGEN_ATTR_MASK (CGEN_OPERAND_UNSIGNED)) != 0)
{
- unsigned long max = (1 << length) - 1;
+ unsigned long max = mask;
if ((unsigned long) value > max)
{
- const char *err = "operand out of range (%lu not between 0 and %lu)";
-
- sprintf (buf, err, value, max);
+ /* xgettext:c-format */
+ sprintf (buf, _("operand out of range (%lu not between 0 and %lu)"),
+ value, max);
return buf;
}
}
else
{
- long min = - (1 << (length - 1));
- long max = (1 << (length - 1)) - 1;
+ long min = - (1L << (length - 1));
+ long max = (1L << (length - 1)) - 1;
if (value < min || value > max)
{
- const char *err = "operand out of range (%ld not between %ld and %ld)";
-
- sprintf (buf, err, value, min, max);
+ sprintf
+ /* xgettext:c-format */
+ (buf, _("operand out of range (%ld not between %ld and %ld)"),
+ value, min, max);
return buf;
}
}
#if 0 /*def CGEN_INT_INSN*/
- *buffer |= ((value & ((1 << length) - 1))
- << (total_length - (start + length)));
+ *buffer |= (value & mask) << (total_length - (start + length));
#else
switch (total_length)
{
@@ -513,8 +523,7 @@ insert_normal (value, attrs, start, length, total_length, buffer)
abort ();
}
- x |= ((value & ((1 << length) - 1))
- << (total_length - (start + length)));
+ x |= (value & mask) << (total_length - (start + length));
switch (total_length)
{
@@ -575,8 +584,9 @@ parse_insn_normal (insn, strp, fields)
p = CGEN_INSN_MNEMONIC (insn);
while (* p && * p == * str)
++ p, ++ str;
+
if (* p || (* str && !isspace (* str)))
- return "unrecognized instruction";
+ return _("unrecognized instruction");
CGEN_INIT_PARSE ();
cgen_init_parse_operand ();
@@ -614,7 +624,7 @@ parse_insn_normal (insn, strp, fields)
/* Syntax char didn't match. Can't be this insn. */
/* FIXME: would like to return something like
"expected char `c'" */
- return "syntax error";
+ return _("syntax error");
}
continue;
}
@@ -640,7 +650,7 @@ parse_insn_normal (insn, strp, fields)
++ str;
if (* str != '\0')
- return "junk at end of line"; /* FIXME: would like to include `str' */
+ return _("junk at end of line"); /* FIXME: would like to include `str' */
return NULL;
}
@@ -790,8 +800,13 @@ m32r_cgen_assemble_insn (str, fields, buf, errmsg)
Need to track why it failed and pick the right one. */
{
static char errbuf[100];
- sprintf (errbuf, "bad instruction `%.50s%s'",
- start, strlen (start) > 50 ? "..." : "");
+ if (strlen (start) > 50)
+ /* xgettext:c-format */
+ sprintf (errbuf, _("bad instruction `%.50s...'"), start);
+ else
+ /* xgettext:c-format */
+ sprintf (errbuf, _("bad instruction `%.50s'"), start);
+
*errmsg = errbuf;
return NULL;
}