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