Fix PRs 14721, 14722, 14723
This commit is contained in:
parent
570d5115d8
commit
38a8f434a8
2 changed files with 57 additions and 23 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue