gdb
[binutils-gdb.git] / gdb / cp-valprint.c
1 /* Support for printing C++ values for GDB, the GNU debugger.
2
3 Copyright (C) 1986, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
4 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010
5 Free Software Foundation, Inc.
6
7 This file is part of GDB.
8
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.
13
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.
18
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/>. */
21
22 #include "defs.h"
23 #include "gdb_obstack.h"
24 #include "symtab.h"
25 #include "gdbtypes.h"
26 #include "expression.h"
27 #include "value.h"
28 #include "command.h"
29 #include "gdbcmd.h"
30 #include "demangle.h"
31 #include "annotate.h"
32 #include "gdb_string.h"
33 #include "c-lang.h"
34 #include "target.h"
35 #include "cp-abi.h"
36 #include "valprint.h"
37 #include "cp-support.h"
38 #include "language.h"
39 #include "python/python.h"
40
41 /* Controls printing of vtbl's */
42 static void
43 show_vtblprint (struct ui_file *file, int from_tty,
44 struct cmd_list_element *c, const char *value)
45 {
46 fprintf_filtered (file, _("\
47 Printing of C++ virtual function tables is %s.\n"),
48 value);
49 }
50
51 /* Controls looking up an object's derived type using what we find in
52 its vtables. */
53 static void
54 show_objectprint (struct ui_file *file, int from_tty,
55 struct cmd_list_element *c,
56 const char *value)
57 {
58 fprintf_filtered (file, _("\
59 Printing of object's derived type based on vtable info is %s.\n"),
60 value);
61 }
62
63 static void
64 show_static_field_print (struct ui_file *file, int from_tty,
65 struct cmd_list_element *c, const char *value)
66 {
67 fprintf_filtered (file, _("Printing of C++ static members is %s.\n"),
68 value);
69 }
70
71
72 static struct obstack dont_print_vb_obstack;
73 static struct obstack dont_print_statmem_obstack;
74
75 extern void _initialize_cp_valprint (void);
76
77 static void cp_print_static_field (struct type *, struct value *,
78 struct ui_file *, int,
79 const struct value_print_options *);
80
81 static void cp_print_value (struct type *, struct type *, const gdb_byte *,
82 int, CORE_ADDR, struct ui_file *, int,
83 const struct value_print_options *, struct type **);
84
85
86 /* GCC versions after 2.4.5 use this. */
87 const char vtbl_ptr_name[] = "__vtbl_ptr_type";
88
89 /* Return truth value for assertion that TYPE is of the type
90 "pointer to virtual function". */
91
92 int
93 cp_is_vtbl_ptr_type (struct type *type)
94 {
95 char *typename = type_name_no_tag (type);
96
97 return (typename != NULL && !strcmp (typename, vtbl_ptr_name));
98 }
99
100 /* Return truth value for the assertion that TYPE is of the type
101 "pointer to virtual function table". */
102
103 int
104 cp_is_vtbl_member (struct type *type)
105 {
106 /* With older versions of g++, the vtbl field pointed to an array
107 of structures. Nowadays it points directly to the structure. */
108 if (TYPE_CODE (type) == TYPE_CODE_PTR)
109 {
110 type = TYPE_TARGET_TYPE (type);
111 if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
112 {
113 type = TYPE_TARGET_TYPE (type);
114 if (TYPE_CODE (type) == TYPE_CODE_STRUCT /* if not using thunks */
115 || TYPE_CODE (type) == TYPE_CODE_PTR) /* if using thunks */
116 {
117 /* Virtual functions tables are full of pointers
118 to virtual functions. */
119 return cp_is_vtbl_ptr_type (type);
120 }
121 }
122 else if (TYPE_CODE (type) == TYPE_CODE_STRUCT) /* if not using thunks */
123 {
124 return cp_is_vtbl_ptr_type (type);
125 }
126 else if (TYPE_CODE (type) == TYPE_CODE_PTR) /* if using thunks */
127 {
128 /* The type name of the thunk pointer is NULL when using dwarf2.
129 We could test for a pointer to a function, but there is
130 no type info for the virtual table either, so it wont help. */
131 return cp_is_vtbl_ptr_type (type);
132 }
133 }
134 return 0;
135 }
136
137 /* Mutually recursive subroutines of cp_print_value and c_val_print to
138 print out a structure's fields: cp_print_value_fields and cp_print_value.
139
140 TYPE, VALADDR, ADDRESS, STREAM, RECURSE, and OPTIONS have the
141 same meanings as in cp_print_value and c_val_print.
142
143 2nd argument REAL_TYPE is used to carry over the type of the derived
144 class across the recursion to base classes.
145
146 DONT_PRINT is an array of baseclass types that we
147 should not print, or zero if called from top level. */
148
149 void
150 cp_print_value_fields (struct type *type, struct type *real_type,
151 const gdb_byte *valaddr, int offset, CORE_ADDR address,
152 struct ui_file *stream, int recurse,
153 const struct value_print_options *options,
154 struct type **dont_print_vb, int dont_print_statmem)
155 {
156 int i, len, n_baseclasses;
157 char *last_dont_print = obstack_next_free (&dont_print_statmem_obstack);
158 int fields_seen = 0;
159
160 CHECK_TYPEDEF (type);
161
162 fprintf_filtered (stream, "{");
163 len = TYPE_NFIELDS (type);
164 n_baseclasses = TYPE_N_BASECLASSES (type);
165
166 /* First, print out baseclasses such that we don't print
167 duplicates of virtual baseclasses. */
168
169 if (n_baseclasses > 0)
170 cp_print_value (type, real_type, valaddr, offset, address, stream,
171 recurse + 1, options, dont_print_vb);
172
173 /* Second, print out data fields */
174
175 /* If there are no data fields, skip this part */
176 if (len == n_baseclasses || !len)
177 fprintf_filtered (stream, "<No data fields>");
178 else
179 {
180 struct obstack tmp_obstack = dont_print_statmem_obstack;
181
182 if (dont_print_statmem == 0)
183 {
184 /* If we're at top level, carve out a completely fresh
185 chunk of the obstack and use that until this particular
186 invocation returns. */
187 obstack_finish (&dont_print_statmem_obstack);
188 }
189
190 for (i = n_baseclasses; i < len; i++)
191 {
192 /* If requested, skip printing of static fields. */
193 if (!options->static_field_print
194 && field_is_static (&TYPE_FIELD (type, i)))
195 continue;
196
197 if (fields_seen)
198 fprintf_filtered (stream, ", ");
199 else if (n_baseclasses > 0)
200 {
201 if (options->pretty)
202 {
203 fprintf_filtered (stream, "\n");
204 print_spaces_filtered (2 + 2 * recurse, stream);
205 fputs_filtered ("members of ", stream);
206 fputs_filtered (type_name_no_tag (type), stream);
207 fputs_filtered (": ", stream);
208 }
209 }
210 fields_seen = 1;
211
212 if (options->pretty)
213 {
214 fprintf_filtered (stream, "\n");
215 print_spaces_filtered (2 + 2 * recurse, stream);
216 }
217 else
218 {
219 wrap_here (n_spaces (2 + 2 * recurse));
220 }
221 if (options->inspect_it)
222 {
223 if (TYPE_CODE (TYPE_FIELD_TYPE (type, i)) == TYPE_CODE_PTR)
224 fputs_filtered ("\"( ptr \"", stream);
225 else
226 fputs_filtered ("\"( nodef \"", stream);
227 if (field_is_static (&TYPE_FIELD (type, i)))
228 fputs_filtered ("static ", stream);
229 fprintf_symbol_filtered (stream, TYPE_FIELD_NAME (type, i),
230 current_language->la_language,
231 DMGL_PARAMS | DMGL_ANSI);
232 fputs_filtered ("\" \"", stream);
233 fprintf_symbol_filtered (stream, TYPE_FIELD_NAME (type, i),
234 current_language->la_language,
235 DMGL_PARAMS | DMGL_ANSI);
236 fputs_filtered ("\") \"", stream);
237 }
238 else
239 {
240 annotate_field_begin (TYPE_FIELD_TYPE (type, i));
241
242 if (field_is_static (&TYPE_FIELD (type, i)))
243 fputs_filtered ("static ", stream);
244 fprintf_symbol_filtered (stream, TYPE_FIELD_NAME (type, i),
245 current_language->la_language,
246 DMGL_PARAMS | DMGL_ANSI);
247 annotate_field_name_end ();
248 /* do not print leading '=' in case of anonymous unions */
249 if (strcmp (TYPE_FIELD_NAME (type, i), ""))
250 fputs_filtered (" = ", stream);
251 annotate_field_value ();
252 }
253
254 if (!field_is_static (&TYPE_FIELD (type, i))
255 && TYPE_FIELD_PACKED (type, i))
256 {
257 struct value *v;
258
259 /* Bitfields require special handling, especially due to byte
260 order problems. */
261 if (TYPE_FIELD_IGNORE (type, i))
262 {
263 fputs_filtered ("<optimized out or zero length>", stream);
264 }
265 else
266 {
267 struct value_print_options opts = *options;
268 opts.deref_ref = 0;
269 v = value_from_longest
270 (TYPE_FIELD_TYPE (type, i),
271 unpack_field_as_long (type, valaddr + offset, i));
272
273 common_val_print (v, stream, recurse + 1, &opts,
274 current_language);
275 }
276 }
277 else
278 {
279 if (TYPE_FIELD_IGNORE (type, i))
280 {
281 fputs_filtered ("<optimized out or zero length>", stream);
282 }
283 else if (field_is_static (&TYPE_FIELD (type, i)))
284 {
285 struct value *v = value_static_field (type, i);
286 if (v == NULL)
287 fputs_filtered ("<optimized out>", stream);
288 else
289 cp_print_static_field (TYPE_FIELD_TYPE (type, i), v,
290 stream, recurse + 1, options);
291 }
292 else
293 {
294 struct value_print_options opts = *options;
295 opts.deref_ref = 0;
296 val_print (TYPE_FIELD_TYPE (type, i),
297 valaddr, offset + TYPE_FIELD_BITPOS (type, i) / 8,
298 address,
299 stream, recurse + 1, &opts,
300 current_language);
301 }
302 }
303 annotate_field_end ();
304 }
305
306 if (dont_print_statmem == 0)
307 {
308 /* Free the space used to deal with the printing
309 of the members from top level. */
310 obstack_free (&dont_print_statmem_obstack, last_dont_print);
311 dont_print_statmem_obstack = tmp_obstack;
312 }
313
314 if (options->pretty)
315 {
316 fprintf_filtered (stream, "\n");
317 print_spaces_filtered (2 * recurse, stream);
318 }
319 } /* if there are data fields */
320
321 fprintf_filtered (stream, "}");
322 }
323
324 /* Like cp_print_value_fields, but find the runtime type of the object
325 and pass it as the `real_type' argument to cp_print_value_fields.
326 This function is a hack to work around the fact that
327 common_val_print passes the embedded offset to val_print, but not
328 the enclosing type. */
329
330 void
331 cp_print_value_fields_rtti (struct type *type,
332 const gdb_byte *valaddr, int offset,
333 CORE_ADDR address,
334 struct ui_file *stream, int recurse,
335 const struct value_print_options *options,
336 struct type **dont_print_vb, int dont_print_statmem)
337 {
338 struct value *value;
339 int full, top, using_enc;
340 struct type *real_type;
341
342 /* Ugh, we have to convert back to a value here. */
343 value = value_from_contents_and_address (type, valaddr + offset,
344 address + offset);
345 /* We don't actually care about most of the result here -- just the
346 type. We already have the correct offset, due to how val_print
347 was initially called. */
348 real_type = value_rtti_type (value, &full, &top, &using_enc);
349 if (!real_type)
350 real_type = type;
351
352 cp_print_value_fields (type, real_type, valaddr, offset,
353 address, stream, recurse, options,
354 dont_print_vb, dont_print_statmem);
355 }
356
357 /* Special val_print routine to avoid printing multiple copies of virtual
358 baseclasses. */
359
360 static void
361 cp_print_value (struct type *type, struct type *real_type,
362 const gdb_byte *valaddr, int offset, CORE_ADDR address,
363 struct ui_file *stream, int recurse,
364 const struct value_print_options *options,
365 struct type **dont_print_vb)
366 {
367 struct type **last_dont_print
368 = (struct type **) obstack_next_free (&dont_print_vb_obstack);
369 struct obstack tmp_obstack = dont_print_vb_obstack;
370 int i, n_baseclasses = TYPE_N_BASECLASSES (type);
371 int thisoffset;
372 struct type *thistype;
373
374 if (dont_print_vb == 0)
375 {
376 /* If we're at top level, carve out a completely fresh
377 chunk of the obstack and use that until this particular
378 invocation returns. */
379 /* Bump up the high-water mark. Now alpha is omega. */
380 obstack_finish (&dont_print_vb_obstack);
381 }
382
383 for (i = 0; i < n_baseclasses; i++)
384 {
385 int boffset;
386 int skip;
387 struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
388 char *basename = TYPE_NAME (baseclass);
389 const gdb_byte *base_valaddr;
390
391 if (BASETYPE_VIA_VIRTUAL (type, i))
392 {
393 struct type **first_dont_print
394 = (struct type **) obstack_base (&dont_print_vb_obstack);
395
396 int j = (struct type **) obstack_next_free (&dont_print_vb_obstack)
397 - first_dont_print;
398
399 while (--j >= 0)
400 if (baseclass == first_dont_print[j])
401 goto flush_it;
402
403 obstack_ptr_grow (&dont_print_vb_obstack, baseclass);
404 }
405
406 thisoffset = offset;
407 thistype = real_type;
408
409 boffset = baseclass_offset (type, i, valaddr + offset, address + offset);
410 skip = ((boffset == -1) || (boffset + offset) < 0) ? 1 : -1;
411
412 if (BASETYPE_VIA_VIRTUAL (type, i))
413 {
414 /* The virtual base class pointer might have been
415 clobbered by the user program. Make sure that it
416 still points to a valid memory location. */
417
418 if (boffset != -1
419 && ((boffset + offset) < 0
420 || (boffset + offset) >= TYPE_LENGTH (real_type)))
421 {
422 /* FIXME (alloca): unsafe if baseclass is really really large. */
423 gdb_byte *buf = alloca (TYPE_LENGTH (baseclass));
424 base_valaddr = buf;
425 if (target_read_memory (address + boffset, buf,
426 TYPE_LENGTH (baseclass)) != 0)
427 skip = 1;
428 address = address + boffset;
429 thisoffset = 0;
430 boffset = 0;
431 thistype = baseclass;
432 }
433 else
434 base_valaddr = valaddr;
435 }
436 else
437 base_valaddr = valaddr;
438
439 /* now do the printing */
440 if (options->pretty)
441 {
442 fprintf_filtered (stream, "\n");
443 print_spaces_filtered (2 * recurse, stream);
444 }
445 fputs_filtered ("<", stream);
446 /* Not sure what the best notation is in the case where there is no
447 baseclass name. */
448 fputs_filtered (basename ? basename : "", stream);
449 fputs_filtered ("> = ", stream);
450
451
452 if (skip >= 1)
453 fprintf_filtered (stream, "<invalid address>");
454 else
455 {
456 int result = 0;
457
458 /* Attempt to run the Python pretty-printers on the
459 baseclass if possible. */
460 if (!options->raw)
461 result = apply_val_pretty_printer (baseclass, base_valaddr,
462 thisoffset + boffset,
463 address,
464 stream, recurse,
465 options,
466 current_language);
467
468 if (!result)
469 cp_print_value_fields (baseclass, thistype, base_valaddr,
470 thisoffset + boffset, address,
471 stream, recurse, options,
472 ((struct type **)
473 obstack_base (&dont_print_vb_obstack)),
474 0);
475 }
476 fputs_filtered (", ", stream);
477
478 flush_it:
479 ;
480 }
481
482 if (dont_print_vb == 0)
483 {
484 /* Free the space used to deal with the printing
485 of this type from top level. */
486 obstack_free (&dont_print_vb_obstack, last_dont_print);
487 /* Reset watermark so that we can continue protecting
488 ourselves from whatever we were protecting ourselves. */
489 dont_print_vb_obstack = tmp_obstack;
490 }
491 }
492
493 /* Print value of a static member.
494 To avoid infinite recursion when printing a class that contains
495 a static instance of the class, we keep the addresses of all printed
496 static member classes in an obstack and refuse to print them more
497 than once.
498
499 VAL contains the value to print, TYPE, STREAM, RECURSE, and OPTIONS
500 have the same meanings as in c_val_print. */
501
502 static void
503 cp_print_static_field (struct type *type,
504 struct value *val,
505 struct ui_file *stream,
506 int recurse,
507 const struct value_print_options *options)
508 {
509 struct value_print_options opts;
510 if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
511 {
512 CORE_ADDR *first_dont_print;
513 CORE_ADDR addr;
514 int i;
515
516 first_dont_print
517 = (CORE_ADDR *) obstack_base (&dont_print_statmem_obstack);
518 i = (CORE_ADDR *) obstack_next_free (&dont_print_statmem_obstack)
519 - first_dont_print;
520
521 while (--i >= 0)
522 {
523 if (value_address (val) == first_dont_print[i])
524 {
525 fputs_filtered ("<same as static member of an already"
526 " seen type>",
527 stream);
528 return;
529 }
530 }
531
532 addr = value_address (val);
533 obstack_grow (&dont_print_statmem_obstack, (char *) &addr,
534 sizeof (CORE_ADDR));
535
536 CHECK_TYPEDEF (type);
537 cp_print_value_fields (type, value_enclosing_type (val),
538 value_contents_all (val),
539 value_embedded_offset (val), addr,
540 stream, recurse, options, NULL, 1);
541 return;
542 }
543
544 opts = *options;
545 opts.deref_ref = 0;
546 val_print (type, value_contents_all (val),
547 value_embedded_offset (val), value_address (val),
548 stream, recurse, &opts, current_language);
549 }
550
551
552 /* Find the field in *DOMAIN, or its non-virtual base classes, with bit offset
553 OFFSET. Set *DOMAIN to the containing type and *FIELDNO to the containing
554 field number. If OFFSET is not exactly at the start of some field, set
555 *DOMAIN to NULL. */
556
557 static void
558 cp_find_class_member (struct type **domain_p, int *fieldno,
559 LONGEST offset)
560 {
561 struct type *domain;
562 unsigned int i;
563 unsigned len;
564
565 *domain_p = check_typedef (*domain_p);
566 domain = *domain_p;
567 len = TYPE_NFIELDS (domain);
568
569 for (i = TYPE_N_BASECLASSES (domain); i < len; i++)
570 {
571 LONGEST bitpos = TYPE_FIELD_BITPOS (domain, i);
572
573 QUIT;
574 if (offset == bitpos)
575 {
576 *fieldno = i;
577 return;
578 }
579 }
580
581 for (i = 0; i < TYPE_N_BASECLASSES (domain); i++)
582 {
583 LONGEST bitpos = TYPE_FIELD_BITPOS (domain, i);
584 LONGEST bitsize = 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (domain, i));
585
586 if (offset >= bitpos && offset < bitpos + bitsize)
587 {
588 *domain_p = TYPE_FIELD_TYPE (domain, i);
589 cp_find_class_member (domain_p, fieldno, offset - bitpos);
590 return;
591 }
592 }
593
594 *domain_p = NULL;
595 }
596
597 void
598 cp_print_class_member (const gdb_byte *valaddr, struct type *type,
599 struct ui_file *stream, char *prefix)
600 {
601 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
602
603 /* VAL is a byte offset into the structure type DOMAIN.
604 Find the name of the field for that offset and
605 print it. */
606 struct type *domain = TYPE_DOMAIN_TYPE (type);
607 LONGEST val;
608 unsigned int fieldno;
609
610 val = extract_signed_integer (valaddr, TYPE_LENGTH (type), byte_order);
611
612 /* Pointers to data members are usually byte offsets into an object.
613 Because a data member can have offset zero, and a NULL pointer to
614 member must be distinct from any valid non-NULL pointer to
615 member, either the value is biased or the NULL value has a
616 special representation; both are permitted by ISO C++. HP aCC
617 used a bias of 0x20000000; HP cfront used a bias of 1; g++ 3.x
618 and other compilers which use the Itanium ABI use -1 as the NULL
619 value. GDB only supports that last form; to add support for
620 another form, make this into a cp-abi hook. */
621
622 if (val == -1)
623 {
624 fprintf_filtered (stream, "NULL");
625 return;
626 }
627
628 cp_find_class_member (&domain, &fieldno, val << 3);
629
630 if (domain != NULL)
631 {
632 char *name;
633 fputs_filtered (prefix, stream);
634 name = type_name_no_tag (domain);
635 if (name)
636 fputs_filtered (name, stream);
637 else
638 c_type_print_base (domain, stream, 0, 0);
639 fprintf_filtered (stream, "::");
640 fputs_filtered (TYPE_FIELD_NAME (domain, fieldno), stream);
641 }
642 else
643 fprintf_filtered (stream, "%ld", (long) val);
644 }
645
646
647 void
648 _initialize_cp_valprint (void)
649 {
650 add_setshow_boolean_cmd ("static-members", class_support,
651 &user_print_options.static_field_print, _("\
652 Set printing of C++ static members."), _("\
653 Show printing of C++ static members."), NULL,
654 NULL,
655 show_static_field_print,
656 &setprintlist, &showprintlist);
657
658 add_setshow_boolean_cmd ("vtbl", class_support,
659 &user_print_options.vtblprint, _("\
660 Set printing of C++ virtual function tables."), _("\
661 Show printing of C++ virtual function tables."), NULL,
662 NULL,
663 show_vtblprint,
664 &setprintlist, &showprintlist);
665
666 add_setshow_boolean_cmd ("object", class_support,
667 &user_print_options.objectprint, _("\
668 Set printing of object's derived type based on vtable info."), _("\
669 Show printing of object's derived type based on vtable info."), NULL,
670 NULL,
671 show_objectprint,
672 &setprintlist, &showprintlist);
673
674 obstack_begin (&dont_print_vb_obstack, 32 * sizeof (struct type *));
675 obstack_specify_allocation (&dont_print_statmem_obstack,
676 32 * sizeof (CORE_ADDR), sizeof (CORE_ADDR),
677 xmalloc, xfree);
678 }