1 /* Print values for GDB, the GNU debugger.
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.
7 This file is part of GDB.
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.
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.
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/>. */
23 #include "gdb_string.h"
33 #include "floatformat.h"
35 #include "exceptions.h"
37 #include "python/python.h"
39 #include "gdb_obstack.h"
45 /* Prototypes for local functions */
47 static int partial_memory_read (CORE_ADDR memaddr, gdb_byte *myaddr,
48 int len, int *errnoptr);
50 static void show_print (char *, int);
52 static void set_print (char *, int);
54 static void set_radix (char *, int);
56 static void show_radix (char *, int);
58 static void set_input_radix (char *, int, struct cmd_list_element *);
60 static void set_input_radix_1 (int, unsigned);
62 static void set_output_radix (char *, int, struct cmd_list_element *);
64 static void set_output_radix_1 (int, unsigned);
66 void _initialize_valprint (void);
68 #define PRINT_MAX_DEFAULT 200 /* Start print_max off at this value. */
70 struct value_print_options user_print_options =
72 Val_pretty_default, /* pretty */
73 0, /* prettyprint_arrays */
74 0, /* prettyprint_structs */
79 PRINT_MAX_DEFAULT, /* print_max */
80 10, /* repeat_count_threshold */
81 0, /* output_format */
83 0, /* stop_print_at_null */
85 0, /* print_array_indexes */
87 1, /* static_field_print */
88 1, /* pascal_static_field_print */
93 /* Initialize *OPTS to be a copy of the user print options. */
95 get_user_print_options (struct value_print_options *opts)
97 *opts = user_print_options;
100 /* Initialize *OPTS to be a copy of the user print options, but with
101 pretty-printing disabled. */
103 get_raw_print_options (struct value_print_options *opts)
105 *opts = user_print_options;
106 opts->pretty = Val_no_prettyprint;
109 /* Initialize *OPTS to be a copy of the user print options, but using
110 FORMAT as the formatting option. */
112 get_formatted_print_options (struct value_print_options *opts,
115 *opts = user_print_options;
116 opts->format = format;
120 show_print_max (struct ui_file *file, int from_tty,
121 struct cmd_list_element *c, const char *value)
123 fprintf_filtered (file,
124 _("Limit on string chars or array "
125 "elements to print is %s.\n"),
130 /* Default input and output radixes, and output format letter. */
132 unsigned input_radix = 10;
134 show_input_radix (struct ui_file *file, int from_tty,
135 struct cmd_list_element *c, const char *value)
137 fprintf_filtered (file,
138 _("Default input radix for entering numbers is %s.\n"),
142 unsigned output_radix = 10;
144 show_output_radix (struct ui_file *file, int from_tty,
145 struct cmd_list_element *c, const char *value)
147 fprintf_filtered (file,
148 _("Default output radix for printing of values is %s.\n"),
152 /* By default we print arrays without printing the index of each element in
153 the array. This behavior can be changed by setting PRINT_ARRAY_INDEXES. */
156 show_print_array_indexes (struct ui_file *file, int from_tty,
157 struct cmd_list_element *c, const char *value)
159 fprintf_filtered (file, _("Printing of array indexes is %s.\n"), value);
162 /* Print repeat counts if there are more than this many repetitions of an
163 element in an array. Referenced by the low level language dependent
167 show_repeat_count_threshold (struct ui_file *file, int from_tty,
168 struct cmd_list_element *c, const char *value)
170 fprintf_filtered (file, _("Threshold for repeated print elements is %s.\n"),
174 /* If nonzero, stops printing of char arrays at first null. */
177 show_stop_print_at_null (struct ui_file *file, int from_tty,
178 struct cmd_list_element *c, const char *value)
180 fprintf_filtered (file,
181 _("Printing of char arrays to stop "
182 "at first null char is %s.\n"),
186 /* Controls pretty printing of structures. */
189 show_prettyprint_structs (struct ui_file *file, int from_tty,
190 struct cmd_list_element *c, const char *value)
192 fprintf_filtered (file, _("Prettyprinting of structures is %s.\n"), value);
195 /* Controls pretty printing of arrays. */
198 show_prettyprint_arrays (struct ui_file *file, int from_tty,
199 struct cmd_list_element *c, const char *value)
201 fprintf_filtered (file, _("Prettyprinting of arrays is %s.\n"), value);
204 /* If nonzero, causes unions inside structures or other unions to be
208 show_unionprint (struct ui_file *file, int from_tty,
209 struct cmd_list_element *c, const char *value)
211 fprintf_filtered (file,
212 _("Printing of unions interior to structures is %s.\n"),
216 /* If nonzero, causes machine addresses to be printed in certain contexts. */
219 show_addressprint (struct ui_file *file, int from_tty,
220 struct cmd_list_element *c, const char *value)
222 fprintf_filtered (file, _("Printing of addresses is %s.\n"), value);
226 /* A helper function for val_print. When printing in "summary" mode,
227 we want to print scalar arguments, but not aggregate arguments.
228 This function distinguishes between the two. */
231 scalar_type_p (struct type *type)
233 CHECK_TYPEDEF (type);
234 while (TYPE_CODE (type) == TYPE_CODE_REF)
236 type = TYPE_TARGET_TYPE (type);
237 CHECK_TYPEDEF (type);
239 switch (TYPE_CODE (type))
241 case TYPE_CODE_ARRAY:
242 case TYPE_CODE_STRUCT:
243 case TYPE_CODE_UNION:
245 case TYPE_CODE_STRING:
246 case TYPE_CODE_BITSTRING:
253 /* Helper function to check the validity of some bits of a value.
255 If TYPE represents some aggregate type (e.g., a structure), return 1.
257 Otherwise, any of the bytes starting at OFFSET and extending for
258 TYPE_LENGTH(TYPE) bytes are invalid, print a message to STREAM and
259 return 0. The checking is done using FUNCS.
261 Otherwise, return 1. */
264 valprint_check_validity (struct ui_file *stream,
267 const struct value *val)
269 CHECK_TYPEDEF (type);
271 if (TYPE_CODE (type) != TYPE_CODE_UNION
272 && TYPE_CODE (type) != TYPE_CODE_STRUCT
273 && TYPE_CODE (type) != TYPE_CODE_ARRAY)
275 if (!value_bits_valid (val, TARGET_CHAR_BIT * embedded_offset,
276 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
278 val_print_optimized_out (stream);
282 if (value_bits_synthetic_pointer (val, TARGET_CHAR_BIT * embedded_offset,
283 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
285 fputs_filtered (_("<synthetic pointer>"), stream);
289 if (!value_bytes_available (val, embedded_offset, TYPE_LENGTH (type)))
291 val_print_unavailable (stream);
300 val_print_optimized_out (struct ui_file *stream)
302 fprintf_filtered (stream, _("<optimized out>"));
306 val_print_unavailable (struct ui_file *stream)
308 fprintf_filtered (stream, _("<unavailable>"));
312 val_print_invalid_address (struct ui_file *stream)
314 fprintf_filtered (stream, _("<invalid address>"));
317 /* Print using the given LANGUAGE the data of type TYPE located at
318 VALADDR + EMBEDDED_OFFSET (within GDB), which came from the
319 inferior at address ADDRESS + EMBEDDED_OFFSET, onto stdio stream
320 STREAM according to OPTIONS. VAL is the whole object that came
321 from ADDRESS. VALADDR must point to the head of VAL's contents
324 The language printers will pass down an adjusted EMBEDDED_OFFSET to
325 further helper subroutines as subfields of TYPE are printed. In
326 such cases, VALADDR is passed down unadjusted, as well as VAL, so
327 that VAL can be queried for metadata about the contents data being
328 printed, using EMBEDDED_OFFSET as an offset into VAL's contents
329 buffer. For example: "has this field been optimized out", or "I'm
330 printing an object while inspecting a traceframe; has this
331 particular piece of data been collected?".
333 RECURSE indicates the amount of indentation to supply before
334 continuation lines; this amount is roughly twice the value of
337 If the data is printed as a string, returns the number of string
338 characters printed. */
341 val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
342 CORE_ADDR address, struct ui_file *stream, int recurse,
343 const struct value *val,
344 const struct value_print_options *options,
345 const struct language_defn *language)
347 volatile struct gdb_exception except;
349 struct value_print_options local_opts = *options;
350 struct type *real_type = check_typedef (type);
352 if (local_opts.pretty == Val_pretty_default)
353 local_opts.pretty = (local_opts.prettyprint_structs
354 ? Val_prettyprint : Val_no_prettyprint);
358 /* Ensure that the type is complete and not just a stub. If the type is
359 only a stub and we can't find and substitute its complete type, then
360 print appropriate string and return. */
362 if (TYPE_STUB (real_type))
364 fprintf_filtered (stream, _("<incomplete type>"));
369 if (!valprint_check_validity (stream, real_type, embedded_offset, val))
374 ret = apply_val_pretty_printer (type, valaddr, embedded_offset,
375 address, stream, recurse,
376 val, options, language);
381 /* Handle summary mode. If the value is a scalar, print it;
382 otherwise, print an ellipsis. */
383 if (options->summary && !scalar_type_p (type))
385 fprintf_filtered (stream, "...");
389 TRY_CATCH (except, RETURN_MASK_ERROR)
391 ret = language->la_val_print (type, valaddr, embedded_offset, address,
392 stream, recurse, val,
395 if (except.reason < 0)
396 fprintf_filtered (stream, _("<error reading variable>"));
401 /* Check whether the value VAL is printable. Return 1 if it is;
402 return 0 and print an appropriate error message to STREAM according to
403 OPTIONS if it is not. */
406 value_check_printable (struct value *val, struct ui_file *stream,
407 const struct value_print_options *options)
411 fprintf_filtered (stream, _("<address of value unknown>"));
415 if (value_entirely_optimized_out (val))
417 if (options->summary && !scalar_type_p (value_type (val)))
418 fprintf_filtered (stream, "...");
420 val_print_optimized_out (stream);
424 if (TYPE_CODE (value_type (val)) == TYPE_CODE_INTERNAL_FUNCTION)
426 fprintf_filtered (stream, _("<internal function %s>"),
427 value_internal_function_name (val));
434 /* Print using the given LANGUAGE the value VAL onto stream STREAM according
437 If the data are a string pointer, returns the number of string characters
440 This is a preferable interface to val_print, above, because it uses
441 GDB's value mechanism. */
444 common_val_print (struct value *val, struct ui_file *stream, int recurse,
445 const struct value_print_options *options,
446 const struct language_defn *language)
448 if (!value_check_printable (val, stream, options))
451 if (language->la_language == language_ada)
452 /* The value might have a dynamic type, which would cause trouble
453 below when trying to extract the value contents (since the value
454 size is determined from the type size which is unknown). So
455 get a fixed representation of our value. */
456 val = ada_to_fixed_value (val);
458 return val_print (value_type (val), value_contents_for_printing (val),
459 value_embedded_offset (val), value_address (val),
461 val, options, language);
464 /* Print on stream STREAM the value VAL according to OPTIONS. The value
465 is printed using the current_language syntax.
467 If the object printed is a string pointer, return the number of string
471 value_print (struct value *val, struct ui_file *stream,
472 const struct value_print_options *options)
474 if (!value_check_printable (val, stream, options))
479 int r = apply_val_pretty_printer (value_type (val),
480 value_contents_for_printing (val),
481 value_embedded_offset (val),
484 val, options, current_language);
490 return LA_VALUE_PRINT (val, stream, options);
493 /* Called by various <lang>_val_print routines to print
494 TYPE_CODE_INT's. TYPE is the type. VALADDR is the address of the
495 value. STREAM is where to print the value. */
498 val_print_type_code_int (struct type *type, const gdb_byte *valaddr,
499 struct ui_file *stream)
501 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
503 if (TYPE_LENGTH (type) > sizeof (LONGEST))
507 if (TYPE_UNSIGNED (type)
508 && extract_long_unsigned_integer (valaddr, TYPE_LENGTH (type),
511 print_longest (stream, 'u', 0, val);
515 /* Signed, or we couldn't turn an unsigned value into a
516 LONGEST. For signed values, one could assume two's
517 complement (a reasonable assumption, I think) and do
519 print_hex_chars (stream, (unsigned char *) valaddr,
520 TYPE_LENGTH (type), byte_order);
525 print_longest (stream, TYPE_UNSIGNED (type) ? 'u' : 'd', 0,
526 unpack_long (type, valaddr));
531 val_print_type_code_flags (struct type *type, const gdb_byte *valaddr,
532 struct ui_file *stream)
534 ULONGEST val = unpack_long (type, valaddr);
535 int bitpos, nfields = TYPE_NFIELDS (type);
537 fputs_filtered ("[ ", stream);
538 for (bitpos = 0; bitpos < nfields; bitpos++)
540 if (TYPE_FIELD_BITPOS (type, bitpos) != -1
541 && (val & ((ULONGEST)1 << bitpos)))
543 if (TYPE_FIELD_NAME (type, bitpos))
544 fprintf_filtered (stream, "%s ", TYPE_FIELD_NAME (type, bitpos));
546 fprintf_filtered (stream, "#%d ", bitpos);
549 fputs_filtered ("]", stream);
551 /* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
552 according to OPTIONS and SIZE on STREAM. Format i is not supported
555 This is how the elements of an array or structure are printed
560 val_print_scalar_formatted (struct type *type,
561 const gdb_byte *valaddr, int embedded_offset,
562 const struct value *val,
563 const struct value_print_options *options,
565 struct ui_file *stream)
567 gdb_assert (val != NULL);
568 gdb_assert (valaddr == value_contents_for_printing_const (val));
570 /* If we get here with a string format, try again without it. Go
571 all the way back to the language printers, which may call us
573 if (options->format == 's')
575 struct value_print_options opts = *options;
578 val_print (type, valaddr, embedded_offset, 0, stream, 0, val, &opts,
583 /* A scalar object that does not have all bits available can't be
584 printed, because all bits contribute to its representation. */
585 if (!value_bits_valid (val, TARGET_CHAR_BIT * embedded_offset,
586 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
587 val_print_optimized_out (stream);
588 else if (!value_bytes_available (val, embedded_offset, TYPE_LENGTH (type)))
589 val_print_unavailable (stream);
591 print_scalar_formatted (valaddr + embedded_offset, type,
592 options, size, stream);
595 /* Print a number according to FORMAT which is one of d,u,x,o,b,h,w,g.
596 The raison d'etre of this function is to consolidate printing of
597 LONG_LONG's into this one function. The format chars b,h,w,g are
598 from print_scalar_formatted(). Numbers are printed using C
601 USE_C_FORMAT means to use C format in all cases. Without it,
602 'o' and 'x' format do not include the standard C radix prefix
605 Hilfinger/2004-09-09: USE_C_FORMAT was originally called USE_LOCAL
606 and was intended to request formating according to the current
607 language and would be used for most integers that GDB prints. The
608 exceptional cases were things like protocols where the format of
609 the integer is a protocol thing, not a user-visible thing). The
610 parameter remains to preserve the information of what things might
611 be printed with language-specific format, should we ever resurrect
615 print_longest (struct ui_file *stream, int format, int use_c_format,
623 val = int_string (val_long, 10, 1, 0, 1); break;
625 val = int_string (val_long, 10, 0, 0, 1); break;
627 val = int_string (val_long, 16, 0, 0, use_c_format); break;
629 val = int_string (val_long, 16, 0, 2, 1); break;
631 val = int_string (val_long, 16, 0, 4, 1); break;
633 val = int_string (val_long, 16, 0, 8, 1); break;
635 val = int_string (val_long, 16, 0, 16, 1); break;
638 val = int_string (val_long, 8, 0, 0, use_c_format); break;
640 internal_error (__FILE__, __LINE__,
641 _("failed internal consistency check"));
643 fputs_filtered (val, stream);
646 /* This used to be a macro, but I don't think it is called often enough
647 to merit such treatment. */
648 /* Convert a LONGEST to an int. This is used in contexts (e.g. number of
649 arguments to a function, number in a value history, register number, etc.)
650 where the value must not be larger than can fit in an int. */
653 longest_to_int (LONGEST arg)
655 /* Let the compiler do the work. */
656 int rtnval = (int) arg;
658 /* Check for overflows or underflows. */
659 if (sizeof (LONGEST) > sizeof (int))
663 error (_("Value out of range."));
669 /* Print a floating point value of type TYPE (not always a
670 TYPE_CODE_FLT), pointed to in GDB by VALADDR, on STREAM. */
673 print_floating (const gdb_byte *valaddr, struct type *type,
674 struct ui_file *stream)
678 const struct floatformat *fmt = NULL;
679 unsigned len = TYPE_LENGTH (type);
680 enum float_kind kind;
682 /* If it is a floating-point, check for obvious problems. */
683 if (TYPE_CODE (type) == TYPE_CODE_FLT)
684 fmt = floatformat_from_type (type);
687 kind = floatformat_classify (fmt, valaddr);
688 if (kind == float_nan)
690 if (floatformat_is_negative (fmt, valaddr))
691 fprintf_filtered (stream, "-");
692 fprintf_filtered (stream, "nan(");
693 fputs_filtered ("0x", stream);
694 fputs_filtered (floatformat_mantissa (fmt, valaddr), stream);
695 fprintf_filtered (stream, ")");
698 else if (kind == float_infinite)
700 if (floatformat_is_negative (fmt, valaddr))
701 fputs_filtered ("-", stream);
702 fputs_filtered ("inf", stream);
707 /* NOTE: cagney/2002-01-15: The TYPE passed into print_floating()
708 isn't necessarily a TYPE_CODE_FLT. Consequently, unpack_double
709 needs to be used as that takes care of any necessary type
710 conversions. Such conversions are of course direct to DOUBLEST
711 and disregard any possible target floating point limitations.
712 For instance, a u64 would be converted and displayed exactly on a
713 host with 80 bit DOUBLEST but with loss of information on a host
714 with 64 bit DOUBLEST. */
716 doub = unpack_double (type, valaddr, &inv);
719 fprintf_filtered (stream, "<invalid float value>");
723 /* FIXME: kettenis/2001-01-20: The following code makes too much
724 assumptions about the host and target floating point format. */
726 /* NOTE: cagney/2002-02-03: Since the TYPE of what was passed in may
727 not necessarily be a TYPE_CODE_FLT, the below ignores that and
728 instead uses the type's length to determine the precision of the
729 floating-point value being printed. */
731 if (len < sizeof (double))
732 fprintf_filtered (stream, "%.9g", (double) doub);
733 else if (len == sizeof (double))
734 fprintf_filtered (stream, "%.17g", (double) doub);
736 #ifdef PRINTF_HAS_LONG_DOUBLE
737 fprintf_filtered (stream, "%.35Lg", doub);
739 /* This at least wins with values that are representable as
741 fprintf_filtered (stream, "%.17g", (double) doub);
746 print_decimal_floating (const gdb_byte *valaddr, struct type *type,
747 struct ui_file *stream)
749 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
750 char decstr[MAX_DECIMAL_STRING];
751 unsigned len = TYPE_LENGTH (type);
753 decimal_to_string (valaddr, len, byte_order, decstr);
754 fputs_filtered (decstr, stream);
759 print_binary_chars (struct ui_file *stream, const gdb_byte *valaddr,
760 unsigned len, enum bfd_endian byte_order)
763 #define BITS_IN_BYTES 8
769 /* Declared "int" so it will be signed.
770 This ensures that right shift will shift in zeros. */
772 const int mask = 0x080;
774 /* FIXME: We should be not printing leading zeroes in most cases. */
776 if (byte_order == BFD_ENDIAN_BIG)
782 /* Every byte has 8 binary characters; peel off
783 and print from the MSB end. */
785 for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
787 if (*p & (mask >> i))
792 fprintf_filtered (stream, "%1d", b);
798 for (p = valaddr + len - 1;
802 for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
804 if (*p & (mask >> i))
809 fprintf_filtered (stream, "%1d", b);
815 /* VALADDR points to an integer of LEN bytes.
816 Print it in octal on stream or format it in buf. */
819 print_octal_chars (struct ui_file *stream, const gdb_byte *valaddr,
820 unsigned len, enum bfd_endian byte_order)
823 unsigned char octa1, octa2, octa3, carry;
826 /* FIXME: We should be not printing leading zeroes in most cases. */
829 /* Octal is 3 bits, which doesn't fit. Yuk. So we have to track
830 * the extra bits, which cycle every three bytes:
834 * bit number 123 456 78 | 9 012 345 6 | 78 901 234 | 567 890 12 |
836 * Octal side: 0 1 carry 3 4 carry ...
838 * Cycle number: 0 1 2
840 * But of course we are printing from the high side, so we have to
841 * figure out where in the cycle we are so that we end up with no
842 * left over bits at the end.
844 #define BITS_IN_OCTAL 3
845 #define HIGH_ZERO 0340
846 #define LOW_ZERO 0016
847 #define CARRY_ZERO 0003
848 #define HIGH_ONE 0200
851 #define CARRY_ONE 0001
852 #define HIGH_TWO 0300
856 /* For 32 we start in cycle 2, with two bits and one bit carry;
857 for 64 in cycle in cycle 1, with one bit and a two bit carry. */
859 cycle = (len * BITS_IN_BYTES) % BITS_IN_OCTAL;
862 fputs_filtered ("0", stream);
863 if (byte_order == BFD_ENDIAN_BIG)
872 /* No carry in, carry out two bits. */
874 octa1 = (HIGH_ZERO & *p) >> 5;
875 octa2 = (LOW_ZERO & *p) >> 2;
876 carry = (CARRY_ZERO & *p);
877 fprintf_filtered (stream, "%o", octa1);
878 fprintf_filtered (stream, "%o", octa2);
882 /* Carry in two bits, carry out one bit. */
884 octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
885 octa2 = (MID_ONE & *p) >> 4;
886 octa3 = (LOW_ONE & *p) >> 1;
887 carry = (CARRY_ONE & *p);
888 fprintf_filtered (stream, "%o", octa1);
889 fprintf_filtered (stream, "%o", octa2);
890 fprintf_filtered (stream, "%o", octa3);
894 /* Carry in one bit, no carry out. */
896 octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
897 octa2 = (MID_TWO & *p) >> 3;
898 octa3 = (LOW_TWO & *p);
900 fprintf_filtered (stream, "%o", octa1);
901 fprintf_filtered (stream, "%o", octa2);
902 fprintf_filtered (stream, "%o", octa3);
906 error (_("Internal error in octal conversion;"));
910 cycle = cycle % BITS_IN_OCTAL;
915 for (p = valaddr + len - 1;
922 /* Carry out, no carry in */
924 octa1 = (HIGH_ZERO & *p) >> 5;
925 octa2 = (LOW_ZERO & *p) >> 2;
926 carry = (CARRY_ZERO & *p);
927 fprintf_filtered (stream, "%o", octa1);
928 fprintf_filtered (stream, "%o", octa2);
932 /* Carry in, carry out */
934 octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
935 octa2 = (MID_ONE & *p) >> 4;
936 octa3 = (LOW_ONE & *p) >> 1;
937 carry = (CARRY_ONE & *p);
938 fprintf_filtered (stream, "%o", octa1);
939 fprintf_filtered (stream, "%o", octa2);
940 fprintf_filtered (stream, "%o", octa3);
944 /* Carry in, no carry out */
946 octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
947 octa2 = (MID_TWO & *p) >> 3;
948 octa3 = (LOW_TWO & *p);
950 fprintf_filtered (stream, "%o", octa1);
951 fprintf_filtered (stream, "%o", octa2);
952 fprintf_filtered (stream, "%o", octa3);
956 error (_("Internal error in octal conversion;"));
960 cycle = cycle % BITS_IN_OCTAL;
966 /* VALADDR points to an integer of LEN bytes.
967 Print it in decimal on stream or format it in buf. */
970 print_decimal_chars (struct ui_file *stream, const gdb_byte *valaddr,
971 unsigned len, enum bfd_endian byte_order)
974 #define CARRY_OUT( x ) ((x) / TEN) /* extend char to int */
975 #define CARRY_LEFT( x ) ((x) % TEN)
976 #define SHIFT( x ) ((x) << 4)
977 #define LOW_NIBBLE( x ) ( (x) & 0x00F)
978 #define HIGH_NIBBLE( x ) (((x) & 0x0F0) >> 4)
981 unsigned char *digits;
984 int i, j, decimal_digits;
988 /* Base-ten number is less than twice as many digits
989 as the base 16 number, which is 2 digits per byte. */
991 decimal_len = len * 2 * 2;
992 digits = xmalloc (decimal_len);
994 for (i = 0; i < decimal_len; i++)
999 /* Ok, we have an unknown number of bytes of data to be printed in
1002 * Given a hex number (in nibbles) as XYZ, we start by taking X and
1003 * decemalizing it as "x1 x2" in two decimal nibbles. Then we multiply
1004 * the nibbles by 16, add Y and re-decimalize. Repeat with Z.
1006 * The trick is that "digits" holds a base-10 number, but sometimes
1007 * the individual digits are > 10.
1009 * Outer loop is per nibble (hex digit) of input, from MSD end to
1012 decimal_digits = 0; /* Number of decimal digits so far */
1013 p = (byte_order == BFD_ENDIAN_BIG) ? valaddr : valaddr + len - 1;
1015 while ((byte_order == BFD_ENDIAN_BIG) ? (p < valaddr + len) : (p >= valaddr))
1018 * Multiply current base-ten number by 16 in place.
1019 * Each digit was between 0 and 9, now is between
1022 for (j = 0; j < decimal_digits; j++)
1024 digits[j] = SHIFT (digits[j]);
1027 /* Take the next nibble off the input and add it to what
1028 * we've got in the LSB position. Bottom 'digit' is now
1029 * between 0 and 159.
1031 * "flip" is used to run this loop twice for each byte.
1035 /* Take top nibble. */
1037 digits[0] += HIGH_NIBBLE (*p);
1042 /* Take low nibble and bump our pointer "p". */
1044 digits[0] += LOW_NIBBLE (*p);
1045 if (byte_order == BFD_ENDIAN_BIG)
1052 /* Re-decimalize. We have to do this often enough
1053 * that we don't overflow, but once per nibble is
1054 * overkill. Easier this way, though. Note that the
1055 * carry is often larger than 10 (e.g. max initial
1056 * carry out of lowest nibble is 15, could bubble all
1057 * the way up greater than 10). So we have to do
1058 * the carrying beyond the last current digit.
1061 for (j = 0; j < decimal_len - 1; j++)
1065 /* "/" won't handle an unsigned char with
1066 * a value that if signed would be negative.
1067 * So extend to longword int via "dummy".
1070 carry = CARRY_OUT (dummy);
1071 digits[j] = CARRY_LEFT (dummy);
1073 if (j >= decimal_digits && carry == 0)
1076 * All higher digits are 0 and we
1077 * no longer have a carry.
1079 * Note: "j" is 0-based, "decimal_digits" is
1082 decimal_digits = j + 1;
1088 /* Ok, now "digits" is the decimal representation, with
1089 the "decimal_digits" actual digits. Print! */
1091 for (i = decimal_digits - 1; i >= 0; i--)
1093 fprintf_filtered (stream, "%1d", digits[i]);
1098 /* VALADDR points to an integer of LEN bytes. Print it in hex on stream. */
1101 print_hex_chars (struct ui_file *stream, const gdb_byte *valaddr,
1102 unsigned len, enum bfd_endian byte_order)
1106 /* FIXME: We should be not printing leading zeroes in most cases. */
1108 fputs_filtered ("0x", stream);
1109 if (byte_order == BFD_ENDIAN_BIG)
1115 fprintf_filtered (stream, "%02x", *p);
1120 for (p = valaddr + len - 1;
1124 fprintf_filtered (stream, "%02x", *p);
1129 /* VALADDR points to a char integer of LEN bytes.
1130 Print it out in appropriate language form on stream.
1131 Omit any leading zero chars. */
1134 print_char_chars (struct ui_file *stream, struct type *type,
1135 const gdb_byte *valaddr,
1136 unsigned len, enum bfd_endian byte_order)
1140 if (byte_order == BFD_ENDIAN_BIG)
1143 while (p < valaddr + len - 1 && *p == 0)
1146 while (p < valaddr + len)
1148 LA_EMIT_CHAR (*p, type, stream, '\'');
1154 p = valaddr + len - 1;
1155 while (p > valaddr && *p == 0)
1158 while (p >= valaddr)
1160 LA_EMIT_CHAR (*p, type, stream, '\'');
1166 /* Print on STREAM using the given OPTIONS the index for the element
1167 at INDEX of an array whose index type is INDEX_TYPE. */
1170 maybe_print_array_index (struct type *index_type, LONGEST index,
1171 struct ui_file *stream,
1172 const struct value_print_options *options)
1174 struct value *index_value;
1176 if (!options->print_array_indexes)
1179 index_value = value_from_longest (index_type, index);
1181 LA_PRINT_ARRAY_INDEX (index_value, stream, options);
1184 /* Called by various <lang>_val_print routines to print elements of an
1185 array in the form "<elem1>, <elem2>, <elem3>, ...".
1187 (FIXME?) Assumes array element separator is a comma, which is correct
1188 for all languages currently handled.
1189 (FIXME?) Some languages have a notation for repeated array elements,
1190 perhaps we should try to use that notation when appropriate. */
1193 val_print_array_elements (struct type *type,
1194 const gdb_byte *valaddr, int embedded_offset,
1195 CORE_ADDR address, struct ui_file *stream,
1197 const struct value *val,
1198 const struct value_print_options *options,
1201 unsigned int things_printed = 0;
1203 struct type *elttype, *index_type;
1205 /* Position of the array element we are examining to see
1206 whether it is repeated. */
1208 /* Number of repetitions we have detected so far. */
1210 LONGEST low_bound, high_bound;
1212 elttype = TYPE_TARGET_TYPE (type);
1213 eltlen = TYPE_LENGTH (check_typedef (elttype));
1214 index_type = TYPE_INDEX_TYPE (type);
1216 if (get_array_bounds (type, &low_bound, &high_bound))
1218 /* The array length should normally be HIGH_BOUND - LOW_BOUND + 1.
1219 But we have to be a little extra careful, because some languages
1220 such as Ada allow LOW_BOUND to be greater than HIGH_BOUND for
1221 empty arrays. In that situation, the array length is just zero,
1223 if (low_bound > high_bound)
1226 len = high_bound - low_bound + 1;
1230 warning (_("unable to get bounds of array, assuming null array"));
1235 annotate_array_section_begin (i, elttype);
1237 for (; i < len && things_printed < options->print_max; i++)
1241 if (options->prettyprint_arrays)
1243 fprintf_filtered (stream, ",\n");
1244 print_spaces_filtered (2 + 2 * recurse, stream);
1248 fprintf_filtered (stream, ", ");
1251 wrap_here (n_spaces (2 + 2 * recurse));
1252 maybe_print_array_index (index_type, i + low_bound,
1257 /* Only check for reps if repeat_count_threshold is not set to
1258 UINT_MAX (unlimited). */
1259 if (options->repeat_count_threshold < UINT_MAX)
1262 && value_available_contents_eq (val,
1263 embedded_offset + i * eltlen,
1274 if (reps > options->repeat_count_threshold)
1276 val_print (elttype, valaddr, embedded_offset + i * eltlen,
1277 address, stream, recurse + 1, val, options,
1279 annotate_elt_rep (reps);
1280 fprintf_filtered (stream, " <repeats %u times>", reps);
1281 annotate_elt_rep_end ();
1284 things_printed += options->repeat_count_threshold;
1288 val_print (elttype, valaddr, embedded_offset + i * eltlen,
1290 stream, recurse + 1, val, options, current_language);
1295 annotate_array_section_end ();
1298 fprintf_filtered (stream, "...");
1302 /* Read LEN bytes of target memory at address MEMADDR, placing the
1303 results in GDB's memory at MYADDR. Returns a count of the bytes
1304 actually read, and optionally an errno value in the location
1305 pointed to by ERRNOPTR if ERRNOPTR is non-null. */
1307 /* FIXME: cagney/1999-10-14: Only used by val_print_string. Can this
1308 function be eliminated. */
1311 partial_memory_read (CORE_ADDR memaddr, gdb_byte *myaddr,
1312 int len, int *errnoptr)
1314 int nread; /* Number of bytes actually read. */
1315 int errcode; /* Error from last read. */
1317 /* First try a complete read. */
1318 errcode = target_read_memory (memaddr, myaddr, len);
1326 /* Loop, reading one byte at a time until we get as much as we can. */
1327 for (errcode = 0, nread = 0; len > 0 && errcode == 0; nread++, len--)
1329 errcode = target_read_memory (memaddr++, myaddr++, 1);
1331 /* If an error, the last read was unsuccessful, so adjust count. */
1337 if (errnoptr != NULL)
1339 *errnoptr = errcode;
1344 /* Read a string from the inferior, at ADDR, with LEN characters of WIDTH bytes
1345 each. Fetch at most FETCHLIMIT characters. BUFFER will be set to a newly
1346 allocated buffer containing the string, which the caller is responsible to
1347 free, and BYTES_READ will be set to the number of bytes read. Returns 0 on
1348 success, or errno on failure.
1350 If LEN > 0, reads exactly LEN characters (including eventual NULs in
1351 the middle or end of the string). If LEN is -1, stops at the first
1352 null character (not necessarily the first null byte) up to a maximum
1353 of FETCHLIMIT characters. Set FETCHLIMIT to UINT_MAX to read as many
1354 characters as possible from the string.
1356 Unless an exception is thrown, BUFFER will always be allocated, even on
1357 failure. In this case, some characters might have been read before the
1358 failure happened. Check BYTES_READ to recognize this situation.
1360 Note: There was a FIXME asking to make this code use target_read_string,
1361 but this function is more general (can read past null characters, up to
1362 given LEN). Besides, it is used much more often than target_read_string
1363 so it is more tested. Perhaps callers of target_read_string should use
1364 this function instead? */
1367 read_string (CORE_ADDR addr, int len, int width, unsigned int fetchlimit,
1368 enum bfd_endian byte_order, gdb_byte **buffer, int *bytes_read)
1370 int found_nul; /* Non-zero if we found the nul char. */
1371 int errcode; /* Errno returned from bad reads. */
1372 unsigned int nfetch; /* Chars to fetch / chars fetched. */
1373 unsigned int chunksize; /* Size of each fetch, in chars. */
1374 gdb_byte *bufptr; /* Pointer to next available byte in
1376 gdb_byte *limit; /* First location past end of fetch buffer. */
1377 struct cleanup *old_chain = NULL; /* Top of the old cleanup chain. */
1379 /* Decide how large of chunks to try to read in one operation. This
1380 is also pretty simple. If LEN >= zero, then we want fetchlimit chars,
1381 so we might as well read them all in one operation. If LEN is -1, we
1382 are looking for a NUL terminator to end the fetching, so we might as
1383 well read in blocks that are large enough to be efficient, but not so
1384 large as to be slow if fetchlimit happens to be large. So we choose the
1385 minimum of 8 and fetchlimit. We used to use 200 instead of 8 but
1386 200 is way too big for remote debugging over a serial line. */
1388 chunksize = (len == -1 ? min (8, fetchlimit) : fetchlimit);
1390 /* Loop until we either have all the characters, or we encounter
1391 some error, such as bumping into the end of the address space. */
1396 old_chain = make_cleanup (free_current_contents, buffer);
1400 *buffer = (gdb_byte *) xmalloc (len * width);
1403 nfetch = partial_memory_read (addr, bufptr, len * width, &errcode)
1405 addr += nfetch * width;
1406 bufptr += nfetch * width;
1410 unsigned long bufsize = 0;
1415 nfetch = min (chunksize, fetchlimit - bufsize);
1417 if (*buffer == NULL)
1418 *buffer = (gdb_byte *) xmalloc (nfetch * width);
1420 *buffer = (gdb_byte *) xrealloc (*buffer,
1421 (nfetch + bufsize) * width);
1423 bufptr = *buffer + bufsize * width;
1426 /* Read as much as we can. */
1427 nfetch = partial_memory_read (addr, bufptr, nfetch * width, &errcode)
1430 /* Scan this chunk for the null character that terminates the string
1431 to print. If found, we don't need to fetch any more. Note
1432 that bufptr is explicitly left pointing at the next character
1433 after the null character, or at the next character after the end
1436 limit = bufptr + nfetch * width;
1437 while (bufptr < limit)
1441 c = extract_unsigned_integer (bufptr, width, byte_order);
1446 /* We don't care about any error which happened after
1447 the NUL terminator. */
1454 while (errcode == 0 /* no error */
1455 && bufptr - *buffer < fetchlimit * width /* no overrun */
1456 && !found_nul); /* haven't found NUL yet */
1459 { /* Length of string is really 0! */
1460 /* We always allocate *buffer. */
1461 *buffer = bufptr = xmalloc (1);
1465 /* bufptr and addr now point immediately beyond the last byte which we
1466 consider part of the string (including a '\0' which ends the string). */
1467 *bytes_read = bufptr - *buffer;
1471 discard_cleanups (old_chain);
1476 /* Return true if print_wchar can display W without resorting to a
1477 numeric escape, false otherwise. */
1480 wchar_printable (gdb_wchar_t w)
1482 return (gdb_iswprint (w)
1483 || w == LCST ('\a') || w == LCST ('\b')
1484 || w == LCST ('\f') || w == LCST ('\n')
1485 || w == LCST ('\r') || w == LCST ('\t')
1486 || w == LCST ('\v'));
1489 /* A helper function that converts the contents of STRING to wide
1490 characters and then appends them to OUTPUT. */
1493 append_string_as_wide (const char *string,
1494 struct obstack *output)
1496 for (; *string; ++string)
1498 gdb_wchar_t w = gdb_btowc (*string);
1499 obstack_grow (output, &w, sizeof (gdb_wchar_t));
1503 /* Print a wide character W to OUTPUT. ORIG is a pointer to the
1504 original (target) bytes representing the character, ORIG_LEN is the
1505 number of valid bytes. WIDTH is the number of bytes in a base
1506 characters of the type. OUTPUT is an obstack to which wide
1507 characters are emitted. QUOTER is a (narrow) character indicating
1508 the style of quotes surrounding the character to be printed.
1509 NEED_ESCAPE is an in/out flag which is used to track numeric
1510 escapes across calls. */
1513 print_wchar (gdb_wint_t w, const gdb_byte *orig,
1514 int orig_len, int width,
1515 enum bfd_endian byte_order,
1516 struct obstack *output,
1517 int quoter, int *need_escapep)
1519 int need_escape = *need_escapep;
1522 if (gdb_iswprint (w) && (!need_escape || (!gdb_iswdigit (w)
1524 && w != LCST ('9'))))
1526 gdb_wchar_t wchar = w;
1528 if (w == gdb_btowc (quoter) || w == LCST ('\\'))
1529 obstack_grow_wstr (output, LCST ("\\"));
1530 obstack_grow (output, &wchar, sizeof (gdb_wchar_t));
1537 obstack_grow_wstr (output, LCST ("\\a"));
1540 obstack_grow_wstr (output, LCST ("\\b"));
1543 obstack_grow_wstr (output, LCST ("\\f"));
1546 obstack_grow_wstr (output, LCST ("\\n"));
1549 obstack_grow_wstr (output, LCST ("\\r"));
1552 obstack_grow_wstr (output, LCST ("\\t"));
1555 obstack_grow_wstr (output, LCST ("\\v"));
1561 for (i = 0; i + width <= orig_len; i += width)
1566 value = extract_unsigned_integer (&orig[i], width,
1568 /* If the value fits in 3 octal digits, print it that
1569 way. Otherwise, print it as a hex escape. */
1571 sprintf (octal, "\\%.3o", (int) (value & 0777));
1573 sprintf (octal, "\\x%lx", (long) value);
1574 append_string_as_wide (octal, output);
1576 /* If we somehow have extra bytes, print them now. */
1577 while (i < orig_len)
1581 sprintf (octal, "\\%.3o", orig[i] & 0xff);
1582 append_string_as_wide (octal, output);
1593 /* Print the character C on STREAM as part of the contents of a
1594 literal string whose delimiter is QUOTER. ENCODING names the
1598 generic_emit_char (int c, struct type *type, struct ui_file *stream,
1599 int quoter, const char *encoding)
1601 enum bfd_endian byte_order
1602 = gdbarch_byte_order (get_type_arch (type));
1603 struct obstack wchar_buf, output;
1604 struct cleanup *cleanups;
1606 struct wchar_iterator *iter;
1607 int need_escape = 0;
1609 buf = alloca (TYPE_LENGTH (type));
1610 pack_long (buf, type, c);
1612 iter = make_wchar_iterator (buf, TYPE_LENGTH (type),
1613 encoding, TYPE_LENGTH (type));
1614 cleanups = make_cleanup_wchar_iterator (iter);
1616 /* This holds the printable form of the wchar_t data. */
1617 obstack_init (&wchar_buf);
1618 make_cleanup_obstack_free (&wchar_buf);
1624 const gdb_byte *buf;
1626 int print_escape = 1;
1627 enum wchar_iterate_result result;
1629 num_chars = wchar_iterate (iter, &result, &chars, &buf, &buflen);
1634 /* If all characters are printable, print them. Otherwise,
1635 we're going to have to print an escape sequence. We
1636 check all characters because we want to print the target
1637 bytes in the escape sequence, and we don't know character
1638 boundaries there. */
1642 for (i = 0; i < num_chars; ++i)
1643 if (!wchar_printable (chars[i]))
1651 for (i = 0; i < num_chars; ++i)
1652 print_wchar (chars[i], buf, buflen,
1653 TYPE_LENGTH (type), byte_order,
1654 &wchar_buf, quoter, &need_escape);
1658 /* This handles the NUM_CHARS == 0 case as well. */
1660 print_wchar (gdb_WEOF, buf, buflen, TYPE_LENGTH (type),
1661 byte_order, &wchar_buf, quoter, &need_escape);
1664 /* The output in the host encoding. */
1665 obstack_init (&output);
1666 make_cleanup_obstack_free (&output);
1668 convert_between_encodings (INTERMEDIATE_ENCODING, host_charset (),
1669 obstack_base (&wchar_buf),
1670 obstack_object_size (&wchar_buf),
1671 1, &output, translit_char);
1672 obstack_1grow (&output, '\0');
1674 fputs_filtered (obstack_base (&output), stream);
1676 do_cleanups (cleanups);
1679 /* Print the character string STRING, printing at most LENGTH
1680 characters. LENGTH is -1 if the string is nul terminated. TYPE is
1681 the type of each character. OPTIONS holds the printing options;
1682 printing stops early if the number hits print_max; repeat counts
1683 are printed as appropriate. Print ellipses at the end if we had to
1684 stop before printing LENGTH characters, or if FORCE_ELLIPSES.
1685 QUOTE_CHAR is the character to print at each end of the string. If
1686 C_STYLE_TERMINATOR is true, and the last character is 0, then it is
1690 generic_printstr (struct ui_file *stream, struct type *type,
1691 const gdb_byte *string, unsigned int length,
1692 const char *encoding, int force_ellipses,
1693 int quote_char, int c_style_terminator,
1694 const struct value_print_options *options)
1696 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
1698 unsigned int things_printed = 0;
1701 int width = TYPE_LENGTH (type);
1702 struct obstack wchar_buf, output;
1703 struct cleanup *cleanup;
1704 struct wchar_iterator *iter;
1706 int need_escape = 0;
1707 gdb_wchar_t wide_quote_char = gdb_btowc (quote_char);
1711 unsigned long current_char = 1;
1713 for (i = 0; current_char; ++i)
1716 current_char = extract_unsigned_integer (string + i * width,
1722 /* If the string was not truncated due to `set print elements', and
1723 the last byte of it is a null, we don't print that, in
1724 traditional C style. */
1725 if (c_style_terminator
1728 && (extract_unsigned_integer (string + (length - 1) * width,
1729 width, byte_order) == 0))
1734 fputs_filtered ("\"\"", stream);
1738 /* Arrange to iterate over the characters, in wchar_t form. */
1739 iter = make_wchar_iterator (string, length * width, encoding, width);
1740 cleanup = make_cleanup_wchar_iterator (iter);
1742 /* WCHAR_BUF is the obstack we use to represent the string in
1744 obstack_init (&wchar_buf);
1745 make_cleanup_obstack_free (&wchar_buf);
1747 while (!finished && things_printed < options->print_max)
1750 enum wchar_iterate_result result;
1752 const gdb_byte *buf;
1759 obstack_grow_wstr (&wchar_buf, LCST (", "));
1763 num_chars = wchar_iterate (iter, &result, &chars, &buf, &buflen);
1764 /* We only look at repetitions when we were able to convert a
1765 single character in isolation. This makes the code simpler
1766 and probably does the sensible thing in the majority of
1768 while (num_chars == 1 && things_printed < options->print_max)
1770 /* Count the number of repetitions. */
1771 unsigned int reps = 0;
1772 gdb_wchar_t current_char = chars[0];
1773 const gdb_byte *orig_buf = buf;
1774 int orig_len = buflen;
1778 obstack_grow_wstr (&wchar_buf, LCST (", "));
1782 while (num_chars == 1 && current_char == chars[0])
1784 num_chars = wchar_iterate (iter, &result, &chars,
1789 /* Emit CURRENT_CHAR according to the repetition count and
1791 if (reps > options->repeat_count_threshold)
1795 if (options->inspect_it)
1796 obstack_grow_wstr (&wchar_buf, LCST ("\\"));
1797 obstack_grow (&wchar_buf, &wide_quote_char,
1798 sizeof (gdb_wchar_t));
1799 obstack_grow_wstr (&wchar_buf, LCST (", "));
1802 obstack_grow_wstr (&wchar_buf, LCST ("'"));
1804 print_wchar (current_char, orig_buf, orig_len, width,
1805 byte_order, &wchar_buf, '\'', &need_escape);
1806 obstack_grow_wstr (&wchar_buf, LCST ("'"));
1808 /* Painful gyrations. */
1810 char *s = xstrprintf (_(" <repeats %u times>"), reps);
1812 for (j = 0; s[j]; ++j)
1814 gdb_wchar_t w = gdb_btowc (s[j]);
1815 obstack_grow (&wchar_buf, &w, sizeof (gdb_wchar_t));
1819 things_printed += options->repeat_count_threshold;
1824 /* Saw the character one or more times, but fewer than
1825 the repetition threshold. */
1828 if (options->inspect_it)
1829 obstack_grow_wstr (&wchar_buf, LCST ("\\"));
1830 obstack_grow (&wchar_buf, &wide_quote_char,
1831 sizeof (gdb_wchar_t));
1838 print_wchar (current_char, orig_buf,
1840 byte_order, &wchar_buf,
1841 quote_char, &need_escape);
1847 /* NUM_CHARS and the other outputs from wchar_iterate are valid
1848 here regardless of which branch was taken above. */
1858 case wchar_iterate_invalid:
1861 if (options->inspect_it)
1862 obstack_grow_wstr (&wchar_buf, LCST ("\\"));
1863 obstack_grow (&wchar_buf, &wide_quote_char,
1864 sizeof (gdb_wchar_t));
1868 print_wchar (gdb_WEOF, buf, buflen, width, byte_order,
1869 &wchar_buf, quote_char, &need_escape);
1872 case wchar_iterate_incomplete:
1875 if (options->inspect_it)
1876 obstack_grow_wstr (&wchar_buf, LCST ("\\"));
1877 obstack_grow (&wchar_buf, &wide_quote_char,
1878 sizeof (gdb_wchar_t));
1879 obstack_grow_wstr (&wchar_buf, LCST (","));
1882 obstack_grow_wstr (&wchar_buf,
1883 LCST (" <incomplete sequence "));
1884 print_wchar (gdb_WEOF, buf, buflen, width,
1885 byte_order, &wchar_buf,
1887 obstack_grow_wstr (&wchar_buf, LCST (">"));
1893 /* Terminate the quotes if necessary. */
1896 if (options->inspect_it)
1897 obstack_grow_wstr (&wchar_buf, LCST ("\\"));
1898 obstack_grow (&wchar_buf, &wide_quote_char,
1899 sizeof (gdb_wchar_t));
1902 if (force_ellipses || !finished)
1903 obstack_grow_wstr (&wchar_buf, LCST ("..."));
1905 /* OUTPUT is where we collect `char's for printing. */
1906 obstack_init (&output);
1907 make_cleanup_obstack_free (&output);
1909 convert_between_encodings (INTERMEDIATE_ENCODING, host_charset (),
1910 obstack_base (&wchar_buf),
1911 obstack_object_size (&wchar_buf),
1912 1, &output, translit_char);
1913 obstack_1grow (&output, '\0');
1915 fputs_filtered (obstack_base (&output), stream);
1917 do_cleanups (cleanup);
1920 /* Print a string from the inferior, starting at ADDR and printing up to LEN
1921 characters, of WIDTH bytes a piece, to STREAM. If LEN is -1, printing
1922 stops at the first null byte, otherwise printing proceeds (including null
1923 bytes) until either print_max or LEN characters have been printed,
1924 whichever is smaller. ENCODING is the name of the string's
1925 encoding. It can be NULL, in which case the target encoding is
1929 val_print_string (struct type *elttype, const char *encoding,
1930 CORE_ADDR addr, int len,
1931 struct ui_file *stream,
1932 const struct value_print_options *options)
1934 int force_ellipsis = 0; /* Force ellipsis to be printed if nonzero. */
1935 int errcode; /* Errno returned from bad reads. */
1936 int found_nul; /* Non-zero if we found the nul char. */
1937 unsigned int fetchlimit; /* Maximum number of chars to print. */
1939 gdb_byte *buffer = NULL; /* Dynamically growable fetch buffer. */
1940 struct cleanup *old_chain = NULL; /* Top of the old cleanup chain. */
1941 struct gdbarch *gdbarch = get_type_arch (elttype);
1942 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1943 int width = TYPE_LENGTH (elttype);
1945 /* First we need to figure out the limit on the number of characters we are
1946 going to attempt to fetch and print. This is actually pretty simple. If
1947 LEN >= zero, then the limit is the minimum of LEN and print_max. If
1948 LEN is -1, then the limit is print_max. This is true regardless of
1949 whether print_max is zero, UINT_MAX (unlimited), or something in between,
1950 because finding the null byte (or available memory) is what actually
1951 limits the fetch. */
1953 fetchlimit = (len == -1 ? options->print_max : min (len,
1954 options->print_max));
1956 errcode = read_string (addr, len, width, fetchlimit, byte_order,
1957 &buffer, &bytes_read);
1958 old_chain = make_cleanup (xfree, buffer);
1962 /* We now have either successfully filled the buffer to fetchlimit,
1963 or terminated early due to an error or finding a null char when
1966 /* Determine found_nul by looking at the last character read. */
1967 found_nul = extract_unsigned_integer (buffer + bytes_read - width, width,
1969 if (len == -1 && !found_nul)
1973 /* We didn't find a NUL terminator we were looking for. Attempt
1974 to peek at the next character. If not successful, or it is not
1975 a null byte, then force ellipsis to be printed. */
1977 peekbuf = (gdb_byte *) alloca (width);
1979 if (target_read_memory (addr, peekbuf, width) == 0
1980 && extract_unsigned_integer (peekbuf, width, byte_order) != 0)
1983 else if ((len >= 0 && errcode != 0) || (len > bytes_read / width))
1985 /* Getting an error when we have a requested length, or fetching less
1986 than the number of characters actually requested, always make us
1991 /* If we get an error before fetching anything, don't print a string.
1992 But if we fetch something and then get an error, print the string
1993 and then the error message. */
1994 if (errcode == 0 || bytes_read > 0)
1996 if (options->addressprint)
1998 fputs_filtered (" ", stream);
2000 LA_PRINT_STRING (stream, elttype, buffer, bytes_read / width,
2001 encoding, force_ellipsis, options);
2008 fprintf_filtered (stream, " <Address ");
2009 fputs_filtered (paddress (gdbarch, addr), stream);
2010 fprintf_filtered (stream, " out of bounds>");
2014 fprintf_filtered (stream, " <Error reading address ");
2015 fputs_filtered (paddress (gdbarch, addr), stream);
2016 fprintf_filtered (stream, ": %s>", safe_strerror (errcode));
2021 do_cleanups (old_chain);
2023 return (bytes_read / width);
2027 /* The 'set input-radix' command writes to this auxiliary variable.
2028 If the requested radix is valid, INPUT_RADIX is updated; otherwise,
2029 it is left unchanged. */
2031 static unsigned input_radix_1 = 10;
2033 /* Validate an input or output radix setting, and make sure the user
2034 knows what they really did here. Radix setting is confusing, e.g.
2035 setting the input radix to "10" never changes it! */
2038 set_input_radix (char *args, int from_tty, struct cmd_list_element *c)
2040 set_input_radix_1 (from_tty, input_radix_1);
2044 set_input_radix_1 (int from_tty, unsigned radix)
2046 /* We don't currently disallow any input radix except 0 or 1, which don't
2047 make any mathematical sense. In theory, we can deal with any input
2048 radix greater than 1, even if we don't have unique digits for every
2049 value from 0 to radix-1, but in practice we lose on large radix values.
2050 We should either fix the lossage or restrict the radix range more.
2055 input_radix_1 = input_radix;
2056 error (_("Nonsense input radix ``decimal %u''; input radix unchanged."),
2059 input_radix_1 = input_radix = radix;
2062 printf_filtered (_("Input radix now set to "
2063 "decimal %u, hex %x, octal %o.\n"),
2064 radix, radix, radix);
2068 /* The 'set output-radix' command writes to this auxiliary variable.
2069 If the requested radix is valid, OUTPUT_RADIX is updated,
2070 otherwise, it is left unchanged. */
2072 static unsigned output_radix_1 = 10;
2075 set_output_radix (char *args, int from_tty, struct cmd_list_element *c)
2077 set_output_radix_1 (from_tty, output_radix_1);
2081 set_output_radix_1 (int from_tty, unsigned radix)
2083 /* Validate the radix and disallow ones that we aren't prepared to
2084 handle correctly, leaving the radix unchanged. */
2088 user_print_options.output_format = 'x'; /* hex */
2091 user_print_options.output_format = 0; /* decimal */
2094 user_print_options.output_format = 'o'; /* octal */
2097 output_radix_1 = output_radix;
2098 error (_("Unsupported output radix ``decimal %u''; "
2099 "output radix unchanged."),
2102 output_radix_1 = output_radix = radix;
2105 printf_filtered (_("Output radix now set to "
2106 "decimal %u, hex %x, octal %o.\n"),
2107 radix, radix, radix);
2111 /* Set both the input and output radix at once. Try to set the output radix
2112 first, since it has the most restrictive range. An radix that is valid as
2113 an output radix is also valid as an input radix.
2115 It may be useful to have an unusual input radix. If the user wishes to
2116 set an input radix that is not valid as an output radix, he needs to use
2117 the 'set input-radix' command. */
2120 set_radix (char *arg, int from_tty)
2124 radix = (arg == NULL) ? 10 : parse_and_eval_long (arg);
2125 set_output_radix_1 (0, radix);
2126 set_input_radix_1 (0, radix);
2129 printf_filtered (_("Input and output radices now set to "
2130 "decimal %u, hex %x, octal %o.\n"),
2131 radix, radix, radix);
2135 /* Show both the input and output radices. */
2138 show_radix (char *arg, int from_tty)
2142 if (input_radix == output_radix)
2144 printf_filtered (_("Input and output radices set to "
2145 "decimal %u, hex %x, octal %o.\n"),
2146 input_radix, input_radix, input_radix);
2150 printf_filtered (_("Input radix set to decimal "
2151 "%u, hex %x, octal %o.\n"),
2152 input_radix, input_radix, input_radix);
2153 printf_filtered (_("Output radix set to decimal "
2154 "%u, hex %x, octal %o.\n"),
2155 output_radix, output_radix, output_radix);
2162 set_print (char *arg, int from_tty)
2165 "\"set print\" must be followed by the name of a print subcommand.\n");
2166 help_list (setprintlist, "set print ", -1, gdb_stdout);
2170 show_print (char *args, int from_tty)
2172 cmd_show_list (showprintlist, from_tty, "");
2176 _initialize_valprint (void)
2178 add_prefix_cmd ("print", no_class, set_print,
2179 _("Generic command for setting how things print."),
2180 &setprintlist, "set print ", 0, &setlist);
2181 add_alias_cmd ("p", "print", no_class, 1, &setlist);
2182 /* Prefer set print to set prompt. */
2183 add_alias_cmd ("pr", "print", no_class, 1, &setlist);
2185 add_prefix_cmd ("print", no_class, show_print,
2186 _("Generic command for showing print settings."),
2187 &showprintlist, "show print ", 0, &showlist);
2188 add_alias_cmd ("p", "print", no_class, 1, &showlist);
2189 add_alias_cmd ("pr", "print", no_class, 1, &showlist);
2191 add_setshow_uinteger_cmd ("elements", no_class,
2192 &user_print_options.print_max, _("\
2193 Set limit on string chars or array elements to print."), _("\
2194 Show limit on string chars or array elements to print."), _("\
2195 \"set print elements 0\" causes there to be no limit."),
2198 &setprintlist, &showprintlist);
2200 add_setshow_boolean_cmd ("null-stop", no_class,
2201 &user_print_options.stop_print_at_null, _("\
2202 Set printing of char arrays to stop at first null char."), _("\
2203 Show printing of char arrays to stop at first null char."), NULL,
2205 show_stop_print_at_null,
2206 &setprintlist, &showprintlist);
2208 add_setshow_uinteger_cmd ("repeats", no_class,
2209 &user_print_options.repeat_count_threshold, _("\
2210 Set threshold for repeated print elements."), _("\
2211 Show threshold for repeated print elements."), _("\
2212 \"set print repeats 0\" causes all elements to be individually printed."),
2214 show_repeat_count_threshold,
2215 &setprintlist, &showprintlist);
2217 add_setshow_boolean_cmd ("pretty", class_support,
2218 &user_print_options.prettyprint_structs, _("\
2219 Set prettyprinting of structures."), _("\
2220 Show prettyprinting of structures."), NULL,
2222 show_prettyprint_structs,
2223 &setprintlist, &showprintlist);
2225 add_setshow_boolean_cmd ("union", class_support,
2226 &user_print_options.unionprint, _("\
2227 Set printing of unions interior to structures."), _("\
2228 Show printing of unions interior to structures."), NULL,
2231 &setprintlist, &showprintlist);
2233 add_setshow_boolean_cmd ("array", class_support,
2234 &user_print_options.prettyprint_arrays, _("\
2235 Set prettyprinting of arrays."), _("\
2236 Show prettyprinting of arrays."), NULL,
2238 show_prettyprint_arrays,
2239 &setprintlist, &showprintlist);
2241 add_setshow_boolean_cmd ("address", class_support,
2242 &user_print_options.addressprint, _("\
2243 Set printing of addresses."), _("\
2244 Show printing of addresses."), NULL,
2247 &setprintlist, &showprintlist);
2249 add_setshow_zuinteger_cmd ("input-radix", class_support, &input_radix_1,
2251 Set default input radix for entering numbers."), _("\
2252 Show default input radix for entering numbers."), NULL,
2255 &setlist, &showlist);
2257 add_setshow_zuinteger_cmd ("output-radix", class_support, &output_radix_1,
2259 Set default output radix for printing of values."), _("\
2260 Show default output radix for printing of values."), NULL,
2263 &setlist, &showlist);
2265 /* The "set radix" and "show radix" commands are special in that
2266 they are like normal set and show commands but allow two normally
2267 independent variables to be either set or shown with a single
2268 command. So the usual deprecated_add_set_cmd() and [deleted]
2269 add_show_from_set() commands aren't really appropriate. */
2270 /* FIXME: i18n: With the new add_setshow_integer command, that is no
2271 longer true - show can display anything. */
2272 add_cmd ("radix", class_support, set_radix, _("\
2273 Set default input and output number radices.\n\
2274 Use 'set input-radix' or 'set output-radix' to independently set each.\n\
2275 Without an argument, sets both radices back to the default value of 10."),
2277 add_cmd ("radix", class_support, show_radix, _("\
2278 Show the default input and output number radices.\n\
2279 Use 'show input-radix' or 'show output-radix' to independently show each."),
2282 add_setshow_boolean_cmd ("array-indexes", class_support,
2283 &user_print_options.print_array_indexes, _("\
2284 Set printing of array indexes."), _("\
2285 Show printing of array indexes"), NULL, NULL, show_print_array_indexes,
2286 &setprintlist, &showprintlist);