aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>1998-01-27 19:13:49 +0000
committerNick Clifton <nickc@redhat.com>1998-01-27 19:13:49 +0000
commit38a8f434a8fcd09104330235fd4474518e69dc60 (patch)
tree127cdd4e72a9c966f533fea91ba94d7d3a6b4915 /gas
parent570d5115d86737946e4b7355eca3e9df78de8f63 (diff)
downloadgdb-38a8f434a8fcd09104330235fd4474518e69dc60.zip
gdb-38a8f434a8fcd09104330235fd4474518e69dc60.tar.gz
gdb-38a8f434a8fcd09104330235fd4474518e69dc60.tar.bz2
Fix PRs 14721, 14722, 14723
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-v850.c75
2 files changed, 57 insertions, 23 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 8915e50..61def89 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -5,6 +5,11 @@ Tue Jan 27 13:32:01 1998 Robert Lipe <robertl@dgii.com>
(i386-*-sco3.2*): New target.
* configure: Rebuild.
+Tue Jan 27 11:06:52 1998 Nick Clifton <nickc@cygnus.com>
+
+ * config/tc-v850.c: Fix PRs 14721, 14722, 14723, tidying error
+ message production.
+
Tue Jan 27 12:24:32 1998 Ian Lance Taylor <ian@cygnus.com>
* config/tc-arm.c (md_apply_fix3): Add new variable newimm to hold
diff --git a/gas/config/tc-v850.c b/gas/config/tc-v850.c
index de7a7d0..97043c8 100644
--- a/gas/config/tc-v850.c
+++ b/gas/config/tc-v850.c
@@ -475,7 +475,7 @@ set_machine (int number)
case 0: processor_mask = PROCESSOR_V850; break;
/* start-sanitize-v850e */
case bfd_mach_v850e: processor_mask = PROCESSOR_V850E; break;
- case bfd_mach_v850eq: processor_mask = PROCESSOR_V850EQ; break;
+ case bfd_mach_v850ea: processor_mask = PROCESSOR_V850EA; break;
/* end-sanitize-v850e */
}
}
@@ -502,7 +502,7 @@ const pseudo_typeS md_pseudo_table[] =
{"call_table_data", v850_call_table_data, 0},
{"call_table_text", v850_call_table_text, 0},
{"v850e", set_machine, bfd_mach_v850e},
- {"v850eq", set_machine, bfd_mach_v850eq},
+ {"v850ea", set_machine, bfd_mach_v850ea},
/* end-sanitize-v850e */
{ NULL, NULL, 0}
};
@@ -1076,7 +1076,7 @@ parse_register_list
break;
}
- skip_white_space();
+ skip_white_space ();
}
return NULL;
@@ -1097,12 +1097,12 @@ md_show_usage (stream)
FILE * stream;
{
fprintf (stream, "V850 options:\n");
- fprintf (stream, "\t-mwarn_signed_overflow Warn if signed immediate values overflow\n");
- fprintf (stream, "\t-mwarn_unsigned_overflow Warn if unsigned immediate values overflow\n");
+ fprintf (stream, "\t-mwarn-signed-overflow Warn if signed immediate values overflow\n");
+ fprintf (stream, "\t-mwarn-unsigned-overflow Warn if unsigned immediate values overflow\n");
fprintf (stream, "\t-mv850 The code is targeted at the v850\n");
/* start-sanitize-v850e */
fprintf (stream, "\t-mv850e The code is targeted at the v850e\n");
- fprintf (stream, "\t-mv850eq The code is targeted at the v850eq\n");
+ fprintf (stream, "\t-mv850ea The code is targeted at the v850ea\n");
/* end-sanitize-v850e */
}
@@ -1112,13 +1112,16 @@ md_parse_option (c, arg)
char * arg;
{
if (c != 'm')
- return 0;
+ {
+ fprintf (stderr, "unknown command line option: -%c%s\n", c, arg);
+ return 0;
+ }
- if (strcmp (arg, "warn_signed_overflow") == 0)
+ if (strcmp (arg, "warn-signed-overflow") == 0)
{
warn_signed_overflows = TRUE;
}
- else if (strcmp (arg, "warn_unsigned_overflow") == 0)
+ else if (strcmp (arg, "warn-unsigned-overflow") == 0)
{
warn_unsigned_overflows = TRUE;
}
@@ -1133,14 +1136,17 @@ md_parse_option (c, arg)
machine = bfd_mach_v850e;
processor_mask = PROCESSOR_V850E;
}
- else if (strcmp (arg, "v850eq") == 0)
+ else if (strcmp (arg, "v850ea") == 0)
{
- machine = bfd_mach_v850eq;
- processor_mask = PROCESSOR_V850EQ;
+ machine = bfd_mach_v850ea;
+ processor_mask = PROCESSOR_V850EA;
}
/* end-sanitize-v850e */
else
- return 0;
+ {
+ fprintf (stderr, "unknown command line option: -%c%s\n", c, arg);
+ return 0;
+ }
return 1;
}
@@ -1264,13 +1270,13 @@ md_begin ()
flagword applicable;
/* start-sanitize-v850e */
- if (strncmp (TARGET_CPU, "v850eq", 6) == 0)
+ if (strncmp (TARGET_CPU, "v850ea", 6) == 0)
{
if (machine == -1)
- machine = bfd_mach_v850eq;
+ machine = bfd_mach_v850ea;
if (processor_mask == -1)
- processor_mask = PROCESSOR_V850EQ;
+ processor_mask = PROCESSOR_V850EA;
}
else if (strncmp (TARGET_CPU, "v850e", 5) == 0)
{
@@ -1568,7 +1574,7 @@ md_assemble (str)
errmsg = NULL;
while (*str == ' ' || *str == ',' || *str == '[' || *str == ']')
- ++str;
+ ++ str;
if (operand->flags & V850_OPERAND_RELAX)
relaxable = 1;
@@ -1625,7 +1631,7 @@ md_assemble (str)
case BFD_RELOC_32:
if ((operand->flags & V850E_IMMEDIATE32) == 0)
{
- errmsg = "use bigger instruction";
+ errmsg = "immediate operand is too large";
goto error;
}
@@ -1652,7 +1658,7 @@ md_assemble (str)
{
if ((operand->flags & V850E_IMMEDIATE32) == 0)
{
- errmsg = "use bigger instruction";
+ errmsg = "immediate operand is too large";
goto error;
}
@@ -1686,6 +1692,14 @@ md_assemble (str)
&& ex.X_add_number == 0)
{
errmsg = "register r0 cannot be used here";
+
+ /* Force an error message to be generated by
+ skipping over any following potential matches
+ for this opcode. */
+ opcode += 3;
+
+ if (* input_line_pointer == ']')
+ ++ input_line_pointer;
}
}
else if ((operand->flags & V850_OPERAND_SRG) != 0)
@@ -1815,7 +1829,7 @@ md_assemble (str)
if (((insn & 0x07e0) == 0x0200)
&& ex.X_op == O_constant
&& (ex.X_add_number < (- (1 << (operand->bits - 1))) || ex.X_add_number > ((1 << operand->bits) - 1)))
- errmsg = "use bigger instruction";
+ errmsg = "immediate constant is too large";
/* end-sanitize-v850e */
}
@@ -2186,10 +2200,25 @@ v850_insert_operand (insn, operand, val, file, line)
insn = (*operand->insert) (insn, val, & message);
if (message != NULL)
{
- if (file == (char *) NULL)
- as_warn (message);
+ if ((operand->flags & V850_OPERAND_SIGNED)
+ && ! warn_signed_overflows
+ && strstr (message, "out of range") != NULL)
+ {
+ /* skip warning... */
+ }
+ else if ((operand->flags & V850_OPERAND_SIGNED) == 0
+ && ! warn_unsigned_overflows
+ && strstr (message, "out of range") != NULL)
+ {
+ /* skip warning... */
+ }
else
- as_warn_where (file, line, message);
+ {
+ if (file == (char *) NULL)
+ as_warn (message);
+ else
+ as_warn_where (file, line, message);
+ }
}
}
else