* 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 c2d0c59..2def55d 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 648dbc7..12a960f 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 d941bb5..4123476 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 3d55dc3..0a5e7d3 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);
   }
 }