Update copyright year in version of output (gdb/gdbserver/gdbreplay)
[deliverable/binutils-gdb.git] / gdb / valprint.c
CommitLineData
c906108c 1/* Print values for GDB, the GNU debugger.
5c1c87f0 2
6aba47ca 3 Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
0fb0cc75 4 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
4c38e0a4 5 2009, 2010 Free Software Foundation, Inc.
c906108c 6
c5aa993b 7 This file is part of GDB.
c906108c 8
c5aa993b
JM
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
a9762ec7 11 the Free Software Foundation; either version 3 of the License, or
c5aa993b 12 (at your option) any later version.
c906108c 13
c5aa993b
JM
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.
c906108c 18
c5aa993b 19 You should have received a copy of the GNU General Public License
a9762ec7 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
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"
c906108c 30#include "language.h"
c906108c
SS
31#include "annotate.h"
32#include "valprint.h"
39424bef 33#include "floatformat.h"
d16aafd8 34#include "doublest.h"
19ca80ba 35#include "exceptions.h"
7678ef8f 36#include "dfp.h"
a6bac58e 37#include "python/python.h"
0c3acc09 38#include "ada-lang.h"
c906108c
SS
39
40#include <errno.h>
41
42/* Prototypes for local functions */
43
777ea8f1 44static int partial_memory_read (CORE_ADDR memaddr, gdb_byte *myaddr,
917317f4
JM
45 int len, int *errnoptr);
46
a14ed312 47static void show_print (char *, int);
c906108c 48
a14ed312 49static void set_print (char *, int);
c906108c 50
a14ed312 51static void set_radix (char *, int);
c906108c 52
a14ed312 53static void show_radix (char *, int);
c906108c 54
a14ed312 55static void set_input_radix (char *, int, struct cmd_list_element *);
c906108c 56
a14ed312 57static void set_input_radix_1 (int, unsigned);
c906108c 58
a14ed312 59static void set_output_radix (char *, int, struct cmd_list_element *);
c906108c 60
a14ed312 61static void set_output_radix_1 (int, unsigned);
c906108c 62
a14ed312 63void _initialize_valprint (void);
c906108c 64
c906108c 65#define PRINT_MAX_DEFAULT 200 /* Start print_max off at this value. */
79a45b7d
TT
66
67struct value_print_options user_print_options =
68{
69 Val_pretty_default, /* pretty */
70 0, /* prettyprint_arrays */
71 0, /* prettyprint_structs */
72 0, /* vtblprint */
73 1, /* unionprint */
74 1, /* addressprint */
75 0, /* objectprint */
76 PRINT_MAX_DEFAULT, /* print_max */
77 10, /* repeat_count_threshold */
78 0, /* output_format */
79 0, /* format */
80 0, /* stop_print_at_null */
81 0, /* inspect_it */
82 0, /* print_array_indexes */
83 0, /* deref_ref */
84 1, /* static_field_print */
a6bac58e
TT
85 1, /* pascal_static_field_print */
86 0, /* raw */
87 0 /* summary */
79a45b7d
TT
88};
89
90/* Initialize *OPTS to be a copy of the user print options. */
91void
92get_user_print_options (struct value_print_options *opts)
93{
94 *opts = user_print_options;
95}
96
97/* Initialize *OPTS to be a copy of the user print options, but with
98 pretty-printing disabled. */
99void
100get_raw_print_options (struct value_print_options *opts)
101{
102 *opts = user_print_options;
103 opts->pretty = Val_no_prettyprint;
104}
105
106/* Initialize *OPTS to be a copy of the user print options, but using
107 FORMAT as the formatting option. */
108void
109get_formatted_print_options (struct value_print_options *opts,
110 char format)
111{
112 *opts = user_print_options;
113 opts->format = format;
114}
115
920d2a44
AC
116static void
117show_print_max (struct ui_file *file, int from_tty,
118 struct cmd_list_element *c, const char *value)
119{
120 fprintf_filtered (file, _("\
121Limit on string chars or array elements to print is %s.\n"),
122 value);
123}
124
c906108c
SS
125
126/* Default input and output radixes, and output format letter. */
127
128unsigned input_radix = 10;
920d2a44
AC
129static void
130show_input_radix (struct ui_file *file, int from_tty,
131 struct cmd_list_element *c, const char *value)
132{
133 fprintf_filtered (file, _("\
134Default input radix for entering numbers is %s.\n"),
135 value);
136}
137
c906108c 138unsigned output_radix = 10;
920d2a44
AC
139static void
140show_output_radix (struct ui_file *file, int from_tty,
141 struct cmd_list_element *c, const char *value)
142{
143 fprintf_filtered (file, _("\
144Default output radix for printing of values is %s.\n"),
145 value);
146}
c906108c 147
e79af960
JB
148/* By default we print arrays without printing the index of each element in
149 the array. This behavior can be changed by setting PRINT_ARRAY_INDEXES. */
150
e79af960
JB
151static void
152show_print_array_indexes (struct ui_file *file, int from_tty,
153 struct cmd_list_element *c, const char *value)
154{
155 fprintf_filtered (file, _("Printing of array indexes is %s.\n"), value);
156}
157
c906108c
SS
158/* Print repeat counts if there are more than this many repetitions of an
159 element in an array. Referenced by the low level language dependent
160 print routines. */
161
920d2a44
AC
162static void
163show_repeat_count_threshold (struct ui_file *file, int from_tty,
164 struct cmd_list_element *c, const char *value)
165{
166 fprintf_filtered (file, _("Threshold for repeated print elements is %s.\n"),
167 value);
168}
c906108c
SS
169
170/* If nonzero, stops printing of char arrays at first null. */
171
920d2a44
AC
172static void
173show_stop_print_at_null (struct ui_file *file, int from_tty,
174 struct cmd_list_element *c, const char *value)
175{
176 fprintf_filtered (file, _("\
177Printing of char arrays to stop at first null char is %s.\n"),
178 value);
179}
c906108c
SS
180
181/* Controls pretty printing of structures. */
182
920d2a44
AC
183static void
184show_prettyprint_structs (struct ui_file *file, int from_tty,
185 struct cmd_list_element *c, const char *value)
186{
187 fprintf_filtered (file, _("Prettyprinting of structures is %s.\n"), value);
188}
c906108c
SS
189
190/* Controls pretty printing of arrays. */
191
920d2a44
AC
192static void
193show_prettyprint_arrays (struct ui_file *file, int from_tty,
194 struct cmd_list_element *c, const char *value)
195{
196 fprintf_filtered (file, _("Prettyprinting of arrays is %s.\n"), value);
197}
c906108c
SS
198
199/* If nonzero, causes unions inside structures or other unions to be
200 printed. */
201
920d2a44
AC
202static void
203show_unionprint (struct ui_file *file, int from_tty,
204 struct cmd_list_element *c, const char *value)
205{
206 fprintf_filtered (file, _("\
207Printing of unions interior to structures is %s.\n"),
208 value);
209}
c906108c
SS
210
211/* If nonzero, causes machine addresses to be printed in certain contexts. */
212
920d2a44
AC
213static void
214show_addressprint (struct ui_file *file, int from_tty,
215 struct cmd_list_element *c, const char *value)
216{
217 fprintf_filtered (file, _("Printing of addresses is %s.\n"), value);
218}
c906108c 219\f
c5aa993b 220
a6bac58e
TT
221/* A helper function for val_print. When printing in "summary" mode,
222 we want to print scalar arguments, but not aggregate arguments.
223 This function distinguishes between the two. */
224
225static int
226scalar_type_p (struct type *type)
227{
228 CHECK_TYPEDEF (type);
229 while (TYPE_CODE (type) == TYPE_CODE_REF)
230 {
231 type = TYPE_TARGET_TYPE (type);
232 CHECK_TYPEDEF (type);
233 }
234 switch (TYPE_CODE (type))
235 {
236 case TYPE_CODE_ARRAY:
237 case TYPE_CODE_STRUCT:
238 case TYPE_CODE_UNION:
239 case TYPE_CODE_SET:
240 case TYPE_CODE_STRING:
241 case TYPE_CODE_BITSTRING:
242 return 0;
243 default:
244 return 1;
245 }
246}
247
0e03807e
TT
248/* Helper function to check the validity of some bits of a value.
249
250 If TYPE represents some aggregate type (e.g., a structure), return 1.
251
252 Otherwise, any of the bytes starting at OFFSET and extending for
253 TYPE_LENGTH(TYPE) bytes are invalid, print a message to STREAM and
254 return 0. The checking is done using FUNCS.
255
256 Otherwise, return 1. */
257
258static int
259valprint_check_validity (struct ui_file *stream,
260 struct type *type,
261 int offset,
262 const struct value *val)
263{
264 CHECK_TYPEDEF (type);
265
266 if (TYPE_CODE (type) != TYPE_CODE_UNION
267 && TYPE_CODE (type) != TYPE_CODE_STRUCT
268 && TYPE_CODE (type) != TYPE_CODE_ARRAY)
269 {
270 if (! value_bits_valid (val, TARGET_CHAR_BIT * offset,
271 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
272 {
273 fprintf_filtered (stream, _("<value optimized out>"));
274 return 0;
275 }
8cf6f0b1
TT
276
277 if (value_bits_synthetic_pointer (val, TARGET_CHAR_BIT * offset,
278 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
279 {
280 fputs_filtered (_("<synthetic pointer>"), stream);
281 return 0;
282 }
0e03807e
TT
283 }
284
285 return 1;
286}
287
d8ca156b
JB
288/* Print using the given LANGUAGE the data of type TYPE located at VALADDR
289 (within GDB), which came from the inferior at address ADDRESS, onto
79a45b7d 290 stdio stream STREAM according to OPTIONS.
c906108c
SS
291
292 If the data are a string pointer, returns the number of string characters
293 printed.
294
295 FIXME: The data at VALADDR is in target byte order. If gdb is ever
296 enhanced to be able to debug more than the single target it was compiled
297 for (specific CPU type and thus specific target byte ordering), then
298 either the print routines are going to have to take this into account,
299 or the data is going to have to be passed into here already converted
300 to the host byte ordering, whichever is more convenient. */
301
302
303int
fc1a4b47 304val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
79a45b7d 305 CORE_ADDR address, struct ui_file *stream, int recurse,
0e03807e 306 const struct value *val,
79a45b7d 307 const struct value_print_options *options,
d8ca156b 308 const struct language_defn *language)
c906108c 309{
19ca80ba
DJ
310 volatile struct gdb_exception except;
311 int ret = 0;
79a45b7d 312 struct value_print_options local_opts = *options;
c906108c 313 struct type *real_type = check_typedef (type);
79a45b7d
TT
314
315 if (local_opts.pretty == Val_pretty_default)
316 local_opts.pretty = (local_opts.prettyprint_structs
317 ? Val_prettyprint : Val_no_prettyprint);
c5aa993b 318
c906108c
SS
319 QUIT;
320
321 /* Ensure that the type is complete and not just a stub. If the type is
322 only a stub and we can't find and substitute its complete type, then
323 print appropriate string and return. */
324
74a9bb82 325 if (TYPE_STUB (real_type))
c906108c 326 {
0e03807e 327 fprintf_filtered (stream, _("<incomplete type>"));
c906108c
SS
328 gdb_flush (stream);
329 return (0);
330 }
c5aa993b 331
0e03807e
TT
332 if (!valprint_check_validity (stream, real_type, embedded_offset, val))
333 return 0;
334
a6bac58e
TT
335 if (!options->raw)
336 {
337 ret = apply_val_pretty_printer (type, valaddr, embedded_offset,
0e03807e
TT
338 address, stream, recurse,
339 val, options, language);
a6bac58e
TT
340 if (ret)
341 return ret;
342 }
343
344 /* Handle summary mode. If the value is a scalar, print it;
345 otherwise, print an ellipsis. */
346 if (options->summary && !scalar_type_p (type))
347 {
348 fprintf_filtered (stream, "...");
349 return 0;
350 }
351
19ca80ba
DJ
352 TRY_CATCH (except, RETURN_MASK_ERROR)
353 {
d8ca156b 354 ret = language->la_val_print (type, valaddr, embedded_offset, address,
0e03807e
TT
355 stream, recurse, val,
356 &local_opts);
19ca80ba
DJ
357 }
358 if (except.reason < 0)
359 fprintf_filtered (stream, _("<error reading variable>"));
360
361 return ret;
c906108c
SS
362}
363
806048c6
DJ
364/* Check whether the value VAL is printable. Return 1 if it is;
365 return 0 and print an appropriate error message to STREAM if it
366 is not. */
c906108c 367
806048c6
DJ
368static int
369value_check_printable (struct value *val, struct ui_file *stream)
c906108c
SS
370{
371 if (val == 0)
372 {
806048c6 373 fprintf_filtered (stream, _("<address of value unknown>"));
c906108c
SS
374 return 0;
375 }
806048c6 376
0e03807e 377 if (value_entirely_optimized_out (val))
c906108c 378 {
806048c6 379 fprintf_filtered (stream, _("<value optimized out>"));
c906108c
SS
380 return 0;
381 }
806048c6 382
bc3b79fd
TJB
383 if (TYPE_CODE (value_type (val)) == TYPE_CODE_INTERNAL_FUNCTION)
384 {
385 fprintf_filtered (stream, _("<internal function %s>"),
386 value_internal_function_name (val));
387 return 0;
388 }
389
806048c6
DJ
390 return 1;
391}
392
d8ca156b 393/* Print using the given LANGUAGE the value VAL onto stream STREAM according
79a45b7d 394 to OPTIONS.
806048c6
DJ
395
396 If the data are a string pointer, returns the number of string characters
397 printed.
398
399 This is a preferable interface to val_print, above, because it uses
400 GDB's value mechanism. */
401
402int
79a45b7d
TT
403common_val_print (struct value *val, struct ui_file *stream, int recurse,
404 const struct value_print_options *options,
d8ca156b 405 const struct language_defn *language)
806048c6
DJ
406{
407 if (!value_check_printable (val, stream))
408 return 0;
409
0c3acc09
JB
410 if (language->la_language == language_ada)
411 /* The value might have a dynamic type, which would cause trouble
412 below when trying to extract the value contents (since the value
413 size is determined from the type size which is unknown). So
414 get a fixed representation of our value. */
415 val = ada_to_fixed_value (val);
416
0e03807e 417 return val_print (value_type (val), value_contents_for_printing (val),
42ae5230 418 value_embedded_offset (val), value_address (val),
0e03807e
TT
419 stream, recurse,
420 val, options, language);
806048c6
DJ
421}
422
7348c5e1
JB
423/* Print on stream STREAM the value VAL according to OPTIONS. The value
424 is printed using the current_language syntax.
425
426 If the object printed is a string pointer, return the number of string
427 bytes printed. */
806048c6
DJ
428
429int
79a45b7d
TT
430value_print (struct value *val, struct ui_file *stream,
431 const struct value_print_options *options)
806048c6
DJ
432{
433 if (!value_check_printable (val, stream))
434 return 0;
435
a6bac58e
TT
436 if (!options->raw)
437 {
438 int r = apply_val_pretty_printer (value_type (val),
0e03807e 439 value_contents_for_printing (val),
a6bac58e
TT
440 value_embedded_offset (val),
441 value_address (val),
0e03807e
TT
442 stream, 0,
443 val, options, current_language);
a109c7c1 444
a6bac58e
TT
445 if (r)
446 return r;
447 }
448
79a45b7d 449 return LA_VALUE_PRINT (val, stream, options);
c906108c
SS
450}
451
452/* Called by various <lang>_val_print routines to print
453 TYPE_CODE_INT's. TYPE is the type. VALADDR is the address of the
454 value. STREAM is where to print the value. */
455
456void
fc1a4b47 457val_print_type_code_int (struct type *type, const gdb_byte *valaddr,
fba45db2 458 struct ui_file *stream)
c906108c 459{
50810684 460 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
d44e8473 461
c906108c
SS
462 if (TYPE_LENGTH (type) > sizeof (LONGEST))
463 {
464 LONGEST val;
465
466 if (TYPE_UNSIGNED (type)
467 && extract_long_unsigned_integer (valaddr, TYPE_LENGTH (type),
e17a4113 468 byte_order, &val))
c906108c
SS
469 {
470 print_longest (stream, 'u', 0, val);
471 }
472 else
473 {
474 /* Signed, or we couldn't turn an unsigned value into a
475 LONGEST. For signed values, one could assume two's
476 complement (a reasonable assumption, I think) and do
477 better than this. */
478 print_hex_chars (stream, (unsigned char *) valaddr,
d44e8473 479 TYPE_LENGTH (type), byte_order);
c906108c
SS
480 }
481 }
482 else
483 {
c906108c
SS
484 print_longest (stream, TYPE_UNSIGNED (type) ? 'u' : 'd', 0,
485 unpack_long (type, valaddr));
c906108c
SS
486 }
487}
488
4f2aea11
MK
489void
490val_print_type_code_flags (struct type *type, const gdb_byte *valaddr,
491 struct ui_file *stream)
492{
befae759 493 ULONGEST val = unpack_long (type, valaddr);
4f2aea11
MK
494 int bitpos, nfields = TYPE_NFIELDS (type);
495
496 fputs_filtered ("[ ", stream);
497 for (bitpos = 0; bitpos < nfields; bitpos++)
498 {
316703b9
MK
499 if (TYPE_FIELD_BITPOS (type, bitpos) != -1
500 && (val & ((ULONGEST)1 << bitpos)))
4f2aea11
MK
501 {
502 if (TYPE_FIELD_NAME (type, bitpos))
503 fprintf_filtered (stream, "%s ", TYPE_FIELD_NAME (type, bitpos));
504 else
505 fprintf_filtered (stream, "#%d ", bitpos);
506 }
507 }
508 fputs_filtered ("]", stream);
509}
510
c906108c
SS
511/* Print a number according to FORMAT which is one of d,u,x,o,b,h,w,g.
512 The raison d'etre of this function is to consolidate printing of
bb599908
PH
513 LONG_LONG's into this one function. The format chars b,h,w,g are
514 from print_scalar_formatted(). Numbers are printed using C
515 format.
516
517 USE_C_FORMAT means to use C format in all cases. Without it,
518 'o' and 'x' format do not include the standard C radix prefix
519 (leading 0 or 0x).
520
521 Hilfinger/2004-09-09: USE_C_FORMAT was originally called USE_LOCAL
522 and was intended to request formating according to the current
523 language and would be used for most integers that GDB prints. The
524 exceptional cases were things like protocols where the format of
525 the integer is a protocol thing, not a user-visible thing). The
526 parameter remains to preserve the information of what things might
527 be printed with language-specific format, should we ever resurrect
528 that capability. */
c906108c
SS
529
530void
bb599908 531print_longest (struct ui_file *stream, int format, int use_c_format,
fba45db2 532 LONGEST val_long)
c906108c 533{
2bfb72ee
AC
534 const char *val;
535
c906108c
SS
536 switch (format)
537 {
538 case 'd':
bb599908 539 val = int_string (val_long, 10, 1, 0, 1); break;
c906108c 540 case 'u':
bb599908 541 val = int_string (val_long, 10, 0, 0, 1); break;
c906108c 542 case 'x':
bb599908 543 val = int_string (val_long, 16, 0, 0, use_c_format); break;
c906108c 544 case 'b':
bb599908 545 val = int_string (val_long, 16, 0, 2, 1); break;
c906108c 546 case 'h':
bb599908 547 val = int_string (val_long, 16, 0, 4, 1); break;
c906108c 548 case 'w':
bb599908 549 val = int_string (val_long, 16, 0, 8, 1); break;
c906108c 550 case 'g':
bb599908 551 val = int_string (val_long, 16, 0, 16, 1); break;
c906108c
SS
552 break;
553 case 'o':
bb599908 554 val = int_string (val_long, 8, 0, 0, use_c_format); break;
c906108c 555 default:
e2e0b3e5 556 internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
bb599908 557 }
2bfb72ee 558 fputs_filtered (val, stream);
c906108c
SS
559}
560
c906108c
SS
561/* This used to be a macro, but I don't think it is called often enough
562 to merit such treatment. */
563/* Convert a LONGEST to an int. This is used in contexts (e.g. number of
564 arguments to a function, number in a value history, register number, etc.)
565 where the value must not be larger than can fit in an int. */
566
567int
fba45db2 568longest_to_int (LONGEST arg)
c906108c
SS
569{
570 /* Let the compiler do the work */
571 int rtnval = (int) arg;
572
573 /* Check for overflows or underflows */
574 if (sizeof (LONGEST) > sizeof (int))
575 {
576 if (rtnval != arg)
577 {
8a3fe4f8 578 error (_("Value out of range."));
c906108c
SS
579 }
580 }
581 return (rtnval);
582}
583
a73c86fb
AC
584/* Print a floating point value of type TYPE (not always a
585 TYPE_CODE_FLT), pointed to in GDB by VALADDR, on STREAM. */
c906108c
SS
586
587void
fc1a4b47 588print_floating (const gdb_byte *valaddr, struct type *type,
c84141d6 589 struct ui_file *stream)
c906108c
SS
590{
591 DOUBLEST doub;
592 int inv;
a73c86fb 593 const struct floatformat *fmt = NULL;
c906108c 594 unsigned len = TYPE_LENGTH (type);
20389057 595 enum float_kind kind;
c5aa993b 596
a73c86fb
AC
597 /* If it is a floating-point, check for obvious problems. */
598 if (TYPE_CODE (type) == TYPE_CODE_FLT)
599 fmt = floatformat_from_type (type);
20389057 600 if (fmt != NULL)
39424bef 601 {
20389057
DJ
602 kind = floatformat_classify (fmt, valaddr);
603 if (kind == float_nan)
604 {
605 if (floatformat_is_negative (fmt, valaddr))
606 fprintf_filtered (stream, "-");
607 fprintf_filtered (stream, "nan(");
608 fputs_filtered ("0x", stream);
609 fputs_filtered (floatformat_mantissa (fmt, valaddr), stream);
610 fprintf_filtered (stream, ")");
611 return;
612 }
613 else if (kind == float_infinite)
614 {
615 if (floatformat_is_negative (fmt, valaddr))
616 fputs_filtered ("-", stream);
617 fputs_filtered ("inf", stream);
618 return;
619 }
7355ddba 620 }
c906108c 621
a73c86fb
AC
622 /* NOTE: cagney/2002-01-15: The TYPE passed into print_floating()
623 isn't necessarily a TYPE_CODE_FLT. Consequently, unpack_double
624 needs to be used as that takes care of any necessary type
625 conversions. Such conversions are of course direct to DOUBLEST
626 and disregard any possible target floating point limitations.
627 For instance, a u64 would be converted and displayed exactly on a
628 host with 80 bit DOUBLEST but with loss of information on a host
629 with 64 bit DOUBLEST. */
c2f05ac9 630
c906108c
SS
631 doub = unpack_double (type, valaddr, &inv);
632 if (inv)
633 {
634 fprintf_filtered (stream, "<invalid float value>");
635 return;
636 }
637
39424bef
MK
638 /* FIXME: kettenis/2001-01-20: The following code makes too much
639 assumptions about the host and target floating point format. */
640
a73c86fb 641 /* NOTE: cagney/2002-02-03: Since the TYPE of what was passed in may
c41b8590 642 not necessarily be a TYPE_CODE_FLT, the below ignores that and
a73c86fb
AC
643 instead uses the type's length to determine the precision of the
644 floating-point value being printed. */
c2f05ac9 645
c906108c 646 if (len < sizeof (double))
c5aa993b 647 fprintf_filtered (stream, "%.9g", (double) doub);
c906108c 648 else if (len == sizeof (double))
c5aa993b 649 fprintf_filtered (stream, "%.17g", (double) doub);
c906108c
SS
650 else
651#ifdef PRINTF_HAS_LONG_DOUBLE
652 fprintf_filtered (stream, "%.35Lg", doub);
653#else
39424bef
MK
654 /* This at least wins with values that are representable as
655 doubles. */
c906108c
SS
656 fprintf_filtered (stream, "%.17g", (double) doub);
657#endif
658}
659
7678ef8f
TJB
660void
661print_decimal_floating (const gdb_byte *valaddr, struct type *type,
662 struct ui_file *stream)
663{
e17a4113 664 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
7678ef8f
TJB
665 char decstr[MAX_DECIMAL_STRING];
666 unsigned len = TYPE_LENGTH (type);
667
e17a4113 668 decimal_to_string (valaddr, len, byte_order, decstr);
7678ef8f
TJB
669 fputs_filtered (decstr, stream);
670 return;
671}
672
c5aa993b 673void
fc1a4b47 674print_binary_chars (struct ui_file *stream, const gdb_byte *valaddr,
d44e8473 675 unsigned len, enum bfd_endian byte_order)
c906108c
SS
676{
677
678#define BITS_IN_BYTES 8
679
fc1a4b47 680 const gdb_byte *p;
745b8ca0 681 unsigned int i;
c5aa993b 682 int b;
c906108c
SS
683
684 /* Declared "int" so it will be signed.
685 * This ensures that right shift will shift in zeros.
686 */
c5aa993b 687 const int mask = 0x080;
c906108c
SS
688
689 /* FIXME: We should be not printing leading zeroes in most cases. */
690
d44e8473 691 if (byte_order == BFD_ENDIAN_BIG)
c906108c
SS
692 {
693 for (p = valaddr;
694 p < valaddr + len;
695 p++)
696 {
c5aa993b
JM
697 /* Every byte has 8 binary characters; peel off
698 * and print from the MSB end.
699 */
700 for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
701 {
702 if (*p & (mask >> i))
703 b = 1;
704 else
705 b = 0;
706
707 fprintf_filtered (stream, "%1d", b);
708 }
c906108c
SS
709 }
710 }
711 else
712 {
713 for (p = valaddr + len - 1;
714 p >= valaddr;
715 p--)
716 {
c5aa993b
JM
717 for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
718 {
719 if (*p & (mask >> i))
720 b = 1;
721 else
722 b = 0;
723
724 fprintf_filtered (stream, "%1d", b);
725 }
c906108c
SS
726 }
727 }
c906108c
SS
728}
729
730/* VALADDR points to an integer of LEN bytes.
731 * Print it in octal on stream or format it in buf.
732 */
733void
fc1a4b47 734print_octal_chars (struct ui_file *stream, const gdb_byte *valaddr,
d44e8473 735 unsigned len, enum bfd_endian byte_order)
c906108c 736{
fc1a4b47 737 const gdb_byte *p;
c906108c 738 unsigned char octa1, octa2, octa3, carry;
c5aa993b
JM
739 int cycle;
740
c906108c
SS
741 /* FIXME: We should be not printing leading zeroes in most cases. */
742
743
744 /* Octal is 3 bits, which doesn't fit. Yuk. So we have to track
745 * the extra bits, which cycle every three bytes:
746 *
747 * Byte side: 0 1 2 3
748 * | | | |
749 * bit number 123 456 78 | 9 012 345 6 | 78 901 234 | 567 890 12 |
750 *
751 * Octal side: 0 1 carry 3 4 carry ...
752 *
753 * Cycle number: 0 1 2
754 *
755 * But of course we are printing from the high side, so we have to
756 * figure out where in the cycle we are so that we end up with no
757 * left over bits at the end.
758 */
759#define BITS_IN_OCTAL 3
760#define HIGH_ZERO 0340
761#define LOW_ZERO 0016
762#define CARRY_ZERO 0003
763#define HIGH_ONE 0200
764#define MID_ONE 0160
765#define LOW_ONE 0016
766#define CARRY_ONE 0001
767#define HIGH_TWO 0300
768#define MID_TWO 0070
769#define LOW_TWO 0007
770
771 /* For 32 we start in cycle 2, with two bits and one bit carry;
772 * for 64 in cycle in cycle 1, with one bit and a two bit carry.
773 */
774 cycle = (len * BITS_IN_BYTES) % BITS_IN_OCTAL;
775 carry = 0;
c5aa993b 776
bb599908 777 fputs_filtered ("0", stream);
d44e8473 778 if (byte_order == BFD_ENDIAN_BIG)
c906108c
SS
779 {
780 for (p = valaddr;
781 p < valaddr + len;
782 p++)
783 {
c5aa993b
JM
784 switch (cycle)
785 {
786 case 0:
787 /* No carry in, carry out two bits.
788 */
789 octa1 = (HIGH_ZERO & *p) >> 5;
790 octa2 = (LOW_ZERO & *p) >> 2;
791 carry = (CARRY_ZERO & *p);
792 fprintf_filtered (stream, "%o", octa1);
793 fprintf_filtered (stream, "%o", octa2);
794 break;
795
796 case 1:
797 /* Carry in two bits, carry out one bit.
798 */
799 octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
800 octa2 = (MID_ONE & *p) >> 4;
801 octa3 = (LOW_ONE & *p) >> 1;
802 carry = (CARRY_ONE & *p);
803 fprintf_filtered (stream, "%o", octa1);
804 fprintf_filtered (stream, "%o", octa2);
805 fprintf_filtered (stream, "%o", octa3);
806 break;
807
808 case 2:
809 /* Carry in one bit, no carry out.
810 */
811 octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
812 octa2 = (MID_TWO & *p) >> 3;
813 octa3 = (LOW_TWO & *p);
814 carry = 0;
815 fprintf_filtered (stream, "%o", octa1);
816 fprintf_filtered (stream, "%o", octa2);
817 fprintf_filtered (stream, "%o", octa3);
818 break;
819
820 default:
8a3fe4f8 821 error (_("Internal error in octal conversion;"));
c5aa993b
JM
822 }
823
824 cycle++;
825 cycle = cycle % BITS_IN_OCTAL;
c906108c
SS
826 }
827 }
828 else
829 {
830 for (p = valaddr + len - 1;
831 p >= valaddr;
832 p--)
833 {
c5aa993b
JM
834 switch (cycle)
835 {
836 case 0:
837 /* Carry out, no carry in */
838 octa1 = (HIGH_ZERO & *p) >> 5;
839 octa2 = (LOW_ZERO & *p) >> 2;
840 carry = (CARRY_ZERO & *p);
841 fprintf_filtered (stream, "%o", octa1);
842 fprintf_filtered (stream, "%o", octa2);
843 break;
844
845 case 1:
846 /* Carry in, carry out */
847 octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
848 octa2 = (MID_ONE & *p) >> 4;
849 octa3 = (LOW_ONE & *p) >> 1;
850 carry = (CARRY_ONE & *p);
851 fprintf_filtered (stream, "%o", octa1);
852 fprintf_filtered (stream, "%o", octa2);
853 fprintf_filtered (stream, "%o", octa3);
854 break;
855
856 case 2:
857 /* Carry in, no carry out */
858 octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
859 octa2 = (MID_TWO & *p) >> 3;
860 octa3 = (LOW_TWO & *p);
861 carry = 0;
862 fprintf_filtered (stream, "%o", octa1);
863 fprintf_filtered (stream, "%o", octa2);
864 fprintf_filtered (stream, "%o", octa3);
865 break;
866
867 default:
8a3fe4f8 868 error (_("Internal error in octal conversion;"));
c5aa993b
JM
869 }
870
871 cycle++;
872 cycle = cycle % BITS_IN_OCTAL;
c906108c
SS
873 }
874 }
875
c906108c
SS
876}
877
878/* VALADDR points to an integer of LEN bytes.
879 * Print it in decimal on stream or format it in buf.
880 */
881void
fc1a4b47 882print_decimal_chars (struct ui_file *stream, const gdb_byte *valaddr,
d44e8473 883 unsigned len, enum bfd_endian byte_order)
c906108c
SS
884{
885#define TEN 10
c5aa993b 886#define CARRY_OUT( x ) ((x) / TEN) /* extend char to int */
c906108c
SS
887#define CARRY_LEFT( x ) ((x) % TEN)
888#define SHIFT( x ) ((x) << 4)
c906108c
SS
889#define LOW_NIBBLE( x ) ( (x) & 0x00F)
890#define HIGH_NIBBLE( x ) (((x) & 0x0F0) >> 4)
891
fc1a4b47 892 const gdb_byte *p;
c906108c 893 unsigned char *digits;
c5aa993b
JM
894 int carry;
895 int decimal_len;
896 int i, j, decimal_digits;
897 int dummy;
898 int flip;
899
c906108c
SS
900 /* Base-ten number is less than twice as many digits
901 * as the base 16 number, which is 2 digits per byte.
902 */
903 decimal_len = len * 2 * 2;
3c37485b 904 digits = xmalloc (decimal_len);
c906108c 905
c5aa993b
JM
906 for (i = 0; i < decimal_len; i++)
907 {
c906108c 908 digits[i] = 0;
c5aa993b 909 }
c906108c 910
c906108c
SS
911 /* Ok, we have an unknown number of bytes of data to be printed in
912 * decimal.
913 *
914 * Given a hex number (in nibbles) as XYZ, we start by taking X and
915 * decemalizing it as "x1 x2" in two decimal nibbles. Then we multiply
916 * the nibbles by 16, add Y and re-decimalize. Repeat with Z.
917 *
918 * The trick is that "digits" holds a base-10 number, but sometimes
919 * the individual digits are > 10.
920 *
921 * Outer loop is per nibble (hex digit) of input, from MSD end to
922 * LSD end.
923 */
c5aa993b 924 decimal_digits = 0; /* Number of decimal digits so far */
d44e8473 925 p = (byte_order == BFD_ENDIAN_BIG) ? valaddr : valaddr + len - 1;
c906108c 926 flip = 0;
d44e8473 927 while ((byte_order == BFD_ENDIAN_BIG) ? (p < valaddr + len) : (p >= valaddr))
c5aa993b 928 {
c906108c
SS
929 /*
930 * Multiply current base-ten number by 16 in place.
931 * Each digit was between 0 and 9, now is between
932 * 0 and 144.
933 */
c5aa993b
JM
934 for (j = 0; j < decimal_digits; j++)
935 {
936 digits[j] = SHIFT (digits[j]);
937 }
938
c906108c
SS
939 /* Take the next nibble off the input and add it to what
940 * we've got in the LSB position. Bottom 'digit' is now
941 * between 0 and 159.
942 *
943 * "flip" is used to run this loop twice for each byte.
944 */
c5aa993b
JM
945 if (flip == 0)
946 {
947 /* Take top nibble.
948 */
949 digits[0] += HIGH_NIBBLE (*p);
950 flip = 1;
951 }
952 else
953 {
954 /* Take low nibble and bump our pointer "p".
955 */
956 digits[0] += LOW_NIBBLE (*p);
d44e8473
MD
957 if (byte_order == BFD_ENDIAN_BIG)
958 p++;
959 else
960 p--;
c5aa993b
JM
961 flip = 0;
962 }
c906108c
SS
963
964 /* Re-decimalize. We have to do this often enough
965 * that we don't overflow, but once per nibble is
966 * overkill. Easier this way, though. Note that the
967 * carry is often larger than 10 (e.g. max initial
968 * carry out of lowest nibble is 15, could bubble all
969 * the way up greater than 10). So we have to do
970 * the carrying beyond the last current digit.
971 */
972 carry = 0;
c5aa993b
JM
973 for (j = 0; j < decimal_len - 1; j++)
974 {
975 digits[j] += carry;
976
977 /* "/" won't handle an unsigned char with
978 * a value that if signed would be negative.
979 * So extend to longword int via "dummy".
980 */
981 dummy = digits[j];
982 carry = CARRY_OUT (dummy);
983 digits[j] = CARRY_LEFT (dummy);
984
985 if (j >= decimal_digits && carry == 0)
986 {
987 /*
988 * All higher digits are 0 and we
989 * no longer have a carry.
990 *
991 * Note: "j" is 0-based, "decimal_digits" is
992 * 1-based.
993 */
994 decimal_digits = j + 1;
995 break;
996 }
997 }
998 }
c906108c
SS
999
1000 /* Ok, now "digits" is the decimal representation, with
1001 * the "decimal_digits" actual digits. Print!
1002 */
c5aa993b
JM
1003 for (i = decimal_digits - 1; i >= 0; i--)
1004 {
1005 fprintf_filtered (stream, "%1d", digits[i]);
1006 }
b8c9b27d 1007 xfree (digits);
c906108c
SS
1008}
1009
1010/* VALADDR points to an integer of LEN bytes. Print it in hex on stream. */
1011
6b9acc27 1012void
fc1a4b47 1013print_hex_chars (struct ui_file *stream, const gdb_byte *valaddr,
d44e8473 1014 unsigned len, enum bfd_endian byte_order)
c906108c 1015{
fc1a4b47 1016 const gdb_byte *p;
c906108c
SS
1017
1018 /* FIXME: We should be not printing leading zeroes in most cases. */
1019
bb599908 1020 fputs_filtered ("0x", stream);
d44e8473 1021 if (byte_order == BFD_ENDIAN_BIG)
c906108c
SS
1022 {
1023 for (p = valaddr;
1024 p < valaddr + len;
1025 p++)
1026 {
1027 fprintf_filtered (stream, "%02x", *p);
1028 }
1029 }
1030 else
1031 {
1032 for (p = valaddr + len - 1;
1033 p >= valaddr;
1034 p--)
1035 {
1036 fprintf_filtered (stream, "%02x", *p);
1037 }
1038 }
c906108c
SS
1039}
1040
6b9acc27
JJ
1041/* VALADDR points to a char integer of LEN bytes. Print it out in appropriate language form on stream.
1042 Omit any leading zero chars. */
1043
1044void
6c7a06a3
TT
1045print_char_chars (struct ui_file *stream, struct type *type,
1046 const gdb_byte *valaddr,
d44e8473 1047 unsigned len, enum bfd_endian byte_order)
6b9acc27 1048{
fc1a4b47 1049 const gdb_byte *p;
6b9acc27 1050
d44e8473 1051 if (byte_order == BFD_ENDIAN_BIG)
6b9acc27
JJ
1052 {
1053 p = valaddr;
1054 while (p < valaddr + len - 1 && *p == 0)
1055 ++p;
1056
1057 while (p < valaddr + len)
1058 {
6c7a06a3 1059 LA_EMIT_CHAR (*p, type, stream, '\'');
6b9acc27
JJ
1060 ++p;
1061 }
1062 }
1063 else
1064 {
1065 p = valaddr + len - 1;
1066 while (p > valaddr && *p == 0)
1067 --p;
1068
1069 while (p >= valaddr)
1070 {
6c7a06a3 1071 LA_EMIT_CHAR (*p, type, stream, '\'');
6b9acc27
JJ
1072 --p;
1073 }
1074 }
1075}
1076
79a45b7d 1077/* Print on STREAM using the given OPTIONS the index for the element
e79af960
JB
1078 at INDEX of an array whose index type is INDEX_TYPE. */
1079
1080void
1081maybe_print_array_index (struct type *index_type, LONGEST index,
79a45b7d
TT
1082 struct ui_file *stream,
1083 const struct value_print_options *options)
e79af960
JB
1084{
1085 struct value *index_value;
1086
79a45b7d 1087 if (!options->print_array_indexes)
e79af960
JB
1088 return;
1089
1090 index_value = value_from_longest (index_type, index);
1091
79a45b7d
TT
1092 LA_PRINT_ARRAY_INDEX (index_value, stream, options);
1093}
e79af960 1094
c906108c 1095/* Called by various <lang>_val_print routines to print elements of an
c5aa993b 1096 array in the form "<elem1>, <elem2>, <elem3>, ...".
c906108c 1097
c5aa993b
JM
1098 (FIXME?) Assumes array element separator is a comma, which is correct
1099 for all languages currently handled.
1100 (FIXME?) Some languages have a notation for repeated array elements,
1101 perhaps we should try to use that notation when appropriate.
1102 */
c906108c
SS
1103
1104void
fc1a4b47 1105val_print_array_elements (struct type *type, const gdb_byte *valaddr,
a2bd3dcd 1106 CORE_ADDR address, struct ui_file *stream,
79a45b7d 1107 int recurse,
0e03807e 1108 const struct value *val,
79a45b7d 1109 const struct value_print_options *options,
fba45db2 1110 unsigned int i)
c906108c
SS
1111{
1112 unsigned int things_printed = 0;
1113 unsigned len;
e79af960 1114 struct type *elttype, *index_type;
c906108c
SS
1115 unsigned eltlen;
1116 /* Position of the array element we are examining to see
1117 whether it is repeated. */
1118 unsigned int rep1;
1119 /* Number of repetitions we have detected so far. */
1120 unsigned int reps;
dbc98a8b 1121 LONGEST low_bound, high_bound;
c5aa993b 1122
c906108c
SS
1123 elttype = TYPE_TARGET_TYPE (type);
1124 eltlen = TYPE_LENGTH (check_typedef (elttype));
e79af960 1125 index_type = TYPE_INDEX_TYPE (type);
c906108c 1126
dbc98a8b 1127 if (get_array_bounds (type, &low_bound, &high_bound))
75be741b
JB
1128 {
1129 /* The array length should normally be HIGH_BOUND - LOW_BOUND + 1.
1130 But we have to be a little extra careful, because some languages
1131 such as Ada allow LOW_BOUND to be greater than HIGH_BOUND for
1132 empty arrays. In that situation, the array length is just zero,
1133 not negative! */
1134 if (low_bound > high_bound)
1135 len = 0;
1136 else
1137 len = high_bound - low_bound + 1;
1138 }
e936309c
JB
1139 else
1140 {
dbc98a8b
KW
1141 warning (_("unable to get bounds of array, assuming null array"));
1142 low_bound = 0;
1143 len = 0;
168de233
JB
1144 }
1145
c906108c
SS
1146 annotate_array_section_begin (i, elttype);
1147
79a45b7d 1148 for (; i < len && things_printed < options->print_max; i++)
c906108c
SS
1149 {
1150 if (i != 0)
1151 {
79a45b7d 1152 if (options->prettyprint_arrays)
c906108c
SS
1153 {
1154 fprintf_filtered (stream, ",\n");
1155 print_spaces_filtered (2 + 2 * recurse, stream);
1156 }
1157 else
1158 {
1159 fprintf_filtered (stream, ", ");
1160 }
1161 }
1162 wrap_here (n_spaces (2 + 2 * recurse));
dbc98a8b 1163 maybe_print_array_index (index_type, i + low_bound,
79a45b7d 1164 stream, options);
c906108c
SS
1165
1166 rep1 = i + 1;
1167 reps = 1;
c5aa993b 1168 while ((rep1 < len) &&
c906108c
SS
1169 !memcmp (valaddr + i * eltlen, valaddr + rep1 * eltlen, eltlen))
1170 {
1171 ++reps;
1172 ++rep1;
1173 }
1174
79a45b7d 1175 if (reps > options->repeat_count_threshold)
c906108c 1176 {
f9e31323 1177 val_print (elttype, valaddr + i * eltlen, 0, address + i * eltlen,
0e03807e 1178 stream, recurse + 1, val, options, current_language);
c906108c
SS
1179 annotate_elt_rep (reps);
1180 fprintf_filtered (stream, " <repeats %u times>", reps);
1181 annotate_elt_rep_end ();
1182
1183 i = rep1 - 1;
79a45b7d 1184 things_printed += options->repeat_count_threshold;
c906108c
SS
1185 }
1186 else
1187 {
f9e31323 1188 val_print (elttype, valaddr + i * eltlen, 0, address + i * eltlen,
0e03807e 1189 stream, recurse + 1, val, options, current_language);
c906108c
SS
1190 annotate_elt ();
1191 things_printed++;
1192 }
1193 }
1194 annotate_array_section_end ();
1195 if (i < len)
1196 {
1197 fprintf_filtered (stream, "...");
1198 }
1199}
1200
917317f4
JM
1201/* Read LEN bytes of target memory at address MEMADDR, placing the
1202 results in GDB's memory at MYADDR. Returns a count of the bytes
1203 actually read, and optionally an errno value in the location
1204 pointed to by ERRNOPTR if ERRNOPTR is non-null. */
1205
1206/* FIXME: cagney/1999-10-14: Only used by val_print_string. Can this
1207 function be eliminated. */
1208
1209static int
777ea8f1 1210partial_memory_read (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int *errnoptr)
917317f4
JM
1211{
1212 int nread; /* Number of bytes actually read. */
1213 int errcode; /* Error from last read. */
1214
1215 /* First try a complete read. */
1216 errcode = target_read_memory (memaddr, myaddr, len);
1217 if (errcode == 0)
1218 {
1219 /* Got it all. */
1220 nread = len;
1221 }
1222 else
1223 {
1224 /* Loop, reading one byte at a time until we get as much as we can. */
1225 for (errcode = 0, nread = 0; len > 0 && errcode == 0; nread++, len--)
1226 {
1227 errcode = target_read_memory (memaddr++, myaddr++, 1);
1228 }
1229 /* If an error, the last read was unsuccessful, so adjust count. */
1230 if (errcode != 0)
1231 {
1232 nread--;
1233 }
1234 }
1235 if (errnoptr != NULL)
1236 {
1237 *errnoptr = errcode;
1238 }
1239 return (nread);
1240}
1241
ae6a3a4c
TJB
1242/* Read a string from the inferior, at ADDR, with LEN characters of WIDTH bytes
1243 each. Fetch at most FETCHLIMIT characters. BUFFER will be set to a newly
1244 allocated buffer containing the string, which the caller is responsible to
1245 free, and BYTES_READ will be set to the number of bytes read. Returns 0 on
1246 success, or errno on failure.
1247
1248 If LEN > 0, reads exactly LEN characters (including eventual NULs in
1249 the middle or end of the string). If LEN is -1, stops at the first
1250 null character (not necessarily the first null byte) up to a maximum
1251 of FETCHLIMIT characters. Set FETCHLIMIT to UINT_MAX to read as many
1252 characters as possible from the string.
1253
1254 Unless an exception is thrown, BUFFER will always be allocated, even on
1255 failure. In this case, some characters might have been read before the
1256 failure happened. Check BYTES_READ to recognize this situation.
1257
1258 Note: There was a FIXME asking to make this code use target_read_string,
1259 but this function is more general (can read past null characters, up to
1260 given LEN). Besides, it is used much more often than target_read_string
1261 so it is more tested. Perhaps callers of target_read_string should use
1262 this function instead? */
c906108c
SS
1263
1264int
ae6a3a4c 1265read_string (CORE_ADDR addr, int len, int width, unsigned int fetchlimit,
e17a4113 1266 enum bfd_endian byte_order, gdb_byte **buffer, int *bytes_read)
c906108c 1267{
ae6a3a4c
TJB
1268 int found_nul; /* Non-zero if we found the nul char. */
1269 int errcode; /* Errno returned from bad reads. */
1270 unsigned int nfetch; /* Chars to fetch / chars fetched. */
1271 unsigned int chunksize; /* Size of each fetch, in chars. */
1272 gdb_byte *bufptr; /* Pointer to next available byte in buffer. */
1273 gdb_byte *limit; /* First location past end of fetch buffer. */
1274 struct cleanup *old_chain = NULL; /* Top of the old cleanup chain. */
1275
1276 /* Decide how large of chunks to try to read in one operation. This
c906108c
SS
1277 is also pretty simple. If LEN >= zero, then we want fetchlimit chars,
1278 so we might as well read them all in one operation. If LEN is -1, we
ae6a3a4c 1279 are looking for a NUL terminator to end the fetching, so we might as
c906108c
SS
1280 well read in blocks that are large enough to be efficient, but not so
1281 large as to be slow if fetchlimit happens to be large. So we choose the
1282 minimum of 8 and fetchlimit. We used to use 200 instead of 8 but
1283 200 is way too big for remote debugging over a serial line. */
1284
1285 chunksize = (len == -1 ? min (8, fetchlimit) : fetchlimit);
1286
ae6a3a4c
TJB
1287 /* Loop until we either have all the characters, or we encounter
1288 some error, such as bumping into the end of the address space. */
c906108c
SS
1289
1290 found_nul = 0;
b5096abe
PM
1291 *buffer = NULL;
1292
1293 old_chain = make_cleanup (free_current_contents, buffer);
c906108c
SS
1294
1295 if (len > 0)
1296 {
ae6a3a4c
TJB
1297 *buffer = (gdb_byte *) xmalloc (len * width);
1298 bufptr = *buffer;
c906108c 1299
917317f4 1300 nfetch = partial_memory_read (addr, bufptr, len * width, &errcode)
c906108c
SS
1301 / width;
1302 addr += nfetch * width;
1303 bufptr += nfetch * width;
1304 }
1305 else if (len == -1)
1306 {
1307 unsigned long bufsize = 0;
ae6a3a4c 1308
c906108c
SS
1309 do
1310 {
1311 QUIT;
1312 nfetch = min (chunksize, fetchlimit - bufsize);
1313
ae6a3a4c
TJB
1314 if (*buffer == NULL)
1315 *buffer = (gdb_byte *) xmalloc (nfetch * width);
c906108c 1316 else
b5096abe
PM
1317 *buffer = (gdb_byte *) xrealloc (*buffer,
1318 (nfetch + bufsize) * width);
c906108c 1319
ae6a3a4c 1320 bufptr = *buffer + bufsize * width;
c906108c
SS
1321 bufsize += nfetch;
1322
ae6a3a4c 1323 /* Read as much as we can. */
917317f4 1324 nfetch = partial_memory_read (addr, bufptr, nfetch * width, &errcode)
ae6a3a4c 1325 / width;
c906108c 1326
ae6a3a4c 1327 /* Scan this chunk for the null character that terminates the string
c906108c
SS
1328 to print. If found, we don't need to fetch any more. Note
1329 that bufptr is explicitly left pointing at the next character
ae6a3a4c
TJB
1330 after the null character, or at the next character after the end
1331 of the buffer. */
c906108c
SS
1332
1333 limit = bufptr + nfetch * width;
1334 while (bufptr < limit)
1335 {
1336 unsigned long c;
1337
e17a4113 1338 c = extract_unsigned_integer (bufptr, width, byte_order);
c906108c
SS
1339 addr += width;
1340 bufptr += width;
1341 if (c == 0)
1342 {
1343 /* We don't care about any error which happened after
ae6a3a4c 1344 the NUL terminator. */
c906108c
SS
1345 errcode = 0;
1346 found_nul = 1;
1347 break;
1348 }
1349 }
1350 }
c5aa993b 1351 while (errcode == 0 /* no error */
ae6a3a4c
TJB
1352 && bufptr - *buffer < fetchlimit * width /* no overrun */
1353 && !found_nul); /* haven't found NUL yet */
c906108c
SS
1354 }
1355 else
ae6a3a4c
TJB
1356 { /* Length of string is really 0! */
1357 /* We always allocate *buffer. */
1358 *buffer = bufptr = xmalloc (1);
c906108c
SS
1359 errcode = 0;
1360 }
1361
1362 /* bufptr and addr now point immediately beyond the last byte which we
1363 consider part of the string (including a '\0' which ends the string). */
ae6a3a4c
TJB
1364 *bytes_read = bufptr - *buffer;
1365
1366 QUIT;
1367
1368 discard_cleanups (old_chain);
1369
1370 return errcode;
1371}
1372
1373/* Print a string from the inferior, starting at ADDR and printing up to LEN
1374 characters, of WIDTH bytes a piece, to STREAM. If LEN is -1, printing
1375 stops at the first null byte, otherwise printing proceeds (including null
1376 bytes) until either print_max or LEN characters have been printed,
09ca9e2e
TT
1377 whichever is smaller. ENCODING is the name of the string's
1378 encoding. It can be NULL, in which case the target encoding is
1379 assumed. */
ae6a3a4c
TJB
1380
1381int
09ca9e2e
TT
1382val_print_string (struct type *elttype, const char *encoding,
1383 CORE_ADDR addr, int len,
6c7a06a3 1384 struct ui_file *stream,
ae6a3a4c
TJB
1385 const struct value_print_options *options)
1386{
1387 int force_ellipsis = 0; /* Force ellipsis to be printed if nonzero. */
1388 int errcode; /* Errno returned from bad reads. */
1389 int found_nul; /* Non-zero if we found the nul char */
1390 unsigned int fetchlimit; /* Maximum number of chars to print. */
1391 int bytes_read;
1392 gdb_byte *buffer = NULL; /* Dynamically growable fetch buffer. */
1393 struct cleanup *old_chain = NULL; /* Top of the old cleanup chain. */
5af949e3 1394 struct gdbarch *gdbarch = get_type_arch (elttype);
e17a4113 1395 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
6c7a06a3 1396 int width = TYPE_LENGTH (elttype);
ae6a3a4c
TJB
1397
1398 /* First we need to figure out the limit on the number of characters we are
1399 going to attempt to fetch and print. This is actually pretty simple. If
1400 LEN >= zero, then the limit is the minimum of LEN and print_max. If
1401 LEN is -1, then the limit is print_max. This is true regardless of
1402 whether print_max is zero, UINT_MAX (unlimited), or something in between,
1403 because finding the null byte (or available memory) is what actually
1404 limits the fetch. */
1405
1406 fetchlimit = (len == -1 ? options->print_max : min (len, options->print_max));
1407
e17a4113
UW
1408 errcode = read_string (addr, len, width, fetchlimit, byte_order,
1409 &buffer, &bytes_read);
ae6a3a4c
TJB
1410 old_chain = make_cleanup (xfree, buffer);
1411
1412 addr += bytes_read;
c906108c
SS
1413
1414 /* We now have either successfully filled the buffer to fetchlimit, or
ae6a3a4c
TJB
1415 terminated early due to an error or finding a null char when LEN is -1. */
1416
1417 /* Determine found_nul by looking at the last character read. */
e17a4113
UW
1418 found_nul = extract_unsigned_integer (buffer + bytes_read - width, width,
1419 byte_order) == 0;
c906108c
SS
1420 if (len == -1 && !found_nul)
1421 {
777ea8f1 1422 gdb_byte *peekbuf;
c906108c 1423
ae6a3a4c 1424 /* We didn't find a NUL terminator we were looking for. Attempt
c5aa993b
JM
1425 to peek at the next character. If not successful, or it is not
1426 a null byte, then force ellipsis to be printed. */
c906108c 1427
777ea8f1 1428 peekbuf = (gdb_byte *) alloca (width);
c906108c
SS
1429
1430 if (target_read_memory (addr, peekbuf, width) == 0
e17a4113 1431 && extract_unsigned_integer (peekbuf, width, byte_order) != 0)
c906108c
SS
1432 force_ellipsis = 1;
1433 }
ae6a3a4c 1434 else if ((len >= 0 && errcode != 0) || (len > bytes_read / width))
c906108c
SS
1435 {
1436 /* Getting an error when we have a requested length, or fetching less
c5aa993b 1437 than the number of characters actually requested, always make us
ae6a3a4c 1438 print ellipsis. */
c906108c
SS
1439 force_ellipsis = 1;
1440 }
1441
c906108c
SS
1442 /* If we get an error before fetching anything, don't print a string.
1443 But if we fetch something and then get an error, print the string
1444 and then the error message. */
ae6a3a4c 1445 if (errcode == 0 || bytes_read > 0)
c906108c 1446 {
79a45b7d 1447 if (options->addressprint)
c906108c
SS
1448 {
1449 fputs_filtered (" ", stream);
1450 }
be759fcf 1451 LA_PRINT_STRING (stream, elttype, buffer, bytes_read / width,
3a772aa4 1452 encoding, force_ellipsis, options);
c906108c
SS
1453 }
1454
1455 if (errcode != 0)
1456 {
1457 if (errcode == EIO)
1458 {
1459 fprintf_filtered (stream, " <Address ");
5af949e3 1460 fputs_filtered (paddress (gdbarch, addr), stream);
c906108c
SS
1461 fprintf_filtered (stream, " out of bounds>");
1462 }
1463 else
1464 {
1465 fprintf_filtered (stream, " <Error reading address ");
5af949e3 1466 fputs_filtered (paddress (gdbarch, addr), stream);
c906108c
SS
1467 fprintf_filtered (stream, ": %s>", safe_strerror (errcode));
1468 }
1469 }
ae6a3a4c 1470
c906108c
SS
1471 gdb_flush (stream);
1472 do_cleanups (old_chain);
ae6a3a4c
TJB
1473
1474 return (bytes_read / width);
c906108c 1475}
c906108c 1476\f
c5aa993b 1477
09e6485f
PA
1478/* The 'set input-radix' command writes to this auxiliary variable.
1479 If the requested radix is valid, INPUT_RADIX is updated; otherwise,
1480 it is left unchanged. */
1481
1482static unsigned input_radix_1 = 10;
1483
c906108c
SS
1484/* Validate an input or output radix setting, and make sure the user
1485 knows what they really did here. Radix setting is confusing, e.g.
1486 setting the input radix to "10" never changes it! */
1487
c906108c 1488static void
fba45db2 1489set_input_radix (char *args, int from_tty, struct cmd_list_element *c)
c906108c 1490{
09e6485f 1491 set_input_radix_1 (from_tty, input_radix_1);
c906108c
SS
1492}
1493
c906108c 1494static void
fba45db2 1495set_input_radix_1 (int from_tty, unsigned radix)
c906108c
SS
1496{
1497 /* We don't currently disallow any input radix except 0 or 1, which don't
1498 make any mathematical sense. In theory, we can deal with any input
1499 radix greater than 1, even if we don't have unique digits for every
1500 value from 0 to radix-1, but in practice we lose on large radix values.
1501 We should either fix the lossage or restrict the radix range more.
1502 (FIXME). */
1503
1504 if (radix < 2)
1505 {
09e6485f 1506 input_radix_1 = input_radix;
8a3fe4f8 1507 error (_("Nonsense input radix ``decimal %u''; input radix unchanged."),
c906108c
SS
1508 radix);
1509 }
09e6485f 1510 input_radix_1 = input_radix = radix;
c906108c
SS
1511 if (from_tty)
1512 {
a3f17187 1513 printf_filtered (_("Input radix now set to decimal %u, hex %x, octal %o.\n"),
c906108c
SS
1514 radix, radix, radix);
1515 }
1516}
1517
09e6485f
PA
1518/* The 'set output-radix' command writes to this auxiliary variable.
1519 If the requested radix is valid, OUTPUT_RADIX is updated,
1520 otherwise, it is left unchanged. */
1521
1522static unsigned output_radix_1 = 10;
1523
c906108c 1524static void
fba45db2 1525set_output_radix (char *args, int from_tty, struct cmd_list_element *c)
c906108c 1526{
09e6485f 1527 set_output_radix_1 (from_tty, output_radix_1);
c906108c
SS
1528}
1529
1530static void
fba45db2 1531set_output_radix_1 (int from_tty, unsigned radix)
c906108c
SS
1532{
1533 /* Validate the radix and disallow ones that we aren't prepared to
1534 handle correctly, leaving the radix unchanged. */
1535 switch (radix)
1536 {
1537 case 16:
79a45b7d 1538 user_print_options.output_format = 'x'; /* hex */
c906108c
SS
1539 break;
1540 case 10:
79a45b7d 1541 user_print_options.output_format = 0; /* decimal */
c906108c
SS
1542 break;
1543 case 8:
79a45b7d 1544 user_print_options.output_format = 'o'; /* octal */
c906108c
SS
1545 break;
1546 default:
09e6485f 1547 output_radix_1 = output_radix;
8a3fe4f8 1548 error (_("Unsupported output radix ``decimal %u''; output radix unchanged."),
c906108c
SS
1549 radix);
1550 }
09e6485f 1551 output_radix_1 = output_radix = radix;
c906108c
SS
1552 if (from_tty)
1553 {
a3f17187 1554 printf_filtered (_("Output radix now set to decimal %u, hex %x, octal %o.\n"),
c906108c
SS
1555 radix, radix, radix);
1556 }
1557}
1558
1559/* Set both the input and output radix at once. Try to set the output radix
1560 first, since it has the most restrictive range. An radix that is valid as
1561 an output radix is also valid as an input radix.
1562
1563 It may be useful to have an unusual input radix. If the user wishes to
1564 set an input radix that is not valid as an output radix, he needs to use
1565 the 'set input-radix' command. */
1566
1567static void
fba45db2 1568set_radix (char *arg, int from_tty)
c906108c
SS
1569{
1570 unsigned radix;
1571
bb518678 1572 radix = (arg == NULL) ? 10 : parse_and_eval_long (arg);
c906108c
SS
1573 set_output_radix_1 (0, radix);
1574 set_input_radix_1 (0, radix);
1575 if (from_tty)
1576 {
a3f17187 1577 printf_filtered (_("Input and output radices now set to decimal %u, hex %x, octal %o.\n"),
c906108c
SS
1578 radix, radix, radix);
1579 }
1580}
1581
1582/* Show both the input and output radices. */
1583
c906108c 1584static void
fba45db2 1585show_radix (char *arg, int from_tty)
c906108c
SS
1586{
1587 if (from_tty)
1588 {
1589 if (input_radix == output_radix)
1590 {
a3f17187 1591 printf_filtered (_("Input and output radices set to decimal %u, hex %x, octal %o.\n"),
c906108c
SS
1592 input_radix, input_radix, input_radix);
1593 }
1594 else
1595 {
a3f17187 1596 printf_filtered (_("Input radix set to decimal %u, hex %x, octal %o.\n"),
c906108c 1597 input_radix, input_radix, input_radix);
a3f17187 1598 printf_filtered (_("Output radix set to decimal %u, hex %x, octal %o.\n"),
c906108c
SS
1599 output_radix, output_radix, output_radix);
1600 }
1601 }
1602}
c906108c 1603\f
c5aa993b 1604
c906108c 1605static void
fba45db2 1606set_print (char *arg, int from_tty)
c906108c
SS
1607{
1608 printf_unfiltered (
c5aa993b 1609 "\"set print\" must be followed by the name of a print subcommand.\n");
c906108c
SS
1610 help_list (setprintlist, "set print ", -1, gdb_stdout);
1611}
1612
c906108c 1613static void
fba45db2 1614show_print (char *args, int from_tty)
c906108c
SS
1615{
1616 cmd_show_list (showprintlist, from_tty, "");
1617}
1618\f
1619void
fba45db2 1620_initialize_valprint (void)
c906108c 1621{
c906108c 1622 add_prefix_cmd ("print", no_class, set_print,
1bedd215 1623 _("Generic command for setting how things print."),
c906108c 1624 &setprintlist, "set print ", 0, &setlist);
c5aa993b
JM
1625 add_alias_cmd ("p", "print", no_class, 1, &setlist);
1626 /* prefer set print to set prompt */
c906108c
SS
1627 add_alias_cmd ("pr", "print", no_class, 1, &setlist);
1628
1629 add_prefix_cmd ("print", no_class, show_print,
1bedd215 1630 _("Generic command for showing print settings."),
c906108c 1631 &showprintlist, "show print ", 0, &showlist);
c5aa993b
JM
1632 add_alias_cmd ("p", "print", no_class, 1, &showlist);
1633 add_alias_cmd ("pr", "print", no_class, 1, &showlist);
c906108c 1634
79a45b7d
TT
1635 add_setshow_uinteger_cmd ("elements", no_class,
1636 &user_print_options.print_max, _("\
35096d9d
AC
1637Set limit on string chars or array elements to print."), _("\
1638Show limit on string chars or array elements to print."), _("\
1639\"set print elements 0\" causes there to be no limit."),
1640 NULL,
920d2a44 1641 show_print_max,
35096d9d 1642 &setprintlist, &showprintlist);
c906108c 1643
79a45b7d
TT
1644 add_setshow_boolean_cmd ("null-stop", no_class,
1645 &user_print_options.stop_print_at_null, _("\
5bf193a2
AC
1646Set printing of char arrays to stop at first null char."), _("\
1647Show printing of char arrays to stop at first null char."), NULL,
1648 NULL,
920d2a44 1649 show_stop_print_at_null,
5bf193a2 1650 &setprintlist, &showprintlist);
c906108c 1651
35096d9d 1652 add_setshow_uinteger_cmd ("repeats", no_class,
79a45b7d 1653 &user_print_options.repeat_count_threshold, _("\
35096d9d
AC
1654Set threshold for repeated print elements."), _("\
1655Show threshold for repeated print elements."), _("\
1656\"set print repeats 0\" causes all elements to be individually printed."),
1657 NULL,
920d2a44 1658 show_repeat_count_threshold,
35096d9d 1659 &setprintlist, &showprintlist);
c906108c 1660
79a45b7d
TT
1661 add_setshow_boolean_cmd ("pretty", class_support,
1662 &user_print_options.prettyprint_structs, _("\
5bf193a2
AC
1663Set prettyprinting of structures."), _("\
1664Show prettyprinting of structures."), NULL,
1665 NULL,
920d2a44 1666 show_prettyprint_structs,
5bf193a2
AC
1667 &setprintlist, &showprintlist);
1668
79a45b7d
TT
1669 add_setshow_boolean_cmd ("union", class_support,
1670 &user_print_options.unionprint, _("\
5bf193a2
AC
1671Set printing of unions interior to structures."), _("\
1672Show printing of unions interior to structures."), NULL,
1673 NULL,
920d2a44 1674 show_unionprint,
5bf193a2
AC
1675 &setprintlist, &showprintlist);
1676
79a45b7d
TT
1677 add_setshow_boolean_cmd ("array", class_support,
1678 &user_print_options.prettyprint_arrays, _("\
5bf193a2
AC
1679Set prettyprinting of arrays."), _("\
1680Show prettyprinting of arrays."), NULL,
1681 NULL,
920d2a44 1682 show_prettyprint_arrays,
5bf193a2
AC
1683 &setprintlist, &showprintlist);
1684
79a45b7d
TT
1685 add_setshow_boolean_cmd ("address", class_support,
1686 &user_print_options.addressprint, _("\
5bf193a2
AC
1687Set printing of addresses."), _("\
1688Show printing of addresses."), NULL,
1689 NULL,
920d2a44 1690 show_addressprint,
5bf193a2 1691 &setprintlist, &showprintlist);
c906108c 1692
1e8fb976
PA
1693 add_setshow_zuinteger_cmd ("input-radix", class_support, &input_radix_1,
1694 _("\
35096d9d
AC
1695Set default input radix for entering numbers."), _("\
1696Show default input radix for entering numbers."), NULL,
1e8fb976
PA
1697 set_input_radix,
1698 show_input_radix,
1699 &setlist, &showlist);
35096d9d 1700
1e8fb976
PA
1701 add_setshow_zuinteger_cmd ("output-radix", class_support, &output_radix_1,
1702 _("\
35096d9d
AC
1703Set default output radix for printing of values."), _("\
1704Show default output radix for printing of values."), NULL,
1e8fb976
PA
1705 set_output_radix,
1706 show_output_radix,
1707 &setlist, &showlist);
c906108c 1708
cb1a6d5f
AC
1709 /* The "set radix" and "show radix" commands are special in that
1710 they are like normal set and show commands but allow two normally
1711 independent variables to be either set or shown with a single
b66df561 1712 command. So the usual deprecated_add_set_cmd() and [deleted]
cb1a6d5f 1713 add_show_from_set() commands aren't really appropriate. */
b66df561
AC
1714 /* FIXME: i18n: With the new add_setshow_integer command, that is no
1715 longer true - show can display anything. */
1a966eab
AC
1716 add_cmd ("radix", class_support, set_radix, _("\
1717Set default input and output number radices.\n\
c906108c 1718Use 'set input-radix' or 'set output-radix' to independently set each.\n\
1a966eab 1719Without an argument, sets both radices back to the default value of 10."),
c906108c 1720 &setlist);
1a966eab
AC
1721 add_cmd ("radix", class_support, show_radix, _("\
1722Show the default input and output number radices.\n\
1723Use 'show input-radix' or 'show output-radix' to independently show each."),
c906108c
SS
1724 &showlist);
1725
e79af960 1726 add_setshow_boolean_cmd ("array-indexes", class_support,
79a45b7d 1727 &user_print_options.print_array_indexes, _("\
e79af960
JB
1728Set printing of array indexes."), _("\
1729Show printing of array indexes"), NULL, NULL, show_print_array_indexes,
1730 &setprintlist, &showprintlist);
c906108c 1731}
This page took 1.235945 seconds and 4 git commands to generate.