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