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