This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]