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