aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorJens Remus <jremus@linux.ibm.com>2024-03-01 12:45:14 +0100
committerJens Remus <jremus@linux.ibm.com>2024-03-01 12:45:14 +0100
commitac6582253b64aed40739f916d4080af42c73b194 (patch)
tree01255b6e620bfe6a8cfbf596816d00f1a24af3f9 /gas
parentaacf780bca2940a9feb4e9d1b1d9e2033f1ce4ac (diff)
downloadbinutils-ac6582253b64aed40739f916d4080af42c73b194.zip
binutils-ac6582253b64aed40739f916d4080af42c73b194.tar.gz
binutils-ac6582253b64aed40739f916d4080af42c73b194.tar.bz2
s390: Provide operand number in assembler warning and error messages
Prepend the operand number "operand %d:" to the s390-specific assembler operand parsing warning and error messages. While at it reword the custom operand out of range error message text to be closer to the one used by as_bad_value_out_of_range(). Additionally reword the invalid FPR pair warning message to make it nicer. gas/ * config/tc-s390.c: Print operand number in error messages. * testsuite/gas/s390/zarch-base-index-0-err.l: Update test case verification patterns to accept syntax error messages now containing the operand number. * testsuite/gas/s390/zarch-omitted-base-index-err.l: Likewise. * testsuite/gas/s390/zarch-warn-areg-zero.l: Likewise. * testsuite/gas/s390/zarch-z9-109-err.l: Likewise. * testsuite/gas/s390/zarch-z900-err.l: Likewise. Reviewed-by: Andreas Krebbel <krebbel@linux.ibm.com> Signed-off-by: Jens Remus <jremus@linux.ibm.com>
Diffstat (limited to 'gas')
-rw-r--r--gas/config/tc-s390.c107
-rw-r--r--gas/testsuite/gas/s390/zarch-base-index-0-err.l106
-rw-r--r--gas/testsuite/gas/s390/zarch-omitted-base-index-err.l24
-rw-r--r--gas/testsuite/gas/s390/zarch-warn-areg-zero.l128
-rw-r--r--gas/testsuite/gas/s390/zarch-z9-109-err.l2
-rw-r--r--gas/testsuite/gas/s390/zarch-z900-err.l4
6 files changed, 206 insertions, 165 deletions
diff --git a/gas/config/tc-s390.c b/gas/config/tc-s390.c
index edf8883..a2f499b 100644
--- a/gas/config/tc-s390.c
+++ b/gas/config/tc-s390.c
@@ -663,6 +663,41 @@ s390_md_finish (void)
bfd_set_arch_mach (stdoutput, bfd_arch_s390, bfd_mach_s390_31);
}
+static void
+s390_bad_operand_out_of_range (int operand_number,
+ offsetT value,
+ offsetT min,
+ offsetT max,
+ const char *file,
+ unsigned line)
+{
+ const char * err;
+
+ if (operand_number > 0)
+ {
+ /* xgettext:c-format. */
+ err =_("operand %d: operand out of range (%" PRId64
+ " is not between %" PRId64 " and %" PRId64 ")");
+ if (file)
+ as_bad_where (file, line, err, operand_number,
+ (int64_t) value, (int64_t) min, (int64_t) max);
+ else
+ as_bad (err, operand_number,
+ (int64_t) value, (int64_t) min, (int64_t) max);
+ }
+ else
+ {
+ /* xgettext:c-format. */
+ err = _("operand out of range (%" PRId64
+ " is not between %" PRId64 " and %" PRId64 ")");
+ if (file)
+ as_bad_where (file, line, err,
+ (int64_t) value, (int64_t) min, (int64_t) max);
+ else
+ as_bad (err, (int64_t) value, (int64_t) min, (int64_t) max);
+ }
+}
+
/* Insert an operand value into an instruction. */
static void
@@ -670,7 +705,8 @@ s390_insert_operand (unsigned char *insn,
const struct s390_operand *operand,
offsetT val,
const char *file,
- unsigned int line)
+ unsigned int line,
+ int operand_number)
{
addressT uval;
int offset;
@@ -687,21 +723,16 @@ s390_insert_operand (unsigned char *insn,
/* Check for underflow / overflow. */
if (val < min || val > max)
{
- const char *err =
- _("operand out of range (%" PRId64 " not between %" PRId64
- " and %" PRId64 ")");
-
if (operand->flags & S390_OPERAND_PCREL)
{
val = (offsetT) ((addressT) val << 1);
min = (offsetT) ((addressT) min << 1);
max = (offsetT) ((addressT) max << 1);
}
- if (file == (char *) NULL)
- as_bad (err, (int64_t) val, (int64_t) min, (int64_t) max);
- else
- as_bad_where (file, line,
- err, (int64_t) val, (int64_t) min, (int64_t) max);
+
+ s390_bad_operand_out_of_range (operand_number, val, min, max,
+ file, line);
+
return;
}
/* val is ok, now restrict it to operand->bits bits. */
@@ -736,7 +767,8 @@ s390_insert_operand (unsigned char *insn,
max++;
}
- as_bad_value_out_of_range (_("operand"), uval, (offsetT) min, (offsetT) max, file, line);
+ s390_bad_operand_out_of_range (operand_number, val, min, max,
+ file, line);
return;
}
@@ -1364,7 +1396,7 @@ md_gather_operands (char *str,
{
/* Optional parameters might need to be ORed with a
value so calling s390_insert_operand is needed. */
- s390_insert_operand (insn, operand, 0, NULL, 0);
+ s390_insert_operand (insn, operand, 0, NULL, 0, operand_number);
break;
}
@@ -1394,12 +1426,12 @@ md_gather_operands (char *str,
/* Write the operand to the insn. */
if (ex.X_op == O_illegal)
- as_bad (_("illegal operand"));
+ as_bad (_("operand %d: illegal operand"), operand_number);
else if (ex.X_op == O_absent)
{
if (opindex_ptr[0] == '\0')
break;
- as_bad (_("missing operand"));
+ as_bad (_("operand %d: missing operand"), operand_number);
}
else if (ex.X_op == O_register || ex.X_op == O_constant)
{
@@ -1410,7 +1442,7 @@ md_gather_operands (char *str,
/* We need to generate a fixup for the
expression returned by s390_lit_suffix. */
if (fc >= MAX_INSN_FIXUPS)
- as_fatal (_("too many fixups"));
+ as_fatal (_("operand %d: too many fixups"), operand_number);
fixups[fc].exp = ex;
fixups[fc].opindex = *opindex_ptr;
fixups[fc].reloc = BFD_RELOC_UNUSED;
@@ -1420,29 +1452,32 @@ md_gather_operands (char *str,
{
if ((operand->flags & S390_OPERAND_LENGTH)
&& ex.X_op != O_constant)
- as_bad (_("invalid length field specified"));
+ as_bad (_("operand %d: invalid length field specified"),
+ operand_number);
if ((operand->flags & S390_OPERAND_INDEX)
&& ex.X_add_number == 0
&& warn_areg_zero)
- as_warn (_("index register specified but zero"));
+ as_warn (_("operand %d: index register specified but zero"),
+ operand_number);
if ((operand->flags & S390_OPERAND_BASE)
&& ex.X_add_number == 0
&& warn_areg_zero)
- as_warn (_("base register specified but zero"));
+ as_warn (_("operand %d: base register specified but zero"),
+ operand_number);
if ((operand->flags & S390_OPERAND_GPR)
&& (operand->flags & S390_OPERAND_REG_PAIR)
&& (ex.X_add_number & 1))
- as_bad (_("odd numbered general purpose register specified as "
- "register pair"));
+ as_bad (_("operand %d: odd numbered general purpose register "
+ "specified as register pair"), operand_number);
if ((operand->flags & S390_OPERAND_FPR)
&& (operand->flags & S390_OPERAND_REG_PAIR)
&& ex.X_add_number != 0 && ex.X_add_number != 1
&& ex.X_add_number != 4 && ex.X_add_number != 5
&& ex.X_add_number != 8 && ex.X_add_number != 9
&& ex.X_add_number != 12 && ex.X_add_number != 13)
- as_bad (_("invalid floating point register pair. Valid fp "
- "register pair operands are 0, 1, 4, 5, 8, 9, "
- "12 or 13."));
+ as_bad (_("operand %d: invalid floating-point register (FPR) "
+ "pair (valid FPR pair operands are 0, 1, 4, 5, 8, 9, "
+ "12 or 13)"), operand_number);
if (warn_regtype_mismatch && ex.X_op == O_register
&& !(opcode->flags & S390_INSTR_FLAG_PSEUDO_MNEMONIC))
{
@@ -1481,7 +1516,7 @@ md_gather_operands (char *str,
operand_number, expected_regtype);
}
}
- s390_insert_operand (insn, operand, ex.X_add_number, NULL, 0);
+ s390_insert_operand (insn, operand, ex.X_add_number, NULL, 0, operand_number);
}
}
else
@@ -1567,11 +1602,11 @@ md_gather_operands (char *str,
}
if (suffix != ELF_SUFFIX_NONE && reloc == BFD_RELOC_UNUSED)
- as_bad (_("invalid operand suffix"));
+ as_bad (_("operand %d: invalid operand suffix"), operand_number);
/* We need to generate a fixup of type 'reloc' for this
expression. */
if (fc >= MAX_INSN_FIXUPS)
- as_fatal (_("too many fixups"));
+ as_fatal (_("operand %d: too many fixups"), operand_number);
fixups[fc].exp = ex;
fixups[fc].opindex = *opindex_ptr;
fixups[fc].reloc = reloc;
@@ -1591,7 +1626,8 @@ md_gather_operands (char *str,
skipped. A length operand may not be skipped. */
operand = s390_operands + *(++opindex_ptr);
if (!(operand->flags & (S390_OPERAND_INDEX|S390_OPERAND_BASE)))
- as_bad (_("syntax error; missing '(' after displacement"));
+ as_bad (_("operand %d: syntax error; missing '(' after displacement"),
+ operand_number);
/* Ok, skip all operands until S390_OPERAND_BASE. */
while (!(operand->flags & S390_OPERAND_BASE))
@@ -1611,7 +1647,8 @@ md_gather_operands (char *str,
while (opindex_ptr[1] != '\0')
{
operand = s390_operands + *(++opindex_ptr);
- as_bad (_("syntax error; expected ','"));
+ as_bad (_("operand %d: syntax error; expected ','"),
+ operand_number);
break;
}
}
@@ -1649,7 +1686,8 @@ md_gather_operands (char *str,
{
/* After the base register the parenthesised block ends. */
if (*str != ')')
- as_bad (_("syntax error; missing ')' after base register"));
+ as_bad (_("operand %d: syntax error; missing ')' after base register"),
+ operand_number);
else
str++;
omitted_base_or_index = 0;
@@ -1668,7 +1706,8 @@ md_gather_operands (char *str,
while (opindex_ptr[1] != '\0')
{
operand = s390_operands + *(++opindex_ptr);
- as_bad (_("syntax error; expected ','"));
+ as_bad (_("operand %d: syntax error; expected ','"),
+ operand_number);
break;
}
}
@@ -1691,7 +1730,8 @@ md_gather_operands (char *str,
operand = s390_operands + *(++opindex_ptr);
if (!(operand->flags & S390_OPERAND_BASE))
- as_bad (_("syntax error; '%c' not allowed here"), *str);
+ as_bad (_("operand %d: syntax error; '%c' not allowed here"),
+ operand_number, *str);
if (*str == ',')
str++;
str++;
@@ -1711,7 +1751,8 @@ md_gather_operands (char *str,
while (opindex_ptr[1] != '\0')
{
operand = s390_operands + *(++opindex_ptr);
- as_bad (_("syntax error; expected ','"));
+ as_bad (_("operand %d: syntax error; expected ','"),
+ operand_number);
break;
}
}
@@ -2419,7 +2460,7 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
{
/* Insert the fully resolved operand value. */
s390_insert_operand ((unsigned char *) where, operand,
- (offsetT) value, fixP->fx_file, fixP->fx_line);
+ (offsetT) value, fixP->fx_file, fixP->fx_line, 0);
return;
}
diff --git a/gas/testsuite/gas/s390/zarch-base-index-0-err.l b/gas/testsuite/gas/s390/zarch-base-index-0-err.l
index e7d03ec..6332d99 100644
--- a/gas/testsuite/gas/s390/zarch-base-index-0-err.l
+++ b/gas/testsuite/gas/s390/zarch-base-index-0-err.l
@@ -1,74 +1,74 @@
.*: Assembler messages:
.*:5: Error: bad expression
-.*:5: Error: syntax error; missing '\)' after base register
+.*:5: Error: operand 1: syntax error; missing '\)' after base register
.*:8: Error: bad expression
-.*:8: Error: syntax error; missing '\)' after base register
+.*:8: Error: operand 2: syntax error; missing '\)' after base register
.*:9: Error: bad expression
-.*:9: Error: syntax error; missing '\)' after base register
+.*:9: Error: operand 2: syntax error; missing '\)' after base register
.*:12: Error: bad expression
-.*:12: Error: syntax error; missing '\)' after base register
+.*:12: Error: operand 2: syntax error; missing '\)' after base register
.*:13: Error: bad expression
-.*:13: Error: syntax error; missing '\)' after base register
+.*:13: Error: operand 2: syntax error; missing '\)' after base register
.*:14: Error: bad expression
-.*:14: Error: syntax error; missing '\)' after base register
+.*:14: Error: operand 2: syntax error; missing '\)' after base register
.*:15: Error: bad expression
-.*:15: Error: syntax error; missing '\)' after base register
+.*:15: Error: operand 2: syntax error; missing '\)' after base register
.*:16: Error: bad expression
-.*:16: Error: syntax error; missing '\)' after base register
-.*:17: Error: operand out of range \(0 is not between 1 and 256\)
-.*:18: Error: missing operand
-.*:19: Error: missing operand
-.*:20: Error: missing operand
+.*:16: Error: operand 2: syntax error; missing '\)' after base register
+.*:17: Error: operand 1: operand out of range \(0 is not between 1 and 256\)
+.*:18: Error: operand 1: missing operand
+.*:19: Error: operand 1: missing operand
+.*:20: Error: operand 1: missing operand
.*:21: Error: bad expression
-.*:21: Error: operand out of range \(0 is not between 1 and 256\)
-.*:21: Error: operand out of range \(32 is not between 0 and 15\)
-.*:21: Error: syntax error; missing '\)' after base register
-.*:21: Error: syntax error; expected ','
+.*:21: Error: operand 1: operand out of range \(0 is not between 1 and 256\)
+.*:21: Error: operand 1: operand out of range \(32 is not between 0 and 15\)
+.*:21: Error: operand 1: syntax error; missing '\)' after base register
+.*:21: Error: operand 1: syntax error; expected ','
.*:21: Error: bad expression
.*:21: Error: found 'r', expected: '\)'
-.*:21: Error: syntax error; missing '\)' after base register
+.*:21: Error: operand 1: syntax error; missing '\)' after base register
.*:21: Error: junk at end of line: `r2\)'
-.*:22: Error: syntax error; missing '\(' after displacement
-.*:23: Error: invalid length field specified
-.*:26: Error: operand out of range \(0 is not between 1 and 16\)
-.*:27: Error: missing operand
-.*:28: Error: missing operand
-.*:29: Error: missing operand
+.*:22: Error: operand 1: syntax error; missing '\(' after displacement
+.*:23: Error: operand 1: invalid length field specified
+.*:26: Error: operand 1: operand out of range \(0 is not between 1 and 16\)
+.*:27: Error: operand 1: missing operand
+.*:28: Error: operand 1: missing operand
+.*:29: Error: operand 1: missing operand
.*:30: Error: bad expression
-.*:30: Error: operand out of range \(0 is not between 1 and 16\)
-.*:30: Error: operand out of range \(32 is not between 0 and 15\)
-.*:30: Error: syntax error; missing '\)' after base register
-.*:30: Error: syntax error; expected ','
+.*:30: Error: operand 1: operand out of range \(0 is not between 1 and 16\)
+.*:30: Error: operand 1: operand out of range \(32 is not between 0 and 15\)
+.*:30: Error: operand 1: syntax error; missing '\)' after base register
+.*:30: Error: operand 1: syntax error; expected ','
.*:30: Error: found ',', expected: '\)'
-.*:31: Error: syntax error; missing '\(' after displacement
-.*:32: Error: operand out of range \(0 is not between 1 and 16\)
-.*:33: Error: missing operand
-.*:34: Error: missing operand
-.*:35: Error: missing operand
+.*:31: Error: operand 1: syntax error; missing '\(' after displacement
+.*:32: Error: operand 2: operand out of range \(0 is not between 1 and 16\)
+.*:33: Error: operand 2: missing operand
+.*:34: Error: operand 2: missing operand
+.*:35: Error: operand 2: missing operand
.*:36: Error: bad expression
-.*:36: Error: operand out of range \(0 is not between 1 and 16\)
-.*:36: Error: syntax error; expected ','
-.*:37: Error: syntax error; missing '\(' after displacement
-.*:38: Error: operand out of range \(0 is not between 1 and 16\)
-.*:38: Error: operand out of range \(0 is not between 1 and 16\)
-.*:39: Error: missing operand
-.*:39: Error: missing operand
-.*:40: Error: missing operand
-.*:40: Error: missing operand
-.*:41: Error: missing operand
-.*:41: Error: missing operand
+.*:36: Error: operand 2: operand out of range \(0 is not between 1 and 16\)
+.*:36: Error: operand 2: syntax error; expected ','
+.*:37: Error: operand 2: syntax error; missing '\(' after displacement
+.*:38: Error: operand 1: operand out of range \(0 is not between 1 and 16\)
+.*:38: Error: operand 2: operand out of range \(0 is not between 1 and 16\)
+.*:39: Error: operand 1: missing operand
+.*:39: Error: operand 2: missing operand
+.*:40: Error: operand 1: missing operand
+.*:40: Error: operand 2: missing operand
+.*:41: Error: operand 1: missing operand
+.*:41: Error: operand 2: missing operand
.*:42: Error: bad expression
-.*:42: Error: operand out of range \(0 is not between 1 and 16\)
-.*:42: Error: operand out of range \(32 is not between 0 and 15\)
-.*:42: Error: syntax error; missing '\)' after base register
-.*:42: Error: syntax error; expected ','
+.*:42: Error: operand 1: operand out of range \(0 is not between 1 and 16\)
+.*:42: Error: operand 1: operand out of range \(32 is not between 0 and 15\)
+.*:42: Error: operand 1: syntax error; missing '\)' after base register
+.*:42: Error: operand 1: syntax error; expected ','
.*:42: Error: bad expression
.*:42: Error: missing '\)'
-.*:42: Error: operand out of range \(0 is not between 1 and 16\)
-.*:42: Error: syntax error; expected ','
-.*:43: Error: syntax error; missing '\(' after displacement
-.*:43: Error: syntax error; missing '\(' after displacement
+.*:42: Error: operand 1: operand out of range \(0 is not between 1 and 16\)
+.*:42: Error: operand 1: syntax error; expected ','
+.*:43: Error: operand 1: syntax error; missing '\(' after displacement
+.*:43: Error: operand 2: syntax error; missing '\(' after displacement
.*:46: Error: bad expression
-.*:46: Error: syntax error; missing '\)' after base register
+.*:46: Error: operand 2: syntax error; missing '\)' after base register
.*:47: Error: bad expression
-.*:47: Error: syntax error; missing '\)' after base register
+.*:47: Error: operand 2: syntax error; missing '\)' after base register
diff --git a/gas/testsuite/gas/s390/zarch-omitted-base-index-err.l b/gas/testsuite/gas/s390/zarch-omitted-base-index-err.l
index f222fe0..b2ee382 100644
--- a/gas/testsuite/gas/s390/zarch-omitted-base-index-err.l
+++ b/gas/testsuite/gas/s390/zarch-omitted-base-index-err.l
@@ -1,21 +1,21 @@
.*: Assembler messages:
.*:5: Error: bad expression
-.*:5: Error: syntax error; missing '\)' after base register
+.*:5: Error: operand 3: syntax error; missing '\)' after base register
.*:8: Error: bad expression
-.*:8: Error: syntax error; missing '\)' after base register
+.*:8: Error: operand 2: syntax error; missing '\)' after base register
.*:11: Warning: operand 2: expected general register name as base register
.*:12: Error: bad expression
-.*:12: Error: syntax error; missing '\)' after base register
-.*:15: Error: missing operand
-.*:16: Error: missing operand
-.*:17: Error: invalid length field specified
+.*:12: Error: operand 2: syntax error; missing '\)' after base register
+.*:15: Error: operand 1: missing operand
+.*:16: Error: operand 1: missing operand
+.*:17: Error: operand 1: invalid length field specified
.*:18: Error: bad expression
-.*:18: Error: operand out of range \(0 is not between 1 and 256\)
-.*:18: Error: operand out of range \(32 is not between 0 and 15\)
-.*:18: Error: syntax error; missing '\)' after base register
-.*:18: Error: syntax error; expected ','
+.*:18: Error: operand 1: operand out of range \(0 is not between 1 and 256\)
+.*:18: Error: operand 1: operand out of range \(32 is not between 0 and 15\)
+.*:18: Error: operand 1: syntax error; missing '\)' after base register
+.*:18: Error: operand 1: syntax error; expected ','
.*:18: Error: bad expression
.*:18: Error: found 'r', expected: '\)'
-.*:18: Error: syntax error; missing '\)' after base register
+.*:18: Error: operand 1: syntax error; missing '\)' after base register
.*:18: Error: junk at end of line: `r2\)'
-.*:19: Error: syntax error; missing '\(' after displacement
+.*:19: Error: operand 1: syntax error; missing '\(' after displacement
diff --git a/gas/testsuite/gas/s390/zarch-warn-areg-zero.l b/gas/testsuite/gas/s390/zarch-warn-areg-zero.l
index decf896..b820e4c 100644
--- a/gas/testsuite/gas/s390/zarch-warn-areg-zero.l
+++ b/gas/testsuite/gas/s390/zarch-warn-areg-zero.l
@@ -1,65 +1,65 @@
.*: Assembler messages:
-.*:6: Warning: base register specified but zero
-.*:7: Warning: base register specified but zero
-.*:15: Warning: index register specified but zero
-.*:16: Warning: index register specified but zero
-.*:19: Warning: base register specified but zero
-.*:20: Warning: base register specified but zero
-.*:22: Warning: index register specified but zero
-.*:22: Warning: base register specified but zero
-.*:23: Warning: index register specified but zero
-.*:23: Warning: base register specified but zero
-.*:25: Warning: index register specified but zero
-.*:25: Warning: base register specified but zero
-.*:26: Warning: index register specified but zero
-.*:26: Warning: base register specified but zero
-.*:28: Warning: index register specified but zero
-.*:28: Warning: base register specified but zero
-.*:29: Warning: base register specified but zero
-.*:30: Warning: base register specified but zero
-.*:40: Warning: base register specified but zero
-.*:41: Warning: base register specified but zero
-.*:44: Warning: base register specified but zero
-.*:45: Warning: base register specified but zero
-.*:48: Warning: base register specified but zero
-.*:48: Warning: base register specified but zero
-.*:49: Warning: base register specified but zero
-.*:49: Warning: base register specified but zero
-.*:51: Warning: base register specified but zero
-.*:52: Warning: base register specified but zero
-.*:52: Warning: base register specified but zero
-.*:53: Warning: base register specified but zero
-.*:53: Warning: base register specified but zero
-.*:55: Warning: base register specified but zero
-.*:60: Warning: base register specified but zero
-.*:61: Warning: base register specified but zero
-.*:68: Warning: base register specified but zero
-.*:69: Warning: base register specified but zero
-.*:72: Warning: base register specified but zero
-.*:73: Warning: base register specified but zero
-.*:76: Warning: base register specified but zero
-.*:76: Warning: base register specified but zero
-.*:77: Warning: base register specified but zero
-.*:77: Warning: base register specified but zero
-.*:79: Warning: base register specified but zero
-.*:80: Warning: base register specified but zero
-.*:80: Warning: base register specified but zero
-.*:81: Warning: base register specified but zero
-.*:81: Warning: base register specified but zero
-.*:83: Warning: base register specified but zero
-.*:88: Warning: base register specified but zero
-.*:89: Warning: base register specified but zero
-.*:96: Warning: index register specified but zero
-.*:97: Warning: index register specified but zero
-.*:100: Warning: base register specified but zero
-.*:101: Warning: base register specified but zero
-.*:103: Warning: index register specified but zero
-.*:103: Warning: base register specified but zero
-.*:104: Warning: index register specified but zero
-.*:104: Warning: base register specified but zero
-.*:106: Warning: index register specified but zero
-.*:106: Warning: base register specified but zero
-.*:107: Warning: index register specified but zero
-.*:107: Warning: base register specified but zero
-.*:109: Warning: base register specified but zero
-.*:110: Warning: base register specified but zero
+.*:6: Warning: operand 1: base register specified but zero
+.*:7: Warning: operand 1: base register specified but zero
+.*:15: Warning: operand 2: index register specified but zero
+.*:16: Warning: operand 2: index register specified but zero
+.*:19: Warning: operand 2: base register specified but zero
+.*:20: Warning: operand 2: base register specified but zero
+.*:22: Warning: operand 2: index register specified but zero
+.*:22: Warning: operand 2: base register specified but zero
+.*:23: Warning: operand 2: index register specified but zero
+.*:23: Warning: operand 2: base register specified but zero
+.*:25: Warning: operand 2: index register specified but zero
+.*:25: Warning: operand 2: base register specified but zero
+.*:26: Warning: operand 2: index register specified but zero
+.*:26: Warning: operand 2: base register specified but zero
+.*:28: Warning: operand 2: index register specified but zero
+.*:28: Warning: operand 2: base register specified but zero
+.*:29: Warning: operand 2: base register specified but zero
+.*:30: Warning: operand 2: base register specified but zero
+.*:40: Warning: operand 1: base register specified but zero
+.*:41: Warning: operand 1: base register specified but zero
+.*:44: Warning: operand 2: base register specified but zero
+.*:45: Warning: operand 2: base register specified but zero
+.*:48: Warning: operand 1: base register specified but zero
+.*:48: Warning: operand 2: base register specified but zero
+.*:49: Warning: operand 1: base register specified but zero
+.*:49: Warning: operand 2: base register specified but zero
+.*:51: Warning: operand 1: base register specified but zero
+.*:52: Warning: operand 1: base register specified but zero
+.*:52: Warning: operand 2: base register specified but zero
+.*:53: Warning: operand 1: base register specified but zero
+.*:53: Warning: operand 2: base register specified but zero
+.*:55: Warning: operand 1: base register specified but zero
+.*:60: Warning: operand 2: base register specified but zero
+.*:61: Warning: operand 2: base register specified but zero
+.*:68: Warning: operand 1: base register specified but zero
+.*:69: Warning: operand 1: base register specified but zero
+.*:72: Warning: operand 2: base register specified but zero
+.*:73: Warning: operand 2: base register specified but zero
+.*:76: Warning: operand 1: base register specified but zero
+.*:76: Warning: operand 2: base register specified but zero
+.*:77: Warning: operand 1: base register specified but zero
+.*:77: Warning: operand 2: base register specified but zero
+.*:79: Warning: operand 1: base register specified but zero
+.*:80: Warning: operand 1: base register specified but zero
+.*:80: Warning: operand 2: base register specified but zero
+.*:81: Warning: operand 1: base register specified but zero
+.*:81: Warning: operand 2: base register specified but zero
+.*:83: Warning: operand 1: base register specified but zero
+.*:88: Warning: operand 2: base register specified but zero
+.*:89: Warning: operand 2: base register specified but zero
+.*:96: Warning: operand 2: index register specified but zero
+.*:97: Warning: operand 2: index register specified but zero
+.*:100: Warning: operand 2: base register specified but zero
+.*:101: Warning: operand 2: base register specified but zero
+.*:103: Warning: operand 2: index register specified but zero
+.*:103: Warning: operand 2: base register specified but zero
+.*:104: Warning: operand 2: index register specified but zero
+.*:104: Warning: operand 2: base register specified but zero
+.*:106: Warning: operand 2: index register specified but zero
+.*:106: Warning: operand 2: base register specified but zero
+.*:107: Warning: operand 2: index register specified but zero
+.*:107: Warning: operand 2: base register specified but zero
+.*:109: Warning: operand 2: base register specified but zero
+.*:110: Warning: operand 2: base register specified but zero
diff --git a/gas/testsuite/gas/s390/zarch-z9-109-err.l b/gas/testsuite/gas/s390/zarch-z9-109-err.l
index 84d294d..b5460b6 100644
--- a/gas/testsuite/gas/s390/zarch-z9-109-err.l
+++ b/gas/testsuite/gas/s390/zarch-z9-109-err.l
@@ -1,2 +1,2 @@
.*: Assembler messages:
-.*:3: Error: odd numbered general purpose register specified as register pair
+.*:3: Error: operand 1: odd numbered general purpose register specified as register pair
diff --git a/gas/testsuite/gas/s390/zarch-z900-err.l b/gas/testsuite/gas/s390/zarch-z900-err.l
index cf8e9c2..2886802 100644
--- a/gas/testsuite/gas/s390/zarch-z900-err.l
+++ b/gas/testsuite/gas/s390/zarch-z900-err.l
@@ -1,3 +1,3 @@
.*: Assembler messages:
-.*:3: Error: operand out of range \(-4294967298 not between -4294967296 and 4294967294\)
-.*:4: Error: operand out of range \(4294967296 not between -4294967296 and 4294967294\)
+.*:3: Error: operand out of range \(-4294967298 is not between -4294967296 and 4294967294\)
+.*:4: Error: operand out of range \(4294967296 is not between -4294967296 and 4294967294\)