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