OSDN Git Service

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