1 /* Support for printing C++ values for GDB, the GNU debugger.
3 Copyright (C) 1986-2014 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 "exceptions.h"
38 #include "typeprint.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 extern void _initialize_cp_valprint (void);
79 static void cp_print_static_field (struct type *, struct value *,
80 struct ui_file *, int,
81 const struct value_print_options *);
83 static void cp_print_value (struct type *, struct type *,
84 const gdb_byte *, int,
85 CORE_ADDR, struct ui_file *,
86 int, const struct value *,
87 const struct value_print_options *,
91 /* GCC versions after 2.4.5 use this. */
92 const char vtbl_ptr_name[] = "__vtbl_ptr_type";
94 /* Return truth value for assertion that TYPE is of the type
95 "pointer to virtual function". */
98 cp_is_vtbl_ptr_type (struct type *type)
100 const char *typename = type_name_no_tag (type);
102 return (typename != NULL && !strcmp (typename, vtbl_ptr_name));
105 /* Return truth value for the assertion that TYPE is of the type
106 "pointer to virtual function table". */
109 cp_is_vtbl_member (struct type *type)
111 /* With older versions of g++, the vtbl field pointed to an array of
112 structures. Nowadays it points directly to the structure. */
113 if (TYPE_CODE (type) == TYPE_CODE_PTR)
115 type = TYPE_TARGET_TYPE (type);
116 if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
118 type = TYPE_TARGET_TYPE (type);
119 if (TYPE_CODE (type) == TYPE_CODE_STRUCT /* if not using thunks */
120 || TYPE_CODE (type) == TYPE_CODE_PTR) /* if using thunks */
122 /* Virtual functions tables are full of pointers
123 to virtual functions. */
124 return cp_is_vtbl_ptr_type (type);
127 else if (TYPE_CODE (type) == TYPE_CODE_STRUCT) /* if not using thunks */
129 return cp_is_vtbl_ptr_type (type);
131 else if (TYPE_CODE (type) == TYPE_CODE_PTR) /* if using thunks */
133 /* The type name of the thunk pointer is NULL when using
134 dwarf2. We could test for a pointer to a function, but
135 there is no type info for the virtual table either, so it
137 return cp_is_vtbl_ptr_type (type);
143 /* Mutually recursive subroutines of cp_print_value and c_val_print to
144 print out a structure's fields: cp_print_value_fields and
147 TYPE, VALADDR, ADDRESS, STREAM, RECURSE, and OPTIONS have the same
148 meanings as in cp_print_value and c_val_print.
150 2nd argument REAL_TYPE is used to carry over the type of the
151 derived class across the recursion to base classes.
153 DONT_PRINT is an array of baseclass types that we should not print,
154 or zero if called from top level. */
157 cp_print_value_fields (struct type *type, struct type *real_type,
158 const gdb_byte *valaddr, int offset,
159 CORE_ADDR address, struct ui_file *stream,
160 int recurse, const struct value *val,
161 const struct value_print_options *options,
162 struct type **dont_print_vb,
163 int dont_print_statmem)
165 int i, len, n_baseclasses;
167 static int last_set_recurse = -1;
169 CHECK_TYPEDEF (type);
173 /* Any object can be left on obstacks only during an unexpected
176 if (obstack_object_size (&dont_print_statmem_obstack) > 0)
178 obstack_free (&dont_print_statmem_obstack, NULL);
179 obstack_begin (&dont_print_statmem_obstack,
180 32 * sizeof (CORE_ADDR));
182 if (obstack_object_size (&dont_print_stat_array_obstack) > 0)
184 obstack_free (&dont_print_stat_array_obstack, NULL);
185 obstack_begin (&dont_print_stat_array_obstack,
186 32 * sizeof (struct type *));
190 fprintf_filtered (stream, "{");
191 len = TYPE_NFIELDS (type);
192 n_baseclasses = TYPE_N_BASECLASSES (type);
194 /* First, print out baseclasses such that we don't print
195 duplicates of virtual baseclasses. */
197 if (n_baseclasses > 0)
198 cp_print_value (type, real_type, valaddr,
199 offset, address, stream,
200 recurse + 1, val, options,
203 /* Second, print out data fields */
205 /* If there are no data fields, skip this part */
206 if (len == n_baseclasses || !len)
207 fprintf_filtered (stream, "<No data fields>");
210 size_t statmem_obstack_initial_size = 0;
211 size_t stat_array_obstack_initial_size = 0;
212 struct type *vptr_basetype = NULL;
215 if (dont_print_statmem == 0)
217 statmem_obstack_initial_size =
218 obstack_object_size (&dont_print_statmem_obstack);
220 if (last_set_recurse != recurse)
222 stat_array_obstack_initial_size =
223 obstack_object_size (&dont_print_stat_array_obstack);
225 last_set_recurse = recurse;
229 vptr_fieldno = get_vptr_fieldno (type, &vptr_basetype);
230 for (i = n_baseclasses; i < len; i++)
232 /* If requested, skip printing of static fields. */
233 if (!options->static_field_print
234 && field_is_static (&TYPE_FIELD (type, i)))
238 fprintf_filtered (stream, ", ");
239 else if (n_baseclasses > 0)
241 if (options->prettyformat)
243 fprintf_filtered (stream, "\n");
244 print_spaces_filtered (2 + 2 * recurse, stream);
245 fputs_filtered ("members of ", stream);
246 fputs_filtered (type_name_no_tag (type), stream);
247 fputs_filtered (": ", stream);
252 if (options->prettyformat)
254 fprintf_filtered (stream, "\n");
255 print_spaces_filtered (2 + 2 * recurse, stream);
259 wrap_here (n_spaces (2 + 2 * recurse));
262 annotate_field_begin (TYPE_FIELD_TYPE (type, i));
264 if (field_is_static (&TYPE_FIELD (type, i)))
265 fputs_filtered ("static ", stream);
266 fprintf_symbol_filtered (stream,
267 TYPE_FIELD_NAME (type, i),
268 current_language->la_language,
269 DMGL_PARAMS | DMGL_ANSI);
270 annotate_field_name_end ();
271 /* Do not print leading '=' in case of anonymous
273 if (strcmp (TYPE_FIELD_NAME (type, i), ""))
274 fputs_filtered (" = ", stream);
275 annotate_field_value ();
277 if (!field_is_static (&TYPE_FIELD (type, i))
278 && TYPE_FIELD_PACKED (type, i))
282 /* Bitfields require special handling, especially due to
283 byte order problems. */
284 if (TYPE_FIELD_IGNORE (type, i))
286 fputs_filtered ("<optimized out or zero length>", stream);
288 else if (value_bits_synthetic_pointer (val,
289 TYPE_FIELD_BITPOS (type,
291 TYPE_FIELD_BITSIZE (type,
294 fputs_filtered (_("<synthetic pointer>"), stream);
298 struct value_print_options opts = *options;
302 v = value_field_bitfield (type, i, valaddr, offset, val);
304 common_val_print (v, stream, recurse + 1, &opts,
310 if (TYPE_FIELD_IGNORE (type, i))
312 fputs_filtered ("<optimized out or zero length>",
315 else if (field_is_static (&TYPE_FIELD (type, i)))
317 volatile struct gdb_exception ex;
318 struct value *v = NULL;
320 TRY_CATCH (ex, RETURN_MASK_ERROR)
322 v = value_static_field (type, i);
326 fprintf_filtered (stream,
327 _("<error reading variable: %s>"),
329 cp_print_static_field (TYPE_FIELD_TYPE (type, i),
330 v, stream, recurse + 1,
333 else if (i == vptr_fieldno && type == vptr_basetype)
335 int i_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
336 struct type *i_type = TYPE_FIELD_TYPE (type, i);
338 if (valprint_check_validity (stream, i_type, i_offset, val))
342 addr = extract_typed_address (valaddr + i_offset, i_type);
343 print_function_pointer_address (options,
344 get_type_arch (type),
350 struct value_print_options opts = *options;
353 val_print (TYPE_FIELD_TYPE (type, i),
355 offset + TYPE_FIELD_BITPOS (type, i) / 8,
357 stream, recurse + 1, val, &opts,
361 annotate_field_end ();
364 if (dont_print_statmem == 0)
366 size_t obstack_final_size =
367 obstack_object_size (&dont_print_statmem_obstack);
369 if (obstack_final_size > statmem_obstack_initial_size)
371 /* In effect, a pop of the printed-statics stack. */
374 obstack_next_free (&dont_print_statmem_obstack) -
375 (obstack_final_size - statmem_obstack_initial_size);
377 obstack_free (&dont_print_statmem_obstack,
381 if (last_set_recurse != recurse)
383 size_t obstack_final_size =
384 obstack_object_size (&dont_print_stat_array_obstack);
386 if (obstack_final_size > stat_array_obstack_initial_size)
389 obstack_next_free (&dont_print_stat_array_obstack)
390 - (obstack_final_size
391 - stat_array_obstack_initial_size);
393 obstack_free (&dont_print_stat_array_obstack,
396 last_set_recurse = -1;
400 if (options->prettyformat)
402 fprintf_filtered (stream, "\n");
403 print_spaces_filtered (2 * recurse, stream);
405 } /* if there are data fields */
407 fprintf_filtered (stream, "}");
410 /* Like cp_print_value_fields, but find the runtime type of the object
411 and pass it as the `real_type' argument to cp_print_value_fields.
412 This function is a hack to work around the fact that
413 common_val_print passes the embedded offset to val_print, but not
414 the enclosing type. */
417 cp_print_value_fields_rtti (struct type *type,
418 const gdb_byte *valaddr, int offset,
420 struct ui_file *stream, int recurse,
421 const struct value *val,
422 const struct value_print_options *options,
423 struct type **dont_print_vb,
424 int dont_print_statmem)
426 struct type *real_type = NULL;
428 /* We require all bits to be valid in order to attempt a
430 if (!value_bits_any_optimized_out (val,
431 TARGET_CHAR_BIT * offset,
432 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
435 int full, top, using_enc;
437 /* Ugh, we have to convert back to a value here. */
438 value = value_from_contents_and_address (type, valaddr + offset,
440 type = value_type (value);
441 /* We don't actually care about most of the result here -- just
442 the type. We already have the correct offset, due to how
443 val_print was initially called. */
444 real_type = value_rtti_type (value, &full, &top, &using_enc);
450 cp_print_value_fields (type, real_type, valaddr, offset,
451 address, stream, recurse, val, options,
452 dont_print_vb, dont_print_statmem);
455 /* Special val_print routine to avoid printing multiple copies of
456 virtual baseclasses. */
459 cp_print_value (struct type *type, struct type *real_type,
460 const gdb_byte *valaddr, int offset,
461 CORE_ADDR address, struct ui_file *stream,
462 int recurse, const struct value *val,
463 const struct value_print_options *options,
464 struct type **dont_print_vb)
466 struct type **last_dont_print
467 = (struct type **) obstack_next_free (&dont_print_vb_obstack);
468 struct obstack tmp_obstack = dont_print_vb_obstack;
469 int i, n_baseclasses = TYPE_N_BASECLASSES (type);
471 struct type *thistype;
473 if (dont_print_vb == 0)
475 /* If we're at top level, carve out a completely fresh chunk of
476 the obstack and use that until this particular invocation
478 /* Bump up the high-water mark. Now alpha is omega. */
479 obstack_finish (&dont_print_vb_obstack);
482 for (i = 0; i < n_baseclasses; i++)
486 struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
487 const char *basename = TYPE_NAME (baseclass);
488 const gdb_byte *base_valaddr = NULL;
489 const struct value *base_val = NULL;
490 volatile struct gdb_exception ex;
492 if (BASETYPE_VIA_VIRTUAL (type, i))
494 struct type **first_dont_print
495 = (struct type **) obstack_base (&dont_print_vb_obstack);
497 int j = (struct type **)
498 obstack_next_free (&dont_print_vb_obstack) - first_dont_print;
501 if (baseclass == first_dont_print[j])
504 obstack_ptr_grow (&dont_print_vb_obstack, baseclass);
508 thistype = real_type;
510 TRY_CATCH (ex, RETURN_MASK_ERROR)
512 boffset = baseclass_offset (type, i, valaddr, offset, address, val);
514 if (ex.reason < 0 && ex.error == NOT_AVAILABLE_ERROR)
516 else if (ex.reason < 0)
522 if (BASETYPE_VIA_VIRTUAL (type, i))
524 /* The virtual base class pointer might have been
525 clobbered by the user program. Make sure that it
526 still points to a valid memory location. */
528 if ((boffset + offset) < 0
529 || (boffset + offset) >= TYPE_LENGTH (real_type))
532 struct cleanup *back_to;
534 buf = xmalloc (TYPE_LENGTH (baseclass));
535 back_to = make_cleanup (xfree, buf);
537 if (target_read_memory (address + boffset, buf,
538 TYPE_LENGTH (baseclass)) != 0)
540 base_val = value_from_contents_and_address (baseclass,
543 baseclass = value_type (base_val);
546 thistype = baseclass;
547 base_valaddr = value_contents_for_printing_const (base_val);
548 do_cleanups (back_to);
552 base_valaddr = valaddr;
558 base_valaddr = valaddr;
563 /* Now do the printing. */
564 if (options->prettyformat)
566 fprintf_filtered (stream, "\n");
567 print_spaces_filtered (2 * recurse, stream);
569 fputs_filtered ("<", stream);
570 /* Not sure what the best notation is in the case where there is
571 no baseclass name. */
572 fputs_filtered (basename ? basename : "", stream);
573 fputs_filtered ("> = ", stream);
576 val_print_unavailable (stream);
578 val_print_invalid_address (stream);
583 /* Attempt to run an extension language pretty-printer on the
584 baseclass if possible. */
587 = apply_ext_lang_val_pretty_printer (baseclass, base_valaddr,
588 thisoffset + boffset,
589 value_address (base_val),
595 cp_print_value_fields (baseclass, thistype, base_valaddr,
596 thisoffset + boffset,
597 value_address (base_val),
598 stream, recurse, base_val, options,
600 obstack_base (&dont_print_vb_obstack)),
603 fputs_filtered (", ", stream);
609 if (dont_print_vb == 0)
611 /* Free the space used to deal with the printing
612 of this type from top level. */
613 obstack_free (&dont_print_vb_obstack, last_dont_print);
614 /* Reset watermark so that we can continue protecting
615 ourselves from whatever we were protecting ourselves. */
616 dont_print_vb_obstack = tmp_obstack;
620 /* Print value of a static member. To avoid infinite recursion when
621 printing a class that contains a static instance of the class, we
622 keep the addresses of all printed static member classes in an
623 obstack and refuse to print them more than once.
625 VAL contains the value to print, TYPE, STREAM, RECURSE, and OPTIONS
626 have the same meanings as in c_val_print. */
629 cp_print_static_field (struct type *type,
631 struct ui_file *stream,
633 const struct value_print_options *options)
635 struct value_print_options opts;
637 if (value_entirely_optimized_out (val))
639 val_print_optimized_out (val, stream);
643 if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
645 CORE_ADDR *first_dont_print;
650 = (CORE_ADDR *) obstack_base (&dont_print_statmem_obstack);
651 i = obstack_object_size (&dont_print_statmem_obstack)
652 / sizeof (CORE_ADDR);
656 if (value_address (val) == first_dont_print[i])
658 fputs_filtered ("<same as static member of an already"
665 addr = value_address (val);
666 obstack_grow (&dont_print_statmem_obstack, (char *) &addr,
668 CHECK_TYPEDEF (type);
669 cp_print_value_fields (type, value_enclosing_type (val),
670 value_contents_for_printing (val),
671 value_embedded_offset (val), addr,
672 stream, recurse, val,
677 if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
679 struct type **first_dont_print;
681 struct type *target_type = TYPE_TARGET_TYPE (type);
684 = (struct type **) obstack_base (&dont_print_stat_array_obstack);
685 i = obstack_object_size (&dont_print_stat_array_obstack)
686 / sizeof (struct type *);
690 if (target_type == first_dont_print[i])
692 fputs_filtered ("<same as static member of an already"
699 obstack_grow (&dont_print_stat_array_obstack,
700 (char *) &target_type,
701 sizeof (struct type *));
706 val_print (type, value_contents_for_printing (val),
707 value_embedded_offset (val),
709 stream, recurse, val,
710 &opts, current_language);
714 /* Find the field in *DOMAIN, or its non-virtual base classes, with
715 bit offset OFFSET. Set *DOMAIN to the containing type and *FIELDNO
716 to the containing field number. If OFFSET is not exactly at the
717 start of some field, set *DOMAIN to NULL. */
720 cp_find_class_member (struct type **domain_p, int *fieldno,
727 *domain_p = check_typedef (*domain_p);
729 len = TYPE_NFIELDS (domain);
731 for (i = TYPE_N_BASECLASSES (domain); i < len; i++)
733 LONGEST bitpos = TYPE_FIELD_BITPOS (domain, i);
736 if (offset == bitpos)
743 for (i = 0; i < TYPE_N_BASECLASSES (domain); i++)
745 LONGEST bitpos = TYPE_FIELD_BITPOS (domain, i);
746 LONGEST bitsize = 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (domain, i));
748 if (offset >= bitpos && offset < bitpos + bitsize)
750 *domain_p = TYPE_FIELD_TYPE (domain, i);
751 cp_find_class_member (domain_p, fieldno, offset - bitpos);
760 cp_print_class_member (const gdb_byte *valaddr, struct type *type,
761 struct ui_file *stream, char *prefix)
763 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
765 /* VAL is a byte offset into the structure type DOMAIN.
766 Find the name of the field for that offset and
768 struct type *domain = TYPE_DOMAIN_TYPE (type);
772 val = extract_signed_integer (valaddr,
776 /* Pointers to data members are usually byte offsets into an object.
777 Because a data member can have offset zero, and a NULL pointer to
778 member must be distinct from any valid non-NULL pointer to
779 member, either the value is biased or the NULL value has a
780 special representation; both are permitted by ISO C++. HP aCC
781 used a bias of 0x20000000; HP cfront used a bias of 1; g++ 3.x
782 and other compilers which use the Itanium ABI use -1 as the NULL
783 value. GDB only supports that last form; to add support for
784 another form, make this into a cp-abi hook. */
788 fprintf_filtered (stream, "NULL");
792 cp_find_class_member (&domain, &fieldno, val << 3);
798 fputs_filtered (prefix, stream);
799 name = type_name_no_tag (domain);
801 fputs_filtered (name, stream);
803 c_type_print_base (domain, stream, 0, 0, &type_print_raw_options);
804 fprintf_filtered (stream, "::");
805 fputs_filtered (TYPE_FIELD_NAME (domain, fieldno), stream);
808 fprintf_filtered (stream, "%ld", (long) val);
813 _initialize_cp_valprint (void)
815 add_setshow_boolean_cmd ("static-members", class_support,
816 &user_print_options.static_field_print, _("\
817 Set printing of C++ static members."), _("\
818 Show printing of C++ static members."), NULL,
820 show_static_field_print,
821 &setprintlist, &showprintlist);
823 add_setshow_boolean_cmd ("vtbl", class_support,
824 &user_print_options.vtblprint, _("\
825 Set printing of C++ virtual function tables."), _("\
826 Show printing of C++ virtual function tables."), NULL,
829 &setprintlist, &showprintlist);
831 add_setshow_boolean_cmd ("object", class_support,
832 &user_print_options.objectprint, _("\
833 Set printing of object's derived type based on vtable info."), _("\
834 Show printing of object's derived type based on vtable info."), NULL,
837 &setprintlist, &showprintlist);
839 obstack_begin (&dont_print_stat_array_obstack,
840 32 * sizeof (struct type *));
841 obstack_begin (&dont_print_statmem_obstack,
842 32 * sizeof (CORE_ADDR));
843 obstack_begin (&dont_print_vb_obstack,
844 32 * sizeof (struct type *));