OSDN Git Service

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