diff options
-rw-r--r-- | gas/ChangeLog | 6 | ||||
-rw-r--r-- | gas/config/tc-mips.c | 11 |
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. */ |