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