* config/tc-mips.c (macro)[ldd_std]: Fix the relaxation variant
for absolute addressing.
This commit is contained in:
parent
704897fbef
commit
0970e49e1a
2 changed files with 6 additions and 20 deletions
|
@ -1,3 +1,8 @@
|
|||
2010-10-18 Maciej W. Rozycki <macro@linux-mips.org>
|
||||
|
||||
* config/tc-mips.c (macro)[ldd_std]: Fix the relaxation variant
|
||||
for absolute addressing.
|
||||
|
||||
2010-10-18 Maciej W. Rozycki <macro@linux-mips.org>
|
||||
|
||||
* config/tc-mips.c (macro)[M_LD_OB, M_SD_OB]: Handle 64-bit ABIs.
|
||||
|
|
|
@ -7203,26 +7203,7 @@ macro (struct mips_cl_insn *ip)
|
|||
|
||||
relax_switch ();
|
||||
|
||||
/* We just generated two relocs. When tc_gen_reloc
|
||||
handles this case, it will skip the first reloc and
|
||||
handle the second. The second reloc already has an
|
||||
extra addend of 4, which we added above. We must
|
||||
subtract it out, and then subtract another 4 to make
|
||||
the first reloc come out right. The second reloc
|
||||
will come out right because we are going to add 4 to
|
||||
offset_expr when we build its instruction below.
|
||||
|
||||
If we have a symbol, then we don't want to include
|
||||
the offset, because it will wind up being included
|
||||
when we generate the reloc. */
|
||||
|
||||
if (offset_expr.X_op == O_constant)
|
||||
offset_expr.X_add_number -= 8;
|
||||
else
|
||||
{
|
||||
offset_expr.X_add_number = -4;
|
||||
offset_expr.X_op = O_constant;
|
||||
}
|
||||
offset_expr.X_add_number -= 4;
|
||||
}
|
||||
used_at = 1;
|
||||
macro_build_lui (&offset_expr, AT);
|
||||
|
|
Loading…
Reference in a new issue