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