* jv-valprint.c (java_value_print): Correctly compute 'obj_addr'.
authorTom Tromey <tromey@redhat.com>
Mon, 5 Mar 2012 19:38:17 +0000 (19:38 +0000)
committerTom Tromey <tromey@redhat.com>
Mon, 5 Mar 2012 19:38:17 +0000 (19:38 +0000)
gdb/testsuite
* gdb.java/jprint.java (jprint.main): Keep 'x' live.

gdb/ChangeLog
gdb/jv-valprint.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.java/jprint.java

index c2d0c59e1c9e9eb802b59524e63291589a4b59b1..2def55d883326906645351e376c6da1c49cc9f7a 100644 (file)
@@ -1,3 +1,7 @@
+2012-03-05  Tom Tromey  <tromey@redhat.com>
+
+       * jv-valprint.c (java_value_print): Correctly compute 'obj_addr'.
+
 2012-03-05  Joel Brobecker  <brobecker@adacore.com>
 
        From Andreas Arnez  <arnez@linux.vnet.ibm.com>:
index 648dbc7a3b52a4ce5fa17287c47c90f082a671a3..12a960f09d8e10d6f417a4ba1fd008448c25f856 100644 (file)
@@ -51,10 +51,13 @@ java_value_print (struct value *val, struct ui_file *stream,
   if (is_object_type (type))
     {
       CORE_ADDR obj_addr;
+      struct value *tem = val;
 
       /* Get the run-time type, and cast the object into that.  */
+      while (TYPE_CODE (value_type (tem)) == TYPE_CODE_PTR)
+       tem = value_ind (tem);
 
-      obj_addr = unpack_pointer (type, value_contents (val));
+      obj_addr = value_address (tem);
 
       if (obj_addr != 0)
        {
index d941bb5fc399584a1073626ada7bcfe3c09b75bb..4123476cb7c92c896fc2311bd0e67c6940287c8f 100644 (file)
@@ -1,3 +1,7 @@
+2012-03-05  Tom Tromey  <tromey@redhat.com>
+
+       * gdb.java/jprint.java (jprint.main): Keep 'x' live.
+
 2012-03-04  Yao Qi  <yao@codesourcery.com>
 
        * gdb.base/disp-step-syscall.exp (disp_step_cross_syscall): Catch error
index 3d55dc308df41580063a3fcfcdb42a77b3212876..0a5e7d3ebe3cd17d6420e6485c21c201edf79fb2 100644 (file)
@@ -61,6 +61,7 @@ public class jprint extends jvclass {
     jprint x = new jprint ();
     x.dothat (44);
     print (k, 33);
+    print (x.addk(0), 33);
   }
 }