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