diff options
Diffstat (limited to 'gdb/cp-valprint.c')
-rw-r--r-- | gdb/cp-valprint.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/gdb/cp-valprint.c b/gdb/cp-valprint.c index 64aa3e0..3fbb1f1 100644 --- a/gdb/cp-valprint.c +++ b/gdb/cp-valprint.c @@ -198,6 +198,7 @@ cp_print_value_fields (struct type *type, struct type *real_type, { stat_array_obstack_initial_size = obstack_object_size (&dont_print_stat_array_obstack); + last_set_recurse = recurse; } } @@ -280,6 +281,7 @@ cp_print_value_fields (struct type *type, struct type *real_type, else { struct value_print_options opts = *options; + opts.deref_ref = 0; v = value_from_longest (TYPE_FIELD_TYPE (type, i), @@ -298,6 +300,7 @@ cp_print_value_fields (struct type *type, struct type *real_type, else if (field_is_static (&TYPE_FIELD (type, i))) { struct value *v = value_static_field (type, i); + if (v == NULL) fputs_filtered ("<optimized out>", stream); else @@ -307,6 +310,7 @@ cp_print_value_fields (struct type *type, struct type *real_type, else { struct value_print_options opts = *options; + opts.deref_ref = 0; val_print (TYPE_FIELD_TYPE (type, i), valaddr, offset + TYPE_FIELD_BITPOS (type, i) / 8, @@ -374,7 +378,8 @@ cp_print_value_fields_rtti (struct type *type, CORE_ADDR address, struct ui_file *stream, int recurse, const struct value_print_options *options, - struct type **dont_print_vb, int dont_print_statmem) + struct type **dont_print_vb, + int dont_print_statmem) { struct value *value; int full, top, using_enc; @@ -462,6 +467,7 @@ cp_print_value (struct type *type, struct type *real_type, { /* FIXME (alloca): unsafe if baseclass is really really large. */ gdb_byte *buf = alloca (TYPE_LENGTH (baseclass)); + base_valaddr = buf; if (target_read_memory (address + boffset, buf, TYPE_LENGTH (baseclass)) != 0) @@ -697,6 +703,7 @@ cp_print_class_member (const gdb_byte *valaddr, struct type *type, if (domain != NULL) { char *name; + fputs_filtered (prefix, stream); name = type_name_no_tag (domain); if (name) |