This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Fix PR gdb/265, 64-bit pointers in Java
- From: Daniel Jacobowitz <drow at mvista dot com>
- To: gdb-patches at sources dot redhat dot com, per at bothner dot com
- Date: Mon, 11 Feb 2002 00:38:18 -0500
- Subject: Fix PR gdb/265, 64-bit pointers in Java
I don't know if Java allows the implicit 0x123456789 -> 0x123456789L
conversion that we all know and love in C, but it certainly behooves us to
act that way on the command line. Per, does this patch look OK?
--
Daniel Jacobowitz Carnegie Mellon University
MontaVista Software Debian GNU/Linux Developer
2002-02-11 Daniel Jacobowitz <drow@mvista.com>
Fix PR gdb/265
* jv-exp.y (parse_number): Handle 64-bit integers.
Index: jv-exp.y
===================================================================
RCS file: /cvs/src/src/gdb/jv-exp.y,v
retrieving revision 1.3
diff -u -p -r1.3 jv-exp.y
--- jv-exp.y 2001/03/06 08:21:09 1.3
+++ jv-exp.y 2002/02/11 05:32:18
@@ -764,13 +764,13 @@ parse_number (p, len, parsed_float, puti
}
c = p[len-1];
+ /* A paranoid calculation of (1<<64)-1. */
limit = (ULONGEST)0xffffffff;
+ limit = ((limit << 16) << 16) | limit;
if (c == 'l' || c == 'L')
{
type = java_long_type;
len--;
- /* A paranoid calculation of (1<<64)-1. */
- limit = ((limit << 16) << 16) | limit;
}
else
{
@@ -797,9 +797,13 @@ parse_number (p, len, parsed_float, puti
n += c;
}
- putithere->typed_val_int.val = n;
- putithere->typed_val_int.type = type;
- return INTEGER_LITERAL;
+ if (type == java_int_type && n > (ULONGEST)0xffffffff)
+ type = java_long_type;
+
+ putithere->typed_val_int.val = n;
+ putithere->typed_val_int.type = type;
+
+ return INTEGER_LITERAL;
}
struct token