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