[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