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