mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-24 04:00:07 +08:00
Proced error messages when special data are relocations are used on
instructions which do not support them.
This commit is contained in:
@ -2,6 +2,8 @@ Thu Sep 18 14:11:56 1997 Nick Clifton <nickc@cygnus.com>
|
|||||||
|
|
||||||
* config/tc-v850.c (md_assemble): Cope with a zero data area
|
* config/tc-v850.c (md_assemble): Cope with a zero data area
|
||||||
relocation with a constant offset.
|
relocation with a constant offset.
|
||||||
|
(md_assemble): Produce error message when special data area
|
||||||
|
relocations are used on instructions which do not support them.
|
||||||
|
|
||||||
Thu Sep 18 11:24:01 1997 Doug Evans <dje@canuck.cygnus.com>
|
Thu Sep 18 11:24:01 1997 Doug Evans <dje@canuck.cygnus.com>
|
||||||
|
|
||||||
|
@ -1045,8 +1045,12 @@ handle_ctoff (const struct v850_operand * operand)
|
|||||||
if (operand == NULL)
|
if (operand == NULL)
|
||||||
return BFD_RELOC_V850_CALLT_16_16_OFFSET;
|
return BFD_RELOC_V850_CALLT_16_16_OFFSET;
|
||||||
|
|
||||||
assert (operand->bits == 6);
|
if ( operand->bits != 6
|
||||||
assert (operand->shift == 0);
|
|| operand->shift == 0)
|
||||||
|
{
|
||||||
|
as_bad ("ctoff() relocation used on an instruction which does not support it");
|
||||||
|
return BFD_RELOC_64; /* Used to indicate an error condition. */
|
||||||
|
}
|
||||||
|
|
||||||
return BFD_RELOC_V850_CALLT_6_7_OFFSET;
|
return BFD_RELOC_V850_CALLT_6_7_OFFSET;
|
||||||
}
|
}
|
||||||
@ -1061,8 +1065,12 @@ handle_sdaoff (const struct v850_operand * operand)
|
|||||||
if (operand->bits == -1) return BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET;
|
if (operand->bits == -1) return BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET;
|
||||||
/* end-sanitize-v850e */
|
/* end-sanitize-v850e */
|
||||||
|
|
||||||
assert (operand->bits == 16);
|
if ( operand->bits != 16
|
||||||
assert (operand->shift == 16);
|
|| operand->shift == 16)
|
||||||
|
{
|
||||||
|
as_bad ("sdaoff() relocation used on an instruction which does not support it");
|
||||||
|
return BFD_RELOC_64; /* Used to indicate an error condition. */
|
||||||
|
}
|
||||||
|
|
||||||
return BFD_RELOC_V850_SDA_16_16_OFFSET;
|
return BFD_RELOC_V850_SDA_16_16_OFFSET;
|
||||||
}
|
}
|
||||||
@ -1076,8 +1084,12 @@ handle_zdaoff (const struct v850_operand * operand)
|
|||||||
if (operand->bits == -1) return BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET;
|
if (operand->bits == -1) return BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET;
|
||||||
/* end-sanitize-v850e */
|
/* end-sanitize-v850e */
|
||||||
|
|
||||||
assert (operand->bits == 16);
|
if ( operand->bits != 16
|
||||||
assert (operand->shift == 16);
|
|| operand->shift != 16)
|
||||||
|
{
|
||||||
|
as_bad ("zdaoff() relocation used on an instruction which does not support it");
|
||||||
|
return BFD_RELOC_64; /* Used to indicate an error condition. */
|
||||||
|
}
|
||||||
|
|
||||||
return BFD_RELOC_V850_ZDA_16_16_OFFSET;
|
return BFD_RELOC_V850_ZDA_16_16_OFFSET;
|
||||||
}
|
}
|
||||||
@ -1093,7 +1105,11 @@ handle_tdaoff (const struct v850_operand * operand)
|
|||||||
/* end-sanitize-v850e */
|
/* end-sanitize-v850e */
|
||||||
if (operand->bits == 16 && operand->shift == 16) return BFD_RELOC_V850_TDA_16_16_OFFSET; /* set1 & chums, operands: D16 */
|
if (operand->bits == 16 && operand->shift == 16) return BFD_RELOC_V850_TDA_16_16_OFFSET; /* set1 & chums, operands: D16 */
|
||||||
|
|
||||||
assert (operand->bits == 7);
|
if (operand->bits != 7)
|
||||||
|
{
|
||||||
|
as_bad ("tdaoff() relocation used on an instruction which does not support it");
|
||||||
|
return BFD_RELOC_64; /* Used to indicate an error condition. */
|
||||||
|
}
|
||||||
|
|
||||||
return operand->insert != NULL
|
return operand->insert != NULL
|
||||||
? BFD_RELOC_V850_TDA_7_8_OFFSET /* sld.h/sst.h, operand: D8_7 */
|
? BFD_RELOC_V850_TDA_7_8_OFFSET /* sld.h/sst.h, operand: D8_7 */
|
||||||
@ -1237,11 +1253,15 @@ md_assemble (str)
|
|||||||
hold = input_line_pointer;
|
hold = input_line_pointer;
|
||||||
input_line_pointer = str;
|
input_line_pointer = str;
|
||||||
|
|
||||||
/* fprintf (stderr, "operand: %s index = %d, opcode = %s\n", input_line_pointer, opindex_ptr - opcode->operands, opcode->name ); */
|
|
||||||
|
|
||||||
/* lo(), hi(), hi0(), etc... */
|
/* lo(), hi(), hi0(), etc... */
|
||||||
if ((reloc = v850_reloc_prefix (operand)) != BFD_RELOC_UNUSED)
|
if ((reloc = v850_reloc_prefix (operand)) != BFD_RELOC_UNUSED)
|
||||||
{
|
{
|
||||||
|
if (reloc == BFD_RELOC_64) /* This is a fake reloc, used to indicate an error condition. */
|
||||||
|
{
|
||||||
|
match = 1;
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
expression (& ex);
|
expression (& ex);
|
||||||
|
|
||||||
if (ex.X_op == O_constant)
|
if (ex.X_op == O_constant)
|
||||||
|
Reference in New Issue
Block a user