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