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