diff options
author | Richard Sandiford <rdsandiford@googlemail.com> | 2010-11-13 11:59:21 +0000 |
---|---|---|
committer | Richard Sandiford <rdsandiford@googlemail.com> | 2010-11-13 11:59:21 +0000 |
commit | e391c02431f9d5973f685981cfaf1edfb0970cdb (patch) | |
tree | 84b8b1aa7e494d4b59c61d84cd1699ac0c851c3b /gas/config/tc-mips.c | |
parent | 361c3115547239d39d2c4e57c67277d92f1c34a4 (diff) | |
download | binutils-e391c02431f9d5973f685981cfaf1edfb0970cdb.zip binutils-e391c02431f9d5973f685981cfaf1edfb0970cdb.tar.gz binutils-e391c02431f9d5973f685981cfaf1edfb0970cdb.tar.bz2 |
gas/
* config/tc-mips.c (macro_build): Remove gas_assert from 'o' case.
Use a restricted gas_assert for 'i' and 'j'.
gas/testsuite/
* gas/mips/elf-rel28.s, gas/mips/elf-rel28-n32.d,
gas/mips/elf-rel28-n64.d: New test.
* gas/mips/mips.exp: Run it.
Diffstat (limited to 'gas/config/tc-mips.c')
-rw-r--r-- | gas/config/tc-mips.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index ddeb513..77397bb 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -3765,20 +3765,16 @@ macro_build (expressionS *ep, const char *name, const char *fmt, ...) case 'i': case 'j': - case 'o': macro_read_relocs (&args, r); gas_assert (*r == BFD_RELOC_GPREL16 - || *r == BFD_RELOC_MIPS_LITERAL - || *r == BFD_RELOC_MIPS_HIGHER - || *r == BFD_RELOC_HI16_S - || *r == BFD_RELOC_LO16 - || *r == BFD_RELOC_MIPS_GOT16 - || *r == BFD_RELOC_MIPS_CALL16 - || *r == BFD_RELOC_MIPS_GOT_DISP - || *r == BFD_RELOC_MIPS_GOT_PAGE - || *r == BFD_RELOC_MIPS_GOT_OFST - || *r == BFD_RELOC_MIPS_GOT_LO16 - || *r == BFD_RELOC_MIPS_CALL_LO16); + || *r == BFD_RELOC_MIPS_HIGHER + || *r == BFD_RELOC_HI16_S + || *r == BFD_RELOC_LO16 + || *r == BFD_RELOC_MIPS_GOT_OFST); + continue; + + case 'o': + macro_read_relocs (&args, r); continue; case 'u': @@ -9970,6 +9966,9 @@ do_msbd: /* Check whether there is only a single bracketed expression left. If so, it must be the base register and the constant must be zero. */ + offset_reloc[0] = BFD_RELOC_LO16; + offset_reloc[1] = BFD_RELOC_UNUSED; + offset_reloc[2] = BFD_RELOC_UNUSED; if (*s == '(' && strchr (s + 1, '(') == 0) { offset_expr.X_op = O_constant; |