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