From ec0a52e16206a31867fdcc5535c42baca7bf8967 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Mon, 14 Feb 2011 11:33:24 +0000 Subject: 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. --- gdb/value.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'gdb/value.c') 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) { -- cgit v1.1