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