OSDN Git Service

*** empty log message ***
[pf3gnuchains/sourceware.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 an error or 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       pc = get_frame_pc (frame);
763
764       if (pc == addr)
765         return "=> ";
766     }
767   return "   ";
768 }
769
770 /* Print address ADDR symbolically on STREAM.  Parameter DEMANGLE
771    controls whether to print the symbolic name "raw" or demangled.
772    Global setting "addressprint" controls whether to print hex address
773    or not.  */
774
775 void
776 print_address_demangle (struct gdbarch *gdbarch, CORE_ADDR addr,
777                         struct ui_file *stream, int do_demangle)
778 {
779   struct value_print_options opts;
780
781   get_user_print_options (&opts);
782   if (addr == 0)
783     {
784       fprintf_filtered (stream, "0");
785     }
786   else if (opts.addressprint)
787     {
788       fputs_filtered (paddress (gdbarch, addr), stream);
789       print_address_symbolic (gdbarch, addr, stream, do_demangle, " ");
790     }
791   else
792     {
793       print_address_symbolic (gdbarch, addr, stream, do_demangle, "");
794     }
795 }
796 \f
797
798 /* Examine data at address ADDR in format FMT.
799    Fetch it from memory and print on gdb_stdout.  */
800
801 static void
802 do_examine (struct format_data fmt, struct gdbarch *gdbarch, CORE_ADDR addr)
803 {
804   char format = 0;
805   char size;
806   int count = 1;
807   struct type *val_type = NULL;
808   int i;
809   int maxelts;
810   struct value_print_options opts;
811
812   format = fmt.format;
813   size = fmt.size;
814   count = fmt.count;
815   next_gdbarch = gdbarch;
816   next_address = addr;
817
818   /* Instruction format implies fetch single bytes
819      regardless of the specified size.
820      The case of strings is handled in decode_format, only explicit
821      size operator are not changed to 'b'.  */
822   if (format == 'i')
823     size = 'b';
824
825   if (size == 'a')
826     {
827       /* Pick the appropriate size for an address.  */
828       if (gdbarch_ptr_bit (next_gdbarch) == 64)
829         size = 'g';
830       else if (gdbarch_ptr_bit (next_gdbarch) == 32)
831         size = 'w';
832       else if (gdbarch_ptr_bit (next_gdbarch) == 16)
833         size = 'h';
834       else
835         /* Bad value for gdbarch_ptr_bit.  */
836         internal_error (__FILE__, __LINE__,
837                         _("failed internal consistency check"));
838     }
839
840   if (size == 'b')
841     val_type = builtin_type (next_gdbarch)->builtin_int8;
842   else if (size == 'h')
843     val_type = builtin_type (next_gdbarch)->builtin_int16;
844   else if (size == 'w')
845     val_type = builtin_type (next_gdbarch)->builtin_int32;
846   else if (size == 'g')
847     val_type = builtin_type (next_gdbarch)->builtin_int64;
848
849   if (format == 's')
850     {
851       struct type *char_type = NULL;
852
853       /* Search for "char16_t"  or "char32_t" types or fall back to 8-bit char
854          if type is not found.  */
855       if (size == 'h')
856         char_type = builtin_type (next_gdbarch)->builtin_char16;
857       else if (size == 'w')
858         char_type = builtin_type (next_gdbarch)->builtin_char32;
859       if (char_type)
860         val_type = char_type;
861       else
862         {
863           if (size != '\0' && size != 'b')
864             warning (_("Unable to display strings with "
865                        "size '%c', using 'b' instead."), size);
866           size = 'b';
867           val_type = builtin_type (next_gdbarch)->builtin_int8;
868         }
869     }
870
871   maxelts = 8;
872   if (size == 'w')
873     maxelts = 4;
874   if (size == 'g')
875     maxelts = 2;
876   if (format == 's' || format == 'i')
877     maxelts = 1;
878
879   get_formatted_print_options (&opts, format);
880
881   /* Print as many objects as specified in COUNT, at most maxelts per line,
882      with the address of the next one at the start of each line.  */
883
884   while (count > 0)
885     {
886       QUIT;
887       if (format == 'i')
888         fputs_filtered (pc_prefix (next_address), gdb_stdout);
889       print_address (next_gdbarch, next_address, gdb_stdout);
890       printf_filtered (":");
891       for (i = maxelts;
892            i > 0 && count > 0;
893            i--, count--)
894         {
895           printf_filtered ("\t");
896           /* Note that print_formatted sets next_address for the next
897              object.  */
898           last_examine_address = next_address;
899
900           if (last_examine_value)
901             value_free (last_examine_value);
902
903           /* The value to be displayed is not fetched greedily.
904              Instead, to avoid the possibility of a fetched value not
905              being used, its retrieval is delayed until the print code
906              uses it.  When examining an instruction stream, the
907              disassembler will perform its own memory fetch using just
908              the address stored in LAST_EXAMINE_VALUE.  FIXME: Should
909              the disassembler be modified so that LAST_EXAMINE_VALUE
910              is left with the byte sequence from the last complete
911              instruction fetched from memory?  */
912           last_examine_value = value_at_lazy (val_type, next_address);
913
914           if (last_examine_value)
915             release_value (last_examine_value);
916
917           print_formatted (last_examine_value, size, &opts, gdb_stdout);
918
919           /* Display any branch delay slots following the final insn.  */
920           if (format == 'i' && count == 1)
921             count += branch_delay_insns;
922         }
923       printf_filtered ("\n");
924       gdb_flush (gdb_stdout);
925     }
926 }
927 \f
928 static void
929 validate_format (struct format_data fmt, char *cmdname)
930 {
931   if (fmt.size != 0)
932     error (_("Size letters are meaningless in \"%s\" command."), cmdname);
933   if (fmt.count != 1)
934     error (_("Item count other than 1 is meaningless in \"%s\" command."),
935            cmdname);
936   if (fmt.format == 'i')
937     error (_("Format letter \"%c\" is meaningless in \"%s\" command."),
938            fmt.format, cmdname);
939 }
940
941 /* Evaluate string EXP as an expression in the current language and
942    print the resulting value.  EXP may contain a format specifier as the
943    first argument ("/x myvar" for example, to print myvar in hex).  */
944
945 static void
946 print_command_1 (char *exp, int inspect, int voidprint)
947 {
948   struct expression *expr;
949   struct cleanup *old_chain = 0;
950   char format = 0;
951   struct value *val;
952   struct format_data fmt;
953   int cleanup = 0;
954
955   if (exp && *exp == '/')
956     {
957       exp++;
958       fmt = decode_format (&exp, last_format, 0);
959       validate_format (fmt, "print");
960       last_format = format = fmt.format;
961     }
962   else
963     {
964       fmt.count = 1;
965       fmt.format = 0;
966       fmt.size = 0;
967       fmt.raw = 0;
968     }
969
970   if (exp && *exp)
971     {
972       expr = parse_expression (exp);
973       old_chain = make_cleanup (free_current_contents, &expr);
974       cleanup = 1;
975       val = evaluate_expression (expr);
976     }
977   else
978     val = access_value_history (0);
979
980   if (voidprint || (val && value_type (val) &&
981                     TYPE_CODE (value_type (val)) != TYPE_CODE_VOID))
982     {
983       struct value_print_options opts;
984       int histindex = record_latest_value (val);
985
986       if (histindex >= 0)
987         annotate_value_history_begin (histindex, value_type (val));
988       else
989         annotate_value_begin (value_type (val));
990
991       if (inspect)
992         printf_unfiltered ("\031(gdb-makebuffer \"%s\"  %d '(\"",
993                            exp, histindex);
994       else if (histindex >= 0)
995         printf_filtered ("$%d = ", histindex);
996
997       if (histindex >= 0)
998         annotate_value_history_value ();
999
1000       get_formatted_print_options (&opts, format);
1001       opts.inspect_it = inspect;
1002       opts.raw = fmt.raw;
1003
1004       print_formatted (val, fmt.size, &opts, gdb_stdout);
1005       printf_filtered ("\n");
1006
1007       if (histindex >= 0)
1008         annotate_value_history_end ();
1009       else
1010         annotate_value_end ();
1011
1012       if (inspect)
1013         printf_unfiltered ("\") )\030");
1014     }
1015
1016   if (cleanup)
1017     do_cleanups (old_chain);
1018 }
1019
1020 static void
1021 print_command (char *exp, int from_tty)
1022 {
1023   print_command_1 (exp, 0, 1);
1024 }
1025
1026 /* Same as print, except in epoch, it gets its own window.  */
1027 static void
1028 inspect_command (char *exp, int from_tty)
1029 {
1030   extern int epoch_interface;
1031
1032   print_command_1 (exp, epoch_interface, 1);
1033 }
1034
1035 /* Same as print, except it doesn't print void results.  */
1036 static void
1037 call_command (char *exp, int from_tty)
1038 {
1039   print_command_1 (exp, 0, 0);
1040 }
1041
1042 void
1043 output_command (char *exp, int from_tty)
1044 {
1045   struct expression *expr;
1046   struct cleanup *old_chain;
1047   char format = 0;
1048   struct value *val;
1049   struct format_data fmt;
1050   struct value_print_options opts;
1051
1052   fmt.size = 0;
1053   fmt.raw = 0;
1054
1055   if (exp && *exp == '/')
1056     {
1057       exp++;
1058       fmt = decode_format (&exp, 0, 0);
1059       validate_format (fmt, "output");
1060       format = fmt.format;
1061     }
1062
1063   expr = parse_expression (exp);
1064   old_chain = make_cleanup (free_current_contents, &expr);
1065
1066   val = evaluate_expression (expr);
1067
1068   annotate_value_begin (value_type (val));
1069
1070   get_formatted_print_options (&opts, format);
1071   opts.raw = fmt.raw;
1072   print_formatted (val, fmt.size, &opts, gdb_stdout);
1073
1074   annotate_value_end ();
1075
1076   wrap_here ("");
1077   gdb_flush (gdb_stdout);
1078
1079   do_cleanups (old_chain);
1080 }
1081
1082 static void
1083 set_command (char *exp, int from_tty)
1084 {
1085   struct expression *expr = parse_expression (exp);
1086   struct cleanup *old_chain =
1087     make_cleanup (free_current_contents, &expr);
1088
1089   evaluate_expression (expr);
1090   do_cleanups (old_chain);
1091 }
1092
1093 static void
1094 sym_info (char *arg, int from_tty)
1095 {
1096   struct minimal_symbol *msymbol;
1097   struct objfile *objfile;
1098   struct obj_section *osect;
1099   CORE_ADDR addr, sect_addr;
1100   int matches = 0;
1101   unsigned int offset;
1102
1103   if (!arg)
1104     error_no_arg (_("address"));
1105
1106   addr = parse_and_eval_address (arg);
1107   ALL_OBJSECTIONS (objfile, osect)
1108   {
1109     /* Only process each object file once, even if there's a separate
1110        debug file.  */
1111     if (objfile->separate_debug_objfile_backlink)
1112       continue;
1113
1114     sect_addr = overlay_mapped_address (addr, osect);
1115
1116     if (obj_section_addr (osect) <= sect_addr
1117         && sect_addr < obj_section_endaddr (osect)
1118         && (msymbol = lookup_minimal_symbol_by_pc_section (sect_addr, osect)))
1119       {
1120         const char *obj_name, *mapped, *sec_name, *msym_name;
1121         char *loc_string;
1122         struct cleanup *old_chain;
1123
1124         matches = 1;
1125         offset = sect_addr - SYMBOL_VALUE_ADDRESS (msymbol);
1126         mapped = section_is_mapped (osect) ? _("mapped") : _("unmapped");
1127         sec_name = osect->the_bfd_section->name;
1128         msym_name = SYMBOL_PRINT_NAME (msymbol);
1129
1130         /* Don't print the offset if it is zero.
1131            We assume there's no need to handle i18n of "sym + offset".  */
1132         if (offset)
1133           loc_string = xstrprintf ("%s + %u", msym_name, offset);
1134         else
1135           loc_string = xstrprintf ("%s", msym_name);
1136
1137         /* Use a cleanup to free loc_string in case the user quits
1138            a pagination request inside printf_filtered.  */
1139         old_chain = make_cleanup (xfree, loc_string);
1140
1141         gdb_assert (osect->objfile && osect->objfile->name);
1142         obj_name = osect->objfile->name;
1143
1144         if (MULTI_OBJFILE_P ())
1145           if (pc_in_unmapped_range (addr, osect))
1146             if (section_is_overlay (osect))
1147               printf_filtered (_("%s in load address range of "
1148                                  "%s overlay section %s of %s\n"),
1149                                loc_string, mapped, sec_name, obj_name);
1150             else
1151               printf_filtered (_("%s in load address range of "
1152                                  "section %s of %s\n"),
1153                                loc_string, sec_name, obj_name);
1154           else
1155             if (section_is_overlay (osect))
1156               printf_filtered (_("%s in %s overlay section %s of %s\n"),
1157                                loc_string, mapped, sec_name, obj_name);
1158             else
1159               printf_filtered (_("%s in section %s of %s\n"),
1160                                loc_string, sec_name, obj_name);
1161         else
1162           if (pc_in_unmapped_range (addr, osect))
1163             if (section_is_overlay (osect))
1164               printf_filtered (_("%s in load address range of %s overlay "
1165                                  "section %s\n"),
1166                                loc_string, mapped, sec_name);
1167             else
1168               printf_filtered (_("%s in load address range of section %s\n"),
1169                                loc_string, sec_name);
1170           else
1171             if (section_is_overlay (osect))
1172               printf_filtered (_("%s in %s overlay section %s\n"),
1173                                loc_string, mapped, sec_name);
1174             else
1175               printf_filtered (_("%s in section %s\n"),
1176                                loc_string, sec_name);
1177
1178         do_cleanups (old_chain);
1179       }
1180   }
1181   if (matches == 0)
1182     printf_filtered (_("No symbol matches %s.\n"), arg);
1183 }
1184
1185 static void
1186 address_info (char *exp, int from_tty)
1187 {
1188   struct gdbarch *gdbarch;
1189   int regno;
1190   struct symbol *sym;
1191   struct minimal_symbol *msymbol;
1192   long val;
1193   struct obj_section *section;
1194   CORE_ADDR load_addr, context_pc = 0;
1195   int is_a_field_of_this;       /* C++: lookup_symbol sets this to nonzero
1196                                    if exp is a field of `this'.  */
1197
1198   if (exp == 0)
1199     error (_("Argument required."));
1200
1201   sym = lookup_symbol (exp, get_selected_block (&context_pc), VAR_DOMAIN,
1202                        &is_a_field_of_this);
1203   if (sym == NULL)
1204     {
1205       if (is_a_field_of_this)
1206         {
1207           printf_filtered ("Symbol \"");
1208           fprintf_symbol_filtered (gdb_stdout, exp,
1209                                    current_language->la_language, DMGL_ANSI);
1210           printf_filtered ("\" is a field of the local class variable ");
1211           if (current_language->la_language == language_objc)
1212             printf_filtered ("`self'\n");       /* ObjC equivalent of "this" */
1213           else
1214             printf_filtered ("`this'\n");
1215           return;
1216         }
1217
1218       msymbol = lookup_minimal_symbol (exp, NULL, NULL);
1219
1220       if (msymbol != NULL)
1221         {
1222           gdbarch = get_objfile_arch (msymbol_objfile (msymbol));
1223           load_addr = SYMBOL_VALUE_ADDRESS (msymbol);
1224
1225           printf_filtered ("Symbol \"");
1226           fprintf_symbol_filtered (gdb_stdout, exp,
1227                                    current_language->la_language, DMGL_ANSI);
1228           printf_filtered ("\" is at ");
1229           fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1230           printf_filtered (" in a file compiled without debugging");
1231           section = SYMBOL_OBJ_SECTION (msymbol);
1232           if (section_is_overlay (section))
1233             {
1234               load_addr = overlay_unmapped_address (load_addr, section);
1235               printf_filtered (",\n -- loaded at ");
1236               fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1237               printf_filtered (" in overlay section %s",
1238                                section->the_bfd_section->name);
1239             }
1240           printf_filtered (".\n");
1241         }
1242       else
1243         error (_("No symbol \"%s\" in current context."), exp);
1244       return;
1245     }
1246
1247   printf_filtered ("Symbol \"");
1248   fprintf_symbol_filtered (gdb_stdout, SYMBOL_PRINT_NAME (sym),
1249                            current_language->la_language, DMGL_ANSI);
1250   printf_filtered ("\" is ");
1251   val = SYMBOL_VALUE (sym);
1252   section = SYMBOL_OBJ_SECTION (sym);
1253   gdbarch = get_objfile_arch (SYMBOL_SYMTAB (sym)->objfile);
1254
1255   switch (SYMBOL_CLASS (sym))
1256     {
1257     case LOC_CONST:
1258     case LOC_CONST_BYTES:
1259       printf_filtered ("constant");
1260       break;
1261
1262     case LOC_LABEL:
1263       printf_filtered ("a label at address ");
1264       load_addr = SYMBOL_VALUE_ADDRESS (sym);
1265       fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1266       if (section_is_overlay (section))
1267         {
1268           load_addr = overlay_unmapped_address (load_addr, section);
1269           printf_filtered (",\n -- loaded at ");
1270           fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1271           printf_filtered (" in overlay section %s",
1272                            section->the_bfd_section->name);
1273         }
1274       break;
1275
1276     case LOC_COMPUTED:
1277       /* FIXME: cagney/2004-01-26: It should be possible to
1278          unconditionally call the SYMBOL_COMPUTED_OPS method when available.
1279          Unfortunately DWARF 2 stores the frame-base (instead of the
1280          function) location in a function's symbol.  Oops!  For the
1281          moment enable this when/where applicable.  */
1282       SYMBOL_COMPUTED_OPS (sym)->describe_location (sym, context_pc,
1283                                                     gdb_stdout);
1284       break;
1285
1286     case LOC_REGISTER:
1287       /* GDBARCH is the architecture associated with the objfile the symbol
1288          is defined in; the target architecture may be different, and may
1289          provide additional registers.  However, we do not know the target
1290          architecture at this point.  We assume the objfile architecture
1291          will contain all the standard registers that occur in debug info
1292          in that objfile.  */
1293       regno = SYMBOL_REGISTER_OPS (sym)->register_number (sym, gdbarch);
1294
1295       if (SYMBOL_IS_ARGUMENT (sym))
1296         printf_filtered (_("an argument in register %s"),
1297                          gdbarch_register_name (gdbarch, regno));
1298       else
1299         printf_filtered (_("a variable in register %s"),
1300                          gdbarch_register_name (gdbarch, regno));
1301       break;
1302
1303     case LOC_STATIC:
1304       printf_filtered (_("static storage at address "));
1305       load_addr = SYMBOL_VALUE_ADDRESS (sym);
1306       fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1307       if (section_is_overlay (section))
1308         {
1309           load_addr = overlay_unmapped_address (load_addr, section);
1310           printf_filtered (_(",\n -- loaded at "));
1311           fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1312           printf_filtered (_(" in overlay section %s"),
1313                            section->the_bfd_section->name);
1314         }
1315       break;
1316
1317     case LOC_REGPARM_ADDR:
1318       /* Note comment at LOC_REGISTER.  */
1319       regno = SYMBOL_REGISTER_OPS (sym)->register_number (sym, gdbarch);
1320       printf_filtered (_("address of an argument in register %s"),
1321                        gdbarch_register_name (gdbarch, regno));
1322       break;
1323
1324     case LOC_ARG:
1325       printf_filtered (_("an argument at offset %ld"), val);
1326       break;
1327
1328     case LOC_LOCAL:
1329       printf_filtered (_("a local variable at frame offset %ld"), val);
1330       break;
1331
1332     case LOC_REF_ARG:
1333       printf_filtered (_("a reference argument at offset %ld"), val);
1334       break;
1335
1336     case LOC_TYPEDEF:
1337       printf_filtered (_("a typedef"));
1338       break;
1339
1340     case LOC_BLOCK:
1341       printf_filtered (_("a function at address "));
1342       load_addr = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
1343       fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1344       if (section_is_overlay (section))
1345         {
1346           load_addr = overlay_unmapped_address (load_addr, section);
1347           printf_filtered (_(",\n -- loaded at "));
1348           fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1349           printf_filtered (_(" in overlay section %s"),
1350                            section->the_bfd_section->name);
1351         }
1352       break;
1353
1354     case LOC_UNRESOLVED:
1355       {
1356         struct minimal_symbol *msym;
1357
1358         msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (sym), NULL, NULL);
1359         if (msym == NULL)
1360           printf_filtered ("unresolved");
1361         else
1362           {
1363             section = SYMBOL_OBJ_SECTION (msym);
1364             load_addr = SYMBOL_VALUE_ADDRESS (msym);
1365
1366             if (section
1367                 && (section->the_bfd_section->flags & SEC_THREAD_LOCAL) != 0)
1368               printf_filtered (_("a thread-local variable at offset %s "
1369                                  "in the thread-local storage for `%s'"),
1370                                paddress (gdbarch, load_addr),
1371                                section->objfile->name);
1372             else
1373               {
1374                 printf_filtered (_("static storage at address "));
1375                 fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1376                 if (section_is_overlay (section))
1377                   {
1378                     load_addr = overlay_unmapped_address (load_addr, section);
1379                     printf_filtered (_(",\n -- loaded at "));
1380                     fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1381                     printf_filtered (_(" in overlay section %s"),
1382                                      section->the_bfd_section->name);
1383                   }
1384               }
1385           }
1386       }
1387       break;
1388
1389     case LOC_OPTIMIZED_OUT:
1390       printf_filtered (_("optimized out"));
1391       break;
1392
1393     default:
1394       printf_filtered (_("of unknown (botched) type"));
1395       break;
1396     }
1397   printf_filtered (".\n");
1398 }
1399 \f
1400
1401 static void
1402 x_command (char *exp, int from_tty)
1403 {
1404   struct expression *expr;
1405   struct format_data fmt;
1406   struct cleanup *old_chain;
1407   struct value *val;
1408
1409   fmt.format = last_format ? last_format : 'x';
1410   fmt.size = last_size;
1411   fmt.count = 1;
1412   fmt.raw = 0;
1413
1414   if (exp && *exp == '/')
1415     {
1416       exp++;
1417       fmt = decode_format (&exp, last_format, last_size);
1418     }
1419
1420   /* If we have an expression, evaluate it and use it as the address.  */
1421
1422   if (exp != 0 && *exp != 0)
1423     {
1424       expr = parse_expression (exp);
1425       /* Cause expression not to be there any more if this command is
1426          repeated with Newline.  But don't clobber a user-defined
1427          command's definition.  */
1428       if (from_tty)
1429         *exp = 0;
1430       old_chain = make_cleanup (free_current_contents, &expr);
1431       val = evaluate_expression (expr);
1432       if (TYPE_CODE (value_type (val)) == TYPE_CODE_REF)
1433         val = coerce_ref (val);
1434       /* In rvalue contexts, such as this, functions are coerced into
1435          pointers to functions.  This makes "x/i main" work.  */
1436       if (/* last_format == 'i'  && */ 
1437           TYPE_CODE (value_type (val)) == TYPE_CODE_FUNC
1438            && VALUE_LVAL (val) == lval_memory)
1439         next_address = value_address (val);
1440       else
1441         next_address = value_as_address (val);
1442
1443       next_gdbarch = expr->gdbarch;
1444       do_cleanups (old_chain);
1445     }
1446
1447   if (!next_gdbarch)
1448     error_no_arg (_("starting display address"));
1449
1450   do_examine (fmt, next_gdbarch, next_address);
1451
1452   /* If the examine succeeds, we remember its size and format for next
1453      time.  Set last_size to 'b' for strings.  */
1454   if (fmt.format == 's')
1455     last_size = 'b';
1456   else
1457     last_size = fmt.size;
1458   last_format = fmt.format;
1459
1460   /* Set a couple of internal variables if appropriate.  */
1461   if (last_examine_value)
1462     {
1463       /* Make last address examined available to the user as $_.  Use
1464          the correct pointer type.  */
1465       struct type *pointer_type
1466         = lookup_pointer_type (value_type (last_examine_value));
1467       set_internalvar (lookup_internalvar ("_"),
1468                        value_from_pointer (pointer_type,
1469                                            last_examine_address));
1470
1471       /* Make contents of last address examined available to the user
1472          as $__.  If the last value has not been fetched from memory
1473          then don't fetch it now; instead mark it by voiding the $__
1474          variable.  */
1475       if (value_lazy (last_examine_value))
1476         clear_internalvar (lookup_internalvar ("__"));
1477       else
1478         set_internalvar (lookup_internalvar ("__"), last_examine_value);
1479     }
1480 }
1481 \f
1482
1483 /* Add an expression to the auto-display chain.
1484    Specify the expression.  */
1485
1486 static void
1487 display_command (char *exp, int from_tty)
1488 {
1489   struct format_data fmt;
1490   struct expression *expr;
1491   struct display *new;
1492   int display_it = 1;
1493
1494 #if defined(TUI)
1495   /* NOTE: cagney/2003-02-13 The `tui_active' was previously
1496      `tui_version'.  */
1497   if (tui_active && exp != NULL && *exp == '$')
1498     display_it = (tui_set_layout_for_display_command (exp) == TUI_FAILURE);
1499 #endif
1500
1501   if (display_it)
1502     {
1503       if (exp == 0)
1504         {
1505           do_displays ();
1506           return;
1507         }
1508
1509       if (*exp == '/')
1510         {
1511           exp++;
1512           fmt = decode_format (&exp, 0, 0);
1513           if (fmt.size && fmt.format == 0)
1514             fmt.format = 'x';
1515           if (fmt.format == 'i' || fmt.format == 's')
1516             fmt.size = 'b';
1517         }
1518       else
1519         {
1520           fmt.format = 0;
1521           fmt.size = 0;
1522           fmt.count = 0;
1523           fmt.raw = 0;
1524         }
1525
1526       innermost_block = NULL;
1527       expr = parse_expression (exp);
1528
1529       new = (struct display *) xmalloc (sizeof (struct display));
1530
1531       new->exp_string = xstrdup (exp);
1532       new->exp = expr;
1533       new->block = innermost_block;
1534       new->pspace = current_program_space;
1535       new->next = display_chain;
1536       new->number = ++display_number;
1537       new->format = fmt;
1538       new->enabled_p = 1;
1539       display_chain = new;
1540
1541       if (from_tty && target_has_execution)
1542         do_one_display (new);
1543
1544       dont_repeat ();
1545     }
1546 }
1547
1548 static void
1549 free_display (struct display *d)
1550 {
1551   xfree (d->exp_string);
1552   xfree (d->exp);
1553   xfree (d);
1554 }
1555
1556 /* Clear out the display_chain.  Done when new symtabs are loaded,
1557    since this invalidates the types stored in many expressions.  */
1558
1559 void
1560 clear_displays (void)
1561 {
1562   struct display *d;
1563
1564   while ((d = display_chain) != NULL)
1565     {
1566       display_chain = d->next;
1567       free_display (d);
1568     }
1569 }
1570
1571 /* Delete the auto-display DISPLAY.  */
1572
1573 static void
1574 delete_display (struct display *display)
1575 {
1576   struct display *d;
1577
1578   gdb_assert (display != NULL);
1579
1580   if (display_chain == display)
1581     display_chain = display->next;
1582
1583   ALL_DISPLAYS (d)
1584     if (d->next == display)
1585       {
1586         d->next = display->next;
1587         break;
1588       }
1589
1590   free_display (display);
1591 }
1592
1593 /* Call FUNCTION on each of the displays whose numbers are given in
1594    ARGS.  DATA is passed unmodified to FUNCTION.  */
1595
1596 static void
1597 map_display_numbers (char *args,
1598                      void (*function) (struct display *,
1599                                        void *),
1600                      void *data)
1601 {
1602   struct get_number_or_range_state state;
1603   struct display *b, *tmp;
1604   int num;
1605
1606   if (args == NULL)
1607     error_no_arg (_("one or more display numbers"));
1608
1609   init_number_or_range (&state, args);
1610
1611   while (!state.finished)
1612     {
1613       char *p = state.string;
1614
1615       num = get_number_or_range (&state);
1616       if (num == 0)
1617         warning (_("bad display number at or near '%s'"), p);
1618       else
1619         {
1620           struct display *d, *tmp;
1621
1622           ALL_DISPLAYS_SAFE (d, tmp)
1623             if (d->number == num)
1624               break;
1625           if (d == NULL)
1626             printf_unfiltered (_("No display number %d.\n"), num);
1627           else
1628             function (d, data);
1629         }
1630     }
1631 }
1632
1633 /* Callback for map_display_numbers, that deletes a display.  */
1634
1635 static void
1636 do_delete_display (struct display *d, void *data)
1637 {
1638   delete_display (d);
1639 }
1640
1641 /* "undisplay" command.  */
1642
1643 static void
1644 undisplay_command (char *args, int from_tty)
1645 {
1646   int num;
1647   struct get_number_or_range_state state;
1648
1649   if (args == NULL)
1650     {
1651       if (query (_("Delete all auto-display expressions? ")))
1652         clear_displays ();
1653       dont_repeat ();
1654       return;
1655     }
1656
1657   map_display_numbers (args, do_delete_display, NULL);
1658   dont_repeat ();
1659 }
1660
1661 /* Display a single auto-display.  
1662    Do nothing if the display cannot be printed in the current context,
1663    or if the display is disabled.  */
1664
1665 static void
1666 do_one_display (struct display *d)
1667 {
1668   int within_current_scope;
1669
1670   if (d->enabled_p == 0)
1671     return;
1672
1673   /* The expression carries the architecture that was used at parse time.
1674      This is a problem if the expression depends on architecture features
1675      (e.g. register numbers), and the current architecture is now different.
1676      For example, a display statement like "display/i $pc" is expected to
1677      display the PC register of the current architecture, not the arch at
1678      the time the display command was given.  Therefore, we re-parse the
1679      expression if the current architecture has changed.  */
1680   if (d->exp != NULL && d->exp->gdbarch != get_current_arch ())
1681     {
1682       xfree (d->exp);
1683       d->exp = NULL;
1684       d->block = NULL;
1685     }
1686
1687   if (d->exp == NULL)
1688     {
1689       volatile struct gdb_exception ex;
1690
1691       TRY_CATCH (ex, RETURN_MASK_ALL)
1692         {
1693           innermost_block = NULL;
1694           d->exp = parse_expression (d->exp_string);
1695           d->block = innermost_block;
1696         }
1697       if (ex.reason < 0)
1698         {
1699           /* Can't re-parse the expression.  Disable this display item.  */
1700           d->enabled_p = 0;
1701           warning (_("Unable to display \"%s\": %s"),
1702                    d->exp_string, ex.message);
1703           return;
1704         }
1705     }
1706
1707   if (d->block)
1708     {
1709       if (d->pspace == current_program_space)
1710         within_current_scope = contained_in (get_selected_block (0), d->block);
1711       else
1712         within_current_scope = 0;
1713     }
1714   else
1715     within_current_scope = 1;
1716   if (!within_current_scope)
1717     return;
1718
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       CORE_ADDR addr;
1728       struct value *val;
1729
1730       annotate_display_format ();
1731
1732       printf_filtered ("x/");
1733       if (d->format.count != 1)
1734         printf_filtered ("%d", d->format.count);
1735       printf_filtered ("%c", d->format.format);
1736       if (d->format.format != 'i' && d->format.format != 's')
1737         printf_filtered ("%c", d->format.size);
1738       printf_filtered (" ");
1739
1740       annotate_display_expression ();
1741
1742       puts_filtered (d->exp_string);
1743       annotate_display_expression_end ();
1744
1745       if (d->format.count != 1 || d->format.format == 'i')
1746         printf_filtered ("\n");
1747       else
1748         printf_filtered ("  ");
1749
1750       val = evaluate_expression (d->exp);
1751       addr = value_as_address (val);
1752       if (d->format.format == 'i')
1753         addr = gdbarch_addr_bits_remove (d->exp->gdbarch, addr);
1754
1755       annotate_display_value ();
1756
1757       do_examine (d->format, d->exp->gdbarch, addr);
1758     }
1759   else
1760     {
1761       struct value_print_options opts;
1762
1763       annotate_display_format ();
1764
1765       if (d->format.format)
1766         printf_filtered ("/%c ", d->format.format);
1767
1768       annotate_display_expression ();
1769
1770       puts_filtered (d->exp_string);
1771       annotate_display_expression_end ();
1772
1773       printf_filtered (" = ");
1774
1775       annotate_display_expression ();
1776
1777       get_formatted_print_options (&opts, d->format.format);
1778       opts.raw = d->format.raw;
1779       print_formatted (evaluate_expression (d->exp),
1780                        d->format.size, &opts, gdb_stdout);
1781       printf_filtered ("\n");
1782     }
1783
1784   annotate_display_end ();
1785
1786   gdb_flush (gdb_stdout);
1787   current_display_number = -1;
1788 }
1789
1790 /* Display all of the values on the auto-display chain which can be
1791    evaluated in the current scope.  */
1792
1793 void
1794 do_displays (void)
1795 {
1796   struct display *d;
1797
1798   for (d = display_chain; d; d = d->next)
1799     do_one_display (d);
1800 }
1801
1802 /* Delete the auto-display which we were in the process of displaying.
1803    This is done when there is an error or a signal.  */
1804
1805 void
1806 disable_display (int num)
1807 {
1808   struct display *d;
1809
1810   for (d = display_chain; d; d = d->next)
1811     if (d->number == num)
1812       {
1813         d->enabled_p = 0;
1814         return;
1815       }
1816   printf_unfiltered (_("No display number %d.\n"), num);
1817 }
1818
1819 void
1820 disable_current_display (void)
1821 {
1822   if (current_display_number >= 0)
1823     {
1824       disable_display (current_display_number);
1825       fprintf_unfiltered (gdb_stderr,
1826                           _("Disabling display %d to "
1827                             "avoid infinite recursion.\n"),
1828                           current_display_number);
1829     }
1830   current_display_number = -1;
1831 }
1832
1833 static void
1834 display_info (char *ignore, int from_tty)
1835 {
1836   struct display *d;
1837
1838   if (!display_chain)
1839     printf_unfiltered (_("There are no auto-display expressions now.\n"));
1840   else
1841     printf_filtered (_("Auto-display expressions now in effect:\n\
1842 Num Enb Expression\n"));
1843
1844   for (d = display_chain; d; d = d->next)
1845     {
1846       printf_filtered ("%d:   %c  ", d->number, "ny"[(int) d->enabled_p]);
1847       if (d->format.size)
1848         printf_filtered ("/%d%c%c ", d->format.count, d->format.size,
1849                          d->format.format);
1850       else if (d->format.format)
1851         printf_filtered ("/%c ", d->format.format);
1852       puts_filtered (d->exp_string);
1853       if (d->block && !contained_in (get_selected_block (0), d->block))
1854         printf_filtered (_(" (cannot be evaluated in the current context)"));
1855       printf_filtered ("\n");
1856       gdb_flush (gdb_stdout);
1857     }
1858 }
1859
1860 /* Callback fo map_display_numbers, that enables or disables the
1861    passed in display D.  */
1862
1863 static void
1864 do_enable_disable_display (struct display *d, void *data)
1865 {
1866   d->enabled_p = *(int *) data;
1867 }
1868
1869 /* Implamentation of both the "disable display" and "enable display"
1870    commands.  ENABLE decides what to do.  */
1871
1872 static void
1873 enable_disable_display_command (char *args, int from_tty, int enable)
1874 {
1875   if (args == NULL)
1876     {
1877       struct display *d;
1878
1879       ALL_DISPLAYS (d)
1880         d->enabled_p = enable;
1881       return;
1882     }
1883
1884   map_display_numbers (args, do_enable_disable_display, &enable);
1885 }
1886
1887 /* The "enable display" command.  */
1888
1889 static void
1890 enable_display_command (char *args, int from_tty)
1891 {
1892   enable_disable_display_command (args, from_tty, 1);
1893 }
1894
1895 /* The "disable display" command.  */
1896
1897 static void
1898 disable_display_command (char *args, int from_tty)
1899 {
1900   enable_disable_display_command (args, from_tty, 0);
1901 }
1902
1903 /* display_chain items point to blocks and expressions.  Some expressions in
1904    turn may point to symbols.
1905    Both symbols and blocks are obstack_alloc'd on objfile_stack, and are
1906    obstack_free'd when a shared library is unloaded.
1907    Clear pointers that are about to become dangling.
1908    Both .exp and .block fields will be restored next time we need to display
1909    an item by re-parsing .exp_string field in the new execution context.  */
1910
1911 static void
1912 clear_dangling_display_expressions (struct so_list *solib)
1913 {
1914   struct objfile *objfile = solib->objfile;
1915   struct display *d;
1916
1917   /* With no symbol file we cannot have a block or expression from it.  */
1918   if (objfile == NULL)
1919     return;
1920   if (objfile->separate_debug_objfile_backlink)
1921     objfile = objfile->separate_debug_objfile_backlink;
1922   gdb_assert (objfile->pspace == solib->pspace);
1923
1924   for (d = display_chain; d != NULL; d = d->next)
1925     {
1926       if (d->pspace != solib->pspace)
1927         continue;
1928
1929       if (lookup_objfile_from_block (d->block) == objfile
1930           || (d->exp && exp_uses_objfile (d->exp, objfile)))
1931       {
1932         xfree (d->exp);
1933         d->exp = NULL;
1934         d->block = NULL;
1935       }
1936     }
1937 }
1938 \f
1939
1940 /* Print the value in stack frame FRAME of a variable specified by a
1941    struct symbol.  NAME is the name to print; if NULL then VAR's print
1942    name will be used.  STREAM is the ui_file on which to print the
1943    value.  INDENT specifies the number of indent levels to print
1944    before printing the variable name.  */
1945
1946 void
1947 print_variable_and_value (const char *name, struct symbol *var,
1948                           struct frame_info *frame,
1949                           struct ui_file *stream, int indent)
1950 {
1951   volatile struct gdb_exception except;
1952
1953   if (!name)
1954     name = SYMBOL_PRINT_NAME (var);
1955
1956   fprintf_filtered (stream, "%s%s = ", n_spaces (2 * indent), name);
1957   TRY_CATCH (except, RETURN_MASK_ERROR)
1958     {
1959       struct value *val;
1960       struct value_print_options opts;
1961
1962       val = read_var_value (var, frame);
1963       get_user_print_options (&opts);
1964       common_val_print (val, stream, indent, &opts, current_language);
1965     }
1966   if (except.reason < 0)
1967     fprintf_filtered(stream, "<error reading variable %s (%s)>", name,
1968                      except.message);
1969   fprintf_filtered (stream, "\n");
1970 }
1971
1972 /* printf "printf format string" ARG to STREAM.  */
1973
1974 static void
1975 ui_printf (char *arg, struct ui_file *stream)
1976 {
1977   char *f = NULL;
1978   char *s = arg;
1979   char *string = NULL;
1980   struct value **val_args;
1981   char *substrings;
1982   char *current_substring;
1983   int nargs = 0;
1984   int allocated_args = 20;
1985   struct cleanup *old_cleanups;
1986
1987   val_args = xmalloc (allocated_args * sizeof (struct value *));
1988   old_cleanups = make_cleanup (free_current_contents, &val_args);
1989
1990   if (s == 0)
1991     error_no_arg (_("format-control string and values to print"));
1992
1993   s = skip_spaces (s);
1994
1995   /* A format string should follow, enveloped in double quotes.  */
1996   if (*s++ != '"')
1997     error (_("Bad format string, missing '\"'."));
1998
1999   /* Parse the format-control string and copy it into the string STRING,
2000      processing some kinds of escape sequence.  */
2001
2002   f = string = (char *) alloca (strlen (s) + 1);
2003
2004   while (*s != '"')
2005     {
2006       int c = *s++;
2007       switch (c)
2008         {
2009         case '\0':
2010           error (_("Bad format string, non-terminated '\"'."));
2011
2012         case '\\':
2013           switch (c = *s++)
2014             {
2015             case '\\':
2016               *f++ = '\\';
2017               break;
2018             case 'a':
2019               *f++ = '\a';
2020               break;
2021             case 'b':
2022               *f++ = '\b';
2023               break;
2024             case 'f':
2025               *f++ = '\f';
2026               break;
2027             case 'n':
2028               *f++ = '\n';
2029               break;
2030             case 'r':
2031               *f++ = '\r';
2032               break;
2033             case 't':
2034               *f++ = '\t';
2035               break;
2036             case 'v':
2037               *f++ = '\v';
2038               break;
2039             case '"':
2040               *f++ = '"';
2041               break;
2042             default:
2043               /* ??? TODO: handle other escape sequences.  */
2044               error (_("Unrecognized escape character \\%c in format string."),
2045                      c);
2046             }
2047           break;
2048
2049         default:
2050           *f++ = c;
2051         }
2052     }
2053
2054   /* Skip over " and following space and comma.  */
2055   s++;
2056   *f++ = '\0';
2057   s = skip_spaces (s);
2058
2059   if (*s != ',' && *s != 0)
2060     error (_("Invalid argument syntax"));
2061
2062   if (*s == ',')
2063     s++;
2064   s = skip_spaces (s);
2065
2066   /* Need extra space for the '\0's.  Doubling the size is sufficient.  */
2067   substrings = alloca (strlen (string) * 2);
2068   current_substring = substrings;
2069
2070   {
2071     /* Now scan the string for %-specs and see what kinds of args they want.
2072        argclass[I] classifies the %-specs so we can give printf_filtered
2073        something of the right size.  */
2074
2075     enum argclass
2076       {
2077         int_arg, long_arg, long_long_arg, ptr_arg,
2078         string_arg, wide_string_arg, wide_char_arg,
2079         double_arg, long_double_arg, decfloat_arg
2080       };
2081     enum argclass *argclass;
2082     enum argclass this_argclass;
2083     char *last_arg;
2084     int nargs_wanted;
2085     int i;
2086
2087     argclass = (enum argclass *) alloca (strlen (s) * sizeof *argclass);
2088     nargs_wanted = 0;
2089     f = string;
2090     last_arg = string;
2091     while (*f)
2092       if (*f++ == '%')
2093         {
2094           int seen_hash = 0, seen_zero = 0, lcount = 0, seen_prec = 0;
2095           int seen_space = 0, seen_plus = 0;
2096           int seen_big_l = 0, seen_h = 0, seen_big_h = 0;
2097           int seen_big_d = 0, seen_double_big_d = 0;
2098           int bad = 0;
2099
2100           /* Check the validity of the format specifier, and work
2101              out what argument it expects.  We only accept C89
2102              format strings, with the exception of long long (which
2103              we autoconf for).  */
2104
2105           /* Skip over "%%".  */
2106           if (*f == '%')
2107             {
2108               f++;
2109               continue;
2110             }
2111
2112           /* The first part of a format specifier is a set of flag
2113              characters.  */
2114           while (strchr ("0-+ #", *f))
2115             {
2116               if (*f == '#')
2117                 seen_hash = 1;
2118               else if (*f == '0')
2119                 seen_zero = 1;
2120               else if (*f == ' ')
2121                 seen_space = 1;
2122               else if (*f == '+')
2123                 seen_plus = 1;
2124               f++;
2125             }
2126
2127           /* The next part of a format specifier is a width.  */
2128           while (strchr ("0123456789", *f))
2129             f++;
2130
2131           /* The next part of a format specifier is a precision.  */
2132           if (*f == '.')
2133             {
2134               seen_prec = 1;
2135               f++;
2136               while (strchr ("0123456789", *f))
2137                 f++;
2138             }
2139
2140           /* The next part of a format specifier is a length modifier.  */
2141           if (*f == 'h')
2142             {
2143               seen_h = 1;
2144               f++;
2145             }
2146           else if (*f == 'l')
2147             {
2148               f++;
2149               lcount++;
2150               if (*f == 'l')
2151                 {
2152                   f++;
2153                   lcount++;
2154                 }
2155             }
2156           else if (*f == 'L')
2157             {
2158               seen_big_l = 1;
2159               f++;
2160             }
2161           /* Decimal32 modifier.  */
2162           else if (*f == 'H')
2163             {
2164               seen_big_h = 1;
2165               f++;
2166             }
2167           /* Decimal64 and Decimal128 modifiers.  */
2168           else if (*f == 'D')
2169             {
2170               f++;
2171
2172               /* Check for a Decimal128.  */
2173               if (*f == 'D')
2174                 {
2175                   f++;
2176                   seen_double_big_d = 1;
2177                 }
2178               else
2179                 seen_big_d = 1;
2180             }
2181
2182           switch (*f)
2183             {
2184             case 'u':
2185               if (seen_hash)
2186                 bad = 1;
2187               /* FALLTHROUGH */
2188
2189             case 'o':
2190             case 'x':
2191             case 'X':
2192               if (seen_space || seen_plus)
2193                 bad = 1;
2194               /* FALLTHROUGH */
2195
2196             case 'd':
2197             case 'i':
2198               if (lcount == 0)
2199                 this_argclass = int_arg;
2200               else if (lcount == 1)
2201                 this_argclass = long_arg;
2202               else
2203                 this_argclass = long_long_arg;
2204
2205               if (seen_big_l)
2206                 bad = 1;
2207               break;
2208
2209             case 'c':
2210               this_argclass = lcount == 0 ? int_arg : wide_char_arg;
2211               if (lcount > 1 || seen_h || seen_big_l)
2212                 bad = 1;
2213               if (seen_prec || seen_zero || seen_space || seen_plus)
2214                 bad = 1;
2215               break;
2216
2217             case 'p':
2218               this_argclass = ptr_arg;
2219               if (lcount || seen_h || seen_big_l)
2220                 bad = 1;
2221               if (seen_prec || seen_zero || seen_space || seen_plus)
2222                 bad = 1;
2223               break;
2224
2225             case 's':
2226               this_argclass = lcount == 0 ? string_arg : wide_string_arg;
2227               if (lcount > 1 || seen_h || seen_big_l)
2228                 bad = 1;
2229               if (seen_zero || seen_space || seen_plus)
2230                 bad = 1;
2231               break;
2232
2233             case 'e':
2234             case 'f':
2235             case 'g':
2236             case 'E':
2237             case 'G':
2238               if (seen_big_h || seen_big_d || seen_double_big_d)
2239                 this_argclass = decfloat_arg;
2240               else if (seen_big_l)
2241                 this_argclass = long_double_arg;
2242               else
2243                 this_argclass = double_arg;
2244
2245               if (lcount || seen_h)
2246                 bad = 1;
2247               break;
2248
2249             case '*':
2250               error (_("`*' not supported for precision or width in printf"));
2251
2252             case 'n':
2253               error (_("Format specifier `n' not supported in printf"));
2254
2255             case '\0':
2256               error (_("Incomplete format specifier at end of format string"));
2257
2258             default:
2259               error (_("Unrecognized format specifier '%c' in printf"), *f);
2260             }
2261
2262           if (bad)
2263             error (_("Inappropriate modifiers to "
2264                      "format specifier '%c' in printf"),
2265                    *f);
2266
2267           f++;
2268
2269           if (lcount > 1 && USE_PRINTF_I64)
2270             {
2271               /* Windows' printf does support long long, but not the usual way.
2272                  Convert %lld to %I64d.  */
2273               int length_before_ll = f - last_arg - 1 - lcount;
2274
2275               strncpy (current_substring, last_arg, length_before_ll);
2276               strcpy (current_substring + length_before_ll, "I64");
2277               current_substring[length_before_ll + 3] =
2278                 last_arg[length_before_ll + lcount];
2279               current_substring += length_before_ll + 4;
2280             }
2281           else if (this_argclass == wide_string_arg
2282                    || this_argclass == wide_char_arg)
2283             {
2284               /* Convert %ls or %lc to %s.  */
2285               int length_before_ls = f - last_arg - 2;
2286
2287               strncpy (current_substring, last_arg, length_before_ls);
2288               strcpy (current_substring + length_before_ls, "s");
2289               current_substring += length_before_ls + 2;
2290             }
2291           else
2292             {
2293               strncpy (current_substring, last_arg, f - last_arg);
2294               current_substring += f - last_arg;
2295             }
2296           *current_substring++ = '\0';
2297           last_arg = f;
2298           argclass[nargs_wanted++] = this_argclass;
2299         }
2300
2301     /* Now, parse all arguments and evaluate them.
2302        Store the VALUEs in VAL_ARGS.  */
2303
2304     while (*s != '\0')
2305       {
2306         char *s1;
2307
2308         if (nargs == allocated_args)
2309           val_args = (struct value **) xrealloc ((char *) val_args,
2310                                                  (allocated_args *= 2)
2311                                                  * sizeof (struct value *));
2312         s1 = s;
2313         val_args[nargs] = parse_to_comma_and_eval (&s1);
2314
2315         nargs++;
2316         s = s1;
2317         if (*s == ',')
2318           s++;
2319       }
2320
2321     if (nargs != nargs_wanted)
2322       error (_("Wrong number of arguments for specified format-string"));
2323
2324     /* Now actually print them.  */
2325     current_substring = substrings;
2326     for (i = 0; i < nargs; i++)
2327       {
2328         switch (argclass[i])
2329           {
2330           case string_arg:
2331             {
2332               gdb_byte *str;
2333               CORE_ADDR tem;
2334               int j;
2335
2336               tem = value_as_address (val_args[i]);
2337
2338               /* This is a %s argument.  Find the length of the string.  */
2339               for (j = 0;; j++)
2340                 {
2341                   gdb_byte c;
2342
2343                   QUIT;
2344                   read_memory (tem + j, &c, 1);
2345                   if (c == 0)
2346                     break;
2347                 }
2348
2349               /* Copy the string contents into a string inside GDB.  */
2350               str = (gdb_byte *) alloca (j + 1);
2351               if (j != 0)
2352                 read_memory (tem, str, j);
2353               str[j] = 0;
2354
2355               fprintf_filtered (stream, current_substring, (char *) str);
2356             }
2357             break;
2358           case wide_string_arg:
2359             {
2360               gdb_byte *str;
2361               CORE_ADDR tem;
2362               int j;
2363               struct gdbarch *gdbarch
2364                 = get_type_arch (value_type (val_args[i]));
2365               enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
2366               struct type *wctype = lookup_typename (current_language, gdbarch,
2367                                                      "wchar_t", NULL, 0);
2368               int wcwidth = TYPE_LENGTH (wctype);
2369               gdb_byte *buf = alloca (wcwidth);
2370               struct obstack output;
2371               struct cleanup *inner_cleanup;
2372
2373               tem = value_as_address (val_args[i]);
2374
2375               /* This is a %s argument.  Find the length of the string.  */
2376               for (j = 0;; j += wcwidth)
2377                 {
2378                   QUIT;
2379                   read_memory (tem + j, buf, wcwidth);
2380                   if (extract_unsigned_integer (buf, wcwidth, byte_order) == 0)
2381                     break;
2382                 }
2383
2384               /* Copy the string contents into a string inside GDB.  */
2385               str = (gdb_byte *) alloca (j + wcwidth);
2386               if (j != 0)
2387                 read_memory (tem, str, j);
2388               memset (&str[j], 0, wcwidth);
2389
2390               obstack_init (&output);
2391               inner_cleanup = make_cleanup_obstack_free (&output);
2392
2393               convert_between_encodings (target_wide_charset (gdbarch),
2394                                          host_charset (),
2395                                          str, j, wcwidth,
2396                                          &output, translit_char);
2397               obstack_grow_str0 (&output, "");
2398
2399               fprintf_filtered (stream, current_substring,
2400                                 obstack_base (&output));
2401               do_cleanups (inner_cleanup);
2402             }
2403             break;
2404           case wide_char_arg:
2405             {
2406               struct gdbarch *gdbarch
2407                 = get_type_arch (value_type (val_args[i]));
2408               struct type *wctype = lookup_typename (current_language, gdbarch,
2409                                                      "wchar_t", NULL, 0);
2410               struct type *valtype;
2411               struct obstack output;
2412               struct cleanup *inner_cleanup;
2413               const gdb_byte *bytes;
2414
2415               valtype = value_type (val_args[i]);
2416               if (TYPE_LENGTH (valtype) != TYPE_LENGTH (wctype)
2417                   || TYPE_CODE (valtype) != TYPE_CODE_INT)
2418                 error (_("expected wchar_t argument for %%lc"));
2419
2420               bytes = value_contents (val_args[i]);
2421
2422               obstack_init (&output);
2423               inner_cleanup = make_cleanup_obstack_free (&output);
2424
2425               convert_between_encodings (target_wide_charset (gdbarch),
2426                                          host_charset (),
2427                                          bytes, TYPE_LENGTH (valtype),
2428                                          TYPE_LENGTH (valtype),
2429                                          &output, translit_char);
2430               obstack_grow_str0 (&output, "");
2431
2432               fprintf_filtered (stream, current_substring,
2433                                 obstack_base (&output));
2434               do_cleanups (inner_cleanup);
2435             }
2436             break;
2437           case double_arg:
2438             {
2439               struct type *type = value_type (val_args[i]);
2440               DOUBLEST val;
2441               int inv;
2442
2443               /* If format string wants a float, unchecked-convert the value
2444                  to floating point of the same size.  */
2445               type = float_type_from_length (type);
2446               val = unpack_double (type, value_contents (val_args[i]), &inv);
2447               if (inv)
2448                 error (_("Invalid floating value found in program."));
2449
2450               fprintf_filtered (stream, current_substring, (double) val);
2451               break;
2452             }
2453           case long_double_arg:
2454 #ifdef HAVE_LONG_DOUBLE
2455             {
2456               struct type *type = value_type (val_args[i]);
2457               DOUBLEST val;
2458               int inv;
2459
2460               /* If format string wants a float, unchecked-convert the value
2461                  to floating point of the same size.  */
2462               type = float_type_from_length (type);
2463               val = unpack_double (type, value_contents (val_args[i]), &inv);
2464               if (inv)
2465                 error (_("Invalid floating value found in program."));
2466
2467               fprintf_filtered (stream, current_substring,
2468                                 (long double) val);
2469               break;
2470             }
2471 #else
2472             error (_("long double not supported in printf"));
2473 #endif
2474           case long_long_arg:
2475 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
2476             {
2477               long long val = value_as_long (val_args[i]);
2478
2479               fprintf_filtered (stream, current_substring, val);
2480               break;
2481             }
2482 #else
2483             error (_("long long not supported in printf"));
2484 #endif
2485           case int_arg:
2486             {
2487               int val = value_as_long (val_args[i]);
2488
2489               fprintf_filtered (stream, current_substring, val);
2490               break;
2491             }
2492           case long_arg:
2493             {
2494               long val = value_as_long (val_args[i]);
2495
2496               fprintf_filtered (stream, current_substring, val);
2497               break;
2498             }
2499
2500           /* Handles decimal floating values.  */
2501         case decfloat_arg:
2502             {
2503               const gdb_byte *param_ptr = value_contents (val_args[i]);
2504
2505 #if defined (PRINTF_HAS_DECFLOAT)
2506               /* If we have native support for Decimal floating
2507                  printing, handle it here.  */
2508               fprintf_filtered (stream, current_substring, param_ptr);
2509 #else
2510
2511               /* As a workaround until vasprintf has native support for DFP
2512                we convert the DFP values to string and print them using
2513                the %s format specifier.  */
2514
2515               char *eos, *sos;
2516               int nnull_chars = 0;
2517
2518               /* Parameter data.  */
2519               struct type *param_type = value_type (val_args[i]);
2520               unsigned int param_len = TYPE_LENGTH (param_type);
2521               struct gdbarch *gdbarch = get_type_arch (param_type);
2522               enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
2523
2524               /* DFP output data.  */
2525               struct value *dfp_value = NULL;
2526               gdb_byte *dfp_ptr;
2527               int dfp_len = 16;
2528               gdb_byte dec[16];
2529               struct type *dfp_type = NULL;
2530               char decstr[MAX_DECIMAL_STRING];
2531
2532               /* Points to the end of the string so that we can go back
2533                  and check for DFP length modifiers.  */
2534               eos = current_substring + strlen (current_substring);
2535
2536               /* Look for the float/double format specifier.  */
2537               while (*eos != 'f' && *eos != 'e' && *eos != 'E'
2538                      && *eos != 'g' && *eos != 'G')
2539                   eos--;
2540
2541               sos = eos;
2542
2543               /* Search for the '%' char and extract the size and type of
2544                  the output decimal value based on its modifiers
2545                  (%Hf, %Df, %DDf).  */
2546               while (*--sos != '%')
2547                 {
2548                   if (*sos == 'H')
2549                     {
2550                       dfp_len = 4;
2551                       dfp_type = builtin_type (gdbarch)->builtin_decfloat;
2552                     }
2553                   else if (*sos == 'D' && *(sos - 1) == 'D')
2554                     {
2555                       dfp_len = 16;
2556                       dfp_type = builtin_type (gdbarch)->builtin_declong;
2557                       sos--;
2558                     }
2559                   else
2560                     {
2561                       dfp_len = 8;
2562                       dfp_type = builtin_type (gdbarch)->builtin_decdouble;
2563                     }
2564                 }
2565
2566               /* Replace %Hf, %Df and %DDf with %s's.  */
2567               *++sos = 's';
2568
2569               /* Go through the whole format string and pull the correct
2570                  number of chars back to compensate for the change in the
2571                  format specifier.  */
2572               while (nnull_chars < nargs - i)
2573                 {
2574                   if (*eos == '\0')
2575                     nnull_chars++;
2576
2577                   *++sos = *++eos;
2578                 }
2579
2580               /* Conversion between different DFP types.  */
2581               if (TYPE_CODE (param_type) == TYPE_CODE_DECFLOAT)
2582                 decimal_convert (param_ptr, param_len, byte_order,
2583                                  dec, dfp_len, byte_order);
2584               else
2585                 /* If this is a non-trivial conversion, just output 0.
2586                    A correct converted value can be displayed by explicitly
2587                    casting to a DFP type.  */
2588                 decimal_from_string (dec, dfp_len, byte_order, "0");
2589
2590               dfp_value = value_from_decfloat (dfp_type, dec);
2591
2592               dfp_ptr = (gdb_byte *) value_contents (dfp_value);
2593
2594               decimal_to_string (dfp_ptr, dfp_len, byte_order, decstr);
2595
2596               /* Print the DFP value.  */
2597               fprintf_filtered (stream, current_substring, decstr);
2598
2599               break;
2600 #endif
2601             }
2602
2603           case ptr_arg:
2604             {
2605               /* We avoid the host's %p because pointers are too
2606                  likely to be the wrong size.  The only interesting
2607                  modifier for %p is a width; extract that, and then
2608                  handle %p as glibc would: %#x or a literal "(nil)".  */
2609
2610               char *p, *fmt, *fmt_p;
2611 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
2612               long long val = value_as_long (val_args[i]);
2613 #else
2614               long val = value_as_long (val_args[i]);
2615 #endif
2616
2617               fmt = alloca (strlen (current_substring) + 5);
2618
2619               /* Copy up to the leading %.  */
2620               p = current_substring;
2621               fmt_p = fmt;
2622               while (*p)
2623                 {
2624                   int is_percent = (*p == '%');
2625
2626                   *fmt_p++ = *p++;
2627                   if (is_percent)
2628                     {
2629                       if (*p == '%')
2630                         *fmt_p++ = *p++;
2631                       else
2632                         break;
2633                     }
2634                 }
2635
2636               if (val != 0)
2637                 *fmt_p++ = '#';
2638
2639               /* Copy any width.  */
2640               while (*p >= '0' && *p < '9')
2641                 *fmt_p++ = *p++;
2642
2643               gdb_assert (*p == 'p' && *(p + 1) == '\0');
2644               if (val != 0)
2645                 {
2646 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
2647                   *fmt_p++ = 'l';
2648 #endif
2649                   *fmt_p++ = 'l';
2650                   *fmt_p++ = 'x';
2651                   *fmt_p++ = '\0';
2652                   fprintf_filtered (stream, fmt, val);
2653                 }
2654               else
2655                 {
2656                   *fmt_p++ = 's';
2657                   *fmt_p++ = '\0';
2658                   fprintf_filtered (stream, fmt, "(nil)");
2659                 }
2660
2661               break;
2662             }
2663           default:
2664             internal_error (__FILE__, __LINE__,
2665                             _("failed internal consistency check"));
2666           }
2667         /* Skip to the next substring.  */
2668         current_substring += strlen (current_substring) + 1;
2669       }
2670     /* Print the portion of the format string after the last argument.
2671        Note that this will not include any ordinary %-specs, but it
2672        might include "%%".  That is why we use printf_filtered and not
2673        puts_filtered here.  Also, we pass a dummy argument because
2674        some platforms have modified GCC to include -Wformat-security
2675        by default, which will warn here if there is no argument.  */
2676     fprintf_filtered (stream, last_arg, 0);
2677   }
2678   do_cleanups (old_cleanups);
2679 }
2680
2681 /* Implement the "printf" command.  */
2682
2683 static void
2684 printf_command (char *arg, int from_tty)
2685 {
2686   ui_printf (arg, gdb_stdout);
2687 }
2688
2689 /* Implement the "eval" command.  */
2690
2691 static void
2692 eval_command (char *arg, int from_tty)
2693 {
2694   struct ui_file *ui_out = mem_fileopen ();
2695   struct cleanup *cleanups = make_cleanup_ui_file_delete (ui_out);
2696   char *expanded;
2697
2698   ui_printf (arg, ui_out);
2699
2700   expanded = ui_file_xstrdup (ui_out, NULL);
2701   make_cleanup (xfree, expanded);
2702
2703   execute_command (expanded, from_tty);
2704
2705   do_cleanups (cleanups);
2706 }
2707
2708 void
2709 _initialize_printcmd (void)
2710 {
2711   struct cmd_list_element *c;
2712
2713   current_display_number = -1;
2714
2715   observer_attach_solib_unloaded (clear_dangling_display_expressions);
2716
2717   add_info ("address", address_info,
2718             _("Describe where symbol SYM is stored."));
2719
2720   add_info ("symbol", sym_info, _("\
2721 Describe what symbol is at location ADDR.\n\
2722 Only for symbols with fixed locations (global or static scope)."));
2723
2724   add_com ("x", class_vars, x_command, _("\
2725 Examine memory: x/FMT ADDRESS.\n\
2726 ADDRESS is an expression for the memory address to examine.\n\
2727 FMT is a repeat count followed by a format letter and a size letter.\n\
2728 Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),\n\
2729   t(binary), f(float), a(address), i(instruction), c(char) and s(string).\n\
2730 Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).\n\
2731 The specified number of objects of the specified size are printed\n\
2732 according to the format.\n\n\
2733 Defaults for format and size letters are those previously used.\n\
2734 Default count is 1.  Default address is following last thing printed\n\
2735 with this command or \"print\"."));
2736
2737 #if 0
2738   add_com ("whereis", class_vars, whereis_command,
2739            _("Print line number and file of definition of variable."));
2740 #endif
2741
2742   add_info ("display", display_info, _("\
2743 Expressions to display when program stops, with code numbers."));
2744
2745   add_cmd ("undisplay", class_vars, undisplay_command, _("\
2746 Cancel some expressions to be displayed when program stops.\n\
2747 Arguments are the code numbers of the expressions to stop displaying.\n\
2748 No argument means cancel all automatic-display expressions.\n\
2749 \"delete display\" has the same effect as this command.\n\
2750 Do \"info display\" to see current list of code numbers."),
2751            &cmdlist);
2752
2753   add_com ("display", class_vars, display_command, _("\
2754 Print value of expression EXP each time the program stops.\n\
2755 /FMT may be used before EXP as in the \"print\" command.\n\
2756 /FMT \"i\" or \"s\" or including a size-letter is allowed,\n\
2757 as in the \"x\" command, and then EXP is used to get the address to examine\n\
2758 and examining is done as in the \"x\" command.\n\n\
2759 With no argument, display all currently requested auto-display expressions.\n\
2760 Use \"undisplay\" to cancel display requests previously made."));
2761
2762   add_cmd ("display", class_vars, enable_display_command, _("\
2763 Enable some expressions to be displayed when program stops.\n\
2764 Arguments are the code numbers of the expressions to resume displaying.\n\
2765 No argument means enable all automatic-display expressions.\n\
2766 Do \"info display\" to see current list of code numbers."), &enablelist);
2767
2768   add_cmd ("display", class_vars, disable_display_command, _("\
2769 Disable some expressions to be displayed when program stops.\n\
2770 Arguments are the code numbers of the expressions to stop displaying.\n\
2771 No argument means disable all automatic-display expressions.\n\
2772 Do \"info display\" to see current list of code numbers."), &disablelist);
2773
2774   add_cmd ("display", class_vars, undisplay_command, _("\
2775 Cancel some expressions to be displayed when program stops.\n\
2776 Arguments are the code numbers of the expressions to stop displaying.\n\
2777 No argument means cancel all automatic-display expressions.\n\
2778 Do \"info display\" to see current list of code numbers."), &deletelist);
2779
2780   add_com ("printf", class_vars, printf_command, _("\
2781 printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
2782 This is useful for formatted output in user-defined commands."));
2783
2784   add_com ("output", class_vars, output_command, _("\
2785 Like \"print\" but don't put in value history and don't print newline.\n\
2786 This is useful in user-defined commands."));
2787
2788   add_prefix_cmd ("set", class_vars, set_command, _("\
2789 Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2790 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2791 example).  VAR may be a debugger \"convenience\" variable (names starting\n\
2792 with $), a register (a few standard names starting with $), or an actual\n\
2793 variable in the program being debugged.  EXP is any valid expression.\n\
2794 Use \"set variable\" for variables with names identical to set subcommands.\n\
2795 \n\
2796 With a subcommand, this command modifies parts of the gdb environment.\n\
2797 You can see these environment settings with the \"show\" command."),
2798                   &setlist, "set ", 1, &cmdlist);
2799   if (dbx_commands)
2800     add_com ("assign", class_vars, set_command, _("\
2801 Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2802 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2803 example).  VAR may be a debugger \"convenience\" variable (names starting\n\
2804 with $), a register (a few standard names starting with $), or an actual\n\
2805 variable in the program being debugged.  EXP is any valid expression.\n\
2806 Use \"set variable\" for variables with names identical to set subcommands.\n\
2807 \nWith a subcommand, this command modifies parts of the gdb environment.\n\
2808 You can see these environment settings with the \"show\" command."));
2809
2810   /* "call" is the same as "set", but handy for dbx users to call fns.  */
2811   c = add_com ("call", class_vars, call_command, _("\
2812 Call a function in the program.\n\
2813 The argument is the function name and arguments, in the notation of the\n\
2814 current working language.  The result is printed and saved in the value\n\
2815 history, if it is not void."));
2816   set_cmd_completer (c, expression_completer);
2817
2818   add_cmd ("variable", class_vars, set_command, _("\
2819 Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2820 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2821 example).  VAR may be a debugger \"convenience\" variable (names starting\n\
2822 with $), a register (a few standard names starting with $), or an actual\n\
2823 variable in the program being debugged.  EXP is any valid expression.\n\
2824 This may usually be abbreviated to simply \"set\"."),
2825            &setlist);
2826
2827   c = add_com ("print", class_vars, print_command, _("\
2828 Print value of expression EXP.\n\
2829 Variables accessible are those of the lexical environment of the selected\n\
2830 stack frame, plus all those whose scope is global or an entire file.\n\
2831 \n\
2832 $NUM gets previous value number NUM.  $ and $$ are the last two values.\n\
2833 $$NUM refers to NUM'th value back from the last one.\n\
2834 Names starting with $ refer to registers (with the values they would have\n\
2835 if the program were to return to the stack frame now selected, restoring\n\
2836 all registers saved by frames farther in) or else to debugger\n\
2837 \"convenience\" variables (any such name not a known register).\n\
2838 Use assignment expressions to give values to convenience variables.\n\
2839 \n\
2840 {TYPE}ADREXP refers to a datum of data type TYPE, located at address ADREXP.\n\
2841 @ is a binary operator for treating consecutive data objects\n\
2842 anywhere in memory as an array.  FOO@NUM gives an array whose first\n\
2843 element is FOO, whose second element is stored in the space following\n\
2844 where FOO is stored, etc.  FOO must be an expression whose value\n\
2845 resides in memory.\n\
2846 \n\
2847 EXP may be preceded with /FMT, where FMT is a format letter\n\
2848 but no count or size letter (see \"x\" command)."));
2849   set_cmd_completer (c, expression_completer);
2850   add_com_alias ("p", "print", class_vars, 1);
2851
2852   c = add_com ("inspect", class_vars, inspect_command, _("\
2853 Same as \"print\" command, except that if you are running in the epoch\n\
2854 environment, the value is printed in its own window."));
2855   set_cmd_completer (c, expression_completer);
2856
2857   add_setshow_uinteger_cmd ("max-symbolic-offset", no_class,
2858                             &max_symbolic_offset, _("\
2859 Set the largest offset that will be printed in <symbol+1234> form."), _("\
2860 Show the largest offset that will be printed in <symbol+1234> form."), NULL,
2861                             NULL,
2862                             show_max_symbolic_offset,
2863                             &setprintlist, &showprintlist);
2864   add_setshow_boolean_cmd ("symbol-filename", no_class,
2865                            &print_symbol_filename, _("\
2866 Set printing of source filename and line number with <symbol>."), _("\
2867 Show printing of source filename and line number with <symbol>."), NULL,
2868                            NULL,
2869                            show_print_symbol_filename,
2870                            &setprintlist, &showprintlist);
2871
2872   add_com ("eval", no_class, eval_command, _("\
2873 Convert \"printf format string\", arg1, arg2, arg3, ..., argn to\n\
2874 a command line, and call it."));
2875 }