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