From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30235 invoked by alias); 11 Feb 2002 05:38:22 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 30145 invoked from network); 11 Feb 2002 05:38:18 -0000 Received: from unknown (HELO nevyn.them.org) (128.2.145.6) by sources.redhat.com with SMTP; 11 Feb 2002 05:38:18 -0000 Received: from drow by nevyn.them.org with local (Exim 3.34 #1 (Debian)) id 16a9AQ-0006v8-00; Mon, 11 Feb 2002 00:38:18 -0500 Date: Sun, 10 Feb 2002 21:38:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sources.redhat.com, per@bothner.com Subject: Fix PR gdb/265, 64-bit pointers in Java Message-ID: <20020211003818.A26546@nevyn.them.org> Mail-Followup-To: gdb-patches@sources.redhat.com, per@bothner.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.23i X-SW-Source: 2002-02/txt/msg00317.txt.bz2 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 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