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