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