New Georgian translation for the ld sub-directory
[binutils-gdb.git] / gdb / printcmd.c
blobb9b6a3b8648bebfb5349d963a8a4ef99760ae619
1 /* Print values for GNU debugger GDB.
3 Copyright (C) 1986-2023 Free Software Foundation, Inc.
5 This file is part of GDB.
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.
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.
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/>. */
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"
37 #include "objfiles.h"
38 #include "completer.h"
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 #include "gdbsupport/gdb-safe-ctype.h"
57 #include "gdbsupport/rsp-low.h"
58 #include "inferior.h"
60 /* Chain containing all defined memory-tag subcommands. */
62 static struct cmd_list_element *memory_tag_list;
64 /* Last specified output format. */
66 static char last_format = 0;
68 /* Last specified examination size. 'b', 'h', 'w' or `q'. */
70 static char last_size = 'w';
72 /* Last specified count for the 'x' command. */
74 static int last_count;
76 /* Last specified tag-printing option. */
78 static bool last_print_tags = false;
80 /* Default address to examine next, and associated architecture. */
82 static struct gdbarch *next_gdbarch;
83 static CORE_ADDR next_address;
85 /* Number of delay instructions following current disassembled insn. */
87 static int branch_delay_insns;
89 /* Last address examined. */
91 static CORE_ADDR last_examine_address;
93 /* Contents of last address examined.
94 This is not valid past the end of the `x' command! */
96 static value_ref_ptr last_examine_value;
98 /* Largest offset between a symbolic value and an address, that will be
99 printed as `0x1234 <symbol+offset>'. */
101 static unsigned int max_symbolic_offset = UINT_MAX;
102 static void
103 show_max_symbolic_offset (struct ui_file *file, int from_tty,
104 struct cmd_list_element *c, const char *value)
106 gdb_printf (file,
107 _("The largest offset that will be "
108 "printed in <symbol+1234> form is %s.\n"),
109 value);
112 /* Append the source filename and linenumber of the symbol when
113 printing a symbolic value as `<symbol at filename:linenum>' if set. */
114 static bool print_symbol_filename = false;
115 static void
116 show_print_symbol_filename (struct ui_file *file, int from_tty,
117 struct cmd_list_element *c, const char *value)
119 gdb_printf (file, _("Printing of source filename and "
120 "line number with <symbol> is %s.\n"),
121 value);
124 /* Number of auto-display expression currently being displayed.
125 So that we can disable it if we get a signal within it.
126 -1 when not doing one. */
128 static int current_display_number;
130 /* Last allocated display number. */
132 static int display_number;
134 struct display
136 display (const char *exp_string_, expression_up &&exp_,
137 const struct format_data &format_, struct program_space *pspace_,
138 const struct block *block_)
139 : exp_string (exp_string_),
140 exp (std::move (exp_)),
141 number (++display_number),
142 format (format_),
143 pspace (pspace_),
144 block (block_),
145 enabled_p (true)
149 /* The expression as the user typed it. */
150 std::string exp_string;
152 /* Expression to be evaluated and displayed. */
153 expression_up exp;
155 /* Item number of this auto-display item. */
156 int number;
158 /* Display format specified. */
159 struct format_data format;
161 /* Program space associated with `block'. */
162 struct program_space *pspace;
164 /* Innermost block required by this expression when evaluated. */
165 const struct block *block;
167 /* Status of this display (enabled or disabled). */
168 bool enabled_p;
171 /* Expressions whose values should be displayed automatically each
172 time the program stops. */
174 static std::vector<std::unique_ptr<struct display>> all_displays;
176 /* Prototypes for local functions. */
178 static void do_one_display (struct display *);
181 /* Decode a format specification. *STRING_PTR should point to it.
182 OFORMAT and OSIZE are used as defaults for the format and size
183 if none are given in the format specification.
184 If OSIZE is zero, then the size field of the returned value
185 should be set only if a size is explicitly specified by the
186 user.
187 The structure returned describes all the data
188 found in the specification. In addition, *STRING_PTR is advanced
189 past the specification and past all whitespace following it. */
191 static struct format_data
192 decode_format (const char **string_ptr, int oformat, int osize)
194 struct format_data val;
195 const char *p = *string_ptr;
197 val.format = '?';
198 val.size = '?';
199 val.count = 1;
200 val.raw = 0;
201 val.print_tags = false;
203 if (*p == '-')
205 val.count = -1;
206 p++;
208 if (*p >= '0' && *p <= '9')
209 val.count *= atoi (p);
210 while (*p >= '0' && *p <= '9')
211 p++;
213 /* Now process size or format letters that follow. */
215 while (1)
217 if (*p == 'b' || *p == 'h' || *p == 'w' || *p == 'g')
218 val.size = *p++;
219 else if (*p == 'r')
221 val.raw = 1;
222 p++;
224 else if (*p == 'm')
226 val.print_tags = true;
227 p++;
229 else if (*p >= 'a' && *p <= 'z')
230 val.format = *p++;
231 else
232 break;
235 *string_ptr = skip_spaces (p);
237 /* Set defaults for format and size if not specified. */
238 if (val.format == '?')
240 if (val.size == '?')
242 /* Neither has been specified. */
243 val.format = oformat;
244 val.size = osize;
246 else
247 /* If a size is specified, any format makes a reasonable
248 default except 'i'. */
249 val.format = oformat == 'i' ? 'x' : oformat;
251 else if (val.size == '?')
252 switch (val.format)
254 case 'a':
255 /* Pick the appropriate size for an address. This is deferred
256 until do_examine when we know the actual architecture to use.
257 A special size value of 'a' is used to indicate this case. */
258 val.size = osize ? 'a' : osize;
259 break;
260 case 'f':
261 /* Floating point has to be word or giantword. */
262 if (osize == 'w' || osize == 'g')
263 val.size = osize;
264 else
265 /* Default it to giantword if the last used size is not
266 appropriate. */
267 val.size = osize ? 'g' : osize;
268 break;
269 case 'c':
270 /* Characters default to one byte. */
271 val.size = osize ? 'b' : osize;
272 break;
273 case 's':
274 /* Display strings with byte size chars unless explicitly
275 specified. */
276 val.size = '\0';
277 break;
279 default:
280 /* The default is the size most recently specified. */
281 val.size = osize;
284 return val;
287 /* Print value VAL on stream according to OPTIONS.
288 Do not end with a newline.
289 SIZE is the letter for the size of datum being printed.
290 This is used to pad hex numbers so they line up. SIZE is 0
291 for print / output and set for examine. */
293 static void
294 print_formatted (struct value *val, int size,
295 const struct value_print_options *options,
296 struct ui_file *stream)
298 struct type *type = check_typedef (val->type ());
299 int len = type->length ();
301 if (val->lval () == lval_memory)
302 next_address = val->address () + len;
304 if (size)
306 switch (options->format)
308 case 's':
310 struct type *elttype = val->type ();
312 next_address = (val->address ()
313 + val_print_string (elttype, NULL,
314 val->address (), -1,
315 stream, options) * len);
317 return;
319 case 'i':
320 /* We often wrap here if there are long symbolic names. */
321 stream->wrap_here (4);
322 next_address = (val->address ()
323 + gdb_print_insn (type->arch (),
324 val->address (), stream,
325 &branch_delay_insns));
326 return;
330 if (options->format == 0 || options->format == 's'
331 || type->code () == TYPE_CODE_VOID
332 || type->code () == TYPE_CODE_REF
333 || type->code () == TYPE_CODE_ARRAY
334 || type->code () == TYPE_CODE_STRING
335 || type->code () == TYPE_CODE_STRUCT
336 || type->code () == TYPE_CODE_UNION
337 || type->code () == TYPE_CODE_NAMESPACE)
338 value_print (val, stream, options);
339 else
340 /* User specified format, so don't look to the type to tell us
341 what to do. */
342 value_print_scalar_formatted (val, options, size, stream);
345 /* Return builtin floating point type of same length as TYPE.
346 If no such type is found, return TYPE itself. */
347 static struct type *
348 float_type_from_length (struct type *type)
350 struct gdbarch *gdbarch = type->arch ();
351 const struct builtin_type *builtin = builtin_type (gdbarch);
353 if (type->length () == builtin->builtin_half->length ())
354 type = builtin->builtin_half;
355 else if (type->length () == builtin->builtin_float->length ())
356 type = builtin->builtin_float;
357 else if (type->length () == builtin->builtin_double->length ())
358 type = builtin->builtin_double;
359 else if (type->length () == builtin->builtin_long_double->length ())
360 type = builtin->builtin_long_double;
362 return type;
365 /* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
366 according to OPTIONS and SIZE on STREAM. Formats s and i are not
367 supported at this level. */
369 void
370 print_scalar_formatted (const gdb_byte *valaddr, struct type *type,
371 const struct value_print_options *options,
372 int size, struct ui_file *stream)
374 struct gdbarch *gdbarch = type->arch ();
375 unsigned int len = type->length ();
376 enum bfd_endian byte_order = type_byte_order (type);
378 /* String printing should go through val_print_scalar_formatted. */
379 gdb_assert (options->format != 's');
381 /* If the value is a pointer, and pointers and addresses are not the
382 same, then at this point, the value's length (in target bytes) is
383 gdbarch_addr_bit/TARGET_CHAR_BIT, not type->length (). */
384 if (type->code () == TYPE_CODE_PTR)
385 len = gdbarch_addr_bit (gdbarch) / TARGET_CHAR_BIT;
387 /* If we are printing it as unsigned, truncate it in case it is actually
388 a negative signed value (e.g. "print/u (short)-1" should print 65535
389 (if shorts are 16 bits) instead of 4294967295). */
390 if (options->format != 'c'
391 && (options->format != 'd' || type->is_unsigned ()))
393 if (len < type->length () && byte_order == BFD_ENDIAN_BIG)
394 valaddr += type->length () - len;
397 /* Allow LEN == 0, and in this case, don't assume that VALADDR is
398 valid. */
399 const gdb_byte zero = 0;
400 if (len == 0)
402 len = 1;
403 valaddr = &zero;
406 if (size != 0 && (options->format == 'x' || options->format == 't'))
408 /* Truncate to fit. */
409 unsigned newlen;
410 switch (size)
412 case 'b':
413 newlen = 1;
414 break;
415 case 'h':
416 newlen = 2;
417 break;
418 case 'w':
419 newlen = 4;
420 break;
421 case 'g':
422 newlen = 8;
423 break;
424 default:
425 error (_("Undefined output size \"%c\"."), size);
427 if (newlen < len && byte_order == BFD_ENDIAN_BIG)
428 valaddr += len - newlen;
429 len = newlen;
432 /* Biased range types and sub-word scalar types must be handled
433 here; the value is correctly computed by unpack_long. */
434 gdb::byte_vector converted_bytes;
435 /* Some cases below will unpack the value again. In the biased
436 range case, we want to avoid this, so we store the unpacked value
437 here for possible use later. */
438 gdb::optional<LONGEST> val_long;
439 if ((is_fixed_point_type (type)
440 && (options->format == 'o'
441 || options->format == 'x'
442 || options->format == 't'
443 || options->format == 'z'
444 || options->format == 'd'
445 || options->format == 'u'))
446 || (type->code () == TYPE_CODE_RANGE && type->bounds ()->bias != 0)
447 || type->bit_size_differs_p ())
449 val_long.emplace (unpack_long (type, valaddr));
450 converted_bytes.resize (type->length ());
451 store_signed_integer (converted_bytes.data (), type->length (),
452 byte_order, *val_long);
453 valaddr = converted_bytes.data ();
456 /* Printing a non-float type as 'f' will interpret the data as if it were
457 of a floating-point type of the same length, if that exists. Otherwise,
458 the data is printed as integer. */
459 char format = options->format;
460 if (format == 'f' && type->code () != TYPE_CODE_FLT)
462 type = float_type_from_length (type);
463 if (type->code () != TYPE_CODE_FLT)
464 format = 0;
467 switch (format)
469 case 'o':
470 print_octal_chars (stream, valaddr, len, byte_order);
471 break;
472 case 'd':
473 print_decimal_chars (stream, valaddr, len, true, byte_order);
474 break;
475 case 'u':
476 print_decimal_chars (stream, valaddr, len, false, byte_order);
477 break;
478 case 0:
479 if (type->code () != TYPE_CODE_FLT)
481 print_decimal_chars (stream, valaddr, len, !type->is_unsigned (),
482 byte_order);
483 break;
485 /* FALLTHROUGH */
486 case 'f':
487 print_floating (valaddr, type, stream);
488 break;
490 case 't':
491 print_binary_chars (stream, valaddr, len, byte_order, size > 0, options);
492 break;
493 case 'x':
494 print_hex_chars (stream, valaddr, len, byte_order, size > 0);
495 break;
496 case 'z':
497 print_hex_chars (stream, valaddr, len, byte_order, true);
498 break;
499 case 'c':
501 struct value_print_options opts = *options;
503 if (!val_long.has_value ())
504 val_long.emplace (unpack_long (type, valaddr));
506 opts.format = 0;
507 if (type->is_unsigned ())
508 type = builtin_type (gdbarch)->builtin_true_unsigned_char;
509 else
510 type = builtin_type (gdbarch)->builtin_true_char;
512 value_print (value_from_longest (type, *val_long), stream, &opts);
514 break;
516 case 'a':
518 if (!val_long.has_value ())
519 val_long.emplace (unpack_long (type, valaddr));
520 print_address (gdbarch, *val_long, stream);
522 break;
524 default:
525 error (_("Undefined output format \"%c\"."), format);
529 /* Specify default address for `x' command.
530 The `info lines' command uses this. */
532 void
533 set_next_address (struct gdbarch *gdbarch, CORE_ADDR addr)
535 struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
537 next_gdbarch = gdbarch;
538 next_address = addr;
540 /* Make address available to the user as $_. */
541 set_internalvar (lookup_internalvar ("_"),
542 value_from_pointer (ptr_type, addr));
545 /* Optionally print address ADDR symbolically as <SYMBOL+OFFSET> on STREAM,
546 after LEADIN. Print nothing if no symbolic name is found nearby.
547 Optionally also print source file and line number, if available.
548 DO_DEMANGLE controls whether to print a symbol in its native "raw" form,
549 or to interpret it as a possible C++ name and convert it back to source
550 form. However note that DO_DEMANGLE can be overridden by the specific
551 settings of the demangle and asm_demangle variables. Returns
552 non-zero if anything was printed; zero otherwise. */
555 print_address_symbolic (struct gdbarch *gdbarch, CORE_ADDR addr,
556 struct ui_file *stream,
557 int do_demangle, const char *leadin)
559 std::string name, filename;
560 int unmapped = 0;
561 int offset = 0;
562 int line = 0;
564 if (build_address_symbolic (gdbarch, addr, do_demangle, false, &name,
565 &offset, &filename, &line, &unmapped))
566 return 0;
568 gdb_puts (leadin, stream);
569 if (unmapped)
570 gdb_puts ("<*", stream);
571 else
572 gdb_puts ("<", stream);
573 fputs_styled (name.c_str (), function_name_style.style (), stream);
574 if (offset != 0)
575 gdb_printf (stream, "%+d", offset);
577 /* Append source filename and line number if desired. Give specific
578 line # of this addr, if we have it; else line # of the nearest symbol. */
579 if (print_symbol_filename && !filename.empty ())
581 gdb_puts (line == -1 ? " in " : " at ", stream);
582 fputs_styled (filename.c_str (), file_name_style.style (), stream);
583 if (line != -1)
584 gdb_printf (stream, ":%d", line);
586 if (unmapped)
587 gdb_puts ("*>", stream);
588 else
589 gdb_puts (">", stream);
591 return 1;
594 /* See valprint.h. */
597 build_address_symbolic (struct gdbarch *gdbarch,
598 CORE_ADDR addr, /* IN */
599 bool do_demangle, /* IN */
600 bool prefer_sym_over_minsym, /* IN */
601 std::string *name, /* OUT */
602 int *offset, /* OUT */
603 std::string *filename, /* OUT */
604 int *line, /* OUT */
605 int *unmapped) /* OUT */
607 struct bound_minimal_symbol msymbol;
608 struct symbol *symbol;
609 CORE_ADDR name_location = 0;
610 struct obj_section *section = NULL;
611 const char *name_temp = "";
613 /* Let's say it is mapped (not unmapped). */
614 *unmapped = 0;
616 /* Determine if the address is in an overlay, and whether it is
617 mapped. */
618 if (overlay_debugging)
620 section = find_pc_overlay (addr);
621 if (pc_in_unmapped_range (addr, section))
623 *unmapped = 1;
624 addr = overlay_mapped_address (addr, section);
628 /* Try to find the address in both the symbol table and the minsyms.
629 In most cases, we'll prefer to use the symbol instead of the
630 minsym. However, there are cases (see below) where we'll choose
631 to use the minsym instead. */
633 /* This is defective in the sense that it only finds text symbols. So
634 really this is kind of pointless--we should make sure that the
635 minimal symbols have everything we need (by changing that we could
636 save some memory, but for many debug format--ELF/DWARF or
637 anything/stabs--it would be inconvenient to eliminate those minimal
638 symbols anyway). */
639 msymbol = lookup_minimal_symbol_by_pc_section (addr, section);
640 symbol = find_pc_sect_function (addr, section);
642 if (symbol)
644 /* If this is a function (i.e. a code address), strip out any
645 non-address bits. For instance, display a pointer to the
646 first instruction of a Thumb function as <function>; the
647 second instruction will be <function+2>, even though the
648 pointer is <function+3>. This matches the ISA behavior. */
649 addr = gdbarch_addr_bits_remove (gdbarch, addr);
651 name_location = symbol->value_block ()->entry_pc ();
652 if (do_demangle || asm_demangle)
653 name_temp = symbol->print_name ();
654 else
655 name_temp = symbol->linkage_name ();
658 if (msymbol.minsym != NULL
659 && msymbol.minsym->has_size ()
660 && msymbol.minsym->size () == 0
661 && msymbol.minsym->type () != mst_text
662 && msymbol.minsym->type () != mst_text_gnu_ifunc
663 && msymbol.minsym->type () != mst_file_text)
664 msymbol.minsym = NULL;
666 if (msymbol.minsym != NULL)
668 /* Use the minsym if no symbol is found.
670 Additionally, use the minsym instead of a (found) symbol if
671 the following conditions all hold:
672 1) The prefer_sym_over_minsym flag is false.
673 2) The minsym address is identical to that of the address under
674 consideration.
675 3) The symbol address is not identical to that of the address
676 under consideration. */
677 if (symbol == NULL ||
678 (!prefer_sym_over_minsym
679 && msymbol.value_address () == addr
680 && name_location != addr))
682 /* If this is a function (i.e. a code address), strip out any
683 non-address bits. For instance, display a pointer to the
684 first instruction of a Thumb function as <function>; the
685 second instruction will be <function+2>, even though the
686 pointer is <function+3>. This matches the ISA behavior. */
687 if (msymbol.minsym->type () == mst_text
688 || msymbol.minsym->type () == mst_text_gnu_ifunc
689 || msymbol.minsym->type () == mst_file_text
690 || msymbol.minsym->type () == mst_solib_trampoline)
691 addr = gdbarch_addr_bits_remove (gdbarch, addr);
693 symbol = 0;
694 name_location = msymbol.value_address ();
695 if (do_demangle || asm_demangle)
696 name_temp = msymbol.minsym->print_name ();
697 else
698 name_temp = msymbol.minsym->linkage_name ();
701 if (symbol == NULL && msymbol.minsym == NULL)
702 return 1;
704 /* If the nearest symbol is too far away, don't print anything symbolic. */
706 /* For when CORE_ADDR is larger than unsigned int, we do math in
707 CORE_ADDR. But when we detect unsigned wraparound in the
708 CORE_ADDR math, we ignore this test and print the offset,
709 because addr+max_symbolic_offset has wrapped through the end
710 of the address space back to the beginning, giving bogus comparison. */
711 if (addr > name_location + max_symbolic_offset
712 && name_location + max_symbolic_offset > name_location)
713 return 1;
715 *offset = (LONGEST) addr - name_location;
717 *name = name_temp;
719 if (print_symbol_filename)
721 struct symtab_and_line sal;
723 sal = find_pc_sect_line (addr, section, 0);
725 if (sal.symtab)
727 *filename = symtab_to_filename_for_display (sal.symtab);
728 *line = sal.line;
731 return 0;
735 /* Print address ADDR symbolically on STREAM.
736 First print it as a number. Then perhaps print
737 <SYMBOL + OFFSET> after the number. */
739 void
740 print_address (struct gdbarch *gdbarch,
741 CORE_ADDR addr, struct ui_file *stream)
743 fputs_styled (paddress (gdbarch, addr), address_style.style (), stream);
744 print_address_symbolic (gdbarch, addr, stream, asm_demangle, " ");
747 /* Return a prefix for instruction address:
748 "=> " for current instruction, else " ". */
750 const char *
751 pc_prefix (CORE_ADDR addr)
753 if (has_stack_frames ())
755 frame_info_ptr frame;
756 CORE_ADDR pc;
758 frame = get_selected_frame (NULL);
759 if (get_frame_pc_if_available (frame, &pc) && pc == addr)
760 return "=> ";
762 return " ";
765 /* Print address ADDR symbolically on STREAM. Parameter DEMANGLE
766 controls whether to print the symbolic name "raw" or demangled.
767 Return non-zero if anything was printed; zero otherwise. */
770 print_address_demangle (const struct value_print_options *opts,
771 struct gdbarch *gdbarch, CORE_ADDR addr,
772 struct ui_file *stream, int do_demangle)
774 if (opts->addressprint)
776 fputs_styled (paddress (gdbarch, addr), address_style.style (), stream);
777 print_address_symbolic (gdbarch, addr, stream, do_demangle, " ");
779 else
781 return print_address_symbolic (gdbarch, addr, stream, do_demangle, "");
783 return 1;
787 /* Find the address of the instruction that is INST_COUNT instructions before
788 the instruction at ADDR.
789 Since some architectures have variable-length instructions, we can't just
790 simply subtract INST_COUNT * INSN_LEN from ADDR. Instead, we use line
791 number information to locate the nearest known instruction boundary,
792 and disassemble forward from there. If we go out of the symbol range
793 during disassembling, we return the lowest address we've got so far and
794 set the number of instructions read to INST_READ. */
796 static CORE_ADDR
797 find_instruction_backward (struct gdbarch *gdbarch, CORE_ADDR addr,
798 int inst_count, int *inst_read)
800 /* The vector PCS is used to store instruction addresses within
801 a pc range. */
802 CORE_ADDR loop_start, loop_end, p;
803 std::vector<CORE_ADDR> pcs;
804 struct symtab_and_line sal;
806 *inst_read = 0;
807 loop_start = loop_end = addr;
809 /* In each iteration of the outer loop, we get a pc range that ends before
810 LOOP_START, then we count and store every instruction address of the range
811 iterated in the loop.
812 If the number of instructions counted reaches INST_COUNT, return the
813 stored address that is located INST_COUNT instructions back from ADDR.
814 If INST_COUNT is not reached, we subtract the number of counted
815 instructions from INST_COUNT, and go to the next iteration. */
818 pcs.clear ();
819 sal = find_pc_sect_line (loop_start, NULL, 1);
820 if (sal.line <= 0)
822 /* We reach here when line info is not available. In this case,
823 we print a message and just exit the loop. The return value
824 is calculated after the loop. */
825 gdb_printf (_("No line number information available "
826 "for address "));
827 gdb_stdout->wrap_here (2);
828 print_address (gdbarch, loop_start - 1, gdb_stdout);
829 gdb_printf ("\n");
830 break;
833 loop_end = loop_start;
834 loop_start = sal.pc;
836 /* This loop pushes instruction addresses in the range from
837 LOOP_START to LOOP_END. */
838 for (p = loop_start; p < loop_end;)
840 pcs.push_back (p);
841 p += gdb_insn_length (gdbarch, p);
844 inst_count -= pcs.size ();
845 *inst_read += pcs.size ();
847 while (inst_count > 0);
849 /* After the loop, the vector PCS has instruction addresses of the last
850 source line we processed, and INST_COUNT has a negative value.
851 We return the address at the index of -INST_COUNT in the vector for
852 the reason below.
853 Let's assume the following instruction addresses and run 'x/-4i 0x400e'.
854 Line X of File
855 0x4000
856 0x4001
857 0x4005
858 Line Y of File
859 0x4009
860 0x400c
861 => 0x400e
862 0x4011
863 find_instruction_backward is called with INST_COUNT = 4 and expected to
864 return 0x4001. When we reach here, INST_COUNT is set to -1 because
865 it was subtracted by 2 (from Line Y) and 3 (from Line X). The value
866 4001 is located at the index 1 of the last iterated line (= Line X),
867 which is simply calculated by -INST_COUNT.
868 The case when the length of PCS is 0 means that we reached an area for
869 which line info is not available. In such case, we return LOOP_START,
870 which was the lowest instruction address that had line info. */
871 p = pcs.size () > 0 ? pcs[-inst_count] : loop_start;
873 /* INST_READ includes all instruction addresses in a pc range. Need to
874 exclude the beginning part up to the address we're returning. That
875 is, exclude {0x4000} in the example above. */
876 if (inst_count < 0)
877 *inst_read += inst_count;
879 return p;
882 /* Backward read LEN bytes of target memory from address MEMADDR + LEN,
883 placing the results in GDB's memory from MYADDR + LEN. Returns
884 a count of the bytes actually read. */
886 static int
887 read_memory_backward (struct gdbarch *gdbarch,
888 CORE_ADDR memaddr, gdb_byte *myaddr, int len)
890 int errcode;
891 int nread; /* Number of bytes actually read. */
893 /* First try a complete read. */
894 errcode = target_read_memory (memaddr, myaddr, len);
895 if (errcode == 0)
897 /* Got it all. */
898 nread = len;
900 else
902 /* Loop, reading one byte at a time until we get as much as we can. */
903 memaddr += len;
904 myaddr += len;
905 for (nread = 0; nread < len; ++nread)
907 errcode = target_read_memory (--memaddr, --myaddr, 1);
908 if (errcode != 0)
910 /* The read was unsuccessful, so exit the loop. */
911 gdb_printf (_("Cannot access memory at address %s\n"),
912 paddress (gdbarch, memaddr));
913 break;
917 return nread;
920 /* Returns true if X (which is LEN bytes wide) is the number zero. */
922 static int
923 integer_is_zero (const gdb_byte *x, int len)
925 int i = 0;
927 while (i < len && x[i] == 0)
928 ++i;
929 return (i == len);
932 /* Find the start address of a string in which ADDR is included.
933 Basically we search for '\0' and return the next address,
934 but if OPTIONS->PRINT_MAX is smaller than the length of a string,
935 we stop searching and return the address to print characters as many as
936 PRINT_MAX from the string. */
938 static CORE_ADDR
939 find_string_backward (struct gdbarch *gdbarch,
940 CORE_ADDR addr, int count, int char_size,
941 const struct value_print_options *options,
942 int *strings_counted)
944 const int chunk_size = 0x20;
945 int read_error = 0;
946 int chars_read = 0;
947 int chars_to_read = chunk_size;
948 int chars_counted = 0;
949 int count_original = count;
950 CORE_ADDR string_start_addr = addr;
952 gdb_assert (char_size == 1 || char_size == 2 || char_size == 4);
953 gdb::byte_vector buffer (chars_to_read * char_size);
954 while (count > 0 && read_error == 0)
956 int i;
958 addr -= chars_to_read * char_size;
959 chars_read = read_memory_backward (gdbarch, addr, buffer.data (),
960 chars_to_read * char_size);
961 chars_read /= char_size;
962 read_error = (chars_read == chars_to_read) ? 0 : 1;
963 unsigned int print_max_chars = get_print_max_chars (options);
964 /* Searching for '\0' from the end of buffer in backward direction. */
965 for (i = 0; i < chars_read && count > 0 ; ++i, ++chars_counted)
967 int offset = (chars_to_read - i - 1) * char_size;
969 if (integer_is_zero (&buffer[offset], char_size)
970 || chars_counted == print_max_chars)
972 /* Found '\0' or reached `print_max_chars'. As OFFSET
973 is the offset to '\0', we add CHAR_SIZE to return
974 the start address of a string. */
975 --count;
976 string_start_addr = addr + offset + char_size;
977 chars_counted = 0;
982 /* Update STRINGS_COUNTED with the actual number of loaded strings. */
983 *strings_counted = count_original - count;
985 if (read_error != 0)
987 /* In error case, STRING_START_ADDR is pointing to the string that
988 was last successfully loaded. Rewind the partially loaded string. */
989 string_start_addr -= chars_counted * char_size;
992 return string_start_addr;
995 /* Examine data at address ADDR in format FMT.
996 Fetch it from memory and print on gdb_stdout. */
998 static void
999 do_examine (struct format_data fmt, struct gdbarch *gdbarch, CORE_ADDR addr)
1001 char format = 0;
1002 char size;
1003 int count = 1;
1004 struct type *val_type = NULL;
1005 int i;
1006 int maxelts;
1007 struct value_print_options opts;
1008 int need_to_update_next_address = 0;
1009 CORE_ADDR addr_rewound = 0;
1011 format = fmt.format;
1012 size = fmt.size;
1013 count = fmt.count;
1014 next_gdbarch = gdbarch;
1015 next_address = addr;
1017 /* Instruction format implies fetch single bytes
1018 regardless of the specified size.
1019 The case of strings is handled in decode_format, only explicit
1020 size operator are not changed to 'b'. */
1021 if (format == 'i')
1022 size = 'b';
1024 if (size == 'a')
1026 /* Pick the appropriate size for an address. */
1027 if (gdbarch_ptr_bit (next_gdbarch) == 64)
1028 size = 'g';
1029 else if (gdbarch_ptr_bit (next_gdbarch) == 32)
1030 size = 'w';
1031 else if (gdbarch_ptr_bit (next_gdbarch) == 16)
1032 size = 'h';
1033 else
1034 /* Bad value for gdbarch_ptr_bit. */
1035 internal_error (_("failed internal consistency check"));
1038 if (size == 'b')
1039 val_type = builtin_type (next_gdbarch)->builtin_int8;
1040 else if (size == 'h')
1041 val_type = builtin_type (next_gdbarch)->builtin_int16;
1042 else if (size == 'w')
1043 val_type = builtin_type (next_gdbarch)->builtin_int32;
1044 else if (size == 'g')
1045 val_type = builtin_type (next_gdbarch)->builtin_int64;
1047 if (format == 's')
1049 struct type *char_type = NULL;
1051 /* Search for "char16_t" or "char32_t" types or fall back to 8-bit char
1052 if type is not found. */
1053 if (size == 'h')
1054 char_type = builtin_type (next_gdbarch)->builtin_char16;
1055 else if (size == 'w')
1056 char_type = builtin_type (next_gdbarch)->builtin_char32;
1057 if (char_type)
1058 val_type = char_type;
1059 else
1061 if (size != '\0' && size != 'b')
1062 warning (_("Unable to display strings with "
1063 "size '%c', using 'b' instead."), size);
1064 size = 'b';
1065 val_type = builtin_type (next_gdbarch)->builtin_int8;
1069 maxelts = 8;
1070 if (size == 'w')
1071 maxelts = 4;
1072 if (size == 'g')
1073 maxelts = 2;
1074 if (format == 's' || format == 'i')
1075 maxelts = 1;
1077 get_formatted_print_options (&opts, format);
1079 if (count < 0)
1081 /* This is the negative repeat count case.
1082 We rewind the address based on the given repeat count and format,
1083 then examine memory from there in forward direction. */
1085 count = -count;
1086 if (format == 'i')
1088 next_address = find_instruction_backward (gdbarch, addr, count,
1089 &count);
1091 else if (format == 's')
1093 next_address = find_string_backward (gdbarch, addr, count,
1094 val_type->length (),
1095 &opts, &count);
1097 else
1099 next_address = addr - count * val_type->length ();
1102 /* The following call to print_formatted updates next_address in every
1103 iteration. In backward case, we store the start address here
1104 and update next_address with it before exiting the function. */
1105 addr_rewound = (format == 's'
1106 ? next_address - val_type->length ()
1107 : next_address);
1108 need_to_update_next_address = 1;
1111 /* Whether we need to print the memory tag information for the current
1112 address range. */
1113 bool print_range_tag = true;
1114 uint32_t gsize = gdbarch_memtag_granule_size (gdbarch);
1116 /* Print as many objects as specified in COUNT, at most maxelts per line,
1117 with the address of the next one at the start of each line. */
1119 while (count > 0)
1121 QUIT;
1123 CORE_ADDR tag_laddr = 0, tag_haddr = 0;
1125 /* Print the memory tag information if requested. */
1126 if (fmt.print_tags && print_range_tag
1127 && target_supports_memory_tagging ())
1129 tag_laddr = align_down (next_address, gsize);
1130 tag_haddr = align_down (next_address + gsize, gsize);
1132 struct value *v_addr
1133 = value_from_ulongest (builtin_type (gdbarch)->builtin_data_ptr,
1134 tag_laddr);
1136 if (gdbarch_tagged_address_p (current_inferior ()->arch (), v_addr))
1138 /* Fetch the allocation tag. */
1139 struct value *tag
1140 = gdbarch_get_memtag (gdbarch, v_addr, memtag_type::allocation);
1141 std::string atag
1142 = gdbarch_memtag_to_string (gdbarch, tag);
1144 if (!atag.empty ())
1146 gdb_printf (_("<Allocation Tag %s for range [%s,%s)>\n"),
1147 atag.c_str (),
1148 paddress (gdbarch, tag_laddr),
1149 paddress (gdbarch, tag_haddr));
1152 print_range_tag = false;
1155 if (format == 'i')
1156 gdb_puts (pc_prefix (next_address));
1157 print_address (next_gdbarch, next_address, gdb_stdout);
1158 gdb_printf (":");
1159 for (i = maxelts;
1160 i > 0 && count > 0;
1161 i--, count--)
1163 gdb_printf ("\t");
1164 /* Note that print_formatted sets next_address for the next
1165 object. */
1166 last_examine_address = next_address;
1168 /* The value to be displayed is not fetched greedily.
1169 Instead, to avoid the possibility of a fetched value not
1170 being used, its retrieval is delayed until the print code
1171 uses it. When examining an instruction stream, the
1172 disassembler will perform its own memory fetch using just
1173 the address stored in LAST_EXAMINE_VALUE. FIXME: Should
1174 the disassembler be modified so that LAST_EXAMINE_VALUE
1175 is left with the byte sequence from the last complete
1176 instruction fetched from memory? */
1177 last_examine_value
1178 = release_value (value_at_lazy (val_type, next_address));
1180 print_formatted (last_examine_value.get (), size, &opts, gdb_stdout);
1182 /* Display any branch delay slots following the final insn. */
1183 if (format == 'i' && count == 1)
1184 count += branch_delay_insns;
1186 /* Update the tag range based on the current address being
1187 processed. */
1188 if (tag_haddr <= next_address)
1189 print_range_tag = true;
1191 gdb_printf ("\n");
1194 if (need_to_update_next_address)
1195 next_address = addr_rewound;
1198 static void
1199 validate_format (struct format_data fmt, const char *cmdname)
1201 if (fmt.size != 0)
1202 error (_("Size letters are meaningless in \"%s\" command."), cmdname);
1203 if (fmt.count != 1)
1204 error (_("Item count other than 1 is meaningless in \"%s\" command."),
1205 cmdname);
1206 if (fmt.format == 'i')
1207 error (_("Format letter \"%c\" is meaningless in \"%s\" command."),
1208 fmt.format, cmdname);
1211 /* Parse print command format string into *OPTS and update *EXPP.
1212 CMDNAME should name the current command. */
1214 void
1215 print_command_parse_format (const char **expp, const char *cmdname,
1216 value_print_options *opts)
1218 const char *exp = *expp;
1220 /* opts->raw value might already have been set by 'set print raw-values'
1221 or by using 'print -raw-values'.
1222 So, do not set opts->raw to 0, only set it to 1 if /r is given. */
1223 if (exp && *exp == '/')
1225 format_data fmt;
1227 exp++;
1228 fmt = decode_format (&exp, last_format, 0);
1229 validate_format (fmt, cmdname);
1230 last_format = fmt.format;
1232 opts->format = fmt.format;
1233 opts->raw = opts->raw || fmt.raw;
1235 else
1237 opts->format = 0;
1240 *expp = exp;
1243 /* See valprint.h. */
1245 void
1246 print_value (value *val, const value_print_options &opts)
1248 /* This setting allows large arrays to be printed by limiting the
1249 number of elements that are loaded into GDB's memory; we only
1250 need to load as many array elements as we plan to print. */
1251 scoped_array_length_limiting limit_large_arrays (opts.print_max);
1253 int histindex = val->record_latest ();
1255 annotate_value_history_begin (histindex, val->type ());
1257 std::string idx = string_printf ("$%d", histindex);
1258 gdb_printf ("%ps = ", styled_string (variable_name_style.style (),
1259 idx.c_str ()));
1261 annotate_value_history_value ();
1263 print_formatted (val, 0, &opts, gdb_stdout);
1264 gdb_printf ("\n");
1266 annotate_value_history_end ();
1269 /* Returns true if memory tags should be validated. False otherwise. */
1271 static bool
1272 should_validate_memtags (struct value *value)
1274 gdb_assert (value != nullptr && value->type () != nullptr);
1276 if (!target_supports_memory_tagging ())
1277 return false;
1279 enum type_code code = value->type ()->code ();
1281 /* Skip non-address values. */
1282 if (code != TYPE_CODE_PTR
1283 && !TYPE_IS_REFERENCE (value->type ()))
1284 return false;
1286 /* OK, we have an address value. Check we have a complete value we
1287 can extract. */
1288 if (value->optimized_out ()
1289 || !value->entirely_available ())
1290 return false;
1292 /* We do. Check whether it includes any tags. */
1293 return gdbarch_tagged_address_p (current_inferior ()->arch (), value);
1296 /* Helper for parsing arguments for print_command_1. */
1298 static struct value *
1299 process_print_command_args (const char *args, value_print_options *print_opts,
1300 bool voidprint)
1302 get_user_print_options (print_opts);
1303 /* Override global settings with explicit options, if any. */
1304 auto group = make_value_print_options_def_group (print_opts);
1305 gdb::option::process_options
1306 (&args, gdb::option::PROCESS_OPTIONS_REQUIRE_DELIMITER, group);
1308 print_command_parse_format (&args, "print", print_opts);
1310 const char *exp = args;
1312 if (exp != nullptr && *exp)
1314 /* This setting allows large arrays to be printed by limiting the
1315 number of elements that are loaded into GDB's memory; we only
1316 need to load as many array elements as we plan to print. */
1317 scoped_array_length_limiting limit_large_arrays (print_opts->print_max);
1319 /* VOIDPRINT is true to indicate that we do want to print a void
1320 value, so invert it for parse_expression. */
1321 parser_flags flags = 0;
1322 if (!voidprint)
1323 flags = PARSER_VOID_CONTEXT;
1324 expression_up expr = parse_expression (exp, nullptr, flags);
1325 return expr->evaluate ();
1328 return access_value_history (0);
1331 /* Implementation of the "print" and "call" commands. */
1333 static void
1334 print_command_1 (const char *args, int voidprint)
1336 value_print_options print_opts;
1338 struct value *val = process_print_command_args (args, &print_opts, voidprint);
1340 if (voidprint || (val && val->type () &&
1341 val->type ()->code () != TYPE_CODE_VOID))
1343 /* If memory tagging validation is on, check if the tag is valid. */
1344 if (print_opts.memory_tag_violations)
1348 gdbarch *arch = current_inferior ()->arch ();
1350 if (should_validate_memtags (val)
1351 && !gdbarch_memtag_matches_p (arch, val))
1353 /* Fetch the logical tag. */
1354 struct value *tag
1355 = gdbarch_get_memtag (arch, val, memtag_type::logical);
1356 std::string ltag = gdbarch_memtag_to_string (arch, tag);
1358 /* Fetch the allocation tag. */
1359 tag = gdbarch_get_memtag (arch, val,
1360 memtag_type::allocation);
1361 std::string atag = gdbarch_memtag_to_string (arch, tag);
1363 gdb_printf (_("Logical tag (%s) does not match the "
1364 "allocation tag (%s).\n"),
1365 ltag.c_str (), atag.c_str ());
1368 catch (gdb_exception_error &ex)
1370 if (ex.error == TARGET_CLOSE_ERROR)
1371 throw;
1373 gdb_printf (gdb_stderr,
1374 _("Could not validate memory tag: %s\n"),
1375 ex.message->c_str ());
1379 print_value (val, print_opts);
1383 /* Called from command completion function to skip over /FMT
1384 specifications, allowing the rest of the line to be completed. Returns
1385 true if the /FMT is at the end of the current line and there is nothing
1386 left to complete, otherwise false is returned.
1388 In either case *ARGS can be updated to point after any part of /FMT that
1389 is present.
1391 This function is designed so that trying to complete '/' will offer no
1392 completions, the user needs to insert the format specification
1393 themselves. Trying to complete '/FMT' (where FMT is any non-empty set
1394 of alpha-numeric characters) will cause readline to insert a single
1395 space, setting the user up to enter the expression. */
1397 static bool
1398 skip_over_slash_fmt (completion_tracker &tracker, const char **args)
1400 const char *text = *args;
1402 if (text[0] == '/')
1404 bool in_fmt;
1405 tracker.set_use_custom_word_point (true);
1407 if (text[1] == '\0')
1409 /* The user tried to complete after typing just the '/' character
1410 of the /FMT string. Step the completer past the '/', but we
1411 don't offer any completions. */
1412 in_fmt = true;
1413 ++text;
1415 else
1417 /* The user has typed some characters after the '/', we assume
1418 this is a complete /FMT string, first skip over it. */
1419 text = skip_to_space (text);
1421 if (*text == '\0')
1423 /* We're at the end of the input string. The user has typed
1424 '/FMT' and asked for a completion. Push an empty
1425 completion string, this will cause readline to insert a
1426 space so the user now has '/FMT '. */
1427 in_fmt = true;
1428 tracker.add_completion (make_unique_xstrdup (text));
1430 else
1432 /* The user has already typed things after the /FMT, skip the
1433 whitespace and return false. Whoever called this function
1434 should then try to complete what comes next. */
1435 in_fmt = false;
1436 text = skip_spaces (text);
1440 tracker.advance_custom_word_point_by (text - *args);
1441 *args = text;
1442 return in_fmt;
1445 return false;
1448 /* See valprint.h. */
1450 void
1451 print_command_completer (struct cmd_list_element *ignore,
1452 completion_tracker &tracker,
1453 const char *text, const char * /*word*/)
1455 const auto group = make_value_print_options_def_group (nullptr);
1456 if (gdb::option::complete_options
1457 (tracker, &text, gdb::option::PROCESS_OPTIONS_REQUIRE_DELIMITER, group))
1458 return;
1460 if (skip_over_slash_fmt (tracker, &text))
1461 return;
1463 const char *word = advance_to_expression_complete_word_point (tracker, text);
1464 expression_completer (ignore, tracker, text, word);
1467 static void
1468 print_command (const char *exp, int from_tty)
1470 print_command_1 (exp, true);
1473 /* Same as print, except it doesn't print void results. */
1474 static void
1475 call_command (const char *exp, int from_tty)
1477 print_command_1 (exp, false);
1480 /* Implementation of the "output" command. */
1482 void
1483 output_command (const char *exp, int from_tty)
1485 char format = 0;
1486 struct value *val;
1487 struct format_data fmt;
1488 struct value_print_options opts;
1490 fmt.size = 0;
1491 fmt.raw = 0;
1493 if (exp && *exp == '/')
1495 exp++;
1496 fmt = decode_format (&exp, 0, 0);
1497 validate_format (fmt, "output");
1498 format = fmt.format;
1501 expression_up expr = parse_expression (exp);
1503 val = expr->evaluate ();
1505 annotate_value_begin (val->type ());
1507 get_formatted_print_options (&opts, format);
1508 opts.raw = fmt.raw;
1510 /* This setting allows large arrays to be printed by limiting the
1511 number of elements that are loaded into GDB's memory; we only
1512 need to load as many array elements as we plan to print. */
1513 scoped_array_length_limiting limit_large_arrays (opts.print_max);
1515 print_formatted (val, fmt.size, &opts, gdb_stdout);
1517 annotate_value_end ();
1519 gdb_flush (gdb_stdout);
1522 static void
1523 set_command (const char *exp, int from_tty)
1525 expression_up expr = parse_expression (exp);
1527 switch (expr->first_opcode ())
1529 case UNOP_PREINCREMENT:
1530 case UNOP_POSTINCREMENT:
1531 case UNOP_PREDECREMENT:
1532 case UNOP_POSTDECREMENT:
1533 case BINOP_ASSIGN:
1534 case BINOP_ASSIGN_MODIFY:
1535 case BINOP_COMMA:
1536 break;
1537 default:
1538 warning
1539 (_("Expression is not an assignment (and might have no effect)"));
1542 expr->evaluate ();
1545 static void
1546 info_symbol_command (const char *arg, int from_tty)
1548 struct minimal_symbol *msymbol;
1549 CORE_ADDR addr, sect_addr;
1550 int matches = 0;
1551 unsigned int offset;
1553 if (!arg)
1554 error_no_arg (_("address"));
1556 addr = parse_and_eval_address (arg);
1557 for (objfile *objfile : current_program_space->objfiles ())
1558 for (obj_section *osect : objfile->sections ())
1560 /* Only process each object file once, even if there's a separate
1561 debug file. */
1562 if (objfile->separate_debug_objfile_backlink)
1563 continue;
1565 sect_addr = overlay_mapped_address (addr, osect);
1567 if (osect->addr () <= sect_addr && sect_addr < osect->endaddr ()
1568 && (msymbol
1569 = lookup_minimal_symbol_by_pc_section (sect_addr,
1570 osect).minsym))
1572 const char *obj_name, *mapped, *sec_name, *msym_name;
1573 const char *loc_string;
1575 matches = 1;
1576 offset = sect_addr - msymbol->value_address (objfile);
1577 mapped = section_is_mapped (osect) ? _("mapped") : _("unmapped");
1578 sec_name = osect->the_bfd_section->name;
1579 msym_name = msymbol->print_name ();
1581 /* Don't print the offset if it is zero.
1582 We assume there's no need to handle i18n of "sym + offset". */
1583 std::string string_holder;
1584 if (offset)
1586 string_holder = string_printf ("%s + %u", msym_name, offset);
1587 loc_string = string_holder.c_str ();
1589 else
1590 loc_string = msym_name;
1592 gdb_assert (osect->objfile && objfile_name (osect->objfile));
1593 obj_name = objfile_name (osect->objfile);
1595 if (current_program_space->multi_objfile_p ())
1596 if (pc_in_unmapped_range (addr, osect))
1597 if (section_is_overlay (osect))
1598 gdb_printf (_("%s in load address range of "
1599 "%s overlay section %s of %s\n"),
1600 loc_string, mapped, sec_name, obj_name);
1601 else
1602 gdb_printf (_("%s in load address range of "
1603 "section %s of %s\n"),
1604 loc_string, sec_name, obj_name);
1605 else
1606 if (section_is_overlay (osect))
1607 gdb_printf (_("%s in %s overlay section %s of %s\n"),
1608 loc_string, mapped, sec_name, obj_name);
1609 else
1610 gdb_printf (_("%s in section %s of %s\n"),
1611 loc_string, sec_name, obj_name);
1612 else
1613 if (pc_in_unmapped_range (addr, osect))
1614 if (section_is_overlay (osect))
1615 gdb_printf (_("%s in load address range of %s overlay "
1616 "section %s\n"),
1617 loc_string, mapped, sec_name);
1618 else
1619 gdb_printf
1620 (_("%s in load address range of section %s\n"),
1621 loc_string, sec_name);
1622 else
1623 if (section_is_overlay (osect))
1624 gdb_printf (_("%s in %s overlay section %s\n"),
1625 loc_string, mapped, sec_name);
1626 else
1627 gdb_printf (_("%s in section %s\n"),
1628 loc_string, sec_name);
1631 if (matches == 0)
1632 gdb_printf (_("No symbol matches %s.\n"), arg);
1635 static void
1636 info_address_command (const char *exp, int from_tty)
1638 struct gdbarch *gdbarch;
1639 int regno;
1640 struct symbol *sym;
1641 struct bound_minimal_symbol msymbol;
1642 long val;
1643 struct obj_section *section;
1644 CORE_ADDR load_addr, context_pc = 0;
1645 struct field_of_this_result is_a_field_of_this;
1647 if (exp == 0)
1648 error (_("Argument required."));
1650 sym = lookup_symbol (exp, get_selected_block (&context_pc), VAR_DOMAIN,
1651 &is_a_field_of_this).symbol;
1652 if (sym == NULL)
1654 if (is_a_field_of_this.type != NULL)
1656 gdb_printf ("Symbol \"");
1657 fprintf_symbol (gdb_stdout, exp,
1658 current_language->la_language, DMGL_ANSI);
1659 gdb_printf ("\" is a field of the local class variable ");
1660 if (current_language->la_language == language_objc)
1661 gdb_printf ("`self'\n"); /* ObjC equivalent of "this" */
1662 else
1663 gdb_printf ("`this'\n");
1664 return;
1667 msymbol = lookup_bound_minimal_symbol (exp);
1669 if (msymbol.minsym != NULL)
1671 struct objfile *objfile = msymbol.objfile;
1673 gdbarch = objfile->arch ();
1674 load_addr = msymbol.value_address ();
1676 gdb_printf ("Symbol \"");
1677 fprintf_symbol (gdb_stdout, exp,
1678 current_language->la_language, DMGL_ANSI);
1679 gdb_printf ("\" is at ");
1680 fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
1681 gdb_stdout);
1682 gdb_printf (" in a file compiled without debugging");
1683 section = msymbol.minsym->obj_section (objfile);
1684 if (section_is_overlay (section))
1686 load_addr = overlay_unmapped_address (load_addr, section);
1687 gdb_printf (",\n -- loaded at ");
1688 fputs_styled (paddress (gdbarch, load_addr),
1689 address_style.style (),
1690 gdb_stdout);
1691 gdb_printf (" in overlay section %s",
1692 section->the_bfd_section->name);
1694 gdb_printf (".\n");
1696 else
1697 error (_("No symbol \"%s\" in current context."), exp);
1698 return;
1701 gdb_printf ("Symbol \"");
1702 gdb_puts (sym->print_name ());
1703 gdb_printf ("\" is ");
1704 val = sym->value_longest ();
1705 if (sym->is_objfile_owned ())
1706 section = sym->obj_section (sym->objfile ());
1707 else
1708 section = NULL;
1709 gdbarch = sym->arch ();
1711 if (SYMBOL_COMPUTED_OPS (sym) != NULL)
1713 SYMBOL_COMPUTED_OPS (sym)->describe_location (sym, context_pc,
1714 gdb_stdout);
1715 gdb_printf (".\n");
1716 return;
1719 switch (sym->aclass ())
1721 case LOC_CONST:
1722 case LOC_CONST_BYTES:
1723 gdb_printf ("constant");
1724 break;
1726 case LOC_LABEL:
1727 gdb_printf ("a label at address ");
1728 load_addr = sym->value_address ();
1729 fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
1730 gdb_stdout);
1731 if (section_is_overlay (section))
1733 load_addr = overlay_unmapped_address (load_addr, section);
1734 gdb_printf (",\n -- loaded at ");
1735 fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
1736 gdb_stdout);
1737 gdb_printf (" in overlay section %s",
1738 section->the_bfd_section->name);
1740 break;
1742 case LOC_COMPUTED:
1743 gdb_assert_not_reached ("LOC_COMPUTED variable missing a method");
1745 case LOC_REGISTER:
1746 /* GDBARCH is the architecture associated with the objfile the symbol
1747 is defined in; the target architecture may be different, and may
1748 provide additional registers. However, we do not know the target
1749 architecture at this point. We assume the objfile architecture
1750 will contain all the standard registers that occur in debug info
1751 in that objfile. */
1752 regno = SYMBOL_REGISTER_OPS (sym)->register_number (sym, gdbarch);
1754 if (sym->is_argument ())
1755 gdb_printf (_("an argument in register %s"),
1756 gdbarch_register_name (gdbarch, regno));
1757 else
1758 gdb_printf (_("a variable in register %s"),
1759 gdbarch_register_name (gdbarch, regno));
1760 break;
1762 case LOC_STATIC:
1763 gdb_printf (_("static storage at address "));
1764 load_addr = sym->value_address ();
1765 fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
1766 gdb_stdout);
1767 if (section_is_overlay (section))
1769 load_addr = overlay_unmapped_address (load_addr, section);
1770 gdb_printf (_(",\n -- loaded at "));
1771 fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
1772 gdb_stdout);
1773 gdb_printf (_(" in overlay section %s"),
1774 section->the_bfd_section->name);
1776 break;
1778 case LOC_REGPARM_ADDR:
1779 /* Note comment at LOC_REGISTER. */
1780 regno = SYMBOL_REGISTER_OPS (sym)->register_number (sym, gdbarch);
1781 gdb_printf (_("address of an argument in register %s"),
1782 gdbarch_register_name (gdbarch, regno));
1783 break;
1785 case LOC_ARG:
1786 gdb_printf (_("an argument at offset %ld"), val);
1787 break;
1789 case LOC_LOCAL:
1790 gdb_printf (_("a local variable at frame offset %ld"), val);
1791 break;
1793 case LOC_REF_ARG:
1794 gdb_printf (_("a reference argument at offset %ld"), val);
1795 break;
1797 case LOC_TYPEDEF:
1798 gdb_printf (_("a typedef"));
1799 break;
1801 case LOC_BLOCK:
1802 gdb_printf (_("a function at address "));
1803 load_addr = sym->value_block ()->entry_pc ();
1804 fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
1805 gdb_stdout);
1806 if (section_is_overlay (section))
1808 load_addr = overlay_unmapped_address (load_addr, section);
1809 gdb_printf (_(",\n -- loaded at "));
1810 fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
1811 gdb_stdout);
1812 gdb_printf (_(" in overlay section %s"),
1813 section->the_bfd_section->name);
1815 break;
1817 case LOC_UNRESOLVED:
1819 struct bound_minimal_symbol msym;
1821 msym = lookup_bound_minimal_symbol (sym->linkage_name ());
1822 if (msym.minsym == NULL)
1823 gdb_printf ("unresolved");
1824 else
1826 section = msym.obj_section ();
1828 if (section
1829 && (section->the_bfd_section->flags & SEC_THREAD_LOCAL) != 0)
1831 load_addr = CORE_ADDR (msym.minsym->unrelocated_address ());
1832 gdb_printf (_("a thread-local variable at offset %s "
1833 "in the thread-local storage for `%s'"),
1834 paddress (gdbarch, load_addr),
1835 objfile_name (section->objfile));
1837 else
1839 load_addr = msym.value_address ();
1840 gdb_printf (_("static storage at address "));
1841 fputs_styled (paddress (gdbarch, load_addr),
1842 address_style.style (), gdb_stdout);
1843 if (section_is_overlay (section))
1845 load_addr = overlay_unmapped_address (load_addr, section);
1846 gdb_printf (_(",\n -- loaded at "));
1847 fputs_styled (paddress (gdbarch, load_addr),
1848 address_style.style (),
1849 gdb_stdout);
1850 gdb_printf (_(" in overlay section %s"),
1851 section->the_bfd_section->name);
1856 break;
1858 case LOC_OPTIMIZED_OUT:
1859 gdb_printf (_("optimized out"));
1860 break;
1862 default:
1863 gdb_printf (_("of unknown (botched) type"));
1864 break;
1866 gdb_printf (".\n");
1870 static void
1871 x_command (const char *exp, int from_tty)
1873 struct format_data fmt;
1874 struct value *val;
1876 fmt.format = last_format ? last_format : 'x';
1877 fmt.print_tags = last_print_tags;
1878 fmt.size = last_size;
1879 fmt.count = 1;
1880 fmt.raw = 0;
1882 /* If there is no expression and no format, use the most recent
1883 count. */
1884 if (exp == nullptr && last_count > 0)
1885 fmt.count = last_count;
1887 if (exp && *exp == '/')
1889 const char *tmp = exp + 1;
1891 fmt = decode_format (&tmp, last_format, last_size);
1892 exp = (char *) tmp;
1895 last_count = fmt.count;
1897 /* If we have an expression, evaluate it and use it as the address. */
1899 if (exp != 0 && *exp != 0)
1901 expression_up expr = parse_expression (exp);
1902 /* Cause expression not to be there any more if this command is
1903 repeated with Newline. But don't clobber a user-defined
1904 command's definition. */
1905 if (from_tty)
1906 set_repeat_arguments ("");
1907 val = expr->evaluate ();
1908 if (TYPE_IS_REFERENCE (val->type ()))
1909 val = coerce_ref (val);
1910 /* In rvalue contexts, such as this, functions are coerced into
1911 pointers to functions. This makes "x/i main" work. */
1912 if (val->type ()->code () == TYPE_CODE_FUNC
1913 && val->lval () == lval_memory)
1914 next_address = val->address ();
1915 else
1916 next_address = value_as_address (val);
1918 next_gdbarch = expr->gdbarch;
1921 if (!next_gdbarch)
1922 error_no_arg (_("starting display address"));
1924 do_examine (fmt, next_gdbarch, next_address);
1926 /* If the examine succeeds, we remember its size and format for next
1927 time. Set last_size to 'b' for strings. */
1928 if (fmt.format == 's')
1929 last_size = 'b';
1930 else
1931 last_size = fmt.size;
1932 last_format = fmt.format;
1934 /* Remember tag-printing setting. */
1935 last_print_tags = fmt.print_tags;
1937 /* Set a couple of internal variables if appropriate. */
1938 if (last_examine_value != nullptr)
1940 /* Make last address examined available to the user as $_. Use
1941 the correct pointer type. */
1942 struct type *pointer_type
1943 = lookup_pointer_type (last_examine_value->type ());
1944 set_internalvar (lookup_internalvar ("_"),
1945 value_from_pointer (pointer_type,
1946 last_examine_address));
1948 /* Make contents of last address examined available to the user
1949 as $__. If the last value has not been fetched from memory
1950 then don't fetch it now; instead mark it by voiding the $__
1951 variable. */
1952 if (last_examine_value->lazy ())
1953 clear_internalvar (lookup_internalvar ("__"));
1954 else
1955 set_internalvar (lookup_internalvar ("__"), last_examine_value.get ());
1959 /* Command completion for the 'display' and 'x' commands. */
1961 static void
1962 display_and_x_command_completer (struct cmd_list_element *ignore,
1963 completion_tracker &tracker,
1964 const char *text, const char * /*word*/)
1966 if (skip_over_slash_fmt (tracker, &text))
1967 return;
1969 const char *word = advance_to_expression_complete_word_point (tracker, text);
1970 expression_completer (ignore, tracker, text, word);
1975 /* Add an expression to the auto-display chain.
1976 Specify the expression. */
1978 static void
1979 display_command (const char *arg, int from_tty)
1981 struct format_data fmt;
1982 struct display *newobj;
1983 const char *exp = arg;
1985 if (exp == 0)
1987 do_displays ();
1988 return;
1991 if (*exp == '/')
1993 exp++;
1994 fmt = decode_format (&exp, 0, 0);
1995 if (fmt.size && fmt.format == 0)
1996 fmt.format = 'x';
1997 if (fmt.format == 'i' || fmt.format == 's')
1998 fmt.size = 'b';
2000 else
2002 fmt.format = 0;
2003 fmt.size = 0;
2004 fmt.count = 0;
2005 fmt.raw = 0;
2008 innermost_block_tracker tracker;
2009 expression_up expr = parse_expression (exp, &tracker);
2011 newobj = new display (exp, std::move (expr), fmt,
2012 current_program_space, tracker.block ());
2013 all_displays.emplace_back (newobj);
2015 if (from_tty)
2016 do_one_display (newobj);
2018 dont_repeat ();
2021 /* Clear out the display_chain. Done when new symtabs are loaded,
2022 since this invalidates the types stored in many expressions. */
2024 void
2025 clear_displays ()
2027 all_displays.clear ();
2030 /* Delete the auto-display DISPLAY. */
2032 static void
2033 delete_display (struct display *display)
2035 gdb_assert (display != NULL);
2037 auto iter = std::find_if (all_displays.begin (),
2038 all_displays.end (),
2039 [=] (const std::unique_ptr<struct display> &item)
2041 return item.get () == display;
2043 gdb_assert (iter != all_displays.end ());
2044 all_displays.erase (iter);
2047 /* Call FUNCTION on each of the displays whose numbers are given in
2048 ARGS. DATA is passed unmodified to FUNCTION. */
2050 static void
2051 map_display_numbers (const char *args,
2052 gdb::function_view<void (struct display *)> function)
2054 int num;
2056 if (args == NULL)
2057 error_no_arg (_("one or more display numbers"));
2059 number_or_range_parser parser (args);
2061 while (!parser.finished ())
2063 const char *p = parser.cur_tok ();
2065 num = parser.get_number ();
2066 if (num == 0)
2067 warning (_("bad display number at or near '%s'"), p);
2068 else
2070 auto iter = std::find_if (all_displays.begin (),
2071 all_displays.end (),
2072 [=] (const std::unique_ptr<display> &item)
2074 return item->number == num;
2076 if (iter == all_displays.end ())
2077 gdb_printf (_("No display number %d.\n"), num);
2078 else
2079 function (iter->get ());
2084 /* "undisplay" command. */
2086 static void
2087 undisplay_command (const char *args, int from_tty)
2089 if (args == NULL)
2091 if (query (_("Delete all auto-display expressions? ")))
2092 clear_displays ();
2093 dont_repeat ();
2094 return;
2097 map_display_numbers (args, delete_display);
2098 dont_repeat ();
2101 /* Display a single auto-display.
2102 Do nothing if the display cannot be printed in the current context,
2103 or if the display is disabled. */
2105 static void
2106 do_one_display (struct display *d)
2108 int within_current_scope;
2110 if (!d->enabled_p)
2111 return;
2113 /* The expression carries the architecture that was used at parse time.
2114 This is a problem if the expression depends on architecture features
2115 (e.g. register numbers), and the current architecture is now different.
2116 For example, a display statement like "display/i $pc" is expected to
2117 display the PC register of the current architecture, not the arch at
2118 the time the display command was given. Therefore, we re-parse the
2119 expression if the current architecture has changed. */
2120 if (d->exp != NULL && d->exp->gdbarch != get_current_arch ())
2122 d->exp.reset ();
2123 d->block = NULL;
2126 if (d->exp == NULL)
2131 innermost_block_tracker tracker;
2132 d->exp = parse_expression (d->exp_string.c_str (), &tracker);
2133 d->block = tracker.block ();
2135 catch (const gdb_exception_error &ex)
2137 /* Can't re-parse the expression. Disable this display item. */
2138 d->enabled_p = false;
2139 warning (_("Unable to display \"%s\": %s"),
2140 d->exp_string.c_str (), ex.what ());
2141 return;
2145 if (d->block)
2147 if (d->pspace == current_program_space)
2148 within_current_scope = d->block->contains (get_selected_block (0),
2149 true);
2150 else
2151 within_current_scope = 0;
2153 else
2154 within_current_scope = 1;
2155 if (!within_current_scope)
2156 return;
2158 scoped_restore save_display_number
2159 = make_scoped_restore (&current_display_number, d->number);
2161 annotate_display_begin ();
2162 gdb_printf ("%d", d->number);
2163 annotate_display_number_end ();
2164 gdb_printf (": ");
2165 if (d->format.size)
2168 annotate_display_format ();
2170 gdb_printf ("x/");
2171 if (d->format.count != 1)
2172 gdb_printf ("%d", d->format.count);
2173 gdb_printf ("%c", d->format.format);
2174 if (d->format.format != 'i' && d->format.format != 's')
2175 gdb_printf ("%c", d->format.size);
2176 gdb_printf (" ");
2178 annotate_display_expression ();
2180 gdb_puts (d->exp_string.c_str ());
2181 annotate_display_expression_end ();
2183 if (d->format.count != 1 || d->format.format == 'i')
2184 gdb_printf ("\n");
2185 else
2186 gdb_printf (" ");
2188 annotate_display_value ();
2192 struct value *val;
2193 CORE_ADDR addr;
2195 val = d->exp->evaluate ();
2196 addr = value_as_address (val);
2197 if (d->format.format == 'i')
2198 addr = gdbarch_addr_bits_remove (d->exp->gdbarch, addr);
2199 do_examine (d->format, d->exp->gdbarch, addr);
2201 catch (const gdb_exception_error &ex)
2203 gdb_printf (_("%p[<error: %s>%p]\n"),
2204 metadata_style.style ().ptr (), ex.what (),
2205 nullptr);
2208 else
2210 struct value_print_options opts;
2212 annotate_display_format ();
2214 if (d->format.format)
2215 gdb_printf ("/%c ", d->format.format);
2217 annotate_display_expression ();
2219 gdb_puts (d->exp_string.c_str ());
2220 annotate_display_expression_end ();
2222 gdb_printf (" = ");
2224 annotate_display_expression ();
2226 get_formatted_print_options (&opts, d->format.format);
2227 opts.raw = d->format.raw;
2231 struct value *val;
2233 val = d->exp->evaluate ();
2234 print_formatted (val, d->format.size, &opts, gdb_stdout);
2236 catch (const gdb_exception_error &ex)
2238 fprintf_styled (gdb_stdout, metadata_style.style (),
2239 _("<error: %s>"), ex.what ());
2242 gdb_printf ("\n");
2245 annotate_display_end ();
2247 gdb_flush (gdb_stdout);
2250 /* Display all of the values on the auto-display chain which can be
2251 evaluated in the current scope. */
2253 void
2254 do_displays (void)
2256 for (auto &d : all_displays)
2257 do_one_display (d.get ());
2260 /* Delete the auto-display which we were in the process of displaying.
2261 This is done when there is an error or a signal. */
2263 void
2264 disable_display (int num)
2266 for (auto &d : all_displays)
2267 if (d->number == num)
2269 d->enabled_p = false;
2270 return;
2272 gdb_printf (_("No display number %d.\n"), num);
2275 void
2276 disable_current_display (void)
2278 if (current_display_number >= 0)
2280 disable_display (current_display_number);
2281 gdb_printf (gdb_stderr,
2282 _("Disabling display %d to "
2283 "avoid infinite recursion.\n"),
2284 current_display_number);
2286 current_display_number = -1;
2289 static void
2290 info_display_command (const char *ignore, int from_tty)
2292 if (all_displays.empty ())
2293 gdb_printf (_("There are no auto-display expressions now.\n"));
2294 else
2295 gdb_printf (_("Auto-display expressions now in effect:\n\
2296 Num Enb Expression\n"));
2298 for (auto &d : all_displays)
2300 gdb_printf ("%d: %c ", d->number, "ny"[(int) d->enabled_p]);
2301 if (d->format.size)
2302 gdb_printf ("/%d%c%c ", d->format.count, d->format.size,
2303 d->format.format);
2304 else if (d->format.format)
2305 gdb_printf ("/%c ", d->format.format);
2306 gdb_puts (d->exp_string.c_str ());
2307 if (d->block && !d->block->contains (get_selected_block (0), true))
2308 gdb_printf (_(" (cannot be evaluated in the current context)"));
2309 gdb_printf ("\n");
2313 /* Implementation of both the "disable display" and "enable display"
2314 commands. ENABLE decides what to do. */
2316 static void
2317 enable_disable_display_command (const char *args, int from_tty, bool enable)
2319 if (args == NULL)
2321 for (auto &d : all_displays)
2322 d->enabled_p = enable;
2323 return;
2326 map_display_numbers (args,
2327 [=] (struct display *d)
2329 d->enabled_p = enable;
2333 /* The "enable display" command. */
2335 static void
2336 enable_display_command (const char *args, int from_tty)
2338 enable_disable_display_command (args, from_tty, true);
2341 /* The "disable display" command. */
2343 static void
2344 disable_display_command (const char *args, int from_tty)
2346 enable_disable_display_command (args, from_tty, false);
2349 /* display_chain items point to blocks and expressions. Some expressions in
2350 turn may point to symbols.
2351 Both symbols and blocks are obstack_alloc'd on objfile_stack, and are
2352 obstack_free'd when a shared library is unloaded.
2353 Clear pointers that are about to become dangling.
2354 Both .exp and .block fields will be restored next time we need to display
2355 an item by re-parsing .exp_string field in the new execution context. */
2357 static void
2358 clear_dangling_display_expressions (struct objfile *objfile)
2360 program_space *pspace = objfile->pspace;
2361 if (objfile->separate_debug_objfile_backlink)
2363 objfile = objfile->separate_debug_objfile_backlink;
2364 gdb_assert (objfile->pspace == pspace);
2367 for (auto &d : all_displays)
2369 if (d->pspace != pspace)
2370 continue;
2372 struct objfile *bl_objf = nullptr;
2373 if (d->block != nullptr)
2375 bl_objf = d->block->objfile ();
2376 if (bl_objf->separate_debug_objfile_backlink != nullptr)
2377 bl_objf = bl_objf->separate_debug_objfile_backlink;
2380 if (bl_objf == objfile
2381 || (d->exp != nullptr && d->exp->uses_objfile (objfile)))
2383 d->exp.reset ();
2384 d->block = NULL;
2390 /* Print the value in stack frame FRAME of a variable specified by a
2391 struct symbol. NAME is the name to print; if NULL then VAR's print
2392 name will be used. STREAM is the ui_file on which to print the
2393 value. INDENT specifies the number of indent levels to print
2394 before printing the variable name.
2396 This function invalidates FRAME. */
2398 void
2399 print_variable_and_value (const char *name, struct symbol *var,
2400 frame_info_ptr frame,
2401 struct ui_file *stream, int indent)
2404 if (!name)
2405 name = var->print_name ();
2407 gdb_printf (stream, "%*s%ps = ", 2 * indent, "",
2408 styled_string (variable_name_style.style (), name));
2412 struct value *val;
2413 struct value_print_options opts;
2415 /* READ_VAR_VALUE needs a block in order to deal with non-local
2416 references (i.e. to handle nested functions). In this context, we
2417 print variables that are local to this frame, so we can avoid passing
2418 a block to it. */
2419 val = read_var_value (var, NULL, frame);
2420 get_user_print_options (&opts);
2421 opts.deref_ref = true;
2422 common_val_print_checked (val, stream, indent, &opts, current_language);
2424 /* common_val_print invalidates FRAME when a pretty printer calls inferior
2425 function. */
2426 frame = NULL;
2428 catch (const gdb_exception_error &except)
2430 fprintf_styled (stream, metadata_style.style (),
2431 "<error reading variable %s (%s)>", name,
2432 except.what ());
2435 gdb_printf (stream, "\n");
2438 /* Subroutine of ui_printf to simplify it.
2439 Print VALUE to STREAM using FORMAT.
2440 VALUE is a C-style string either on the target or
2441 in a GDB internal variable. */
2443 static void
2444 printf_c_string (struct ui_file *stream, const char *format,
2445 struct value *value)
2447 gdb::byte_vector str;
2449 if (((value->type ()->code () != TYPE_CODE_PTR && value->lval () == lval_internalvar)
2450 || value->type ()->code () == TYPE_CODE_ARRAY)
2451 && c_is_string_type_p (value->type ()))
2453 size_t len = value->type ()->length ();
2455 /* Copy the internal var value to TEM_STR and append a terminating null
2456 character. This protects against corrupted C-style strings that lack
2457 the terminating null char. It also allows Ada-style strings (not
2458 null terminated) to be printed without problems. */
2459 str.resize (len + 1);
2461 memcpy (str.data (), value->contents ().data (), len);
2462 str [len] = 0;
2464 else
2466 CORE_ADDR tem = value_as_address (value);;
2468 if (tem == 0)
2470 DIAGNOSTIC_PUSH
2471 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2472 gdb_printf (stream, format, "(null)");
2473 DIAGNOSTIC_POP
2474 return;
2477 /* This is a %s argument. Build the string in STR which is
2478 currently empty. */
2479 gdb_assert (str.size () == 0);
2480 size_t len;
2481 for (len = 0;; len++)
2483 gdb_byte c;
2485 QUIT;
2487 read_memory (tem + len, &c, 1);
2488 if (!exceeds_max_value_size (len + 1))
2489 str.push_back (c);
2490 if (c == 0)
2491 break;
2494 if (exceeds_max_value_size (len + 1))
2495 error (_("printed string requires %s bytes, which is more than "
2496 "max-value-size"), plongest (len + 1));
2498 /* We will have passed through the above loop at least once, and will
2499 only exit the loop when we have pushed a zero byte onto the end of
2500 STR. */
2501 gdb_assert (str.size () > 0);
2502 gdb_assert (str.back () == 0);
2505 DIAGNOSTIC_PUSH
2506 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2507 gdb_printf (stream, format, (char *) str.data ());
2508 DIAGNOSTIC_POP
2511 /* Subroutine of ui_printf to simplify it.
2512 Print VALUE to STREAM using FORMAT.
2513 VALUE is a wide C-style string on the target or
2514 in a GDB internal variable. */
2516 static void
2517 printf_wide_c_string (struct ui_file *stream, const char *format,
2518 struct value *value)
2520 const gdb_byte *str;
2521 size_t len;
2522 struct gdbarch *gdbarch = value->type ()->arch ();
2523 struct type *wctype = lookup_typename (current_language,
2524 "wchar_t", NULL, 0);
2525 int wcwidth = wctype->length ();
2526 gdb::optional<gdb::byte_vector> tem_str;
2528 if (value->lval () == lval_internalvar
2529 && c_is_string_type_p (value->type ()))
2531 str = value->contents ().data ();
2532 len = value->type ()->length ();
2534 else
2536 CORE_ADDR tem = value_as_address (value);
2538 if (tem == 0)
2540 DIAGNOSTIC_PUSH
2541 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2542 gdb_printf (stream, format, "(null)");
2543 DIAGNOSTIC_POP
2544 return;
2547 /* This is a %s argument. Find the length of the string. */
2548 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
2549 tem_str.emplace ();
2551 for (len = 0;; len += wcwidth)
2553 QUIT;
2554 gdb_byte *dst;
2555 if (!exceeds_max_value_size (len + wcwidth))
2557 tem_str->resize (tem_str->size () + wcwidth);
2558 dst = tem_str->data () + len;
2560 else
2562 /* We still need to check for the null-character, so we need
2563 somewhere to place the data read from the inferior. We
2564 can't keep growing TEM_STR, it's gotten too big, so
2565 instead just read the new character into the start of
2566 TEMS_STR. This will corrupt the previously read contents,
2567 but we're not going to print this string anyway, we just
2568 want to know how big it would have been so we can tell the
2569 user in the error message (see below).
2571 And we know there will be space in this buffer so long as
2572 WCWIDTH is smaller than our LONGEST type, the
2573 max-value-size can't be smaller than a LONGEST. */
2574 dst = tem_str->data ();
2576 read_memory (tem + len, dst, wcwidth);
2577 if (extract_unsigned_integer (dst, wcwidth, byte_order) == 0)
2578 break;
2581 if (exceeds_max_value_size (len + wcwidth))
2582 error (_("printed string requires %s bytes, which is more than "
2583 "max-value-size"), plongest (len + wcwidth));
2585 str = tem_str->data ();
2588 auto_obstack output;
2590 convert_between_encodings (target_wide_charset (gdbarch),
2591 host_charset (),
2592 str, len, wcwidth,
2593 &output, translit_char);
2594 obstack_grow_str0 (&output, "");
2596 DIAGNOSTIC_PUSH
2597 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2598 gdb_printf (stream, format, obstack_base (&output));
2599 DIAGNOSTIC_POP
2602 /* Subroutine of ui_printf to simplify it.
2603 Print VALUE, a floating point value, to STREAM using FORMAT. */
2605 static void
2606 printf_floating (struct ui_file *stream, const char *format,
2607 struct value *value, enum argclass argclass)
2609 /* Parameter data. */
2610 struct type *param_type = value->type ();
2611 struct gdbarch *gdbarch = param_type->arch ();
2613 /* Determine target type corresponding to the format string. */
2614 struct type *fmt_type;
2615 switch (argclass)
2617 case double_arg:
2618 fmt_type = builtin_type (gdbarch)->builtin_double;
2619 break;
2620 case long_double_arg:
2621 fmt_type = builtin_type (gdbarch)->builtin_long_double;
2622 break;
2623 case dec32float_arg:
2624 fmt_type = builtin_type (gdbarch)->builtin_decfloat;
2625 break;
2626 case dec64float_arg:
2627 fmt_type = builtin_type (gdbarch)->builtin_decdouble;
2628 break;
2629 case dec128float_arg:
2630 fmt_type = builtin_type (gdbarch)->builtin_declong;
2631 break;
2632 default:
2633 gdb_assert_not_reached ("unexpected argument class");
2636 /* To match the traditional GDB behavior, the conversion is
2637 done differently depending on the type of the parameter:
2639 - if the parameter has floating-point type, it's value
2640 is converted to the target type;
2642 - otherwise, if the parameter has a type that is of the
2643 same size as a built-in floating-point type, the value
2644 bytes are interpreted as if they were of that type, and
2645 then converted to the target type (this is not done for
2646 decimal floating-point argument classes);
2648 - otherwise, if the source value has an integer value,
2649 it's value is converted to the target type;
2651 - otherwise, an error is raised.
2653 In either case, the result of the conversion is a byte buffer
2654 formatted in the target format for the target type. */
2656 if (fmt_type->code () == TYPE_CODE_FLT)
2658 param_type = float_type_from_length (param_type);
2659 if (param_type != value->type ())
2660 value = value_from_contents (param_type,
2661 value->contents ().data ());
2664 value = value_cast (fmt_type, value);
2666 /* Convert the value to a string and print it. */
2667 std::string str
2668 = target_float_to_string (value->contents ().data (), fmt_type, format);
2669 gdb_puts (str.c_str (), stream);
2672 /* Subroutine of ui_printf to simplify it.
2673 Print VALUE, a target pointer, to STREAM using FORMAT. */
2675 static void
2676 printf_pointer (struct ui_file *stream, const char *format,
2677 struct value *value)
2679 /* We avoid the host's %p because pointers are too
2680 likely to be the wrong size. The only interesting
2681 modifier for %p is a width; extract that, and then
2682 handle %p as glibc would: %#x or a literal "(nil)". */
2684 #ifdef PRINTF_HAS_LONG_LONG
2685 long long val = value_as_long (value);
2686 #else
2687 long val = value_as_long (value);
2688 #endif
2690 /* Build the new output format in FMT. */
2691 std::string fmt;
2693 /* Copy up to the leading %. */
2694 const char *p = format;
2695 while (*p)
2697 int is_percent = (*p == '%');
2699 fmt.push_back (*p++);
2700 if (is_percent)
2702 if (*p == '%')
2703 fmt.push_back (*p++);
2704 else
2705 break;
2709 if (val != 0)
2710 fmt.push_back ('#');
2712 /* Copy any width or flags. Only the "-" flag is valid for pointers
2713 -- see the format_pieces constructor. */
2714 while (*p == '-' || (*p >= '0' && *p < '9'))
2715 fmt.push_back (*p++);
2717 gdb_assert (*p == 'p' && *(p + 1) == '\0');
2718 if (val != 0)
2720 #ifdef PRINTF_HAS_LONG_LONG
2721 fmt.push_back ('l');
2722 #endif
2723 fmt.push_back ('l');
2724 fmt.push_back ('x');
2725 DIAGNOSTIC_PUSH
2726 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2727 gdb_printf (stream, fmt.c_str (), val);
2728 DIAGNOSTIC_POP
2730 else
2732 fmt.push_back ('s');
2733 DIAGNOSTIC_PUSH
2734 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2735 gdb_printf (stream, fmt.c_str (), "(nil)");
2736 DIAGNOSTIC_POP
2740 /* printf "printf format string" ARG to STREAM. */
2742 static void
2743 ui_printf (const char *arg, struct ui_file *stream)
2745 const char *s = arg;
2746 std::vector<struct value *> val_args;
2748 if (s == 0)
2749 error_no_arg (_("format-control string and values to print"));
2751 s = skip_spaces (s);
2753 /* A format string should follow, enveloped in double quotes. */
2754 if (*s++ != '"')
2755 error (_("Bad format string, missing '\"'."));
2757 format_pieces fpieces (&s, false, true);
2759 if (*s++ != '"')
2760 error (_("Bad format string, non-terminated '\"'."));
2762 s = skip_spaces (s);
2764 if (*s != ',' && *s != 0)
2765 error (_("Invalid argument syntax"));
2767 if (*s == ',')
2768 s++;
2769 s = skip_spaces (s);
2772 int nargs_wanted;
2773 int i;
2774 const char *current_substring;
2776 nargs_wanted = 0;
2777 for (auto &&piece : fpieces)
2778 if (piece.argclass != literal_piece)
2779 ++nargs_wanted;
2781 /* Now, parse all arguments and evaluate them.
2782 Store the VALUEs in VAL_ARGS. */
2784 while (*s != '\0')
2786 const char *s1;
2788 s1 = s;
2789 val_args.push_back (parse_to_comma_and_eval (&s1));
2791 s = s1;
2792 if (*s == ',')
2793 s++;
2796 if (val_args.size () != nargs_wanted)
2797 error (_("Wrong number of arguments for specified format-string"));
2799 /* Now actually print them. */
2800 i = 0;
2801 for (auto &&piece : fpieces)
2803 current_substring = piece.string;
2804 switch (piece.argclass)
2806 case string_arg:
2807 printf_c_string (stream, current_substring, val_args[i]);
2808 break;
2809 case wide_string_arg:
2810 printf_wide_c_string (stream, current_substring, val_args[i]);
2811 break;
2812 case wide_char_arg:
2814 struct gdbarch *gdbarch = val_args[i]->type ()->arch ();
2815 struct type *wctype = lookup_typename (current_language,
2816 "wchar_t", NULL, 0);
2817 struct type *valtype;
2818 const gdb_byte *bytes;
2820 valtype = val_args[i]->type ();
2821 if (valtype->length () != wctype->length ()
2822 || valtype->code () != TYPE_CODE_INT)
2823 error (_("expected wchar_t argument for %%lc"));
2825 bytes = val_args[i]->contents ().data ();
2827 auto_obstack output;
2829 convert_between_encodings (target_wide_charset (gdbarch),
2830 host_charset (),
2831 bytes, valtype->length (),
2832 valtype->length (),
2833 &output, translit_char);
2834 obstack_grow_str0 (&output, "");
2836 DIAGNOSTIC_PUSH
2837 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2838 gdb_printf (stream, current_substring,
2839 obstack_base (&output));
2840 DIAGNOSTIC_POP
2842 break;
2843 case long_long_arg:
2844 #ifdef PRINTF_HAS_LONG_LONG
2846 long long val = value_as_long (val_args[i]);
2848 DIAGNOSTIC_PUSH
2849 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2850 gdb_printf (stream, current_substring, val);
2851 DIAGNOSTIC_POP
2852 break;
2854 #else
2855 error (_("long long not supported in printf"));
2856 #endif
2857 case int_arg:
2859 int val = value_as_long (val_args[i]);
2861 DIAGNOSTIC_PUSH
2862 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2863 gdb_printf (stream, current_substring, val);
2864 DIAGNOSTIC_POP
2865 break;
2867 case long_arg:
2869 long val = value_as_long (val_args[i]);
2871 DIAGNOSTIC_PUSH
2872 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2873 gdb_printf (stream, current_substring, val);
2874 DIAGNOSTIC_POP
2875 break;
2877 case size_t_arg:
2879 size_t val = value_as_long (val_args[i]);
2881 DIAGNOSTIC_PUSH
2882 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2883 gdb_printf (stream, current_substring, val);
2884 DIAGNOSTIC_POP
2885 break;
2887 /* Handles floating-point values. */
2888 case double_arg:
2889 case long_double_arg:
2890 case dec32float_arg:
2891 case dec64float_arg:
2892 case dec128float_arg:
2893 printf_floating (stream, current_substring, val_args[i],
2894 piece.argclass);
2895 break;
2896 case ptr_arg:
2897 printf_pointer (stream, current_substring, val_args[i]);
2898 break;
2899 case value_arg:
2901 value_print_options print_opts;
2902 get_user_print_options (&print_opts);
2904 if (current_substring[2] == '[')
2906 std::string args (&current_substring[3],
2907 strlen (&current_substring[3]) - 1);
2909 const char *args_ptr = args.c_str ();
2911 /* Override global settings with explicit options, if
2912 any. */
2913 auto group
2914 = make_value_print_options_def_group (&print_opts);
2915 gdb::option::process_options
2916 (&args_ptr, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_ERROR,
2917 group);
2919 if (*args_ptr != '\0')
2920 error (_("unexpected content in print options: %s"),
2921 args_ptr);
2924 print_formatted (val_args[i], 0, &print_opts, stream);
2926 break;
2927 case literal_piece:
2928 /* Print a portion of the format string that has no
2929 directives. Note that this will not include any
2930 ordinary %-specs, but it might include "%%". That is
2931 why we use gdb_printf and not gdb_puts here.
2932 Also, we pass a dummy argument because some platforms
2933 have modified GCC to include -Wformat-security by
2934 default, which will warn here if there is no
2935 argument. */
2936 DIAGNOSTIC_PUSH
2937 DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2938 gdb_printf (stream, current_substring, 0);
2939 DIAGNOSTIC_POP
2940 break;
2941 default:
2942 internal_error (_("failed internal consistency check"));
2944 /* Maybe advance to the next argument. */
2945 if (piece.argclass != literal_piece)
2946 ++i;
2951 /* Implement the "printf" command. */
2953 static void
2954 printf_command (const char *arg, int from_tty)
2956 ui_printf (arg, gdb_stdout);
2957 gdb_stdout->reset_style ();
2958 gdb_stdout->wrap_here (0);
2959 gdb_stdout->flush ();
2962 /* Implement the "eval" command. */
2964 static void
2965 eval_command (const char *arg, int from_tty)
2967 string_file stb;
2969 ui_printf (arg, &stb);
2971 std::string expanded = insert_user_defined_cmd_args (stb.c_str ());
2973 execute_command (expanded.c_str (), from_tty);
2976 /* Convenience function for error checking in memory-tag commands. */
2978 static void
2979 show_addr_not_tagged (CORE_ADDR address)
2981 error (_("Address %s not in a region mapped with a memory tagging flag."),
2982 paddress (current_inferior ()->arch (), address));
2985 /* Convenience function for error checking in memory-tag commands. */
2987 static void
2988 show_memory_tagging_unsupported (void)
2990 error (_("Memory tagging not supported or disabled by the current"
2991 " architecture."));
2994 /* Implement the "memory-tag" prefix command. */
2996 static void
2997 memory_tag_command (const char *arg, int from_tty)
2999 help_list (memory_tag_list, "memory-tag ", all_commands, gdb_stdout);
3002 /* Helper for print-logical-tag and print-allocation-tag. */
3004 static void
3005 memory_tag_print_tag_command (const char *args, enum memtag_type tag_type)
3007 if (args == nullptr)
3008 error_no_arg (_("address or pointer"));
3010 /* Parse args into a value. If the value is a pointer or an address,
3011 then fetch the logical or allocation tag. */
3012 value_print_options print_opts;
3014 struct value *val = process_print_command_args (args, &print_opts, true);
3015 gdbarch *arch = current_inferior ()->arch ();
3017 /* If the address is not in a region memory mapped with a memory tagging
3018 flag, it is no use trying to access/manipulate its allocation tag.
3020 It is OK to manipulate the logical tag though. */
3021 if (tag_type == memtag_type::allocation
3022 && !gdbarch_tagged_address_p (arch, val))
3023 show_addr_not_tagged (value_as_address (val));
3025 value *tag_value = gdbarch_get_memtag (arch, val, tag_type);
3026 std::string tag = gdbarch_memtag_to_string (arch, tag_value);
3028 if (tag.empty ())
3029 gdb_printf (_("%s tag unavailable.\n"),
3030 tag_type
3031 == memtag_type::logical? "Logical" : "Allocation");
3033 struct value *v_tag = process_print_command_args (tag.c_str (),
3034 &print_opts,
3035 true);
3036 print_opts.output_format = 'x';
3037 print_value (v_tag, print_opts);
3040 /* Implement the "memory-tag print-logical-tag" command. */
3042 static void
3043 memory_tag_print_logical_tag_command (const char *args, int from_tty)
3045 if (!target_supports_memory_tagging ())
3046 show_memory_tagging_unsupported ();
3048 memory_tag_print_tag_command (args, memtag_type::logical);
3051 /* Implement the "memory-tag print-allocation-tag" command. */
3053 static void
3054 memory_tag_print_allocation_tag_command (const char *args, int from_tty)
3056 if (!target_supports_memory_tagging ())
3057 show_memory_tagging_unsupported ();
3059 memory_tag_print_tag_command (args, memtag_type::allocation);
3062 /* Parse ARGS and extract ADDR and TAG.
3063 ARGS should have format <expression> <tag bytes>. */
3065 static void
3066 parse_with_logical_tag_input (const char *args, struct value **val,
3067 gdb::byte_vector &tags,
3068 value_print_options *print_opts)
3070 /* Fetch the address. */
3071 std::string address_string = extract_string_maybe_quoted (&args);
3073 /* Parse the address into a value. */
3074 *val = process_print_command_args (address_string.c_str (), print_opts,
3075 true);
3077 /* Fetch the tag bytes. */
3078 std::string tag_string = extract_string_maybe_quoted (&args);
3080 /* Validate the input. */
3081 if (address_string.empty () || tag_string.empty ())
3082 error (_("Missing arguments."));
3084 if (tag_string.length () != 2)
3085 error (_("Error parsing tags argument. The tag should be 2 digits."));
3087 tags = hex2bin (tag_string.c_str ());
3090 /* Implement the "memory-tag with-logical-tag" command. */
3092 static void
3093 memory_tag_with_logical_tag_command (const char *args, int from_tty)
3095 if (!target_supports_memory_tagging ())
3096 show_memory_tagging_unsupported ();
3098 if (args == nullptr)
3099 error_no_arg (_("<address> <tag>"));
3101 gdb::byte_vector tags;
3102 struct value *val;
3103 value_print_options print_opts;
3104 gdbarch *arch = current_inferior ()->arch ();
3106 /* Parse the input. */
3107 parse_with_logical_tag_input (args, &val, tags, &print_opts);
3109 /* Setting the logical tag is just a local operation that does not touch
3110 any memory from the target. Given an input value, we modify the value
3111 to include the appropriate tag.
3113 For this reason we need to cast the argument value to a
3114 (void *) pointer. This is so we have the right type for the gdbarch
3115 hook to manipulate the value and insert the tag.
3117 Otherwise, this would fail if, for example, GDB parsed the argument value
3118 into an int-sized value and the pointer value has a type of greater
3119 length. */
3121 /* Cast to (void *). */
3122 val = value_cast (builtin_type (current_inferior ()->arch ())->builtin_data_ptr,
3123 val);
3125 /* Length doesn't matter for a logical tag. Pass 0. */
3126 if (!gdbarch_set_memtags (arch, val, 0, tags, memtag_type::logical))
3127 gdb_printf (_("Could not update the logical tag data.\n"));
3128 else
3130 /* Always print it in hex format. */
3131 print_opts.output_format = 'x';
3132 print_value (val, print_opts);
3136 /* Parse ARGS and extract ADDR, LENGTH and TAGS. */
3138 static void
3139 parse_set_allocation_tag_input (const char *args, struct value **val,
3140 size_t *length, gdb::byte_vector &tags)
3142 /* Fetch the address. */
3143 std::string address_string = extract_string_maybe_quoted (&args);
3145 /* Parse the address into a value. */
3146 value_print_options print_opts;
3147 *val = process_print_command_args (address_string.c_str (), &print_opts,
3148 true);
3150 /* Fetch the length. */
3151 std::string length_string = extract_string_maybe_quoted (&args);
3153 /* Fetch the tag bytes. */
3154 std::string tags_string = extract_string_maybe_quoted (&args);
3156 /* Validate the input. */
3157 if (address_string.empty () || length_string.empty () || tags_string.empty ())
3158 error (_("Missing arguments."));
3160 errno = 0;
3161 const char *trailer = nullptr;
3162 LONGEST parsed_length = strtoulst (length_string.c_str (), &trailer, 10);
3164 if (errno != 0 || (trailer != nullptr && trailer[0] != '\0'))
3165 error (_("Error parsing length argument."));
3167 if (parsed_length <= 0)
3168 error (_("Invalid zero or negative length."));
3170 *length = parsed_length;
3172 if (tags_string.length () % 2)
3173 error (_("Error parsing tags argument. Tags should be 2 digits per byte."));
3175 tags = hex2bin (tags_string.c_str ());
3177 /* If the address is not in a region memory mapped with a memory tagging
3178 flag, it is no use trying to access/manipulate its allocation tag. */
3179 if (!gdbarch_tagged_address_p (current_inferior ()->arch (), *val))
3180 show_addr_not_tagged (value_as_address (*val));
3183 /* Implement the "memory-tag set-allocation-tag" command.
3184 ARGS should be in the format <address> <length> <tags>. */
3186 static void
3187 memory_tag_set_allocation_tag_command (const char *args, int from_tty)
3189 if (!target_supports_memory_tagging ())
3190 show_memory_tagging_unsupported ();
3192 if (args == nullptr)
3193 error_no_arg (_("<starting address> <length> <tag bytes>"));
3195 gdb::byte_vector tags;
3196 size_t length = 0;
3197 struct value *val;
3199 /* Parse the input. */
3200 parse_set_allocation_tag_input (args, &val, &length, tags);
3202 if (!gdbarch_set_memtags (current_inferior ()->arch (), val, length, tags,
3203 memtag_type::allocation))
3204 gdb_printf (_("Could not update the allocation tag(s).\n"));
3205 else
3206 gdb_printf (_("Allocation tag(s) updated successfully.\n"));
3209 /* Implement the "memory-tag check" command. */
3211 static void
3212 memory_tag_check_command (const char *args, int from_tty)
3214 if (!target_supports_memory_tagging ())
3215 show_memory_tagging_unsupported ();
3217 if (args == nullptr)
3218 error_no_arg (_("address or pointer"));
3220 /* Parse the expression into a value. If the value is an address or
3221 pointer, then check its logical tag against the allocation tag. */
3222 value_print_options print_opts;
3224 struct value *val = process_print_command_args (args, &print_opts, true);
3225 gdbarch *arch = current_inferior ()->arch ();
3227 /* If the address is not in a region memory mapped with a memory tagging
3228 flag, it is no use trying to access/manipulate its allocation tag. */
3229 if (!gdbarch_tagged_address_p (arch, val))
3230 show_addr_not_tagged (value_as_address (val));
3232 CORE_ADDR addr = value_as_address (val);
3234 /* Check if the tag is valid. */
3235 if (!gdbarch_memtag_matches_p (arch, val))
3237 value *tag = gdbarch_get_memtag (arch, val, memtag_type::logical);
3238 std::string ltag = gdbarch_memtag_to_string (arch, tag);
3240 tag = gdbarch_get_memtag (arch, val, memtag_type::allocation);
3241 std::string atag = gdbarch_memtag_to_string (arch, tag);
3243 gdb_printf (_("Logical tag (%s) does not match"
3244 " the allocation tag (%s) for address %s.\n"),
3245 ltag.c_str (), atag.c_str (),
3246 paddress (current_inferior ()->arch (), addr));
3248 else
3250 struct value *tag
3251 = gdbarch_get_memtag (current_inferior ()->arch (), val,
3252 memtag_type::logical);
3253 std::string ltag
3254 = gdbarch_memtag_to_string (current_inferior ()->arch (), tag);
3256 gdb_printf (_("Memory tags for address %s match (%s).\n"),
3257 paddress (current_inferior ()->arch (), addr), ltag.c_str ());
3261 void _initialize_printcmd ();
3262 void
3263 _initialize_printcmd ()
3265 struct cmd_list_element *c;
3267 current_display_number = -1;
3269 gdb::observers::free_objfile.attach (clear_dangling_display_expressions,
3270 "printcmd");
3272 add_info ("address", info_address_command,
3273 _("Describe where symbol SYM is stored.\n\
3274 Usage: info address SYM"));
3276 add_info ("symbol", info_symbol_command, _("\
3277 Describe what symbol is at location ADDR.\n\
3278 Usage: info symbol ADDR\n\
3279 Only for symbols with fixed locations (global or static scope)."));
3281 c = add_com ("x", class_vars, x_command, _("\
3282 Examine memory: x/FMT ADDRESS.\n\
3283 ADDRESS is an expression for the memory address to examine.\n\
3284 FMT is a repeat count followed by a format letter and a size letter.\n\
3285 Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),\n\
3286 t(binary), f(float), a(address), i(instruction), c(char), s(string)\n\
3287 and z(hex, zero padded on the left).\n\
3288 Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).\n\
3289 The specified number of objects of the specified size are printed\n\
3290 according to the format. If a negative number is specified, memory is\n\
3291 examined backward from the address.\n\n\
3292 Defaults for format and size letters are those previously used.\n\
3293 Default count is 1. Default address is following last thing printed\n\
3294 with this command or \"print\"."));
3295 set_cmd_completer_handle_brkchars (c, display_and_x_command_completer);
3297 add_info ("display", info_display_command, _("\
3298 Expressions to display when program stops, with code numbers.\n\
3299 Usage: info display"));
3301 add_cmd ("undisplay", class_vars, undisplay_command, _("\
3302 Cancel some expressions to be displayed when program stops.\n\
3303 Usage: undisplay [NUM]...\n\
3304 Arguments are the code numbers of the expressions to stop displaying.\n\
3305 No argument means cancel all automatic-display expressions.\n\
3306 \"delete display\" has the same effect as this command.\n\
3307 Do \"info display\" to see current list of code numbers."),
3308 &cmdlist);
3310 c = add_com ("display", class_vars, display_command, _("\
3311 Print value of expression EXP each time the program stops.\n\
3312 Usage: display[/FMT] EXP\n\
3313 /FMT may be used before EXP as in the \"print\" command.\n\
3314 /FMT \"i\" or \"s\" or including a size-letter is allowed,\n\
3315 as in the \"x\" command, and then EXP is used to get the address to examine\n\
3316 and examining is done as in the \"x\" command.\n\n\
3317 With no argument, display all currently requested auto-display expressions.\n\
3318 Use \"undisplay\" to cancel display requests previously made."));
3319 set_cmd_completer_handle_brkchars (c, display_and_x_command_completer);
3321 add_cmd ("display", class_vars, enable_display_command, _("\
3322 Enable some expressions to be displayed when program stops.\n\
3323 Usage: enable display [NUM]...\n\
3324 Arguments are the code numbers of the expressions to resume displaying.\n\
3325 No argument means enable all automatic-display expressions.\n\
3326 Do \"info display\" to see current list of code numbers."), &enablelist);
3328 add_cmd ("display", class_vars, disable_display_command, _("\
3329 Disable some expressions to be displayed when program stops.\n\
3330 Usage: disable display [NUM]...\n\
3331 Arguments are the code numbers of the expressions to stop displaying.\n\
3332 No argument means disable all automatic-display expressions.\n\
3333 Do \"info display\" to see current list of code numbers."), &disablelist);
3335 add_cmd ("display", class_vars, undisplay_command, _("\
3336 Cancel some expressions to be displayed when program stops.\n\
3337 Usage: delete display [NUM]...\n\
3338 Arguments are the code numbers of the expressions to stop displaying.\n\
3339 No argument means cancel all automatic-display expressions.\n\
3340 Do \"info display\" to see current list of code numbers."), &deletelist);
3342 add_com ("printf", class_vars, printf_command, _("\
3343 Formatted printing, like the C \"printf\" function.\n\
3344 Usage: printf \"format string\", ARG1, ARG2, ARG3, ..., ARGN\n\
3345 This supports most C printf format specifications, like %s, %d, etc."));
3347 add_com ("output", class_vars, output_command, _("\
3348 Like \"print\" but don't put in value history and don't print newline.\n\
3349 Usage: output EXP\n\
3350 This is useful in user-defined commands."));
3352 add_prefix_cmd ("set", class_vars, set_command, _("\
3353 Evaluate expression EXP and assign result to variable VAR.\n\
3354 Usage: set VAR = EXP\n\
3355 This uses assignment syntax appropriate for the current language\n\
3356 (VAR = EXP or VAR := EXP for example).\n\
3357 VAR may be a debugger \"convenience\" variable (names starting\n\
3358 with $), a register (a few standard names starting with $), or an actual\n\
3359 variable in the program being debugged. EXP is any valid expression.\n\
3360 Use \"set variable\" for variables with names identical to set subcommands.\n\
3362 With a subcommand, this command modifies parts of the gdb environment.\n\
3363 You can see these environment settings with the \"show\" command."),
3364 &setlist, 1, &cmdlist);
3366 /* "call" is the same as "set", but handy for dbx users to call fns. */
3367 c = add_com ("call", class_vars, call_command, _("\
3368 Call a function in the program.\n\
3369 Usage: call EXP\n\
3370 The argument is the function name and arguments, in the notation of the\n\
3371 current working language. The result is printed and saved in the value\n\
3372 history, if it is not void."));
3373 set_cmd_completer_handle_brkchars (c, print_command_completer);
3375 cmd_list_element *set_variable_cmd
3376 = add_cmd ("variable", class_vars, set_command, _("\
3377 Evaluate expression EXP and assign result to variable VAR.\n\
3378 Usage: set variable VAR = EXP\n\
3379 This uses assignment syntax appropriate for the current language\n\
3380 (VAR = EXP or VAR := EXP for example).\n\
3381 VAR may be a debugger \"convenience\" variable (names starting\n\
3382 with $), a register (a few standard names starting with $), or an actual\n\
3383 variable in the program being debugged. EXP is any valid expression.\n\
3384 This may usually be abbreviated to simply \"set\"."),
3385 &setlist);
3386 add_alias_cmd ("var", set_variable_cmd, class_vars, 0, &setlist);
3388 const auto print_opts = make_value_print_options_def_group (nullptr);
3390 static const std::string print_help = gdb::option::build_help (_("\
3391 Print value of expression EXP.\n\
3392 Usage: print [[OPTION]... --] [/FMT] [EXP]\n\
3394 Options:\n\
3395 %OPTIONS%\n\
3397 Note: because this command accepts arbitrary expressions, if you\n\
3398 specify any command option, you must use a double dash (\"--\")\n\
3399 to mark the end of option processing. E.g.: \"print -o -- myobj\".\n\
3401 Variables accessible are those of the lexical environment of the selected\n\
3402 stack frame, plus all those whose scope is global or an entire file.\n\
3404 $NUM gets previous value number NUM. $ and $$ are the last two values.\n\
3405 $$NUM refers to NUM'th value back from the last one.\n\
3406 Names starting with $ refer to registers (with the values they would have\n\
3407 if the program were to return to the stack frame now selected, restoring\n\
3408 all registers saved by frames farther in) or else to debugger\n\
3409 \"convenience\" variables (any such name not a known register).\n\
3410 Use assignment expressions to give values to convenience variables.\n\
3412 {TYPE}ADREXP refers to a datum of data type TYPE, located at address ADREXP.\n\
3413 @ is a binary operator for treating consecutive data objects\n\
3414 anywhere in memory as an array. FOO@NUM gives an array whose first\n\
3415 element is FOO, whose second element is stored in the space following\n\
3416 where FOO is stored, etc. FOO must be an expression whose value\n\
3417 resides in memory.\n\
3419 EXP may be preceded with /FMT, where FMT is a format letter\n\
3420 but no count or size letter (see \"x\" command)."),
3421 print_opts);
3423 cmd_list_element *print_cmd
3424 = add_com ("print", class_vars, print_command, print_help.c_str ());
3425 set_cmd_completer_handle_brkchars (print_cmd, print_command_completer);
3426 add_com_alias ("p", print_cmd, class_vars, 1);
3427 add_com_alias ("inspect", print_cmd, class_vars, 1);
3429 add_setshow_uinteger_cmd ("max-symbolic-offset", no_class,
3430 &max_symbolic_offset, _("\
3431 Set the largest offset that will be printed in <SYMBOL+1234> form."), _("\
3432 Show the largest offset that will be printed in <SYMBOL+1234> form."), _("\
3433 Tell GDB to only display the symbolic form of an address if the\n\
3434 offset between the closest earlier symbol and the address is less than\n\
3435 the specified maximum offset. The default is \"unlimited\", which tells GDB\n\
3436 to always print the symbolic form of an address if any symbol precedes\n\
3437 it. Zero is equivalent to \"unlimited\"."),
3438 NULL,
3439 show_max_symbolic_offset,
3440 &setprintlist, &showprintlist);
3441 add_setshow_boolean_cmd ("symbol-filename", no_class,
3442 &print_symbol_filename, _("\
3443 Set printing of source filename and line number with <SYMBOL>."), _("\
3444 Show printing of source filename and line number with <SYMBOL>."), NULL,
3445 NULL,
3446 show_print_symbol_filename,
3447 &setprintlist, &showprintlist);
3449 add_com ("eval", no_class, eval_command, _("\
3450 Construct a GDB command and then evaluate it.\n\
3451 Usage: eval \"format string\", ARG1, ARG2, ARG3, ..., ARGN\n\
3452 Convert the arguments to a string as \"printf\" would, but then\n\
3453 treat this string as a command line, and evaluate it."));
3455 /* Memory tagging commands. */
3456 add_prefix_cmd ("memory-tag", class_vars, memory_tag_command, _("\
3457 Generic command for printing and manipulating memory tag properties."),
3458 &memory_tag_list, 0, &cmdlist);
3459 add_cmd ("print-logical-tag", class_vars,
3460 memory_tag_print_logical_tag_command,
3461 ("Print the logical tag from POINTER.\n\
3462 Usage: memory-tag print-logical-tag <POINTER>.\n\
3463 <POINTER> is an expression that evaluates to a pointer.\n\
3464 Print the logical tag contained in POINTER. The tag interpretation is\n\
3465 architecture-specific."),
3466 &memory_tag_list);
3467 add_cmd ("print-allocation-tag", class_vars,
3468 memory_tag_print_allocation_tag_command,
3469 _("Print the allocation tag for ADDRESS.\n\
3470 Usage: memory-tag print-allocation-tag <ADDRESS>.\n\
3471 <ADDRESS> is an expression that evaluates to a memory address.\n\
3472 Print the allocation tag associated with the memory address ADDRESS.\n\
3473 The tag interpretation is architecture-specific."),
3474 &memory_tag_list);
3475 add_cmd ("with-logical-tag", class_vars, memory_tag_with_logical_tag_command,
3476 _("Print a POINTER with a specific logical TAG.\n\
3477 Usage: memory-tag with-logical-tag <POINTER> <TAG>\n\
3478 <POINTER> is an expression that evaluates to a pointer.\n\
3479 <TAG> is a sequence of hex bytes that is interpreted by the architecture\n\
3480 as a single memory tag."),
3481 &memory_tag_list);
3482 add_cmd ("set-allocation-tag", class_vars,
3483 memory_tag_set_allocation_tag_command,
3484 _("Set the allocation tag(s) for a memory range.\n\
3485 Usage: memory-tag set-allocation-tag <ADDRESS> <LENGTH> <TAG_BYTES>\n\
3486 <ADDRESS> is an expression that evaluates to a memory address\n\
3487 <LENGTH> is the number of bytes that is added to <ADDRESS> to calculate\n\
3488 the memory range.\n\
3489 <TAG_BYTES> is a sequence of hex bytes that is interpreted by the\n\
3490 architecture as one or more memory tags.\n\
3491 Sets the tags of the memory range [ADDRESS, ADDRESS + LENGTH)\n\
3492 to TAG_BYTES.\n\
3494 If the number of tags is greater than or equal to the number of tag granules\n\
3495 in the [ADDRESS, ADDRESS + LENGTH) range, only the tags up to the\n\
3496 number of tag granules are updated.\n\
3498 If the number of tags is less than the number of tag granules, then the\n\
3499 command is a fill operation. The TAG_BYTES are interpreted as a pattern\n\
3500 that gets repeated until the number of tag granules in the memory range\n\
3501 [ADDRESS, ADDRESS + LENGTH) is updated."),
3502 &memory_tag_list);
3503 add_cmd ("check", class_vars, memory_tag_check_command,
3504 _("Validate a pointer's logical tag against the allocation tag.\n\
3505 Usage: memory-tag check <POINTER>\n\
3506 <POINTER> is an expression that evaluates to a pointer\n\
3507 Fetch the logical and allocation tags for POINTER and compare them\n\
3508 for equality. If the tags do not match, print additional information about\n\
3509 the tag mismatch."),
3510 &memory_tag_list);