Remove prepare_re_set_context
[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 unsigned len = TYPE_LENGTH (type);
1476
3b4b2f16
UW
1477 std::string str = decimal_to_string (valaddr, len, byte_order);
1478 fputs_filtered (str.c_str (), stream);
7678ef8f
TJB
1479}
1480
c5aa993b 1481void
fc1a4b47 1482print_binary_chars (struct ui_file *stream, const gdb_byte *valaddr,
30a25466 1483 unsigned len, enum bfd_endian byte_order, bool zero_pad)
c906108c 1484{
fc1a4b47 1485 const gdb_byte *p;
745b8ca0 1486 unsigned int i;
c5aa993b 1487 int b;
30a25466 1488 bool seen_a_one = false;
c906108c
SS
1489
1490 /* Declared "int" so it will be signed.
581e13c1
MS
1491 This ensures that right shift will shift in zeros. */
1492
c5aa993b 1493 const int mask = 0x080;
c906108c 1494
d44e8473 1495 if (byte_order == BFD_ENDIAN_BIG)
c906108c
SS
1496 {
1497 for (p = valaddr;
1498 p < valaddr + len;
1499 p++)
1500 {
c5aa993b 1501 /* Every byte has 8 binary characters; peel off
581e13c1
MS
1502 and print from the MSB end. */
1503
d3abe1c8 1504 for (i = 0; i < (HOST_CHAR_BIT * sizeof (*p)); i++)
c5aa993b
JM
1505 {
1506 if (*p & (mask >> i))
30a25466 1507 b = '1';
c5aa993b 1508 else
30a25466 1509 b = '0';
c5aa993b 1510
30a25466
TT
1511 if (zero_pad || seen_a_one || b == '1')
1512 fputc_filtered (b, stream);
1513 if (b == '1')
1514 seen_a_one = true;
c5aa993b 1515 }
c906108c
SS
1516 }
1517 }
1518 else
1519 {
1520 for (p = valaddr + len - 1;
1521 p >= valaddr;
1522 p--)
1523 {
d3abe1c8 1524 for (i = 0; i < (HOST_CHAR_BIT * sizeof (*p)); i++)
c5aa993b
JM
1525 {
1526 if (*p & (mask >> i))
30a25466 1527 b = '1';
c5aa993b 1528 else
30a25466 1529 b = '0';
c5aa993b 1530
30a25466
TT
1531 if (zero_pad || seen_a_one || b == '1')
1532 fputc_filtered (b, stream);
1533 if (b == '1')
1534 seen_a_one = true;
c5aa993b 1535 }
c906108c
SS
1536 }
1537 }
30a25466
TT
1538
1539 /* When not zero-padding, ensure that something is printed when the
1540 input is 0. */
1541 if (!zero_pad && !seen_a_one)
1542 fputc_filtered ('0', stream);
1543}
1544
1545/* A helper for print_octal_chars that emits a single octal digit,
1546 optionally suppressing it if is zero and updating SEEN_A_ONE. */
1547
1548static void
1549emit_octal_digit (struct ui_file *stream, bool *seen_a_one, int digit)
1550{
1551 if (*seen_a_one || digit != 0)
1552 fprintf_filtered (stream, "%o", digit);
1553 if (digit != 0)
1554 *seen_a_one = true;
c906108c
SS
1555}
1556
1557/* VALADDR points to an integer of LEN bytes.
581e13c1
MS
1558 Print it in octal on stream or format it in buf. */
1559
c906108c 1560void
fc1a4b47 1561print_octal_chars (struct ui_file *stream, const gdb_byte *valaddr,
d44e8473 1562 unsigned len, enum bfd_endian byte_order)
c906108c 1563{
fc1a4b47 1564 const gdb_byte *p;
c906108c 1565 unsigned char octa1, octa2, octa3, carry;
c5aa993b
JM
1566 int cycle;
1567
c906108c
SS
1568 /* Octal is 3 bits, which doesn't fit. Yuk. So we have to track
1569 * the extra bits, which cycle every three bytes:
1570 *
1571 * Byte side: 0 1 2 3
1572 * | | | |
1573 * bit number 123 456 78 | 9 012 345 6 | 78 901 234 | 567 890 12 |
1574 *
1575 * Octal side: 0 1 carry 3 4 carry ...
1576 *
1577 * Cycle number: 0 1 2
1578 *
1579 * But of course we are printing from the high side, so we have to
1580 * figure out where in the cycle we are so that we end up with no
1581 * left over bits at the end.
1582 */
1583#define BITS_IN_OCTAL 3
1584#define HIGH_ZERO 0340
d6382fff 1585#define LOW_ZERO 0034
c906108c 1586#define CARRY_ZERO 0003
d6382fff
TT
1587 static_assert (HIGH_ZERO + LOW_ZERO + CARRY_ZERO == 0xff,
1588 "cycle zero constants are wrong");
c906108c
SS
1589#define HIGH_ONE 0200
1590#define MID_ONE 0160
1591#define LOW_ONE 0016
1592#define CARRY_ONE 0001
d6382fff
TT
1593 static_assert (HIGH_ONE + MID_ONE + LOW_ONE + CARRY_ONE == 0xff,
1594 "cycle one constants are wrong");
c906108c
SS
1595#define HIGH_TWO 0300
1596#define MID_TWO 0070
1597#define LOW_TWO 0007
d6382fff
TT
1598 static_assert (HIGH_TWO + MID_TWO + LOW_TWO == 0xff,
1599 "cycle two constants are wrong");
c906108c
SS
1600
1601 /* For 32 we start in cycle 2, with two bits and one bit carry;
581e13c1
MS
1602 for 64 in cycle in cycle 1, with one bit and a two bit carry. */
1603
d3abe1c8 1604 cycle = (len * HOST_CHAR_BIT) % BITS_IN_OCTAL;
c906108c 1605 carry = 0;
c5aa993b 1606
bb599908 1607 fputs_filtered ("0", stream);
30a25466 1608 bool seen_a_one = false;
d44e8473 1609 if (byte_order == BFD_ENDIAN_BIG)
c906108c
SS
1610 {
1611 for (p = valaddr;
1612 p < valaddr + len;
1613 p++)
1614 {
c5aa993b
JM
1615 switch (cycle)
1616 {
1617 case 0:
581e13c1
MS
1618 /* No carry in, carry out two bits. */
1619
c5aa993b
JM
1620 octa1 = (HIGH_ZERO & *p) >> 5;
1621 octa2 = (LOW_ZERO & *p) >> 2;
1622 carry = (CARRY_ZERO & *p);
30a25466
TT
1623 emit_octal_digit (stream, &seen_a_one, octa1);
1624 emit_octal_digit (stream, &seen_a_one, octa2);
c5aa993b
JM
1625 break;
1626
1627 case 1:
581e13c1
MS
1628 /* Carry in two bits, carry out one bit. */
1629
c5aa993b
JM
1630 octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
1631 octa2 = (MID_ONE & *p) >> 4;
1632 octa3 = (LOW_ONE & *p) >> 1;
1633 carry = (CARRY_ONE & *p);
30a25466
TT
1634 emit_octal_digit (stream, &seen_a_one, octa1);
1635 emit_octal_digit (stream, &seen_a_one, octa2);
1636 emit_octal_digit (stream, &seen_a_one, octa3);
c5aa993b
JM
1637 break;
1638
1639 case 2:
581e13c1
MS
1640 /* Carry in one bit, no carry out. */
1641
c5aa993b
JM
1642 octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
1643 octa2 = (MID_TWO & *p) >> 3;
1644 octa3 = (LOW_TWO & *p);
1645 carry = 0;
30a25466
TT
1646 emit_octal_digit (stream, &seen_a_one, octa1);
1647 emit_octal_digit (stream, &seen_a_one, octa2);
1648 emit_octal_digit (stream, &seen_a_one, octa3);
c5aa993b
JM
1649 break;
1650
1651 default:
8a3fe4f8 1652 error (_("Internal error in octal conversion;"));
c5aa993b
JM
1653 }
1654
1655 cycle++;
1656 cycle = cycle % BITS_IN_OCTAL;
c906108c
SS
1657 }
1658 }
1659 else
1660 {
1661 for (p = valaddr + len - 1;
1662 p >= valaddr;
1663 p--)
1664 {
c5aa993b
JM
1665 switch (cycle)
1666 {
1667 case 0:
1668 /* Carry out, no carry in */
581e13c1 1669
c5aa993b
JM
1670 octa1 = (HIGH_ZERO & *p) >> 5;
1671 octa2 = (LOW_ZERO & *p) >> 2;
1672 carry = (CARRY_ZERO & *p);
30a25466
TT
1673 emit_octal_digit (stream, &seen_a_one, octa1);
1674 emit_octal_digit (stream, &seen_a_one, octa2);
c5aa993b
JM
1675 break;
1676
1677 case 1:
1678 /* Carry in, carry out */
581e13c1 1679
c5aa993b
JM
1680 octa1 = (carry << 1) | ((HIGH_ONE & *p) >> 7);
1681 octa2 = (MID_ONE & *p) >> 4;
1682 octa3 = (LOW_ONE & *p) >> 1;
1683 carry = (CARRY_ONE & *p);
30a25466
TT
1684 emit_octal_digit (stream, &seen_a_one, octa1);
1685 emit_octal_digit (stream, &seen_a_one, octa2);
1686 emit_octal_digit (stream, &seen_a_one, octa3);
c5aa993b
JM
1687 break;
1688
1689 case 2:
1690 /* Carry in, no carry out */
581e13c1 1691
c5aa993b
JM
1692 octa1 = (carry << 2) | ((HIGH_TWO & *p) >> 6);
1693 octa2 = (MID_TWO & *p) >> 3;
1694 octa3 = (LOW_TWO & *p);
1695 carry = 0;
30a25466
TT
1696 emit_octal_digit (stream, &seen_a_one, octa1);
1697 emit_octal_digit (stream, &seen_a_one, octa2);
1698 emit_octal_digit (stream, &seen_a_one, octa3);
c5aa993b
JM
1699 break;
1700
1701 default:
8a3fe4f8 1702 error (_("Internal error in octal conversion;"));
c5aa993b
JM
1703 }
1704
1705 cycle++;
1706 cycle = cycle % BITS_IN_OCTAL;
c906108c
SS
1707 }
1708 }
1709
c906108c
SS
1710}
1711
4ac0cb1c
TT
1712/* Possibly negate the integer represented by BYTES. It contains LEN
1713 bytes in the specified byte order. If the integer is negative,
1714 copy it into OUT_VEC, negate it, and return true. Otherwise, do
1715 nothing and return false. */
1716
1717static bool
1718maybe_negate_by_bytes (const gdb_byte *bytes, unsigned len,
1719 enum bfd_endian byte_order,
d5722aa2 1720 gdb::byte_vector *out_vec)
4ac0cb1c
TT
1721{
1722 gdb_byte sign_byte;
1723 if (byte_order == BFD_ENDIAN_BIG)
1724 sign_byte = bytes[0];
1725 else
1726 sign_byte = bytes[len - 1];
1727 if ((sign_byte & 0x80) == 0)
1728 return false;
1729
1730 out_vec->resize (len);
1731
1732 /* Compute -x == 1 + ~x. */
1733 if (byte_order == BFD_ENDIAN_LITTLE)
1734 {
1735 unsigned carry = 1;
1736 for (unsigned i = 0; i < len; ++i)
1737 {
1738 unsigned tem = (0xff & ~bytes[i]) + carry;
1739 (*out_vec)[i] = tem & 0xff;
1740 carry = tem / 256;
1741 }
1742 }
1743 else
1744 {
1745 unsigned carry = 1;
1746 for (unsigned i = len; i > 0; --i)
1747 {
1748 unsigned tem = (0xff & ~bytes[i - 1]) + carry;
1749 (*out_vec)[i - 1] = tem & 0xff;
1750 carry = tem / 256;
1751 }
1752 }
1753
1754 return true;
1755}
1756
c906108c 1757/* VALADDR points to an integer of LEN bytes.
581e13c1
MS
1758 Print it in decimal on stream or format it in buf. */
1759
c906108c 1760void
fc1a4b47 1761print_decimal_chars (struct ui_file *stream, const gdb_byte *valaddr,
4ac0cb1c
TT
1762 unsigned len, bool is_signed,
1763 enum bfd_endian byte_order)
c906108c
SS
1764{
1765#define TEN 10
c5aa993b 1766#define CARRY_OUT( x ) ((x) / TEN) /* extend char to int */
c906108c
SS
1767#define CARRY_LEFT( x ) ((x) % TEN)
1768#define SHIFT( x ) ((x) << 4)
c906108c
SS
1769#define LOW_NIBBLE( x ) ( (x) & 0x00F)
1770#define HIGH_NIBBLE( x ) (((x) & 0x0F0) >> 4)
1771
fc1a4b47 1772 const gdb_byte *p;
c5aa993b
JM
1773 int carry;
1774 int decimal_len;
1775 int i, j, decimal_digits;
1776 int dummy;
1777 int flip;
1778
d5722aa2 1779 gdb::byte_vector negated_bytes;
4ac0cb1c
TT
1780 if (is_signed
1781 && maybe_negate_by_bytes (valaddr, len, byte_order, &negated_bytes))
1782 {
1783 fputs_filtered ("-", stream);
1784 valaddr = negated_bytes.data ();
1785 }
1786
c906108c 1787 /* Base-ten number is less than twice as many digits
581e13c1
MS
1788 as the base 16 number, which is 2 digits per byte. */
1789
c906108c 1790 decimal_len = len * 2 * 2;
30a25466 1791 std::vector<unsigned char> digits (decimal_len, 0);
c906108c 1792
c906108c
SS
1793 /* Ok, we have an unknown number of bytes of data to be printed in
1794 * decimal.
1795 *
1796 * Given a hex number (in nibbles) as XYZ, we start by taking X and
1797 * decemalizing it as "x1 x2" in two decimal nibbles. Then we multiply
1798 * the nibbles by 16, add Y and re-decimalize. Repeat with Z.
1799 *
1800 * The trick is that "digits" holds a base-10 number, but sometimes
581e13c1 1801 * the individual digits are > 10.
c906108c
SS
1802 *
1803 * Outer loop is per nibble (hex digit) of input, from MSD end to
1804 * LSD end.
1805 */
c5aa993b 1806 decimal_digits = 0; /* Number of decimal digits so far */
d44e8473 1807 p = (byte_order == BFD_ENDIAN_BIG) ? valaddr : valaddr + len - 1;
c906108c 1808 flip = 0;
d44e8473 1809 while ((byte_order == BFD_ENDIAN_BIG) ? (p < valaddr + len) : (p >= valaddr))
c5aa993b 1810 {
c906108c
SS
1811 /*
1812 * Multiply current base-ten number by 16 in place.
1813 * Each digit was between 0 and 9, now is between
1814 * 0 and 144.
1815 */
c5aa993b
JM
1816 for (j = 0; j < decimal_digits; j++)
1817 {
1818 digits[j] = SHIFT (digits[j]);
1819 }
1820
c906108c
SS
1821 /* Take the next nibble off the input and add it to what
1822 * we've got in the LSB position. Bottom 'digit' is now
1823 * between 0 and 159.
1824 *
1825 * "flip" is used to run this loop twice for each byte.
1826 */
c5aa993b
JM
1827 if (flip == 0)
1828 {
581e13c1
MS
1829 /* Take top nibble. */
1830
c5aa993b
JM
1831 digits[0] += HIGH_NIBBLE (*p);
1832 flip = 1;
1833 }
1834 else
1835 {
581e13c1
MS
1836 /* Take low nibble and bump our pointer "p". */
1837
c5aa993b 1838 digits[0] += LOW_NIBBLE (*p);
d44e8473
MD
1839 if (byte_order == BFD_ENDIAN_BIG)
1840 p++;
1841 else
1842 p--;
c5aa993b
JM
1843 flip = 0;
1844 }
c906108c
SS
1845
1846 /* Re-decimalize. We have to do this often enough
1847 * that we don't overflow, but once per nibble is
1848 * overkill. Easier this way, though. Note that the
1849 * carry is often larger than 10 (e.g. max initial
1850 * carry out of lowest nibble is 15, could bubble all
1851 * the way up greater than 10). So we have to do
1852 * the carrying beyond the last current digit.
1853 */
1854 carry = 0;
c5aa993b
JM
1855 for (j = 0; j < decimal_len - 1; j++)
1856 {
1857 digits[j] += carry;
1858
1859 /* "/" won't handle an unsigned char with
1860 * a value that if signed would be negative.
1861 * So extend to longword int via "dummy".
1862 */
1863 dummy = digits[j];
1864 carry = CARRY_OUT (dummy);
1865 digits[j] = CARRY_LEFT (dummy);
1866
1867 if (j >= decimal_digits && carry == 0)
1868 {
1869 /*
1870 * All higher digits are 0 and we
1871 * no longer have a carry.
1872 *
1873 * Note: "j" is 0-based, "decimal_digits" is
1874 * 1-based.
1875 */
1876 decimal_digits = j + 1;
1877 break;
1878 }
1879 }
1880 }
c906108c
SS
1881
1882 /* Ok, now "digits" is the decimal representation, with
581e13c1
MS
1883 the "decimal_digits" actual digits. Print! */
1884
30a25466
TT
1885 for (i = decimal_digits - 1; i > 0 && digits[i] == 0; --i)
1886 ;
1887
1888 for (; i >= 0; i--)
c5aa993b
JM
1889 {
1890 fprintf_filtered (stream, "%1d", digits[i]);
1891 }
c906108c
SS
1892}
1893
1894/* VALADDR points to an integer of LEN bytes. Print it in hex on stream. */
1895
6b9acc27 1896void
fc1a4b47 1897print_hex_chars (struct ui_file *stream, const gdb_byte *valaddr,
30a25466
TT
1898 unsigned len, enum bfd_endian byte_order,
1899 bool zero_pad)
c906108c 1900{
fc1a4b47 1901 const gdb_byte *p;
c906108c 1902
bb599908 1903 fputs_filtered ("0x", stream);
d44e8473 1904 if (byte_order == BFD_ENDIAN_BIG)
c906108c 1905 {
30a25466
TT
1906 p = valaddr;
1907
1908 if (!zero_pad)
1909 {
1910 /* Strip leading 0 bytes, but be sure to leave at least a
1911 single byte at the end. */
1912 for (; p < valaddr + len - 1 && !*p; ++p)
1913 ;
1914 }
1915
1916 const gdb_byte *first = p;
1917 for (;
c906108c
SS
1918 p < valaddr + len;
1919 p++)
1920 {
30a25466
TT
1921 /* When not zero-padding, use a different format for the
1922 very first byte printed. */
1923 if (!zero_pad && p == first)
1924 fprintf_filtered (stream, "%x", *p);
1925 else
1926 fprintf_filtered (stream, "%02x", *p);
c906108c
SS
1927 }
1928 }
1929 else
1930 {
30a25466
TT
1931 p = valaddr + len - 1;
1932
1933 if (!zero_pad)
1934 {
1935 /* Strip leading 0 bytes, but be sure to leave at least a
1936 single byte at the end. */
1937 for (; p >= valaddr + 1 && !*p; --p)
1938 ;
1939 }
1940
1941 const gdb_byte *first = p;
1942 for (;
c906108c
SS
1943 p >= valaddr;
1944 p--)
1945 {
30a25466
TT
1946 /* When not zero-padding, use a different format for the
1947 very first byte printed. */
1948 if (!zero_pad && p == first)
1949 fprintf_filtered (stream, "%x", *p);
1950 else
1951 fprintf_filtered (stream, "%02x", *p);
c906108c
SS
1952 }
1953 }
c906108c
SS
1954}
1955
3e43a32a 1956/* VALADDR points to a char integer of LEN bytes.
581e13c1 1957 Print it out in appropriate language form on stream.
6b9acc27
JJ
1958 Omit any leading zero chars. */
1959
1960void
6c7a06a3
TT
1961print_char_chars (struct ui_file *stream, struct type *type,
1962 const gdb_byte *valaddr,
d44e8473 1963 unsigned len, enum bfd_endian byte_order)
6b9acc27 1964{
fc1a4b47 1965 const gdb_byte *p;
6b9acc27 1966
d44e8473 1967 if (byte_order == BFD_ENDIAN_BIG)
6b9acc27
JJ
1968 {
1969 p = valaddr;
1970 while (p < valaddr + len - 1 && *p == 0)
1971 ++p;
1972
1973 while (p < valaddr + len)
1974 {
6c7a06a3 1975 LA_EMIT_CHAR (*p, type, stream, '\'');
6b9acc27
JJ
1976 ++p;
1977 }
1978 }
1979 else
1980 {
1981 p = valaddr + len - 1;
1982 while (p > valaddr && *p == 0)
1983 --p;
1984
1985 while (p >= valaddr)
1986 {
6c7a06a3 1987 LA_EMIT_CHAR (*p, type, stream, '\'');
6b9acc27
JJ
1988 --p;
1989 }
1990 }
1991}
1992
132c57b4
TT
1993/* Print function pointer with inferior address ADDRESS onto stdio
1994 stream STREAM. */
1995
1996void
edf0c1b7
TT
1997print_function_pointer_address (const struct value_print_options *options,
1998 struct gdbarch *gdbarch,
132c57b4 1999 CORE_ADDR address,
edf0c1b7 2000 struct ui_file *stream)
132c57b4
TT
2001{
2002 CORE_ADDR func_addr
2003 = gdbarch_convert_from_func_ptr_addr (gdbarch, address,
2004 &current_target);
2005
2006 /* If the function pointer is represented by a description, print
2007 the address of the description. */
edf0c1b7 2008 if (options->addressprint && func_addr != address)
132c57b4
TT
2009 {
2010 fputs_filtered ("@", stream);
2011 fputs_filtered (paddress (gdbarch, address), stream);
2012 fputs_filtered (": ", stream);
2013 }
edf0c1b7 2014 print_address_demangle (options, gdbarch, func_addr, stream, demangle);
132c57b4
TT
2015}
2016
2017
79a45b7d 2018/* Print on STREAM using the given OPTIONS the index for the element
e79af960
JB
2019 at INDEX of an array whose index type is INDEX_TYPE. */
2020
2021void
2022maybe_print_array_index (struct type *index_type, LONGEST index,
79a45b7d
TT
2023 struct ui_file *stream,
2024 const struct value_print_options *options)
e79af960
JB
2025{
2026 struct value *index_value;
2027
79a45b7d 2028 if (!options->print_array_indexes)
e79af960
JB
2029 return;
2030
2031 index_value = value_from_longest (index_type, index);
2032
79a45b7d
TT
2033 LA_PRINT_ARRAY_INDEX (index_value, stream, options);
2034}
e79af960 2035
c906108c 2036/* Called by various <lang>_val_print routines to print elements of an
c5aa993b 2037 array in the form "<elem1>, <elem2>, <elem3>, ...".
c906108c 2038
c5aa993b
JM
2039 (FIXME?) Assumes array element separator is a comma, which is correct
2040 for all languages currently handled.
2041 (FIXME?) Some languages have a notation for repeated array elements,
581e13c1 2042 perhaps we should try to use that notation when appropriate. */
c906108c
SS
2043
2044void
490f124f 2045val_print_array_elements (struct type *type,
e8b24d9f 2046 LONGEST embedded_offset,
a2bd3dcd 2047 CORE_ADDR address, struct ui_file *stream,
79a45b7d 2048 int recurse,
e8b24d9f 2049 struct value *val,
79a45b7d 2050 const struct value_print_options *options,
fba45db2 2051 unsigned int i)
c906108c
SS
2052{
2053 unsigned int things_printed = 0;
2054 unsigned len;
aa715135 2055 struct type *elttype, *index_type, *base_index_type;
c906108c
SS
2056 unsigned eltlen;
2057 /* Position of the array element we are examining to see
2058 whether it is repeated. */
2059 unsigned int rep1;
2060 /* Number of repetitions we have detected so far. */
2061 unsigned int reps;
dbc98a8b 2062 LONGEST low_bound, high_bound;
aa715135 2063 LONGEST low_pos, high_pos;
c5aa993b 2064
c906108c 2065 elttype = TYPE_TARGET_TYPE (type);
3ae385af 2066 eltlen = type_length_units (check_typedef (elttype));
e79af960 2067 index_type = TYPE_INDEX_TYPE (type);
c906108c 2068
dbc98a8b 2069 if (get_array_bounds (type, &low_bound, &high_bound))
75be741b 2070 {
aa715135
JG
2071 if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
2072 base_index_type = TYPE_TARGET_TYPE (index_type);
2073 else
2074 base_index_type = index_type;
2075
2076 /* Non-contiguous enumerations types can by used as index types
2077 in some languages (e.g. Ada). In this case, the array length
2078 shall be computed from the positions of the first and last
2079 literal in the enumeration type, and not from the values
2080 of these literals. */
2081 if (!discrete_position (base_index_type, low_bound, &low_pos)
2082 || !discrete_position (base_index_type, high_bound, &high_pos))
2083 {
2084 warning (_("unable to get positions in array, use bounds instead"));
2085 low_pos = low_bound;
2086 high_pos = high_bound;
2087 }
2088
2089 /* The array length should normally be HIGH_POS - LOW_POS + 1.
75be741b 2090 But we have to be a little extra careful, because some languages
aa715135 2091 such as Ada allow LOW_POS to be greater than HIGH_POS for
75be741b
JB
2092 empty arrays. In that situation, the array length is just zero,
2093 not negative! */
aa715135 2094 if (low_pos > high_pos)
75be741b
JB
2095 len = 0;
2096 else
aa715135 2097 len = high_pos - low_pos + 1;
75be741b 2098 }
e936309c
JB
2099 else
2100 {
dbc98a8b
KW
2101 warning (_("unable to get bounds of array, assuming null array"));
2102 low_bound = 0;
2103 len = 0;
168de233
JB
2104 }
2105
c906108c
SS
2106 annotate_array_section_begin (i, elttype);
2107
79a45b7d 2108 for (; i < len && things_printed < options->print_max; i++)
c906108c
SS
2109 {
2110 if (i != 0)
2111 {
2a998fc0 2112 if (options->prettyformat_arrays)
c906108c
SS
2113 {
2114 fprintf_filtered (stream, ",\n");
2115 print_spaces_filtered (2 + 2 * recurse, stream);
2116 }
2117 else
2118 {
2119 fprintf_filtered (stream, ", ");
2120 }
2121 }
2122 wrap_here (n_spaces (2 + 2 * recurse));
dbc98a8b 2123 maybe_print_array_index (index_type, i + low_bound,
79a45b7d 2124 stream, options);
c906108c
SS
2125
2126 rep1 = i + 1;
2127 reps = 1;
35bef4fd
TT
2128 /* Only check for reps if repeat_count_threshold is not set to
2129 UINT_MAX (unlimited). */
2130 if (options->repeat_count_threshold < UINT_MAX)
c906108c 2131 {
35bef4fd 2132 while (rep1 < len
9a0dc9e3
PA
2133 && value_contents_eq (val,
2134 embedded_offset + i * eltlen,
2135 val,
2136 (embedded_offset
2137 + rep1 * eltlen),
2138 eltlen))
35bef4fd
TT
2139 {
2140 ++reps;
2141 ++rep1;
2142 }
c906108c
SS
2143 }
2144
79a45b7d 2145 if (reps > options->repeat_count_threshold)
c906108c 2146 {
e8b24d9f 2147 val_print (elttype, embedded_offset + i * eltlen,
490f124f
PA
2148 address, stream, recurse + 1, val, options,
2149 current_language);
c906108c
SS
2150 annotate_elt_rep (reps);
2151 fprintf_filtered (stream, " <repeats %u times>", reps);
2152 annotate_elt_rep_end ();
2153
2154 i = rep1 - 1;
79a45b7d 2155 things_printed += options->repeat_count_threshold;
c906108c
SS
2156 }
2157 else
2158 {
e8b24d9f 2159 val_print (elttype, embedded_offset + i * eltlen,
490f124f 2160 address,
0e03807e 2161 stream, recurse + 1, val, options, current_language);
c906108c
SS
2162 annotate_elt ();
2163 things_printed++;
2164 }
2165 }
2166 annotate_array_section_end ();
2167 if (i < len)
2168 {
2169 fprintf_filtered (stream, "...");
2170 }
2171}
2172
917317f4
JM
2173/* Read LEN bytes of target memory at address MEMADDR, placing the
2174 results in GDB's memory at MYADDR. Returns a count of the bytes
9b409511 2175 actually read, and optionally a target_xfer_status value in the
578d3588 2176 location pointed to by ERRPTR if ERRPTR is non-null. */
917317f4
JM
2177
2178/* FIXME: cagney/1999-10-14: Only used by val_print_string. Can this
2179 function be eliminated. */
2180
2181static int
3e43a32a 2182partial_memory_read (CORE_ADDR memaddr, gdb_byte *myaddr,
578d3588 2183 int len, int *errptr)
917317f4 2184{
581e13c1
MS
2185 int nread; /* Number of bytes actually read. */
2186 int errcode; /* Error from last read. */
917317f4 2187
581e13c1 2188 /* First try a complete read. */
917317f4
JM
2189 errcode = target_read_memory (memaddr, myaddr, len);
2190 if (errcode == 0)
2191 {
581e13c1 2192 /* Got it all. */
917317f4
JM
2193 nread = len;
2194 }
2195 else
2196 {
581e13c1 2197 /* Loop, reading one byte at a time until we get as much as we can. */
917317f4
JM
2198 for (errcode = 0, nread = 0; len > 0 && errcode == 0; nread++, len--)
2199 {
2200 errcode = target_read_memory (memaddr++, myaddr++, 1);
2201 }
581e13c1 2202 /* If an error, the last read was unsuccessful, so adjust count. */
917317f4
JM
2203 if (errcode != 0)
2204 {
2205 nread--;
2206 }
2207 }
578d3588 2208 if (errptr != NULL)
917317f4 2209 {
578d3588 2210 *errptr = errcode;
917317f4
JM
2211 }
2212 return (nread);
2213}
2214
ae6a3a4c
TJB
2215/* Read a string from the inferior, at ADDR, with LEN characters of WIDTH bytes
2216 each. Fetch at most FETCHLIMIT characters. BUFFER will be set to a newly
2217 allocated buffer containing the string, which the caller is responsible to
2218 free, and BYTES_READ will be set to the number of bytes read. Returns 0 on
9b409511 2219 success, or a target_xfer_status on failure.
ae6a3a4c 2220
f380848e
SA
2221 If LEN > 0, reads the lesser of LEN or FETCHLIMIT characters
2222 (including eventual NULs in the middle or end of the string).
2223
2224 If LEN is -1, stops at the first null character (not necessarily
2225 the first null byte) up to a maximum of FETCHLIMIT characters. Set
2226 FETCHLIMIT to UINT_MAX to read as many characters as possible from
2227 the string.
ae6a3a4c
TJB
2228
2229 Unless an exception is thrown, BUFFER will always be allocated, even on
2230 failure. In this case, some characters might have been read before the
2231 failure happened. Check BYTES_READ to recognize this situation.
2232
2233 Note: There was a FIXME asking to make this code use target_read_string,
2234 but this function is more general (can read past null characters, up to
581e13c1 2235 given LEN). Besides, it is used much more often than target_read_string
ae6a3a4c
TJB
2236 so it is more tested. Perhaps callers of target_read_string should use
2237 this function instead? */
c906108c
SS
2238
2239int
ae6a3a4c 2240read_string (CORE_ADDR addr, int len, int width, unsigned int fetchlimit,
e17a4113 2241 enum bfd_endian byte_order, gdb_byte **buffer, int *bytes_read)
c906108c 2242{
ae6a3a4c
TJB
2243 int errcode; /* Errno returned from bad reads. */
2244 unsigned int nfetch; /* Chars to fetch / chars fetched. */
3e43a32a
MS
2245 gdb_byte *bufptr; /* Pointer to next available byte in
2246 buffer. */
ae6a3a4c
TJB
2247 struct cleanup *old_chain = NULL; /* Top of the old cleanup chain. */
2248
ae6a3a4c
TJB
2249 /* Loop until we either have all the characters, or we encounter
2250 some error, such as bumping into the end of the address space. */
c906108c 2251
b5096abe
PM
2252 *buffer = NULL;
2253
2254 old_chain = make_cleanup (free_current_contents, buffer);
c906108c
SS
2255
2256 if (len > 0)
2257 {
88db67ef
YQ
2258 /* We want fetchlimit chars, so we might as well read them all in
2259 one operation. */
325fac50 2260 unsigned int fetchlen = std::min ((unsigned) len, fetchlimit);
f380848e
SA
2261
2262 *buffer = (gdb_byte *) xmalloc (fetchlen * width);
ae6a3a4c 2263 bufptr = *buffer;
c906108c 2264
f380848e 2265 nfetch = partial_memory_read (addr, bufptr, fetchlen * width, &errcode)
c906108c
SS
2266 / width;
2267 addr += nfetch * width;
2268 bufptr += nfetch * width;
2269 }
2270 else if (len == -1)
2271 {
2272 unsigned long bufsize = 0;
88db67ef
YQ
2273 unsigned int chunksize; /* Size of each fetch, in chars. */
2274 int found_nul; /* Non-zero if we found the nul char. */
2275 gdb_byte *limit; /* First location past end of fetch buffer. */
2276
2277 found_nul = 0;
2278 /* We are looking for a NUL terminator to end the fetching, so we
2279 might as well read in blocks that are large enough to be efficient,
2280 but not so large as to be slow if fetchlimit happens to be large.
2281 So we choose the minimum of 8 and fetchlimit. We used to use 200
2282 instead of 8 but 200 is way too big for remote debugging over a
2283 serial line. */
325fac50 2284 chunksize = std::min (8u, fetchlimit);
ae6a3a4c 2285
c906108c
SS
2286 do
2287 {
2288 QUIT;
325fac50 2289 nfetch = std::min ((unsigned long) chunksize, fetchlimit - bufsize);
c906108c 2290
ae6a3a4c
TJB
2291 if (*buffer == NULL)
2292 *buffer = (gdb_byte *) xmalloc (nfetch * width);
c906108c 2293 else
b5096abe
PM
2294 *buffer = (gdb_byte *) xrealloc (*buffer,
2295 (nfetch + bufsize) * width);
c906108c 2296
ae6a3a4c 2297 bufptr = *buffer + bufsize * width;
c906108c
SS
2298 bufsize += nfetch;
2299
ae6a3a4c 2300 /* Read as much as we can. */
917317f4 2301 nfetch = partial_memory_read (addr, bufptr, nfetch * width, &errcode)
ae6a3a4c 2302 / width;
c906108c 2303
ae6a3a4c 2304 /* Scan this chunk for the null character that terminates the string
c906108c
SS
2305 to print. If found, we don't need to fetch any more. Note
2306 that bufptr is explicitly left pointing at the next character
ae6a3a4c
TJB
2307 after the null character, or at the next character after the end
2308 of the buffer. */
c906108c
SS
2309
2310 limit = bufptr + nfetch * width;
2311 while (bufptr < limit)
2312 {
2313 unsigned long c;
2314
e17a4113 2315 c = extract_unsigned_integer (bufptr, width, byte_order);
c906108c
SS
2316 addr += width;
2317 bufptr += width;
2318 if (c == 0)
2319 {
2320 /* We don't care about any error which happened after
ae6a3a4c 2321 the NUL terminator. */
c906108c
SS
2322 errcode = 0;
2323 found_nul = 1;
2324 break;
2325 }
2326 }
2327 }
c5aa993b 2328 while (errcode == 0 /* no error */
ae6a3a4c
TJB
2329 && bufptr - *buffer < fetchlimit * width /* no overrun */
2330 && !found_nul); /* haven't found NUL yet */
c906108c
SS
2331 }
2332 else
ae6a3a4c
TJB
2333 { /* Length of string is really 0! */
2334 /* We always allocate *buffer. */
224c3ddb 2335 *buffer = bufptr = (gdb_byte *) xmalloc (1);
c906108c
SS
2336 errcode = 0;
2337 }
2338
2339 /* bufptr and addr now point immediately beyond the last byte which we
2340 consider part of the string (including a '\0' which ends the string). */
ae6a3a4c
TJB
2341 *bytes_read = bufptr - *buffer;
2342
2343 QUIT;
2344
2345 discard_cleanups (old_chain);
2346
2347 return errcode;
2348}
2349
3b2b8fea
TT
2350/* Return true if print_wchar can display W without resorting to a
2351 numeric escape, false otherwise. */
2352
2353static int
2354wchar_printable (gdb_wchar_t w)
2355{
2356 return (gdb_iswprint (w)
2357 || w == LCST ('\a') || w == LCST ('\b')
2358 || w == LCST ('\f') || w == LCST ('\n')
2359 || w == LCST ('\r') || w == LCST ('\t')
2360 || w == LCST ('\v'));
2361}
2362
2363/* A helper function that converts the contents of STRING to wide
2364 characters and then appends them to OUTPUT. */
2365
2366static void
2367append_string_as_wide (const char *string,
2368 struct obstack *output)
2369{
2370 for (; *string; ++string)
2371 {
2372 gdb_wchar_t w = gdb_btowc (*string);
2373 obstack_grow (output, &w, sizeof (gdb_wchar_t));
2374 }
2375}
2376
2377/* Print a wide character W to OUTPUT. ORIG is a pointer to the
2378 original (target) bytes representing the character, ORIG_LEN is the
2379 number of valid bytes. WIDTH is the number of bytes in a base
2380 characters of the type. OUTPUT is an obstack to which wide
2381 characters are emitted. QUOTER is a (narrow) character indicating
2382 the style of quotes surrounding the character to be printed.
2383 NEED_ESCAPE is an in/out flag which is used to track numeric
2384 escapes across calls. */
2385
2386static void
2387print_wchar (gdb_wint_t w, const gdb_byte *orig,
2388 int orig_len, int width,
2389 enum bfd_endian byte_order,
2390 struct obstack *output,
2391 int quoter, int *need_escapep)
2392{
2393 int need_escape = *need_escapep;
2394
2395 *need_escapep = 0;
3b2b8fea 2396
95c64f92
YQ
2397 /* iswprint implementation on Windows returns 1 for tab character.
2398 In order to avoid different printout on this host, we explicitly
2399 use wchar_printable function. */
2400 switch (w)
3b2b8fea 2401 {
95c64f92
YQ
2402 case LCST ('\a'):
2403 obstack_grow_wstr (output, LCST ("\\a"));
2404 break;
2405 case LCST ('\b'):
2406 obstack_grow_wstr (output, LCST ("\\b"));
2407 break;
2408 case LCST ('\f'):
2409 obstack_grow_wstr (output, LCST ("\\f"));
2410 break;
2411 case LCST ('\n'):
2412 obstack_grow_wstr (output, LCST ("\\n"));
2413 break;
2414 case LCST ('\r'):
2415 obstack_grow_wstr (output, LCST ("\\r"));
2416 break;
2417 case LCST ('\t'):
2418 obstack_grow_wstr (output, LCST ("\\t"));
2419 break;
2420 case LCST ('\v'):
2421 obstack_grow_wstr (output, LCST ("\\v"));
2422 break;
2423 default:
3b2b8fea 2424 {
95c64f92
YQ
2425 if (wchar_printable (w) && (!need_escape || (!gdb_iswdigit (w)
2426 && w != LCST ('8')
2427 && w != LCST ('9'))))
2428 {
2429 gdb_wchar_t wchar = w;
3b2b8fea 2430
95c64f92
YQ
2431 if (w == gdb_btowc (quoter) || w == LCST ('\\'))
2432 obstack_grow_wstr (output, LCST ("\\"));
2433 obstack_grow (output, &wchar, sizeof (gdb_wchar_t));
2434 }
2435 else
2436 {
2437 int i;
3b2b8fea 2438
95c64f92
YQ
2439 for (i = 0; i + width <= orig_len; i += width)
2440 {
2441 char octal[30];
2442 ULONGEST value;
2443
2444 value = extract_unsigned_integer (&orig[i], width,
3b2b8fea 2445 byte_order);
95c64f92
YQ
2446 /* If the value fits in 3 octal digits, print it that
2447 way. Otherwise, print it as a hex escape. */
2448 if (value <= 0777)
2449 xsnprintf (octal, sizeof (octal), "\\%.3o",
2450 (int) (value & 0777));
2451 else
2452 xsnprintf (octal, sizeof (octal), "\\x%lx", (long) value);
2453 append_string_as_wide (octal, output);
2454 }
2455 /* If we somehow have extra bytes, print them now. */
2456 while (i < orig_len)
2457 {
2458 char octal[5];
2459
2460 xsnprintf (octal, sizeof (octal), "\\%.3o", orig[i] & 0xff);
2461 append_string_as_wide (octal, output);
2462 ++i;
2463 }
2464
2465 *need_escapep = 1;
2466 }
3b2b8fea
TT
2467 break;
2468 }
2469 }
2470}
2471
2472/* Print the character C on STREAM as part of the contents of a
2473 literal string whose delimiter is QUOTER. ENCODING names the
2474 encoding of C. */
2475
2476void
2477generic_emit_char (int c, struct type *type, struct ui_file *stream,
2478 int quoter, const char *encoding)
2479{
2480 enum bfd_endian byte_order
2481 = gdbarch_byte_order (get_type_arch (type));
3b2b8fea 2482 gdb_byte *buf;
3b2b8fea
TT
2483 int need_escape = 0;
2484
224c3ddb 2485 buf = (gdb_byte *) alloca (TYPE_LENGTH (type));
3b2b8fea
TT
2486 pack_long (buf, type, c);
2487
cda6c55b 2488 wchar_iterator iter (buf, TYPE_LENGTH (type), encoding, TYPE_LENGTH (type));
3b2b8fea
TT
2489
2490 /* This holds the printable form of the wchar_t data. */
8268c778 2491 auto_obstack wchar_buf;
3b2b8fea
TT
2492
2493 while (1)
2494 {
2495 int num_chars;
2496 gdb_wchar_t *chars;
2497 const gdb_byte *buf;
2498 size_t buflen;
2499 int print_escape = 1;
2500 enum wchar_iterate_result result;
2501
cda6c55b 2502 num_chars = iter.iterate (&result, &chars, &buf, &buflen);
3b2b8fea
TT
2503 if (num_chars < 0)
2504 break;
2505 if (num_chars > 0)
2506 {
2507 /* If all characters are printable, print them. Otherwise,
2508 we're going to have to print an escape sequence. We
2509 check all characters because we want to print the target
2510 bytes in the escape sequence, and we don't know character
2511 boundaries there. */
2512 int i;
2513
2514 print_escape = 0;
2515 for (i = 0; i < num_chars; ++i)
2516 if (!wchar_printable (chars[i]))
2517 {
2518 print_escape = 1;
2519 break;
2520 }
2521
2522 if (!print_escape)
2523 {
2524 for (i = 0; i < num_chars; ++i)
2525 print_wchar (chars[i], buf, buflen,
2526 TYPE_LENGTH (type), byte_order,
2527 &wchar_buf, quoter, &need_escape);
2528 }
2529 }
2530
2531 /* This handles the NUM_CHARS == 0 case as well. */
2532 if (print_escape)
2533 print_wchar (gdb_WEOF, buf, buflen, TYPE_LENGTH (type),
2534 byte_order, &wchar_buf, quoter, &need_escape);
2535 }
2536
2537 /* The output in the host encoding. */
8268c778 2538 auto_obstack output;
3b2b8fea
TT
2539
2540 convert_between_encodings (INTERMEDIATE_ENCODING, host_charset (),
ac91cd70 2541 (gdb_byte *) obstack_base (&wchar_buf),
3b2b8fea 2542 obstack_object_size (&wchar_buf),
fff10684 2543 sizeof (gdb_wchar_t), &output, translit_char);
3b2b8fea
TT
2544 obstack_1grow (&output, '\0');
2545
79f33898 2546 fputs_filtered ((const char *) obstack_base (&output), stream);
3b2b8fea
TT
2547}
2548
0d63ecda
KS
2549/* Return the repeat count of the next character/byte in ITER,
2550 storing the result in VEC. */
2551
2552static int
cda6c55b 2553count_next_character (wchar_iterator *iter,
0d63ecda
KS
2554 VEC (converted_character_d) **vec)
2555{
2556 struct converted_character *current;
2557
2558 if (VEC_empty (converted_character_d, *vec))
2559 {
2560 struct converted_character tmp;
2561 gdb_wchar_t *chars;
2562
2563 tmp.num_chars
cda6c55b 2564 = iter->iterate (&tmp.result, &chars, &tmp.buf, &tmp.buflen);
0d63ecda
KS
2565 if (tmp.num_chars > 0)
2566 {
2567 gdb_assert (tmp.num_chars < MAX_WCHARS);
2568 memcpy (tmp.chars, chars, tmp.num_chars * sizeof (gdb_wchar_t));
2569 }
2570 VEC_safe_push (converted_character_d, *vec, &tmp);
2571 }
2572
2573 current = VEC_last (converted_character_d, *vec);
2574
2575 /* Count repeated characters or bytes. */
2576 current->repeat_count = 1;
2577 if (current->num_chars == -1)
2578 {
2579 /* EOF */
2580 return -1;
2581 }
2582 else
2583 {
2584 gdb_wchar_t *chars;
2585 struct converted_character d;
2586 int repeat;
2587
2588 d.repeat_count = 0;
2589
2590 while (1)
2591 {
2592 /* Get the next character. */
cda6c55b 2593 d.num_chars = iter->iterate (&d.result, &chars, &d.buf, &d.buflen);
0d63ecda
KS
2594
2595 /* If a character was successfully converted, save the character
2596 into the converted character. */
2597 if (d.num_chars > 0)
2598 {
2599 gdb_assert (d.num_chars < MAX_WCHARS);
2600 memcpy (d.chars, chars, WCHAR_BUFLEN (d.num_chars));
2601 }
2602
2603 /* Determine if the current character is the same as this
2604 new character. */
2605 if (d.num_chars == current->num_chars && d.result == current->result)
2606 {
2607 /* There are two cases to consider:
2608
2609 1) Equality of converted character (num_chars > 0)
2610 2) Equality of non-converted character (num_chars == 0) */
2611 if ((current->num_chars > 0
2612 && memcmp (current->chars, d.chars,
2613 WCHAR_BUFLEN (current->num_chars)) == 0)
2614 || (current->num_chars == 0
2615 && current->buflen == d.buflen
2616 && memcmp (current->buf, d.buf, current->buflen) == 0))
2617 ++current->repeat_count;
2618 else
2619 break;
2620 }
2621 else
2622 break;
2623 }
2624
2625 /* Push this next converted character onto the result vector. */
2626 repeat = current->repeat_count;
2627 VEC_safe_push (converted_character_d, *vec, &d);
2628 return repeat;
2629 }
2630}
2631
2632/* Print the characters in CHARS to the OBSTACK. QUOTE_CHAR is the quote
2633 character to use with string output. WIDTH is the size of the output
2634 character type. BYTE_ORDER is the the target byte order. OPTIONS
2635 is the user's print options. */
2636
2637static void
2638print_converted_chars_to_obstack (struct obstack *obstack,
2639 VEC (converted_character_d) *chars,
2640 int quote_char, int width,
2641 enum bfd_endian byte_order,
2642 const struct value_print_options *options)
2643{
2644 unsigned int idx;
2645 struct converted_character *elem;
2646 enum {START, SINGLE, REPEAT, INCOMPLETE, FINISH} state, last;
2647 gdb_wchar_t wide_quote_char = gdb_btowc (quote_char);
2648 int need_escape = 0;
2649
2650 /* Set the start state. */
2651 idx = 0;
2652 last = state = START;
2653 elem = NULL;
2654
2655 while (1)
2656 {
2657 switch (state)
2658 {
2659 case START:
2660 /* Nothing to do. */
2661 break;
2662
2663 case SINGLE:
2664 {
2665 int j;
2666
2667 /* We are outputting a single character
2668 (< options->repeat_count_threshold). */
2669
2670 if (last != SINGLE)
2671 {
2672 /* We were outputting some other type of content, so we
2673 must output and a comma and a quote. */
2674 if (last != START)
2675 obstack_grow_wstr (obstack, LCST (", "));
0d63ecda
KS
2676 obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
2677 }
2678 /* Output the character. */
2679 for (j = 0; j < elem->repeat_count; ++j)
2680 {
2681 if (elem->result == wchar_iterate_ok)
2682 print_wchar (elem->chars[0], elem->buf, elem->buflen, width,
2683 byte_order, obstack, quote_char, &need_escape);
2684 else
2685 print_wchar (gdb_WEOF, elem->buf, elem->buflen, width,
2686 byte_order, obstack, quote_char, &need_escape);
2687 }
2688 }
2689 break;
2690
2691 case REPEAT:
2692 {
2693 int j;
2694 char *s;
2695
2696 /* We are outputting a character with a repeat count
2697 greater than options->repeat_count_threshold. */
2698
2699 if (last == SINGLE)
2700 {
2701 /* We were outputting a single string. Terminate the
2702 string. */
0d63ecda
KS
2703 obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
2704 }
2705 if (last != START)
2706 obstack_grow_wstr (obstack, LCST (", "));
2707
2708 /* Output the character and repeat string. */
2709 obstack_grow_wstr (obstack, LCST ("'"));
2710 if (elem->result == wchar_iterate_ok)
2711 print_wchar (elem->chars[0], elem->buf, elem->buflen, width,
2712 byte_order, obstack, quote_char, &need_escape);
2713 else
2714 print_wchar (gdb_WEOF, elem->buf, elem->buflen, width,
2715 byte_order, obstack, quote_char, &need_escape);
2716 obstack_grow_wstr (obstack, LCST ("'"));
2717 s = xstrprintf (_(" <repeats %u times>"), elem->repeat_count);
2718 for (j = 0; s[j]; ++j)
2719 {
2720 gdb_wchar_t w = gdb_btowc (s[j]);
2721 obstack_grow (obstack, &w, sizeof (gdb_wchar_t));
2722 }
2723 xfree (s);
2724 }
2725 break;
2726
2727 case INCOMPLETE:
2728 /* We are outputting an incomplete sequence. */
2729 if (last == SINGLE)
2730 {
2731 /* If we were outputting a string of SINGLE characters,
2732 terminate the quote. */
0d63ecda
KS
2733 obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
2734 }
2735 if (last != START)
2736 obstack_grow_wstr (obstack, LCST (", "));
2737
2738 /* Output the incomplete sequence string. */
2739 obstack_grow_wstr (obstack, LCST ("<incomplete sequence "));
2740 print_wchar (gdb_WEOF, elem->buf, elem->buflen, width, byte_order,
2741 obstack, 0, &need_escape);
2742 obstack_grow_wstr (obstack, LCST (">"));
2743
2744 /* We do not attempt to outupt anything after this. */
2745 state = FINISH;
2746 break;
2747
2748 case FINISH:
2749 /* All done. If we were outputting a string of SINGLE
2750 characters, the string must be terminated. Otherwise,
2751 REPEAT and INCOMPLETE are always left properly terminated. */
2752 if (last == SINGLE)
e93a8774 2753 obstack_grow (obstack, &wide_quote_char, sizeof (gdb_wchar_t));
0d63ecda
KS
2754
2755 return;
2756 }
2757
2758 /* Get the next element and state. */
2759 last = state;
2760 if (state != FINISH)
2761 {
2762 elem = VEC_index (converted_character_d, chars, idx++);
2763 switch (elem->result)
2764 {
2765 case wchar_iterate_ok:
2766 case wchar_iterate_invalid:
2767 if (elem->repeat_count > options->repeat_count_threshold)
2768 state = REPEAT;
2769 else
2770 state = SINGLE;
2771 break;
2772
2773 case wchar_iterate_incomplete:
2774 state = INCOMPLETE;
2775 break;
2776
2777 case wchar_iterate_eof:
2778 state = FINISH;
2779 break;
2780 }
2781 }
2782 }
2783}
2784
3b2b8fea
TT
2785/* Print the character string STRING, printing at most LENGTH
2786 characters. LENGTH is -1 if the string is nul terminated. TYPE is
2787 the type of each character. OPTIONS holds the printing options;
2788 printing stops early if the number hits print_max; repeat counts
2789 are printed as appropriate. Print ellipses at the end if we had to
2790 stop before printing LENGTH characters, or if FORCE_ELLIPSES.
2791 QUOTE_CHAR is the character to print at each end of the string. If
2792 C_STYLE_TERMINATOR is true, and the last character is 0, then it is
2793 omitted. */
2794
2795void
2796generic_printstr (struct ui_file *stream, struct type *type,
2797 const gdb_byte *string, unsigned int length,
2798 const char *encoding, int force_ellipses,
2799 int quote_char, int c_style_terminator,
2800 const struct value_print_options *options)
2801{
2802 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
2803 unsigned int i;
3b2b8fea 2804 int width = TYPE_LENGTH (type);
3b2b8fea 2805 struct cleanup *cleanup;
3b2b8fea 2806 int finished = 0;
0d63ecda
KS
2807 struct converted_character *last;
2808 VEC (converted_character_d) *converted_chars;
3b2b8fea
TT
2809
2810 if (length == -1)
2811 {
2812 unsigned long current_char = 1;
2813
2814 for (i = 0; current_char; ++i)
2815 {
2816 QUIT;
2817 current_char = extract_unsigned_integer (string + i * width,
2818 width, byte_order);
2819 }
2820 length = i;
2821 }
2822
2823 /* If the string was not truncated due to `set print elements', and
2824 the last byte of it is a null, we don't print that, in
2825 traditional C style. */
2826 if (c_style_terminator
2827 && !force_ellipses
2828 && length > 0
2829 && (extract_unsigned_integer (string + (length - 1) * width,
2830 width, byte_order) == 0))
2831 length--;
2832
2833 if (length == 0)
2834 {
2835 fputs_filtered ("\"\"", stream);
2836 return;
2837 }
2838
2839 /* Arrange to iterate over the characters, in wchar_t form. */
cda6c55b 2840 wchar_iterator iter (string, length * width, encoding, width);
0d63ecda 2841 converted_chars = NULL;
cda6c55b
TT
2842 cleanup = make_cleanup (VEC_cleanup (converted_character_d),
2843 &converted_chars);
3b2b8fea 2844
0d63ecda
KS
2845 /* Convert characters until the string is over or the maximum
2846 number of printed characters has been reached. */
2847 i = 0;
2848 while (i < options->print_max)
3b2b8fea 2849 {
0d63ecda 2850 int r;
3b2b8fea
TT
2851
2852 QUIT;
2853
0d63ecda 2854 /* Grab the next character and repeat count. */
cda6c55b 2855 r = count_next_character (&iter, &converted_chars);
3b2b8fea 2856
0d63ecda
KS
2857 /* If less than zero, the end of the input string was reached. */
2858 if (r < 0)
2859 break;
3b2b8fea 2860
0d63ecda
KS
2861 /* Otherwise, add the count to the total print count and get
2862 the next character. */
2863 i += r;
2864 }
3b2b8fea 2865
0d63ecda
KS
2866 /* Get the last element and determine if the entire string was
2867 processed. */
2868 last = VEC_last (converted_character_d, converted_chars);
2869 finished = (last->result == wchar_iterate_eof);
3b2b8fea 2870
0d63ecda
KS
2871 /* Ensure that CONVERTED_CHARS is terminated. */
2872 last->result = wchar_iterate_eof;
3b2b8fea 2873
0d63ecda
KS
2874 /* WCHAR_BUF is the obstack we use to represent the string in
2875 wchar_t form. */
8268c778 2876 auto_obstack wchar_buf;
3b2b8fea 2877
0d63ecda
KS
2878 /* Print the output string to the obstack. */
2879 print_converted_chars_to_obstack (&wchar_buf, converted_chars, quote_char,
2880 width, byte_order, options);
3b2b8fea
TT
2881
2882 if (force_ellipses || !finished)
2883 obstack_grow_wstr (&wchar_buf, LCST ("..."));
2884
2885 /* OUTPUT is where we collect `char's for printing. */
8268c778 2886 auto_obstack output;
3b2b8fea
TT
2887
2888 convert_between_encodings (INTERMEDIATE_ENCODING, host_charset (),
ac91cd70 2889 (gdb_byte *) obstack_base (&wchar_buf),
3b2b8fea 2890 obstack_object_size (&wchar_buf),
fff10684 2891 sizeof (gdb_wchar_t), &output, translit_char);
3b2b8fea
TT
2892 obstack_1grow (&output, '\0');
2893
79f33898 2894 fputs_filtered ((const char *) obstack_base (&output), stream);
3b2b8fea
TT
2895
2896 do_cleanups (cleanup);
2897}
2898
ae6a3a4c
TJB
2899/* Print a string from the inferior, starting at ADDR and printing up to LEN
2900 characters, of WIDTH bytes a piece, to STREAM. If LEN is -1, printing
2901 stops at the first null byte, otherwise printing proceeds (including null
2902 bytes) until either print_max or LEN characters have been printed,
09ca9e2e
TT
2903 whichever is smaller. ENCODING is the name of the string's
2904 encoding. It can be NULL, in which case the target encoding is
2905 assumed. */
ae6a3a4c
TJB
2906
2907int
09ca9e2e
TT
2908val_print_string (struct type *elttype, const char *encoding,
2909 CORE_ADDR addr, int len,
6c7a06a3 2910 struct ui_file *stream,
ae6a3a4c
TJB
2911 const struct value_print_options *options)
2912{
2913 int force_ellipsis = 0; /* Force ellipsis to be printed if nonzero. */
d09f2c3f 2914 int err; /* Non-zero if we got a bad read. */
581e13c1 2915 int found_nul; /* Non-zero if we found the nul char. */
ae6a3a4c
TJB
2916 unsigned int fetchlimit; /* Maximum number of chars to print. */
2917 int bytes_read;
2918 gdb_byte *buffer = NULL; /* Dynamically growable fetch buffer. */
2919 struct cleanup *old_chain = NULL; /* Top of the old cleanup chain. */
5af949e3 2920 struct gdbarch *gdbarch = get_type_arch (elttype);
e17a4113 2921 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
6c7a06a3 2922 int width = TYPE_LENGTH (elttype);
ae6a3a4c
TJB
2923
2924 /* First we need to figure out the limit on the number of characters we are
2925 going to attempt to fetch and print. This is actually pretty simple. If
2926 LEN >= zero, then the limit is the minimum of LEN and print_max. If
2927 LEN is -1, then the limit is print_max. This is true regardless of
2928 whether print_max is zero, UINT_MAX (unlimited), or something in between,
2929 because finding the null byte (or available memory) is what actually
2930 limits the fetch. */
2931
325fac50
PA
2932 fetchlimit = (len == -1 ? options->print_max : std::min ((unsigned) len,
2933 options->print_max));
ae6a3a4c 2934
d09f2c3f
PA
2935 err = read_string (addr, len, width, fetchlimit, byte_order,
2936 &buffer, &bytes_read);
ae6a3a4c
TJB
2937 old_chain = make_cleanup (xfree, buffer);
2938
2939 addr += bytes_read;
c906108c 2940
3e43a32a
MS
2941 /* We now have either successfully filled the buffer to fetchlimit,
2942 or terminated early due to an error or finding a null char when
2943 LEN is -1. */
ae6a3a4c
TJB
2944
2945 /* Determine found_nul by looking at the last character read. */
6694c411
JK
2946 found_nul = 0;
2947 if (bytes_read >= width)
2948 found_nul = extract_unsigned_integer (buffer + bytes_read - width, width,
2949 byte_order) == 0;
c906108c
SS
2950 if (len == -1 && !found_nul)
2951 {
777ea8f1 2952 gdb_byte *peekbuf;
c906108c 2953
ae6a3a4c 2954 /* We didn't find a NUL terminator we were looking for. Attempt
c5aa993b
JM
2955 to peek at the next character. If not successful, or it is not
2956 a null byte, then force ellipsis to be printed. */
c906108c 2957
777ea8f1 2958 peekbuf = (gdb_byte *) alloca (width);
c906108c
SS
2959
2960 if (target_read_memory (addr, peekbuf, width) == 0
e17a4113 2961 && extract_unsigned_integer (peekbuf, width, byte_order) != 0)
c906108c
SS
2962 force_ellipsis = 1;
2963 }
d09f2c3f 2964 else if ((len >= 0 && err != 0) || (len > bytes_read / width))
c906108c
SS
2965 {
2966 /* Getting an error when we have a requested length, or fetching less
c5aa993b 2967 than the number of characters actually requested, always make us
ae6a3a4c 2968 print ellipsis. */
c906108c
SS
2969 force_ellipsis = 1;
2970 }
2971
c906108c
SS
2972 /* If we get an error before fetching anything, don't print a string.
2973 But if we fetch something and then get an error, print the string
2974 and then the error message. */
d09f2c3f 2975 if (err == 0 || bytes_read > 0)
c906108c 2976 {
be759fcf 2977 LA_PRINT_STRING (stream, elttype, buffer, bytes_read / width,
3a772aa4 2978 encoding, force_ellipsis, options);
c906108c
SS
2979 }
2980
d09f2c3f 2981 if (err != 0)
c906108c 2982 {
1ccbe998 2983 std::string str = memory_error_message (TARGET_XFER_E_IO, gdbarch, addr);
578d3588
PA
2984
2985 fprintf_filtered (stream, "<error: ");
1ccbe998 2986 fputs_filtered (str.c_str (), stream);
578d3588 2987 fprintf_filtered (stream, ">");
c906108c 2988 }
ae6a3a4c 2989
c906108c
SS
2990 gdb_flush (stream);
2991 do_cleanups (old_chain);
ae6a3a4c
TJB
2992
2993 return (bytes_read / width);
c906108c 2994}
c906108c 2995\f
c5aa993b 2996
09e6485f
PA
2997/* The 'set input-radix' command writes to this auxiliary variable.
2998 If the requested radix is valid, INPUT_RADIX is updated; otherwise,
2999 it is left unchanged. */
3000
3001static unsigned input_radix_1 = 10;
3002
c906108c
SS
3003/* Validate an input or output radix setting, and make sure the user
3004 knows what they really did here. Radix setting is confusing, e.g.
3005 setting the input radix to "10" never changes it! */
3006
c906108c 3007static void
fba45db2 3008set_input_radix (char *args, int from_tty, struct cmd_list_element *c)
c906108c 3009{
09e6485f 3010 set_input_radix_1 (from_tty, input_radix_1);
c906108c
SS
3011}
3012
c906108c 3013static void
fba45db2 3014set_input_radix_1 (int from_tty, unsigned radix)
c906108c
SS
3015{
3016 /* We don't currently disallow any input radix except 0 or 1, which don't
3017 make any mathematical sense. In theory, we can deal with any input
3018 radix greater than 1, even if we don't have unique digits for every
3019 value from 0 to radix-1, but in practice we lose on large radix values.
3020 We should either fix the lossage or restrict the radix range more.
581e13c1 3021 (FIXME). */
c906108c
SS
3022
3023 if (radix < 2)
3024 {
09e6485f 3025 input_radix_1 = input_radix;
8a3fe4f8 3026 error (_("Nonsense input radix ``decimal %u''; input radix unchanged."),
c906108c
SS
3027 radix);
3028 }
09e6485f 3029 input_radix_1 = input_radix = radix;
c906108c
SS
3030 if (from_tty)
3031 {
3e43a32a
MS
3032 printf_filtered (_("Input radix now set to "
3033 "decimal %u, hex %x, octal %o.\n"),
c906108c
SS
3034 radix, radix, radix);
3035 }
3036}
3037
09e6485f
PA
3038/* The 'set output-radix' command writes to this auxiliary variable.
3039 If the requested radix is valid, OUTPUT_RADIX is updated,
3040 otherwise, it is left unchanged. */
3041
3042static unsigned output_radix_1 = 10;
3043
c906108c 3044static void
fba45db2 3045set_output_radix (char *args, int from_tty, struct cmd_list_element *c)
c906108c 3046{
09e6485f 3047 set_output_radix_1 (from_tty, output_radix_1);
c906108c
SS
3048}
3049
3050static void
fba45db2 3051set_output_radix_1 (int from_tty, unsigned radix)
c906108c
SS
3052{
3053 /* Validate the radix and disallow ones that we aren't prepared to
581e13c1 3054 handle correctly, leaving the radix unchanged. */
c906108c
SS
3055 switch (radix)
3056 {
3057 case 16:
79a45b7d 3058 user_print_options.output_format = 'x'; /* hex */
c906108c
SS
3059 break;
3060 case 10:
79a45b7d 3061 user_print_options.output_format = 0; /* decimal */
c906108c
SS
3062 break;
3063 case 8:
79a45b7d 3064 user_print_options.output_format = 'o'; /* octal */
c906108c
SS
3065 break;
3066 default:
09e6485f 3067 output_radix_1 = output_radix;
3e43a32a
MS
3068 error (_("Unsupported output radix ``decimal %u''; "
3069 "output radix unchanged."),
c906108c
SS
3070 radix);
3071 }
09e6485f 3072 output_radix_1 = output_radix = radix;
c906108c
SS
3073 if (from_tty)
3074 {
3e43a32a
MS
3075 printf_filtered (_("Output radix now set to "
3076 "decimal %u, hex %x, octal %o.\n"),
c906108c
SS
3077 radix, radix, radix);
3078 }
3079}
3080
3081/* Set both the input and output radix at once. Try to set the output radix
3082 first, since it has the most restrictive range. An radix that is valid as
3083 an output radix is also valid as an input radix.
3084
3085 It may be useful to have an unusual input radix. If the user wishes to
3086 set an input radix that is not valid as an output radix, he needs to use
581e13c1 3087 the 'set input-radix' command. */
c906108c
SS
3088
3089static void
b0a8e6c4 3090set_radix (const char *arg, int from_tty)
c906108c
SS
3091{
3092 unsigned radix;
3093
bb518678 3094 radix = (arg == NULL) ? 10 : parse_and_eval_long (arg);
c906108c
SS
3095 set_output_radix_1 (0, radix);
3096 set_input_radix_1 (0, radix);
3097 if (from_tty)
3098 {
3e43a32a
MS
3099 printf_filtered (_("Input and output radices now set to "
3100 "decimal %u, hex %x, octal %o.\n"),
c906108c
SS
3101 radix, radix, radix);
3102 }
3103}
3104
581e13c1 3105/* Show both the input and output radices. */
c906108c 3106
c906108c 3107static void
b0a8e6c4 3108show_radix (const char *arg, int from_tty)
c906108c
SS
3109{
3110 if (from_tty)
3111 {
3112 if (input_radix == output_radix)
3113 {
3e43a32a
MS
3114 printf_filtered (_("Input and output radices set to "
3115 "decimal %u, hex %x, octal %o.\n"),
c906108c
SS
3116 input_radix, input_radix, input_radix);
3117 }
3118 else
3119 {
3e43a32a
MS
3120 printf_filtered (_("Input radix set to decimal "
3121 "%u, hex %x, octal %o.\n"),
c906108c 3122 input_radix, input_radix, input_radix);
3e43a32a
MS
3123 printf_filtered (_("Output radix set to decimal "
3124 "%u, hex %x, octal %o.\n"),
c906108c
SS
3125 output_radix, output_radix, output_radix);
3126 }
3127 }
3128}
c906108c 3129\f
c5aa993b 3130
c906108c 3131static void
fba45db2 3132set_print (char *arg, int from_tty)
c906108c
SS
3133{
3134 printf_unfiltered (
c5aa993b 3135 "\"set print\" must be followed by the name of a print subcommand.\n");
635c7e8a 3136 help_list (setprintlist, "set print ", all_commands, gdb_stdout);
c906108c
SS
3137}
3138
c906108c 3139static void
fba45db2 3140show_print (char *args, int from_tty)
c906108c
SS
3141{
3142 cmd_show_list (showprintlist, from_tty, "");
3143}
e7045703
DE
3144
3145static void
3146set_print_raw (char *arg, int from_tty)
3147{
3148 printf_unfiltered (
3149 "\"set print raw\" must be followed by the name of a \"print raw\" subcommand.\n");
635c7e8a 3150 help_list (setprintrawlist, "set print raw ", all_commands, gdb_stdout);
e7045703
DE
3151}
3152
3153static void
3154show_print_raw (char *args, int from_tty)
3155{
3156 cmd_show_list (showprintrawlist, from_tty, "");
3157}
3158
c906108c
SS
3159\f
3160void
fba45db2 3161_initialize_valprint (void)
c906108c 3162{
c906108c 3163 add_prefix_cmd ("print", no_class, set_print,
1bedd215 3164 _("Generic command for setting how things print."),
c906108c 3165 &setprintlist, "set print ", 0, &setlist);
c5aa993b 3166 add_alias_cmd ("p", "print", no_class, 1, &setlist);
581e13c1 3167 /* Prefer set print to set prompt. */
c906108c
SS
3168 add_alias_cmd ("pr", "print", no_class, 1, &setlist);
3169
3170 add_prefix_cmd ("print", no_class, show_print,
1bedd215 3171 _("Generic command for showing print settings."),
c906108c 3172 &showprintlist, "show print ", 0, &showlist);
c5aa993b
JM
3173 add_alias_cmd ("p", "print", no_class, 1, &showlist);
3174 add_alias_cmd ("pr", "print", no_class, 1, &showlist);
c906108c 3175
e7045703
DE
3176 add_prefix_cmd ("raw", no_class, set_print_raw,
3177 _("\
3178Generic command for setting what things to print in \"raw\" mode."),
3179 &setprintrawlist, "set print raw ", 0, &setprintlist);
3180 add_prefix_cmd ("raw", no_class, show_print_raw,
3181 _("Generic command for showing \"print raw\" settings."),
3182 &showprintrawlist, "show print raw ", 0, &showprintlist);
3183
79a45b7d
TT
3184 add_setshow_uinteger_cmd ("elements", no_class,
3185 &user_print_options.print_max, _("\
35096d9d
AC
3186Set limit on string chars or array elements to print."), _("\
3187Show limit on string chars or array elements to print."), _("\
f81d1120 3188\"set print elements unlimited\" causes there to be no limit."),
35096d9d 3189 NULL,
920d2a44 3190 show_print_max,
35096d9d 3191 &setprintlist, &showprintlist);
c906108c 3192
79a45b7d
TT
3193 add_setshow_boolean_cmd ("null-stop", no_class,
3194 &user_print_options.stop_print_at_null, _("\
5bf193a2
AC
3195Set printing of char arrays to stop at first null char."), _("\
3196Show printing of char arrays to stop at first null char."), NULL,
3197 NULL,
920d2a44 3198 show_stop_print_at_null,
5bf193a2 3199 &setprintlist, &showprintlist);
c906108c 3200
35096d9d 3201 add_setshow_uinteger_cmd ("repeats", no_class,
79a45b7d 3202 &user_print_options.repeat_count_threshold, _("\
35096d9d
AC
3203Set threshold for repeated print elements."), _("\
3204Show threshold for repeated print elements."), _("\
f81d1120 3205\"set print repeats unlimited\" causes all elements to be individually printed."),
35096d9d 3206 NULL,
920d2a44 3207 show_repeat_count_threshold,
35096d9d 3208 &setprintlist, &showprintlist);
c906108c 3209
79a45b7d 3210 add_setshow_boolean_cmd ("pretty", class_support,
2a998fc0
DE
3211 &user_print_options.prettyformat_structs, _("\
3212Set pretty formatting of structures."), _("\
3213Show pretty formatting of structures."), NULL,
5bf193a2 3214 NULL,
2a998fc0 3215 show_prettyformat_structs,
5bf193a2
AC
3216 &setprintlist, &showprintlist);
3217
79a45b7d
TT
3218 add_setshow_boolean_cmd ("union", class_support,
3219 &user_print_options.unionprint, _("\
5bf193a2
AC
3220Set printing of unions interior to structures."), _("\
3221Show printing of unions interior to structures."), NULL,
3222 NULL,
920d2a44 3223 show_unionprint,
5bf193a2
AC
3224 &setprintlist, &showprintlist);
3225
79a45b7d 3226 add_setshow_boolean_cmd ("array", class_support,
2a998fc0
DE
3227 &user_print_options.prettyformat_arrays, _("\
3228Set pretty formatting of arrays."), _("\
3229Show pretty formatting of arrays."), NULL,
5bf193a2 3230 NULL,
2a998fc0 3231 show_prettyformat_arrays,
5bf193a2
AC
3232 &setprintlist, &showprintlist);
3233
79a45b7d
TT
3234 add_setshow_boolean_cmd ("address", class_support,
3235 &user_print_options.addressprint, _("\
5bf193a2
AC
3236Set printing of addresses."), _("\
3237Show printing of addresses."), NULL,
3238 NULL,
920d2a44 3239 show_addressprint,
5bf193a2 3240 &setprintlist, &showprintlist);
c906108c 3241
9cb709b6
TT
3242 add_setshow_boolean_cmd ("symbol", class_support,
3243 &user_print_options.symbol_print, _("\
3244Set printing of symbol names when printing pointers."), _("\
3245Show printing of symbol names when printing pointers."),
3246 NULL, NULL,
3247 show_symbol_print,
3248 &setprintlist, &showprintlist);
3249
1e8fb976
PA
3250 add_setshow_zuinteger_cmd ("input-radix", class_support, &input_radix_1,
3251 _("\
35096d9d
AC
3252Set default input radix for entering numbers."), _("\
3253Show default input radix for entering numbers."), NULL,
1e8fb976
PA
3254 set_input_radix,
3255 show_input_radix,
3256 &setlist, &showlist);
35096d9d 3257
1e8fb976
PA
3258 add_setshow_zuinteger_cmd ("output-radix", class_support, &output_radix_1,
3259 _("\
35096d9d
AC
3260Set default output radix for printing of values."), _("\
3261Show default output radix for printing of values."), NULL,
1e8fb976
PA
3262 set_output_radix,
3263 show_output_radix,
3264 &setlist, &showlist);
c906108c 3265
cb1a6d5f
AC
3266 /* The "set radix" and "show radix" commands are special in that
3267 they are like normal set and show commands but allow two normally
3268 independent variables to be either set or shown with a single
b66df561 3269 command. So the usual deprecated_add_set_cmd() and [deleted]
581e13c1 3270 add_show_from_set() commands aren't really appropriate. */
b66df561
AC
3271 /* FIXME: i18n: With the new add_setshow_integer command, that is no
3272 longer true - show can display anything. */
1a966eab
AC
3273 add_cmd ("radix", class_support, set_radix, _("\
3274Set default input and output number radices.\n\
c906108c 3275Use 'set input-radix' or 'set output-radix' to independently set each.\n\
1a966eab 3276Without an argument, sets both radices back to the default value of 10."),
c906108c 3277 &setlist);
1a966eab
AC
3278 add_cmd ("radix", class_support, show_radix, _("\
3279Show the default input and output number radices.\n\
3280Use 'show input-radix' or 'show output-radix' to independently show each."),
c906108c
SS
3281 &showlist);
3282
e79af960 3283 add_setshow_boolean_cmd ("array-indexes", class_support,
79a45b7d 3284 &user_print_options.print_array_indexes, _("\
e79af960
JB
3285Set printing of array indexes."), _("\
3286Show printing of array indexes"), NULL, NULL, show_print_array_indexes,
3287 &setprintlist, &showprintlist);
c906108c 3288}
This page took 2.089046 seconds and 4 git commands to generate.