c-valprint.c revision 1.1.1.5 1 /* Support for printing C values for GDB, the GNU debugger.
2
3 Copyright (C) 1986-2019 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
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.
11
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.
16
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/>. */
19
20 #include "defs.h"
21 #include "symtab.h"
22 #include "gdbtypes.h"
23 #include "expression.h"
24 #include "value.h"
25 #include "valprint.h"
26 #include "language.h"
27 #include "c-lang.h"
28 #include "cp-abi.h"
29 #include "target.h"
30 #include "objfiles.h"
31
32
34 /* A helper for c_textual_element_type. This checks the name of the
35 typedef. This is bogus but it isn't apparent that the compiler
36 provides us the help we may need. */
37
38 static int
39 textual_name (const char *name)
40 {
41 return (!strcmp (name, "wchar_t")
42 || !strcmp (name, "char16_t")
43 || !strcmp (name, "char32_t"));
44 }
45
46 /* Apply a heuristic to decide whether an array of TYPE or a pointer
47 to TYPE should be printed as a textual string. Return non-zero if
48 it should, or zero if it should be treated as an array of integers
49 or pointer to integers. FORMAT is the current format letter, or 0
50 if none.
51
52 We guess that "char" is a character. Explicitly signed and
53 unsigned character types are also characters. Integer data from
54 vector types is not. The user can override this by using the /s
55 format letter. */
56
57 int
58 c_textual_element_type (struct type *type, char format)
59 {
60 struct type *true_type, *iter_type;
61
62 if (format != 0 && format != 's')
63 return 0;
64
65 /* We also rely on this for its side effect of setting up all the
66 typedef pointers. */
67 true_type = check_typedef (type);
68
69 /* TYPE_CODE_CHAR is always textual. */
70 if (TYPE_CODE (true_type) == TYPE_CODE_CHAR)
71 return 1;
72
73 /* Any other character-like types must be integral. */
74 if (TYPE_CODE (true_type) != TYPE_CODE_INT)
75 return 0;
76
77 /* We peel typedefs one by one, looking for a match. */
78 iter_type = type;
79 while (iter_type)
80 {
81 /* Check the name of the type. */
82 if (TYPE_NAME (iter_type) && textual_name (TYPE_NAME (iter_type)))
83 return 1;
84
85 if (TYPE_CODE (iter_type) != TYPE_CODE_TYPEDEF)
86 break;
87
88 /* Peel a single typedef. If the typedef doesn't have a target
89 type, we use check_typedef and hope the result is ok -- it
90 might be for C++, where wchar_t is a built-in type. */
91 if (TYPE_TARGET_TYPE (iter_type))
92 iter_type = TYPE_TARGET_TYPE (iter_type);
93 else
94 iter_type = check_typedef (iter_type);
95 }
96
97 if (format == 's')
98 {
99 /* Print this as a string if we can manage it. For now, no wide
100 character support. */
101 if (TYPE_CODE (true_type) == TYPE_CODE_INT
102 && TYPE_LENGTH (true_type) == 1)
103 return 1;
104 }
105 else
106 {
107 /* If a one-byte TYPE_CODE_INT is missing the not-a-character
108 flag, then we treat it as text; otherwise, we assume it's
109 being used as data. */
110 if (TYPE_CODE (true_type) == TYPE_CODE_INT
111 && TYPE_LENGTH (true_type) == 1
112 && !TYPE_NOTTEXT (true_type))
113 return 1;
114 }
115
116 return 0;
117 }
118
119 /* Decorations for C. */
120
121 static const struct generic_val_print_decorations c_decorations =
122 {
123 "",
124 " + ",
125 " * I",
126 "true",
127 "false",
128 "void",
129 "{",
130 "}"
131 };
132
133 /* Print a pointer based on the type of its target.
134
135 Arguments to this functions are roughly the same as those in c_val_print.
136 A difference is that ADDRESS is the address to print, with embedded_offset
137 already added. UNRESOLVED_ELTTYPE and ELTTYPE represent the pointed type,
138 respectively before and after check_typedef. */
139
140 static void
141 print_unpacked_pointer (struct type *type, struct type *elttype,
142 struct type *unresolved_elttype,
143 const gdb_byte *valaddr, int embedded_offset,
144 CORE_ADDR address, struct ui_file *stream, int recurse,
145 const struct value_print_options *options)
146 {
147 int want_space = 0;
148 struct gdbarch *gdbarch = get_type_arch (type);
149
150 if (TYPE_CODE (elttype) == TYPE_CODE_FUNC)
151 {
152 /* Try to print what function it points to. */
153 print_function_pointer_address (options, gdbarch, address, stream);
154 return;
155 }
156
157 if (options->symbol_print)
158 want_space = print_address_demangle (options, gdbarch, address, stream,
159 demangle);
160 else if (options->addressprint)
161 {
162 fputs_filtered (paddress (gdbarch, address), stream);
163 want_space = 1;
164 }
165
166 /* For a pointer to a textual type, also print the string
167 pointed to, unless pointer is null. */
168
169 if (c_textual_element_type (unresolved_elttype, options->format)
170 && address != 0)
171 {
172 if (want_space)
173 fputs_filtered (" ", stream);
174 val_print_string (unresolved_elttype, NULL, address, -1, stream, options);
175 }
176 else if (cp_is_vtbl_member (type))
177 {
178 /* Print vtbl's nicely. */
179 CORE_ADDR vt_address = unpack_pointer (type, valaddr + embedded_offset);
180 struct bound_minimal_symbol msymbol =
181 lookup_minimal_symbol_by_pc (vt_address);
182
183 /* If 'symbol_print' is set, we did the work above. */
184 if (!options->symbol_print
185 && (msymbol.minsym != NULL)
186 && (vt_address == BMSYMBOL_VALUE_ADDRESS (msymbol)))
187 {
188 if (want_space)
189 fputs_filtered (" ", stream);
190 fputs_filtered (" <", stream);
191 fputs_filtered (MSYMBOL_PRINT_NAME (msymbol.minsym), stream);
192 fputs_filtered (">", stream);
193 want_space = 1;
194 }
195
196 if (vt_address && options->vtblprint)
197 {
198 struct value *vt_val;
199 struct symbol *wsym = NULL;
200 struct type *wtype;
201 struct block *block = NULL;
202
203 if (want_space)
204 fputs_filtered (" ", stream);
205
206 if (msymbol.minsym != NULL)
207 {
208 const char *search_name
209 = MSYMBOL_SEARCH_NAME (msymbol.minsym);
210 wsym = lookup_symbol_search_name (search_name, block,
211 VAR_DOMAIN).symbol;
212 }
213
214 if (wsym)
215 {
216 wtype = SYMBOL_TYPE (wsym);
217 }
218 else
219 {
220 wtype = unresolved_elttype;
221 }
222 vt_val = value_at (wtype, vt_address);
223 common_val_print (vt_val, stream, recurse + 1, options,
224 current_language);
225 if (options->prettyformat)
226 {
227 fprintf_filtered (stream, "\n");
228 print_spaces_filtered (2 + 2 * recurse, stream);
229 }
230 }
231 }
232 }
233
234 /* c_val_print helper for TYPE_CODE_ARRAY. */
235
236 static void
237 c_val_print_array (struct type *type, const gdb_byte *valaddr,
238 int embedded_offset, CORE_ADDR address,
239 struct ui_file *stream, int recurse,
240 struct value *original_value,
241 const struct value_print_options *options)
242 {
243 struct type *unresolved_elttype = TYPE_TARGET_TYPE (type);
244 struct type *elttype = check_typedef (unresolved_elttype);
245 struct gdbarch *arch = get_type_arch (type);
246 int unit_size = gdbarch_addressable_memory_unit_size (arch);
247
248 if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (unresolved_elttype) > 0)
249 {
250 LONGEST low_bound, high_bound;
251 int eltlen, len;
252 struct gdbarch *gdbarch = get_type_arch (type);
253 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
254 unsigned int i = 0; /* Number of characters printed. */
255
256 if (!get_array_bounds (type, &low_bound, &high_bound))
257 error (_("Could not determine the array high bound"));
258
259 eltlen = TYPE_LENGTH (elttype);
260 len = high_bound - low_bound + 1;
261 if (options->prettyformat_arrays)
262 {
263 print_spaces_filtered (2 + 2 * recurse, stream);
264 }
265
266 /* Print arrays of textual chars with a string syntax, as
267 long as the entire array is valid. */
268 if (c_textual_element_type (unresolved_elttype,
269 options->format)
270 && value_bytes_available (original_value, embedded_offset,
271 TYPE_LENGTH (type))
272 && !value_bits_any_optimized_out (original_value,
273 TARGET_CHAR_BIT * embedded_offset,
274 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
275 {
276 int force_ellipses = 0;
277
278 /* If requested, look for the first null char and only
279 print elements up to it. */
280 if (options->stop_print_at_null)
281 {
282 unsigned int temp_len;
283
284 for (temp_len = 0;
285 (temp_len < len
286 && temp_len < options->print_max
287 && extract_unsigned_integer (valaddr
288 + embedded_offset * unit_size
289 + temp_len * eltlen,
290 eltlen, byte_order) != 0);
291 ++temp_len)
292 ;
293
294 /* Force LA_PRINT_STRING to print ellipses if
295 we've printed the maximum characters and
296 the next character is not \000. */
297 if (temp_len == options->print_max && temp_len < len)
298 {
299 ULONGEST val
300 = extract_unsigned_integer (valaddr
301 + embedded_offset * unit_size
302 + temp_len * eltlen,
303 eltlen, byte_order);
304 if (val != 0)
305 force_ellipses = 1;
306 }
307
308 len = temp_len;
309 }
310
311 LA_PRINT_STRING (stream, unresolved_elttype,
312 valaddr + embedded_offset * unit_size, len,
313 NULL, force_ellipses, options);
314 i = len;
315 }
316 else
317 {
318 fprintf_filtered (stream, "{");
319 /* If this is a virtual function table, print the 0th
320 entry specially, and the rest of the members
321 normally. */
322 if (cp_is_vtbl_ptr_type (elttype))
323 {
324 i = 1;
325 fprintf_filtered (stream, _("%d vtable entries"),
326 len - 1);
327 }
328 else
329 {
330 i = 0;
331 }
332 val_print_array_elements (type, embedded_offset,
333 address, stream,
334 recurse, original_value, options, i);
335 fprintf_filtered (stream, "}");
336 }
337 }
338 else
339 {
340 /* Array of unspecified length: treat like pointer to first elt. */
341 print_unpacked_pointer (type, elttype, unresolved_elttype, valaddr,
342 embedded_offset, address + embedded_offset,
343 stream, recurse, options);
344 }
345 }
346
347 /* c_val_print helper for TYPE_CODE_PTR. */
348
349 static void
350 c_val_print_ptr (struct type *type, const gdb_byte *valaddr,
351 int embedded_offset, struct ui_file *stream, int recurse,
352 struct value *original_value,
353 const struct value_print_options *options)
354 {
355 struct gdbarch *arch = get_type_arch (type);
356 int unit_size = gdbarch_addressable_memory_unit_size (arch);
357
358 if (options->format && options->format != 's')
359 {
360 val_print_scalar_formatted (type, embedded_offset,
361 original_value, options, 0, stream);
362 }
363 else if (options->vtblprint && cp_is_vtbl_ptr_type (type))
364 {
365 /* Print the unmangled name if desired. */
366 /* Print vtable entry - we only get here if we ARE using
367 -fvtable_thunks. (Otherwise, look under
368 TYPE_CODE_STRUCT.) */
369 CORE_ADDR addr
370 = extract_typed_address (valaddr + embedded_offset, type);
371 struct gdbarch *gdbarch = get_type_arch (type);
372
373 print_function_pointer_address (options, gdbarch, addr, stream);
374 }
375 else
376 {
377 struct type *unresolved_elttype = TYPE_TARGET_TYPE (type);
378 struct type *elttype = check_typedef (unresolved_elttype);
379 CORE_ADDR addr = unpack_pointer (type,
380 valaddr + embedded_offset * unit_size);
381
382 print_unpacked_pointer (type, elttype, unresolved_elttype, valaddr,
383 embedded_offset, addr, stream, recurse, options);
384 }
385 }
386
387 /* c_val_print helper for TYPE_CODE_STRUCT. */
388
389 static void
390 c_val_print_struct (struct type *type, const gdb_byte *valaddr,
391 int embedded_offset, CORE_ADDR address,
392 struct ui_file *stream, int recurse,
393 struct value *original_value,
394 const struct value_print_options *options)
395 {
396 if (options->vtblprint && cp_is_vtbl_ptr_type (type))
397 {
398 /* Print the unmangled name if desired. */
399 /* Print vtable entry - we only get here if NOT using
400 -fvtable_thunks. (Otherwise, look under
401 TYPE_CODE_PTR.) */
402 struct gdbarch *gdbarch = get_type_arch (type);
403 int offset = (embedded_offset
404 + TYPE_FIELD_BITPOS (type,
405 VTBL_FNADDR_OFFSET) / 8);
406 struct type *field_type = TYPE_FIELD_TYPE (type, VTBL_FNADDR_OFFSET);
407 CORE_ADDR addr = extract_typed_address (valaddr + offset, field_type);
408
409 print_function_pointer_address (options, gdbarch, addr, stream);
410 }
411 else
412 cp_print_value_fields_rtti (type, valaddr,
413 embedded_offset, address,
414 stream, recurse,
415 original_value, options,
416 NULL, 0);
417 }
418
419 /* c_val_print helper for TYPE_CODE_UNION. */
420
421 static void
422 c_val_print_union (struct type *type, const gdb_byte *valaddr,
423 int embedded_offset, CORE_ADDR address,
424 struct ui_file *stream, int recurse,
425 struct value *original_value,
426 const struct value_print_options *options)
427 {
428 if (recurse && !options->unionprint)
429 {
430 fprintf_filtered (stream, "{...}");
431 }
432 else
433 {
434 c_val_print_struct (type, valaddr, embedded_offset, address, stream,
435 recurse, original_value, options);
436 }
437 }
438
439 /* c_val_print helper for TYPE_CODE_INT. */
440
441 static void
442 c_val_print_int (struct type *type, struct type *unresolved_type,
443 const gdb_byte *valaddr, int embedded_offset,
444 struct ui_file *stream, struct value *original_value,
445 const struct value_print_options *options)
446 {
447 struct gdbarch *arch = get_type_arch (type);
448 int unit_size = gdbarch_addressable_memory_unit_size (arch);
449
450 if (options->format || options->output_format)
451 {
452 struct value_print_options opts = *options;
453
454 opts.format = (options->format ? options->format
455 : options->output_format);
456 val_print_scalar_formatted (type, embedded_offset,
457 original_value, &opts, 0, stream);
458 }
459 else
460 {
461 val_print_scalar_formatted (type, embedded_offset,
462 original_value, options, 0, stream);
463 /* C and C++ has no single byte int type, char is used
464 instead. Since we don't know whether the value is really
465 intended to be used as an integer or a character, print
466 the character equivalent as well. */
467 if (c_textual_element_type (unresolved_type, options->format))
468 {
469 fputs_filtered (" ", stream);
470 LA_PRINT_CHAR (unpack_long (type,
471 valaddr + embedded_offset * unit_size),
472 unresolved_type, stream);
473 }
474 }
475 }
476
477 /* c_val_print helper for TYPE_CODE_MEMBERPTR. */
478
479 static void
480 c_val_print_memberptr (struct type *type, const gdb_byte *valaddr,
481 int embedded_offset, CORE_ADDR address,
482 struct ui_file *stream, int recurse,
483 struct value *original_value,
484 const struct value_print_options *options)
485 {
486 if (!options->format)
487 {
488 cp_print_class_member (valaddr + embedded_offset, type, stream, "&");
489 }
490 else
491 {
492 generic_val_print (type, embedded_offset, address, stream,
493 recurse, original_value, options, &c_decorations);
494 }
495 }
496
497 /* See val_print for a description of the various parameters of this
498 function; they are identical. */
499
500 void
501 c_val_print (struct type *type,
502 int embedded_offset, CORE_ADDR address,
503 struct ui_file *stream, int recurse,
504 struct value *original_value,
505 const struct value_print_options *options)
506 {
507 struct type *unresolved_type = type;
508 const gdb_byte *valaddr = value_contents_for_printing (original_value);
509
510 type = check_typedef (type);
511 switch (TYPE_CODE (type))
512 {
513 case TYPE_CODE_ARRAY:
514 c_val_print_array (type, valaddr, embedded_offset, address, stream,
515 recurse, original_value, options);
516 break;
517
518 case TYPE_CODE_METHODPTR:
519 cplus_print_method_ptr (valaddr + embedded_offset, type, stream);
520 break;
521
522 case TYPE_CODE_PTR:
523 c_val_print_ptr (type, valaddr, embedded_offset, stream, recurse,
524 original_value, options);
525 break;
526
527 case TYPE_CODE_UNION:
528 c_val_print_union (type, valaddr, embedded_offset, address, stream,
529 recurse, original_value, options);
530 break;
531
532 case TYPE_CODE_STRUCT:
533 c_val_print_struct (type, valaddr, embedded_offset, address, stream,
534 recurse, original_value, options);
535 break;
536
537 case TYPE_CODE_INT:
538 c_val_print_int (type, unresolved_type, valaddr, embedded_offset, stream,
539 original_value, options);
540 break;
541
542 case TYPE_CODE_MEMBERPTR:
543 c_val_print_memberptr (type, valaddr, embedded_offset, address, stream,
544 recurse, original_value, options);
545 break;
546
547 case TYPE_CODE_REF:
548 case TYPE_CODE_RVALUE_REF:
549 case TYPE_CODE_ENUM:
550 case TYPE_CODE_FLAGS:
551 case TYPE_CODE_FUNC:
552 case TYPE_CODE_METHOD:
553 case TYPE_CODE_BOOL:
554 case TYPE_CODE_RANGE:
555 case TYPE_CODE_FLT:
556 case TYPE_CODE_DECFLOAT:
557 case TYPE_CODE_VOID:
558 case TYPE_CODE_ERROR:
559 case TYPE_CODE_UNDEF:
560 case TYPE_CODE_COMPLEX:
561 case TYPE_CODE_CHAR:
562 default:
563 generic_val_print (type, embedded_offset, address,
564 stream, recurse, original_value, options,
565 &c_decorations);
566 break;
567 }
568 gdb_flush (stream);
569 }
570
571 void
573 c_value_print (struct value *val, struct ui_file *stream,
574 const struct value_print_options *options)
575 {
576 struct type *type, *real_type, *val_type;
577 int full, using_enc;
578 LONGEST top;
579 struct value_print_options opts = *options;
580
581 opts.deref_ref = 1;
582
583 /* If it is a pointer, indicate what it points to.
584
585 Print type also if it is a reference.
586
587 C++: if it is a member pointer, we will take care
588 of that when we print it. */
589
590 /* Preserve the original type before stripping typedefs. We prefer
591 to pass down the original type when possible, but for local
592 checks it is better to look past the typedefs. */
593 val_type = value_type (val);
594 type = check_typedef (val_type);
595
596 if (TYPE_CODE (type) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (type))
597 {
598 /* Hack: remove (char *) for char strings. Their
599 type is indicated by the quoted string anyway.
600 (Don't use c_textual_element_type here; quoted strings
601 are always exactly (char *), (wchar_t *), or the like. */
602 if (TYPE_CODE (val_type) == TYPE_CODE_PTR
603 && TYPE_NAME (val_type) == NULL
604 && TYPE_NAME (TYPE_TARGET_TYPE (val_type)) != NULL
605 && (strcmp (TYPE_NAME (TYPE_TARGET_TYPE (val_type)),
606 "char") == 0
607 || textual_name (TYPE_NAME (TYPE_TARGET_TYPE (val_type)))))
608 {
609 /* Print nothing. */
610 }
611 else if (options->objectprint
612 && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_STRUCT))
613 {
614 int is_ref = TYPE_IS_REFERENCE (type);
615 enum type_code refcode = TYPE_CODE_UNDEF;
616
617 if (is_ref)
618 {
619 val = value_addr (val);
620 refcode = TYPE_CODE (type);
621 }
622
623 /* Pointer to class, check real type of object. */
624 fprintf_filtered (stream, "(");
625
626 if (value_entirely_available (val))
627 {
628 real_type = value_rtti_indirect_type (val, &full, &top,
629 &using_enc);
630 if (real_type)
631 {
632 /* RTTI entry found. */
633 type = real_type;
634
635 /* Need to adjust pointer value. */
636 val = value_from_pointer (real_type,
637 value_as_address (val) - top);
638
639 /* Note: When we look up RTTI entries, we don't get
640 any information on const or volatile
641 attributes. */
642 }
643 }
644
645 if (is_ref)
646 {
647 val = value_ref (value_ind (val), refcode);
648 type = value_type (val);
649 }
650
651 type_print (type, "", stream, -1);
652 fprintf_filtered (stream, ") ");
653 val_type = type;
654 }
655 else
656 {
657 /* normal case */
658 fprintf_filtered (stream, "(");
659 type_print (value_type (val), "", stream, -1);
660 fprintf_filtered (stream, ") ");
661 }
662 }
663
664 if (!value_initialized (val))
665 fprintf_filtered (stream, " [uninitialized] ");
666
667 if (options->objectprint && (TYPE_CODE (type) == TYPE_CODE_STRUCT))
668 {
669 /* Attempt to determine real type of object. */
670 real_type = value_rtti_type (val, &full, &top, &using_enc);
671 if (real_type)
672 {
673 /* We have RTTI information, so use it. */
674 val = value_full_object (val, real_type,
675 full, top, using_enc);
676 fprintf_filtered (stream, "(%s%s) ",
677 TYPE_NAME (real_type),
678 full ? "" : _(" [incomplete object]"));
679 /* Print out object: enclosing type is same as real_type if
680 full. */
681 val_print (value_enclosing_type (val),
682 0,
683 value_address (val), stream, 0,
684 val, &opts, current_language);
685 return;
686 /* Note: When we look up RTTI entries, we don't get any
687 information on const or volatile attributes. */
688 }
689 else if (type != check_typedef (value_enclosing_type (val)))
690 {
691 /* No RTTI information, so let's do our best. */
692 fprintf_filtered (stream, "(%s ?) ",
693 TYPE_NAME (value_enclosing_type (val)));
694 val_print (value_enclosing_type (val),
695 0,
696 value_address (val), stream, 0,
697 val, &opts, current_language);
698 return;
699 }
700 /* Otherwise, we end up at the return outside this "if". */
701 }
702
703 val_print (val_type,
704 value_embedded_offset (val),
705 value_address (val),
706 stream, 0,
707 val, &opts, current_language);
708 }
709