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