diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 17753a99d67e8f5abcd18c4d0786aa2dd9c6ee50..c26c022527405ee2520e114f5ee6c3a5a8138828 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2010-02-11  Pedro Alves  <pedro@codesourcery.com>
+
+	* ax-gdb.c (gen_exp_binop_rest) [BINOP_SUBSCRIPT]: Error out if
+	the offset value isn't of integral type.
+
 2010-02-11  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
 	* breakpoint.c (delete_breakpoint) <bpt->related_breakpoint != NULL>:
diff --git a/gdb/ax-gdb.c b/gdb/ax-gdb.c
index 75aa7ca62b2bfe3a14c334695949298babc5667d..3e151deccfbaf0c909656e3a4c53c8c1970ea9d7 100644
--- a/gdb/ax-gdb.c
+++ b/gdb/ax-gdb.c
@@ -1910,6 +1910,9 @@ cannot subscript requested type: cannot call user defined functions"));
 	      }
 	  }
 
+	if (!is_integral_type (value2->type))
+	  error (_("Argument to arithmetic operation not a number or boolean."));
+
 	gen_ptradd (ax, value, value1, value2);
 	gen_deref (ax, value);
 	break;