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