[PATCH] MIPS gas jump address range overflow
Thiemo Seufer
ica2_ts@csv.ica.uni-stuttgart.de
Mon Dec 3 01:57:00 GMT 2001
Hi All,
this checks for jump address range overflows in MIPS gas.
Thiemo
2001-12-03 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
/gas/ChangeLog
* config/tc-mips.c (append_insn): Add jump address range overflow
check.
diff -BurpN source-orig/gas/config/tc-mips.c source/gas/config/tc-mips.c
--- source-orig/gas/config/tc-mips.c Sun Dec 2 15:38:35 2001
+++ source/gas/config/tc-mips.c Sun Dec 2 20:35:24 2001
@@ -1974,6 +2018,10 @@ append_insn (place, ip, address_expr, re
if ((address_expr->X_add_number & 3) != 0)
as_bad (_("jump to misaligned address (0x%lx)"),
(unsigned long) address_expr->X_add_number);
+ if (address_expr->X_add_number & ~0xfffffff
+ || address_expr->X_add_number > 0x7fffffc)
+ as_bad (_("jump address range overflow (0x%lx)"),
+ (unsigned long) address_expr->X_add_number);
ip->insn_opcode |= (address_expr->X_add_number >> 2) & 0x3ffffff;
break;
@@ -1981,6 +2029,10 @@ append_insn (place, ip, address_expr, re
if ((address_expr->X_add_number & 3) != 0)
as_bad (_("jump to misaligned address (0x%lx)"),
(unsigned long) address_expr->X_add_number);
+ if (address_expr->X_add_number & ~0xfffffff
+ || address_expr->X_add_number > 0x7fffffc)
+ as_bad (_("jump address range overflow (0x%lx)"),
+ (unsigned long) address_expr->X_add_number);
ip->insn_opcode |=
(((address_expr->X_add_number & 0x7c0000) << 3)
| ((address_expr->X_add_number & 0xf800000) >> 7)
More information about the Binutils
mailing list