mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-23 11:39:26 +08:00
* config/tc-sh.c (parse_at): Set arg type of @(expr,pc) to
A_DISP_PC only if it's an integral constant, and to A_DISP_PC_ABS otherwise. (get_specific): Accept A_DISP_PC_ABS where A_DISP_PC is expected. (build_Mytes): Mark PCRELIMM fix-ups as pc-relative only if the operand type is not A_DISP_PC_ABS.
This commit is contained in:
@ -1,3 +1,13 @@
|
|||||||
|
2002-02-04 Alexandre Oliva <aoliva@redhat.com>
|
||||||
|
|
||||||
|
* config/tc-sh.c (parse_at): Set arg type of @(expr,pc) to
|
||||||
|
A_DISP_PC only if it's an integral constant, and to
|
||||||
|
A_DISP_PC_ABS otherwise.
|
||||||
|
(get_specific): Accept A_DISP_PC_ABS where A_DISP_PC is
|
||||||
|
expected.
|
||||||
|
(build_Mytes): Mark PCRELIMM fix-ups as pc-relative only if
|
||||||
|
the operand type is not A_DISP_PC_ABS.
|
||||||
|
|
||||||
2002-02-04 Hans-Peter Nilsson <hp@bitrange.com>
|
2002-02-04 Hans-Peter Nilsson <hp@bitrange.com>
|
||||||
|
|
||||||
* config/tc-mmix.c (tc_gen_reloc): Don't try and take the value of
|
* config/tc-mmix.c (tc_gen_reloc): Don't try and take the value of
|
||||||
|
@ -986,9 +986,11 @@ parse_at (src, op)
|
|||||||
{
|
{
|
||||||
op->immediate.X_add_symbol = dot ();
|
op->immediate.X_add_symbol = dot ();
|
||||||
op->immediate.X_op = O_symbol;
|
op->immediate.X_op = O_symbol;
|
||||||
}
|
|
||||||
op->type = A_DISP_PC;
|
op->type = A_DISP_PC;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
op->type = A_DISP_PC_ABS;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
as_bad (_("syntax error in @(disp,[Rn, gbr, pc])"));
|
as_bad (_("syntax error in @(disp,[Rn, gbr, pc])"));
|
||||||
@ -1169,11 +1171,14 @@ get_specific (opcode, operands)
|
|||||||
|
|
||||||
switch (arg)
|
switch (arg)
|
||||||
{
|
{
|
||||||
|
case A_DISP_PC:
|
||||||
|
if (user->type == A_DISP_PC_ABS)
|
||||||
|
break;
|
||||||
|
/* Fall through. */
|
||||||
case A_IMM:
|
case A_IMM:
|
||||||
case A_BDISP12:
|
case A_BDISP12:
|
||||||
case A_BDISP8:
|
case A_BDISP8:
|
||||||
case A_DISP_GBR:
|
case A_DISP_GBR:
|
||||||
case A_DISP_PC:
|
|
||||||
case A_MACH:
|
case A_MACH:
|
||||||
case A_PR:
|
case A_PR:
|
||||||
case A_MACL:
|
case A_MACL:
|
||||||
@ -1603,10 +1608,12 @@ build_Mytes (opcode, operand)
|
|||||||
insert (output + low_byte, BFD_RELOC_SH_IMM8, 0, operand + 1);
|
insert (output + low_byte, BFD_RELOC_SH_IMM8, 0, operand + 1);
|
||||||
break;
|
break;
|
||||||
case PCRELIMM_8BY4:
|
case PCRELIMM_8BY4:
|
||||||
insert (output, BFD_RELOC_SH_PCRELIMM8BY4, 1, operand);
|
insert (output, BFD_RELOC_SH_PCRELIMM8BY4,
|
||||||
|
operand->type != A_DISP_PC_ABS, operand);
|
||||||
break;
|
break;
|
||||||
case PCRELIMM_8BY2:
|
case PCRELIMM_8BY2:
|
||||||
insert (output, BFD_RELOC_SH_PCRELIMM8BY2, 1, operand);
|
insert (output, BFD_RELOC_SH_PCRELIMM8BY2,
|
||||||
|
operand->type != A_DISP_PC_ABS, operand);
|
||||||
break;
|
break;
|
||||||
case REPEAT:
|
case REPEAT:
|
||||||
output = insert_loop_bounds (output, operand);
|
output = insert_loop_bounds (output, operand);
|
||||||
|
Reference in New Issue
Block a user