aboutsummaryrefslogtreecommitdiff
path: root/gdb/value.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2011-02-14 11:33:24 +0000
committerPedro Alves <palves@redhat.com>2011-02-14 11:33:24 +0000
commitec0a52e16206a31867fdcc5535c42baca7bf8967 (patch)
tree3f8b2d7194b672c5c155f9931635fda2fa2fc142 /gdb/value.c
parent24e6bceefbdf681e3e4101a44835a29afe33f902 (diff)
downloadgdb-ec0a52e16206a31867fdcc5535c42baca7bf8967.zip
gdb-ec0a52e16206a31867fdcc5535c42baca7bf8967.tar.gz
gdb-ec0a52e16206a31867fdcc5535c42baca7bf8967.tar.bz2
gdb/testsuite/
* gdb.trace/unavailable.cc (struct Virtual): New. (virtualp): New global pointer. * gdb.trace/unavailable.exp (gdb_collect_globals_test): Test printing a pointer to an object whose type has a vtable, with print object on. gdb/ * value.h (value_entirely_available): Declare. * value.c (value_entirely_available): New function. * c-valprint.c (c_value_print): Don't try fetching the pointer's real type if the pointer is unavailable.
Diffstat (limited to 'gdb/value.c')
-rw-r--r--gdb/value.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gdb/value.c b/gdb/value.c
index 8061019..236b42f 100644
--- a/gdb/value.c
+++ b/gdb/value.c
@@ -331,6 +331,19 @@ value_bytes_available (const struct value *value, int offset, int length)
return !ranges_contain (value->unavailable, offset, length);
}
+int
+value_entirely_available (struct value *value)
+{
+ /* We can only tell whether the whole value is available when we try
+ to read it. */
+ if (value->lazy)
+ value_fetch_lazy (value);
+
+ if (VEC_empty (range_s, value->unavailable))
+ return 1;
+ return 0;
+}
+
void
mark_value_bytes_unavailable (struct value *value, int offset, int length)
{