* printcmd.c (print_formatted): Use val_print_scalar_formatted
[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 /* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
519    according to OPTIONS and SIZE on STREAM.  Format i is not supported
520    at this level.
521
522    This is how the elements of an array or structure are printed
523    with a format.  */
524 }
525
526 void
527 val_print_scalar_formatted (struct type *type,
528                             const gdb_byte *valaddr, int embedded_offset,
529                             const struct value *val,
530                             const struct value_print_options *options,
531                             int size,
532                             struct ui_file *stream)
533 {
534   gdb_assert (val != NULL);
535   gdb_assert (valaddr == value_contents_for_printing_const (val));
536
537   /* If we get here with a string format, try again without it.  Go
538      all the way back to the language printers, which may call us
539      again.  */
540   if (options->format == 's')
541     {
542       struct value_print_options opts = *options;
543       opts.format = 0;
544       opts.deref_ref = 0;
545       val_print (type, valaddr, embedded_offset, 0, stream, 0, val, &opts,
546                  current_language);
547       return;
548     }
549
550   /* A scalar object that does not have all bits available can't be
551      printed, because all bits contribute to its representation.  */
552   if (!value_bits_valid (val, TARGET_CHAR_BIT * embedded_offset,
553                               TARGET_CHAR_BIT * TYPE_LENGTH (type)))
554     val_print_optimized_out (stream);
555   else
556     print_scalar_formatted (valaddr + embedded_offset, type,
557                             options, size, stream);
558 }
559
560 /* Print a number according to FORMAT which is one of d,u,x,o,b,h,w,g.
561    The raison d'etre of this function is to consolidate printing of 
562    LONG_LONG's into this one function.  The format chars b,h,w,g are 
563    from print_scalar_formatted().  Numbers are printed using C
564    format.
565
566    USE_C_FORMAT means to use C format in all cases.  Without it, 
567    'o' and 'x' format do not include the standard C radix prefix
568    (leading 0 or 0x). 
569    
570    Hilfinger/2004-09-09: USE_C_FORMAT was originally called USE_LOCAL
571    and was intended to request formating according to the current
572    language and would be used for most integers that GDB prints.  The
573    exceptional cases were things like protocols where the format of
574    the integer is a protocol thing, not a user-visible thing).  The
575    parameter remains to preserve the information of what things might
576    be printed with language-specific format, should we ever resurrect
577    that capability.  */
578
579 void
580 print_longest (struct ui_file *stream, int format, int use_c_format,
581                LONGEST val_long)
582 {
583   const char *val;
584
585   switch (format)
586     {
587     case 'd':
588       val = int_string (val_long, 10, 1, 0, 1); break;
589     case 'u':
590       val = int_string (val_long, 10, 0, 0, 1); break;
591     case 'x':
592       val = int_string (val_long, 16, 0, 0, use_c_format); break;
593     case 'b':
594       val = int_string (val_long, 16, 0, 2, 1); break;
595     case 'h':
596       val = int_string (val_long, 16, 0, 4, 1); break;
597     case 'w':
598       val = int_string (val_long, 16, 0, 8, 1); break;
599     case 'g':
600       val = int_string (val_long, 16, 0, 16, 1); break;
601       break;
602     case 'o':
603       val = int_string (val_long, 8, 0, 0, use_c_format); break;
604     default:
605       internal_error (__FILE__, __LINE__,
606                       _("failed internal consistency check"));
607     } 
608   fputs_filtered (val, stream);
609 }
610
611 /* This used to be a macro, but I don't think it is called often enough
612    to merit such treatment.  */
613 /* Convert a LONGEST to an int.  This is used in contexts (e.g. number of
614    arguments to a function, number in a value history, register number, etc.)
615    where the value must not be larger than can fit in an int.  */
616
617 int
618 longest_to_int (LONGEST arg)
619 {
620   /* Let the compiler do the work.  */
621   int rtnval = (int) arg;
622
623   /* Check for overflows or underflows.  */
624   if (sizeof (LONGEST) > sizeof (int))
625     {
626       if (rtnval != arg)
627         {
628           error (_("Value out of range."));
629         }
630     }
631   return (rtnval);
632 }
633
634 /* Print a floating point value of type TYPE (not always a
635    TYPE_CODE_FLT), pointed to in GDB by VALADDR, on STREAM.  */
636
637 void
638 print_floating (const gdb_byte *valaddr, struct type *type,
639                 struct ui_file *stream)
640 {
641   DOUBLEST doub;
642   int inv;
643   const struct floatformat *fmt = NULL;
644   unsigned len = TYPE_LENGTH (type);
645   enum float_kind kind;
646
647   /* If it is a floating-point, check for obvious problems.  */
648   if (TYPE_CODE (type) == TYPE_CODE_FLT)
649     fmt = floatformat_from_type (type);
650   if (fmt != NULL)
651     {
652       kind = floatformat_classify (fmt, valaddr);
653       if (kind == float_nan)
654         {
655           if (floatformat_is_negative (fmt, valaddr))
656             fprintf_filtered (stream, "-");
657           fprintf_filtered (stream, "nan(");
658           fputs_filtered ("0x", stream);
659           fputs_filtered (floatformat_mantissa (fmt, valaddr), stream);
660           fprintf_filtered (stream, ")");
661           return;
662         }
663       else if (kind == float_infinite)
664         {
665           if (floatformat_is_negative (fmt, valaddr))
666             fputs_filtered ("-", stream);
667           fputs_filtered ("inf", stream);
668           return;
669         }
670     }
671
672   /* NOTE: cagney/2002-01-15: The TYPE passed into print_floating()
673      isn't necessarily a TYPE_CODE_FLT.  Consequently, unpack_double
674      needs to be used as that takes care of any necessary type
675      conversions.  Such conversions are of course direct to DOUBLEST
676      and disregard any possible target floating point limitations.
677      For instance, a u64 would be converted and displayed exactly on a
678      host with 80 bit DOUBLEST but with loss of information on a host
679      with 64 bit DOUBLEST.  */
680
681   doub = unpack_double (type, valaddr, &inv);
682   if (inv)
683     {
684       fprintf_filtered (stream, "<invalid float value>");
685       return;
686     }
687
688   /* FIXME: kettenis/2001-01-20: The following code makes too much
689      assumptions about the host and target floating point format.  */
690
691   /* NOTE: cagney/2002-02-03: Since the TYPE of what was passed in may
692      not necessarily be a TYPE_CODE_FLT, the below ignores that and
693      instead uses the type's length to determine the precision of the
694      floating-point value being printed.  */
695
696   if (len < sizeof (double))
697       fprintf_filtered (stream, "%.9g", (double) doub);
698   else if (len == sizeof (double))
699       fprintf_filtered (stream, "%.17g", (double) doub);
700   else
701 #ifdef PRINTF_HAS_LONG_DOUBLE
702     fprintf_filtered (stream, "%.35Lg", doub);
703 #else
704     /* This at least wins with values that are representable as
705        doubles.  */
706     fprintf_filtered (stream, "%.17g", (double) doub);
707 #endif
708 }
709
710 void
711 print_decimal_floating (const gdb_byte *valaddr, struct type *type,
712                         struct ui_file *stream)
713 {
714   enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
715   char decstr[MAX_DECIMAL_STRING];
716   unsigned len = TYPE_LENGTH (type);
717
718   decimal_to_string (valaddr, len, byte_order, decstr);
719   fputs_filtered (decstr, stream);
720   return;
721 }
722
723 void
724 print_binary_chars (struct ui_file *stream, const gdb_byte *valaddr,
725                     unsigned len, enum bfd_endian byte_order)
726 {
727
728 #define BITS_IN_BYTES 8
729
730   const gdb_byte *p;
731   unsigned int i;
732   int b;
733
734   /* Declared "int" so it will be signed.
735      This ensures that right shift will shift in zeros.  */
736
737   const int mask = 0x080;
738
739   /* FIXME: We should be not printing leading zeroes in most cases.  */
740
741   if (byte_order == BFD_ENDIAN_BIG)
742     {
743       for (p = valaddr;
744            p < valaddr + len;
745            p++)
746         {
747           /* Every byte has 8 binary characters; peel off
748              and print from the MSB end.  */
749
750           for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
751             {
752               if (*p & (mask >> i))
753                 b = 1;
754               else
755                 b = 0;
756
757               fprintf_filtered (stream, "%1d", b);
758             }
759         }
760     }
761   else
762     {
763       for (p = valaddr + len - 1;
764            p >= valaddr;
765            p--)
766         {
767           for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
768             {
769               if (*p & (mask >> i))
770                 b = 1;
771               else
772                 b = 0;
773
774               fprintf_filtered (stream, "%1d", b);
775             }
776         }
777     }
778 }
779
780 /* VALADDR points to an integer of LEN bytes.
781    Print it in octal on stream or format it in buf.  */
782
783 void
784 print_octal_chars (struct ui_file *stream, const gdb_byte *valaddr,
785                    unsigned len, enum bfd_endian byte_order)
786 {
787   const gdb_byte *p;
788   unsigned char octa1, octa2, octa3, carry;
789   int cycle;
790
791   /* FIXME: We should be not printing leading zeroes in most cases.  */
792
793
794   /* Octal is 3 bits, which doesn't fit.  Yuk.  So we have to track
795    * the extra bits, which cycle every three bytes:
796    *
797    * Byte side:       0            1             2          3
798    *                         |             |            |            |
799    * bit number   123 456 78 | 9 012 345 6 | 78 901 234 | 567 890 12 |
800    *
801    * Octal side:   0   1   carry  3   4  carry ...
802    *
803    * Cycle number:    0             1            2
804    *
805    * But of course we are printing from the high side, so we have to
806    * figure out where in the cycle we are so that we end up with no
807    * left over bits at the end.
808    */
809 #define BITS_IN_OCTAL 3
810 #define HIGH_ZERO     0340
811 #define LOW_ZERO      0016
812 #define CARRY_ZERO    0003
813 #define HIGH_ONE      0200
814 #define MID_ONE       0160
815 #define LOW_ONE       0016
816 #define CARRY_ONE     0001
817 #define HIGH_TWO      0300
818 #define MID_TWO       0070
819 #define LOW_TWO       0007
820
821   /* For 32 we start in cycle 2, with two bits and one bit carry;
822      for 64 in cycle in cycle 1, with one bit and a two bit carry.  */
823
824   cycle = (len * BITS_IN_BYTES) % BITS_IN_OCTAL;
825   carry = 0;
826
827   fputs_filtered ("0", stream);
828   if (byte_order == BFD_ENDIAN_BIG)
829     {
830       for (p = valaddr;
831            p < valaddr + len;
832            p++)
833         {
834           switch (cycle)
835             {
836             case 0:
837               /* No carry in, carry out two bits.  */
838
839               octa1 = (HIGH_ZERO & *p) >> 5;
840               octa2 = (LOW_ZERO & *p) >> 2;
841               carry = (CARRY_ZERO & *p);
842               fprintf_filtered (stream, "%o", octa1);
843               fprintf_filtered (stream, "%o", octa2);
844               break;
845
846             case 1:
847               /* Carry in two bits, carry out one bit.  */
848
849               octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
850               octa2 = (MID_ONE & *p) >> 4;
851               octa3 = (LOW_ONE & *p) >> 1;
852               carry = (CARRY_ONE & *p);
853               fprintf_filtered (stream, "%o", octa1);
854               fprintf_filtered (stream, "%o", octa2);
855               fprintf_filtered (stream, "%o", octa3);
856               break;
857
858             case 2:
859               /* Carry in one bit, no carry out.  */
860
861               octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
862               octa2 = (MID_TWO & *p) >> 3;
863               octa3 = (LOW_TWO & *p);
864               carry = 0;
865               fprintf_filtered (stream, "%o", octa1);
866               fprintf_filtered (stream, "%o", octa2);
867               fprintf_filtered (stream, "%o", octa3);
868               break;
869
870             default:
871               error (_("Internal error in octal conversion;"));
872             }
873
874           cycle++;
875           cycle = cycle % BITS_IN_OCTAL;
876         }
877     }
878   else
879     {
880       for (p = valaddr + len - 1;
881            p >= valaddr;
882            p--)
883         {
884           switch (cycle)
885             {
886             case 0:
887               /* Carry out, no carry in */
888
889               octa1 = (HIGH_ZERO & *p) >> 5;
890               octa2 = (LOW_ZERO & *p) >> 2;
891               carry = (CARRY_ZERO & *p);
892               fprintf_filtered (stream, "%o", octa1);
893               fprintf_filtered (stream, "%o", octa2);
894               break;
895
896             case 1:
897               /* Carry in, carry out */
898
899               octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
900               octa2 = (MID_ONE & *p) >> 4;
901               octa3 = (LOW_ONE & *p) >> 1;
902               carry = (CARRY_ONE & *p);
903               fprintf_filtered (stream, "%o", octa1);
904               fprintf_filtered (stream, "%o", octa2);
905               fprintf_filtered (stream, "%o", octa3);
906               break;
907
908             case 2:
909               /* Carry in, no carry out */
910
911               octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
912               octa2 = (MID_TWO & *p) >> 3;
913               octa3 = (LOW_TWO & *p);
914               carry = 0;
915               fprintf_filtered (stream, "%o", octa1);
916               fprintf_filtered (stream, "%o", octa2);
917               fprintf_filtered (stream, "%o", octa3);
918               break;
919
920             default:
921               error (_("Internal error in octal conversion;"));
922             }
923
924           cycle++;
925           cycle = cycle % BITS_IN_OCTAL;
926         }
927     }
928
929 }
930
931 /* VALADDR points to an integer of LEN bytes.
932    Print it in decimal on stream or format it in buf.  */
933
934 void
935 print_decimal_chars (struct ui_file *stream, const gdb_byte *valaddr,
936                      unsigned len, enum bfd_endian byte_order)
937 {
938 #define TEN             10
939 #define CARRY_OUT(  x ) ((x) / TEN)     /* extend char to int */
940 #define CARRY_LEFT( x ) ((x) % TEN)
941 #define SHIFT( x )      ((x) << 4)
942 #define LOW_NIBBLE(  x ) ( (x) & 0x00F)
943 #define HIGH_NIBBLE( x ) (((x) & 0x0F0) >> 4)
944
945   const gdb_byte *p;
946   unsigned char *digits;
947   int carry;
948   int decimal_len;
949   int i, j, decimal_digits;
950   int dummy;
951   int flip;
952
953   /* Base-ten number is less than twice as many digits
954      as the base 16 number, which is 2 digits per byte.  */
955
956   decimal_len = len * 2 * 2;
957   digits = xmalloc (decimal_len);
958
959   for (i = 0; i < decimal_len; i++)
960     {
961       digits[i] = 0;
962     }
963
964   /* Ok, we have an unknown number of bytes of data to be printed in
965    * decimal.
966    *
967    * Given a hex number (in nibbles) as XYZ, we start by taking X and
968    * decemalizing it as "x1 x2" in two decimal nibbles.  Then we multiply
969    * the nibbles by 16, add Y and re-decimalize.  Repeat with Z.
970    *
971    * The trick is that "digits" holds a base-10 number, but sometimes
972    * the individual digits are > 10.
973    *
974    * Outer loop is per nibble (hex digit) of input, from MSD end to
975    * LSD end.
976    */
977   decimal_digits = 0;           /* Number of decimal digits so far */
978   p = (byte_order == BFD_ENDIAN_BIG) ? valaddr : valaddr + len - 1;
979   flip = 0;
980   while ((byte_order == BFD_ENDIAN_BIG) ? (p < valaddr + len) : (p >= valaddr))
981     {
982       /*
983        * Multiply current base-ten number by 16 in place.
984        * Each digit was between 0 and 9, now is between
985        * 0 and 144.
986        */
987       for (j = 0; j < decimal_digits; j++)
988         {
989           digits[j] = SHIFT (digits[j]);
990         }
991
992       /* Take the next nibble off the input and add it to what
993        * we've got in the LSB position.  Bottom 'digit' is now
994        * between 0 and 159.
995        *
996        * "flip" is used to run this loop twice for each byte.
997        */
998       if (flip == 0)
999         {
1000           /* Take top nibble.  */
1001
1002           digits[0] += HIGH_NIBBLE (*p);
1003           flip = 1;
1004         }
1005       else
1006         {
1007           /* Take low nibble and bump our pointer "p".  */
1008
1009           digits[0] += LOW_NIBBLE (*p);
1010           if (byte_order == BFD_ENDIAN_BIG)
1011             p++;
1012           else
1013             p--;
1014           flip = 0;
1015         }
1016
1017       /* Re-decimalize.  We have to do this often enough
1018        * that we don't overflow, but once per nibble is
1019        * overkill.  Easier this way, though.  Note that the
1020        * carry is often larger than 10 (e.g. max initial
1021        * carry out of lowest nibble is 15, could bubble all
1022        * the way up greater than 10).  So we have to do
1023        * the carrying beyond the last current digit.
1024        */
1025       carry = 0;
1026       for (j = 0; j < decimal_len - 1; j++)
1027         {
1028           digits[j] += carry;
1029
1030           /* "/" won't handle an unsigned char with
1031            * a value that if signed would be negative.
1032            * So extend to longword int via "dummy".
1033            */
1034           dummy = digits[j];
1035           carry = CARRY_OUT (dummy);
1036           digits[j] = CARRY_LEFT (dummy);
1037
1038           if (j >= decimal_digits && carry == 0)
1039             {
1040               /*
1041                * All higher digits are 0 and we
1042                * no longer have a carry.
1043                *
1044                * Note: "j" is 0-based, "decimal_digits" is
1045                *       1-based.
1046                */
1047               decimal_digits = j + 1;
1048               break;
1049             }
1050         }
1051     }
1052
1053   /* Ok, now "digits" is the decimal representation, with
1054      the "decimal_digits" actual digits.  Print!  */
1055
1056   for (i = decimal_digits - 1; i >= 0; i--)
1057     {
1058       fprintf_filtered (stream, "%1d", digits[i]);
1059     }
1060   xfree (digits);
1061 }
1062
1063 /* VALADDR points to an integer of LEN bytes.  Print it in hex on stream.  */
1064
1065 void
1066 print_hex_chars (struct ui_file *stream, const gdb_byte *valaddr,
1067                  unsigned len, enum bfd_endian byte_order)
1068 {
1069   const gdb_byte *p;
1070
1071   /* FIXME: We should be not printing leading zeroes in most cases.  */
1072
1073   fputs_filtered ("0x", stream);
1074   if (byte_order == BFD_ENDIAN_BIG)
1075     {
1076       for (p = valaddr;
1077            p < valaddr + len;
1078            p++)
1079         {
1080           fprintf_filtered (stream, "%02x", *p);
1081         }
1082     }
1083   else
1084     {
1085       for (p = valaddr + len - 1;
1086            p >= valaddr;
1087            p--)
1088         {
1089           fprintf_filtered (stream, "%02x", *p);
1090         }
1091     }
1092 }
1093
1094 /* VALADDR points to a char integer of LEN bytes.
1095    Print it out in appropriate language form on stream.
1096    Omit any leading zero chars.  */
1097
1098 void
1099 print_char_chars (struct ui_file *stream, struct type *type,
1100                   const gdb_byte *valaddr,
1101                   unsigned len, enum bfd_endian byte_order)
1102 {
1103   const gdb_byte *p;
1104
1105   if (byte_order == BFD_ENDIAN_BIG)
1106     {
1107       p = valaddr;
1108       while (p < valaddr + len - 1 && *p == 0)
1109         ++p;
1110
1111       while (p < valaddr + len)
1112         {
1113           LA_EMIT_CHAR (*p, type, stream, '\'');
1114           ++p;
1115         }
1116     }
1117   else
1118     {
1119       p = valaddr + len - 1;
1120       while (p > valaddr && *p == 0)
1121         --p;
1122
1123       while (p >= valaddr)
1124         {
1125           LA_EMIT_CHAR (*p, type, stream, '\'');
1126           --p;
1127         }
1128     }
1129 }
1130
1131 /* Print on STREAM using the given OPTIONS the index for the element
1132    at INDEX of an array whose index type is INDEX_TYPE.  */
1133     
1134 void  
1135 maybe_print_array_index (struct type *index_type, LONGEST index,
1136                          struct ui_file *stream,
1137                          const struct value_print_options *options)
1138 {
1139   struct value *index_value;
1140
1141   if (!options->print_array_indexes)
1142     return; 
1143     
1144   index_value = value_from_longest (index_type, index);
1145
1146   LA_PRINT_ARRAY_INDEX (index_value, stream, options);
1147 }
1148
1149 /*  Called by various <lang>_val_print routines to print elements of an
1150    array in the form "<elem1>, <elem2>, <elem3>, ...".
1151
1152    (FIXME?)  Assumes array element separator is a comma, which is correct
1153    for all languages currently handled.
1154    (FIXME?)  Some languages have a notation for repeated array elements,
1155    perhaps we should try to use that notation when appropriate.  */
1156
1157 void
1158 val_print_array_elements (struct type *type,
1159                           const gdb_byte *valaddr, int embedded_offset,
1160                           CORE_ADDR address, struct ui_file *stream,
1161                           int recurse,
1162                           const struct value *val,
1163                           const struct value_print_options *options,
1164                           unsigned int i)
1165 {
1166   unsigned int things_printed = 0;
1167   unsigned len;
1168   struct type *elttype, *index_type;
1169   unsigned eltlen;
1170   /* Position of the array element we are examining to see
1171      whether it is repeated.  */
1172   unsigned int rep1;
1173   /* Number of repetitions we have detected so far.  */
1174   unsigned int reps;
1175   LONGEST low_bound, high_bound;
1176
1177   elttype = TYPE_TARGET_TYPE (type);
1178   eltlen = TYPE_LENGTH (check_typedef (elttype));
1179   index_type = TYPE_INDEX_TYPE (type);
1180
1181   if (get_array_bounds (type, &low_bound, &high_bound))
1182     {
1183       /* The array length should normally be HIGH_BOUND - LOW_BOUND + 1.
1184          But we have to be a little extra careful, because some languages
1185          such as Ada allow LOW_BOUND to be greater than HIGH_BOUND for
1186          empty arrays.  In that situation, the array length is just zero,
1187          not negative!  */
1188       if (low_bound > high_bound)
1189         len = 0;
1190       else
1191         len = high_bound - low_bound + 1;
1192     }
1193   else
1194     {
1195       warning (_("unable to get bounds of array, assuming null array"));
1196       low_bound = 0;
1197       len = 0;
1198     }
1199
1200   annotate_array_section_begin (i, elttype);
1201
1202   for (; i < len && things_printed < options->print_max; i++)
1203     {
1204       if (i != 0)
1205         {
1206           if (options->prettyprint_arrays)
1207             {
1208               fprintf_filtered (stream, ",\n");
1209               print_spaces_filtered (2 + 2 * recurse, stream);
1210             }
1211           else
1212             {
1213               fprintf_filtered (stream, ", ");
1214             }
1215         }
1216       wrap_here (n_spaces (2 + 2 * recurse));
1217       maybe_print_array_index (index_type, i + low_bound,
1218                                stream, options);
1219
1220       rep1 = i + 1;
1221       reps = 1;
1222       while (rep1 < len
1223              && memcmp (valaddr + embedded_offset + i * eltlen,
1224                         valaddr + embedded_offset + rep1 * eltlen,
1225                         eltlen) == 0)
1226         {
1227           ++reps;
1228           ++rep1;
1229         }
1230
1231       if (reps > options->repeat_count_threshold)
1232         {
1233           val_print (elttype, valaddr, embedded_offset + i * eltlen,
1234                      address, stream, recurse + 1, val, options,
1235                      current_language);
1236           annotate_elt_rep (reps);
1237           fprintf_filtered (stream, " <repeats %u times>", reps);
1238           annotate_elt_rep_end ();
1239
1240           i = rep1 - 1;
1241           things_printed += options->repeat_count_threshold;
1242         }
1243       else
1244         {
1245           val_print (elttype, valaddr, embedded_offset + i * eltlen,
1246                      address,
1247                      stream, recurse + 1, val, options, current_language);
1248           annotate_elt ();
1249           things_printed++;
1250         }
1251     }
1252   annotate_array_section_end ();
1253   if (i < len)
1254     {
1255       fprintf_filtered (stream, "...");
1256     }
1257 }
1258
1259 /* Read LEN bytes of target memory at address MEMADDR, placing the
1260    results in GDB's memory at MYADDR.  Returns a count of the bytes
1261    actually read, and optionally an errno value in the location
1262    pointed to by ERRNOPTR if ERRNOPTR is non-null.  */
1263
1264 /* FIXME: cagney/1999-10-14: Only used by val_print_string.  Can this
1265    function be eliminated.  */
1266
1267 static int
1268 partial_memory_read (CORE_ADDR memaddr, gdb_byte *myaddr,
1269                      int len, int *errnoptr)
1270 {
1271   int nread;                    /* Number of bytes actually read.  */
1272   int errcode;                  /* Error from last read.  */
1273
1274   /* First try a complete read.  */
1275   errcode = target_read_memory (memaddr, myaddr, len);
1276   if (errcode == 0)
1277     {
1278       /* Got it all.  */
1279       nread = len;
1280     }
1281   else
1282     {
1283       /* Loop, reading one byte at a time until we get as much as we can.  */
1284       for (errcode = 0, nread = 0; len > 0 && errcode == 0; nread++, len--)
1285         {
1286           errcode = target_read_memory (memaddr++, myaddr++, 1);
1287         }
1288       /* If an error, the last read was unsuccessful, so adjust count.  */
1289       if (errcode != 0)
1290         {
1291           nread--;
1292         }
1293     }
1294   if (errnoptr != NULL)
1295     {
1296       *errnoptr = errcode;
1297     }
1298   return (nread);
1299 }
1300
1301 /* Read a string from the inferior, at ADDR, with LEN characters of WIDTH bytes
1302    each.  Fetch at most FETCHLIMIT characters.  BUFFER will be set to a newly
1303    allocated buffer containing the string, which the caller is responsible to
1304    free, and BYTES_READ will be set to the number of bytes read.  Returns 0 on
1305    success, or errno on failure.
1306
1307    If LEN > 0, reads exactly LEN characters (including eventual NULs in
1308    the middle or end of the string).  If LEN is -1, stops at the first
1309    null character (not necessarily the first null byte) up to a maximum
1310    of FETCHLIMIT characters.  Set FETCHLIMIT to UINT_MAX to read as many
1311    characters as possible from the string.
1312
1313    Unless an exception is thrown, BUFFER will always be allocated, even on
1314    failure.  In this case, some characters might have been read before the
1315    failure happened.  Check BYTES_READ to recognize this situation.
1316
1317    Note: There was a FIXME asking to make this code use target_read_string,
1318    but this function is more general (can read past null characters, up to
1319    given LEN).  Besides, it is used much more often than target_read_string
1320    so it is more tested.  Perhaps callers of target_read_string should use
1321    this function instead?  */
1322
1323 int
1324 read_string (CORE_ADDR addr, int len, int width, unsigned int fetchlimit,
1325              enum bfd_endian byte_order, gdb_byte **buffer, int *bytes_read)
1326 {
1327   int found_nul;                /* Non-zero if we found the nul char.  */
1328   int errcode;                  /* Errno returned from bad reads.  */
1329   unsigned int nfetch;          /* Chars to fetch / chars fetched.  */
1330   unsigned int chunksize;       /* Size of each fetch, in chars.  */
1331   gdb_byte *bufptr;             /* Pointer to next available byte in
1332                                    buffer.  */
1333   gdb_byte *limit;              /* First location past end of fetch buffer.  */
1334   struct cleanup *old_chain = NULL;     /* Top of the old cleanup chain.  */
1335
1336   /* Decide how large of chunks to try to read in one operation.  This
1337      is also pretty simple.  If LEN >= zero, then we want fetchlimit chars,
1338      so we might as well read them all in one operation.  If LEN is -1, we
1339      are looking for a NUL terminator to end the fetching, so we might as
1340      well read in blocks that are large enough to be efficient, but not so
1341      large as to be slow if fetchlimit happens to be large.  So we choose the
1342      minimum of 8 and fetchlimit.  We used to use 200 instead of 8 but
1343      200 is way too big for remote debugging over a serial line.  */
1344
1345   chunksize = (len == -1 ? min (8, fetchlimit) : fetchlimit);
1346
1347   /* Loop until we either have all the characters, or we encounter
1348      some error, such as bumping into the end of the address space.  */
1349
1350   found_nul = 0;
1351   *buffer = NULL;
1352
1353   old_chain = make_cleanup (free_current_contents, buffer);
1354
1355   if (len > 0)
1356     {
1357       *buffer = (gdb_byte *) xmalloc (len * width);
1358       bufptr = *buffer;
1359
1360       nfetch = partial_memory_read (addr, bufptr, len * width, &errcode)
1361         / width;
1362       addr += nfetch * width;
1363       bufptr += nfetch * width;
1364     }
1365   else if (len == -1)
1366     {
1367       unsigned long bufsize = 0;
1368
1369       do
1370         {
1371           QUIT;
1372           nfetch = min (chunksize, fetchlimit - bufsize);
1373
1374           if (*buffer == NULL)
1375             *buffer = (gdb_byte *) xmalloc (nfetch * width);
1376           else
1377             *buffer = (gdb_byte *) xrealloc (*buffer,
1378                                              (nfetch + bufsize) * width);
1379
1380           bufptr = *buffer + bufsize * width;
1381           bufsize += nfetch;
1382
1383           /* Read as much as we can.  */
1384           nfetch = partial_memory_read (addr, bufptr, nfetch * width, &errcode)
1385                     / width;
1386
1387           /* Scan this chunk for the null character that terminates the string
1388              to print.  If found, we don't need to fetch any more.  Note
1389              that bufptr is explicitly left pointing at the next character
1390              after the null character, or at the next character after the end
1391              of the buffer.  */
1392
1393           limit = bufptr + nfetch * width;
1394           while (bufptr < limit)
1395             {
1396               unsigned long c;
1397
1398               c = extract_unsigned_integer (bufptr, width, byte_order);
1399               addr += width;
1400               bufptr += width;
1401               if (c == 0)
1402                 {
1403                   /* We don't care about any error which happened after
1404                      the NUL terminator.  */
1405                   errcode = 0;
1406                   found_nul = 1;
1407                   break;
1408                 }
1409             }
1410         }
1411       while (errcode == 0       /* no error */
1412              && bufptr - *buffer < fetchlimit * width   /* no overrun */
1413              && !found_nul);    /* haven't found NUL yet */
1414     }
1415   else
1416     {                           /* Length of string is really 0!  */
1417       /* We always allocate *buffer.  */
1418       *buffer = bufptr = xmalloc (1);
1419       errcode = 0;
1420     }
1421
1422   /* bufptr and addr now point immediately beyond the last byte which we
1423      consider part of the string (including a '\0' which ends the string).  */
1424   *bytes_read = bufptr - *buffer;
1425
1426   QUIT;
1427
1428   discard_cleanups (old_chain);
1429
1430   return errcode;
1431 }
1432
1433 /* Print a string from the inferior, starting at ADDR and printing up to LEN
1434    characters, of WIDTH bytes a piece, to STREAM.  If LEN is -1, printing
1435    stops at the first null byte, otherwise printing proceeds (including null
1436    bytes) until either print_max or LEN characters have been printed,
1437    whichever is smaller.  ENCODING is the name of the string's
1438    encoding.  It can be NULL, in which case the target encoding is
1439    assumed.  */
1440
1441 int
1442 val_print_string (struct type *elttype, const char *encoding,
1443                   CORE_ADDR addr, int len,
1444                   struct ui_file *stream,
1445                   const struct value_print_options *options)
1446 {
1447   int force_ellipsis = 0;       /* Force ellipsis to be printed if nonzero.  */
1448   int errcode;                  /* Errno returned from bad reads.  */
1449   int found_nul;                /* Non-zero if we found the nul char.  */
1450   unsigned int fetchlimit;      /* Maximum number of chars to print.  */
1451   int bytes_read;
1452   gdb_byte *buffer = NULL;      /* Dynamically growable fetch buffer.  */
1453   struct cleanup *old_chain = NULL;     /* Top of the old cleanup chain.  */
1454   struct gdbarch *gdbarch = get_type_arch (elttype);
1455   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1456   int width = TYPE_LENGTH (elttype);
1457
1458   /* First we need to figure out the limit on the number of characters we are
1459      going to attempt to fetch and print.  This is actually pretty simple.  If
1460      LEN >= zero, then the limit is the minimum of LEN and print_max.  If
1461      LEN is -1, then the limit is print_max.  This is true regardless of
1462      whether print_max is zero, UINT_MAX (unlimited), or something in between,
1463      because finding the null byte (or available memory) is what actually
1464      limits the fetch.  */
1465
1466   fetchlimit = (len == -1 ? options->print_max : min (len,
1467                                                       options->print_max));
1468
1469   errcode = read_string (addr, len, width, fetchlimit, byte_order,
1470                          &buffer, &bytes_read);
1471   old_chain = make_cleanup (xfree, buffer);
1472
1473   addr += bytes_read;
1474
1475   /* We now have either successfully filled the buffer to fetchlimit,
1476      or terminated early due to an error or finding a null char when
1477      LEN is -1.  */
1478
1479   /* Determine found_nul by looking at the last character read.  */
1480   found_nul = extract_unsigned_integer (buffer + bytes_read - width, width,
1481                                         byte_order) == 0;
1482   if (len == -1 && !found_nul)
1483     {
1484       gdb_byte *peekbuf;
1485
1486       /* We didn't find a NUL terminator we were looking for.  Attempt
1487          to peek at the next character.  If not successful, or it is not
1488          a null byte, then force ellipsis to be printed.  */
1489
1490       peekbuf = (gdb_byte *) alloca (width);
1491
1492       if (target_read_memory (addr, peekbuf, width) == 0
1493           && extract_unsigned_integer (peekbuf, width, byte_order) != 0)
1494         force_ellipsis = 1;
1495     }
1496   else if ((len >= 0 && errcode != 0) || (len > bytes_read / width))
1497     {
1498       /* Getting an error when we have a requested length, or fetching less
1499          than the number of characters actually requested, always make us
1500          print ellipsis.  */
1501       force_ellipsis = 1;
1502     }
1503
1504   /* If we get an error before fetching anything, don't print a string.
1505      But if we fetch something and then get an error, print the string
1506      and then the error message.  */
1507   if (errcode == 0 || bytes_read > 0)
1508     {
1509       if (options->addressprint)
1510         {
1511           fputs_filtered (" ", stream);
1512         }
1513       LA_PRINT_STRING (stream, elttype, buffer, bytes_read / width,
1514                        encoding, force_ellipsis, options);
1515     }
1516
1517   if (errcode != 0)
1518     {
1519       if (errcode == EIO)
1520         {
1521           fprintf_filtered (stream, " <Address ");
1522           fputs_filtered (paddress (gdbarch, addr), stream);
1523           fprintf_filtered (stream, " out of bounds>");
1524         }
1525       else
1526         {
1527           fprintf_filtered (stream, " <Error reading address ");
1528           fputs_filtered (paddress (gdbarch, addr), stream);
1529           fprintf_filtered (stream, ": %s>", safe_strerror (errcode));
1530         }
1531     }
1532
1533   gdb_flush (stream);
1534   do_cleanups (old_chain);
1535
1536   return (bytes_read / width);
1537 }
1538 \f
1539
1540 /* The 'set input-radix' command writes to this auxiliary variable.
1541    If the requested radix is valid, INPUT_RADIX is updated; otherwise,
1542    it is left unchanged.  */
1543
1544 static unsigned input_radix_1 = 10;
1545
1546 /* Validate an input or output radix setting, and make sure the user
1547    knows what they really did here.  Radix setting is confusing, e.g.
1548    setting the input radix to "10" never changes it!  */
1549
1550 static void
1551 set_input_radix (char *args, int from_tty, struct cmd_list_element *c)
1552 {
1553   set_input_radix_1 (from_tty, input_radix_1);
1554 }
1555
1556 static void
1557 set_input_radix_1 (int from_tty, unsigned radix)
1558 {
1559   /* We don't currently disallow any input radix except 0 or 1, which don't
1560      make any mathematical sense.  In theory, we can deal with any input
1561      radix greater than 1, even if we don't have unique digits for every
1562      value from 0 to radix-1, but in practice we lose on large radix values.
1563      We should either fix the lossage or restrict the radix range more.
1564      (FIXME).  */
1565
1566   if (radix < 2)
1567     {
1568       input_radix_1 = input_radix;
1569       error (_("Nonsense input radix ``decimal %u''; input radix unchanged."),
1570              radix);
1571     }
1572   input_radix_1 = input_radix = radix;
1573   if (from_tty)
1574     {
1575       printf_filtered (_("Input radix now set to "
1576                          "decimal %u, hex %x, octal %o.\n"),
1577                        radix, radix, radix);
1578     }
1579 }
1580
1581 /* The 'set output-radix' command writes to this auxiliary variable.
1582    If the requested radix is valid, OUTPUT_RADIX is updated,
1583    otherwise, it is left unchanged.  */
1584
1585 static unsigned output_radix_1 = 10;
1586
1587 static void
1588 set_output_radix (char *args, int from_tty, struct cmd_list_element *c)
1589 {
1590   set_output_radix_1 (from_tty, output_radix_1);
1591 }
1592
1593 static void
1594 set_output_radix_1 (int from_tty, unsigned radix)
1595 {
1596   /* Validate the radix and disallow ones that we aren't prepared to
1597      handle correctly, leaving the radix unchanged.  */
1598   switch (radix)
1599     {
1600     case 16:
1601       user_print_options.output_format = 'x';   /* hex */
1602       break;
1603     case 10:
1604       user_print_options.output_format = 0;     /* decimal */
1605       break;
1606     case 8:
1607       user_print_options.output_format = 'o';   /* octal */
1608       break;
1609     default:
1610       output_radix_1 = output_radix;
1611       error (_("Unsupported output radix ``decimal %u''; "
1612                "output radix unchanged."),
1613              radix);
1614     }
1615   output_radix_1 = output_radix = radix;
1616   if (from_tty)
1617     {
1618       printf_filtered (_("Output radix now set to "
1619                          "decimal %u, hex %x, octal %o.\n"),
1620                        radix, radix, radix);
1621     }
1622 }
1623
1624 /* Set both the input and output radix at once.  Try to set the output radix
1625    first, since it has the most restrictive range.  An radix that is valid as
1626    an output radix is also valid as an input radix.
1627
1628    It may be useful to have an unusual input radix.  If the user wishes to
1629    set an input radix that is not valid as an output radix, he needs to use
1630    the 'set input-radix' command.  */
1631
1632 static void
1633 set_radix (char *arg, int from_tty)
1634 {
1635   unsigned radix;
1636
1637   radix = (arg == NULL) ? 10 : parse_and_eval_long (arg);
1638   set_output_radix_1 (0, radix);
1639   set_input_radix_1 (0, radix);
1640   if (from_tty)
1641     {
1642       printf_filtered (_("Input and output radices now set to "
1643                          "decimal %u, hex %x, octal %o.\n"),
1644                        radix, radix, radix);
1645     }
1646 }
1647
1648 /* Show both the input and output radices.  */
1649
1650 static void
1651 show_radix (char *arg, int from_tty)
1652 {
1653   if (from_tty)
1654     {
1655       if (input_radix == output_radix)
1656         {
1657           printf_filtered (_("Input and output radices set to "
1658                              "decimal %u, hex %x, octal %o.\n"),
1659                            input_radix, input_radix, input_radix);
1660         }
1661       else
1662         {
1663           printf_filtered (_("Input radix set to decimal "
1664                              "%u, hex %x, octal %o.\n"),
1665                            input_radix, input_radix, input_radix);
1666           printf_filtered (_("Output radix set to decimal "
1667                              "%u, hex %x, octal %o.\n"),
1668                            output_radix, output_radix, output_radix);
1669         }
1670     }
1671 }
1672 \f
1673
1674 static void
1675 set_print (char *arg, int from_tty)
1676 {
1677   printf_unfiltered (
1678      "\"set print\" must be followed by the name of a print subcommand.\n");
1679   help_list (setprintlist, "set print ", -1, gdb_stdout);
1680 }
1681
1682 static void
1683 show_print (char *args, int from_tty)
1684 {
1685   cmd_show_list (showprintlist, from_tty, "");
1686 }
1687 \f
1688 void
1689 _initialize_valprint (void)
1690 {
1691   add_prefix_cmd ("print", no_class, set_print,
1692                   _("Generic command for setting how things print."),
1693                   &setprintlist, "set print ", 0, &setlist);
1694   add_alias_cmd ("p", "print", no_class, 1, &setlist);
1695   /* Prefer set print to set prompt.  */
1696   add_alias_cmd ("pr", "print", no_class, 1, &setlist);
1697
1698   add_prefix_cmd ("print", no_class, show_print,
1699                   _("Generic command for showing print settings."),
1700                   &showprintlist, "show print ", 0, &showlist);
1701   add_alias_cmd ("p", "print", no_class, 1, &showlist);
1702   add_alias_cmd ("pr", "print", no_class, 1, &showlist);
1703
1704   add_setshow_uinteger_cmd ("elements", no_class,
1705                             &user_print_options.print_max, _("\
1706 Set limit on string chars or array elements to print."), _("\
1707 Show limit on string chars or array elements to print."), _("\
1708 \"set print elements 0\" causes there to be no limit."),
1709                             NULL,
1710                             show_print_max,
1711                             &setprintlist, &showprintlist);
1712
1713   add_setshow_boolean_cmd ("null-stop", no_class,
1714                            &user_print_options.stop_print_at_null, _("\
1715 Set printing of char arrays to stop at first null char."), _("\
1716 Show printing of char arrays to stop at first null char."), NULL,
1717                            NULL,
1718                            show_stop_print_at_null,
1719                            &setprintlist, &showprintlist);
1720
1721   add_setshow_uinteger_cmd ("repeats", no_class,
1722                             &user_print_options.repeat_count_threshold, _("\
1723 Set threshold for repeated print elements."), _("\
1724 Show threshold for repeated print elements."), _("\
1725 \"set print repeats 0\" causes all elements to be individually printed."),
1726                             NULL,
1727                             show_repeat_count_threshold,
1728                             &setprintlist, &showprintlist);
1729
1730   add_setshow_boolean_cmd ("pretty", class_support,
1731                            &user_print_options.prettyprint_structs, _("\
1732 Set prettyprinting of structures."), _("\
1733 Show prettyprinting of structures."), NULL,
1734                            NULL,
1735                            show_prettyprint_structs,
1736                            &setprintlist, &showprintlist);
1737
1738   add_setshow_boolean_cmd ("union", class_support,
1739                            &user_print_options.unionprint, _("\
1740 Set printing of unions interior to structures."), _("\
1741 Show printing of unions interior to structures."), NULL,
1742                            NULL,
1743                            show_unionprint,
1744                            &setprintlist, &showprintlist);
1745
1746   add_setshow_boolean_cmd ("array", class_support,
1747                            &user_print_options.prettyprint_arrays, _("\
1748 Set prettyprinting of arrays."), _("\
1749 Show prettyprinting of arrays."), NULL,
1750                            NULL,
1751                            show_prettyprint_arrays,
1752                            &setprintlist, &showprintlist);
1753
1754   add_setshow_boolean_cmd ("address", class_support,
1755                            &user_print_options.addressprint, _("\
1756 Set printing of addresses."), _("\
1757 Show printing of addresses."), NULL,
1758                            NULL,
1759                            show_addressprint,
1760                            &setprintlist, &showprintlist);
1761
1762   add_setshow_zuinteger_cmd ("input-radix", class_support, &input_radix_1,
1763                              _("\
1764 Set default input radix for entering numbers."), _("\
1765 Show default input radix for entering numbers."), NULL,
1766                              set_input_radix,
1767                              show_input_radix,
1768                              &setlist, &showlist);
1769
1770   add_setshow_zuinteger_cmd ("output-radix", class_support, &output_radix_1,
1771                              _("\
1772 Set default output radix for printing of values."), _("\
1773 Show default output radix for printing of values."), NULL,
1774                              set_output_radix,
1775                              show_output_radix,
1776                              &setlist, &showlist);
1777
1778   /* The "set radix" and "show radix" commands are special in that
1779      they are like normal set and show commands but allow two normally
1780      independent variables to be either set or shown with a single
1781      command.  So the usual deprecated_add_set_cmd() and [deleted]
1782      add_show_from_set() commands aren't really appropriate.  */
1783   /* FIXME: i18n: With the new add_setshow_integer command, that is no
1784      longer true - show can display anything.  */
1785   add_cmd ("radix", class_support, set_radix, _("\
1786 Set default input and output number radices.\n\
1787 Use 'set input-radix' or 'set output-radix' to independently set each.\n\
1788 Without an argument, sets both radices back to the default value of 10."),
1789            &setlist);
1790   add_cmd ("radix", class_support, show_radix, _("\
1791 Show the default input and output number radices.\n\
1792 Use 'show input-radix' or 'show output-radix' to independently show each."),
1793            &showlist);
1794
1795   add_setshow_boolean_cmd ("array-indexes", class_support,
1796                            &user_print_options.print_array_indexes, _("\
1797 Set printing of array indexes."), _("\
1798 Show printing of array indexes"), NULL, NULL, show_print_array_indexes,
1799                            &setprintlist, &showprintlist);
1800 }