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