1 /* Support for printing C++ values for GDB, the GNU debugger.
3 Copyright (C) 1986, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
4 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010, 2011
5 Free Software Foundation, Inc.
7 This file is part of GDB.
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
23 #include "gdb_obstack.h"
26 #include "expression.h"
32 #include "gdb_string.h"
37 #include "cp-support.h"
39 #include "python/python.h"
40 #include "exceptions.h"
42 /* Controls printing of vtbl's. */
44 show_vtblprint (struct ui_file *file, int from_tty,
45 struct cmd_list_element *c, const char *value)
47 fprintf_filtered (file, _("\
48 Printing of C++ virtual function tables is %s.\n"),
52 /* Controls looking up an object's derived type using what we find in
55 show_objectprint (struct ui_file *file, int from_tty,
56 struct cmd_list_element *c,
59 fprintf_filtered (file, _("\
60 Printing of object's derived type based on vtable info is %s.\n"),
65 show_static_field_print (struct ui_file *file, int from_tty,
66 struct cmd_list_element *c,
69 fprintf_filtered (file,
70 _("Printing of C++ static members is %s.\n"),
75 static struct obstack dont_print_vb_obstack;
76 static struct obstack dont_print_statmem_obstack;
77 static struct obstack dont_print_stat_array_obstack;
79 extern void _initialize_cp_valprint (void);
81 static void cp_print_static_field (struct type *, struct value *,
82 struct ui_file *, int,
83 const struct value_print_options *);
85 static void cp_print_value (struct type *, struct type *,
86 const gdb_byte *, int,
87 CORE_ADDR, struct ui_file *,
88 int, const struct value *,
89 const struct value_print_options *,
93 /* GCC versions after 2.4.5 use this. */
94 const char vtbl_ptr_name[] = "__vtbl_ptr_type";
96 /* Return truth value for assertion that TYPE is of the type
97 "pointer to virtual function". */
100 cp_is_vtbl_ptr_type (struct type *type)
102 char *typename = type_name_no_tag (type);
104 return (typename != NULL && !strcmp (typename, vtbl_ptr_name));
107 /* Return truth value for the assertion that TYPE is of the type
108 "pointer to virtual function table". */
111 cp_is_vtbl_member (struct type *type)
113 /* With older versions of g++, the vtbl field pointed to an array of
114 structures. Nowadays it points directly to the structure. */
115 if (TYPE_CODE (type) == TYPE_CODE_PTR)
117 type = TYPE_TARGET_TYPE (type);
118 if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
120 type = TYPE_TARGET_TYPE (type);
121 if (TYPE_CODE (type) == TYPE_CODE_STRUCT /* if not using thunks */
122 || TYPE_CODE (type) == TYPE_CODE_PTR) /* if using thunks */
124 /* Virtual functions tables are full of pointers
125 to virtual functions. */
126 return cp_is_vtbl_ptr_type (type);
129 else if (TYPE_CODE (type) == TYPE_CODE_STRUCT) /* if not using thunks */
131 return cp_is_vtbl_ptr_type (type);
133 else if (TYPE_CODE (type) == TYPE_CODE_PTR) /* if using thunks */
135 /* The type name of the thunk pointer is NULL when using
136 dwarf2. We could test for a pointer to a function, but
137 there is no type info for the virtual table either, so it
139 return cp_is_vtbl_ptr_type (type);
145 /* Mutually recursive subroutines of cp_print_value and c_val_print to
146 print out a structure's fields: cp_print_value_fields and
149 TYPE, VALADDR, ADDRESS, STREAM, RECURSE, and OPTIONS have the same
150 meanings as in cp_print_value and c_val_print.
152 2nd argument REAL_TYPE is used to carry over the type of the
153 derived class across the recursion to base classes.
155 DONT_PRINT is an array of baseclass types that we should not print,
156 or zero if called from top level. */
159 cp_print_value_fields (struct type *type, struct type *real_type,
160 const gdb_byte *valaddr, int offset,
161 CORE_ADDR address, struct ui_file *stream,
162 int recurse, const struct value *val,
163 const struct value_print_options *options,
164 struct type **dont_print_vb,
165 int dont_print_statmem)
167 int i, len, n_baseclasses;
169 static int last_set_recurse = -1;
171 CHECK_TYPEDEF (type);
175 /* Any object can be left on obstacks only during an unexpected
178 if (obstack_object_size (&dont_print_statmem_obstack) > 0)
180 obstack_free (&dont_print_statmem_obstack, NULL);
181 obstack_begin (&dont_print_statmem_obstack,
182 32 * sizeof (CORE_ADDR));
184 if (obstack_object_size (&dont_print_stat_array_obstack) > 0)
186 obstack_free (&dont_print_stat_array_obstack, NULL);
187 obstack_begin (&dont_print_stat_array_obstack,
188 32 * sizeof (struct type *));
192 fprintf_filtered (stream, "{");
193 len = TYPE_NFIELDS (type);
194 n_baseclasses = TYPE_N_BASECLASSES (type);
196 /* First, print out baseclasses such that we don't print
197 duplicates of virtual baseclasses. */
199 if (n_baseclasses > 0)
200 cp_print_value (type, real_type, valaddr,
201 offset, address, stream,
202 recurse + 1, val, options,
205 /* Second, print out data fields */
207 /* If there are no data fields, skip this part */
208 if (len == n_baseclasses || !len)
209 fprintf_filtered (stream, "<No data fields>");
212 int statmem_obstack_initial_size = 0;
213 int stat_array_obstack_initial_size = 0;
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 for (i = n_baseclasses; i < len; i++)
231 /* If requested, skip printing of static fields. */
232 if (!options->static_field_print
233 && field_is_static (&TYPE_FIELD (type, i)))
237 fprintf_filtered (stream, ", ");
238 else if (n_baseclasses > 0)
242 fprintf_filtered (stream, "\n");
243 print_spaces_filtered (2 + 2 * recurse, stream);
244 fputs_filtered ("members of ", stream);
245 fputs_filtered (type_name_no_tag (type), stream);
246 fputs_filtered (": ", stream);
253 fprintf_filtered (stream, "\n");
254 print_spaces_filtered (2 + 2 * recurse, stream);
258 wrap_here (n_spaces (2 + 2 * recurse));
260 if (options->inspect_it)
262 if (TYPE_CODE (TYPE_FIELD_TYPE (type, i)) == TYPE_CODE_PTR)
263 fputs_filtered ("\"( ptr \"", stream);
265 fputs_filtered ("\"( nodef \"", stream);
266 if (field_is_static (&TYPE_FIELD (type, i)))
267 fputs_filtered ("static ", stream);
268 fprintf_symbol_filtered (stream,
269 TYPE_FIELD_NAME (type, i),
270 current_language->la_language,
271 DMGL_PARAMS | DMGL_ANSI);
272 fputs_filtered ("\" \"", stream);
273 fprintf_symbol_filtered (stream,
274 TYPE_FIELD_NAME (type, i),
275 current_language->la_language,
276 DMGL_PARAMS | DMGL_ANSI);
277 fputs_filtered ("\") \"", stream);
281 annotate_field_begin (TYPE_FIELD_TYPE (type, i));
283 if (field_is_static (&TYPE_FIELD (type, i)))
284 fputs_filtered ("static ", stream);
285 fprintf_symbol_filtered (stream,
286 TYPE_FIELD_NAME (type, i),
287 current_language->la_language,
288 DMGL_PARAMS | DMGL_ANSI);
289 annotate_field_name_end ();
290 /* Do not print leading '=' in case of anonymous
292 if (strcmp (TYPE_FIELD_NAME (type, i), ""))
293 fputs_filtered (" = ", stream);
294 annotate_field_value ();
297 if (!field_is_static (&TYPE_FIELD (type, i))
298 && TYPE_FIELD_PACKED (type, i))
302 /* Bitfields require special handling, especially due to
303 byte order problems. */
304 if (TYPE_FIELD_IGNORE (type, i))
306 fputs_filtered ("<optimized out or zero length>", stream);
308 else if (value_bits_synthetic_pointer (val,
309 TYPE_FIELD_BITPOS (type,
311 TYPE_FIELD_BITSIZE (type,
314 fputs_filtered (_("<synthetic pointer>"), stream);
316 else if (!value_bits_valid (val,
317 TYPE_FIELD_BITPOS (type, i),
318 TYPE_FIELD_BITSIZE (type, i)))
320 val_print_optimized_out (stream);
324 struct value_print_options opts = *options;
328 v = value_field_bitfield (type, i, valaddr, offset, val);
330 common_val_print (v, stream, recurse + 1, &opts,
336 if (TYPE_FIELD_IGNORE (type, i))
338 fputs_filtered ("<optimized out or zero length>",
341 else if (field_is_static (&TYPE_FIELD (type, i)))
343 volatile struct gdb_exception ex;
344 struct value *v = NULL;
346 TRY_CATCH (ex, RETURN_MASK_ERROR)
348 v = value_static_field (type, i);
352 fprintf_filtered (stream,
353 _("<error reading variable: %s>"),
356 val_print_optimized_out (stream);
358 cp_print_static_field (TYPE_FIELD_TYPE (type, i),
359 v, stream, recurse + 1,
364 struct value_print_options opts = *options;
367 val_print (TYPE_FIELD_TYPE (type, i),
369 offset + TYPE_FIELD_BITPOS (type, i) / 8,
371 stream, recurse + 1, val, &opts,
375 annotate_field_end ();
378 if (dont_print_statmem == 0)
380 int obstack_final_size =
381 obstack_object_size (&dont_print_statmem_obstack);
383 if (obstack_final_size > statmem_obstack_initial_size)
385 /* In effect, a pop of the printed-statics stack. */
388 obstack_next_free (&dont_print_statmem_obstack) -
389 (obstack_final_size - statmem_obstack_initial_size);
391 obstack_free (&dont_print_statmem_obstack,
395 if (last_set_recurse != recurse)
397 int obstack_final_size =
398 obstack_object_size (&dont_print_stat_array_obstack);
400 if (obstack_final_size > stat_array_obstack_initial_size)
403 obstack_next_free (&dont_print_stat_array_obstack)
404 - (obstack_final_size
405 - stat_array_obstack_initial_size);
407 obstack_free (&dont_print_stat_array_obstack,
410 last_set_recurse = -1;
416 fprintf_filtered (stream, "\n");
417 print_spaces_filtered (2 * recurse, stream);
419 } /* if there are data fields */
421 fprintf_filtered (stream, "}");
424 /* Like cp_print_value_fields, but find the runtime type of the object
425 and pass it as the `real_type' argument to cp_print_value_fields.
426 This function is a hack to work around the fact that
427 common_val_print passes the embedded offset to val_print, but not
428 the enclosing type. */
431 cp_print_value_fields_rtti (struct type *type,
432 const gdb_byte *valaddr, int offset,
434 struct ui_file *stream, int recurse,
435 const struct value *val,
436 const struct value_print_options *options,
437 struct type **dont_print_vb,
438 int dont_print_statmem)
440 struct type *real_type = NULL;
442 /* We require all bits to be valid in order to attempt a
444 if (value_bits_valid (val, TARGET_CHAR_BIT * offset,
445 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
448 int full, top, using_enc;
450 /* Ugh, we have to convert back to a value here. */
451 value = value_from_contents_and_address (type, valaddr + offset,
453 /* We don't actually care about most of the result here -- just
454 the type. We already have the correct offset, due to how
455 val_print was initially called. */
456 real_type = value_rtti_type (value, &full, &top, &using_enc);
462 cp_print_value_fields (type, real_type, valaddr, offset,
463 address, stream, recurse, val, options,
464 dont_print_vb, dont_print_statmem);
467 /* Special val_print routine to avoid printing multiple copies of
468 virtual baseclasses. */
471 cp_print_value (struct type *type, struct type *real_type,
472 const gdb_byte *valaddr, int offset,
473 CORE_ADDR address, struct ui_file *stream,
474 int recurse, const struct value *val,
475 const struct value_print_options *options,
476 struct type **dont_print_vb)
478 struct type **last_dont_print
479 = (struct type **) obstack_next_free (&dont_print_vb_obstack);
480 struct obstack tmp_obstack = dont_print_vb_obstack;
481 int i, n_baseclasses = TYPE_N_BASECLASSES (type);
483 struct type *thistype;
485 if (dont_print_vb == 0)
487 /* If we're at top level, carve out a completely fresh chunk of
488 the obstack and use that until this particular invocation
490 /* Bump up the high-water mark. Now alpha is omega. */
491 obstack_finish (&dont_print_vb_obstack);
494 for (i = 0; i < n_baseclasses; i++)
498 struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
499 char *basename = TYPE_NAME (baseclass);
500 const gdb_byte *base_valaddr = NULL;
501 const struct value *base_val = NULL;
502 volatile struct gdb_exception ex;
504 if (BASETYPE_VIA_VIRTUAL (type, i))
506 struct type **first_dont_print
507 = (struct type **) obstack_base (&dont_print_vb_obstack);
509 int j = (struct type **)
510 obstack_next_free (&dont_print_vb_obstack) - first_dont_print;
513 if (baseclass == first_dont_print[j])
516 obstack_ptr_grow (&dont_print_vb_obstack, baseclass);
520 thistype = real_type;
522 TRY_CATCH (ex, RETURN_MASK_ERROR)
524 boffset = baseclass_offset (type, i, valaddr, offset, address, val);
526 if (ex.reason < 0 && ex.error == NOT_AVAILABLE_ERROR)
528 else if (ex.reason < 0)
534 if (BASETYPE_VIA_VIRTUAL (type, i))
536 /* The virtual base class pointer might have been
537 clobbered by the user program. Make sure that it
538 still points to a valid memory location. */
540 if ((boffset + offset) < 0
541 || (boffset + offset) >= TYPE_LENGTH (real_type))
543 /* FIXME (alloca): unsafe if baseclass is really
545 gdb_byte *buf = alloca (TYPE_LENGTH (baseclass));
547 if (target_read_memory (address + boffset, buf,
548 TYPE_LENGTH (baseclass)) != 0)
550 base_val = value_from_contents_and_address (baseclass,
555 thistype = baseclass;
556 base_valaddr = value_contents_for_printing_const (base_val);
560 base_valaddr = valaddr;
566 base_valaddr = valaddr;
571 /* Now do the printing. */
574 fprintf_filtered (stream, "\n");
575 print_spaces_filtered (2 * recurse, stream);
577 fputs_filtered ("<", stream);
578 /* Not sure what the best notation is in the case where there is
579 no baseclass name. */
580 fputs_filtered (basename ? basename : "", stream);
581 fputs_filtered ("> = ", stream);
584 val_print_unavailable (stream);
586 val_print_invalid_address (stream);
591 /* Attempt to run the Python pretty-printers on the
592 baseclass if possible. */
594 result = apply_val_pretty_printer (baseclass, base_valaddr,
595 thisoffset + boffset,
596 value_address (base_val),
597 stream, recurse, base_val,
598 options, current_language);
603 cp_print_value_fields (baseclass, thistype, base_valaddr,
604 thisoffset + boffset,
605 value_address (base_val),
606 stream, recurse, base_val, options,
608 obstack_base (&dont_print_vb_obstack)),
611 fputs_filtered (", ", stream);
617 if (dont_print_vb == 0)
619 /* Free the space used to deal with the printing
620 of this type from top level. */
621 obstack_free (&dont_print_vb_obstack, last_dont_print);
622 /* Reset watermark so that we can continue protecting
623 ourselves from whatever we were protecting ourselves. */
624 dont_print_vb_obstack = tmp_obstack;
628 /* Print value of a static member. To avoid infinite recursion when
629 printing a class that contains a static instance of the class, we
630 keep the addresses of all printed static member classes in an
631 obstack and refuse to print them more than once.
633 VAL contains the value to print, TYPE, STREAM, RECURSE, and OPTIONS
634 have the same meanings as in c_val_print. */
637 cp_print_static_field (struct type *type,
639 struct ui_file *stream,
641 const struct value_print_options *options)
643 struct value_print_options opts;
645 if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
647 CORE_ADDR *first_dont_print;
652 = (CORE_ADDR *) obstack_base (&dont_print_statmem_obstack);
653 i = obstack_object_size (&dont_print_statmem_obstack)
654 / sizeof (CORE_ADDR);
658 if (value_address (val) == first_dont_print[i])
660 fputs_filtered ("<same as static member of an already"
667 addr = value_address (val);
668 obstack_grow (&dont_print_statmem_obstack, (char *) &addr,
670 CHECK_TYPEDEF (type);
671 cp_print_value_fields (type, value_enclosing_type (val),
672 value_contents_for_printing (val),
673 value_embedded_offset (val), addr,
674 stream, recurse, val,
679 if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
681 struct type **first_dont_print;
683 struct type *target_type = TYPE_TARGET_TYPE (type);
686 = (struct type **) obstack_base (&dont_print_stat_array_obstack);
687 i = obstack_object_size (&dont_print_stat_array_obstack)
688 / sizeof (struct type *);
692 if (target_type == first_dont_print[i])
694 fputs_filtered ("<same as static member of an already"
701 obstack_grow (&dont_print_stat_array_obstack,
702 (char *) &target_type,
703 sizeof (struct type *));
708 val_print (type, value_contents_for_printing (val),
709 value_embedded_offset (val),
711 stream, recurse, val,
712 &opts, current_language);
716 /* Find the field in *DOMAIN, or its non-virtual base classes, with
717 bit offset OFFSET. Set *DOMAIN to the containing type and *FIELDNO
718 to the containing field number. If OFFSET is not exactly at the
719 start of some field, set *DOMAIN to NULL. */
722 cp_find_class_member (struct type **domain_p, int *fieldno,
729 *domain_p = check_typedef (*domain_p);
731 len = TYPE_NFIELDS (domain);
733 for (i = TYPE_N_BASECLASSES (domain); i < len; i++)
735 LONGEST bitpos = TYPE_FIELD_BITPOS (domain, i);
738 if (offset == bitpos)
745 for (i = 0; i < TYPE_N_BASECLASSES (domain); i++)
747 LONGEST bitpos = TYPE_FIELD_BITPOS (domain, i);
748 LONGEST bitsize = 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (domain, i));
750 if (offset >= bitpos && offset < bitpos + bitsize)
752 *domain_p = TYPE_FIELD_TYPE (domain, i);
753 cp_find_class_member (domain_p, fieldno, offset - bitpos);
762 cp_print_class_member (const gdb_byte *valaddr, struct type *type,
763 struct ui_file *stream, char *prefix)
765 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
767 /* VAL is a byte offset into the structure type DOMAIN.
768 Find the name of the field for that offset and
770 struct type *domain = TYPE_DOMAIN_TYPE (type);
772 unsigned int fieldno;
774 val = extract_signed_integer (valaddr,
778 /* Pointers to data members are usually byte offsets into an object.
779 Because a data member can have offset zero, and a NULL pointer to
780 member must be distinct from any valid non-NULL pointer to
781 member, either the value is biased or the NULL value has a
782 special representation; both are permitted by ISO C++. HP aCC
783 used a bias of 0x20000000; HP cfront used a bias of 1; g++ 3.x
784 and other compilers which use the Itanium ABI use -1 as the NULL
785 value. GDB only supports that last form; to add support for
786 another form, make this into a cp-abi hook. */
790 fprintf_filtered (stream, "NULL");
794 cp_find_class_member (&domain, &fieldno, val << 3);
800 fputs_filtered (prefix, stream);
801 name = type_name_no_tag (domain);
803 fputs_filtered (name, stream);
805 c_type_print_base (domain, stream, 0, 0);
806 fprintf_filtered (stream, "::");
807 fputs_filtered (TYPE_FIELD_NAME (domain, fieldno), stream);
810 fprintf_filtered (stream, "%ld", (long) val);
815 _initialize_cp_valprint (void)
817 add_setshow_boolean_cmd ("static-members", class_support,
818 &user_print_options.static_field_print, _("\
819 Set printing of C++ static members."), _("\
820 Show printing of C++ static members."), NULL,
822 show_static_field_print,
823 &setprintlist, &showprintlist);
825 add_setshow_boolean_cmd ("vtbl", class_support,
826 &user_print_options.vtblprint, _("\
827 Set printing of C++ virtual function tables."), _("\
828 Show printing of C++ virtual function tables."), NULL,
831 &setprintlist, &showprintlist);
833 add_setshow_boolean_cmd ("object", class_support,
834 &user_print_options.objectprint, _("\
835 Set printing of object's derived type based on vtable info."), _("\
836 Show printing of object's derived type based on vtable info."), NULL,
839 &setprintlist, &showprintlist);
841 obstack_begin (&dont_print_stat_array_obstack,
842 32 * sizeof (struct type *));
843 obstack_begin (&dont_print_statmem_obstack,
844 32 * sizeof (CORE_ADDR));
845 obstack_begin (&dont_print_vb_obstack,
846 32 * sizeof (struct type *));