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