2002-02-20 Daniel Jacobowitz <drow@mvista.com>
authorDaniel Jacobowitz <drow@false.org>
Thu, 21 Feb 2002 02:54:46 +0000 (02:54 +0000)
committerDaniel Jacobowitz <drow@false.org>
Thu, 21 Feb 2002 02:54:46 +0000 (02:54 +0000)
        * jv-exp.y (parse_number): Change type of implicit longs
        to builtin_type_uint64.

gdb/ChangeLog
gdb/jv-exp.y

index 295c0e1..063701c 100644 (file)
@@ -1,5 +1,10 @@
 2002-02-20  Daniel Jacobowitz  <drow@mvista.com>
 
+       * jv-exp.y (parse_number): Change type of implicit longs
+       to builtin_type_uint64.
+
+2002-02-20  Daniel Jacobowitz  <drow@mvista.com>
+
        * gdbserver/linux-low.c (mywait): Change argument to waitpid
        to be an integer instead of a `union wait'.
 
index 403794e..1b80ab4 100644 (file)
@@ -797,8 +797,13 @@ parse_number (p, len, parsed_float, putithere)
       n += c;
        }
 
-  if (type == java_int_type && n > (ULONGEST)0xffffffff)
-    type = java_long_type;
+  /* If the type is bigger than a 32-bit signed integer can be, implicitly
+     promote to long.  Java does not do this, so mark it as builtin_type_uint64
+     rather than java_long_type.  0x80000000 will become -0x80000000 instead
+     of 0x80000000L, because we don't know the sign at this point.
+  */
+  if (type == java_int_type && n > (ULONGEST)0x80000000)
+    type = builtin_type_uint64;
 
   putithere->typed_val_int.val = n;
   putithere->typed_val_int.type = type;