* NEWS: Add entry for stdio gdbserver.
[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,
7b6bb8da 5 2009, 2010, 2011 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"
3b2b8fea
TT
39#include "gdb_obstack.h"
40#include "charset.h"
41#include <ctype.h>
c906108c
SS
42
43#include <errno.h>
44
45/* Prototypes for local functions */
46
777ea8f1 47static int partial_memory_read (CORE_ADDR memaddr, gdb_byte *myaddr,
917317f4
JM
48 int len, int *errnoptr);
49
a14ed312 50static void show_print (char *, int);
c906108c 51
a14ed312 52static void set_print (char *, int);
c906108c 53
a14ed312 54static void set_radix (char *, int);
c906108c 55
a14ed312 56static void show_radix (char *, int);
c906108c 57
a14ed312 58static void set_input_radix (char *, int, struct cmd_list_element *);
c906108c 59
a14ed312 60static void set_input_radix_1 (int, unsigned);
c906108c 61
a14ed312 62static void set_output_radix (char *, int, struct cmd_list_element *);
c906108c 63
a14ed312 64static void set_output_radix_1 (int, unsigned);
c906108c 65
a14ed312 66void _initialize_valprint (void);
c906108c 67
581e13c1 68#define PRINT_MAX_DEFAULT 200 /* Start print_max off at this value. */
79a45b7d
TT
69
70struct value_print_options user_print_options =
71{
72 Val_pretty_default, /* pretty */
73 0, /* prettyprint_arrays */
74 0, /* prettyprint_structs */
75 0, /* vtblprint */
76 1, /* unionprint */
77 1, /* addressprint */
78 0, /* objectprint */
79 PRINT_MAX_DEFAULT, /* print_max */
80 10, /* repeat_count_threshold */
81 0, /* output_format */
82 0, /* format */
83 0, /* stop_print_at_null */
84 0, /* inspect_it */
85 0, /* print_array_indexes */
86 0, /* deref_ref */
87 1, /* static_field_print */
a6bac58e
TT
88 1, /* pascal_static_field_print */
89 0, /* raw */
90 0 /* summary */
79a45b7d
TT
91};
92
93/* Initialize *OPTS to be a copy of the user print options. */
94void
95get_user_print_options (struct value_print_options *opts)
96{
97 *opts = user_print_options;
98}
99
100/* Initialize *OPTS to be a copy of the user print options, but with
101 pretty-printing disabled. */
102void
103get_raw_print_options (struct value_print_options *opts)
104{
105 *opts = user_print_options;
106 opts->pretty = Val_no_prettyprint;
107}
108
109/* Initialize *OPTS to be a copy of the user print options, but using
110 FORMAT as the formatting option. */
111void
112get_formatted_print_options (struct value_print_options *opts,
113 char format)
114{
115 *opts = user_print_options;
116 opts->format = format;
117}
118
920d2a44
AC
119static void
120show_print_max (struct ui_file *file, int from_tty,
121 struct cmd_list_element *c, const char *value)
122{
3e43a32a
MS
123 fprintf_filtered (file,
124 _("Limit on string chars or array "
125 "elements to print is %s.\n"),
920d2a44
AC
126 value);
127}
128
c906108c
SS
129
130/* Default input and output radixes, and output format letter. */
131
132unsigned input_radix = 10;
920d2a44
AC
133static void
134show_input_radix (struct ui_file *file, int from_tty,
135 struct cmd_list_element *c, const char *value)
136{
3e43a32a
MS
137 fprintf_filtered (file,
138 _("Default input radix for entering numbers is %s.\n"),
920d2a44
AC
139 value);
140}
141
c906108c 142unsigned output_radix = 10;
920d2a44
AC
143static void
144show_output_radix (struct ui_file *file, int from_tty,
145 struct cmd_list_element *c, const char *value)
146{
3e43a32a
MS
147 fprintf_filtered (file,
148 _("Default output radix for printing of values is %s.\n"),
920d2a44
AC
149 value);
150}
c906108c 151
e79af960
JB
152/* By default we print arrays without printing the index of each element in
153 the array. This behavior can be changed by setting PRINT_ARRAY_INDEXES. */
154
e79af960
JB
155static void
156show_print_array_indexes (struct ui_file *file, int from_tty,
157 struct cmd_list_element *c, const char *value)
158{
159 fprintf_filtered (file, _("Printing of array indexes is %s.\n"), value);
160}
161
c906108c
SS
162/* Print repeat counts if there are more than this many repetitions of an
163 element in an array. Referenced by the low level language dependent
581e13c1 164 print routines. */
c906108c 165
920d2a44
AC
166static void
167show_repeat_count_threshold (struct ui_file *file, int from_tty,
168 struct cmd_list_element *c, const char *value)
169{
170 fprintf_filtered (file, _("Threshold for repeated print elements is %s.\n"),
171 value);
172}
c906108c 173
581e13c1 174/* If nonzero, stops printing of char arrays at first null. */
c906108c 175
920d2a44
AC
176static void
177show_stop_print_at_null (struct ui_file *file, int from_tty,
178 struct cmd_list_element *c, const char *value)
179{
3e43a32a
MS
180 fprintf_filtered (file,
181 _("Printing of char arrays to stop "
182 "at first null char is %s.\n"),
920d2a44
AC
183 value);
184}
c906108c 185
581e13c1 186/* Controls pretty printing of structures. */
c906108c 187
920d2a44
AC
188static void
189show_prettyprint_structs (struct ui_file *file, int from_tty,
190 struct cmd_list_element *c, const char *value)
191{
192 fprintf_filtered (file, _("Prettyprinting of structures is %s.\n"), value);
193}
c906108c
SS
194
195/* Controls pretty printing of arrays. */
196
920d2a44
AC
197static void
198show_prettyprint_arrays (struct ui_file *file, int from_tty,
199 struct cmd_list_element *c, const char *value)
200{
201 fprintf_filtered (file, _("Prettyprinting of arrays is %s.\n"), value);
202}
c906108c
SS
203
204/* If nonzero, causes unions inside structures or other unions to be
581e13c1 205 printed. */
c906108c 206
920d2a44
AC
207static void
208show_unionprint (struct ui_file *file, int from_tty,
209 struct cmd_list_element *c, const char *value)
210{
3e43a32a
MS
211 fprintf_filtered (file,
212 _("Printing of unions interior to structures is %s.\n"),
920d2a44
AC
213 value);
214}
c906108c 215
581e13c1 216/* If nonzero, causes machine addresses to be printed in certain contexts. */
c906108c 217
920d2a44
AC
218static void
219show_addressprint (struct ui_file *file, int from_tty,
220 struct cmd_list_element *c, const char *value)
221{
222 fprintf_filtered (file, _("Printing of addresses is %s.\n"), value);
223}
c906108c 224\f
c5aa993b 225
a6bac58e
TT
226/* A helper function for val_print. When printing in "summary" mode,
227 we want to print scalar arguments, but not aggregate arguments.
228 This function distinguishes between the two. */
229
230static int
231scalar_type_p (struct type *type)
232{
233 CHECK_TYPEDEF (type);
234 while (TYPE_CODE (type) == TYPE_CODE_REF)
235 {
236 type = TYPE_TARGET_TYPE (type);
237 CHECK_TYPEDEF (type);
238 }
239 switch (TYPE_CODE (type))
240 {
241 case TYPE_CODE_ARRAY:
242 case TYPE_CODE_STRUCT:
243 case TYPE_CODE_UNION:
244 case TYPE_CODE_SET:
245 case TYPE_CODE_STRING:
246 case TYPE_CODE_BITSTRING:
247 return 0;
248 default:
249 return 1;
250 }
251}
252
0e03807e
TT
253/* Helper function to check the validity of some bits of a value.
254
255 If TYPE represents some aggregate type (e.g., a structure), return 1.
256
257 Otherwise, any of the bytes starting at OFFSET and extending for
258 TYPE_LENGTH(TYPE) bytes are invalid, print a message to STREAM and
259 return 0. The checking is done using FUNCS.
260
261 Otherwise, return 1. */
262
263static int
264valprint_check_validity (struct ui_file *stream,
265 struct type *type,
4e07d55f 266 int embedded_offset,
0e03807e
TT
267 const struct value *val)
268{
269 CHECK_TYPEDEF (type);
270
271 if (TYPE_CODE (type) != TYPE_CODE_UNION
272 && TYPE_CODE (type) != TYPE_CODE_STRUCT
273 && TYPE_CODE (type) != TYPE_CODE_ARRAY)
274 {
4e07d55f
PA
275 if (!value_bits_valid (val, TARGET_CHAR_BIT * embedded_offset,
276 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
0e03807e 277 {
585fdaa1 278 val_print_optimized_out (stream);
0e03807e
TT
279 return 0;
280 }
8cf6f0b1 281
4e07d55f 282 if (value_bits_synthetic_pointer (val, TARGET_CHAR_BIT * embedded_offset,
8cf6f0b1
TT
283 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
284 {
285 fputs_filtered (_("<synthetic pointer>"), stream);
286 return 0;
287 }
4e07d55f
PA
288
289 if (!value_bytes_available (val, embedded_offset, TYPE_LENGTH (type)))
290 {
291 val_print_unavailable (stream);
292 return 0;
293 }
0e03807e
TT
294 }
295
296 return 1;
297}
298
585fdaa1
PA
299void
300val_print_optimized_out (struct ui_file *stream)
301{
302 fprintf_filtered (stream, _("<optimized out>"));
303}
304
4e07d55f
PA
305void
306val_print_unavailable (struct ui_file *stream)
307{
308 fprintf_filtered (stream, _("<unavailable>"));
309}
310
8af8e3bc
PA
311void
312val_print_invalid_address (struct ui_file *stream)
313{
314 fprintf_filtered (stream, _("<invalid address>"));
315}
316
32b72a42
PA
317/* Print using the given LANGUAGE the data of type TYPE located at
318 VALADDR + EMBEDDED_OFFSET (within GDB), which came from the
319 inferior at address ADDRESS + EMBEDDED_OFFSET, onto stdio stream
320 STREAM according to OPTIONS. VAL is the whole object that came
321 from ADDRESS. VALADDR must point to the head of VAL's contents
322 buffer.
323
324 The language printers will pass down an adjusted EMBEDDED_OFFSET to
325 further helper subroutines as subfields of TYPE are printed. In
326 such cases, VALADDR is passed down unadjusted, as well as VAL, so
327 that VAL can be queried for metadata about the contents data being
328 printed, using EMBEDDED_OFFSET as an offset into VAL's contents
329 buffer. For example: "has this field been optimized out", or "I'm
330 printing an object while inspecting a traceframe; has this
331 particular piece of data been collected?".
332
333 RECURSE indicates the amount of indentation to supply before
334 continuation lines; this amount is roughly twice the value of
335 RECURSE.
336
337 If the data is printed as a string, returns the number of string
338 characters printed. */
c906108c
SS
339
340int
fc1a4b47 341val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
79a45b7d 342 CORE_ADDR address, struct ui_file *stream, int recurse,
0e03807e 343 const struct value *val,
79a45b7d 344 const struct value_print_options *options,
d8ca156b 345 const struct language_defn *language)
c906108c 346{
19ca80ba
DJ
347 volatile struct gdb_exception except;
348 int ret = 0;
79a45b7d 349 struct value_print_options local_opts = *options;
c906108c 350 struct type *real_type = check_typedef (type);
79a45b7d
TT
351
352 if (local_opts.pretty == Val_pretty_default)
353 local_opts.pretty = (local_opts.prettyprint_structs
354 ? Val_prettyprint : Val_no_prettyprint);
c5aa993b 355
c906108c
SS
356 QUIT;
357
358 /* Ensure that the type is complete and not just a stub. If the type is
359 only a stub and we can't find and substitute its complete type, then
360 print appropriate string and return. */
361
74a9bb82 362 if (TYPE_STUB (real_type))
c906108c 363 {
0e03807e 364 fprintf_filtered (stream, _("<incomplete type>"));
c906108c
SS
365 gdb_flush (stream);
366 return (0);
367 }
c5aa993b 368
0e03807e
TT
369 if (!valprint_check_validity (stream, real_type, embedded_offset, val))
370 return 0;
371
a6bac58e
TT
372 if (!options->raw)
373 {
374 ret = apply_val_pretty_printer (type, valaddr, embedded_offset,
0e03807e
TT
375 address, stream, recurse,
376 val, options, language);
a6bac58e
TT
377 if (ret)
378 return ret;
379 }
380
381 /* Handle summary mode. If the value is a scalar, print it;
382 otherwise, print an ellipsis. */
383 if (options->summary && !scalar_type_p (type))
384 {
385 fprintf_filtered (stream, "...");
386 return 0;
387 }
388
19ca80ba
DJ
389 TRY_CATCH (except, RETURN_MASK_ERROR)
390 {
d8ca156b 391 ret = language->la_val_print (type, valaddr, embedded_offset, address,
0e03807e
TT
392 stream, recurse, val,
393 &local_opts);
19ca80ba
DJ
394 }
395 if (except.reason < 0)
396 fprintf_filtered (stream, _("<error reading variable>"));
397
398 return ret;
c906108c
SS
399}
400
806048c6 401/* Check whether the value VAL is printable. Return 1 if it is;
6501578c
YQ
402 return 0 and print an appropriate error message to STREAM according to
403 OPTIONS if it is not. */
c906108c 404
806048c6 405static int
6501578c
YQ
406value_check_printable (struct value *val, struct ui_file *stream,
407 const struct value_print_options *options)
c906108c
SS
408{
409 if (val == 0)
410 {
806048c6 411 fprintf_filtered (stream, _("<address of value unknown>"));
c906108c
SS
412 return 0;
413 }
806048c6 414
0e03807e 415 if (value_entirely_optimized_out (val))
c906108c 416 {
6501578c
YQ
417 if (options->summary && !scalar_type_p (value_type (val)))
418 fprintf_filtered (stream, "...");
419 else
420 val_print_optimized_out (stream);
c906108c
SS
421 return 0;
422 }
806048c6 423
bc3b79fd
TJB
424 if (TYPE_CODE (value_type (val)) == TYPE_CODE_INTERNAL_FUNCTION)
425 {
426 fprintf_filtered (stream, _("<internal function %s>"),
427 value_internal_function_name (val));
428 return 0;
429 }
430
806048c6
DJ
431 return 1;
432}
433
d8ca156b 434/* Print using the given LANGUAGE the value VAL onto stream STREAM according
79a45b7d 435 to OPTIONS.
806048c6
DJ
436
437 If the data are a string pointer, returns the number of string characters
438 printed.
439
440 This is a preferable interface to val_print, above, because it uses
441 GDB's value mechanism. */
442
443int
79a45b7d
TT
444common_val_print (struct value *val, struct ui_file *stream, int recurse,
445 const struct value_print_options *options,
d8ca156b 446 const struct language_defn *language)
806048c6 447{
6501578c 448 if (!value_check_printable (val, stream, options))
806048c6
DJ
449 return 0;
450
0c3acc09
JB
451 if (language->la_language == language_ada)
452 /* The value might have a dynamic type, which would cause trouble
453 below when trying to extract the value contents (since the value
454 size is determined from the type size which is unknown). So
455 get a fixed representation of our value. */
456 val = ada_to_fixed_value (val);
457
0e03807e 458 return val_print (value_type (val), value_contents_for_printing (val),
42ae5230 459 value_embedded_offset (val), value_address (val),
0e03807e
TT
460 stream, recurse,
461 val, options, language);
806048c6
DJ
462}
463
7348c5e1
JB
464/* Print on stream STREAM the value VAL according to OPTIONS. The value
465 is printed using the current_language syntax.
466
467 If the object printed is a string pointer, return the number of string
468 bytes printed. */
806048c6
DJ
469
470int
79a45b7d
TT
471value_print (struct value *val, struct ui_file *stream,
472 const struct value_print_options *options)
806048c6 473{
6501578c 474 if (!value_check_printable (val, stream, options))
806048c6
DJ
475 return 0;
476
a6bac58e
TT
477 if (!options->raw)
478 {
479 int r = apply_val_pretty_printer (value_type (val),
0e03807e 480 value_contents_for_printing (val),
a6bac58e
TT
481 value_embedded_offset (val),
482 value_address (val),
0e03807e
TT
483 stream, 0,
484 val, options, current_language);
a109c7c1 485
a6bac58e
TT
486 if (r)
487 return r;
488 }
489
79a45b7d 490 return LA_VALUE_PRINT (val, stream, options);
c906108c
SS
491}
492
493/* Called by various <lang>_val_print routines to print
494 TYPE_CODE_INT's. TYPE is the type. VALADDR is the address of the
495 value. STREAM is where to print the value. */
496
497void
fc1a4b47 498val_print_type_code_int (struct type *type, const gdb_byte *valaddr,
fba45db2 499 struct ui_file *stream)
c906108c 500{
50810684 501 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
d44e8473 502
c906108c
SS
503 if (TYPE_LENGTH (type) > sizeof (LONGEST))
504 {
505 LONGEST val;
506
507 if (TYPE_UNSIGNED (type)
508 && extract_long_unsigned_integer (valaddr, TYPE_LENGTH (type),
e17a4113 509 byte_order, &val))
c906108c
SS
510 {
511 print_longest (stream, 'u', 0, val);
512 }
513 else
514 {
515 /* Signed, or we couldn't turn an unsigned value into a
516 LONGEST. For signed values, one could assume two's
517 complement (a reasonable assumption, I think) and do
518 better than this. */
519 print_hex_chars (stream, (unsigned char *) valaddr,
d44e8473 520 TYPE_LENGTH (type), byte_order);
c906108c
SS
521 }
522 }
523 else
524 {
c906108c
SS
525 print_longest (stream, TYPE_UNSIGNED (type) ? 'u' : 'd', 0,
526 unpack_long (type, valaddr));
c906108c
SS
527 }
528}
529
4f2aea11
MK
530void
531val_print_type_code_flags (struct type *type, const gdb_byte *valaddr,
532 struct ui_file *stream)
533{
befae759 534 ULONGEST val = unpack_long (type, valaddr);
4f2aea11
MK
535 int bitpos, nfields = TYPE_NFIELDS (type);
536
537 fputs_filtered ("[ ", stream);
538 for (bitpos = 0; bitpos < nfields; bitpos++)
539 {
316703b9
MK
540 if (TYPE_FIELD_BITPOS (type, bitpos) != -1
541 && (val & ((ULONGEST)1 << bitpos)))
4f2aea11
MK
542 {
543 if (TYPE_FIELD_NAME (type, bitpos))
544 fprintf_filtered (stream, "%s ", TYPE_FIELD_NAME (type, bitpos));
545 else
546 fprintf_filtered (stream, "#%d ", bitpos);
547 }
548 }
549 fputs_filtered ("]", stream);
ab2188aa
PA
550
551/* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
552 according to OPTIONS and SIZE on STREAM. Format i is not supported
553 at this level.
554
555 This is how the elements of an array or structure are printed
556 with a format. */
557}
558
559void
560val_print_scalar_formatted (struct type *type,
561 const gdb_byte *valaddr, int embedded_offset,
562 const struct value *val,
563 const struct value_print_options *options,
564 int size,
565 struct ui_file *stream)
566{
567 gdb_assert (val != NULL);
568 gdb_assert (valaddr == value_contents_for_printing_const (val));
569
570 /* If we get here with a string format, try again without it. Go
571 all the way back to the language printers, which may call us
572 again. */
573 if (options->format == 's')
574 {
575 struct value_print_options opts = *options;
576 opts.format = 0;
577 opts.deref_ref = 0;
578 val_print (type, valaddr, embedded_offset, 0, stream, 0, val, &opts,
579 current_language);
580 return;
581 }
582
583 /* A scalar object that does not have all bits available can't be
584 printed, because all bits contribute to its representation. */
585 if (!value_bits_valid (val, TARGET_CHAR_BIT * embedded_offset,
586 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
587 val_print_optimized_out (stream);
4e07d55f
PA
588 else if (!value_bytes_available (val, embedded_offset, TYPE_LENGTH (type)))
589 val_print_unavailable (stream);
ab2188aa
PA
590 else
591 print_scalar_formatted (valaddr + embedded_offset, type,
592 options, size, stream);
4f2aea11
MK
593}
594
c906108c
SS
595/* Print a number according to FORMAT which is one of d,u,x,o,b,h,w,g.
596 The raison d'etre of this function is to consolidate printing of
581e13c1 597 LONG_LONG's into this one function. The format chars b,h,w,g are
bb599908 598 from print_scalar_formatted(). Numbers are printed using C
581e13c1 599 format.
bb599908
PH
600
601 USE_C_FORMAT means to use C format in all cases. Without it,
602 'o' and 'x' format do not include the standard C radix prefix
603 (leading 0 or 0x).
604
605 Hilfinger/2004-09-09: USE_C_FORMAT was originally called USE_LOCAL
606 and was intended to request formating according to the current
607 language and would be used for most integers that GDB prints. The
608 exceptional cases were things like protocols where the format of
609 the integer is a protocol thing, not a user-visible thing). The
610 parameter remains to preserve the information of what things might
611 be printed with language-specific format, should we ever resurrect
581e13c1 612 that capability. */
c906108c
SS
613
614void
bb599908 615print_longest (struct ui_file *stream, int format, int use_c_format,
fba45db2 616 LONGEST val_long)
c906108c 617{
2bfb72ee
AC
618 const char *val;
619
c906108c
SS
620 switch (format)
621 {
622 case 'd':
bb599908 623 val = int_string (val_long, 10, 1, 0, 1); break;
c906108c 624 case 'u':
bb599908 625 val = int_string (val_long, 10, 0, 0, 1); break;
c906108c 626 case 'x':
bb599908 627 val = int_string (val_long, 16, 0, 0, use_c_format); break;
c906108c 628 case 'b':
bb599908 629 val = int_string (val_long, 16, 0, 2, 1); break;
c906108c 630 case 'h':
bb599908 631 val = int_string (val_long, 16, 0, 4, 1); break;
c906108c 632 case 'w':
bb599908 633 val = int_string (val_long, 16, 0, 8, 1); break;
c906108c 634 case 'g':
bb599908 635 val = int_string (val_long, 16, 0, 16, 1); break;
c906108c
SS
636 break;
637 case 'o':
bb599908 638 val = int_string (val_long, 8, 0, 0, use_c_format); break;
c906108c 639 default:
3e43a32a
MS
640 internal_error (__FILE__, __LINE__,
641 _("failed internal consistency check"));
bb599908 642 }
2bfb72ee 643 fputs_filtered (val, stream);
c906108c
SS
644}
645
c906108c
SS
646/* This used to be a macro, but I don't think it is called often enough
647 to merit such treatment. */
648/* Convert a LONGEST to an int. This is used in contexts (e.g. number of
649 arguments to a function, number in a value history, register number, etc.)
650 where the value must not be larger than can fit in an int. */
651
652int
fba45db2 653longest_to_int (LONGEST arg)
c906108c 654{
581e13c1 655 /* Let the compiler do the work. */
c906108c
SS
656 int rtnval = (int) arg;
657
581e13c1 658 /* Check for overflows or underflows. */
c906108c
SS
659 if (sizeof (LONGEST) > sizeof (int))
660 {
661 if (rtnval != arg)
662 {
8a3fe4f8 663 error (_("Value out of range."));
c906108c
SS
664 }
665 }
666 return (rtnval);
667}
668
a73c86fb
AC
669/* Print a floating point value of type TYPE (not always a
670 TYPE_CODE_FLT), pointed to in GDB by VALADDR, on STREAM. */
c906108c
SS
671
672void
fc1a4b47 673print_floating (const gdb_byte *valaddr, struct type *type,
c84141d6 674 struct ui_file *stream)
c906108c
SS
675{
676 DOUBLEST doub;
677 int inv;
a73c86fb 678 const struct floatformat *fmt = NULL;
c906108c 679 unsigned len = TYPE_LENGTH (type);
20389057 680 enum float_kind kind;
c5aa993b 681
a73c86fb
AC
682 /* If it is a floating-point, check for obvious problems. */
683 if (TYPE_CODE (type) == TYPE_CODE_FLT)
684 fmt = floatformat_from_type (type);
20389057 685 if (fmt != NULL)
39424bef 686 {
20389057
DJ
687 kind = floatformat_classify (fmt, valaddr);
688 if (kind == float_nan)
689 {
690 if (floatformat_is_negative (fmt, valaddr))
691 fprintf_filtered (stream, "-");
692 fprintf_filtered (stream, "nan(");
693 fputs_filtered ("0x", stream);
694 fputs_filtered (floatformat_mantissa (fmt, valaddr), stream);
695 fprintf_filtered (stream, ")");
696 return;
697 }
698 else if (kind == float_infinite)
699 {
700 if (floatformat_is_negative (fmt, valaddr))
701 fputs_filtered ("-", stream);
702 fputs_filtered ("inf", stream);
703 return;
704 }
7355ddba 705 }
c906108c 706
a73c86fb
AC
707 /* NOTE: cagney/2002-01-15: The TYPE passed into print_floating()
708 isn't necessarily a TYPE_CODE_FLT. Consequently, unpack_double
709 needs to be used as that takes care of any necessary type
710 conversions. Such conversions are of course direct to DOUBLEST
711 and disregard any possible target floating point limitations.
712 For instance, a u64 would be converted and displayed exactly on a
713 host with 80 bit DOUBLEST but with loss of information on a host
714 with 64 bit DOUBLEST. */
c2f05ac9 715
c906108c
SS
716 doub = unpack_double (type, valaddr, &inv);
717 if (inv)
718 {
719 fprintf_filtered (stream, "<invalid float value>");
720 return;
721 }
722
39424bef
MK
723 /* FIXME: kettenis/2001-01-20: The following code makes too much
724 assumptions about the host and target floating point format. */
725
a73c86fb 726 /* NOTE: cagney/2002-02-03: Since the TYPE of what was passed in may
c41b8590 727 not necessarily be a TYPE_CODE_FLT, the below ignores that and
a73c86fb
AC
728 instead uses the type's length to determine the precision of the
729 floating-point value being printed. */
c2f05ac9 730
c906108c 731 if (len < sizeof (double))
c5aa993b 732 fprintf_filtered (stream, "%.9g", (double) doub);
c906108c 733 else if (len == sizeof (double))
c5aa993b 734 fprintf_filtered (stream, "%.17g", (double) doub);
c906108c
SS
735 else
736#ifdef PRINTF_HAS_LONG_DOUBLE
737 fprintf_filtered (stream, "%.35Lg", doub);
738#else
39424bef
MK
739 /* This at least wins with values that are representable as
740 doubles. */
c906108c
SS
741 fprintf_filtered (stream, "%.17g", (double) doub);
742#endif
743}
744
7678ef8f
TJB
745void
746print_decimal_floating (const gdb_byte *valaddr, struct type *type,
747 struct ui_file *stream)
748{
e17a4113 749 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
7678ef8f
TJB
750 char decstr[MAX_DECIMAL_STRING];
751 unsigned len = TYPE_LENGTH (type);
752
e17a4113 753 decimal_to_string (valaddr, len, byte_order, decstr);
7678ef8f
TJB
754 fputs_filtered (decstr, stream);
755 return;
756}
757
c5aa993b 758void
fc1a4b47 759print_binary_chars (struct ui_file *stream, const gdb_byte *valaddr,
d44e8473 760 unsigned len, enum bfd_endian byte_order)
c906108c
SS
761{
762
763#define BITS_IN_BYTES 8
764
fc1a4b47 765 const gdb_byte *p;
745b8ca0 766 unsigned int i;
c5aa993b 767 int b;
c906108c
SS
768
769 /* Declared "int" so it will be signed.
581e13c1
MS
770 This ensures that right shift will shift in zeros. */
771
c5aa993b 772 const int mask = 0x080;
c906108c
SS
773
774 /* FIXME: We should be not printing leading zeroes in most cases. */
775
d44e8473 776 if (byte_order == BFD_ENDIAN_BIG)
c906108c
SS
777 {
778 for (p = valaddr;
779 p < valaddr + len;
780 p++)
781 {
c5aa993b 782 /* Every byte has 8 binary characters; peel off
581e13c1
MS
783 and print from the MSB end. */
784
c5aa993b
JM
785 for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
786 {
787 if (*p & (mask >> i))
788 b = 1;
789 else
790 b = 0;
791
792 fprintf_filtered (stream, "%1d", b);
793 }
c906108c
SS
794 }
795 }
796 else
797 {
798 for (p = valaddr + len - 1;
799 p >= valaddr;
800 p--)
801 {
c5aa993b
JM
802 for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
803 {
804 if (*p & (mask >> i))
805 b = 1;
806 else
807 b = 0;
808
809 fprintf_filtered (stream, "%1d", b);
810 }
c906108c
SS
811 }
812 }
c906108c
SS
813}
814
815/* VALADDR points to an integer of LEN bytes.
581e13c1
MS
816 Print it in octal on stream or format it in buf. */
817
c906108c 818void
fc1a4b47 819print_octal_chars (struct ui_file *stream, const gdb_byte *valaddr,
d44e8473 820 unsigned len, enum bfd_endian byte_order)
c906108c 821{
fc1a4b47 822 const gdb_byte *p;
c906108c 823 unsigned char octa1, octa2, octa3, carry;
c5aa993b
JM
824 int cycle;
825
c906108c
SS
826 /* FIXME: We should be not printing leading zeroes in most cases. */
827
828
829 /* Octal is 3 bits, which doesn't fit. Yuk. So we have to track
830 * the extra bits, which cycle every three bytes:
831 *
832 * Byte side: 0 1 2 3
833 * | | | |
834 * bit number 123 456 78 | 9 012 345 6 | 78 901 234 | 567 890 12 |
835 *
836 * Octal side: 0 1 carry 3 4 carry ...
837 *
838 * Cycle number: 0 1 2
839 *
840 * But of course we are printing from the high side, so we have to
841 * figure out where in the cycle we are so that we end up with no
842 * left over bits at the end.
843 */
844#define BITS_IN_OCTAL 3
845#define HIGH_ZERO 0340
846#define LOW_ZERO 0016
847#define CARRY_ZERO 0003
848#define HIGH_ONE 0200
849#define MID_ONE 0160
850#define LOW_ONE 0016
851#define CARRY_ONE 0001
852#define HIGH_TWO 0300
853#define MID_TWO 0070
854#define LOW_TWO 0007
855
856 /* For 32 we start in cycle 2, with two bits and one bit carry;
581e13c1
MS
857 for 64 in cycle in cycle 1, with one bit and a two bit carry. */
858
c906108c
SS
859 cycle = (len * BITS_IN_BYTES) % BITS_IN_OCTAL;
860 carry = 0;
c5aa993b 861
bb599908 862 fputs_filtered ("0", stream);
d44e8473 863 if (byte_order == BFD_ENDIAN_BIG)
c906108c
SS
864 {
865 for (p = valaddr;
866 p < valaddr + len;
867 p++)
868 {
c5aa993b
JM
869 switch (cycle)
870 {
871 case 0:
581e13c1
MS
872 /* No carry in, carry out two bits. */
873
c5aa993b
JM
874 octa1 = (HIGH_ZERO & *p) >> 5;
875 octa2 = (LOW_ZERO & *p) >> 2;
876 carry = (CARRY_ZERO & *p);
877 fprintf_filtered (stream, "%o", octa1);
878 fprintf_filtered (stream, "%o", octa2);
879 break;
880
881 case 1:
581e13c1
MS
882 /* Carry in two bits, carry out one bit. */
883
c5aa993b
JM
884 octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
885 octa2 = (MID_ONE & *p) >> 4;
886 octa3 = (LOW_ONE & *p) >> 1;
887 carry = (CARRY_ONE & *p);
888 fprintf_filtered (stream, "%o", octa1);
889 fprintf_filtered (stream, "%o", octa2);
890 fprintf_filtered (stream, "%o", octa3);
891 break;
892
893 case 2:
581e13c1
MS
894 /* Carry in one bit, no carry out. */
895
c5aa993b
JM
896 octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
897 octa2 = (MID_TWO & *p) >> 3;
898 octa3 = (LOW_TWO & *p);
899 carry = 0;
900 fprintf_filtered (stream, "%o", octa1);
901 fprintf_filtered (stream, "%o", octa2);
902 fprintf_filtered (stream, "%o", octa3);
903 break;
904
905 default:
8a3fe4f8 906 error (_("Internal error in octal conversion;"));
c5aa993b
JM
907 }
908
909 cycle++;
910 cycle = cycle % BITS_IN_OCTAL;
c906108c
SS
911 }
912 }
913 else
914 {
915 for (p = valaddr + len - 1;
916 p >= valaddr;
917 p--)
918 {
c5aa993b
JM
919 switch (cycle)
920 {
921 case 0:
922 /* Carry out, no carry in */
581e13c1 923
c5aa993b
JM
924 octa1 = (HIGH_ZERO & *p) >> 5;
925 octa2 = (LOW_ZERO & *p) >> 2;
926 carry = (CARRY_ZERO & *p);
927 fprintf_filtered (stream, "%o", octa1);
928 fprintf_filtered (stream, "%o", octa2);
929 break;
930
931 case 1:
932 /* Carry in, carry out */
581e13c1 933
c5aa993b
JM
934 octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
935 octa2 = (MID_ONE & *p) >> 4;
936 octa3 = (LOW_ONE & *p) >> 1;
937 carry = (CARRY_ONE & *p);
938 fprintf_filtered (stream, "%o", octa1);
939 fprintf_filtered (stream, "%o", octa2);
940 fprintf_filtered (stream, "%o", octa3);
941 break;
942
943 case 2:
944 /* Carry in, no carry out */
581e13c1 945
c5aa993b
JM
946 octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
947 octa2 = (MID_TWO & *p) >> 3;
948 octa3 = (LOW_TWO & *p);
949 carry = 0;
950 fprintf_filtered (stream, "%o", octa1);
951 fprintf_filtered (stream, "%o", octa2);
952 fprintf_filtered (stream, "%o", octa3);
953 break;
954
955 default:
8a3fe4f8 956 error (_("Internal error in octal conversion;"));
c5aa993b
JM
957 }
958
959 cycle++;
960 cycle = cycle % BITS_IN_OCTAL;
c906108c
SS
961 }
962 }
963
c906108c
SS
964}
965
966/* VALADDR points to an integer of LEN bytes.
581e13c1
MS
967 Print it in decimal on stream or format it in buf. */
968
c906108c 969void
fc1a4b47 970print_decimal_chars (struct ui_file *stream, const gdb_byte *valaddr,
d44e8473 971 unsigned len, enum bfd_endian byte_order)
c906108c
SS
972{
973#define TEN 10
c5aa993b 974#define CARRY_OUT( x ) ((x) / TEN) /* extend char to int */
c906108c
SS
975#define CARRY_LEFT( x ) ((x) % TEN)
976#define SHIFT( x ) ((x) << 4)
c906108c
SS
977#define LOW_NIBBLE( x ) ( (x) & 0x00F)
978#define HIGH_NIBBLE( x ) (((x) & 0x0F0) >> 4)
979
fc1a4b47 980 const gdb_byte *p;
c906108c 981 unsigned char *digits;
c5aa993b
JM
982 int carry;
983 int decimal_len;
984 int i, j, decimal_digits;
985 int dummy;
986 int flip;
987
c906108c 988 /* Base-ten number is less than twice as many digits
581e13c1
MS
989 as the base 16 number, which is 2 digits per byte. */
990
c906108c 991 decimal_len = len * 2 * 2;
3c37485b 992 digits = xmalloc (decimal_len);
c906108c 993
c5aa993b
JM
994 for (i = 0; i < decimal_len; i++)
995 {
c906108c 996 digits[i] = 0;
c5aa993b 997 }
c906108c 998
c906108c
SS
999 /* Ok, we have an unknown number of bytes of data to be printed in
1000 * decimal.
1001 *
1002 * Given a hex number (in nibbles) as XYZ, we start by taking X and
1003 * decemalizing it as "x1 x2" in two decimal nibbles. Then we multiply
1004 * the nibbles by 16, add Y and re-decimalize. Repeat with Z.
1005 *
1006 * The trick is that "digits" holds a base-10 number, but sometimes
581e13c1 1007 * the individual digits are > 10.
c906108c
SS
1008 *
1009 * Outer loop is per nibble (hex digit) of input, from MSD end to
1010 * LSD end.
1011 */
c5aa993b 1012 decimal_digits = 0; /* Number of decimal digits so far */
d44e8473 1013 p = (byte_order == BFD_ENDIAN_BIG) ? valaddr : valaddr + len - 1;
c906108c 1014 flip = 0;
d44e8473 1015 while ((byte_order == BFD_ENDIAN_BIG) ? (p < valaddr + len) : (p >= valaddr))
c5aa993b 1016 {
c906108c
SS
1017 /*
1018 * Multiply current base-ten number by 16 in place.
1019 * Each digit was between 0 and 9, now is between
1020 * 0 and 144.
1021 */
c5aa993b
JM
1022 for (j = 0; j < decimal_digits; j++)
1023 {
1024 digits[j] = SHIFT (digits[j]);
1025 }
1026
c906108c
SS
1027 /* Take the next nibble off the input and add it to what
1028 * we've got in the LSB position. Bottom 'digit' is now
1029 * between 0 and 159.
1030 *
1031 * "flip" is used to run this loop twice for each byte.
1032 */
c5aa993b
JM
1033 if (flip == 0)
1034 {
581e13c1
MS
1035 /* Take top nibble. */
1036
c5aa993b
JM
1037 digits[0] += HIGH_NIBBLE (*p);
1038 flip = 1;
1039 }
1040 else
1041 {
581e13c1
MS
1042 /* Take low nibble and bump our pointer "p". */
1043
c5aa993b 1044 digits[0] += LOW_NIBBLE (*p);
d44e8473
MD
1045 if (byte_order == BFD_ENDIAN_BIG)
1046 p++;
1047 else
1048 p--;
c5aa993b
JM
1049 flip = 0;
1050 }
c906108c
SS
1051
1052 /* Re-decimalize. We have to do this often enough
1053 * that we don't overflow, but once per nibble is
1054 * overkill. Easier this way, though. Note that the
1055 * carry is often larger than 10 (e.g. max initial
1056 * carry out of lowest nibble is 15, could bubble all
1057 * the way up greater than 10). So we have to do
1058 * the carrying beyond the last current digit.
1059 */
1060 carry = 0;
c5aa993b
JM
1061 for (j = 0; j < decimal_len - 1; j++)
1062 {
1063 digits[j] += carry;
1064
1065 /* "/" won't handle an unsigned char with
1066 * a value that if signed would be negative.
1067 * So extend to longword int via "dummy".
1068 */
1069 dummy = digits[j];
1070 carry = CARRY_OUT (dummy);
1071 digits[j] = CARRY_LEFT (dummy);
1072
1073 if (j >= decimal_digits && carry == 0)
1074 {
1075 /*
1076 * All higher digits are 0 and we
1077 * no longer have a carry.
1078 *
1079 * Note: "j" is 0-based, "decimal_digits" is
1080 * 1-based.
1081 */
1082 decimal_digits = j + 1;
1083 break;
1084 }
1085 }
1086 }
c906108c
SS
1087
1088 /* Ok, now "digits" is the decimal representation, with
581e13c1
MS
1089 the "decimal_digits" actual digits. Print! */
1090
c5aa993b
JM
1091 for (i = decimal_digits - 1; i >= 0; i--)
1092 {
1093 fprintf_filtered (stream, "%1d", digits[i]);
1094 }
b8c9b27d 1095 xfree (digits);
c906108c
SS
1096}
1097
1098/* VALADDR points to an integer of LEN bytes. Print it in hex on stream. */
1099
6b9acc27 1100void
fc1a4b47 1101print_hex_chars (struct ui_file *stream, const gdb_byte *valaddr,
d44e8473 1102 unsigned len, enum bfd_endian byte_order)
c906108c 1103{
fc1a4b47 1104 const gdb_byte *p;
c906108c
SS
1105
1106 /* FIXME: We should be not printing leading zeroes in most cases. */
1107
bb599908 1108 fputs_filtered ("0x", stream);
d44e8473 1109 if (byte_order == BFD_ENDIAN_BIG)
c906108c
SS
1110 {
1111 for (p = valaddr;
1112 p < valaddr + len;
1113 p++)
1114 {
1115 fprintf_filtered (stream, "%02x", *p);
1116 }
1117 }
1118 else
1119 {
1120 for (p = valaddr + len - 1;
1121 p >= valaddr;
1122 p--)
1123 {
1124 fprintf_filtered (stream, "%02x", *p);
1125 }
1126 }
c906108c
SS
1127}
1128
3e43a32a 1129/* VALADDR points to a char integer of LEN bytes.
581e13c1 1130 Print it out in appropriate language form on stream.
6b9acc27
JJ
1131 Omit any leading zero chars. */
1132
1133void
6c7a06a3
TT
1134print_char_chars (struct ui_file *stream, struct type *type,
1135 const gdb_byte *valaddr,
d44e8473 1136 unsigned len, enum bfd_endian byte_order)
6b9acc27 1137{
fc1a4b47 1138 const gdb_byte *p;
6b9acc27 1139
d44e8473 1140 if (byte_order == BFD_ENDIAN_BIG)
6b9acc27
JJ
1141 {
1142 p = valaddr;
1143 while (p < valaddr + len - 1 && *p == 0)
1144 ++p;
1145
1146 while (p < valaddr + len)
1147 {
6c7a06a3 1148 LA_EMIT_CHAR (*p, type, stream, '\'');
6b9acc27
JJ
1149 ++p;
1150 }
1151 }
1152 else
1153 {
1154 p = valaddr + len - 1;
1155 while (p > valaddr && *p == 0)
1156 --p;
1157
1158 while (p >= valaddr)
1159 {
6c7a06a3 1160 LA_EMIT_CHAR (*p, type, stream, '\'');
6b9acc27
JJ
1161 --p;
1162 }
1163 }
1164}
1165
79a45b7d 1166/* Print on STREAM using the given OPTIONS the index for the element
e79af960
JB
1167 at INDEX of an array whose index type is INDEX_TYPE. */
1168
1169void
1170maybe_print_array_index (struct type *index_type, LONGEST index,
79a45b7d
TT
1171 struct ui_file *stream,
1172 const struct value_print_options *options)
e79af960
JB
1173{
1174 struct value *index_value;
1175
79a45b7d 1176 if (!options->print_array_indexes)
e79af960
JB
1177 return;
1178
1179 index_value = value_from_longest (index_type, index);
1180
79a45b7d
TT
1181 LA_PRINT_ARRAY_INDEX (index_value, stream, options);
1182}
e79af960 1183
c906108c 1184/* Called by various <lang>_val_print routines to print elements of an
c5aa993b 1185 array in the form "<elem1>, <elem2>, <elem3>, ...".
c906108c 1186
c5aa993b
JM
1187 (FIXME?) Assumes array element separator is a comma, which is correct
1188 for all languages currently handled.
1189 (FIXME?) Some languages have a notation for repeated array elements,
581e13c1 1190 perhaps we should try to use that notation when appropriate. */
c906108c
SS
1191
1192void
490f124f
PA
1193val_print_array_elements (struct type *type,
1194 const gdb_byte *valaddr, int embedded_offset,
a2bd3dcd 1195 CORE_ADDR address, struct ui_file *stream,
79a45b7d 1196 int recurse,
0e03807e 1197 const struct value *val,
79a45b7d 1198 const struct value_print_options *options,
fba45db2 1199 unsigned int i)
c906108c
SS
1200{
1201 unsigned int things_printed = 0;
1202 unsigned len;
e79af960 1203 struct type *elttype, *index_type;
c906108c
SS
1204 unsigned eltlen;
1205 /* Position of the array element we are examining to see
1206 whether it is repeated. */
1207 unsigned int rep1;
1208 /* Number of repetitions we have detected so far. */
1209 unsigned int reps;
dbc98a8b 1210 LONGEST low_bound, high_bound;
c5aa993b 1211
c906108c
SS
1212 elttype = TYPE_TARGET_TYPE (type);
1213 eltlen = TYPE_LENGTH (check_typedef (elttype));
e79af960 1214 index_type = TYPE_INDEX_TYPE (type);
c906108c 1215
dbc98a8b 1216 if (get_array_bounds (type, &low_bound, &high_bound))
75be741b
JB
1217 {
1218 /* The array length should normally be HIGH_BOUND - LOW_BOUND + 1.
1219 But we have to be a little extra careful, because some languages
1220 such as Ada allow LOW_BOUND to be greater than HIGH_BOUND for
1221 empty arrays. In that situation, the array length is just zero,
1222 not negative! */
1223 if (low_bound > high_bound)
1224 len = 0;
1225 else
1226 len = high_bound - low_bound + 1;
1227 }
e936309c
JB
1228 else
1229 {
dbc98a8b
KW
1230 warning (_("unable to get bounds of array, assuming null array"));
1231 low_bound = 0;
1232 len = 0;
168de233
JB
1233 }
1234
c906108c
SS
1235 annotate_array_section_begin (i, elttype);
1236
79a45b7d 1237 for (; i < len && things_printed < options->print_max; i++)
c906108c
SS
1238 {
1239 if (i != 0)
1240 {
79a45b7d 1241 if (options->prettyprint_arrays)
c906108c
SS
1242 {
1243 fprintf_filtered (stream, ",\n");
1244 print_spaces_filtered (2 + 2 * recurse, stream);
1245 }
1246 else
1247 {
1248 fprintf_filtered (stream, ", ");
1249 }
1250 }
1251 wrap_here (n_spaces (2 + 2 * recurse));
dbc98a8b 1252 maybe_print_array_index (index_type, i + low_bound,
79a45b7d 1253 stream, options);
c906108c
SS
1254
1255 rep1 = i + 1;
1256 reps = 1;
35bef4fd
TT
1257 /* Only check for reps if repeat_count_threshold is not set to
1258 UINT_MAX (unlimited). */
1259 if (options->repeat_count_threshold < UINT_MAX)
c906108c 1260 {
35bef4fd
TT
1261 while (rep1 < len
1262 && value_available_contents_eq (val,
1263 embedded_offset + i * eltlen,
1264 val,
1265 (embedded_offset
1266 + rep1 * eltlen),
1267 eltlen))
1268 {
1269 ++reps;
1270 ++rep1;
1271 }
c906108c
SS
1272 }
1273
79a45b7d 1274 if (reps > options->repeat_count_threshold)
c906108c 1275 {
490f124f
PA
1276 val_print (elttype, valaddr, embedded_offset + i * eltlen,
1277 address, stream, recurse + 1, val, options,
1278 current_language);
c906108c
SS
1279 annotate_elt_rep (reps);
1280 fprintf_filtered (stream, " <repeats %u times>", reps);
1281 annotate_elt_rep_end ();
1282
1283 i = rep1 - 1;
79a45b7d 1284 things_printed += options->repeat_count_threshold;
c906108c
SS
1285 }
1286 else
1287 {
490f124f
PA
1288 val_print (elttype, valaddr, embedded_offset + i * eltlen,
1289 address,
0e03807e 1290 stream, recurse + 1, val, options, current_language);
c906108c
SS
1291 annotate_elt ();
1292 things_printed++;
1293 }
1294 }
1295 annotate_array_section_end ();
1296 if (i < len)
1297 {
1298 fprintf_filtered (stream, "...");
1299 }
1300}
1301
917317f4
JM
1302/* Read LEN bytes of target memory at address MEMADDR, placing the
1303 results in GDB's memory at MYADDR. Returns a count of the bytes
1304 actually read, and optionally an errno value in the location
581e13c1 1305 pointed to by ERRNOPTR if ERRNOPTR is non-null. */
917317f4
JM
1306
1307/* FIXME: cagney/1999-10-14: Only used by val_print_string. Can this
1308 function be eliminated. */
1309
1310static int
3e43a32a
MS
1311partial_memory_read (CORE_ADDR memaddr, gdb_byte *myaddr,
1312 int len, int *errnoptr)
917317f4 1313{
581e13c1
MS
1314 int nread; /* Number of bytes actually read. */
1315 int errcode; /* Error from last read. */
917317f4 1316
581e13c1 1317 /* First try a complete read. */
917317f4
JM
1318 errcode = target_read_memory (memaddr, myaddr, len);
1319 if (errcode == 0)
1320 {
581e13c1 1321 /* Got it all. */
917317f4
JM
1322 nread = len;
1323 }
1324 else
1325 {
581e13c1 1326 /* Loop, reading one byte at a time until we get as much as we can. */
917317f4
JM
1327 for (errcode = 0, nread = 0; len > 0 && errcode == 0; nread++, len--)
1328 {
1329 errcode = target_read_memory (memaddr++, myaddr++, 1);
1330 }
581e13c1 1331 /* If an error, the last read was unsuccessful, so adjust count. */
917317f4
JM
1332 if (errcode != 0)
1333 {
1334 nread--;
1335 }
1336 }
1337 if (errnoptr != NULL)
1338 {
1339 *errnoptr = errcode;
1340 }
1341 return (nread);
1342}
1343
ae6a3a4c
TJB
1344/* Read a string from the inferior, at ADDR, with LEN characters of WIDTH bytes
1345 each. Fetch at most FETCHLIMIT characters. BUFFER will be set to a newly
1346 allocated buffer containing the string, which the caller is responsible to
1347 free, and BYTES_READ will be set to the number of bytes read. Returns 0 on
1348 success, or errno on failure.
1349
1350 If LEN > 0, reads exactly LEN characters (including eventual NULs in
1351 the middle or end of the string). If LEN is -1, stops at the first
1352 null character (not necessarily the first null byte) up to a maximum
1353 of FETCHLIMIT characters. Set FETCHLIMIT to UINT_MAX to read as many
1354 characters as possible from the string.
1355
1356 Unless an exception is thrown, BUFFER will always be allocated, even on
1357 failure. In this case, some characters might have been read before the
1358 failure happened. Check BYTES_READ to recognize this situation.
1359
1360 Note: There was a FIXME asking to make this code use target_read_string,
1361 but this function is more general (can read past null characters, up to
581e13c1 1362 given LEN). Besides, it is used much more often than target_read_string
ae6a3a4c
TJB
1363 so it is more tested. Perhaps callers of target_read_string should use
1364 this function instead? */
c906108c
SS
1365
1366int
ae6a3a4c 1367read_string (CORE_ADDR addr, int len, int width, unsigned int fetchlimit,
e17a4113 1368 enum bfd_endian byte_order, gdb_byte **buffer, int *bytes_read)
c906108c 1369{
ae6a3a4c
TJB
1370 int found_nul; /* Non-zero if we found the nul char. */
1371 int errcode; /* Errno returned from bad reads. */
1372 unsigned int nfetch; /* Chars to fetch / chars fetched. */
1373 unsigned int chunksize; /* Size of each fetch, in chars. */
3e43a32a
MS
1374 gdb_byte *bufptr; /* Pointer to next available byte in
1375 buffer. */
ae6a3a4c
TJB
1376 gdb_byte *limit; /* First location past end of fetch buffer. */
1377 struct cleanup *old_chain = NULL; /* Top of the old cleanup chain. */
1378
1379 /* Decide how large of chunks to try to read in one operation. This
c906108c
SS
1380 is also pretty simple. If LEN >= zero, then we want fetchlimit chars,
1381 so we might as well read them all in one operation. If LEN is -1, we
ae6a3a4c 1382 are looking for a NUL terminator to end the fetching, so we might as
c906108c
SS
1383 well read in blocks that are large enough to be efficient, but not so
1384 large as to be slow if fetchlimit happens to be large. So we choose the
1385 minimum of 8 and fetchlimit. We used to use 200 instead of 8 but
1386 200 is way too big for remote debugging over a serial line. */
1387
1388 chunksize = (len == -1 ? min (8, fetchlimit) : fetchlimit);
1389
ae6a3a4c
TJB
1390 /* Loop until we either have all the characters, or we encounter
1391 some error, such as bumping into the end of the address space. */
c906108c
SS
1392
1393 found_nul = 0;
b5096abe
PM
1394 *buffer = NULL;
1395
1396 old_chain = make_cleanup (free_current_contents, buffer);
c906108c
SS
1397
1398 if (len > 0)
1399 {
ae6a3a4c
TJB
1400 *buffer = (gdb_byte *) xmalloc (len * width);
1401 bufptr = *buffer;
c906108c 1402
917317f4 1403 nfetch = partial_memory_read (addr, bufptr, len * width, &errcode)
c906108c
SS
1404 / width;
1405 addr += nfetch * width;
1406 bufptr += nfetch * width;
1407 }
1408 else if (len == -1)
1409 {
1410 unsigned long bufsize = 0;
ae6a3a4c 1411
c906108c
SS
1412 do
1413 {
1414 QUIT;
1415 nfetch = min (chunksize, fetchlimit - bufsize);
1416
ae6a3a4c
TJB
1417 if (*buffer == NULL)
1418 *buffer = (gdb_byte *) xmalloc (nfetch * width);
c906108c 1419 else
b5096abe
PM
1420 *buffer = (gdb_byte *) xrealloc (*buffer,
1421 (nfetch + bufsize) * width);
c906108c 1422
ae6a3a4c 1423 bufptr = *buffer + bufsize * width;
c906108c
SS
1424 bufsize += nfetch;
1425
ae6a3a4c 1426 /* Read as much as we can. */
917317f4 1427 nfetch = partial_memory_read (addr, bufptr, nfetch * width, &errcode)
ae6a3a4c 1428 / width;
c906108c 1429
ae6a3a4c 1430 /* Scan this chunk for the null character that terminates the string
c906108c
SS
1431 to print. If found, we don't need to fetch any more. Note
1432 that bufptr is explicitly left pointing at the next character
ae6a3a4c
TJB
1433 after the null character, or at the next character after the end
1434 of the buffer. */
c906108c
SS
1435
1436 limit = bufptr + nfetch * width;
1437 while (bufptr < limit)
1438 {
1439 unsigned long c;
1440
e17a4113 1441 c = extract_unsigned_integer (bufptr, width, byte_order);
c906108c
SS
1442 addr += width;
1443 bufptr += width;
1444 if (c == 0)
1445 {
1446 /* We don't care about any error which happened after
ae6a3a4c 1447 the NUL terminator. */
c906108c
SS
1448 errcode = 0;
1449 found_nul = 1;
1450 break;
1451 }
1452 }
1453 }
c5aa993b 1454 while (errcode == 0 /* no error */
ae6a3a4c
TJB
1455 && bufptr - *buffer < fetchlimit * width /* no overrun */
1456 && !found_nul); /* haven't found NUL yet */
c906108c
SS
1457 }
1458 else
ae6a3a4c
TJB
1459 { /* Length of string is really 0! */
1460 /* We always allocate *buffer. */
1461 *buffer = bufptr = xmalloc (1);
c906108c
SS
1462 errcode = 0;
1463 }
1464
1465 /* bufptr and addr now point immediately beyond the last byte which we
1466 consider part of the string (including a '\0' which ends the string). */
ae6a3a4c
TJB
1467 *bytes_read = bufptr - *buffer;
1468
1469 QUIT;
1470
1471 discard_cleanups (old_chain);
1472
1473 return errcode;
1474}
1475
3b2b8fea
TT
1476/* Return true if print_wchar can display W without resorting to a
1477 numeric escape, false otherwise. */
1478
1479static int
1480wchar_printable (gdb_wchar_t w)
1481{
1482 return (gdb_iswprint (w)
1483 || w == LCST ('\a') || w == LCST ('\b')
1484 || w == LCST ('\f') || w == LCST ('\n')
1485 || w == LCST ('\r') || w == LCST ('\t')
1486 || w == LCST ('\v'));
1487}
1488
1489/* A helper function that converts the contents of STRING to wide
1490 characters and then appends them to OUTPUT. */
1491
1492static void
1493append_string_as_wide (const char *string,
1494 struct obstack *output)
1495{
1496 for (; *string; ++string)
1497 {
1498 gdb_wchar_t w = gdb_btowc (*string);
1499 obstack_grow (output, &w, sizeof (gdb_wchar_t));
1500 }
1501}
1502
1503/* Print a wide character W to OUTPUT. ORIG is a pointer to the
1504 original (target) bytes representing the character, ORIG_LEN is the
1505 number of valid bytes. WIDTH is the number of bytes in a base
1506 characters of the type. OUTPUT is an obstack to which wide
1507 characters are emitted. QUOTER is a (narrow) character indicating
1508 the style of quotes surrounding the character to be printed.
1509 NEED_ESCAPE is an in/out flag which is used to track numeric
1510 escapes across calls. */
1511
1512static void
1513print_wchar (gdb_wint_t w, const gdb_byte *orig,
1514 int orig_len, int width,
1515 enum bfd_endian byte_order,
1516 struct obstack *output,
1517 int quoter, int *need_escapep)
1518{
1519 int need_escape = *need_escapep;
1520
1521 *need_escapep = 0;
1522 if (gdb_iswprint (w) && (!need_escape || (!gdb_iswdigit (w)
1523 && w != LCST ('8')
1524 && w != LCST ('9'))))
1525 {
1526 gdb_wchar_t wchar = w;
1527
1528 if (w == gdb_btowc (quoter) || w == LCST ('\\'))
1529 obstack_grow_wstr (output, LCST ("\\"));
1530 obstack_grow (output, &wchar, sizeof (gdb_wchar_t));
1531 }
1532 else
1533 {
1534 switch (w)
1535 {
1536 case LCST ('\a'):
1537 obstack_grow_wstr (output, LCST ("\\a"));
1538 break;
1539 case LCST ('\b'):
1540 obstack_grow_wstr (output, LCST ("\\b"));
1541 break;
1542 case LCST ('\f'):
1543 obstack_grow_wstr (output, LCST ("\\f"));
1544 break;
1545 case LCST ('\n'):
1546 obstack_grow_wstr (output, LCST ("\\n"));
1547 break;
1548 case LCST ('\r'):
1549 obstack_grow_wstr (output, LCST ("\\r"));
1550 break;
1551 case LCST ('\t'):
1552 obstack_grow_wstr (output, LCST ("\\t"));
1553 break;
1554 case LCST ('\v'):
1555 obstack_grow_wstr (output, LCST ("\\v"));
1556 break;
1557 default:
1558 {
1559 int i;
1560
1561 for (i = 0; i + width <= orig_len; i += width)
1562 {
1563 char octal[30];
1564 ULONGEST value;
1565
1566 value = extract_unsigned_integer (&orig[i], width,
1567 byte_order);
1568 /* If the value fits in 3 octal digits, print it that
1569 way. Otherwise, print it as a hex escape. */
1570 if (value <= 0777)
1571 sprintf (octal, "\\%.3o", (int) (value & 0777));
1572 else
1573 sprintf (octal, "\\x%lx", (long) value);
1574 append_string_as_wide (octal, output);
1575 }
1576 /* If we somehow have extra bytes, print them now. */
1577 while (i < orig_len)
1578 {
1579 char octal[5];
1580
1581 sprintf (octal, "\\%.3o", orig[i] & 0xff);
1582 append_string_as_wide (octal, output);
1583 ++i;
1584 }
1585
1586 *need_escapep = 1;
1587 }
1588 break;
1589 }
1590 }
1591}
1592
1593/* Print the character C on STREAM as part of the contents of a
1594 literal string whose delimiter is QUOTER. ENCODING names the
1595 encoding of C. */
1596
1597void
1598generic_emit_char (int c, struct type *type, struct ui_file *stream,
1599 int quoter, const char *encoding)
1600{
1601 enum bfd_endian byte_order
1602 = gdbarch_byte_order (get_type_arch (type));
1603 struct obstack wchar_buf, output;
1604 struct cleanup *cleanups;
1605 gdb_byte *buf;
1606 struct wchar_iterator *iter;
1607 int need_escape = 0;
1608
1609 buf = alloca (TYPE_LENGTH (type));
1610 pack_long (buf, type, c);
1611
1612 iter = make_wchar_iterator (buf, TYPE_LENGTH (type),
1613 encoding, TYPE_LENGTH (type));
1614 cleanups = make_cleanup_wchar_iterator (iter);
1615
1616 /* This holds the printable form of the wchar_t data. */
1617 obstack_init (&wchar_buf);
1618 make_cleanup_obstack_free (&wchar_buf);
1619
1620 while (1)
1621 {
1622 int num_chars;
1623 gdb_wchar_t *chars;
1624 const gdb_byte *buf;
1625 size_t buflen;
1626 int print_escape = 1;
1627 enum wchar_iterate_result result;
1628
1629 num_chars = wchar_iterate (iter, &result, &chars, &buf, &buflen);
1630 if (num_chars < 0)
1631 break;
1632 if (num_chars > 0)
1633 {
1634 /* If all characters are printable, print them. Otherwise,
1635 we're going to have to print an escape sequence. We
1636 check all characters because we want to print the target
1637 bytes in the escape sequence, and we don't know character
1638 boundaries there. */
1639 int i;
1640
1641 print_escape = 0;
1642 for (i = 0; i < num_chars; ++i)
1643 if (!wchar_printable (chars[i]))
1644 {
1645 print_escape = 1;
1646 break;
1647 }
1648
1649 if (!print_escape)
1650 {
1651 for (i = 0; i < num_chars; ++i)
1652 print_wchar (chars[i], buf, buflen,
1653 TYPE_LENGTH (type), byte_order,
1654 &wchar_buf, quoter, &need_escape);
1655 }
1656 }
1657
1658 /* This handles the NUM_CHARS == 0 case as well. */
1659 if (print_escape)
1660 print_wchar (gdb_WEOF, buf, buflen, TYPE_LENGTH (type),
1661 byte_order, &wchar_buf, quoter, &need_escape);
1662 }
1663
1664 /* The output in the host encoding. */
1665 obstack_init (&output);
1666 make_cleanup_obstack_free (&output);
1667
1668 convert_between_encodings (INTERMEDIATE_ENCODING, host_charset (),
1669 obstack_base (&wchar_buf),
1670 obstack_object_size (&wchar_buf),
1671 1, &output, translit_char);
1672 obstack_1grow (&output, '\0');
1673
1674 fputs_filtered (obstack_base (&output), stream);
1675
1676 do_cleanups (cleanups);
1677}
1678
1679/* Print the character string STRING, printing at most LENGTH
1680 characters. LENGTH is -1 if the string is nul terminated. TYPE is
1681 the type of each character. OPTIONS holds the printing options;
1682 printing stops early if the number hits print_max; repeat counts
1683 are printed as appropriate. Print ellipses at the end if we had to
1684 stop before printing LENGTH characters, or if FORCE_ELLIPSES.
1685 QUOTE_CHAR is the character to print at each end of the string. If
1686 C_STYLE_TERMINATOR is true, and the last character is 0, then it is
1687 omitted. */
1688
1689void
1690generic_printstr (struct ui_file *stream, struct type *type,
1691 const gdb_byte *string, unsigned int length,
1692 const char *encoding, int force_ellipses,
1693 int quote_char, int c_style_terminator,
1694 const struct value_print_options *options)
1695{
1696 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
1697 unsigned int i;
1698 unsigned int things_printed = 0;
1699 int in_quotes = 0;
1700 int need_comma = 0;
1701 int width = TYPE_LENGTH (type);
1702 struct obstack wchar_buf, output;
1703 struct cleanup *cleanup;
1704 struct wchar_iterator *iter;
1705 int finished = 0;
1706 int need_escape = 0;
1707 gdb_wchar_t wide_quote_char = gdb_btowc (quote_char);
1708
1709 if (length == -1)
1710 {
1711 unsigned long current_char = 1;
1712
1713 for (i = 0; current_char; ++i)
1714 {
1715 QUIT;
1716 current_char = extract_unsigned_integer (string + i * width,
1717 width, byte_order);
1718 }
1719 length = i;
1720 }
1721
1722 /* If the string was not truncated due to `set print elements', and
1723 the last byte of it is a null, we don't print that, in
1724 traditional C style. */
1725 if (c_style_terminator
1726 && !force_ellipses
1727 && length > 0
1728 && (extract_unsigned_integer (string + (length - 1) * width,
1729 width, byte_order) == 0))
1730 length--;
1731
1732 if (length == 0)
1733 {
1734 fputs_filtered ("\"\"", stream);
1735 return;
1736 }
1737
1738 /* Arrange to iterate over the characters, in wchar_t form. */
1739 iter = make_wchar_iterator (string, length * width, encoding, width);
1740 cleanup = make_cleanup_wchar_iterator (iter);
1741
1742 /* WCHAR_BUF is the obstack we use to represent the string in
1743 wchar_t form. */
1744 obstack_init (&wchar_buf);
1745 make_cleanup_obstack_free (&wchar_buf);
1746
1747 while (!finished && things_printed < options->print_max)
1748 {
1749 int num_chars;
1750 enum wchar_iterate_result result;
1751 gdb_wchar_t *chars;
1752 const gdb_byte *buf;
1753 size_t buflen;
1754
1755 QUIT;
1756
1757 if (need_comma)
1758 {
1759 obstack_grow_wstr (&wchar_buf, LCST (", "));
1760 need_comma = 0;
1761 }
1762
1763 num_chars = wchar_iterate (iter, &result, &chars, &buf, &buflen);
1764 /* We only look at repetitions when we were able to convert a
1765 single character in isolation. This makes the code simpler
1766 and probably does the sensible thing in the majority of
1767 cases. */
1768 while (num_chars == 1 && things_printed < options->print_max)
1769 {
1770 /* Count the number of repetitions. */
1771 unsigned int reps = 0;
1772 gdb_wchar_t current_char = chars[0];
1773 const gdb_byte *orig_buf = buf;
1774 int orig_len = buflen;
1775
1776 if (need_comma)
1777 {
1778 obstack_grow_wstr (&wchar_buf, LCST (", "));
1779 need_comma = 0;
1780 }
1781
1782 while (num_chars == 1 && current_char == chars[0])
1783 {
1784 num_chars = wchar_iterate (iter, &result, &chars,
1785 &buf, &buflen);
1786 ++reps;
1787 }
1788
1789 /* Emit CURRENT_CHAR according to the repetition count and
1790 options. */
1791 if (reps > options->repeat_count_threshold)
1792 {
1793 if (in_quotes)
1794 {
1795 if (options->inspect_it)
1796 obstack_grow_wstr (&wchar_buf, LCST ("\\"));
1797 obstack_grow (&wchar_buf, &wide_quote_char,
1798 sizeof (gdb_wchar_t));
1799 obstack_grow_wstr (&wchar_buf, LCST (", "));
1800 in_quotes = 0;
1801 }
1802 obstack_grow_wstr (&wchar_buf, LCST ("'"));
1803 need_escape = 0;
1804 print_wchar (current_char, orig_buf, orig_len, width,
1805 byte_order, &wchar_buf, '\'', &need_escape);
1806 obstack_grow_wstr (&wchar_buf, LCST ("'"));
1807 {
1808 /* Painful gyrations. */
1809 int j;
1810 char *s = xstrprintf (_(" <repeats %u times>"), reps);
1811
1812 for (j = 0; s[j]; ++j)
1813 {
1814 gdb_wchar_t w = gdb_btowc (s[j]);
1815 obstack_grow (&wchar_buf, &w, sizeof (gdb_wchar_t));
1816 }
1817 xfree (s);
1818 }
1819 things_printed += options->repeat_count_threshold;
1820 need_comma = 1;
1821 }
1822 else
1823 {
1824 /* Saw the character one or more times, but fewer than
1825 the repetition threshold. */
1826 if (!in_quotes)
1827 {
1828 if (options->inspect_it)
1829 obstack_grow_wstr (&wchar_buf, LCST ("\\"));
1830 obstack_grow (&wchar_buf, &wide_quote_char,
1831 sizeof (gdb_wchar_t));
1832 in_quotes = 1;
1833 need_escape = 0;
1834 }
1835
1836 while (reps-- > 0)
1837 {
1838 print_wchar (current_char, orig_buf,
1839 orig_len, width,
1840 byte_order, &wchar_buf,
1841 quote_char, &need_escape);
1842 ++things_printed;
1843 }
1844 }
1845 }
1846
1847 /* NUM_CHARS and the other outputs from wchar_iterate are valid
1848 here regardless of which branch was taken above. */
1849 if (num_chars < 0)
1850 {
1851 /* Hit EOF. */
1852 finished = 1;
1853 break;
1854 }
1855
1856 switch (result)
1857 {
1858 case wchar_iterate_invalid:
1859 if (!in_quotes)
1860 {
1861 if (options->inspect_it)
1862 obstack_grow_wstr (&wchar_buf, LCST ("\\"));
1863 obstack_grow (&wchar_buf, &wide_quote_char,
1864 sizeof (gdb_wchar_t));
1865 in_quotes = 1;
1866 }
1867 need_escape = 0;
1868 print_wchar (gdb_WEOF, buf, buflen, width, byte_order,
1869 &wchar_buf, quote_char, &need_escape);
1870 break;
1871
1872 case wchar_iterate_incomplete:
1873 if (in_quotes)
1874 {
1875 if (options->inspect_it)
1876 obstack_grow_wstr (&wchar_buf, LCST ("\\"));
1877 obstack_grow (&wchar_buf, &wide_quote_char,
1878 sizeof (gdb_wchar_t));
1879 obstack_grow_wstr (&wchar_buf, LCST (","));
1880 in_quotes = 0;
1881 }
1882 obstack_grow_wstr (&wchar_buf,
1883 LCST (" <incomplete sequence "));
1884 print_wchar (gdb_WEOF, buf, buflen, width,
1885 byte_order, &wchar_buf,
1886 0, &need_escape);
1887 obstack_grow_wstr (&wchar_buf, LCST (">"));
1888 finished = 1;
1889 break;
1890 }
1891 }
1892
1893 /* Terminate the quotes if necessary. */
1894 if (in_quotes)
1895 {
1896 if (options->inspect_it)
1897 obstack_grow_wstr (&wchar_buf, LCST ("\\"));
1898 obstack_grow (&wchar_buf, &wide_quote_char,
1899 sizeof (gdb_wchar_t));
1900 }
1901
1902 if (force_ellipses || !finished)
1903 obstack_grow_wstr (&wchar_buf, LCST ("..."));
1904
1905 /* OUTPUT is where we collect `char's for printing. */
1906 obstack_init (&output);
1907 make_cleanup_obstack_free (&output);
1908
1909 convert_between_encodings (INTERMEDIATE_ENCODING, host_charset (),
1910 obstack_base (&wchar_buf),
1911 obstack_object_size (&wchar_buf),
1912 1, &output, translit_char);
1913 obstack_1grow (&output, '\0');
1914
1915 fputs_filtered (obstack_base (&output), stream);
1916
1917 do_cleanups (cleanup);
1918}
1919
ae6a3a4c
TJB
1920/* Print a string from the inferior, starting at ADDR and printing up to LEN
1921 characters, of WIDTH bytes a piece, to STREAM. If LEN is -1, printing
1922 stops at the first null byte, otherwise printing proceeds (including null
1923 bytes) until either print_max or LEN characters have been printed,
09ca9e2e
TT
1924 whichever is smaller. ENCODING is the name of the string's
1925 encoding. It can be NULL, in which case the target encoding is
1926 assumed. */
ae6a3a4c
TJB
1927
1928int
09ca9e2e
TT
1929val_print_string (struct type *elttype, const char *encoding,
1930 CORE_ADDR addr, int len,
6c7a06a3 1931 struct ui_file *stream,
ae6a3a4c
TJB
1932 const struct value_print_options *options)
1933{
1934 int force_ellipsis = 0; /* Force ellipsis to be printed if nonzero. */
1935 int errcode; /* Errno returned from bad reads. */
581e13c1 1936 int found_nul; /* Non-zero if we found the nul char. */
ae6a3a4c
TJB
1937 unsigned int fetchlimit; /* Maximum number of chars to print. */
1938 int bytes_read;
1939 gdb_byte *buffer = NULL; /* Dynamically growable fetch buffer. */
1940 struct cleanup *old_chain = NULL; /* Top of the old cleanup chain. */
5af949e3 1941 struct gdbarch *gdbarch = get_type_arch (elttype);
e17a4113 1942 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
6c7a06a3 1943 int width = TYPE_LENGTH (elttype);
ae6a3a4c
TJB
1944
1945 /* First we need to figure out the limit on the number of characters we are
1946 going to attempt to fetch and print. This is actually pretty simple. If
1947 LEN >= zero, then the limit is the minimum of LEN and print_max. If
1948 LEN is -1, then the limit is print_max. This is true regardless of
1949 whether print_max is zero, UINT_MAX (unlimited), or something in between,
1950 because finding the null byte (or available memory) is what actually
1951 limits the fetch. */
1952
3e43a32a
MS
1953 fetchlimit = (len == -1 ? options->print_max : min (len,
1954 options->print_max));
ae6a3a4c 1955
e17a4113
UW
1956 errcode = read_string (addr, len, width, fetchlimit, byte_order,
1957 &buffer, &bytes_read);
ae6a3a4c
TJB
1958 old_chain = make_cleanup (xfree, buffer);
1959
1960 addr += bytes_read;
c906108c 1961
3e43a32a
MS
1962 /* We now have either successfully filled the buffer to fetchlimit,
1963 or terminated early due to an error or finding a null char when
1964 LEN is -1. */
ae6a3a4c
TJB
1965
1966 /* Determine found_nul by looking at the last character read. */
e17a4113
UW
1967 found_nul = extract_unsigned_integer (buffer + bytes_read - width, width,
1968 byte_order) == 0;
c906108c
SS
1969 if (len == -1 && !found_nul)
1970 {
777ea8f1 1971 gdb_byte *peekbuf;
c906108c 1972
ae6a3a4c 1973 /* We didn't find a NUL terminator we were looking for. Attempt
c5aa993b
JM
1974 to peek at the next character. If not successful, or it is not
1975 a null byte, then force ellipsis to be printed. */
c906108c 1976
777ea8f1 1977 peekbuf = (gdb_byte *) alloca (width);
c906108c
SS
1978
1979 if (target_read_memory (addr, peekbuf, width) == 0
e17a4113 1980 && extract_unsigned_integer (peekbuf, width, byte_order) != 0)
c906108c
SS
1981 force_ellipsis = 1;
1982 }
ae6a3a4c 1983 else if ((len >= 0 && errcode != 0) || (len > bytes_read / width))
c906108c
SS
1984 {
1985 /* Getting an error when we have a requested length, or fetching less
c5aa993b 1986 than the number of characters actually requested, always make us
ae6a3a4c 1987 print ellipsis. */
c906108c
SS
1988 force_ellipsis = 1;
1989 }
1990
c906108c
SS
1991 /* If we get an error before fetching anything, don't print a string.
1992 But if we fetch something and then get an error, print the string
1993 and then the error message. */
ae6a3a4c 1994 if (errcode == 0 || bytes_read > 0)
c906108c 1995 {
79a45b7d 1996 if (options->addressprint)
c906108c
SS
1997 {
1998 fputs_filtered (" ", stream);
1999 }
be759fcf 2000 LA_PRINT_STRING (stream, elttype, buffer, bytes_read / width,
3a772aa4 2001 encoding, force_ellipsis, options);
c906108c
SS
2002 }
2003
2004 if (errcode != 0)
2005 {
2006 if (errcode == EIO)
2007 {
2008 fprintf_filtered (stream, " <Address ");
5af949e3 2009 fputs_filtered (paddress (gdbarch, addr), stream);
c906108c
SS
2010 fprintf_filtered (stream, " out of bounds>");
2011 }
2012 else
2013 {
2014 fprintf_filtered (stream, " <Error reading address ");
5af949e3 2015 fputs_filtered (paddress (gdbarch, addr), stream);
c906108c
SS
2016 fprintf_filtered (stream, ": %s>", safe_strerror (errcode));
2017 }
2018 }
ae6a3a4c 2019
c906108c
SS
2020 gdb_flush (stream);
2021 do_cleanups (old_chain);
ae6a3a4c
TJB
2022
2023 return (bytes_read / width);
c906108c 2024}
c906108c 2025\f
c5aa993b 2026
09e6485f
PA
2027/* The 'set input-radix' command writes to this auxiliary variable.
2028 If the requested radix is valid, INPUT_RADIX is updated; otherwise,
2029 it is left unchanged. */
2030
2031static unsigned input_radix_1 = 10;
2032
c906108c
SS
2033/* Validate an input or output radix setting, and make sure the user
2034 knows what they really did here. Radix setting is confusing, e.g.
2035 setting the input radix to "10" never changes it! */
2036
c906108c 2037static void
fba45db2 2038set_input_radix (char *args, int from_tty, struct cmd_list_element *c)
c906108c 2039{
09e6485f 2040 set_input_radix_1 (from_tty, input_radix_1);
c906108c
SS
2041}
2042
c906108c 2043static void
fba45db2 2044set_input_radix_1 (int from_tty, unsigned radix)
c906108c
SS
2045{
2046 /* We don't currently disallow any input radix except 0 or 1, which don't
2047 make any mathematical sense. In theory, we can deal with any input
2048 radix greater than 1, even if we don't have unique digits for every
2049 value from 0 to radix-1, but in practice we lose on large radix values.
2050 We should either fix the lossage or restrict the radix range more.
581e13c1 2051 (FIXME). */
c906108c
SS
2052
2053 if (radix < 2)
2054 {
09e6485f 2055 input_radix_1 = input_radix;
8a3fe4f8 2056 error (_("Nonsense input radix ``decimal %u''; input radix unchanged."),
c906108c
SS
2057 radix);
2058 }
09e6485f 2059 input_radix_1 = input_radix = radix;
c906108c
SS
2060 if (from_tty)
2061 {
3e43a32a
MS
2062 printf_filtered (_("Input radix now set to "
2063 "decimal %u, hex %x, octal %o.\n"),
c906108c
SS
2064 radix, radix, radix);
2065 }
2066}
2067
09e6485f
PA
2068/* The 'set output-radix' command writes to this auxiliary variable.
2069 If the requested radix is valid, OUTPUT_RADIX is updated,
2070 otherwise, it is left unchanged. */
2071
2072static unsigned output_radix_1 = 10;
2073
c906108c 2074static void
fba45db2 2075set_output_radix (char *args, int from_tty, struct cmd_list_element *c)
c906108c 2076{
09e6485f 2077 set_output_radix_1 (from_tty, output_radix_1);
c906108c
SS
2078}
2079
2080static void
fba45db2 2081set_output_radix_1 (int from_tty, unsigned radix)
c906108c
SS
2082{
2083 /* Validate the radix and disallow ones that we aren't prepared to
581e13c1 2084 handle correctly, leaving the radix unchanged. */
c906108c
SS
2085 switch (radix)
2086 {
2087 case 16:
79a45b7d 2088 user_print_options.output_format = 'x'; /* hex */
c906108c
SS
2089 break;
2090 case 10:
79a45b7d 2091 user_print_options.output_format = 0; /* decimal */
c906108c
SS
2092 break;
2093 case 8:
79a45b7d 2094 user_print_options.output_format = 'o'; /* octal */
c906108c
SS
2095 break;
2096 default:
09e6485f 2097 output_radix_1 = output_radix;
3e43a32a
MS
2098 error (_("Unsupported output radix ``decimal %u''; "
2099 "output radix unchanged."),
c906108c
SS
2100 radix);
2101 }
09e6485f 2102 output_radix_1 = output_radix = radix;
c906108c
SS
2103 if (from_tty)
2104 {
3e43a32a
MS
2105 printf_filtered (_("Output radix now set to "
2106 "decimal %u, hex %x, octal %o.\n"),
c906108c
SS
2107 radix, radix, radix);
2108 }
2109}
2110
2111/* Set both the input and output radix at once. Try to set the output radix
2112 first, since it has the most restrictive range. An radix that is valid as
2113 an output radix is also valid as an input radix.
2114
2115 It may be useful to have an unusual input radix. If the user wishes to
2116 set an input radix that is not valid as an output radix, he needs to use
581e13c1 2117 the 'set input-radix' command. */
c906108c
SS
2118
2119static void
fba45db2 2120set_radix (char *arg, int from_tty)
c906108c
SS
2121{
2122 unsigned radix;
2123
bb518678 2124 radix = (arg == NULL) ? 10 : parse_and_eval_long (arg);
c906108c
SS
2125 set_output_radix_1 (0, radix);
2126 set_input_radix_1 (0, radix);
2127 if (from_tty)
2128 {
3e43a32a
MS
2129 printf_filtered (_("Input and output radices now set to "
2130 "decimal %u, hex %x, octal %o.\n"),
c906108c
SS
2131 radix, radix, radix);
2132 }
2133}
2134
581e13c1 2135/* Show both the input and output radices. */
c906108c 2136
c906108c 2137static void
fba45db2 2138show_radix (char *arg, int from_tty)
c906108c
SS
2139{
2140 if (from_tty)
2141 {
2142 if (input_radix == output_radix)
2143 {
3e43a32a
MS
2144 printf_filtered (_("Input and output radices set to "
2145 "decimal %u, hex %x, octal %o.\n"),
c906108c
SS
2146 input_radix, input_radix, input_radix);
2147 }
2148 else
2149 {
3e43a32a
MS
2150 printf_filtered (_("Input radix set to decimal "
2151 "%u, hex %x, octal %o.\n"),
c906108c 2152 input_radix, input_radix, input_radix);
3e43a32a
MS
2153 printf_filtered (_("Output radix set to decimal "
2154 "%u, hex %x, octal %o.\n"),
c906108c
SS
2155 output_radix, output_radix, output_radix);
2156 }
2157 }
2158}
c906108c 2159\f
c5aa993b 2160
c906108c 2161static void
fba45db2 2162set_print (char *arg, int from_tty)
c906108c
SS
2163{
2164 printf_unfiltered (
c5aa993b 2165 "\"set print\" must be followed by the name of a print subcommand.\n");
c906108c
SS
2166 help_list (setprintlist, "set print ", -1, gdb_stdout);
2167}
2168
c906108c 2169static void
fba45db2 2170show_print (char *args, int from_tty)
c906108c
SS
2171{
2172 cmd_show_list (showprintlist, from_tty, "");
2173}
2174\f
2175void
fba45db2 2176_initialize_valprint (void)
c906108c 2177{
c906108c 2178 add_prefix_cmd ("print", no_class, set_print,
1bedd215 2179 _("Generic command for setting how things print."),
c906108c 2180 &setprintlist, "set print ", 0, &setlist);
c5aa993b 2181 add_alias_cmd ("p", "print", no_class, 1, &setlist);
581e13c1 2182 /* Prefer set print to set prompt. */
c906108c
SS
2183 add_alias_cmd ("pr", "print", no_class, 1, &setlist);
2184
2185 add_prefix_cmd ("print", no_class, show_print,
1bedd215 2186 _("Generic command for showing print settings."),
c906108c 2187 &showprintlist, "show print ", 0, &showlist);
c5aa993b
JM
2188 add_alias_cmd ("p", "print", no_class, 1, &showlist);
2189 add_alias_cmd ("pr", "print", no_class, 1, &showlist);
c906108c 2190
79a45b7d
TT
2191 add_setshow_uinteger_cmd ("elements", no_class,
2192 &user_print_options.print_max, _("\
35096d9d
AC
2193Set limit on string chars or array elements to print."), _("\
2194Show limit on string chars or array elements to print."), _("\
2195\"set print elements 0\" causes there to be no limit."),
2196 NULL,
920d2a44 2197 show_print_max,
35096d9d 2198 &setprintlist, &showprintlist);
c906108c 2199
79a45b7d
TT
2200 add_setshow_boolean_cmd ("null-stop", no_class,
2201 &user_print_options.stop_print_at_null, _("\
5bf193a2
AC
2202Set printing of char arrays to stop at first null char."), _("\
2203Show printing of char arrays to stop at first null char."), NULL,
2204 NULL,
920d2a44 2205 show_stop_print_at_null,
5bf193a2 2206 &setprintlist, &showprintlist);
c906108c 2207
35096d9d 2208 add_setshow_uinteger_cmd ("repeats", no_class,
79a45b7d 2209 &user_print_options.repeat_count_threshold, _("\
35096d9d
AC
2210Set threshold for repeated print elements."), _("\
2211Show threshold for repeated print elements."), _("\
2212\"set print repeats 0\" causes all elements to be individually printed."),
2213 NULL,
920d2a44 2214 show_repeat_count_threshold,
35096d9d 2215 &setprintlist, &showprintlist);
c906108c 2216
79a45b7d
TT
2217 add_setshow_boolean_cmd ("pretty", class_support,
2218 &user_print_options.prettyprint_structs, _("\
5bf193a2
AC
2219Set prettyprinting of structures."), _("\
2220Show prettyprinting of structures."), NULL,
2221 NULL,
920d2a44 2222 show_prettyprint_structs,
5bf193a2
AC
2223 &setprintlist, &showprintlist);
2224
79a45b7d
TT
2225 add_setshow_boolean_cmd ("union", class_support,
2226 &user_print_options.unionprint, _("\
5bf193a2
AC
2227Set printing of unions interior to structures."), _("\
2228Show printing of unions interior to structures."), NULL,
2229 NULL,
920d2a44 2230 show_unionprint,
5bf193a2
AC
2231 &setprintlist, &showprintlist);
2232
79a45b7d
TT
2233 add_setshow_boolean_cmd ("array", class_support,
2234 &user_print_options.prettyprint_arrays, _("\
5bf193a2
AC
2235Set prettyprinting of arrays."), _("\
2236Show prettyprinting of arrays."), NULL,
2237 NULL,
920d2a44 2238 show_prettyprint_arrays,
5bf193a2
AC
2239 &setprintlist, &showprintlist);
2240
79a45b7d
TT
2241 add_setshow_boolean_cmd ("address", class_support,
2242 &user_print_options.addressprint, _("\
5bf193a2
AC
2243Set printing of addresses."), _("\
2244Show printing of addresses."), NULL,
2245 NULL,
920d2a44 2246 show_addressprint,
5bf193a2 2247 &setprintlist, &showprintlist);
c906108c 2248
1e8fb976
PA
2249 add_setshow_zuinteger_cmd ("input-radix", class_support, &input_radix_1,
2250 _("\
35096d9d
AC
2251Set default input radix for entering numbers."), _("\
2252Show default input radix for entering numbers."), NULL,
1e8fb976
PA
2253 set_input_radix,
2254 show_input_radix,
2255 &setlist, &showlist);
35096d9d 2256
1e8fb976
PA
2257 add_setshow_zuinteger_cmd ("output-radix", class_support, &output_radix_1,
2258 _("\
35096d9d
AC
2259Set default output radix for printing of values."), _("\
2260Show default output radix for printing of values."), NULL,
1e8fb976
PA
2261 set_output_radix,
2262 show_output_radix,
2263 &setlist, &showlist);
c906108c 2264
cb1a6d5f
AC
2265 /* The "set radix" and "show radix" commands are special in that
2266 they are like normal set and show commands but allow two normally
2267 independent variables to be either set or shown with a single
b66df561 2268 command. So the usual deprecated_add_set_cmd() and [deleted]
581e13c1 2269 add_show_from_set() commands aren't really appropriate. */
b66df561
AC
2270 /* FIXME: i18n: With the new add_setshow_integer command, that is no
2271 longer true - show can display anything. */
1a966eab
AC
2272 add_cmd ("radix", class_support, set_radix, _("\
2273Set default input and output number radices.\n\
c906108c 2274Use 'set input-radix' or 'set output-radix' to independently set each.\n\
1a966eab 2275Without an argument, sets both radices back to the default value of 10."),
c906108c 2276 &setlist);
1a966eab
AC
2277 add_cmd ("radix", class_support, show_radix, _("\
2278Show the default input and output number radices.\n\
2279Use 'show input-radix' or 'show output-radix' to independently show each."),
c906108c
SS
2280 &showlist);
2281
e79af960 2282 add_setshow_boolean_cmd ("array-indexes", class_support,
79a45b7d 2283 &user_print_options.print_array_indexes, _("\
e79af960
JB
2284Set printing of array indexes."), _("\
2285Show printing of array indexes"), NULL, NULL, show_print_array_indexes,
2286 &setprintlist, &showprintlist);
c906108c 2287}
This page took 1.414677 seconds and 4 git commands to generate.