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

Daniel Jacobowitz
2002-02-20T22:41:59Z

On Mon, Feb 11, 2002 at 12:38:18AM -0500, Daniel Jacobowitz wrote:
> 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?

Per never answered me, and I satisfied Tom's objections. I'm committing
this as reasonably obvious, in my quest to shrink the number of "I
should look at this" PRs in my mailbox.

>
> --
> 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