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