1 /* Support for printing C++ values for GDB, the GNU debugger.
3 Copyright (C) 1986-2019 Free Software Foundation, Inc.
5 This file is part of GDB.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21 #include "gdb_obstack.h"
24 #include "expression.h"
34 #include "cp-support.h"
36 #include "extension.h"
37 #include "typeprint.h"
38 #include "common/byte-vector.h"
40 /* Controls printing of vtbl's. */
42 show_vtblprint (struct ui_file
*file
, int from_tty
,
43 struct cmd_list_element
*c
, const char *value
)
45 fprintf_filtered (file
, _("\
46 Printing of C++ virtual function tables is %s.\n"),
50 /* Controls looking up an object's derived type using what we find in
53 show_objectprint (struct ui_file
*file
, int from_tty
,
54 struct cmd_list_element
*c
,
57 fprintf_filtered (file
, _("\
58 Printing of object's derived type based on vtable info is %s.\n"),
63 show_static_field_print (struct ui_file
*file
, int from_tty
,
64 struct cmd_list_element
*c
,
67 fprintf_filtered (file
,
68 _("Printing of C++ static members is %s.\n"),
73 static struct obstack dont_print_vb_obstack
;
74 static struct obstack dont_print_statmem_obstack
;
75 static struct obstack dont_print_stat_array_obstack
;
77 static void cp_print_static_field (struct type
*, struct value
*,
78 struct ui_file
*, int,
79 const struct value_print_options
*);
81 static void cp_print_value (struct type
*, struct type
*,
83 CORE_ADDR
, struct ui_file
*,
85 const struct value_print_options
*,
89 /* GCC versions after 2.4.5 use this. */
90 extern const char vtbl_ptr_name
[] = "__vtbl_ptr_type";
92 /* Return truth value for assertion that TYPE is of the type
93 "pointer to virtual function". */
96 cp_is_vtbl_ptr_type (struct type
*type
)
98 const char *type_name
= TYPE_NAME (type
);
100 return (type_name
!= NULL
&& !strcmp (type_name
, vtbl_ptr_name
));
103 /* Return truth value for the assertion that TYPE is of the type
104 "pointer to virtual function table". */
107 cp_is_vtbl_member (struct type
*type
)
109 /* With older versions of g++, the vtbl field pointed to an array of
110 structures. Nowadays it points directly to the structure. */
111 if (TYPE_CODE (type
) == TYPE_CODE_PTR
)
113 type
= TYPE_TARGET_TYPE (type
);
114 if (TYPE_CODE (type
) == TYPE_CODE_ARRAY
)
116 type
= TYPE_TARGET_TYPE (type
);
117 if (TYPE_CODE (type
) == TYPE_CODE_STRUCT
/* if not using thunks */
118 || TYPE_CODE (type
) == TYPE_CODE_PTR
) /* if using thunks */
120 /* Virtual functions tables are full of pointers
121 to virtual functions. */
122 return cp_is_vtbl_ptr_type (type
);
125 else if (TYPE_CODE (type
) == TYPE_CODE_STRUCT
) /* if not using thunks */
127 return cp_is_vtbl_ptr_type (type
);
129 else if (TYPE_CODE (type
) == TYPE_CODE_PTR
) /* if using thunks */
131 /* The type name of the thunk pointer is NULL when using
132 dwarf2. We could test for a pointer to a function, but
133 there is no type info for the virtual table either, so it
135 return cp_is_vtbl_ptr_type (type
);
141 /* Mutually recursive subroutines of cp_print_value and c_val_print to
142 print out a structure's fields: cp_print_value_fields and
145 TYPE, VALADDR, ADDRESS, STREAM, RECURSE, and OPTIONS have the same
146 meanings as in cp_print_value and c_val_print.
148 2nd argument REAL_TYPE is used to carry over the type of the
149 derived class across the recursion to base classes.
151 DONT_PRINT is an array of baseclass types that we should not print,
152 or zero if called from top level. */
155 cp_print_value_fields (struct type
*type
, struct type
*real_type
,
157 CORE_ADDR address
, struct ui_file
*stream
,
158 int recurse
, struct value
*val
,
159 const struct value_print_options
*options
,
160 struct type
**dont_print_vb
,
161 int dont_print_statmem
)
163 int i
, len
, n_baseclasses
;
165 static int last_set_recurse
= -1;
167 type
= check_typedef (type
);
171 /* Any object can be left on obstacks only during an unexpected
174 if (obstack_object_size (&dont_print_statmem_obstack
) > 0)
176 obstack_free (&dont_print_statmem_obstack
, NULL
);
177 obstack_begin (&dont_print_statmem_obstack
,
178 32 * sizeof (CORE_ADDR
));
180 if (obstack_object_size (&dont_print_stat_array_obstack
) > 0)
182 obstack_free (&dont_print_stat_array_obstack
, NULL
);
183 obstack_begin (&dont_print_stat_array_obstack
,
184 32 * sizeof (struct type
*));
188 fprintf_filtered (stream
, "{");
189 len
= TYPE_NFIELDS (type
);
190 n_baseclasses
= TYPE_N_BASECLASSES (type
);
192 /* First, print out baseclasses such that we don't print
193 duplicates of virtual baseclasses. */
195 if (n_baseclasses
> 0)
196 cp_print_value (type
, real_type
,
197 offset
, address
, stream
,
198 recurse
+ 1, val
, options
,
201 /* Second, print out data fields */
203 /* If there are no data fields, skip this part */
204 if (len
== n_baseclasses
|| !len
)
205 fprintf_filtered (stream
, "<No data fields>");
208 size_t statmem_obstack_initial_size
= 0;
209 size_t stat_array_obstack_initial_size
= 0;
210 struct type
*vptr_basetype
= NULL
;
213 if (dont_print_statmem
== 0)
215 statmem_obstack_initial_size
=
216 obstack_object_size (&dont_print_statmem_obstack
);
218 if (last_set_recurse
!= recurse
)
220 stat_array_obstack_initial_size
=
221 obstack_object_size (&dont_print_stat_array_obstack
);
223 last_set_recurse
= recurse
;
227 vptr_fieldno
= get_vptr_fieldno (type
, &vptr_basetype
);
228 for (i
= n_baseclasses
; i
< len
; i
++)
230 const gdb_byte
*valaddr
= value_contents_for_printing (val
);
232 /* If requested, skip printing of static fields. */
233 if (!options
->static_field_print
234 && field_is_static (&TYPE_FIELD (type
, i
)))
239 fputs_filtered (",", stream
);
240 if (!options
->prettyformat
)
241 fputs_filtered (" ", stream
);
243 else if (n_baseclasses
> 0)
245 if (options
->prettyformat
)
247 fprintf_filtered (stream
, "\n");
248 print_spaces_filtered (2 + 2 * recurse
, stream
);
249 fputs_filtered ("members of ", stream
);
250 fputs_filtered (TYPE_NAME (type
), stream
);
251 fputs_filtered (":", stream
);
256 if (options
->prettyformat
)
258 fprintf_filtered (stream
, "\n");
259 print_spaces_filtered (2 + 2 * recurse
, stream
);
263 wrap_here (n_spaces (2 + 2 * recurse
));
266 annotate_field_begin (TYPE_FIELD_TYPE (type
, i
));
268 if (field_is_static (&TYPE_FIELD (type
, i
)))
269 fputs_filtered ("static ", stream
);
270 fprintf_symbol_filtered (stream
,
271 TYPE_FIELD_NAME (type
, i
),
272 current_language
->la_language
,
273 DMGL_PARAMS
| DMGL_ANSI
);
274 annotate_field_name_end ();
276 /* We tweak various options in a few cases below. */
277 value_print_options options_copy
= *options
;
278 value_print_options
*opts
= &options_copy
;
280 /* Do not print leading '=' in case of anonymous
282 if (strcmp (TYPE_FIELD_NAME (type
, i
), ""))
283 fputs_filtered (" = ", stream
);
286 /* If this is an anonymous field then we want to consider it
287 as though it is at its parent's depth when it comes to the
289 if (opts
->max_depth
!= -1 && opts
->max_depth
< INT_MAX
)
292 annotate_field_value ();
294 if (!field_is_static (&TYPE_FIELD (type
, i
))
295 && TYPE_FIELD_PACKED (type
, i
))
299 /* Bitfields require special handling, especially due to
300 byte order problems. */
301 if (TYPE_FIELD_IGNORE (type
, i
))
303 fputs_filtered ("<optimized out or zero length>", stream
);
305 else if (value_bits_synthetic_pointer (val
,
306 TYPE_FIELD_BITPOS (type
,
308 TYPE_FIELD_BITSIZE (type
,
311 fputs_filtered (_("<synthetic pointer>"), stream
);
317 v
= value_field_bitfield (type
, i
, valaddr
, offset
, val
);
319 common_val_print (v
, stream
, recurse
+ 1,
320 opts
, current_language
);
325 if (TYPE_FIELD_IGNORE (type
, i
))
327 fputs_filtered ("<optimized out or zero length>",
330 else if (field_is_static (&TYPE_FIELD (type
, i
)))
332 struct value
*v
= NULL
;
336 v
= value_static_field (type
, i
);
339 catch (const gdb_exception_error
&ex
)
341 fprintf_filtered (stream
,
342 _("<error reading variable: %s>"),
346 cp_print_static_field (TYPE_FIELD_TYPE (type
, i
),
347 v
, stream
, recurse
+ 1, opts
);
349 else if (i
== vptr_fieldno
&& type
== vptr_basetype
)
351 int i_offset
= offset
+ TYPE_FIELD_BITPOS (type
, i
) / 8;
352 struct type
*i_type
= TYPE_FIELD_TYPE (type
, i
);
354 if (valprint_check_validity (stream
, i_type
, i_offset
, val
))
358 addr
= extract_typed_address (valaddr
+ i_offset
, i_type
);
359 print_function_pointer_address (opts
,
360 get_type_arch (type
),
367 val_print (TYPE_FIELD_TYPE (type
, i
),
368 offset
+ TYPE_FIELD_BITPOS (type
, i
) / 8,
370 stream
, recurse
+ 1, val
, opts
,
374 annotate_field_end ();
377 if (dont_print_statmem
== 0)
379 size_t obstack_final_size
=
380 obstack_object_size (&dont_print_statmem_obstack
);
382 if (obstack_final_size
> statmem_obstack_initial_size
)
384 /* In effect, a pop of the printed-statics stack. */
386 = statmem_obstack_initial_size
- obstack_final_size
;
387 obstack_blank_fast (&dont_print_statmem_obstack
, shrink_bytes
);
390 if (last_set_recurse
!= recurse
)
393 obstack_object_size (&dont_print_stat_array_obstack
);
395 if (obstack_final_size
> stat_array_obstack_initial_size
)
398 (char *) obstack_next_free (&dont_print_stat_array_obstack
)
399 - (obstack_final_size
400 - stat_array_obstack_initial_size
);
402 obstack_free (&dont_print_stat_array_obstack
,
405 last_set_recurse
= -1;
409 if (options
->prettyformat
)
411 fprintf_filtered (stream
, "\n");
412 print_spaces_filtered (2 * recurse
, stream
);
414 } /* if there are data fields */
416 fprintf_filtered (stream
, "}");
419 /* Like cp_print_value_fields, but find the runtime type of the object
420 and pass it as the `real_type' argument to cp_print_value_fields.
421 This function is a hack to work around the fact that
422 common_val_print passes the embedded offset to val_print, but not
423 the enclosing type. */
426 cp_print_value_fields_rtti (struct type
*type
,
427 const gdb_byte
*valaddr
, LONGEST offset
,
429 struct ui_file
*stream
, int recurse
,
431 const struct value_print_options
*options
,
432 struct type
**dont_print_vb
,
433 int dont_print_statmem
)
435 struct type
*real_type
= NULL
;
437 /* We require all bits to be valid in order to attempt a
439 if (!value_bits_any_optimized_out (val
,
440 TARGET_CHAR_BIT
* offset
,
441 TARGET_CHAR_BIT
* TYPE_LENGTH (type
)))
447 /* Ugh, we have to convert back to a value here. */
448 value
= value_from_contents_and_address (type
, valaddr
+ offset
,
450 type
= value_type (value
);
451 /* We don't actually care about most of the result here -- just
452 the type. We already have the correct offset, due to how
453 val_print was initially called. */
454 real_type
= value_rtti_type (value
, &full
, &top
, &using_enc
);
460 cp_print_value_fields (type
, real_type
, offset
,
461 address
, stream
, recurse
, val
, options
,
462 dont_print_vb
, dont_print_statmem
);
465 /* Special val_print routine to avoid printing multiple copies of
466 virtual baseclasses. */
469 cp_print_value (struct type
*type
, struct type
*real_type
,
471 CORE_ADDR address
, struct ui_file
*stream
,
472 int recurse
, struct value
*val
,
473 const struct value_print_options
*options
,
474 struct type
**dont_print_vb
)
476 struct type
**last_dont_print
477 = (struct type
**) obstack_next_free (&dont_print_vb_obstack
);
478 struct obstack tmp_obstack
= dont_print_vb_obstack
;
479 int i
, n_baseclasses
= TYPE_N_BASECLASSES (type
);
481 struct type
*thistype
;
482 const gdb_byte
*valaddr
= value_contents_for_printing (val
);
484 if (dont_print_vb
== 0)
486 /* If we're at top level, carve out a completely fresh chunk of
487 the obstack and use that until this particular invocation
489 /* Bump up the high-water mark. Now alpha is omega. */
490 obstack_finish (&dont_print_vb_obstack
);
493 for (i
= 0; i
< n_baseclasses
; i
++)
497 struct type
*baseclass
= check_typedef (TYPE_BASECLASS (type
, i
));
498 const char *basename
= TYPE_NAME (baseclass
);
499 struct value
*base_val
= NULL
;
501 if (BASETYPE_VIA_VIRTUAL (type
, i
))
503 struct type
**first_dont_print
504 = (struct type
**) obstack_base (&dont_print_vb_obstack
);
506 int j
= (struct type
**)
507 obstack_next_free (&dont_print_vb_obstack
) - first_dont_print
;
510 if (baseclass
== first_dont_print
[j
])
513 obstack_ptr_grow (&dont_print_vb_obstack
, baseclass
);
517 thistype
= real_type
;
521 boffset
= baseclass_offset (type
, i
, valaddr
, offset
, address
, val
);
523 catch (const gdb_exception_error
&ex
)
525 if (ex
.error
== NOT_AVAILABLE_ERROR
)
533 if (BASETYPE_VIA_VIRTUAL (type
, i
))
535 /* The virtual base class pointer might have been
536 clobbered by the user program. Make sure that it
537 still points to a valid memory location. */
539 if ((boffset
+ offset
) < 0
540 || (boffset
+ offset
) >= TYPE_LENGTH (real_type
))
542 gdb::byte_vector
buf (TYPE_LENGTH (baseclass
));
544 if (target_read_memory (address
+ boffset
, buf
.data (),
545 TYPE_LENGTH (baseclass
)) != 0)
547 base_val
= value_from_contents_and_address (baseclass
,
550 baseclass
= value_type (base_val
);
553 thistype
= baseclass
;
566 /* Now do the printing. */
567 if (options
->prettyformat
)
569 fprintf_filtered (stream
, "\n");
570 print_spaces_filtered (2 * recurse
, stream
);
572 fputs_filtered ("<", stream
);
573 /* Not sure what the best notation is in the case where there is
574 no baseclass name. */
575 fputs_filtered (basename
? basename
: "", stream
);
576 fputs_filtered ("> = ", stream
);
579 val_print_unavailable (stream
);
581 val_print_invalid_address (stream
);
586 if (options
->max_depth
> -1
587 && recurse
>= options
->max_depth
)
589 const struct language_defn
*language
= current_language
;
590 gdb_assert (language
->la_struct_too_deep_ellipsis
!= NULL
);
591 fputs_filtered (language
->la_struct_too_deep_ellipsis
, stream
);
595 /* Attempt to run an extension language pretty-printer on the
596 baseclass if possible. */
599 = apply_ext_lang_val_pretty_printer (baseclass
,
600 thisoffset
+ boffset
,
601 value_address (base_val
),
607 cp_print_value_fields (baseclass
, thistype
,
608 thisoffset
+ boffset
,
609 value_address (base_val
),
610 stream
, recurse
, base_val
, options
,
612 obstack_base (&dont_print_vb_obstack
)),
616 fputs_filtered (", ", stream
);
622 if (dont_print_vb
== 0)
624 /* Free the space used to deal with the printing
625 of this type from top level. */
626 obstack_free (&dont_print_vb_obstack
, last_dont_print
);
627 /* Reset watermark so that we can continue protecting
628 ourselves from whatever we were protecting ourselves. */
629 dont_print_vb_obstack
= tmp_obstack
;
633 /* Print value of a static member. To avoid infinite recursion when
634 printing a class that contains a static instance of the class, we
635 keep the addresses of all printed static member classes in an
636 obstack and refuse to print them more than once.
638 VAL contains the value to print, TYPE, STREAM, RECURSE, and OPTIONS
639 have the same meanings as in c_val_print. */
642 cp_print_static_field (struct type
*type
,
644 struct ui_file
*stream
,
646 const struct value_print_options
*options
)
648 struct value_print_options opts
;
650 if (value_entirely_optimized_out (val
))
652 val_print_optimized_out (val
, stream
);
656 struct type
*real_type
= check_typedef (type
);
657 if (TYPE_CODE (real_type
) == TYPE_CODE_STRUCT
)
659 CORE_ADDR
*first_dont_print
;
664 = (CORE_ADDR
*) obstack_base (&dont_print_statmem_obstack
);
665 i
= obstack_object_size (&dont_print_statmem_obstack
)
666 / sizeof (CORE_ADDR
);
670 if (value_address (val
) == first_dont_print
[i
])
672 fputs_filtered ("<same as static member of an already"
679 addr
= value_address (val
);
680 obstack_grow (&dont_print_statmem_obstack
, (char *) &addr
,
682 cp_print_value_fields (type
, value_enclosing_type (val
),
683 value_embedded_offset (val
), addr
,
684 stream
, recurse
, val
,
689 if (TYPE_CODE (real_type
) == TYPE_CODE_ARRAY
)
691 struct type
**first_dont_print
;
693 struct type
*target_type
= TYPE_TARGET_TYPE (type
);
696 = (struct type
**) obstack_base (&dont_print_stat_array_obstack
);
697 i
= obstack_object_size (&dont_print_stat_array_obstack
)
698 / sizeof (struct type
*);
702 if (target_type
== first_dont_print
[i
])
704 fputs_filtered ("<same as static member of an already"
711 obstack_grow (&dont_print_stat_array_obstack
,
712 (char *) &target_type
,
713 sizeof (struct type
*));
719 value_embedded_offset (val
),
721 stream
, recurse
, val
,
722 &opts
, current_language
);
725 /* Find the field in *SELF, or its non-virtual base classes, with
726 bit offset OFFSET. Set *SELF to the containing type and *FIELDNO
727 to the containing field number. If OFFSET is not exactly at the
728 start of some field, set *SELF to NULL. */
731 cp_find_class_member (struct type
**self_p
, int *fieldno
,
738 *self_p
= check_typedef (*self_p
);
740 len
= TYPE_NFIELDS (self
);
742 for (i
= TYPE_N_BASECLASSES (self
); i
< len
; i
++)
744 LONGEST bitpos
= TYPE_FIELD_BITPOS (self
, i
);
747 if (offset
== bitpos
)
754 for (i
= 0; i
< TYPE_N_BASECLASSES (self
); i
++)
756 LONGEST bitpos
= TYPE_FIELD_BITPOS (self
, i
);
757 LONGEST bitsize
= 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (self
, i
));
759 if (offset
>= bitpos
&& offset
< bitpos
+ bitsize
)
761 *self_p
= TYPE_FIELD_TYPE (self
, i
);
762 cp_find_class_member (self_p
, fieldno
, offset
- bitpos
);
771 cp_print_class_member (const gdb_byte
*valaddr
, struct type
*type
,
772 struct ui_file
*stream
, const char *prefix
)
774 enum bfd_endian byte_order
= gdbarch_byte_order (get_type_arch (type
));
776 /* VAL is a byte offset into the structure type SELF_TYPE.
777 Find the name of the field for that offset and
779 struct type
*self_type
= TYPE_SELF_TYPE (type
);
783 val
= extract_signed_integer (valaddr
,
787 /* Pointers to data members are usually byte offsets into an object.
788 Because a data member can have offset zero, and a NULL pointer to
789 member must be distinct from any valid non-NULL pointer to
790 member, either the value is biased or the NULL value has a
791 special representation; both are permitted by ISO C++. HP aCC
792 used a bias of 0x20000000; HP cfront used a bias of 1; g++ 3.x
793 and other compilers which use the Itanium ABI use -1 as the NULL
794 value. GDB only supports that last form; to add support for
795 another form, make this into a cp-abi hook. */
799 fprintf_filtered (stream
, "NULL");
803 cp_find_class_member (&self_type
, &fieldno
, val
<< 3);
805 if (self_type
!= NULL
)
809 fputs_filtered (prefix
, stream
);
810 name
= TYPE_NAME (self_type
);
812 fputs_filtered (name
, stream
);
814 c_type_print_base (self_type
, stream
, 0, 0, &type_print_raw_options
);
815 fprintf_filtered (stream
, "::");
816 fputs_filtered (TYPE_FIELD_NAME (self_type
, fieldno
), stream
);
819 fprintf_filtered (stream
, "%ld", (long) val
);
824 _initialize_cp_valprint (void)
826 add_setshow_boolean_cmd ("static-members", class_support
,
827 &user_print_options
.static_field_print
, _("\
828 Set printing of C++ static members."), _("\
829 Show printing of C++ static members."), NULL
,
831 show_static_field_print
,
832 &setprintlist
, &showprintlist
);
834 add_setshow_boolean_cmd ("vtbl", class_support
,
835 &user_print_options
.vtblprint
, _("\
836 Set printing of C++ virtual function tables."), _("\
837 Show printing of C++ virtual function tables."), NULL
,
840 &setprintlist
, &showprintlist
);
842 add_setshow_boolean_cmd ("object", class_support
,
843 &user_print_options
.objectprint
, _("\
844 Set printing of object's derived type based on vtable info."), _("\
845 Show printing of object's derived type based on vtable info."), NULL
,
848 &setprintlist
, &showprintlist
);
850 obstack_begin (&dont_print_stat_array_obstack
,
851 32 * sizeof (struct type
*));
852 obstack_begin (&dont_print_statmem_obstack
,
853 32 * sizeof (CORE_ADDR
));
854 obstack_begin (&dont_print_vb_obstack
,
855 32 * sizeof (struct type
*));