From b7b189f3cf682e67fb3ccd5908ec4b980735a620 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Mon, 5 Mar 2012 19:38:17 +0000 Subject: [PATCH] * jv-valprint.c (java_value_print): Correctly compute 'obj_addr'. gdb/testsuite * gdb.java/jprint.java (jprint.main): Keep 'x' live. --- gdb/ChangeLog | 4 ++++ gdb/jv-valprint.c | 5 ++++- gdb/testsuite/ChangeLog | 4 ++++ gdb/testsuite/gdb.java/jprint.java | 1 + 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c2d0c59e1c9..2def55d8833 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2012-03-05 Tom Tromey + + * jv-valprint.c (java_value_print): Correctly compute 'obj_addr'. + 2012-03-05 Joel Brobecker From Andreas Arnez : diff --git a/gdb/jv-valprint.c b/gdb/jv-valprint.c index 648dbc7a3b5..12a960f09d8 100644 --- a/gdb/jv-valprint.c +++ b/gdb/jv-valprint.c @@ -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) { diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index d941bb5fc39..4123476cb7c 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2012-03-05 Tom Tromey + + * gdb.java/jprint.java (jprint.main): Keep 'x' live. + 2012-03-04 Yao Qi * gdb.base/disp-step-syscall.exp (disp_step_cross_syscall): Catch error diff --git a/gdb/testsuite/gdb.java/jprint.java b/gdb/testsuite/gdb.java/jprint.java index 3d55dc308df..0a5e7d3ebe3 100644 --- a/gdb/testsuite/gdb.java/jprint.java +++ b/gdb/testsuite/gdb.java/jprint.java @@ -61,6 +61,7 @@ public class jprint extends jvclass { jprint x = new jprint (); x.dothat (44); print (k, 33); + print (x.addk(0), 33); } } -- 2.30.2