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