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