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