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