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