Remove parameter valaddr from la_val_print
[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       const gdb_byte *valaddr = value_contents_for_printing (val);
1102
1103       ret = apply_ext_lang_val_pretty_printer (type, valaddr, embedded_offset,
1104                                                address, stream, recurse,
1105                                                val, options, language);
1106       if (ret)
1107         return;
1108     }
1109
1110   /* Handle summary mode.  If the value is a scalar, print it;
1111      otherwise, print an ellipsis.  */
1112   if (options->summary && !val_print_scalar_type_p (type))
1113     {
1114       fprintf_filtered (stream, "...");
1115       return;
1116     }
1117
1118   TRY
1119     {
1120       language->la_val_print (type, embedded_offset, address,
1121                               stream, recurse, val,
1122                               &local_opts);
1123     }
1124   CATCH (except, RETURN_MASK_ERROR)
1125     {
1126       fprintf_filtered (stream, _("<error reading variable>"));
1127     }
1128   END_CATCH
1129 }
1130
1131 /* Check whether the value VAL is printable.  Return 1 if it is;
1132    return 0 and print an appropriate error message to STREAM according to
1133    OPTIONS if it is not.  */
1134
1135 static int
1136 value_check_printable (struct value *val, struct ui_file *stream,
1137                        const struct value_print_options *options)
1138 {
1139   if (val == 0)
1140     {
1141       fprintf_filtered (stream, _("<address of value unknown>"));
1142       return 0;
1143     }
1144
1145   if (value_entirely_optimized_out (val))
1146     {
1147       if (options->summary && !val_print_scalar_type_p (value_type (val)))
1148         fprintf_filtered (stream, "...");
1149       else
1150         val_print_optimized_out (val, stream);
1151       return 0;
1152     }
1153
1154   if (value_entirely_unavailable (val))
1155     {
1156       if (options->summary && !val_print_scalar_type_p (value_type (val)))
1157         fprintf_filtered (stream, "...");
1158       else
1159         val_print_unavailable (stream);
1160       return 0;
1161     }
1162
1163   if (TYPE_CODE (value_type (val)) == TYPE_CODE_INTERNAL_FUNCTION)
1164     {
1165       fprintf_filtered (stream, _("<internal function %s>"),
1166                         value_internal_function_name (val));
1167       return 0;
1168     }
1169
1170   if (type_not_associated (value_type (val)))
1171     {
1172       val_print_not_associated (stream);
1173       return 0;
1174     }
1175
1176   if (type_not_allocated (value_type (val)))
1177     {
1178       val_print_not_allocated (stream);
1179       return 0;
1180     }
1181
1182   return 1;
1183 }
1184
1185 /* Print using the given LANGUAGE the value VAL onto stream STREAM according
1186    to OPTIONS.
1187
1188    This is a preferable interface to val_print, above, because it uses
1189    GDB's value mechanism.  */
1190
1191 void
1192 common_val_print (struct value *val, struct ui_file *stream, int recurse,
1193                   const struct value_print_options *options,
1194                   const struct language_defn *language)
1195 {
1196   if (!value_check_printable (val, stream, options))
1197     return;
1198
1199   if (language->la_language == language_ada)
1200     /* The value might have a dynamic type, which would cause trouble
1201        below when trying to extract the value contents (since the value
1202        size is determined from the type size which is unknown).  So
1203        get a fixed representation of our value.  */
1204     val = ada_to_fixed_value (val);
1205
1206   val_print (value_type (val),
1207              value_embedded_offset (val), value_address (val),
1208              stream, recurse,
1209              val, options, language);
1210 }
1211
1212 /* Print on stream STREAM the value VAL according to OPTIONS.  The value
1213    is printed using the current_language syntax.  */
1214
1215 void
1216 value_print (struct value *val, struct ui_file *stream,
1217              const struct value_print_options *options)
1218 {
1219   if (!value_check_printable (val, stream, options))
1220     return;
1221
1222   if (!options->raw)
1223     {
1224       int r
1225         = apply_ext_lang_val_pretty_printer (value_type (val),
1226                                              value_contents_for_printing (val),
1227                                              value_embedded_offset (val),
1228                                              value_address (val),
1229                                              stream, 0,
1230                                              val, options, current_language);
1231
1232       if (r)
1233         return;
1234     }
1235
1236   LA_VALUE_PRINT (val, stream, options);
1237 }
1238
1239 /* Called by various <lang>_val_print routines to print
1240    TYPE_CODE_INT's.  TYPE is the type.  VALADDR is the address of the
1241    value.  STREAM is where to print the value.  */
1242
1243 void
1244 val_print_type_code_int (struct type *type, const gdb_byte *valaddr,
1245                          struct ui_file *stream)
1246 {
1247   enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
1248
1249   if (TYPE_LENGTH (type) > sizeof (LONGEST))
1250     {
1251       LONGEST val;
1252
1253       if (TYPE_UNSIGNED (type)
1254           && extract_long_unsigned_integer (valaddr, TYPE_LENGTH (type),
1255                                             byte_order, &val))
1256         {
1257           print_longest (stream, 'u', 0, val);
1258         }
1259       else
1260         {
1261           /* Signed, or we couldn't turn an unsigned value into a
1262              LONGEST.  For signed values, one could assume two's
1263              complement (a reasonable assumption, I think) and do
1264              better than this.  */
1265           print_hex_chars (stream, (unsigned char *) valaddr,
1266                            TYPE_LENGTH (type), byte_order);
1267         }
1268     }
1269   else
1270     {
1271       print_longest (stream, TYPE_UNSIGNED (type) ? 'u' : 'd', 0,
1272                      unpack_long (type, valaddr));
1273     }
1274 }
1275
1276 static void
1277 val_print_type_code_flags (struct type *type, const gdb_byte *valaddr,
1278                            struct ui_file *stream)
1279 {
1280   ULONGEST val = unpack_long (type, valaddr);
1281   int field, nfields = TYPE_NFIELDS (type);
1282   struct gdbarch *gdbarch = get_type_arch (type);
1283   struct type *bool_type = builtin_type (gdbarch)->builtin_bool;
1284
1285   fputs_filtered ("[", stream);
1286   for (field = 0; field < nfields; field++)
1287     {
1288       if (TYPE_FIELD_NAME (type, field)[0] != '\0')
1289         {
1290           struct type *field_type = TYPE_FIELD_TYPE (type, field);
1291
1292           if (field_type == bool_type
1293               /* We require boolean types here to be one bit wide.  This is a
1294                  problematic place to notify the user of an internal error
1295                  though.  Instead just fall through and print the field as an
1296                  int.  */
1297               && TYPE_FIELD_BITSIZE (type, field) == 1)
1298             {
1299               if (val & ((ULONGEST)1 << TYPE_FIELD_BITPOS (type, field)))
1300                 fprintf_filtered (stream, " %s",
1301                                   TYPE_FIELD_NAME (type, field));
1302             }
1303           else
1304             {
1305               unsigned field_len = TYPE_FIELD_BITSIZE (type, field);
1306               ULONGEST field_val
1307                 = val >> (TYPE_FIELD_BITPOS (type, field) - field_len + 1);
1308
1309               if (field_len < sizeof (ULONGEST) * TARGET_CHAR_BIT)
1310                 field_val &= ((ULONGEST) 1 << field_len) - 1;
1311               fprintf_filtered (stream, " %s=",
1312                                 TYPE_FIELD_NAME (type, field));
1313               if (TYPE_CODE (field_type) == TYPE_CODE_ENUM)
1314                 generic_val_print_enum_1 (field_type, field_val, stream);
1315               else
1316                 print_longest (stream, 'd', 0, field_val);
1317             }
1318         }
1319     }
1320   fputs_filtered (" ]", stream);
1321 }
1322
1323 /* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
1324    according to OPTIONS and SIZE on STREAM.  Format i is not supported
1325    at this level.
1326
1327    This is how the elements of an array or structure are printed
1328    with a format.  */
1329
1330 void
1331 val_print_scalar_formatted (struct type *type,
1332                             LONGEST embedded_offset,
1333                             struct value *val,
1334                             const struct value_print_options *options,
1335                             int size,
1336                             struct ui_file *stream)
1337 {
1338   struct gdbarch *arch = get_type_arch (type);
1339   int unit_size = gdbarch_addressable_memory_unit_size (arch);
1340
1341   gdb_assert (val != NULL);
1342
1343   /* If we get here with a string format, try again without it.  Go
1344      all the way back to the language printers, which may call us
1345      again.  */
1346   if (options->format == 's')
1347     {
1348       struct value_print_options opts = *options;
1349       opts.format = 0;
1350       opts.deref_ref = 0;
1351       val_print (type, embedded_offset, 0, stream, 0, val, &opts,
1352                  current_language);
1353       return;
1354     }
1355
1356   /* value_contents_for_printing fetches all VAL's contents.  They are
1357      needed to check whether VAL is optimized-out or unavailable
1358      below.  */
1359   const gdb_byte *valaddr = value_contents_for_printing (val);
1360
1361   /* A scalar object that does not have all bits available can't be
1362      printed, because all bits contribute to its representation.  */
1363   if (value_bits_any_optimized_out (val,
1364                                     TARGET_CHAR_BIT * embedded_offset,
1365                                     TARGET_CHAR_BIT * TYPE_LENGTH (type)))
1366     val_print_optimized_out (val, stream);
1367   else if (!value_bytes_available (val, embedded_offset, TYPE_LENGTH (type)))
1368     val_print_unavailable (stream);
1369   else
1370     print_scalar_formatted (valaddr + embedded_offset * unit_size, type,
1371                             options, size, stream);
1372 }
1373
1374 /* Print a number according to FORMAT which is one of d,u,x,o,b,h,w,g.
1375    The raison d'etre of this function is to consolidate printing of 
1376    LONG_LONG's into this one function.  The format chars b,h,w,g are 
1377    from print_scalar_formatted().  Numbers are printed using C
1378    format.
1379
1380    USE_C_FORMAT means to use C format in all cases.  Without it, 
1381    'o' and 'x' format do not include the standard C radix prefix
1382    (leading 0 or 0x). 
1383    
1384    Hilfinger/2004-09-09: USE_C_FORMAT was originally called USE_LOCAL
1385    and was intended to request formating according to the current
1386    language and would be used for most integers that GDB prints.  The
1387    exceptional cases were things like protocols where the format of
1388    the integer is a protocol thing, not a user-visible thing).  The
1389    parameter remains to preserve the information of what things might
1390    be printed with language-specific format, should we ever resurrect
1391    that capability.  */
1392
1393 void
1394 print_longest (struct ui_file *stream, int format, int use_c_format,
1395                LONGEST val_long)
1396 {
1397   const char *val;
1398
1399   switch (format)
1400     {
1401     case 'd':
1402       val = int_string (val_long, 10, 1, 0, 1); break;
1403     case 'u':
1404       val = int_string (val_long, 10, 0, 0, 1); break;
1405     case 'x':
1406       val = int_string (val_long, 16, 0, 0, use_c_format); break;
1407     case 'b':
1408       val = int_string (val_long, 16, 0, 2, 1); break;
1409     case 'h':
1410       val = int_string (val_long, 16, 0, 4, 1); break;
1411     case 'w':
1412       val = int_string (val_long, 16, 0, 8, 1); break;
1413     case 'g':
1414       val = int_string (val_long, 16, 0, 16, 1); break;
1415       break;
1416     case 'o':
1417       val = int_string (val_long, 8, 0, 0, use_c_format); break;
1418     default:
1419       internal_error (__FILE__, __LINE__,
1420                       _("failed internal consistency check"));
1421     } 
1422   fputs_filtered (val, stream);
1423 }
1424
1425 /* This used to be a macro, but I don't think it is called often enough
1426    to merit such treatment.  */
1427 /* Convert a LONGEST to an int.  This is used in contexts (e.g. number of
1428    arguments to a function, number in a value history, register number, etc.)
1429    where the value must not be larger than can fit in an int.  */
1430
1431 int
1432 longest_to_int (LONGEST arg)
1433 {
1434   /* Let the compiler do the work.  */
1435   int rtnval = (int) arg;
1436
1437   /* Check for overflows or underflows.  */
1438   if (sizeof (LONGEST) > sizeof (int))
1439     {
1440       if (rtnval != arg)
1441         {
1442           error (_("Value out of range."));
1443         }
1444     }
1445   return (rtnval);
1446 }
1447
1448 /* Print a floating point value of type TYPE (not always a
1449    TYPE_CODE_FLT), pointed to in GDB by VALADDR, on STREAM.  */
1450
1451 void
1452 print_floating (const gdb_byte *valaddr, struct type *type,
1453                 struct ui_file *stream)
1454 {
1455   DOUBLEST doub;
1456   int inv;
1457   const struct floatformat *fmt = NULL;
1458   unsigned len = TYPE_LENGTH (type);
1459   enum float_kind kind;
1460
1461   /* If it is a floating-point, check for obvious problems.  */
1462   if (TYPE_CODE (type) == TYPE_CODE_FLT)
1463     fmt = floatformat_from_type (type);
1464   if (fmt != NULL)
1465     {
1466       kind = floatformat_classify (fmt, valaddr);
1467       if (kind == float_nan)
1468         {
1469           if (floatformat_is_negative (fmt, valaddr))
1470             fprintf_filtered (stream, "-");
1471           fprintf_filtered (stream, "nan(");
1472           fputs_filtered ("0x", stream);
1473           fputs_filtered (floatformat_mantissa (fmt, valaddr), stream);
1474           fprintf_filtered (stream, ")");
1475           return;
1476         }
1477       else if (kind == float_infinite)
1478         {
1479           if (floatformat_is_negative (fmt, valaddr))
1480             fputs_filtered ("-", stream);
1481           fputs_filtered ("inf", stream);
1482           return;
1483         }
1484     }
1485
1486   /* NOTE: cagney/2002-01-15: The TYPE passed into print_floating()
1487      isn't necessarily a TYPE_CODE_FLT.  Consequently, unpack_double
1488      needs to be used as that takes care of any necessary type
1489      conversions.  Such conversions are of course direct to DOUBLEST
1490      and disregard any possible target floating point limitations.
1491      For instance, a u64 would be converted and displayed exactly on a
1492      host with 80 bit DOUBLEST but with loss of information on a host
1493      with 64 bit DOUBLEST.  */
1494
1495   doub = unpack_double (type, valaddr, &inv);
1496   if (inv)
1497     {
1498       fprintf_filtered (stream, "<invalid float value>");
1499       return;
1500     }
1501
1502   /* FIXME: kettenis/2001-01-20: The following code makes too much
1503      assumptions about the host and target floating point format.  */
1504
1505   /* NOTE: cagney/2002-02-03: Since the TYPE of what was passed in may
1506      not necessarily be a TYPE_CODE_FLT, the below ignores that and
1507      instead uses the type's length to determine the precision of the
1508      floating-point value being printed.  */
1509
1510   if (len < sizeof (double))
1511       fprintf_filtered (stream, "%.9g", (double) doub);
1512   else if (len == sizeof (double))
1513       fprintf_filtered (stream, "%.17g", (double) doub);
1514   else
1515 #ifdef PRINTF_HAS_LONG_DOUBLE
1516     fprintf_filtered (stream, "%.35Lg", doub);
1517 #else
1518     /* This at least wins with values that are representable as
1519        doubles.  */
1520     fprintf_filtered (stream, "%.17g", (double) doub);
1521 #endif
1522 }
1523
1524 void
1525 print_decimal_floating (const gdb_byte *valaddr, struct type *type,
1526                         struct ui_file *stream)
1527 {
1528   enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
1529   char decstr[MAX_DECIMAL_STRING];
1530   unsigned len = TYPE_LENGTH (type);
1531
1532   decimal_to_string (valaddr, len, byte_order, decstr);
1533   fputs_filtered (decstr, stream);
1534   return;
1535 }
1536
1537 void
1538 print_binary_chars (struct ui_file *stream, const gdb_byte *valaddr,
1539                     unsigned len, enum bfd_endian byte_order)
1540 {
1541
1542 #define BITS_IN_BYTES 8
1543
1544   const gdb_byte *p;
1545   unsigned int i;
1546   int b;
1547
1548   /* Declared "int" so it will be signed.
1549      This ensures that right shift will shift in zeros.  */
1550
1551   const int mask = 0x080;
1552
1553   /* FIXME: We should be not printing leading zeroes in most cases.  */
1554
1555   if (byte_order == BFD_ENDIAN_BIG)
1556     {
1557       for (p = valaddr;
1558            p < valaddr + len;
1559            p++)
1560         {
1561           /* Every byte has 8 binary characters; peel off
1562              and print from the MSB end.  */
1563
1564           for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
1565             {
1566               if (*p & (mask >> i))
1567                 b = 1;
1568               else
1569                 b = 0;
1570
1571               fprintf_filtered (stream, "%1d", b);
1572             }
1573         }
1574     }
1575   else
1576     {
1577       for (p = valaddr + len - 1;
1578            p >= valaddr;
1579            p--)
1580         {
1581           for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
1582             {
1583               if (*p & (mask >> i))
1584                 b = 1;
1585               else
1586                 b = 0;
1587
1588               fprintf_filtered (stream, "%1d", b);
1589             }
1590         }
1591     }
1592 }
1593
1594 /* VALADDR points to an integer of LEN bytes.
1595    Print it in octal on stream or format it in buf.  */
1596
1597 void
1598 print_octal_chars (struct ui_file *stream, const gdb_byte *valaddr,
1599                    unsigned len, enum bfd_endian byte_order)
1600 {
1601   const gdb_byte *p;
1602   unsigned char octa1, octa2, octa3, carry;
1603   int cycle;
1604
1605   /* FIXME: We should be not printing leading zeroes in most cases.  */
1606
1607
1608   /* Octal is 3 bits, which doesn't fit.  Yuk.  So we have to track
1609    * the extra bits, which cycle every three bytes:
1610    *
1611    * Byte side:       0            1             2          3
1612    *                         |             |            |            |
1613    * bit number   123 456 78 | 9 012 345 6 | 78 901 234 | 567 890 12 |
1614    *
1615    * Octal side:   0   1   carry  3   4  carry ...
1616    *
1617    * Cycle number:    0             1            2
1618    *
1619    * But of course we are printing from the high side, so we have to
1620    * figure out where in the cycle we are so that we end up with no
1621    * left over bits at the end.
1622    */
1623 #define BITS_IN_OCTAL 3
1624 #define HIGH_ZERO     0340
1625 #define LOW_ZERO      0016
1626 #define CARRY_ZERO    0003
1627 #define HIGH_ONE      0200
1628 #define MID_ONE       0160
1629 #define LOW_ONE       0016
1630 #define CARRY_ONE     0001
1631 #define HIGH_TWO      0300
1632 #define MID_TWO       0070
1633 #define LOW_TWO       0007
1634
1635   /* For 32 we start in cycle 2, with two bits and one bit carry;
1636      for 64 in cycle in cycle 1, with one bit and a two bit carry.  */
1637
1638   cycle = (len * BITS_IN_BYTES) % BITS_IN_OCTAL;
1639   carry = 0;
1640
1641   fputs_filtered ("0", stream);
1642   if (byte_order == BFD_ENDIAN_BIG)
1643     {
1644       for (p = valaddr;
1645            p < valaddr + len;
1646            p++)
1647         {
1648           switch (cycle)
1649             {
1650             case 0:
1651               /* No carry in, carry out two bits.  */
1652
1653               octa1 = (HIGH_ZERO & *p) >> 5;
1654               octa2 = (LOW_ZERO & *p) >> 2;
1655               carry = (CARRY_ZERO & *p);
1656               fprintf_filtered (stream, "%o", octa1);
1657               fprintf_filtered (stream, "%o", octa2);
1658               break;
1659
1660             case 1:
1661               /* Carry in two bits, carry out one bit.  */
1662
1663               octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
1664               octa2 = (MID_ONE & *p) >> 4;
1665               octa3 = (LOW_ONE & *p) >> 1;
1666               carry = (CARRY_ONE & *p);
1667               fprintf_filtered (stream, "%o", octa1);
1668               fprintf_filtered (stream, "%o", octa2);
1669               fprintf_filtered (stream, "%o", octa3);
1670               break;
1671
1672             case 2:
1673               /* Carry in one bit, no carry out.  */
1674
1675               octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
1676               octa2 = (MID_TWO & *p) >> 3;
1677               octa3 = (LOW_TWO & *p);
1678               carry = 0;
1679               fprintf_filtered (stream, "%o", octa1);
1680               fprintf_filtered (stream, "%o", octa2);
1681               fprintf_filtered (stream, "%o", octa3);
1682               break;
1683
1684             default:
1685               error (_("Internal error in octal conversion;"));
1686             }
1687
1688           cycle++;
1689           cycle = cycle % BITS_IN_OCTAL;
1690         }
1691     }
1692   else
1693     {
1694       for (p = valaddr + len - 1;
1695            p >= valaddr;
1696            p--)
1697         {
1698           switch (cycle)
1699             {
1700             case 0:
1701               /* Carry out, no carry in */
1702
1703               octa1 = (HIGH_ZERO & *p) >> 5;
1704               octa2 = (LOW_ZERO & *p) >> 2;
1705               carry = (CARRY_ZERO & *p);
1706               fprintf_filtered (stream, "%o", octa1);
1707               fprintf_filtered (stream, "%o", octa2);
1708               break;
1709
1710             case 1:
1711               /* Carry in, carry out */
1712
1713               octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
1714               octa2 = (MID_ONE & *p) >> 4;
1715               octa3 = (LOW_ONE & *p) >> 1;
1716               carry = (CARRY_ONE & *p);
1717               fprintf_filtered (stream, "%o", octa1);
1718               fprintf_filtered (stream, "%o", octa2);
1719               fprintf_filtered (stream, "%o", octa3);
1720               break;
1721
1722             case 2:
1723               /* Carry in, no carry out */
1724
1725               octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
1726               octa2 = (MID_TWO & *p) >> 3;
1727               octa3 = (LOW_TWO & *p);
1728               carry = 0;
1729               fprintf_filtered (stream, "%o", octa1);
1730               fprintf_filtered (stream, "%o", octa2);
1731               fprintf_filtered (stream, "%o", octa3);
1732               break;
1733
1734             default:
1735               error (_("Internal error in octal conversion;"));
1736             }
1737
1738           cycle++;
1739           cycle = cycle % BITS_IN_OCTAL;
1740         }
1741     }
1742
1743 }
1744
1745 /* VALADDR points to an integer of LEN bytes.
1746    Print it in decimal on stream or format it in buf.  */
1747
1748 void
1749 print_decimal_chars (struct ui_file *stream, const gdb_byte *valaddr,
1750                      unsigned len, enum bfd_endian byte_order)
1751 {
1752 #define TEN             10
1753 #define CARRY_OUT(  x ) ((x) / TEN)     /* extend char to int */
1754 #define CARRY_LEFT( x ) ((x) % TEN)
1755 #define SHIFT( x )      ((x) << 4)
1756 #define LOW_NIBBLE(  x ) ( (x) & 0x00F)
1757 #define HIGH_NIBBLE( x ) (((x) & 0x0F0) >> 4)
1758
1759   const gdb_byte *p;
1760   unsigned char *digits;
1761   int carry;
1762   int decimal_len;
1763   int i, j, decimal_digits;
1764   int dummy;
1765   int flip;
1766
1767   /* Base-ten number is less than twice as many digits
1768      as the base 16 number, which is 2 digits per byte.  */
1769
1770   decimal_len = len * 2 * 2;
1771   digits = (unsigned char *) xmalloc (decimal_len);
1772
1773   for (i = 0; i < decimal_len; i++)
1774     {
1775       digits[i] = 0;
1776     }
1777
1778   /* Ok, we have an unknown number of bytes of data to be printed in
1779    * decimal.
1780    *
1781    * Given a hex number (in nibbles) as XYZ, we start by taking X and
1782    * decemalizing it as "x1 x2" in two decimal nibbles.  Then we multiply
1783    * the nibbles by 16, add Y and re-decimalize.  Repeat with Z.
1784    *
1785    * The trick is that "digits" holds a base-10 number, but sometimes
1786    * the individual digits are > 10.
1787    *
1788    * Outer loop is per nibble (hex digit) of input, from MSD end to
1789    * LSD end.
1790    */
1791   decimal_digits = 0;           /* Number of decimal digits so far */
1792   p = (byte_order == BFD_ENDIAN_BIG) ? valaddr : valaddr + len - 1;
1793   flip = 0;
1794   while ((byte_order == BFD_ENDIAN_BIG) ? (p < valaddr + len) : (p >= valaddr))
1795     {
1796       /*
1797        * Multiply current base-ten number by 16 in place.
1798        * Each digit was between 0 and 9, now is between
1799        * 0 and 144.
1800        */
1801       for (j = 0; j < decimal_digits; j++)
1802         {
1803           digits[j] = SHIFT (digits[j]);
1804         }
1805
1806       /* Take the next nibble off the input and add it to what
1807        * we've got in the LSB position.  Bottom 'digit' is now
1808        * between 0 and 159.
1809        *
1810        * "flip" is used to run this loop twice for each byte.
1811        */
1812       if (flip == 0)
1813         {
1814           /* Take top nibble.  */
1815
1816           digits[0] += HIGH_NIBBLE (*p);
1817           flip = 1;
1818         }
1819       else
1820         {
1821           /* Take low nibble and bump our pointer "p".  */
1822
1823           digits[0] += LOW_NIBBLE (*p);
1824           if (byte_order == BFD_ENDIAN_BIG)
1825             p++;
1826           else
1827             p--;
1828           flip = 0;
1829         }
1830
1831       /* Re-decimalize.  We have to do this often enough
1832        * that we don't overflow, but once per nibble is
1833        * overkill.  Easier this way, though.  Note that the
1834        * carry is often larger than 10 (e.g. max initial
1835        * carry out of lowest nibble is 15, could bubble all
1836        * the way up greater than 10).  So we have to do
1837        * the carrying beyond the last current digit.
1838        */
1839       carry = 0;
1840       for (j = 0; j < decimal_len - 1; j++)
1841         {
1842           digits[j] += carry;
1843
1844           /* "/" won't handle an unsigned char with
1845            * a value that if signed would be negative.
1846            * So extend to longword int via "dummy".
1847            */
1848           dummy = digits[j];
1849           carry = CARRY_OUT (dummy);
1850           digits[j] = CARRY_LEFT (dummy);
1851
1852           if (j >= decimal_digits && carry == 0)
1853             {
1854               /*
1855                * All higher digits are 0 and we
1856                * no longer have a carry.
1857                *
1858                * Note: "j" is 0-based, "decimal_digits" is
1859                *       1-based.
1860                */
1861               decimal_digits = j + 1;
1862               break;
1863             }
1864         }
1865     }
1866
1867   /* Ok, now "digits" is the decimal representation, with
1868      the "decimal_digits" actual digits.  Print!  */
1869
1870   for (i = decimal_digits - 1; i >= 0; i--)
1871     {
1872       fprintf_filtered (stream, "%1d", digits[i]);
1873     }
1874   xfree (digits);
1875 }
1876
1877 /* VALADDR points to an integer of LEN bytes.  Print it in hex on stream.  */
1878
1879 void
1880 print_hex_chars (struct ui_file *stream, const gdb_byte *valaddr,
1881                  unsigned len, enum bfd_endian byte_order)
1882 {
1883   const gdb_byte *p;
1884
1885   /* FIXME: We should be not printing leading zeroes in most cases.  */
1886
1887   fputs_filtered ("0x", stream);
1888   if (byte_order == BFD_ENDIAN_BIG)
1889     {
1890       for (p = valaddr;
1891            p < valaddr + len;
1892            p++)
1893         {
1894           fprintf_filtered (stream, "%02x", *p);
1895         }
1896     }
1897   else
1898     {
1899       for (p = valaddr + len - 1;
1900            p >= valaddr;
1901            p--)
1902         {
1903           fprintf_filtered (stream, "%02x", *p);
1904         }
1905     }
1906 }
1907
1908 /* VALADDR points to a char integer of LEN bytes.
1909    Print it out in appropriate language form on stream.
1910    Omit any leading zero chars.  */
1911
1912 void
1913 print_char_chars (struct ui_file *stream, struct type *type,
1914                   const gdb_byte *valaddr,
1915                   unsigned len, enum bfd_endian byte_order)
1916 {
1917   const gdb_byte *p;
1918
1919   if (byte_order == BFD_ENDIAN_BIG)
1920     {
1921       p = valaddr;
1922       while (p < valaddr + len - 1 && *p == 0)
1923         ++p;
1924
1925       while (p < valaddr + len)
1926         {
1927           LA_EMIT_CHAR (*p, type, stream, '\'');
1928           ++p;
1929         }
1930     }
1931   else
1932     {
1933       p = valaddr + len - 1;
1934       while (p > valaddr && *p == 0)
1935         --p;
1936
1937       while (p >= valaddr)
1938         {
1939           LA_EMIT_CHAR (*p, type, stream, '\'');
1940           --p;
1941         }
1942     }
1943 }
1944
1945 /* Print function pointer with inferior address ADDRESS onto stdio
1946    stream STREAM.  */
1947
1948 void
1949 print_function_pointer_address (const struct value_print_options *options,
1950                                 struct gdbarch *gdbarch,
1951                                 CORE_ADDR address,
1952                                 struct ui_file *stream)
1953 {
1954   CORE_ADDR func_addr
1955     = gdbarch_convert_from_func_ptr_addr (gdbarch, address,
1956                                           &current_target);
1957
1958   /* If the function pointer is represented by a description, print
1959      the address of the description.  */
1960   if (options->addressprint && func_addr != address)
1961     {
1962       fputs_filtered ("@", stream);
1963       fputs_filtered (paddress (gdbarch, address), stream);
1964       fputs_filtered (": ", stream);
1965     }
1966   print_address_demangle (options, gdbarch, func_addr, stream, demangle);
1967 }
1968
1969
1970 /* Print on STREAM using the given OPTIONS the index for the element
1971    at INDEX of an array whose index type is INDEX_TYPE.  */
1972     
1973 void  
1974 maybe_print_array_index (struct type *index_type, LONGEST index,
1975                          struct ui_file *stream,
1976                          const struct value_print_options *options)
1977 {
1978   struct value *index_value;
1979
1980   if (!options->print_array_indexes)
1981     return; 
1982     
1983   index_value = value_from_longest (index_type, index);
1984
1985   LA_PRINT_ARRAY_INDEX (index_value, stream, options);
1986 }
1987
1988 /*  Called by various <lang>_val_print routines to print elements of an
1989    array in the form "<elem1>, <elem2>, <elem3>, ...".
1990
1991    (FIXME?)  Assumes array element separator is a comma, which is correct
1992    for all languages currently handled.
1993    (FIXME?)  Some languages have a notation for repeated array elements,
1994    perhaps we should try to use that notation when appropriate.  */
1995
1996 void
1997 val_print_array_elements (struct type *type,
1998                           LONGEST embedded_offset,
1999                           CORE_ADDR address, struct ui_file *stream,
2000                           int recurse,
2001                           struct value *val,
2002                           const struct value_print_options *options,
2003                           unsigned int i)
2004 {
2005   unsigned int things_printed = 0;
2006   unsigned len;
2007   struct type *elttype, *index_type, *base_index_type;
2008   unsigned eltlen;
2009   /* Position of the array element we are examining to see
2010      whether it is repeated.  */
2011   unsigned int rep1;
2012   /* Number of repetitions we have detected so far.  */
2013   unsigned int reps;
2014   LONGEST low_bound, high_bound;
2015   LONGEST low_pos, high_pos;
2016
2017   elttype = TYPE_TARGET_TYPE (type);
2018   eltlen = type_length_units (check_typedef (elttype));
2019   index_type = TYPE_INDEX_TYPE (type);
2020
2021   if (get_array_bounds (type, &low_bound, &high_bound))
2022     {
2023       if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
2024         base_index_type = TYPE_TARGET_TYPE (index_type);
2025       else
2026         base_index_type = index_type;
2027
2028       /* Non-contiguous enumerations types can by used as index types
2029          in some languages (e.g. Ada).  In this case, the array length
2030          shall be computed from the positions of the first and last
2031          literal in the enumeration type, and not from the values
2032          of these literals.  */
2033       if (!discrete_position (base_index_type, low_bound, &low_pos)
2034           || !discrete_position (base_index_type, high_bound, &high_pos))
2035         {
2036           warning (_("unable to get positions in array, use bounds instead"));
2037           low_pos = low_bound;
2038           high_pos = high_bound;
2039         }
2040
2041       /* The array length should normally be HIGH_POS - LOW_POS + 1.
2042          But we have to be a little extra careful, because some languages
2043          such as Ada allow LOW_POS to be greater than HIGH_POS for
2044          empty arrays.  In that situation, the array length is just zero,
2045          not negative!  */
2046       if (low_pos > high_pos)
2047         len = 0;
2048       else
2049         len = high_pos - low_pos + 1;
2050     }
2051   else
2052     {
2053       warning (_("unable to get bounds of array, assuming null array"));
2054       low_bound = 0;
2055       len = 0;
2056     }
2057
2058   annotate_array_section_begin (i, elttype);
2059
2060   for (; i < len && things_printed < options->print_max; i++)
2061     {
2062       if (i != 0)
2063         {
2064           if (options->prettyformat_arrays)
2065             {
2066               fprintf_filtered (stream, ",\n");
2067               print_spaces_filtered (2 + 2 * recurse, stream);
2068             }
2069           else
2070             {
2071               fprintf_filtered (stream, ", ");
2072             }
2073         }
2074       wrap_here (n_spaces (2 + 2 * recurse));
2075       maybe_print_array_index (index_type, i + low_bound,
2076                                stream, options);
2077
2078       rep1 = i + 1;
2079       reps = 1;
2080       /* Only check for reps if repeat_count_threshold is not set to
2081          UINT_MAX (unlimited).  */
2082       if (options->repeat_count_threshold < UINT_MAX)
2083         {
2084           while (rep1 < len
2085                  && value_contents_eq (val,
2086                                        embedded_offset + i * eltlen,
2087                                        val,
2088                                        (embedded_offset
2089                                         + rep1 * eltlen),
2090                                        eltlen))
2091             {
2092               ++reps;
2093               ++rep1;
2094             }
2095         }
2096
2097       if (reps > options->repeat_count_threshold)
2098         {
2099           val_print (elttype, embedded_offset + i * eltlen,
2100                      address, stream, recurse + 1, val, options,
2101                      current_language);
2102           annotate_elt_rep (reps);
2103           fprintf_filtered (stream, " <repeats %u times>", reps);
2104           annotate_elt_rep_end ();
2105
2106           i = rep1 - 1;
2107           things_printed += options->repeat_count_threshold;
2108         }
2109       else
2110         {
2111           val_print (elttype, embedded_offset + i * eltlen,
2112                      address,
2113                      stream, recurse + 1, val, options, current_language);
2114           annotate_elt ();
2115           things_printed++;
2116         }
2117     }
2118   annotate_array_section_end ();
2119   if (i < len)
2120     {
2121       fprintf_filtered (stream, "...");
2122     }
2123 }
2124
2125 /* Read LEN bytes of target memory at address MEMADDR, placing the
2126    results in GDB's memory at MYADDR.  Returns a count of the bytes
2127    actually read, and optionally a target_xfer_status value in the
2128    location pointed to by ERRPTR if ERRPTR is non-null.  */
2129
2130 /* FIXME: cagney/1999-10-14: Only used by val_print_string.  Can this
2131    function be eliminated.  */
2132
2133 static int
2134 partial_memory_read (CORE_ADDR memaddr, gdb_byte *myaddr,
2135                      int len, int *errptr)
2136 {
2137   int nread;                    /* Number of bytes actually read.  */
2138   int errcode;                  /* Error from last read.  */
2139
2140   /* First try a complete read.  */
2141   errcode = target_read_memory (memaddr, myaddr, len);
2142   if (errcode == 0)
2143     {
2144       /* Got it all.  */
2145       nread = len;
2146     }
2147   else
2148     {
2149       /* Loop, reading one byte at a time until we get as much as we can.  */
2150       for (errcode = 0, nread = 0; len > 0 && errcode == 0; nread++, len--)
2151         {
2152           errcode = target_read_memory (memaddr++, myaddr++, 1);
2153         }
2154       /* If an error, the last read was unsuccessful, so adjust count.  */
2155       if (errcode != 0)
2156         {
2157           nread--;
2158         }
2159     }
2160   if (errptr != NULL)
2161     {
2162       *errptr = errcode;
2163     }
2164   return (nread);
2165 }
2166
2167 /* Read a string from the inferior, at ADDR, with LEN characters of WIDTH bytes
2168    each.  Fetch at most FETCHLIMIT characters.  BUFFER will be set to a newly
2169    allocated buffer containing the string, which the caller is responsible to
2170    free, and BYTES_READ will be set to the number of bytes read.  Returns 0 on
2171    success, or a target_xfer_status on failure.
2172
2173    If LEN > 0, reads the lesser of LEN or FETCHLIMIT characters
2174    (including eventual NULs in the middle or end of the string).
2175
2176    If LEN is -1, stops at the first null character (not necessarily
2177    the first null byte) up to a maximum of FETCHLIMIT characters.  Set
2178    FETCHLIMIT to UINT_MAX to read as many characters as possible from
2179    the string.
2180
2181    Unless an exception is thrown, BUFFER will always be allocated, even on
2182    failure.  In this case, some characters might have been read before the
2183    failure happened.  Check BYTES_READ to recognize this situation.
2184
2185    Note: There was a FIXME asking to make this code use target_read_string,
2186    but this function is more general (can read past null characters, up to
2187    given LEN).  Besides, it is used much more often than target_read_string
2188    so it is more tested.  Perhaps callers of target_read_string should use
2189    this function instead?  */
2190
2191 int
2192 read_string (CORE_ADDR addr, int len, int width, unsigned int fetchlimit,
2193              enum bfd_endian byte_order, gdb_byte **buffer, int *bytes_read)
2194 {
2195   int errcode;                  /* Errno returned from bad reads.  */
2196   unsigned int nfetch;          /* Chars to fetch / chars fetched.  */
2197   gdb_byte *bufptr;             /* Pointer to next available byte in
2198                                    buffer.  */
2199   struct cleanup *old_chain = NULL;     /* Top of the old cleanup chain.  */
2200
2201   /* Loop until we either have all the characters, or we encounter
2202      some error, such as bumping into the end of the address space.  */
2203
2204   *buffer = NULL;
2205
2206   old_chain = make_cleanup (free_current_contents, buffer);
2207
2208   if (len > 0)
2209     {
2210       /* We want fetchlimit chars, so we might as well read them all in
2211          one operation.  */
2212       unsigned int fetchlen = std::min ((unsigned) len, fetchlimit);
2213
2214       *buffer = (gdb_byte *) xmalloc (fetchlen * width);
2215       bufptr = *buffer;
2216
2217       nfetch = partial_memory_read (addr, bufptr, fetchlen * width, &errcode)
2218         / width;
2219       addr += nfetch * width;
2220       bufptr += nfetch * width;
2221     }
2222   else if (len == -1)
2223     {
2224       unsigned long bufsize = 0;
2225       unsigned int chunksize;   /* Size of each fetch, in chars.  */
2226       int found_nul;            /* Non-zero if we found the nul char.  */
2227       gdb_byte *limit;          /* First location past end of fetch buffer.  */
2228
2229       found_nul = 0;
2230       /* We are looking for a NUL terminator to end the fetching, so we
2231          might as well read in blocks that are large enough to be efficient,
2232          but not so large as to be slow if fetchlimit happens to be large.
2233          So we choose the minimum of 8 and fetchlimit.  We used to use 200
2234          instead of 8 but 200 is way too big for remote debugging over a
2235           serial line.  */
2236       chunksize = std::min (8u, fetchlimit);
2237
2238       do
2239         {
2240           QUIT;
2241           nfetch = std::min ((unsigned long) chunksize, fetchlimit - bufsize);
2242
2243           if (*buffer == NULL)
2244             *buffer = (gdb_byte *) xmalloc (nfetch * width);
2245           else
2246             *buffer = (gdb_byte *) xrealloc (*buffer,
2247                                              (nfetch + bufsize) * width);
2248
2249           bufptr = *buffer + bufsize * width;
2250           bufsize += nfetch;
2251
2252           /* Read as much as we can.  */
2253           nfetch = partial_memory_read (addr, bufptr, nfetch * width, &errcode)
2254                     / width;
2255
2256           /* Scan this chunk for the null character that terminates the string
2257              to print.  If found, we don't need to fetch any more.  Note
2258              that bufptr is explicitly left pointing at the next character
2259              after the null character, or at the next character after the end
2260              of the buffer.  */
2261
2262           limit = bufptr + nfetch * width;
2263           while (bufptr < limit)
2264             {
2265               unsigned long c;
2266
2267               c = extract_unsigned_integer (bufptr, width, byte_order);
2268               addr += width;
2269               bufptr += width;
2270               if (c == 0)
2271                 {
2272                   /* We don't care about any error which happened after
2273                      the NUL terminator.  */
2274                   errcode = 0;
2275                   found_nul = 1;
2276                   break;
2277                 }
2278             }
2279         }
2280       while (errcode == 0       /* no error */
2281              && bufptr - *buffer < fetchlimit * width   /* no overrun */
2282              && !found_nul);    /* haven't found NUL yet */
2283     }
2284   else
2285     {                           /* Length of string is really 0!  */
2286       /* We always allocate *buffer.  */
2287       *buffer = bufptr = (gdb_byte *) xmalloc (1);
2288       errcode = 0;
2289     }
2290
2291   /* bufptr and addr now point immediately beyond the last byte which we
2292      consider part of the string (including a '\0' which ends the string).  */
2293   *bytes_read = bufptr - *buffer;
2294
2295   QUIT;
2296
2297   discard_cleanups (old_chain);
2298
2299   return errcode;
2300 }
2301
2302 /* Return true if print_wchar can display W without resorting to a
2303    numeric escape, false otherwise.  */
2304
2305 static int
2306 wchar_printable (gdb_wchar_t w)
2307 {
2308   return (gdb_iswprint (w)
2309           || w == LCST ('\a') || w == LCST ('\b')
2310           || w == LCST ('\f') || w == LCST ('\n')
2311           || w == LCST ('\r') || w == LCST ('\t')
2312           || w == LCST ('\v'));
2313 }
2314
2315 /* A helper function that converts the contents of STRING to wide
2316    characters and then appends them to OUTPUT.  */
2317
2318 static void
2319 append_string_as_wide (const char *string,
2320                        struct obstack *output)
2321 {
2322   for (; *string; ++string)
2323     {
2324       gdb_wchar_t w = gdb_btowc (*string);
2325       obstack_grow (output, &w, sizeof (gdb_wchar_t));
2326     }
2327 }
2328
2329 /* Print a wide character W to OUTPUT.  ORIG is a pointer to the
2330    original (target) bytes representing the character, ORIG_LEN is the
2331    number of valid bytes.  WIDTH is the number of bytes in a base
2332    characters of the type.  OUTPUT is an obstack to which wide
2333    characters are emitted.  QUOTER is a (narrow) character indicating
2334    the style of quotes surrounding the character to be printed.
2335    NEED_ESCAPE is an in/out flag which is used to track numeric
2336    escapes across calls.  */
2337
2338 static void
2339 print_wchar (gdb_wint_t w, const gdb_byte *orig,
2340              int orig_len, int width,
2341              enum bfd_endian byte_order,
2342              struct obstack *output,
2343              int quoter, int *need_escapep)
2344 {
2345   int need_escape = *need_escapep;
2346
2347   *need_escapep = 0;
2348
2349   /* iswprint implementation on Windows returns 1 for tab character.
2350      In order to avoid different printout on this host, we explicitly
2351      use wchar_printable function.  */
2352   switch (w)
2353     {
2354       case LCST ('\a'):
2355         obstack_grow_wstr (output, LCST ("\\a"));
2356         break;
2357       case LCST ('\b'):
2358         obstack_grow_wstr (output, LCST ("\\b"));
2359         break;
2360       case LCST ('\f'):
2361         obstack_grow_wstr (output, LCST ("\\f"));
2362         break;
2363       case LCST ('\n'):
2364         obstack_grow_wstr (output, LCST ("\\n"));
2365         break;
2366       case LCST ('\r'):
2367         obstack_grow_wstr (output, LCST ("\\r"));
2368         break;
2369       case LCST ('\t'):
2370         obstack_grow_wstr (output, LCST ("\\t"));
2371         break;
2372       case LCST ('\v'):
2373         obstack_grow_wstr (output, LCST ("\\v"));
2374         break;
2375       default:
2376         {
2377           if (wchar_printable (w) && (!need_escape || (!gdb_iswdigit (w)
2378                                                        && w != LCST ('8')
2379                                                        && w != LCST ('9'))))
2380             {
2381               gdb_wchar_t wchar = w;
2382
2383               if (w == gdb_btowc (quoter) || w == LCST ('\\'))
2384                 obstack_grow_wstr (output, LCST ("\\"));
2385               obstack_grow (output, &wchar, sizeof (gdb_wchar_t));
2386             }
2387           else
2388             {
2389               int i;
2390
2391               for (i = 0; i + width <= orig_len; i += width)
2392                 {
2393                   char octal[30];
2394                   ULONGEST value;
2395
2396                   value = extract_unsigned_integer (&orig[i], width,
2397                                                   byte_order);
2398                   /* If the value fits in 3 octal digits, print it that
2399                      way.  Otherwise, print it as a hex escape.  */
2400                   if (value <= 0777)
2401                     xsnprintf (octal, sizeof (octal), "\\%.3o",
2402                                (int) (value & 0777));
2403                   else
2404                     xsnprintf (octal, sizeof (octal), "\\x%lx", (long) value);
2405                   append_string_as_wide (octal, output);
2406                 }
2407               /* If we somehow have extra bytes, print them now.  */
2408               while (i < orig_len)
2409                 {
2410                   char octal[5];
2411
2412                   xsnprintf (octal, sizeof (octal), "\\%.3o", orig[i] & 0xff);
2413                   append_string_as_wide (octal, output);
2414                   ++i;
2415                 }
2416
2417               *need_escapep = 1;
2418             }
2419           break;
2420         }
2421     }
2422 }
2423
2424 /* Print the character C on STREAM as part of the contents of a
2425    literal string whose delimiter is QUOTER.  ENCODING names the
2426    encoding of C.  */
2427
2428 void
2429 generic_emit_char (int c, struct type *type, struct ui_file *stream,
2430                    int quoter, const char *encoding)
2431 {
2432   enum bfd_endian byte_order
2433     = gdbarch_byte_order (get_type_arch (type));
2434   struct obstack wchar_buf, output;
2435   struct cleanup *cleanups;
2436   gdb_byte *buf;
2437   int need_escape = 0;
2438
2439   buf = (gdb_byte *) alloca (TYPE_LENGTH (type));
2440   pack_long (buf, type, c);
2441
2442   wchar_iterator iter (buf, TYPE_LENGTH (type), encoding, TYPE_LENGTH (type));
2443
2444   /* This holds the printable form of the wchar_t data.  */
2445   obstack_init (&wchar_buf);
2446   cleanups = make_cleanup_obstack_free (&wchar_buf);
2447
2448   while (1)
2449     {
2450       int num_chars;
2451       gdb_wchar_t *chars;
2452       const gdb_byte *buf;
2453       size_t buflen;
2454       int print_escape = 1;
2455       enum wchar_iterate_result result;
2456
2457       num_chars = iter.iterate (&result, &chars, &buf, &buflen);
2458       if (num_chars < 0)
2459         break;
2460       if (num_chars > 0)
2461         {
2462           /* If all characters are printable, print them.  Otherwise,
2463              we're going to have to print an escape sequence.  We
2464              check all characters because we want to print the target
2465              bytes in the escape sequence, and we don't know character
2466              boundaries there.  */
2467           int i;
2468
2469           print_escape = 0;
2470           for (i = 0; i < num_chars; ++i)
2471             if (!wchar_printable (chars[i]))
2472               {
2473                 print_escape = 1;
2474                 break;
2475               }
2476
2477           if (!print_escape)
2478             {
2479               for (i = 0; i < num_chars; ++i)
2480                 print_wchar (chars[i], buf, buflen,
2481                              TYPE_LENGTH (type), byte_order,
2482                              &wchar_buf, quoter, &need_escape);
2483             }
2484         }
2485
2486       /* This handles the NUM_CHARS == 0 case as well.  */
2487       if (print_escape)
2488         print_wchar (gdb_WEOF, buf, buflen, TYPE_LENGTH (type),
2489                      byte_order, &wchar_buf, quoter, &need_escape);
2490     }
2491
2492   /* The output in the host encoding.  */
2493   obstack_init (&output);
2494   make_cleanup_obstack_free (&output);
2495
2496   convert_between_encodings (INTERMEDIATE_ENCODING, host_charset (),
2497                              (gdb_byte *) obstack_base (&wchar_buf),
2498                              obstack_object_size (&wchar_buf),
2499                              sizeof (gdb_wchar_t), &output, translit_char);
2500   obstack_1grow (&output, '\0');
2501
2502   fputs_filtered ((const char *) obstack_base (&output), stream);
2503
2504   do_cleanups (cleanups);
2505 }
2506
2507 /* Return the repeat count of the next character/byte in ITER,
2508    storing the result in VEC.  */
2509
2510 static int
2511 count_next_character (wchar_iterator *iter,
2512                       VEC (converted_character_d) **vec)
2513 {
2514   struct converted_character *current;
2515
2516   if (VEC_empty (converted_character_d, *vec))
2517     {
2518       struct converted_character tmp;
2519       gdb_wchar_t *chars;
2520
2521       tmp.num_chars
2522         = iter->iterate (&tmp.result, &chars, &tmp.buf, &tmp.buflen);
2523       if (tmp.num_chars > 0)
2524         {
2525           gdb_assert (tmp.num_chars < MAX_WCHARS);
2526           memcpy (tmp.chars, chars, tmp.num_chars * sizeof (gdb_wchar_t));
2527         }
2528       VEC_safe_push (converted_character_d, *vec, &tmp);
2529     }
2530
2531   current = VEC_last (converted_character_d, *vec);
2532
2533   /* Count repeated characters or bytes.  */
2534   current->repeat_count = 1;
2535   if (current->num_chars == -1)
2536     {
2537       /* EOF  */
2538       return -1;
2539     }
2540   else
2541     {
2542       gdb_wchar_t *chars;
2543       struct converted_character d;
2544       int repeat;
2545
2546       d.repeat_count = 0;
2547
2548       while (1)
2549         {
2550           /* Get the next character.  */
2551           d.num_chars = iter->iterate (&d.result, &chars, &d.buf, &d.buflen);
2552
2553           /* If a character was successfully converted, save the character
2554              into the converted character.  */
2555           if (d.num_chars > 0)
2556             {
2557               gdb_assert (d.num_chars < MAX_WCHARS);
2558               memcpy (d.chars, chars, WCHAR_BUFLEN (d.num_chars));
2559             }
2560
2561           /* Determine if the current character is the same as this
2562              new character.  */
2563           if (d.num_chars == current->num_chars && d.result == current->result)
2564             {
2565               /* There are two cases to consider:
2566
2567                  1) Equality of converted character (num_chars > 0)
2568                  2) Equality of non-converted character (num_chars == 0)  */
2569               if ((current->num_chars > 0
2570                    && memcmp (current->chars, d.chars,
2571                               WCHAR_BUFLEN (current->num_chars)) == 0)
2572                   || (current->num_chars == 0
2573                       && current->buflen == d.buflen
2574                       && memcmp (current->buf, d.buf, current->buflen) == 0))
2575                 ++current->repeat_count;
2576               else
2577                 break;
2578             }
2579           else
2580             break;
2581         }
2582
2583       /* Push this next converted character onto the result vector.  */
2584       repeat = current->repeat_count;
2585       VEC_safe_push (converted_character_d, *vec, &d);
2586       return repeat;
2587     }
2588 }
2589
2590 /* Print the characters in CHARS to the OBSTACK.  QUOTE_CHAR is the quote
2591    character to use with string output.  WIDTH is the size of the output
2592    character type.  BYTE_ORDER is the the target byte order.  OPTIONS
2593    is the user's print options.  */
2594
2595 static void
2596 print_converted_chars_to_obstack (struct obstack *obstack,
2597                                   VEC (converted_character_d) *chars,
2598                                   int quote_char, int width,
2599                                   enum bfd_endian byte_order,
2600                                   const struct value_print_options *options)
2601 {
2602   unsigned int idx;
2603   struct converted_character *elem;
2604   enum {START, SINGLE, REPEAT, INCOMPLETE, FINISH} state, last;
2605   gdb_wchar_t wide_quote_char = gdb_btowc (quote_char);
2606   int need_escape = 0;
2607
2608   /* Set the start state.  */
2609   idx = 0;
2610   last = state = START;
2611   elem = NULL;
2612
2613   while (1)
2614     {
2615       switch (state)
2616         {
2617         case START:
2618           /* Nothing to do.  */
2619           break;
2620
2621         case SINGLE:
2622           {
2623             int j;
2624
2625             /* We are outputting a single character
2626                (< options->repeat_count_threshold).  */
2627
2628             if (last != SINGLE)
2629               {
2630                 /* We were outputting some other type of content, so we
2631                    must output and a comma and a quote.  */
2632                 if (last != START)
2633                   obstack_grow_wstr (obstack, LCST (", "));
2634                 obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
2635               }
2636             /* Output the character.  */
2637             for (j = 0; j < elem->repeat_count; ++j)
2638               {
2639                 if (elem->result == wchar_iterate_ok)
2640                   print_wchar (elem->chars[0], elem->buf, elem->buflen, width,
2641                                byte_order, obstack, quote_char, &need_escape);
2642                 else
2643                   print_wchar (gdb_WEOF, elem->buf, elem->buflen, width,
2644                                byte_order, obstack, quote_char, &need_escape);
2645               }
2646           }
2647           break;
2648
2649         case REPEAT:
2650           {
2651             int j;
2652             char *s;
2653
2654             /* We are outputting a character with a repeat count
2655                greater than options->repeat_count_threshold.  */
2656
2657             if (last == SINGLE)
2658               {
2659                 /* We were outputting a single string.  Terminate the
2660                    string.  */
2661                 obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
2662               }
2663             if (last != START)
2664               obstack_grow_wstr (obstack, LCST (", "));
2665
2666             /* Output the character and repeat string.  */
2667             obstack_grow_wstr (obstack, LCST ("'"));
2668             if (elem->result == wchar_iterate_ok)
2669               print_wchar (elem->chars[0], elem->buf, elem->buflen, width,
2670                            byte_order, obstack, quote_char, &need_escape);
2671             else
2672               print_wchar (gdb_WEOF, elem->buf, elem->buflen, width,
2673                            byte_order, obstack, quote_char, &need_escape);
2674             obstack_grow_wstr (obstack, LCST ("'"));
2675             s = xstrprintf (_(" <repeats %u times>"), elem->repeat_count);
2676             for (j = 0; s[j]; ++j)
2677               {
2678                 gdb_wchar_t w = gdb_btowc (s[j]);
2679                 obstack_grow (obstack, &w, sizeof (gdb_wchar_t));
2680               }
2681             xfree (s);
2682           }
2683           break;
2684
2685         case INCOMPLETE:
2686           /* We are outputting an incomplete sequence.  */
2687           if (last == SINGLE)
2688             {
2689               /* If we were outputting a string of SINGLE characters,
2690                  terminate the quote.  */
2691               obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
2692             }
2693           if (last != START)
2694             obstack_grow_wstr (obstack, LCST (", "));
2695
2696           /* Output the incomplete sequence string.  */
2697           obstack_grow_wstr (obstack, LCST ("<incomplete sequence "));
2698           print_wchar (gdb_WEOF, elem->buf, elem->buflen, width, byte_order,
2699                        obstack, 0, &need_escape);
2700           obstack_grow_wstr (obstack, LCST (">"));
2701
2702           /* We do not attempt to outupt anything after this.  */
2703           state = FINISH;
2704           break;
2705
2706         case FINISH:
2707           /* All done.  If we were outputting a string of SINGLE
2708              characters, the string must be terminated.  Otherwise,
2709              REPEAT and INCOMPLETE are always left properly terminated.  */
2710           if (last == SINGLE)
2711             obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
2712
2713           return;
2714         }
2715
2716       /* Get the next element and state.  */
2717       last = state;
2718       if (state != FINISH)
2719         {
2720           elem = VEC_index (converted_character_d, chars, idx++);
2721           switch (elem->result)
2722             {
2723             case wchar_iterate_ok:
2724             case wchar_iterate_invalid:
2725               if (elem->repeat_count > options->repeat_count_threshold)
2726                 state = REPEAT;
2727               else
2728                 state = SINGLE;
2729               break;
2730
2731             case wchar_iterate_incomplete:
2732               state = INCOMPLETE;
2733               break;
2734
2735             case wchar_iterate_eof:
2736               state = FINISH;
2737               break;
2738             }
2739         }
2740     }
2741 }
2742
2743 /* Print the character string STRING, printing at most LENGTH
2744    characters.  LENGTH is -1 if the string is nul terminated.  TYPE is
2745    the type of each character.  OPTIONS holds the printing options;
2746    printing stops early if the number hits print_max; repeat counts
2747    are printed as appropriate.  Print ellipses at the end if we had to
2748    stop before printing LENGTH characters, or if FORCE_ELLIPSES.
2749    QUOTE_CHAR is the character to print at each end of the string.  If
2750    C_STYLE_TERMINATOR is true, and the last character is 0, then it is
2751    omitted.  */
2752
2753 void
2754 generic_printstr (struct ui_file *stream, struct type *type, 
2755                   const gdb_byte *string, unsigned int length, 
2756                   const char *encoding, int force_ellipses,
2757                   int quote_char, int c_style_terminator,
2758                   const struct value_print_options *options)
2759 {
2760   enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
2761   unsigned int i;
2762   int width = TYPE_LENGTH (type);
2763   struct obstack wchar_buf, output;
2764   struct cleanup *cleanup;
2765   int finished = 0;
2766   struct converted_character *last;
2767   VEC (converted_character_d) *converted_chars;
2768
2769   if (length == -1)
2770     {
2771       unsigned long current_char = 1;
2772
2773       for (i = 0; current_char; ++i)
2774         {
2775           QUIT;
2776           current_char = extract_unsigned_integer (string + i * width,
2777                                                    width, byte_order);
2778         }
2779       length = i;
2780     }
2781
2782   /* If the string was not truncated due to `set print elements', and
2783      the last byte of it is a null, we don't print that, in
2784      traditional C style.  */
2785   if (c_style_terminator
2786       && !force_ellipses
2787       && length > 0
2788       && (extract_unsigned_integer (string + (length - 1) * width,
2789                                     width, byte_order) == 0))
2790     length--;
2791
2792   if (length == 0)
2793     {
2794       fputs_filtered ("\"\"", stream);
2795       return;
2796     }
2797
2798   /* Arrange to iterate over the characters, in wchar_t form.  */
2799   wchar_iterator iter (string, length * width, encoding, width);
2800   converted_chars = NULL;
2801   cleanup = make_cleanup (VEC_cleanup (converted_character_d),
2802                           &converted_chars);
2803
2804   /* Convert characters until the string is over or the maximum
2805      number of printed characters has been reached.  */
2806   i = 0;
2807   while (i < options->print_max)
2808     {
2809       int r;
2810
2811       QUIT;
2812
2813       /* Grab the next character and repeat count.  */
2814       r = count_next_character (&iter, &converted_chars);
2815
2816       /* If less than zero, the end of the input string was reached.  */
2817       if (r < 0)
2818         break;
2819
2820       /* Otherwise, add the count to the total print count and get
2821          the next character.  */
2822       i += r;
2823     }
2824
2825   /* Get the last element and determine if the entire string was
2826      processed.  */
2827   last = VEC_last (converted_character_d, converted_chars);
2828   finished = (last->result == wchar_iterate_eof);
2829
2830   /* Ensure that CONVERTED_CHARS is terminated.  */
2831   last->result = wchar_iterate_eof;
2832
2833   /* WCHAR_BUF is the obstack we use to represent the string in
2834      wchar_t form.  */
2835   obstack_init (&wchar_buf);
2836   make_cleanup_obstack_free (&wchar_buf);
2837
2838   /* Print the output string to the obstack.  */
2839   print_converted_chars_to_obstack (&wchar_buf, converted_chars, quote_char,
2840                                     width, byte_order, options);
2841
2842   if (force_ellipses || !finished)
2843     obstack_grow_wstr (&wchar_buf, LCST ("..."));
2844
2845   /* OUTPUT is where we collect `char's for printing.  */
2846   obstack_init (&output);
2847   make_cleanup_obstack_free (&output);
2848
2849   convert_between_encodings (INTERMEDIATE_ENCODING, host_charset (),
2850                              (gdb_byte *) obstack_base (&wchar_buf),
2851                              obstack_object_size (&wchar_buf),
2852                              sizeof (gdb_wchar_t), &output, translit_char);
2853   obstack_1grow (&output, '\0');
2854
2855   fputs_filtered ((const char *) obstack_base (&output), stream);
2856
2857   do_cleanups (cleanup);
2858 }
2859
2860 /* Print a string from the inferior, starting at ADDR and printing up to LEN
2861    characters, of WIDTH bytes a piece, to STREAM.  If LEN is -1, printing
2862    stops at the first null byte, otherwise printing proceeds (including null
2863    bytes) until either print_max or LEN characters have been printed,
2864    whichever is smaller.  ENCODING is the name of the string's
2865    encoding.  It can be NULL, in which case the target encoding is
2866    assumed.  */
2867
2868 int
2869 val_print_string (struct type *elttype, const char *encoding,
2870                   CORE_ADDR addr, int len,
2871                   struct ui_file *stream,
2872                   const struct value_print_options *options)
2873 {
2874   int force_ellipsis = 0;       /* Force ellipsis to be printed if nonzero.  */
2875   int err;                      /* Non-zero if we got a bad read.  */
2876   int found_nul;                /* Non-zero if we found the nul char.  */
2877   unsigned int fetchlimit;      /* Maximum number of chars to print.  */
2878   int bytes_read;
2879   gdb_byte *buffer = NULL;      /* Dynamically growable fetch buffer.  */
2880   struct cleanup *old_chain = NULL;     /* Top of the old cleanup chain.  */
2881   struct gdbarch *gdbarch = get_type_arch (elttype);
2882   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
2883   int width = TYPE_LENGTH (elttype);
2884
2885   /* First we need to figure out the limit on the number of characters we are
2886      going to attempt to fetch and print.  This is actually pretty simple.  If
2887      LEN >= zero, then the limit is the minimum of LEN and print_max.  If
2888      LEN is -1, then the limit is print_max.  This is true regardless of
2889      whether print_max is zero, UINT_MAX (unlimited), or something in between,
2890      because finding the null byte (or available memory) is what actually
2891      limits the fetch.  */
2892
2893   fetchlimit = (len == -1 ? options->print_max : std::min ((unsigned) len,
2894                                                            options->print_max));
2895
2896   err = read_string (addr, len, width, fetchlimit, byte_order,
2897                      &buffer, &bytes_read);
2898   old_chain = make_cleanup (xfree, buffer);
2899
2900   addr += bytes_read;
2901
2902   /* We now have either successfully filled the buffer to fetchlimit,
2903      or terminated early due to an error or finding a null char when
2904      LEN is -1.  */
2905
2906   /* Determine found_nul by looking at the last character read.  */
2907   found_nul = 0;
2908   if (bytes_read >= width)
2909     found_nul = extract_unsigned_integer (buffer + bytes_read - width, width,
2910                                           byte_order) == 0;
2911   if (len == -1 && !found_nul)
2912     {
2913       gdb_byte *peekbuf;
2914
2915       /* We didn't find a NUL terminator we were looking for.  Attempt
2916          to peek at the next character.  If not successful, or it is not
2917          a null byte, then force ellipsis to be printed.  */
2918
2919       peekbuf = (gdb_byte *) alloca (width);
2920
2921       if (target_read_memory (addr, peekbuf, width) == 0
2922           && extract_unsigned_integer (peekbuf, width, byte_order) != 0)
2923         force_ellipsis = 1;
2924     }
2925   else if ((len >= 0 && err != 0) || (len > bytes_read / width))
2926     {
2927       /* Getting an error when we have a requested length, or fetching less
2928          than the number of characters actually requested, always make us
2929          print ellipsis.  */
2930       force_ellipsis = 1;
2931     }
2932
2933   /* If we get an error before fetching anything, don't print a string.
2934      But if we fetch something and then get an error, print the string
2935      and then the error message.  */
2936   if (err == 0 || bytes_read > 0)
2937     {
2938       LA_PRINT_STRING (stream, elttype, buffer, bytes_read / width,
2939                        encoding, force_ellipsis, options);
2940     }
2941
2942   if (err != 0)
2943     {
2944       char *str;
2945
2946       str = memory_error_message (TARGET_XFER_E_IO, gdbarch, addr);
2947       make_cleanup (xfree, str);
2948
2949       fprintf_filtered (stream, "<error: ");
2950       fputs_filtered (str, stream);
2951       fprintf_filtered (stream, ">");
2952     }
2953
2954   gdb_flush (stream);
2955   do_cleanups (old_chain);
2956
2957   return (bytes_read / width);
2958 }
2959 \f
2960
2961 /* The 'set input-radix' command writes to this auxiliary variable.
2962    If the requested radix is valid, INPUT_RADIX is updated; otherwise,
2963    it is left unchanged.  */
2964
2965 static unsigned input_radix_1 = 10;
2966
2967 /* Validate an input or output radix setting, and make sure the user
2968    knows what they really did here.  Radix setting is confusing, e.g.
2969    setting the input radix to "10" never changes it!  */
2970
2971 static void
2972 set_input_radix (char *args, int from_tty, struct cmd_list_element *c)
2973 {
2974   set_input_radix_1 (from_tty, input_radix_1);
2975 }
2976
2977 static void
2978 set_input_radix_1 (int from_tty, unsigned radix)
2979 {
2980   /* We don't currently disallow any input radix except 0 or 1, which don't
2981      make any mathematical sense.  In theory, we can deal with any input
2982      radix greater than 1, even if we don't have unique digits for every
2983      value from 0 to radix-1, but in practice we lose on large radix values.
2984      We should either fix the lossage or restrict the radix range more.
2985      (FIXME).  */
2986
2987   if (radix < 2)
2988     {
2989       input_radix_1 = input_radix;
2990       error (_("Nonsense input radix ``decimal %u''; input radix unchanged."),
2991              radix);
2992     }
2993   input_radix_1 = input_radix = radix;
2994   if (from_tty)
2995     {
2996       printf_filtered (_("Input radix now set to "
2997                          "decimal %u, hex %x, octal %o.\n"),
2998                        radix, radix, radix);
2999     }
3000 }
3001
3002 /* The 'set output-radix' command writes to this auxiliary variable.
3003    If the requested radix is valid, OUTPUT_RADIX is updated,
3004    otherwise, it is left unchanged.  */
3005
3006 static unsigned output_radix_1 = 10;
3007
3008 static void
3009 set_output_radix (char *args, int from_tty, struct cmd_list_element *c)
3010 {
3011   set_output_radix_1 (from_tty, output_radix_1);
3012 }
3013
3014 static void
3015 set_output_radix_1 (int from_tty, unsigned radix)
3016 {
3017   /* Validate the radix and disallow ones that we aren't prepared to
3018      handle correctly, leaving the radix unchanged.  */
3019   switch (radix)
3020     {
3021     case 16:
3022       user_print_options.output_format = 'x';   /* hex */
3023       break;
3024     case 10:
3025       user_print_options.output_format = 0;     /* decimal */
3026       break;
3027     case 8:
3028       user_print_options.output_format = 'o';   /* octal */
3029       break;
3030     default:
3031       output_radix_1 = output_radix;
3032       error (_("Unsupported output radix ``decimal %u''; "
3033                "output radix unchanged."),
3034              radix);
3035     }
3036   output_radix_1 = output_radix = radix;
3037   if (from_tty)
3038     {
3039       printf_filtered (_("Output radix now set to "
3040                          "decimal %u, hex %x, octal %o.\n"),
3041                        radix, radix, radix);
3042     }
3043 }
3044
3045 /* Set both the input and output radix at once.  Try to set the output radix
3046    first, since it has the most restrictive range.  An radix that is valid as
3047    an output radix is also valid as an input radix.
3048
3049    It may be useful to have an unusual input radix.  If the user wishes to
3050    set an input radix that is not valid as an output radix, he needs to use
3051    the 'set input-radix' command.  */
3052
3053 static void
3054 set_radix (char *arg, int from_tty)
3055 {
3056   unsigned radix;
3057
3058   radix = (arg == NULL) ? 10 : parse_and_eval_long (arg);
3059   set_output_radix_1 (0, radix);
3060   set_input_radix_1 (0, radix);
3061   if (from_tty)
3062     {
3063       printf_filtered (_("Input and output radices now set to "
3064                          "decimal %u, hex %x, octal %o.\n"),
3065                        radix, radix, radix);
3066     }
3067 }
3068
3069 /* Show both the input and output radices.  */
3070
3071 static void
3072 show_radix (char *arg, int from_tty)
3073 {
3074   if (from_tty)
3075     {
3076       if (input_radix == output_radix)
3077         {
3078           printf_filtered (_("Input and output radices set to "
3079                              "decimal %u, hex %x, octal %o.\n"),
3080                            input_radix, input_radix, input_radix);
3081         }
3082       else
3083         {
3084           printf_filtered (_("Input radix set to decimal "
3085                              "%u, hex %x, octal %o.\n"),
3086                            input_radix, input_radix, input_radix);
3087           printf_filtered (_("Output radix set to decimal "
3088                              "%u, hex %x, octal %o.\n"),
3089                            output_radix, output_radix, output_radix);
3090         }
3091     }
3092 }
3093 \f
3094
3095 static void
3096 set_print (char *arg, int from_tty)
3097 {
3098   printf_unfiltered (
3099      "\"set print\" must be followed by the name of a print subcommand.\n");
3100   help_list (setprintlist, "set print ", all_commands, gdb_stdout);
3101 }
3102
3103 static void
3104 show_print (char *args, int from_tty)
3105 {
3106   cmd_show_list (showprintlist, from_tty, "");
3107 }
3108
3109 static void
3110 set_print_raw (char *arg, int from_tty)
3111 {
3112   printf_unfiltered (
3113      "\"set print raw\" must be followed by the name of a \"print raw\" subcommand.\n");
3114   help_list (setprintrawlist, "set print raw ", all_commands, gdb_stdout);
3115 }
3116
3117 static void
3118 show_print_raw (char *args, int from_tty)
3119 {
3120   cmd_show_list (showprintrawlist, from_tty, "");
3121 }
3122
3123 \f
3124 void
3125 _initialize_valprint (void)
3126 {
3127   add_prefix_cmd ("print", no_class, set_print,
3128                   _("Generic command for setting how things print."),
3129                   &setprintlist, "set print ", 0, &setlist);
3130   add_alias_cmd ("p", "print", no_class, 1, &setlist);
3131   /* Prefer set print to set prompt.  */
3132   add_alias_cmd ("pr", "print", no_class, 1, &setlist);
3133
3134   add_prefix_cmd ("print", no_class, show_print,
3135                   _("Generic command for showing print settings."),
3136                   &showprintlist, "show print ", 0, &showlist);
3137   add_alias_cmd ("p", "print", no_class, 1, &showlist);
3138   add_alias_cmd ("pr", "print", no_class, 1, &showlist);
3139
3140   add_prefix_cmd ("raw", no_class, set_print_raw,
3141                   _("\
3142 Generic command for setting what things to print in \"raw\" mode."),
3143                   &setprintrawlist, "set print raw ", 0, &setprintlist);
3144   add_prefix_cmd ("raw", no_class, show_print_raw,
3145                   _("Generic command for showing \"print raw\" settings."),
3146                   &showprintrawlist, "show print raw ", 0, &showprintlist);
3147
3148   add_setshow_uinteger_cmd ("elements", no_class,
3149                             &user_print_options.print_max, _("\
3150 Set limit on string chars or array elements to print."), _("\
3151 Show limit on string chars or array elements to print."), _("\
3152 \"set print elements unlimited\" causes there to be no limit."),
3153                             NULL,
3154                             show_print_max,
3155                             &setprintlist, &showprintlist);
3156
3157   add_setshow_boolean_cmd ("null-stop", no_class,
3158                            &user_print_options.stop_print_at_null, _("\
3159 Set printing of char arrays to stop at first null char."), _("\
3160 Show printing of char arrays to stop at first null char."), NULL,
3161                            NULL,
3162                            show_stop_print_at_null,
3163                            &setprintlist, &showprintlist);
3164
3165   add_setshow_uinteger_cmd ("repeats", no_class,
3166                             &user_print_options.repeat_count_threshold, _("\
3167 Set threshold for repeated print elements."), _("\
3168 Show threshold for repeated print elements."), _("\
3169 \"set print repeats unlimited\" causes all elements to be individually printed."),
3170                             NULL,
3171                             show_repeat_count_threshold,
3172                             &setprintlist, &showprintlist);
3173
3174   add_setshow_boolean_cmd ("pretty", class_support,
3175                            &user_print_options.prettyformat_structs, _("\
3176 Set pretty formatting of structures."), _("\
3177 Show pretty formatting of structures."), NULL,
3178                            NULL,
3179                            show_prettyformat_structs,
3180                            &setprintlist, &showprintlist);
3181
3182   add_setshow_boolean_cmd ("union", class_support,
3183                            &user_print_options.unionprint, _("\
3184 Set printing of unions interior to structures."), _("\
3185 Show printing of unions interior to structures."), NULL,
3186                            NULL,
3187                            show_unionprint,
3188                            &setprintlist, &showprintlist);
3189
3190   add_setshow_boolean_cmd ("array", class_support,
3191                            &user_print_options.prettyformat_arrays, _("\
3192 Set pretty formatting of arrays."), _("\
3193 Show pretty formatting of arrays."), NULL,
3194                            NULL,
3195                            show_prettyformat_arrays,
3196                            &setprintlist, &showprintlist);
3197
3198   add_setshow_boolean_cmd ("address", class_support,
3199                            &user_print_options.addressprint, _("\
3200 Set printing of addresses."), _("\
3201 Show printing of addresses."), NULL,
3202                            NULL,
3203                            show_addressprint,
3204                            &setprintlist, &showprintlist);
3205
3206   add_setshow_boolean_cmd ("symbol", class_support,
3207                            &user_print_options.symbol_print, _("\
3208 Set printing of symbol names when printing pointers."), _("\
3209 Show printing of symbol names when printing pointers."),
3210                            NULL, NULL,
3211                            show_symbol_print,
3212                            &setprintlist, &showprintlist);
3213
3214   add_setshow_zuinteger_cmd ("input-radix", class_support, &input_radix_1,
3215                              _("\
3216 Set default input radix for entering numbers."), _("\
3217 Show default input radix for entering numbers."), NULL,
3218                              set_input_radix,
3219                              show_input_radix,
3220                              &setlist, &showlist);
3221
3222   add_setshow_zuinteger_cmd ("output-radix", class_support, &output_radix_1,
3223                              _("\
3224 Set default output radix for printing of values."), _("\
3225 Show default output radix for printing of values."), NULL,
3226                              set_output_radix,
3227                              show_output_radix,
3228                              &setlist, &showlist);
3229
3230   /* The "set radix" and "show radix" commands are special in that
3231      they are like normal set and show commands but allow two normally
3232      independent variables to be either set or shown with a single
3233      command.  So the usual deprecated_add_set_cmd() and [deleted]
3234      add_show_from_set() commands aren't really appropriate.  */
3235   /* FIXME: i18n: With the new add_setshow_integer command, that is no
3236      longer true - show can display anything.  */
3237   add_cmd ("radix", class_support, set_radix, _("\
3238 Set default input and output number radices.\n\
3239 Use 'set input-radix' or 'set output-radix' to independently set each.\n\
3240 Without an argument, sets both radices back to the default value of 10."),
3241            &setlist);
3242   add_cmd ("radix", class_support, show_radix, _("\
3243 Show the default input and output number radices.\n\
3244 Use 'show input-radix' or 'show output-radix' to independently show each."),
3245            &showlist);
3246
3247   add_setshow_boolean_cmd ("array-indexes", class_support,
3248                            &user_print_options.print_array_indexes, _("\
3249 Set printing of array indexes."), _("\
3250 Show printing of array indexes"), NULL, NULL, show_print_array_indexes,
3251                            &setprintlist, &showprintlist);
3252 }