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