aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-mips.c11
2 files changed, 15 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index c450019..d294525 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2010-11-01 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * config/tc-mips.c (macro)[M_LD_OB, M_SD_OB]: Use the offset
+ reloc supplied.
+ (mips_ip)['o']: Initialise offset_reloc.
+
2010-10-29 Joseph Myers <joseph@codesourcery.com>
* doc/c-tic6x.texi (TIC6X Directives): Mention
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index 507c5ff..9fa4cce 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -7350,12 +7350,15 @@ macro (struct mips_cl_insn *ip)
case M_SD_OB:
s = HAVE_64BIT_GPRS ? "sd" : "sw";
sd_ob:
- macro_build (&offset_expr, s, "t,o(b)", treg, BFD_RELOC_LO16, breg);
+ macro_build (&offset_expr, s, "t,o(b)", treg,
+ -1, offset_reloc[0], offset_reloc[1], offset_reloc[2],
+ breg);
if (!HAVE_64BIT_GPRS)
{
offset_expr.X_add_number += 4;
macro_build (&offset_expr, s, "t,o(b)", treg + 1,
- BFD_RELOC_LO16, breg);
+ -1, offset_reloc[0], offset_reloc[1], offset_reloc[2],
+ breg);
}
break;
@@ -9960,6 +9963,10 @@ do_msbd:
continue;
case 'o': /* 16 bit offset */
+ offset_reloc[0] = BFD_RELOC_LO16;
+ offset_reloc[1] = BFD_RELOC_UNUSED;
+ offset_reloc[2] = BFD_RELOC_UNUSED;
+
/* Check whether there is only a single bracketed expression
left. If so, it must be the base register and the
constant must be zero. */