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