]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/c-valprint.c
gdb/
[thirdparty/binutils-gdb.git] / gdb / c-valprint.c
CommitLineData
c906108c 1/* Support for printing C values for GDB, the GNU debugger.
1bac305b 2
0b302171
JB
3 Copyright (C) 1986, 1988-1989, 1991-2001, 2003, 2005-2012 Free
4 Software Foundation, Inc.
c906108c 5
c5aa993b 6 This file is part of GDB.
c906108c 7
c5aa993b
JM
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
a9762ec7 10 the Free Software Foundation; either version 3 of the License, or
c5aa993b 11 (at your option) any later version.
c906108c 12
c5aa993b
JM
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
c906108c 17
c5aa993b 18 You should have received a copy of the GNU General Public License
a9762ec7 19 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
20
21#include "defs.h"
309367d4 22#include "gdb_string.h"
c906108c
SS
23#include "symtab.h"
24#include "gdbtypes.h"
25#include "expression.h"
26#include "value.h"
c906108c
SS
27#include "valprint.h"
28#include "language.h"
29#include "c-lang.h"
015a42b4 30#include "cp-abi.h"
e2d0e7eb 31#include "target.h"
c906108c 32\f
c5aa993b 33
96c07c5b 34/* A helper for c_textual_element_type. This checks the name of the
6c7a06a3
TT
35 typedef. This is bogus but it isn't apparent that the compiler
36 provides us the help we may need. */
37
38static int
39textual_name (const char *name)
40{
41 return (!strcmp (name, "wchar_t")
42 || !strcmp (name, "char16_t")
43 || !strcmp (name, "char32_t"));
44}
45
ea37ba09
DJ
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
aff410f1
MS
49 or pointer to integers. FORMAT is the current format letter, or 0
50 if none.
ea37ba09
DJ
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
96c07c5b
TT
57int
58c_textual_element_type (struct type *type, char format)
ea37ba09 59{
85e306ed 60 struct type *true_type, *iter_type;
ea37ba09
DJ
61
62 if (format != 0 && format != 's')
63 return 0;
64
85e306ed
TT
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
ea37ba09
DJ
69 /* TYPE_CODE_CHAR is always textual. */
70 if (TYPE_CODE (true_type) == TYPE_CODE_CHAR)
71 return 1;
85e306ed 72
6c7a06a3
TT
73 /* Any other character-like types must be integral. */
74 if (TYPE_CODE (true_type) != TYPE_CODE_INT)
75 return 0;
76
85e306ed
TT
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 }
ea37ba09
DJ
96
97 if (format == 's')
98 {
aff410f1
MS
99 /* Print this as a string if we can manage it. For now, no wide
100 character support. */
ea37ba09
DJ
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
e88acd96
TT
119/* Decorations for C. */
120
121static const struct generic_val_print_decorations c_decorations =
122{
123 "",
124 " + ",
125 " * I",
126 "true",
127 "false",
128 "void"
129};
130
32b72a42 131/* See val_print for a description of the various parameters of this
d3eab38a 132 function; they are identical. */
c906108c 133
d3eab38a 134void
aff410f1
MS
135c_val_print (struct type *type, const gdb_byte *valaddr,
136 int embedded_offset, CORE_ADDR address,
137 struct ui_file *stream, int recurse,
0e03807e 138 const struct value *original_value,
79a45b7d 139 const struct value_print_options *options)
c906108c 140{
50810684 141 struct gdbarch *gdbarch = get_type_arch (type);
e17a4113 142 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
aff410f1 143 unsigned int i = 0; /* Number of characters printed. */
c906108c 144 unsigned len;
6c7a06a3
TT
145 struct type *elttype, *unresolved_elttype;
146 struct type *unresolved_type = type;
c906108c 147 unsigned eltlen;
c906108c
SS
148 CORE_ADDR addr;
149
150 CHECK_TYPEDEF (type);
151 switch (TYPE_CODE (type))
152 {
153 case TYPE_CODE_ARRAY:
6c7a06a3
TT
154 unresolved_elttype = TYPE_TARGET_TYPE (type);
155 elttype = check_typedef (unresolved_elttype);
156 if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (unresolved_elttype) > 0)
c906108c 157 {
dbc98a8b
KW
158 LONGEST low_bound, high_bound;
159
160 if (!get_array_bounds (type, &low_bound, &high_bound))
161 error (_("Could not determine the array high bound"));
162
c906108c 163 eltlen = TYPE_LENGTH (elttype);
dbc98a8b 164 len = high_bound - low_bound + 1;
79a45b7d 165 if (options->prettyprint_arrays)
c906108c
SS
166 {
167 print_spaces_filtered (2 + 2 * recurse, stream);
168 }
ea37ba09 169
0e03807e
TT
170 /* Print arrays of textual chars with a string syntax, as
171 long as the entire array is valid. */
aff410f1
MS
172 if (c_textual_element_type (unresolved_elttype,
173 options->format)
9fc6d940
PA
174 && value_bytes_available (original_value, embedded_offset,
175 TYPE_LENGTH (type))
0e03807e
TT
176 && value_bits_valid (original_value,
177 TARGET_CHAR_BIT * embedded_offset,
178 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
c906108c 179 {
0d63ecda
KS
180 int force_ellipses = 0;
181
aff410f1
MS
182 /* If requested, look for the first null char and only
183 print elements up to it. */
79a45b7d 184 if (options->stop_print_at_null)
c906108c 185 {
745b8ca0 186 unsigned int temp_len;
c5aa993b 187
c906108c 188 for (temp_len = 0;
6c7a06a3
TT
189 (temp_len < len
190 && temp_len < options->print_max
191 && extract_unsigned_integer (valaddr + embedded_offset
192 + temp_len * eltlen,
421d5d99 193 eltlen, byte_order) != 0);
6c7a06a3
TT
194 ++temp_len)
195 ;
0d63ecda
KS
196
197 /* Force LA_PRINT_STRING to print ellipses if
198 we've printed the maximum characters and
199 the next character is not \000. */
200 if (temp_len == options->print_max && temp_len < len)
201 {
202 ULONGEST val
203 = extract_unsigned_integer (valaddr + embedded_offset
204 + temp_len * eltlen,
205 eltlen, byte_order);
206 if (val != 0)
207 force_ellipses = 1;
208 }
209
c906108c
SS
210 len = temp_len;
211 }
c5aa993b 212
6c7a06a3 213 LA_PRINT_STRING (stream, unresolved_elttype,
be759fcf 214 valaddr + embedded_offset, len,
0d63ecda 215 NULL, force_ellipses, options);
c906108c
SS
216 i = len;
217 }
218 else
219 {
220 fprintf_filtered (stream, "{");
221 /* If this is a virtual function table, print the 0th
aff410f1
MS
222 entry specially, and the rest of the members
223 normally. */
c906108c
SS
224 if (cp_is_vtbl_ptr_type (elttype))
225 {
226 i = 1;
aff410f1
MS
227 fprintf_filtered (stream, _("%d vtable entries"),
228 len - 1);
c906108c
SS
229 }
230 else
231 {
232 i = 0;
233 }
490f124f
PA
234 val_print_array_elements (type, valaddr, embedded_offset,
235 address, stream,
236 recurse, original_value, options, i);
c906108c
SS
237 fprintf_filtered (stream, "}");
238 }
239 break;
240 }
aff410f1
MS
241 /* Array of unspecified length: treat like pointer to first
242 elt. */
13163d80 243 addr = address + embedded_offset;
c906108c
SS
244 goto print_unpacked_pointer;
245
0d5de010
DJ
246 case TYPE_CODE_METHODPTR:
247 cplus_print_method_ptr (valaddr + embedded_offset, type, stream);
248 break;
249
c906108c 250 case TYPE_CODE_PTR:
79a45b7d 251 if (options->format && options->format != 's')
c906108c 252 {
ab2188aa
PA
253 val_print_scalar_formatted (type, valaddr, embedded_offset,
254 original_value, options, 0, stream);
c906108c
SS
255 break;
256 }
79a45b7d 257 if (options->vtblprint && cp_is_vtbl_ptr_type (type))
c906108c 258 {
c5aa993b 259 /* Print the unmangled name if desired. */
c906108c 260 /* Print vtable entry - we only get here if we ARE using
aff410f1
MS
261 -fvtable_thunks. (Otherwise, look under
262 TYPE_CODE_STRUCT.) */
4478b372
JB
263 CORE_ADDR addr
264 = extract_typed_address (valaddr + embedded_offset, type);
c5504eaf 265
edf0c1b7 266 print_function_pointer_address (options, gdbarch, addr, stream);
c906108c
SS
267 break;
268 }
6c7a06a3
TT
269 unresolved_elttype = TYPE_TARGET_TYPE (type);
270 elttype = check_typedef (unresolved_elttype);
c906108c 271 {
b012acdd
TT
272 int want_space;
273
c906108c
SS
274 addr = unpack_pointer (type, valaddr + embedded_offset);
275 print_unpacked_pointer:
c906108c 276
b012acdd
TT
277 want_space = 0;
278
c906108c
SS
279 if (TYPE_CODE (elttype) == TYPE_CODE_FUNC)
280 {
281 /* Try to print what function it points to. */
edf0c1b7 282 print_function_pointer_address (options, gdbarch, addr, stream);
d3eab38a 283 return;
c906108c
SS
284 }
285
9cb709b6
TT
286 if (options->symbol_print)
287 want_space = print_address_demangle (options, gdbarch, addr,
288 stream, demangle);
289 else if (options->addressprint)
b012acdd
TT
290 {
291 fputs_filtered (paddress (gdbarch, addr), stream);
292 want_space = 1;
293 }
c906108c 294
ea37ba09 295 /* For a pointer to a textual type, also print the string
c906108c 296 pointed to, unless pointer is null. */
c906108c 297
aff410f1
MS
298 if (c_textual_element_type (unresolved_elttype,
299 options->format)
79a45b7d 300 && addr != 0)
c906108c 301 {
b012acdd
TT
302 if (want_space)
303 fputs_filtered (" ", stream);
aff410f1
MS
304 i = val_print_string (unresolved_elttype, NULL,
305 addr, -1,
306 stream, options);
c906108c 307 }
c5aa993b
JM
308 else if (cp_is_vtbl_member (type))
309 {
aff410f1
MS
310 /* Print vtbl's nicely. */
311 CORE_ADDR vt_address = unpack_pointer (type,
312 valaddr
313 + embedded_offset);
c906108c 314 struct minimal_symbol *msymbol =
c5aa993b 315 lookup_minimal_symbol_by_pc (vt_address);
b012acdd 316
9cb709b6
TT
317 /* If 'symbol_print' is set, we did the work above. */
318 if (!options->symbol_print
319 && (msymbol != NULL)
5aafa1cc 320 && (vt_address == SYMBOL_VALUE_ADDRESS (msymbol)))
c906108c 321 {
b012acdd
TT
322 if (want_space)
323 fputs_filtered (" ", stream);
c906108c 324 fputs_filtered (" <", stream);
de5ad195 325 fputs_filtered (SYMBOL_PRINT_NAME (msymbol), stream);
c906108c 326 fputs_filtered (">", stream);
b012acdd 327 want_space = 1;
c906108c 328 }
b012acdd 329
79a45b7d 330 if (vt_address && options->vtblprint)
c5aa993b 331 {
6943961c 332 struct value *vt_val;
c5aa993b
JM
333 struct symbol *wsym = (struct symbol *) NULL;
334 struct type *wtype;
c5aa993b 335 struct block *block = (struct block *) NULL;
c906108c
SS
336 int is_this_fld;
337
b012acdd
TT
338 if (want_space)
339 fputs_filtered (" ", stream);
340
c906108c 341 if (msymbol != NULL)
aff410f1
MS
342 wsym = lookup_symbol (SYMBOL_LINKAGE_NAME (msymbol),
343 block, VAR_DOMAIN,
344 &is_this_fld);
c5aa993b 345
c906108c
SS
346 if (wsym)
347 {
c5aa993b 348 wtype = SYMBOL_TYPE (wsym);
c906108c
SS
349 }
350 else
351 {
6c7a06a3 352 wtype = unresolved_elttype;
c906108c 353 }
00a4c844 354 vt_val = value_at (wtype, vt_address);
aff410f1
MS
355 common_val_print (vt_val, stream, recurse + 1,
356 options, current_language);
79a45b7d 357 if (options->pretty)
c906108c
SS
358 {
359 fprintf_filtered (stream, "\n");
360 print_spaces_filtered (2 + 2 * recurse, stream);
361 }
c5aa993b
JM
362 }
363 }
d3eab38a 364 return;
c906108c
SS
365 }
366 break;
367
c906108c 368 case TYPE_CODE_UNION:
79a45b7d 369 if (recurse && !options->unionprint)
c906108c
SS
370 {
371 fprintf_filtered (stream, "{...}");
372 break;
373 }
374 /* Fall through. */
375 case TYPE_CODE_STRUCT:
0963b4bd 376 /*FIXME: Abstract this away. */
79a45b7d 377 if (options->vtblprint && cp_is_vtbl_ptr_type (type))
c906108c 378 {
c5aa993b 379 /* Print the unmangled name if desired. */
c906108c 380 /* Print vtable entry - we only get here if NOT using
aff410f1
MS
381 -fvtable_thunks. (Otherwise, look under
382 TYPE_CODE_PTR.) */
383 int offset = (embedded_offset
384 + TYPE_FIELD_BITPOS (type,
385 VTBL_FNADDR_OFFSET) / 8);
386 struct type *field_type = TYPE_FIELD_TYPE (type,
387 VTBL_FNADDR_OFFSET);
4478b372
JB
388 CORE_ADDR addr
389 = extract_typed_address (valaddr + offset, field_type);
390
edf0c1b7 391 print_function_pointer_address (options, gdbarch, addr, stream);
c906108c
SS
392 }
393 else
edf3d5f3 394 cp_print_value_fields_rtti (type, valaddr,
aff410f1
MS
395 embedded_offset, address,
396 stream, recurse,
397 original_value, options,
398 NULL, 0);
c906108c
SS
399 break;
400
c906108c 401 case TYPE_CODE_INT:
79a45b7d 402 if (options->format || options->output_format)
c906108c 403 {
79a45b7d 404 struct value_print_options opts = *options;
c5504eaf 405
79a45b7d
TT
406 opts.format = (options->format ? options->format
407 : options->output_format);
ab2188aa
PA
408 val_print_scalar_formatted (type, valaddr, embedded_offset,
409 original_value, &opts, 0, stream);
c906108c
SS
410 }
411 else
412 {
aff410f1
MS
413 val_print_type_code_int (type, valaddr + embedded_offset,
414 stream);
415 /* C and C++ has no single byte int type, char is used
416 instead. Since we don't know whether the value is really
417 intended to be used as an integer or a character, print
418 the character equivalent as well. */
96c07c5b 419 if (c_textual_element_type (unresolved_type, options->format))
c906108c
SS
420 {
421 fputs_filtered (" ", stream);
447b483c 422 LA_PRINT_CHAR (unpack_long (type, valaddr + embedded_offset),
6c7a06a3 423 unresolved_type, stream);
c906108c
SS
424 }
425 }
426 break;
427
e88acd96
TT
428 case TYPE_CODE_MEMBERPTR:
429 if (!options->format)
c906108c 430 {
e88acd96
TT
431 cp_print_class_member (valaddr + embedded_offset, type, stream, "&");
432 break;
c906108c 433 }
e88acd96 434 /* FALLTHROUGH */
c906108c 435
e88acd96
TT
436 case TYPE_CODE_REF:
437 case TYPE_CODE_ENUM:
438 case TYPE_CODE_FLAGS:
439 case TYPE_CODE_FUNC:
440 case TYPE_CODE_METHOD:
441 case TYPE_CODE_BOOL:
442 case TYPE_CODE_RANGE:
c906108c 443 case TYPE_CODE_FLT:
7678ef8f 444 case TYPE_CODE_DECFLOAT:
c906108c 445 case TYPE_CODE_VOID:
c906108c 446 case TYPE_CODE_ERROR:
c906108c 447 case TYPE_CODE_UNDEF:
fca9e603 448 case TYPE_CODE_COMPLEX:
e88acd96 449 case TYPE_CODE_CHAR:
c906108c 450 default:
e88acd96
TT
451 generic_val_print (type, valaddr, embedded_offset, address,
452 stream, recurse, original_value, options,
453 &c_decorations);
454 break;
c906108c
SS
455 }
456 gdb_flush (stream);
c906108c
SS
457}
458\f
8e069a98 459void
79a45b7d
TT
460c_value_print (struct value *val, struct ui_file *stream,
461 const struct value_print_options *options)
c906108c 462{
6c7a06a3 463 struct type *type, *real_type, *val_type;
c906108c 464 int full, top, using_enc;
79a45b7d
TT
465 struct value_print_options opts = *options;
466
467 opts.deref_ref = 1;
c5aa993b 468
c906108c
SS
469 /* If it is a pointer, indicate what it points to.
470
471 Print type also if it is a reference.
472
473 C++: if it is a member pointer, we will take care
474 of that when we print it. */
88750304 475
6c7a06a3
TT
476 /* Preserve the original type before stripping typedefs. We prefer
477 to pass down the original type when possible, but for local
478 checks it is better to look past the typedefs. */
479 val_type = value_type (val);
480 type = check_typedef (val_type);
88750304
DJ
481
482 if (TYPE_CODE (type) == TYPE_CODE_PTR
483 || TYPE_CODE (type) == TYPE_CODE_REF)
c906108c
SS
484 {
485 /* Hack: remove (char *) for char strings. Their
ea37ba09 486 type is indicated by the quoted string anyway.
96c07c5b 487 (Don't use c_textual_element_type here; quoted strings
6c7a06a3
TT
488 are always exactly (char *), (wchar_t *), or the like. */
489 if (TYPE_CODE (val_type) == TYPE_CODE_PTR
490 && TYPE_NAME (val_type) == NULL
491 && TYPE_NAME (TYPE_TARGET_TYPE (val_type)) != NULL
aff410f1
MS
492 && (strcmp (TYPE_NAME (TYPE_TARGET_TYPE (val_type)),
493 "char") == 0
6c7a06a3 494 || textual_name (TYPE_NAME (TYPE_TARGET_TYPE (val_type)))))
c906108c 495 {
aff410f1 496 /* Print nothing. */
c906108c 497 }
79a45b7d
TT
498 else if (options->objectprint
499 && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_CLASS))
c5aa993b 500 {
070ad9f0
DB
501
502 if (TYPE_CODE(type) == TYPE_CODE_REF)
503 {
504 /* Copy value, change to pointer, so we don't get an
aff410f1
MS
505 error about a non-pointer type in
506 value_rtti_target_type. */
6943961c 507 struct value *temparg;
070ad9f0 508 temparg=value_copy(val);
aff410f1
MS
509 deprecated_set_value_type
510 (temparg, lookup_pointer_type (TYPE_TARGET_TYPE (type)));
511 val = temparg;
070ad9f0 512 }
aff410f1 513 /* Pointer to class, check real type of object. */
c906108c 514 fprintf_filtered (stream, "(");
ec0a52e1
PA
515
516 if (value_entirely_available (val))
517 {
dfcee124
AG
518 real_type = value_rtti_indirect_type (val, &full, &top,
519 &using_enc);
ec0a52e1
PA
520 if (real_type)
521 {
522 /* RTTI entry found. */
dfcee124
AG
523 type = real_type;
524
ec0a52e1
PA
525 /* Need to adjust pointer value. */
526 val = value_from_pointer (type, value_as_address (val) - top);
527
528 /* Note: When we look up RTTI entries, we don't get
529 any information on const or volatile
530 attributes. */
531 }
532 }
c4093a6a 533 type_print (type, "", stream, -1);
c906108c 534 fprintf_filtered (stream, ") ");
6c7a06a3 535 val_type = type;
c5aa993b 536 }
c906108c
SS
537 else
538 {
c5aa993b 539 /* normal case */
c906108c 540 fprintf_filtered (stream, "(");
88750304 541 type_print (value_type (val), "", stream, -1);
c906108c
SS
542 fprintf_filtered (stream, ") ");
543 }
544 }
88750304 545
42be36b3
CT
546 if (!value_initialized (val))
547 fprintf_filtered (stream, " [uninitialized] ");
548
79a45b7d 549 if (options->objectprint && (TYPE_CODE (type) == TYPE_CODE_CLASS))
c906108c 550 {
aff410f1 551 /* Attempt to determine real type of object. */
c906108c 552 real_type = value_rtti_type (val, &full, &top, &using_enc);
c5aa993b
JM
553 if (real_type)
554 {
aff410f1
MS
555 /* We have RTTI information, so use it. */
556 val = value_full_object (val, real_type,
557 full, top, using_enc);
c5aa993b
JM
558 fprintf_filtered (stream, "(%s%s) ",
559 TYPE_NAME (real_type),
3d263c1d 560 full ? "" : _(" [incomplete object]"));
aff410f1
MS
561 /* Print out object: enclosing type is same as real_type if
562 full. */
8e069a98
TT
563 val_print (value_enclosing_type (val),
564 value_contents_for_printing (val), 0,
565 value_address (val), stream, 0,
566 val, &opts, current_language);
567 return;
aff410f1
MS
568 /* Note: When we look up RTTI entries, we don't get any
569 information on const or volatile attributes. */
c5aa993b 570 }
88750304 571 else if (type != check_typedef (value_enclosing_type (val)))
c5aa993b 572 {
aff410f1 573 /* No RTTI information, so let's do our best. */
c5aa993b 574 fprintf_filtered (stream, "(%s ?) ",
4754a64e 575 TYPE_NAME (value_enclosing_type (val)));
8e069a98
TT
576 val_print (value_enclosing_type (val),
577 value_contents_for_printing (val), 0,
578 value_address (val), stream, 0,
579 val, &opts, current_language);
580 return;
c5aa993b 581 }
aff410f1 582 /* Otherwise, we end up at the return outside this "if". */
c906108c 583 }
c5aa993b 584
8e069a98
TT
585 val_print (val_type, value_contents_for_printing (val),
586 value_embedded_offset (val),
587 value_address (val),
588 stream, 0,
589 val, &opts, current_language);
c906108c 590}