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