* printcmd.c (ui_printf): Eliminate single-use variable
[platform/upstream/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_HAS_SIZE (msymbol)
684       && MSYMBOL_SIZE (msymbol) == 0
685       && MSYMBOL_TYPE (msymbol) != mst_text
686       && MSYMBOL_TYPE (msymbol) != mst_text_gnu_ifunc
687       && MSYMBOL_TYPE (msymbol) != mst_file_text)
688     msymbol = NULL;
689
690   if (msymbol != NULL)
691     {
692       if (SYMBOL_VALUE_ADDRESS (msymbol) > name_location || symbol == NULL)
693         {
694           /* The msymbol is closer to the address than the symbol;
695              use the msymbol instead.  */
696           symbol = 0;
697           name_location = SYMBOL_VALUE_ADDRESS (msymbol);
698           if (do_demangle || asm_demangle)
699             name_temp = SYMBOL_PRINT_NAME (msymbol);
700           else
701             name_temp = SYMBOL_LINKAGE_NAME (msymbol);
702         }
703     }
704   if (symbol == NULL && msymbol == NULL)
705     return 1;
706
707   /* If the nearest symbol is too far away, don't print anything symbolic.  */
708
709   /* For when CORE_ADDR is larger than unsigned int, we do math in
710      CORE_ADDR.  But when we detect unsigned wraparound in the
711      CORE_ADDR math, we ignore this test and print the offset,
712      because addr+max_symbolic_offset has wrapped through the end
713      of the address space back to the beginning, giving bogus comparison.  */
714   if (addr > name_location + max_symbolic_offset
715       && name_location + max_symbolic_offset > name_location)
716     return 1;
717
718   *offset = addr - name_location;
719
720   *name = xstrdup (name_temp);
721
722   if (print_symbol_filename)
723     {
724       struct symtab_and_line sal;
725
726       sal = find_pc_sect_line (addr, section, 0);
727
728       if (sal.symtab)
729         {
730           *filename = xstrdup (sal.symtab->filename);
731           *line = sal.line;
732         }
733     }
734   return 0;
735 }
736
737
738 /* Print address ADDR symbolically on STREAM.
739    First print it as a number.  Then perhaps print
740    <SYMBOL + OFFSET> after the number.  */
741
742 void
743 print_address (struct gdbarch *gdbarch,
744                CORE_ADDR addr, struct ui_file *stream)
745 {
746   fputs_filtered (paddress (gdbarch, addr), stream);
747   print_address_symbolic (gdbarch, addr, stream, asm_demangle, " ");
748 }
749
750 /* Return a prefix for instruction address:
751    "=> " for current instruction, else "   ".  */
752
753 const char *
754 pc_prefix (CORE_ADDR addr)
755 {
756   if (has_stack_frames ())
757     {
758       struct frame_info *frame;
759       CORE_ADDR pc;
760
761       frame = get_selected_frame (NULL);
762       if (get_frame_pc_if_available (frame, &pc) && pc == addr)
763         return "=> ";
764     }
765   return "   ";
766 }
767
768 /* Print address ADDR symbolically on STREAM.  Parameter DEMANGLE
769    controls whether to print the symbolic name "raw" or demangled.
770    Return non-zero if anything was printed; zero otherwise.  */
771
772 int
773 print_address_demangle (const struct value_print_options *opts,
774                         struct gdbarch *gdbarch, CORE_ADDR addr,
775                         struct ui_file *stream, int do_demangle)
776 {
777   if (opts->addressprint)
778     {
779       fputs_filtered (paddress (gdbarch, addr), stream);
780       print_address_symbolic (gdbarch, addr, stream, do_demangle, " ");
781     }
782   else
783     {
784       return print_address_symbolic (gdbarch, addr, stream, do_demangle, "");
785     }
786   return 1;
787 }
788 \f
789
790 /* Examine data at address ADDR in format FMT.
791    Fetch it from memory and print on gdb_stdout.  */
792
793 static void
794 do_examine (struct format_data fmt, struct gdbarch *gdbarch, CORE_ADDR addr)
795 {
796   char format = 0;
797   char size;
798   int count = 1;
799   struct type *val_type = NULL;
800   int i;
801   int maxelts;
802   struct value_print_options opts;
803
804   format = fmt.format;
805   size = fmt.size;
806   count = fmt.count;
807   next_gdbarch = gdbarch;
808   next_address = addr;
809
810   /* Instruction format implies fetch single bytes
811      regardless of the specified size.
812      The case of strings is handled in decode_format, only explicit
813      size operator are not changed to 'b'.  */
814   if (format == 'i')
815     size = 'b';
816
817   if (size == 'a')
818     {
819       /* Pick the appropriate size for an address.  */
820       if (gdbarch_ptr_bit (next_gdbarch) == 64)
821         size = 'g';
822       else if (gdbarch_ptr_bit (next_gdbarch) == 32)
823         size = 'w';
824       else if (gdbarch_ptr_bit (next_gdbarch) == 16)
825         size = 'h';
826       else
827         /* Bad value for gdbarch_ptr_bit.  */
828         internal_error (__FILE__, __LINE__,
829                         _("failed internal consistency check"));
830     }
831
832   if (size == 'b')
833     val_type = builtin_type (next_gdbarch)->builtin_int8;
834   else if (size == 'h')
835     val_type = builtin_type (next_gdbarch)->builtin_int16;
836   else if (size == 'w')
837     val_type = builtin_type (next_gdbarch)->builtin_int32;
838   else if (size == 'g')
839     val_type = builtin_type (next_gdbarch)->builtin_int64;
840
841   if (format == 's')
842     {
843       struct type *char_type = NULL;
844
845       /* Search for "char16_t"  or "char32_t" types or fall back to 8-bit char
846          if type is not found.  */
847       if (size == 'h')
848         char_type = builtin_type (next_gdbarch)->builtin_char16;
849       else if (size == 'w')
850         char_type = builtin_type (next_gdbarch)->builtin_char32;
851       if (char_type)
852         val_type = char_type;
853       else
854         {
855           if (size != '\0' && size != 'b')
856             warning (_("Unable to display strings with "
857                        "size '%c', using 'b' instead."), size);
858           size = 'b';
859           val_type = builtin_type (next_gdbarch)->builtin_int8;
860         }
861     }
862
863   maxelts = 8;
864   if (size == 'w')
865     maxelts = 4;
866   if (size == 'g')
867     maxelts = 2;
868   if (format == 's' || format == 'i')
869     maxelts = 1;
870
871   get_formatted_print_options (&opts, format);
872
873   /* Print as many objects as specified in COUNT, at most maxelts per line,
874      with the address of the next one at the start of each line.  */
875
876   while (count > 0)
877     {
878       QUIT;
879       if (format == 'i')
880         fputs_filtered (pc_prefix (next_address), gdb_stdout);
881       print_address (next_gdbarch, next_address, gdb_stdout);
882       printf_filtered (":");
883       for (i = maxelts;
884            i > 0 && count > 0;
885            i--, count--)
886         {
887           printf_filtered ("\t");
888           /* Note that print_formatted sets next_address for the next
889              object.  */
890           last_examine_address = next_address;
891
892           if (last_examine_value)
893             value_free (last_examine_value);
894
895           /* The value to be displayed is not fetched greedily.
896              Instead, to avoid the possibility of a fetched value not
897              being used, its retrieval is delayed until the print code
898              uses it.  When examining an instruction stream, the
899              disassembler will perform its own memory fetch using just
900              the address stored in LAST_EXAMINE_VALUE.  FIXME: Should
901              the disassembler be modified so that LAST_EXAMINE_VALUE
902              is left with the byte sequence from the last complete
903              instruction fetched from memory?  */
904           last_examine_value = value_at_lazy (val_type, next_address);
905
906           if (last_examine_value)
907             release_value (last_examine_value);
908
909           print_formatted (last_examine_value, size, &opts, gdb_stdout);
910
911           /* Display any branch delay slots following the final insn.  */
912           if (format == 'i' && count == 1)
913             count += branch_delay_insns;
914         }
915       printf_filtered ("\n");
916       gdb_flush (gdb_stdout);
917     }
918 }
919 \f
920 static void
921 validate_format (struct format_data fmt, char *cmdname)
922 {
923   if (fmt.size != 0)
924     error (_("Size letters are meaningless in \"%s\" command."), cmdname);
925   if (fmt.count != 1)
926     error (_("Item count other than 1 is meaningless in \"%s\" command."),
927            cmdname);
928   if (fmt.format == 'i')
929     error (_("Format letter \"%c\" is meaningless in \"%s\" command."),
930            fmt.format, cmdname);
931 }
932
933 /* Evaluate string EXP as an expression in the current language and
934    print the resulting value.  EXP may contain a format specifier as the
935    first argument ("/x myvar" for example, to print myvar in hex).  */
936
937 static void
938 print_command_1 (char *exp, int inspect, int voidprint)
939 {
940   struct expression *expr;
941   struct cleanup *old_chain = 0;
942   char format = 0;
943   struct value *val;
944   struct format_data fmt;
945   int cleanup = 0;
946
947   if (exp && *exp == '/')
948     {
949       exp++;
950       fmt = decode_format (&exp, last_format, 0);
951       validate_format (fmt, "print");
952       last_format = format = fmt.format;
953     }
954   else
955     {
956       fmt.count = 1;
957       fmt.format = 0;
958       fmt.size = 0;
959       fmt.raw = 0;
960     }
961
962   if (exp && *exp)
963     {
964       expr = parse_expression (exp);
965       old_chain = make_cleanup (free_current_contents, &expr);
966       cleanup = 1;
967       val = evaluate_expression (expr);
968     }
969   else
970     val = access_value_history (0);
971
972   if (voidprint || (val && value_type (val) &&
973                     TYPE_CODE (value_type (val)) != TYPE_CODE_VOID))
974     {
975       struct value_print_options opts;
976       int histindex = record_latest_value (val);
977
978       if (histindex >= 0)
979         annotate_value_history_begin (histindex, value_type (val));
980       else
981         annotate_value_begin (value_type (val));
982
983       if (inspect)
984         printf_unfiltered ("\031(gdb-makebuffer \"%s\"  %d '(\"",
985                            exp, histindex);
986       else if (histindex >= 0)
987         printf_filtered ("$%d = ", histindex);
988
989       if (histindex >= 0)
990         annotate_value_history_value ();
991
992       get_formatted_print_options (&opts, format);
993       opts.inspect_it = inspect;
994       opts.raw = fmt.raw;
995
996       print_formatted (val, fmt.size, &opts, gdb_stdout);
997       printf_filtered ("\n");
998
999       if (histindex >= 0)
1000         annotate_value_history_end ();
1001       else
1002         annotate_value_end ();
1003
1004       if (inspect)
1005         printf_unfiltered ("\") )\030");
1006     }
1007
1008   if (cleanup)
1009     do_cleanups (old_chain);
1010 }
1011
1012 static void
1013 print_command (char *exp, int from_tty)
1014 {
1015   print_command_1 (exp, 0, 1);
1016 }
1017
1018 /* Same as print, except in epoch, it gets its own window.  */
1019 static void
1020 inspect_command (char *exp, int from_tty)
1021 {
1022   extern int epoch_interface;
1023
1024   print_command_1 (exp, epoch_interface, 1);
1025 }
1026
1027 /* Same as print, except it doesn't print void results.  */
1028 static void
1029 call_command (char *exp, int from_tty)
1030 {
1031   print_command_1 (exp, 0, 0);
1032 }
1033
1034 void
1035 output_command (char *exp, int from_tty)
1036 {
1037   struct expression *expr;
1038   struct cleanup *old_chain;
1039   char format = 0;
1040   struct value *val;
1041   struct format_data fmt;
1042   struct value_print_options opts;
1043
1044   fmt.size = 0;
1045   fmt.raw = 0;
1046
1047   if (exp && *exp == '/')
1048     {
1049       exp++;
1050       fmt = decode_format (&exp, 0, 0);
1051       validate_format (fmt, "output");
1052       format = fmt.format;
1053     }
1054
1055   expr = parse_expression (exp);
1056   old_chain = make_cleanup (free_current_contents, &expr);
1057
1058   val = evaluate_expression (expr);
1059
1060   annotate_value_begin (value_type (val));
1061
1062   get_formatted_print_options (&opts, format);
1063   opts.raw = fmt.raw;
1064   print_formatted (val, fmt.size, &opts, gdb_stdout);
1065
1066   annotate_value_end ();
1067
1068   wrap_here ("");
1069   gdb_flush (gdb_stdout);
1070
1071   do_cleanups (old_chain);
1072 }
1073
1074 static void
1075 set_command (char *exp, int from_tty)
1076 {
1077   struct expression *expr = parse_expression (exp);
1078   struct cleanup *old_chain =
1079     make_cleanup (free_current_contents, &expr);
1080
1081   if (expr->nelts >= 1)
1082     switch (expr->elts[0].opcode)
1083       {
1084       case UNOP_PREINCREMENT:
1085       case UNOP_POSTINCREMENT:
1086       case UNOP_PREDECREMENT:
1087       case UNOP_POSTDECREMENT:
1088       case BINOP_ASSIGN:
1089       case BINOP_ASSIGN_MODIFY:
1090       case BINOP_COMMA:
1091         break;
1092       default:
1093         warning
1094           (_("Expression is not an assignment (and might have no effect)"));
1095       }
1096
1097   evaluate_expression (expr);
1098   do_cleanups (old_chain);
1099 }
1100
1101 static void
1102 sym_info (char *arg, int from_tty)
1103 {
1104   struct minimal_symbol *msymbol;
1105   struct objfile *objfile;
1106   struct obj_section *osect;
1107   CORE_ADDR addr, sect_addr;
1108   int matches = 0;
1109   unsigned int offset;
1110
1111   if (!arg)
1112     error_no_arg (_("address"));
1113
1114   addr = parse_and_eval_address (arg);
1115   ALL_OBJSECTIONS (objfile, osect)
1116   {
1117     /* Only process each object file once, even if there's a separate
1118        debug file.  */
1119     if (objfile->separate_debug_objfile_backlink)
1120       continue;
1121
1122     sect_addr = overlay_mapped_address (addr, osect);
1123
1124     if (obj_section_addr (osect) <= sect_addr
1125         && sect_addr < obj_section_endaddr (osect)
1126         && (msymbol = lookup_minimal_symbol_by_pc_section (sect_addr, osect)))
1127       {
1128         const char *obj_name, *mapped, *sec_name, *msym_name;
1129         char *loc_string;
1130         struct cleanup *old_chain;
1131
1132         matches = 1;
1133         offset = sect_addr - SYMBOL_VALUE_ADDRESS (msymbol);
1134         mapped = section_is_mapped (osect) ? _("mapped") : _("unmapped");
1135         sec_name = osect->the_bfd_section->name;
1136         msym_name = SYMBOL_PRINT_NAME (msymbol);
1137
1138         /* Don't print the offset if it is zero.
1139            We assume there's no need to handle i18n of "sym + offset".  */
1140         if (offset)
1141           loc_string = xstrprintf ("%s + %u", msym_name, offset);
1142         else
1143           loc_string = xstrprintf ("%s", msym_name);
1144
1145         /* Use a cleanup to free loc_string in case the user quits
1146            a pagination request inside printf_filtered.  */
1147         old_chain = make_cleanup (xfree, loc_string);
1148
1149         gdb_assert (osect->objfile && osect->objfile->name);
1150         obj_name = osect->objfile->name;
1151
1152         if (MULTI_OBJFILE_P ())
1153           if (pc_in_unmapped_range (addr, osect))
1154             if (section_is_overlay (osect))
1155               printf_filtered (_("%s in load address range of "
1156                                  "%s overlay section %s of %s\n"),
1157                                loc_string, mapped, sec_name, obj_name);
1158             else
1159               printf_filtered (_("%s in load address range of "
1160                                  "section %s of %s\n"),
1161                                loc_string, sec_name, obj_name);
1162           else
1163             if (section_is_overlay (osect))
1164               printf_filtered (_("%s in %s overlay section %s of %s\n"),
1165                                loc_string, mapped, sec_name, obj_name);
1166             else
1167               printf_filtered (_("%s in section %s of %s\n"),
1168                                loc_string, sec_name, obj_name);
1169         else
1170           if (pc_in_unmapped_range (addr, osect))
1171             if (section_is_overlay (osect))
1172               printf_filtered (_("%s in load address range of %s overlay "
1173                                  "section %s\n"),
1174                                loc_string, mapped, sec_name);
1175             else
1176               printf_filtered (_("%s in load address range of section %s\n"),
1177                                loc_string, sec_name);
1178           else
1179             if (section_is_overlay (osect))
1180               printf_filtered (_("%s in %s overlay section %s\n"),
1181                                loc_string, mapped, sec_name);
1182             else
1183               printf_filtered (_("%s in section %s\n"),
1184                                loc_string, sec_name);
1185
1186         do_cleanups (old_chain);
1187       }
1188   }
1189   if (matches == 0)
1190     printf_filtered (_("No symbol matches %s.\n"), arg);
1191 }
1192
1193 static void
1194 address_info (char *exp, int from_tty)
1195 {
1196   struct gdbarch *gdbarch;
1197   int regno;
1198   struct symbol *sym;
1199   struct minimal_symbol *msymbol;
1200   long val;
1201   struct obj_section *section;
1202   CORE_ADDR load_addr, context_pc = 0;
1203   int is_a_field_of_this;       /* C++: lookup_symbol sets this to nonzero
1204                                    if exp is a field of `this'.  */
1205
1206   if (exp == 0)
1207     error (_("Argument required."));
1208
1209   sym = lookup_symbol (exp, get_selected_block (&context_pc), VAR_DOMAIN,
1210                        &is_a_field_of_this);
1211   if (sym == NULL)
1212     {
1213       if (is_a_field_of_this)
1214         {
1215           printf_filtered ("Symbol \"");
1216           fprintf_symbol_filtered (gdb_stdout, exp,
1217                                    current_language->la_language, DMGL_ANSI);
1218           printf_filtered ("\" is a field of the local class variable ");
1219           if (current_language->la_language == language_objc)
1220             printf_filtered ("`self'\n");       /* ObjC equivalent of "this" */
1221           else
1222             printf_filtered ("`this'\n");
1223           return;
1224         }
1225
1226       msymbol = lookup_minimal_symbol (exp, NULL, NULL);
1227
1228       if (msymbol != NULL)
1229         {
1230           gdbarch = get_objfile_arch (msymbol_objfile (msymbol));
1231           load_addr = SYMBOL_VALUE_ADDRESS (msymbol);
1232
1233           printf_filtered ("Symbol \"");
1234           fprintf_symbol_filtered (gdb_stdout, exp,
1235                                    current_language->la_language, DMGL_ANSI);
1236           printf_filtered ("\" is at ");
1237           fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1238           printf_filtered (" in a file compiled without debugging");
1239           section = SYMBOL_OBJ_SECTION (msymbol);
1240           if (section_is_overlay (section))
1241             {
1242               load_addr = overlay_unmapped_address (load_addr, section);
1243               printf_filtered (",\n -- loaded at ");
1244               fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1245               printf_filtered (" in overlay section %s",
1246                                section->the_bfd_section->name);
1247             }
1248           printf_filtered (".\n");
1249         }
1250       else
1251         error (_("No symbol \"%s\" in current context."), exp);
1252       return;
1253     }
1254
1255   printf_filtered ("Symbol \"");
1256   fprintf_symbol_filtered (gdb_stdout, SYMBOL_PRINT_NAME (sym),
1257                            current_language->la_language, DMGL_ANSI);
1258   printf_filtered ("\" is ");
1259   val = SYMBOL_VALUE (sym);
1260   section = SYMBOL_OBJ_SECTION (sym);
1261   gdbarch = get_objfile_arch (SYMBOL_SYMTAB (sym)->objfile);
1262
1263   switch (SYMBOL_CLASS (sym))
1264     {
1265     case LOC_CONST:
1266     case LOC_CONST_BYTES:
1267       printf_filtered ("constant");
1268       break;
1269
1270     case LOC_LABEL:
1271       printf_filtered ("a label at address ");
1272       load_addr = SYMBOL_VALUE_ADDRESS (sym);
1273       fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1274       if (section_is_overlay (section))
1275         {
1276           load_addr = overlay_unmapped_address (load_addr, section);
1277           printf_filtered (",\n -- loaded at ");
1278           fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1279           printf_filtered (" in overlay section %s",
1280                            section->the_bfd_section->name);
1281         }
1282       break;
1283
1284     case LOC_COMPUTED:
1285       /* FIXME: cagney/2004-01-26: It should be possible to
1286          unconditionally call the SYMBOL_COMPUTED_OPS method when available.
1287          Unfortunately DWARF 2 stores the frame-base (instead of the
1288          function) location in a function's symbol.  Oops!  For the
1289          moment enable this when/where applicable.  */
1290       SYMBOL_COMPUTED_OPS (sym)->describe_location (sym, context_pc,
1291                                                     gdb_stdout);
1292       break;
1293
1294     case LOC_REGISTER:
1295       /* GDBARCH is the architecture associated with the objfile the symbol
1296          is defined in; the target architecture may be different, and may
1297          provide additional registers.  However, we do not know the target
1298          architecture at this point.  We assume the objfile architecture
1299          will contain all the standard registers that occur in debug info
1300          in that objfile.  */
1301       regno = SYMBOL_REGISTER_OPS (sym)->register_number (sym, gdbarch);
1302
1303       if (SYMBOL_IS_ARGUMENT (sym))
1304         printf_filtered (_("an argument in register %s"),
1305                          gdbarch_register_name (gdbarch, regno));
1306       else
1307         printf_filtered (_("a variable in register %s"),
1308                          gdbarch_register_name (gdbarch, regno));
1309       break;
1310
1311     case LOC_STATIC:
1312       printf_filtered (_("static storage at address "));
1313       load_addr = SYMBOL_VALUE_ADDRESS (sym);
1314       fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1315       if (section_is_overlay (section))
1316         {
1317           load_addr = overlay_unmapped_address (load_addr, section);
1318           printf_filtered (_(",\n -- loaded at "));
1319           fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1320           printf_filtered (_(" in overlay section %s"),
1321                            section->the_bfd_section->name);
1322         }
1323       break;
1324
1325     case LOC_REGPARM_ADDR:
1326       /* Note comment at LOC_REGISTER.  */
1327       regno = SYMBOL_REGISTER_OPS (sym)->register_number (sym, gdbarch);
1328       printf_filtered (_("address of an argument in register %s"),
1329                        gdbarch_register_name (gdbarch, regno));
1330       break;
1331
1332     case LOC_ARG:
1333       printf_filtered (_("an argument at offset %ld"), val);
1334       break;
1335
1336     case LOC_LOCAL:
1337       printf_filtered (_("a local variable at frame offset %ld"), val);
1338       break;
1339
1340     case LOC_REF_ARG:
1341       printf_filtered (_("a reference argument at offset %ld"), val);
1342       break;
1343
1344     case LOC_TYPEDEF:
1345       printf_filtered (_("a typedef"));
1346       break;
1347
1348     case LOC_BLOCK:
1349       printf_filtered (_("a function at address "));
1350       load_addr = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
1351       fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1352       if (section_is_overlay (section))
1353         {
1354           load_addr = overlay_unmapped_address (load_addr, section);
1355           printf_filtered (_(",\n -- loaded at "));
1356           fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1357           printf_filtered (_(" in overlay section %s"),
1358                            section->the_bfd_section->name);
1359         }
1360       break;
1361
1362     case LOC_UNRESOLVED:
1363       {
1364         struct minimal_symbol *msym;
1365
1366         msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (sym), NULL, NULL);
1367         if (msym == NULL)
1368           printf_filtered ("unresolved");
1369         else
1370           {
1371             section = SYMBOL_OBJ_SECTION (msym);
1372             load_addr = SYMBOL_VALUE_ADDRESS (msym);
1373
1374             if (section
1375                 && (section->the_bfd_section->flags & SEC_THREAD_LOCAL) != 0)
1376               printf_filtered (_("a thread-local variable at offset %s "
1377                                  "in the thread-local storage for `%s'"),
1378                                paddress (gdbarch, load_addr),
1379                                section->objfile->name);
1380             else
1381               {
1382                 printf_filtered (_("static storage at address "));
1383                 fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1384                 if (section_is_overlay (section))
1385                   {
1386                     load_addr = overlay_unmapped_address (load_addr, section);
1387                     printf_filtered (_(",\n -- loaded at "));
1388                     fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
1389                     printf_filtered (_(" in overlay section %s"),
1390                                      section->the_bfd_section->name);
1391                   }
1392               }
1393           }
1394       }
1395       break;
1396
1397     case LOC_OPTIMIZED_OUT:
1398       printf_filtered (_("optimized out"));
1399       break;
1400
1401     default:
1402       printf_filtered (_("of unknown (botched) type"));
1403       break;
1404     }
1405   printf_filtered (".\n");
1406 }
1407 \f
1408
1409 static void
1410 x_command (char *exp, int from_tty)
1411 {
1412   struct expression *expr;
1413   struct format_data fmt;
1414   struct cleanup *old_chain;
1415   struct value *val;
1416
1417   fmt.format = last_format ? last_format : 'x';
1418   fmt.size = last_size;
1419   fmt.count = 1;
1420   fmt.raw = 0;
1421
1422   if (exp && *exp == '/')
1423     {
1424       exp++;
1425       fmt = decode_format (&exp, last_format, last_size);
1426     }
1427
1428   /* If we have an expression, evaluate it and use it as the address.  */
1429
1430   if (exp != 0 && *exp != 0)
1431     {
1432       expr = parse_expression (exp);
1433       /* Cause expression not to be there any more if this command is
1434          repeated with Newline.  But don't clobber a user-defined
1435          command's definition.  */
1436       if (from_tty)
1437         *exp = 0;
1438       old_chain = make_cleanup (free_current_contents, &expr);
1439       val = evaluate_expression (expr);
1440       if (TYPE_CODE (value_type (val)) == TYPE_CODE_REF)
1441         val = coerce_ref (val);
1442       /* In rvalue contexts, such as this, functions are coerced into
1443          pointers to functions.  This makes "x/i main" work.  */
1444       if (/* last_format == 'i'  && */ 
1445           TYPE_CODE (value_type (val)) == TYPE_CODE_FUNC
1446            && VALUE_LVAL (val) == lval_memory)
1447         next_address = value_address (val);
1448       else
1449         next_address = value_as_address (val);
1450
1451       next_gdbarch = expr->gdbarch;
1452       do_cleanups (old_chain);
1453     }
1454
1455   if (!next_gdbarch)
1456     error_no_arg (_("starting display address"));
1457
1458   do_examine (fmt, next_gdbarch, next_address);
1459
1460   /* If the examine succeeds, we remember its size and format for next
1461      time.  Set last_size to 'b' for strings.  */
1462   if (fmt.format == 's')
1463     last_size = 'b';
1464   else
1465     last_size = fmt.size;
1466   last_format = fmt.format;
1467
1468   /* Set a couple of internal variables if appropriate.  */
1469   if (last_examine_value)
1470     {
1471       /* Make last address examined available to the user as $_.  Use
1472          the correct pointer type.  */
1473       struct type *pointer_type
1474         = lookup_pointer_type (value_type (last_examine_value));
1475       set_internalvar (lookup_internalvar ("_"),
1476                        value_from_pointer (pointer_type,
1477                                            last_examine_address));
1478
1479       /* Make contents of last address examined available to the user
1480          as $__.  If the last value has not been fetched from memory
1481          then don't fetch it now; instead mark it by voiding the $__
1482          variable.  */
1483       if (value_lazy (last_examine_value))
1484         clear_internalvar (lookup_internalvar ("__"));
1485       else
1486         set_internalvar (lookup_internalvar ("__"), last_examine_value);
1487     }
1488 }
1489 \f
1490
1491 /* Add an expression to the auto-display chain.
1492    Specify the expression.  */
1493
1494 static void
1495 display_command (char *exp, int from_tty)
1496 {
1497   struct format_data fmt;
1498   struct expression *expr;
1499   struct display *new;
1500   int display_it = 1;
1501
1502 #if defined(TUI)
1503   /* NOTE: cagney/2003-02-13 The `tui_active' was previously
1504      `tui_version'.  */
1505   if (tui_active && exp != NULL && *exp == '$')
1506     display_it = (tui_set_layout_for_display_command (exp) == TUI_FAILURE);
1507 #endif
1508
1509   if (display_it)
1510     {
1511       if (exp == 0)
1512         {
1513           do_displays ();
1514           return;
1515         }
1516
1517       if (*exp == '/')
1518         {
1519           exp++;
1520           fmt = decode_format (&exp, 0, 0);
1521           if (fmt.size && fmt.format == 0)
1522             fmt.format = 'x';
1523           if (fmt.format == 'i' || fmt.format == 's')
1524             fmt.size = 'b';
1525         }
1526       else
1527         {
1528           fmt.format = 0;
1529           fmt.size = 0;
1530           fmt.count = 0;
1531           fmt.raw = 0;
1532         }
1533
1534       innermost_block = NULL;
1535       expr = parse_expression (exp);
1536
1537       new = (struct display *) xmalloc (sizeof (struct display));
1538
1539       new->exp_string = xstrdup (exp);
1540       new->exp = expr;
1541       new->block = innermost_block;
1542       new->pspace = current_program_space;
1543       new->next = display_chain;
1544       new->number = ++display_number;
1545       new->format = fmt;
1546       new->enabled_p = 1;
1547       display_chain = new;
1548
1549       if (from_tty && target_has_execution)
1550         do_one_display (new);
1551
1552       dont_repeat ();
1553     }
1554 }
1555
1556 static void
1557 free_display (struct display *d)
1558 {
1559   xfree (d->exp_string);
1560   xfree (d->exp);
1561   xfree (d);
1562 }
1563
1564 /* Clear out the display_chain.  Done when new symtabs are loaded,
1565    since this invalidates the types stored in many expressions.  */
1566
1567 void
1568 clear_displays (void)
1569 {
1570   struct display *d;
1571
1572   while ((d = display_chain) != NULL)
1573     {
1574       display_chain = d->next;
1575       free_display (d);
1576     }
1577 }
1578
1579 /* Delete the auto-display DISPLAY.  */
1580
1581 static void
1582 delete_display (struct display *display)
1583 {
1584   struct display *d;
1585
1586   gdb_assert (display != NULL);
1587
1588   if (display_chain == display)
1589     display_chain = display->next;
1590
1591   ALL_DISPLAYS (d)
1592     if (d->next == display)
1593       {
1594         d->next = display->next;
1595         break;
1596       }
1597
1598   free_display (display);
1599 }
1600
1601 /* Call FUNCTION on each of the displays whose numbers are given in
1602    ARGS.  DATA is passed unmodified to FUNCTION.  */
1603
1604 static void
1605 map_display_numbers (char *args,
1606                      void (*function) (struct display *,
1607                                        void *),
1608                      void *data)
1609 {
1610   struct get_number_or_range_state state;
1611   int num;
1612
1613   if (args == NULL)
1614     error_no_arg (_("one or more display numbers"));
1615
1616   init_number_or_range (&state, args);
1617
1618   while (!state.finished)
1619     {
1620       char *p = state.string;
1621
1622       num = get_number_or_range (&state);
1623       if (num == 0)
1624         warning (_("bad display number at or near '%s'"), p);
1625       else
1626         {
1627           struct display *d, *tmp;
1628
1629           ALL_DISPLAYS_SAFE (d, tmp)
1630             if (d->number == num)
1631               break;
1632           if (d == NULL)
1633             printf_unfiltered (_("No display number %d.\n"), num);
1634           else
1635             function (d, data);
1636         }
1637     }
1638 }
1639
1640 /* Callback for map_display_numbers, that deletes a display.  */
1641
1642 static void
1643 do_delete_display (struct display *d, void *data)
1644 {
1645   delete_display (d);
1646 }
1647
1648 /* "undisplay" command.  */
1649
1650 static void
1651 undisplay_command (char *args, int from_tty)
1652 {
1653   if (args == NULL)
1654     {
1655       if (query (_("Delete all auto-display expressions? ")))
1656         clear_displays ();
1657       dont_repeat ();
1658       return;
1659     }
1660
1661   map_display_numbers (args, do_delete_display, NULL);
1662   dont_repeat ();
1663 }
1664
1665 /* Display a single auto-display.  
1666    Do nothing if the display cannot be printed in the current context,
1667    or if the display is disabled.  */
1668
1669 static void
1670 do_one_display (struct display *d)
1671 {
1672   struct cleanup *old_chain;
1673   int within_current_scope;
1674
1675   if (d->enabled_p == 0)
1676     return;
1677
1678   /* The expression carries the architecture that was used at parse time.
1679      This is a problem if the expression depends on architecture features
1680      (e.g. register numbers), and the current architecture is now different.
1681      For example, a display statement like "display/i $pc" is expected to
1682      display the PC register of the current architecture, not the arch at
1683      the time the display command was given.  Therefore, we re-parse the
1684      expression if the current architecture has changed.  */
1685   if (d->exp != NULL && d->exp->gdbarch != get_current_arch ())
1686     {
1687       xfree (d->exp);
1688       d->exp = NULL;
1689       d->block = NULL;
1690     }
1691
1692   if (d->exp == NULL)
1693     {
1694       volatile struct gdb_exception ex;
1695
1696       TRY_CATCH (ex, RETURN_MASK_ALL)
1697         {
1698           innermost_block = NULL;
1699           d->exp = parse_expression (d->exp_string);
1700           d->block = innermost_block;
1701         }
1702       if (ex.reason < 0)
1703         {
1704           /* Can't re-parse the expression.  Disable this display item.  */
1705           d->enabled_p = 0;
1706           warning (_("Unable to display \"%s\": %s"),
1707                    d->exp_string, ex.message);
1708           return;
1709         }
1710     }
1711
1712   if (d->block)
1713     {
1714       if (d->pspace == current_program_space)
1715         within_current_scope = contained_in (get_selected_block (0), d->block);
1716       else
1717         within_current_scope = 0;
1718     }
1719   else
1720     within_current_scope = 1;
1721   if (!within_current_scope)
1722     return;
1723
1724   old_chain = make_cleanup_restore_integer (&current_display_number);
1725   current_display_number = d->number;
1726
1727   annotate_display_begin ();
1728   printf_filtered ("%d", d->number);
1729   annotate_display_number_end ();
1730   printf_filtered (": ");
1731   if (d->format.size)
1732     {
1733       volatile struct gdb_exception ex;
1734
1735       annotate_display_format ();
1736
1737       printf_filtered ("x/");
1738       if (d->format.count != 1)
1739         printf_filtered ("%d", d->format.count);
1740       printf_filtered ("%c", d->format.format);
1741       if (d->format.format != 'i' && d->format.format != 's')
1742         printf_filtered ("%c", d->format.size);
1743       printf_filtered (" ");
1744
1745       annotate_display_expression ();
1746
1747       puts_filtered (d->exp_string);
1748       annotate_display_expression_end ();
1749
1750       if (d->format.count != 1 || d->format.format == 'i')
1751         printf_filtered ("\n");
1752       else
1753         printf_filtered ("  ");
1754
1755       annotate_display_value ();
1756
1757       TRY_CATCH (ex, RETURN_MASK_ERROR)
1758         {
1759           struct value *val;
1760           CORE_ADDR addr;
1761
1762           val = evaluate_expression (d->exp);
1763           addr = value_as_address (val);
1764           if (d->format.format == 'i')
1765             addr = gdbarch_addr_bits_remove (d->exp->gdbarch, addr);
1766           do_examine (d->format, d->exp->gdbarch, addr);
1767         }
1768       if (ex.reason < 0)
1769         fprintf_filtered (gdb_stdout, _("<error: %s>\n"), ex.message);
1770     }
1771   else
1772     {
1773       struct value_print_options opts;
1774       volatile struct gdb_exception ex;
1775
1776       annotate_display_format ();
1777
1778       if (d->format.format)
1779         printf_filtered ("/%c ", d->format.format);
1780
1781       annotate_display_expression ();
1782
1783       puts_filtered (d->exp_string);
1784       annotate_display_expression_end ();
1785
1786       printf_filtered (" = ");
1787
1788       annotate_display_expression ();
1789
1790       get_formatted_print_options (&opts, d->format.format);
1791       opts.raw = d->format.raw;
1792
1793       TRY_CATCH (ex, RETURN_MASK_ERROR)
1794         {
1795           struct value *val;
1796
1797           val = evaluate_expression (d->exp);
1798           print_formatted (val, d->format.size, &opts, gdb_stdout);
1799         }
1800       if (ex.reason < 0)
1801         fprintf_filtered (gdb_stdout, _("<error: %s>"), ex.message);
1802       printf_filtered ("\n");
1803     }
1804
1805   annotate_display_end ();
1806
1807   gdb_flush (gdb_stdout);
1808   do_cleanups (old_chain);
1809 }
1810
1811 /* Display all of the values on the auto-display chain which can be
1812    evaluated in the current scope.  */
1813
1814 void
1815 do_displays (void)
1816 {
1817   struct display *d;
1818
1819   for (d = display_chain; d; d = d->next)
1820     do_one_display (d);
1821 }
1822
1823 /* Delete the auto-display which we were in the process of displaying.
1824    This is done when there is an error or a signal.  */
1825
1826 void
1827 disable_display (int num)
1828 {
1829   struct display *d;
1830
1831   for (d = display_chain; d; d = d->next)
1832     if (d->number == num)
1833       {
1834         d->enabled_p = 0;
1835         return;
1836       }
1837   printf_unfiltered (_("No display number %d.\n"), num);
1838 }
1839
1840 void
1841 disable_current_display (void)
1842 {
1843   if (current_display_number >= 0)
1844     {
1845       disable_display (current_display_number);
1846       fprintf_unfiltered (gdb_stderr,
1847                           _("Disabling display %d to "
1848                             "avoid infinite recursion.\n"),
1849                           current_display_number);
1850     }
1851   current_display_number = -1;
1852 }
1853
1854 static void
1855 display_info (char *ignore, int from_tty)
1856 {
1857   struct display *d;
1858
1859   if (!display_chain)
1860     printf_unfiltered (_("There are no auto-display expressions now.\n"));
1861   else
1862     printf_filtered (_("Auto-display expressions now in effect:\n\
1863 Num Enb Expression\n"));
1864
1865   for (d = display_chain; d; d = d->next)
1866     {
1867       printf_filtered ("%d:   %c  ", d->number, "ny"[(int) d->enabled_p]);
1868       if (d->format.size)
1869         printf_filtered ("/%d%c%c ", d->format.count, d->format.size,
1870                          d->format.format);
1871       else if (d->format.format)
1872         printf_filtered ("/%c ", d->format.format);
1873       puts_filtered (d->exp_string);
1874       if (d->block && !contained_in (get_selected_block (0), d->block))
1875         printf_filtered (_(" (cannot be evaluated in the current context)"));
1876       printf_filtered ("\n");
1877       gdb_flush (gdb_stdout);
1878     }
1879 }
1880
1881 /* Callback fo map_display_numbers, that enables or disables the
1882    passed in display D.  */
1883
1884 static void
1885 do_enable_disable_display (struct display *d, void *data)
1886 {
1887   d->enabled_p = *(int *) data;
1888 }
1889
1890 /* Implamentation of both the "disable display" and "enable display"
1891    commands.  ENABLE decides what to do.  */
1892
1893 static void
1894 enable_disable_display_command (char *args, int from_tty, int enable)
1895 {
1896   if (args == NULL)
1897     {
1898       struct display *d;
1899
1900       ALL_DISPLAYS (d)
1901         d->enabled_p = enable;
1902       return;
1903     }
1904
1905   map_display_numbers (args, do_enable_disable_display, &enable);
1906 }
1907
1908 /* The "enable display" command.  */
1909
1910 static void
1911 enable_display_command (char *args, int from_tty)
1912 {
1913   enable_disable_display_command (args, from_tty, 1);
1914 }
1915
1916 /* The "disable display" command.  */
1917
1918 static void
1919 disable_display_command (char *args, int from_tty)
1920 {
1921   enable_disable_display_command (args, from_tty, 0);
1922 }
1923
1924 /* display_chain items point to blocks and expressions.  Some expressions in
1925    turn may point to symbols.
1926    Both symbols and blocks are obstack_alloc'd on objfile_stack, and are
1927    obstack_free'd when a shared library is unloaded.
1928    Clear pointers that are about to become dangling.
1929    Both .exp and .block fields will be restored next time we need to display
1930    an item by re-parsing .exp_string field in the new execution context.  */
1931
1932 static void
1933 clear_dangling_display_expressions (struct so_list *solib)
1934 {
1935   struct objfile *objfile = solib->objfile;
1936   struct display *d;
1937
1938   /* With no symbol file we cannot have a block or expression from it.  */
1939   if (objfile == NULL)
1940     return;
1941   if (objfile->separate_debug_objfile_backlink)
1942     objfile = objfile->separate_debug_objfile_backlink;
1943   gdb_assert (objfile->pspace == solib->pspace);
1944
1945   for (d = display_chain; d != NULL; d = d->next)
1946     {
1947       if (d->pspace != solib->pspace)
1948         continue;
1949
1950       if (lookup_objfile_from_block (d->block) == objfile
1951           || (d->exp && exp_uses_objfile (d->exp, objfile)))
1952       {
1953         xfree (d->exp);
1954         d->exp = NULL;
1955         d->block = NULL;
1956       }
1957     }
1958 }
1959 \f
1960
1961 /* Print the value in stack frame FRAME of a variable specified by a
1962    struct symbol.  NAME is the name to print; if NULL then VAR's print
1963    name will be used.  STREAM is the ui_file on which to print the
1964    value.  INDENT specifies the number of indent levels to print
1965    before printing the variable name.
1966
1967    This function invalidates FRAME.  */
1968
1969 void
1970 print_variable_and_value (const char *name, struct symbol *var,
1971                           struct frame_info *frame,
1972                           struct ui_file *stream, int indent)
1973 {
1974   volatile struct gdb_exception except;
1975
1976   if (!name)
1977     name = SYMBOL_PRINT_NAME (var);
1978
1979   fprintf_filtered (stream, "%s%s = ", n_spaces (2 * indent), name);
1980   TRY_CATCH (except, RETURN_MASK_ERROR)
1981     {
1982       struct value *val;
1983       struct value_print_options opts;
1984
1985       val = read_var_value (var, frame);
1986       get_user_print_options (&opts);
1987       opts.deref_ref = 1;
1988       common_val_print (val, stream, indent, &opts, current_language);
1989
1990       /* common_val_print invalidates FRAME when a pretty printer calls inferior
1991          function.  */
1992       frame = NULL;
1993     }
1994   if (except.reason < 0)
1995     fprintf_filtered(stream, "<error reading variable %s (%s)>", name,
1996                      except.message);
1997   fprintf_filtered (stream, "\n");
1998 }
1999
2000 /* printf "printf format string" ARG to STREAM.  */
2001
2002 static void
2003 ui_printf (char *arg, struct ui_file *stream)
2004 {
2005   struct format_piece *fpieces;
2006   char *s = arg;
2007   struct value **val_args;
2008   int allocated_args = 20;
2009   struct cleanup *old_cleanups;
2010
2011   val_args = xmalloc (allocated_args * sizeof (struct value *));
2012   old_cleanups = make_cleanup (free_current_contents, &val_args);
2013
2014   if (s == 0)
2015     error_no_arg (_("format-control string and values to print"));
2016
2017   s = skip_spaces (s);
2018
2019   /* A format string should follow, enveloped in double quotes.  */
2020   if (*s++ != '"')
2021     error (_("Bad format string, missing '\"'."));
2022
2023   fpieces = parse_format_string (&s);
2024
2025   make_cleanup (free_format_pieces_cleanup, &fpieces);
2026
2027   if (*s++ != '"')
2028     error (_("Bad format string, non-terminated '\"'."));
2029   
2030   s = skip_spaces (s);
2031
2032   if (*s != ',' && *s != 0)
2033     error (_("Invalid argument syntax"));
2034
2035   if (*s == ',')
2036     s++;
2037   s = skip_spaces (s);
2038
2039   {
2040     int nargs = 0;
2041     int nargs_wanted;
2042     int i, fr;
2043     char *current_substring;
2044
2045     nargs_wanted = 0;
2046     for (fr = 0; fpieces[fr].string != NULL; fr++)
2047       if (fpieces[fr].argclass != literal_piece)
2048         ++nargs_wanted;
2049
2050     /* Now, parse all arguments and evaluate them.
2051        Store the VALUEs in VAL_ARGS.  */
2052
2053     while (*s != '\0')
2054       {
2055         char *s1;
2056
2057         if (nargs == allocated_args)
2058           val_args = (struct value **) xrealloc ((char *) val_args,
2059                                                  (allocated_args *= 2)
2060                                                  * sizeof (struct value *));
2061         s1 = s;
2062         val_args[nargs] = parse_to_comma_and_eval (&s1);
2063
2064         nargs++;
2065         s = s1;
2066         if (*s == ',')
2067           s++;
2068       }
2069
2070     if (nargs != nargs_wanted)
2071       error (_("Wrong number of arguments for specified format-string"));
2072
2073     /* Now actually print them.  */
2074     i = 0;
2075     for (fr = 0; fpieces[fr].string != NULL; fr++)
2076       {
2077         current_substring = fpieces[fr].string;
2078         switch (fpieces[fr].argclass)
2079           {
2080           case string_arg:
2081             {
2082               gdb_byte *str;
2083               CORE_ADDR tem;
2084               int j;
2085
2086               tem = value_as_address (val_args[i]);
2087
2088               /* This is a %s argument.  Find the length of the string.  */
2089               for (j = 0;; j++)
2090                 {
2091                   gdb_byte c;
2092
2093                   QUIT;
2094                   read_memory (tem + j, &c, 1);
2095                   if (c == 0)
2096                     break;
2097                 }
2098
2099               /* Copy the string contents into a string inside GDB.  */
2100               str = (gdb_byte *) alloca (j + 1);
2101               if (j != 0)
2102                 read_memory (tem, str, j);
2103               str[j] = 0;
2104
2105               fprintf_filtered (stream, current_substring, (char *) str);
2106             }
2107             break;
2108           case wide_string_arg:
2109             {
2110               gdb_byte *str;
2111               CORE_ADDR tem;
2112               int j;
2113               struct gdbarch *gdbarch
2114                 = get_type_arch (value_type (val_args[i]));
2115               enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
2116               struct type *wctype = lookup_typename (current_language, gdbarch,
2117                                                      "wchar_t", NULL, 0);
2118               int wcwidth = TYPE_LENGTH (wctype);
2119               gdb_byte *buf = alloca (wcwidth);
2120               struct obstack output;
2121               struct cleanup *inner_cleanup;
2122
2123               tem = value_as_address (val_args[i]);
2124
2125               /* This is a %s argument.  Find the length of the string.  */
2126               for (j = 0;; j += wcwidth)
2127                 {
2128                   QUIT;
2129                   read_memory (tem + j, buf, wcwidth);
2130                   if (extract_unsigned_integer (buf, wcwidth, byte_order) == 0)
2131                     break;
2132                 }
2133
2134               /* Copy the string contents into a string inside GDB.  */
2135               str = (gdb_byte *) alloca (j + wcwidth);
2136               if (j != 0)
2137                 read_memory (tem, str, j);
2138               memset (&str[j], 0, wcwidth);
2139
2140               obstack_init (&output);
2141               inner_cleanup = make_cleanup_obstack_free (&output);
2142
2143               convert_between_encodings (target_wide_charset (gdbarch),
2144                                          host_charset (),
2145                                          str, j, wcwidth,
2146                                          &output, translit_char);
2147               obstack_grow_str0 (&output, "");
2148
2149               fprintf_filtered (stream, current_substring,
2150                                 obstack_base (&output));
2151               do_cleanups (inner_cleanup);
2152             }
2153             break;
2154           case wide_char_arg:
2155             {
2156               struct gdbarch *gdbarch
2157                 = get_type_arch (value_type (val_args[i]));
2158               struct type *wctype = lookup_typename (current_language, gdbarch,
2159                                                      "wchar_t", NULL, 0);
2160               struct type *valtype;
2161               struct obstack output;
2162               struct cleanup *inner_cleanup;
2163               const gdb_byte *bytes;
2164
2165               valtype = value_type (val_args[i]);
2166               if (TYPE_LENGTH (valtype) != TYPE_LENGTH (wctype)
2167                   || TYPE_CODE (valtype) != TYPE_CODE_INT)
2168                 error (_("expected wchar_t argument for %%lc"));
2169
2170               bytes = value_contents (val_args[i]);
2171
2172               obstack_init (&output);
2173               inner_cleanup = make_cleanup_obstack_free (&output);
2174
2175               convert_between_encodings (target_wide_charset (gdbarch),
2176                                          host_charset (),
2177                                          bytes, TYPE_LENGTH (valtype),
2178                                          TYPE_LENGTH (valtype),
2179                                          &output, translit_char);
2180               obstack_grow_str0 (&output, "");
2181
2182               fprintf_filtered (stream, current_substring,
2183                                 obstack_base (&output));
2184               do_cleanups (inner_cleanup);
2185             }
2186             break;
2187           case double_arg:
2188             {
2189               struct type *type = value_type (val_args[i]);
2190               DOUBLEST val;
2191               int inv;
2192
2193               /* If format string wants a float, unchecked-convert the value
2194                  to floating point of the same size.  */
2195               type = float_type_from_length (type);
2196               val = unpack_double (type, value_contents (val_args[i]), &inv);
2197               if (inv)
2198                 error (_("Invalid floating value found in program."));
2199
2200               fprintf_filtered (stream, current_substring, (double) val);
2201               break;
2202             }
2203           case long_double_arg:
2204 #ifdef HAVE_LONG_DOUBLE
2205             {
2206               struct type *type = value_type (val_args[i]);
2207               DOUBLEST val;
2208               int inv;
2209
2210               /* If format string wants a float, unchecked-convert the value
2211                  to floating point of the same size.  */
2212               type = float_type_from_length (type);
2213               val = unpack_double (type, value_contents (val_args[i]), &inv);
2214               if (inv)
2215                 error (_("Invalid floating value found in program."));
2216
2217               fprintf_filtered (stream, current_substring,
2218                                 (long double) val);
2219               break;
2220             }
2221 #else
2222             error (_("long double not supported in printf"));
2223 #endif
2224           case long_long_arg:
2225 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
2226             {
2227               long long val = value_as_long (val_args[i]);
2228
2229               fprintf_filtered (stream, current_substring, val);
2230               break;
2231             }
2232 #else
2233             error (_("long long not supported in printf"));
2234 #endif
2235           case int_arg:
2236             {
2237               int val = value_as_long (val_args[i]);
2238
2239               fprintf_filtered (stream, current_substring, val);
2240               break;
2241             }
2242           case long_arg:
2243             {
2244               long val = value_as_long (val_args[i]);
2245
2246               fprintf_filtered (stream, current_substring, val);
2247               break;
2248             }
2249
2250           /* Handles decimal floating values.  */
2251         case decfloat_arg:
2252             {
2253               const gdb_byte *param_ptr = value_contents (val_args[i]);
2254
2255 #if defined (PRINTF_HAS_DECFLOAT)
2256               /* If we have native support for Decimal floating
2257                  printing, handle it here.  */
2258               fprintf_filtered (stream, current_substring, param_ptr);
2259 #else
2260
2261               /* As a workaround until vasprintf has native support for DFP
2262                we convert the DFP values to string and print them using
2263                the %s format specifier.  */
2264
2265               char *eos, *sos;
2266               int nnull_chars = 0;
2267
2268               /* Parameter data.  */
2269               struct type *param_type = value_type (val_args[i]);
2270               struct gdbarch *gdbarch = get_type_arch (param_type);
2271               enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
2272
2273               /* DFP output data.  */
2274               struct value *dfp_value = NULL;
2275               gdb_byte *dfp_ptr;
2276               int dfp_len = 16;
2277               gdb_byte dec[16];
2278               struct type *dfp_type = NULL;
2279               char decstr[MAX_DECIMAL_STRING];
2280
2281               /* Points to the end of the string so that we can go back
2282                  and check for DFP length modifiers.  */
2283               eos = current_substring + strlen (current_substring);
2284
2285               /* Look for the float/double format specifier.  */
2286               while (*eos != 'f' && *eos != 'e' && *eos != 'E'
2287                      && *eos != 'g' && *eos != 'G')
2288                   eos--;
2289
2290               sos = eos;
2291
2292               /* Search for the '%' char and extract the size and type of
2293                  the output decimal value based on its modifiers
2294                  (%Hf, %Df, %DDf).  */
2295               while (*--sos != '%')
2296                 {
2297                   if (*sos == 'H')
2298                     {
2299                       dfp_len = 4;
2300                       dfp_type = builtin_type (gdbarch)->builtin_decfloat;
2301                     }
2302                   else if (*sos == 'D' && *(sos - 1) == 'D')
2303                     {
2304                       dfp_len = 16;
2305                       dfp_type = builtin_type (gdbarch)->builtin_declong;
2306                       sos--;
2307                     }
2308                   else
2309                     {
2310                       dfp_len = 8;
2311                       dfp_type = builtin_type (gdbarch)->builtin_decdouble;
2312                     }
2313                 }
2314
2315               /* Replace %Hf, %Df and %DDf with %s's.  */
2316               *++sos = 's';
2317
2318               /* Go through the whole format string and pull the correct
2319                  number of chars back to compensate for the change in the
2320                  format specifier.  */
2321               while (nnull_chars < nargs - i)
2322                 {
2323                   if (*eos == '\0')
2324                     nnull_chars++;
2325
2326                   *++sos = *++eos;
2327                 }
2328
2329               /* Conversion between different DFP types.  */
2330               if (TYPE_CODE (param_type) == TYPE_CODE_DECFLOAT)
2331                 decimal_convert (param_ptr, TYPE_LENGTH (param_type),
2332                                  byte_order, dec, dfp_len, byte_order);
2333               else
2334                 /* If this is a non-trivial conversion, just output 0.
2335                    A correct converted value can be displayed by explicitly
2336                    casting to a DFP type.  */
2337                 decimal_from_string (dec, dfp_len, byte_order, "0");
2338
2339               dfp_value = value_from_decfloat (dfp_type, dec);
2340
2341               dfp_ptr = (gdb_byte *) value_contents (dfp_value);
2342
2343               decimal_to_string (dfp_ptr, dfp_len, byte_order, decstr);
2344
2345               /* Print the DFP value.  */
2346               fprintf_filtered (stream, current_substring, decstr);
2347
2348               break;
2349 #endif
2350             }
2351
2352           case ptr_arg:
2353             {
2354               /* We avoid the host's %p because pointers are too
2355                  likely to be the wrong size.  The only interesting
2356                  modifier for %p is a width; extract that, and then
2357                  handle %p as glibc would: %#x or a literal "(nil)".  */
2358
2359               char *p, *fmt, *fmt_p;
2360 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
2361               long long val = value_as_long (val_args[i]);
2362 #else
2363               long val = value_as_long (val_args[i]);
2364 #endif
2365
2366               fmt = alloca (strlen (current_substring) + 5);
2367
2368               /* Copy up to the leading %.  */
2369               p = current_substring;
2370               fmt_p = fmt;
2371               while (*p)
2372                 {
2373                   int is_percent = (*p == '%');
2374
2375                   *fmt_p++ = *p++;
2376                   if (is_percent)
2377                     {
2378                       if (*p == '%')
2379                         *fmt_p++ = *p++;
2380                       else
2381                         break;
2382                     }
2383                 }
2384
2385               if (val != 0)
2386                 *fmt_p++ = '#';
2387
2388               /* Copy any width.  */
2389               while (*p >= '0' && *p < '9')
2390                 *fmt_p++ = *p++;
2391
2392               gdb_assert (*p == 'p' && *(p + 1) == '\0');
2393               if (val != 0)
2394                 {
2395 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
2396                   *fmt_p++ = 'l';
2397 #endif
2398                   *fmt_p++ = 'l';
2399                   *fmt_p++ = 'x';
2400                   *fmt_p++ = '\0';
2401                   fprintf_filtered (stream, fmt, val);
2402                 }
2403               else
2404                 {
2405                   *fmt_p++ = 's';
2406                   *fmt_p++ = '\0';
2407                   fprintf_filtered (stream, fmt, "(nil)");
2408                 }
2409
2410               break;
2411             }
2412           case literal_piece:
2413             /* Print a portion of the format string that has no
2414                directives.  Note that this will not include any
2415                ordinary %-specs, but it might include "%%".  That is
2416                why we use printf_filtered and not puts_filtered here.
2417                Also, we pass a dummy argument because some platforms
2418                have modified GCC to include -Wformat-security by
2419                default, which will warn here if there is no
2420                argument.  */
2421             fprintf_filtered (stream, current_substring, 0);
2422             break;
2423           default:
2424             internal_error (__FILE__, __LINE__,
2425                             _("failed internal consistency check"));
2426           }
2427         /* Maybe advance to the next argument.  */
2428         if (fpieces[fr].argclass != literal_piece)
2429           ++i;
2430       }
2431   }
2432   do_cleanups (old_cleanups);
2433 }
2434
2435 /* Implement the "printf" command.  */
2436
2437 static void
2438 printf_command (char *arg, int from_tty)
2439 {
2440   ui_printf (arg, gdb_stdout);
2441 }
2442
2443 /* Implement the "eval" command.  */
2444
2445 static void
2446 eval_command (char *arg, int from_tty)
2447 {
2448   struct ui_file *ui_out = mem_fileopen ();
2449   struct cleanup *cleanups = make_cleanup_ui_file_delete (ui_out);
2450   char *expanded;
2451
2452   ui_printf (arg, ui_out);
2453
2454   expanded = ui_file_xstrdup (ui_out, NULL);
2455   make_cleanup (xfree, expanded);
2456
2457   execute_command (expanded, from_tty);
2458
2459   do_cleanups (cleanups);
2460 }
2461
2462 void
2463 _initialize_printcmd (void)
2464 {
2465   struct cmd_list_element *c;
2466
2467   current_display_number = -1;
2468
2469   observer_attach_solib_unloaded (clear_dangling_display_expressions);
2470
2471   add_info ("address", address_info,
2472             _("Describe where symbol SYM is stored."));
2473
2474   add_info ("symbol", sym_info, _("\
2475 Describe what symbol is at location ADDR.\n\
2476 Only for symbols with fixed locations (global or static scope)."));
2477
2478   add_com ("x", class_vars, x_command, _("\
2479 Examine memory: x/FMT ADDRESS.\n\
2480 ADDRESS is an expression for the memory address to examine.\n\
2481 FMT is a repeat count followed by a format letter and a size letter.\n\
2482 Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),\n\
2483   t(binary), f(float), a(address), i(instruction), c(char) and s(string).\n\
2484 Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).\n\
2485 The specified number of objects of the specified size are printed\n\
2486 according to the format.\n\n\
2487 Defaults for format and size letters are those previously used.\n\
2488 Default count is 1.  Default address is following last thing printed\n\
2489 with this command or \"print\"."));
2490
2491 #if 0
2492   add_com ("whereis", class_vars, whereis_command,
2493            _("Print line number and file of definition of variable."));
2494 #endif
2495
2496   add_info ("display", display_info, _("\
2497 Expressions to display when program stops, with code numbers."));
2498
2499   add_cmd ("undisplay", class_vars, undisplay_command, _("\
2500 Cancel some expressions to be displayed when program stops.\n\
2501 Arguments are the code numbers of the expressions to stop displaying.\n\
2502 No argument means cancel all automatic-display expressions.\n\
2503 \"delete display\" has the same effect as this command.\n\
2504 Do \"info display\" to see current list of code numbers."),
2505            &cmdlist);
2506
2507   add_com ("display", class_vars, display_command, _("\
2508 Print value of expression EXP each time the program stops.\n\
2509 /FMT may be used before EXP as in the \"print\" command.\n\
2510 /FMT \"i\" or \"s\" or including a size-letter is allowed,\n\
2511 as in the \"x\" command, and then EXP is used to get the address to examine\n\
2512 and examining is done as in the \"x\" command.\n\n\
2513 With no argument, display all currently requested auto-display expressions.\n\
2514 Use \"undisplay\" to cancel display requests previously made."));
2515
2516   add_cmd ("display", class_vars, enable_display_command, _("\
2517 Enable some expressions to be displayed when program stops.\n\
2518 Arguments are the code numbers of the expressions to resume displaying.\n\
2519 No argument means enable all automatic-display expressions.\n\
2520 Do \"info display\" to see current list of code numbers."), &enablelist);
2521
2522   add_cmd ("display", class_vars, disable_display_command, _("\
2523 Disable 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 disable all automatic-display expressions.\n\
2526 Do \"info display\" to see current list of code numbers."), &disablelist);
2527
2528   add_cmd ("display", class_vars, undisplay_command, _("\
2529 Cancel some expressions to be displayed when program stops.\n\
2530 Arguments are the code numbers of the expressions to stop displaying.\n\
2531 No argument means cancel all automatic-display expressions.\n\
2532 Do \"info display\" to see current list of code numbers."), &deletelist);
2533
2534   add_com ("printf", class_vars, printf_command, _("\
2535 printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
2536 This is useful for formatted output in user-defined commands."));
2537
2538   add_com ("output", class_vars, output_command, _("\
2539 Like \"print\" but don't put in value history and don't print newline.\n\
2540 This is useful in user-defined commands."));
2541
2542   add_prefix_cmd ("set", class_vars, set_command, _("\
2543 Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2544 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2545 example).  VAR may be a debugger \"convenience\" variable (names starting\n\
2546 with $), a register (a few standard names starting with $), or an actual\n\
2547 variable in the program being debugged.  EXP is any valid expression.\n\
2548 Use \"set variable\" for variables with names identical to set subcommands.\n\
2549 \n\
2550 With a subcommand, this command modifies parts of the gdb environment.\n\
2551 You can see these environment settings with the \"show\" command."),
2552                   &setlist, "set ", 1, &cmdlist);
2553   if (dbx_commands)
2554     add_com ("assign", class_vars, set_command, _("\
2555 Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2556 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2557 example).  VAR may be a debugger \"convenience\" variable (names starting\n\
2558 with $), a register (a few standard names starting with $), or an actual\n\
2559 variable in the program being debugged.  EXP is any valid expression.\n\
2560 Use \"set variable\" for variables with names identical to set subcommands.\n\
2561 \nWith a subcommand, this command modifies parts of the gdb environment.\n\
2562 You can see these environment settings with the \"show\" command."));
2563
2564   /* "call" is the same as "set", but handy for dbx users to call fns.  */
2565   c = add_com ("call", class_vars, call_command, _("\
2566 Call a function in the program.\n\
2567 The argument is the function name and arguments, in the notation of the\n\
2568 current working language.  The result is printed and saved in the value\n\
2569 history, if it is not void."));
2570   set_cmd_completer (c, expression_completer);
2571
2572   add_cmd ("variable", class_vars, set_command, _("\
2573 Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2574 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2575 example).  VAR may be a debugger \"convenience\" variable (names starting\n\
2576 with $), a register (a few standard names starting with $), or an actual\n\
2577 variable in the program being debugged.  EXP is any valid expression.\n\
2578 This may usually be abbreviated to simply \"set\"."),
2579            &setlist);
2580
2581   c = add_com ("print", class_vars, print_command, _("\
2582 Print value of expression EXP.\n\
2583 Variables accessible are those of the lexical environment of the selected\n\
2584 stack frame, plus all those whose scope is global or an entire file.\n\
2585 \n\
2586 $NUM gets previous value number NUM.  $ and $$ are the last two values.\n\
2587 $$NUM refers to NUM'th value back from the last one.\n\
2588 Names starting with $ refer to registers (with the values they would have\n\
2589 if the program were to return to the stack frame now selected, restoring\n\
2590 all registers saved by frames farther in) or else to debugger\n\
2591 \"convenience\" variables (any such name not a known register).\n\
2592 Use assignment expressions to give values to convenience variables.\n\
2593 \n\
2594 {TYPE}ADREXP refers to a datum of data type TYPE, located at address ADREXP.\n\
2595 @ is a binary operator for treating consecutive data objects\n\
2596 anywhere in memory as an array.  FOO@NUM gives an array whose first\n\
2597 element is FOO, whose second element is stored in the space following\n\
2598 where FOO is stored, etc.  FOO must be an expression whose value\n\
2599 resides in memory.\n\
2600 \n\
2601 EXP may be preceded with /FMT, where FMT is a format letter\n\
2602 but no count or size letter (see \"x\" command)."));
2603   set_cmd_completer (c, expression_completer);
2604   add_com_alias ("p", "print", class_vars, 1);
2605
2606   c = add_com ("inspect", class_vars, inspect_command, _("\
2607 Same as \"print\" command, except that if you are running in the epoch\n\
2608 environment, the value is printed in its own window."));
2609   set_cmd_completer (c, expression_completer);
2610
2611   add_setshow_uinteger_cmd ("max-symbolic-offset", no_class,
2612                             &max_symbolic_offset, _("\
2613 Set the largest offset that will be printed in <symbol+1234> form."), _("\
2614 Show the largest offset that will be printed in <symbol+1234> form."), NULL,
2615                             NULL,
2616                             show_max_symbolic_offset,
2617                             &setprintlist, &showprintlist);
2618   add_setshow_boolean_cmd ("symbol-filename", no_class,
2619                            &print_symbol_filename, _("\
2620 Set printing of source filename and line number with <symbol>."), _("\
2621 Show printing of source filename and line number with <symbol>."), NULL,
2622                            NULL,
2623                            show_print_symbol_filename,
2624                            &setprintlist, &showprintlist);
2625
2626   add_com ("eval", no_class, eval_command, _("\
2627 Convert \"printf format string\", arg1, arg2, arg3, ..., argn to\n\
2628 a command line, and call it."));
2629 }