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