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