aboutsummaryrefslogtreecommitdiff
path: root/gdb/c-valprint.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2011-02-02 17:41:54 +0000
committerPedro Alves <palves@redhat.com>2011-02-02 17:41:54 +0000
commit580688f393b43a7456e3bf2857da9c5401e8954f (patch)
tree0a3e410d5f8c8057b923342ff003021d3e290495 /gdb/c-valprint.c
parent3d2c1d41d4b6cdaa6052ddfd99b0745cc70c9cbb (diff)
downloadgdb-580688f393b43a7456e3bf2857da9c5401e8954f.zip
gdb-580688f393b43a7456e3bf2857da9c5401e8954f.tar.gz
gdb-580688f393b43a7456e3bf2857da9c5401e8954f.tar.bz2
gdb/
* c-valprint.c (c_value_print): When doing virtual base pointer adjustment, create a new value with adjusted contents rather than changing the contents of the value being printed (and getting it wrong). gdb/testsuite/ * gdb.cp/virtbase.cc (VirtualBase, VirtualMiddleA, VirtualMiddleB) (Virtual): New structs. (virtual_o, virtual_middle_b): New globals. * gdb.cp/virtbase.exp: New tests.
Diffstat (limited to 'gdb/c-valprint.c')
-rw-r--r--gdb/c-valprint.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c
index 3bd4db2..287dc0b 100644
--- a/gdb/c-valprint.c
+++ b/gdb/c-valprint.c
@@ -706,8 +706,7 @@ c_value_print (struct value *val, struct ui_file *stream,
type = lookup_reference_type (real_type);
}
/* JYG: Need to adjust pointer value. */
- /* NOTE: cagney/2005-01-02: THIS IS BOGUS. */
- value_contents_writeable (val)[0] -= top;
+ val = value_from_pointer (type, value_as_address (val) - top);
/* Note: When we look up RTTI entries, we don't get any
information on const or volatile attributes. */