This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
simplify some Xtensa GAS error messages
- From: Bob Wilson <bwilson at tensilica dot com>
- To: binutils at sources dot redhat dot com
- Date: Mon, 13 Feb 2006 17:05:57 -0800
- Subject: simplify some Xtensa GAS error messages
Some of the Xtensa-specific error messages were reporting operand positions with
numbers starting from zero, which was confusing. This patch changes them to use
numbers starting from one.
Some other messages were confusing when the assembler relaxes the instruction,
because the opcode and operand shown in the error message did not match the
source. The patch changes these messages to omit the opcode and operand
information. It would be nice to provide the more detailed information, but the
line number and an "invalid symbolic operand" message is usually sufficient to
identify the problem, and the extra information can be really confusing when it
doesn't match.
Tested with an xtensa-elf build and committed on the mainline.
2006-02-13 Bob Wilson <bob.wilson@acm.org>
* config/tc-xtensa.c (xg_add_opcode_fix): Number operands starting
from 1, not 0, in error messages.
(md_assemble): Simplify special-case check for ENTRY instructions.
(tinsn_has_invalid_symbolic_operands): Do not include opcode and
operand in error message.
Index: config/tc-xtensa.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-xtensa.c,v
retrieving revision 1.56
diff -u -p -r1.56 tc-xtensa.c
--- config/tc-xtensa.c 10 Feb 2006 01:02:12 -0000 1.56
+++ config/tc-xtensa.c 14 Feb 2006 00:50:35 -0000
@@ -4131,7 +4131,7 @@ xg_add_opcode_fix (TInsn *tinsn,
if (opnum != get_relaxable_immed (opcode))
{
as_bad (_("invalid relocation for operand %i of '%s'"),
- opnum, xtensa_opcode_name (xtensa_default_isa, opcode));
+ opnum + 1, xtensa_opcode_name (xtensa_default_isa, opcode));
return FALSE;
}
@@ -4141,7 +4141,7 @@ xg_add_opcode_fix (TInsn *tinsn,
if (expr->X_op == O_lo16 || expr->X_op == O_hi16)
{
as_bad (_("invalid expression for operand %i of '%s'"),
- opnum, xtensa_opcode_name (xtensa_default_isa, opcode));
+ opnum + 1, xtensa_opcode_name (xtensa_default_isa, opcode));
return FALSE;
}
@@ -5252,24 +5252,12 @@ md_assemble (char *str)
xg_add_branch_and_loop_targets (&orig_insn);
- /* Special-case for "entry" instruction. */
- if (orig_insn.opcode == xtensa_entry_opcode)
+ /* Check that immediate value for ENTRY is >= 16. */
+ if (orig_insn.opcode == xtensa_entry_opcode && orig_insn.ntok >= 3)
{
- /* Check that the third opcode (#2) is >= 16. */
- if (orig_insn.ntok >= 3)
- {
- expressionS *exp = &orig_insn.tok[2];
- switch (exp->X_op)
- {
- case O_constant:
- if (exp->X_add_number < 16)
- as_warn (_("entry instruction with stack decrement < 16"));
- break;
-
- default:
- as_warn (_("entry instruction with non-constant decrement"));
- }
- }
+ expressionS *exp = &orig_insn.tok[2];
+ if (exp->X_op == O_constant && exp->X_add_number < 16)
+ as_warn (_("entry instruction with stack decrement < 16"));
}
/* Finish it off:
@@ -11045,8 +11033,7 @@ tinsn_has_invalid_symbolic_operands (con
|| (xtensa_operand_is_PCrelative (isa, insn->opcode, i) != 1
&& insn->opcode != xtensa_const16_opcode))
{
- as_bad (_("invalid symbolic operand %d on '%s'"),
- i, xtensa_opcode_name (isa, insn->opcode));
+ as_bad (_("invalid symbolic operand"));
return TRUE;
}
}