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 295c0e1778d5c537df19bbe9f285ba82f97d6e5d..063701cfc6f6d305ba6fe07684ed84b261be2fc0 100644 (file)
@@ -1,3 +1,8 @@
+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
index 403794e9319eb2192829e60ee1f4a61038b03ddb..1b80ab4582760228b090efa4c38f5df023238106 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;