Style print_address_symbolic
[external/binutils.git] / gdb / printcmd.c
1 /* Print values for GNU debugger GDB.
2
3    Copyright (C) 1986-2018 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "frame.h"
22 #include "symtab.h"
23 #include "gdbtypes.h"
24 #include "value.h"
25 #include "language.h"
26 #include "expression.h"
27 #include "gdbcore.h"
28 #include "gdbcmd.h"
29 #include "target.h"
30 #include "breakpoint.h"
31 #include "demangle.h"
32 #include "gdb-demangle.h"
33 #include "valprint.h"
34 #include "annotate.h"
35 #include "symfile.h"            /* for overlay functions */
36 #include "objfiles.h"           /* ditto */
37 #include "completer.h"          /* for completion functions */
38 #include "ui-out.h"
39 #include "block.h"
40 #include "disasm.h"
41 #include "target-float.h"
42 #include "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_filtered (paddress (gdbarch, addr), 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_filtered (paddress (gdbarch, addr), 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 objfile *objfile;
1277   struct obj_section *osect;
1278   CORE_ADDR addr, sect_addr;
1279   int matches = 0;
1280   unsigned int offset;
1281
1282   if (!arg)
1283     error_no_arg (_("address"));
1284
1285   addr = parse_and_eval_address (arg);
1286   ALL_OBJSECTIONS (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, osect).minsym))
1299       {
1300         const char *obj_name, *mapped, *sec_name, *msym_name;
1301         const char *loc_string;
1302
1303         matches = 1;
1304         offset = sect_addr - MSYMBOL_VALUE_ADDRESS (objfile, msymbol);
1305         mapped = section_is_mapped (osect) ? _("mapped") : _("unmapped");
1306         sec_name = osect->the_bfd_section->name;
1307         msym_name = MSYMBOL_PRINT_NAME (msymbol);
1308
1309         /* Don't print the offset if it is zero.
1310            We assume there's no need to handle i18n of "sym + offset".  */
1311         std::string string_holder;
1312         if (offset)
1313           {
1314             string_holder = string_printf ("%s + %u", msym_name, offset);
1315             loc_string = string_holder.c_str ();
1316           }
1317         else
1318           loc_string = msym_name;
1319
1320         gdb_assert (osect->objfile && objfile_name (osect->objfile));
1321         obj_name = objfile_name (osect->objfile);
1322
1323         if (MULTI_OBJFILE_P ())
1324           if (pc_in_unmapped_range (addr, osect))
1325             if (section_is_overlay (osect))
1326               printf_filtered (_("%s in load address range of "
1327                                  "%s overlay section %s of %s\n"),
1328                                loc_string, mapped, sec_name, obj_name);
1329             else
1330               printf_filtered (_("%s in load address range of "
1331                                  "section %s of %s\n"),
1332                                loc_string, sec_name, obj_name);
1333           else
1334             if (section_is_overlay (osect))
1335               printf_filtered (_("%s in %s overlay section %s of %s\n"),
1336                                loc_string, mapped, sec_name, obj_name);
1337             else
1338               printf_filtered (_("%s in section %s of %s\n"),
1339                                loc_string, sec_name, obj_name);
1340         else
1341           if (pc_in_unmapped_range (addr, osect))
1342             if (section_is_overlay (osect))
1343               printf_filtered (_("%s in load address range of %s overlay "
1344                                  "section %s\n"),
1345                                loc_string, mapped, sec_name);
1346             else
1347               printf_filtered (_("%s in load address range of section %s\n"),
1348                                loc_string, sec_name);
1349           else
1350             if (section_is_overlay (osect))
1351               printf_filtered (_("%s in %s overlay section %s\n"),
1352                                loc_string, mapped, sec_name);
1353             else
1354               printf_filtered (_("%s in section %s\n"),
1355                                loc_string, sec_name);
1356       }
1357   }
1358   if (matches == 0)
1359     printf_filtered (_("No symbol matches %s.\n"), arg);
1360 }
1361
1362 static void
1363 info_address_command (const char *exp, int from_tty)
1364 {
1365   struct gdbarch *gdbarch;
1366   int regno;
1367   struct symbol *sym;
1368   struct bound_minimal_symbol msymbol;
1369   long val;
1370   struct obj_section *section;
1371   CORE_ADDR load_addr, context_pc = 0;
1372   struct field_of_this_result is_a_field_of_this;
1373
1374   if (exp == 0)
1375     error (_("Argument required."));
1376
1377   sym = lookup_symbol (exp, get_selected_block (&context_pc), VAR_DOMAIN,
1378                        &is_a_field_of_this).symbol;
1379   if (sym == NULL)
1380     {
1381       if (is_a_field_of_this.type != NULL)
1382         {
1383           printf_filtered ("Symbol \"");
1384           fprintf_symbol_filtered (gdb_stdout, exp,
1385                                    current_language->la_language, DMGL_ANSI);
1386           printf_filtered ("\" is a field of the local class variable ");
1387           if (current_language->la_language == language_objc)
1388             printf_filtered ("`self'\n");       /* ObjC equivalent of "this" */
1389           else
1390             printf_filtered ("`this'\n");
1391           return;
1392         }
1393
1394       msymbol = lookup_bound_minimal_symbol (exp);
1395
1396       if (msymbol.minsym != NULL)
1397         {
1398           struct objfile *objfile = msymbol.objfile;
1399
1400           gdbarch = get_objfile_arch (objfile);
1401           load_addr = BMSYMBOL_VALUE_ADDRESS (msymbol);
1402
1403           printf_filtered ("Symbol \"");
1404           fprintf_symbol_filtered (gdb_stdout, exp,
1405                                    current_language->la_language, DMGL_ANSI);
1406           printf_filtered ("\" is at ");
1407           fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1408           printf_filtered (" in a file compiled without debugging");
1409           section = MSYMBOL_OBJ_SECTION (objfile, msymbol.minsym);
1410           if (section_is_overlay (section))
1411             {
1412               load_addr = overlay_unmapped_address (load_addr, section);
1413               printf_filtered (",\n -- loaded at ");
1414               fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1415               printf_filtered (" in overlay section %s",
1416                                section->the_bfd_section->name);
1417             }
1418           printf_filtered (".\n");
1419         }
1420       else
1421         error (_("No symbol \"%s\" in current context."), exp);
1422       return;
1423     }
1424
1425   printf_filtered ("Symbol \"");
1426   fprintf_symbol_filtered (gdb_stdout, SYMBOL_PRINT_NAME (sym),
1427                            current_language->la_language, DMGL_ANSI);
1428   printf_filtered ("\" is ");
1429   val = SYMBOL_VALUE (sym);
1430   if (SYMBOL_OBJFILE_OWNED (sym))
1431     section = SYMBOL_OBJ_SECTION (symbol_objfile (sym), sym);
1432   else
1433     section = NULL;
1434   gdbarch = symbol_arch (sym);
1435
1436   if (SYMBOL_COMPUTED_OPS (sym) != NULL)
1437     {
1438       SYMBOL_COMPUTED_OPS (sym)->describe_location (sym, context_pc,
1439                                                     gdb_stdout);
1440       printf_filtered (".\n");
1441       return;
1442     }
1443
1444   switch (SYMBOL_CLASS (sym))
1445     {
1446     case LOC_CONST:
1447     case LOC_CONST_BYTES:
1448       printf_filtered ("constant");
1449       break;
1450
1451     case LOC_LABEL:
1452       printf_filtered ("a label at address ");
1453       load_addr = SYMBOL_VALUE_ADDRESS (sym);
1454       fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1455       if (section_is_overlay (section))
1456         {
1457           load_addr = overlay_unmapped_address (load_addr, section);
1458           printf_filtered (",\n -- loaded at ");
1459           fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1460           printf_filtered (" in overlay section %s",
1461                            section->the_bfd_section->name);
1462         }
1463       break;
1464
1465     case LOC_COMPUTED:
1466       gdb_assert_not_reached (_("LOC_COMPUTED variable missing a method"));
1467
1468     case LOC_REGISTER:
1469       /* GDBARCH is the architecture associated with the objfile the symbol
1470          is defined in; the target architecture may be different, and may
1471          provide additional registers.  However, we do not know the target
1472          architecture at this point.  We assume the objfile architecture
1473          will contain all the standard registers that occur in debug info
1474          in that objfile.  */
1475       regno = SYMBOL_REGISTER_OPS (sym)->register_number (sym, gdbarch);
1476
1477       if (SYMBOL_IS_ARGUMENT (sym))
1478         printf_filtered (_("an argument in register %s"),
1479                          gdbarch_register_name (gdbarch, regno));
1480       else
1481         printf_filtered (_("a variable in register %s"),
1482                          gdbarch_register_name (gdbarch, regno));
1483       break;
1484
1485     case LOC_STATIC:
1486       printf_filtered (_("static storage at address "));
1487       load_addr = SYMBOL_VALUE_ADDRESS (sym);
1488       fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1489       if (section_is_overlay (section))
1490         {
1491           load_addr = overlay_unmapped_address (load_addr, section);
1492           printf_filtered (_(",\n -- loaded at "));
1493           fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1494           printf_filtered (_(" in overlay section %s"),
1495                            section->the_bfd_section->name);
1496         }
1497       break;
1498
1499     case LOC_REGPARM_ADDR:
1500       /* Note comment at LOC_REGISTER.  */
1501       regno = SYMBOL_REGISTER_OPS (sym)->register_number (sym, gdbarch);
1502       printf_filtered (_("address of an argument in register %s"),
1503                        gdbarch_register_name (gdbarch, regno));
1504       break;
1505
1506     case LOC_ARG:
1507       printf_filtered (_("an argument at offset %ld"), val);
1508       break;
1509
1510     case LOC_LOCAL:
1511       printf_filtered (_("a local variable at frame offset %ld"), val);
1512       break;
1513
1514     case LOC_REF_ARG:
1515       printf_filtered (_("a reference argument at offset %ld"), val);
1516       break;
1517
1518     case LOC_TYPEDEF:
1519       printf_filtered (_("a typedef"));
1520       break;
1521
1522     case LOC_BLOCK:
1523       printf_filtered (_("a function at address "));
1524       load_addr = BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (sym));
1525       fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1526       if (section_is_overlay (section))
1527         {
1528           load_addr = overlay_unmapped_address (load_addr, section);
1529           printf_filtered (_(",\n -- loaded at "));
1530           fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1531           printf_filtered (_(" in overlay section %s"),
1532                            section->the_bfd_section->name);
1533         }
1534       break;
1535
1536     case LOC_UNRESOLVED:
1537       {
1538         struct bound_minimal_symbol msym;
1539
1540         msym = lookup_bound_minimal_symbol (SYMBOL_LINKAGE_NAME (sym));
1541         if (msym.minsym == NULL)
1542           printf_filtered ("unresolved");
1543         else
1544           {
1545             section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
1546
1547             if (section
1548                 && (section->the_bfd_section->flags & SEC_THREAD_LOCAL) != 0)
1549               {
1550                 load_addr = MSYMBOL_VALUE_RAW_ADDRESS (msym.minsym);
1551                 printf_filtered (_("a thread-local variable at offset %s "
1552                                    "in the thread-local storage for `%s'"),
1553                                  paddress (gdbarch, load_addr),
1554                                  objfile_name (section->objfile));
1555               }
1556             else
1557               {
1558                 load_addr = BMSYMBOL_VALUE_ADDRESS (msym);
1559                 printf_filtered (_("static storage at address "));
1560                 fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1561                 if (section_is_overlay (section))
1562                   {
1563                     load_addr = overlay_unmapped_address (load_addr, section);
1564                     printf_filtered (_(",\n -- loaded at "));
1565                     fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1566                     printf_filtered (_(" in overlay section %s"),
1567                                      section->the_bfd_section->name);
1568                   }
1569               }
1570           }
1571       }
1572       break;
1573
1574     case LOC_OPTIMIZED_OUT:
1575       printf_filtered (_("optimized out"));
1576       break;
1577
1578     default:
1579       printf_filtered (_("of unknown (botched) type"));
1580       break;
1581     }
1582   printf_filtered (".\n");
1583 }
1584 \f
1585
1586 static void
1587 x_command (const char *exp, int from_tty)
1588 {
1589   struct format_data fmt;
1590   struct value *val;
1591
1592   fmt.format = last_format ? last_format : 'x';
1593   fmt.size = last_size;
1594   fmt.count = 1;
1595   fmt.raw = 0;
1596
1597   /* If there is no expression and no format, use the most recent
1598      count.  */
1599   if (exp == nullptr && last_count > 0)
1600     fmt.count = last_count;
1601
1602   if (exp && *exp == '/')
1603     {
1604       const char *tmp = exp + 1;
1605
1606       fmt = decode_format (&tmp, last_format, last_size);
1607       exp = (char *) tmp;
1608     }
1609
1610   last_count = fmt.count;
1611
1612   /* If we have an expression, evaluate it and use it as the address.  */
1613
1614   if (exp != 0 && *exp != 0)
1615     {
1616       expression_up expr = parse_expression (exp);
1617       /* Cause expression not to be there any more if this command is
1618          repeated with Newline.  But don't clobber a user-defined
1619          command's definition.  */
1620       if (from_tty)
1621         set_repeat_arguments ("");
1622       val = evaluate_expression (expr.get ());
1623       if (TYPE_IS_REFERENCE (value_type (val)))
1624         val = coerce_ref (val);
1625       /* In rvalue contexts, such as this, functions are coerced into
1626          pointers to functions.  This makes "x/i main" work.  */
1627       if (/* last_format == 'i'  && */ 
1628           TYPE_CODE (value_type (val)) == TYPE_CODE_FUNC
1629            && VALUE_LVAL (val) == lval_memory)
1630         next_address = value_address (val);
1631       else
1632         next_address = value_as_address (val);
1633
1634       next_gdbarch = expr->gdbarch;
1635     }
1636
1637   if (!next_gdbarch)
1638     error_no_arg (_("starting display address"));
1639
1640   do_examine (fmt, next_gdbarch, next_address);
1641
1642   /* If the examine succeeds, we remember its size and format for next
1643      time.  Set last_size to 'b' for strings.  */
1644   if (fmt.format == 's')
1645     last_size = 'b';
1646   else
1647     last_size = fmt.size;
1648   last_format = fmt.format;
1649
1650   /* Set a couple of internal variables if appropriate.  */
1651   if (last_examine_value != nullptr)
1652     {
1653       /* Make last address examined available to the user as $_.  Use
1654          the correct pointer type.  */
1655       struct type *pointer_type
1656         = lookup_pointer_type (value_type (last_examine_value.get ()));
1657       set_internalvar (lookup_internalvar ("_"),
1658                        value_from_pointer (pointer_type,
1659                                            last_examine_address));
1660
1661       /* Make contents of last address examined available to the user
1662          as $__.  If the last value has not been fetched from memory
1663          then don't fetch it now; instead mark it by voiding the $__
1664          variable.  */
1665       if (value_lazy (last_examine_value.get ()))
1666         clear_internalvar (lookup_internalvar ("__"));
1667       else
1668         set_internalvar (lookup_internalvar ("__"), last_examine_value.get ());
1669     }
1670 }
1671 \f
1672
1673 /* Add an expression to the auto-display chain.
1674    Specify the expression.  */
1675
1676 static void
1677 display_command (const char *arg, int from_tty)
1678 {
1679   struct format_data fmt;
1680   struct display *newobj;
1681   const char *exp = arg;
1682
1683   if (exp == 0)
1684     {
1685       do_displays ();
1686       return;
1687     }
1688
1689   if (*exp == '/')
1690     {
1691       exp++;
1692       fmt = decode_format (&exp, 0, 0);
1693       if (fmt.size && fmt.format == 0)
1694         fmt.format = 'x';
1695       if (fmt.format == 'i' || fmt.format == 's')
1696         fmt.size = 'b';
1697     }
1698   else
1699     {
1700       fmt.format = 0;
1701       fmt.size = 0;
1702       fmt.count = 0;
1703       fmt.raw = 0;
1704     }
1705
1706   innermost_block.reset ();
1707   expression_up expr = parse_expression (exp);
1708
1709   newobj = new display ();
1710
1711   newobj->exp_string = xstrdup (exp);
1712   newobj->exp = std::move (expr);
1713   newobj->block = innermost_block.block ();
1714   newobj->pspace = current_program_space;
1715   newobj->number = ++display_number;
1716   newobj->format = fmt;
1717   newobj->enabled_p = 1;
1718   newobj->next = NULL;
1719
1720   if (display_chain == NULL)
1721     display_chain = newobj;
1722   else
1723     {
1724       struct display *last;
1725
1726       for (last = display_chain; last->next != NULL; last = last->next)
1727         ;
1728       last->next = newobj;
1729     }
1730
1731   if (from_tty)
1732     do_one_display (newobj);
1733
1734   dont_repeat ();
1735 }
1736
1737 static void
1738 free_display (struct display *d)
1739 {
1740   xfree (d->exp_string);
1741   delete d;
1742 }
1743
1744 /* Clear out the display_chain.  Done when new symtabs are loaded,
1745    since this invalidates the types stored in many expressions.  */
1746
1747 void
1748 clear_displays (void)
1749 {
1750   struct display *d;
1751
1752   while ((d = display_chain) != NULL)
1753     {
1754       display_chain = d->next;
1755       free_display (d);
1756     }
1757 }
1758
1759 /* Delete the auto-display DISPLAY.  */
1760
1761 static void
1762 delete_display (struct display *display)
1763 {
1764   struct display *d;
1765
1766   gdb_assert (display != NULL);
1767
1768   if (display_chain == display)
1769     display_chain = display->next;
1770
1771   ALL_DISPLAYS (d)
1772     if (d->next == display)
1773       {
1774         d->next = display->next;
1775         break;
1776       }
1777
1778   free_display (display);
1779 }
1780
1781 /* Call FUNCTION on each of the displays whose numbers are given in
1782    ARGS.  DATA is passed unmodified to FUNCTION.  */
1783
1784 static void
1785 map_display_numbers (const char *args,
1786                      void (*function) (struct display *,
1787                                        void *),
1788                      void *data)
1789 {
1790   int num;
1791
1792   if (args == NULL)
1793     error_no_arg (_("one or more display numbers"));
1794
1795   number_or_range_parser parser (args);
1796
1797   while (!parser.finished ())
1798     {
1799       const char *p = parser.cur_tok ();
1800
1801       num = parser.get_number ();
1802       if (num == 0)
1803         warning (_("bad display number at or near '%s'"), p);
1804       else
1805         {
1806           struct display *d, *tmp;
1807
1808           ALL_DISPLAYS_SAFE (d, tmp)
1809             if (d->number == num)
1810               break;
1811           if (d == NULL)
1812             printf_unfiltered (_("No display number %d.\n"), num);
1813           else
1814             function (d, data);
1815         }
1816     }
1817 }
1818
1819 /* Callback for map_display_numbers, that deletes a display.  */
1820
1821 static void
1822 do_delete_display (struct display *d, void *data)
1823 {
1824   delete_display (d);
1825 }
1826
1827 /* "undisplay" command.  */
1828
1829 static void
1830 undisplay_command (const char *args, int from_tty)
1831 {
1832   if (args == NULL)
1833     {
1834       if (query (_("Delete all auto-display expressions? ")))
1835         clear_displays ();
1836       dont_repeat ();
1837       return;
1838     }
1839
1840   map_display_numbers (args, do_delete_display, NULL);
1841   dont_repeat ();
1842 }
1843
1844 /* Display a single auto-display.  
1845    Do nothing if the display cannot be printed in the current context,
1846    or if the display is disabled.  */
1847
1848 static void
1849 do_one_display (struct display *d)
1850 {
1851   int within_current_scope;
1852
1853   if (d->enabled_p == 0)
1854     return;
1855
1856   /* The expression carries the architecture that was used at parse time.
1857      This is a problem if the expression depends on architecture features
1858      (e.g. register numbers), and the current architecture is now different.
1859      For example, a display statement like "display/i $pc" is expected to
1860      display the PC register of the current architecture, not the arch at
1861      the time the display command was given.  Therefore, we re-parse the
1862      expression if the current architecture has changed.  */
1863   if (d->exp != NULL && d->exp->gdbarch != get_current_arch ())
1864     {
1865       d->exp.reset ();
1866       d->block = NULL;
1867     }
1868
1869   if (d->exp == NULL)
1870     {
1871
1872       TRY
1873         {
1874           innermost_block.reset ();
1875           d->exp = parse_expression (d->exp_string);
1876           d->block = innermost_block.block ();
1877         }
1878       CATCH (ex, RETURN_MASK_ALL)
1879         {
1880           /* Can't re-parse the expression.  Disable this display item.  */
1881           d->enabled_p = 0;
1882           warning (_("Unable to display \"%s\": %s"),
1883                    d->exp_string, ex.message);
1884           return;
1885         }
1886       END_CATCH
1887     }
1888
1889   if (d->block)
1890     {
1891       if (d->pspace == current_program_space)
1892         within_current_scope = contained_in (get_selected_block (0), d->block);
1893       else
1894         within_current_scope = 0;
1895     }
1896   else
1897     within_current_scope = 1;
1898   if (!within_current_scope)
1899     return;
1900
1901   scoped_restore save_display_number
1902     = make_scoped_restore (&current_display_number, d->number);
1903
1904   annotate_display_begin ();
1905   printf_filtered ("%d", d->number);
1906   annotate_display_number_end ();
1907   printf_filtered (": ");
1908   if (d->format.size)
1909     {
1910
1911       annotate_display_format ();
1912
1913       printf_filtered ("x/");
1914       if (d->format.count != 1)
1915         printf_filtered ("%d", d->format.count);
1916       printf_filtered ("%c", d->format.format);
1917       if (d->format.format != 'i' && d->format.format != 's')
1918         printf_filtered ("%c", d->format.size);
1919       printf_filtered (" ");
1920
1921       annotate_display_expression ();
1922
1923       puts_filtered (d->exp_string);
1924       annotate_display_expression_end ();
1925
1926       if (d->format.count != 1 || d->format.format == 'i')
1927         printf_filtered ("\n");
1928       else
1929         printf_filtered ("  ");
1930
1931       annotate_display_value ();
1932
1933       TRY
1934         {
1935           struct value *val;
1936           CORE_ADDR addr;
1937
1938           val = evaluate_expression (d->exp.get ());
1939           addr = value_as_address (val);
1940           if (d->format.format == 'i')
1941             addr = gdbarch_addr_bits_remove (d->exp->gdbarch, addr);
1942           do_examine (d->format, d->exp->gdbarch, addr);
1943         }
1944       CATCH (ex, RETURN_MASK_ERROR)
1945         {
1946           fprintf_filtered (gdb_stdout, _("<error: %s>\n"), ex.message);
1947         }
1948       END_CATCH
1949     }
1950   else
1951     {
1952       struct value_print_options opts;
1953
1954       annotate_display_format ();
1955
1956       if (d->format.format)
1957         printf_filtered ("/%c ", d->format.format);
1958
1959       annotate_display_expression ();
1960
1961       puts_filtered (d->exp_string);
1962       annotate_display_expression_end ();
1963
1964       printf_filtered (" = ");
1965
1966       annotate_display_expression ();
1967
1968       get_formatted_print_options (&opts, d->format.format);
1969       opts.raw = d->format.raw;
1970
1971       TRY
1972         {
1973           struct value *val;
1974
1975           val = evaluate_expression (d->exp.get ());
1976           print_formatted (val, d->format.size, &opts, gdb_stdout);
1977         }
1978       CATCH (ex, RETURN_MASK_ERROR)
1979         {
1980           fprintf_filtered (gdb_stdout, _("<error: %s>"), ex.message);
1981         }
1982       END_CATCH
1983
1984       printf_filtered ("\n");
1985     }
1986
1987   annotate_display_end ();
1988
1989   gdb_flush (gdb_stdout);
1990 }
1991
1992 /* Display all of the values on the auto-display chain which can be
1993    evaluated in the current scope.  */
1994
1995 void
1996 do_displays (void)
1997 {
1998   struct display *d;
1999
2000   for (d = display_chain; d; d = d->next)
2001     do_one_display (d);
2002 }
2003
2004 /* Delete the auto-display which we were in the process of displaying.
2005    This is done when there is an error or a signal.  */
2006
2007 void
2008 disable_display (int num)
2009 {
2010   struct display *d;
2011
2012   for (d = display_chain; d; d = d->next)
2013     if (d->number == num)
2014       {
2015         d->enabled_p = 0;
2016         return;
2017       }
2018   printf_unfiltered (_("No display number %d.\n"), num);
2019 }
2020
2021 void
2022 disable_current_display (void)
2023 {
2024   if (current_display_number >= 0)
2025     {
2026       disable_display (current_display_number);
2027       fprintf_unfiltered (gdb_stderr,
2028                           _("Disabling display %d to "
2029                             "avoid infinite recursion.\n"),
2030                           current_display_number);
2031     }
2032   current_display_number = -1;
2033 }
2034
2035 static void
2036 info_display_command (const char *ignore, int from_tty)
2037 {
2038   struct display *d;
2039
2040   if (!display_chain)
2041     printf_unfiltered (_("There are no auto-display expressions now.\n"));
2042   else
2043     printf_filtered (_("Auto-display expressions now in effect:\n\
2044 Num Enb Expression\n"));
2045
2046   for (d = display_chain; d; d = d->next)
2047     {
2048       printf_filtered ("%d:   %c  ", d->number, "ny"[(int) d->enabled_p]);
2049       if (d->format.size)
2050         printf_filtered ("/%d%c%c ", d->format.count, d->format.size,
2051                          d->format.format);
2052       else if (d->format.format)
2053         printf_filtered ("/%c ", d->format.format);
2054       puts_filtered (d->exp_string);
2055       if (d->block && !contained_in (get_selected_block (0), d->block))
2056         printf_filtered (_(" (cannot be evaluated in the current context)"));
2057       printf_filtered ("\n");
2058       gdb_flush (gdb_stdout);
2059     }
2060 }
2061
2062 /* Callback fo map_display_numbers, that enables or disables the
2063    passed in display D.  */
2064
2065 static void
2066 do_enable_disable_display (struct display *d, void *data)
2067 {
2068   d->enabled_p = *(int *) data;
2069 }
2070
2071 /* Implamentation of both the "disable display" and "enable display"
2072    commands.  ENABLE decides what to do.  */
2073
2074 static void
2075 enable_disable_display_command (const char *args, int from_tty, int enable)
2076 {
2077   if (args == NULL)
2078     {
2079       struct display *d;
2080
2081       ALL_DISPLAYS (d)
2082         d->enabled_p = enable;
2083       return;
2084     }
2085
2086   map_display_numbers (args, do_enable_disable_display, &enable);
2087 }
2088
2089 /* The "enable display" command.  */
2090
2091 static void
2092 enable_display_command (const char *args, int from_tty)
2093 {
2094   enable_disable_display_command (args, from_tty, 1);
2095 }
2096
2097 /* The "disable display" command.  */
2098
2099 static void
2100 disable_display_command (const char *args, int from_tty)
2101 {
2102   enable_disable_display_command (args, from_tty, 0);
2103 }
2104
2105 /* display_chain items point to blocks and expressions.  Some expressions in
2106    turn may point to symbols.
2107    Both symbols and blocks are obstack_alloc'd on objfile_stack, and are
2108    obstack_free'd when a shared library is unloaded.
2109    Clear pointers that are about to become dangling.
2110    Both .exp and .block fields will be restored next time we need to display
2111    an item by re-parsing .exp_string field in the new execution context.  */
2112
2113 static void
2114 clear_dangling_display_expressions (struct objfile *objfile)
2115 {
2116   struct display *d;
2117   struct program_space *pspace;
2118
2119   /* With no symbol file we cannot have a block or expression from it.  */
2120   if (objfile == NULL)
2121     return;
2122   pspace = objfile->pspace;
2123   if (objfile->separate_debug_objfile_backlink)
2124     {
2125       objfile = objfile->separate_debug_objfile_backlink;
2126       gdb_assert (objfile->pspace == pspace);
2127     }
2128
2129   for (d = display_chain; d != NULL; d = d->next)
2130     {
2131       if (d->pspace != pspace)
2132         continue;
2133
2134       if (lookup_objfile_from_block (d->block) == objfile
2135           || (d->exp != NULL && exp_uses_objfile (d->exp.get (), objfile)))
2136       {
2137         d->exp.reset ();
2138         d->block = NULL;
2139       }
2140     }
2141 }
2142 \f
2143
2144 /* Print the value in stack frame FRAME of a variable specified by a
2145    struct symbol.  NAME is the name to print; if NULL then VAR's print
2146    name will be used.  STREAM is the ui_file on which to print the
2147    value.  INDENT specifies the number of indent levels to print
2148    before printing the variable name.
2149
2150    This function invalidates FRAME.  */
2151
2152 void
2153 print_variable_and_value (const char *name, struct symbol *var,
2154                           struct frame_info *frame,
2155                           struct ui_file *stream, int indent)
2156 {
2157
2158   if (!name)
2159     name = SYMBOL_PRINT_NAME (var);
2160
2161   fputs_filtered (n_spaces (2 * indent), stream);
2162   fputs_styled (name, variable_name_style.style (), stream);
2163   fputs_filtered (" = ", stream);
2164
2165   TRY
2166     {
2167       struct value *val;
2168       struct value_print_options opts;
2169
2170       /* READ_VAR_VALUE needs a block in order to deal with non-local
2171          references (i.e. to handle nested functions).  In this context, we
2172          print variables that are local to this frame, so we can avoid passing
2173          a block to it.  */
2174       val = read_var_value (var, NULL, frame);
2175       get_user_print_options (&opts);
2176       opts.deref_ref = 1;
2177       common_val_print (val, stream, indent, &opts, current_language);
2178
2179       /* common_val_print invalidates FRAME when a pretty printer calls inferior
2180          function.  */
2181       frame = NULL;
2182     }
2183   CATCH (except, RETURN_MASK_ERROR)
2184     {
2185       fprintf_filtered(stream, "<error reading variable %s (%s)>", name,
2186                        except.message);
2187     }
2188   END_CATCH
2189
2190   fprintf_filtered (stream, "\n");
2191 }
2192
2193 /* Subroutine of ui_printf to simplify it.
2194    Print VALUE to STREAM using FORMAT.
2195    VALUE is a C-style string on the target.  */
2196
2197 static void
2198 printf_c_string (struct ui_file *stream, const char *format,
2199                  struct value *value)
2200 {
2201   gdb_byte *str;
2202   CORE_ADDR tem;
2203   int j;
2204
2205   tem = value_as_address (value);
2206   if (tem == 0)
2207     {
2208       DIAGNOSTIC_PUSH
2209       DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2210       fprintf_filtered (stream, format, "(null)");
2211       DIAGNOSTIC_POP
2212       return;
2213     }
2214
2215   /* This is a %s argument.  Find the length of the string.  */
2216   for (j = 0;; j++)
2217     {
2218       gdb_byte c;
2219
2220       QUIT;
2221       read_memory (tem + j, &c, 1);
2222       if (c == 0)
2223         break;
2224     }
2225
2226   /* Copy the string contents into a string inside GDB.  */
2227   str = (gdb_byte *) alloca (j + 1);
2228   if (j != 0)
2229     read_memory (tem, str, j);
2230   str[j] = 0;
2231
2232   DIAGNOSTIC_PUSH
2233   DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2234   fprintf_filtered (stream, format, (char *) str);
2235   DIAGNOSTIC_POP
2236 }
2237
2238 /* Subroutine of ui_printf to simplify it.
2239    Print VALUE to STREAM using FORMAT.
2240    VALUE is a wide C-style string on the target.  */
2241
2242 static void
2243 printf_wide_c_string (struct ui_file *stream, const char *format,
2244                       struct value *value)
2245 {
2246   gdb_byte *str;
2247   CORE_ADDR tem;
2248   int j;
2249   struct gdbarch *gdbarch = get_type_arch (value_type (value));
2250   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
2251   struct type *wctype = lookup_typename (current_language, gdbarch,
2252                                          "wchar_t", NULL, 0);
2253   int wcwidth = TYPE_LENGTH (wctype);
2254   gdb_byte *buf = (gdb_byte *) alloca (wcwidth);
2255
2256   tem = value_as_address (value);
2257   if (tem == 0)
2258     {
2259       DIAGNOSTIC_PUSH
2260       DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2261       fprintf_filtered (stream, format, "(null)");
2262       DIAGNOSTIC_POP
2263       return;
2264     }
2265
2266   /* This is a %s argument.  Find the length of the string.  */
2267   for (j = 0;; j += wcwidth)
2268     {
2269       QUIT;
2270       read_memory (tem + j, buf, wcwidth);
2271       if (extract_unsigned_integer (buf, wcwidth, byte_order) == 0)
2272         break;
2273     }
2274
2275   /* Copy the string contents into a string inside GDB.  */
2276   str = (gdb_byte *) alloca (j + wcwidth);
2277   if (j != 0)
2278     read_memory (tem, str, j);
2279   memset (&str[j], 0, wcwidth);
2280
2281   auto_obstack output;
2282
2283   convert_between_encodings (target_wide_charset (gdbarch),
2284                              host_charset (),
2285                              str, j, wcwidth,
2286                              &output, translit_char);
2287   obstack_grow_str0 (&output, "");
2288
2289   DIAGNOSTIC_PUSH
2290   DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2291   fprintf_filtered (stream, format, obstack_base (&output));
2292   DIAGNOSTIC_POP
2293 }
2294
2295 /* Subroutine of ui_printf to simplify it.
2296    Print VALUE, a floating point value, to STREAM using FORMAT.  */
2297
2298 static void
2299 printf_floating (struct ui_file *stream, const char *format,
2300                  struct value *value, enum argclass argclass)
2301 {
2302   /* Parameter data.  */
2303   struct type *param_type = value_type (value);
2304   struct gdbarch *gdbarch = get_type_arch (param_type);
2305
2306   /* Determine target type corresponding to the format string.  */
2307   struct type *fmt_type;
2308   switch (argclass)
2309     {
2310       case double_arg:
2311         fmt_type = builtin_type (gdbarch)->builtin_double;
2312         break;
2313       case long_double_arg:
2314         fmt_type = builtin_type (gdbarch)->builtin_long_double;
2315         break;
2316       case dec32float_arg:
2317         fmt_type = builtin_type (gdbarch)->builtin_decfloat;
2318         break;
2319       case dec64float_arg:
2320         fmt_type = builtin_type (gdbarch)->builtin_decdouble;
2321         break;
2322       case dec128float_arg:
2323         fmt_type = builtin_type (gdbarch)->builtin_declong;
2324         break;
2325       default:
2326         gdb_assert_not_reached ("unexpected argument class");
2327     }
2328
2329   /* To match the traditional GDB behavior, the conversion is
2330      done differently depending on the type of the parameter:
2331
2332      - if the parameter has floating-point type, it's value
2333        is converted to the target type;
2334
2335      - otherwise, if the parameter has a type that is of the
2336        same size as a built-in floating-point type, the value
2337        bytes are interpreted as if they were of that type, and
2338        then converted to the target type (this is not done for
2339        decimal floating-point argument classes);
2340
2341      - otherwise, if the source value has an integer value,
2342        it's value is converted to the target type;
2343
2344      - otherwise, an error is raised.
2345
2346      In either case, the result of the conversion is a byte buffer
2347      formatted in the target format for the target type.  */
2348
2349   if (TYPE_CODE (fmt_type) == TYPE_CODE_FLT)
2350     {
2351       param_type = float_type_from_length (param_type);
2352       if (param_type != value_type (value))
2353         value = value_from_contents (param_type, value_contents (value));
2354     }
2355
2356   value = value_cast (fmt_type, value);
2357
2358   /* Convert the value to a string and print it.  */
2359   std::string str
2360     = target_float_to_string (value_contents (value), fmt_type, format);
2361   fputs_filtered (str.c_str (), stream);
2362 }
2363
2364 /* Subroutine of ui_printf to simplify it.
2365    Print VALUE, a target pointer, to STREAM using FORMAT.  */
2366
2367 static void
2368 printf_pointer (struct ui_file *stream, const char *format,
2369                 struct value *value)
2370 {
2371   /* We avoid the host's %p because pointers are too
2372      likely to be the wrong size.  The only interesting
2373      modifier for %p is a width; extract that, and then
2374      handle %p as glibc would: %#x or a literal "(nil)".  */
2375
2376   const char *p;
2377   char *fmt, *fmt_p;
2378 #ifdef PRINTF_HAS_LONG_LONG
2379   long long val = value_as_long (value);
2380 #else
2381   long val = value_as_long (value);
2382 #endif
2383
2384   fmt = (char *) alloca (strlen (format) + 5);
2385
2386   /* Copy up to the leading %.  */
2387   p = format;
2388   fmt_p = fmt;
2389   while (*p)
2390     {
2391       int is_percent = (*p == '%');
2392
2393       *fmt_p++ = *p++;
2394       if (is_percent)
2395         {
2396           if (*p == '%')
2397             *fmt_p++ = *p++;
2398           else
2399             break;
2400         }
2401     }
2402
2403   if (val != 0)
2404     *fmt_p++ = '#';
2405
2406   /* Copy any width or flags.  Only the "-" flag is valid for pointers
2407      -- see the format_pieces constructor.  */
2408   while (*p == '-' || (*p >= '0' && *p < '9'))
2409     *fmt_p++ = *p++;
2410
2411   gdb_assert (*p == 'p' && *(p + 1) == '\0');
2412   if (val != 0)
2413     {
2414 #ifdef PRINTF_HAS_LONG_LONG
2415       *fmt_p++ = 'l';
2416 #endif
2417       *fmt_p++ = 'l';
2418       *fmt_p++ = 'x';
2419       *fmt_p++ = '\0';
2420       DIAGNOSTIC_PUSH
2421       DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2422       fprintf_filtered (stream, fmt, val);
2423       DIAGNOSTIC_POP
2424     }
2425   else
2426     {
2427       *fmt_p++ = 's';
2428       *fmt_p++ = '\0';
2429       DIAGNOSTIC_PUSH
2430       DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2431       fprintf_filtered (stream, fmt, "(nil)");
2432       DIAGNOSTIC_POP
2433     }
2434 }
2435
2436 /* printf "printf format string" ARG to STREAM.  */
2437
2438 static void
2439 ui_printf (const char *arg, struct ui_file *stream)
2440 {
2441   const char *s = arg;
2442   std::vector<struct value *> val_args;
2443
2444   if (s == 0)
2445     error_no_arg (_("format-control string and values to print"));
2446
2447   s = skip_spaces (s);
2448
2449   /* A format string should follow, enveloped in double quotes.  */
2450   if (*s++ != '"')
2451     error (_("Bad format string, missing '\"'."));
2452
2453   format_pieces fpieces (&s);
2454
2455   if (*s++ != '"')
2456     error (_("Bad format string, non-terminated '\"'."));
2457   
2458   s = skip_spaces (s);
2459
2460   if (*s != ',' && *s != 0)
2461     error (_("Invalid argument syntax"));
2462
2463   if (*s == ',')
2464     s++;
2465   s = skip_spaces (s);
2466
2467   {
2468     int nargs_wanted;
2469     int i;
2470     const char *current_substring;
2471
2472     nargs_wanted = 0;
2473     for (auto &&piece : fpieces)
2474       if (piece.argclass != literal_piece)
2475         ++nargs_wanted;
2476
2477     /* Now, parse all arguments and evaluate them.
2478        Store the VALUEs in VAL_ARGS.  */
2479
2480     while (*s != '\0')
2481       {
2482         const char *s1;
2483
2484         s1 = s;
2485         val_args.push_back (parse_to_comma_and_eval (&s1));
2486
2487         s = s1;
2488         if (*s == ',')
2489           s++;
2490       }
2491
2492     if (val_args.size () != nargs_wanted)
2493       error (_("Wrong number of arguments for specified format-string"));
2494
2495     /* Now actually print them.  */
2496     i = 0;
2497     for (auto &&piece : fpieces)
2498       {
2499         current_substring = piece.string;
2500         switch (piece.argclass)
2501           {
2502           case string_arg:
2503             printf_c_string (stream, current_substring, val_args[i]);
2504             break;
2505           case wide_string_arg:
2506             printf_wide_c_string (stream, current_substring, val_args[i]);
2507             break;
2508           case wide_char_arg:
2509             {
2510               struct gdbarch *gdbarch
2511                 = get_type_arch (value_type (val_args[i]));
2512               struct type *wctype = lookup_typename (current_language, gdbarch,
2513                                                      "wchar_t", NULL, 0);
2514               struct type *valtype;
2515               const gdb_byte *bytes;
2516
2517               valtype = value_type (val_args[i]);
2518               if (TYPE_LENGTH (valtype) != TYPE_LENGTH (wctype)
2519                   || TYPE_CODE (valtype) != TYPE_CODE_INT)
2520                 error (_("expected wchar_t argument for %%lc"));
2521
2522               bytes = value_contents (val_args[i]);
2523
2524               auto_obstack output;
2525
2526               convert_between_encodings (target_wide_charset (gdbarch),
2527                                          host_charset (),
2528                                          bytes, TYPE_LENGTH (valtype),
2529                                          TYPE_LENGTH (valtype),
2530                                          &output, translit_char);
2531               obstack_grow_str0 (&output, "");
2532
2533               DIAGNOSTIC_PUSH
2534               DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2535               fprintf_filtered (stream, current_substring,
2536                                 obstack_base (&output));
2537               DIAGNOSTIC_POP
2538             }
2539             break;
2540           case long_long_arg:
2541 #ifdef PRINTF_HAS_LONG_LONG
2542             {
2543               long long val = value_as_long (val_args[i]);
2544
2545               DIAGNOSTIC_PUSH
2546               DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2547               fprintf_filtered (stream, current_substring, val);
2548               DIAGNOSTIC_POP
2549               break;
2550             }
2551 #else
2552             error (_("long long not supported in printf"));
2553 #endif
2554           case int_arg:
2555             {
2556               int val = value_as_long (val_args[i]);
2557
2558               DIAGNOSTIC_PUSH
2559               DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2560               fprintf_filtered (stream, current_substring, val);
2561               DIAGNOSTIC_POP
2562               break;
2563             }
2564           case long_arg:
2565             {
2566               long val = value_as_long (val_args[i]);
2567
2568               DIAGNOSTIC_PUSH
2569               DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2570               fprintf_filtered (stream, current_substring, val);
2571               DIAGNOSTIC_POP
2572               break;
2573             }
2574           /* Handles floating-point values.  */
2575           case double_arg:
2576           case long_double_arg:
2577           case dec32float_arg:
2578           case dec64float_arg:
2579           case dec128float_arg:
2580             printf_floating (stream, current_substring, val_args[i],
2581                              piece.argclass);
2582             break;
2583           case ptr_arg:
2584             printf_pointer (stream, current_substring, val_args[i]);
2585             break;
2586           case literal_piece:
2587             /* Print a portion of the format string that has no
2588                directives.  Note that this will not include any
2589                ordinary %-specs, but it might include "%%".  That is
2590                why we use printf_filtered and not puts_filtered here.
2591                Also, we pass a dummy argument because some platforms
2592                have modified GCC to include -Wformat-security by
2593                default, which will warn here if there is no
2594                argument.  */
2595             DIAGNOSTIC_PUSH
2596             DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
2597             fprintf_filtered (stream, current_substring, 0);
2598             DIAGNOSTIC_POP
2599             break;
2600           default:
2601             internal_error (__FILE__, __LINE__,
2602                             _("failed internal consistency check"));
2603           }
2604         /* Maybe advance to the next argument.  */
2605         if (piece.argclass != literal_piece)
2606           ++i;
2607       }
2608   }
2609 }
2610
2611 /* Implement the "printf" command.  */
2612
2613 static void
2614 printf_command (const char *arg, int from_tty)
2615 {
2616   ui_printf (arg, gdb_stdout);
2617   reset_terminal_style (gdb_stdout);
2618   wrap_here ("");
2619   gdb_flush (gdb_stdout);
2620 }
2621
2622 /* Implement the "eval" command.  */
2623
2624 static void
2625 eval_command (const char *arg, int from_tty)
2626 {
2627   string_file stb;
2628
2629   ui_printf (arg, &stb);
2630
2631   std::string expanded = insert_user_defined_cmd_args (stb.c_str ());
2632
2633   execute_command (expanded.c_str (), from_tty);
2634 }
2635
2636 void
2637 _initialize_printcmd (void)
2638 {
2639   struct cmd_list_element *c;
2640
2641   current_display_number = -1;
2642
2643   gdb::observers::free_objfile.attach (clear_dangling_display_expressions);
2644
2645   add_info ("address", info_address_command,
2646             _("Describe where symbol SYM is stored."));
2647
2648   add_info ("symbol", info_symbol_command, _("\
2649 Describe what symbol is at location ADDR.\n\
2650 Only for symbols with fixed locations (global or static scope)."));
2651
2652   add_com ("x", class_vars, x_command, _("\
2653 Examine memory: x/FMT ADDRESS.\n\
2654 ADDRESS is an expression for the memory address to examine.\n\
2655 FMT is a repeat count followed by a format letter and a size letter.\n\
2656 Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),\n\
2657   t(binary), f(float), a(address), i(instruction), c(char), s(string)\n\
2658   and z(hex, zero padded on the left).\n\
2659 Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).\n\
2660 The specified number of objects of the specified size are printed\n\
2661 according to the format.  If a negative number is specified, memory is\n\
2662 examined backward from the address.\n\n\
2663 Defaults for format and size letters are those previously used.\n\
2664 Default count is 1.  Default address is following last thing printed\n\
2665 with this command or \"print\"."));
2666
2667 #if 0
2668   add_com ("whereis", class_vars, whereis_command,
2669            _("Print line number and file of definition of variable."));
2670 #endif
2671
2672   add_info ("display", info_display_command, _("\
2673 Expressions to display when program stops, with code numbers."));
2674
2675   add_cmd ("undisplay", class_vars, undisplay_command, _("\
2676 Cancel some expressions to be displayed when program stops.\n\
2677 Arguments are the code numbers of the expressions to stop displaying.\n\
2678 No argument means cancel all automatic-display expressions.\n\
2679 \"delete display\" has the same effect as this command.\n\
2680 Do \"info display\" to see current list of code numbers."),
2681            &cmdlist);
2682
2683   add_com ("display", class_vars, display_command, _("\
2684 Print value of expression EXP each time the program stops.\n\
2685 /FMT may be used before EXP as in the \"print\" command.\n\
2686 /FMT \"i\" or \"s\" or including a size-letter is allowed,\n\
2687 as in the \"x\" command, and then EXP is used to get the address to examine\n\
2688 and examining is done as in the \"x\" command.\n\n\
2689 With no argument, display all currently requested auto-display expressions.\n\
2690 Use \"undisplay\" to cancel display requests previously made."));
2691
2692   add_cmd ("display", class_vars, enable_display_command, _("\
2693 Enable some expressions to be displayed when program stops.\n\
2694 Arguments are the code numbers of the expressions to resume displaying.\n\
2695 No argument means enable all automatic-display expressions.\n\
2696 Do \"info display\" to see current list of code numbers."), &enablelist);
2697
2698   add_cmd ("display", class_vars, disable_display_command, _("\
2699 Disable some expressions to be displayed when program stops.\n\
2700 Arguments are the code numbers of the expressions to stop displaying.\n\
2701 No argument means disable all automatic-display expressions.\n\
2702 Do \"info display\" to see current list of code numbers."), &disablelist);
2703
2704   add_cmd ("display", class_vars, undisplay_command, _("\
2705 Cancel some expressions to be displayed when program stops.\n\
2706 Arguments are the code numbers of the expressions to stop displaying.\n\
2707 No argument means cancel all automatic-display expressions.\n\
2708 Do \"info display\" to see current list of code numbers."), &deletelist);
2709
2710   add_com ("printf", class_vars, printf_command, _("\
2711 Formatted printing, like the C \"printf\" function.\n\
2712 Usage: printf \"format string\", arg1, arg2, arg3, ..., argn\n\
2713 This supports most C printf format specifications, like %s, %d, etc."));
2714
2715   add_com ("output", class_vars, output_command, _("\
2716 Like \"print\" but don't put in value history and don't print newline.\n\
2717 This is useful in user-defined commands."));
2718
2719   add_prefix_cmd ("set", class_vars, set_command, _("\
2720 Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2721 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2722 example).  VAR may be a debugger \"convenience\" variable (names starting\n\
2723 with $), a register (a few standard names starting with $), or an actual\n\
2724 variable in the program being debugged.  EXP is any valid expression.\n\
2725 Use \"set variable\" for variables with names identical to set subcommands.\n\
2726 \n\
2727 With a subcommand, this command modifies parts of the gdb environment.\n\
2728 You can see these environment settings with the \"show\" command."),
2729                   &setlist, "set ", 1, &cmdlist);
2730   if (dbx_commands)
2731     add_com ("assign", class_vars, set_command, _("\
2732 Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2733 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2734 example).  VAR may be a debugger \"convenience\" variable (names starting\n\
2735 with $), a register (a few standard names starting with $), or an actual\n\
2736 variable in the program being debugged.  EXP is any valid expression.\n\
2737 Use \"set variable\" for variables with names identical to set subcommands.\n\
2738 \nWith a subcommand, this command modifies parts of the gdb environment.\n\
2739 You can see these environment settings with the \"show\" command."));
2740
2741   /* "call" is the same as "set", but handy for dbx users to call fns.  */
2742   c = add_com ("call", class_vars, call_command, _("\
2743 Call a function in the program.\n\
2744 The argument is the function name and arguments, in the notation of the\n\
2745 current working language.  The result is printed and saved in the value\n\
2746 history, if it is not void."));
2747   set_cmd_completer (c, expression_completer);
2748
2749   add_cmd ("variable", class_vars, set_command, _("\
2750 Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2751 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2752 example).  VAR may be a debugger \"convenience\" variable (names starting\n\
2753 with $), a register (a few standard names starting with $), or an actual\n\
2754 variable in the program being debugged.  EXP is any valid expression.\n\
2755 This may usually be abbreviated to simply \"set\"."),
2756            &setlist);
2757   add_alias_cmd ("var", "variable", class_vars, 0, &setlist);
2758
2759   c = add_com ("print", class_vars, print_command, _("\
2760 Print value of expression EXP.\n\
2761 Variables accessible are those of the lexical environment of the selected\n\
2762 stack frame, plus all those whose scope is global or an entire file.\n\
2763 \n\
2764 $NUM gets previous value number NUM.  $ and $$ are the last two values.\n\
2765 $$NUM refers to NUM'th value back from the last one.\n\
2766 Names starting with $ refer to registers (with the values they would have\n\
2767 if the program were to return to the stack frame now selected, restoring\n\
2768 all registers saved by frames farther in) or else to debugger\n\
2769 \"convenience\" variables (any such name not a known register).\n\
2770 Use assignment expressions to give values to convenience variables.\n\
2771 \n\
2772 {TYPE}ADREXP refers to a datum of data type TYPE, located at address ADREXP.\n\
2773 @ is a binary operator for treating consecutive data objects\n\
2774 anywhere in memory as an array.  FOO@NUM gives an array whose first\n\
2775 element is FOO, whose second element is stored in the space following\n\
2776 where FOO is stored, etc.  FOO must be an expression whose value\n\
2777 resides in memory.\n\
2778 \n\
2779 EXP may be preceded with /FMT, where FMT is a format letter\n\
2780 but no count or size letter (see \"x\" command)."));
2781   set_cmd_completer (c, expression_completer);
2782   add_com_alias ("p", "print", class_vars, 1);
2783   add_com_alias ("inspect", "print", class_vars, 1);
2784
2785   add_setshow_uinteger_cmd ("max-symbolic-offset", no_class,
2786                             &max_symbolic_offset, _("\
2787 Set the largest offset that will be printed in <symbol+1234> form."), _("\
2788 Show the largest offset that will be printed in <symbol+1234> form."), _("\
2789 Tell GDB to only display the symbolic form of an address if the\n\
2790 offset between the closest earlier symbol and the address is less than\n\
2791 the specified maximum offset.  The default is \"unlimited\", which tells GDB\n\
2792 to always print the symbolic form of an address if any symbol precedes\n\
2793 it.  Zero is equivalent to \"unlimited\"."),
2794                             NULL,
2795                             show_max_symbolic_offset,
2796                             &setprintlist, &showprintlist);
2797   add_setshow_boolean_cmd ("symbol-filename", no_class,
2798                            &print_symbol_filename, _("\
2799 Set printing of source filename and line number with <symbol>."), _("\
2800 Show printing of source filename and line number with <symbol>."), NULL,
2801                            NULL,
2802                            show_print_symbol_filename,
2803                            &setprintlist, &showprintlist);
2804
2805   add_com ("eval", no_class, eval_command, _("\
2806 Convert \"printf format string\", arg1, arg2, arg3, ..., argn to\n\
2807 a command line, and call it."));
2808 }