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