]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gdb/printcmd.c
Convert CORE_ADDR to Python using gdb_py_object_from_ulongest
[thirdparty/binutils-gdb.git] / gdb / printcmd.c
1 /* Print values for GNU debugger GDB.
2
3 Copyright (C) 1986-2020 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
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
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
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.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20 #include "defs.h"
21 #include "frame.h"
22 #include "symtab.h"
23 #include "gdbtypes.h"
24 #include "value.h"
25 #include "language.h"
26 #include "c-lang.h"
27 #include "expression.h"
28 #include "gdbcore.h"
29 #include "gdbcmd.h"
30 #include "target.h"
31 #include "breakpoint.h"
32 #include "demangle.h"
33 #include "gdb-demangle.h"
34 #include "valprint.h"
35 #include "annotate.h"
36 #include "symfile.h" /* for overlay functions */
37 #include "objfiles.h" /* ditto */
38 #include "completer.h" /* for completion functions */
39 #include "ui-out.h"
40 #include "block.h"
41 #include "disasm.h"
42 #include "target-float.h"
43 #include "observable.h"
44 #include "solist.h"
45 #include "parser-defs.h"
46 #include "charset.h"
47 #include "arch-utils.h"
48 #include "cli/cli-utils.h"
49 #include "cli/cli-option.h"
50 #include "cli/cli-script.h"
51 #include "cli/cli-style.h"
52 #include "gdbsupport/format.h"
53 #include "source.h"
54 #include "gdbsupport/byte-vector.h"
55 #include "gdbsupport/gdb_optional.h"
56
57 /* Last specified output format. */
58
59 static char last_format = 0;
60
61 /* Last specified examination size. 'b', 'h', 'w' or `q'. */
62
63 static char last_size = 'w';
64
65 /* Last specified count for the 'x' command. */
66
67 static int last_count;
68
69 /* Default address to examine next, and associated architecture. */
70
71 static struct gdbarch *next_gdbarch;
72 static CORE_ADDR next_address;
73
74 /* Number of delay instructions following current disassembled insn. */
75
76 static int branch_delay_insns;
77
78 /* Last address examined. */
79
80 static CORE_ADDR last_examine_address;
81
82 /* Contents of last address examined.
83 This is not valid past the end of the `x' command! */
84
85 static value_ref_ptr last_examine_value;
86
87 /* Largest offset between a symbolic value and an address, that will be
88 printed as `0x1234 <symbol+offset>'. */
89
90 static unsigned int max_symbolic_offset = UINT_MAX;
91 static void
92 show_max_symbolic_offset (struct ui_file *file, int from_tty,
93 struct cmd_list_element *c, const char *value)
94 {
95 fprintf_filtered (file,
96 _("The largest offset that will be "
97 "printed in <symbol+1234> form is %s.\n"),
98 value);
99 }
100
101 /* Append the source filename and linenumber of the symbol when
102 printing a symbolic value as `<symbol at filename:linenum>' if set. */
103 static bool print_symbol_filename = false;
104 static void
105 show_print_symbol_filename (struct ui_file *file, int from_tty,
106 struct cmd_list_element *c, const char *value)
107 {
108 fprintf_filtered (file, _("Printing of source filename and "
109 "line number with <symbol> is %s.\n"),
110 value);
111 }
112
113 /* Number of auto-display expression currently being displayed.
114 So that we can disable it if we get a signal within it.
115 -1 when not doing one. */
116
117 static int current_display_number;
118
119 /* Last allocated display number. */
120
121 static int display_number;
122
123 struct display
124 {
125 display (const char *exp_string_, expression_up &&exp_,
126 const struct format_data &format_, struct program_space *pspace_,
127 const struct block *block_)
128 : exp_string (exp_string_),
129 exp (std::move (exp_)),
130 number (++display_number),
131 format (format_),
132 pspace (pspace_),
133 block (block_),
134 enabled_p (true)
135 {
136 }
137
138 /* The expression as the user typed it. */
139 std::string exp_string;
140
141 /* Expression to be evaluated and displayed. */
142 expression_up exp;
143
144 /* Item number of this auto-display item. */
145 int number;
146
147 /* Display format specified. */
148 struct format_data format;
149
150 /* Program space associated with `block'. */
151 struct program_space *pspace;
152
153 /* Innermost block required by this expression when evaluated. */
154 const struct block *block;
155
156 /* Status of this display (enabled or disabled). */
157 bool enabled_p;
158 };
159
160 /* Expressions whose values should be displayed automatically each
161 time the program stops. */
162
163 static std::vector<std::unique_ptr<struct display>> all_displays;
164
165 /* Prototypes for local functions. */
166
167 static void do_one_display (struct display *);
168 \f
169
170 /* Decode a format specification. *STRING_PTR should point to it.
171 OFORMAT and OSIZE are used as defaults for the format and size
172 if none are given in the format specification.
173 If OSIZE is zero, then the size field of the returned value
174 should be set only if a size is explicitly specified by the
175 user.
176 The structure returned describes all the data
177 found in the specification. In addition, *STRING_PTR is advanced
178 past the specification and past all whitespace following it. */
179
180 static struct format_data
181 decode_format (const char **string_ptr, int oformat, int osize)
182 {
183 struct format_data val;
184 const char *p = *string_ptr;
185
186 val.format = '?';
187 val.size = '?';
188 val.count = 1;
189 val.raw = 0;
190
191 if (*p == '-')
192 {
193 val.count = -1;
194 p++;
195 }
196 if (*p >= '0' && *p <= '9')
197 val.count *= atoi (p);
198 while (*p >= '0' && *p <= '9')
199 p++;
200
201 /* Now process size or format letters that follow. */
202
203 while (1)
204 {
205 if (*p == 'b' || *p == 'h' || *p == 'w' || *p == 'g')
206 val.size = *p++;
207 else if (*p == 'r')
208 {
209 val.raw = 1;
210 p++;
211 }
212 else if (*p >= 'a' && *p <= 'z')
213 val.format = *p++;
214 else
215 break;
216 }
217
218 *string_ptr = skip_spaces (p);
219
220 /* Set defaults for format and size if not specified. */
221 if (val.format == '?')
222 {
223 if (val.size == '?')
224 {
225 /* Neither has been specified. */
226 val.format = oformat;
227 val.size = osize;
228 }
229 else
230 /* If a size is specified, any format makes a reasonable
231 default except 'i'. */
232 val.format = oformat == 'i' ? 'x' : oformat;
233 }
234 else if (val.size == '?')
235 switch (val.format)
236 {
237 case 'a':
238 /* Pick the appropriate size for an address. This is deferred
239 until do_examine when we know the actual architecture to use.
240 A special size value of 'a' is used to indicate this case. */
241 val.size = osize ? 'a' : osize;
242 break;
243 case 'f':
244 /* Floating point has to be word or giantword. */
245 if (osize == 'w' || osize == 'g')
246 val.size = osize;
247 else
248 /* Default it to giantword if the last used size is not
249 appropriate. */
250 val.size = osize ? 'g' : osize;
251 break;
252 case 'c':
253 /* Characters default to one byte. */
254 val.size = osize ? 'b' : osize;
255 break;
256 case 's':
257 /* Display strings with byte size chars unless explicitly
258 specified. */
259 val.size = '\0';
260 break;
261
262 default:
263 /* The default is the size most recently specified. */
264 val.size = osize;
265 }
266
267 return val;
268 }
269 \f
270 /* Print value VAL on stream according to OPTIONS.
271 Do not end with a newline.
272 SIZE is the letter for the size of datum being printed.
273 This is used to pad hex numbers so they line up. SIZE is 0
274 for print / output and set for examine. */
275
276 static void
277 print_formatted (struct value *val, int size,
278 const struct value_print_options *options,
279 struct ui_file *stream)
280 {
281 struct type *type = check_typedef (value_type (val));
282 int len = TYPE_LENGTH (type);
283
284 if (VALUE_LVAL (val) == lval_memory)
285 next_address = value_address (val) + len;
286
287 if (size)
288 {
289 switch (options->format)
290 {
291 case 's':
292 {
293 struct type *elttype = value_type (val);
294
295 next_address = (value_address (val)
296 + val_print_string (elttype, NULL,
297 value_address (val), -1,
298 stream, options) * len);
299 }
300 return;
301
302 case 'i':
303 /* We often wrap here if there are long symbolic names. */
304 wrap_here (" ");
305 next_address = (value_address (val)
306 + gdb_print_insn (get_type_arch (type),
307 value_address (val), stream,
308 &branch_delay_insns));
309 return;
310 }
311 }
312
313 if (options->format == 0 || options->format == 's'
314 || type->code () == TYPE_CODE_REF
315 || type->code () == TYPE_CODE_ARRAY
316 || type->code () == TYPE_CODE_STRING
317 || type->code () == TYPE_CODE_STRUCT
318 || type->code () == TYPE_CODE_UNION
319 || type->code () == TYPE_CODE_NAMESPACE)
320 value_print (val, stream, options);
321 else
322 /* User specified format, so don't look to the type to tell us
323 what to do. */
324 value_print_scalar_formatted (val, options, size, stream);
325 }
326
327 /* Return builtin floating point type of same length as TYPE.
328 If no such type is found, return TYPE itself. */
329 static struct type *
330 float_type_from_length (struct type *type)
331 {
332 struct gdbarch *gdbarch = get_type_arch (type);
333 const struct builtin_type *builtin = builtin_type (gdbarch);
334
335 if (TYPE_LENGTH (type) == TYPE_LENGTH (builtin->builtin_float))
336 type = builtin->builtin_float;
337 else if (TYPE_LENGTH (type) == TYPE_LENGTH (builtin->builtin_double))
338 type = builtin->builtin_double;
339 else if (TYPE_LENGTH (type) == TYPE_LENGTH (builtin->builtin_long_double))
340 type = builtin->builtin_long_double;
341
342 return type;
343 }
344
345 /* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
346 according to OPTIONS and SIZE on STREAM. Formats s and i are not
347 supported at this level. */
348
349 void
350 print_scalar_formatted (const gdb_byte *valaddr, struct type *type,
351 const struct value_print_options *options,
352 int size, struct ui_file *stream)
353 {
354 struct gdbarch *gdbarch = get_type_arch (type);
355 unsigned int len = TYPE_LENGTH (type);
356 enum bfd_endian byte_order = type_byte_order (type);
357
358 /* String printing should go through val_print_scalar_formatted. */
359 gdb_assert (options->format != 's');
360
361 /* If the value is a pointer, and pointers and addresses are not the
362 same, then at this point, the value's length (in target bytes) is
363 gdbarch_addr_bit/TARGET_CHAR_BIT, not TYPE_LENGTH (type). */
364 if (type->code () == TYPE_CODE_PTR)
365 len = gdbarch_addr_bit (gdbarch) / TARGET_CHAR_BIT;
366
367 /* If we are printing it as unsigned, truncate it in case it is actually
368 a negative signed value (e.g. "print/u (short)-1" should print 65535
369 (if shorts are 16 bits) instead of 4294967295). */
370 if (options->format != 'c'
371 && (options->format != 'd' || TYPE_UNSIGNED (type)))
372 {
373 if (len < TYPE_LENGTH (type) && byte_order == BFD_ENDIAN_BIG)
374 valaddr += TYPE_LENGTH (type) - len;
375 }
376
377 if (size != 0 && (options->format == 'x' || options->format == 't'))
378 {
379 /* Truncate to fit. */
380 unsigned newlen;
381 switch (size)
382 {
383 case 'b':
384 newlen = 1;
385 break;
386 case 'h':
387 newlen = 2;
388 break;
389 case 'w':
390 newlen = 4;
391 break;
392 case 'g':
393 newlen = 8;
394 break;
395 default:
396 error (_("Undefined output size \"%c\"."), size);
397 }
398 if (newlen < len && byte_order == BFD_ENDIAN_BIG)
399 valaddr += len - newlen;
400 len = newlen;
401 }
402
403 /* Historically gdb has printed floats by first casting them to a
404 long, and then printing the long. PR cli/16242 suggests changing
405 this to using C-style hex float format.
406
407 Biased range types must also be unbiased here; the unbiasing is
408 done by unpack_long. */
409 gdb::byte_vector converted_bytes;
410 /* Some cases below will unpack the value again. In the biased
411 range case, we want to avoid this, so we store the unpacked value
412 here for possible use later. */
413 gdb::optional<LONGEST> val_long;
414 if ((type->code () == TYPE_CODE_FLT
415 && (options->format == 'o'
416 || options->format == 'x'
417 || options->format == 't'
418 || options->format == 'z'
419 || options->format == 'd'
420 || options->format == 'u'))
421 || (type->code () == TYPE_CODE_RANGE && type->bounds ()->bias != 0))
422 {
423 val_long.emplace (unpack_long (type, valaddr));
424 converted_bytes.resize (TYPE_LENGTH (type));
425 store_signed_integer (converted_bytes.data (), TYPE_LENGTH (type),
426 byte_order, *val_long);
427 valaddr = converted_bytes.data ();
428 }
429
430 /* Printing a non-float type as 'f' will interpret the data as if it were
431 of a floating-point type of the same length, if that exists. Otherwise,
432 the data is printed as integer. */
433 char format = options->format;
434 if (format == 'f' && type->code () != TYPE_CODE_FLT)
435 {
436 type = float_type_from_length (type);
437 if (type->code () != TYPE_CODE_FLT)
438 format = 0;
439 }
440
441 switch (format)
442 {
443 case 'o':
444 print_octal_chars (stream, valaddr, len, byte_order);
445 break;
446 case 'd':
447 print_decimal_chars (stream, valaddr, len, true, byte_order);
448 break;
449 case 'u':
450 print_decimal_chars (stream, valaddr, len, false, byte_order);
451 break;
452 case 0:
453 if (type->code () != TYPE_CODE_FLT)
454 {
455 print_decimal_chars (stream, valaddr, len, !TYPE_UNSIGNED (type),
456 byte_order);
457 break;
458 }
459 /* FALLTHROUGH */
460 case 'f':
461 print_floating (valaddr, type, stream);
462 break;
463
464 case 't':
465 print_binary_chars (stream, valaddr, len, byte_order, size > 0);
466 break;
467 case 'x':
468 print_hex_chars (stream, valaddr, len, byte_order, size > 0);
469 break;
470 case 'z':
471 print_hex_chars (stream, valaddr, len, byte_order, true);
472 break;
473 case 'c':
474 {
475 struct value_print_options opts = *options;
476
477 if (!val_long.has_value ())
478 val_long.emplace (unpack_long (type, valaddr));
479
480 opts.format = 0;
481 if (TYPE_UNSIGNED (type))
482 type = builtin_type (gdbarch)->builtin_true_unsigned_char;
483 else
484 type = builtin_type (gdbarch)->builtin_true_char;
485
486 value_print (value_from_longest (type, *val_long), stream, &opts);
487 }
488 break;
489
490 case 'a':
491 {
492 if (!val_long.has_value ())
493 val_long.emplace (unpack_long (type, valaddr));
494 print_address (gdbarch, *val_long, stream);
495 }
496 break;
497
498 default:
499 error (_("Undefined output format \"%c\"."), format);
500 }
501 }
502
503 /* Specify default address for `x' command.
504 The `info lines' command uses this. */
505
506 void
507 set_next_address (struct gdbarch *gdbarch, CORE_ADDR addr)
508 {
509 struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
510
511 next_gdbarch = gdbarch;
512 next_address = addr;
513
514 /* Make address available to the user as $_. */
515 set_internalvar (lookup_internalvar ("_"),
516 value_from_pointer (ptr_type, addr));
517 }
518
519 /* Optionally print address ADDR symbolically as <SYMBOL+OFFSET> on STREAM,
520 after LEADIN. Print nothing if no symbolic name is found nearby.
521 Optionally also print source file and line number, if available.
522 DO_DEMANGLE controls whether to print a symbol in its native "raw" form,
523 or to interpret it as a possible C++ name and convert it back to source
524 form. However note that DO_DEMANGLE can be overridden by the specific
525 settings of the demangle and asm_demangle variables. Returns
526 non-zero if anything was printed; zero otherwise. */
527
528 int
529 print_address_symbolic (struct gdbarch *gdbarch, CORE_ADDR addr,
530 struct ui_file *stream,
531 int do_demangle, const char *leadin)
532 {
533 std::string name, filename;
534 int unmapped = 0;
535 int offset = 0;
536 int line = 0;
537
538 if (build_address_symbolic (gdbarch, addr, do_demangle, false, &name,
539 &offset, &filename, &line, &unmapped))
540 return 0;
541
542 fputs_filtered (leadin, stream);
543 if (unmapped)
544 fputs_filtered ("<*", stream);
545 else
546 fputs_filtered ("<", stream);
547 fputs_styled (name.c_str (), function_name_style.style (), stream);
548 if (offset != 0)
549 fprintf_filtered (stream, "%+d", offset);
550
551 /* Append source filename and line number if desired. Give specific
552 line # of this addr, if we have it; else line # of the nearest symbol. */
553 if (print_symbol_filename && !filename.empty ())
554 {
555 fputs_filtered (line == -1 ? " in " : " at ", stream);
556 fputs_styled (filename.c_str (), file_name_style.style (), stream);
557 if (line != -1)
558 fprintf_filtered (stream, ":%d", line);
559 }
560 if (unmapped)
561 fputs_filtered ("*>", stream);
562 else
563 fputs_filtered (">", stream);
564
565 return 1;
566 }
567
568 /* See valprint.h. */
569
570 int
571 build_address_symbolic (struct gdbarch *gdbarch,
572 CORE_ADDR addr, /* IN */
573 bool do_demangle, /* IN */
574 bool prefer_sym_over_minsym, /* IN */
575 std::string *name, /* OUT */
576 int *offset, /* OUT */
577 std::string *filename, /* OUT */
578 int *line, /* OUT */
579 int *unmapped) /* OUT */
580 {
581 struct bound_minimal_symbol msymbol;
582 struct symbol *symbol;
583 CORE_ADDR name_location = 0;
584 struct obj_section *section = NULL;
585 const char *name_temp = "";
586
587 /* Let's say it is mapped (not unmapped). */
588 *unmapped = 0;
589
590 /* Determine if the address is in an overlay, and whether it is
591 mapped. */
592 if (overlay_debugging)
593 {
594 section = find_pc_overlay (addr);
595 if (pc_in_unmapped_range (addr, section))
596 {
597 *unmapped = 1;
598 addr = overlay_mapped_address (addr, section);
599 }
600 }
601
602 /* Try to find the address in both the symbol table and the minsyms.
603 In most cases, we'll prefer to use the symbol instead of the
604 minsym. However, there are cases (see below) where we'll choose
605 to use the minsym instead. */
606
607 /* This is defective in the sense that it only finds text symbols. So
608 really this is kind of pointless--we should make sure that the
609 minimal symbols have everything we need (by changing that we could
610 save some memory, but for many debug format--ELF/DWARF or
611 anything/stabs--it would be inconvenient to eliminate those minimal
612 symbols anyway). */
613 msymbol = lookup_minimal_symbol_by_pc_section (addr, section);
614 symbol = find_pc_sect_function (addr, section);
615
616 if (symbol)
617 {
618 /* If this is a function (i.e. a code address), strip out any
619 non-address bits. For instance, display a pointer to the
620 first instruction of a Thumb function as <function>; the
621 second instruction will be <function+2>, even though the
622 pointer is <function+3>. This matches the ISA behavior. */
623 addr = gdbarch_addr_bits_remove (gdbarch, addr);
624
625 name_location = BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (symbol));
626 if (do_demangle || asm_demangle)
627 name_temp = symbol->print_name ();
628 else
629 name_temp = symbol->linkage_name ();
630 }
631
632 if (msymbol.minsym != NULL
633 && MSYMBOL_HAS_SIZE (msymbol.minsym)
634 && MSYMBOL_SIZE (msymbol.minsym) == 0
635 && MSYMBOL_TYPE (msymbol.minsym) != mst_text
636 && MSYMBOL_TYPE (msymbol.minsym) != mst_text_gnu_ifunc
637 && MSYMBOL_TYPE (msymbol.minsym) != mst_file_text)
638 msymbol.minsym = NULL;
639
640 if (msymbol.minsym != NULL)
641 {
642 /* Use the minsym if no symbol is found.
643
644 Additionally, use the minsym instead of a (found) symbol if
645 the following conditions all hold:
646 1) The prefer_sym_over_minsym flag is false.
647 2) The minsym address is identical to that of the address under
648 consideration.
649 3) The symbol address is not identical to that of the address
650 under consideration. */
651 if (symbol == NULL ||
652 (!prefer_sym_over_minsym
653 && BMSYMBOL_VALUE_ADDRESS (msymbol) == addr
654 && name_location != addr))
655 {
656 /* If this is a function (i.e. a code address), strip out any
657 non-address bits. For instance, display a pointer to the
658 first instruction of a Thumb function as <function>; the
659 second instruction will be <function+2>, even though the
660 pointer is <function+3>. This matches the ISA behavior. */
661 if (MSYMBOL_TYPE (msymbol.minsym) == mst_text
662 || MSYMBOL_TYPE (msymbol.minsym) == mst_text_gnu_ifunc
663 || MSYMBOL_TYPE (msymbol.minsym) == mst_file_text
664 || MSYMBOL_TYPE (msymbol.minsym) == mst_solib_trampoline)
665 addr = gdbarch_addr_bits_remove (gdbarch, addr);
666
667 symbol = 0;
668 name_location = BMSYMBOL_VALUE_ADDRESS (msymbol);
669 if (do_demangle || asm_demangle)
670 name_temp = msymbol.minsym->print_name ();
671 else
672 name_temp = msymbol.minsym->linkage_name ();
673 }
674 }
675 if (symbol == NULL && msymbol.minsym == NULL)
676 return 1;
677
678 /* If the nearest symbol is too far away, don't print anything symbolic. */
679
680 /* For when CORE_ADDR is larger than unsigned int, we do math in
681 CORE_ADDR. But when we detect unsigned wraparound in the
682 CORE_ADDR math, we ignore this test and print the offset,
683 because addr+max_symbolic_offset has wrapped through the end
684 of the address space back to the beginning, giving bogus comparison. */
685 if (addr > name_location + max_symbolic_offset
686 && name_location + max_symbolic_offset > name_location)
687 return 1;
688
689 *offset = (LONGEST) addr - name_location;
690
691 *name = name_temp;
692
693 if (print_symbol_filename)
694 {
695 struct symtab_and_line sal;
696
697 sal = find_pc_sect_line (addr, section, 0);
698
699 if (sal.symtab)
700 {
701 *filename = symtab_to_filename_for_display (sal.symtab);
702 *line = sal.line;
703 }
704 }
705 return 0;
706 }
707
708
709 /* Print address ADDR symbolically on STREAM.
710 First print it as a number. Then perhaps print
711 <SYMBOL + OFFSET> after the number. */
712
713 void
714 print_address (struct gdbarch *gdbarch,
715 CORE_ADDR addr, struct ui_file *stream)
716 {
717 fputs_styled (paddress (gdbarch, addr), address_style.style (), stream);
718 print_address_symbolic (gdbarch, addr, stream, asm_demangle, " ");
719 }
720
721 /* Return a prefix for instruction address:
722 "=> " for current instruction, else " ". */
723
724 const char *
725 pc_prefix (CORE_ADDR addr)
726 {
727 if (has_stack_frames ())
728 {
729 struct frame_info *frame;
730 CORE_ADDR pc;
731
732 frame = get_selected_frame (NULL);
733 if (get_frame_pc_if_available (frame, &pc) && pc == addr)
734 return "=> ";
735 }
736 return " ";
737 }
738
739 /* Print address ADDR symbolically on STREAM. Parameter DEMANGLE
740 controls whether to print the symbolic name "raw" or demangled.
741 Return non-zero if anything was printed; zero otherwise. */
742
743 int
744 print_address_demangle (const struct value_print_options *opts,
745 struct gdbarch *gdbarch, CORE_ADDR addr,
746 struct ui_file *stream, int do_demangle)
747 {
748 if (opts->addressprint)
749 {
750 fputs_styled (paddress (gdbarch, addr), address_style.style (), stream);
751 print_address_symbolic (gdbarch, addr, stream, do_demangle, " ");
752 }
753 else
754 {
755 return print_address_symbolic (gdbarch, addr, stream, do_demangle, "");
756 }
757 return 1;
758 }
759 \f
760
761 /* Find the address of the instruction that is INST_COUNT instructions before
762 the instruction at ADDR.
763 Since some architectures have variable-length instructions, we can't just
764 simply subtract INST_COUNT * INSN_LEN from ADDR. Instead, we use line
765 number information to locate the nearest known instruction boundary,
766 and disassemble forward from there. If we go out of the symbol range
767 during disassembling, we return the lowest address we've got so far and
768 set the number of instructions read to INST_READ. */
769
770 static CORE_ADDR
771 find_instruction_backward (struct gdbarch *gdbarch, CORE_ADDR addr,
772 int inst_count, int *inst_read)
773 {
774 /* The vector PCS is used to store instruction addresses within
775 a pc range. */
776 CORE_ADDR loop_start, loop_end, p;
777 std::vector<CORE_ADDR> pcs;
778 struct symtab_and_line sal;
779
780 *inst_read = 0;
781 loop_start = loop_end = addr;
782
783 /* In each iteration of the outer loop, we get a pc range that ends before
784 LOOP_START, then we count and store every instruction address of the range
785 iterated in the loop.
786 If the number of instructions counted reaches INST_COUNT, return the
787 stored address that is located INST_COUNT instructions back from ADDR.
788 If INST_COUNT is not reached, we subtract the number of counted
789 instructions from INST_COUNT, and go to the next iteration. */
790 do
791 {
792 pcs.clear ();
793 sal = find_pc_sect_line (loop_start, NULL, 1);
794 if (sal.line <= 0)
795 {
796 /* We reach here when line info is not available. In this case,
797 we print a message and just exit the loop. The return value
798 is calculated after the loop. */
799 printf_filtered (_("No line number information available "
800 "for address "));
801 wrap_here (" ");
802 print_address (gdbarch, loop_start - 1, gdb_stdout);
803 printf_filtered ("\n");
804 break;
805 }
806
807 loop_end = loop_start;
808 loop_start = sal.pc;
809
810 /* This loop pushes instruction addresses in the range from
811 LOOP_START to LOOP_END. */
812 for (p = loop_start; p < loop_end;)
813 {
814 pcs.push_back (p);
815 p += gdb_insn_length (gdbarch, p);
816 }
817
818 inst_count -= pcs.size ();
819 *inst_read += pcs.size ();
820 }
821 while (inst_count > 0);
822
823 /* After the loop, the vector PCS has instruction addresses of the last
824 source line we processed, and INST_COUNT has a negative value.
825 We return the address at the index of -INST_COUNT in the vector for
826 the reason below.
827 Let's assume the following instruction addresses and run 'x/-4i 0x400e'.
828 Line X of File
829 0x4000
830 0x4001
831 0x4005
832 Line Y of File
833 0x4009
834 0x400c
835 => 0x400e
836 0x4011
837 find_instruction_backward is called with INST_COUNT = 4 and expected to
838 return 0x4001. When we reach here, INST_COUNT is set to -1 because
839 it was subtracted by 2 (from Line Y) and 3 (from Line X). The value
840 4001 is located at the index 1 of the last iterated line (= Line X),
841 which is simply calculated by -INST_COUNT.
842 The case when the length of PCS is 0 means that we reached an area for
843 which line info is not available. In such case, we return LOOP_START,
844 which was the lowest instruction address that had line info. */
845 p = pcs.size () > 0 ? pcs[-inst_count] : loop_start;
846
847 /* INST_READ includes all instruction addresses in a pc range. Need to
848 exclude the beginning part up to the address we're returning. That
849 is, exclude {0x4000} in the example above. */
850 if (inst_count < 0)
851 *inst_read += inst_count;
852
853 return p;
854 }
855
856 /* Backward read LEN bytes of target memory from address MEMADDR + LEN,
857 placing the results in GDB's memory from MYADDR + LEN. Returns
858 a count of the bytes actually read. */
859
860 static int
861 read_memory_backward (struct gdbarch *gdbarch,
862 CORE_ADDR memaddr, gdb_byte *myaddr, int len)
863 {
864 int errcode;
865 int nread; /* Number of bytes actually read. */
866
867 /* First try a complete read. */
868 errcode = target_read_memory (memaddr, myaddr, len);
869 if (errcode == 0)
870 {
871 /* Got it all. */
872 nread = len;
873 }
874 else
875 {
876 /* Loop, reading one byte at a time until we get as much as we can. */
877 memaddr += len;
878 myaddr += len;
879 for (nread = 0; nread < len; ++nread)
880 {
881 errcode = target_read_memory (--memaddr, --myaddr, 1);
882 if (errcode != 0)
883 {
884 /* The read was unsuccessful, so exit the loop. */
885 printf_filtered (_("Cannot access memory at address %s\n"),
886 paddress (gdbarch, memaddr));
887 break;
888 }
889 }
890 }
891 return nread;
892 }
893
894 /* Returns true if X (which is LEN bytes wide) is the number zero. */
895
896 static int
897 integer_is_zero (const gdb_byte *x, int len)
898 {
899 int i = 0;
900
901 while (i < len && x[i] == 0)
902 ++i;
903 return (i == len);
904 }
905
906 /* Find the start address of a string in which ADDR is included.
907 Basically we search for '\0' and return the next address,
908 but if OPTIONS->PRINT_MAX is smaller than the length of a string,
909 we stop searching and return the address to print characters as many as
910 PRINT_MAX from the string. */
911
912 static CORE_ADDR
913 find_string_backward (struct gdbarch *gdbarch,
914 CORE_ADDR addr, int count, int char_size,
915 const struct value_print_options *options,
916 int *strings_counted)
917 {
918 const int chunk_size = 0x20;
919 int read_error = 0;
920 int chars_read = 0;
921 int chars_to_read = chunk_size;
922 int chars_counted = 0;
923 int count_original = count;
924 CORE_ADDR string_start_addr = addr;
925
926 gdb_assert (char_size == 1 || char_size == 2 || char_size == 4);
927 gdb::byte_vector buffer (chars_to_read * char_size);
928 while (count > 0 && read_error == 0)
929 {
930 int i;
931
932 addr -= chars_to_read * char_size;
933 chars_read = read_memory_backward (gdbarch, addr, buffer.data (),
934 chars_to_read * char_size);
935 chars_read /= char_size;
936 read_error = (chars_read == chars_to_read) ? 0 : 1;
937 /* Searching for '\0' from the end of buffer in backward direction. */
938 for (i = 0; i < chars_read && count > 0 ; ++i, ++chars_counted)
939 {
940 int offset = (chars_to_read - i - 1) * char_size;
941
942 if (integer_is_zero (&buffer[offset], char_size)
943 || chars_counted == options->print_max)
944 {
945 /* Found '\0' or reached print_max. As OFFSET is the offset to
946 '\0', we add CHAR_SIZE to return the start address of
947 a string. */
948 --count;
949 string_start_addr = addr + offset + char_size;
950 chars_counted = 0;
951 }
952 }
953 }
954
955 /* Update STRINGS_COUNTED with the actual number of loaded strings. */
956 *strings_counted = count_original - count;
957
958 if (read_error != 0)
959 {
960 /* In error case, STRING_START_ADDR is pointing to the string that
961 was last successfully loaded. Rewind the partially loaded string. */
962 string_start_addr -= chars_counted * char_size;
963 }
964
965 return string_start_addr;
966 }
967
968 /* Examine data at address ADDR in format FMT.
969 Fetch it from memory and print on gdb_stdout. */
970
971 static void
972 do_examine (struct format_data fmt, struct gdbarch *gdbarch, CORE_ADDR addr)
973 {
974 char format = 0;
975 char size;
976 int count = 1;
977 struct type *val_type = NULL;
978 int i;
979 int maxelts;
980 struct value_print_options opts;
981 int need_to_update_next_address = 0;
982 CORE_ADDR addr_rewound = 0;
983
984 format = fmt.format;
985 size = fmt.size;
986 count = fmt.count;
987 next_gdbarch = gdbarch;
988 next_address = addr;
989
990 /* Instruction format implies fetch single bytes
991 regardless of the specified size.
992 The case of strings is handled in decode_format, only explicit
993 size operator are not changed to 'b'. */
994 if (format == 'i')
995 size = 'b';
996
997 if (size == 'a')
998 {
999 /* Pick the appropriate size for an address. */
1000 if (gdbarch_ptr_bit (next_gdbarch) == 64)
1001 size = 'g';
1002 else if (gdbarch_ptr_bit (next_gdbarch) == 32)
1003 size = 'w';
1004 else if (gdbarch_ptr_bit (next_gdbarch) == 16)
1005 size = 'h';
1006 else
1007 /* Bad value for gdbarch_ptr_bit. */
1008 internal_error (__FILE__, __LINE__,
1009 _("failed internal consistency check"));
1010 }
1011
1012 if (size == 'b')
1013 val_type = builtin_type (next_gdbarch)->builtin_int8;
1014 else if (size == 'h')
1015 val_type = builtin_type (next_gdbarch)->builtin_int16;
1016 else if (size == 'w')
1017 val_type = builtin_type (next_gdbarch)->builtin_int32;
1018 else if (size == 'g')
1019 val_type = builtin_type (next_gdbarch)->builtin_int64;
1020
1021 if (format == 's')
1022 {
1023 struct type *char_type = NULL;
1024
1025 /* Search for "char16_t" or "char32_t" types or fall back to 8-bit char
1026 if type is not found. */
1027 if (size == 'h')
1028 char_type = builtin_type (next_gdbarch)->builtin_char16;
1029 else if (size == 'w')
1030 char_type = builtin_type (next_gdbarch)->builtin_char32;
1031 if (char_type)
1032 val_type = char_type;
1033 else
1034 {
1035 if (size != '\0' && size != 'b')
1036 warning (_("Unable to display strings with "
1037 "size '%c', using 'b' instead."), size);
1038 size = 'b';
1039 val_type = builtin_type (next_gdbarch)->builtin_int8;
1040 }
1041 }
1042
1043 maxelts = 8;
1044 if (size == 'w')
1045 maxelts = 4;
1046 if (size == 'g')
1047 maxelts = 2;
1048 if (format == 's' || format == 'i')
1049 maxelts = 1;
1050
1051 get_formatted_print_options (&opts, format);
1052
1053 if (count < 0)
1054 {
1055 /* This is the negative repeat count case.
1056 We rewind the address based on the given repeat count and format,
1057 then examine memory from there in forward direction. */
1058
1059 count = -count;
1060 if (format == 'i')
1061 {
1062 next_address = find_instruction_backward (gdbarch, addr, count,
1063 &count);
1064 }
1065 else if (format == 's')
1066 {
1067 next_address = find_string_backward (gdbarch, addr, count,
1068 TYPE_LENGTH (val_type),
1069 &opts, &count);
1070 }
1071 else
1072 {
1073 next_address = addr - count * TYPE_LENGTH (val_type);
1074 }
1075
1076 /* The following call to print_formatted updates next_address in every
1077 iteration. In backward case, we store the start address here
1078 and update next_address with it before exiting the function. */
1079 addr_rewound = (format == 's'
1080 ? next_address - TYPE_LENGTH (val_type)
1081 : next_address);
1082 need_to_update_next_address = 1;
1083 }
1084
1085 /* Print as many objects as specified in COUNT, at most maxelts per line,
1086 with the address of the next one at the start of each line. */
1087
1088 while (count > 0)
1089 {
1090 QUIT;
1091 if (format == 'i')
1092 fputs_filtered (pc_prefix (next_address), gdb_stdout);
1093 print_address (next_gdbarch, next_address, gdb_stdout);
1094 printf_filtered (":");
1095 for (i = maxelts;
1096 i > 0 && count > 0;
1097 i--, count--)
1098 {
1099 printf_filtered ("\t");
1100 /* Note that print_formatted sets next_address for the next
1101 object. */
1102 last_examine_address = next_address;
1103
1104 /* The value to be displayed is not fetched greedily.
1105 Instead, to avoid the possibility of a fetched value not
1106 being used, its retrieval is delayed until the print code
1107 uses it. When examining an instruction stream, the
1108 disassembler will perform its own memory fetch using just
1109 the address stored in LAST_EXAMINE_VALUE. FIXME: Should
1110 the disassembler be modified so that LAST_EXAMINE_VALUE
1111 is left with the byte sequence from the last complete
1112 instruction fetched from memory? */
1113 last_examine_value
1114 = release_value (value_at_lazy (val_type, next_address));
1115
1116 print_formatted (last_examine_value.get (), size, &opts, gdb_stdout);
1117
1118 /* Display any branch delay slots following the final insn. */
1119 if (format == 'i' && count == 1)
1120 count += branch_delay_insns;
1121 }
1122 printf_filtered ("\n");
1123 }
1124
1125 if (need_to_update_next_address)
1126 next_address = addr_rewound;
1127 }
1128 \f
1129 static void
1130 validate_format (struct format_data fmt, const char *cmdname)
1131 {
1132 if (fmt.size != 0)
1133 error (_("Size letters are meaningless in \"%s\" command."), cmdname);
1134 if (fmt.count != 1)
1135 error (_("Item count other than 1 is meaningless in \"%s\" command."),
1136 cmdname);
1137 if (fmt.format == 'i')
1138 error (_("Format letter \"%c\" is meaningless in \"%s\" command."),
1139 fmt.format, cmdname);
1140 }
1141
1142 /* Parse print command format string into *OPTS and update *EXPP.
1143 CMDNAME should name the current command. */
1144
1145 void
1146 print_command_parse_format (const char **expp, const char *cmdname,
1147 value_print_options *opts)
1148 {
1149 const char *exp = *expp;
1150
1151 /* opts->raw value might already have been set by 'set print raw-values'
1152 or by using 'print -raw-values'.
1153 So, do not set opts->raw to 0, only set it to 1 if /r is given. */
1154 if (exp && *exp == '/')
1155 {
1156 format_data fmt;
1157
1158 exp++;
1159 fmt = decode_format (&exp, last_format, 0);
1160 validate_format (fmt, cmdname);
1161 last_format = fmt.format;
1162
1163 opts->format = fmt.format;
1164 opts->raw = opts->raw || fmt.raw;
1165 }
1166 else
1167 {
1168 opts->format = 0;
1169 }
1170
1171 *expp = exp;
1172 }
1173
1174 /* See valprint.h. */
1175
1176 void
1177 print_value (value *val, const value_print_options &opts)
1178 {
1179 int histindex = record_latest_value (val);
1180
1181 annotate_value_history_begin (histindex, value_type (val));
1182
1183 printf_filtered ("$%d = ", histindex);
1184
1185 annotate_value_history_value ();
1186
1187 print_formatted (val, 0, &opts, gdb_stdout);
1188 printf_filtered ("\n");
1189
1190 annotate_value_history_end ();
1191 }
1192
1193 /* Implementation of the "print" and "call" commands. */
1194
1195 static void
1196 print_command_1 (const char *args, int voidprint)
1197 {
1198 struct value *val;
1199 value_print_options print_opts;
1200
1201 get_user_print_options (&print_opts);
1202 /* Override global settings with explicit options, if any. */
1203 auto group = make_value_print_options_def_group (&print_opts);
1204 gdb::option::process_options
1205 (&args, gdb::option::PROCESS_OPTIONS_REQUIRE_DELIMITER, group);
1206
1207 print_command_parse_format (&args, "print", &print_opts);
1208
1209 const char *exp = args;
1210
1211 if (exp != nullptr && *exp)
1212 {
1213 expression_up expr = parse_expression (exp);
1214 val = evaluate_expression (expr.get ());
1215 }
1216 else
1217 val = access_value_history (0);
1218
1219 if (voidprint || (val && value_type (val) &&
1220 value_type (val)->code () != TYPE_CODE_VOID))
1221 print_value (val, print_opts);
1222 }
1223
1224 /* See valprint.h. */
1225
1226 void
1227 print_command_completer (struct cmd_list_element *ignore,
1228 completion_tracker &tracker,
1229 const char *text, const char * /*word*/)
1230 {
1231 const auto group = make_value_print_options_def_group (nullptr);
1232 if (gdb::option::complete_options
1233 (tracker, &text, gdb::option::PROCESS_OPTIONS_REQUIRE_DELIMITER, group))
1234 return;
1235
1236 const char *word = advance_to_expression_complete_word_point (tracker, text);
1237 expression_completer (ignore, tracker, text, word);
1238 }
1239
1240 static void
1241 print_command (const char *exp, int from_tty)
1242 {
1243 print_command_1 (exp, 1);
1244 }
1245
1246 /* Same as print, except it doesn't print void results. */
1247 static void
1248 call_command (const char *exp, int from_tty)
1249 {
1250 print_command_1 (exp, 0);
1251 }
1252
1253 /* Implementation of the "output" command. */
1254
1255 void
1256 output_command (const char *exp, int from_tty)
1257 {
1258 char format = 0;
1259 struct value *val;
1260 struct format_data fmt;
1261 struct value_print_options opts;
1262
1263 fmt.size = 0;
1264 fmt.raw = 0;
1265
1266 if (exp && *exp == '/')
1267 {
1268 exp++;
1269 fmt = decode_format (&exp, 0, 0);
1270 validate_format (fmt, "output");
1271 format = fmt.format;
1272 }
1273
1274 expression_up expr = parse_expression (exp);
1275
1276 val = evaluate_expression (expr.get ());
1277
1278 annotate_value_begin (value_type (val));
1279
1280 get_formatted_print_options (&opts, format);
1281 opts.raw = fmt.raw;
1282 print_formatted (val, fmt.size, &opts, gdb_stdout);
1283
1284 annotate_value_end ();
1285
1286 wrap_here ("");
1287 gdb_flush (gdb_stdout);
1288 }
1289
1290 static void
1291 set_command (const char *exp, int from_tty)
1292 {
1293 expression_up expr = parse_expression (exp);
1294
1295 if (expr->nelts >= 1)
1296 switch (expr->elts[0].opcode)
1297 {
1298 case UNOP_PREINCREMENT:
1299 case UNOP_POSTINCREMENT:
1300 case UNOP_PREDECREMENT:
1301 case UNOP_POSTDECREMENT:
1302 case BINOP_ASSIGN:
1303 case BINOP_ASSIGN_MODIFY:
1304 case BINOP_COMMA:
1305 break;
1306 default:
1307 warning
1308 (_("Expression is not an assignment (and might have no effect)"));
1309 }
1310
1311 evaluate_expression (expr.get ());
1312 }
1313
1314 static void
1315 info_symbol_command (const char *arg, int from_tty)
1316 {
1317 struct minimal_symbol *msymbol;
1318 struct obj_section *osect;
1319 CORE_ADDR addr, sect_addr;
1320 int matches = 0;
1321 unsigned int offset;
1322
1323 if (!arg)
1324 error_no_arg (_("address"));
1325
1326 addr = parse_and_eval_address (arg);
1327 for (objfile *objfile : current_program_space->objfiles ())
1328 ALL_OBJFILE_OSECTIONS (objfile, osect)
1329 {
1330 /* Only process each object file once, even if there's a separate
1331 debug file. */
1332 if (objfile->separate_debug_objfile_backlink)
1333 continue;
1334
1335 sect_addr = overlay_mapped_address (addr, osect);
1336
1337 if (obj_section_addr (osect) <= sect_addr
1338 && sect_addr < obj_section_endaddr (osect)
1339 && (msymbol
1340 = lookup_minimal_symbol_by_pc_section (sect_addr,
1341 osect).minsym))
1342 {
1343 const char *obj_name, *mapped, *sec_name, *msym_name;
1344 const char *loc_string;
1345
1346 matches = 1;
1347 offset = sect_addr - MSYMBOL_VALUE_ADDRESS (objfile, msymbol);
1348 mapped = section_is_mapped (osect) ? _("mapped") : _("unmapped");
1349 sec_name = osect->the_bfd_section->name;
1350 msym_name = msymbol->print_name ();
1351
1352 /* Don't print the offset if it is zero.
1353 We assume there's no need to handle i18n of "sym + offset". */
1354 std::string string_holder;
1355 if (offset)
1356 {
1357 string_holder = string_printf ("%s + %u", msym_name, offset);
1358 loc_string = string_holder.c_str ();
1359 }
1360 else
1361 loc_string = msym_name;
1362
1363 gdb_assert (osect->objfile && objfile_name (osect->objfile));
1364 obj_name = objfile_name (osect->objfile);
1365
1366 if (current_program_space->multi_objfile_p ())
1367 if (pc_in_unmapped_range (addr, osect))
1368 if (section_is_overlay (osect))
1369 printf_filtered (_("%s in load address range of "
1370 "%s overlay section %s of %s\n"),
1371 loc_string, mapped, sec_name, obj_name);
1372 else
1373 printf_filtered (_("%s in load address range of "
1374 "section %s of %s\n"),
1375 loc_string, sec_name, obj_name);
1376 else
1377 if (section_is_overlay (osect))
1378 printf_filtered (_("%s in %s overlay section %s of %s\n"),
1379 loc_string, mapped, sec_name, obj_name);
1380 else
1381 printf_filtered (_("%s in section %s of %s\n"),
1382 loc_string, sec_name, obj_name);
1383 else
1384 if (pc_in_unmapped_range (addr, osect))
1385 if (section_is_overlay (osect))
1386 printf_filtered (_("%s in load address range of %s overlay "
1387 "section %s\n"),
1388 loc_string, mapped, sec_name);
1389 else
1390 printf_filtered
1391 (_("%s in load address range of section %s\n"),
1392 loc_string, sec_name);
1393 else
1394 if (section_is_overlay (osect))
1395 printf_filtered (_("%s in %s overlay section %s\n"),
1396 loc_string, mapped, sec_name);
1397 else
1398 printf_filtered (_("%s in section %s\n"),
1399 loc_string, sec_name);
1400 }
1401 }
1402 if (matches == 0)
1403 printf_filtered (_("No symbol matches %s.\n"), arg);
1404 }
1405
1406 static void
1407 info_address_command (const char *exp, int from_tty)
1408 {
1409 struct gdbarch *gdbarch;
1410 int regno;
1411 struct symbol *sym;
1412 struct bound_minimal_symbol msymbol;
1413 long val;
1414 struct obj_section *section;
1415 CORE_ADDR load_addr, context_pc = 0;
1416 struct field_of_this_result is_a_field_of_this;
1417
1418 if (exp == 0)
1419 error (_("Argument required."));
1420
1421 sym = lookup_symbol (exp, get_selected_block (&context_pc), VAR_DOMAIN,
1422 &is_a_field_of_this).symbol;
1423 if (sym == NULL)
1424 {
1425 if (is_a_field_of_this.type != NULL)
1426 {
1427 printf_filtered ("Symbol \"");
1428 fprintf_symbol_filtered (gdb_stdout, exp,
1429 current_language->la_language, DMGL_ANSI);
1430 printf_filtered ("\" is a field of the local class variable ");
1431 if (current_language->la_language == language_objc)
1432 printf_filtered ("`self'\n"); /* ObjC equivalent of "this" */
1433 else
1434 printf_filtered ("`this'\n");
1435 return;
1436 }
1437
1438 msymbol = lookup_bound_minimal_symbol (exp);
1439
1440 if (msymbol.minsym != NULL)
1441 {
1442 struct objfile *objfile = msymbol.objfile;
1443
1444 gdbarch = objfile->arch ();
1445 load_addr = BMSYMBOL_VALUE_ADDRESS (msymbol);
1446
1447 printf_filtered ("Symbol \"");
1448 fprintf_symbol_filtered (gdb_stdout, exp,
1449 current_language->la_language, DMGL_ANSI);
1450 printf_filtered ("\" is at ");
1451 fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
1452 gdb_stdout);
1453 printf_filtered (" in a file compiled without debugging");
1454 section = MSYMBOL_OBJ_SECTION (objfile, msymbol.minsym);
1455 if (section_is_overlay (section))
1456 {
1457 load_addr = overlay_unmapped_address (load_addr, section);
1458 printf_filtered (",\n -- loaded at ");
1459 fputs_styled (paddress (gdbarch, load_addr),
1460 address_style.style (),
1461 gdb_stdout);
1462 printf_filtered (" in overlay section %s",
1463 section->the_bfd_section->name);
1464 }
1465 printf_filtered (".\n");
1466 }
1467 else
1468 error (_("No symbol \"%s\" in current context."), exp);
1469 return;
1470 }
1471
1472 printf_filtered ("Symbol \"");
1473 fprintf_symbol_filtered (gdb_stdout, sym->print_name (),
1474 current_language->la_language, DMGL_ANSI);
1475 printf_filtered ("\" is ");
1476 val = SYMBOL_VALUE (sym);
1477 if (SYMBOL_OBJFILE_OWNED (sym))
1478 section = SYMBOL_OBJ_SECTION (symbol_objfile (sym), sym);
1479 else
1480 section = NULL;
1481 gdbarch = symbol_arch (sym);
1482
1483 if (SYMBOL_COMPUTED_OPS (sym) != NULL)
1484 {
1485 SYMBOL_COMPUTED_OPS (sym)->describe_location (sym, context_pc,
1486 gdb_stdout);
1487 printf_filtered (".\n");
1488 return;
1489 }
1490
1491 switch (SYMBOL_CLASS (sym))
1492 {
1493 case LOC_CONST:
1494 case LOC_CONST_BYTES:
1495 printf_filtered ("constant");
1496 break;
1497
1498 case LOC_LABEL:
1499 printf_filtered ("a label at address ");
1500 load_addr = SYMBOL_VALUE_ADDRESS (sym);
1501 fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
1502 gdb_stdout);
1503 if (section_is_overlay (section))
1504 {
1505 load_addr = overlay_unmapped_address (load_addr, section);
1506 printf_filtered (",\n -- loaded at ");
1507 fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
1508 gdb_stdout);
1509 printf_filtered (" in overlay section %s",
1510 section->the_bfd_section->name);
1511 }
1512 break;
1513
1514 case LOC_COMPUTED:
1515 gdb_assert_not_reached (_("LOC_COMPUTED variable missing a method"));
1516
1517 case LOC_REGISTER:
1518 /* GDBARCH is the architecture associated with the objfile the symbol
1519 is defined in; the target architecture may be different, and may
1520 provide additional registers. However, we do not know the target
1521 architecture at this point. We assume the objfile architecture
1522 will contain all the standard registers that occur in debug info
1523 in that objfile. */
1524 regno = SYMBOL_REGISTER_OPS (sym)->register_number (sym, gdbarch);
1525
1526 if (SYMBOL_IS_ARGUMENT (sym))
1527 printf_filtered (_("an argument in register %s"),
1528 gdbarch_register_name (gdbarch, regno));
1529 else
1530 printf_filtered (_("a variable in register %s"),
1531 gdbarch_register_name (gdbarch, regno));
1532 break;
1533
1534 case LOC_STATIC:
1535 printf_filtered (_("static storage at address "));
1536 load_addr = SYMBOL_VALUE_ADDRESS (sym);
1537 fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
1538 gdb_stdout);
1539 if (section_is_overlay (section))
1540 {
1541 load_addr = overlay_unmapped_address (load_addr, section);
1542 printf_filtered (_(",\n -- loaded at "));
1543 fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
1544 gdb_stdout);
1545 printf_filtered (_(" in overlay section %s"),
1546 section->the_bfd_section->name);
1547 }
1548 break;
1549
1550 case LOC_REGPARM_ADDR:
1551 /* Note comment at LOC_REGISTER. */
1552 regno = SYMBOL_REGISTER_OPS (sym)->register_number (sym, gdbarch);
1553 printf_filtered (_("address of an argument in register %s"),
1554 gdbarch_register_name (gdbarch, regno));
1555 break;
1556
1557 case LOC_ARG:
1558 printf_filtered (_("an argument at offset %ld"), val);
1559 break;
1560
1561 case LOC_LOCAL:
1562 printf_filtered (_("a local variable at frame offset %ld"), val);
1563 break;
1564
1565 case LOC_REF_ARG:
1566 printf_filtered (_("a reference argument at offset %ld"), val);
1567 break;
1568
1569 case LOC_TYPEDEF:
1570 printf_filtered (_("a typedef"));
1571 break;
1572
1573 case LOC_BLOCK:
1574 printf_filtered (_("a function at address "));
1575 load_addr = BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (sym));
1576 fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
1577 gdb_stdout);
1578 if (section_is_overlay (section))
1579 {
1580 load_addr = overlay_unmapped_address (load_addr, section);
1581 printf_filtered (_(",\n -- loaded at "));
1582 fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
1583 gdb_stdout);
1584 printf_filtered (_(" in overlay section %s"),
1585 section->the_bfd_section->name);
1586 }
1587 break;
1588
1589 case LOC_UNRESOLVED:
1590 {
1591 struct bound_minimal_symbol msym;
1592
1593 msym = lookup_bound_minimal_symbol (sym->linkage_name ());
1594 if (msym.minsym == NULL)
1595 printf_filtered ("unresolved");
1596 else
1597 {
1598 section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
1599
1600 if (section
1601 && (section->the_bfd_section->flags & SEC_THREAD_LOCAL) != 0)
1602 {
1603 load_addr = MSYMBOL_VALUE_RAW_ADDRESS (msym.minsym);
1604 printf_filtered (_("a thread-local variable at offset %s "
1605 "in the thread-local storage for `%s'"),
1606 paddress (gdbarch, load_addr),
1607 objfile_name (section->objfile));
1608 }
1609 else
1610 {
1611 load_addr = BMSYMBOL_VALUE_ADDRESS (msym);
1612 printf_filtered (_("static storage at address "));
1613 fputs_styled (paddress (gdbarch, load_addr),
1614 address_style.style (), gdb_stdout);
1615 if (section_is_overlay (section))
1616 {
1617 load_addr = overlay_unmapped_address (load_addr, section);
1618 printf_filtered (_(",\n -- loaded at "));
1619 fputs_styled (paddress (gdbarch, load_addr),
1620 address_style.style (),
1621 gdb_stdout);
1622 printf_filtered (_(" in overlay section %s"),
1623 section->the_bfd_section->name);
1624 }
1625 }
1626 }
1627 }
1628 break;
1629
1630 case LOC_OPTIMIZED_OUT:
1631 printf_filtered (_("optimized out"));
1632 break;
1633
1634 default:
1635 printf_filtered (_("of unknown (botched) type"));
1636 break;
1637 }
1638 printf_filtered (".\n");
1639 }
1640 \f
1641
1642 static void
1643 x_command (const char *exp, int from_tty)
1644 {
1645 struct format_data fmt;
1646 struct value *val;
1647
1648 fmt.format = last_format ? last_format : 'x';
1649 fmt.size = last_size;
1650 fmt.count = 1;
1651 fmt.raw = 0;
1652
1653 /* If there is no expression and no format, use the most recent
1654 count. */
1655 if (exp == nullptr && last_count > 0)
1656 fmt.count = last_count;
1657
1658 if (exp && *exp == '/')
1659 {
1660 const char *tmp = exp + 1;
1661
1662 fmt = decode_format (&tmp, last_format, last_size);
1663 exp = (char *) tmp;
1664 }
1665
1666 last_count = fmt.count;
1667
1668 /* If we have an expression, evaluate it and use it as the address. */
1669
1670 if (exp != 0 && *exp != 0)
1671 {
1672 expression_up expr = parse_expression (exp);
1673 /* Cause expression not to be there any more if this command is
1674 repeated with Newline. But don't clobber a user-defined
1675 command's definition. */
1676 if (from_tty)
1677 set_repeat_arguments ("");
1678 val = evaluate_expression (expr.get ());
1679 if (TYPE_IS_REFERENCE (value_type (val)))
1680 val = coerce_ref (val);
1681 /* In rvalue contexts, such as this, functions are coerced into
1682 pointers to functions. This makes "x/i main" work. */
1683 if (value_type (val)->code () == TYPE_CODE_FUNC
1684 && VALUE_LVAL (val) == lval_memory)
1685 next_address = value_address (val);
1686 else
1687 next_address = value_as_address (val);
1688
1689 next_gdbarch = expr->gdbarch;
1690 }
1691
1692 if (!next_gdbarch)
1693 error_no_arg (_("starting display address"));
1694
1695 do_examine (fmt, next_gdbarch, next_address);
1696
1697 /* If the examine succeeds, we remember its size and format for next
1698 time. Set last_size to 'b' for strings. */
1699 if (fmt.format == 's')
1700 last_size = 'b';
1701 else
1702 last_size = fmt.size;
1703 last_format = fmt.format;
1704
1705 /* Set a couple of internal variables if appropriate. */
1706 if (last_examine_value != nullptr)
1707 {
1708 /* Make last address examined available to the user as $_. Use
1709 the correct pointer type. */
1710 struct type *pointer_type
1711 = lookup_pointer_type (value_type (last_examine_value.get ()));
1712 set_internalvar (lookup_internalvar ("_"),
1713 value_from_pointer (pointer_type,
1714 last_examine_address));
1715
1716 /* Make contents of last address examined available to the user
1717 as $__. If the last value has not been fetched from memory
1718 then don't fetch it now; instead mark it by voiding the $__
1719 variable. */
1720 if (value_lazy (last_examine_value.get ()))
1721 clear_internalvar (lookup_internalvar ("__"));
1722 else
1723 set_internalvar (lookup_internalvar ("__"), last_examine_value.get ());
1724 }
1725 }
1726 \f
1727
1728 /* Add an expression to the auto-display chain.
1729 Specify the expression. */
1730
1731 static void
1732 display_command (const char *arg, int from_tty)
1733 {
1734 struct format_data fmt;
1735 struct display *newobj;
1736 const char *exp = arg;
1737
1738 if (exp == 0)
1739 {
1740 do_displays ();
1741 return;
1742 }
1743
1744 if (*exp == '/')
1745 {
1746 exp++;
1747 fmt = decode_format (&exp, 0, 0);
1748 if (fmt.size && fmt.format == 0)
1749 fmt.format = 'x';
1750 if (fmt.format == 'i' || fmt.format == 's')
1751 fmt.size = 'b';
1752 }
1753 else
1754 {
1755 fmt.format = 0;
1756 fmt.size = 0;
1757 fmt.count = 0;
1758 fmt.raw = 0;
1759 }
1760
1761 innermost_block_tracker tracker;
1762 expression_up expr = parse_expression (exp, &tracker);
1763
1764 newobj = new display (exp, std::move (expr), fmt,
1765 current_program_space, tracker.block ());
1766 all_displays.emplace_back (newobj);
1767
1768 if (from_tty)
1769 do_one_display (newobj);
1770
1771 dont_repeat ();
1772 }
1773
1774 /* Clear out the display_chain. Done when new symtabs are loaded,
1775 since this invalidates the types stored in many expressions. */
1776
1777 void
1778 clear_displays ()
1779 {
1780 all_displays.clear ();
1781 }
1782
1783 /* Delete the auto-display DISPLAY. */
1784
1785 static void
1786 delete_display (struct display *display)
1787 {
1788 gdb_assert (display != NULL);
1789
1790 auto iter = std::find_if (all_displays.begin (),
1791 all_displays.end (),
1792 [=] (const std::unique_ptr<struct display> &item)
1793 {
1794 return item.get () == display;
1795 });
1796 gdb_assert (iter != all_displays.end ());
1797 all_displays.erase (iter);
1798 }
1799
1800 /* Call FUNCTION on each of the displays whose numbers are given in
1801 ARGS. DATA is passed unmodified to FUNCTION. */
1802
1803 static void
1804 map_display_numbers (const char *args,
1805 gdb::function_view<void (struct display *)> function)
1806 {
1807 int num;
1808
1809 if (args == NULL)
1810 error_no_arg (_("one or more display numbers"));
1811
1812 number_or_range_parser parser (args);
1813
1814 while (!parser.finished ())
1815 {
1816 const char *p = parser.cur_tok ();
1817
1818 num = parser.get_number ();
1819 if (num == 0)
1820 warning (_("bad display number at or near '%s'"), p);
1821 else
1822 {
1823 auto iter = std::find_if (all_displays.begin (),
1824 all_displays.end (),
1825 [=] (const std::unique_ptr<display> &item)
1826 {
1827 return item->number == num;
1828 });
1829 if (iter == all_displays.end ())
1830 printf_unfiltered (_("No display number %d.\n"), num);
1831 else
1832 function (iter->get ());
1833 }
1834 }
1835 }
1836
1837 /* "undisplay" command. */
1838
1839 static void
1840 undisplay_command (const char *args, int from_tty)
1841 {
1842 if (args == NULL)
1843 {
1844 if (query (_("Delete all auto-display expressions? ")))
1845 clear_displays ();
1846 dont_repeat ();
1847 return;
1848 }
1849
1850 map_display_numbers (args, delete_display);
1851 dont_repeat ();
1852 }
1853
1854 /* Display a single auto-display.
1855 Do nothing if the display cannot be printed in the current context,
1856 or if the display is disabled. */
1857
1858 static void
1859 do_one_display (struct display *d)
1860 {
1861 int within_current_scope;
1862
1863 if (!d->enabled_p)
1864 return;
1865
1866 /* The expression carries the architecture that was used at parse time.
1867 This is a problem if the expression depends on architecture features
1868 (e.g. register numbers), and the current architecture is now different.
1869 For example, a display statement like "display/i $pc" is expected to
1870 display the PC register of the current architecture, not the arch at
1871 the time the display command was given. Therefore, we re-parse the
1872 expression if the current architecture has changed. */
1873 if (d->exp != NULL && d->exp->gdbarch != get_current_arch ())
1874 {
1875 d->exp.reset ();
1876 d->block = NULL;
1877 }
1878
1879 if (d->exp == NULL)
1880 {
1881
1882 try
1883 {
1884 innermost_block_tracker tracker;
1885 d->exp = parse_expression (d->exp_string.c_str (), &tracker);
1886 d->block = tracker.block ();
1887 }
1888 catch (const gdb_exception &ex)
1889 {
1890 /* Can't re-parse the expression. Disable this display item. */
1891 d->enabled_p = false;
1892 warning (_("Unable to display \"%s\": %s"),
1893 d->exp_string.c_str (), ex.what ());
1894 return;
1895 }
1896 }
1897
1898 if (d->block)
1899 {
1900 if (d->pspace == current_program_space)
1901 within_current_scope = contained_in (get_selected_block (0), d->block,
1902 true);
1903 else
1904 within_current_scope = 0;
1905 }
1906 else
1907 within_current_scope = 1;
1908 if (!within_current_scope)
1909 return;
1910
1911 scoped_restore save_display_number
1912 = make_scoped_restore (&current_display_number, d->number);
1913
1914 annotate_display_begin ();
1915 printf_filtered ("%d", d->number);
1916 annotate_display_number_end ();
1917 printf_filtered (": ");
1918 if (d->format.size)
1919 {
1920
1921 annotate_display_format ();
1922
1923 printf_filtered ("x/");
1924 if (d->format.count != 1)
1925 printf_filtered ("%d", d->format.count);
1926 printf_filtered ("%c", d->format.format);
1927 if (d->format.format != 'i' && d->format.format != 's')
1928 printf_filtered ("%c", d->format.size);
1929 printf_filtered (" ");
1930
1931 annotate_display_expression ();
1932
1933 puts_filtered (d->exp_string.c_str ());
1934 annotate_display_expression_end ();
1935
1936 if (d->format.count != 1 || d->format.format == 'i')
1937 printf_filtered ("\n");
1938 else
1939 printf_filtered (" ");
1940
1941 annotate_display_value ();
1942
1943 try
1944 {
1945 struct value *val;
1946 CORE_ADDR addr;
1947
1948 val = evaluate_expression (d->exp.get ());
1949 addr = value_as_address (val);
1950 if (d->format.format == 'i')
1951 addr = gdbarch_addr_bits_remove (d->exp->gdbarch, addr);
1952 do_examine (d->format, d->exp->gdbarch, addr);
1953 }
1954 catch (const gdb_exception_error &ex)
1955 {
1956 fprintf_filtered (gdb_stdout, _("%p[<error: %s>%p]\n"),
1957 metadata_style.style ().ptr (), ex.what (),
1958 nullptr);
1959 }
1960 }
1961 else
1962 {
1963 struct value_print_options opts;
1964
1965 annotate_display_format ();
1966
1967 if (d->format.format)
1968 printf_filtered ("/%c ", d->format.format);
1969
1970 annotate_display_expression ();
1971
1972 puts_filtered (d->exp_string.c_str ());
1973 annotate_display_expression_end ();
1974
1975 printf_filtered (" = ");
1976
1977 annotate_display_expression ();
1978
1979 get_formatted_print_options (&opts, d->format.format);
1980 opts.raw = d->format.raw;
1981
1982 try
1983 {
1984 struct value *val;
1985
1986 val = evaluate_expression (d->exp.get ());
1987 print_formatted (val, d->format.size, &opts, gdb_stdout);
1988 }
1989 catch (const gdb_exception_error &ex)
1990 {
1991 fprintf_styled (gdb_stdout, metadata_style.style (),
1992 _("<error: %s>"), ex.what ());
1993 }
1994
1995 printf_filtered ("\n");
1996 }
1997
1998 annotate_display_end ();
1999
2000 gdb_flush (gdb_stdout);
2001 }
2002
2003 /* Display all of the values on the auto-display chain which can be
2004 evaluated in the current scope. */
2005
2006 void
2007 do_displays (void)
2008 {
2009 for (auto &d : all_displays)
2010 do_one_display (d.get ());
2011 }
2012
2013 /* Delete the auto-display which we were in the process of displaying.
2014 This is done when there is an error or a signal. */
2015
2016 void
2017 disable_display (int num)
2018 {
2019 for (auto &d : all_displays)
2020 if (d->number == num)
2021 {
2022 d->enabled_p = false;
2023 return;
2024 }
2025 printf_unfiltered (_("No display number %d.\n"), num);
2026 }
2027
2028 void
2029 disable_current_display (void)
2030 {
2031 if (current_display_number >= 0)
2032 {
2033 disable_display (current_display_number);
2034 fprintf_unfiltered (gdb_stderr,
2035 _("Disabling display %d to "
2036 "avoid infinite recursion.\n"),
2037 current_display_number);
2038 }
2039 current_display_number = -1;
2040 }
2041
2042 static void
2043 info_display_command (const char *ignore, int from_tty)
2044 {
2045 if (all_displays.empty ())
2046 printf_unfiltered (_("There are no auto-display expressions now.\n"));
2047 else
2048 printf_filtered (_("Auto-display expressions now in effect:\n\
2049 Num Enb Expression\n"));
2050
2051 for (auto &d : all_displays)
2052 {
2053 printf_filtered ("%d: %c ", d->number, "ny"[(int) d->enabled_p]);
2054 if (d->format.size)
2055 printf_filtered ("/%d%c%c ", d->format.count, d->format.size,
2056 d->format.format);
2057 else if (d->format.format)
2058 printf_filtered ("/%c ", d->format.format);
2059 puts_filtered (d->exp_string.c_str ());
2060 if (d->block && !contained_in (get_selected_block (0), d->block, true))
2061 printf_filtered (_(" (cannot be evaluated in the current context)"));
2062 printf_filtered ("\n");
2063 }
2064 }
2065
2066 /* Implementation of both the "disable display" and "enable display"
2067 commands. ENABLE decides what to do. */
2068
2069 static void
2070 enable_disable_display_command (const char *args, int from_tty, bool enable)
2071 {
2072 if (args == NULL)
2073 {
2074 for (auto &d : all_displays)
2075 d->enabled_p = enable;
2076 return;
2077 }
2078
2079 map_display_numbers (args,
2080 [=] (struct display *d)
2081 {
2082 d->enabled_p = enable;
2083 });
2084 }
2085
2086 /* The "enable display" command. */
2087
2088 static void
2089 enable_display_command (const char *args, int from_tty)
2090 {
2091 enable_disable_display_command (args, from_tty, true);
2092 }
2093
2094 /* The "disable display" command. */
2095
2096 static void
2097 disable_display_command (const char *args, int from_tty)
2098 {
2099 enable_disable_display_command (args, from_tty, false);
2100 }
2101
2102 /* display_chain items point to blocks and expressions. Some expressions in
2103 turn may point to symbols.
2104 Both symbols and blocks are obstack_alloc'd on objfile_stack, and are
2105 obstack_free'd when a shared library is unloaded.
2106 Clear pointers that are about to become dangling.
2107 Both .exp and .block fields will be restored next time we need to display
2108 an item by re-parsing .exp_string field in the new execution context. */
2109
2110 static void
2111 clear_dangling_display_expressions (struct objfile *objfile)
2112 {
2113 struct program_space *pspace;
2114
2115 /* With no symbol file we cannot have a block or expression from it. */
2116 if (objfile == NULL)
2117 return;
2118 pspace = objfile->pspace;
2119 if (objfile->separate_debug_objfile_backlink)
2120 {
2121 objfile = objfile->separate_debug_objfile_backlink;
2122 gdb_assert (objfile->pspace == pspace);
2123 }
2124
2125 for (auto &d : all_displays)
2126 {
2127 if (d->pspace != pspace)
2128 continue;
2129
2130 struct objfile *bl_objf = nullptr;
2131 if (d->block != nullptr)
2132 {
2133 bl_objf = block_objfile (d->block);
2134 if (bl_objf->separate_debug_objfile_backlink != nullptr)
2135 bl_objf = bl_objf->separate_debug_objfile_backlink;
2136 }
2137
2138 if (bl_objf == objfile
2139 || (d->exp != NULL && exp_uses_objfile (d->exp.get (), objfile)))
2140 {
2141 d->exp.reset ();
2142 d->block = NULL;
2143 }
2144 }
2145 }
2146 \f
2147
2148 /* Print the value in stack frame FRAME of a variable specified by a
2149 struct symbol. NAME is the name to print; if NULL then VAR's print
2150 name will be used. STREAM is the ui_file on which to print the
2151 value. INDENT specifies the number of indent levels to print
2152 before printing the variable name.
2153
2154 This function invalidates FRAME. */
2155
2156 void
2157 print_variable_and_value (const char *name, struct symbol *var,
2158 struct frame_info *frame,
2159 struct ui_file *stream, int indent)
2160 {
2161
2162 if (!name)
2163 name = var->print_name ();
2164
2165 fprintf_filtered (stream, "%s%ps = ", n_spaces (2 * indent),
2166 styled_string (variable_name_style.style (), name));
2167
2168 try
2169 {
2170 struct value *val;
2171 struct value_print_options opts;
2172
2173 /* READ_VAR_VALUE needs a block in order to deal with non-local
2174 references (i.e. to handle nested functions). In this context, we
2175 print variables that are local to this frame, so we can avoid passing
2176 a block to it. */
2177 val = read_var_value (var, NULL, frame);
2178 get_user_print_options (&opts);
2179 opts.deref_ref = 1;
2180 common_val_print (val, stream, indent, &opts, current_language);
2181
2182 /* common_val_print invalidates FRAME when a pretty printer calls inferior
2183 function. */
2184 frame = NULL;
2185 }
2186 catch (const gdb_exception_error &except)
2187 {
2188 fprintf_styled (stream, metadata_style.style (),
2189 "<error reading variable %s (%s)>", name,
2190 except.what ());
2191 }
2192
2193 fprintf_filtered (stream, "\n");
2194 }
2195
2196 /* Subroutine of ui_printf to simplify it.
2197 Print VALUE to STREAM using FORMAT.
2198 VALUE is a C-style string either on the target or
2199 in a GDB internal variable. */
2200
2201 static void
2202 printf_c_string (struct ui_file *stream, const char *format,
2203 struct value *value)
2204 {
2205 const gdb_byte *str;
2206
2207 if (value_type (value)->code () != TYPE_CODE_PTR
2208 && VALUE_LVAL (value) == lval_internalvar
2209 && c_is_string_type_p (value_type (value)))
2210 {
2211 size_t len = TYPE_LENGTH (value_type (value));
2212
2213 /* Copy the internal var value to TEM_STR and append a terminating null
2214 character. This protects against corrupted C-style strings that lack
2215 the terminating null char. It also allows Ada-style strings (not
2216 null terminated) to be printed without problems. */
2217 gdb_byte *tem_str = (gdb_byte *) alloca (len + 1);
2218
2219 memcpy (tem_str, value_contents (value), len);
2220 tem_str [len] = 0;
2221 str = tem_str;
2222 }
2223 else
2224 {
2225 CORE_ADDR tem = value_as_address (value);;
2226
2227 if (tem == 0)
2228 {
2229 DIAGNOSTIC_PUSH
2230 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2231 fprintf_filtered (stream, format, "(null)");
2232 DIAGNOSTIC_POP
2233 return;
2234 }
2235
2236 /* This is a %s argument. Find the length of the string. */
2237 size_t len;
2238
2239 for (len = 0;; len++)
2240 {
2241 gdb_byte c;
2242
2243 QUIT;
2244 read_memory (tem + len, &c, 1);
2245 if (c == 0)
2246 break;
2247 }
2248
2249 /* Copy the string contents into a string inside GDB. */
2250 gdb_byte *tem_str = (gdb_byte *) alloca (len + 1);
2251
2252 if (len != 0)
2253 read_memory (tem, tem_str, len);
2254 tem_str[len] = 0;
2255 str = tem_str;
2256 }
2257
2258 DIAGNOSTIC_PUSH
2259 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2260 fprintf_filtered (stream, format, (char *) str);
2261 DIAGNOSTIC_POP
2262 }
2263
2264 /* Subroutine of ui_printf to simplify it.
2265 Print VALUE to STREAM using FORMAT.
2266 VALUE is a wide C-style string on the target or
2267 in a GDB internal variable. */
2268
2269 static void
2270 printf_wide_c_string (struct ui_file *stream, const char *format,
2271 struct value *value)
2272 {
2273 const gdb_byte *str;
2274 size_t len;
2275 struct gdbarch *gdbarch = get_type_arch (value_type (value));
2276 struct type *wctype = lookup_typename (current_language,
2277 "wchar_t", NULL, 0);
2278 int wcwidth = TYPE_LENGTH (wctype);
2279
2280 if (VALUE_LVAL (value) == lval_internalvar
2281 && c_is_string_type_p (value_type (value)))
2282 {
2283 str = value_contents (value);
2284 len = TYPE_LENGTH (value_type (value));
2285 }
2286 else
2287 {
2288 CORE_ADDR tem = value_as_address (value);
2289
2290 if (tem == 0)
2291 {
2292 DIAGNOSTIC_PUSH
2293 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2294 fprintf_filtered (stream, format, "(null)");
2295 DIAGNOSTIC_POP
2296 return;
2297 }
2298
2299 /* This is a %s argument. Find the length of the string. */
2300 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
2301 gdb_byte *buf = (gdb_byte *) alloca (wcwidth);
2302
2303 for (len = 0;; len += wcwidth)
2304 {
2305 QUIT;
2306 read_memory (tem + len, buf, wcwidth);
2307 if (extract_unsigned_integer (buf, wcwidth, byte_order) == 0)
2308 break;
2309 }
2310
2311 /* Copy the string contents into a string inside GDB. */
2312 gdb_byte *tem_str = (gdb_byte *) alloca (len + wcwidth);
2313
2314 if (len != 0)
2315 read_memory (tem, tem_str, len);
2316 memset (&tem_str[len], 0, wcwidth);
2317 str = tem_str;
2318 }
2319
2320 auto_obstack output;
2321
2322 convert_between_encodings (target_wide_charset (gdbarch),
2323 host_charset (),
2324 str, len, wcwidth,
2325 &output, translit_char);
2326 obstack_grow_str0 (&output, "");
2327
2328 DIAGNOSTIC_PUSH
2329 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2330 fprintf_filtered (stream, format, obstack_base (&output));
2331 DIAGNOSTIC_POP
2332 }
2333
2334 /* Subroutine of ui_printf to simplify it.
2335 Print VALUE, a floating point value, to STREAM using FORMAT. */
2336
2337 static void
2338 printf_floating (struct ui_file *stream, const char *format,
2339 struct value *value, enum argclass argclass)
2340 {
2341 /* Parameter data. */
2342 struct type *param_type = value_type (value);
2343 struct gdbarch *gdbarch = get_type_arch (param_type);
2344
2345 /* Determine target type corresponding to the format string. */
2346 struct type *fmt_type;
2347 switch (argclass)
2348 {
2349 case double_arg:
2350 fmt_type = builtin_type (gdbarch)->builtin_double;
2351 break;
2352 case long_double_arg:
2353 fmt_type = builtin_type (gdbarch)->builtin_long_double;
2354 break;
2355 case dec32float_arg:
2356 fmt_type = builtin_type (gdbarch)->builtin_decfloat;
2357 break;
2358 case dec64float_arg:
2359 fmt_type = builtin_type (gdbarch)->builtin_decdouble;
2360 break;
2361 case dec128float_arg:
2362 fmt_type = builtin_type (gdbarch)->builtin_declong;
2363 break;
2364 default:
2365 gdb_assert_not_reached ("unexpected argument class");
2366 }
2367
2368 /* To match the traditional GDB behavior, the conversion is
2369 done differently depending on the type of the parameter:
2370
2371 - if the parameter has floating-point type, it's value
2372 is converted to the target type;
2373
2374 - otherwise, if the parameter has a type that is of the
2375 same size as a built-in floating-point type, the value
2376 bytes are interpreted as if they were of that type, and
2377 then converted to the target type (this is not done for
2378 decimal floating-point argument classes);
2379
2380 - otherwise, if the source value has an integer value,
2381 it's value is converted to the target type;
2382
2383 - otherwise, an error is raised.
2384
2385 In either case, the result of the conversion is a byte buffer
2386 formatted in the target format for the target type. */
2387
2388 if (fmt_type->code () == TYPE_CODE_FLT)
2389 {
2390 param_type = float_type_from_length (param_type);
2391 if (param_type != value_type (value))
2392 value = value_from_contents (param_type, value_contents (value));
2393 }
2394
2395 value = value_cast (fmt_type, value);
2396
2397 /* Convert the value to a string and print it. */
2398 std::string str
2399 = target_float_to_string (value_contents (value), fmt_type, format);
2400 fputs_filtered (str.c_str (), stream);
2401 }
2402
2403 /* Subroutine of ui_printf to simplify it.
2404 Print VALUE, a target pointer, to STREAM using FORMAT. */
2405
2406 static void
2407 printf_pointer (struct ui_file *stream, const char *format,
2408 struct value *value)
2409 {
2410 /* We avoid the host's %p because pointers are too
2411 likely to be the wrong size. The only interesting
2412 modifier for %p is a width; extract that, and then
2413 handle %p as glibc would: %#x or a literal "(nil)". */
2414
2415 const char *p;
2416 char *fmt, *fmt_p;
2417 #ifdef PRINTF_HAS_LONG_LONG
2418 long long val = value_as_long (value);
2419 #else
2420 long val = value_as_long (value);
2421 #endif
2422
2423 fmt = (char *) alloca (strlen (format) + 5);
2424
2425 /* Copy up to the leading %. */
2426 p = format;
2427 fmt_p = fmt;
2428 while (*p)
2429 {
2430 int is_percent = (*p == '%');
2431
2432 *fmt_p++ = *p++;
2433 if (is_percent)
2434 {
2435 if (*p == '%')
2436 *fmt_p++ = *p++;
2437 else
2438 break;
2439 }
2440 }
2441
2442 if (val != 0)
2443 *fmt_p++ = '#';
2444
2445 /* Copy any width or flags. Only the "-" flag is valid for pointers
2446 -- see the format_pieces constructor. */
2447 while (*p == '-' || (*p >= '0' && *p < '9'))
2448 *fmt_p++ = *p++;
2449
2450 gdb_assert (*p == 'p' && *(p + 1) == '\0');
2451 if (val != 0)
2452 {
2453 #ifdef PRINTF_HAS_LONG_LONG
2454 *fmt_p++ = 'l';
2455 #endif
2456 *fmt_p++ = 'l';
2457 *fmt_p++ = 'x';
2458 *fmt_p++ = '\0';
2459 DIAGNOSTIC_PUSH
2460 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2461 fprintf_filtered (stream, fmt, val);
2462 DIAGNOSTIC_POP
2463 }
2464 else
2465 {
2466 *fmt_p++ = 's';
2467 *fmt_p++ = '\0';
2468 DIAGNOSTIC_PUSH
2469 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2470 fprintf_filtered (stream, fmt, "(nil)");
2471 DIAGNOSTIC_POP
2472 }
2473 }
2474
2475 /* printf "printf format string" ARG to STREAM. */
2476
2477 static void
2478 ui_printf (const char *arg, struct ui_file *stream)
2479 {
2480 const char *s = arg;
2481 std::vector<struct value *> val_args;
2482
2483 if (s == 0)
2484 error_no_arg (_("format-control string and values to print"));
2485
2486 s = skip_spaces (s);
2487
2488 /* A format string should follow, enveloped in double quotes. */
2489 if (*s++ != '"')
2490 error (_("Bad format string, missing '\"'."));
2491
2492 format_pieces fpieces (&s);
2493
2494 if (*s++ != '"')
2495 error (_("Bad format string, non-terminated '\"'."));
2496
2497 s = skip_spaces (s);
2498
2499 if (*s != ',' && *s != 0)
2500 error (_("Invalid argument syntax"));
2501
2502 if (*s == ',')
2503 s++;
2504 s = skip_spaces (s);
2505
2506 {
2507 int nargs_wanted;
2508 int i;
2509 const char *current_substring;
2510
2511 nargs_wanted = 0;
2512 for (auto &&piece : fpieces)
2513 if (piece.argclass != literal_piece)
2514 ++nargs_wanted;
2515
2516 /* Now, parse all arguments and evaluate them.
2517 Store the VALUEs in VAL_ARGS. */
2518
2519 while (*s != '\0')
2520 {
2521 const char *s1;
2522
2523 s1 = s;
2524 val_args.push_back (parse_to_comma_and_eval (&s1));
2525
2526 s = s1;
2527 if (*s == ',')
2528 s++;
2529 }
2530
2531 if (val_args.size () != nargs_wanted)
2532 error (_("Wrong number of arguments for specified format-string"));
2533
2534 /* Now actually print them. */
2535 i = 0;
2536 for (auto &&piece : fpieces)
2537 {
2538 current_substring = piece.string;
2539 switch (piece.argclass)
2540 {
2541 case string_arg:
2542 printf_c_string (stream, current_substring, val_args[i]);
2543 break;
2544 case wide_string_arg:
2545 printf_wide_c_string (stream, current_substring, val_args[i]);
2546 break;
2547 case wide_char_arg:
2548 {
2549 struct gdbarch *gdbarch
2550 = get_type_arch (value_type (val_args[i]));
2551 struct type *wctype = lookup_typename (current_language,
2552 "wchar_t", NULL, 0);
2553 struct type *valtype;
2554 const gdb_byte *bytes;
2555
2556 valtype = value_type (val_args[i]);
2557 if (TYPE_LENGTH (valtype) != TYPE_LENGTH (wctype)
2558 || valtype->code () != TYPE_CODE_INT)
2559 error (_("expected wchar_t argument for %%lc"));
2560
2561 bytes = value_contents (val_args[i]);
2562
2563 auto_obstack output;
2564
2565 convert_between_encodings (target_wide_charset (gdbarch),
2566 host_charset (),
2567 bytes, TYPE_LENGTH (valtype),
2568 TYPE_LENGTH (valtype),
2569 &output, translit_char);
2570 obstack_grow_str0 (&output, "");
2571
2572 DIAGNOSTIC_PUSH
2573 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2574 fprintf_filtered (stream, current_substring,
2575 obstack_base (&output));
2576 DIAGNOSTIC_POP
2577 }
2578 break;
2579 case long_long_arg:
2580 #ifdef PRINTF_HAS_LONG_LONG
2581 {
2582 long long val = value_as_long (val_args[i]);
2583
2584 DIAGNOSTIC_PUSH
2585 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2586 fprintf_filtered (stream, current_substring, val);
2587 DIAGNOSTIC_POP
2588 break;
2589 }
2590 #else
2591 error (_("long long not supported in printf"));
2592 #endif
2593 case int_arg:
2594 {
2595 int val = value_as_long (val_args[i]);
2596
2597 DIAGNOSTIC_PUSH
2598 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2599 fprintf_filtered (stream, current_substring, val);
2600 DIAGNOSTIC_POP
2601 break;
2602 }
2603 case long_arg:
2604 {
2605 long val = value_as_long (val_args[i]);
2606
2607 DIAGNOSTIC_PUSH
2608 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2609 fprintf_filtered (stream, current_substring, val);
2610 DIAGNOSTIC_POP
2611 break;
2612 }
2613 case size_t_arg:
2614 {
2615 size_t val = value_as_long (val_args[i]);
2616
2617 DIAGNOSTIC_PUSH
2618 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2619 fprintf_filtered (stream, current_substring, val);
2620 DIAGNOSTIC_POP
2621 break;
2622 }
2623 /* Handles floating-point values. */
2624 case double_arg:
2625 case long_double_arg:
2626 case dec32float_arg:
2627 case dec64float_arg:
2628 case dec128float_arg:
2629 printf_floating (stream, current_substring, val_args[i],
2630 piece.argclass);
2631 break;
2632 case ptr_arg:
2633 printf_pointer (stream, current_substring, val_args[i]);
2634 break;
2635 case literal_piece:
2636 /* Print a portion of the format string that has no
2637 directives. Note that this will not include any
2638 ordinary %-specs, but it might include "%%". That is
2639 why we use printf_filtered and not puts_filtered here.
2640 Also, we pass a dummy argument because some platforms
2641 have modified GCC to include -Wformat-security by
2642 default, which will warn here if there is no
2643 argument. */
2644 DIAGNOSTIC_PUSH
2645 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2646 fprintf_filtered (stream, current_substring, 0);
2647 DIAGNOSTIC_POP
2648 break;
2649 default:
2650 internal_error (__FILE__, __LINE__,
2651 _("failed internal consistency check"));
2652 }
2653 /* Maybe advance to the next argument. */
2654 if (piece.argclass != literal_piece)
2655 ++i;
2656 }
2657 }
2658 }
2659
2660 /* Implement the "printf" command. */
2661
2662 static void
2663 printf_command (const char *arg, int from_tty)
2664 {
2665 ui_printf (arg, gdb_stdout);
2666 reset_terminal_style (gdb_stdout);
2667 wrap_here ("");
2668 gdb_stdout->flush ();
2669 }
2670
2671 /* Implement the "eval" command. */
2672
2673 static void
2674 eval_command (const char *arg, int from_tty)
2675 {
2676 string_file stb;
2677
2678 ui_printf (arg, &stb);
2679
2680 std::string expanded = insert_user_defined_cmd_args (stb.c_str ());
2681
2682 execute_command (expanded.c_str (), from_tty);
2683 }
2684
2685 void _initialize_printcmd ();
2686 void
2687 _initialize_printcmd ()
2688 {
2689 struct cmd_list_element *c;
2690
2691 current_display_number = -1;
2692
2693 gdb::observers::free_objfile.attach (clear_dangling_display_expressions);
2694
2695 add_info ("address", info_address_command,
2696 _("Describe where symbol SYM is stored.\n\
2697 Usage: info address SYM"));
2698
2699 add_info ("symbol", info_symbol_command, _("\
2700 Describe what symbol is at location ADDR.\n\
2701 Usage: info symbol ADDR\n\
2702 Only for symbols with fixed locations (global or static scope)."));
2703
2704 add_com ("x", class_vars, x_command, _("\
2705 Examine memory: x/FMT ADDRESS.\n\
2706 ADDRESS is an expression for the memory address to examine.\n\
2707 FMT is a repeat count followed by a format letter and a size letter.\n\
2708 Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),\n\
2709 t(binary), f(float), a(address), i(instruction), c(char), s(string)\n\
2710 and z(hex, zero padded on the left).\n\
2711 Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).\n\
2712 The specified number of objects of the specified size are printed\n\
2713 according to the format. If a negative number is specified, memory is\n\
2714 examined backward from the address.\n\n\
2715 Defaults for format and size letters are those previously used.\n\
2716 Default count is 1. Default address is following last thing printed\n\
2717 with this command or \"print\"."));
2718
2719 add_info ("display", info_display_command, _("\
2720 Expressions to display when program stops, with code numbers.\n\
2721 Usage: info display"));
2722
2723 add_cmd ("undisplay", class_vars, undisplay_command, _("\
2724 Cancel some expressions to be displayed when program stops.\n\
2725 Usage: undisplay [NUM]...\n\
2726 Arguments are the code numbers of the expressions to stop displaying.\n\
2727 No argument means cancel all automatic-display expressions.\n\
2728 \"delete display\" has the same effect as this command.\n\
2729 Do \"info display\" to see current list of code numbers."),
2730 &cmdlist);
2731
2732 add_com ("display", class_vars, display_command, _("\
2733 Print value of expression EXP each time the program stops.\n\
2734 Usage: display[/FMT] EXP\n\
2735 /FMT may be used before EXP as in the \"print\" command.\n\
2736 /FMT \"i\" or \"s\" or including a size-letter is allowed,\n\
2737 as in the \"x\" command, and then EXP is used to get the address to examine\n\
2738 and examining is done as in the \"x\" command.\n\n\
2739 With no argument, display all currently requested auto-display expressions.\n\
2740 Use \"undisplay\" to cancel display requests previously made."));
2741
2742 add_cmd ("display", class_vars, enable_display_command, _("\
2743 Enable some expressions to be displayed when program stops.\n\
2744 Usage: enable display [NUM]...\n\
2745 Arguments are the code numbers of the expressions to resume displaying.\n\
2746 No argument means enable all automatic-display expressions.\n\
2747 Do \"info display\" to see current list of code numbers."), &enablelist);
2748
2749 add_cmd ("display", class_vars, disable_display_command, _("\
2750 Disable some expressions to be displayed when program stops.\n\
2751 Usage: disable display [NUM]...\n\
2752 Arguments are the code numbers of the expressions to stop displaying.\n\
2753 No argument means disable all automatic-display expressions.\n\
2754 Do \"info display\" to see current list of code numbers."), &disablelist);
2755
2756 add_cmd ("display", class_vars, undisplay_command, _("\
2757 Cancel some expressions to be displayed when program stops.\n\
2758 Usage: delete display [NUM]...\n\
2759 Arguments are the code numbers of the expressions to stop displaying.\n\
2760 No argument means cancel all automatic-display expressions.\n\
2761 Do \"info display\" to see current list of code numbers."), &deletelist);
2762
2763 add_com ("printf", class_vars, printf_command, _("\
2764 Formatted printing, like the C \"printf\" function.\n\
2765 Usage: printf \"format string\", ARG1, ARG2, ARG3, ..., ARGN\n\
2766 This supports most C printf format specifications, like %s, %d, etc."));
2767
2768 add_com ("output", class_vars, output_command, _("\
2769 Like \"print\" but don't put in value history and don't print newline.\n\
2770 Usage: output EXP\n\
2771 This is useful in user-defined commands."));
2772
2773 add_prefix_cmd ("set", class_vars, set_command, _("\
2774 Evaluate expression EXP and assign result to variable VAR.\n\
2775 Usage: set VAR = EXP\n\
2776 This uses assignment syntax appropriate for the current language\n\
2777 (VAR = EXP or VAR := EXP for example).\n\
2778 VAR may be a debugger \"convenience\" variable (names starting\n\
2779 with $), a register (a few standard names starting with $), or an actual\n\
2780 variable in the program being debugged. EXP is any valid expression.\n\
2781 Use \"set variable\" for variables with names identical to set subcommands.\n\
2782 \n\
2783 With a subcommand, this command modifies parts of the gdb environment.\n\
2784 You can see these environment settings with the \"show\" command."),
2785 &setlist, "set ", 1, &cmdlist);
2786 if (dbx_commands)
2787 add_com ("assign", class_vars, set_command, _("\
2788 Evaluate expression EXP and assign result to variable VAR.\n\
2789 Usage: assign VAR = EXP\n\
2790 This uses assignment syntax appropriate for the current language\n\
2791 (VAR = EXP or VAR := EXP for example).\n\
2792 VAR may be a debugger \"convenience\" variable (names starting\n\
2793 with $), a register (a few standard names starting with $), or an actual\n\
2794 variable in the program being debugged. EXP is any valid expression.\n\
2795 Use \"set variable\" for variables with names identical to set subcommands.\n\
2796 \nWith a subcommand, this command modifies parts of the gdb environment.\n\
2797 You can see these environment settings with the \"show\" command."));
2798
2799 /* "call" is the same as "set", but handy for dbx users to call fns. */
2800 c = add_com ("call", class_vars, call_command, _("\
2801 Call a function in the program.\n\
2802 Usage: call EXP\n\
2803 The argument is the function name and arguments, in the notation of the\n\
2804 current working language. The result is printed and saved in the value\n\
2805 history, if it is not void."));
2806 set_cmd_completer_handle_brkchars (c, print_command_completer);
2807
2808 add_cmd ("variable", class_vars, set_command, _("\
2809 Evaluate expression EXP and assign result to variable VAR.\n\
2810 Usage: set variable VAR = EXP\n\
2811 This uses assignment syntax appropriate for the current language\n\
2812 (VAR = EXP or VAR := EXP for example).\n\
2813 VAR may be a debugger \"convenience\" variable (names starting\n\
2814 with $), a register (a few standard names starting with $), or an actual\n\
2815 variable in the program being debugged. EXP is any valid expression.\n\
2816 This may usually be abbreviated to simply \"set\"."),
2817 &setlist);
2818 add_alias_cmd ("var", "variable", class_vars, 0, &setlist);
2819
2820 const auto print_opts = make_value_print_options_def_group (nullptr);
2821
2822 static const std::string print_help = gdb::option::build_help (_("\
2823 Print value of expression EXP.\n\
2824 Usage: print [[OPTION]... --] [/FMT] [EXP]\n\
2825 \n\
2826 Options:\n\
2827 %OPTIONS%\n\
2828 \n\
2829 Note: because this command accepts arbitrary expressions, if you\n\
2830 specify any command option, you must use a double dash (\"--\")\n\
2831 to mark the end of option processing. E.g.: \"print -o -- myobj\".\n\
2832 \n\
2833 Variables accessible are those of the lexical environment of the selected\n\
2834 stack frame, plus all those whose scope is global or an entire file.\n\
2835 \n\
2836 $NUM gets previous value number NUM. $ and $$ are the last two values.\n\
2837 $$NUM refers to NUM'th value back from the last one.\n\
2838 Names starting with $ refer to registers (with the values they would have\n\
2839 if the program were to return to the stack frame now selected, restoring\n\
2840 all registers saved by frames farther in) or else to debugger\n\
2841 \"convenience\" variables (any such name not a known register).\n\
2842 Use assignment expressions to give values to convenience variables.\n\
2843 \n\
2844 {TYPE}ADREXP refers to a datum of data type TYPE, located at address ADREXP.\n\
2845 @ is a binary operator for treating consecutive data objects\n\
2846 anywhere in memory as an array. FOO@NUM gives an array whose first\n\
2847 element is FOO, whose second element is stored in the space following\n\
2848 where FOO is stored, etc. FOO must be an expression whose value\n\
2849 resides in memory.\n\
2850 \n\
2851 EXP may be preceded with /FMT, where FMT is a format letter\n\
2852 but no count or size letter (see \"x\" command)."),
2853 print_opts);
2854
2855 c = add_com ("print", class_vars, print_command, print_help.c_str ());
2856 set_cmd_completer_handle_brkchars (c, print_command_completer);
2857 add_com_alias ("p", "print", class_vars, 1);
2858 add_com_alias ("inspect", "print", class_vars, 1);
2859
2860 add_setshow_uinteger_cmd ("max-symbolic-offset", no_class,
2861 &max_symbolic_offset, _("\
2862 Set the largest offset that will be printed in <SYMBOL+1234> form."), _("\
2863 Show the largest offset that will be printed in <SYMBOL+1234> form."), _("\
2864 Tell GDB to only display the symbolic form of an address if the\n\
2865 offset between the closest earlier symbol and the address is less than\n\
2866 the specified maximum offset. The default is \"unlimited\", which tells GDB\n\
2867 to always print the symbolic form of an address if any symbol precedes\n\
2868 it. Zero is equivalent to \"unlimited\"."),
2869 NULL,
2870 show_max_symbolic_offset,
2871 &setprintlist, &showprintlist);
2872 add_setshow_boolean_cmd ("symbol-filename", no_class,
2873 &print_symbol_filename, _("\
2874 Set printing of source filename and line number with <SYMBOL>."), _("\
2875 Show printing of source filename and line number with <SYMBOL>."), NULL,
2876 NULL,
2877 show_print_symbol_filename,
2878 &setprintlist, &showprintlist);
2879
2880 add_com ("eval", no_class, eval_command, _("\
2881 Construct a GDB command and then evaluate it.\n\
2882 Usage: eval \"format string\", ARG1, ARG2, ARG3, ..., ARGN\n\
2883 Convert the arguments to a string as \"printf\" would, but then\n\
2884 treat this string as a command line, and evaluate it."));
2885 }