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