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