]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gdb/valprint.c
2005-02-24 Andrew Cagney <cagney@gnu.org>
[thirdparty/binutils-gdb.git] / gdb / valprint.c
1 /* Print values for GDB, the GNU debugger.
2
3 Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2005 Free Software
5 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 2 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, write to the Free Software
21 Foundation, Inc., 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA. */
23
24 #include "defs.h"
25 #include "gdb_string.h"
26 #include "symtab.h"
27 #include "gdbtypes.h"
28 #include "value.h"
29 #include "gdbcore.h"
30 #include "gdbcmd.h"
31 #include "target.h"
32 #include "language.h"
33 #include "annotate.h"
34 #include "valprint.h"
35 #include "floatformat.h"
36 #include "doublest.h"
37
38 #include <errno.h>
39
40 /* Prototypes for local functions */
41
42 static int partial_memory_read (CORE_ADDR memaddr, char *myaddr,
43 int len, int *errnoptr);
44
45 static void show_print (char *, int);
46
47 static void set_print (char *, int);
48
49 static void set_radix (char *, int);
50
51 static void show_radix (char *, int);
52
53 static void set_input_radix (char *, int, struct cmd_list_element *);
54
55 static void set_input_radix_1 (int, unsigned);
56
57 static void set_output_radix (char *, int, struct cmd_list_element *);
58
59 static void set_output_radix_1 (int, unsigned);
60
61 void _initialize_valprint (void);
62
63 /* Maximum number of chars to print for a string pointer value or vector
64 contents, or UINT_MAX for no limit. Note that "set print elements 0"
65 stores UINT_MAX in print_max, which displays in a show command as
66 "unlimited". */
67
68 unsigned int print_max;
69 #define PRINT_MAX_DEFAULT 200 /* Start print_max off at this value. */
70 static void
71 show_print_max (struct ui_file *file, int from_tty,
72 struct cmd_list_element *c, const char *value)
73 {
74 fprintf_filtered (file, _("\
75 Limit on string chars or array elements to print is %s.\n"),
76 value);
77 }
78
79
80 /* Default input and output radixes, and output format letter. */
81
82 unsigned input_radix = 10;
83 static void
84 show_input_radix (struct ui_file *file, int from_tty,
85 struct cmd_list_element *c, const char *value)
86 {
87 fprintf_filtered (file, _("\
88 Default input radix for entering numbers is %s.\n"),
89 value);
90 }
91
92 unsigned output_radix = 10;
93 static void
94 show_output_radix (struct ui_file *file, int from_tty,
95 struct cmd_list_element *c, const char *value)
96 {
97 fprintf_filtered (file, _("\
98 Default output radix for printing of values is %s.\n"),
99 value);
100 }
101 int output_format = 0;
102
103 /* Print repeat counts if there are more than this many repetitions of an
104 element in an array. Referenced by the low level language dependent
105 print routines. */
106
107 unsigned int repeat_count_threshold = 10;
108 static void
109 show_repeat_count_threshold (struct ui_file *file, int from_tty,
110 struct cmd_list_element *c, const char *value)
111 {
112 fprintf_filtered (file, _("Threshold for repeated print elements is %s.\n"),
113 value);
114 }
115
116 /* If nonzero, stops printing of char arrays at first null. */
117
118 int stop_print_at_null;
119 static void
120 show_stop_print_at_null (struct ui_file *file, int from_tty,
121 struct cmd_list_element *c, const char *value)
122 {
123 fprintf_filtered (file, _("\
124 Printing of char arrays to stop at first null char is %s.\n"),
125 value);
126 }
127
128 /* Controls pretty printing of structures. */
129
130 int prettyprint_structs;
131 static void
132 show_prettyprint_structs (struct ui_file *file, int from_tty,
133 struct cmd_list_element *c, const char *value)
134 {
135 fprintf_filtered (file, _("Prettyprinting of structures is %s.\n"), value);
136 }
137
138 /* Controls pretty printing of arrays. */
139
140 int prettyprint_arrays;
141 static void
142 show_prettyprint_arrays (struct ui_file *file, int from_tty,
143 struct cmd_list_element *c, const char *value)
144 {
145 fprintf_filtered (file, _("Prettyprinting of arrays is %s.\n"), value);
146 }
147
148 /* If nonzero, causes unions inside structures or other unions to be
149 printed. */
150
151 int unionprint; /* Controls printing of nested unions. */
152 static void
153 show_unionprint (struct ui_file *file, int from_tty,
154 struct cmd_list_element *c, const char *value)
155 {
156 fprintf_filtered (file, _("\
157 Printing of unions interior to structures is %s.\n"),
158 value);
159 }
160
161 /* If nonzero, causes machine addresses to be printed in certain contexts. */
162
163 int addressprint; /* Controls printing of machine addresses */
164 static void
165 show_addressprint (struct ui_file *file, int from_tty,
166 struct cmd_list_element *c, const char *value)
167 {
168 fprintf_filtered (file, _("Printing of addresses is %s.\n"), value);
169 }
170 \f
171
172 /* Print data of type TYPE located at VALADDR (within GDB), which came from
173 the inferior at address ADDRESS, onto stdio stream STREAM according to
174 FORMAT (a letter, or 0 for natural format using TYPE).
175
176 If DEREF_REF is nonzero, then dereference references, otherwise just print
177 them like pointers.
178
179 The PRETTY parameter controls prettyprinting.
180
181 If the data are a string pointer, returns the number of string characters
182 printed.
183
184 FIXME: The data at VALADDR is in target byte order. If gdb is ever
185 enhanced to be able to debug more than the single target it was compiled
186 for (specific CPU type and thus specific target byte ordering), then
187 either the print routines are going to have to take this into account,
188 or the data is going to have to be passed into here already converted
189 to the host byte ordering, whichever is more convenient. */
190
191
192 int
193 val_print (struct type *type, const bfd_byte *valaddr, int embedded_offset,
194 CORE_ADDR address, struct ui_file *stream, int format,
195 int deref_ref, int recurse, enum val_prettyprint pretty)
196 {
197 struct type *real_type = check_typedef (type);
198 if (pretty == Val_pretty_default)
199 {
200 pretty = prettyprint_structs ? Val_prettyprint : Val_no_prettyprint;
201 }
202
203 QUIT;
204
205 /* Ensure that the type is complete and not just a stub. If the type is
206 only a stub and we can't find and substitute its complete type, then
207 print appropriate string and return. */
208
209 if (TYPE_STUB (real_type))
210 {
211 fprintf_filtered (stream, "<incomplete type>");
212 gdb_flush (stream);
213 return (0);
214 }
215
216 return (LA_VAL_PRINT (type, valaddr, embedded_offset, address,
217 stream, format, deref_ref, recurse, pretty));
218 }
219
220 /* Print the value VAL in C-ish syntax on stream STREAM.
221 FORMAT is a format-letter, or 0 for print in natural format of data type.
222 If the object printed is a string pointer, returns
223 the number of string bytes printed. */
224
225 int
226 value_print (struct value *val, struct ui_file *stream, int format,
227 enum val_prettyprint pretty)
228 {
229 if (val == 0)
230 {
231 printf_filtered (_("<address of value unknown>"));
232 return 0;
233 }
234 if (value_optimized_out (val))
235 {
236 printf_filtered (_("<value optimized out>"));
237 return 0;
238 }
239 return LA_VALUE_PRINT (val, stream, format, pretty);
240 }
241
242 /* Called by various <lang>_val_print routines to print
243 TYPE_CODE_INT's. TYPE is the type. VALADDR is the address of the
244 value. STREAM is where to print the value. */
245
246 void
247 val_print_type_code_int (struct type *type, const bfd_byte *valaddr,
248 struct ui_file *stream)
249 {
250 if (TYPE_LENGTH (type) > sizeof (LONGEST))
251 {
252 LONGEST val;
253
254 if (TYPE_UNSIGNED (type)
255 && extract_long_unsigned_integer (valaddr, TYPE_LENGTH (type),
256 &val))
257 {
258 print_longest (stream, 'u', 0, val);
259 }
260 else
261 {
262 /* Signed, or we couldn't turn an unsigned value into a
263 LONGEST. For signed values, one could assume two's
264 complement (a reasonable assumption, I think) and do
265 better than this. */
266 print_hex_chars (stream, (unsigned char *) valaddr,
267 TYPE_LENGTH (type));
268 }
269 }
270 else
271 {
272 print_longest (stream, TYPE_UNSIGNED (type) ? 'u' : 'd', 0,
273 unpack_long (type, valaddr));
274 }
275 }
276
277 /* Print a number according to FORMAT which is one of d,u,x,o,b,h,w,g.
278 The raison d'etre of this function is to consolidate printing of
279 LONG_LONG's into this one function. The format chars b,h,w,g are
280 from print_scalar_formatted(). Numbers are printed using C
281 format.
282
283 USE_C_FORMAT means to use C format in all cases. Without it,
284 'o' and 'x' format do not include the standard C radix prefix
285 (leading 0 or 0x).
286
287 Hilfinger/2004-09-09: USE_C_FORMAT was originally called USE_LOCAL
288 and was intended to request formating according to the current
289 language and would be used for most integers that GDB prints. The
290 exceptional cases were things like protocols where the format of
291 the integer is a protocol thing, not a user-visible thing). The
292 parameter remains to preserve the information of what things might
293 be printed with language-specific format, should we ever resurrect
294 that capability. */
295
296 void
297 print_longest (struct ui_file *stream, int format, int use_c_format,
298 LONGEST val_long)
299 {
300 const char *val;
301
302 switch (format)
303 {
304 case 'd':
305 val = int_string (val_long, 10, 1, 0, 1); break;
306 case 'u':
307 val = int_string (val_long, 10, 0, 0, 1); break;
308 case 'x':
309 val = int_string (val_long, 16, 0, 0, use_c_format); break;
310 case 'b':
311 val = int_string (val_long, 16, 0, 2, 1); break;
312 case 'h':
313 val = int_string (val_long, 16, 0, 4, 1); break;
314 case 'w':
315 val = int_string (val_long, 16, 0, 8, 1); break;
316 case 'g':
317 val = int_string (val_long, 16, 0, 16, 1); break;
318 break;
319 case 'o':
320 val = int_string (val_long, 8, 0, 0, use_c_format); break;
321 default:
322 internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
323 }
324 fputs_filtered (val, stream);
325 }
326
327 /* This used to be a macro, but I don't think it is called often enough
328 to merit such treatment. */
329 /* Convert a LONGEST to an int. This is used in contexts (e.g. number of
330 arguments to a function, number in a value history, register number, etc.)
331 where the value must not be larger than can fit in an int. */
332
333 int
334 longest_to_int (LONGEST arg)
335 {
336 /* Let the compiler do the work */
337 int rtnval = (int) arg;
338
339 /* Check for overflows or underflows */
340 if (sizeof (LONGEST) > sizeof (int))
341 {
342 if (rtnval != arg)
343 {
344 error (_("Value out of range."));
345 }
346 }
347 return (rtnval);
348 }
349
350 /* Print a floating point value of type TYPE (not always a
351 TYPE_CODE_FLT), pointed to in GDB by VALADDR, on STREAM. */
352
353 void
354 print_floating (const bfd_byte *valaddr, struct type *type,
355 struct ui_file *stream)
356 {
357 DOUBLEST doub;
358 int inv;
359 const struct floatformat *fmt = NULL;
360 unsigned len = TYPE_LENGTH (type);
361
362 /* If it is a floating-point, check for obvious problems. */
363 if (TYPE_CODE (type) == TYPE_CODE_FLT)
364 fmt = floatformat_from_type (type);
365 if (fmt != NULL && floatformat_is_nan (fmt, valaddr))
366 {
367 if (floatformat_is_negative (fmt, valaddr))
368 fprintf_filtered (stream, "-");
369 fprintf_filtered (stream, "nan(");
370 fputs_filtered ("0x", stream);
371 fputs_filtered (floatformat_mantissa (fmt, valaddr), stream);
372 fprintf_filtered (stream, ")");
373 return;
374 }
375
376 /* NOTE: cagney/2002-01-15: The TYPE passed into print_floating()
377 isn't necessarily a TYPE_CODE_FLT. Consequently, unpack_double
378 needs to be used as that takes care of any necessary type
379 conversions. Such conversions are of course direct to DOUBLEST
380 and disregard any possible target floating point limitations.
381 For instance, a u64 would be converted and displayed exactly on a
382 host with 80 bit DOUBLEST but with loss of information on a host
383 with 64 bit DOUBLEST. */
384
385 doub = unpack_double (type, valaddr, &inv);
386 if (inv)
387 {
388 fprintf_filtered (stream, "<invalid float value>");
389 return;
390 }
391
392 /* FIXME: kettenis/2001-01-20: The following code makes too much
393 assumptions about the host and target floating point format. */
394
395 /* NOTE: cagney/2002-02-03: Since the TYPE of what was passed in may
396 not necessarially be a TYPE_CODE_FLT, the below ignores that and
397 instead uses the type's length to determine the precision of the
398 floating-point value being printed. */
399
400 if (len < sizeof (double))
401 fprintf_filtered (stream, "%.9g", (double) doub);
402 else if (len == sizeof (double))
403 fprintf_filtered (stream, "%.17g", (double) doub);
404 else
405 #ifdef PRINTF_HAS_LONG_DOUBLE
406 fprintf_filtered (stream, "%.35Lg", doub);
407 #else
408 /* This at least wins with values that are representable as
409 doubles. */
410 fprintf_filtered (stream, "%.17g", (double) doub);
411 #endif
412 }
413
414 void
415 print_binary_chars (struct ui_file *stream, const bfd_byte *valaddr,
416 unsigned len)
417 {
418
419 #define BITS_IN_BYTES 8
420
421 const bfd_byte *p;
422 unsigned int i;
423 int b;
424
425 /* Declared "int" so it will be signed.
426 * This ensures that right shift will shift in zeros.
427 */
428 const int mask = 0x080;
429
430 /* FIXME: We should be not printing leading zeroes in most cases. */
431
432 if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
433 {
434 for (p = valaddr;
435 p < valaddr + len;
436 p++)
437 {
438 /* Every byte has 8 binary characters; peel off
439 * and print from the MSB end.
440 */
441 for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
442 {
443 if (*p & (mask >> i))
444 b = 1;
445 else
446 b = 0;
447
448 fprintf_filtered (stream, "%1d", b);
449 }
450 }
451 }
452 else
453 {
454 for (p = valaddr + len - 1;
455 p >= valaddr;
456 p--)
457 {
458 for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
459 {
460 if (*p & (mask >> i))
461 b = 1;
462 else
463 b = 0;
464
465 fprintf_filtered (stream, "%1d", b);
466 }
467 }
468 }
469 }
470
471 /* VALADDR points to an integer of LEN bytes.
472 * Print it in octal on stream or format it in buf.
473 */
474 void
475 print_octal_chars (struct ui_file *stream, const bfd_byte *valaddr,
476 unsigned len)
477 {
478 const bfd_byte *p;
479 unsigned char octa1, octa2, octa3, carry;
480 int cycle;
481
482 /* FIXME: We should be not printing leading zeroes in most cases. */
483
484
485 /* Octal is 3 bits, which doesn't fit. Yuk. So we have to track
486 * the extra bits, which cycle every three bytes:
487 *
488 * Byte side: 0 1 2 3
489 * | | | |
490 * bit number 123 456 78 | 9 012 345 6 | 78 901 234 | 567 890 12 |
491 *
492 * Octal side: 0 1 carry 3 4 carry ...
493 *
494 * Cycle number: 0 1 2
495 *
496 * But of course we are printing from the high side, so we have to
497 * figure out where in the cycle we are so that we end up with no
498 * left over bits at the end.
499 */
500 #define BITS_IN_OCTAL 3
501 #define HIGH_ZERO 0340
502 #define LOW_ZERO 0016
503 #define CARRY_ZERO 0003
504 #define HIGH_ONE 0200
505 #define MID_ONE 0160
506 #define LOW_ONE 0016
507 #define CARRY_ONE 0001
508 #define HIGH_TWO 0300
509 #define MID_TWO 0070
510 #define LOW_TWO 0007
511
512 /* For 32 we start in cycle 2, with two bits and one bit carry;
513 * for 64 in cycle in cycle 1, with one bit and a two bit carry.
514 */
515 cycle = (len * BITS_IN_BYTES) % BITS_IN_OCTAL;
516 carry = 0;
517
518 fputs_filtered ("0", stream);
519 if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
520 {
521 for (p = valaddr;
522 p < valaddr + len;
523 p++)
524 {
525 switch (cycle)
526 {
527 case 0:
528 /* No carry in, carry out two bits.
529 */
530 octa1 = (HIGH_ZERO & *p) >> 5;
531 octa2 = (LOW_ZERO & *p) >> 2;
532 carry = (CARRY_ZERO & *p);
533 fprintf_filtered (stream, "%o", octa1);
534 fprintf_filtered (stream, "%o", octa2);
535 break;
536
537 case 1:
538 /* Carry in two bits, carry out one bit.
539 */
540 octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
541 octa2 = (MID_ONE & *p) >> 4;
542 octa3 = (LOW_ONE & *p) >> 1;
543 carry = (CARRY_ONE & *p);
544 fprintf_filtered (stream, "%o", octa1);
545 fprintf_filtered (stream, "%o", octa2);
546 fprintf_filtered (stream, "%o", octa3);
547 break;
548
549 case 2:
550 /* Carry in one bit, no carry out.
551 */
552 octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
553 octa2 = (MID_TWO & *p) >> 3;
554 octa3 = (LOW_TWO & *p);
555 carry = 0;
556 fprintf_filtered (stream, "%o", octa1);
557 fprintf_filtered (stream, "%o", octa2);
558 fprintf_filtered (stream, "%o", octa3);
559 break;
560
561 default:
562 error (_("Internal error in octal conversion;"));
563 }
564
565 cycle++;
566 cycle = cycle % BITS_IN_OCTAL;
567 }
568 }
569 else
570 {
571 for (p = valaddr + len - 1;
572 p >= valaddr;
573 p--)
574 {
575 switch (cycle)
576 {
577 case 0:
578 /* Carry out, no carry in */
579 octa1 = (HIGH_ZERO & *p) >> 5;
580 octa2 = (LOW_ZERO & *p) >> 2;
581 carry = (CARRY_ZERO & *p);
582 fprintf_filtered (stream, "%o", octa1);
583 fprintf_filtered (stream, "%o", octa2);
584 break;
585
586 case 1:
587 /* Carry in, carry out */
588 octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
589 octa2 = (MID_ONE & *p) >> 4;
590 octa3 = (LOW_ONE & *p) >> 1;
591 carry = (CARRY_ONE & *p);
592 fprintf_filtered (stream, "%o", octa1);
593 fprintf_filtered (stream, "%o", octa2);
594 fprintf_filtered (stream, "%o", octa3);
595 break;
596
597 case 2:
598 /* Carry in, no carry out */
599 octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
600 octa2 = (MID_TWO & *p) >> 3;
601 octa3 = (LOW_TWO & *p);
602 carry = 0;
603 fprintf_filtered (stream, "%o", octa1);
604 fprintf_filtered (stream, "%o", octa2);
605 fprintf_filtered (stream, "%o", octa3);
606 break;
607
608 default:
609 error (_("Internal error in octal conversion;"));
610 }
611
612 cycle++;
613 cycle = cycle % BITS_IN_OCTAL;
614 }
615 }
616
617 }
618
619 /* VALADDR points to an integer of LEN bytes.
620 * Print it in decimal on stream or format it in buf.
621 */
622 void
623 print_decimal_chars (struct ui_file *stream, const bfd_byte *valaddr,
624 unsigned len)
625 {
626 #define TEN 10
627 #define TWO_TO_FOURTH 16
628 #define CARRY_OUT( x ) ((x) / TEN) /* extend char to int */
629 #define CARRY_LEFT( x ) ((x) % TEN)
630 #define SHIFT( x ) ((x) << 4)
631 #define START_P \
632 ((TARGET_BYTE_ORDER == BFD_ENDIAN_BIG) ? valaddr : valaddr + len - 1)
633 #define NOT_END_P \
634 ((TARGET_BYTE_ORDER == BFD_ENDIAN_BIG) ? (p < valaddr + len) : (p >= valaddr))
635 #define NEXT_P \
636 ((TARGET_BYTE_ORDER == BFD_ENDIAN_BIG) ? p++ : p-- )
637 #define LOW_NIBBLE( x ) ( (x) & 0x00F)
638 #define HIGH_NIBBLE( x ) (((x) & 0x0F0) >> 4)
639
640 const bfd_byte *p;
641 unsigned char *digits;
642 int carry;
643 int decimal_len;
644 int i, j, decimal_digits;
645 int dummy;
646 int flip;
647
648 /* Base-ten number is less than twice as many digits
649 * as the base 16 number, which is 2 digits per byte.
650 */
651 decimal_len = len * 2 * 2;
652 digits = xmalloc (decimal_len);
653
654 for (i = 0; i < decimal_len; i++)
655 {
656 digits[i] = 0;
657 }
658
659 /* Ok, we have an unknown number of bytes of data to be printed in
660 * decimal.
661 *
662 * Given a hex number (in nibbles) as XYZ, we start by taking X and
663 * decemalizing it as "x1 x2" in two decimal nibbles. Then we multiply
664 * the nibbles by 16, add Y and re-decimalize. Repeat with Z.
665 *
666 * The trick is that "digits" holds a base-10 number, but sometimes
667 * the individual digits are > 10.
668 *
669 * Outer loop is per nibble (hex digit) of input, from MSD end to
670 * LSD end.
671 */
672 decimal_digits = 0; /* Number of decimal digits so far */
673 p = START_P;
674 flip = 0;
675 while (NOT_END_P)
676 {
677 /*
678 * Multiply current base-ten number by 16 in place.
679 * Each digit was between 0 and 9, now is between
680 * 0 and 144.
681 */
682 for (j = 0; j < decimal_digits; j++)
683 {
684 digits[j] = SHIFT (digits[j]);
685 }
686
687 /* Take the next nibble off the input and add it to what
688 * we've got in the LSB position. Bottom 'digit' is now
689 * between 0 and 159.
690 *
691 * "flip" is used to run this loop twice for each byte.
692 */
693 if (flip == 0)
694 {
695 /* Take top nibble.
696 */
697 digits[0] += HIGH_NIBBLE (*p);
698 flip = 1;
699 }
700 else
701 {
702 /* Take low nibble and bump our pointer "p".
703 */
704 digits[0] += LOW_NIBBLE (*p);
705 NEXT_P;
706 flip = 0;
707 }
708
709 /* Re-decimalize. We have to do this often enough
710 * that we don't overflow, but once per nibble is
711 * overkill. Easier this way, though. Note that the
712 * carry is often larger than 10 (e.g. max initial
713 * carry out of lowest nibble is 15, could bubble all
714 * the way up greater than 10). So we have to do
715 * the carrying beyond the last current digit.
716 */
717 carry = 0;
718 for (j = 0; j < decimal_len - 1; j++)
719 {
720 digits[j] += carry;
721
722 /* "/" won't handle an unsigned char with
723 * a value that if signed would be negative.
724 * So extend to longword int via "dummy".
725 */
726 dummy = digits[j];
727 carry = CARRY_OUT (dummy);
728 digits[j] = CARRY_LEFT (dummy);
729
730 if (j >= decimal_digits && carry == 0)
731 {
732 /*
733 * All higher digits are 0 and we
734 * no longer have a carry.
735 *
736 * Note: "j" is 0-based, "decimal_digits" is
737 * 1-based.
738 */
739 decimal_digits = j + 1;
740 break;
741 }
742 }
743 }
744
745 /* Ok, now "digits" is the decimal representation, with
746 * the "decimal_digits" actual digits. Print!
747 */
748 for (i = decimal_digits - 1; i >= 0; i--)
749 {
750 fprintf_filtered (stream, "%1d", digits[i]);
751 }
752 xfree (digits);
753 }
754
755 /* VALADDR points to an integer of LEN bytes. Print it in hex on stream. */
756
757 void
758 print_hex_chars (struct ui_file *stream, const bfd_byte *valaddr,
759 unsigned len)
760 {
761 const bfd_byte *p;
762
763 /* FIXME: We should be not printing leading zeroes in most cases. */
764
765 fputs_filtered ("0x", stream);
766 if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
767 {
768 for (p = valaddr;
769 p < valaddr + len;
770 p++)
771 {
772 fprintf_filtered (stream, "%02x", *p);
773 }
774 }
775 else
776 {
777 for (p = valaddr + len - 1;
778 p >= valaddr;
779 p--)
780 {
781 fprintf_filtered (stream, "%02x", *p);
782 }
783 }
784 }
785
786 /* VALADDR points to a char integer of LEN bytes. Print it out in appropriate language form on stream.
787 Omit any leading zero chars. */
788
789 void
790 print_char_chars (struct ui_file *stream, const bfd_byte *valaddr,
791 unsigned len)
792 {
793 const bfd_byte *p;
794
795 if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
796 {
797 p = valaddr;
798 while (p < valaddr + len - 1 && *p == 0)
799 ++p;
800
801 while (p < valaddr + len)
802 {
803 LA_EMIT_CHAR (*p, stream, '\'');
804 ++p;
805 }
806 }
807 else
808 {
809 p = valaddr + len - 1;
810 while (p > valaddr && *p == 0)
811 --p;
812
813 while (p >= valaddr)
814 {
815 LA_EMIT_CHAR (*p, stream, '\'');
816 --p;
817 }
818 }
819 }
820
821 /* Called by various <lang>_val_print routines to print elements of an
822 array in the form "<elem1>, <elem2>, <elem3>, ...".
823
824 (FIXME?) Assumes array element separator is a comma, which is correct
825 for all languages currently handled.
826 (FIXME?) Some languages have a notation for repeated array elements,
827 perhaps we should try to use that notation when appropriate.
828 */
829
830 void
831 val_print_array_elements (struct type *type, const bfd_byte *valaddr,
832 CORE_ADDR address, struct ui_file *stream,
833 int format, int deref_ref,
834 int recurse, enum val_prettyprint pretty,
835 unsigned int i)
836 {
837 unsigned int things_printed = 0;
838 unsigned len;
839 struct type *elttype;
840 unsigned eltlen;
841 /* Position of the array element we are examining to see
842 whether it is repeated. */
843 unsigned int rep1;
844 /* Number of repetitions we have detected so far. */
845 unsigned int reps;
846
847 elttype = TYPE_TARGET_TYPE (type);
848 eltlen = TYPE_LENGTH (check_typedef (elttype));
849 len = TYPE_LENGTH (type) / eltlen;
850
851 annotate_array_section_begin (i, elttype);
852
853 for (; i < len && things_printed < print_max; i++)
854 {
855 if (i != 0)
856 {
857 if (prettyprint_arrays)
858 {
859 fprintf_filtered (stream, ",\n");
860 print_spaces_filtered (2 + 2 * recurse, stream);
861 }
862 else
863 {
864 fprintf_filtered (stream, ", ");
865 }
866 }
867 wrap_here (n_spaces (2 + 2 * recurse));
868
869 rep1 = i + 1;
870 reps = 1;
871 while ((rep1 < len) &&
872 !memcmp (valaddr + i * eltlen, valaddr + rep1 * eltlen, eltlen))
873 {
874 ++reps;
875 ++rep1;
876 }
877
878 if (reps > repeat_count_threshold)
879 {
880 val_print (elttype, valaddr + i * eltlen, 0, 0, stream, format,
881 deref_ref, recurse + 1, pretty);
882 annotate_elt_rep (reps);
883 fprintf_filtered (stream, " <repeats %u times>", reps);
884 annotate_elt_rep_end ();
885
886 i = rep1 - 1;
887 things_printed += repeat_count_threshold;
888 }
889 else
890 {
891 val_print (elttype, valaddr + i * eltlen, 0, 0, stream, format,
892 deref_ref, recurse + 1, pretty);
893 annotate_elt ();
894 things_printed++;
895 }
896 }
897 annotate_array_section_end ();
898 if (i < len)
899 {
900 fprintf_filtered (stream, "...");
901 }
902 }
903
904 /* Read LEN bytes of target memory at address MEMADDR, placing the
905 results in GDB's memory at MYADDR. Returns a count of the bytes
906 actually read, and optionally an errno value in the location
907 pointed to by ERRNOPTR if ERRNOPTR is non-null. */
908
909 /* FIXME: cagney/1999-10-14: Only used by val_print_string. Can this
910 function be eliminated. */
911
912 static int
913 partial_memory_read (CORE_ADDR memaddr, char *myaddr, int len, int *errnoptr)
914 {
915 int nread; /* Number of bytes actually read. */
916 int errcode; /* Error from last read. */
917
918 /* First try a complete read. */
919 errcode = target_read_memory (memaddr, myaddr, len);
920 if (errcode == 0)
921 {
922 /* Got it all. */
923 nread = len;
924 }
925 else
926 {
927 /* Loop, reading one byte at a time until we get as much as we can. */
928 for (errcode = 0, nread = 0; len > 0 && errcode == 0; nread++, len--)
929 {
930 errcode = target_read_memory (memaddr++, myaddr++, 1);
931 }
932 /* If an error, the last read was unsuccessful, so adjust count. */
933 if (errcode != 0)
934 {
935 nread--;
936 }
937 }
938 if (errnoptr != NULL)
939 {
940 *errnoptr = errcode;
941 }
942 return (nread);
943 }
944
945 /* Print a string from the inferior, starting at ADDR and printing up to LEN
946 characters, of WIDTH bytes a piece, to STREAM. If LEN is -1, printing
947 stops at the first null byte, otherwise printing proceeds (including null
948 bytes) until either print_max or LEN characters have been printed,
949 whichever is smaller. */
950
951 /* FIXME: Use target_read_string. */
952
953 int
954 val_print_string (CORE_ADDR addr, int len, int width, struct ui_file *stream)
955 {
956 int force_ellipsis = 0; /* Force ellipsis to be printed if nonzero. */
957 int errcode; /* Errno returned from bad reads. */
958 unsigned int fetchlimit; /* Maximum number of chars to print. */
959 unsigned int nfetch; /* Chars to fetch / chars fetched. */
960 unsigned int chunksize; /* Size of each fetch, in chars. */
961 char *buffer = NULL; /* Dynamically growable fetch buffer. */
962 char *bufptr; /* Pointer to next available byte in buffer. */
963 char *limit; /* First location past end of fetch buffer. */
964 struct cleanup *old_chain = NULL; /* Top of the old cleanup chain. */
965 int found_nul; /* Non-zero if we found the nul char */
966
967 /* First we need to figure out the limit on the number of characters we are
968 going to attempt to fetch and print. This is actually pretty simple. If
969 LEN >= zero, then the limit is the minimum of LEN and print_max. If
970 LEN is -1, then the limit is print_max. This is true regardless of
971 whether print_max is zero, UINT_MAX (unlimited), or something in between,
972 because finding the null byte (or available memory) is what actually
973 limits the fetch. */
974
975 fetchlimit = (len == -1 ? print_max : min (len, print_max));
976
977 /* Now decide how large of chunks to try to read in one operation. This
978 is also pretty simple. If LEN >= zero, then we want fetchlimit chars,
979 so we might as well read them all in one operation. If LEN is -1, we
980 are looking for a null terminator to end the fetching, so we might as
981 well read in blocks that are large enough to be efficient, but not so
982 large as to be slow if fetchlimit happens to be large. So we choose the
983 minimum of 8 and fetchlimit. We used to use 200 instead of 8 but
984 200 is way too big for remote debugging over a serial line. */
985
986 chunksize = (len == -1 ? min (8, fetchlimit) : fetchlimit);
987
988 /* Loop until we either have all the characters to print, or we encounter
989 some error, such as bumping into the end of the address space. */
990
991 found_nul = 0;
992 old_chain = make_cleanup (null_cleanup, 0);
993
994 if (len > 0)
995 {
996 buffer = (char *) xmalloc (len * width);
997 bufptr = buffer;
998 old_chain = make_cleanup (xfree, buffer);
999
1000 nfetch = partial_memory_read (addr, bufptr, len * width, &errcode)
1001 / width;
1002 addr += nfetch * width;
1003 bufptr += nfetch * width;
1004 }
1005 else if (len == -1)
1006 {
1007 unsigned long bufsize = 0;
1008 do
1009 {
1010 QUIT;
1011 nfetch = min (chunksize, fetchlimit - bufsize);
1012
1013 if (buffer == NULL)
1014 buffer = (char *) xmalloc (nfetch * width);
1015 else
1016 {
1017 discard_cleanups (old_chain);
1018 buffer = (char *) xrealloc (buffer, (nfetch + bufsize) * width);
1019 }
1020
1021 old_chain = make_cleanup (xfree, buffer);
1022 bufptr = buffer + bufsize * width;
1023 bufsize += nfetch;
1024
1025 /* Read as much as we can. */
1026 nfetch = partial_memory_read (addr, bufptr, nfetch * width, &errcode)
1027 / width;
1028
1029 /* Scan this chunk for the null byte that terminates the string
1030 to print. If found, we don't need to fetch any more. Note
1031 that bufptr is explicitly left pointing at the next character
1032 after the null byte, or at the next character after the end of
1033 the buffer. */
1034
1035 limit = bufptr + nfetch * width;
1036 while (bufptr < limit)
1037 {
1038 unsigned long c;
1039
1040 c = extract_unsigned_integer (bufptr, width);
1041 addr += width;
1042 bufptr += width;
1043 if (c == 0)
1044 {
1045 /* We don't care about any error which happened after
1046 the NULL terminator. */
1047 errcode = 0;
1048 found_nul = 1;
1049 break;
1050 }
1051 }
1052 }
1053 while (errcode == 0 /* no error */
1054 && bufptr - buffer < fetchlimit * width /* no overrun */
1055 && !found_nul); /* haven't found nul yet */
1056 }
1057 else
1058 { /* length of string is really 0! */
1059 buffer = bufptr = NULL;
1060 errcode = 0;
1061 }
1062
1063 /* bufptr and addr now point immediately beyond the last byte which we
1064 consider part of the string (including a '\0' which ends the string). */
1065
1066 /* We now have either successfully filled the buffer to fetchlimit, or
1067 terminated early due to an error or finding a null char when LEN is -1. */
1068
1069 if (len == -1 && !found_nul)
1070 {
1071 char *peekbuf;
1072
1073 /* We didn't find a null terminator we were looking for. Attempt
1074 to peek at the next character. If not successful, or it is not
1075 a null byte, then force ellipsis to be printed. */
1076
1077 peekbuf = (char *) alloca (width);
1078
1079 if (target_read_memory (addr, peekbuf, width) == 0
1080 && extract_unsigned_integer (peekbuf, width) != 0)
1081 force_ellipsis = 1;
1082 }
1083 else if ((len >= 0 && errcode != 0) || (len > (bufptr - buffer) / width))
1084 {
1085 /* Getting an error when we have a requested length, or fetching less
1086 than the number of characters actually requested, always make us
1087 print ellipsis. */
1088 force_ellipsis = 1;
1089 }
1090
1091 QUIT;
1092
1093 /* If we get an error before fetching anything, don't print a string.
1094 But if we fetch something and then get an error, print the string
1095 and then the error message. */
1096 if (errcode == 0 || bufptr > buffer)
1097 {
1098 if (addressprint)
1099 {
1100 fputs_filtered (" ", stream);
1101 }
1102 LA_PRINT_STRING (stream, buffer, (bufptr - buffer) / width, width, force_ellipsis);
1103 }
1104
1105 if (errcode != 0)
1106 {
1107 if (errcode == EIO)
1108 {
1109 fprintf_filtered (stream, " <Address ");
1110 deprecated_print_address_numeric (addr, 1, stream);
1111 fprintf_filtered (stream, " out of bounds>");
1112 }
1113 else
1114 {
1115 fprintf_filtered (stream, " <Error reading address ");
1116 deprecated_print_address_numeric (addr, 1, stream);
1117 fprintf_filtered (stream, ": %s>", safe_strerror (errcode));
1118 }
1119 }
1120 gdb_flush (stream);
1121 do_cleanups (old_chain);
1122 return ((bufptr - buffer) / width);
1123 }
1124 \f
1125
1126 /* Validate an input or output radix setting, and make sure the user
1127 knows what they really did here. Radix setting is confusing, e.g.
1128 setting the input radix to "10" never changes it! */
1129
1130 static void
1131 set_input_radix (char *args, int from_tty, struct cmd_list_element *c)
1132 {
1133 set_input_radix_1 (from_tty, input_radix);
1134 }
1135
1136 static void
1137 set_input_radix_1 (int from_tty, unsigned radix)
1138 {
1139 /* We don't currently disallow any input radix except 0 or 1, which don't
1140 make any mathematical sense. In theory, we can deal with any input
1141 radix greater than 1, even if we don't have unique digits for every
1142 value from 0 to radix-1, but in practice we lose on large radix values.
1143 We should either fix the lossage or restrict the radix range more.
1144 (FIXME). */
1145
1146 if (radix < 2)
1147 {
1148 /* FIXME: cagney/2002-03-17: This needs to revert the bad radix
1149 value. */
1150 error (_("Nonsense input radix ``decimal %u''; input radix unchanged."),
1151 radix);
1152 }
1153 input_radix = radix;
1154 if (from_tty)
1155 {
1156 printf_filtered (_("Input radix now set to decimal %u, hex %x, octal %o.\n"),
1157 radix, radix, radix);
1158 }
1159 }
1160
1161 static void
1162 set_output_radix (char *args, int from_tty, struct cmd_list_element *c)
1163 {
1164 set_output_radix_1 (from_tty, output_radix);
1165 }
1166
1167 static void
1168 set_output_radix_1 (int from_tty, unsigned radix)
1169 {
1170 /* Validate the radix and disallow ones that we aren't prepared to
1171 handle correctly, leaving the radix unchanged. */
1172 switch (radix)
1173 {
1174 case 16:
1175 output_format = 'x'; /* hex */
1176 break;
1177 case 10:
1178 output_format = 0; /* decimal */
1179 break;
1180 case 8:
1181 output_format = 'o'; /* octal */
1182 break;
1183 default:
1184 /* FIXME: cagney/2002-03-17: This needs to revert the bad radix
1185 value. */
1186 error (_("Unsupported output radix ``decimal %u''; output radix unchanged."),
1187 radix);
1188 }
1189 output_radix = radix;
1190 if (from_tty)
1191 {
1192 printf_filtered (_("Output radix now set to decimal %u, hex %x, octal %o.\n"),
1193 radix, radix, radix);
1194 }
1195 }
1196
1197 /* Set both the input and output radix at once. Try to set the output radix
1198 first, since it has the most restrictive range. An radix that is valid as
1199 an output radix is also valid as an input radix.
1200
1201 It may be useful to have an unusual input radix. If the user wishes to
1202 set an input radix that is not valid as an output radix, he needs to use
1203 the 'set input-radix' command. */
1204
1205 static void
1206 set_radix (char *arg, int from_tty)
1207 {
1208 unsigned radix;
1209
1210 radix = (arg == NULL) ? 10 : parse_and_eval_long (arg);
1211 set_output_radix_1 (0, radix);
1212 set_input_radix_1 (0, radix);
1213 if (from_tty)
1214 {
1215 printf_filtered (_("Input and output radices now set to decimal %u, hex %x, octal %o.\n"),
1216 radix, radix, radix);
1217 }
1218 }
1219
1220 /* Show both the input and output radices. */
1221
1222 static void
1223 show_radix (char *arg, int from_tty)
1224 {
1225 if (from_tty)
1226 {
1227 if (input_radix == output_radix)
1228 {
1229 printf_filtered (_("Input and output radices set to decimal %u, hex %x, octal %o.\n"),
1230 input_radix, input_radix, input_radix);
1231 }
1232 else
1233 {
1234 printf_filtered (_("Input radix set to decimal %u, hex %x, octal %o.\n"),
1235 input_radix, input_radix, input_radix);
1236 printf_filtered (_("Output radix set to decimal %u, hex %x, octal %o.\n"),
1237 output_radix, output_radix, output_radix);
1238 }
1239 }
1240 }
1241 \f
1242
1243 static void
1244 set_print (char *arg, int from_tty)
1245 {
1246 printf_unfiltered (
1247 "\"set print\" must be followed by the name of a print subcommand.\n");
1248 help_list (setprintlist, "set print ", -1, gdb_stdout);
1249 }
1250
1251 static void
1252 show_print (char *args, int from_tty)
1253 {
1254 cmd_show_list (showprintlist, from_tty, "");
1255 }
1256 \f
1257 void
1258 _initialize_valprint (void)
1259 {
1260 struct cmd_list_element *c;
1261
1262 add_prefix_cmd ("print", no_class, set_print,
1263 _("Generic command for setting how things print."),
1264 &setprintlist, "set print ", 0, &setlist);
1265 add_alias_cmd ("p", "print", no_class, 1, &setlist);
1266 /* prefer set print to set prompt */
1267 add_alias_cmd ("pr", "print", no_class, 1, &setlist);
1268
1269 add_prefix_cmd ("print", no_class, show_print,
1270 _("Generic command for showing print settings."),
1271 &showprintlist, "show print ", 0, &showlist);
1272 add_alias_cmd ("p", "print", no_class, 1, &showlist);
1273 add_alias_cmd ("pr", "print", no_class, 1, &showlist);
1274
1275 add_setshow_uinteger_cmd ("elements", no_class, &print_max, _("\
1276 Set limit on string chars or array elements to print."), _("\
1277 Show limit on string chars or array elements to print."), _("\
1278 \"set print elements 0\" causes there to be no limit."),
1279 NULL,
1280 show_print_max,
1281 &setprintlist, &showprintlist);
1282
1283 add_setshow_boolean_cmd ("null-stop", no_class, &stop_print_at_null, _("\
1284 Set printing of char arrays to stop at first null char."), _("\
1285 Show printing of char arrays to stop at first null char."), NULL,
1286 NULL,
1287 show_stop_print_at_null,
1288 &setprintlist, &showprintlist);
1289
1290 add_setshow_uinteger_cmd ("repeats", no_class,
1291 &repeat_count_threshold, _("\
1292 Set threshold for repeated print elements."), _("\
1293 Show threshold for repeated print elements."), _("\
1294 \"set print repeats 0\" causes all elements to be individually printed."),
1295 NULL,
1296 show_repeat_count_threshold,
1297 &setprintlist, &showprintlist);
1298
1299 add_setshow_boolean_cmd ("pretty", class_support, &prettyprint_structs, _("\
1300 Set prettyprinting of structures."), _("\
1301 Show prettyprinting of structures."), NULL,
1302 NULL,
1303 show_prettyprint_structs,
1304 &setprintlist, &showprintlist);
1305
1306 add_setshow_boolean_cmd ("union", class_support, &unionprint, _("\
1307 Set printing of unions interior to structures."), _("\
1308 Show printing of unions interior to structures."), NULL,
1309 NULL,
1310 show_unionprint,
1311 &setprintlist, &showprintlist);
1312
1313 add_setshow_boolean_cmd ("array", class_support, &prettyprint_arrays, _("\
1314 Set prettyprinting of arrays."), _("\
1315 Show prettyprinting of arrays."), NULL,
1316 NULL,
1317 show_prettyprint_arrays,
1318 &setprintlist, &showprintlist);
1319
1320 add_setshow_boolean_cmd ("address", class_support, &addressprint, _("\
1321 Set printing of addresses."), _("\
1322 Show printing of addresses."), NULL,
1323 NULL,
1324 show_addressprint,
1325 &setprintlist, &showprintlist);
1326
1327 add_setshow_uinteger_cmd ("input-radix", class_support, &input_radix, _("\
1328 Set default input radix for entering numbers."), _("\
1329 Show default input radix for entering numbers."), NULL,
1330 set_input_radix,
1331 show_input_radix,
1332 &setlist, &showlist);
1333
1334 add_setshow_uinteger_cmd ("output-radix", class_support, &output_radix, _("\
1335 Set default output radix for printing of values."), _("\
1336 Show default output radix for printing of values."), NULL,
1337 set_output_radix,
1338 show_output_radix,
1339 &setlist, &showlist);
1340
1341 /* The "set radix" and "show radix" commands are special in that
1342 they are like normal set and show commands but allow two normally
1343 independent variables to be either set or shown with a single
1344 command. So the usual deprecated_add_set_cmd() and [deleted]
1345 add_show_from_set() commands aren't really appropriate. */
1346 /* FIXME: i18n: With the new add_setshow_integer command, that is no
1347 longer true - show can display anything. */
1348 add_cmd ("radix", class_support, set_radix, _("\
1349 Set default input and output number radices.\n\
1350 Use 'set input-radix' or 'set output-radix' to independently set each.\n\
1351 Without an argument, sets both radices back to the default value of 10."),
1352 &setlist);
1353 add_cmd ("radix", class_support, show_radix, _("\
1354 Show the default input and output number radices.\n\
1355 Use 'show input-radix' or 'show output-radix' to independently show each."),
1356 &showlist);
1357
1358 /* Give people the defaults which they are used to. */
1359 prettyprint_structs = 0;
1360 prettyprint_arrays = 0;
1361 unionprint = 1;
1362 addressprint = 1;
1363 print_max = PRINT_MAX_DEFAULT;
1364 }