gdb/
[deliverable/binutils-gdb.git] / gdb / valprint.c
1 /* Print values for GDB, the GNU debugger.
2
3 Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
4 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
5 2009, 2010, 2011 Free Software Foundation, Inc.
6
7 This file is part of GDB.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21
22 #include "defs.h"
23 #include "gdb_string.h"
24 #include "symtab.h"
25 #include "gdbtypes.h"
26 #include "value.h"
27 #include "gdbcore.h"
28 #include "gdbcmd.h"
29 #include "target.h"
30 #include "language.h"
31 #include "annotate.h"
32 #include "valprint.h"
33 #include "floatformat.h"
34 #include "doublest.h"
35 #include "exceptions.h"
36 #include "dfp.h"
37 #include "python/python.h"
38 #include "ada-lang.h"
39 #include "gdb_obstack.h"
40 #include "charset.h"
41 #include <ctype.h>
42
43 #include <errno.h>
44
45 /* Prototypes for local functions */
46
47 static int partial_memory_read (CORE_ADDR memaddr, gdb_byte *myaddr,
48 int len, int *errnoptr);
49
50 static void show_print (char *, int);
51
52 static void set_print (char *, int);
53
54 static void set_radix (char *, int);
55
56 static void show_radix (char *, int);
57
58 static void set_input_radix (char *, int, struct cmd_list_element *);
59
60 static void set_input_radix_1 (int, unsigned);
61
62 static void set_output_radix (char *, int, struct cmd_list_element *);
63
64 static void set_output_radix_1 (int, unsigned);
65
66 void _initialize_valprint (void);
67
68 #define PRINT_MAX_DEFAULT 200 /* Start print_max off at this value. */
69
70 struct value_print_options user_print_options =
71 {
72 Val_pretty_default, /* pretty */
73 0, /* prettyprint_arrays */
74 0, /* prettyprint_structs */
75 0, /* vtblprint */
76 1, /* unionprint */
77 1, /* addressprint */
78 0, /* objectprint */
79 PRINT_MAX_DEFAULT, /* print_max */
80 10, /* repeat_count_threshold */
81 0, /* output_format */
82 0, /* format */
83 0, /* stop_print_at_null */
84 0, /* inspect_it */
85 0, /* print_array_indexes */
86 0, /* deref_ref */
87 1, /* static_field_print */
88 1, /* pascal_static_field_print */
89 0, /* raw */
90 0 /* summary */
91 };
92
93 /* Initialize *OPTS to be a copy of the user print options. */
94 void
95 get_user_print_options (struct value_print_options *opts)
96 {
97 *opts = user_print_options;
98 }
99
100 /* Initialize *OPTS to be a copy of the user print options, but with
101 pretty-printing disabled. */
102 void
103 get_raw_print_options (struct value_print_options *opts)
104 {
105 *opts = user_print_options;
106 opts->pretty = Val_no_prettyprint;
107 }
108
109 /* Initialize *OPTS to be a copy of the user print options, but using
110 FORMAT as the formatting option. */
111 void
112 get_formatted_print_options (struct value_print_options *opts,
113 char format)
114 {
115 *opts = user_print_options;
116 opts->format = format;
117 }
118
119 static void
120 show_print_max (struct ui_file *file, int from_tty,
121 struct cmd_list_element *c, const char *value)
122 {
123 fprintf_filtered (file,
124 _("Limit on string chars or array "
125 "elements to print is %s.\n"),
126 value);
127 }
128
129
130 /* Default input and output radixes, and output format letter. */
131
132 unsigned input_radix = 10;
133 static void
134 show_input_radix (struct ui_file *file, int from_tty,
135 struct cmd_list_element *c, const char *value)
136 {
137 fprintf_filtered (file,
138 _("Default input radix for entering numbers is %s.\n"),
139 value);
140 }
141
142 unsigned output_radix = 10;
143 static void
144 show_output_radix (struct ui_file *file, int from_tty,
145 struct cmd_list_element *c, const char *value)
146 {
147 fprintf_filtered (file,
148 _("Default output radix for printing of values is %s.\n"),
149 value);
150 }
151
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. */
154
155 static void
156 show_print_array_indexes (struct ui_file *file, int from_tty,
157 struct cmd_list_element *c, const char *value)
158 {
159 fprintf_filtered (file, _("Printing of array indexes is %s.\n"), value);
160 }
161
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
164 print routines. */
165
166 static void
167 show_repeat_count_threshold (struct ui_file *file, int from_tty,
168 struct cmd_list_element *c, const char *value)
169 {
170 fprintf_filtered (file, _("Threshold for repeated print elements is %s.\n"),
171 value);
172 }
173
174 /* If nonzero, stops printing of char arrays at first null. */
175
176 static void
177 show_stop_print_at_null (struct ui_file *file, int from_tty,
178 struct cmd_list_element *c, const char *value)
179 {
180 fprintf_filtered (file,
181 _("Printing of char arrays to stop "
182 "at first null char is %s.\n"),
183 value);
184 }
185
186 /* Controls pretty printing of structures. */
187
188 static void
189 show_prettyprint_structs (struct ui_file *file, int from_tty,
190 struct cmd_list_element *c, const char *value)
191 {
192 fprintf_filtered (file, _("Prettyprinting of structures is %s.\n"), value);
193 }
194
195 /* Controls pretty printing of arrays. */
196
197 static void
198 show_prettyprint_arrays (struct ui_file *file, int from_tty,
199 struct cmd_list_element *c, const char *value)
200 {
201 fprintf_filtered (file, _("Prettyprinting of arrays is %s.\n"), value);
202 }
203
204 /* If nonzero, causes unions inside structures or other unions to be
205 printed. */
206
207 static void
208 show_unionprint (struct ui_file *file, int from_tty,
209 struct cmd_list_element *c, const char *value)
210 {
211 fprintf_filtered (file,
212 _("Printing of unions interior to structures is %s.\n"),
213 value);
214 }
215
216 /* If nonzero, causes machine addresses to be printed in certain contexts. */
217
218 static void
219 show_addressprint (struct ui_file *file, int from_tty,
220 struct cmd_list_element *c, const char *value)
221 {
222 fprintf_filtered (file, _("Printing of addresses is %s.\n"), value);
223 }
224 \f
225
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. */
229
230 static int
231 scalar_type_p (struct type *type)
232 {
233 CHECK_TYPEDEF (type);
234 while (TYPE_CODE (type) == TYPE_CODE_REF)
235 {
236 type = TYPE_TARGET_TYPE (type);
237 CHECK_TYPEDEF (type);
238 }
239 switch (TYPE_CODE (type))
240 {
241 case TYPE_CODE_ARRAY:
242 case TYPE_CODE_STRUCT:
243 case TYPE_CODE_UNION:
244 case TYPE_CODE_SET:
245 case TYPE_CODE_STRING:
246 case TYPE_CODE_BITSTRING:
247 return 0;
248 default:
249 return 1;
250 }
251 }
252
253 /* Helper function to check the validity of some bits of a value.
254
255 If TYPE represents some aggregate type (e.g., a structure), return 1.
256
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.
260
261 Otherwise, return 1. */
262
263 static int
264 valprint_check_validity (struct ui_file *stream,
265 struct type *type,
266 int embedded_offset,
267 const struct value *val)
268 {
269 CHECK_TYPEDEF (type);
270
271 if (TYPE_CODE (type) != TYPE_CODE_UNION
272 && TYPE_CODE (type) != TYPE_CODE_STRUCT
273 && TYPE_CODE (type) != TYPE_CODE_ARRAY)
274 {
275 if (!value_bits_valid (val, TARGET_CHAR_BIT * embedded_offset,
276 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
277 {
278 val_print_optimized_out (stream);
279 return 0;
280 }
281
282 if (value_bits_synthetic_pointer (val, TARGET_CHAR_BIT * embedded_offset,
283 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
284 {
285 fputs_filtered (_("<synthetic pointer>"), stream);
286 return 0;
287 }
288
289 if (!value_bytes_available (val, embedded_offset, TYPE_LENGTH (type)))
290 {
291 val_print_unavailable (stream);
292 return 0;
293 }
294 }
295
296 return 1;
297 }
298
299 void
300 val_print_optimized_out (struct ui_file *stream)
301 {
302 fprintf_filtered (stream, _("<optimized out>"));
303 }
304
305 void
306 val_print_unavailable (struct ui_file *stream)
307 {
308 fprintf_filtered (stream, _("<unavailable>"));
309 }
310
311 void
312 val_print_invalid_address (struct ui_file *stream)
313 {
314 fprintf_filtered (stream, _("<invalid address>"));
315 }
316
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
322 buffer.
323
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?".
332
333 RECURSE indicates the amount of indentation to supply before
334 continuation lines; this amount is roughly twice the value of
335 RECURSE.
336
337 If the data is printed as a string, returns the number of string
338 characters printed. */
339
340 int
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)
346 {
347 volatile struct gdb_exception except;
348 int ret = 0;
349 struct value_print_options local_opts = *options;
350 struct type *real_type = check_typedef (type);
351
352 if (local_opts.pretty == Val_pretty_default)
353 local_opts.pretty = (local_opts.prettyprint_structs
354 ? Val_prettyprint : Val_no_prettyprint);
355
356 QUIT;
357
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. */
361
362 if (TYPE_STUB (real_type))
363 {
364 fprintf_filtered (stream, _("<incomplete type>"));
365 gdb_flush (stream);
366 return (0);
367 }
368
369 if (!valprint_check_validity (stream, real_type, embedded_offset, val))
370 return 0;
371
372 if (!options->raw)
373 {
374 ret = apply_val_pretty_printer (type, valaddr, embedded_offset,
375 address, stream, recurse,
376 val, options, language);
377 if (ret)
378 return ret;
379 }
380
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))
384 {
385 fprintf_filtered (stream, "...");
386 return 0;
387 }
388
389 TRY_CATCH (except, RETURN_MASK_ERROR)
390 {
391 ret = language->la_val_print (type, valaddr, embedded_offset, address,
392 stream, recurse, val,
393 &local_opts);
394 }
395 if (except.reason < 0)
396 fprintf_filtered (stream, _("<error reading variable>"));
397
398 return ret;
399 }
400
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. */
404
405 static int
406 value_check_printable (struct value *val, struct ui_file *stream,
407 const struct value_print_options *options)
408 {
409 if (val == 0)
410 {
411 fprintf_filtered (stream, _("<address of value unknown>"));
412 return 0;
413 }
414
415 if (value_entirely_optimized_out (val))
416 {
417 if (options->summary && !scalar_type_p (value_type (val)))
418 fprintf_filtered (stream, "...");
419 else
420 val_print_optimized_out (stream);
421 return 0;
422 }
423
424 if (TYPE_CODE (value_type (val)) == TYPE_CODE_INTERNAL_FUNCTION)
425 {
426 fprintf_filtered (stream, _("<internal function %s>"),
427 value_internal_function_name (val));
428 return 0;
429 }
430
431 return 1;
432 }
433
434 /* Print using the given LANGUAGE the value VAL onto stream STREAM according
435 to OPTIONS.
436
437 If the data are a string pointer, returns the number of string characters
438 printed.
439
440 This is a preferable interface to val_print, above, because it uses
441 GDB's value mechanism. */
442
443 int
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)
447 {
448 if (!value_check_printable (val, stream, options))
449 return 0;
450
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);
457
458 return val_print (value_type (val), value_contents_for_printing (val),
459 value_embedded_offset (val), value_address (val),
460 stream, recurse,
461 val, options, language);
462 }
463
464 /* Print on stream STREAM the value VAL according to OPTIONS. The value
465 is printed using the current_language syntax.
466
467 If the object printed is a string pointer, return the number of string
468 bytes printed. */
469
470 int
471 value_print (struct value *val, struct ui_file *stream,
472 const struct value_print_options *options)
473 {
474 if (!value_check_printable (val, stream, options))
475 return 0;
476
477 if (!options->raw)
478 {
479 int r = apply_val_pretty_printer (value_type (val),
480 value_contents_for_printing (val),
481 value_embedded_offset (val),
482 value_address (val),
483 stream, 0,
484 val, options, current_language);
485
486 if (r)
487 return r;
488 }
489
490 return LA_VALUE_PRINT (val, stream, options);
491 }
492
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. */
496
497 void
498 val_print_type_code_int (struct type *type, const gdb_byte *valaddr,
499 struct ui_file *stream)
500 {
501 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
502
503 if (TYPE_LENGTH (type) > sizeof (LONGEST))
504 {
505 LONGEST val;
506
507 if (TYPE_UNSIGNED (type)
508 && extract_long_unsigned_integer (valaddr, TYPE_LENGTH (type),
509 byte_order, &val))
510 {
511 print_longest (stream, 'u', 0, val);
512 }
513 else
514 {
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
518 better than this. */
519 print_hex_chars (stream, (unsigned char *) valaddr,
520 TYPE_LENGTH (type), byte_order);
521 }
522 }
523 else
524 {
525 print_longest (stream, TYPE_UNSIGNED (type) ? 'u' : 'd', 0,
526 unpack_long (type, valaddr));
527 }
528 }
529
530 void
531 val_print_type_code_flags (struct type *type, const gdb_byte *valaddr,
532 struct ui_file *stream)
533 {
534 ULONGEST val = unpack_long (type, valaddr);
535 int bitpos, nfields = TYPE_NFIELDS (type);
536
537 fputs_filtered ("[ ", stream);
538 for (bitpos = 0; bitpos < nfields; bitpos++)
539 {
540 if (TYPE_FIELD_BITPOS (type, bitpos) != -1
541 && (val & ((ULONGEST)1 << bitpos)))
542 {
543 if (TYPE_FIELD_NAME (type, bitpos))
544 fprintf_filtered (stream, "%s ", TYPE_FIELD_NAME (type, bitpos));
545 else
546 fprintf_filtered (stream, "#%d ", bitpos);
547 }
548 }
549 fputs_filtered ("]", stream);
550
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
553 at this level.
554
555 This is how the elements of an array or structure are printed
556 with a format. */
557 }
558
559 void
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,
564 int size,
565 struct ui_file *stream)
566 {
567 gdb_assert (val != NULL);
568 gdb_assert (valaddr == value_contents_for_printing_const (val));
569
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
572 again. */
573 if (options->format == 's')
574 {
575 struct value_print_options opts = *options;
576 opts.format = 0;
577 opts.deref_ref = 0;
578 val_print (type, valaddr, embedded_offset, 0, stream, 0, val, &opts,
579 current_language);
580 return;
581 }
582
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);
590 else
591 print_scalar_formatted (valaddr + embedded_offset, type,
592 options, size, stream);
593 }
594
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
599 format.
600
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
603 (leading 0 or 0x).
604
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
612 that capability. */
613
614 void
615 print_longest (struct ui_file *stream, int format, int use_c_format,
616 LONGEST val_long)
617 {
618 const char *val;
619
620 switch (format)
621 {
622 case 'd':
623 val = int_string (val_long, 10, 1, 0, 1); break;
624 case 'u':
625 val = int_string (val_long, 10, 0, 0, 1); break;
626 case 'x':
627 val = int_string (val_long, 16, 0, 0, use_c_format); break;
628 case 'b':
629 val = int_string (val_long, 16, 0, 2, 1); break;
630 case 'h':
631 val = int_string (val_long, 16, 0, 4, 1); break;
632 case 'w':
633 val = int_string (val_long, 16, 0, 8, 1); break;
634 case 'g':
635 val = int_string (val_long, 16, 0, 16, 1); break;
636 break;
637 case 'o':
638 val = int_string (val_long, 8, 0, 0, use_c_format); break;
639 default:
640 internal_error (__FILE__, __LINE__,
641 _("failed internal consistency check"));
642 }
643 fputs_filtered (val, stream);
644 }
645
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. */
651
652 int
653 longest_to_int (LONGEST arg)
654 {
655 /* Let the compiler do the work. */
656 int rtnval = (int) arg;
657
658 /* Check for overflows or underflows. */
659 if (sizeof (LONGEST) > sizeof (int))
660 {
661 if (rtnval != arg)
662 {
663 error (_("Value out of range."));
664 }
665 }
666 return (rtnval);
667 }
668
669 /* Print a floating point value of type TYPE (not always a
670 TYPE_CODE_FLT), pointed to in GDB by VALADDR, on STREAM. */
671
672 void
673 print_floating (const gdb_byte *valaddr, struct type *type,
674 struct ui_file *stream)
675 {
676 DOUBLEST doub;
677 int inv;
678 const struct floatformat *fmt = NULL;
679 unsigned len = TYPE_LENGTH (type);
680 enum float_kind kind;
681
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);
685 if (fmt != NULL)
686 {
687 kind = floatformat_classify (fmt, valaddr);
688 if (kind == float_nan)
689 {
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, ")");
696 return;
697 }
698 else if (kind == float_infinite)
699 {
700 if (floatformat_is_negative (fmt, valaddr))
701 fputs_filtered ("-", stream);
702 fputs_filtered ("inf", stream);
703 return;
704 }
705 }
706
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. */
715
716 doub = unpack_double (type, valaddr, &inv);
717 if (inv)
718 {
719 fprintf_filtered (stream, "<invalid float value>");
720 return;
721 }
722
723 /* FIXME: kettenis/2001-01-20: The following code makes too much
724 assumptions about the host and target floating point format. */
725
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. */
730
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);
735 else
736 #ifdef PRINTF_HAS_LONG_DOUBLE
737 fprintf_filtered (stream, "%.35Lg", doub);
738 #else
739 /* This at least wins with values that are representable as
740 doubles. */
741 fprintf_filtered (stream, "%.17g", (double) doub);
742 #endif
743 }
744
745 void
746 print_decimal_floating (const gdb_byte *valaddr, struct type *type,
747 struct ui_file *stream)
748 {
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);
752
753 decimal_to_string (valaddr, len, byte_order, decstr);
754 fputs_filtered (decstr, stream);
755 return;
756 }
757
758 void
759 print_binary_chars (struct ui_file *stream, const gdb_byte *valaddr,
760 unsigned len, enum bfd_endian byte_order)
761 {
762
763 #define BITS_IN_BYTES 8
764
765 const gdb_byte *p;
766 unsigned int i;
767 int b;
768
769 /* Declared "int" so it will be signed.
770 This ensures that right shift will shift in zeros. */
771
772 const int mask = 0x080;
773
774 /* FIXME: We should be not printing leading zeroes in most cases. */
775
776 if (byte_order == BFD_ENDIAN_BIG)
777 {
778 for (p = valaddr;
779 p < valaddr + len;
780 p++)
781 {
782 /* Every byte has 8 binary characters; peel off
783 and print from the MSB end. */
784
785 for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
786 {
787 if (*p & (mask >> i))
788 b = 1;
789 else
790 b = 0;
791
792 fprintf_filtered (stream, "%1d", b);
793 }
794 }
795 }
796 else
797 {
798 for (p = valaddr + len - 1;
799 p >= valaddr;
800 p--)
801 {
802 for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
803 {
804 if (*p & (mask >> i))
805 b = 1;
806 else
807 b = 0;
808
809 fprintf_filtered (stream, "%1d", b);
810 }
811 }
812 }
813 }
814
815 /* VALADDR points to an integer of LEN bytes.
816 Print it in octal on stream or format it in buf. */
817
818 void
819 print_octal_chars (struct ui_file *stream, const gdb_byte *valaddr,
820 unsigned len, enum bfd_endian byte_order)
821 {
822 const gdb_byte *p;
823 unsigned char octa1, octa2, octa3, carry;
824 int cycle;
825
826 /* FIXME: We should be not printing leading zeroes in most cases. */
827
828
829 /* Octal is 3 bits, which doesn't fit. Yuk. So we have to track
830 * the extra bits, which cycle every three bytes:
831 *
832 * Byte side: 0 1 2 3
833 * | | | |
834 * bit number 123 456 78 | 9 012 345 6 | 78 901 234 | 567 890 12 |
835 *
836 * Octal side: 0 1 carry 3 4 carry ...
837 *
838 * Cycle number: 0 1 2
839 *
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.
843 */
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
849 #define MID_ONE 0160
850 #define LOW_ONE 0016
851 #define CARRY_ONE 0001
852 #define HIGH_TWO 0300
853 #define MID_TWO 0070
854 #define LOW_TWO 0007
855
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. */
858
859 cycle = (len * BITS_IN_BYTES) % BITS_IN_OCTAL;
860 carry = 0;
861
862 fputs_filtered ("0", stream);
863 if (byte_order == BFD_ENDIAN_BIG)
864 {
865 for (p = valaddr;
866 p < valaddr + len;
867 p++)
868 {
869 switch (cycle)
870 {
871 case 0:
872 /* No carry in, carry out two bits. */
873
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);
879 break;
880
881 case 1:
882 /* Carry in two bits, carry out one bit. */
883
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);
891 break;
892
893 case 2:
894 /* Carry in one bit, no carry out. */
895
896 octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
897 octa2 = (MID_TWO & *p) >> 3;
898 octa3 = (LOW_TWO & *p);
899 carry = 0;
900 fprintf_filtered (stream, "%o", octa1);
901 fprintf_filtered (stream, "%o", octa2);
902 fprintf_filtered (stream, "%o", octa3);
903 break;
904
905 default:
906 error (_("Internal error in octal conversion;"));
907 }
908
909 cycle++;
910 cycle = cycle % BITS_IN_OCTAL;
911 }
912 }
913 else
914 {
915 for (p = valaddr + len - 1;
916 p >= valaddr;
917 p--)
918 {
919 switch (cycle)
920 {
921 case 0:
922 /* Carry out, no carry in */
923
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);
929 break;
930
931 case 1:
932 /* Carry in, carry out */
933
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);
941 break;
942
943 case 2:
944 /* Carry in, no carry out */
945
946 octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
947 octa2 = (MID_TWO & *p) >> 3;
948 octa3 = (LOW_TWO & *p);
949 carry = 0;
950 fprintf_filtered (stream, "%o", octa1);
951 fprintf_filtered (stream, "%o", octa2);
952 fprintf_filtered (stream, "%o", octa3);
953 break;
954
955 default:
956 error (_("Internal error in octal conversion;"));
957 }
958
959 cycle++;
960 cycle = cycle % BITS_IN_OCTAL;
961 }
962 }
963
964 }
965
966 /* VALADDR points to an integer of LEN bytes.
967 Print it in decimal on stream or format it in buf. */
968
969 void
970 print_decimal_chars (struct ui_file *stream, const gdb_byte *valaddr,
971 unsigned len, enum bfd_endian byte_order)
972 {
973 #define TEN 10
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)
979
980 const gdb_byte *p;
981 unsigned char *digits;
982 int carry;
983 int decimal_len;
984 int i, j, decimal_digits;
985 int dummy;
986 int flip;
987
988 /* Base-ten number is less than twice as many digits
989 as the base 16 number, which is 2 digits per byte. */
990
991 decimal_len = len * 2 * 2;
992 digits = xmalloc (decimal_len);
993
994 for (i = 0; i < decimal_len; i++)
995 {
996 digits[i] = 0;
997 }
998
999 /* Ok, we have an unknown number of bytes of data to be printed in
1000 * decimal.
1001 *
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.
1005 *
1006 * The trick is that "digits" holds a base-10 number, but sometimes
1007 * the individual digits are > 10.
1008 *
1009 * Outer loop is per nibble (hex digit) of input, from MSD end to
1010 * LSD end.
1011 */
1012 decimal_digits = 0; /* Number of decimal digits so far */
1013 p = (byte_order == BFD_ENDIAN_BIG) ? valaddr : valaddr + len - 1;
1014 flip = 0;
1015 while ((byte_order == BFD_ENDIAN_BIG) ? (p < valaddr + len) : (p >= valaddr))
1016 {
1017 /*
1018 * Multiply current base-ten number by 16 in place.
1019 * Each digit was between 0 and 9, now is between
1020 * 0 and 144.
1021 */
1022 for (j = 0; j < decimal_digits; j++)
1023 {
1024 digits[j] = SHIFT (digits[j]);
1025 }
1026
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.
1030 *
1031 * "flip" is used to run this loop twice for each byte.
1032 */
1033 if (flip == 0)
1034 {
1035 /* Take top nibble. */
1036
1037 digits[0] += HIGH_NIBBLE (*p);
1038 flip = 1;
1039 }
1040 else
1041 {
1042 /* Take low nibble and bump our pointer "p". */
1043
1044 digits[0] += LOW_NIBBLE (*p);
1045 if (byte_order == BFD_ENDIAN_BIG)
1046 p++;
1047 else
1048 p--;
1049 flip = 0;
1050 }
1051
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.
1059 */
1060 carry = 0;
1061 for (j = 0; j < decimal_len - 1; j++)
1062 {
1063 digits[j] += carry;
1064
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".
1068 */
1069 dummy = digits[j];
1070 carry = CARRY_OUT (dummy);
1071 digits[j] = CARRY_LEFT (dummy);
1072
1073 if (j >= decimal_digits && carry == 0)
1074 {
1075 /*
1076 * All higher digits are 0 and we
1077 * no longer have a carry.
1078 *
1079 * Note: "j" is 0-based, "decimal_digits" is
1080 * 1-based.
1081 */
1082 decimal_digits = j + 1;
1083 break;
1084 }
1085 }
1086 }
1087
1088 /* Ok, now "digits" is the decimal representation, with
1089 the "decimal_digits" actual digits. Print! */
1090
1091 for (i = decimal_digits - 1; i >= 0; i--)
1092 {
1093 fprintf_filtered (stream, "%1d", digits[i]);
1094 }
1095 xfree (digits);
1096 }
1097
1098 /* VALADDR points to an integer of LEN bytes. Print it in hex on stream. */
1099
1100 void
1101 print_hex_chars (struct ui_file *stream, const gdb_byte *valaddr,
1102 unsigned len, enum bfd_endian byte_order)
1103 {
1104 const gdb_byte *p;
1105
1106 /* FIXME: We should be not printing leading zeroes in most cases. */
1107
1108 fputs_filtered ("0x", stream);
1109 if (byte_order == BFD_ENDIAN_BIG)
1110 {
1111 for (p = valaddr;
1112 p < valaddr + len;
1113 p++)
1114 {
1115 fprintf_filtered (stream, "%02x", *p);
1116 }
1117 }
1118 else
1119 {
1120 for (p = valaddr + len - 1;
1121 p >= valaddr;
1122 p--)
1123 {
1124 fprintf_filtered (stream, "%02x", *p);
1125 }
1126 }
1127 }
1128
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. */
1132
1133 void
1134 print_char_chars (struct ui_file *stream, struct type *type,
1135 const gdb_byte *valaddr,
1136 unsigned len, enum bfd_endian byte_order)
1137 {
1138 const gdb_byte *p;
1139
1140 if (byte_order == BFD_ENDIAN_BIG)
1141 {
1142 p = valaddr;
1143 while (p < valaddr + len - 1 && *p == 0)
1144 ++p;
1145
1146 while (p < valaddr + len)
1147 {
1148 LA_EMIT_CHAR (*p, type, stream, '\'');
1149 ++p;
1150 }
1151 }
1152 else
1153 {
1154 p = valaddr + len - 1;
1155 while (p > valaddr && *p == 0)
1156 --p;
1157
1158 while (p >= valaddr)
1159 {
1160 LA_EMIT_CHAR (*p, type, stream, '\'');
1161 --p;
1162 }
1163 }
1164 }
1165
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. */
1168
1169 void
1170 maybe_print_array_index (struct type *index_type, LONGEST index,
1171 struct ui_file *stream,
1172 const struct value_print_options *options)
1173 {
1174 struct value *index_value;
1175
1176 if (!options->print_array_indexes)
1177 return;
1178
1179 index_value = value_from_longest (index_type, index);
1180
1181 LA_PRINT_ARRAY_INDEX (index_value, stream, options);
1182 }
1183
1184 /* Called by various <lang>_val_print routines to print elements of an
1185 array in the form "<elem1>, <elem2>, <elem3>, ...".
1186
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. */
1191
1192 void
1193 val_print_array_elements (struct type *type,
1194 const gdb_byte *valaddr, int embedded_offset,
1195 CORE_ADDR address, struct ui_file *stream,
1196 int recurse,
1197 const struct value *val,
1198 const struct value_print_options *options,
1199 unsigned int i)
1200 {
1201 unsigned int things_printed = 0;
1202 unsigned len;
1203 struct type *elttype, *index_type;
1204 unsigned eltlen;
1205 /* Position of the array element we are examining to see
1206 whether it is repeated. */
1207 unsigned int rep1;
1208 /* Number of repetitions we have detected so far. */
1209 unsigned int reps;
1210 LONGEST low_bound, high_bound;
1211
1212 elttype = TYPE_TARGET_TYPE (type);
1213 eltlen = TYPE_LENGTH (check_typedef (elttype));
1214 index_type = TYPE_INDEX_TYPE (type);
1215
1216 if (get_array_bounds (type, &low_bound, &high_bound))
1217 {
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,
1222 not negative! */
1223 if (low_bound > high_bound)
1224 len = 0;
1225 else
1226 len = high_bound - low_bound + 1;
1227 }
1228 else
1229 {
1230 warning (_("unable to get bounds of array, assuming null array"));
1231 low_bound = 0;
1232 len = 0;
1233 }
1234
1235 annotate_array_section_begin (i, elttype);
1236
1237 for (; i < len && things_printed < options->print_max; i++)
1238 {
1239 if (i != 0)
1240 {
1241 if (options->prettyprint_arrays)
1242 {
1243 fprintf_filtered (stream, ",\n");
1244 print_spaces_filtered (2 + 2 * recurse, stream);
1245 }
1246 else
1247 {
1248 fprintf_filtered (stream, ", ");
1249 }
1250 }
1251 wrap_here (n_spaces (2 + 2 * recurse));
1252 maybe_print_array_index (index_type, i + low_bound,
1253 stream, options);
1254
1255 rep1 = i + 1;
1256 reps = 1;
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)
1260 {
1261 while (rep1 < len
1262 && value_available_contents_eq (val,
1263 embedded_offset + i * eltlen,
1264 val,
1265 (embedded_offset
1266 + rep1 * eltlen),
1267 eltlen))
1268 {
1269 ++reps;
1270 ++rep1;
1271 }
1272 }
1273
1274 if (reps > options->repeat_count_threshold)
1275 {
1276 val_print (elttype, valaddr, embedded_offset + i * eltlen,
1277 address, stream, recurse + 1, val, options,
1278 current_language);
1279 annotate_elt_rep (reps);
1280 fprintf_filtered (stream, " <repeats %u times>", reps);
1281 annotate_elt_rep_end ();
1282
1283 i = rep1 - 1;
1284 things_printed += options->repeat_count_threshold;
1285 }
1286 else
1287 {
1288 val_print (elttype, valaddr, embedded_offset + i * eltlen,
1289 address,
1290 stream, recurse + 1, val, options, current_language);
1291 annotate_elt ();
1292 things_printed++;
1293 }
1294 }
1295 annotate_array_section_end ();
1296 if (i < len)
1297 {
1298 fprintf_filtered (stream, "...");
1299 }
1300 }
1301
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. */
1306
1307 /* FIXME: cagney/1999-10-14: Only used by val_print_string. Can this
1308 function be eliminated. */
1309
1310 static int
1311 partial_memory_read (CORE_ADDR memaddr, gdb_byte *myaddr,
1312 int len, int *errnoptr)
1313 {
1314 int nread; /* Number of bytes actually read. */
1315 int errcode; /* Error from last read. */
1316
1317 /* First try a complete read. */
1318 errcode = target_read_memory (memaddr, myaddr, len);
1319 if (errcode == 0)
1320 {
1321 /* Got it all. */
1322 nread = len;
1323 }
1324 else
1325 {
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--)
1328 {
1329 errcode = target_read_memory (memaddr++, myaddr++, 1);
1330 }
1331 /* If an error, the last read was unsuccessful, so adjust count. */
1332 if (errcode != 0)
1333 {
1334 nread--;
1335 }
1336 }
1337 if (errnoptr != NULL)
1338 {
1339 *errnoptr = errcode;
1340 }
1341 return (nread);
1342 }
1343
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.
1349
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.
1355
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.
1359
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? */
1365
1366 int
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)
1369 {
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
1375 buffer. */
1376 gdb_byte *limit; /* First location past end of fetch buffer. */
1377 struct cleanup *old_chain = NULL; /* Top of the old cleanup chain. */
1378
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. */
1387
1388 chunksize = (len == -1 ? min (8, fetchlimit) : fetchlimit);
1389
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. */
1392
1393 found_nul = 0;
1394 *buffer = NULL;
1395
1396 old_chain = make_cleanup (free_current_contents, buffer);
1397
1398 if (len > 0)
1399 {
1400 *buffer = (gdb_byte *) xmalloc (len * width);
1401 bufptr = *buffer;
1402
1403 nfetch = partial_memory_read (addr, bufptr, len * width, &errcode)
1404 / width;
1405 addr += nfetch * width;
1406 bufptr += nfetch * width;
1407 }
1408 else if (len == -1)
1409 {
1410 unsigned long bufsize = 0;
1411
1412 do
1413 {
1414 QUIT;
1415 nfetch = min (chunksize, fetchlimit - bufsize);
1416
1417 if (*buffer == NULL)
1418 *buffer = (gdb_byte *) xmalloc (nfetch * width);
1419 else
1420 *buffer = (gdb_byte *) xrealloc (*buffer,
1421 (nfetch + bufsize) * width);
1422
1423 bufptr = *buffer + bufsize * width;
1424 bufsize += nfetch;
1425
1426 /* Read as much as we can. */
1427 nfetch = partial_memory_read (addr, bufptr, nfetch * width, &errcode)
1428 / width;
1429
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
1434 of the buffer. */
1435
1436 limit = bufptr + nfetch * width;
1437 while (bufptr < limit)
1438 {
1439 unsigned long c;
1440
1441 c = extract_unsigned_integer (bufptr, width, byte_order);
1442 addr += width;
1443 bufptr += width;
1444 if (c == 0)
1445 {
1446 /* We don't care about any error which happened after
1447 the NUL terminator. */
1448 errcode = 0;
1449 found_nul = 1;
1450 break;
1451 }
1452 }
1453 }
1454 while (errcode == 0 /* no error */
1455 && bufptr - *buffer < fetchlimit * width /* no overrun */
1456 && !found_nul); /* haven't found NUL yet */
1457 }
1458 else
1459 { /* Length of string is really 0! */
1460 /* We always allocate *buffer. */
1461 *buffer = bufptr = xmalloc (1);
1462 errcode = 0;
1463 }
1464
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;
1468
1469 QUIT;
1470
1471 discard_cleanups (old_chain);
1472
1473 return errcode;
1474 }
1475
1476 /* Return true if print_wchar can display W without resorting to a
1477 numeric escape, false otherwise. */
1478
1479 static int
1480 wchar_printable (gdb_wchar_t w)
1481 {
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'));
1487 }
1488
1489 /* A helper function that converts the contents of STRING to wide
1490 characters and then appends them to OUTPUT. */
1491
1492 static void
1493 append_string_as_wide (const char *string,
1494 struct obstack *output)
1495 {
1496 for (; *string; ++string)
1497 {
1498 gdb_wchar_t w = gdb_btowc (*string);
1499 obstack_grow (output, &w, sizeof (gdb_wchar_t));
1500 }
1501 }
1502
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. */
1511
1512 static void
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)
1518 {
1519 int need_escape = *need_escapep;
1520
1521 *need_escapep = 0;
1522 if (gdb_iswprint (w) && (!need_escape || (!gdb_iswdigit (w)
1523 && w != LCST ('8')
1524 && w != LCST ('9'))))
1525 {
1526 gdb_wchar_t wchar = w;
1527
1528 if (w == gdb_btowc (quoter) || w == LCST ('\\'))
1529 obstack_grow_wstr (output, LCST ("\\"));
1530 obstack_grow (output, &wchar, sizeof (gdb_wchar_t));
1531 }
1532 else
1533 {
1534 switch (w)
1535 {
1536 case LCST ('\a'):
1537 obstack_grow_wstr (output, LCST ("\\a"));
1538 break;
1539 case LCST ('\b'):
1540 obstack_grow_wstr (output, LCST ("\\b"));
1541 break;
1542 case LCST ('\f'):
1543 obstack_grow_wstr (output, LCST ("\\f"));
1544 break;
1545 case LCST ('\n'):
1546 obstack_grow_wstr (output, LCST ("\\n"));
1547 break;
1548 case LCST ('\r'):
1549 obstack_grow_wstr (output, LCST ("\\r"));
1550 break;
1551 case LCST ('\t'):
1552 obstack_grow_wstr (output, LCST ("\\t"));
1553 break;
1554 case LCST ('\v'):
1555 obstack_grow_wstr (output, LCST ("\\v"));
1556 break;
1557 default:
1558 {
1559 int i;
1560
1561 for (i = 0; i + width <= orig_len; i += width)
1562 {
1563 char octal[30];
1564 ULONGEST value;
1565
1566 value = extract_unsigned_integer (&orig[i], width,
1567 byte_order);
1568 /* If the value fits in 3 octal digits, print it that
1569 way. Otherwise, print it as a hex escape. */
1570 if (value <= 0777)
1571 sprintf (octal, "\\%.3o", (int) (value & 0777));
1572 else
1573 sprintf (octal, "\\x%lx", (long) value);
1574 append_string_as_wide (octal, output);
1575 }
1576 /* If we somehow have extra bytes, print them now. */
1577 while (i < orig_len)
1578 {
1579 char octal[5];
1580
1581 sprintf (octal, "\\%.3o", orig[i] & 0xff);
1582 append_string_as_wide (octal, output);
1583 ++i;
1584 }
1585
1586 *need_escapep = 1;
1587 }
1588 break;
1589 }
1590 }
1591 }
1592
1593 /* Print the character C on STREAM as part of the contents of a
1594 literal string whose delimiter is QUOTER. ENCODING names the
1595 encoding of C. */
1596
1597 void
1598 generic_emit_char (int c, struct type *type, struct ui_file *stream,
1599 int quoter, const char *encoding)
1600 {
1601 enum bfd_endian byte_order
1602 = gdbarch_byte_order (get_type_arch (type));
1603 struct obstack wchar_buf, output;
1604 struct cleanup *cleanups;
1605 gdb_byte *buf;
1606 struct wchar_iterator *iter;
1607 int need_escape = 0;
1608
1609 buf = alloca (TYPE_LENGTH (type));
1610 pack_long (buf, type, c);
1611
1612 iter = make_wchar_iterator (buf, TYPE_LENGTH (type),
1613 encoding, TYPE_LENGTH (type));
1614 cleanups = make_cleanup_wchar_iterator (iter);
1615
1616 /* This holds the printable form of the wchar_t data. */
1617 obstack_init (&wchar_buf);
1618 make_cleanup_obstack_free (&wchar_buf);
1619
1620 while (1)
1621 {
1622 int num_chars;
1623 gdb_wchar_t *chars;
1624 const gdb_byte *buf;
1625 size_t buflen;
1626 int print_escape = 1;
1627 enum wchar_iterate_result result;
1628
1629 num_chars = wchar_iterate (iter, &result, &chars, &buf, &buflen);
1630 if (num_chars < 0)
1631 break;
1632 if (num_chars > 0)
1633 {
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. */
1639 int i;
1640
1641 print_escape = 0;
1642 for (i = 0; i < num_chars; ++i)
1643 if (!wchar_printable (chars[i]))
1644 {
1645 print_escape = 1;
1646 break;
1647 }
1648
1649 if (!print_escape)
1650 {
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);
1655 }
1656 }
1657
1658 /* This handles the NUM_CHARS == 0 case as well. */
1659 if (print_escape)
1660 print_wchar (gdb_WEOF, buf, buflen, TYPE_LENGTH (type),
1661 byte_order, &wchar_buf, quoter, &need_escape);
1662 }
1663
1664 /* The output in the host encoding. */
1665 obstack_init (&output);
1666 make_cleanup_obstack_free (&output);
1667
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');
1673
1674 fputs_filtered (obstack_base (&output), stream);
1675
1676 do_cleanups (cleanups);
1677 }
1678
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
1687 omitted. */
1688
1689 void
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)
1695 {
1696 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
1697 unsigned int i;
1698 unsigned int things_printed = 0;
1699 int in_quotes = 0;
1700 int need_comma = 0;
1701 int width = TYPE_LENGTH (type);
1702 struct obstack wchar_buf, output;
1703 struct cleanup *cleanup;
1704 struct wchar_iterator *iter;
1705 int finished = 0;
1706 int need_escape = 0;
1707 gdb_wchar_t wide_quote_char = gdb_btowc (quote_char);
1708
1709 if (length == -1)
1710 {
1711 unsigned long current_char = 1;
1712
1713 for (i = 0; current_char; ++i)
1714 {
1715 QUIT;
1716 current_char = extract_unsigned_integer (string + i * width,
1717 width, byte_order);
1718 }
1719 length = i;
1720 }
1721
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
1726 && !force_ellipses
1727 && length > 0
1728 && (extract_unsigned_integer (string + (length - 1) * width,
1729 width, byte_order) == 0))
1730 length--;
1731
1732 if (length == 0)
1733 {
1734 fputs_filtered ("\"\"", stream);
1735 return;
1736 }
1737
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);
1741
1742 /* WCHAR_BUF is the obstack we use to represent the string in
1743 wchar_t form. */
1744 obstack_init (&wchar_buf);
1745 make_cleanup_obstack_free (&wchar_buf);
1746
1747 while (!finished && things_printed < options->print_max)
1748 {
1749 int num_chars;
1750 enum wchar_iterate_result result;
1751 gdb_wchar_t *chars;
1752 const gdb_byte *buf;
1753 size_t buflen;
1754
1755 QUIT;
1756
1757 if (need_comma)
1758 {
1759 obstack_grow_wstr (&wchar_buf, LCST (", "));
1760 need_comma = 0;
1761 }
1762
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
1767 cases. */
1768 while (num_chars == 1 && things_printed < options->print_max)
1769 {
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;
1775
1776 if (need_comma)
1777 {
1778 obstack_grow_wstr (&wchar_buf, LCST (", "));
1779 need_comma = 0;
1780 }
1781
1782 while (num_chars == 1 && current_char == chars[0])
1783 {
1784 num_chars = wchar_iterate (iter, &result, &chars,
1785 &buf, &buflen);
1786 ++reps;
1787 }
1788
1789 /* Emit CURRENT_CHAR according to the repetition count and
1790 options. */
1791 if (reps > options->repeat_count_threshold)
1792 {
1793 if (in_quotes)
1794 {
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 (", "));
1800 in_quotes = 0;
1801 }
1802 obstack_grow_wstr (&wchar_buf, LCST ("'"));
1803 need_escape = 0;
1804 print_wchar (current_char, orig_buf, orig_len, width,
1805 byte_order, &wchar_buf, '\'', &need_escape);
1806 obstack_grow_wstr (&wchar_buf, LCST ("'"));
1807 {
1808 /* Painful gyrations. */
1809 int j;
1810 char *s = xstrprintf (_(" <repeats %u times>"), reps);
1811
1812 for (j = 0; s[j]; ++j)
1813 {
1814 gdb_wchar_t w = gdb_btowc (s[j]);
1815 obstack_grow (&wchar_buf, &w, sizeof (gdb_wchar_t));
1816 }
1817 xfree (s);
1818 }
1819 things_printed += options->repeat_count_threshold;
1820 need_comma = 1;
1821 }
1822 else
1823 {
1824 /* Saw the character one or more times, but fewer than
1825 the repetition threshold. */
1826 if (!in_quotes)
1827 {
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));
1832 in_quotes = 1;
1833 need_escape = 0;
1834 }
1835
1836 while (reps-- > 0)
1837 {
1838 print_wchar (current_char, orig_buf,
1839 orig_len, width,
1840 byte_order, &wchar_buf,
1841 quote_char, &need_escape);
1842 ++things_printed;
1843 }
1844 }
1845 }
1846
1847 /* NUM_CHARS and the other outputs from wchar_iterate are valid
1848 here regardless of which branch was taken above. */
1849 if (num_chars < 0)
1850 {
1851 /* Hit EOF. */
1852 finished = 1;
1853 break;
1854 }
1855
1856 switch (result)
1857 {
1858 case wchar_iterate_invalid:
1859 if (!in_quotes)
1860 {
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));
1865 in_quotes = 1;
1866 }
1867 need_escape = 0;
1868 print_wchar (gdb_WEOF, buf, buflen, width, byte_order,
1869 &wchar_buf, quote_char, &need_escape);
1870 break;
1871
1872 case wchar_iterate_incomplete:
1873 if (in_quotes)
1874 {
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 (","));
1880 in_quotes = 0;
1881 }
1882 obstack_grow_wstr (&wchar_buf,
1883 LCST (" <incomplete sequence "));
1884 print_wchar (gdb_WEOF, buf, buflen, width,
1885 byte_order, &wchar_buf,
1886 0, &need_escape);
1887 obstack_grow_wstr (&wchar_buf, LCST (">"));
1888 finished = 1;
1889 break;
1890 }
1891 }
1892
1893 /* Terminate the quotes if necessary. */
1894 if (in_quotes)
1895 {
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));
1900 }
1901
1902 if (force_ellipses || !finished)
1903 obstack_grow_wstr (&wchar_buf, LCST ("..."));
1904
1905 /* OUTPUT is where we collect `char's for printing. */
1906 obstack_init (&output);
1907 make_cleanup_obstack_free (&output);
1908
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');
1914
1915 fputs_filtered (obstack_base (&output), stream);
1916
1917 do_cleanups (cleanup);
1918 }
1919
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
1926 assumed. */
1927
1928 int
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)
1933 {
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. */
1938 int bytes_read;
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);
1944
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. */
1952
1953 fetchlimit = (len == -1 ? options->print_max : min (len,
1954 options->print_max));
1955
1956 errcode = read_string (addr, len, width, fetchlimit, byte_order,
1957 &buffer, &bytes_read);
1958 old_chain = make_cleanup (xfree, buffer);
1959
1960 addr += bytes_read;
1961
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
1964 LEN is -1. */
1965
1966 /* Determine found_nul by looking at the last character read. */
1967 found_nul = extract_unsigned_integer (buffer + bytes_read - width, width,
1968 byte_order) == 0;
1969 if (len == -1 && !found_nul)
1970 {
1971 gdb_byte *peekbuf;
1972
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. */
1976
1977 peekbuf = (gdb_byte *) alloca (width);
1978
1979 if (target_read_memory (addr, peekbuf, width) == 0
1980 && extract_unsigned_integer (peekbuf, width, byte_order) != 0)
1981 force_ellipsis = 1;
1982 }
1983 else if ((len >= 0 && errcode != 0) || (len > bytes_read / width))
1984 {
1985 /* Getting an error when we have a requested length, or fetching less
1986 than the number of characters actually requested, always make us
1987 print ellipsis. */
1988 force_ellipsis = 1;
1989 }
1990
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)
1995 {
1996 if (options->addressprint)
1997 {
1998 fputs_filtered (" ", stream);
1999 }
2000 LA_PRINT_STRING (stream, elttype, buffer, bytes_read / width,
2001 encoding, force_ellipsis, options);
2002 }
2003
2004 if (errcode != 0)
2005 {
2006 if (errcode == EIO)
2007 {
2008 fprintf_filtered (stream, " <Address ");
2009 fputs_filtered (paddress (gdbarch, addr), stream);
2010 fprintf_filtered (stream, " out of bounds>");
2011 }
2012 else
2013 {
2014 fprintf_filtered (stream, " <Error reading address ");
2015 fputs_filtered (paddress (gdbarch, addr), stream);
2016 fprintf_filtered (stream, ": %s>", safe_strerror (errcode));
2017 }
2018 }
2019
2020 gdb_flush (stream);
2021 do_cleanups (old_chain);
2022
2023 return (bytes_read / width);
2024 }
2025 \f
2026
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. */
2030
2031 static unsigned input_radix_1 = 10;
2032
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! */
2036
2037 static void
2038 set_input_radix (char *args, int from_tty, struct cmd_list_element *c)
2039 {
2040 set_input_radix_1 (from_tty, input_radix_1);
2041 }
2042
2043 static void
2044 set_input_radix_1 (int from_tty, unsigned radix)
2045 {
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.
2051 (FIXME). */
2052
2053 if (radix < 2)
2054 {
2055 input_radix_1 = input_radix;
2056 error (_("Nonsense input radix ``decimal %u''; input radix unchanged."),
2057 radix);
2058 }
2059 input_radix_1 = input_radix = radix;
2060 if (from_tty)
2061 {
2062 printf_filtered (_("Input radix now set to "
2063 "decimal %u, hex %x, octal %o.\n"),
2064 radix, radix, radix);
2065 }
2066 }
2067
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. */
2071
2072 static unsigned output_radix_1 = 10;
2073
2074 static void
2075 set_output_radix (char *args, int from_tty, struct cmd_list_element *c)
2076 {
2077 set_output_radix_1 (from_tty, output_radix_1);
2078 }
2079
2080 static void
2081 set_output_radix_1 (int from_tty, unsigned radix)
2082 {
2083 /* Validate the radix and disallow ones that we aren't prepared to
2084 handle correctly, leaving the radix unchanged. */
2085 switch (radix)
2086 {
2087 case 16:
2088 user_print_options.output_format = 'x'; /* hex */
2089 break;
2090 case 10:
2091 user_print_options.output_format = 0; /* decimal */
2092 break;
2093 case 8:
2094 user_print_options.output_format = 'o'; /* octal */
2095 break;
2096 default:
2097 output_radix_1 = output_radix;
2098 error (_("Unsupported output radix ``decimal %u''; "
2099 "output radix unchanged."),
2100 radix);
2101 }
2102 output_radix_1 = output_radix = radix;
2103 if (from_tty)
2104 {
2105 printf_filtered (_("Output radix now set to "
2106 "decimal %u, hex %x, octal %o.\n"),
2107 radix, radix, radix);
2108 }
2109 }
2110
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.
2114
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. */
2118
2119 static void
2120 set_radix (char *arg, int from_tty)
2121 {
2122 unsigned radix;
2123
2124 radix = (arg == NULL) ? 10 : parse_and_eval_long (arg);
2125 set_output_radix_1 (0, radix);
2126 set_input_radix_1 (0, radix);
2127 if (from_tty)
2128 {
2129 printf_filtered (_("Input and output radices now set to "
2130 "decimal %u, hex %x, octal %o.\n"),
2131 radix, radix, radix);
2132 }
2133 }
2134
2135 /* Show both the input and output radices. */
2136
2137 static void
2138 show_radix (char *arg, int from_tty)
2139 {
2140 if (from_tty)
2141 {
2142 if (input_radix == output_radix)
2143 {
2144 printf_filtered (_("Input and output radices set to "
2145 "decimal %u, hex %x, octal %o.\n"),
2146 input_radix, input_radix, input_radix);
2147 }
2148 else
2149 {
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);
2156 }
2157 }
2158 }
2159 \f
2160
2161 static void
2162 set_print (char *arg, int from_tty)
2163 {
2164 printf_unfiltered (
2165 "\"set print\" must be followed by the name of a print subcommand.\n");
2166 help_list (setprintlist, "set print ", -1, gdb_stdout);
2167 }
2168
2169 static void
2170 show_print (char *args, int from_tty)
2171 {
2172 cmd_show_list (showprintlist, from_tty, "");
2173 }
2174 \f
2175 void
2176 _initialize_valprint (void)
2177 {
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);
2184
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);
2190
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."),
2196 NULL,
2197 show_print_max,
2198 &setprintlist, &showprintlist);
2199
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,
2204 NULL,
2205 show_stop_print_at_null,
2206 &setprintlist, &showprintlist);
2207
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."),
2213 NULL,
2214 show_repeat_count_threshold,
2215 &setprintlist, &showprintlist);
2216
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,
2221 NULL,
2222 show_prettyprint_structs,
2223 &setprintlist, &showprintlist);
2224
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,
2229 NULL,
2230 show_unionprint,
2231 &setprintlist, &showprintlist);
2232
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,
2237 NULL,
2238 show_prettyprint_arrays,
2239 &setprintlist, &showprintlist);
2240
2241 add_setshow_boolean_cmd ("address", class_support,
2242 &user_print_options.addressprint, _("\
2243 Set printing of addresses."), _("\
2244 Show printing of addresses."), NULL,
2245 NULL,
2246 show_addressprint,
2247 &setprintlist, &showprintlist);
2248
2249 add_setshow_zuinteger_cmd ("input-radix", class_support, &input_radix_1,
2250 _("\
2251 Set default input radix for entering numbers."), _("\
2252 Show default input radix for entering numbers."), NULL,
2253 set_input_radix,
2254 show_input_radix,
2255 &setlist, &showlist);
2256
2257 add_setshow_zuinteger_cmd ("output-radix", class_support, &output_radix_1,
2258 _("\
2259 Set default output radix for printing of values."), _("\
2260 Show default output radix for printing of values."), NULL,
2261 set_output_radix,
2262 show_output_radix,
2263 &setlist, &showlist);
2264
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."),
2276 &setlist);
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."),
2280 &showlist);
2281
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);
2287 }
This page took 0.076458 seconds and 5 git commands to generate.