Fetch lazy value before calling val_print
[deliverable/binutils-gdb.git] / gdb / valprint.c
CommitLineData
c906108c 1/* Print values for GDB, the GNU debugger.
5c1c87f0 2
61baf725 3 Copyright (C) 1986-2017 Free Software Foundation, Inc.
c906108c 4
c5aa993b 5 This file is part of GDB.
c906108c 6
c5aa993b
JM
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
c5aa993b 10 (at your option) any later version.
c906108c 11
c5aa993b
JM
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
c906108c 16
c5aa993b 17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
19
20#include "defs.h"
c906108c
SS
21#include "symtab.h"
22#include "gdbtypes.h"
23#include "value.h"
24#include "gdbcore.h"
25#include "gdbcmd.h"
26#include "target.h"
c906108c 27#include "language.h"
c906108c
SS
28#include "annotate.h"
29#include "valprint.h"
39424bef 30#include "floatformat.h"
d16aafd8 31#include "doublest.h"
7678ef8f 32#include "dfp.h"
6dddc817 33#include "extension.h"
0c3acc09 34#include "ada-lang.h"
3b2b8fea
TT
35#include "gdb_obstack.h"
36#include "charset.h"
3f2f83dd 37#include "typeprint.h"
3b2b8fea 38#include <ctype.h>
325fac50 39#include <algorithm>
c906108c 40
0d63ecda
KS
41/* Maximum number of wchars returned from wchar_iterate. */
42#define MAX_WCHARS 4
43
44/* A convenience macro to compute the size of a wchar_t buffer containing X
45 characters. */
46#define WCHAR_BUFLEN(X) ((X) * sizeof (gdb_wchar_t))
47
48/* Character buffer size saved while iterating over wchars. */
49#define WCHAR_BUFLEN_MAX WCHAR_BUFLEN (MAX_WCHARS)
50
51/* A structure to encapsulate state information from iterated
52 character conversions. */
53struct converted_character
54{
55 /* The number of characters converted. */
56 int num_chars;
57
58 /* The result of the conversion. See charset.h for more. */
59 enum wchar_iterate_result result;
60
61 /* The (saved) converted character(s). */
62 gdb_wchar_t chars[WCHAR_BUFLEN_MAX];
63
64 /* The first converted target byte. */
65 const gdb_byte *buf;
66
67 /* The number of bytes converted. */
68 size_t buflen;
69
70 /* How many times this character(s) is repeated. */
71 int repeat_count;
72};
73
74typedef struct converted_character converted_character_d;
75DEF_VEC_O (converted_character_d);
76
e7045703
DE
77/* Command lists for set/show print raw. */
78struct cmd_list_element *setprintrawlist;
79struct cmd_list_element *showprintrawlist;
0d63ecda 80
c906108c
SS
81/* Prototypes for local functions */
82
777ea8f1 83static int partial_memory_read (CORE_ADDR memaddr, gdb_byte *myaddr,
578d3588 84 int len, int *errptr);
917317f4 85
a14ed312 86static void show_print (char *, int);
c906108c 87
a14ed312 88static void set_print (char *, int);
c906108c 89
a14ed312 90static void set_radix (char *, int);
c906108c 91
a14ed312 92static void show_radix (char *, int);
c906108c 93
a14ed312 94static void set_input_radix (char *, int, struct cmd_list_element *);
c906108c 95
a14ed312 96static void set_input_radix_1 (int, unsigned);
c906108c 97
a14ed312 98static void set_output_radix (char *, int, struct cmd_list_element *);
c906108c 99
a14ed312 100static void set_output_radix_1 (int, unsigned);
c906108c 101
81516450
DE
102static void val_print_type_code_flags (struct type *type,
103 const gdb_byte *valaddr,
104 struct ui_file *stream);
105
a14ed312 106void _initialize_valprint (void);
c906108c 107
581e13c1 108#define PRINT_MAX_DEFAULT 200 /* Start print_max off at this value. */
79a45b7d
TT
109
110struct value_print_options user_print_options =
111{
2a998fc0
DE
112 Val_prettyformat_default, /* prettyformat */
113 0, /* prettyformat_arrays */
114 0, /* prettyformat_structs */
79a45b7d
TT
115 0, /* vtblprint */
116 1, /* unionprint */
117 1, /* addressprint */
118 0, /* objectprint */
119 PRINT_MAX_DEFAULT, /* print_max */
120 10, /* repeat_count_threshold */
121 0, /* output_format */
122 0, /* format */
123 0, /* stop_print_at_null */
79a45b7d
TT
124 0, /* print_array_indexes */
125 0, /* deref_ref */
126 1, /* static_field_print */
a6bac58e
TT
127 1, /* pascal_static_field_print */
128 0, /* raw */
9cb709b6
TT
129 0, /* summary */
130 1 /* symbol_print */
79a45b7d
TT
131};
132
133/* Initialize *OPTS to be a copy of the user print options. */
134void
135get_user_print_options (struct value_print_options *opts)
136{
137 *opts = user_print_options;
138}
139
140/* Initialize *OPTS to be a copy of the user print options, but with
2a998fc0 141 pretty-formatting disabled. */
79a45b7d 142void
2a998fc0 143get_no_prettyformat_print_options (struct value_print_options *opts)
79a45b7d
TT
144{
145 *opts = user_print_options;
2a998fc0 146 opts->prettyformat = Val_no_prettyformat;
79a45b7d
TT
147}
148
149/* Initialize *OPTS to be a copy of the user print options, but using
150 FORMAT as the formatting option. */
151void
152get_formatted_print_options (struct value_print_options *opts,
153 char format)
154{
155 *opts = user_print_options;
156 opts->format = format;
157}
158
920d2a44
AC
159static void
160show_print_max (struct ui_file *file, int from_tty,
161 struct cmd_list_element *c, const char *value)
162{
3e43a32a
MS
163 fprintf_filtered (file,
164 _("Limit on string chars or array "
165 "elements to print is %s.\n"),
920d2a44
AC
166 value);
167}
168
c906108c
SS
169
170/* Default input and output radixes, and output format letter. */
171
172unsigned input_radix = 10;
920d2a44
AC
173static void
174show_input_radix (struct ui_file *file, int from_tty,
175 struct cmd_list_element *c, const char *value)
176{
3e43a32a
MS
177 fprintf_filtered (file,
178 _("Default input radix for entering numbers is %s.\n"),
920d2a44
AC
179 value);
180}
181
c906108c 182unsigned output_radix = 10;
920d2a44
AC
183static void
184show_output_radix (struct ui_file *file, int from_tty,
185 struct cmd_list_element *c, const char *value)
186{
3e43a32a
MS
187 fprintf_filtered (file,
188 _("Default output radix for printing of values is %s.\n"),
920d2a44
AC
189 value);
190}
c906108c 191
e79af960
JB
192/* By default we print arrays without printing the index of each element in
193 the array. This behavior can be changed by setting PRINT_ARRAY_INDEXES. */
194
e79af960
JB
195static void
196show_print_array_indexes (struct ui_file *file, int from_tty,
197 struct cmd_list_element *c, const char *value)
198{
199 fprintf_filtered (file, _("Printing of array indexes is %s.\n"), value);
200}
201
c906108c
SS
202/* Print repeat counts if there are more than this many repetitions of an
203 element in an array. Referenced by the low level language dependent
581e13c1 204 print routines. */
c906108c 205
920d2a44
AC
206static void
207show_repeat_count_threshold (struct ui_file *file, int from_tty,
208 struct cmd_list_element *c, const char *value)
209{
210 fprintf_filtered (file, _("Threshold for repeated print elements is %s.\n"),
211 value);
212}
c906108c 213
581e13c1 214/* If nonzero, stops printing of char arrays at first null. */
c906108c 215
920d2a44
AC
216static void
217show_stop_print_at_null (struct ui_file *file, int from_tty,
218 struct cmd_list_element *c, const char *value)
219{
3e43a32a
MS
220 fprintf_filtered (file,
221 _("Printing of char arrays to stop "
222 "at first null char is %s.\n"),
920d2a44
AC
223 value);
224}
c906108c 225
581e13c1 226/* Controls pretty printing of structures. */
c906108c 227
920d2a44 228static void
2a998fc0 229show_prettyformat_structs (struct ui_file *file, int from_tty,
920d2a44
AC
230 struct cmd_list_element *c, const char *value)
231{
2a998fc0 232 fprintf_filtered (file, _("Pretty formatting of structures is %s.\n"), value);
920d2a44 233}
c906108c
SS
234
235/* Controls pretty printing of arrays. */
236
920d2a44 237static void
2a998fc0 238show_prettyformat_arrays (struct ui_file *file, int from_tty,
920d2a44
AC
239 struct cmd_list_element *c, const char *value)
240{
2a998fc0 241 fprintf_filtered (file, _("Pretty formatting of arrays is %s.\n"), value);
920d2a44 242}
c906108c
SS
243
244/* If nonzero, causes unions inside structures or other unions to be
581e13c1 245 printed. */
c906108c 246
920d2a44
AC
247static void
248show_unionprint (struct ui_file *file, int from_tty,
249 struct cmd_list_element *c, const char *value)
250{
3e43a32a
MS
251 fprintf_filtered (file,
252 _("Printing of unions interior to structures is %s.\n"),
920d2a44
AC
253 value);
254}
c906108c 255
581e13c1 256/* If nonzero, causes machine addresses to be printed in certain contexts. */
c906108c 257
920d2a44
AC
258static void
259show_addressprint (struct ui_file *file, int from_tty,
260 struct cmd_list_element *c, const char *value)
261{
262 fprintf_filtered (file, _("Printing of addresses is %s.\n"), value);
263}
9cb709b6
TT
264
265static void
266show_symbol_print (struct ui_file *file, int from_tty,
267 struct cmd_list_element *c, const char *value)
268{
269 fprintf_filtered (file,
270 _("Printing of symbols when printing pointers is %s.\n"),
271 value);
272}
273
c906108c 274\f
c5aa993b 275
a6bac58e
TT
276/* A helper function for val_print. When printing in "summary" mode,
277 we want to print scalar arguments, but not aggregate arguments.
278 This function distinguishes between the two. */
279
6211c335
YQ
280int
281val_print_scalar_type_p (struct type *type)
a6bac58e 282{
f168693b 283 type = check_typedef (type);
a6bac58e
TT
284 while (TYPE_CODE (type) == TYPE_CODE_REF)
285 {
286 type = TYPE_TARGET_TYPE (type);
f168693b 287 type = check_typedef (type);
a6bac58e
TT
288 }
289 switch (TYPE_CODE (type))
290 {
291 case TYPE_CODE_ARRAY:
292 case TYPE_CODE_STRUCT:
293 case TYPE_CODE_UNION:
294 case TYPE_CODE_SET:
295 case TYPE_CODE_STRING:
a6bac58e
TT
296 return 0;
297 default:
298 return 1;
299 }
300}
301
a72c8f6a 302/* See its definition in value.h. */
0e03807e 303
a72c8f6a 304int
0e03807e
TT
305valprint_check_validity (struct ui_file *stream,
306 struct type *type,
6b850546 307 LONGEST embedded_offset,
0e03807e
TT
308 const struct value *val)
309{
f168693b 310 type = check_typedef (type);
0e03807e 311
3f2f83dd
KB
312 if (type_not_associated (type))
313 {
314 val_print_not_associated (stream);
315 return 0;
316 }
317
318 if (type_not_allocated (type))
319 {
320 val_print_not_allocated (stream);
321 return 0;
322 }
323
0e03807e
TT
324 if (TYPE_CODE (type) != TYPE_CODE_UNION
325 && TYPE_CODE (type) != TYPE_CODE_STRUCT
326 && TYPE_CODE (type) != TYPE_CODE_ARRAY)
327 {
9a0dc9e3
PA
328 if (value_bits_any_optimized_out (val,
329 TARGET_CHAR_BIT * embedded_offset,
330 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
0e03807e 331 {
901461f8 332 val_print_optimized_out (val, stream);
0e03807e
TT
333 return 0;
334 }
8cf6f0b1 335
4e07d55f 336 if (value_bits_synthetic_pointer (val, TARGET_CHAR_BIT * embedded_offset,
8cf6f0b1
TT
337 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
338 {
3326303b
MG
339 const int is_ref = TYPE_CODE (type) == TYPE_CODE_REF;
340 int ref_is_addressable = 0;
341
342 if (is_ref)
343 {
344 const struct value *deref_val = coerce_ref_if_computed (val);
345
346 if (deref_val != NULL)
347 ref_is_addressable = value_lval_const (deref_val) == lval_memory;
348 }
349
350 if (!is_ref || !ref_is_addressable)
351 fputs_filtered (_("<synthetic pointer>"), stream);
352
353 /* C++ references should be valid even if they're synthetic. */
354 return is_ref;
8cf6f0b1 355 }
4e07d55f
PA
356
357 if (!value_bytes_available (val, embedded_offset, TYPE_LENGTH (type)))
358 {
359 val_print_unavailable (stream);
360 return 0;
361 }
0e03807e
TT
362 }
363
364 return 1;
365}
366
585fdaa1 367void
901461f8 368val_print_optimized_out (const struct value *val, struct ui_file *stream)
585fdaa1 369{
901461f8 370 if (val != NULL && value_lval_const (val) == lval_register)
782d47df 371 val_print_not_saved (stream);
901461f8
PA
372 else
373 fprintf_filtered (stream, _("<optimized out>"));
585fdaa1
PA
374}
375
782d47df
PA
376void
377val_print_not_saved (struct ui_file *stream)
378{
379 fprintf_filtered (stream, _("<not saved>"));
380}
381
4e07d55f
PA
382void
383val_print_unavailable (struct ui_file *stream)
384{
385 fprintf_filtered (stream, _("<unavailable>"));
386}
387
8af8e3bc
PA
388void
389val_print_invalid_address (struct ui_file *stream)
390{
391 fprintf_filtered (stream, _("<invalid address>"));
392}
393
9f436164
SM
394/* Print a pointer based on the type of its target.
395
396 Arguments to this functions are roughly the same as those in
397 generic_val_print. A difference is that ADDRESS is the address to print,
398 with embedded_offset already added. ELTTYPE represents
399 the pointed type after check_typedef. */
400
401static void
402print_unpacked_pointer (struct type *type, struct type *elttype,
403 CORE_ADDR address, struct ui_file *stream,
404 const struct value_print_options *options)
405{
406 struct gdbarch *gdbarch = get_type_arch (type);
407
408 if (TYPE_CODE (elttype) == TYPE_CODE_FUNC)
409 {
410 /* Try to print what function it points to. */
411 print_function_pointer_address (options, gdbarch, address, stream);
412 return;
413 }
414
415 if (options->symbol_print)
416 print_address_demangle (options, gdbarch, address, stream, demangle);
417 else if (options->addressprint)
418 fputs_filtered (paddress (gdbarch, address), stream);
419}
420
557dbe8a
SM
421/* generic_val_print helper for TYPE_CODE_ARRAY. */
422
423static void
e8b24d9f 424generic_val_print_array (struct type *type,
00272ec4
TT
425 int embedded_offset, CORE_ADDR address,
426 struct ui_file *stream, int recurse,
e8b24d9f 427 struct value *original_value,
00272ec4
TT
428 const struct value_print_options *options,
429 const struct
430 generic_val_print_decorations *decorations)
557dbe8a
SM
431{
432 struct type *unresolved_elttype = TYPE_TARGET_TYPE (type);
433 struct type *elttype = check_typedef (unresolved_elttype);
434
435 if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (unresolved_elttype) > 0)
436 {
437 LONGEST low_bound, high_bound;
438
439 if (!get_array_bounds (type, &low_bound, &high_bound))
440 error (_("Could not determine the array high bound"));
441
442 if (options->prettyformat_arrays)
443 {
444 print_spaces_filtered (2 + 2 * recurse, stream);
445 }
446
00272ec4 447 fputs_filtered (decorations->array_start, stream);
e8b24d9f 448 val_print_array_elements (type, embedded_offset,
557dbe8a
SM
449 address, stream,
450 recurse, original_value, options, 0);
00272ec4 451 fputs_filtered (decorations->array_end, stream);
557dbe8a
SM
452 }
453 else
454 {
455 /* Array of unspecified length: treat like pointer to first elt. */
456 print_unpacked_pointer (type, elttype, address + embedded_offset, stream,
457 options);
458 }
459
460}
461
81eb921a
SM
462/* generic_val_print helper for TYPE_CODE_PTR. */
463
464static void
e8b24d9f 465generic_val_print_ptr (struct type *type,
81eb921a 466 int embedded_offset, struct ui_file *stream,
e8b24d9f 467 struct value *original_value,
81eb921a
SM
468 const struct value_print_options *options)
469{
3ae385af
SM
470 struct gdbarch *gdbarch = get_type_arch (type);
471 int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
472
81eb921a
SM
473 if (options->format && options->format != 's')
474 {
e8b24d9f 475 val_print_scalar_formatted (type, embedded_offset,
81eb921a
SM
476 original_value, options, 0, stream);
477 }
478 else
479 {
480 struct type *unresolved_elttype = TYPE_TARGET_TYPE(type);
481 struct type *elttype = check_typedef (unresolved_elttype);
e8b24d9f 482 const gdb_byte *valaddr = value_contents_for_printing (original_value);
3ae385af
SM
483 CORE_ADDR addr = unpack_pointer (type,
484 valaddr + embedded_offset * unit_size);
81eb921a
SM
485
486 print_unpacked_pointer (type, elttype, addr, stream, options);
487 }
488}
489
45000ea2
SM
490
491/* generic_val_print helper for TYPE_CODE_MEMBERPTR. */
492
493static void
e8b24d9f 494generic_val_print_memberptr (struct type *type,
45000ea2 495 int embedded_offset, struct ui_file *stream,
e8b24d9f 496 struct value *original_value,
45000ea2
SM
497 const struct value_print_options *options)
498{
e8b24d9f 499 val_print_scalar_formatted (type, embedded_offset,
45000ea2
SM
500 original_value, options, 0, stream);
501}
502
3326303b
MG
503/* Print '@' followed by the address contained in ADDRESS_BUFFER. */
504
505static void
506print_ref_address (struct type *type, const gdb_byte *address_buffer,
507 int embedded_offset, struct ui_file *stream)
508{
509 struct gdbarch *gdbarch = get_type_arch (type);
510
511 if (address_buffer != NULL)
512 {
513 CORE_ADDR address
514 = extract_typed_address (address_buffer + embedded_offset, type);
515
516 fprintf_filtered (stream, "@");
517 fputs_filtered (paddress (gdbarch, address), stream);
518 }
519 /* Else: we have a non-addressable value, such as a DW_AT_const_value. */
520}
521
522/* If VAL is addressable, return the value contents buffer of a value that
523 represents a pointer to VAL. Otherwise return NULL. */
524
525static const gdb_byte *
526get_value_addr_contents (struct value *deref_val)
527{
528 gdb_assert (deref_val != NULL);
529
530 if (value_lval_const (deref_val) == lval_memory)
531 return value_contents_for_printing_const (value_addr (deref_val));
532 else
533 {
534 /* We have a non-addressable value, such as a DW_AT_const_value. */
535 return NULL;
536 }
537}
538
fe43fede
SM
539/* generic_val_print helper for TYPE_CODE_REF. */
540
541static void
e8b24d9f 542generic_val_print_ref (struct type *type,
fe43fede 543 int embedded_offset, struct ui_file *stream, int recurse,
e8b24d9f 544 struct value *original_value,
fe43fede
SM
545 const struct value_print_options *options)
546{
fe43fede 547 struct type *elttype = check_typedef (TYPE_TARGET_TYPE (type));
3326303b
MG
548 struct value *deref_val = NULL;
549 const int value_is_synthetic
550 = value_bits_synthetic_pointer (original_value,
551 TARGET_CHAR_BIT * embedded_offset,
552 TARGET_CHAR_BIT * TYPE_LENGTH (type));
553 const int must_coerce_ref = ((options->addressprint && value_is_synthetic)
554 || options->deref_ref);
555 const int type_is_defined = TYPE_CODE (elttype) != TYPE_CODE_UNDEF;
e8b24d9f 556 const gdb_byte *valaddr = value_contents_for_printing (original_value);
3326303b
MG
557
558 if (must_coerce_ref && type_is_defined)
559 {
560 deref_val = coerce_ref_if_computed (original_value);
561
562 if (deref_val != NULL)
563 {
564 /* More complicated computed references are not supported. */
565 gdb_assert (embedded_offset == 0);
566 }
567 else
568 deref_val = value_at (TYPE_TARGET_TYPE (type),
569 unpack_pointer (type, valaddr + embedded_offset));
570 }
571 /* Else, original_value isn't a synthetic reference or we don't have to print
572 the reference's contents.
573
574 Notice that for references to TYPE_CODE_STRUCT, 'set print object on' will
575 cause original_value to be a not_lval instead of an lval_computed,
576 which will make value_bits_synthetic_pointer return false.
577 This happens because if options->objectprint is true, c_value_print will
578 overwrite original_value's contents with the result of coercing
579 the reference through value_addr, and then set its type back to
580 TYPE_CODE_REF. In that case we don't have to coerce the reference again;
581 we can simply treat it as non-synthetic and move on. */
fe43fede
SM
582
583 if (options->addressprint)
584 {
3326303b
MG
585 const gdb_byte *address = (value_is_synthetic && type_is_defined
586 ? get_value_addr_contents (deref_val)
587 : valaddr);
588
589 print_ref_address (type, address, embedded_offset, stream);
fe43fede 590
fe43fede
SM
591 if (options->deref_ref)
592 fputs_filtered (": ", stream);
593 }
3326303b 594
fe43fede
SM
595 if (options->deref_ref)
596 {
3326303b
MG
597 if (type_is_defined)
598 common_val_print (deref_val, stream, recurse, options,
599 current_language);
fe43fede
SM
600 else
601 fputs_filtered ("???", stream);
602 }
603}
604
81516450
DE
605/* Helper function for generic_val_print_enum.
606 This is also used to print enums in TYPE_CODE_FLAGS values. */
ef0bc0dd
SM
607
608static void
81516450
DE
609generic_val_print_enum_1 (struct type *type, LONGEST val,
610 struct ui_file *stream)
ef0bc0dd
SM
611{
612 unsigned int i;
613 unsigned int len;
ef0bc0dd 614
ef0bc0dd 615 len = TYPE_NFIELDS (type);
ef0bc0dd
SM
616 for (i = 0; i < len; i++)
617 {
618 QUIT;
619 if (val == TYPE_FIELD_ENUMVAL (type, i))
620 {
621 break;
622 }
623 }
624 if (i < len)
625 {
626 fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
627 }
628 else if (TYPE_FLAG_ENUM (type))
629 {
630 int first = 1;
631
632 /* We have a "flag" enum, so we try to decompose it into
633 pieces as appropriate. A flag enum has disjoint
634 constants by definition. */
635 fputs_filtered ("(", stream);
636 for (i = 0; i < len; ++i)
637 {
638 QUIT;
639
640 if ((val & TYPE_FIELD_ENUMVAL (type, i)) != 0)
641 {
642 if (!first)
643 fputs_filtered (" | ", stream);
644 first = 0;
645
646 val &= ~TYPE_FIELD_ENUMVAL (type, i);
647 fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
648 }
649 }
650
651 if (first || val != 0)
652 {
653 if (!first)
654 fputs_filtered (" | ", stream);
655 fputs_filtered ("unknown: ", stream);
656 print_longest (stream, 'd', 0, val);
657 }
658
659 fputs_filtered (")", stream);
660 }
661 else
662 print_longest (stream, 'd', 0, val);
663}
664
81516450
DE
665/* generic_val_print helper for TYPE_CODE_ENUM. */
666
667static void
e8b24d9f 668generic_val_print_enum (struct type *type,
81516450 669 int embedded_offset, struct ui_file *stream,
e8b24d9f 670 struct value *original_value,
81516450
DE
671 const struct value_print_options *options)
672{
673 LONGEST val;
674 struct gdbarch *gdbarch = get_type_arch (type);
675 int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
676
677 if (options->format)
678 {
e8b24d9f 679 val_print_scalar_formatted (type, embedded_offset,
81516450 680 original_value, options, 0, stream);
81516450 681 }
e8b24d9f
YQ
682 else
683 {
684 const gdb_byte *valaddr = value_contents_for_printing (original_value);
685
686 val = unpack_long (type, valaddr + embedded_offset * unit_size);
81516450 687
e8b24d9f
YQ
688 generic_val_print_enum_1 (type, val, stream);
689 }
81516450
DE
690}
691
d93880bd
SM
692/* generic_val_print helper for TYPE_CODE_FLAGS. */
693
694static void
e8b24d9f 695generic_val_print_flags (struct type *type,
d93880bd 696 int embedded_offset, struct ui_file *stream,
e8b24d9f 697 struct value *original_value,
d93880bd
SM
698 const struct value_print_options *options)
699
700{
701 if (options->format)
e8b24d9f 702 val_print_scalar_formatted (type, embedded_offset, original_value,
d93880bd
SM
703 options, 0, stream);
704 else
e8b24d9f
YQ
705 {
706 const gdb_byte *valaddr = value_contents_for_printing (original_value);
707
708 val_print_type_code_flags (type, valaddr + embedded_offset, stream);
709 }
d93880bd
SM
710}
711
4a8c372f
SM
712/* generic_val_print helper for TYPE_CODE_FUNC and TYPE_CODE_METHOD. */
713
714static void
e8b24d9f 715generic_val_print_func (struct type *type,
4a8c372f
SM
716 int embedded_offset, CORE_ADDR address,
717 struct ui_file *stream,
e8b24d9f 718 struct value *original_value,
4a8c372f
SM
719 const struct value_print_options *options)
720{
721 struct gdbarch *gdbarch = get_type_arch (type);
722
723 if (options->format)
724 {
e8b24d9f 725 val_print_scalar_formatted (type, embedded_offset,
4a8c372f
SM
726 original_value, options, 0, stream);
727 }
728 else
729 {
730 /* FIXME, we should consider, at least for ANSI C language,
731 eliminating the distinction made between FUNCs and POINTERs
732 to FUNCs. */
733 fprintf_filtered (stream, "{");
734 type_print (type, "", stream, -1);
735 fprintf_filtered (stream, "} ");
736 /* Try to print what function it points to, and its address. */
737 print_address_demangle (options, gdbarch, address, stream, demangle);
738 }
739}
740
e5bead4b
SM
741/* generic_val_print helper for TYPE_CODE_BOOL. */
742
743static void
e8b24d9f 744generic_val_print_bool (struct type *type,
e5bead4b 745 int embedded_offset, struct ui_file *stream,
e8b24d9f 746 struct value *original_value,
e5bead4b
SM
747 const struct value_print_options *options,
748 const struct generic_val_print_decorations *decorations)
749{
750 LONGEST val;
3ae385af
SM
751 struct gdbarch *gdbarch = get_type_arch (type);
752 int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
e5bead4b
SM
753
754 if (options->format || options->output_format)
755 {
756 struct value_print_options opts = *options;
757 opts.format = (options->format ? options->format
758 : options->output_format);
e8b24d9f 759 val_print_scalar_formatted (type, embedded_offset,
e5bead4b
SM
760 original_value, &opts, 0, stream);
761 }
762 else
763 {
e8b24d9f
YQ
764 const gdb_byte *valaddr = value_contents_for_printing (original_value);
765
3ae385af 766 val = unpack_long (type, valaddr + embedded_offset * unit_size);
e5bead4b
SM
767 if (val == 0)
768 fputs_filtered (decorations->false_name, stream);
769 else if (val == 1)
770 fputs_filtered (decorations->true_name, stream);
771 else
772 print_longest (stream, 'd', 0, val);
773 }
774}
775
b21b6342
SM
776/* generic_val_print helper for TYPE_CODE_INT. */
777
778static void
e8b24d9f 779generic_val_print_int (struct type *type,
b21b6342 780 int embedded_offset, struct ui_file *stream,
e8b24d9f 781 struct value *original_value,
b21b6342
SM
782 const struct value_print_options *options)
783{
3ae385af
SM
784 struct gdbarch *gdbarch = get_type_arch (type);
785 int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
786
b21b6342
SM
787 if (options->format || options->output_format)
788 {
789 struct value_print_options opts = *options;
790
791 opts.format = (options->format ? options->format
792 : options->output_format);
e8b24d9f 793 val_print_scalar_formatted (type, embedded_offset,
b21b6342
SM
794 original_value, &opts, 0, stream);
795 }
796 else
e8b24d9f
YQ
797 {
798 const gdb_byte *valaddr = value_contents_for_printing (original_value);
799
800 val_print_type_code_int (type, valaddr + embedded_offset * unit_size,
801 stream);
802 }
b21b6342
SM
803}
804
385f5aff
SM
805/* generic_val_print helper for TYPE_CODE_CHAR. */
806
807static void
808generic_val_print_char (struct type *type, struct type *unresolved_type,
e8b24d9f 809 int embedded_offset,
385f5aff 810 struct ui_file *stream,
e8b24d9f 811 struct value *original_value,
385f5aff
SM
812 const struct value_print_options *options)
813{
814 LONGEST val;
3ae385af
SM
815 struct gdbarch *gdbarch = get_type_arch (type);
816 int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
385f5aff
SM
817
818 if (options->format || options->output_format)
819 {
820 struct value_print_options opts = *options;
821
822 opts.format = (options->format ? options->format
823 : options->output_format);
e8b24d9f 824 val_print_scalar_formatted (type, embedded_offset,
385f5aff
SM
825 original_value, &opts, 0, stream);
826 }
827 else
828 {
e8b24d9f
YQ
829 const gdb_byte *valaddr = value_contents_for_printing (original_value);
830
3ae385af 831 val = unpack_long (type, valaddr + embedded_offset * unit_size);
385f5aff
SM
832 if (TYPE_UNSIGNED (type))
833 fprintf_filtered (stream, "%u", (unsigned int) val);
834 else
835 fprintf_filtered (stream, "%d", (int) val);
836 fputs_filtered (" ", stream);
837 LA_PRINT_CHAR (val, unresolved_type, stream);
838 }
839}
840
7784724b
SM
841/* generic_val_print helper for TYPE_CODE_FLT. */
842
843static void
e8b24d9f 844generic_val_print_float (struct type *type,
7784724b 845 int embedded_offset, struct ui_file *stream,
e8b24d9f 846 struct value *original_value,
7784724b
SM
847 const struct value_print_options *options)
848{
3ae385af
SM
849 struct gdbarch *gdbarch = get_type_arch (type);
850 int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
851
7784724b
SM
852 if (options->format)
853 {
e8b24d9f 854 val_print_scalar_formatted (type, embedded_offset,
7784724b
SM
855 original_value, options, 0, stream);
856 }
857 else
858 {
e8b24d9f
YQ
859 const gdb_byte *valaddr = value_contents_for_printing (original_value);
860
3ae385af 861 print_floating (valaddr + embedded_offset * unit_size, type, stream);
7784724b
SM
862 }
863}
864
9550ae5e
SM
865/* generic_val_print helper for TYPE_CODE_DECFLOAT. */
866
867static void
e8b24d9f 868generic_val_print_decfloat (struct type *type,
9550ae5e 869 int embedded_offset, struct ui_file *stream,
e8b24d9f 870 struct value *original_value,
9550ae5e
SM
871 const struct value_print_options *options)
872{
3ae385af
SM
873 struct gdbarch *gdbarch = get_type_arch (type);
874 int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
875
9550ae5e 876 if (options->format)
e8b24d9f 877 val_print_scalar_formatted (type, embedded_offset, original_value,
9550ae5e
SM
878 options, 0, stream);
879 else
e8b24d9f
YQ
880 {
881 const gdb_byte *valaddr = value_contents_for_printing (original_value);
882
883 print_decimal_floating (valaddr + embedded_offset * unit_size, type,
884 stream);
885 }
9550ae5e
SM
886}
887
0c87c0bf
SM
888/* generic_val_print helper for TYPE_CODE_COMPLEX. */
889
890static void
e8b24d9f 891generic_val_print_complex (struct type *type,
0c87c0bf 892 int embedded_offset, struct ui_file *stream,
e8b24d9f 893 struct value *original_value,
0c87c0bf
SM
894 const struct value_print_options *options,
895 const struct generic_val_print_decorations
896 *decorations)
897{
3ae385af
SM
898 struct gdbarch *gdbarch = get_type_arch (type);
899 int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
e8b24d9f 900 const gdb_byte *valaddr = value_contents_for_printing (original_value);
3ae385af 901
0c87c0bf
SM
902 fprintf_filtered (stream, "%s", decorations->complex_prefix);
903 if (options->format)
e8b24d9f 904 val_print_scalar_formatted (TYPE_TARGET_TYPE (type),
0c87c0bf
SM
905 embedded_offset, original_value, options, 0,
906 stream);
907 else
3ae385af
SM
908 print_floating (valaddr + embedded_offset * unit_size,
909 TYPE_TARGET_TYPE (type), stream);
0c87c0bf
SM
910 fprintf_filtered (stream, "%s", decorations->complex_infix);
911 if (options->format)
e8b24d9f 912 val_print_scalar_formatted (TYPE_TARGET_TYPE (type),
0c87c0bf 913 embedded_offset
3ae385af 914 + type_length_units (TYPE_TARGET_TYPE (type)),
0c87c0bf
SM
915 original_value, options, 0, stream);
916 else
3ae385af 917 print_floating (valaddr + embedded_offset * unit_size
0c87c0bf
SM
918 + TYPE_LENGTH (TYPE_TARGET_TYPE (type)),
919 TYPE_TARGET_TYPE (type), stream);
920 fprintf_filtered (stream, "%s", decorations->complex_suffix);
921}
922
e88acd96
TT
923/* A generic val_print that is suitable for use by language
924 implementations of the la_val_print method. This function can
925 handle most type codes, though not all, notably exception
926 TYPE_CODE_UNION and TYPE_CODE_STRUCT, which must be implemented by
927 the caller.
928
929 Most arguments are as to val_print.
930
931 The additional DECORATIONS argument can be used to customize the
932 output in some small, language-specific ways. */
933
934void
e8b24d9f 935generic_val_print (struct type *type,
e88acd96
TT
936 int embedded_offset, CORE_ADDR address,
937 struct ui_file *stream, int recurse,
e8b24d9f 938 struct value *original_value,
e88acd96
TT
939 const struct value_print_options *options,
940 const struct generic_val_print_decorations *decorations)
941{
e88acd96 942 struct type *unresolved_type = type;
e88acd96 943
f168693b 944 type = check_typedef (type);
e88acd96
TT
945 switch (TYPE_CODE (type))
946 {
947 case TYPE_CODE_ARRAY:
e8b24d9f 948 generic_val_print_array (type, embedded_offset, address, stream,
00272ec4 949 recurse, original_value, options, decorations);
9f436164 950 break;
e88acd96
TT
951
952 case TYPE_CODE_MEMBERPTR:
e8b24d9f 953 generic_val_print_memberptr (type, embedded_offset, stream,
45000ea2 954 original_value, options);
e88acd96
TT
955 break;
956
957 case TYPE_CODE_PTR:
e8b24d9f 958 generic_val_print_ptr (type, embedded_offset, stream,
81eb921a 959 original_value, options);
e88acd96
TT
960 break;
961
962 case TYPE_CODE_REF:
e8b24d9f 963 generic_val_print_ref (type, embedded_offset, stream, recurse,
fe43fede 964 original_value, options);
e88acd96
TT
965 break;
966
967 case TYPE_CODE_ENUM:
e8b24d9f 968 generic_val_print_enum (type, embedded_offset, stream,
ef0bc0dd 969 original_value, options);
e88acd96
TT
970 break;
971
972 case TYPE_CODE_FLAGS:
e8b24d9f 973 generic_val_print_flags (type, embedded_offset, stream,
d93880bd 974 original_value, options);
e88acd96
TT
975 break;
976
977 case TYPE_CODE_FUNC:
978 case TYPE_CODE_METHOD:
e8b24d9f 979 generic_val_print_func (type, embedded_offset, address, stream,
4a8c372f 980 original_value, options);
e88acd96
TT
981 break;
982
983 case TYPE_CODE_BOOL:
e8b24d9f 984 generic_val_print_bool (type, embedded_offset, stream,
e5bead4b 985 original_value, options, decorations);
e88acd96
TT
986 break;
987
988 case TYPE_CODE_RANGE:
0c9c3474 989 /* FIXME: create_static_range_type does not set the unsigned bit in a
e88acd96
TT
990 range type (I think it probably should copy it from the
991 target type), so we won't print values which are too large to
992 fit in a signed integer correctly. */
993 /* FIXME: Doesn't handle ranges of enums correctly. (Can't just
994 print with the target type, though, because the size of our
995 type and the target type might differ). */
996
997 /* FALLTHROUGH */
998
999 case TYPE_CODE_INT:
e8b24d9f 1000 generic_val_print_int (type, embedded_offset, stream,
b21b6342 1001 original_value, options);
e88acd96
TT
1002 break;
1003
1004 case TYPE_CODE_CHAR:
e8b24d9f 1005 generic_val_print_char (type, unresolved_type, embedded_offset,
385f5aff 1006 stream, original_value, options);
e88acd96
TT
1007 break;
1008
1009 case TYPE_CODE_FLT:
e8b24d9f 1010 generic_val_print_float (type, embedded_offset, stream,
7784724b 1011 original_value, options);
e88acd96
TT
1012 break;
1013
1014 case TYPE_CODE_DECFLOAT:
e8b24d9f 1015 generic_val_print_decfloat (type, embedded_offset, stream,
9550ae5e 1016 original_value, options);
e88acd96
TT
1017 break;
1018
1019 case TYPE_CODE_VOID:
1020 fputs_filtered (decorations->void_name, stream);
1021 break;
1022
1023 case TYPE_CODE_ERROR:
1024 fprintf_filtered (stream, "%s", TYPE_ERROR_NAME (type));
1025 break;
1026
1027 case TYPE_CODE_UNDEF:
a9ff5f12
UW
1028 /* This happens (without TYPE_STUB set) on systems which don't use
1029 dbx xrefs (NO_DBX_XREFS in gcc) if a file has a "struct foo *bar"
1030 and no complete type for struct foo in that file. */
e88acd96
TT
1031 fprintf_filtered (stream, _("<incomplete type>"));
1032 break;
1033
1034 case TYPE_CODE_COMPLEX:
e8b24d9f 1035 generic_val_print_complex (type, embedded_offset, stream,
0c87c0bf 1036 original_value, options, decorations);
e88acd96
TT
1037 break;
1038
1039 case TYPE_CODE_UNION:
1040 case TYPE_CODE_STRUCT:
1041 case TYPE_CODE_METHODPTR:
1042 default:
1043 error (_("Unhandled type code %d in symbol table."),
1044 TYPE_CODE (type));
1045 }
1046 gdb_flush (stream);
1047}
1048
32b72a42 1049/* Print using the given LANGUAGE the data of type TYPE located at
e8b24d9f
YQ
1050 VAL's contents buffer + EMBEDDED_OFFSET (within GDB), which came
1051 from the inferior at address ADDRESS + EMBEDDED_OFFSET, onto
1052 stdio stream STREAM according to OPTIONS. VAL is the whole object
1053 that came from ADDRESS.
32b72a42
PA
1054
1055 The language printers will pass down an adjusted EMBEDDED_OFFSET to
1056 further helper subroutines as subfields of TYPE are printed. In
e8b24d9f 1057 such cases, VAL is passed down unadjusted, so
32b72a42
PA
1058 that VAL can be queried for metadata about the contents data being
1059 printed, using EMBEDDED_OFFSET as an offset into VAL's contents
1060 buffer. For example: "has this field been optimized out", or "I'm
1061 printing an object while inspecting a traceframe; has this
1062 particular piece of data been collected?".
1063
1064 RECURSE indicates the amount of indentation to supply before
1065 continuation lines; this amount is roughly twice the value of
35c0084b 1066 RECURSE. */
32b72a42 1067
35c0084b 1068void
e8b24d9f 1069val_print (struct type *type, LONGEST embedded_offset,
79a45b7d 1070 CORE_ADDR address, struct ui_file *stream, int recurse,
e8b24d9f 1071 struct value *val,
79a45b7d 1072 const struct value_print_options *options,
d8ca156b 1073 const struct language_defn *language)
c906108c 1074{
19ca80ba 1075 int ret = 0;
79a45b7d 1076 struct value_print_options local_opts = *options;
c906108c 1077 struct type *real_type = check_typedef (type);
79a45b7d 1078
2a998fc0
DE
1079 if (local_opts.prettyformat == Val_prettyformat_default)
1080 local_opts.prettyformat = (local_opts.prettyformat_structs
1081 ? Val_prettyformat : Val_no_prettyformat);
c5aa993b 1082
c906108c
SS
1083 QUIT;
1084
1085 /* Ensure that the type is complete and not just a stub. If the type is
1086 only a stub and we can't find and substitute its complete type, then
1087 print appropriate string and return. */
1088
74a9bb82 1089 if (TYPE_STUB (real_type))
c906108c 1090 {
0e03807e 1091 fprintf_filtered (stream, _("<incomplete type>"));
c906108c 1092 gdb_flush (stream);
35c0084b 1093 return;
c906108c 1094 }
c5aa993b 1095
0e03807e 1096 if (!valprint_check_validity (stream, real_type, embedded_offset, val))
35c0084b 1097 return;
0e03807e 1098
a6bac58e
TT
1099 if (!options->raw)
1100 {
668e1674 1101 ret = apply_ext_lang_val_pretty_printer (type, embedded_offset,
6dddc817
DE
1102 address, stream, recurse,
1103 val, options, language);
a6bac58e 1104 if (ret)
35c0084b 1105 return;
a6bac58e
TT
1106 }
1107
1108 /* Handle summary mode. If the value is a scalar, print it;
1109 otherwise, print an ellipsis. */
6211c335 1110 if (options->summary && !val_print_scalar_type_p (type))
a6bac58e
TT
1111 {
1112 fprintf_filtered (stream, "...");
35c0084b 1113 return;
a6bac58e
TT
1114 }
1115
492d29ea 1116 TRY
19ca80ba 1117 {
e8b24d9f 1118 language->la_val_print (type, embedded_offset, address,
d3eab38a
TT
1119 stream, recurse, val,
1120 &local_opts);
19ca80ba 1121 }
492d29ea
PA
1122 CATCH (except, RETURN_MASK_ERROR)
1123 {
1124 fprintf_filtered (stream, _("<error reading variable>"));
1125 }
1126 END_CATCH
c906108c
SS
1127}
1128
806048c6 1129/* Check whether the value VAL is printable. Return 1 if it is;
6501578c
YQ
1130 return 0 and print an appropriate error message to STREAM according to
1131 OPTIONS if it is not. */
c906108c 1132
806048c6 1133static int
6501578c
YQ
1134value_check_printable (struct value *val, struct ui_file *stream,
1135 const struct value_print_options *options)
c906108c
SS
1136{
1137 if (val == 0)
1138 {
806048c6 1139 fprintf_filtered (stream, _("<address of value unknown>"));
c906108c
SS
1140 return 0;
1141 }
806048c6 1142
0e03807e 1143 if (value_entirely_optimized_out (val))
c906108c 1144 {
6211c335 1145 if (options->summary && !val_print_scalar_type_p (value_type (val)))
6501578c
YQ
1146 fprintf_filtered (stream, "...");
1147 else
901461f8 1148 val_print_optimized_out (val, stream);
c906108c
SS
1149 return 0;
1150 }
806048c6 1151
eebc056c
AB
1152 if (value_entirely_unavailable (val))
1153 {
1154 if (options->summary && !val_print_scalar_type_p (value_type (val)))
1155 fprintf_filtered (stream, "...");
1156 else
1157 val_print_unavailable (stream);
1158 return 0;
1159 }
1160
bc3b79fd
TJB
1161 if (TYPE_CODE (value_type (val)) == TYPE_CODE_INTERNAL_FUNCTION)
1162 {
1163 fprintf_filtered (stream, _("<internal function %s>"),
1164 value_internal_function_name (val));
1165 return 0;
1166 }
1167
3f2f83dd
KB
1168 if (type_not_associated (value_type (val)))
1169 {
1170 val_print_not_associated (stream);
1171 return 0;
1172 }
1173
1174 if (type_not_allocated (value_type (val)))
1175 {
1176 val_print_not_allocated (stream);
1177 return 0;
1178 }
1179
806048c6
DJ
1180 return 1;
1181}
1182
d8ca156b 1183/* Print using the given LANGUAGE the value VAL onto stream STREAM according
79a45b7d 1184 to OPTIONS.
806048c6 1185
806048c6
DJ
1186 This is a preferable interface to val_print, above, because it uses
1187 GDB's value mechanism. */
1188
a1f5dd1b 1189void
79a45b7d
TT
1190common_val_print (struct value *val, struct ui_file *stream, int recurse,
1191 const struct value_print_options *options,
d8ca156b 1192 const struct language_defn *language)
806048c6 1193{
6501578c 1194 if (!value_check_printable (val, stream, options))
a1f5dd1b 1195 return;
806048c6 1196
0c3acc09
JB
1197 if (language->la_language == language_ada)
1198 /* The value might have a dynamic type, which would cause trouble
1199 below when trying to extract the value contents (since the value
1200 size is determined from the type size which is unknown). So
1201 get a fixed representation of our value. */
1202 val = ada_to_fixed_value (val);
1203
7d45f3df
YQ
1204 if (value_lazy (val))
1205 value_fetch_lazy (val);
1206
e8b24d9f 1207 val_print (value_type (val),
a1f5dd1b
TT
1208 value_embedded_offset (val), value_address (val),
1209 stream, recurse,
1210 val, options, language);
806048c6
DJ
1211}
1212
7348c5e1 1213/* Print on stream STREAM the value VAL according to OPTIONS. The value
8e069a98 1214 is printed using the current_language syntax. */
7348c5e1 1215
8e069a98 1216void
79a45b7d
TT
1217value_print (struct value *val, struct ui_file *stream,
1218 const struct value_print_options *options)
806048c6 1219{
6501578c 1220 if (!value_check_printable (val, stream, options))
8e069a98 1221 return;
806048c6 1222
a6bac58e
TT
1223 if (!options->raw)
1224 {
6dddc817
DE
1225 int r
1226 = apply_ext_lang_val_pretty_printer (value_type (val),
6dddc817
DE
1227 value_embedded_offset (val),
1228 value_address (val),
1229 stream, 0,
1230 val, options, current_language);
a109c7c1 1231
a6bac58e 1232 if (r)
8e069a98 1233 return;
a6bac58e
TT
1234 }
1235
8e069a98 1236 LA_VALUE_PRINT (val, stream, options);
c906108c
SS
1237}
1238
1239/* Called by various <lang>_val_print routines to print
1240 TYPE_CODE_INT's. TYPE is the type. VALADDR is the address of the
1241 value. STREAM is where to print the value. */
1242
1243void
fc1a4b47 1244val_print_type_code_int (struct type *type, const gdb_byte *valaddr,
fba45db2 1245 struct ui_file *stream)
c906108c 1246{
50810684 1247 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
d44e8473 1248
c906108c
SS
1249 if (TYPE_LENGTH (type) > sizeof (LONGEST))
1250 {
1251 LONGEST val;
1252
1253 if (TYPE_UNSIGNED (type)
1254 && extract_long_unsigned_integer (valaddr, TYPE_LENGTH (type),
e17a4113 1255 byte_order, &val))
c906108c
SS
1256 {
1257 print_longest (stream, 'u', 0, val);
1258 }
1259 else
1260 {
1261 /* Signed, or we couldn't turn an unsigned value into a
1262 LONGEST. For signed values, one could assume two's
1263 complement (a reasonable assumption, I think) and do
1264 better than this. */
1265 print_hex_chars (stream, (unsigned char *) valaddr,
d44e8473 1266 TYPE_LENGTH (type), byte_order);
c906108c
SS
1267 }
1268 }
1269 else
1270 {
c906108c
SS
1271 print_longest (stream, TYPE_UNSIGNED (type) ? 'u' : 'd', 0,
1272 unpack_long (type, valaddr));
c906108c
SS
1273 }
1274}
1275
81516450 1276static void
4f2aea11
MK
1277val_print_type_code_flags (struct type *type, const gdb_byte *valaddr,
1278 struct ui_file *stream)
1279{
befae759 1280 ULONGEST val = unpack_long (type, valaddr);
81516450
DE
1281 int field, nfields = TYPE_NFIELDS (type);
1282 struct gdbarch *gdbarch = get_type_arch (type);
1283 struct type *bool_type = builtin_type (gdbarch)->builtin_bool;
4f2aea11 1284
81516450
DE
1285 fputs_filtered ("[", stream);
1286 for (field = 0; field < nfields; field++)
4f2aea11 1287 {
81516450 1288 if (TYPE_FIELD_NAME (type, field)[0] != '\0')
4f2aea11 1289 {
81516450
DE
1290 struct type *field_type = TYPE_FIELD_TYPE (type, field);
1291
1292 if (field_type == bool_type
1293 /* We require boolean types here to be one bit wide. This is a
1294 problematic place to notify the user of an internal error
1295 though. Instead just fall through and print the field as an
1296 int. */
1297 && TYPE_FIELD_BITSIZE (type, field) == 1)
1298 {
1299 if (val & ((ULONGEST)1 << TYPE_FIELD_BITPOS (type, field)))
1300 fprintf_filtered (stream, " %s",
1301 TYPE_FIELD_NAME (type, field));
1302 }
4f2aea11 1303 else
81516450
DE
1304 {
1305 unsigned field_len = TYPE_FIELD_BITSIZE (type, field);
1306 ULONGEST field_val
1307 = val >> (TYPE_FIELD_BITPOS (type, field) - field_len + 1);
1308
1309 if (field_len < sizeof (ULONGEST) * TARGET_CHAR_BIT)
1310 field_val &= ((ULONGEST) 1 << field_len) - 1;
1311 fprintf_filtered (stream, " %s=",
1312 TYPE_FIELD_NAME (type, field));
1313 if (TYPE_CODE (field_type) == TYPE_CODE_ENUM)
1314 generic_val_print_enum_1 (field_type, field_val, stream);
1315 else
1316 print_longest (stream, 'd', 0, field_val);
1317 }
4f2aea11
MK
1318 }
1319 }
81516450 1320 fputs_filtered (" ]", stream);
19c37f24 1321}
ab2188aa
PA
1322
1323/* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
1324 according to OPTIONS and SIZE on STREAM. Format i is not supported
1325 at this level.
1326
1327 This is how the elements of an array or structure are printed
1328 with a format. */
ab2188aa
PA
1329
1330void
1331val_print_scalar_formatted (struct type *type,
e8b24d9f
YQ
1332 LONGEST embedded_offset,
1333 struct value *val,
ab2188aa
PA
1334 const struct value_print_options *options,
1335 int size,
1336 struct ui_file *stream)
1337{
3ae385af
SM
1338 struct gdbarch *arch = get_type_arch (type);
1339 int unit_size = gdbarch_addressable_memory_unit_size (arch);
1340
ab2188aa 1341 gdb_assert (val != NULL);
ab2188aa
PA
1342
1343 /* If we get here with a string format, try again without it. Go
1344 all the way back to the language printers, which may call us
1345 again. */
1346 if (options->format == 's')
1347 {
1348 struct value_print_options opts = *options;
1349 opts.format = 0;
1350 opts.deref_ref = 0;
e8b24d9f 1351 val_print (type, embedded_offset, 0, stream, 0, val, &opts,
ab2188aa
PA
1352 current_language);
1353 return;
1354 }
1355
e8b24d9f
YQ
1356 /* value_contents_for_printing fetches all VAL's contents. They are
1357 needed to check whether VAL is optimized-out or unavailable
1358 below. */
1359 const gdb_byte *valaddr = value_contents_for_printing (val);
1360
ab2188aa
PA
1361 /* A scalar object that does not have all bits available can't be
1362 printed, because all bits contribute to its representation. */
9a0dc9e3
PA
1363 if (value_bits_any_optimized_out (val,
1364 TARGET_CHAR_BIT * embedded_offset,
1365 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
901461f8 1366 val_print_optimized_out (val, stream);
4e07d55f
PA
1367 else if (!value_bytes_available (val, embedded_offset, TYPE_LENGTH (type)))
1368 val_print_unavailable (stream);
ab2188aa 1369 else
3ae385af 1370 print_scalar_formatted (valaddr + embedded_offset * unit_size, type,
ab2188aa 1371 options, size, stream);
4f2aea11
MK
1372}
1373
c906108c
SS
1374/* Print a number according to FORMAT which is one of d,u,x,o,b,h,w,g.
1375 The raison d'etre of this function is to consolidate printing of
581e13c1 1376 LONG_LONG's into this one function. The format chars b,h,w,g are
bb599908 1377 from print_scalar_formatted(). Numbers are printed using C
581e13c1 1378 format.
bb599908
PH
1379
1380 USE_C_FORMAT means to use C format in all cases. Without it,
1381 'o' and 'x' format do not include the standard C radix prefix
1382 (leading 0 or 0x).
1383
1384 Hilfinger/2004-09-09: USE_C_FORMAT was originally called USE_LOCAL
1385 and was intended to request formating according to the current
1386 language and would be used for most integers that GDB prints. The
1387 exceptional cases were things like protocols where the format of
1388 the integer is a protocol thing, not a user-visible thing). The
1389 parameter remains to preserve the information of what things might
1390 be printed with language-specific format, should we ever resurrect
581e13c1 1391 that capability. */
c906108c
SS
1392
1393void
bb599908 1394print_longest (struct ui_file *stream, int format, int use_c_format,
fba45db2 1395 LONGEST val_long)
c906108c 1396{
2bfb72ee
AC
1397 const char *val;
1398
c906108c
SS
1399 switch (format)
1400 {
1401 case 'd':
bb599908 1402 val = int_string (val_long, 10, 1, 0, 1); break;
c906108c 1403 case 'u':
bb599908 1404 val = int_string (val_long, 10, 0, 0, 1); break;
c906108c 1405 case 'x':
bb599908 1406 val = int_string (val_long, 16, 0, 0, use_c_format); break;
c906108c 1407 case 'b':
bb599908 1408 val = int_string (val_long, 16, 0, 2, 1); break;
c906108c 1409 case 'h':
bb599908 1410 val = int_string (val_long, 16, 0, 4, 1); break;
c906108c 1411 case 'w':
bb599908 1412 val = int_string (val_long, 16, 0, 8, 1); break;
c906108c 1413 case 'g':
bb599908 1414 val = int_string (val_long, 16, 0, 16, 1); break;
c906108c
SS
1415 break;
1416 case 'o':
bb599908 1417 val = int_string (val_long, 8, 0, 0, use_c_format); break;
c906108c 1418 default:
3e43a32a
MS
1419 internal_error (__FILE__, __LINE__,
1420 _("failed internal consistency check"));
bb599908 1421 }
2bfb72ee 1422 fputs_filtered (val, stream);
c906108c
SS
1423}
1424
c906108c
SS
1425/* This used to be a macro, but I don't think it is called often enough
1426 to merit such treatment. */
1427/* Convert a LONGEST to an int. This is used in contexts (e.g. number of
1428 arguments to a function, number in a value history, register number, etc.)
1429 where the value must not be larger than can fit in an int. */
1430
1431int
fba45db2 1432longest_to_int (LONGEST arg)
c906108c 1433{
581e13c1 1434 /* Let the compiler do the work. */
c906108c
SS
1435 int rtnval = (int) arg;
1436
581e13c1 1437 /* Check for overflows or underflows. */
c906108c
SS
1438 if (sizeof (LONGEST) > sizeof (int))
1439 {
1440 if (rtnval != arg)
1441 {
8a3fe4f8 1442 error (_("Value out of range."));
c906108c
SS
1443 }
1444 }
1445 return (rtnval);
1446}
1447
a73c86fb
AC
1448/* Print a floating point value of type TYPE (not always a
1449 TYPE_CODE_FLT), pointed to in GDB by VALADDR, on STREAM. */
c906108c
SS
1450
1451void
fc1a4b47 1452print_floating (const gdb_byte *valaddr, struct type *type,
c84141d6 1453 struct ui_file *stream)
c906108c
SS
1454{
1455 DOUBLEST doub;
1456 int inv;
a73c86fb 1457 const struct floatformat *fmt = NULL;
c906108c 1458 unsigned len = TYPE_LENGTH (type);
20389057 1459 enum float_kind kind;
c5aa993b 1460
a73c86fb
AC
1461 /* If it is a floating-point, check for obvious problems. */
1462 if (TYPE_CODE (type) == TYPE_CODE_FLT)
1463 fmt = floatformat_from_type (type);
20389057 1464 if (fmt != NULL)
39424bef 1465 {
20389057
DJ
1466 kind = floatformat_classify (fmt, valaddr);
1467 if (kind == float_nan)
1468 {
1469 if (floatformat_is_negative (fmt, valaddr))
1470 fprintf_filtered (stream, "-");
1471 fprintf_filtered (stream, "nan(");
1472 fputs_filtered ("0x", stream);
1473 fputs_filtered (floatformat_mantissa (fmt, valaddr), stream);
1474 fprintf_filtered (stream, ")");
1475 return;
1476 }
1477 else if (kind == float_infinite)
1478 {
1479 if (floatformat_is_negative (fmt, valaddr))
1480 fputs_filtered ("-", stream);
1481 fputs_filtered ("inf", stream);
1482 return;
1483 }
7355ddba 1484 }
c906108c 1485
a73c86fb
AC
1486 /* NOTE: cagney/2002-01-15: The TYPE passed into print_floating()
1487 isn't necessarily a TYPE_CODE_FLT. Consequently, unpack_double
1488 needs to be used as that takes care of any necessary type
1489 conversions. Such conversions are of course direct to DOUBLEST
1490 and disregard any possible target floating point limitations.
1491 For instance, a u64 would be converted and displayed exactly on a
1492 host with 80 bit DOUBLEST but with loss of information on a host
1493 with 64 bit DOUBLEST. */
c2f05ac9 1494
c906108c
SS
1495 doub = unpack_double (type, valaddr, &inv);
1496 if (inv)
1497 {
1498 fprintf_filtered (stream, "<invalid float value>");
1499 return;
1500 }
1501
39424bef
MK
1502 /* FIXME: kettenis/2001-01-20: The following code makes too much
1503 assumptions about the host and target floating point format. */
1504
a73c86fb 1505 /* NOTE: cagney/2002-02-03: Since the TYPE of what was passed in may
c41b8590 1506 not necessarily be a TYPE_CODE_FLT, the below ignores that and
a73c86fb
AC
1507 instead uses the type's length to determine the precision of the
1508 floating-point value being printed. */
c2f05ac9 1509
c906108c 1510 if (len < sizeof (double))
c5aa993b 1511 fprintf_filtered (stream, "%.9g", (double) doub);
c906108c 1512 else if (len == sizeof (double))
c5aa993b 1513 fprintf_filtered (stream, "%.17g", (double) doub);
c906108c
SS
1514 else
1515#ifdef PRINTF_HAS_LONG_DOUBLE
1516 fprintf_filtered (stream, "%.35Lg", doub);
1517#else
39424bef
MK
1518 /* This at least wins with values that are representable as
1519 doubles. */
c906108c
SS
1520 fprintf_filtered (stream, "%.17g", (double) doub);
1521#endif
1522}
1523
7678ef8f
TJB
1524void
1525print_decimal_floating (const gdb_byte *valaddr, struct type *type,
1526 struct ui_file *stream)
1527{
e17a4113 1528 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
7678ef8f
TJB
1529 char decstr[MAX_DECIMAL_STRING];
1530 unsigned len = TYPE_LENGTH (type);
1531
e17a4113 1532 decimal_to_string (valaddr, len, byte_order, decstr);
7678ef8f
TJB
1533 fputs_filtered (decstr, stream);
1534 return;
1535}
1536
c5aa993b 1537void
fc1a4b47 1538print_binary_chars (struct ui_file *stream, const gdb_byte *valaddr,
d44e8473 1539 unsigned len, enum bfd_endian byte_order)
c906108c
SS
1540{
1541
1542#define BITS_IN_BYTES 8
1543
fc1a4b47 1544 const gdb_byte *p;
745b8ca0 1545 unsigned int i;
c5aa993b 1546 int b;
c906108c
SS
1547
1548 /* Declared "int" so it will be signed.
581e13c1
MS
1549 This ensures that right shift will shift in zeros. */
1550
c5aa993b 1551 const int mask = 0x080;
c906108c
SS
1552
1553 /* FIXME: We should be not printing leading zeroes in most cases. */
1554
d44e8473 1555 if (byte_order == BFD_ENDIAN_BIG)
c906108c
SS
1556 {
1557 for (p = valaddr;
1558 p < valaddr + len;
1559 p++)
1560 {
c5aa993b 1561 /* Every byte has 8 binary characters; peel off
581e13c1
MS
1562 and print from the MSB end. */
1563
c5aa993b
JM
1564 for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
1565 {
1566 if (*p & (mask >> i))
1567 b = 1;
1568 else
1569 b = 0;
1570
1571 fprintf_filtered (stream, "%1d", b);
1572 }
c906108c
SS
1573 }
1574 }
1575 else
1576 {
1577 for (p = valaddr + len - 1;
1578 p >= valaddr;
1579 p--)
1580 {
c5aa993b
JM
1581 for (i = 0; i < (BITS_IN_BYTES * sizeof (*p)); i++)
1582 {
1583 if (*p & (mask >> i))
1584 b = 1;
1585 else
1586 b = 0;
1587
1588 fprintf_filtered (stream, "%1d", b);
1589 }
c906108c
SS
1590 }
1591 }
c906108c
SS
1592}
1593
1594/* VALADDR points to an integer of LEN bytes.
581e13c1
MS
1595 Print it in octal on stream or format it in buf. */
1596
c906108c 1597void
fc1a4b47 1598print_octal_chars (struct ui_file *stream, const gdb_byte *valaddr,
d44e8473 1599 unsigned len, enum bfd_endian byte_order)
c906108c 1600{
fc1a4b47 1601 const gdb_byte *p;
c906108c 1602 unsigned char octa1, octa2, octa3, carry;
c5aa993b
JM
1603 int cycle;
1604
c906108c
SS
1605 /* FIXME: We should be not printing leading zeroes in most cases. */
1606
1607
1608 /* Octal is 3 bits, which doesn't fit. Yuk. So we have to track
1609 * the extra bits, which cycle every three bytes:
1610 *
1611 * Byte side: 0 1 2 3
1612 * | | | |
1613 * bit number 123 456 78 | 9 012 345 6 | 78 901 234 | 567 890 12 |
1614 *
1615 * Octal side: 0 1 carry 3 4 carry ...
1616 *
1617 * Cycle number: 0 1 2
1618 *
1619 * But of course we are printing from the high side, so we have to
1620 * figure out where in the cycle we are so that we end up with no
1621 * left over bits at the end.
1622 */
1623#define BITS_IN_OCTAL 3
1624#define HIGH_ZERO 0340
1625#define LOW_ZERO 0016
1626#define CARRY_ZERO 0003
1627#define HIGH_ONE 0200
1628#define MID_ONE 0160
1629#define LOW_ONE 0016
1630#define CARRY_ONE 0001
1631#define HIGH_TWO 0300
1632#define MID_TWO 0070
1633#define LOW_TWO 0007
1634
1635 /* For 32 we start in cycle 2, with two bits and one bit carry;
581e13c1
MS
1636 for 64 in cycle in cycle 1, with one bit and a two bit carry. */
1637
c906108c
SS
1638 cycle = (len * BITS_IN_BYTES) % BITS_IN_OCTAL;
1639 carry = 0;
c5aa993b 1640
bb599908 1641 fputs_filtered ("0", stream);
d44e8473 1642 if (byte_order == BFD_ENDIAN_BIG)
c906108c
SS
1643 {
1644 for (p = valaddr;
1645 p < valaddr + len;
1646 p++)
1647 {
c5aa993b
JM
1648 switch (cycle)
1649 {
1650 case 0:
581e13c1
MS
1651 /* No carry in, carry out two bits. */
1652
c5aa993b
JM
1653 octa1 = (HIGH_ZERO & *p) >> 5;
1654 octa2 = (LOW_ZERO & *p) >> 2;
1655 carry = (CARRY_ZERO & *p);
1656 fprintf_filtered (stream, "%o", octa1);
1657 fprintf_filtered (stream, "%o", octa2);
1658 break;
1659
1660 case 1:
581e13c1
MS
1661 /* Carry in two bits, carry out one bit. */
1662
c5aa993b
JM
1663 octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
1664 octa2 = (MID_ONE & *p) >> 4;
1665 octa3 = (LOW_ONE & *p) >> 1;
1666 carry = (CARRY_ONE & *p);
1667 fprintf_filtered (stream, "%o", octa1);
1668 fprintf_filtered (stream, "%o", octa2);
1669 fprintf_filtered (stream, "%o", octa3);
1670 break;
1671
1672 case 2:
581e13c1
MS
1673 /* Carry in one bit, no carry out. */
1674
c5aa993b
JM
1675 octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
1676 octa2 = (MID_TWO & *p) >> 3;
1677 octa3 = (LOW_TWO & *p);
1678 carry = 0;
1679 fprintf_filtered (stream, "%o", octa1);
1680 fprintf_filtered (stream, "%o", octa2);
1681 fprintf_filtered (stream, "%o", octa3);
1682 break;
1683
1684 default:
8a3fe4f8 1685 error (_("Internal error in octal conversion;"));
c5aa993b
JM
1686 }
1687
1688 cycle++;
1689 cycle = cycle % BITS_IN_OCTAL;
c906108c
SS
1690 }
1691 }
1692 else
1693 {
1694 for (p = valaddr + len - 1;
1695 p >= valaddr;
1696 p--)
1697 {
c5aa993b
JM
1698 switch (cycle)
1699 {
1700 case 0:
1701 /* Carry out, no carry in */
581e13c1 1702
c5aa993b
JM
1703 octa1 = (HIGH_ZERO & *p) >> 5;
1704 octa2 = (LOW_ZERO & *p) >> 2;
1705 carry = (CARRY_ZERO & *p);
1706 fprintf_filtered (stream, "%o", octa1);
1707 fprintf_filtered (stream, "%o", octa2);
1708 break;
1709
1710 case 1:
1711 /* Carry in, carry out */
581e13c1 1712
c5aa993b
JM
1713 octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
1714 octa2 = (MID_ONE & *p) >> 4;
1715 octa3 = (LOW_ONE & *p) >> 1;
1716 carry = (CARRY_ONE & *p);
1717 fprintf_filtered (stream, "%o", octa1);
1718 fprintf_filtered (stream, "%o", octa2);
1719 fprintf_filtered (stream, "%o", octa3);
1720 break;
1721
1722 case 2:
1723 /* Carry in, no carry out */
581e13c1 1724
c5aa993b
JM
1725 octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
1726 octa2 = (MID_TWO & *p) >> 3;
1727 octa3 = (LOW_TWO & *p);
1728 carry = 0;
1729 fprintf_filtered (stream, "%o", octa1);
1730 fprintf_filtered (stream, "%o", octa2);
1731 fprintf_filtered (stream, "%o", octa3);
1732 break;
1733
1734 default:
8a3fe4f8 1735 error (_("Internal error in octal conversion;"));
c5aa993b
JM
1736 }
1737
1738 cycle++;
1739 cycle = cycle % BITS_IN_OCTAL;
c906108c
SS
1740 }
1741 }
1742
c906108c
SS
1743}
1744
1745/* VALADDR points to an integer of LEN bytes.
581e13c1
MS
1746 Print it in decimal on stream or format it in buf. */
1747
c906108c 1748void
fc1a4b47 1749print_decimal_chars (struct ui_file *stream, const gdb_byte *valaddr,
d44e8473 1750 unsigned len, enum bfd_endian byte_order)
c906108c
SS
1751{
1752#define TEN 10
c5aa993b 1753#define CARRY_OUT( x ) ((x) / TEN) /* extend char to int */
c906108c
SS
1754#define CARRY_LEFT( x ) ((x) % TEN)
1755#define SHIFT( x ) ((x) << 4)
c906108c
SS
1756#define LOW_NIBBLE( x ) ( (x) & 0x00F)
1757#define HIGH_NIBBLE( x ) (((x) & 0x0F0) >> 4)
1758
fc1a4b47 1759 const gdb_byte *p;
c906108c 1760 unsigned char *digits;
c5aa993b
JM
1761 int carry;
1762 int decimal_len;
1763 int i, j, decimal_digits;
1764 int dummy;
1765 int flip;
1766
c906108c 1767 /* Base-ten number is less than twice as many digits
581e13c1
MS
1768 as the base 16 number, which is 2 digits per byte. */
1769
c906108c 1770 decimal_len = len * 2 * 2;
224c3ddb 1771 digits = (unsigned char *) xmalloc (decimal_len);
c906108c 1772
c5aa993b
JM
1773 for (i = 0; i < decimal_len; i++)
1774 {
c906108c 1775 digits[i] = 0;
c5aa993b 1776 }
c906108c 1777
c906108c
SS
1778 /* Ok, we have an unknown number of bytes of data to be printed in
1779 * decimal.
1780 *
1781 * Given a hex number (in nibbles) as XYZ, we start by taking X and
1782 * decemalizing it as "x1 x2" in two decimal nibbles. Then we multiply
1783 * the nibbles by 16, add Y and re-decimalize. Repeat with Z.
1784 *
1785 * The trick is that "digits" holds a base-10 number, but sometimes
581e13c1 1786 * the individual digits are > 10.
c906108c
SS
1787 *
1788 * Outer loop is per nibble (hex digit) of input, from MSD end to
1789 * LSD end.
1790 */
c5aa993b 1791 decimal_digits = 0; /* Number of decimal digits so far */
d44e8473 1792 p = (byte_order == BFD_ENDIAN_BIG) ? valaddr : valaddr + len - 1;
c906108c 1793 flip = 0;
d44e8473 1794 while ((byte_order == BFD_ENDIAN_BIG) ? (p < valaddr + len) : (p >= valaddr))
c5aa993b 1795 {
c906108c
SS
1796 /*
1797 * Multiply current base-ten number by 16 in place.
1798 * Each digit was between 0 and 9, now is between
1799 * 0 and 144.
1800 */
c5aa993b
JM
1801 for (j = 0; j < decimal_digits; j++)
1802 {
1803 digits[j] = SHIFT (digits[j]);
1804 }
1805
c906108c
SS
1806 /* Take the next nibble off the input and add it to what
1807 * we've got in the LSB position. Bottom 'digit' is now
1808 * between 0 and 159.
1809 *
1810 * "flip" is used to run this loop twice for each byte.
1811 */
c5aa993b
JM
1812 if (flip == 0)
1813 {
581e13c1
MS
1814 /* Take top nibble. */
1815
c5aa993b
JM
1816 digits[0] += HIGH_NIBBLE (*p);
1817 flip = 1;
1818 }
1819 else
1820 {
581e13c1
MS
1821 /* Take low nibble and bump our pointer "p". */
1822
c5aa993b 1823 digits[0] += LOW_NIBBLE (*p);
d44e8473
MD
1824 if (byte_order == BFD_ENDIAN_BIG)
1825 p++;
1826 else
1827 p--;
c5aa993b
JM
1828 flip = 0;
1829 }
c906108c
SS
1830
1831 /* Re-decimalize. We have to do this often enough
1832 * that we don't overflow, but once per nibble is
1833 * overkill. Easier this way, though. Note that the
1834 * carry is often larger than 10 (e.g. max initial
1835 * carry out of lowest nibble is 15, could bubble all
1836 * the way up greater than 10). So we have to do
1837 * the carrying beyond the last current digit.
1838 */
1839 carry = 0;
c5aa993b
JM
1840 for (j = 0; j < decimal_len - 1; j++)
1841 {
1842 digits[j] += carry;
1843
1844 /* "/" won't handle an unsigned char with
1845 * a value that if signed would be negative.
1846 * So extend to longword int via "dummy".
1847 */
1848 dummy = digits[j];
1849 carry = CARRY_OUT (dummy);
1850 digits[j] = CARRY_LEFT (dummy);
1851
1852 if (j >= decimal_digits && carry == 0)
1853 {
1854 /*
1855 * All higher digits are 0 and we
1856 * no longer have a carry.
1857 *
1858 * Note: "j" is 0-based, "decimal_digits" is
1859 * 1-based.
1860 */
1861 decimal_digits = j + 1;
1862 break;
1863 }
1864 }
1865 }
c906108c
SS
1866
1867 /* Ok, now "digits" is the decimal representation, with
581e13c1
MS
1868 the "decimal_digits" actual digits. Print! */
1869
c5aa993b
JM
1870 for (i = decimal_digits - 1; i >= 0; i--)
1871 {
1872 fprintf_filtered (stream, "%1d", digits[i]);
1873 }
b8c9b27d 1874 xfree (digits);
c906108c
SS
1875}
1876
1877/* VALADDR points to an integer of LEN bytes. Print it in hex on stream. */
1878
6b9acc27 1879void
fc1a4b47 1880print_hex_chars (struct ui_file *stream, const gdb_byte *valaddr,
d44e8473 1881 unsigned len, enum bfd_endian byte_order)
c906108c 1882{
fc1a4b47 1883 const gdb_byte *p;
c906108c
SS
1884
1885 /* FIXME: We should be not printing leading zeroes in most cases. */
1886
bb599908 1887 fputs_filtered ("0x", stream);
d44e8473 1888 if (byte_order == BFD_ENDIAN_BIG)
c906108c
SS
1889 {
1890 for (p = valaddr;
1891 p < valaddr + len;
1892 p++)
1893 {
1894 fprintf_filtered (stream, "%02x", *p);
1895 }
1896 }
1897 else
1898 {
1899 for (p = valaddr + len - 1;
1900 p >= valaddr;
1901 p--)
1902 {
1903 fprintf_filtered (stream, "%02x", *p);
1904 }
1905 }
c906108c
SS
1906}
1907
3e43a32a 1908/* VALADDR points to a char integer of LEN bytes.
581e13c1 1909 Print it out in appropriate language form on stream.
6b9acc27
JJ
1910 Omit any leading zero chars. */
1911
1912void
6c7a06a3
TT
1913print_char_chars (struct ui_file *stream, struct type *type,
1914 const gdb_byte *valaddr,
d44e8473 1915 unsigned len, enum bfd_endian byte_order)
6b9acc27 1916{
fc1a4b47 1917 const gdb_byte *p;
6b9acc27 1918
d44e8473 1919 if (byte_order == BFD_ENDIAN_BIG)
6b9acc27
JJ
1920 {
1921 p = valaddr;
1922 while (p < valaddr + len - 1 && *p == 0)
1923 ++p;
1924
1925 while (p < valaddr + len)
1926 {
6c7a06a3 1927 LA_EMIT_CHAR (*p, type, stream, '\'');
6b9acc27
JJ
1928 ++p;
1929 }
1930 }
1931 else
1932 {
1933 p = valaddr + len - 1;
1934 while (p > valaddr && *p == 0)
1935 --p;
1936
1937 while (p >= valaddr)
1938 {
6c7a06a3 1939 LA_EMIT_CHAR (*p, type, stream, '\'');
6b9acc27
JJ
1940 --p;
1941 }
1942 }
1943}
1944
132c57b4
TT
1945/* Print function pointer with inferior address ADDRESS onto stdio
1946 stream STREAM. */
1947
1948void
edf0c1b7
TT
1949print_function_pointer_address (const struct value_print_options *options,
1950 struct gdbarch *gdbarch,
132c57b4 1951 CORE_ADDR address,
edf0c1b7 1952 struct ui_file *stream)
132c57b4
TT
1953{
1954 CORE_ADDR func_addr
1955 = gdbarch_convert_from_func_ptr_addr (gdbarch, address,
1956 &current_target);
1957
1958 /* If the function pointer is represented by a description, print
1959 the address of the description. */
edf0c1b7 1960 if (options->addressprint && func_addr != address)
132c57b4
TT
1961 {
1962 fputs_filtered ("@", stream);
1963 fputs_filtered (paddress (gdbarch, address), stream);
1964 fputs_filtered (": ", stream);
1965 }
edf0c1b7 1966 print_address_demangle (options, gdbarch, func_addr, stream, demangle);
132c57b4
TT
1967}
1968
1969
79a45b7d 1970/* Print on STREAM using the given OPTIONS the index for the element
e79af960
JB
1971 at INDEX of an array whose index type is INDEX_TYPE. */
1972
1973void
1974maybe_print_array_index (struct type *index_type, LONGEST index,
79a45b7d
TT
1975 struct ui_file *stream,
1976 const struct value_print_options *options)
e79af960
JB
1977{
1978 struct value *index_value;
1979
79a45b7d 1980 if (!options->print_array_indexes)
e79af960
JB
1981 return;
1982
1983 index_value = value_from_longest (index_type, index);
1984
79a45b7d
TT
1985 LA_PRINT_ARRAY_INDEX (index_value, stream, options);
1986}
e79af960 1987
c906108c 1988/* Called by various <lang>_val_print routines to print elements of an
c5aa993b 1989 array in the form "<elem1>, <elem2>, <elem3>, ...".
c906108c 1990
c5aa993b
JM
1991 (FIXME?) Assumes array element separator is a comma, which is correct
1992 for all languages currently handled.
1993 (FIXME?) Some languages have a notation for repeated array elements,
581e13c1 1994 perhaps we should try to use that notation when appropriate. */
c906108c
SS
1995
1996void
490f124f 1997val_print_array_elements (struct type *type,
e8b24d9f 1998 LONGEST embedded_offset,
a2bd3dcd 1999 CORE_ADDR address, struct ui_file *stream,
79a45b7d 2000 int recurse,
e8b24d9f 2001 struct value *val,
79a45b7d 2002 const struct value_print_options *options,
fba45db2 2003 unsigned int i)
c906108c
SS
2004{
2005 unsigned int things_printed = 0;
2006 unsigned len;
aa715135 2007 struct type *elttype, *index_type, *base_index_type;
c906108c
SS
2008 unsigned eltlen;
2009 /* Position of the array element we are examining to see
2010 whether it is repeated. */
2011 unsigned int rep1;
2012 /* Number of repetitions we have detected so far. */
2013 unsigned int reps;
dbc98a8b 2014 LONGEST low_bound, high_bound;
aa715135 2015 LONGEST low_pos, high_pos;
c5aa993b 2016
c906108c 2017 elttype = TYPE_TARGET_TYPE (type);
3ae385af 2018 eltlen = type_length_units (check_typedef (elttype));
e79af960 2019 index_type = TYPE_INDEX_TYPE (type);
c906108c 2020
dbc98a8b 2021 if (get_array_bounds (type, &low_bound, &high_bound))
75be741b 2022 {
aa715135
JG
2023 if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
2024 base_index_type = TYPE_TARGET_TYPE (index_type);
2025 else
2026 base_index_type = index_type;
2027
2028 /* Non-contiguous enumerations types can by used as index types
2029 in some languages (e.g. Ada). In this case, the array length
2030 shall be computed from the positions of the first and last
2031 literal in the enumeration type, and not from the values
2032 of these literals. */
2033 if (!discrete_position (base_index_type, low_bound, &low_pos)
2034 || !discrete_position (base_index_type, high_bound, &high_pos))
2035 {
2036 warning (_("unable to get positions in array, use bounds instead"));
2037 low_pos = low_bound;
2038 high_pos = high_bound;
2039 }
2040
2041 /* The array length should normally be HIGH_POS - LOW_POS + 1.
75be741b 2042 But we have to be a little extra careful, because some languages
aa715135 2043 such as Ada allow LOW_POS to be greater than HIGH_POS for
75be741b
JB
2044 empty arrays. In that situation, the array length is just zero,
2045 not negative! */
aa715135 2046 if (low_pos > high_pos)
75be741b
JB
2047 len = 0;
2048 else
aa715135 2049 len = high_pos - low_pos + 1;
75be741b 2050 }
e936309c
JB
2051 else
2052 {
dbc98a8b
KW
2053 warning (_("unable to get bounds of array, assuming null array"));
2054 low_bound = 0;
2055 len = 0;
168de233
JB
2056 }
2057
c906108c
SS
2058 annotate_array_section_begin (i, elttype);
2059
79a45b7d 2060 for (; i < len && things_printed < options->print_max; i++)
c906108c
SS
2061 {
2062 if (i != 0)
2063 {
2a998fc0 2064 if (options->prettyformat_arrays)
c906108c
SS
2065 {
2066 fprintf_filtered (stream, ",\n");
2067 print_spaces_filtered (2 + 2 * recurse, stream);
2068 }
2069 else
2070 {
2071 fprintf_filtered (stream, ", ");
2072 }
2073 }
2074 wrap_here (n_spaces (2 + 2 * recurse));
dbc98a8b 2075 maybe_print_array_index (index_type, i + low_bound,
79a45b7d 2076 stream, options);
c906108c
SS
2077
2078 rep1 = i + 1;
2079 reps = 1;
35bef4fd
TT
2080 /* Only check for reps if repeat_count_threshold is not set to
2081 UINT_MAX (unlimited). */
2082 if (options->repeat_count_threshold < UINT_MAX)
c906108c 2083 {
35bef4fd 2084 while (rep1 < len
9a0dc9e3
PA
2085 && value_contents_eq (val,
2086 embedded_offset + i * eltlen,
2087 val,
2088 (embedded_offset
2089 + rep1 * eltlen),
2090 eltlen))
35bef4fd
TT
2091 {
2092 ++reps;
2093 ++rep1;
2094 }
c906108c
SS
2095 }
2096
79a45b7d 2097 if (reps > options->repeat_count_threshold)
c906108c 2098 {
e8b24d9f 2099 val_print (elttype, embedded_offset + i * eltlen,
490f124f
PA
2100 address, stream, recurse + 1, val, options,
2101 current_language);
c906108c
SS
2102 annotate_elt_rep (reps);
2103 fprintf_filtered (stream, " <repeats %u times>", reps);
2104 annotate_elt_rep_end ();
2105
2106 i = rep1 - 1;
79a45b7d 2107 things_printed += options->repeat_count_threshold;
c906108c
SS
2108 }
2109 else
2110 {
e8b24d9f 2111 val_print (elttype, embedded_offset + i * eltlen,
490f124f 2112 address,
0e03807e 2113 stream, recurse + 1, val, options, current_language);
c906108c
SS
2114 annotate_elt ();
2115 things_printed++;
2116 }
2117 }
2118 annotate_array_section_end ();
2119 if (i < len)
2120 {
2121 fprintf_filtered (stream, "...");
2122 }
2123}
2124
917317f4
JM
2125/* Read LEN bytes of target memory at address MEMADDR, placing the
2126 results in GDB's memory at MYADDR. Returns a count of the bytes
9b409511 2127 actually read, and optionally a target_xfer_status value in the
578d3588 2128 location pointed to by ERRPTR if ERRPTR is non-null. */
917317f4
JM
2129
2130/* FIXME: cagney/1999-10-14: Only used by val_print_string. Can this
2131 function be eliminated. */
2132
2133static int
3e43a32a 2134partial_memory_read (CORE_ADDR memaddr, gdb_byte *myaddr,
578d3588 2135 int len, int *errptr)
917317f4 2136{
581e13c1
MS
2137 int nread; /* Number of bytes actually read. */
2138 int errcode; /* Error from last read. */
917317f4 2139
581e13c1 2140 /* First try a complete read. */
917317f4
JM
2141 errcode = target_read_memory (memaddr, myaddr, len);
2142 if (errcode == 0)
2143 {
581e13c1 2144 /* Got it all. */
917317f4
JM
2145 nread = len;
2146 }
2147 else
2148 {
581e13c1 2149 /* Loop, reading one byte at a time until we get as much as we can. */
917317f4
JM
2150 for (errcode = 0, nread = 0; len > 0 && errcode == 0; nread++, len--)
2151 {
2152 errcode = target_read_memory (memaddr++, myaddr++, 1);
2153 }
581e13c1 2154 /* If an error, the last read was unsuccessful, so adjust count. */
917317f4
JM
2155 if (errcode != 0)
2156 {
2157 nread--;
2158 }
2159 }
578d3588 2160 if (errptr != NULL)
917317f4 2161 {
578d3588 2162 *errptr = errcode;
917317f4
JM
2163 }
2164 return (nread);
2165}
2166
ae6a3a4c
TJB
2167/* Read a string from the inferior, at ADDR, with LEN characters of WIDTH bytes
2168 each. Fetch at most FETCHLIMIT characters. BUFFER will be set to a newly
2169 allocated buffer containing the string, which the caller is responsible to
2170 free, and BYTES_READ will be set to the number of bytes read. Returns 0 on
9b409511 2171 success, or a target_xfer_status on failure.
ae6a3a4c 2172
f380848e
SA
2173 If LEN > 0, reads the lesser of LEN or FETCHLIMIT characters
2174 (including eventual NULs in the middle or end of the string).
2175
2176 If LEN is -1, stops at the first null character (not necessarily
2177 the first null byte) up to a maximum of FETCHLIMIT characters. Set
2178 FETCHLIMIT to UINT_MAX to read as many characters as possible from
2179 the string.
ae6a3a4c
TJB
2180
2181 Unless an exception is thrown, BUFFER will always be allocated, even on
2182 failure. In this case, some characters might have been read before the
2183 failure happened. Check BYTES_READ to recognize this situation.
2184
2185 Note: There was a FIXME asking to make this code use target_read_string,
2186 but this function is more general (can read past null characters, up to
581e13c1 2187 given LEN). Besides, it is used much more often than target_read_string
ae6a3a4c
TJB
2188 so it is more tested. Perhaps callers of target_read_string should use
2189 this function instead? */
c906108c
SS
2190
2191int
ae6a3a4c 2192read_string (CORE_ADDR addr, int len, int width, unsigned int fetchlimit,
e17a4113 2193 enum bfd_endian byte_order, gdb_byte **buffer, int *bytes_read)
c906108c 2194{
ae6a3a4c
TJB
2195 int errcode; /* Errno returned from bad reads. */
2196 unsigned int nfetch; /* Chars to fetch / chars fetched. */
3e43a32a
MS
2197 gdb_byte *bufptr; /* Pointer to next available byte in
2198 buffer. */
ae6a3a4c
TJB
2199 struct cleanup *old_chain = NULL; /* Top of the old cleanup chain. */
2200
ae6a3a4c
TJB
2201 /* Loop until we either have all the characters, or we encounter
2202 some error, such as bumping into the end of the address space. */
c906108c 2203
b5096abe
PM
2204 *buffer = NULL;
2205
2206 old_chain = make_cleanup (free_current_contents, buffer);
c906108c
SS
2207
2208 if (len > 0)
2209 {
88db67ef
YQ
2210 /* We want fetchlimit chars, so we might as well read them all in
2211 one operation. */
325fac50 2212 unsigned int fetchlen = std::min ((unsigned) len, fetchlimit);
f380848e
SA
2213
2214 *buffer = (gdb_byte *) xmalloc (fetchlen * width);
ae6a3a4c 2215 bufptr = *buffer;
c906108c 2216
f380848e 2217 nfetch = partial_memory_read (addr, bufptr, fetchlen * width, &errcode)
c906108c
SS
2218 / width;
2219 addr += nfetch * width;
2220 bufptr += nfetch * width;
2221 }
2222 else if (len == -1)
2223 {
2224 unsigned long bufsize = 0;
88db67ef
YQ
2225 unsigned int chunksize; /* Size of each fetch, in chars. */
2226 int found_nul; /* Non-zero if we found the nul char. */
2227 gdb_byte *limit; /* First location past end of fetch buffer. */
2228
2229 found_nul = 0;
2230 /* We are looking for a NUL terminator to end the fetching, so we
2231 might as well read in blocks that are large enough to be efficient,
2232 but not so large as to be slow if fetchlimit happens to be large.
2233 So we choose the minimum of 8 and fetchlimit. We used to use 200
2234 instead of 8 but 200 is way too big for remote debugging over a
2235 serial line. */
325fac50 2236 chunksize = std::min (8u, fetchlimit);
ae6a3a4c 2237
c906108c
SS
2238 do
2239 {
2240 QUIT;
325fac50 2241 nfetch = std::min ((unsigned long) chunksize, fetchlimit - bufsize);
c906108c 2242
ae6a3a4c
TJB
2243 if (*buffer == NULL)
2244 *buffer = (gdb_byte *) xmalloc (nfetch * width);
c906108c 2245 else
b5096abe
PM
2246 *buffer = (gdb_byte *) xrealloc (*buffer,
2247 (nfetch + bufsize) * width);
c906108c 2248
ae6a3a4c 2249 bufptr = *buffer + bufsize * width;
c906108c
SS
2250 bufsize += nfetch;
2251
ae6a3a4c 2252 /* Read as much as we can. */
917317f4 2253 nfetch = partial_memory_read (addr, bufptr, nfetch * width, &errcode)
ae6a3a4c 2254 / width;
c906108c 2255
ae6a3a4c 2256 /* Scan this chunk for the null character that terminates the string
c906108c
SS
2257 to print. If found, we don't need to fetch any more. Note
2258 that bufptr is explicitly left pointing at the next character
ae6a3a4c
TJB
2259 after the null character, or at the next character after the end
2260 of the buffer. */
c906108c
SS
2261
2262 limit = bufptr + nfetch * width;
2263 while (bufptr < limit)
2264 {
2265 unsigned long c;
2266
e17a4113 2267 c = extract_unsigned_integer (bufptr, width, byte_order);
c906108c
SS
2268 addr += width;
2269 bufptr += width;
2270 if (c == 0)
2271 {
2272 /* We don't care about any error which happened after
ae6a3a4c 2273 the NUL terminator. */
c906108c
SS
2274 errcode = 0;
2275 found_nul = 1;
2276 break;
2277 }
2278 }
2279 }
c5aa993b 2280 while (errcode == 0 /* no error */
ae6a3a4c
TJB
2281 && bufptr - *buffer < fetchlimit * width /* no overrun */
2282 && !found_nul); /* haven't found NUL yet */
c906108c
SS
2283 }
2284 else
ae6a3a4c
TJB
2285 { /* Length of string is really 0! */
2286 /* We always allocate *buffer. */
224c3ddb 2287 *buffer = bufptr = (gdb_byte *) xmalloc (1);
c906108c
SS
2288 errcode = 0;
2289 }
2290
2291 /* bufptr and addr now point immediately beyond the last byte which we
2292 consider part of the string (including a '\0' which ends the string). */
ae6a3a4c
TJB
2293 *bytes_read = bufptr - *buffer;
2294
2295 QUIT;
2296
2297 discard_cleanups (old_chain);
2298
2299 return errcode;
2300}
2301
3b2b8fea
TT
2302/* Return true if print_wchar can display W without resorting to a
2303 numeric escape, false otherwise. */
2304
2305static int
2306wchar_printable (gdb_wchar_t w)
2307{
2308 return (gdb_iswprint (w)
2309 || w == LCST ('\a') || w == LCST ('\b')
2310 || w == LCST ('\f') || w == LCST ('\n')
2311 || w == LCST ('\r') || w == LCST ('\t')
2312 || w == LCST ('\v'));
2313}
2314
2315/* A helper function that converts the contents of STRING to wide
2316 characters and then appends them to OUTPUT. */
2317
2318static void
2319append_string_as_wide (const char *string,
2320 struct obstack *output)
2321{
2322 for (; *string; ++string)
2323 {
2324 gdb_wchar_t w = gdb_btowc (*string);
2325 obstack_grow (output, &w, sizeof (gdb_wchar_t));
2326 }
2327}
2328
2329/* Print a wide character W to OUTPUT. ORIG is a pointer to the
2330 original (target) bytes representing the character, ORIG_LEN is the
2331 number of valid bytes. WIDTH is the number of bytes in a base
2332 characters of the type. OUTPUT is an obstack to which wide
2333 characters are emitted. QUOTER is a (narrow) character indicating
2334 the style of quotes surrounding the character to be printed.
2335 NEED_ESCAPE is an in/out flag which is used to track numeric
2336 escapes across calls. */
2337
2338static void
2339print_wchar (gdb_wint_t w, const gdb_byte *orig,
2340 int orig_len, int width,
2341 enum bfd_endian byte_order,
2342 struct obstack *output,
2343 int quoter, int *need_escapep)
2344{
2345 int need_escape = *need_escapep;
2346
2347 *need_escapep = 0;
3b2b8fea 2348
95c64f92
YQ
2349 /* iswprint implementation on Windows returns 1 for tab character.
2350 In order to avoid different printout on this host, we explicitly
2351 use wchar_printable function. */
2352 switch (w)
3b2b8fea 2353 {
95c64f92
YQ
2354 case LCST ('\a'):
2355 obstack_grow_wstr (output, LCST ("\\a"));
2356 break;
2357 case LCST ('\b'):
2358 obstack_grow_wstr (output, LCST ("\\b"));
2359 break;
2360 case LCST ('\f'):
2361 obstack_grow_wstr (output, LCST ("\\f"));
2362 break;
2363 case LCST ('\n'):
2364 obstack_grow_wstr (output, LCST ("\\n"));
2365 break;
2366 case LCST ('\r'):
2367 obstack_grow_wstr (output, LCST ("\\r"));
2368 break;
2369 case LCST ('\t'):
2370 obstack_grow_wstr (output, LCST ("\\t"));
2371 break;
2372 case LCST ('\v'):
2373 obstack_grow_wstr (output, LCST ("\\v"));
2374 break;
2375 default:
3b2b8fea 2376 {
95c64f92
YQ
2377 if (wchar_printable (w) && (!need_escape || (!gdb_iswdigit (w)
2378 && w != LCST ('8')
2379 && w != LCST ('9'))))
2380 {
2381 gdb_wchar_t wchar = w;
3b2b8fea 2382
95c64f92
YQ
2383 if (w == gdb_btowc (quoter) || w == LCST ('\\'))
2384 obstack_grow_wstr (output, LCST ("\\"));
2385 obstack_grow (output, &wchar, sizeof (gdb_wchar_t));
2386 }
2387 else
2388 {
2389 int i;
3b2b8fea 2390
95c64f92
YQ
2391 for (i = 0; i + width <= orig_len; i += width)
2392 {
2393 char octal[30];
2394 ULONGEST value;
2395
2396 value = extract_unsigned_integer (&orig[i], width,
3b2b8fea 2397 byte_order);
95c64f92
YQ
2398 /* If the value fits in 3 octal digits, print it that
2399 way. Otherwise, print it as a hex escape. */
2400 if (value <= 0777)
2401 xsnprintf (octal, sizeof (octal), "\\%.3o",
2402 (int) (value & 0777));
2403 else
2404 xsnprintf (octal, sizeof (octal), "\\x%lx", (long) value);
2405 append_string_as_wide (octal, output);
2406 }
2407 /* If we somehow have extra bytes, print them now. */
2408 while (i < orig_len)
2409 {
2410 char octal[5];
2411
2412 xsnprintf (octal, sizeof (octal), "\\%.3o", orig[i] & 0xff);
2413 append_string_as_wide (octal, output);
2414 ++i;
2415 }
2416
2417 *need_escapep = 1;
2418 }
3b2b8fea
TT
2419 break;
2420 }
2421 }
2422}
2423
2424/* Print the character C on STREAM as part of the contents of a
2425 literal string whose delimiter is QUOTER. ENCODING names the
2426 encoding of C. */
2427
2428void
2429generic_emit_char (int c, struct type *type, struct ui_file *stream,
2430 int quoter, const char *encoding)
2431{
2432 enum bfd_endian byte_order
2433 = gdbarch_byte_order (get_type_arch (type));
2434 struct obstack wchar_buf, output;
2435 struct cleanup *cleanups;
2436 gdb_byte *buf;
3b2b8fea
TT
2437 int need_escape = 0;
2438
224c3ddb 2439 buf = (gdb_byte *) alloca (TYPE_LENGTH (type));
3b2b8fea
TT
2440 pack_long (buf, type, c);
2441
cda6c55b 2442 wchar_iterator iter (buf, TYPE_LENGTH (type), encoding, TYPE_LENGTH (type));
3b2b8fea
TT
2443
2444 /* This holds the printable form of the wchar_t data. */
2445 obstack_init (&wchar_buf);
cda6c55b 2446 cleanups = make_cleanup_obstack_free (&wchar_buf);
3b2b8fea
TT
2447
2448 while (1)
2449 {
2450 int num_chars;
2451 gdb_wchar_t *chars;
2452 const gdb_byte *buf;
2453 size_t buflen;
2454 int print_escape = 1;
2455 enum wchar_iterate_result result;
2456
cda6c55b 2457 num_chars = iter.iterate (&result, &chars, &buf, &buflen);
3b2b8fea
TT
2458 if (num_chars < 0)
2459 break;
2460 if (num_chars > 0)
2461 {
2462 /* If all characters are printable, print them. Otherwise,
2463 we're going to have to print an escape sequence. We
2464 check all characters because we want to print the target
2465 bytes in the escape sequence, and we don't know character
2466 boundaries there. */
2467 int i;
2468
2469 print_escape = 0;
2470 for (i = 0; i < num_chars; ++i)
2471 if (!wchar_printable (chars[i]))
2472 {
2473 print_escape = 1;
2474 break;
2475 }
2476
2477 if (!print_escape)
2478 {
2479 for (i = 0; i < num_chars; ++i)
2480 print_wchar (chars[i], buf, buflen,
2481 TYPE_LENGTH (type), byte_order,
2482 &wchar_buf, quoter, &need_escape);
2483 }
2484 }
2485
2486 /* This handles the NUM_CHARS == 0 case as well. */
2487 if (print_escape)
2488 print_wchar (gdb_WEOF, buf, buflen, TYPE_LENGTH (type),
2489 byte_order, &wchar_buf, quoter, &need_escape);
2490 }
2491
2492 /* The output in the host encoding. */
2493 obstack_init (&output);
2494 make_cleanup_obstack_free (&output);
2495
2496 convert_between_encodings (INTERMEDIATE_ENCODING, host_charset (),
ac91cd70 2497 (gdb_byte *) obstack_base (&wchar_buf),
3b2b8fea 2498 obstack_object_size (&wchar_buf),
fff10684 2499 sizeof (gdb_wchar_t), &output, translit_char);
3b2b8fea
TT
2500 obstack_1grow (&output, '\0');
2501
79f33898 2502 fputs_filtered ((const char *) obstack_base (&output), stream);
3b2b8fea
TT
2503
2504 do_cleanups (cleanups);
2505}
2506
0d63ecda
KS
2507/* Return the repeat count of the next character/byte in ITER,
2508 storing the result in VEC. */
2509
2510static int
cda6c55b 2511count_next_character (wchar_iterator *iter,
0d63ecda
KS
2512 VEC (converted_character_d) **vec)
2513{
2514 struct converted_character *current;
2515
2516 if (VEC_empty (converted_character_d, *vec))
2517 {
2518 struct converted_character tmp;
2519 gdb_wchar_t *chars;
2520
2521 tmp.num_chars
cda6c55b 2522 = iter->iterate (&tmp.result, &chars, &tmp.buf, &tmp.buflen);
0d63ecda
KS
2523 if (tmp.num_chars > 0)
2524 {
2525 gdb_assert (tmp.num_chars < MAX_WCHARS);
2526 memcpy (tmp.chars, chars, tmp.num_chars * sizeof (gdb_wchar_t));
2527 }
2528 VEC_safe_push (converted_character_d, *vec, &tmp);
2529 }
2530
2531 current = VEC_last (converted_character_d, *vec);
2532
2533 /* Count repeated characters or bytes. */
2534 current->repeat_count = 1;
2535 if (current->num_chars == -1)
2536 {
2537 /* EOF */
2538 return -1;
2539 }
2540 else
2541 {
2542 gdb_wchar_t *chars;
2543 struct converted_character d;
2544 int repeat;
2545
2546 d.repeat_count = 0;
2547
2548 while (1)
2549 {
2550 /* Get the next character. */
cda6c55b 2551 d.num_chars = iter->iterate (&d.result, &chars, &d.buf, &d.buflen);
0d63ecda
KS
2552
2553 /* If a character was successfully converted, save the character
2554 into the converted character. */
2555 if (d.num_chars > 0)
2556 {
2557 gdb_assert (d.num_chars < MAX_WCHARS);
2558 memcpy (d.chars, chars, WCHAR_BUFLEN (d.num_chars));
2559 }
2560
2561 /* Determine if the current character is the same as this
2562 new character. */
2563 if (d.num_chars == current->num_chars && d.result == current->result)
2564 {
2565 /* There are two cases to consider:
2566
2567 1) Equality of converted character (num_chars > 0)
2568 2) Equality of non-converted character (num_chars == 0) */
2569 if ((current->num_chars > 0
2570 && memcmp (current->chars, d.chars,
2571 WCHAR_BUFLEN (current->num_chars)) == 0)
2572 || (current->num_chars == 0
2573 && current->buflen == d.buflen
2574 && memcmp (current->buf, d.buf, current->buflen) == 0))
2575 ++current->repeat_count;
2576 else
2577 break;
2578 }
2579 else
2580 break;
2581 }
2582
2583 /* Push this next converted character onto the result vector. */
2584 repeat = current->repeat_count;
2585 VEC_safe_push (converted_character_d, *vec, &d);
2586 return repeat;
2587 }
2588}
2589
2590/* Print the characters in CHARS to the OBSTACK. QUOTE_CHAR is the quote
2591 character to use with string output. WIDTH is the size of the output
2592 character type. BYTE_ORDER is the the target byte order. OPTIONS
2593 is the user's print options. */
2594
2595static void
2596print_converted_chars_to_obstack (struct obstack *obstack,
2597 VEC (converted_character_d) *chars,
2598 int quote_char, int width,
2599 enum bfd_endian byte_order,
2600 const struct value_print_options *options)
2601{
2602 unsigned int idx;
2603 struct converted_character *elem;
2604 enum {START, SINGLE, REPEAT, INCOMPLETE, FINISH} state, last;
2605 gdb_wchar_t wide_quote_char = gdb_btowc (quote_char);
2606 int need_escape = 0;
2607
2608 /* Set the start state. */
2609 idx = 0;
2610 last = state = START;
2611 elem = NULL;
2612
2613 while (1)
2614 {
2615 switch (state)
2616 {
2617 case START:
2618 /* Nothing to do. */
2619 break;
2620
2621 case SINGLE:
2622 {
2623 int j;
2624
2625 /* We are outputting a single character
2626 (< options->repeat_count_threshold). */
2627
2628 if (last != SINGLE)
2629 {
2630 /* We were outputting some other type of content, so we
2631 must output and a comma and a quote. */
2632 if (last != START)
2633 obstack_grow_wstr (obstack, LCST (", "));
0d63ecda
KS
2634 obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
2635 }
2636 /* Output the character. */
2637 for (j = 0; j < elem->repeat_count; ++j)
2638 {
2639 if (elem->result == wchar_iterate_ok)
2640 print_wchar (elem->chars[0], elem->buf, elem->buflen, width,
2641 byte_order, obstack, quote_char, &need_escape);
2642 else
2643 print_wchar (gdb_WEOF, elem->buf, elem->buflen, width,
2644 byte_order, obstack, quote_char, &need_escape);
2645 }
2646 }
2647 break;
2648
2649 case REPEAT:
2650 {
2651 int j;
2652 char *s;
2653
2654 /* We are outputting a character with a repeat count
2655 greater than options->repeat_count_threshold. */
2656
2657 if (last == SINGLE)
2658 {
2659 /* We were outputting a single string. Terminate the
2660 string. */
0d63ecda
KS
2661 obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
2662 }
2663 if (last != START)
2664 obstack_grow_wstr (obstack, LCST (", "));
2665
2666 /* Output the character and repeat string. */
2667 obstack_grow_wstr (obstack, LCST ("'"));
2668 if (elem->result == wchar_iterate_ok)
2669 print_wchar (elem->chars[0], elem->buf, elem->buflen, width,
2670 byte_order, obstack, quote_char, &need_escape);
2671 else
2672 print_wchar (gdb_WEOF, elem->buf, elem->buflen, width,
2673 byte_order, obstack, quote_char, &need_escape);
2674 obstack_grow_wstr (obstack, LCST ("'"));
2675 s = xstrprintf (_(" <repeats %u times>"), elem->repeat_count);
2676 for (j = 0; s[j]; ++j)
2677 {
2678 gdb_wchar_t w = gdb_btowc (s[j]);
2679 obstack_grow (obstack, &w, sizeof (gdb_wchar_t));
2680 }
2681 xfree (s);
2682 }
2683 break;
2684
2685 case INCOMPLETE:
2686 /* We are outputting an incomplete sequence. */
2687 if (last == SINGLE)
2688 {
2689 /* If we were outputting a string of SINGLE characters,
2690 terminate the quote. */
0d63ecda
KS
2691 obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
2692 }
2693 if (last != START)
2694 obstack_grow_wstr (obstack, LCST (", "));
2695
2696 /* Output the incomplete sequence string. */
2697 obstack_grow_wstr (obstack, LCST ("<incomplete sequence "));
2698 print_wchar (gdb_WEOF, elem->buf, elem->buflen, width, byte_order,
2699 obstack, 0, &need_escape);
2700 obstack_grow_wstr (obstack, LCST (">"));
2701
2702 /* We do not attempt to outupt anything after this. */
2703 state = FINISH;
2704 break;
2705
2706 case FINISH:
2707 /* All done. If we were outputting a string of SINGLE
2708 characters, the string must be terminated. Otherwise,
2709 REPEAT and INCOMPLETE are always left properly terminated. */
2710 if (last == SINGLE)
e93a8774 2711 obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
0d63ecda
KS
2712
2713 return;
2714 }
2715
2716 /* Get the next element and state. */
2717 last = state;
2718 if (state != FINISH)
2719 {
2720 elem = VEC_index (converted_character_d, chars, idx++);
2721 switch (elem->result)
2722 {
2723 case wchar_iterate_ok:
2724 case wchar_iterate_invalid:
2725 if (elem->repeat_count > options->repeat_count_threshold)
2726 state = REPEAT;
2727 else
2728 state = SINGLE;
2729 break;
2730
2731 case wchar_iterate_incomplete:
2732 state = INCOMPLETE;
2733 break;
2734
2735 case wchar_iterate_eof:
2736 state = FINISH;
2737 break;
2738 }
2739 }
2740 }
2741}
2742
3b2b8fea
TT
2743/* Print the character string STRING, printing at most LENGTH
2744 characters. LENGTH is -1 if the string is nul terminated. TYPE is
2745 the type of each character. OPTIONS holds the printing options;
2746 printing stops early if the number hits print_max; repeat counts
2747 are printed as appropriate. Print ellipses at the end if we had to
2748 stop before printing LENGTH characters, or if FORCE_ELLIPSES.
2749 QUOTE_CHAR is the character to print at each end of the string. If
2750 C_STYLE_TERMINATOR is true, and the last character is 0, then it is
2751 omitted. */
2752
2753void
2754generic_printstr (struct ui_file *stream, struct type *type,
2755 const gdb_byte *string, unsigned int length,
2756 const char *encoding, int force_ellipses,
2757 int quote_char, int c_style_terminator,
2758 const struct value_print_options *options)
2759{
2760 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
2761 unsigned int i;
3b2b8fea
TT
2762 int width = TYPE_LENGTH (type);
2763 struct obstack wchar_buf, output;
2764 struct cleanup *cleanup;
3b2b8fea 2765 int finished = 0;
0d63ecda
KS
2766 struct converted_character *last;
2767 VEC (converted_character_d) *converted_chars;
3b2b8fea
TT
2768
2769 if (length == -1)
2770 {
2771 unsigned long current_char = 1;
2772
2773 for (i = 0; current_char; ++i)
2774 {
2775 QUIT;
2776 current_char = extract_unsigned_integer (string + i * width,
2777 width, byte_order);
2778 }
2779 length = i;
2780 }
2781
2782 /* If the string was not truncated due to `set print elements', and
2783 the last byte of it is a null, we don't print that, in
2784 traditional C style. */
2785 if (c_style_terminator
2786 && !force_ellipses
2787 && length > 0
2788 && (extract_unsigned_integer (string + (length - 1) * width,
2789 width, byte_order) == 0))
2790 length--;
2791
2792 if (length == 0)
2793 {
2794 fputs_filtered ("\"\"", stream);
2795 return;
2796 }
2797
2798 /* Arrange to iterate over the characters, in wchar_t form. */
cda6c55b 2799 wchar_iterator iter (string, length * width, encoding, width);
0d63ecda 2800 converted_chars = NULL;
cda6c55b
TT
2801 cleanup = make_cleanup (VEC_cleanup (converted_character_d),
2802 &converted_chars);
3b2b8fea 2803
0d63ecda
KS
2804 /* Convert characters until the string is over or the maximum
2805 number of printed characters has been reached. */
2806 i = 0;
2807 while (i < options->print_max)
3b2b8fea 2808 {
0d63ecda 2809 int r;
3b2b8fea
TT
2810
2811 QUIT;
2812
0d63ecda 2813 /* Grab the next character and repeat count. */
cda6c55b 2814 r = count_next_character (&iter, &converted_chars);
3b2b8fea 2815
0d63ecda
KS
2816 /* If less than zero, the end of the input string was reached. */
2817 if (r < 0)
2818 break;
3b2b8fea 2819
0d63ecda
KS
2820 /* Otherwise, add the count to the total print count and get
2821 the next character. */
2822 i += r;
2823 }
3b2b8fea 2824
0d63ecda
KS
2825 /* Get the last element and determine if the entire string was
2826 processed. */
2827 last = VEC_last (converted_character_d, converted_chars);
2828 finished = (last->result == wchar_iterate_eof);
3b2b8fea 2829
0d63ecda
KS
2830 /* Ensure that CONVERTED_CHARS is terminated. */
2831 last->result = wchar_iterate_eof;
3b2b8fea 2832
0d63ecda
KS
2833 /* WCHAR_BUF is the obstack we use to represent the string in
2834 wchar_t form. */
2835 obstack_init (&wchar_buf);
2836 make_cleanup_obstack_free (&wchar_buf);
3b2b8fea 2837
0d63ecda
KS
2838 /* Print the output string to the obstack. */
2839 print_converted_chars_to_obstack (&wchar_buf, converted_chars, quote_char,
2840 width, byte_order, options);
3b2b8fea
TT
2841
2842 if (force_ellipses || !finished)
2843 obstack_grow_wstr (&wchar_buf, LCST ("..."));
2844
2845 /* OUTPUT is where we collect `char's for printing. */
2846 obstack_init (&output);
2847 make_cleanup_obstack_free (&output);
2848
2849 convert_between_encodings (INTERMEDIATE_ENCODING, host_charset (),
ac91cd70 2850 (gdb_byte *) obstack_base (&wchar_buf),
3b2b8fea 2851 obstack_object_size (&wchar_buf),
fff10684 2852 sizeof (gdb_wchar_t), &output, translit_char);
3b2b8fea
TT
2853 obstack_1grow (&output, '\0');
2854
79f33898 2855 fputs_filtered ((const char *) obstack_base (&output), stream);
3b2b8fea
TT
2856
2857 do_cleanups (cleanup);
2858}
2859
ae6a3a4c
TJB
2860/* Print a string from the inferior, starting at ADDR and printing up to LEN
2861 characters, of WIDTH bytes a piece, to STREAM. If LEN is -1, printing
2862 stops at the first null byte, otherwise printing proceeds (including null
2863 bytes) until either print_max or LEN characters have been printed,
09ca9e2e
TT
2864 whichever is smaller. ENCODING is the name of the string's
2865 encoding. It can be NULL, in which case the target encoding is
2866 assumed. */
ae6a3a4c
TJB
2867
2868int
09ca9e2e
TT
2869val_print_string (struct type *elttype, const char *encoding,
2870 CORE_ADDR addr, int len,
6c7a06a3 2871 struct ui_file *stream,
ae6a3a4c
TJB
2872 const struct value_print_options *options)
2873{
2874 int force_ellipsis = 0; /* Force ellipsis to be printed if nonzero. */
d09f2c3f 2875 int err; /* Non-zero if we got a bad read. */
581e13c1 2876 int found_nul; /* Non-zero if we found the nul char. */
ae6a3a4c
TJB
2877 unsigned int fetchlimit; /* Maximum number of chars to print. */
2878 int bytes_read;
2879 gdb_byte *buffer = NULL; /* Dynamically growable fetch buffer. */
2880 struct cleanup *old_chain = NULL; /* Top of the old cleanup chain. */
5af949e3 2881 struct gdbarch *gdbarch = get_type_arch (elttype);
e17a4113 2882 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
6c7a06a3 2883 int width = TYPE_LENGTH (elttype);
ae6a3a4c
TJB
2884
2885 /* First we need to figure out the limit on the number of characters we are
2886 going to attempt to fetch and print. This is actually pretty simple. If
2887 LEN >= zero, then the limit is the minimum of LEN and print_max. If
2888 LEN is -1, then the limit is print_max. This is true regardless of
2889 whether print_max is zero, UINT_MAX (unlimited), or something in between,
2890 because finding the null byte (or available memory) is what actually
2891 limits the fetch. */
2892
325fac50
PA
2893 fetchlimit = (len == -1 ? options->print_max : std::min ((unsigned) len,
2894 options->print_max));
ae6a3a4c 2895
d09f2c3f
PA
2896 err = read_string (addr, len, width, fetchlimit, byte_order,
2897 &buffer, &bytes_read);
ae6a3a4c
TJB
2898 old_chain = make_cleanup (xfree, buffer);
2899
2900 addr += bytes_read;
c906108c 2901
3e43a32a
MS
2902 /* We now have either successfully filled the buffer to fetchlimit,
2903 or terminated early due to an error or finding a null char when
2904 LEN is -1. */
ae6a3a4c
TJB
2905
2906 /* Determine found_nul by looking at the last character read. */
6694c411
JK
2907 found_nul = 0;
2908 if (bytes_read >= width)
2909 found_nul = extract_unsigned_integer (buffer + bytes_read - width, width,
2910 byte_order) == 0;
c906108c
SS
2911 if (len == -1 && !found_nul)
2912 {
777ea8f1 2913 gdb_byte *peekbuf;
c906108c 2914
ae6a3a4c 2915 /* We didn't find a NUL terminator we were looking for. Attempt
c5aa993b
JM
2916 to peek at the next character. If not successful, or it is not
2917 a null byte, then force ellipsis to be printed. */
c906108c 2918
777ea8f1 2919 peekbuf = (gdb_byte *) alloca (width);
c906108c
SS
2920
2921 if (target_read_memory (addr, peekbuf, width) == 0
e17a4113 2922 && extract_unsigned_integer (peekbuf, width, byte_order) != 0)
c906108c
SS
2923 force_ellipsis = 1;
2924 }
d09f2c3f 2925 else if ((len >= 0 && err != 0) || (len > bytes_read / width))
c906108c
SS
2926 {
2927 /* Getting an error when we have a requested length, or fetching less
c5aa993b 2928 than the number of characters actually requested, always make us
ae6a3a4c 2929 print ellipsis. */
c906108c
SS
2930 force_ellipsis = 1;
2931 }
2932
c906108c
SS
2933 /* If we get an error before fetching anything, don't print a string.
2934 But if we fetch something and then get an error, print the string
2935 and then the error message. */
d09f2c3f 2936 if (err == 0 || bytes_read > 0)
c906108c 2937 {
be759fcf 2938 LA_PRINT_STRING (stream, elttype, buffer, bytes_read / width,
3a772aa4 2939 encoding, force_ellipsis, options);
c906108c
SS
2940 }
2941
d09f2c3f 2942 if (err != 0)
c906108c 2943 {
578d3588
PA
2944 char *str;
2945
d09f2c3f 2946 str = memory_error_message (TARGET_XFER_E_IO, gdbarch, addr);
578d3588
PA
2947 make_cleanup (xfree, str);
2948
2949 fprintf_filtered (stream, "<error: ");
2950 fputs_filtered (str, stream);
2951 fprintf_filtered (stream, ">");
c906108c 2952 }
ae6a3a4c 2953
c906108c
SS
2954 gdb_flush (stream);
2955 do_cleanups (old_chain);
ae6a3a4c
TJB
2956
2957 return (bytes_read / width);
c906108c 2958}
c906108c 2959\f
c5aa993b 2960
09e6485f
PA
2961/* The 'set input-radix' command writes to this auxiliary variable.
2962 If the requested radix is valid, INPUT_RADIX is updated; otherwise,
2963 it is left unchanged. */
2964
2965static unsigned input_radix_1 = 10;
2966
c906108c
SS
2967/* Validate an input or output radix setting, and make sure the user
2968 knows what they really did here. Radix setting is confusing, e.g.
2969 setting the input radix to "10" never changes it! */
2970
c906108c 2971static void
fba45db2 2972set_input_radix (char *args, int from_tty, struct cmd_list_element *c)
c906108c 2973{
09e6485f 2974 set_input_radix_1 (from_tty, input_radix_1);
c906108c
SS
2975}
2976
c906108c 2977static void
fba45db2 2978set_input_radix_1 (int from_tty, unsigned radix)
c906108c
SS
2979{
2980 /* We don't currently disallow any input radix except 0 or 1, which don't
2981 make any mathematical sense. In theory, we can deal with any input
2982 radix greater than 1, even if we don't have unique digits for every
2983 value from 0 to radix-1, but in practice we lose on large radix values.
2984 We should either fix the lossage or restrict the radix range more.
581e13c1 2985 (FIXME). */
c906108c
SS
2986
2987 if (radix < 2)
2988 {
09e6485f 2989 input_radix_1 = input_radix;
8a3fe4f8 2990 error (_("Nonsense input radix ``decimal %u''; input radix unchanged."),
c906108c
SS
2991 radix);
2992 }
09e6485f 2993 input_radix_1 = input_radix = radix;
c906108c
SS
2994 if (from_tty)
2995 {
3e43a32a
MS
2996 printf_filtered (_("Input radix now set to "
2997 "decimal %u, hex %x, octal %o.\n"),
c906108c
SS
2998 radix, radix, radix);
2999 }
3000}
3001
09e6485f
PA
3002/* The 'set output-radix' command writes to this auxiliary variable.
3003 If the requested radix is valid, OUTPUT_RADIX is updated,
3004 otherwise, it is left unchanged. */
3005
3006static unsigned output_radix_1 = 10;
3007
c906108c 3008static void
fba45db2 3009set_output_radix (char *args, int from_tty, struct cmd_list_element *c)
c906108c 3010{
09e6485f 3011 set_output_radix_1 (from_tty, output_radix_1);
c906108c
SS
3012}
3013
3014static void
fba45db2 3015set_output_radix_1 (int from_tty, unsigned radix)
c906108c
SS
3016{
3017 /* Validate the radix and disallow ones that we aren't prepared to
581e13c1 3018 handle correctly, leaving the radix unchanged. */
c906108c
SS
3019 switch (radix)
3020 {
3021 case 16:
79a45b7d 3022 user_print_options.output_format = 'x'; /* hex */
c906108c
SS
3023 break;
3024 case 10:
79a45b7d 3025 user_print_options.output_format = 0; /* decimal */
c906108c
SS
3026 break;
3027 case 8:
79a45b7d 3028 user_print_options.output_format = 'o'; /* octal */
c906108c
SS
3029 break;
3030 default:
09e6485f 3031 output_radix_1 = output_radix;
3e43a32a
MS
3032 error (_("Unsupported output radix ``decimal %u''; "
3033 "output radix unchanged."),
c906108c
SS
3034 radix);
3035 }
09e6485f 3036 output_radix_1 = output_radix = radix;
c906108c
SS
3037 if (from_tty)
3038 {
3e43a32a
MS
3039 printf_filtered (_("Output radix now set to "
3040 "decimal %u, hex %x, octal %o.\n"),
c906108c
SS
3041 radix, radix, radix);
3042 }
3043}
3044
3045/* Set both the input and output radix at once. Try to set the output radix
3046 first, since it has the most restrictive range. An radix that is valid as
3047 an output radix is also valid as an input radix.
3048
3049 It may be useful to have an unusual input radix. If the user wishes to
3050 set an input radix that is not valid as an output radix, he needs to use
581e13c1 3051 the 'set input-radix' command. */
c906108c
SS
3052
3053static void
fba45db2 3054set_radix (char *arg, int from_tty)
c906108c
SS
3055{
3056 unsigned radix;
3057
bb518678 3058 radix = (arg == NULL) ? 10 : parse_and_eval_long (arg);
c906108c
SS
3059 set_output_radix_1 (0, radix);
3060 set_input_radix_1 (0, radix);
3061 if (from_tty)
3062 {
3e43a32a
MS
3063 printf_filtered (_("Input and output radices now set to "
3064 "decimal %u, hex %x, octal %o.\n"),
c906108c
SS
3065 radix, radix, radix);
3066 }
3067}
3068
581e13c1 3069/* Show both the input and output radices. */
c906108c 3070
c906108c 3071static void
fba45db2 3072show_radix (char *arg, int from_tty)
c906108c
SS
3073{
3074 if (from_tty)
3075 {
3076 if (input_radix == output_radix)
3077 {
3e43a32a
MS
3078 printf_filtered (_("Input and output radices set to "
3079 "decimal %u, hex %x, octal %o.\n"),
c906108c
SS
3080 input_radix, input_radix, input_radix);
3081 }
3082 else
3083 {
3e43a32a
MS
3084 printf_filtered (_("Input radix set to decimal "
3085 "%u, hex %x, octal %o.\n"),
c906108c 3086 input_radix, input_radix, input_radix);
3e43a32a
MS
3087 printf_filtered (_("Output radix set to decimal "
3088 "%u, hex %x, octal %o.\n"),
c906108c
SS
3089 output_radix, output_radix, output_radix);
3090 }
3091 }
3092}
c906108c 3093\f
c5aa993b 3094
c906108c 3095static void
fba45db2 3096set_print (char *arg, int from_tty)
c906108c
SS
3097{
3098 printf_unfiltered (
c5aa993b 3099 "\"set print\" must be followed by the name of a print subcommand.\n");
635c7e8a 3100 help_list (setprintlist, "set print ", all_commands, gdb_stdout);
c906108c
SS
3101}
3102
c906108c 3103static void
fba45db2 3104show_print (char *args, int from_tty)
c906108c
SS
3105{
3106 cmd_show_list (showprintlist, from_tty, "");
3107}
e7045703
DE
3108
3109static void
3110set_print_raw (char *arg, int from_tty)
3111{
3112 printf_unfiltered (
3113 "\"set print raw\" must be followed by the name of a \"print raw\" subcommand.\n");
635c7e8a 3114 help_list (setprintrawlist, "set print raw ", all_commands, gdb_stdout);
e7045703
DE
3115}
3116
3117static void
3118show_print_raw (char *args, int from_tty)
3119{
3120 cmd_show_list (showprintrawlist, from_tty, "");
3121}
3122
c906108c
SS
3123\f
3124void
fba45db2 3125_initialize_valprint (void)
c906108c 3126{
c906108c 3127 add_prefix_cmd ("print", no_class, set_print,
1bedd215 3128 _("Generic command for setting how things print."),
c906108c 3129 &setprintlist, "set print ", 0, &setlist);
c5aa993b 3130 add_alias_cmd ("p", "print", no_class, 1, &setlist);
581e13c1 3131 /* Prefer set print to set prompt. */
c906108c
SS
3132 add_alias_cmd ("pr", "print", no_class, 1, &setlist);
3133
3134 add_prefix_cmd ("print", no_class, show_print,
1bedd215 3135 _("Generic command for showing print settings."),
c906108c 3136 &showprintlist, "show print ", 0, &showlist);
c5aa993b
JM
3137 add_alias_cmd ("p", "print", no_class, 1, &showlist);
3138 add_alias_cmd ("pr", "print", no_class, 1, &showlist);
c906108c 3139
e7045703
DE
3140 add_prefix_cmd ("raw", no_class, set_print_raw,
3141 _("\
3142Generic command for setting what things to print in \"raw\" mode."),
3143 &setprintrawlist, "set print raw ", 0, &setprintlist);
3144 add_prefix_cmd ("raw", no_class, show_print_raw,
3145 _("Generic command for showing \"print raw\" settings."),
3146 &showprintrawlist, "show print raw ", 0, &showprintlist);
3147
79a45b7d
TT
3148 add_setshow_uinteger_cmd ("elements", no_class,
3149 &user_print_options.print_max, _("\
35096d9d
AC
3150Set limit on string chars or array elements to print."), _("\
3151Show limit on string chars or array elements to print."), _("\
f81d1120 3152\"set print elements unlimited\" causes there to be no limit."),
35096d9d 3153 NULL,
920d2a44 3154 show_print_max,
35096d9d 3155 &setprintlist, &showprintlist);
c906108c 3156
79a45b7d
TT
3157 add_setshow_boolean_cmd ("null-stop", no_class,
3158 &user_print_options.stop_print_at_null, _("\
5bf193a2
AC
3159Set printing of char arrays to stop at first null char."), _("\
3160Show printing of char arrays to stop at first null char."), NULL,
3161 NULL,
920d2a44 3162 show_stop_print_at_null,
5bf193a2 3163 &setprintlist, &showprintlist);
c906108c 3164
35096d9d 3165 add_setshow_uinteger_cmd ("repeats", no_class,
79a45b7d 3166 &user_print_options.repeat_count_threshold, _("\
35096d9d
AC
3167Set threshold for repeated print elements."), _("\
3168Show threshold for repeated print elements."), _("\
f81d1120 3169\"set print repeats unlimited\" causes all elements to be individually printed."),
35096d9d 3170 NULL,
920d2a44 3171 show_repeat_count_threshold,
35096d9d 3172 &setprintlist, &showprintlist);
c906108c 3173
79a45b7d 3174 add_setshow_boolean_cmd ("pretty", class_support,
2a998fc0
DE
3175 &user_print_options.prettyformat_structs, _("\
3176Set pretty formatting of structures."), _("\
3177Show pretty formatting of structures."), NULL,
5bf193a2 3178 NULL,
2a998fc0 3179 show_prettyformat_structs,
5bf193a2
AC
3180 &setprintlist, &showprintlist);
3181
79a45b7d
TT
3182 add_setshow_boolean_cmd ("union", class_support,
3183 &user_print_options.unionprint, _("\
5bf193a2
AC
3184Set printing of unions interior to structures."), _("\
3185Show printing of unions interior to structures."), NULL,
3186 NULL,
920d2a44 3187 show_unionprint,
5bf193a2
AC
3188 &setprintlist, &showprintlist);
3189
79a45b7d 3190 add_setshow_boolean_cmd ("array", class_support,
2a998fc0
DE
3191 &user_print_options.prettyformat_arrays, _("\
3192Set pretty formatting of arrays."), _("\
3193Show pretty formatting of arrays."), NULL,
5bf193a2 3194 NULL,
2a998fc0 3195 show_prettyformat_arrays,
5bf193a2
AC
3196 &setprintlist, &showprintlist);
3197
79a45b7d
TT
3198 add_setshow_boolean_cmd ("address", class_support,
3199 &user_print_options.addressprint, _("\
5bf193a2
AC
3200Set printing of addresses."), _("\
3201Show printing of addresses."), NULL,
3202 NULL,
920d2a44 3203 show_addressprint,
5bf193a2 3204 &setprintlist, &showprintlist);
c906108c 3205
9cb709b6
TT
3206 add_setshow_boolean_cmd ("symbol", class_support,
3207 &user_print_options.symbol_print, _("\
3208Set printing of symbol names when printing pointers."), _("\
3209Show printing of symbol names when printing pointers."),
3210 NULL, NULL,
3211 show_symbol_print,
3212 &setprintlist, &showprintlist);
3213
1e8fb976
PA
3214 add_setshow_zuinteger_cmd ("input-radix", class_support, &input_radix_1,
3215 _("\
35096d9d
AC
3216Set default input radix for entering numbers."), _("\
3217Show default input radix for entering numbers."), NULL,
1e8fb976
PA
3218 set_input_radix,
3219 show_input_radix,
3220 &setlist, &showlist);
35096d9d 3221
1e8fb976
PA
3222 add_setshow_zuinteger_cmd ("output-radix", class_support, &output_radix_1,
3223 _("\
35096d9d
AC
3224Set default output radix for printing of values."), _("\
3225Show default output radix for printing of values."), NULL,
1e8fb976
PA
3226 set_output_radix,
3227 show_output_radix,
3228 &setlist, &showlist);
c906108c 3229
cb1a6d5f
AC
3230 /* The "set radix" and "show radix" commands are special in that
3231 they are like normal set and show commands but allow two normally
3232 independent variables to be either set or shown with a single
b66df561 3233 command. So the usual deprecated_add_set_cmd() and [deleted]
581e13c1 3234 add_show_from_set() commands aren't really appropriate. */
b66df561
AC
3235 /* FIXME: i18n: With the new add_setshow_integer command, that is no
3236 longer true - show can display anything. */
1a966eab
AC
3237 add_cmd ("radix", class_support, set_radix, _("\
3238Set default input and output number radices.\n\
c906108c 3239Use 'set input-radix' or 'set output-radix' to independently set each.\n\
1a966eab 3240Without an argument, sets both radices back to the default value of 10."),
c906108c 3241 &setlist);
1a966eab
AC
3242 add_cmd ("radix", class_support, show_radix, _("\
3243Show the default input and output number radices.\n\
3244Use 'show input-radix' or 'show output-radix' to independently show each."),
c906108c
SS
3245 &showlist);
3246
e79af960 3247 add_setshow_boolean_cmd ("array-indexes", class_support,
79a45b7d 3248 &user_print_options.print_array_indexes, _("\
e79af960
JB
3249Set printing of array indexes."), _("\
3250Show printing of array indexes"), NULL, NULL, show_print_array_indexes,
3251 &setprintlist, &showprintlist);
c906108c 3252}
This page took 2.429419 seconds and 4 git commands to generate.