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