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