diff options
Diffstat (limited to 'gas/config/tc-mips.c')
-rw-r--r-- | gas/config/tc-mips.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index ac4fefd..9fde462 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -4856,7 +4856,10 @@ match_const_int (struct mips_arg_info *arg, offsetT *value) *value = ex.X_add_number; else { - match_not_constant (arg); + if (r[0] == BFD_RELOC_UNUSED && ex.X_op == O_big) + match_out_of_range (arg); + else + match_not_constant (arg); return FALSE; } return TRUE; @@ -5062,6 +5065,12 @@ match_int_operand (struct mips_arg_info *arg, if (!match_expression (arg, &offset_expr, offset_reloc)) return FALSE; + if (offset_expr.X_op == O_big) + { + match_out_of_range (arg); + return FALSE; + } + if (offset_reloc[0] != BFD_RELOC_UNUSED) /* Relocation operators were used. Accept the argument and leave the relocation value in offset_expr and offset_relocs @@ -8261,6 +8270,12 @@ match_mips16_insn (struct mips_cl_insn *insn, const struct mips_opcode *opcode, return FALSE; } + if (offset_expr.X_op == O_big) + { + match_out_of_range (&arg); + return FALSE; + } + relax_char = c; continue; } |