diff options
author | Pedro Alves <palves@redhat.com> | 2011-02-14 11:33:24 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2011-02-14 11:33:24 +0000 |
commit | ec0a52e16206a31867fdcc5535c42baca7bf8967 (patch) | |
tree | 3f8b2d7194b672c5c155f9931635fda2fa2fc142 /gdb/value.c | |
parent | 24e6bceefbdf681e3e4101a44835a29afe33f902 (diff) | |
download | gdb-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.c | 13 |
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) { |