diff options
Diffstat (limited to 'gdb/ada-varobj.c')
-rw-r--r-- | gdb/ada-varobj.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gdb/ada-varobj.c b/gdb/ada-varobj.c index aab7335..3da6018 100644 --- a/gdb/ada-varobj.c +++ b/gdb/ada-varobj.c @@ -219,6 +219,15 @@ ada_varobj_adjust_for_child_access (struct value **value, && !ada_is_array_descriptor_type (TYPE_TARGET_TYPE (*type)) && !ada_is_constrained_packed_array_type (TYPE_TARGET_TYPE (*type))) ada_varobj_ind (*value, *type, value, type); + + /* If this is a tagged type, we need to transform it a bit in order + to be able to fetch its full view. As always with tagged types, + we can only do that if we have a value. */ + if (*value != NULL && ada_is_tagged_type (*type, 1)) + { + *value = ada_tag_value_at_base_address (*value); + *type = value_type (*value); + } } /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair is an array |