2009-05-27 Tom Tromey <tromey@redhat.com>
[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 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
38 #include <errno.h>
39
40 /* Prototypes for local functions */
41
42 static int partial_memory_read (CORE_ADDR memaddr, gdb_byte *myaddr,
43                                 int len, int *errnoptr);
44
45 static void show_print (char *, int);
46
47 static void set_print (char *, int);
48
49 static void set_radix (char *, int);
50
51 static void show_radix (char *, int);
52
53 static void set_input_radix (char *, int, struct cmd_list_element *);
54
55 static void set_input_radix_1 (int, unsigned);
56
57 static void set_output_radix (char *, int, struct cmd_list_element *);
58
59 static void set_output_radix_1 (int, unsigned);
60
61 void _initialize_valprint (void);
62
63 #define PRINT_MAX_DEFAULT 200   /* Start print_max off at this value. */
64
65 struct value_print_options user_print_options =
66 {
67   Val_pretty_default,           /* pretty */
68   0,                            /* prettyprint_arrays */
69   0,                            /* prettyprint_structs */
70   0,                            /* vtblprint */
71   1,                            /* unionprint */
72   1,                            /* addressprint */
73   0,                            /* objectprint */
74   PRINT_MAX_DEFAULT,            /* print_max */
75   10,                           /* repeat_count_threshold */
76   0,                            /* output_format */
77   0,                            /* format */
78   0,                            /* stop_print_at_null */
79   0,                            /* inspect_it */
80   0,                            /* print_array_indexes */
81   0,                            /* deref_ref */
82   1,                            /* static_field_print */
83   1                             /* pascal_static_field_print */
84 };
85
86 /* Initialize *OPTS to be a copy of the user print options.  */
87 void
88 get_user_print_options (struct value_print_options *opts)
89 {
90   *opts = user_print_options;
91 }
92
93 /* Initialize *OPTS to be a copy of the user print options, but with
94    pretty-printing disabled.  */
95 void
96 get_raw_print_options (struct value_print_options *opts)
97 {  
98   *opts = user_print_options;
99   opts->pretty = Val_no_prettyprint;
100 }
101
102 /* Initialize *OPTS to be a copy of the user print options, but using
103    FORMAT as the formatting option.  */
104 void
105 get_formatted_print_options (struct value_print_options *opts,
106                              char format)
107 {
108   *opts = user_print_options;
109   opts->format = format;
110 }
111
112 static void
113 show_print_max (struct ui_file *file, int from_tty,
114                 struct cmd_list_element *c, const char *value)
115 {
116   fprintf_filtered (file, _("\
117 Limit on string chars or array elements to print is %s.\n"),
118                     value);
119 }
120
121
122 /* Default input and output radixes, and output format letter.  */
123
124 unsigned input_radix = 10;
125 static void
126 show_input_radix (struct ui_file *file, int from_tty,
127                   struct cmd_list_element *c, const char *value)
128 {
129   fprintf_filtered (file, _("\
130 Default input radix for entering numbers is %s.\n"),
131                     value);
132 }
133
134 unsigned output_radix = 10;
135 static void
136 show_output_radix (struct ui_file *file, int from_tty,
137                    struct cmd_list_element *c, const char *value)
138 {
139   fprintf_filtered (file, _("\
140 Default output radix for printing of values is %s.\n"),
141                     value);
142 }
143
144 /* By default we print arrays without printing the index of each element in
145    the array.  This behavior can be changed by setting PRINT_ARRAY_INDEXES.  */
146
147 static void
148 show_print_array_indexes (struct ui_file *file, int from_tty,
149                           struct cmd_list_element *c, const char *value)
150 {
151   fprintf_filtered (file, _("Printing of array indexes is %s.\n"), value);
152 }
153
154 /* Print repeat counts if there are more than this many repetitions of an
155    element in an array.  Referenced by the low level language dependent
156    print routines. */
157
158 static void
159 show_repeat_count_threshold (struct ui_file *file, int from_tty,
160                              struct cmd_list_element *c, const char *value)
161 {
162   fprintf_filtered (file, _("Threshold for repeated print elements is %s.\n"),
163                     value);
164 }
165
166 /* If nonzero, stops printing of char arrays at first null. */
167
168 static void
169 show_stop_print_at_null (struct ui_file *file, int from_tty,
170                          struct cmd_list_element *c, const char *value)
171 {
172   fprintf_filtered (file, _("\
173 Printing of char arrays to stop at first null char is %s.\n"),
174                     value);
175 }
176
177 /* Controls pretty printing of structures. */
178
179 static void
180 show_prettyprint_structs (struct ui_file *file, int from_tty,
181                           struct cmd_list_element *c, const char *value)
182 {
183   fprintf_filtered (file, _("Prettyprinting of structures is %s.\n"), value);
184 }
185
186 /* Controls pretty printing of arrays.  */
187
188 static void
189 show_prettyprint_arrays (struct ui_file *file, int from_tty,
190                          struct cmd_list_element *c, const char *value)
191 {
192   fprintf_filtered (file, _("Prettyprinting of arrays is %s.\n"), value);
193 }
194
195 /* If nonzero, causes unions inside structures or other unions to be
196    printed. */
197
198 static void
199 show_unionprint (struct ui_file *file, int from_tty,
200                  struct cmd_list_element *c, const char *value)
201 {
202   fprintf_filtered (file, _("\
203 Printing of unions interior to structures is %s.\n"),
204                     value);
205 }
206
207 /* If nonzero, causes machine addresses to be printed in certain contexts. */
208
209 static void
210 show_addressprint (struct ui_file *file, int from_tty,
211                    struct cmd_list_element *c, const char *value)
212 {
213   fprintf_filtered (file, _("Printing of addresses is %s.\n"), value);
214 }
215 \f
216
217 /* Print using the given LANGUAGE the data of type TYPE located at VALADDR
218    (within GDB), which came from the inferior at address ADDRESS, onto
219    stdio stream STREAM according to OPTIONS.
220
221    If the data are a string pointer, returns the number of string characters
222    printed.
223
224    FIXME:  The data at VALADDR is in target byte order.  If gdb is ever
225    enhanced to be able to debug more than the single target it was compiled
226    for (specific CPU type and thus specific target byte ordering), then
227    either the print routines are going to have to take this into account,
228    or the data is going to have to be passed into here already converted
229    to the host byte ordering, whichever is more convenient. */
230
231
232 int
233 val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
234            CORE_ADDR address, struct ui_file *stream, int recurse,
235            const struct value_print_options *options,
236            const struct language_defn *language)
237 {
238   volatile struct gdb_exception except;
239   int ret = 0;
240   struct value_print_options local_opts = *options;
241   struct type *real_type = check_typedef (type);
242
243   if (local_opts.pretty == Val_pretty_default)
244     local_opts.pretty = (local_opts.prettyprint_structs
245                          ? Val_prettyprint : Val_no_prettyprint);
246
247   QUIT;
248
249   /* Ensure that the type is complete and not just a stub.  If the type is
250      only a stub and we can't find and substitute its complete type, then
251      print appropriate string and return.  */
252
253   if (TYPE_STUB (real_type))
254     {
255       fprintf_filtered (stream, "<incomplete type>");
256       gdb_flush (stream);
257       return (0);
258     }
259
260   TRY_CATCH (except, RETURN_MASK_ERROR)
261     {
262       ret = language->la_val_print (type, valaddr, embedded_offset, address,
263                                     stream, recurse, &local_opts);
264     }
265   if (except.reason < 0)
266     fprintf_filtered (stream, _("<error reading variable>"));
267
268   return ret;
269 }
270
271 /* Check whether the value VAL is printable.  Return 1 if it is;
272    return 0 and print an appropriate error message to STREAM if it
273    is not.  */
274
275 static int
276 value_check_printable (struct value *val, struct ui_file *stream)
277 {
278   if (val == 0)
279     {
280       fprintf_filtered (stream, _("<address of value unknown>"));
281       return 0;
282     }
283
284   if (value_optimized_out (val))
285     {
286       fprintf_filtered (stream, _("<value optimized out>"));
287       return 0;
288     }
289
290   if (TYPE_CODE (value_type (val)) == TYPE_CODE_INTERNAL_FUNCTION)
291     {
292       fprintf_filtered (stream, _("<internal function %s>"),
293                         value_internal_function_name (val));
294       return 0;
295     }
296
297   return 1;
298 }
299
300 /* Print using the given LANGUAGE the value VAL onto stream STREAM according
301    to OPTIONS.
302
303    If the data are a string pointer, returns the number of string characters
304    printed.
305
306    This is a preferable interface to val_print, above, because it uses
307    GDB's value mechanism.  */
308
309 int
310 common_val_print (struct value *val, struct ui_file *stream, int recurse,
311                   const struct value_print_options *options,
312                   const struct language_defn *language)
313 {
314   if (!value_check_printable (val, stream))
315     return 0;
316
317   return val_print (value_type (val), value_contents_all (val),
318                     value_embedded_offset (val), value_address (val),
319                     stream, recurse, options, language);
320 }
321
322 /* Print the value VAL in C-ish syntax on stream STREAM according to
323    OPTIONS.
324    If the object printed is a string pointer, returns
325    the number of string bytes printed.  */
326
327 int
328 value_print (struct value *val, struct ui_file *stream,
329              const struct value_print_options *options)
330 {
331   if (!value_check_printable (val, stream))
332     return 0;
333
334   return LA_VALUE_PRINT (val, stream, options);
335 }
336
337 /* Called by various <lang>_val_print routines to print
338    TYPE_CODE_INT's.  TYPE is the type.  VALADDR is the address of the
339    value.  STREAM is where to print the value.  */
340
341 void
342 val_print_type_code_int (struct type *type, const gdb_byte *valaddr,
343                          struct ui_file *stream)
344 {
345   enum bfd_endian byte_order = gdbarch_byte_order (current_gdbarch);
346
347   if (TYPE_LENGTH (type) > sizeof (LONGEST))
348     {
349       LONGEST val;
350
351       if (TYPE_UNSIGNED (type)
352           && extract_long_unsigned_integer (valaddr, TYPE_LENGTH (type),
353                                             &val))
354         {
355           print_longest (stream, 'u', 0, val);
356         }
357       else
358         {
359           /* Signed, or we couldn't turn an unsigned value into a
360              LONGEST.  For signed values, one could assume two's
361              complement (a reasonable assumption, I think) and do
362              better than this.  */
363           print_hex_chars (stream, (unsigned char *) valaddr,
364                            TYPE_LENGTH (type), byte_order);
365         }
366     }
367   else
368     {
369       print_longest (stream, TYPE_UNSIGNED (type) ? 'u' : 'd', 0,
370                      unpack_long (type, valaddr));
371     }
372 }
373
374 void
375 val_print_type_code_flags (struct type *type, const gdb_byte *valaddr,
376                            struct ui_file *stream)
377 {
378   ULONGEST val = unpack_long (type, valaddr);
379   int bitpos, nfields = TYPE_NFIELDS (type);
380
381   fputs_filtered ("[ ", stream);
382   for (bitpos = 0; bitpos < nfields; bitpos++)
383     {
384       if (TYPE_FIELD_BITPOS (type, bitpos) != -1
385           && (val & ((ULONGEST)1 << bitpos)))
386         {
387           if (TYPE_FIELD_NAME (type, bitpos))
388             fprintf_filtered (stream, "%s ", TYPE_FIELD_NAME (type, bitpos));
389           else
390             fprintf_filtered (stream, "#%d ", bitpos);
391         }
392     }
393   fputs_filtered ("]", stream);
394 }
395
396 /* Print a number according to FORMAT which is one of d,u,x,o,b,h,w,g.
397    The raison d'etre of this function is to consolidate printing of 
398    LONG_LONG's into this one function. The format chars b,h,w,g are 
399    from print_scalar_formatted().  Numbers are printed using C
400    format. 
401
402    USE_C_FORMAT means to use C format in all cases.  Without it, 
403    'o' and 'x' format do not include the standard C radix prefix
404    (leading 0 or 0x). 
405    
406    Hilfinger/2004-09-09: USE_C_FORMAT was originally called USE_LOCAL
407    and was intended to request formating according to the current
408    language and would be used for most integers that GDB prints.  The
409    exceptional cases were things like protocols where the format of
410    the integer is a protocol thing, not a user-visible thing).  The
411    parameter remains to preserve the information of what things might
412    be printed with language-specific format, should we ever resurrect
413    that capability. */
414
415 void
416 print_longest (struct ui_file *stream, int format, int use_c_format,
417                LONGEST val_long)
418 {
419   const char *val;
420
421   switch (format)
422     {
423     case 'd':
424       val = int_string (val_long, 10, 1, 0, 1); break;
425     case 'u':
426       val = int_string (val_long, 10, 0, 0, 1); break;
427     case 'x':
428       val = int_string (val_long, 16, 0, 0, use_c_format); break;
429     case 'b':
430       val = int_string (val_long, 16, 0, 2, 1); break;
431     case 'h':
432       val = int_string (val_long, 16, 0, 4, 1); break;
433     case 'w':
434       val = int_string (val_long, 16, 0, 8, 1); break;
435     case 'g':
436       val = int_string (val_long, 16, 0, 16, 1); break;
437       break;
438     case 'o':
439       val = int_string (val_long, 8, 0, 0, use_c_format); break;
440     default:
441       internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
442     } 
443   fputs_filtered (val, stream);
444 }
445
446 /* This used to be a macro, but I don't think it is called often enough
447    to merit such treatment.  */
448 /* Convert a LONGEST to an int.  This is used in contexts (e.g. number of
449    arguments to a function, number in a value history, register number, etc.)
450    where the value must not be larger than can fit in an int.  */
451
452 int
453 longest_to_int (LONGEST arg)
454 {
455   /* Let the compiler do the work */
456   int rtnval = (int) arg;
457
458   /* Check for overflows or underflows */
459   if (sizeof (LONGEST) > sizeof (int))
460     {
461       if (rtnval != arg)
462         {
463           error (_("Value out of range."));
464         }
465     }
466   return (rtnval);
467 }
468
469 /* Print a floating point value of type TYPE (not always a
470    TYPE_CODE_FLT), pointed to in GDB by VALADDR, on STREAM.  */
471
472 void
473 print_floating (const gdb_byte *valaddr, struct type *type,
474                 struct ui_file *stream)
475 {
476   DOUBLEST doub;
477   int inv;
478   const struct floatformat *fmt = NULL;
479   unsigned len = TYPE_LENGTH (type);
480   enum float_kind kind;
481
482   /* If it is a floating-point, check for obvious problems.  */
483   if (TYPE_CODE (type) == TYPE_CODE_FLT)
484     fmt = floatformat_from_type (type);
485   if (fmt != NULL)
486     {
487       kind = floatformat_classify (fmt, valaddr);
488       if (kind == float_nan)
489         {
490           if (floatformat_is_negative (fmt, valaddr))
491             fprintf_filtered (stream, "-");
492           fprintf_filtered (stream, "nan(");
493           fputs_filtered ("0x", stream);
494           fputs_filtered (floatformat_mantissa (fmt, valaddr), stream);
495           fprintf_filtered (stream, ")");
496           return;
497         }
498       else if (kind == float_infinite)
499         {
500           if (floatformat_is_negative (fmt, valaddr))
501             fputs_filtered ("-", stream);
502           fputs_filtered ("inf", stream);
503           return;
504         }
505     }
506
507   /* NOTE: cagney/2002-01-15: The TYPE passed into print_floating()
508      isn't necessarily a TYPE_CODE_FLT.  Consequently, unpack_double
509      needs to be used as that takes care of any necessary type
510      conversions.  Such conversions are of course direct to DOUBLEST
511      and disregard any possible target floating point limitations.
512      For instance, a u64 would be converted and displayed exactly on a
513      host with 80 bit DOUBLEST but with loss of information on a host
514      with 64 bit DOUBLEST.  */
515
516   doub = unpack_double (type, valaddr, &inv);
517   if (inv)
518     {
519       fprintf_filtered (stream, "<invalid float value>");
520       return;
521     }
522
523   /* FIXME: kettenis/2001-01-20: The following code makes too much
524      assumptions about the host and target floating point format.  */
525
526   /* NOTE: cagney/2002-02-03: Since the TYPE of what was passed in may
527      not necessarily be a TYPE_CODE_FLT, the below ignores that and
528      instead uses the type's length to determine the precision of the
529      floating-point value being printed.  */
530
531   if (len < sizeof (double))
532       fprintf_filtered (stream, "%.9g", (double) doub);
533   else if (len == sizeof (double))
534       fprintf_filtered (stream, "%.17g", (double) doub);
535   else
536 #ifdef PRINTF_HAS_LONG_DOUBLE
537     fprintf_filtered (stream, "%.35Lg", doub);
538 #else
539     /* This at least wins with values that are representable as
540        doubles.  */
541     fprintf_filtered (stream, "%.17g", (double) doub);
542 #endif
543 }
544
545 void
546 print_decimal_floating (const gdb_byte *valaddr, struct type *type,
547                         struct ui_file *stream)
548 {
549   char decstr[MAX_DECIMAL_STRING];
550   unsigned len = TYPE_LENGTH (type);
551
552   decimal_to_string (valaddr, len, decstr);
553   fputs_filtered (decstr, stream);
554   return;
555 }
556
557 void
558 print_binary_chars (struct ui_file *stream, const gdb_byte *valaddr,
559                     unsigned len, enum bfd_endian byte_order)
560 {
561
562 #define BITS_IN_BYTES 8
563
564   const gdb_byte *p;
565   unsigned int i;
566   int b;
567
568   /* Declared "int" so it will be signed.
569    * This ensures that right shift will shift in zeros.
570    */
571   const int mask = 0x080;
572
573   /* FIXME: We should be not printing leading zeroes in most cases.  */
574
575   if (byte_order == BFD_ENDIAN_BIG)
576     {
577       for (p = valaddr;
578            p < valaddr + len;
579            p++)
580         {
581           /* Every byte has 8 binary characters; peel off
582            * and print from the MSB end.
583            */
584           for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
585             {
586               if (*p & (mask >> i))
587                 b = 1;
588               else
589                 b = 0;
590
591               fprintf_filtered (stream, "%1d", b);
592             }
593         }
594     }
595   else
596     {
597       for (p = valaddr + len - 1;
598            p >= valaddr;
599            p--)
600         {
601           for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
602             {
603               if (*p & (mask >> i))
604                 b = 1;
605               else
606                 b = 0;
607
608               fprintf_filtered (stream, "%1d", b);
609             }
610         }
611     }
612 }
613
614 /* VALADDR points to an integer of LEN bytes.
615  * Print it in octal on stream or format it in buf.
616  */
617 void
618 print_octal_chars (struct ui_file *stream, const gdb_byte *valaddr,
619                    unsigned len, enum bfd_endian byte_order)
620 {
621   const gdb_byte *p;
622   unsigned char octa1, octa2, octa3, carry;
623   int cycle;
624
625   /* FIXME: We should be not printing leading zeroes in most cases.  */
626
627
628   /* Octal is 3 bits, which doesn't fit.  Yuk.  So we have to track
629    * the extra bits, which cycle every three bytes:
630    *
631    * Byte side:       0            1             2          3
632    *                         |             |            |            |
633    * bit number   123 456 78 | 9 012 345 6 | 78 901 234 | 567 890 12 |
634    *
635    * Octal side:   0   1   carry  3   4  carry ...
636    *
637    * Cycle number:    0             1            2
638    *
639    * But of course we are printing from the high side, so we have to
640    * figure out where in the cycle we are so that we end up with no
641    * left over bits at the end.
642    */
643 #define BITS_IN_OCTAL 3
644 #define HIGH_ZERO     0340
645 #define LOW_ZERO      0016
646 #define CARRY_ZERO    0003
647 #define HIGH_ONE      0200
648 #define MID_ONE       0160
649 #define LOW_ONE       0016
650 #define CARRY_ONE     0001
651 #define HIGH_TWO      0300
652 #define MID_TWO       0070
653 #define LOW_TWO       0007
654
655   /* For 32 we start in cycle 2, with two bits and one bit carry;
656    * for 64 in cycle in cycle 1, with one bit and a two bit carry.
657    */
658   cycle = (len * BITS_IN_BYTES) % BITS_IN_OCTAL;
659   carry = 0;
660
661   fputs_filtered ("0", stream);
662   if (byte_order == BFD_ENDIAN_BIG)
663     {
664       for (p = valaddr;
665            p < valaddr + len;
666            p++)
667         {
668           switch (cycle)
669             {
670             case 0:
671               /* No carry in, carry out two bits.
672                */
673               octa1 = (HIGH_ZERO & *p) >> 5;
674               octa2 = (LOW_ZERO & *p) >> 2;
675               carry = (CARRY_ZERO & *p);
676               fprintf_filtered (stream, "%o", octa1);
677               fprintf_filtered (stream, "%o", octa2);
678               break;
679
680             case 1:
681               /* Carry in two bits, carry out one bit.
682                */
683               octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
684               octa2 = (MID_ONE & *p) >> 4;
685               octa3 = (LOW_ONE & *p) >> 1;
686               carry = (CARRY_ONE & *p);
687               fprintf_filtered (stream, "%o", octa1);
688               fprintf_filtered (stream, "%o", octa2);
689               fprintf_filtered (stream, "%o", octa3);
690               break;
691
692             case 2:
693               /* Carry in one bit, no carry out.
694                */
695               octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
696               octa2 = (MID_TWO & *p) >> 3;
697               octa3 = (LOW_TWO & *p);
698               carry = 0;
699               fprintf_filtered (stream, "%o", octa1);
700               fprintf_filtered (stream, "%o", octa2);
701               fprintf_filtered (stream, "%o", octa3);
702               break;
703
704             default:
705               error (_("Internal error in octal conversion;"));
706             }
707
708           cycle++;
709           cycle = cycle % BITS_IN_OCTAL;
710         }
711     }
712   else
713     {
714       for (p = valaddr + len - 1;
715            p >= valaddr;
716            p--)
717         {
718           switch (cycle)
719             {
720             case 0:
721               /* Carry out, no carry in */
722               octa1 = (HIGH_ZERO & *p) >> 5;
723               octa2 = (LOW_ZERO & *p) >> 2;
724               carry = (CARRY_ZERO & *p);
725               fprintf_filtered (stream, "%o", octa1);
726               fprintf_filtered (stream, "%o", octa2);
727               break;
728
729             case 1:
730               /* Carry in, carry out */
731               octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
732               octa2 = (MID_ONE & *p) >> 4;
733               octa3 = (LOW_ONE & *p) >> 1;
734               carry = (CARRY_ONE & *p);
735               fprintf_filtered (stream, "%o", octa1);
736               fprintf_filtered (stream, "%o", octa2);
737               fprintf_filtered (stream, "%o", octa3);
738               break;
739
740             case 2:
741               /* Carry in, no carry out */
742               octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
743               octa2 = (MID_TWO & *p) >> 3;
744               octa3 = (LOW_TWO & *p);
745               carry = 0;
746               fprintf_filtered (stream, "%o", octa1);
747               fprintf_filtered (stream, "%o", octa2);
748               fprintf_filtered (stream, "%o", octa3);
749               break;
750
751             default:
752               error (_("Internal error in octal conversion;"));
753             }
754
755           cycle++;
756           cycle = cycle % BITS_IN_OCTAL;
757         }
758     }
759
760 }
761
762 /* VALADDR points to an integer of LEN bytes.
763  * Print it in decimal on stream or format it in buf.
764  */
765 void
766 print_decimal_chars (struct ui_file *stream, const gdb_byte *valaddr,
767                      unsigned len, enum bfd_endian byte_order)
768 {
769 #define TEN             10
770 #define CARRY_OUT(  x ) ((x) / TEN)     /* extend char to int */
771 #define CARRY_LEFT( x ) ((x) % TEN)
772 #define SHIFT( x )      ((x) << 4)
773 #define LOW_NIBBLE(  x ) ( (x) & 0x00F)
774 #define HIGH_NIBBLE( x ) (((x) & 0x0F0) >> 4)
775
776   const gdb_byte *p;
777   unsigned char *digits;
778   int carry;
779   int decimal_len;
780   int i, j, decimal_digits;
781   int dummy;
782   int flip;
783
784   /* Base-ten number is less than twice as many digits
785    * as the base 16 number, which is 2 digits per byte.
786    */
787   decimal_len = len * 2 * 2;
788   digits = xmalloc (decimal_len);
789
790   for (i = 0; i < decimal_len; i++)
791     {
792       digits[i] = 0;
793     }
794
795   /* Ok, we have an unknown number of bytes of data to be printed in
796    * decimal.
797    *
798    * Given a hex number (in nibbles) as XYZ, we start by taking X and
799    * decemalizing it as "x1 x2" in two decimal nibbles.  Then we multiply
800    * the nibbles by 16, add Y and re-decimalize.  Repeat with Z.
801    *
802    * The trick is that "digits" holds a base-10 number, but sometimes
803    * the individual digits are > 10. 
804    *
805    * Outer loop is per nibble (hex digit) of input, from MSD end to
806    * LSD end.
807    */
808   decimal_digits = 0;           /* Number of decimal digits so far */
809   p = (byte_order == BFD_ENDIAN_BIG) ? valaddr : valaddr + len - 1;
810   flip = 0;
811   while ((byte_order == BFD_ENDIAN_BIG) ? (p < valaddr + len) : (p >= valaddr))
812     {
813       /*
814        * Multiply current base-ten number by 16 in place.
815        * Each digit was between 0 and 9, now is between
816        * 0 and 144.
817        */
818       for (j = 0; j < decimal_digits; j++)
819         {
820           digits[j] = SHIFT (digits[j]);
821         }
822
823       /* Take the next nibble off the input and add it to what
824        * we've got in the LSB position.  Bottom 'digit' is now
825        * between 0 and 159.
826        *
827        * "flip" is used to run this loop twice for each byte.
828        */
829       if (flip == 0)
830         {
831           /* Take top nibble.
832            */
833           digits[0] += HIGH_NIBBLE (*p);
834           flip = 1;
835         }
836       else
837         {
838           /* Take low nibble and bump our pointer "p".
839            */
840           digits[0] += LOW_NIBBLE (*p);
841           if (byte_order == BFD_ENDIAN_BIG)
842             p++;
843           else
844             p--;
845           flip = 0;
846         }
847
848       /* Re-decimalize.  We have to do this often enough
849        * that we don't overflow, but once per nibble is
850        * overkill.  Easier this way, though.  Note that the
851        * carry is often larger than 10 (e.g. max initial
852        * carry out of lowest nibble is 15, could bubble all
853        * the way up greater than 10).  So we have to do
854        * the carrying beyond the last current digit.
855        */
856       carry = 0;
857       for (j = 0; j < decimal_len - 1; j++)
858         {
859           digits[j] += carry;
860
861           /* "/" won't handle an unsigned char with
862            * a value that if signed would be negative.
863            * So extend to longword int via "dummy".
864            */
865           dummy = digits[j];
866           carry = CARRY_OUT (dummy);
867           digits[j] = CARRY_LEFT (dummy);
868
869           if (j >= decimal_digits && carry == 0)
870             {
871               /*
872                * All higher digits are 0 and we
873                * no longer have a carry.
874                *
875                * Note: "j" is 0-based, "decimal_digits" is
876                *       1-based.
877                */
878               decimal_digits = j + 1;
879               break;
880             }
881         }
882     }
883
884   /* Ok, now "digits" is the decimal representation, with
885    * the "decimal_digits" actual digits.  Print!
886    */
887   for (i = decimal_digits - 1; i >= 0; i--)
888     {
889       fprintf_filtered (stream, "%1d", digits[i]);
890     }
891   xfree (digits);
892 }
893
894 /* VALADDR points to an integer of LEN bytes.  Print it in hex on stream.  */
895
896 void
897 print_hex_chars (struct ui_file *stream, const gdb_byte *valaddr,
898                  unsigned len, enum bfd_endian byte_order)
899 {
900   const gdb_byte *p;
901
902   /* FIXME: We should be not printing leading zeroes in most cases.  */
903
904   fputs_filtered ("0x", stream);
905   if (byte_order == BFD_ENDIAN_BIG)
906     {
907       for (p = valaddr;
908            p < valaddr + len;
909            p++)
910         {
911           fprintf_filtered (stream, "%02x", *p);
912         }
913     }
914   else
915     {
916       for (p = valaddr + len - 1;
917            p >= valaddr;
918            p--)
919         {
920           fprintf_filtered (stream, "%02x", *p);
921         }
922     }
923 }
924
925 /* VALADDR points to a char integer of LEN bytes.  Print it out in appropriate language form on stream.  
926    Omit any leading zero chars.  */
927
928 void
929 print_char_chars (struct ui_file *stream, struct type *type,
930                   const gdb_byte *valaddr,
931                   unsigned len, enum bfd_endian byte_order)
932 {
933   const gdb_byte *p;
934
935   if (byte_order == BFD_ENDIAN_BIG)
936     {
937       p = valaddr;
938       while (p < valaddr + len - 1 && *p == 0)
939         ++p;
940
941       while (p < valaddr + len)
942         {
943           LA_EMIT_CHAR (*p, type, stream, '\'');
944           ++p;
945         }
946     }
947   else
948     {
949       p = valaddr + len - 1;
950       while (p > valaddr && *p == 0)
951         --p;
952
953       while (p >= valaddr)
954         {
955           LA_EMIT_CHAR (*p, type, stream, '\'');
956           --p;
957         }
958     }
959 }
960
961 /* Assuming TYPE is a simple, non-empty array type, compute its upper
962    and lower bound.  Save the low bound into LOW_BOUND if not NULL.
963    Save the high bound into HIGH_BOUND if not NULL.
964
965    Return 1 if the operation was successful. Return zero otherwise,
966    in which case the values of LOW_BOUND and HIGH_BOUNDS are unmodified.
967    
968    Computing the array upper and lower bounds is pretty easy, but this
969    function does some additional verifications before returning them.
970    If something incorrect is detected, it is better to return a status
971    rather than throwing an error, making it easier for the caller to
972    implement an error-recovery plan.  For instance, it may decide to
973    warn the user that the bounds were not found and then use some
974    default values instead.  */
975
976 int
977 get_array_bounds (struct type *type, long *low_bound, long *high_bound)
978 {
979   struct type *index = TYPE_INDEX_TYPE (type);
980   long low = 0;
981   long high = 0;
982                                   
983   if (index == NULL)
984     return 0;
985
986   if (TYPE_CODE (index) == TYPE_CODE_RANGE)
987     {
988       low = TYPE_LOW_BOUND (index);
989       high = TYPE_HIGH_BOUND (index);
990     }
991   else if (TYPE_CODE (index) == TYPE_CODE_ENUM)
992     {
993       const int n_enums = TYPE_NFIELDS (index);
994
995       low = TYPE_FIELD_BITPOS (index, 0);
996       high = TYPE_FIELD_BITPOS (index, n_enums - 1);
997     }
998   else
999     return 0;
1000
1001   /* Abort if the lower bound is greater than the higher bound, except
1002      when low = high + 1.  This is a very common idiom used in Ada when
1003      defining empty ranges (for instance "range 1 .. 0").  */
1004   if (low > high + 1)
1005     return 0;
1006
1007   if (low_bound)
1008     *low_bound = low;
1009
1010   if (high_bound)
1011     *high_bound = high;
1012
1013   return 1;
1014 }
1015
1016 /* Print on STREAM using the given OPTIONS the index for the element
1017    at INDEX of an array whose index type is INDEX_TYPE.  */
1018     
1019 void  
1020 maybe_print_array_index (struct type *index_type, LONGEST index,
1021                          struct ui_file *stream,
1022                          const struct value_print_options *options)
1023 {
1024   struct value *index_value;
1025
1026   if (!options->print_array_indexes)
1027     return; 
1028     
1029   index_value = value_from_longest (index_type, index);
1030
1031   LA_PRINT_ARRAY_INDEX (index_value, stream, options);
1032 }
1033
1034 /*  Called by various <lang>_val_print routines to print elements of an
1035    array in the form "<elem1>, <elem2>, <elem3>, ...".
1036
1037    (FIXME?)  Assumes array element separator is a comma, which is correct
1038    for all languages currently handled.
1039    (FIXME?)  Some languages have a notation for repeated array elements,
1040    perhaps we should try to use that notation when appropriate.
1041  */
1042
1043 void
1044 val_print_array_elements (struct type *type, const gdb_byte *valaddr,
1045                           CORE_ADDR address, struct ui_file *stream,
1046                           int recurse,
1047                           const struct value_print_options *options,
1048                           unsigned int i)
1049 {
1050   unsigned int things_printed = 0;
1051   unsigned len;
1052   struct type *elttype, *index_type;
1053   unsigned eltlen;
1054   /* Position of the array element we are examining to see
1055      whether it is repeated.  */
1056   unsigned int rep1;
1057   /* Number of repetitions we have detected so far.  */
1058   unsigned int reps;
1059   long low_bound_index = 0;
1060
1061   elttype = TYPE_TARGET_TYPE (type);
1062   eltlen = TYPE_LENGTH (check_typedef (elttype));
1063   index_type = TYPE_INDEX_TYPE (type);
1064
1065   /* Compute the number of elements in the array.  On most arrays,
1066      the size of its elements is not zero, and so the number of elements
1067      is simply the size of the array divided by the size of the elements.
1068      But for arrays of elements whose size is zero, we need to look at
1069      the bounds.  */
1070   if (eltlen != 0)
1071     len = TYPE_LENGTH (type) / eltlen;
1072   else
1073     {
1074       long low, hi;
1075       if (get_array_bounds (type, &low, &hi))
1076         len = hi - low + 1;
1077       else
1078         {
1079           warning (_("unable to get bounds of array, assuming null array"));
1080           len = 0;
1081         }
1082     }
1083
1084   /* Get the array low bound.  This only makes sense if the array
1085      has one or more element in it.  */
1086   if (len > 0 && !get_array_bounds (type, &low_bound_index, NULL))
1087     {
1088       warning (_("unable to get low bound of array, using zero as default"));
1089       low_bound_index = 0;
1090     }
1091
1092   annotate_array_section_begin (i, elttype);
1093
1094   for (; i < len && things_printed < options->print_max; i++)
1095     {
1096       if (i != 0)
1097         {
1098           if (options->prettyprint_arrays)
1099             {
1100               fprintf_filtered (stream, ",\n");
1101               print_spaces_filtered (2 + 2 * recurse, stream);
1102             }
1103           else
1104             {
1105               fprintf_filtered (stream, ", ");
1106             }
1107         }
1108       wrap_here (n_spaces (2 + 2 * recurse));
1109       maybe_print_array_index (index_type, i + low_bound_index,
1110                                stream, options);
1111
1112       rep1 = i + 1;
1113       reps = 1;
1114       while ((rep1 < len) &&
1115              !memcmp (valaddr + i * eltlen, valaddr + rep1 * eltlen, eltlen))
1116         {
1117           ++reps;
1118           ++rep1;
1119         }
1120
1121       if (reps > options->repeat_count_threshold)
1122         {
1123           val_print (elttype, valaddr + i * eltlen, 0, address + i * eltlen,
1124                      stream, recurse + 1, options, current_language);
1125           annotate_elt_rep (reps);
1126           fprintf_filtered (stream, " <repeats %u times>", reps);
1127           annotate_elt_rep_end ();
1128
1129           i = rep1 - 1;
1130           things_printed += options->repeat_count_threshold;
1131         }
1132       else
1133         {
1134           val_print (elttype, valaddr + i * eltlen, 0, address + i * eltlen,
1135                      stream, recurse + 1, options, current_language);
1136           annotate_elt ();
1137           things_printed++;
1138         }
1139     }
1140   annotate_array_section_end ();
1141   if (i < len)
1142     {
1143       fprintf_filtered (stream, "...");
1144     }
1145 }
1146
1147 /* Read LEN bytes of target memory at address MEMADDR, placing the
1148    results in GDB's memory at MYADDR.  Returns a count of the bytes
1149    actually read, and optionally an errno value in the location
1150    pointed to by ERRNOPTR if ERRNOPTR is non-null. */
1151
1152 /* FIXME: cagney/1999-10-14: Only used by val_print_string.  Can this
1153    function be eliminated.  */
1154
1155 static int
1156 partial_memory_read (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int *errnoptr)
1157 {
1158   int nread;                    /* Number of bytes actually read. */
1159   int errcode;                  /* Error from last read. */
1160
1161   /* First try a complete read. */
1162   errcode = target_read_memory (memaddr, myaddr, len);
1163   if (errcode == 0)
1164     {
1165       /* Got it all. */
1166       nread = len;
1167     }
1168   else
1169     {
1170       /* Loop, reading one byte at a time until we get as much as we can. */
1171       for (errcode = 0, nread = 0; len > 0 && errcode == 0; nread++, len--)
1172         {
1173           errcode = target_read_memory (memaddr++, myaddr++, 1);
1174         }
1175       /* If an error, the last read was unsuccessful, so adjust count. */
1176       if (errcode != 0)
1177         {
1178           nread--;
1179         }
1180     }
1181   if (errnoptr != NULL)
1182     {
1183       *errnoptr = errcode;
1184     }
1185   return (nread);
1186 }
1187
1188 /* Read a string from the inferior, at ADDR, with LEN characters of WIDTH bytes
1189    each.  Fetch at most FETCHLIMIT characters.  BUFFER will be set to a newly
1190    allocated buffer containing the string, which the caller is responsible to
1191    free, and BYTES_READ will be set to the number of bytes read.  Returns 0 on
1192    success, or errno on failure.
1193
1194    If LEN > 0, reads exactly LEN characters (including eventual NULs in
1195    the middle or end of the string).  If LEN is -1, stops at the first
1196    null character (not necessarily the first null byte) up to a maximum
1197    of FETCHLIMIT characters.  Set FETCHLIMIT to UINT_MAX to read as many
1198    characters as possible from the string.
1199
1200    Unless an exception is thrown, BUFFER will always be allocated, even on
1201    failure.  In this case, some characters might have been read before the
1202    failure happened.  Check BYTES_READ to recognize this situation.
1203
1204    Note: There was a FIXME asking to make this code use target_read_string,
1205    but this function is more general (can read past null characters, up to
1206    given LEN). Besides, it is used much more often than target_read_string
1207    so it is more tested.  Perhaps callers of target_read_string should use
1208    this function instead?  */
1209
1210 int
1211 read_string (CORE_ADDR addr, int len, int width, unsigned int fetchlimit,
1212              gdb_byte **buffer, int *bytes_read)
1213 {
1214   int found_nul;                /* Non-zero if we found the nul char.  */
1215   int errcode;                  /* Errno returned from bad reads.  */
1216   unsigned int nfetch;          /* Chars to fetch / chars fetched.  */
1217   unsigned int chunksize;       /* Size of each fetch, in chars.  */
1218   gdb_byte *bufptr;             /* Pointer to next available byte in buffer.  */
1219   gdb_byte *limit;              /* First location past end of fetch buffer.  */
1220   struct cleanup *old_chain = NULL;     /* Top of the old cleanup chain.  */
1221
1222   /* Decide how large of chunks to try to read in one operation.  This
1223      is also pretty simple.  If LEN >= zero, then we want fetchlimit chars,
1224      so we might as well read them all in one operation.  If LEN is -1, we
1225      are looking for a NUL terminator to end the fetching, so we might as
1226      well read in blocks that are large enough to be efficient, but not so
1227      large as to be slow if fetchlimit happens to be large.  So we choose the
1228      minimum of 8 and fetchlimit.  We used to use 200 instead of 8 but
1229      200 is way too big for remote debugging over a serial line.  */
1230
1231   chunksize = (len == -1 ? min (8, fetchlimit) : fetchlimit);
1232
1233   /* Loop until we either have all the characters, or we encounter
1234      some error, such as bumping into the end of the address space.  */
1235
1236   found_nul = 0;
1237   *buffer = NULL;
1238
1239   old_chain = make_cleanup (free_current_contents, buffer);
1240
1241   if (len > 0)
1242     {
1243       *buffer = (gdb_byte *) xmalloc (len * width);
1244       bufptr = *buffer;
1245
1246       nfetch = partial_memory_read (addr, bufptr, len * width, &errcode)
1247         / width;
1248       addr += nfetch * width;
1249       bufptr += nfetch * width;
1250     }
1251   else if (len == -1)
1252     {
1253       unsigned long bufsize = 0;
1254
1255       do
1256         {
1257           QUIT;
1258           nfetch = min (chunksize, fetchlimit - bufsize);
1259
1260           if (*buffer == NULL)
1261             *buffer = (gdb_byte *) xmalloc (nfetch * width);
1262           else
1263             *buffer = (gdb_byte *) xrealloc (*buffer,
1264                                              (nfetch + bufsize) * width);
1265
1266           bufptr = *buffer + bufsize * width;
1267           bufsize += nfetch;
1268
1269           /* Read as much as we can.  */
1270           nfetch = partial_memory_read (addr, bufptr, nfetch * width, &errcode)
1271                     / width;
1272
1273           /* Scan this chunk for the null character that terminates the string
1274              to print.  If found, we don't need to fetch any more.  Note
1275              that bufptr is explicitly left pointing at the next character
1276              after the null character, or at the next character after the end
1277              of the buffer.  */
1278
1279           limit = bufptr + nfetch * width;
1280           while (bufptr < limit)
1281             {
1282               unsigned long c;
1283
1284               c = extract_unsigned_integer (bufptr, width);
1285               addr += width;
1286               bufptr += width;
1287               if (c == 0)
1288                 {
1289                   /* We don't care about any error which happened after
1290                      the NUL terminator.  */
1291                   errcode = 0;
1292                   found_nul = 1;
1293                   break;
1294                 }
1295             }
1296         }
1297       while (errcode == 0       /* no error */
1298              && bufptr - *buffer < fetchlimit * width   /* no overrun */
1299              && !found_nul);    /* haven't found NUL yet */
1300     }
1301   else
1302     {                           /* Length of string is really 0!  */
1303       /* We always allocate *buffer.  */
1304       *buffer = bufptr = xmalloc (1);
1305       errcode = 0;
1306     }
1307
1308   /* bufptr and addr now point immediately beyond the last byte which we
1309      consider part of the string (including a '\0' which ends the string).  */
1310   *bytes_read = bufptr - *buffer;
1311
1312   QUIT;
1313
1314   discard_cleanups (old_chain);
1315
1316   return errcode;
1317 }
1318
1319 /* Print a string from the inferior, starting at ADDR and printing up to LEN
1320    characters, of WIDTH bytes a piece, to STREAM.  If LEN is -1, printing
1321    stops at the first null byte, otherwise printing proceeds (including null
1322    bytes) until either print_max or LEN characters have been printed,
1323    whichever is smaller.  */
1324
1325 int
1326 val_print_string (struct type *elttype, CORE_ADDR addr, int len,
1327                   struct ui_file *stream,
1328                   const struct value_print_options *options)
1329 {
1330   int force_ellipsis = 0;       /* Force ellipsis to be printed if nonzero.  */
1331   int errcode;                  /* Errno returned from bad reads.  */
1332   int found_nul;                /* Non-zero if we found the nul char */
1333   unsigned int fetchlimit;      /* Maximum number of chars to print.  */
1334   int bytes_read;
1335   gdb_byte *buffer = NULL;      /* Dynamically growable fetch buffer.  */
1336   struct cleanup *old_chain = NULL;     /* Top of the old cleanup chain.  */
1337   int width = TYPE_LENGTH (elttype);
1338
1339   /* First we need to figure out the limit on the number of characters we are
1340      going to attempt to fetch and print.  This is actually pretty simple.  If
1341      LEN >= zero, then the limit is the minimum of LEN and print_max.  If
1342      LEN is -1, then the limit is print_max.  This is true regardless of
1343      whether print_max is zero, UINT_MAX (unlimited), or something in between,
1344      because finding the null byte (or available memory) is what actually
1345      limits the fetch.  */
1346
1347   fetchlimit = (len == -1 ? options->print_max : min (len, options->print_max));
1348
1349   errcode = read_string (addr, len, width, fetchlimit, &buffer, &bytes_read);
1350   old_chain = make_cleanup (xfree, buffer);
1351
1352   addr += bytes_read;
1353
1354   /* We now have either successfully filled the buffer to fetchlimit, or
1355      terminated early due to an error or finding a null char when LEN is -1.  */
1356
1357   /* Determine found_nul by looking at the last character read.  */
1358   found_nul = extract_unsigned_integer (buffer + bytes_read - width, width) == 0;
1359
1360   if (len == -1 && !found_nul)
1361     {
1362       gdb_byte *peekbuf;
1363
1364       /* We didn't find a NUL terminator we were looking for.  Attempt
1365          to peek at the next character.  If not successful, or it is not
1366          a null byte, then force ellipsis to be printed.  */
1367
1368       peekbuf = (gdb_byte *) alloca (width);
1369
1370       if (target_read_memory (addr, peekbuf, width) == 0
1371           && extract_unsigned_integer (peekbuf, width) != 0)
1372         force_ellipsis = 1;
1373     }
1374   else if ((len >= 0 && errcode != 0) || (len > bytes_read / width))
1375     {
1376       /* Getting an error when we have a requested length, or fetching less
1377          than the number of characters actually requested, always make us
1378          print ellipsis.  */
1379       force_ellipsis = 1;
1380     }
1381
1382   /* If we get an error before fetching anything, don't print a string.
1383      But if we fetch something and then get an error, print the string
1384      and then the error message.  */
1385   if (errcode == 0 || bytes_read > 0)
1386     {
1387       if (options->addressprint)
1388         {
1389           fputs_filtered (" ", stream);
1390         }
1391       LA_PRINT_STRING (stream, elttype, buffer, bytes_read / width, force_ellipsis, options);
1392     }
1393
1394   if (errcode != 0)
1395     {
1396       if (errcode == EIO)
1397         {
1398           fprintf_filtered (stream, " <Address ");
1399           fputs_filtered (paddress (addr), stream);
1400           fprintf_filtered (stream, " out of bounds>");
1401         }
1402       else
1403         {
1404           fprintf_filtered (stream, " <Error reading address ");
1405           fputs_filtered (paddress (addr), stream);
1406           fprintf_filtered (stream, ": %s>", safe_strerror (errcode));
1407         }
1408     }
1409
1410   gdb_flush (stream);
1411   do_cleanups (old_chain);
1412
1413   return (bytes_read / width);
1414 }
1415 \f
1416
1417 /* The 'set input-radix' command writes to this auxiliary variable.
1418    If the requested radix is valid, INPUT_RADIX is updated; otherwise,
1419    it is left unchanged.  */
1420
1421 static unsigned input_radix_1 = 10;
1422
1423 /* Validate an input or output radix setting, and make sure the user
1424    knows what they really did here.  Radix setting is confusing, e.g.
1425    setting the input radix to "10" never changes it!  */
1426
1427 static void
1428 set_input_radix (char *args, int from_tty, struct cmd_list_element *c)
1429 {
1430   set_input_radix_1 (from_tty, input_radix_1);
1431 }
1432
1433 static void
1434 set_input_radix_1 (int from_tty, unsigned radix)
1435 {
1436   /* We don't currently disallow any input radix except 0 or 1, which don't
1437      make any mathematical sense.  In theory, we can deal with any input
1438      radix greater than 1, even if we don't have unique digits for every
1439      value from 0 to radix-1, but in practice we lose on large radix values.
1440      We should either fix the lossage or restrict the radix range more.
1441      (FIXME). */
1442
1443   if (radix < 2)
1444     {
1445       input_radix_1 = input_radix;
1446       error (_("Nonsense input radix ``decimal %u''; input radix unchanged."),
1447              radix);
1448     }
1449   input_radix_1 = input_radix = radix;
1450   if (from_tty)
1451     {
1452       printf_filtered (_("Input radix now set to decimal %u, hex %x, octal %o.\n"),
1453                        radix, radix, radix);
1454     }
1455 }
1456
1457 /* The 'set output-radix' command writes to this auxiliary variable.
1458    If the requested radix is valid, OUTPUT_RADIX is updated,
1459    otherwise, it is left unchanged.  */
1460
1461 static unsigned output_radix_1 = 10;
1462
1463 static void
1464 set_output_radix (char *args, int from_tty, struct cmd_list_element *c)
1465 {
1466   set_output_radix_1 (from_tty, output_radix_1);
1467 }
1468
1469 static void
1470 set_output_radix_1 (int from_tty, unsigned radix)
1471 {
1472   /* Validate the radix and disallow ones that we aren't prepared to
1473      handle correctly, leaving the radix unchanged. */
1474   switch (radix)
1475     {
1476     case 16:
1477       user_print_options.output_format = 'x';   /* hex */
1478       break;
1479     case 10:
1480       user_print_options.output_format = 0;     /* decimal */
1481       break;
1482     case 8:
1483       user_print_options.output_format = 'o';   /* octal */
1484       break;
1485     default:
1486       output_radix_1 = output_radix;
1487       error (_("Unsupported output radix ``decimal %u''; output radix unchanged."),
1488              radix);
1489     }
1490   output_radix_1 = output_radix = radix;
1491   if (from_tty)
1492     {
1493       printf_filtered (_("Output radix now set to decimal %u, hex %x, octal %o.\n"),
1494                        radix, radix, radix);
1495     }
1496 }
1497
1498 /* Set both the input and output radix at once.  Try to set the output radix
1499    first, since it has the most restrictive range.  An radix that is valid as
1500    an output radix is also valid as an input radix.
1501
1502    It may be useful to have an unusual input radix.  If the user wishes to
1503    set an input radix that is not valid as an output radix, he needs to use
1504    the 'set input-radix' command. */
1505
1506 static void
1507 set_radix (char *arg, int from_tty)
1508 {
1509   unsigned radix;
1510
1511   radix = (arg == NULL) ? 10 : parse_and_eval_long (arg);
1512   set_output_radix_1 (0, radix);
1513   set_input_radix_1 (0, radix);
1514   if (from_tty)
1515     {
1516       printf_filtered (_("Input and output radices now set to decimal %u, hex %x, octal %o.\n"),
1517                        radix, radix, radix);
1518     }
1519 }
1520
1521 /* Show both the input and output radices. */
1522
1523 static void
1524 show_radix (char *arg, int from_tty)
1525 {
1526   if (from_tty)
1527     {
1528       if (input_radix == output_radix)
1529         {
1530           printf_filtered (_("Input and output radices set to decimal %u, hex %x, octal %o.\n"),
1531                            input_radix, input_radix, input_radix);
1532         }
1533       else
1534         {
1535           printf_filtered (_("Input radix set to decimal %u, hex %x, octal %o.\n"),
1536                            input_radix, input_radix, input_radix);
1537           printf_filtered (_("Output radix set to decimal %u, hex %x, octal %o.\n"),
1538                            output_radix, output_radix, output_radix);
1539         }
1540     }
1541 }
1542 \f
1543
1544 static void
1545 set_print (char *arg, int from_tty)
1546 {
1547   printf_unfiltered (
1548      "\"set print\" must be followed by the name of a print subcommand.\n");
1549   help_list (setprintlist, "set print ", -1, gdb_stdout);
1550 }
1551
1552 static void
1553 show_print (char *args, int from_tty)
1554 {
1555   cmd_show_list (showprintlist, from_tty, "");
1556 }
1557 \f
1558 void
1559 _initialize_valprint (void)
1560 {
1561   struct cmd_list_element *c;
1562
1563   add_prefix_cmd ("print", no_class, set_print,
1564                   _("Generic command for setting how things print."),
1565                   &setprintlist, "set print ", 0, &setlist);
1566   add_alias_cmd ("p", "print", no_class, 1, &setlist);
1567   /* prefer set print to set prompt */
1568   add_alias_cmd ("pr", "print", no_class, 1, &setlist);
1569
1570   add_prefix_cmd ("print", no_class, show_print,
1571                   _("Generic command for showing print settings."),
1572                   &showprintlist, "show print ", 0, &showlist);
1573   add_alias_cmd ("p", "print", no_class, 1, &showlist);
1574   add_alias_cmd ("pr", "print", no_class, 1, &showlist);
1575
1576   add_setshow_uinteger_cmd ("elements", no_class,
1577                             &user_print_options.print_max, _("\
1578 Set limit on string chars or array elements to print."), _("\
1579 Show limit on string chars or array elements to print."), _("\
1580 \"set print elements 0\" causes there to be no limit."),
1581                             NULL,
1582                             show_print_max,
1583                             &setprintlist, &showprintlist);
1584
1585   add_setshow_boolean_cmd ("null-stop", no_class,
1586                            &user_print_options.stop_print_at_null, _("\
1587 Set printing of char arrays to stop at first null char."), _("\
1588 Show printing of char arrays to stop at first null char."), NULL,
1589                            NULL,
1590                            show_stop_print_at_null,
1591                            &setprintlist, &showprintlist);
1592
1593   add_setshow_uinteger_cmd ("repeats", no_class,
1594                             &user_print_options.repeat_count_threshold, _("\
1595 Set threshold for repeated print elements."), _("\
1596 Show threshold for repeated print elements."), _("\
1597 \"set print repeats 0\" causes all elements to be individually printed."),
1598                             NULL,
1599                             show_repeat_count_threshold,
1600                             &setprintlist, &showprintlist);
1601
1602   add_setshow_boolean_cmd ("pretty", class_support,
1603                            &user_print_options.prettyprint_structs, _("\
1604 Set prettyprinting of structures."), _("\
1605 Show prettyprinting of structures."), NULL,
1606                            NULL,
1607                            show_prettyprint_structs,
1608                            &setprintlist, &showprintlist);
1609
1610   add_setshow_boolean_cmd ("union", class_support,
1611                            &user_print_options.unionprint, _("\
1612 Set printing of unions interior to structures."), _("\
1613 Show printing of unions interior to structures."), NULL,
1614                            NULL,
1615                            show_unionprint,
1616                            &setprintlist, &showprintlist);
1617
1618   add_setshow_boolean_cmd ("array", class_support,
1619                            &user_print_options.prettyprint_arrays, _("\
1620 Set prettyprinting of arrays."), _("\
1621 Show prettyprinting of arrays."), NULL,
1622                            NULL,
1623                            show_prettyprint_arrays,
1624                            &setprintlist, &showprintlist);
1625
1626   add_setshow_boolean_cmd ("address", class_support,
1627                            &user_print_options.addressprint, _("\
1628 Set printing of addresses."), _("\
1629 Show printing of addresses."), NULL,
1630                            NULL,
1631                            show_addressprint,
1632                            &setprintlist, &showprintlist);
1633
1634   add_setshow_zuinteger_cmd ("input-radix", class_support, &input_radix_1,
1635                              _("\
1636 Set default input radix for entering numbers."), _("\
1637 Show default input radix for entering numbers."), NULL,
1638                              set_input_radix,
1639                              show_input_radix,
1640                              &setlist, &showlist);
1641
1642   add_setshow_zuinteger_cmd ("output-radix", class_support, &output_radix_1,
1643                              _("\
1644 Set default output radix for printing of values."), _("\
1645 Show default output radix for printing of values."), NULL,
1646                              set_output_radix,
1647                              show_output_radix,
1648                              &setlist, &showlist);
1649
1650   /* The "set radix" and "show radix" commands are special in that
1651      they are like normal set and show commands but allow two normally
1652      independent variables to be either set or shown with a single
1653      command.  So the usual deprecated_add_set_cmd() and [deleted]
1654      add_show_from_set() commands aren't really appropriate. */
1655   /* FIXME: i18n: With the new add_setshow_integer command, that is no
1656      longer true - show can display anything.  */
1657   add_cmd ("radix", class_support, set_radix, _("\
1658 Set default input and output number radices.\n\
1659 Use 'set input-radix' or 'set output-radix' to independently set each.\n\
1660 Without an argument, sets both radices back to the default value of 10."),
1661            &setlist);
1662   add_cmd ("radix", class_support, show_radix, _("\
1663 Show the default input and output number radices.\n\
1664 Use 'show input-radix' or 'show output-radix' to independently show each."),
1665            &showlist);
1666
1667   add_setshow_boolean_cmd ("array-indexes", class_support,
1668                            &user_print_options.print_array_indexes, _("\
1669 Set printing of array indexes."), _("\
1670 Show printing of array indexes"), NULL, NULL, show_print_array_indexes,
1671                            &setprintlist, &showprintlist);
1672 }