1 /* Print values for GDB, the GNU debugger.
2 Copyright 1986, 1988, 1989, 1991 Free Software Foundation, Inc.
4 This file is part of GDB.
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
35 /* Prototypes for local functions */
38 print_hex_chars PARAMS ((GDB_FILE *, unsigned char *, unsigned int));
41 show_print PARAMS ((char *, int));
44 set_print PARAMS ((char *, int));
47 set_radix PARAMS ((char *, int));
50 show_radix PARAMS ((char *, int));
53 set_input_radix PARAMS ((char *, int, struct cmd_list_element *));
56 set_input_radix_1 PARAMS ((int, unsigned));
59 set_output_radix PARAMS ((char *, int, struct cmd_list_element *));
62 set_output_radix_1 PARAMS ((int, unsigned));
64 static void value_print_array_elements PARAMS ((value_ptr, GDB_FILE *, int,
65 enum val_prettyprint));
67 /* Maximum number of chars to print for a string pointer value or vector
68 contents, or UINT_MAX for no limit. Note that "set print elements 0"
69 stores UINT_MAX in print_max, which displays in a show command as
72 unsigned int print_max;
73 #define PRINT_MAX_DEFAULT 200 /* Start print_max off at this value. */
75 /* Default input and output radixes, and output format letter. */
77 unsigned input_radix = 10;
78 unsigned output_radix = 10;
79 int output_format = 0;
81 /* Print repeat counts if there are more than this many repetitions of an
82 element in an array. Referenced by the low level language dependent
85 unsigned int repeat_count_threshold = 10;
87 int prettyprint_structs; /* Controls pretty printing of structures */
88 int prettyprint_arrays; /* Controls pretty printing of arrays. */
90 /* If nonzero, causes unions inside structures or other unions to be
93 int unionprint; /* Controls printing of nested unions. */
95 /* If nonzero, causes machine addresses to be printed in certain contexts. */
97 int addressprint; /* Controls printing of machine addresses */
100 /* Print data of type TYPE located at VALADDR (within GDB), which came from
101 the inferior at address ADDRESS, onto stdio stream STREAM according to
102 FORMAT (a letter, or 0 for natural format using TYPE).
104 If DEREF_REF is nonzero, then dereference references, otherwise just print
107 The PRETTY parameter controls prettyprinting.
109 If the data are a string pointer, returns the number of string characters
112 FIXME: The data at VALADDR is in target byte order. If gdb is ever
113 enhanced to be able to debug more than the single target it was compiled
114 for (specific CPU type and thus specific target byte ordering), then
115 either the print routines are going to have to take this into account,
116 or the data is going to have to be passed into here already converted
117 to the host byte ordering, whichever is more convenient. */
121 val_print (type, valaddr, address, stream, format, deref_ref, recurse, pretty)
129 enum val_prettyprint pretty;
131 if (pretty == Val_pretty_default)
133 pretty = prettyprint_structs ? Val_prettyprint : Val_no_prettyprint;
138 /* Ensure that the type is complete and not just a stub. If the type is
139 only a stub and we can't find and substitute its complete type, then
140 print appropriate string and return. */
142 check_stub_type (type);
143 if (TYPE_FLAGS (type) & TYPE_FLAG_STUB)
145 fprintf_filtered (stream, "<incomplete type>");
150 return (LA_VAL_PRINT (type, valaddr, address, stream, format, deref_ref,
154 /* Print the value VAL in C-ish syntax on stream STREAM.
155 FORMAT is a format-letter, or 0 for print in natural format of data type.
156 If the object printed is a string pointer, returns
157 the number of string bytes printed. */
160 value_print (val, stream, format, pretty)
164 enum val_prettyprint pretty;
166 register unsigned int n, typelen;
170 printf_filtered ("<address of value unknown>");
173 if (VALUE_OPTIMIZED_OUT (val))
175 printf_filtered ("<value optimized out>");
179 /* A "repeated" value really contains several values in a row.
180 They are made by the @ operator.
181 Print such values as if they were arrays. */
183 if (VALUE_REPEATED (val))
185 n = VALUE_REPETITIONS (val);
186 typelen = TYPE_LENGTH (VALUE_TYPE (val));
187 fprintf_filtered (stream, "{");
188 /* Print arrays of characters using string syntax. */
189 if (typelen == 1 && TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_INT
191 LA_PRINT_STRING (stream, VALUE_CONTENTS (val), n, 0);
194 value_print_array_elements (val, stream, format, pretty);
196 fprintf_filtered (stream, "}");
197 return (n * typelen);
201 struct type *type = VALUE_TYPE (val);
203 /* If it is a pointer, indicate what it points to.
205 Print type also if it is a reference.
207 C++: if it is a member pointer, we will take care
208 of that when we print it. */
209 if (TYPE_CODE (type) == TYPE_CODE_PTR ||
210 TYPE_CODE (type) == TYPE_CODE_REF)
212 /* Hack: remove (char *) for char strings. Their
213 type is indicated by the quoted string anyway. */
214 if (TYPE_CODE (type) == TYPE_CODE_PTR &&
215 TYPE_LENGTH (TYPE_TARGET_TYPE (type)) == sizeof(char) &&
216 TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_INT &&
217 !TYPE_UNSIGNED (TYPE_TARGET_TYPE (type)))
223 fprintf_filtered (stream, "(");
224 type_print (type, "", stream, -1);
225 fprintf_filtered (stream, ") ");
228 return (val_print (type, VALUE_CONTENTS (val),
229 VALUE_ADDRESS (val), stream, format, 1, 0, pretty));
233 /* Called by various <lang>_val_print routines to print TYPE_CODE_INT's */
236 val_print_type_code_int (type, valaddr, stream)
242 /* Pointer to first (i.e. lowest address) nonzero character. */
246 if (TYPE_LENGTH (type) > sizeof (LONGEST))
248 if (TYPE_UNSIGNED (type))
250 /* First figure out whether the number in fact has zeros
251 in all its bytes more significant than least significant
252 sizeof (LONGEST) ones. */
253 len = TYPE_LENGTH (type);
255 #if TARGET_BYTE_ORDER == BIG_ENDIAN
257 len > sizeof (LONGEST) && p < valaddr + TYPE_LENGTH (type);
259 #else /* Little endian. */
260 first_addr = valaddr;
261 for (p = valaddr + TYPE_LENGTH (type) - 1;
262 len > sizeof (LONGEST) && p >= valaddr;
264 #endif /* Little endian. */
275 #if TARGET_BYTE_ORDER == BIG_ENDIAN
278 if (len <= sizeof (LONGEST))
280 /* The most significant bytes are zero, so we can just get
281 the least significant sizeof (LONGEST) bytes and print it
283 print_longest (stream, 'u', 0,
284 extract_unsigned_integer (first_addr,
289 /* It is big, so print it in hex. */
290 print_hex_chars (stream, (unsigned char *) first_addr, len);
295 /* Signed. One could assume two's complement (a reasonable
296 assumption, I think) and do better than this. */
297 print_hex_chars (stream, (unsigned char *) valaddr,
303 #ifdef PRINT_TYPELESS_INTEGER
304 PRINT_TYPELESS_INTEGER (stream, type, unpack_long (type, valaddr));
306 print_longest (stream, TYPE_UNSIGNED (type) ? 'u' : 'd', 0,
307 unpack_long (type, valaddr));
312 /* Print a number according to FORMAT which is one of d,u,x,o,b,h,w,g.
313 The raison d'etre of this function is to consolidate printing of LONG_LONG's
314 into this one function. Some platforms have long longs but don't have a
315 printf() that supports "ll" in the format string. We handle these by seeing
316 if the number is actually a long, and if not we just bail out and print the
317 number in hex. The format chars b,h,w,g are from
318 print_scalar_formatted(). If USE_LOCAL, format it according to the current
319 language (this should be used for most integers which GDB prints, the
320 exception is things like protocols where the format of the integer is
321 a protocol thing, not a user-visible thing). */
324 print_longest (stream, format, use_local, val_long)
330 #if defined (CC_HAS_LONG_LONG) && !defined (PRINTF_HAS_LONG_LONG)
333 vtop = val_long >> (sizeof (long) * HOST_CHAR_BIT);
334 vbot = (long) val_long;
336 if ((format == 'd' && (val_long < INT_MIN || val_long > INT_MAX))
337 || ((format == 'u' || format == 'x') && (unsigned long long)val_long > UINT_MAX))
339 fprintf_filtered (stream, "0x%lx%08lx", vtop, vbot);
344 #ifdef PRINTF_HAS_LONG_LONG
348 fprintf_filtered (stream,
349 use_local ? local_decimal_format_custom ("ll")
354 fprintf_filtered (stream, "%llu", val_long);
357 fprintf_filtered (stream,
358 use_local ? local_hex_format_custom ("ll")
363 fprintf_filtered (stream,
364 use_local ? local_octal_format_custom ("ll")
368 fprintf_filtered (stream, local_hex_format_custom ("02ll"), val_long);
371 fprintf_filtered (stream, local_hex_format_custom ("04ll"), val_long);
374 fprintf_filtered (stream, local_hex_format_custom ("08ll"), val_long);
377 fprintf_filtered (stream, local_hex_format_custom ("016ll"), val_long);
382 #else /* !PRINTF_HAS_LONG_LONG */
383 /* In the following it is important to coerce (val_long) to a long. It does
384 nothing if !LONG_LONG, but it will chop off the top half (which we know
385 we can ignore) if the host supports long longs. */
390 fprintf_filtered (stream,
391 use_local ? local_decimal_format_custom ("l")
396 fprintf_filtered (stream, "%lu", (unsigned long) val_long);
399 fprintf_filtered (stream,
400 use_local ? local_hex_format_custom ("l")
405 fprintf_filtered (stream,
406 use_local ? local_octal_format_custom ("l")
411 fprintf_filtered (stream, local_hex_format_custom ("02l"),
415 fprintf_filtered (stream, local_hex_format_custom ("04l"),
419 fprintf_filtered (stream, local_hex_format_custom ("08l"),
423 fprintf_filtered (stream, local_hex_format_custom ("016l"),
429 #endif /* !PRINTF_HAS_LONG_LONG */
432 /* This used to be a macro, but I don't think it is called often enough
433 to merit such treatment. */
434 /* Convert a LONGEST to an int. This is used in contexts (e.g. number of
435 arguments to a function, number in a value history, register number, etc.)
436 where the value must not be larger than can fit in an int. */
443 /* This check is in case a system header has botched the
444 definition of INT_MIN, like on BSDI. */
445 if (sizeof (LONGEST) <= sizeof (int))
448 if (arg > INT_MAX || arg < INT_MIN)
449 error ("Value out of range.");
454 /* Print a floating point value of type TYPE, pointed to in GDB by VALADDR,
458 print_floating (valaddr, type, stream)
465 unsigned len = TYPE_LENGTH (type);
467 #if defined (IEEE_FLOAT)
469 /* Check for NaN's. Note that this code does not depend on us being
470 on an IEEE conforming system. It only depends on the target
471 machine using IEEE representation. This means (a)
472 cross-debugging works right, and (2) IEEE_FLOAT can (and should)
473 be defined for systems like the 68881, which uses IEEE
474 representation, but is not IEEE conforming. */
477 unsigned long low, high;
478 /* Is the sign bit 0? */
480 /* Is it is a NaN (i.e. the exponent is all ones and
481 the fraction is nonzero)? */
486 /* It's single precision. */
487 /* Assume that floating point byte order is the same as
488 integer byte order. */
489 low = extract_unsigned_integer (valaddr, 4);
490 nonnegative = ((low & 0x80000000) == 0);
491 is_nan = ((((low >> 23) & 0xFF) == 0xFF)
492 && 0 != (low & 0x7FFFFF));
498 /* It's double precision. Get the high and low words. */
500 /* Assume that floating point byte order is the same as
501 integer byte order. */
502 #if TARGET_BYTE_ORDER == BIG_ENDIAN
503 low = extract_unsigned_integer (valaddr + 4, 4);
504 high = extract_unsigned_integer (valaddr, 4);
506 low = extract_unsigned_integer (valaddr, 4);
507 high = extract_unsigned_integer (valaddr + 4, 4);
509 nonnegative = ((high & 0x80000000) == 0);
510 is_nan = (((high >> 20) & 0x7ff) == 0x7ff
511 && ! ((((high & 0xfffff) == 0)) && (low == 0)));
515 /* Extended. We can't detect NaNs for extendeds yet. Also note
516 that currently extendeds get nuked to double in
517 REGISTER_CONVERTIBLE. */
522 /* The meaning of the sign and fraction is not defined by IEEE.
523 But the user might know what they mean. For example, they
524 (in an implementation-defined manner) distinguish between
525 signaling and quiet NaN's. */
527 fprintf_filtered (stream, "-NaN(0x%lx%.8lx)" + nonnegative,
530 fprintf_filtered (stream, "-NaN(0x%lx)" + nonnegative, low);
534 #endif /* IEEE_FLOAT. */
536 doub = unpack_double (type, valaddr, &inv);
538 fprintf_filtered (stream, "<invalid float value>");
540 fprintf_filtered (stream, len <= sizeof(float) ? "%.9g" : "%.17g", doub);
543 /* VALADDR points to an integer of LEN bytes. Print it in hex on stream. */
546 print_hex_chars (stream, valaddr, len)
548 unsigned char *valaddr;
553 /* FIXME: We should be not printing leading zeroes in most cases. */
555 fprintf_filtered (stream, local_hex_format_prefix ());
556 #if TARGET_BYTE_ORDER == BIG_ENDIAN
560 #else /* Little endian. */
561 for (p = valaddr + len - 1;
566 fprintf_filtered (stream, "%02x", *p);
568 fprintf_filtered (stream, local_hex_format_suffix ());
571 /* Called by various <lang>_val_print routines to print elements of an
572 array in the form "<elem1>, <elem2>, <elem3>, ...".
574 (FIXME?) Assumes array element separator is a comma, which is correct
575 for all languages currently handled.
576 (FIXME?) Some languages have a notation for repeated array elements,
577 perhaps we should try to use that notation when appropriate.
581 val_print_array_elements (type, valaddr, address, stream, format, deref_ref,
590 enum val_prettyprint pretty;
593 unsigned int things_printed = 0;
595 struct type *elttype;
597 /* Position of the array element we are examining to see
598 whether it is repeated. */
600 /* Number of repetitions we have detected so far. */
603 elttype = TYPE_TARGET_TYPE (type);
604 eltlen = TYPE_LENGTH (elttype);
605 len = TYPE_LENGTH (type) / eltlen;
607 annotate_array_section_begin (i, elttype);
609 for (; i < len && things_printed < print_max; i++)
613 if (prettyprint_arrays)
615 fprintf_filtered (stream, ",\n");
616 print_spaces_filtered (2 + 2 * recurse, stream);
620 fprintf_filtered (stream, ", ");
623 wrap_here (n_spaces (2 + 2 * recurse));
627 while ((rep1 < len) &&
628 !memcmp (valaddr + i * eltlen, valaddr + rep1 * eltlen, eltlen))
634 if (reps > repeat_count_threshold)
636 val_print (elttype, valaddr + i * eltlen, 0, stream, format,
637 deref_ref, recurse + 1, pretty);
638 annotate_elt_rep (reps);
639 fprintf_filtered (stream, " <repeats %u times>", reps);
640 annotate_elt_rep_end ();
643 things_printed += repeat_count_threshold;
647 val_print (elttype, valaddr + i * eltlen, 0, stream, format,
648 deref_ref, recurse + 1, pretty);
653 annotate_array_section_end ();
656 fprintf_filtered (stream, "...");
661 value_print_array_elements (val, stream, format, pretty)
665 enum val_prettyprint pretty;
667 unsigned int things_printed = 0;
668 register unsigned int i, n, typelen;
669 /* Position of the array elem we are examining to see if it is repeated. */
671 /* Number of repetitions we have detected so far. */
674 n = VALUE_REPETITIONS (val);
675 typelen = TYPE_LENGTH (VALUE_TYPE (val));
676 for (i = 0; i < n && things_printed < print_max; i++)
680 fprintf_filtered (stream, ", ");
686 while (rep1 < n && !memcmp (VALUE_CONTENTS (val) + typelen * i,
687 VALUE_CONTENTS (val) + typelen * rep1,
694 if (reps > repeat_count_threshold)
696 val_print (VALUE_TYPE (val), VALUE_CONTENTS (val) + typelen * i,
697 VALUE_ADDRESS (val) + typelen * i, stream, format, 1,
699 fprintf_unfiltered (stream, " <repeats %u times>", reps);
701 things_printed += repeat_count_threshold;
705 val_print (VALUE_TYPE (val), VALUE_CONTENTS (val) + typelen * i,
706 VALUE_ADDRESS (val) + typelen * i, stream, format, 1,
713 fprintf_filtered (stream, "...");
717 /* Print a string from the inferior, starting at ADDR and printing up to LEN
718 characters, to STREAM. If LEN is zero, printing stops at the first null
719 byte, otherwise printing proceeds (including null bytes) until either
720 print_max or LEN characters have been printed, whichever is smaller. */
722 /* FIXME: All callers supply LEN of zero. Supplying a non-zero LEN is
723 pointless, this routine just then becomes a convoluted version of
724 target_read_memory_partial. Removing all the LEN stuff would simplify
725 this routine enormously.
727 FIXME: Use target_read_string. */
730 val_print_string (addr, len, stream)
735 int force_ellipsis = 0; /* Force ellipsis to be printed if nonzero. */
736 int errcode; /* Errno returned from bad reads. */
737 unsigned int fetchlimit; /* Maximum number of bytes to fetch. */
738 unsigned int nfetch; /* Bytes to fetch / bytes fetched. */
739 unsigned int chunksize; /* Size of each fetch, in bytes. */
740 int bufsize; /* Size of current fetch buffer. */
741 char *buffer = NULL; /* Dynamically growable fetch buffer. */
742 char *bufptr; /* Pointer to next available byte in buffer. */
743 char *limit; /* First location past end of fetch buffer. */
744 struct cleanup *old_chain = NULL; /* Top of the old cleanup chain. */
745 char peekchar; /* Place into which we can read one char. */
747 /* First we need to figure out the limit on the number of characters we are
748 going to attempt to fetch and print. This is actually pretty simple. If
749 LEN is nonzero, then the limit is the minimum of LEN and print_max. If
750 LEN is zero, then the limit is print_max. This is true regardless of
751 whether print_max is zero, UINT_MAX (unlimited), or something in between,
752 because finding the null byte (or available memory) is what actually
755 fetchlimit = (len == 0 ? print_max : min (len, print_max));
757 /* Now decide how large of chunks to try to read in one operation. This
758 is also pretty simple. If LEN is nonzero, then we want fetchlimit bytes,
759 so we might as well read them all in one operation. If LEN is zero, we
760 are looking for a null terminator to end the fetching, so we might as
761 well read in blocks that are large enough to be efficient, but not so
762 large as to be slow if fetchlimit happens to be large. So we choose the
763 minimum of 8 and fetchlimit. We used to use 200 instead of 8 but
764 200 is way too big for remote debugging over a serial line. */
766 chunksize = (len == 0 ? min (8, fetchlimit) : fetchlimit);
768 /* Loop until we either have all the characters to print, or we encounter
769 some error, such as bumping into the end of the address space. */
774 /* Figure out how much to fetch this time, and grow the buffer to fit. */
775 nfetch = min (chunksize, fetchlimit - bufsize);
779 buffer = (char *) xmalloc (bufsize);
784 discard_cleanups (old_chain);
785 buffer = (char *) xrealloc (buffer, bufsize);
786 bufptr = buffer + bufsize - nfetch;
788 old_chain = make_cleanup (free, buffer);
790 /* Read as much as we can. */
791 nfetch = target_read_memory_partial (addr, bufptr, nfetch, &errcode);
799 /* Scan this chunk for the null byte that terminates the string
800 to print. If found, we don't need to fetch any more. Note
801 that bufptr is explicitly left pointing at the next character
802 after the null byte, or at the next character after the end of
804 limit = bufptr + nfetch;
805 while (bufptr < limit)
809 if (bufptr[-1] == '\0')
811 /* We don't care about any error which happened after
812 the NULL terminator. */
818 } while (errcode == 0 /* no error */
819 && bufsize < fetchlimit /* no overrun */
820 && !(len == 0 && *(bufptr - 1) == '\0')); /* no null term */
822 /* bufptr and addr now point immediately beyond the last byte which we
823 consider part of the string (including a '\0' which ends the string). */
825 /* We now have either successfully filled the buffer to fetchlimit, or
826 terminated early due to an error or finding a null byte when LEN is
829 if (len == 0 && bufptr > buffer && *(bufptr - 1) != '\0')
831 /* We didn't find a null terminator we were looking for. Attempt
832 to peek at the next character. If not successful, or it is not
833 a null byte, then force ellipsis to be printed. */
834 if (target_read_memory (addr, &peekchar, 1) != 0 || peekchar != '\0')
839 else if ((len != 0 && errcode != 0) || (len > bufptr - buffer))
841 /* Getting an error when we have a requested length, or fetching less
842 than the number of characters actually requested, always make us
849 /* If we get an error before fetching anything, don't print a string.
850 But if we fetch something and then get an error, print the string
851 and then the error message. */
852 if (errcode == 0 || bufptr > buffer)
856 fputs_filtered (" ", stream);
858 LA_PRINT_STRING (stream, buffer, bufptr - buffer, force_ellipsis);
865 fprintf_filtered (stream, " <Address ");
866 print_address_numeric (addr, 1, stream);
867 fprintf_filtered (stream, " out of bounds>");
871 fprintf_filtered (stream, " <Error reading address ");
872 print_address_numeric (addr, 1, stream);
873 fprintf_filtered (stream, ": %s>", safe_strerror (errcode));
877 do_cleanups (old_chain);
878 return (bufptr - buffer);
882 /* Validate an input or output radix setting, and make sure the user
883 knows what they really did here. Radix setting is confusing, e.g.
884 setting the input radix to "10" never changes it! */
888 set_input_radix (args, from_tty, c)
891 struct cmd_list_element *c;
893 set_input_radix_1 (from_tty, *(unsigned *)c->var);
898 set_input_radix_1 (from_tty, radix)
902 /* We don't currently disallow any input radix except 0 or 1, which don't
903 make any mathematical sense. In theory, we can deal with any input
904 radix greater than 1, even if we don't have unique digits for every
905 value from 0 to radix-1, but in practice we lose on large radix values.
906 We should either fix the lossage or restrict the radix range more.
911 error ("Nonsense input radix ``decimal %u''; input radix unchanged.",
917 printf_filtered ("Input radix now set to decimal %u, hex %x, octal %o.\n",
918 radix, radix, radix);
924 set_output_radix (args, from_tty, c)
927 struct cmd_list_element *c;
929 set_output_radix_1 (from_tty, *(unsigned *)c->var);
933 set_output_radix_1 (from_tty, radix)
937 /* Validate the radix and disallow ones that we aren't prepared to
938 handle correctly, leaving the radix unchanged. */
942 output_format = 'x'; /* hex */
945 output_format = 0; /* decimal */
948 output_format = 'o'; /* octal */
951 error ("Unsupported output radix ``decimal %u''; output radix unchanged.",
954 output_radix = radix;
957 printf_filtered ("Output radix now set to decimal %u, hex %x, octal %o.\n",
958 radix, radix, radix);
962 /* Set both the input and output radix at once. Try to set the output radix
963 first, since it has the most restrictive range. An radix that is valid as
964 an output radix is also valid as an input radix.
966 It may be useful to have an unusual input radix. If the user wishes to
967 set an input radix that is not valid as an output radix, he needs to use
968 the 'set input-radix' command. */
971 set_radix (arg, from_tty)
977 radix = (arg == NULL) ? 10 : parse_and_eval_address (arg);
978 set_output_radix_1 (0, radix);
979 set_input_radix_1 (0, radix);
982 printf_filtered ("Input and output radices now set to decimal %u, hex %x, octal %o.\n",
983 radix, radix, radix);
987 /* Show both the input and output radices. */
991 show_radix (arg, from_tty)
997 if (input_radix == output_radix)
999 printf_filtered ("Input and output radices set to decimal %u, hex %x, octal %o.\n",
1000 input_radix, input_radix, input_radix);
1004 printf_filtered ("Input radix set to decimal %u, hex %x, octal %o.\n",
1005 input_radix, input_radix, input_radix);
1006 printf_filtered ("Output radix set to decimal %u, hex %x, octal %o.\n",
1007 output_radix, output_radix, output_radix);
1015 set_print (arg, from_tty)
1020 "\"set print\" must be followed by the name of a print subcommand.\n");
1021 help_list (setprintlist, "set print ", -1, gdb_stdout);
1026 show_print (args, from_tty)
1030 cmd_show_list (showprintlist, from_tty, "");
1034 _initialize_valprint ()
1036 struct cmd_list_element *c;
1038 add_prefix_cmd ("print", no_class, set_print,
1039 "Generic command for setting how things print.",
1040 &setprintlist, "set print ", 0, &setlist);
1041 add_alias_cmd ("p", "print", no_class, 1, &setlist);
1042 /* prefer set print to set prompt */
1043 add_alias_cmd ("pr", "print", no_class, 1, &setlist);
1045 add_prefix_cmd ("print", no_class, show_print,
1046 "Generic command for showing print settings.",
1047 &showprintlist, "show print ", 0, &showlist);
1048 add_alias_cmd ("p", "print", no_class, 1, &showlist);
1049 add_alias_cmd ("pr", "print", no_class, 1, &showlist);
1052 (add_set_cmd ("elements", no_class, var_uinteger, (char *)&print_max,
1053 "Set limit on string chars or array elements to print.\n\
1054 \"set print elements 0\" causes there to be no limit.",
1059 (add_set_cmd ("repeats", no_class, var_uinteger,
1060 (char *)&repeat_count_threshold,
1061 "Set threshold for repeated print elements.\n\
1062 \"set print repeats 0\" causes all elements to be individually printed.",
1067 (add_set_cmd ("pretty", class_support, var_boolean,
1068 (char *)&prettyprint_structs,
1069 "Set prettyprinting of structures.",
1074 (add_set_cmd ("union", class_support, var_boolean, (char *)&unionprint,
1075 "Set printing of unions interior to structures.",
1080 (add_set_cmd ("array", class_support, var_boolean,
1081 (char *)&prettyprint_arrays,
1082 "Set prettyprinting of arrays.",
1087 (add_set_cmd ("address", class_support, var_boolean, (char *)&addressprint,
1088 "Set printing of addresses.",
1092 c = add_set_cmd ("input-radix", class_support, var_uinteger,
1093 (char *)&input_radix,
1094 "Set default input radix for entering numbers.",
1096 add_show_from_set (c, &showlist);
1097 c->function.sfunc = set_input_radix;
1099 c = add_set_cmd ("output-radix", class_support, var_uinteger,
1100 (char *)&output_radix,
1101 "Set default output radix for printing of values.",
1103 add_show_from_set (c, &showlist);
1104 c->function.sfunc = set_output_radix;
1106 /* The "set radix" and "show radix" commands are special in that they are
1107 like normal set and show commands but allow two normally independent
1108 variables to be either set or shown with a single command. So the
1109 usual add_set_cmd() and add_show_from_set() commands aren't really
1111 add_cmd ("radix", class_support, set_radix,
1112 "Set default input and output number radices.\n\
1113 Use 'set input-radix' or 'set output-radix' to independently set each.\n\
1114 Without an argument, sets both radices back to the default value of 10.",
1116 add_cmd ("radix", class_support, show_radix,
1117 "Show the default input and output number radices.\n\
1118 Use 'show input-radix' or 'show output-radix' to independently show each.",
1121 /* Give people the defaults which they are used to. */
1122 prettyprint_structs = 0;
1123 prettyprint_arrays = 0;
1126 print_max = PRINT_MAX_DEFAULT;