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