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