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