PR gdb/14288
[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                   sprintf (octal, "\\%.3o", (int) (value & 0777));
1978                 else
1979                   sprintf (octal, "\\x%lx", (long) value);
1980                 append_string_as_wide (octal, output);
1981               }
1982             /* If we somehow have extra bytes, print them now.  */
1983             while (i < orig_len)
1984               {
1985                 char octal[5];
1986
1987                 sprintf (octal, "\\%.3o", orig[i] & 0xff);
1988                 append_string_as_wide (octal, output);
1989                 ++i;
1990               }
1991
1992             *need_escapep = 1;
1993           }
1994           break;
1995         }
1996     }
1997 }
1998
1999 /* Print the character C on STREAM as part of the contents of a
2000    literal string whose delimiter is QUOTER.  ENCODING names the
2001    encoding of C.  */
2002
2003 void
2004 generic_emit_char (int c, struct type *type, struct ui_file *stream,
2005                    int quoter, const char *encoding)
2006 {
2007   enum bfd_endian byte_order
2008     = gdbarch_byte_order (get_type_arch (type));
2009   struct obstack wchar_buf, output;
2010   struct cleanup *cleanups;
2011   gdb_byte *buf;
2012   struct wchar_iterator *iter;
2013   int need_escape = 0;
2014
2015   buf = alloca (TYPE_LENGTH (type));
2016   pack_long (buf, type, c);
2017
2018   iter = make_wchar_iterator (buf, TYPE_LENGTH (type),
2019                               encoding, TYPE_LENGTH (type));
2020   cleanups = make_cleanup_wchar_iterator (iter);
2021
2022   /* This holds the printable form of the wchar_t data.  */
2023   obstack_init (&wchar_buf);
2024   make_cleanup_obstack_free (&wchar_buf);
2025
2026   while (1)
2027     {
2028       int num_chars;
2029       gdb_wchar_t *chars;
2030       const gdb_byte *buf;
2031       size_t buflen;
2032       int print_escape = 1;
2033       enum wchar_iterate_result result;
2034
2035       num_chars = wchar_iterate (iter, &result, &chars, &buf, &buflen);
2036       if (num_chars < 0)
2037         break;
2038       if (num_chars > 0)
2039         {
2040           /* If all characters are printable, print them.  Otherwise,
2041              we're going to have to print an escape sequence.  We
2042              check all characters because we want to print the target
2043              bytes in the escape sequence, and we don't know character
2044              boundaries there.  */
2045           int i;
2046
2047           print_escape = 0;
2048           for (i = 0; i < num_chars; ++i)
2049             if (!wchar_printable (chars[i]))
2050               {
2051                 print_escape = 1;
2052                 break;
2053               }
2054
2055           if (!print_escape)
2056             {
2057               for (i = 0; i < num_chars; ++i)
2058                 print_wchar (chars[i], buf, buflen,
2059                              TYPE_LENGTH (type), byte_order,
2060                              &wchar_buf, quoter, &need_escape);
2061             }
2062         }
2063
2064       /* This handles the NUM_CHARS == 0 case as well.  */
2065       if (print_escape)
2066         print_wchar (gdb_WEOF, buf, buflen, TYPE_LENGTH (type),
2067                      byte_order, &wchar_buf, quoter, &need_escape);
2068     }
2069
2070   /* The output in the host encoding.  */
2071   obstack_init (&output);
2072   make_cleanup_obstack_free (&output);
2073
2074   convert_between_encodings (INTERMEDIATE_ENCODING, host_charset (),
2075                              obstack_base (&wchar_buf),
2076                              obstack_object_size (&wchar_buf),
2077                              sizeof (gdb_wchar_t), &output, translit_char);
2078   obstack_1grow (&output, '\0');
2079
2080   fputs_filtered (obstack_base (&output), stream);
2081
2082   do_cleanups (cleanups);
2083 }
2084
2085 /* Return the repeat count of the next character/byte in ITER,
2086    storing the result in VEC.  */
2087
2088 static int
2089 count_next_character (struct wchar_iterator *iter,
2090                       VEC (converted_character_d) **vec)
2091 {
2092   struct converted_character *current;
2093
2094   if (VEC_empty (converted_character_d, *vec))
2095     {
2096       struct converted_character tmp;
2097       gdb_wchar_t *chars;
2098
2099       tmp.num_chars
2100         = wchar_iterate (iter, &tmp.result, &chars, &tmp.buf, &tmp.buflen);
2101       if (tmp.num_chars > 0)
2102         {
2103           gdb_assert (tmp.num_chars < MAX_WCHARS);
2104           memcpy (tmp.chars, chars, tmp.num_chars * sizeof (gdb_wchar_t));
2105         }
2106       VEC_safe_push (converted_character_d, *vec, &tmp);
2107     }
2108
2109   current = VEC_last (converted_character_d, *vec);
2110
2111   /* Count repeated characters or bytes.  */
2112   current->repeat_count = 1;
2113   if (current->num_chars == -1)
2114     {
2115       /* EOF  */
2116       return -1;
2117     }
2118   else
2119     {
2120       gdb_wchar_t *chars;
2121       struct converted_character d;
2122       int repeat;
2123
2124       d.repeat_count = 0;
2125
2126       while (1)
2127         {
2128           /* Get the next character.  */
2129           d.num_chars
2130             = wchar_iterate (iter, &d.result, &chars, &d.buf, &d.buflen);
2131
2132           /* If a character was successfully converted, save the character
2133              into the converted character.  */
2134           if (d.num_chars > 0)
2135             {
2136               gdb_assert (d.num_chars < MAX_WCHARS);
2137               memcpy (d.chars, chars, WCHAR_BUFLEN (d.num_chars));
2138             }
2139
2140           /* Determine if the current character is the same as this
2141              new character.  */
2142           if (d.num_chars == current->num_chars && d.result == current->result)
2143             {
2144               /* There are two cases to consider:
2145
2146                  1) Equality of converted character (num_chars > 0)
2147                  2) Equality of non-converted character (num_chars == 0)  */
2148               if ((current->num_chars > 0
2149                    && memcmp (current->chars, d.chars,
2150                               WCHAR_BUFLEN (current->num_chars)) == 0)
2151                   || (current->num_chars == 0
2152                       && current->buflen == d.buflen
2153                       && memcmp (current->buf, d.buf, current->buflen) == 0))
2154                 ++current->repeat_count;
2155               else
2156                 break;
2157             }
2158           else
2159             break;
2160         }
2161
2162       /* Push this next converted character onto the result vector.  */
2163       repeat = current->repeat_count;
2164       VEC_safe_push (converted_character_d, *vec, &d);
2165       return repeat;
2166     }
2167 }
2168
2169 /* Print the characters in CHARS to the OBSTACK.  QUOTE_CHAR is the quote
2170    character to use with string output.  WIDTH is the size of the output
2171    character type.  BYTE_ORDER is the the target byte order.  OPTIONS
2172    is the user's print options.  */
2173
2174 static void
2175 print_converted_chars_to_obstack (struct obstack *obstack,
2176                                   VEC (converted_character_d) *chars,
2177                                   int quote_char, int width,
2178                                   enum bfd_endian byte_order,
2179                                   const struct value_print_options *options)
2180 {
2181   unsigned int idx;
2182   struct converted_character *elem;
2183   enum {START, SINGLE, REPEAT, INCOMPLETE, FINISH} state, last;
2184   gdb_wchar_t wide_quote_char = gdb_btowc (quote_char);
2185   int need_escape = 0;
2186
2187   /* Set the start state.  */
2188   idx = 0;
2189   last = state = START;
2190   elem = NULL;
2191
2192   while (1)
2193     {
2194       switch (state)
2195         {
2196         case START:
2197           /* Nothing to do.  */
2198           break;
2199
2200         case SINGLE:
2201           {
2202             int j;
2203
2204             /* We are outputting a single character
2205                (< options->repeat_count_threshold).  */
2206
2207             if (last != SINGLE)
2208               {
2209                 /* We were outputting some other type of content, so we
2210                    must output and a comma and a quote.  */
2211                 if (last != START)
2212                   obstack_grow_wstr (obstack, LCST (", "));
2213                 if (options->inspect_it)
2214                   obstack_grow_wstr (obstack, LCST ("\\"));
2215                 obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
2216               }
2217             /* Output the character.  */
2218             for (j = 0; j < elem->repeat_count; ++j)
2219               {
2220                 if (elem->result == wchar_iterate_ok)
2221                   print_wchar (elem->chars[0], elem->buf, elem->buflen, width,
2222                                byte_order, obstack, quote_char, &need_escape);
2223                 else
2224                   print_wchar (gdb_WEOF, elem->buf, elem->buflen, width,
2225                                byte_order, obstack, quote_char, &need_escape);
2226               }
2227           }
2228           break;
2229
2230         case REPEAT:
2231           {
2232             int j;
2233             char *s;
2234
2235             /* We are outputting a character with a repeat count
2236                greater than options->repeat_count_threshold.  */
2237
2238             if (last == SINGLE)
2239               {
2240                 /* We were outputting a single string.  Terminate the
2241                    string.  */
2242                 if (options->inspect_it)
2243                   obstack_grow_wstr (obstack, LCST ("\\"));
2244                 obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
2245               }
2246             if (last != START)
2247               obstack_grow_wstr (obstack, LCST (", "));
2248
2249             /* Output the character and repeat string.  */
2250             obstack_grow_wstr (obstack, LCST ("'"));
2251             if (elem->result == wchar_iterate_ok)
2252               print_wchar (elem->chars[0], elem->buf, elem->buflen, width,
2253                            byte_order, obstack, quote_char, &need_escape);
2254             else
2255               print_wchar (gdb_WEOF, elem->buf, elem->buflen, width,
2256                            byte_order, obstack, quote_char, &need_escape);
2257             obstack_grow_wstr (obstack, LCST ("'"));
2258             s = xstrprintf (_(" <repeats %u times>"), elem->repeat_count);
2259             for (j = 0; s[j]; ++j)
2260               {
2261                 gdb_wchar_t w = gdb_btowc (s[j]);
2262                 obstack_grow (obstack, &w, sizeof (gdb_wchar_t));
2263               }
2264             xfree (s);
2265           }
2266           break;
2267
2268         case INCOMPLETE:
2269           /* We are outputting an incomplete sequence.  */
2270           if (last == SINGLE)
2271             {
2272               /* If we were outputting a string of SINGLE characters,
2273                  terminate the quote.  */
2274               if (options->inspect_it)
2275                 obstack_grow_wstr (obstack, LCST ("\\"));
2276               obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
2277             }
2278           if (last != START)
2279             obstack_grow_wstr (obstack, LCST (", "));
2280
2281           /* Output the incomplete sequence string.  */
2282           obstack_grow_wstr (obstack, LCST ("<incomplete sequence "));
2283           print_wchar (gdb_WEOF, elem->buf, elem->buflen, width, byte_order,
2284                        obstack, 0, &need_escape);
2285           obstack_grow_wstr (obstack, LCST (">"));
2286
2287           /* We do not attempt to outupt anything after this.  */
2288           state = FINISH;
2289           break;
2290
2291         case FINISH:
2292           /* All done.  If we were outputting a string of SINGLE
2293              characters, the string must be terminated.  Otherwise,
2294              REPEAT and INCOMPLETE are always left properly terminated.  */
2295           if (last == SINGLE)
2296             {
2297               if (options->inspect_it)
2298                 obstack_grow_wstr (obstack, LCST ("\\"));
2299               obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
2300             }
2301
2302           return;
2303         }
2304
2305       /* Get the next element and state.  */
2306       last = state;
2307       if (state != FINISH)
2308         {
2309           elem = VEC_index (converted_character_d, chars, idx++);
2310           switch (elem->result)
2311             {
2312             case wchar_iterate_ok:
2313             case wchar_iterate_invalid:
2314               if (elem->repeat_count > options->repeat_count_threshold)
2315                 state = REPEAT;
2316               else
2317                 state = SINGLE;
2318               break;
2319
2320             case wchar_iterate_incomplete:
2321               state = INCOMPLETE;
2322               break;
2323
2324             case wchar_iterate_eof:
2325               state = FINISH;
2326               break;
2327             }
2328         }
2329     }
2330 }
2331
2332 /* Print the character string STRING, printing at most LENGTH
2333    characters.  LENGTH is -1 if the string is nul terminated.  TYPE is
2334    the type of each character.  OPTIONS holds the printing options;
2335    printing stops early if the number hits print_max; repeat counts
2336    are printed as appropriate.  Print ellipses at the end if we had to
2337    stop before printing LENGTH characters, or if FORCE_ELLIPSES.
2338    QUOTE_CHAR is the character to print at each end of the string.  If
2339    C_STYLE_TERMINATOR is true, and the last character is 0, then it is
2340    omitted.  */
2341
2342 void
2343 generic_printstr (struct ui_file *stream, struct type *type, 
2344                   const gdb_byte *string, unsigned int length, 
2345                   const char *encoding, int force_ellipses,
2346                   int quote_char, int c_style_terminator,
2347                   const struct value_print_options *options)
2348 {
2349   enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
2350   unsigned int i;
2351   int width = TYPE_LENGTH (type);
2352   struct obstack wchar_buf, output;
2353   struct cleanup *cleanup;
2354   struct wchar_iterator *iter;
2355   int finished = 0;
2356   struct converted_character *last;
2357   VEC (converted_character_d) *converted_chars;
2358
2359   if (length == -1)
2360     {
2361       unsigned long current_char = 1;
2362
2363       for (i = 0; current_char; ++i)
2364         {
2365           QUIT;
2366           current_char = extract_unsigned_integer (string + i * width,
2367                                                    width, byte_order);
2368         }
2369       length = i;
2370     }
2371
2372   /* If the string was not truncated due to `set print elements', and
2373      the last byte of it is a null, we don't print that, in
2374      traditional C style.  */
2375   if (c_style_terminator
2376       && !force_ellipses
2377       && length > 0
2378       && (extract_unsigned_integer (string + (length - 1) * width,
2379                                     width, byte_order) == 0))
2380     length--;
2381
2382   if (length == 0)
2383     {
2384       fputs_filtered ("\"\"", stream);
2385       return;
2386     }
2387
2388   /* Arrange to iterate over the characters, in wchar_t form.  */
2389   iter = make_wchar_iterator (string, length * width, encoding, width);
2390   cleanup = make_cleanup_wchar_iterator (iter);
2391   converted_chars = NULL;
2392   make_cleanup (VEC_cleanup (converted_character_d), &converted_chars);
2393
2394   /* Convert characters until the string is over or the maximum
2395      number of printed characters has been reached.  */
2396   i = 0;
2397   while (i < options->print_max)
2398     {
2399       int r;
2400
2401       QUIT;
2402
2403       /* Grab the next character and repeat count.  */
2404       r = count_next_character (iter, &converted_chars);
2405
2406       /* If less than zero, the end of the input string was reached.  */
2407       if (r < 0)
2408         break;
2409
2410       /* Otherwise, add the count to the total print count and get
2411          the next character.  */
2412       i += r;
2413     }
2414
2415   /* Get the last element and determine if the entire string was
2416      processed.  */
2417   last = VEC_last (converted_character_d, converted_chars);
2418   finished = (last->result == wchar_iterate_eof);
2419
2420   /* Ensure that CONVERTED_CHARS is terminated.  */
2421   last->result = wchar_iterate_eof;
2422
2423   /* WCHAR_BUF is the obstack we use to represent the string in
2424      wchar_t form.  */
2425   obstack_init (&wchar_buf);
2426   make_cleanup_obstack_free (&wchar_buf);
2427
2428   /* Print the output string to the obstack.  */
2429   print_converted_chars_to_obstack (&wchar_buf, converted_chars, quote_char,
2430                                     width, byte_order, options);
2431
2432   if (force_ellipses || !finished)
2433     obstack_grow_wstr (&wchar_buf, LCST ("..."));
2434
2435   /* OUTPUT is where we collect `char's for printing.  */
2436   obstack_init (&output);
2437   make_cleanup_obstack_free (&output);
2438
2439   convert_between_encodings (INTERMEDIATE_ENCODING, host_charset (),
2440                              obstack_base (&wchar_buf),
2441                              obstack_object_size (&wchar_buf),
2442                              sizeof (gdb_wchar_t), &output, translit_char);
2443   obstack_1grow (&output, '\0');
2444
2445   fputs_filtered (obstack_base (&output), stream);
2446
2447   do_cleanups (cleanup);
2448 }
2449
2450 /* Print a string from the inferior, starting at ADDR and printing up to LEN
2451    characters, of WIDTH bytes a piece, to STREAM.  If LEN is -1, printing
2452    stops at the first null byte, otherwise printing proceeds (including null
2453    bytes) until either print_max or LEN characters have been printed,
2454    whichever is smaller.  ENCODING is the name of the string's
2455    encoding.  It can be NULL, in which case the target encoding is
2456    assumed.  */
2457
2458 int
2459 val_print_string (struct type *elttype, const char *encoding,
2460                   CORE_ADDR addr, int len,
2461                   struct ui_file *stream,
2462                   const struct value_print_options *options)
2463 {
2464   int force_ellipsis = 0;       /* Force ellipsis to be printed if nonzero.  */
2465   int errcode;                  /* Errno returned from bad reads.  */
2466   int found_nul;                /* Non-zero if we found the nul char.  */
2467   unsigned int fetchlimit;      /* Maximum number of chars to print.  */
2468   int bytes_read;
2469   gdb_byte *buffer = NULL;      /* Dynamically growable fetch buffer.  */
2470   struct cleanup *old_chain = NULL;     /* Top of the old cleanup chain.  */
2471   struct gdbarch *gdbarch = get_type_arch (elttype);
2472   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
2473   int width = TYPE_LENGTH (elttype);
2474
2475   /* First we need to figure out the limit on the number of characters we are
2476      going to attempt to fetch and print.  This is actually pretty simple.  If
2477      LEN >= zero, then the limit is the minimum of LEN and print_max.  If
2478      LEN is -1, then the limit is print_max.  This is true regardless of
2479      whether print_max is zero, UINT_MAX (unlimited), or something in between,
2480      because finding the null byte (or available memory) is what actually
2481      limits the fetch.  */
2482
2483   fetchlimit = (len == -1 ? options->print_max : min (len,
2484                                                       options->print_max));
2485
2486   errcode = read_string (addr, len, width, fetchlimit, byte_order,
2487                          &buffer, &bytes_read);
2488   old_chain = make_cleanup (xfree, buffer);
2489
2490   addr += bytes_read;
2491
2492   /* We now have either successfully filled the buffer to fetchlimit,
2493      or terminated early due to an error or finding a null char when
2494      LEN is -1.  */
2495
2496   /* Determine found_nul by looking at the last character read.  */
2497   found_nul = extract_unsigned_integer (buffer + bytes_read - width, width,
2498                                         byte_order) == 0;
2499   if (len == -1 && !found_nul)
2500     {
2501       gdb_byte *peekbuf;
2502
2503       /* We didn't find a NUL terminator we were looking for.  Attempt
2504          to peek at the next character.  If not successful, or it is not
2505          a null byte, then force ellipsis to be printed.  */
2506
2507       peekbuf = (gdb_byte *) alloca (width);
2508
2509       if (target_read_memory (addr, peekbuf, width) == 0
2510           && extract_unsigned_integer (peekbuf, width, byte_order) != 0)
2511         force_ellipsis = 1;
2512     }
2513   else if ((len >= 0 && errcode != 0) || (len > bytes_read / width))
2514     {
2515       /* Getting an error when we have a requested length, or fetching less
2516          than the number of characters actually requested, always make us
2517          print ellipsis.  */
2518       force_ellipsis = 1;
2519     }
2520
2521   /* If we get an error before fetching anything, don't print a string.
2522      But if we fetch something and then get an error, print the string
2523      and then the error message.  */
2524   if (errcode == 0 || bytes_read > 0)
2525     {
2526       LA_PRINT_STRING (stream, elttype, buffer, bytes_read / width,
2527                        encoding, force_ellipsis, options);
2528     }
2529
2530   if (errcode != 0)
2531     {
2532       if (errcode == EIO)
2533         {
2534           fprintf_filtered (stream, "<Address ");
2535           fputs_filtered (paddress (gdbarch, addr), stream);
2536           fprintf_filtered (stream, " out of bounds>");
2537         }
2538       else
2539         {
2540           fprintf_filtered (stream, "<Error reading address ");
2541           fputs_filtered (paddress (gdbarch, addr), stream);
2542           fprintf_filtered (stream, ": %s>", safe_strerror (errcode));
2543         }
2544     }
2545
2546   gdb_flush (stream);
2547   do_cleanups (old_chain);
2548
2549   return (bytes_read / width);
2550 }
2551 \f
2552
2553 /* The 'set input-radix' command writes to this auxiliary variable.
2554    If the requested radix is valid, INPUT_RADIX is updated; otherwise,
2555    it is left unchanged.  */
2556
2557 static unsigned input_radix_1 = 10;
2558
2559 /* Validate an input or output radix setting, and make sure the user
2560    knows what they really did here.  Radix setting is confusing, e.g.
2561    setting the input radix to "10" never changes it!  */
2562
2563 static void
2564 set_input_radix (char *args, int from_tty, struct cmd_list_element *c)
2565 {
2566   set_input_radix_1 (from_tty, input_radix_1);
2567 }
2568
2569 static void
2570 set_input_radix_1 (int from_tty, unsigned radix)
2571 {
2572   /* We don't currently disallow any input radix except 0 or 1, which don't
2573      make any mathematical sense.  In theory, we can deal with any input
2574      radix greater than 1, even if we don't have unique digits for every
2575      value from 0 to radix-1, but in practice we lose on large radix values.
2576      We should either fix the lossage or restrict the radix range more.
2577      (FIXME).  */
2578
2579   if (radix < 2)
2580     {
2581       input_radix_1 = input_radix;
2582       error (_("Nonsense input radix ``decimal %u''; input radix unchanged."),
2583              radix);
2584     }
2585   input_radix_1 = input_radix = radix;
2586   if (from_tty)
2587     {
2588       printf_filtered (_("Input radix now set to "
2589                          "decimal %u, hex %x, octal %o.\n"),
2590                        radix, radix, radix);
2591     }
2592 }
2593
2594 /* The 'set output-radix' command writes to this auxiliary variable.
2595    If the requested radix is valid, OUTPUT_RADIX is updated,
2596    otherwise, it is left unchanged.  */
2597
2598 static unsigned output_radix_1 = 10;
2599
2600 static void
2601 set_output_radix (char *args, int from_tty, struct cmd_list_element *c)
2602 {
2603   set_output_radix_1 (from_tty, output_radix_1);
2604 }
2605
2606 static void
2607 set_output_radix_1 (int from_tty, unsigned radix)
2608 {
2609   /* Validate the radix and disallow ones that we aren't prepared to
2610      handle correctly, leaving the radix unchanged.  */
2611   switch (radix)
2612     {
2613     case 16:
2614       user_print_options.output_format = 'x';   /* hex */
2615       break;
2616     case 10:
2617       user_print_options.output_format = 0;     /* decimal */
2618       break;
2619     case 8:
2620       user_print_options.output_format = 'o';   /* octal */
2621       break;
2622     default:
2623       output_radix_1 = output_radix;
2624       error (_("Unsupported output radix ``decimal %u''; "
2625                "output radix unchanged."),
2626              radix);
2627     }
2628   output_radix_1 = output_radix = radix;
2629   if (from_tty)
2630     {
2631       printf_filtered (_("Output radix now set to "
2632                          "decimal %u, hex %x, octal %o.\n"),
2633                        radix, radix, radix);
2634     }
2635 }
2636
2637 /* Set both the input and output radix at once.  Try to set the output radix
2638    first, since it has the most restrictive range.  An radix that is valid as
2639    an output radix is also valid as an input radix.
2640
2641    It may be useful to have an unusual input radix.  If the user wishes to
2642    set an input radix that is not valid as an output radix, he needs to use
2643    the 'set input-radix' command.  */
2644
2645 static void
2646 set_radix (char *arg, int from_tty)
2647 {
2648   unsigned radix;
2649
2650   radix = (arg == NULL) ? 10 : parse_and_eval_long (arg);
2651   set_output_radix_1 (0, radix);
2652   set_input_radix_1 (0, radix);
2653   if (from_tty)
2654     {
2655       printf_filtered (_("Input and output radices now set to "
2656                          "decimal %u, hex %x, octal %o.\n"),
2657                        radix, radix, radix);
2658     }
2659 }
2660
2661 /* Show both the input and output radices.  */
2662
2663 static void
2664 show_radix (char *arg, int from_tty)
2665 {
2666   if (from_tty)
2667     {
2668       if (input_radix == output_radix)
2669         {
2670           printf_filtered (_("Input and output radices set to "
2671                              "decimal %u, hex %x, octal %o.\n"),
2672                            input_radix, input_radix, input_radix);
2673         }
2674       else
2675         {
2676           printf_filtered (_("Input radix set to decimal "
2677                              "%u, hex %x, octal %o.\n"),
2678                            input_radix, input_radix, input_radix);
2679           printf_filtered (_("Output radix set to decimal "
2680                              "%u, hex %x, octal %o.\n"),
2681                            output_radix, output_radix, output_radix);
2682         }
2683     }
2684 }
2685 \f
2686
2687 static void
2688 set_print (char *arg, int from_tty)
2689 {
2690   printf_unfiltered (
2691      "\"set print\" must be followed by the name of a print subcommand.\n");
2692   help_list (setprintlist, "set print ", -1, gdb_stdout);
2693 }
2694
2695 static void
2696 show_print (char *args, int from_tty)
2697 {
2698   cmd_show_list (showprintlist, from_tty, "");
2699 }
2700 \f
2701 void
2702 _initialize_valprint (void)
2703 {
2704   add_prefix_cmd ("print", no_class, set_print,
2705                   _("Generic command for setting how things print."),
2706                   &setprintlist, "set print ", 0, &setlist);
2707   add_alias_cmd ("p", "print", no_class, 1, &setlist);
2708   /* Prefer set print to set prompt.  */
2709   add_alias_cmd ("pr", "print", no_class, 1, &setlist);
2710
2711   add_prefix_cmd ("print", no_class, show_print,
2712                   _("Generic command for showing print settings."),
2713                   &showprintlist, "show print ", 0, &showlist);
2714   add_alias_cmd ("p", "print", no_class, 1, &showlist);
2715   add_alias_cmd ("pr", "print", no_class, 1, &showlist);
2716
2717   add_setshow_uinteger_cmd ("elements", no_class,
2718                             &user_print_options.print_max, _("\
2719 Set limit on string chars or array elements to print."), _("\
2720 Show limit on string chars or array elements to print."), _("\
2721 \"set print elements 0\" causes there to be no limit."),
2722                             NULL,
2723                             show_print_max,
2724                             &setprintlist, &showprintlist);
2725
2726   add_setshow_boolean_cmd ("null-stop", no_class,
2727                            &user_print_options.stop_print_at_null, _("\
2728 Set printing of char arrays to stop at first null char."), _("\
2729 Show printing of char arrays to stop at first null char."), NULL,
2730                            NULL,
2731                            show_stop_print_at_null,
2732                            &setprintlist, &showprintlist);
2733
2734   add_setshow_uinteger_cmd ("repeats", no_class,
2735                             &user_print_options.repeat_count_threshold, _("\
2736 Set threshold for repeated print elements."), _("\
2737 Show threshold for repeated print elements."), _("\
2738 \"set print repeats 0\" causes all elements to be individually printed."),
2739                             NULL,
2740                             show_repeat_count_threshold,
2741                             &setprintlist, &showprintlist);
2742
2743   add_setshow_boolean_cmd ("pretty", class_support,
2744                            &user_print_options.prettyprint_structs, _("\
2745 Set prettyprinting of structures."), _("\
2746 Show prettyprinting of structures."), NULL,
2747                            NULL,
2748                            show_prettyprint_structs,
2749                            &setprintlist, &showprintlist);
2750
2751   add_setshow_boolean_cmd ("union", class_support,
2752                            &user_print_options.unionprint, _("\
2753 Set printing of unions interior to structures."), _("\
2754 Show printing of unions interior to structures."), NULL,
2755                            NULL,
2756                            show_unionprint,
2757                            &setprintlist, &showprintlist);
2758
2759   add_setshow_boolean_cmd ("array", class_support,
2760                            &user_print_options.prettyprint_arrays, _("\
2761 Set prettyprinting of arrays."), _("\
2762 Show prettyprinting of arrays."), NULL,
2763                            NULL,
2764                            show_prettyprint_arrays,
2765                            &setprintlist, &showprintlist);
2766
2767   add_setshow_boolean_cmd ("address", class_support,
2768                            &user_print_options.addressprint, _("\
2769 Set printing of addresses."), _("\
2770 Show printing of addresses."), NULL,
2771                            NULL,
2772                            show_addressprint,
2773                            &setprintlist, &showprintlist);
2774
2775   add_setshow_boolean_cmd ("symbol", class_support,
2776                            &user_print_options.symbol_print, _("\
2777 Set printing of symbol names when printing pointers."), _("\
2778 Show printing of symbol names when printing pointers."),
2779                            NULL, NULL,
2780                            show_symbol_print,
2781                            &setprintlist, &showprintlist);
2782
2783   add_setshow_zuinteger_cmd ("input-radix", class_support, &input_radix_1,
2784                              _("\
2785 Set default input radix for entering numbers."), _("\
2786 Show default input radix for entering numbers."), NULL,
2787                              set_input_radix,
2788                              show_input_radix,
2789                              &setlist, &showlist);
2790
2791   add_setshow_zuinteger_cmd ("output-radix", class_support, &output_radix_1,
2792                              _("\
2793 Set default output radix for printing of values."), _("\
2794 Show default output radix for printing of values."), NULL,
2795                              set_output_radix,
2796                              show_output_radix,
2797                              &setlist, &showlist);
2798
2799   /* The "set radix" and "show radix" commands are special in that
2800      they are like normal set and show commands but allow two normally
2801      independent variables to be either set or shown with a single
2802      command.  So the usual deprecated_add_set_cmd() and [deleted]
2803      add_show_from_set() commands aren't really appropriate.  */
2804   /* FIXME: i18n: With the new add_setshow_integer command, that is no
2805      longer true - show can display anything.  */
2806   add_cmd ("radix", class_support, set_radix, _("\
2807 Set default input and output number radices.\n\
2808 Use 'set input-radix' or 'set output-radix' to independently set each.\n\
2809 Without an argument, sets both radices back to the default value of 10."),
2810            &setlist);
2811   add_cmd ("radix", class_support, show_radix, _("\
2812 Show the default input and output number radices.\n\
2813 Use 'show input-radix' or 'show output-radix' to independently show each."),
2814            &showlist);
2815
2816   add_setshow_boolean_cmd ("array-indexes", class_support,
2817                            &user_print_options.print_array_indexes, _("\
2818 Set printing of array indexes."), _("\
2819 Show printing of array indexes"), NULL, NULL, show_print_array_indexes,
2820                            &setprintlist, &showprintlist);
2821 }