1 /* Print values for GDB, the GNU debugger.
3 Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2005 Free Software
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 2 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, write to the Free Software
21 Foundation, Inc., 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA. */
25 #include "gdb_string.h"
35 #include "floatformat.h"
40 /* Prototypes for local functions */
42 static int partial_memory_read (CORE_ADDR memaddr, char *myaddr,
43 int len, int *errnoptr);
45 static void show_print (char *, int);
47 static void set_print (char *, int);
49 static void set_radix (char *, int);
51 static void show_radix (char *, int);
53 static void set_input_radix (char *, int, struct cmd_list_element *);
55 static void set_input_radix_1 (int, unsigned);
57 static void set_output_radix (char *, int, struct cmd_list_element *);
59 static void set_output_radix_1 (int, unsigned);
61 void _initialize_valprint (void);
63 /* Maximum number of chars to print for a string pointer value or vector
64 contents, or UINT_MAX for no limit. Note that "set print elements 0"
65 stores UINT_MAX in print_max, which displays in a show command as
68 unsigned int print_max;
69 #define PRINT_MAX_DEFAULT 200 /* Start print_max off at this value. */
71 show_print_max (struct ui_file *file, int from_tty,
72 struct cmd_list_element *c, const char *value)
74 fprintf_filtered (file, _("\
75 Limit on string chars or array elements to print is %s.\n"),
80 /* Default input and output radixes, and output format letter. */
82 unsigned input_radix = 10;
84 show_input_radix (struct ui_file *file, int from_tty,
85 struct cmd_list_element *c, const char *value)
87 fprintf_filtered (file, _("\
88 Default input radix for entering numbers is %s.\n"),
92 unsigned output_radix = 10;
94 show_output_radix (struct ui_file *file, int from_tty,
95 struct cmd_list_element *c, const char *value)
97 fprintf_filtered (file, _("\
98 Default output radix for printing of values is %s.\n"),
101 int output_format = 0;
103 /* Print repeat counts if there are more than this many repetitions of an
104 element in an array. Referenced by the low level language dependent
107 unsigned int repeat_count_threshold = 10;
109 show_repeat_count_threshold (struct ui_file *file, int from_tty,
110 struct cmd_list_element *c, const char *value)
112 fprintf_filtered (file, _("Threshold for repeated print elements is %s.\n"),
116 /* If nonzero, stops printing of char arrays at first null. */
118 int stop_print_at_null;
120 show_stop_print_at_null (struct ui_file *file, int from_tty,
121 struct cmd_list_element *c, const char *value)
123 fprintf_filtered (file, _("\
124 Printing of char arrays to stop at first null char is %s.\n"),
128 /* Controls pretty printing of structures. */
130 int prettyprint_structs;
132 show_prettyprint_structs (struct ui_file *file, int from_tty,
133 struct cmd_list_element *c, const char *value)
135 fprintf_filtered (file, _("Prettyprinting of structures is %s.\n"), value);
138 /* Controls pretty printing of arrays. */
140 int prettyprint_arrays;
142 show_prettyprint_arrays (struct ui_file *file, int from_tty,
143 struct cmd_list_element *c, const char *value)
145 fprintf_filtered (file, _("Prettyprinting of arrays is %s.\n"), value);
148 /* If nonzero, causes unions inside structures or other unions to be
151 int unionprint; /* Controls printing of nested unions. */
153 show_unionprint (struct ui_file *file, int from_tty,
154 struct cmd_list_element *c, const char *value)
156 fprintf_filtered (file, _("\
157 Printing of unions interior to structures is %s.\n"),
161 /* If nonzero, causes machine addresses to be printed in certain contexts. */
163 int addressprint; /* Controls printing of machine addresses */
165 show_addressprint (struct ui_file *file, int from_tty,
166 struct cmd_list_element *c, const char *value)
168 fprintf_filtered (file, _("Printing of addresses is %s.\n"), value);
172 /* Print data of type TYPE located at VALADDR (within GDB), which came from
173 the inferior at address ADDRESS, onto stdio stream STREAM according to
174 FORMAT (a letter, or 0 for natural format using TYPE).
176 If DEREF_REF is nonzero, then dereference references, otherwise just print
179 The PRETTY parameter controls prettyprinting.
181 If the data are a string pointer, returns the number of string characters
184 FIXME: The data at VALADDR is in target byte order. If gdb is ever
185 enhanced to be able to debug more than the single target it was compiled
186 for (specific CPU type and thus specific target byte ordering), then
187 either the print routines are going to have to take this into account,
188 or the data is going to have to be passed into here already converted
189 to the host byte ordering, whichever is more convenient. */
193 val_print (struct type *type, const bfd_byte *valaddr, int embedded_offset,
194 CORE_ADDR address, struct ui_file *stream, int format,
195 int deref_ref, int recurse, enum val_prettyprint pretty)
197 struct type *real_type = check_typedef (type);
198 if (pretty == Val_pretty_default)
200 pretty = prettyprint_structs ? Val_prettyprint : Val_no_prettyprint;
205 /* Ensure that the type is complete and not just a stub. If the type is
206 only a stub and we can't find and substitute its complete type, then
207 print appropriate string and return. */
209 if (TYPE_STUB (real_type))
211 fprintf_filtered (stream, "<incomplete type>");
216 return (LA_VAL_PRINT (type, valaddr, embedded_offset, address,
217 stream, format, deref_ref, recurse, pretty));
220 /* Print the value VAL in C-ish syntax on stream STREAM.
221 FORMAT is a format-letter, or 0 for print in natural format of data type.
222 If the object printed is a string pointer, returns
223 the number of string bytes printed. */
226 value_print (struct value *val, struct ui_file *stream, int format,
227 enum val_prettyprint pretty)
231 printf_filtered (_("<address of value unknown>"));
234 if (value_optimized_out (val))
236 printf_filtered (_("<value optimized out>"));
239 return LA_VALUE_PRINT (val, stream, format, pretty);
242 /* Called by various <lang>_val_print routines to print
243 TYPE_CODE_INT's. TYPE is the type. VALADDR is the address of the
244 value. STREAM is where to print the value. */
247 val_print_type_code_int (struct type *type, const bfd_byte *valaddr,
248 struct ui_file *stream)
250 if (TYPE_LENGTH (type) > sizeof (LONGEST))
254 if (TYPE_UNSIGNED (type)
255 && extract_long_unsigned_integer (valaddr, TYPE_LENGTH (type),
258 print_longest (stream, 'u', 0, val);
262 /* Signed, or we couldn't turn an unsigned value into a
263 LONGEST. For signed values, one could assume two's
264 complement (a reasonable assumption, I think) and do
266 print_hex_chars (stream, (unsigned char *) valaddr,
272 print_longest (stream, TYPE_UNSIGNED (type) ? 'u' : 'd', 0,
273 unpack_long (type, valaddr));
277 /* Print a number according to FORMAT which is one of d,u,x,o,b,h,w,g.
278 The raison d'etre of this function is to consolidate printing of
279 LONG_LONG's into this one function. The format chars b,h,w,g are
280 from print_scalar_formatted(). Numbers are printed using C
283 USE_C_FORMAT means to use C format in all cases. Without it,
284 'o' and 'x' format do not include the standard C radix prefix
287 Hilfinger/2004-09-09: USE_C_FORMAT was originally called USE_LOCAL
288 and was intended to request formating according to the current
289 language and would be used for most integers that GDB prints. The
290 exceptional cases were things like protocols where the format of
291 the integer is a protocol thing, not a user-visible thing). The
292 parameter remains to preserve the information of what things might
293 be printed with language-specific format, should we ever resurrect
297 print_longest (struct ui_file *stream, int format, int use_c_format,
305 val = int_string (val_long, 10, 1, 0, 1); break;
307 val = int_string (val_long, 10, 0, 0, 1); break;
309 val = int_string (val_long, 16, 0, 0, use_c_format); break;
311 val = int_string (val_long, 16, 0, 2, 1); break;
313 val = int_string (val_long, 16, 0, 4, 1); break;
315 val = int_string (val_long, 16, 0, 8, 1); break;
317 val = int_string (val_long, 16, 0, 16, 1); break;
320 val = int_string (val_long, 8, 0, 0, use_c_format); break;
322 internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
324 fputs_filtered (val, stream);
327 /* This used to be a macro, but I don't think it is called often enough
328 to merit such treatment. */
329 /* Convert a LONGEST to an int. This is used in contexts (e.g. number of
330 arguments to a function, number in a value history, register number, etc.)
331 where the value must not be larger than can fit in an int. */
334 longest_to_int (LONGEST arg)
336 /* Let the compiler do the work */
337 int rtnval = (int) arg;
339 /* Check for overflows or underflows */
340 if (sizeof (LONGEST) > sizeof (int))
344 error (_("Value out of range."));
350 /* Print a floating point value of type TYPE (not always a
351 TYPE_CODE_FLT), pointed to in GDB by VALADDR, on STREAM. */
354 print_floating (const bfd_byte *valaddr, struct type *type,
355 struct ui_file *stream)
359 const struct floatformat *fmt = NULL;
360 unsigned len = TYPE_LENGTH (type);
362 /* If it is a floating-point, check for obvious problems. */
363 if (TYPE_CODE (type) == TYPE_CODE_FLT)
364 fmt = floatformat_from_type (type);
365 if (fmt != NULL && floatformat_is_nan (fmt, valaddr))
367 if (floatformat_is_negative (fmt, valaddr))
368 fprintf_filtered (stream, "-");
369 fprintf_filtered (stream, "nan(");
370 fputs_filtered ("0x", stream);
371 fputs_filtered (floatformat_mantissa (fmt, valaddr), stream);
372 fprintf_filtered (stream, ")");
376 /* NOTE: cagney/2002-01-15: The TYPE passed into print_floating()
377 isn't necessarily a TYPE_CODE_FLT. Consequently, unpack_double
378 needs to be used as that takes care of any necessary type
379 conversions. Such conversions are of course direct to DOUBLEST
380 and disregard any possible target floating point limitations.
381 For instance, a u64 would be converted and displayed exactly on a
382 host with 80 bit DOUBLEST but with loss of information on a host
383 with 64 bit DOUBLEST. */
385 doub = unpack_double (type, valaddr, &inv);
388 fprintf_filtered (stream, "<invalid float value>");
392 /* FIXME: kettenis/2001-01-20: The following code makes too much
393 assumptions about the host and target floating point format. */
395 /* NOTE: cagney/2002-02-03: Since the TYPE of what was passed in may
396 not necessarially be a TYPE_CODE_FLT, the below ignores that and
397 instead uses the type's length to determine the precision of the
398 floating-point value being printed. */
400 if (len < sizeof (double))
401 fprintf_filtered (stream, "%.9g", (double) doub);
402 else if (len == sizeof (double))
403 fprintf_filtered (stream, "%.17g", (double) doub);
405 #ifdef PRINTF_HAS_LONG_DOUBLE
406 fprintf_filtered (stream, "%.35Lg", doub);
408 /* This at least wins with values that are representable as
410 fprintf_filtered (stream, "%.17g", (double) doub);
415 print_binary_chars (struct ui_file *stream, const bfd_byte *valaddr,
419 #define BITS_IN_BYTES 8
425 /* Declared "int" so it will be signed.
426 * This ensures that right shift will shift in zeros.
428 const int mask = 0x080;
430 /* FIXME: We should be not printing leading zeroes in most cases. */
432 if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
438 /* Every byte has 8 binary characters; peel off
439 * and print from the MSB end.
441 for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
443 if (*p & (mask >> i))
448 fprintf_filtered (stream, "%1d", b);
454 for (p = valaddr + len - 1;
458 for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
460 if (*p & (mask >> i))
465 fprintf_filtered (stream, "%1d", b);
471 /* VALADDR points to an integer of LEN bytes.
472 * Print it in octal on stream or format it in buf.
475 print_octal_chars (struct ui_file *stream, const bfd_byte *valaddr,
479 unsigned char octa1, octa2, octa3, carry;
482 /* FIXME: We should be not printing leading zeroes in most cases. */
485 /* Octal is 3 bits, which doesn't fit. Yuk. So we have to track
486 * the extra bits, which cycle every three bytes:
490 * bit number 123 456 78 | 9 012 345 6 | 78 901 234 | 567 890 12 |
492 * Octal side: 0 1 carry 3 4 carry ...
494 * Cycle number: 0 1 2
496 * But of course we are printing from the high side, so we have to
497 * figure out where in the cycle we are so that we end up with no
498 * left over bits at the end.
500 #define BITS_IN_OCTAL 3
501 #define HIGH_ZERO 0340
502 #define LOW_ZERO 0016
503 #define CARRY_ZERO 0003
504 #define HIGH_ONE 0200
507 #define CARRY_ONE 0001
508 #define HIGH_TWO 0300
512 /* For 32 we start in cycle 2, with two bits and one bit carry;
513 * for 64 in cycle in cycle 1, with one bit and a two bit carry.
515 cycle = (len * BITS_IN_BYTES) % BITS_IN_OCTAL;
518 fputs_filtered ("0", stream);
519 if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
528 /* No carry in, carry out two bits.
530 octa1 = (HIGH_ZERO & *p) >> 5;
531 octa2 = (LOW_ZERO & *p) >> 2;
532 carry = (CARRY_ZERO & *p);
533 fprintf_filtered (stream, "%o", octa1);
534 fprintf_filtered (stream, "%o", octa2);
538 /* Carry in two bits, carry out one bit.
540 octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
541 octa2 = (MID_ONE & *p) >> 4;
542 octa3 = (LOW_ONE & *p) >> 1;
543 carry = (CARRY_ONE & *p);
544 fprintf_filtered (stream, "%o", octa1);
545 fprintf_filtered (stream, "%o", octa2);
546 fprintf_filtered (stream, "%o", octa3);
550 /* Carry in one bit, no carry out.
552 octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
553 octa2 = (MID_TWO & *p) >> 3;
554 octa3 = (LOW_TWO & *p);
556 fprintf_filtered (stream, "%o", octa1);
557 fprintf_filtered (stream, "%o", octa2);
558 fprintf_filtered (stream, "%o", octa3);
562 error (_("Internal error in octal conversion;"));
566 cycle = cycle % BITS_IN_OCTAL;
571 for (p = valaddr + len - 1;
578 /* Carry out, no carry in */
579 octa1 = (HIGH_ZERO & *p) >> 5;
580 octa2 = (LOW_ZERO & *p) >> 2;
581 carry = (CARRY_ZERO & *p);
582 fprintf_filtered (stream, "%o", octa1);
583 fprintf_filtered (stream, "%o", octa2);
587 /* Carry in, carry out */
588 octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
589 octa2 = (MID_ONE & *p) >> 4;
590 octa3 = (LOW_ONE & *p) >> 1;
591 carry = (CARRY_ONE & *p);
592 fprintf_filtered (stream, "%o", octa1);
593 fprintf_filtered (stream, "%o", octa2);
594 fprintf_filtered (stream, "%o", octa3);
598 /* Carry in, no carry out */
599 octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
600 octa2 = (MID_TWO & *p) >> 3;
601 octa3 = (LOW_TWO & *p);
603 fprintf_filtered (stream, "%o", octa1);
604 fprintf_filtered (stream, "%o", octa2);
605 fprintf_filtered (stream, "%o", octa3);
609 error (_("Internal error in octal conversion;"));
613 cycle = cycle % BITS_IN_OCTAL;
619 /* VALADDR points to an integer of LEN bytes.
620 * Print it in decimal on stream or format it in buf.
623 print_decimal_chars (struct ui_file *stream, const bfd_byte *valaddr,
627 #define TWO_TO_FOURTH 16
628 #define CARRY_OUT( x ) ((x) / TEN) /* extend char to int */
629 #define CARRY_LEFT( x ) ((x) % TEN)
630 #define SHIFT( x ) ((x) << 4)
632 ((TARGET_BYTE_ORDER == BFD_ENDIAN_BIG) ? valaddr : valaddr + len - 1)
634 ((TARGET_BYTE_ORDER == BFD_ENDIAN_BIG) ? (p < valaddr + len) : (p >= valaddr))
636 ((TARGET_BYTE_ORDER == BFD_ENDIAN_BIG) ? p++ : p-- )
637 #define LOW_NIBBLE( x ) ( (x) & 0x00F)
638 #define HIGH_NIBBLE( x ) (((x) & 0x0F0) >> 4)
641 unsigned char *digits;
644 int i, j, decimal_digits;
648 /* Base-ten number is less than twice as many digits
649 * as the base 16 number, which is 2 digits per byte.
651 decimal_len = len * 2 * 2;
652 digits = xmalloc (decimal_len);
654 for (i = 0; i < decimal_len; i++)
659 /* Ok, we have an unknown number of bytes of data to be printed in
662 * Given a hex number (in nibbles) as XYZ, we start by taking X and
663 * decemalizing it as "x1 x2" in two decimal nibbles. Then we multiply
664 * the nibbles by 16, add Y and re-decimalize. Repeat with Z.
666 * The trick is that "digits" holds a base-10 number, but sometimes
667 * the individual digits are > 10.
669 * Outer loop is per nibble (hex digit) of input, from MSD end to
672 decimal_digits = 0; /* Number of decimal digits so far */
678 * Multiply current base-ten number by 16 in place.
679 * Each digit was between 0 and 9, now is between
682 for (j = 0; j < decimal_digits; j++)
684 digits[j] = SHIFT (digits[j]);
687 /* Take the next nibble off the input and add it to what
688 * we've got in the LSB position. Bottom 'digit' is now
691 * "flip" is used to run this loop twice for each byte.
697 digits[0] += HIGH_NIBBLE (*p);
702 /* Take low nibble and bump our pointer "p".
704 digits[0] += LOW_NIBBLE (*p);
709 /* Re-decimalize. We have to do this often enough
710 * that we don't overflow, but once per nibble is
711 * overkill. Easier this way, though. Note that the
712 * carry is often larger than 10 (e.g. max initial
713 * carry out of lowest nibble is 15, could bubble all
714 * the way up greater than 10). So we have to do
715 * the carrying beyond the last current digit.
718 for (j = 0; j < decimal_len - 1; j++)
722 /* "/" won't handle an unsigned char with
723 * a value that if signed would be negative.
724 * So extend to longword int via "dummy".
727 carry = CARRY_OUT (dummy);
728 digits[j] = CARRY_LEFT (dummy);
730 if (j >= decimal_digits && carry == 0)
733 * All higher digits are 0 and we
734 * no longer have a carry.
736 * Note: "j" is 0-based, "decimal_digits" is
739 decimal_digits = j + 1;
745 /* Ok, now "digits" is the decimal representation, with
746 * the "decimal_digits" actual digits. Print!
748 for (i = decimal_digits - 1; i >= 0; i--)
750 fprintf_filtered (stream, "%1d", digits[i]);
755 /* VALADDR points to an integer of LEN bytes. Print it in hex on stream. */
758 print_hex_chars (struct ui_file *stream, const bfd_byte *valaddr,
763 /* FIXME: We should be not printing leading zeroes in most cases. */
765 fputs_filtered ("0x", stream);
766 if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
772 fprintf_filtered (stream, "%02x", *p);
777 for (p = valaddr + len - 1;
781 fprintf_filtered (stream, "%02x", *p);
786 /* VALADDR points to a char integer of LEN bytes. Print it out in appropriate language form on stream.
787 Omit any leading zero chars. */
790 print_char_chars (struct ui_file *stream, const bfd_byte *valaddr,
795 if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
798 while (p < valaddr + len - 1 && *p == 0)
801 while (p < valaddr + len)
803 LA_EMIT_CHAR (*p, stream, '\'');
809 p = valaddr + len - 1;
810 while (p > valaddr && *p == 0)
815 LA_EMIT_CHAR (*p, stream, '\'');
821 /* Called by various <lang>_val_print routines to print elements of an
822 array in the form "<elem1>, <elem2>, <elem3>, ...".
824 (FIXME?) Assumes array element separator is a comma, which is correct
825 for all languages currently handled.
826 (FIXME?) Some languages have a notation for repeated array elements,
827 perhaps we should try to use that notation when appropriate.
831 val_print_array_elements (struct type *type, const bfd_byte *valaddr,
832 CORE_ADDR address, struct ui_file *stream,
833 int format, int deref_ref,
834 int recurse, enum val_prettyprint pretty,
837 unsigned int things_printed = 0;
839 struct type *elttype;
841 /* Position of the array element we are examining to see
842 whether it is repeated. */
844 /* Number of repetitions we have detected so far. */
847 elttype = TYPE_TARGET_TYPE (type);
848 eltlen = TYPE_LENGTH (check_typedef (elttype));
849 len = TYPE_LENGTH (type) / eltlen;
851 annotate_array_section_begin (i, elttype);
853 for (; i < len && things_printed < print_max; i++)
857 if (prettyprint_arrays)
859 fprintf_filtered (stream, ",\n");
860 print_spaces_filtered (2 + 2 * recurse, stream);
864 fprintf_filtered (stream, ", ");
867 wrap_here (n_spaces (2 + 2 * recurse));
871 while ((rep1 < len) &&
872 !memcmp (valaddr + i * eltlen, valaddr + rep1 * eltlen, eltlen))
878 if (reps > repeat_count_threshold)
880 val_print (elttype, valaddr + i * eltlen, 0, 0, stream, format,
881 deref_ref, recurse + 1, pretty);
882 annotate_elt_rep (reps);
883 fprintf_filtered (stream, " <repeats %u times>", reps);
884 annotate_elt_rep_end ();
887 things_printed += repeat_count_threshold;
891 val_print (elttype, valaddr + i * eltlen, 0, 0, stream, format,
892 deref_ref, recurse + 1, pretty);
897 annotate_array_section_end ();
900 fprintf_filtered (stream, "...");
904 /* Read LEN bytes of target memory at address MEMADDR, placing the
905 results in GDB's memory at MYADDR. Returns a count of the bytes
906 actually read, and optionally an errno value in the location
907 pointed to by ERRNOPTR if ERRNOPTR is non-null. */
909 /* FIXME: cagney/1999-10-14: Only used by val_print_string. Can this
910 function be eliminated. */
913 partial_memory_read (CORE_ADDR memaddr, char *myaddr, int len, int *errnoptr)
915 int nread; /* Number of bytes actually read. */
916 int errcode; /* Error from last read. */
918 /* First try a complete read. */
919 errcode = target_read_memory (memaddr, myaddr, len);
927 /* Loop, reading one byte at a time until we get as much as we can. */
928 for (errcode = 0, nread = 0; len > 0 && errcode == 0; nread++, len--)
930 errcode = target_read_memory (memaddr++, myaddr++, 1);
932 /* If an error, the last read was unsuccessful, so adjust count. */
938 if (errnoptr != NULL)
945 /* Print a string from the inferior, starting at ADDR and printing up to LEN
946 characters, of WIDTH bytes a piece, to STREAM. If LEN is -1, printing
947 stops at the first null byte, otherwise printing proceeds (including null
948 bytes) until either print_max or LEN characters have been printed,
949 whichever is smaller. */
951 /* FIXME: Use target_read_string. */
954 val_print_string (CORE_ADDR addr, int len, int width, struct ui_file *stream)
956 int force_ellipsis = 0; /* Force ellipsis to be printed if nonzero. */
957 int errcode; /* Errno returned from bad reads. */
958 unsigned int fetchlimit; /* Maximum number of chars to print. */
959 unsigned int nfetch; /* Chars to fetch / chars fetched. */
960 unsigned int chunksize; /* Size of each fetch, in chars. */
961 char *buffer = NULL; /* Dynamically growable fetch buffer. */
962 char *bufptr; /* Pointer to next available byte in buffer. */
963 char *limit; /* First location past end of fetch buffer. */
964 struct cleanup *old_chain = NULL; /* Top of the old cleanup chain. */
965 int found_nul; /* Non-zero if we found the nul char */
967 /* First we need to figure out the limit on the number of characters we are
968 going to attempt to fetch and print. This is actually pretty simple. If
969 LEN >= zero, then the limit is the minimum of LEN and print_max. If
970 LEN is -1, then the limit is print_max. This is true regardless of
971 whether print_max is zero, UINT_MAX (unlimited), or something in between,
972 because finding the null byte (or available memory) is what actually
975 fetchlimit = (len == -1 ? print_max : min (len, print_max));
977 /* Now decide how large of chunks to try to read in one operation. This
978 is also pretty simple. If LEN >= zero, then we want fetchlimit chars,
979 so we might as well read them all in one operation. If LEN is -1, we
980 are looking for a null terminator to end the fetching, so we might as
981 well read in blocks that are large enough to be efficient, but not so
982 large as to be slow if fetchlimit happens to be large. So we choose the
983 minimum of 8 and fetchlimit. We used to use 200 instead of 8 but
984 200 is way too big for remote debugging over a serial line. */
986 chunksize = (len == -1 ? min (8, fetchlimit) : fetchlimit);
988 /* Loop until we either have all the characters to print, or we encounter
989 some error, such as bumping into the end of the address space. */
992 old_chain = make_cleanup (null_cleanup, 0);
996 buffer = (char *) xmalloc (len * width);
998 old_chain = make_cleanup (xfree, buffer);
1000 nfetch = partial_memory_read (addr, bufptr, len * width, &errcode)
1002 addr += nfetch * width;
1003 bufptr += nfetch * width;
1007 unsigned long bufsize = 0;
1011 nfetch = min (chunksize, fetchlimit - bufsize);
1014 buffer = (char *) xmalloc (nfetch * width);
1017 discard_cleanups (old_chain);
1018 buffer = (char *) xrealloc (buffer, (nfetch + bufsize) * width);
1021 old_chain = make_cleanup (xfree, buffer);
1022 bufptr = buffer + bufsize * width;
1025 /* Read as much as we can. */
1026 nfetch = partial_memory_read (addr, bufptr, nfetch * width, &errcode)
1029 /* Scan this chunk for the null byte that terminates the string
1030 to print. If found, we don't need to fetch any more. Note
1031 that bufptr is explicitly left pointing at the next character
1032 after the null byte, or at the next character after the end of
1035 limit = bufptr + nfetch * width;
1036 while (bufptr < limit)
1040 c = extract_unsigned_integer (bufptr, width);
1045 /* We don't care about any error which happened after
1046 the NULL terminator. */
1053 while (errcode == 0 /* no error */
1054 && bufptr - buffer < fetchlimit * width /* no overrun */
1055 && !found_nul); /* haven't found nul yet */
1058 { /* length of string is really 0! */
1059 buffer = bufptr = NULL;
1063 /* bufptr and addr now point immediately beyond the last byte which we
1064 consider part of the string (including a '\0' which ends the string). */
1066 /* We now have either successfully filled the buffer to fetchlimit, or
1067 terminated early due to an error or finding a null char when LEN is -1. */
1069 if (len == -1 && !found_nul)
1073 /* We didn't find a null terminator we were looking for. Attempt
1074 to peek at the next character. If not successful, or it is not
1075 a null byte, then force ellipsis to be printed. */
1077 peekbuf = (char *) alloca (width);
1079 if (target_read_memory (addr, peekbuf, width) == 0
1080 && extract_unsigned_integer (peekbuf, width) != 0)
1083 else if ((len >= 0 && errcode != 0) || (len > (bufptr - buffer) / width))
1085 /* Getting an error when we have a requested length, or fetching less
1086 than the number of characters actually requested, always make us
1093 /* If we get an error before fetching anything, don't print a string.
1094 But if we fetch something and then get an error, print the string
1095 and then the error message. */
1096 if (errcode == 0 || bufptr > buffer)
1100 fputs_filtered (" ", stream);
1102 LA_PRINT_STRING (stream, buffer, (bufptr - buffer) / width, width, force_ellipsis);
1109 fprintf_filtered (stream, " <Address ");
1110 deprecated_print_address_numeric (addr, 1, stream);
1111 fprintf_filtered (stream, " out of bounds>");
1115 fprintf_filtered (stream, " <Error reading address ");
1116 deprecated_print_address_numeric (addr, 1, stream);
1117 fprintf_filtered (stream, ": %s>", safe_strerror (errcode));
1121 do_cleanups (old_chain);
1122 return ((bufptr - buffer) / width);
1126 /* Validate an input or output radix setting, and make sure the user
1127 knows what they really did here. Radix setting is confusing, e.g.
1128 setting the input radix to "10" never changes it! */
1131 set_input_radix (char *args, int from_tty, struct cmd_list_element *c)
1133 set_input_radix_1 (from_tty, input_radix);
1137 set_input_radix_1 (int from_tty, unsigned radix)
1139 /* We don't currently disallow any input radix except 0 or 1, which don't
1140 make any mathematical sense. In theory, we can deal with any input
1141 radix greater than 1, even if we don't have unique digits for every
1142 value from 0 to radix-1, but in practice we lose on large radix values.
1143 We should either fix the lossage or restrict the radix range more.
1148 /* FIXME: cagney/2002-03-17: This needs to revert the bad radix
1150 error (_("Nonsense input radix ``decimal %u''; input radix unchanged."),
1153 input_radix = radix;
1156 printf_filtered (_("Input radix now set to decimal %u, hex %x, octal %o.\n"),
1157 radix, radix, radix);
1162 set_output_radix (char *args, int from_tty, struct cmd_list_element *c)
1164 set_output_radix_1 (from_tty, output_radix);
1168 set_output_radix_1 (int from_tty, unsigned radix)
1170 /* Validate the radix and disallow ones that we aren't prepared to
1171 handle correctly, leaving the radix unchanged. */
1175 output_format = 'x'; /* hex */
1178 output_format = 0; /* decimal */
1181 output_format = 'o'; /* octal */
1184 /* FIXME: cagney/2002-03-17: This needs to revert the bad radix
1186 error (_("Unsupported output radix ``decimal %u''; output radix unchanged."),
1189 output_radix = radix;
1192 printf_filtered (_("Output radix now set to decimal %u, hex %x, octal %o.\n"),
1193 radix, radix, radix);
1197 /* Set both the input and output radix at once. Try to set the output radix
1198 first, since it has the most restrictive range. An radix that is valid as
1199 an output radix is also valid as an input radix.
1201 It may be useful to have an unusual input radix. If the user wishes to
1202 set an input radix that is not valid as an output radix, he needs to use
1203 the 'set input-radix' command. */
1206 set_radix (char *arg, int from_tty)
1210 radix = (arg == NULL) ? 10 : parse_and_eval_long (arg);
1211 set_output_radix_1 (0, radix);
1212 set_input_radix_1 (0, radix);
1215 printf_filtered (_("Input and output radices now set to decimal %u, hex %x, octal %o.\n"),
1216 radix, radix, radix);
1220 /* Show both the input and output radices. */
1223 show_radix (char *arg, int from_tty)
1227 if (input_radix == output_radix)
1229 printf_filtered (_("Input and output radices set to decimal %u, hex %x, octal %o.\n"),
1230 input_radix, input_radix, input_radix);
1234 printf_filtered (_("Input radix set to decimal %u, hex %x, octal %o.\n"),
1235 input_radix, input_radix, input_radix);
1236 printf_filtered (_("Output radix set to decimal %u, hex %x, octal %o.\n"),
1237 output_radix, output_radix, output_radix);
1244 set_print (char *arg, int from_tty)
1247 "\"set print\" must be followed by the name of a print subcommand.\n");
1248 help_list (setprintlist, "set print ", -1, gdb_stdout);
1252 show_print (char *args, int from_tty)
1254 cmd_show_list (showprintlist, from_tty, "");
1258 _initialize_valprint (void)
1260 struct cmd_list_element *c;
1262 add_prefix_cmd ("print", no_class, set_print,
1263 _("Generic command for setting how things print."),
1264 &setprintlist, "set print ", 0, &setlist);
1265 add_alias_cmd ("p", "print", no_class, 1, &setlist);
1266 /* prefer set print to set prompt */
1267 add_alias_cmd ("pr", "print", no_class, 1, &setlist);
1269 add_prefix_cmd ("print", no_class, show_print,
1270 _("Generic command for showing print settings."),
1271 &showprintlist, "show print ", 0, &showlist);
1272 add_alias_cmd ("p", "print", no_class, 1, &showlist);
1273 add_alias_cmd ("pr", "print", no_class, 1, &showlist);
1275 add_setshow_uinteger_cmd ("elements", no_class, &print_max, _("\
1276 Set limit on string chars or array elements to print."), _("\
1277 Show limit on string chars or array elements to print."), _("\
1278 \"set print elements 0\" causes there to be no limit."),
1281 &setprintlist, &showprintlist);
1283 add_setshow_boolean_cmd ("null-stop", no_class, &stop_print_at_null, _("\
1284 Set printing of char arrays to stop at first null char."), _("\
1285 Show printing of char arrays to stop at first null char."), NULL,
1287 show_stop_print_at_null,
1288 &setprintlist, &showprintlist);
1290 add_setshow_uinteger_cmd ("repeats", no_class,
1291 &repeat_count_threshold, _("\
1292 Set threshold for repeated print elements."), _("\
1293 Show threshold for repeated print elements."), _("\
1294 \"set print repeats 0\" causes all elements to be individually printed."),
1296 show_repeat_count_threshold,
1297 &setprintlist, &showprintlist);
1299 add_setshow_boolean_cmd ("pretty", class_support, &prettyprint_structs, _("\
1300 Set prettyprinting of structures."), _("\
1301 Show prettyprinting of structures."), NULL,
1303 show_prettyprint_structs,
1304 &setprintlist, &showprintlist);
1306 add_setshow_boolean_cmd ("union", class_support, &unionprint, _("\
1307 Set printing of unions interior to structures."), _("\
1308 Show printing of unions interior to structures."), NULL,
1311 &setprintlist, &showprintlist);
1313 add_setshow_boolean_cmd ("array", class_support, &prettyprint_arrays, _("\
1314 Set prettyprinting of arrays."), _("\
1315 Show prettyprinting of arrays."), NULL,
1317 show_prettyprint_arrays,
1318 &setprintlist, &showprintlist);
1320 add_setshow_boolean_cmd ("address", class_support, &addressprint, _("\
1321 Set printing of addresses."), _("\
1322 Show printing of addresses."), NULL,
1325 &setprintlist, &showprintlist);
1327 add_setshow_uinteger_cmd ("input-radix", class_support, &input_radix, _("\
1328 Set default input radix for entering numbers."), _("\
1329 Show default input radix for entering numbers."), NULL,
1332 &setlist, &showlist);
1334 add_setshow_uinteger_cmd ("output-radix", class_support, &output_radix, _("\
1335 Set default output radix for printing of values."), _("\
1336 Show default output radix for printing of values."), NULL,
1339 &setlist, &showlist);
1341 /* The "set radix" and "show radix" commands are special in that
1342 they are like normal set and show commands but allow two normally
1343 independent variables to be either set or shown with a single
1344 command. So the usual deprecated_add_set_cmd() and [deleted]
1345 add_show_from_set() commands aren't really appropriate. */
1346 /* FIXME: i18n: With the new add_setshow_integer command, that is no
1347 longer true - show can display anything. */
1348 add_cmd ("radix", class_support, set_radix, _("\
1349 Set default input and output number radices.\n\
1350 Use 'set input-radix' or 'set output-radix' to independently set each.\n\
1351 Without an argument, sets both radices back to the default value of 10."),
1353 add_cmd ("radix", class_support, show_radix, _("\
1354 Show the default input and output number radices.\n\
1355 Use 'show input-radix' or 'show output-radix' to independently show each."),
1358 /* Give people the defaults which they are used to. */
1359 prettyprint_structs = 0;
1360 prettyprint_arrays = 0;
1363 print_max = PRINT_MAX_DEFAULT;