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