Fix PR gdb/265, 64-bit pointers in Java

Daniel Jacobowitz
2002-02-11T05:38:22Z

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