Re: IBM zSystems: Accept (. - 0x100000000) PCRel32 operands

The new test failed on s390-linux due to bfd_sprintf_vma trimming
output to 32 bits for 32-bit targets.  The test was faulty anyway,
expecting zero as the min end of the range is plainly wrong, but
that's what you get if you cast min to int.

	* config/tc-s390.c (s390_insert_operand): Print range error using
	PRId64.
	* testsuite/gas/s390/zarch-z900-err.l: Correct expected output.
This commit is contained in:
Alan Modra
2022-05-12 11:15:24 +09:30
parent 6c8c5823e3
commit a2d8448d1d
2 changed files with 7 additions and 7 deletions

View File

@ -617,8 +617,8 @@ s390_insert_operand (unsigned char *insn,
if (val < min || val > max)
{
const char *err =
_("operand out of range (%s not between %ld and %ld)");
char buf[100];
_("operand out of range (%" PRId64 " not between %" PRId64
" and %" PRId64 ")");
if (operand->flags & S390_OPERAND_PCREL)
{
@ -626,11 +626,11 @@ s390_insert_operand (unsigned char *insn,
min <<= 1;
max <<= 1;
}
bfd_sprintf_vma (stdoutput, buf, val);
if (file == (char *) NULL)
as_bad (err, buf, (int) min, (int) max);
as_bad (err, (int64_t) val, (int64_t) min, (int64_t) max);
else
as_bad_where (file, line, err, buf, (int) min, (int) max);
as_bad_where (file, line,
err, (int64_t) val, (int64_t) min, (int64_t) max);
return;
}
/* val is ok, now restrict it to operand->bits bits. */

View File

@ -1,3 +1,3 @@
.*: Assembler messages:
.*:3: Error: operand out of range \(fffffffefffffffe not between 0 and 4294967294\)
.*:4: Error: operand out of range \(0000000100000000 not between 0 and 4294967294\)
.*:3: Error: operand out of range \(-4294967298 not between -4294967296 and 4294967294\)
.*:4: Error: operand out of range \(4294967296 not between -4294967296 and 4294967294\)