d6ec64845f4be9bd3eb10664ac86cb623d5b3b42
[binutils-gdb.git] / gdb / valprint.c
1 /* Print values for GDB, the GNU debugger.
2
3 Copyright (C) 1986-2022 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 "value.h"
24 #include "gdbcore.h"
25 #include "gdbcmd.h"
26 #include "target.h"
27 #include "language.h"
28 #include "annotate.h"
29 #include "valprint.h"
30 #include "target-float.h"
31 #include "extension.h"
32 #include "ada-lang.h"
33 #include "gdbsupport/gdb_obstack.h"
34 #include "charset.h"
35 #include "typeprint.h"
36 #include <ctype.h>
37 #include <algorithm>
38 #include "gdbsupport/byte-vector.h"
39 #include "cli/cli-option.h"
40 #include "gdbarch.h"
41 #include "cli/cli-style.h"
42 #include "count-one-bits.h"
43 #include "c-lang.h"
44 #include "cp-abi.h"
45 #include "inferior.h"
46 #include "gdbsupport/selftest.h"
47 #include "selftest-arch.h"
48
49 /* Maximum number of wchars returned from wchar_iterate. */
50 #define MAX_WCHARS 4
51
52 /* A convenience macro to compute the size of a wchar_t buffer containing X
53 characters. */
54 #define WCHAR_BUFLEN(X) ((X) * sizeof (gdb_wchar_t))
55
56 /* Character buffer size saved while iterating over wchars. */
57 #define WCHAR_BUFLEN_MAX WCHAR_BUFLEN (MAX_WCHARS)
58
59 /* A structure to encapsulate state information from iterated
60 character conversions. */
61 struct converted_character
62 {
63 /* The number of characters converted. */
64 int num_chars;
65
66 /* The result of the conversion. See charset.h for more. */
67 enum wchar_iterate_result result;
68
69 /* The (saved) converted character(s). */
70 gdb_wchar_t chars[WCHAR_BUFLEN_MAX];
71
72 /* The first converted target byte. */
73 const gdb_byte *buf;
74
75 /* The number of bytes converted. */
76 size_t buflen;
77
78 /* How many times this character(s) is repeated. */
79 int repeat_count;
80 };
81
82 /* Command lists for set/show print raw. */
83 struct cmd_list_element *setprintrawlist;
84 struct cmd_list_element *showprintrawlist;
85
86 /* Prototypes for local functions */
87
88 static int partial_memory_read (CORE_ADDR memaddr, gdb_byte *myaddr,
89 int len, int *errptr);
90
91 static void set_input_radix_1 (int, unsigned);
92
93 static void set_output_radix_1 (int, unsigned);
94
95 static void val_print_type_code_flags (struct type *type,
96 struct value *original_value,
97 int embedded_offset,
98 struct ui_file *stream);
99
100 #define PRINT_MAX_DEFAULT 200 /* Start print_max off at this value. */
101 #define PRINT_MAX_DEPTH_DEFAULT 20 /* Start print_max_depth off at this value. */
102
103 struct value_print_options user_print_options =
104 {
105 Val_prettyformat_default, /* prettyformat */
106 0, /* prettyformat_arrays */
107 0, /* prettyformat_structs */
108 0, /* vtblprint */
109 1, /* unionprint */
110 1, /* addressprint */
111 0, /* objectprint */
112 PRINT_MAX_DEFAULT, /* print_max */
113 10, /* repeat_count_threshold */
114 0, /* output_format */
115 0, /* format */
116 1, /* memory_tag_violations */
117 0, /* stop_print_at_null */
118 0, /* print_array_indexes */
119 0, /* deref_ref */
120 1, /* static_field_print */
121 1, /* pascal_static_field_print */
122 0, /* raw */
123 0, /* summary */
124 1, /* symbol_print */
125 PRINT_MAX_DEPTH_DEFAULT, /* max_depth */
126 1 /* finish_print */
127 };
128
129 /* Initialize *OPTS to be a copy of the user print options. */
130 void
131 get_user_print_options (struct value_print_options *opts)
132 {
133 *opts = user_print_options;
134 }
135
136 /* Initialize *OPTS to be a copy of the user print options, but with
137 pretty-formatting disabled. */
138 void
139 get_no_prettyformat_print_options (struct value_print_options *opts)
140 {
141 *opts = user_print_options;
142 opts->prettyformat = Val_no_prettyformat;
143 }
144
145 /* Initialize *OPTS to be a copy of the user print options, but using
146 FORMAT as the formatting option. */
147 void
148 get_formatted_print_options (struct value_print_options *opts,
149 char format)
150 {
151 *opts = user_print_options;
152 opts->format = format;
153 }
154
155 static void
156 show_print_max (struct ui_file *file, int from_tty,
157 struct cmd_list_element *c, const char *value)
158 {
159 fprintf_filtered (file,
160 _("Limit on string chars or array "
161 "elements to print is %s.\n"),
162 value);
163 }
164
165
166 /* Default input and output radixes, and output format letter. */
167
168 unsigned input_radix = 10;
169 static void
170 show_input_radix (struct ui_file *file, int from_tty,
171 struct cmd_list_element *c, const char *value)
172 {
173 fprintf_filtered (file,
174 _("Default input radix for entering numbers is %s.\n"),
175 value);
176 }
177
178 unsigned output_radix = 10;
179 static void
180 show_output_radix (struct ui_file *file, int from_tty,
181 struct cmd_list_element *c, const char *value)
182 {
183 fprintf_filtered (file,
184 _("Default output radix for printing of values is %s.\n"),
185 value);
186 }
187
188 /* By default we print arrays without printing the index of each element in
189 the array. This behavior can be changed by setting PRINT_ARRAY_INDEXES. */
190
191 static void
192 show_print_array_indexes (struct ui_file *file, int from_tty,
193 struct cmd_list_element *c, const char *value)
194 {
195 fprintf_filtered (file, _("Printing of array indexes is %s.\n"), value);
196 }
197
198 /* Print repeat counts if there are more than this many repetitions of an
199 element in an array. Referenced by the low level language dependent
200 print routines. */
201
202 static void
203 show_repeat_count_threshold (struct ui_file *file, int from_tty,
204 struct cmd_list_element *c, const char *value)
205 {
206 fprintf_filtered (file, _("Threshold for repeated print elements is %s.\n"),
207 value);
208 }
209
210 /* If nonzero, prints memory tag violations for pointers. */
211
212 static void
213 show_memory_tag_violations (struct ui_file *file, int from_tty,
214 struct cmd_list_element *c, const char *value)
215 {
216 fprintf_filtered (file,
217 _("Printing of memory tag violations is %s.\n"),
218 value);
219 }
220
221 /* If nonzero, stops printing of char arrays at first null. */
222
223 static void
224 show_stop_print_at_null (struct ui_file *file, int from_tty,
225 struct cmd_list_element *c, const char *value)
226 {
227 fprintf_filtered (file,
228 _("Printing of char arrays to stop "
229 "at first null char is %s.\n"),
230 value);
231 }
232
233 /* Controls pretty printing of structures. */
234
235 static void
236 show_prettyformat_structs (struct ui_file *file, int from_tty,
237 struct cmd_list_element *c, const char *value)
238 {
239 fprintf_filtered (file, _("Pretty formatting of structures is %s.\n"), value);
240 }
241
242 /* Controls pretty printing of arrays. */
243
244 static void
245 show_prettyformat_arrays (struct ui_file *file, int from_tty,
246 struct cmd_list_element *c, const char *value)
247 {
248 fprintf_filtered (file, _("Pretty formatting of arrays is %s.\n"), value);
249 }
250
251 /* If nonzero, causes unions inside structures or other unions to be
252 printed. */
253
254 static void
255 show_unionprint (struct ui_file *file, int from_tty,
256 struct cmd_list_element *c, const char *value)
257 {
258 fprintf_filtered (file,
259 _("Printing of unions interior to structures is %s.\n"),
260 value);
261 }
262
263 /* If nonzero, causes machine addresses to be printed in certain contexts. */
264
265 static void
266 show_addressprint (struct ui_file *file, int from_tty,
267 struct cmd_list_element *c, const char *value)
268 {
269 fprintf_filtered (file, _("Printing of addresses is %s.\n"), value);
270 }
271
272 static void
273 show_symbol_print (struct ui_file *file, int from_tty,
274 struct cmd_list_element *c, const char *value)
275 {
276 fprintf_filtered (file,
277 _("Printing of symbols when printing pointers is %s.\n"),
278 value);
279 }
280
281 \f
282
283 /* A helper function for val_print. When printing in "summary" mode,
284 we want to print scalar arguments, but not aggregate arguments.
285 This function distinguishes between the two. */
286
287 int
288 val_print_scalar_type_p (struct type *type)
289 {
290 type = check_typedef (type);
291 while (TYPE_IS_REFERENCE (type))
292 {
293 type = TYPE_TARGET_TYPE (type);
294 type = check_typedef (type);
295 }
296 switch (type->code ())
297 {
298 case TYPE_CODE_ARRAY:
299 case TYPE_CODE_STRUCT:
300 case TYPE_CODE_UNION:
301 case TYPE_CODE_SET:
302 case TYPE_CODE_STRING:
303 return 0;
304 default:
305 return 1;
306 }
307 }
308
309 /* A helper function for val_print. When printing with limited depth we
310 want to print string and scalar arguments, but not aggregate arguments.
311 This function distinguishes between the two. */
312
313 static bool
314 val_print_scalar_or_string_type_p (struct type *type,
315 const struct language_defn *language)
316 {
317 return (val_print_scalar_type_p (type)
318 || language->is_string_type_p (type));
319 }
320
321 /* See valprint.h. */
322
323 int
324 valprint_check_validity (struct ui_file *stream,
325 struct type *type,
326 LONGEST embedded_offset,
327 const struct value *val)
328 {
329 type = check_typedef (type);
330
331 if (type_not_associated (type))
332 {
333 val_print_not_associated (stream);
334 return 0;
335 }
336
337 if (type_not_allocated (type))
338 {
339 val_print_not_allocated (stream);
340 return 0;
341 }
342
343 if (type->code () != TYPE_CODE_UNION
344 && type->code () != TYPE_CODE_STRUCT
345 && type->code () != TYPE_CODE_ARRAY)
346 {
347 if (value_bits_any_optimized_out (val,
348 TARGET_CHAR_BIT * embedded_offset,
349 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
350 {
351 val_print_optimized_out (val, stream);
352 return 0;
353 }
354
355 if (value_bits_synthetic_pointer (val, TARGET_CHAR_BIT * embedded_offset,
356 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
357 {
358 const int is_ref = type->code () == TYPE_CODE_REF;
359 int ref_is_addressable = 0;
360
361 if (is_ref)
362 {
363 const struct value *deref_val = coerce_ref_if_computed (val);
364
365 if (deref_val != NULL)
366 ref_is_addressable = value_lval_const (deref_val) == lval_memory;
367 }
368
369 if (!is_ref || !ref_is_addressable)
370 fputs_styled (_("<synthetic pointer>"), metadata_style.style (),
371 stream);
372
373 /* C++ references should be valid even if they're synthetic. */
374 return is_ref;
375 }
376
377 if (!value_bytes_available (val, embedded_offset, TYPE_LENGTH (type)))
378 {
379 val_print_unavailable (stream);
380 return 0;
381 }
382 }
383
384 return 1;
385 }
386
387 void
388 val_print_optimized_out (const struct value *val, struct ui_file *stream)
389 {
390 if (val != NULL && value_lval_const (val) == lval_register)
391 val_print_not_saved (stream);
392 else
393 fprintf_styled (stream, metadata_style.style (), _("<optimized out>"));
394 }
395
396 void
397 val_print_not_saved (struct ui_file *stream)
398 {
399 fprintf_styled (stream, metadata_style.style (), _("<not saved>"));
400 }
401
402 void
403 val_print_unavailable (struct ui_file *stream)
404 {
405 fprintf_styled (stream, metadata_style.style (), _("<unavailable>"));
406 }
407
408 void
409 val_print_invalid_address (struct ui_file *stream)
410 {
411 fprintf_styled (stream, metadata_style.style (), _("<invalid address>"));
412 }
413
414 /* Print a pointer based on the type of its target.
415
416 Arguments to this functions are roughly the same as those in
417 generic_val_print. A difference is that ADDRESS is the address to print,
418 with embedded_offset already added. ELTTYPE represents
419 the pointed type after check_typedef. */
420
421 static void
422 print_unpacked_pointer (struct type *type, struct type *elttype,
423 CORE_ADDR address, struct ui_file *stream,
424 const struct value_print_options *options)
425 {
426 struct gdbarch *gdbarch = type->arch ();
427
428 if (elttype->code () == TYPE_CODE_FUNC)
429 {
430 /* Try to print what function it points to. */
431 print_function_pointer_address (options, gdbarch, address, stream);
432 return;
433 }
434
435 if (options->symbol_print)
436 print_address_demangle (options, gdbarch, address, stream, demangle);
437 else if (options->addressprint)
438 fputs_filtered (paddress (gdbarch, address), stream);
439 }
440
441 /* generic_val_print helper for TYPE_CODE_ARRAY. */
442
443 static void
444 generic_val_print_array (struct value *val,
445 struct ui_file *stream, int recurse,
446 const struct value_print_options *options,
447 const struct
448 generic_val_print_decorations *decorations)
449 {
450 struct type *type = check_typedef (value_type (val));
451 struct type *unresolved_elttype = TYPE_TARGET_TYPE (type);
452 struct type *elttype = check_typedef (unresolved_elttype);
453
454 if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (unresolved_elttype) > 0)
455 {
456 LONGEST low_bound, high_bound;
457
458 if (!get_array_bounds (type, &low_bound, &high_bound))
459 error (_("Could not determine the array high bound"));
460
461 fputs_filtered (decorations->array_start, stream);
462 value_print_array_elements (val, stream, recurse, options, 0);
463 fputs_filtered (decorations->array_end, stream);
464 }
465 else
466 {
467 /* Array of unspecified length: treat like pointer to first elt. */
468 print_unpacked_pointer (type, elttype, value_address (val),
469 stream, options);
470 }
471
472 }
473
474 /* generic_value_print helper for TYPE_CODE_PTR. */
475
476 static void
477 generic_value_print_ptr (struct value *val, struct ui_file *stream,
478 const struct value_print_options *options)
479 {
480
481 if (options->format && options->format != 's')
482 value_print_scalar_formatted (val, options, 0, stream);
483 else
484 {
485 struct type *type = check_typedef (value_type (val));
486 struct type *elttype = check_typedef (TYPE_TARGET_TYPE (type));
487 const gdb_byte *valaddr = value_contents_for_printing (val).data ();
488 CORE_ADDR addr = unpack_pointer (type, valaddr);
489
490 print_unpacked_pointer (type, elttype, addr, stream, options);
491 }
492 }
493
494
495 /* Print '@' followed by the address contained in ADDRESS_BUFFER. */
496
497 static void
498 print_ref_address (struct type *type, const gdb_byte *address_buffer,
499 int embedded_offset, struct ui_file *stream)
500 {
501 struct gdbarch *gdbarch = type->arch ();
502
503 if (address_buffer != NULL)
504 {
505 CORE_ADDR address
506 = extract_typed_address (address_buffer + embedded_offset, type);
507
508 fprintf_filtered (stream, "@");
509 fputs_filtered (paddress (gdbarch, address), stream);
510 }
511 /* Else: we have a non-addressable value, such as a DW_AT_const_value. */
512 }
513
514 /* If VAL is addressable, return the value contents buffer of a value that
515 represents a pointer to VAL. Otherwise return NULL. */
516
517 static const gdb_byte *
518 get_value_addr_contents (struct value *deref_val)
519 {
520 gdb_assert (deref_val != NULL);
521
522 if (value_lval_const (deref_val) == lval_memory)
523 return value_contents_for_printing_const (value_addr (deref_val)).data ();
524 else
525 {
526 /* We have a non-addressable value, such as a DW_AT_const_value. */
527 return NULL;
528 }
529 }
530
531 /* generic_val_print helper for TYPE_CODE_{RVALUE_,}REF. */
532
533 static void
534 generic_val_print_ref (struct type *type,
535 int embedded_offset, struct ui_file *stream, int recurse,
536 struct value *original_value,
537 const struct value_print_options *options)
538 {
539 struct type *elttype = check_typedef (TYPE_TARGET_TYPE (type));
540 struct value *deref_val = NULL;
541 const int value_is_synthetic
542 = value_bits_synthetic_pointer (original_value,
543 TARGET_CHAR_BIT * embedded_offset,
544 TARGET_CHAR_BIT * TYPE_LENGTH (type));
545 const int must_coerce_ref = ((options->addressprint && value_is_synthetic)
546 || options->deref_ref);
547 const int type_is_defined = elttype->code () != TYPE_CODE_UNDEF;
548 const gdb_byte *valaddr = value_contents_for_printing (original_value).data ();
549
550 if (must_coerce_ref && type_is_defined)
551 {
552 deref_val = coerce_ref_if_computed (original_value);
553
554 if (deref_val != NULL)
555 {
556 /* More complicated computed references are not supported. */
557 gdb_assert (embedded_offset == 0);
558 }
559 else
560 deref_val = value_at (TYPE_TARGET_TYPE (type),
561 unpack_pointer (type, valaddr + embedded_offset));
562 }
563 /* Else, original_value isn't a synthetic reference or we don't have to print
564 the reference's contents.
565
566 Notice that for references to TYPE_CODE_STRUCT, 'set print object on' will
567 cause original_value to be a not_lval instead of an lval_computed,
568 which will make value_bits_synthetic_pointer return false.
569 This happens because if options->objectprint is true, c_value_print will
570 overwrite original_value's contents with the result of coercing
571 the reference through value_addr, and then set its type back to
572 TYPE_CODE_REF. In that case we don't have to coerce the reference again;
573 we can simply treat it as non-synthetic and move on. */
574
575 if (options->addressprint)
576 {
577 const gdb_byte *address = (value_is_synthetic && type_is_defined
578 ? get_value_addr_contents (deref_val)
579 : valaddr);
580
581 print_ref_address (type, address, embedded_offset, stream);
582
583 if (options->deref_ref)
584 fputs_filtered (": ", stream);
585 }
586
587 if (options->deref_ref)
588 {
589 if (type_is_defined)
590 common_val_print (deref_val, stream, recurse, options,
591 current_language);
592 else
593 fputs_filtered ("???", stream);
594 }
595 }
596
597 /* Helper function for generic_val_print_enum.
598 This is also used to print enums in TYPE_CODE_FLAGS values. */
599
600 static void
601 generic_val_print_enum_1 (struct type *type, LONGEST val,
602 struct ui_file *stream)
603 {
604 unsigned int i;
605 unsigned int len;
606
607 len = type->num_fields ();
608 for (i = 0; i < len; i++)
609 {
610 QUIT;
611 if (val == type->field (i).loc_enumval ())
612 {
613 break;
614 }
615 }
616 if (i < len)
617 {
618 fputs_styled (type->field (i).name (), variable_name_style.style (),
619 stream);
620 }
621 else if (type->is_flag_enum ())
622 {
623 int first = 1;
624
625 /* We have a "flag" enum, so we try to decompose it into pieces as
626 appropriate. The enum may have multiple enumerators representing
627 the same bit, in which case we choose to only print the first one
628 we find. */
629 for (i = 0; i < len; ++i)
630 {
631 QUIT;
632
633 ULONGEST enumval = type->field (i).loc_enumval ();
634 int nbits = count_one_bits_ll (enumval);
635
636 gdb_assert (nbits == 0 || nbits == 1);
637
638 if ((val & enumval) != 0)
639 {
640 if (first)
641 {
642 fputs_filtered ("(", stream);
643 first = 0;
644 }
645 else
646 fputs_filtered (" | ", stream);
647
648 val &= ~type->field (i).loc_enumval ();
649 fputs_styled (type->field (i).name (),
650 variable_name_style.style (), stream);
651 }
652 }
653
654 if (val != 0)
655 {
656 /* There are leftover bits, print them. */
657 if (first)
658 fputs_filtered ("(", stream);
659 else
660 fputs_filtered (" | ", stream);
661
662 fputs_filtered ("unknown: 0x", stream);
663 print_longest (stream, 'x', 0, val);
664 fputs_filtered (")", stream);
665 }
666 else if (first)
667 {
668 /* Nothing has been printed and the value is 0, the enum value must
669 have been 0. */
670 fputs_filtered ("0", stream);
671 }
672 else
673 {
674 /* Something has been printed, close the parenthesis. */
675 fputs_filtered (")", stream);
676 }
677 }
678 else
679 print_longest (stream, 'd', 0, val);
680 }
681
682 /* generic_val_print helper for TYPE_CODE_ENUM. */
683
684 static void
685 generic_val_print_enum (struct type *type,
686 int embedded_offset, struct ui_file *stream,
687 struct value *original_value,
688 const struct value_print_options *options)
689 {
690 LONGEST val;
691 struct gdbarch *gdbarch = type->arch ();
692 int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
693
694 gdb_assert (!options->format);
695
696 const gdb_byte *valaddr = value_contents_for_printing (original_value).data ();
697
698 val = unpack_long (type, valaddr + embedded_offset * unit_size);
699
700 generic_val_print_enum_1 (type, val, stream);
701 }
702
703 /* generic_val_print helper for TYPE_CODE_FUNC and TYPE_CODE_METHOD. */
704
705 static void
706 generic_val_print_func (struct type *type,
707 int embedded_offset, CORE_ADDR address,
708 struct ui_file *stream,
709 struct value *original_value,
710 const struct value_print_options *options)
711 {
712 struct gdbarch *gdbarch = type->arch ();
713
714 gdb_assert (!options->format);
715
716 /* FIXME, we should consider, at least for ANSI C language,
717 eliminating the distinction made between FUNCs and POINTERs to
718 FUNCs. */
719 fprintf_filtered (stream, "{");
720 type_print (type, "", stream, -1);
721 fprintf_filtered (stream, "} ");
722 /* Try to print what function it points to, and its address. */
723 print_address_demangle (options, gdbarch, address, stream, demangle);
724 }
725
726 /* generic_value_print helper for TYPE_CODE_BOOL. */
727
728 static void
729 generic_value_print_bool
730 (struct value *value, struct ui_file *stream,
731 const struct value_print_options *options,
732 const struct generic_val_print_decorations *decorations)
733 {
734 if (options->format || options->output_format)
735 {
736 struct value_print_options opts = *options;
737 opts.format = (options->format ? options->format
738 : options->output_format);
739 value_print_scalar_formatted (value, &opts, 0, stream);
740 }
741 else
742 {
743 const gdb_byte *valaddr = value_contents_for_printing (value).data ();
744 struct type *type = check_typedef (value_type (value));
745 LONGEST val = unpack_long (type, valaddr);
746 if (val == 0)
747 fputs_filtered (decorations->false_name, stream);
748 else if (val == 1)
749 fputs_filtered (decorations->true_name, stream);
750 else
751 print_longest (stream, 'd', 0, val);
752 }
753 }
754
755 /* generic_value_print helper for TYPE_CODE_INT. */
756
757 static void
758 generic_value_print_int (struct value *val, struct ui_file *stream,
759 const struct value_print_options *options)
760 {
761 struct value_print_options opts = *options;
762
763 opts.format = (options->format ? options->format
764 : options->output_format);
765 value_print_scalar_formatted (val, &opts, 0, stream);
766 }
767
768 /* generic_value_print helper for TYPE_CODE_CHAR. */
769
770 static void
771 generic_value_print_char (struct value *value, struct ui_file *stream,
772 const struct value_print_options *options)
773 {
774 if (options->format || options->output_format)
775 {
776 struct value_print_options opts = *options;
777
778 opts.format = (options->format ? options->format
779 : options->output_format);
780 value_print_scalar_formatted (value, &opts, 0, stream);
781 }
782 else
783 {
784 struct type *unresolved_type = value_type (value);
785 struct type *type = check_typedef (unresolved_type);
786 const gdb_byte *valaddr = value_contents_for_printing (value).data ();
787
788 LONGEST val = unpack_long (type, valaddr);
789 if (type->is_unsigned ())
790 fprintf_filtered (stream, "%u", (unsigned int) val);
791 else
792 fprintf_filtered (stream, "%d", (int) val);
793 fputs_filtered (" ", stream);
794 current_language->printchar (val, unresolved_type, stream);
795 }
796 }
797
798 /* generic_val_print helper for TYPE_CODE_FLT and TYPE_CODE_DECFLOAT. */
799
800 static void
801 generic_val_print_float (struct type *type, struct ui_file *stream,
802 struct value *original_value,
803 const struct value_print_options *options)
804 {
805 gdb_assert (!options->format);
806
807 const gdb_byte *valaddr = value_contents_for_printing (original_value).data ();
808
809 print_floating (valaddr, type, stream);
810 }
811
812 /* generic_val_print helper for TYPE_CODE_FIXED_POINT. */
813
814 static void
815 generic_val_print_fixed_point (struct value *val, struct ui_file *stream,
816 const struct value_print_options *options)
817 {
818 if (options->format)
819 value_print_scalar_formatted (val, options, 0, stream);
820 else
821 {
822 struct type *type = value_type (val);
823
824 const gdb_byte *valaddr = value_contents_for_printing (val).data ();
825 gdb_mpf f;
826
827 f.read_fixed_point (gdb::make_array_view (valaddr, TYPE_LENGTH (type)),
828 type_byte_order (type), type->is_unsigned (),
829 type->fixed_point_scaling_factor ());
830
831 const char *fmt = TYPE_LENGTH (type) < 4 ? "%.11Fg" : "%.17Fg";
832 std::string str = gmp_string_printf (fmt, f.val);
833 fprintf_filtered (stream, "%s", str.c_str ());
834 }
835 }
836
837 /* generic_value_print helper for TYPE_CODE_COMPLEX. */
838
839 static void
840 generic_value_print_complex (struct value *val, struct ui_file *stream,
841 const struct value_print_options *options,
842 const struct generic_val_print_decorations
843 *decorations)
844 {
845 fprintf_filtered (stream, "%s", decorations->complex_prefix);
846
847 struct value *real_part = value_real_part (val);
848 value_print_scalar_formatted (real_part, options, 0, stream);
849 fprintf_filtered (stream, "%s", decorations->complex_infix);
850
851 struct value *imag_part = value_imaginary_part (val);
852 value_print_scalar_formatted (imag_part, options, 0, stream);
853 fprintf_filtered (stream, "%s", decorations->complex_suffix);
854 }
855
856 /* generic_value_print helper for TYPE_CODE_MEMBERPTR. */
857
858 static void
859 generic_value_print_memberptr
860 (struct value *val, struct ui_file *stream,
861 int recurse,
862 const struct value_print_options *options,
863 const struct generic_val_print_decorations *decorations)
864 {
865 if (!options->format)
866 {
867 /* Member pointers are essentially specific to C++, and so if we
868 encounter one, we should print it according to C++ rules. */
869 struct type *type = check_typedef (value_type (val));
870 const gdb_byte *valaddr = value_contents_for_printing (val).data ();
871 cp_print_class_member (valaddr, type, stream, "&");
872 }
873 else
874 generic_value_print (val, stream, recurse, options, decorations);
875 }
876
877 /* See valprint.h. */
878
879 void
880 generic_value_print (struct value *val, struct ui_file *stream, int recurse,
881 const struct value_print_options *options,
882 const struct generic_val_print_decorations *decorations)
883 {
884 struct type *type = value_type (val);
885
886 type = check_typedef (type);
887
888 if (is_fixed_point_type (type))
889 type = type->fixed_point_type_base_type ();
890
891 switch (type->code ())
892 {
893 case TYPE_CODE_ARRAY:
894 generic_val_print_array (val, stream, recurse, options, decorations);
895 break;
896
897 case TYPE_CODE_MEMBERPTR:
898 generic_value_print_memberptr (val, stream, recurse, options,
899 decorations);
900 break;
901
902 case TYPE_CODE_PTR:
903 generic_value_print_ptr (val, stream, options);
904 break;
905
906 case TYPE_CODE_REF:
907 case TYPE_CODE_RVALUE_REF:
908 generic_val_print_ref (type, 0, stream, recurse,
909 val, options);
910 break;
911
912 case TYPE_CODE_ENUM:
913 if (options->format)
914 value_print_scalar_formatted (val, options, 0, stream);
915 else
916 generic_val_print_enum (type, 0, stream, val, options);
917 break;
918
919 case TYPE_CODE_FLAGS:
920 if (options->format)
921 value_print_scalar_formatted (val, options, 0, stream);
922 else
923 val_print_type_code_flags (type, val, 0, stream);
924 break;
925
926 case TYPE_CODE_FUNC:
927 case TYPE_CODE_METHOD:
928 if (options->format)
929 value_print_scalar_formatted (val, options, 0, stream);
930 else
931 generic_val_print_func (type, 0, value_address (val), stream,
932 val, options);
933 break;
934
935 case TYPE_CODE_BOOL:
936 generic_value_print_bool (val, stream, options, decorations);
937 break;
938
939 case TYPE_CODE_RANGE:
940 case TYPE_CODE_INT:
941 generic_value_print_int (val, stream, options);
942 break;
943
944 case TYPE_CODE_CHAR:
945 generic_value_print_char (val, stream, options);
946 break;
947
948 case TYPE_CODE_FLT:
949 case TYPE_CODE_DECFLOAT:
950 if (options->format)
951 value_print_scalar_formatted (val, options, 0, stream);
952 else
953 generic_val_print_float (type, stream, val, options);
954 break;
955
956 case TYPE_CODE_FIXED_POINT:
957 generic_val_print_fixed_point (val, stream, options);
958 break;
959
960 case TYPE_CODE_VOID:
961 fputs_filtered (decorations->void_name, stream);
962 break;
963
964 case TYPE_CODE_ERROR:
965 fprintf_filtered (stream, "%s", TYPE_ERROR_NAME (type));
966 break;
967
968 case TYPE_CODE_UNDEF:
969 /* This happens (without TYPE_STUB set) on systems which don't use
970 dbx xrefs (NO_DBX_XREFS in gcc) if a file has a "struct foo *bar"
971 and no complete type for struct foo in that file. */
972 fprintf_styled (stream, metadata_style.style (), _("<incomplete type>"));
973 break;
974
975 case TYPE_CODE_COMPLEX:
976 generic_value_print_complex (val, stream, options, decorations);
977 break;
978
979 case TYPE_CODE_METHODPTR:
980 cplus_print_method_ptr (value_contents_for_printing (val).data (), type,
981 stream);
982 break;
983
984 case TYPE_CODE_UNION:
985 case TYPE_CODE_STRUCT:
986 default:
987 error (_("Unhandled type code %d in symbol table."),
988 type->code ());
989 }
990 }
991
992 /* Print using the given LANGUAGE the value VAL onto stream STREAM according
993 to OPTIONS.
994
995 This is a preferable interface to val_print, above, because it uses
996 GDB's value mechanism. */
997
998 void
999 common_val_print (struct value *value, struct ui_file *stream, int recurse,
1000 const struct value_print_options *options,
1001 const struct language_defn *language)
1002 {
1003 if (language->la_language == language_ada)
1004 /* The value might have a dynamic type, which would cause trouble
1005 below when trying to extract the value contents (since the value
1006 size is determined from the type size which is unknown). So
1007 get a fixed representation of our value. */
1008 value = ada_to_fixed_value (value);
1009
1010 if (value_lazy (value))
1011 value_fetch_lazy (value);
1012
1013 struct value_print_options local_opts = *options;
1014 struct type *type = value_type (value);
1015 struct type *real_type = check_typedef (type);
1016
1017 if (local_opts.prettyformat == Val_prettyformat_default)
1018 local_opts.prettyformat = (local_opts.prettyformat_structs
1019 ? Val_prettyformat : Val_no_prettyformat);
1020
1021 QUIT;
1022
1023 /* Ensure that the type is complete and not just a stub. If the type is
1024 only a stub and we can't find and substitute its complete type, then
1025 print appropriate string and return. */
1026
1027 if (real_type->is_stub ())
1028 {
1029 fprintf_styled (stream, metadata_style.style (), _("<incomplete type>"));
1030 return;
1031 }
1032
1033 if (!valprint_check_validity (stream, real_type, 0, value))
1034 return;
1035
1036 if (!options->raw)
1037 {
1038 if (apply_ext_lang_val_pretty_printer (value, stream, recurse, options,
1039 language))
1040 return;
1041 }
1042
1043 /* Handle summary mode. If the value is a scalar, print it;
1044 otherwise, print an ellipsis. */
1045 if (options->summary && !val_print_scalar_type_p (type))
1046 {
1047 fprintf_filtered (stream, "...");
1048 return;
1049 }
1050
1051 /* If this value is too deep then don't print it. */
1052 if (!val_print_scalar_or_string_type_p (type, language)
1053 && val_print_check_max_depth (stream, recurse, options, language))
1054 return;
1055
1056 try
1057 {
1058 language->value_print_inner (value, stream, recurse, &local_opts);
1059 }
1060 catch (const gdb_exception_error &except)
1061 {
1062 fprintf_styled (stream, metadata_style.style (),
1063 _("<error reading variable: %s>"), except.what ());
1064 }
1065 }
1066
1067 /* See valprint.h. */
1068
1069 bool
1070 val_print_check_max_depth (struct ui_file *stream, int recurse,
1071 const struct value_print_options *options,
1072 const struct language_defn *language)
1073 {
1074 if (options->max_depth > -1 && recurse >= options->max_depth)
1075 {
1076 gdb_assert (language->struct_too_deep_ellipsis () != NULL);
1077 fputs_filtered (language->struct_too_deep_ellipsis (), stream);
1078 return true;
1079 }
1080
1081 return false;
1082 }
1083
1084 /* Check whether the value VAL is printable. Return 1 if it is;
1085 return 0 and print an appropriate error message to STREAM according to
1086 OPTIONS if it is not. */
1087
1088 static int
1089 value_check_printable (struct value *val, struct ui_file *stream,
1090 const struct value_print_options *options)
1091 {
1092 if (val == 0)
1093 {
1094 fprintf_styled (stream, metadata_style.style (),
1095 _("<address of value unknown>"));
1096 return 0;
1097 }
1098
1099 if (value_entirely_optimized_out (val))
1100 {
1101 if (options->summary && !val_print_scalar_type_p (value_type (val)))
1102 fprintf_filtered (stream, "...");
1103 else
1104 val_print_optimized_out (val, stream);
1105 return 0;
1106 }
1107
1108 if (value_entirely_unavailable (val))
1109 {
1110 if (options->summary && !val_print_scalar_type_p (value_type (val)))
1111 fprintf_filtered (stream, "...");
1112 else
1113 val_print_unavailable (stream);
1114 return 0;
1115 }
1116
1117 if (value_type (val)->code () == TYPE_CODE_INTERNAL_FUNCTION)
1118 {
1119 fprintf_styled (stream, metadata_style.style (),
1120 _("<internal function %s>"),
1121 value_internal_function_name (val));
1122 return 0;
1123 }
1124
1125 if (type_not_associated (value_type (val)))
1126 {
1127 val_print_not_associated (stream);
1128 return 0;
1129 }
1130
1131 if (type_not_allocated (value_type (val)))
1132 {
1133 val_print_not_allocated (stream);
1134 return 0;
1135 }
1136
1137 return 1;
1138 }
1139
1140 /* See valprint.h. */
1141
1142 void
1143 common_val_print_checked (struct value *val, struct ui_file *stream,
1144 int recurse,
1145 const struct value_print_options *options,
1146 const struct language_defn *language)
1147 {
1148 if (!value_check_printable (val, stream, options))
1149 return;
1150 common_val_print (val, stream, recurse, options, language);
1151 }
1152
1153 /* Print on stream STREAM the value VAL according to OPTIONS. The value
1154 is printed using the current_language syntax. */
1155
1156 void
1157 value_print (struct value *val, struct ui_file *stream,
1158 const struct value_print_options *options)
1159 {
1160 scoped_value_mark free_values;
1161
1162 if (!value_check_printable (val, stream, options))
1163 return;
1164
1165 if (!options->raw)
1166 {
1167 int r
1168 = apply_ext_lang_val_pretty_printer (val, stream, 0, options,
1169 current_language);
1170
1171 if (r)
1172 return;
1173 }
1174
1175 current_language->value_print (val, stream, options);
1176 }
1177
1178 static void
1179 val_print_type_code_flags (struct type *type, struct value *original_value,
1180 int embedded_offset, struct ui_file *stream)
1181 {
1182 const gdb_byte *valaddr = (value_contents_for_printing (original_value).data ()
1183 + embedded_offset);
1184 ULONGEST val = unpack_long (type, valaddr);
1185 int field, nfields = type->num_fields ();
1186 struct gdbarch *gdbarch = type->arch ();
1187 struct type *bool_type = builtin_type (gdbarch)->builtin_bool;
1188
1189 fputs_filtered ("[", stream);
1190 for (field = 0; field < nfields; field++)
1191 {
1192 if (type->field (field).name ()[0] != '\0')
1193 {
1194 struct type *field_type = type->field (field).type ();
1195
1196 if (field_type == bool_type
1197 /* We require boolean types here to be one bit wide. This is a
1198 problematic place to notify the user of an internal error
1199 though. Instead just fall through and print the field as an
1200 int. */
1201 && TYPE_FIELD_BITSIZE (type, field) == 1)
1202 {
1203 if (val & ((ULONGEST)1 << type->field (field).loc_bitpos ()))
1204 fprintf_filtered
1205 (stream, " %ps",
1206 styled_string (variable_name_style.style (),
1207 type->field (field).name ()));
1208 }
1209 else
1210 {
1211 unsigned field_len = TYPE_FIELD_BITSIZE (type, field);
1212 ULONGEST field_val = val >> type->field (field).loc_bitpos ();
1213
1214 if (field_len < sizeof (ULONGEST) * TARGET_CHAR_BIT)
1215 field_val &= ((ULONGEST) 1 << field_len) - 1;
1216 fprintf_filtered (stream, " %ps=",
1217 styled_string (variable_name_style.style (),
1218 type->field (field).name ()));
1219 if (field_type->code () == TYPE_CODE_ENUM)
1220 generic_val_print_enum_1 (field_type, field_val, stream);
1221 else
1222 print_longest (stream, 'd', 0, field_val);
1223 }
1224 }
1225 }
1226 fputs_filtered (" ]", stream);
1227 }
1228
1229 /* See valprint.h. */
1230
1231 void
1232 value_print_scalar_formatted (struct value *val,
1233 const struct value_print_options *options,
1234 int size,
1235 struct ui_file *stream)
1236 {
1237 struct type *type = check_typedef (value_type (val));
1238
1239 gdb_assert (val != NULL);
1240
1241 /* If we get here with a string format, try again without it. Go
1242 all the way back to the language printers, which may call us
1243 again. */
1244 if (options->format == 's')
1245 {
1246 struct value_print_options opts = *options;
1247 opts.format = 0;
1248 opts.deref_ref = 0;
1249 common_val_print (val, stream, 0, &opts, current_language);
1250 return;
1251 }
1252
1253 /* value_contents_for_printing fetches all VAL's contents. They are
1254 needed to check whether VAL is optimized-out or unavailable
1255 below. */
1256 const gdb_byte *valaddr = value_contents_for_printing (val).data ();
1257
1258 /* A scalar object that does not have all bits available can't be
1259 printed, because all bits contribute to its representation. */
1260 if (value_bits_any_optimized_out (val, 0,
1261 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
1262 val_print_optimized_out (val, stream);
1263 else if (!value_bytes_available (val, 0, TYPE_LENGTH (type)))
1264 val_print_unavailable (stream);
1265 else
1266 print_scalar_formatted (valaddr, type, options, size, stream);
1267 }
1268
1269 /* Print a number according to FORMAT which is one of d,u,x,o,b,h,w,g.
1270 The raison d'etre of this function is to consolidate printing of
1271 LONG_LONG's into this one function. The format chars b,h,w,g are
1272 from print_scalar_formatted(). Numbers are printed using C
1273 format.
1274
1275 USE_C_FORMAT means to use C format in all cases. Without it,
1276 'o' and 'x' format do not include the standard C radix prefix
1277 (leading 0 or 0x).
1278
1279 Hilfinger/2004-09-09: USE_C_FORMAT was originally called USE_LOCAL
1280 and was intended to request formatting according to the current
1281 language and would be used for most integers that GDB prints. The
1282 exceptional cases were things like protocols where the format of
1283 the integer is a protocol thing, not a user-visible thing). The
1284 parameter remains to preserve the information of what things might
1285 be printed with language-specific format, should we ever resurrect
1286 that capability. */
1287
1288 void
1289 print_longest (struct ui_file *stream, int format, int use_c_format,
1290 LONGEST val_long)
1291 {
1292 const char *val;
1293
1294 switch (format)
1295 {
1296 case 'd':
1297 val = int_string (val_long, 10, 1, 0, 1); break;
1298 case 'u':
1299 val = int_string (val_long, 10, 0, 0, 1); break;
1300 case 'x':
1301 val = int_string (val_long, 16, 0, 0, use_c_format); break;
1302 case 'b':
1303 val = int_string (val_long, 16, 0, 2, 1); break;
1304 case 'h':
1305 val = int_string (val_long, 16, 0, 4, 1); break;
1306 case 'w':
1307 val = int_string (val_long, 16, 0, 8, 1); break;
1308 case 'g':
1309 val = int_string (val_long, 16, 0, 16, 1); break;
1310 break;
1311 case 'o':
1312 val = int_string (val_long, 8, 0, 0, use_c_format); break;
1313 default:
1314 internal_error (__FILE__, __LINE__,
1315 _("failed internal consistency check"));
1316 }
1317 fputs_filtered (val, stream);
1318 }
1319
1320 /* This used to be a macro, but I don't think it is called often enough
1321 to merit such treatment. */
1322 /* Convert a LONGEST to an int. This is used in contexts (e.g. number of
1323 arguments to a function, number in a value history, register number, etc.)
1324 where the value must not be larger than can fit in an int. */
1325
1326 int
1327 longest_to_int (LONGEST arg)
1328 {
1329 /* Let the compiler do the work. */
1330 int rtnval = (int) arg;
1331
1332 /* Check for overflows or underflows. */
1333 if (sizeof (LONGEST) > sizeof (int))
1334 {
1335 if (rtnval != arg)
1336 {
1337 error (_("Value out of range."));
1338 }
1339 }
1340 return (rtnval);
1341 }
1342
1343 /* Print a floating point value of floating-point type TYPE,
1344 pointed to in GDB by VALADDR, on STREAM. */
1345
1346 void
1347 print_floating (const gdb_byte *valaddr, struct type *type,
1348 struct ui_file *stream)
1349 {
1350 std::string str = target_float_to_string (valaddr, type);
1351 fputs_filtered (str.c_str (), stream);
1352 }
1353
1354 void
1355 print_binary_chars (struct ui_file *stream, const gdb_byte *valaddr,
1356 unsigned len, enum bfd_endian byte_order, bool zero_pad)
1357 {
1358 const gdb_byte *p;
1359 unsigned int i;
1360 int b;
1361 bool seen_a_one = false;
1362
1363 /* Declared "int" so it will be signed.
1364 This ensures that right shift will shift in zeros. */
1365
1366 const int mask = 0x080;
1367
1368 if (byte_order == BFD_ENDIAN_BIG)
1369 {
1370 for (p = valaddr;
1371 p < valaddr + len;
1372 p++)
1373 {
1374 /* Every byte has 8 binary characters; peel off
1375 and print from the MSB end. */
1376
1377 for (i = 0; i < (HOST_CHAR_BIT * sizeof (*p)); i++)
1378 {
1379 if (*p & (mask >> i))
1380 b = '1';
1381 else
1382 b = '0';
1383
1384 if (zero_pad || seen_a_one || b == '1')
1385 fputc_filtered (b, stream);
1386 if (b == '1')
1387 seen_a_one = true;
1388 }
1389 }
1390 }
1391 else
1392 {
1393 for (p = valaddr + len - 1;
1394 p >= valaddr;
1395 p--)
1396 {
1397 for (i = 0; i < (HOST_CHAR_BIT * sizeof (*p)); i++)
1398 {
1399 if (*p & (mask >> i))
1400 b = '1';
1401 else
1402 b = '0';
1403
1404 if (zero_pad || seen_a_one || b == '1')
1405 fputc_filtered (b, stream);
1406 if (b == '1')
1407 seen_a_one = true;
1408 }
1409 }
1410 }
1411
1412 /* When not zero-padding, ensure that something is printed when the
1413 input is 0. */
1414 if (!zero_pad && !seen_a_one)
1415 fputc_filtered ('0', stream);
1416 }
1417
1418 /* A helper for print_octal_chars that emits a single octal digit,
1419 optionally suppressing it if is zero and updating SEEN_A_ONE. */
1420
1421 static void
1422 emit_octal_digit (struct ui_file *stream, bool *seen_a_one, int digit)
1423 {
1424 if (*seen_a_one || digit != 0)
1425 fprintf_filtered (stream, "%o", digit);
1426 if (digit != 0)
1427 *seen_a_one = true;
1428 }
1429
1430 /* VALADDR points to an integer of LEN bytes.
1431 Print it in octal on stream or format it in buf. */
1432
1433 void
1434 print_octal_chars (struct ui_file *stream, const gdb_byte *valaddr,
1435 unsigned len, enum bfd_endian byte_order)
1436 {
1437 const gdb_byte *p;
1438 unsigned char octa1, octa2, octa3, carry;
1439 int cycle;
1440
1441 /* Octal is 3 bits, which doesn't fit. Yuk. So we have to track
1442 * the extra bits, which cycle every three bytes:
1443 *
1444 * Byte side: 0 1 2 3
1445 * | | | |
1446 * bit number 123 456 78 | 9 012 345 6 | 78 901 234 | 567 890 12 |
1447 *
1448 * Octal side: 0 1 carry 3 4 carry ...
1449 *
1450 * Cycle number: 0 1 2
1451 *
1452 * But of course we are printing from the high side, so we have to
1453 * figure out where in the cycle we are so that we end up with no
1454 * left over bits at the end.
1455 */
1456 #define BITS_IN_OCTAL 3
1457 #define HIGH_ZERO 0340
1458 #define LOW_ZERO 0034
1459 #define CARRY_ZERO 0003
1460 static_assert (HIGH_ZERO + LOW_ZERO + CARRY_ZERO == 0xff,
1461 "cycle zero constants are wrong");
1462 #define HIGH_ONE 0200
1463 #define MID_ONE 0160
1464 #define LOW_ONE 0016
1465 #define CARRY_ONE 0001
1466 static_assert (HIGH_ONE + MID_ONE + LOW_ONE + CARRY_ONE == 0xff,
1467 "cycle one constants are wrong");
1468 #define HIGH_TWO 0300
1469 #define MID_TWO 0070
1470 #define LOW_TWO 0007
1471 static_assert (HIGH_TWO + MID_TWO + LOW_TWO == 0xff,
1472 "cycle two constants are wrong");
1473
1474 /* For 32 we start in cycle 2, with two bits and one bit carry;
1475 for 64 in cycle in cycle 1, with one bit and a two bit carry. */
1476
1477 cycle = (len * HOST_CHAR_BIT) % BITS_IN_OCTAL;
1478 carry = 0;
1479
1480 fputs_filtered ("0", stream);
1481 bool seen_a_one = false;
1482 if (byte_order == BFD_ENDIAN_BIG)
1483 {
1484 for (p = valaddr;
1485 p < valaddr + len;
1486 p++)
1487 {
1488 switch (cycle)
1489 {
1490 case 0:
1491 /* No carry in, carry out two bits. */
1492
1493 octa1 = (HIGH_ZERO & *p) >> 5;
1494 octa2 = (LOW_ZERO & *p) >> 2;
1495 carry = (CARRY_ZERO & *p);
1496 emit_octal_digit (stream, &seen_a_one, octa1);
1497 emit_octal_digit (stream, &seen_a_one, octa2);
1498 break;
1499
1500 case 1:
1501 /* Carry in two bits, carry out one bit. */
1502
1503 octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
1504 octa2 = (MID_ONE & *p) >> 4;
1505 octa3 = (LOW_ONE & *p) >> 1;
1506 carry = (CARRY_ONE & *p);
1507 emit_octal_digit (stream, &seen_a_one, octa1);
1508 emit_octal_digit (stream, &seen_a_one, octa2);
1509 emit_octal_digit (stream, &seen_a_one, octa3);
1510 break;
1511
1512 case 2:
1513 /* Carry in one bit, no carry out. */
1514
1515 octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
1516 octa2 = (MID_TWO & *p) >> 3;
1517 octa3 = (LOW_TWO & *p);
1518 carry = 0;
1519 emit_octal_digit (stream, &seen_a_one, octa1);
1520 emit_octal_digit (stream, &seen_a_one, octa2);
1521 emit_octal_digit (stream, &seen_a_one, octa3);
1522 break;
1523
1524 default:
1525 error (_("Internal error in octal conversion;"));
1526 }
1527
1528 cycle++;
1529 cycle = cycle % BITS_IN_OCTAL;
1530 }
1531 }
1532 else
1533 {
1534 for (p = valaddr + len - 1;
1535 p >= valaddr;
1536 p--)
1537 {
1538 switch (cycle)
1539 {
1540 case 0:
1541 /* Carry out, no carry in */
1542
1543 octa1 = (HIGH_ZERO & *p) >> 5;
1544 octa2 = (LOW_ZERO & *p) >> 2;
1545 carry = (CARRY_ZERO & *p);
1546 emit_octal_digit (stream, &seen_a_one, octa1);
1547 emit_octal_digit (stream, &seen_a_one, octa2);
1548 break;
1549
1550 case 1:
1551 /* Carry in, carry out */
1552
1553 octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
1554 octa2 = (MID_ONE & *p) >> 4;
1555 octa3 = (LOW_ONE & *p) >> 1;
1556 carry = (CARRY_ONE & *p);
1557 emit_octal_digit (stream, &seen_a_one, octa1);
1558 emit_octal_digit (stream, &seen_a_one, octa2);
1559 emit_octal_digit (stream, &seen_a_one, octa3);
1560 break;
1561
1562 case 2:
1563 /* Carry in, no carry out */
1564
1565 octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
1566 octa2 = (MID_TWO & *p) >> 3;
1567 octa3 = (LOW_TWO & *p);
1568 carry = 0;
1569 emit_octal_digit (stream, &seen_a_one, octa1);
1570 emit_octal_digit (stream, &seen_a_one, octa2);
1571 emit_octal_digit (stream, &seen_a_one, octa3);
1572 break;
1573
1574 default:
1575 error (_("Internal error in octal conversion;"));
1576 }
1577
1578 cycle++;
1579 cycle = cycle % BITS_IN_OCTAL;
1580 }
1581 }
1582
1583 }
1584
1585 /* Possibly negate the integer represented by BYTES. It contains LEN
1586 bytes in the specified byte order. If the integer is negative,
1587 copy it into OUT_VEC, negate it, and return true. Otherwise, do
1588 nothing and return false. */
1589
1590 static bool
1591 maybe_negate_by_bytes (const gdb_byte *bytes, unsigned len,
1592 enum bfd_endian byte_order,
1593 gdb::byte_vector *out_vec)
1594 {
1595 gdb_byte sign_byte;
1596 gdb_assert (len > 0);
1597 if (byte_order == BFD_ENDIAN_BIG)
1598 sign_byte = bytes[0];
1599 else
1600 sign_byte = bytes[len - 1];
1601 if ((sign_byte & 0x80) == 0)
1602 return false;
1603
1604 out_vec->resize (len);
1605
1606 /* Compute -x == 1 + ~x. */
1607 if (byte_order == BFD_ENDIAN_LITTLE)
1608 {
1609 unsigned carry = 1;
1610 for (unsigned i = 0; i < len; ++i)
1611 {
1612 unsigned tem = (0xff & ~bytes[i]) + carry;
1613 (*out_vec)[i] = tem & 0xff;
1614 carry = tem / 256;
1615 }
1616 }
1617 else
1618 {
1619 unsigned carry = 1;
1620 for (unsigned i = len; i > 0; --i)
1621 {
1622 unsigned tem = (0xff & ~bytes[i - 1]) + carry;
1623 (*out_vec)[i - 1] = tem & 0xff;
1624 carry = tem / 256;
1625 }
1626 }
1627
1628 return true;
1629 }
1630
1631 /* VALADDR points to an integer of LEN bytes.
1632 Print it in decimal on stream or format it in buf. */
1633
1634 void
1635 print_decimal_chars (struct ui_file *stream, const gdb_byte *valaddr,
1636 unsigned len, bool is_signed,
1637 enum bfd_endian byte_order)
1638 {
1639 #define TEN 10
1640 #define CARRY_OUT( x ) ((x) / TEN) /* extend char to int */
1641 #define CARRY_LEFT( x ) ((x) % TEN)
1642 #define SHIFT( x ) ((x) << 4)
1643 #define LOW_NIBBLE( x ) ( (x) & 0x00F)
1644 #define HIGH_NIBBLE( x ) (((x) & 0x0F0) >> 4)
1645
1646 const gdb_byte *p;
1647 int carry;
1648 int decimal_len;
1649 int i, j, decimal_digits;
1650 int dummy;
1651 int flip;
1652
1653 gdb::byte_vector negated_bytes;
1654 if (is_signed
1655 && maybe_negate_by_bytes (valaddr, len, byte_order, &negated_bytes))
1656 {
1657 fputs_filtered ("-", stream);
1658 valaddr = negated_bytes.data ();
1659 }
1660
1661 /* Base-ten number is less than twice as many digits
1662 as the base 16 number, which is 2 digits per byte. */
1663
1664 decimal_len = len * 2 * 2;
1665 std::vector<unsigned char> digits (decimal_len, 0);
1666
1667 /* Ok, we have an unknown number of bytes of data to be printed in
1668 * decimal.
1669 *
1670 * Given a hex number (in nibbles) as XYZ, we start by taking X and
1671 * decimalizing it as "x1 x2" in two decimal nibbles. Then we multiply
1672 * the nibbles by 16, add Y and re-decimalize. Repeat with Z.
1673 *
1674 * The trick is that "digits" holds a base-10 number, but sometimes
1675 * the individual digits are > 10.
1676 *
1677 * Outer loop is per nibble (hex digit) of input, from MSD end to
1678 * LSD end.
1679 */
1680 decimal_digits = 0; /* Number of decimal digits so far */
1681 p = (byte_order == BFD_ENDIAN_BIG) ? valaddr : valaddr + len - 1;
1682 flip = 0;
1683 while ((byte_order == BFD_ENDIAN_BIG) ? (p < valaddr + len) : (p >= valaddr))
1684 {
1685 /*
1686 * Multiply current base-ten number by 16 in place.
1687 * Each digit was between 0 and 9, now is between
1688 * 0 and 144.
1689 */
1690 for (j = 0; j < decimal_digits; j++)
1691 {
1692 digits[j] = SHIFT (digits[j]);
1693 }
1694
1695 /* Take the next nibble off the input and add it to what
1696 * we've got in the LSB position. Bottom 'digit' is now
1697 * between 0 and 159.
1698 *
1699 * "flip" is used to run this loop twice for each byte.
1700 */
1701 if (flip == 0)
1702 {
1703 /* Take top nibble. */
1704
1705 digits[0] += HIGH_NIBBLE (*p);
1706 flip = 1;
1707 }
1708 else
1709 {
1710 /* Take low nibble and bump our pointer "p". */
1711
1712 digits[0] += LOW_NIBBLE (*p);
1713 if (byte_order == BFD_ENDIAN_BIG)
1714 p++;
1715 else
1716 p--;
1717 flip = 0;
1718 }
1719
1720 /* Re-decimalize. We have to do this often enough
1721 * that we don't overflow, but once per nibble is
1722 * overkill. Easier this way, though. Note that the
1723 * carry is often larger than 10 (e.g. max initial
1724 * carry out of lowest nibble is 15, could bubble all
1725 * the way up greater than 10). So we have to do
1726 * the carrying beyond the last current digit.
1727 */
1728 carry = 0;
1729 for (j = 0; j < decimal_len - 1; j++)
1730 {
1731 digits[j] += carry;
1732
1733 /* "/" won't handle an unsigned char with
1734 * a value that if signed would be negative.
1735 * So extend to longword int via "dummy".
1736 */
1737 dummy = digits[j];
1738 carry = CARRY_OUT (dummy);
1739 digits[j] = CARRY_LEFT (dummy);
1740
1741 if (j >= decimal_digits && carry == 0)
1742 {
1743 /*
1744 * All higher digits are 0 and we
1745 * no longer have a carry.
1746 *
1747 * Note: "j" is 0-based, "decimal_digits" is
1748 * 1-based.
1749 */
1750 decimal_digits = j + 1;
1751 break;
1752 }
1753 }
1754 }
1755
1756 /* Ok, now "digits" is the decimal representation, with
1757 the "decimal_digits" actual digits. Print! */
1758
1759 for (i = decimal_digits - 1; i > 0 && digits[i] == 0; --i)
1760 ;
1761
1762 for (; i >= 0; i--)
1763 {
1764 fprintf_filtered (stream, "%1d", digits[i]);
1765 }
1766 }
1767
1768 /* VALADDR points to an integer of LEN bytes. Print it in hex on stream. */
1769
1770 void
1771 print_hex_chars (struct ui_file *stream, const gdb_byte *valaddr,
1772 unsigned len, enum bfd_endian byte_order,
1773 bool zero_pad)
1774 {
1775 const gdb_byte *p;
1776
1777 fputs_filtered ("0x", stream);
1778 if (byte_order == BFD_ENDIAN_BIG)
1779 {
1780 p = valaddr;
1781
1782 if (!zero_pad)
1783 {
1784 /* Strip leading 0 bytes, but be sure to leave at least a
1785 single byte at the end. */
1786 for (; p < valaddr + len - 1 && !*p; ++p)
1787 ;
1788 }
1789
1790 const gdb_byte *first = p;
1791 for (;
1792 p < valaddr + len;
1793 p++)
1794 {
1795 /* When not zero-padding, use a different format for the
1796 very first byte printed. */
1797 if (!zero_pad && p == first)
1798 fprintf_filtered (stream, "%x", *p);
1799 else
1800 fprintf_filtered (stream, "%02x", *p);
1801 }
1802 }
1803 else
1804 {
1805 p = valaddr + len - 1;
1806
1807 if (!zero_pad)
1808 {
1809 /* Strip leading 0 bytes, but be sure to leave at least a
1810 single byte at the end. */
1811 for (; p >= valaddr + 1 && !*p; --p)
1812 ;
1813 }
1814
1815 const gdb_byte *first = p;
1816 for (;
1817 p >= valaddr;
1818 p--)
1819 {
1820 /* When not zero-padding, use a different format for the
1821 very first byte printed. */
1822 if (!zero_pad && p == first)
1823 fprintf_filtered (stream, "%x", *p);
1824 else
1825 fprintf_filtered (stream, "%02x", *p);
1826 }
1827 }
1828 }
1829
1830 /* Print function pointer with inferior address ADDRESS onto stdio
1831 stream STREAM. */
1832
1833 void
1834 print_function_pointer_address (const struct value_print_options *options,
1835 struct gdbarch *gdbarch,
1836 CORE_ADDR address,
1837 struct ui_file *stream)
1838 {
1839 CORE_ADDR func_addr = gdbarch_convert_from_func_ptr_addr
1840 (gdbarch, address, current_inferior ()->top_target ());
1841
1842 /* If the function pointer is represented by a description, print
1843 the address of the description. */
1844 if (options->addressprint && func_addr != address)
1845 {
1846 fputs_filtered ("@", stream);
1847 fputs_filtered (paddress (gdbarch, address), stream);
1848 fputs_filtered (": ", stream);
1849 }
1850 print_address_demangle (options, gdbarch, func_addr, stream, demangle);
1851 }
1852
1853
1854 /* Print on STREAM using the given OPTIONS the index for the element
1855 at INDEX of an array whose index type is INDEX_TYPE. */
1856
1857 void
1858 maybe_print_array_index (struct type *index_type, LONGEST index,
1859 struct ui_file *stream,
1860 const struct value_print_options *options)
1861 {
1862 if (!options->print_array_indexes)
1863 return;
1864
1865 current_language->print_array_index (index_type, index, stream, options);
1866 }
1867
1868 /* See valprint.h. */
1869
1870 void
1871 value_print_array_elements (struct value *val, struct ui_file *stream,
1872 int recurse,
1873 const struct value_print_options *options,
1874 unsigned int i)
1875 {
1876 unsigned int things_printed = 0;
1877 unsigned len;
1878 struct type *elttype, *index_type;
1879 unsigned eltlen;
1880 /* Position of the array element we are examining to see
1881 whether it is repeated. */
1882 unsigned int rep1;
1883 /* Number of repetitions we have detected so far. */
1884 unsigned int reps;
1885 LONGEST low_bound, high_bound;
1886
1887 struct type *type = check_typedef (value_type (val));
1888
1889 elttype = TYPE_TARGET_TYPE (type);
1890 eltlen = type_length_units (check_typedef (elttype));
1891 index_type = type->index_type ();
1892 if (index_type->code () == TYPE_CODE_RANGE)
1893 index_type = TYPE_TARGET_TYPE (index_type);
1894
1895 if (get_array_bounds (type, &low_bound, &high_bound))
1896 {
1897 /* The array length should normally be HIGH_BOUND - LOW_BOUND +
1898 1. But we have to be a little extra careful, because some
1899 languages such as Ada allow LOW_BOUND to be greater than
1900 HIGH_BOUND for empty arrays. In that situation, the array
1901 length is just zero, not negative! */
1902 if (low_bound > high_bound)
1903 len = 0;
1904 else
1905 len = high_bound - low_bound + 1;
1906 }
1907 else
1908 {
1909 warning (_("unable to get bounds of array, assuming null array"));
1910 low_bound = 0;
1911 len = 0;
1912 }
1913
1914 annotate_array_section_begin (i, elttype);
1915
1916 for (; i < len && things_printed < options->print_max; i++)
1917 {
1918 scoped_value_mark free_values;
1919
1920 if (i != 0)
1921 {
1922 if (options->prettyformat_arrays)
1923 {
1924 fprintf_filtered (stream, ",\n");
1925 print_spaces_filtered (2 + 2 * recurse, stream);
1926 }
1927 else
1928 fprintf_filtered (stream, ", ");
1929 }
1930 else if (options->prettyformat_arrays)
1931 {
1932 fprintf_filtered (stream, "\n");
1933 print_spaces_filtered (2 + 2 * recurse, stream);
1934 }
1935 stream->wrap_here (2 + 2 * recurse);
1936 maybe_print_array_index (index_type, i + low_bound,
1937 stream, options);
1938
1939 rep1 = i + 1;
1940 reps = 1;
1941 /* Only check for reps if repeat_count_threshold is not set to
1942 UINT_MAX (unlimited). */
1943 if (options->repeat_count_threshold < UINT_MAX)
1944 {
1945 while (rep1 < len
1946 && value_contents_eq (val, i * eltlen,
1947 val, rep1 * eltlen,
1948 eltlen))
1949 {
1950 ++reps;
1951 ++rep1;
1952 }
1953 }
1954
1955 struct value *element = value_from_component (val, elttype, eltlen * i);
1956 common_val_print (element, stream, recurse + 1, options,
1957 current_language);
1958
1959 if (reps > options->repeat_count_threshold)
1960 {
1961 annotate_elt_rep (reps);
1962 fprintf_filtered (stream, " %p[<repeats %u times>%p]",
1963 metadata_style.style ().ptr (), reps, nullptr);
1964 annotate_elt_rep_end ();
1965
1966 i = rep1 - 1;
1967 things_printed += options->repeat_count_threshold;
1968 }
1969 else
1970 {
1971 annotate_elt ();
1972 things_printed++;
1973 }
1974 }
1975 annotate_array_section_end ();
1976 if (i < len)
1977 fprintf_filtered (stream, "...");
1978 if (options->prettyformat_arrays)
1979 {
1980 fprintf_filtered (stream, "\n");
1981 print_spaces_filtered (2 * recurse, stream);
1982 }
1983 }
1984
1985 /* Read LEN bytes of target memory at address MEMADDR, placing the
1986 results in GDB's memory at MYADDR. Returns a count of the bytes
1987 actually read, and optionally a target_xfer_status value in the
1988 location pointed to by ERRPTR if ERRPTR is non-null. */
1989
1990 /* FIXME: cagney/1999-10-14: Only used by val_print_string. Can this
1991 function be eliminated. */
1992
1993 static int
1994 partial_memory_read (CORE_ADDR memaddr, gdb_byte *myaddr,
1995 int len, int *errptr)
1996 {
1997 int nread; /* Number of bytes actually read. */
1998 int errcode; /* Error from last read. */
1999
2000 /* First try a complete read. */
2001 errcode = target_read_memory (memaddr, myaddr, len);
2002 if (errcode == 0)
2003 {
2004 /* Got it all. */
2005 nread = len;
2006 }
2007 else
2008 {
2009 /* Loop, reading one byte at a time until we get as much as we can. */
2010 for (errcode = 0, nread = 0; len > 0 && errcode == 0; nread++, len--)
2011 {
2012 errcode = target_read_memory (memaddr++, myaddr++, 1);
2013 }
2014 /* If an error, the last read was unsuccessful, so adjust count. */
2015 if (errcode != 0)
2016 {
2017 nread--;
2018 }
2019 }
2020 if (errptr != NULL)
2021 {
2022 *errptr = errcode;
2023 }
2024 return (nread);
2025 }
2026
2027 /* Read a string from the inferior, at ADDR, with LEN characters of
2028 WIDTH bytes each. Fetch at most FETCHLIMIT characters. BUFFER
2029 will be set to a newly allocated buffer containing the string, and
2030 BYTES_READ will be set to the number of bytes read. Returns 0 on
2031 success, or a target_xfer_status on failure.
2032
2033 If LEN > 0, reads the lesser of LEN or FETCHLIMIT characters
2034 (including eventual NULs in the middle or end of the string).
2035
2036 If LEN is -1, stops at the first null character (not necessarily
2037 the first null byte) up to a maximum of FETCHLIMIT characters. Set
2038 FETCHLIMIT to UINT_MAX to read as many characters as possible from
2039 the string.
2040
2041 Unless an exception is thrown, BUFFER will always be allocated, even on
2042 failure. In this case, some characters might have been read before the
2043 failure happened. Check BYTES_READ to recognize this situation. */
2044
2045 int
2046 read_string (CORE_ADDR addr, int len, int width, unsigned int fetchlimit,
2047 enum bfd_endian byte_order, gdb::unique_xmalloc_ptr<gdb_byte> *buffer,
2048 int *bytes_read)
2049 {
2050 int errcode; /* Errno returned from bad reads. */
2051 unsigned int nfetch; /* Chars to fetch / chars fetched. */
2052 gdb_byte *bufptr; /* Pointer to next available byte in
2053 buffer. */
2054
2055 /* Loop until we either have all the characters, or we encounter
2056 some error, such as bumping into the end of the address space. */
2057
2058 buffer->reset (nullptr);
2059
2060 if (len > 0)
2061 {
2062 /* We want fetchlimit chars, so we might as well read them all in
2063 one operation. */
2064 unsigned int fetchlen = std::min ((unsigned) len, fetchlimit);
2065
2066 buffer->reset ((gdb_byte *) xmalloc (fetchlen * width));
2067 bufptr = buffer->get ();
2068
2069 nfetch = partial_memory_read (addr, bufptr, fetchlen * width, &errcode)
2070 / width;
2071 addr += nfetch * width;
2072 bufptr += nfetch * width;
2073 }
2074 else if (len == -1)
2075 {
2076 unsigned long bufsize = 0;
2077 unsigned int chunksize; /* Size of each fetch, in chars. */
2078 int found_nul; /* Non-zero if we found the nul char. */
2079 gdb_byte *limit; /* First location past end of fetch buffer. */
2080
2081 found_nul = 0;
2082 /* We are looking for a NUL terminator to end the fetching, so we
2083 might as well read in blocks that are large enough to be efficient,
2084 but not so large as to be slow if fetchlimit happens to be large.
2085 So we choose the minimum of 8 and fetchlimit. We used to use 200
2086 instead of 8 but 200 is way too big for remote debugging over a
2087 serial line. */
2088 chunksize = std::min (8u, fetchlimit);
2089
2090 do
2091 {
2092 QUIT;
2093 nfetch = std::min ((unsigned long) chunksize, fetchlimit - bufsize);
2094
2095 if (*buffer == NULL)
2096 buffer->reset ((gdb_byte *) xmalloc (nfetch * width));
2097 else
2098 buffer->reset ((gdb_byte *) xrealloc (buffer->release (),
2099 (nfetch + bufsize) * width));
2100
2101 bufptr = buffer->get () + bufsize * width;
2102 bufsize += nfetch;
2103
2104 /* Read as much as we can. */
2105 nfetch = partial_memory_read (addr, bufptr, nfetch * width, &errcode)
2106 / width;
2107
2108 /* Scan this chunk for the null character that terminates the string
2109 to print. If found, we don't need to fetch any more. Note
2110 that bufptr is explicitly left pointing at the next character
2111 after the null character, or at the next character after the end
2112 of the buffer. */
2113
2114 limit = bufptr + nfetch * width;
2115 while (bufptr < limit)
2116 {
2117 unsigned long c;
2118
2119 c = extract_unsigned_integer (bufptr, width, byte_order);
2120 addr += width;
2121 bufptr += width;
2122 if (c == 0)
2123 {
2124 /* We don't care about any error which happened after
2125 the NUL terminator. */
2126 errcode = 0;
2127 found_nul = 1;
2128 break;
2129 }
2130 }
2131 }
2132 while (errcode == 0 /* no error */
2133 && bufptr - buffer->get () < fetchlimit * width /* no overrun */
2134 && !found_nul); /* haven't found NUL yet */
2135 }
2136 else
2137 { /* Length of string is really 0! */
2138 /* We always allocate *buffer. */
2139 buffer->reset ((gdb_byte *) xmalloc (1));
2140 bufptr = buffer->get ();
2141 errcode = 0;
2142 }
2143
2144 /* bufptr and addr now point immediately beyond the last byte which we
2145 consider part of the string (including a '\0' which ends the string). */
2146 *bytes_read = bufptr - buffer->get ();
2147
2148 QUIT;
2149
2150 return errcode;
2151 }
2152
2153 /* Return true if print_wchar can display W without resorting to a
2154 numeric escape, false otherwise. */
2155
2156 static int
2157 wchar_printable (gdb_wchar_t w)
2158 {
2159 return (gdb_iswprint (w)
2160 || w == LCST ('\a') || w == LCST ('\b')
2161 || w == LCST ('\f') || w == LCST ('\n')
2162 || w == LCST ('\r') || w == LCST ('\t')
2163 || w == LCST ('\v'));
2164 }
2165
2166 /* A helper function that converts the contents of STRING to wide
2167 characters and then appends them to OUTPUT. */
2168
2169 static void
2170 append_string_as_wide (const char *string,
2171 struct obstack *output)
2172 {
2173 for (; *string; ++string)
2174 {
2175 gdb_wchar_t w = gdb_btowc (*string);
2176 obstack_grow (output, &w, sizeof (gdb_wchar_t));
2177 }
2178 }
2179
2180 /* Print a wide character W to OUTPUT. ORIG is a pointer to the
2181 original (target) bytes representing the character, ORIG_LEN is the
2182 number of valid bytes. WIDTH is the number of bytes in a base
2183 characters of the type. OUTPUT is an obstack to which wide
2184 characters are emitted. QUOTER is a (narrow) character indicating
2185 the style of quotes surrounding the character to be printed.
2186 NEED_ESCAPE is an in/out flag which is used to track numeric
2187 escapes across calls. */
2188
2189 static void
2190 print_wchar (gdb_wint_t w, const gdb_byte *orig,
2191 int orig_len, int width,
2192 enum bfd_endian byte_order,
2193 struct obstack *output,
2194 int quoter, int *need_escapep)
2195 {
2196 int need_escape = *need_escapep;
2197
2198 *need_escapep = 0;
2199
2200 /* iswprint implementation on Windows returns 1 for tab character.
2201 In order to avoid different printout on this host, we explicitly
2202 use wchar_printable function. */
2203 switch (w)
2204 {
2205 case LCST ('\a'):
2206 obstack_grow_wstr (output, LCST ("\\a"));
2207 break;
2208 case LCST ('\b'):
2209 obstack_grow_wstr (output, LCST ("\\b"));
2210 break;
2211 case LCST ('\f'):
2212 obstack_grow_wstr (output, LCST ("\\f"));
2213 break;
2214 case LCST ('\n'):
2215 obstack_grow_wstr (output, LCST ("\\n"));
2216 break;
2217 case LCST ('\r'):
2218 obstack_grow_wstr (output, LCST ("\\r"));
2219 break;
2220 case LCST ('\t'):
2221 obstack_grow_wstr (output, LCST ("\\t"));
2222 break;
2223 case LCST ('\v'):
2224 obstack_grow_wstr (output, LCST ("\\v"));
2225 break;
2226 default:
2227 {
2228 if (wchar_printable (w) && (!need_escape || (!gdb_iswdigit (w)
2229 && w != LCST ('8')
2230 && w != LCST ('9'))))
2231 {
2232 gdb_wchar_t wchar = w;
2233
2234 if (w == gdb_btowc (quoter) || w == LCST ('\\'))
2235 obstack_grow_wstr (output, LCST ("\\"));
2236 obstack_grow (output, &wchar, sizeof (gdb_wchar_t));
2237 }
2238 else
2239 {
2240 int i;
2241
2242 for (i = 0; i + width <= orig_len; i += width)
2243 {
2244 char octal[30];
2245 ULONGEST value;
2246
2247 value = extract_unsigned_integer (&orig[i], width,
2248 byte_order);
2249 /* If the value fits in 3 octal digits, print it that
2250 way. Otherwise, print it as a hex escape. */
2251 if (value <= 0777)
2252 xsnprintf (octal, sizeof (octal), "\\%.3o",
2253 (int) (value & 0777));
2254 else
2255 xsnprintf (octal, sizeof (octal), "\\x%lx", (long) value);
2256 append_string_as_wide (octal, output);
2257 }
2258 /* If we somehow have extra bytes, print them now. */
2259 while (i < orig_len)
2260 {
2261 char octal[5];
2262
2263 xsnprintf (octal, sizeof (octal), "\\%.3o", orig[i] & 0xff);
2264 append_string_as_wide (octal, output);
2265 ++i;
2266 }
2267
2268 *need_escapep = 1;
2269 }
2270 break;
2271 }
2272 }
2273 }
2274
2275 /* Print the character C on STREAM as part of the contents of a
2276 literal string whose delimiter is QUOTER. ENCODING names the
2277 encoding of C. */
2278
2279 void
2280 generic_emit_char (int c, struct type *type, struct ui_file *stream,
2281 int quoter, const char *encoding)
2282 {
2283 enum bfd_endian byte_order
2284 = type_byte_order (type);
2285 gdb_byte *c_buf;
2286 int need_escape = 0;
2287
2288 c_buf = (gdb_byte *) alloca (TYPE_LENGTH (type));
2289 pack_long (c_buf, type, c);
2290
2291 wchar_iterator iter (c_buf, TYPE_LENGTH (type), encoding, TYPE_LENGTH (type));
2292
2293 /* This holds the printable form of the wchar_t data. */
2294 auto_obstack wchar_buf;
2295
2296 while (1)
2297 {
2298 int num_chars;
2299 gdb_wchar_t *chars;
2300 const gdb_byte *buf;
2301 size_t buflen;
2302 int print_escape = 1;
2303 enum wchar_iterate_result result;
2304
2305 num_chars = iter.iterate (&result, &chars, &buf, &buflen);
2306 if (num_chars < 0)
2307 break;
2308 if (num_chars > 0)
2309 {
2310 /* If all characters are printable, print them. Otherwise,
2311 we're going to have to print an escape sequence. We
2312 check all characters because we want to print the target
2313 bytes in the escape sequence, and we don't know character
2314 boundaries there. */
2315 int i;
2316
2317 print_escape = 0;
2318 for (i = 0; i < num_chars; ++i)
2319 if (!wchar_printable (chars[i]))
2320 {
2321 print_escape = 1;
2322 break;
2323 }
2324
2325 if (!print_escape)
2326 {
2327 for (i = 0; i < num_chars; ++i)
2328 print_wchar (chars[i], buf, buflen,
2329 TYPE_LENGTH (type), byte_order,
2330 &wchar_buf, quoter, &need_escape);
2331 }
2332 }
2333
2334 /* This handles the NUM_CHARS == 0 case as well. */
2335 if (print_escape)
2336 print_wchar (gdb_WEOF, buf, buflen, TYPE_LENGTH (type),
2337 byte_order, &wchar_buf, quoter, &need_escape);
2338 }
2339
2340 /* The output in the host encoding. */
2341 auto_obstack output;
2342
2343 convert_between_encodings (INTERMEDIATE_ENCODING, host_charset (),
2344 (gdb_byte *) obstack_base (&wchar_buf),
2345 obstack_object_size (&wchar_buf),
2346 sizeof (gdb_wchar_t), &output, translit_char);
2347 obstack_1grow (&output, '\0');
2348
2349 fputs_filtered ((const char *) obstack_base (&output), stream);
2350 }
2351
2352 /* Return the repeat count of the next character/byte in ITER,
2353 storing the result in VEC. */
2354
2355 static int
2356 count_next_character (wchar_iterator *iter,
2357 std::vector<converted_character> *vec)
2358 {
2359 struct converted_character *current;
2360
2361 if (vec->empty ())
2362 {
2363 struct converted_character tmp;
2364 gdb_wchar_t *chars;
2365
2366 tmp.num_chars
2367 = iter->iterate (&tmp.result, &chars, &tmp.buf, &tmp.buflen);
2368 if (tmp.num_chars > 0)
2369 {
2370 gdb_assert (tmp.num_chars < MAX_WCHARS);
2371 memcpy (tmp.chars, chars, tmp.num_chars * sizeof (gdb_wchar_t));
2372 }
2373 vec->push_back (tmp);
2374 }
2375
2376 current = &vec->back ();
2377
2378 /* Count repeated characters or bytes. */
2379 current->repeat_count = 1;
2380 if (current->num_chars == -1)
2381 {
2382 /* EOF */
2383 return -1;
2384 }
2385 else
2386 {
2387 gdb_wchar_t *chars;
2388 struct converted_character d;
2389 int repeat;
2390
2391 d.repeat_count = 0;
2392
2393 while (1)
2394 {
2395 /* Get the next character. */
2396 d.num_chars = iter->iterate (&d.result, &chars, &d.buf, &d.buflen);
2397
2398 /* If a character was successfully converted, save the character
2399 into the converted character. */
2400 if (d.num_chars > 0)
2401 {
2402 gdb_assert (d.num_chars < MAX_WCHARS);
2403 memcpy (d.chars, chars, WCHAR_BUFLEN (d.num_chars));
2404 }
2405
2406 /* Determine if the current character is the same as this
2407 new character. */
2408 if (d.num_chars == current->num_chars && d.result == current->result)
2409 {
2410 /* There are two cases to consider:
2411
2412 1) Equality of converted character (num_chars > 0)
2413 2) Equality of non-converted character (num_chars == 0) */
2414 if ((current->num_chars > 0
2415 && memcmp (current->chars, d.chars,
2416 WCHAR_BUFLEN (current->num_chars)) == 0)
2417 || (current->num_chars == 0
2418 && current->buflen == d.buflen
2419 && memcmp (current->buf, d.buf, current->buflen) == 0))
2420 ++current->repeat_count;
2421 else
2422 break;
2423 }
2424 else
2425 break;
2426 }
2427
2428 /* Push this next converted character onto the result vector. */
2429 repeat = current->repeat_count;
2430 vec->push_back (d);
2431 return repeat;
2432 }
2433 }
2434
2435 /* Print the characters in CHARS to the OBSTACK. QUOTE_CHAR is the quote
2436 character to use with string output. WIDTH is the size of the output
2437 character type. BYTE_ORDER is the target byte order. OPTIONS
2438 is the user's print options. */
2439
2440 static void
2441 print_converted_chars_to_obstack (struct obstack *obstack,
2442 const std::vector<converted_character> &chars,
2443 int quote_char, int width,
2444 enum bfd_endian byte_order,
2445 const struct value_print_options *options)
2446 {
2447 unsigned int idx;
2448 const converted_character *elem;
2449 enum {START, SINGLE, REPEAT, INCOMPLETE, FINISH} state, last;
2450 gdb_wchar_t wide_quote_char = gdb_btowc (quote_char);
2451 int need_escape = 0;
2452
2453 /* Set the start state. */
2454 idx = 0;
2455 last = state = START;
2456 elem = NULL;
2457
2458 while (1)
2459 {
2460 switch (state)
2461 {
2462 case START:
2463 /* Nothing to do. */
2464 break;
2465
2466 case SINGLE:
2467 {
2468 int j;
2469
2470 /* We are outputting a single character
2471 (< options->repeat_count_threshold). */
2472
2473 if (last != SINGLE)
2474 {
2475 /* We were outputting some other type of content, so we
2476 must output and a comma and a quote. */
2477 if (last != START)
2478 obstack_grow_wstr (obstack, LCST (", "));
2479 obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
2480 }
2481 /* Output the character. */
2482 for (j = 0; j < elem->repeat_count; ++j)
2483 {
2484 if (elem->result == wchar_iterate_ok)
2485 print_wchar (elem->chars[0], elem->buf, elem->buflen, width,
2486 byte_order, obstack, quote_char, &need_escape);
2487 else
2488 print_wchar (gdb_WEOF, elem->buf, elem->buflen, width,
2489 byte_order, obstack, quote_char, &need_escape);
2490 }
2491 }
2492 break;
2493
2494 case REPEAT:
2495 {
2496 int j;
2497
2498 /* We are outputting a character with a repeat count
2499 greater than options->repeat_count_threshold. */
2500
2501 if (last == SINGLE)
2502 {
2503 /* We were outputting a single string. Terminate the
2504 string. */
2505 obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
2506 }
2507 if (last != START)
2508 obstack_grow_wstr (obstack, LCST (", "));
2509
2510 /* Output the character and repeat string. */
2511 obstack_grow_wstr (obstack, LCST ("'"));
2512 if (elem->result == wchar_iterate_ok)
2513 print_wchar (elem->chars[0], elem->buf, elem->buflen, width,
2514 byte_order, obstack, quote_char, &need_escape);
2515 else
2516 print_wchar (gdb_WEOF, elem->buf, elem->buflen, width,
2517 byte_order, obstack, quote_char, &need_escape);
2518 obstack_grow_wstr (obstack, LCST ("'"));
2519 std::string s = string_printf (_(" <repeats %u times>"),
2520 elem->repeat_count);
2521 for (j = 0; s[j]; ++j)
2522 {
2523 gdb_wchar_t w = gdb_btowc (s[j]);
2524 obstack_grow (obstack, &w, sizeof (gdb_wchar_t));
2525 }
2526 }
2527 break;
2528
2529 case INCOMPLETE:
2530 /* We are outputting an incomplete sequence. */
2531 if (last == SINGLE)
2532 {
2533 /* If we were outputting a string of SINGLE characters,
2534 terminate the quote. */
2535 obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
2536 }
2537 if (last != START)
2538 obstack_grow_wstr (obstack, LCST (", "));
2539
2540 /* Output the incomplete sequence string. */
2541 obstack_grow_wstr (obstack, LCST ("<incomplete sequence "));
2542 print_wchar (gdb_WEOF, elem->buf, elem->buflen, width, byte_order,
2543 obstack, 0, &need_escape);
2544 obstack_grow_wstr (obstack, LCST (">"));
2545
2546 /* We do not attempt to output anything after this. */
2547 state = FINISH;
2548 break;
2549
2550 case FINISH:
2551 /* All done. If we were outputting a string of SINGLE
2552 characters, the string must be terminated. Otherwise,
2553 REPEAT and INCOMPLETE are always left properly terminated. */
2554 if (last == SINGLE)
2555 obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
2556
2557 return;
2558 }
2559
2560 /* Get the next element and state. */
2561 last = state;
2562 if (state != FINISH)
2563 {
2564 elem = &chars[idx++];
2565 switch (elem->result)
2566 {
2567 case wchar_iterate_ok:
2568 case wchar_iterate_invalid:
2569 if (elem->repeat_count > options->repeat_count_threshold)
2570 state = REPEAT;
2571 else
2572 state = SINGLE;
2573 break;
2574
2575 case wchar_iterate_incomplete:
2576 state = INCOMPLETE;
2577 break;
2578
2579 case wchar_iterate_eof:
2580 state = FINISH;
2581 break;
2582 }
2583 }
2584 }
2585 }
2586
2587 /* Print the character string STRING, printing at most LENGTH
2588 characters. LENGTH is -1 if the string is nul terminated. TYPE is
2589 the type of each character. OPTIONS holds the printing options;
2590 printing stops early if the number hits print_max; repeat counts
2591 are printed as appropriate. Print ellipses at the end if we had to
2592 stop before printing LENGTH characters, or if FORCE_ELLIPSES.
2593 QUOTE_CHAR is the character to print at each end of the string. If
2594 C_STYLE_TERMINATOR is true, and the last character is 0, then it is
2595 omitted. */
2596
2597 void
2598 generic_printstr (struct ui_file *stream, struct type *type,
2599 const gdb_byte *string, unsigned int length,
2600 const char *encoding, int force_ellipses,
2601 int quote_char, int c_style_terminator,
2602 const struct value_print_options *options)
2603 {
2604 enum bfd_endian byte_order = type_byte_order (type);
2605 unsigned int i;
2606 int width = TYPE_LENGTH (type);
2607 int finished = 0;
2608 struct converted_character *last;
2609
2610 if (length == -1)
2611 {
2612 unsigned long current_char = 1;
2613
2614 for (i = 0; current_char; ++i)
2615 {
2616 QUIT;
2617 current_char = extract_unsigned_integer (string + i * width,
2618 width, byte_order);
2619 }
2620 length = i;
2621 }
2622
2623 /* If the string was not truncated due to `set print elements', and
2624 the last byte of it is a null, we don't print that, in
2625 traditional C style. */
2626 if (c_style_terminator
2627 && !force_ellipses
2628 && length > 0
2629 && (extract_unsigned_integer (string + (length - 1) * width,
2630 width, byte_order) == 0))
2631 length--;
2632
2633 if (length == 0)
2634 {
2635 fputs_filtered ("\"\"", stream);
2636 return;
2637 }
2638
2639 /* Arrange to iterate over the characters, in wchar_t form. */
2640 wchar_iterator iter (string, length * width, encoding, width);
2641 std::vector<converted_character> converted_chars;
2642
2643 /* Convert characters until the string is over or the maximum
2644 number of printed characters has been reached. */
2645 i = 0;
2646 while (i < options->print_max)
2647 {
2648 int r;
2649
2650 QUIT;
2651
2652 /* Grab the next character and repeat count. */
2653 r = count_next_character (&iter, &converted_chars);
2654
2655 /* If less than zero, the end of the input string was reached. */
2656 if (r < 0)
2657 break;
2658
2659 /* Otherwise, add the count to the total print count and get
2660 the next character. */
2661 i += r;
2662 }
2663
2664 /* Get the last element and determine if the entire string was
2665 processed. */
2666 last = &converted_chars.back ();
2667 finished = (last->result == wchar_iterate_eof);
2668
2669 /* Ensure that CONVERTED_CHARS is terminated. */
2670 last->result = wchar_iterate_eof;
2671
2672 /* WCHAR_BUF is the obstack we use to represent the string in
2673 wchar_t form. */
2674 auto_obstack wchar_buf;
2675
2676 /* Print the output string to the obstack. */
2677 print_converted_chars_to_obstack (&wchar_buf, converted_chars, quote_char,
2678 width, byte_order, options);
2679
2680 if (force_ellipses || !finished)
2681 obstack_grow_wstr (&wchar_buf, LCST ("..."));
2682
2683 /* OUTPUT is where we collect `char's for printing. */
2684 auto_obstack output;
2685
2686 convert_between_encodings (INTERMEDIATE_ENCODING, host_charset (),
2687 (gdb_byte *) obstack_base (&wchar_buf),
2688 obstack_object_size (&wchar_buf),
2689 sizeof (gdb_wchar_t), &output, translit_char);
2690 obstack_1grow (&output, '\0');
2691
2692 fputs_filtered ((const char *) obstack_base (&output), stream);
2693 }
2694
2695 /* Print a string from the inferior, starting at ADDR and printing up to LEN
2696 characters, of WIDTH bytes a piece, to STREAM. If LEN is -1, printing
2697 stops at the first null byte, otherwise printing proceeds (including null
2698 bytes) until either print_max or LEN characters have been printed,
2699 whichever is smaller. ENCODING is the name of the string's
2700 encoding. It can be NULL, in which case the target encoding is
2701 assumed. */
2702
2703 int
2704 val_print_string (struct type *elttype, const char *encoding,
2705 CORE_ADDR addr, int len,
2706 struct ui_file *stream,
2707 const struct value_print_options *options)
2708 {
2709 int force_ellipsis = 0; /* Force ellipsis to be printed if nonzero. */
2710 int err; /* Non-zero if we got a bad read. */
2711 int found_nul; /* Non-zero if we found the nul char. */
2712 unsigned int fetchlimit; /* Maximum number of chars to print. */
2713 int bytes_read;
2714 gdb::unique_xmalloc_ptr<gdb_byte> buffer; /* Dynamically growable fetch buffer. */
2715 struct gdbarch *gdbarch = elttype->arch ();
2716 enum bfd_endian byte_order = type_byte_order (elttype);
2717 int width = TYPE_LENGTH (elttype);
2718
2719 /* First we need to figure out the limit on the number of characters we are
2720 going to attempt to fetch and print. This is actually pretty simple. If
2721 LEN >= zero, then the limit is the minimum of LEN and print_max. If
2722 LEN is -1, then the limit is print_max. This is true regardless of
2723 whether print_max is zero, UINT_MAX (unlimited), or something in between,
2724 because finding the null byte (or available memory) is what actually
2725 limits the fetch. */
2726
2727 fetchlimit = (len == -1 ? options->print_max : std::min ((unsigned) len,
2728 options->print_max));
2729
2730 err = read_string (addr, len, width, fetchlimit, byte_order,
2731 &buffer, &bytes_read);
2732
2733 addr += bytes_read;
2734
2735 /* We now have either successfully filled the buffer to fetchlimit,
2736 or terminated early due to an error or finding a null char when
2737 LEN is -1. */
2738
2739 /* Determine found_nul by looking at the last character read. */
2740 found_nul = 0;
2741 if (bytes_read >= width)
2742 found_nul = extract_unsigned_integer (buffer.get () + bytes_read - width,
2743 width, byte_order) == 0;
2744 if (len == -1 && !found_nul)
2745 {
2746 gdb_byte *peekbuf;
2747
2748 /* We didn't find a NUL terminator we were looking for. Attempt
2749 to peek at the next character. If not successful, or it is not
2750 a null byte, then force ellipsis to be printed. */
2751
2752 peekbuf = (gdb_byte *) alloca (width);
2753
2754 if (target_read_memory (addr, peekbuf, width) == 0
2755 && extract_unsigned_integer (peekbuf, width, byte_order) != 0)
2756 force_ellipsis = 1;
2757 }
2758 else if ((len >= 0 && err != 0) || (len > bytes_read / width))
2759 {
2760 /* Getting an error when we have a requested length, or fetching less
2761 than the number of characters actually requested, always make us
2762 print ellipsis. */
2763 force_ellipsis = 1;
2764 }
2765
2766 /* If we get an error before fetching anything, don't print a string.
2767 But if we fetch something and then get an error, print the string
2768 and then the error message. */
2769 if (err == 0 || bytes_read > 0)
2770 current_language->printstr (stream, elttype, buffer.get (),
2771 bytes_read / width,
2772 encoding, force_ellipsis, options);
2773
2774 if (err != 0)
2775 {
2776 std::string str = memory_error_message (TARGET_XFER_E_IO, gdbarch, addr);
2777
2778 fprintf_filtered (stream, _("<error: %ps>"),
2779 styled_string (metadata_style.style (),
2780 str.c_str ()));
2781 }
2782
2783 return (bytes_read / width);
2784 }
2785
2786 /* Handle 'show print max-depth'. */
2787
2788 static void
2789 show_print_max_depth (struct ui_file *file, int from_tty,
2790 struct cmd_list_element *c, const char *value)
2791 {
2792 fprintf_filtered (file, _("Maximum print depth is %s.\n"), value);
2793 }
2794 \f
2795
2796 /* The 'set input-radix' command writes to this auxiliary variable.
2797 If the requested radix is valid, INPUT_RADIX is updated; otherwise,
2798 it is left unchanged. */
2799
2800 static unsigned input_radix_1 = 10;
2801
2802 /* Validate an input or output radix setting, and make sure the user
2803 knows what they really did here. Radix setting is confusing, e.g.
2804 setting the input radix to "10" never changes it! */
2805
2806 static void
2807 set_input_radix (const char *args, int from_tty, struct cmd_list_element *c)
2808 {
2809 set_input_radix_1 (from_tty, input_radix_1);
2810 }
2811
2812 static void
2813 set_input_radix_1 (int from_tty, unsigned radix)
2814 {
2815 /* We don't currently disallow any input radix except 0 or 1, which don't
2816 make any mathematical sense. In theory, we can deal with any input
2817 radix greater than 1, even if we don't have unique digits for every
2818 value from 0 to radix-1, but in practice we lose on large radix values.
2819 We should either fix the lossage or restrict the radix range more.
2820 (FIXME). */
2821
2822 if (radix < 2)
2823 {
2824 input_radix_1 = input_radix;
2825 error (_("Nonsense input radix ``decimal %u''; input radix unchanged."),
2826 radix);
2827 }
2828 input_radix_1 = input_radix = radix;
2829 if (from_tty)
2830 {
2831 printf_filtered (_("Input radix now set to "
2832 "decimal %u, hex %x, octal %o.\n"),
2833 radix, radix, radix);
2834 }
2835 }
2836
2837 /* The 'set output-radix' command writes to this auxiliary variable.
2838 If the requested radix is valid, OUTPUT_RADIX is updated,
2839 otherwise, it is left unchanged. */
2840
2841 static unsigned output_radix_1 = 10;
2842
2843 static void
2844 set_output_radix (const char *args, int from_tty, struct cmd_list_element *c)
2845 {
2846 set_output_radix_1 (from_tty, output_radix_1);
2847 }
2848
2849 static void
2850 set_output_radix_1 (int from_tty, unsigned radix)
2851 {
2852 /* Validate the radix and disallow ones that we aren't prepared to
2853 handle correctly, leaving the radix unchanged. */
2854 switch (radix)
2855 {
2856 case 16:
2857 user_print_options.output_format = 'x'; /* hex */
2858 break;
2859 case 10:
2860 user_print_options.output_format = 0; /* decimal */
2861 break;
2862 case 8:
2863 user_print_options.output_format = 'o'; /* octal */
2864 break;
2865 default:
2866 output_radix_1 = output_radix;
2867 error (_("Unsupported output radix ``decimal %u''; "
2868 "output radix unchanged."),
2869 radix);
2870 }
2871 output_radix_1 = output_radix = radix;
2872 if (from_tty)
2873 {
2874 printf_filtered (_("Output radix now set to "
2875 "decimal %u, hex %x, octal %o.\n"),
2876 radix, radix, radix);
2877 }
2878 }
2879
2880 /* Set both the input and output radix at once. Try to set the output radix
2881 first, since it has the most restrictive range. An radix that is valid as
2882 an output radix is also valid as an input radix.
2883
2884 It may be useful to have an unusual input radix. If the user wishes to
2885 set an input radix that is not valid as an output radix, he needs to use
2886 the 'set input-radix' command. */
2887
2888 static void
2889 set_radix (const char *arg, int from_tty)
2890 {
2891 unsigned radix;
2892
2893 radix = (arg == NULL) ? 10 : parse_and_eval_long (arg);
2894 set_output_radix_1 (0, radix);
2895 set_input_radix_1 (0, radix);
2896 if (from_tty)
2897 {
2898 printf_filtered (_("Input and output radices now set to "
2899 "decimal %u, hex %x, octal %o.\n"),
2900 radix, radix, radix);
2901 }
2902 }
2903
2904 /* Show both the input and output radices. */
2905
2906 static void
2907 show_radix (const char *arg, int from_tty)
2908 {
2909 if (from_tty)
2910 {
2911 if (input_radix == output_radix)
2912 {
2913 printf_filtered (_("Input and output radices set to "
2914 "decimal %u, hex %x, octal %o.\n"),
2915 input_radix, input_radix, input_radix);
2916 }
2917 else
2918 {
2919 printf_filtered (_("Input radix set to decimal "
2920 "%u, hex %x, octal %o.\n"),
2921 input_radix, input_radix, input_radix);
2922 printf_filtered (_("Output radix set to decimal "
2923 "%u, hex %x, octal %o.\n"),
2924 output_radix, output_radix, output_radix);
2925 }
2926 }
2927 }
2928 \f
2929
2930 /* Controls printing of vtbl's. */
2931 static void
2932 show_vtblprint (struct ui_file *file, int from_tty,
2933 struct cmd_list_element *c, const char *value)
2934 {
2935 fprintf_filtered (file, _("\
2936 Printing of C++ virtual function tables is %s.\n"),
2937 value);
2938 }
2939
2940 /* Controls looking up an object's derived type using what we find in
2941 its vtables. */
2942 static void
2943 show_objectprint (struct ui_file *file, int from_tty,
2944 struct cmd_list_element *c,
2945 const char *value)
2946 {
2947 fprintf_filtered (file, _("\
2948 Printing of object's derived type based on vtable info is %s.\n"),
2949 value);
2950 }
2951
2952 static void
2953 show_static_field_print (struct ui_file *file, int from_tty,
2954 struct cmd_list_element *c,
2955 const char *value)
2956 {
2957 fprintf_filtered (file,
2958 _("Printing of C++ static members is %s.\n"),
2959 value);
2960 }
2961
2962 \f
2963
2964 /* A couple typedefs to make writing the options a bit more
2965 convenient. */
2966 using boolean_option_def
2967 = gdb::option::boolean_option_def<value_print_options>;
2968 using uinteger_option_def
2969 = gdb::option::uinteger_option_def<value_print_options>;
2970 using zuinteger_unlimited_option_def
2971 = gdb::option::zuinteger_unlimited_option_def<value_print_options>;
2972
2973 /* Definitions of options for the "print" and "compile print"
2974 commands. */
2975 static const gdb::option::option_def value_print_option_defs[] = {
2976
2977 boolean_option_def {
2978 "address",
2979 [] (value_print_options *opt) { return &opt->addressprint; },
2980 show_addressprint, /* show_cmd_cb */
2981 N_("Set printing of addresses."),
2982 N_("Show printing of addresses."),
2983 NULL, /* help_doc */
2984 },
2985
2986 boolean_option_def {
2987 "array",
2988 [] (value_print_options *opt) { return &opt->prettyformat_arrays; },
2989 show_prettyformat_arrays, /* show_cmd_cb */
2990 N_("Set pretty formatting of arrays."),
2991 N_("Show pretty formatting of arrays."),
2992 NULL, /* help_doc */
2993 },
2994
2995 boolean_option_def {
2996 "array-indexes",
2997 [] (value_print_options *opt) { return &opt->print_array_indexes; },
2998 show_print_array_indexes, /* show_cmd_cb */
2999 N_("Set printing of array indexes."),
3000 N_("Show printing of array indexes."),
3001 NULL, /* help_doc */
3002 },
3003
3004 uinteger_option_def {
3005 "elements",
3006 [] (value_print_options *opt) { return &opt->print_max; },
3007 show_print_max, /* show_cmd_cb */
3008 N_("Set limit on string chars or array elements to print."),
3009 N_("Show limit on string chars or array elements to print."),
3010 N_("\"unlimited\" causes there to be no limit."),
3011 },
3012
3013 zuinteger_unlimited_option_def {
3014 "max-depth",
3015 [] (value_print_options *opt) { return &opt->max_depth; },
3016 show_print_max_depth, /* show_cmd_cb */
3017 N_("Set maximum print depth for nested structures, unions and arrays."),
3018 N_("Show maximum print depth for nested structures, unions, and arrays."),
3019 N_("When structures, unions, or arrays are nested beyond this depth then they\n\
3020 will be replaced with either '{...}' or '(...)' depending on the language.\n\
3021 Use \"unlimited\" to print the complete structure.")
3022 },
3023
3024 boolean_option_def {
3025 "memory-tag-violations",
3026 [] (value_print_options *opt) { return &opt->memory_tag_violations; },
3027 show_memory_tag_violations, /* show_cmd_cb */
3028 N_("Set printing of memory tag violations for pointers."),
3029 N_("Show printing of memory tag violations for pointers."),
3030 N_("Issue a warning when the printed value is a pointer\n\
3031 whose logical tag doesn't match the allocation tag of the memory\n\
3032 location it points to."),
3033 },
3034
3035 boolean_option_def {
3036 "null-stop",
3037 [] (value_print_options *opt) { return &opt->stop_print_at_null; },
3038 show_stop_print_at_null, /* show_cmd_cb */
3039 N_("Set printing of char arrays to stop at first null char."),
3040 N_("Show printing of char arrays to stop at first null char."),
3041 NULL, /* help_doc */
3042 },
3043
3044 boolean_option_def {
3045 "object",
3046 [] (value_print_options *opt) { return &opt->objectprint; },
3047 show_objectprint, /* show_cmd_cb */
3048 _("Set printing of C++ virtual function tables."),
3049 _("Show printing of C++ virtual function tables."),
3050 NULL, /* help_doc */
3051 },
3052
3053 boolean_option_def {
3054 "pretty",
3055 [] (value_print_options *opt) { return &opt->prettyformat_structs; },
3056 show_prettyformat_structs, /* show_cmd_cb */
3057 N_("Set pretty formatting of structures."),
3058 N_("Show pretty formatting of structures."),
3059 NULL, /* help_doc */
3060 },
3061
3062 boolean_option_def {
3063 "raw-values",
3064 [] (value_print_options *opt) { return &opt->raw; },
3065 NULL, /* show_cmd_cb */
3066 N_("Set whether to print values in raw form."),
3067 N_("Show whether to print values in raw form."),
3068 N_("If set, values are printed in raw form, bypassing any\n\
3069 pretty-printers for that value.")
3070 },
3071
3072 uinteger_option_def {
3073 "repeats",
3074 [] (value_print_options *opt) { return &opt->repeat_count_threshold; },
3075 show_repeat_count_threshold, /* show_cmd_cb */
3076 N_("Set threshold for repeated print elements."),
3077 N_("Show threshold for repeated print elements."),
3078 N_("\"unlimited\" causes all elements to be individually printed."),
3079 },
3080
3081 boolean_option_def {
3082 "static-members",
3083 [] (value_print_options *opt) { return &opt->static_field_print; },
3084 show_static_field_print, /* show_cmd_cb */
3085 N_("Set printing of C++ static members."),
3086 N_("Show printing of C++ static members."),
3087 NULL, /* help_doc */
3088 },
3089
3090 boolean_option_def {
3091 "symbol",
3092 [] (value_print_options *opt) { return &opt->symbol_print; },
3093 show_symbol_print, /* show_cmd_cb */
3094 N_("Set printing of symbol names when printing pointers."),
3095 N_("Show printing of symbol names when printing pointers."),
3096 NULL, /* help_doc */
3097 },
3098
3099 boolean_option_def {
3100 "union",
3101 [] (value_print_options *opt) { return &opt->unionprint; },
3102 show_unionprint, /* show_cmd_cb */
3103 N_("Set printing of unions interior to structures."),
3104 N_("Show printing of unions interior to structures."),
3105 NULL, /* help_doc */
3106 },
3107
3108 boolean_option_def {
3109 "vtbl",
3110 [] (value_print_options *opt) { return &opt->vtblprint; },
3111 show_vtblprint, /* show_cmd_cb */
3112 N_("Set printing of C++ virtual function tables."),
3113 N_("Show printing of C++ virtual function tables."),
3114 NULL, /* help_doc */
3115 },
3116 };
3117
3118 /* See valprint.h. */
3119
3120 gdb::option::option_def_group
3121 make_value_print_options_def_group (value_print_options *opts)
3122 {
3123 return {{value_print_option_defs}, opts};
3124 }
3125
3126 #if GDB_SELF_TEST
3127
3128 /* Test printing of TYPE_CODE_FLAGS values. */
3129
3130 static void
3131 test_print_flags (gdbarch *arch)
3132 {
3133 type *flags_type = arch_flags_type (arch, "test_type", 32);
3134 type *field_type = builtin_type (arch)->builtin_uint32;
3135
3136 /* Value: 1010 1010
3137 Fields: CCCB BAAA */
3138 append_flags_type_field (flags_type, 0, 3, field_type, "A");
3139 append_flags_type_field (flags_type, 3, 2, field_type, "B");
3140 append_flags_type_field (flags_type, 5, 3, field_type, "C");
3141
3142 value *val = allocate_value (flags_type);
3143 gdb_byte *contents = value_contents_writeable (val).data ();
3144 store_unsigned_integer (contents, 4, gdbarch_byte_order (arch), 0xaa);
3145
3146 string_file out;
3147 val_print_type_code_flags (flags_type, val, 0, &out);
3148 SELF_CHECK (out.string () == "[ A=2 B=1 C=5 ]");
3149 }
3150
3151 #endif
3152
3153 void _initialize_valprint ();
3154 void
3155 _initialize_valprint ()
3156 {
3157 #if GDB_SELF_TEST
3158 selftests::register_test_foreach_arch ("print-flags", test_print_flags);
3159 #endif
3160
3161 set_show_commands setshow_print_cmds
3162 = add_setshow_prefix_cmd ("print", no_class,
3163 _("Generic command for setting how things print."),
3164 _("Generic command for showing print settings."),
3165 &setprintlist, &showprintlist,
3166 &setlist, &showlist);
3167 add_alias_cmd ("p", setshow_print_cmds.set, no_class, 1, &setlist);
3168 /* Prefer set print to set prompt. */
3169 add_alias_cmd ("pr", setshow_print_cmds.set, no_class, 1, &setlist);
3170 add_alias_cmd ("p", setshow_print_cmds.show, no_class, 1, &showlist);
3171 add_alias_cmd ("pr", setshow_print_cmds.show, no_class, 1, &showlist);
3172
3173 set_show_commands setshow_print_raw_cmds
3174 = add_setshow_prefix_cmd
3175 ("raw", no_class,
3176 _("Generic command for setting what things to print in \"raw\" mode."),
3177 _("Generic command for showing \"print raw\" settings."),
3178 &setprintrawlist, &showprintrawlist, &setprintlist, &showprintlist);
3179 deprecate_cmd (setshow_print_raw_cmds.set, nullptr);
3180 deprecate_cmd (setshow_print_raw_cmds.show, nullptr);
3181
3182 gdb::option::add_setshow_cmds_for_options
3183 (class_support, &user_print_options, value_print_option_defs,
3184 &setprintlist, &showprintlist);
3185
3186 add_setshow_zuinteger_cmd ("input-radix", class_support, &input_radix_1,
3187 _("\
3188 Set default input radix for entering numbers."), _("\
3189 Show default input radix for entering numbers."), NULL,
3190 set_input_radix,
3191 show_input_radix,
3192 &setlist, &showlist);
3193
3194 add_setshow_zuinteger_cmd ("output-radix", class_support, &output_radix_1,
3195 _("\
3196 Set default output radix for printing of values."), _("\
3197 Show default output radix for printing of values."), NULL,
3198 set_output_radix,
3199 show_output_radix,
3200 &setlist, &showlist);
3201
3202 /* The "set radix" and "show radix" commands are special in that
3203 they are like normal set and show commands but allow two normally
3204 independent variables to be either set or shown with a single
3205 command. So the usual deprecated_add_set_cmd() and [deleted]
3206 add_show_from_set() commands aren't really appropriate. */
3207 /* FIXME: i18n: With the new add_setshow_integer command, that is no
3208 longer true - show can display anything. */
3209 add_cmd ("radix", class_support, set_radix, _("\
3210 Set default input and output number radices.\n\
3211 Use 'set input-radix' or 'set output-radix' to independently set each.\n\
3212 Without an argument, sets both radices back to the default value of 10."),
3213 &setlist);
3214 add_cmd ("radix", class_support, show_radix, _("\
3215 Show the default input and output number radices.\n\
3216 Use 'show input-radix' or 'show output-radix' to independently show each."),
3217 &showlist);
3218 }