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