From: Daniel Jacobowitz Date: Thu, 21 Feb 2002 02:54:46 +0000 (+0000) Subject: 2002-02-20 Daniel Jacobowitz X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=385fa495bfa18b350d21d71e4064359f96599ff0;p=binutils-gdb.git 2002-02-20 Daniel Jacobowitz * jv-exp.y (parse_number): Change type of implicit longs to builtin_type_uint64. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 295c0e1778d..063701cfc6f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2002-02-20 Daniel Jacobowitz + + * jv-exp.y (parse_number): Change type of implicit longs + to builtin_type_uint64. + 2002-02-20 Daniel Jacobowitz * gdbserver/linux-low.c (mywait): Change argument to waitpid diff --git a/gdb/jv-exp.y b/gdb/jv-exp.y index 403794e9319..1b80ab45827 100644 --- a/gdb/jv-exp.y +++ b/gdb/jv-exp.y @@ -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;