* printcmd.c (print_address_demangle): Add 'opts' argument.
[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
53 #ifdef TUI
54 #include "tui/tui.h"            /* For tui_active et al.   */
55 #endif
56
57 #if defined(__MINGW32__) && !defined(PRINTF_HAS_LONG_LONG)
58 # define USE_PRINTF_I64 1
59 # define PRINTF_HAS_LONG_LONG
60 #else
61 # define USE_PRINTF_I64 0
62 #endif
63
64 struct format_data
65   {
66     int count;
67     char format;
68     char size;
69
70     /* True if the value should be printed raw -- that is, bypassing
71        python-based formatters.  */
72     unsigned char raw;
73   };
74
75 /* Last specified output format.  */
76
77 static char last_format = 0;
78
79 /* Last specified examination size.  'b', 'h', 'w' or `q'.  */
80
81 static char last_size = 'w';
82
83 /* Default address to examine next, and associated architecture.  */
84
85 static struct gdbarch *next_gdbarch;
86 static CORE_ADDR next_address;
87
88 /* Number of delay instructions following current disassembled insn.  */
89
90 static int branch_delay_insns;
91
92 /* Last address examined.  */
93
94 static CORE_ADDR last_examine_address;
95
96 /* Contents of last address examined.
97    This is not valid past the end of the `x' command!  */
98
99 static struct value *last_examine_value;
100
101 /* Largest offset between a symbolic value and an address, that will be
102    printed as `0x1234 <symbol+offset>'.  */
103
104 static unsigned int max_symbolic_offset = UINT_MAX;
105 static void
106 show_max_symbolic_offset (struct ui_file *file, int from_tty,
107                           struct cmd_list_element *c, const char *value)
108 {
109   fprintf_filtered (file,
110                     _("The largest offset that will be "
111                       "printed in <symbol+1234> form is %s.\n"),
112                     value);
113 }
114
115 /* Append the source filename and linenumber of the symbol when
116    printing a symbolic value as `<symbol at filename:linenum>' if set.  */
117 static int print_symbol_filename = 0;
118 static void
119 show_print_symbol_filename (struct ui_file *file, int from_tty,
120                             struct cmd_list_element *c, const char *value)
121 {
122   fprintf_filtered (file, _("Printing of source filename and "
123                             "line number with <symbol> is %s.\n"),
124                     value);
125 }
126
127 /* Number of auto-display expression currently being displayed.
128    So that we can disable it if we get a signal within it.
129    -1 when not doing one.  */
130
131 int current_display_number;
132
133 struct display
134   {
135     /* Chain link to next auto-display item.  */
136     struct display *next;
137
138     /* The expression as the user typed it.  */
139     char *exp_string;
140
141     /* Expression to be evaluated and displayed.  */
142     struct expression *exp;
143
144     /* Item number of this auto-display item.  */
145     int number;
146
147     /* Display format specified.  */
148     struct format_data format;
149
150     /* Program space associated with `block'.  */
151     struct program_space *pspace;
152
153     /* Innermost block required by this expression when evaluated.  */
154     struct block *block;
155
156     /* Status of this display (enabled or disabled).  */
157     int enabled_p;
158   };
159
160 /* Chain of expressions whose values should be displayed
161    automatically each time the program stops.  */
162
163 static struct display *display_chain;
164
165 static int display_number;
166
167 /* Walk the following statement or block through all displays.
168    ALL_DISPLAYS_SAFE does so even if the statement deletes the current
169    display.  */
170
171 #define ALL_DISPLAYS(B)                         \
172   for (B = display_chain; B; B = B->next)
173
174 #define ALL_DISPLAYS_SAFE(B,TMP)                \
175   for (B = display_chain;                       \
176        B ? (TMP = B->next, 1): 0;               \
177        B = TMP)
178
179 /* Prototypes for exported functions.  */
180
181 void output_command (char *, int);
182
183 void _initialize_printcmd (void);
184
185 /* Prototypes for local functions.  */
186
187 static void do_one_display (struct display *);
188 \f
189
190 /* Decode a format specification.  *STRING_PTR should point to it.
191    OFORMAT and OSIZE are used as defaults for the format and size
192    if none are given in the format specification.
193    If OSIZE is zero, then the size field of the returned value
194    should be set only if a size is explicitly specified by the
195    user.
196    The structure returned describes all the data
197    found in the specification.  In addition, *STRING_PTR is advanced
198    past the specification and past all whitespace following it.  */
199
200 static struct format_data
201 decode_format (char **string_ptr, int oformat, int osize)
202 {
203   struct format_data val;
204   char *p = *string_ptr;
205
206   val.format = '?';
207   val.size = '?';
208   val.count = 1;
209   val.raw = 0;
210
211   if (*p >= '0' && *p <= '9')
212     val.count = atoi (p);
213   while (*p >= '0' && *p <= '9')
214     p++;
215
216   /* Now process size or format letters that follow.  */
217
218   while (1)
219     {
220       if (*p == 'b' || *p == 'h' || *p == 'w' || *p == 'g')
221         val.size = *p++;
222       else if (*p == 'r')
223         {
224           val.raw = 1;
225           p++;
226         }
227       else if (*p >= 'a' && *p <= 'z')
228         val.format = *p++;
229       else
230         break;
231     }
232
233   while (*p == ' ' || *p == '\t')
234     p++;
235   *string_ptr = p;
236
237   /* Set defaults for format and size if not specified.  */
238   if (val.format == '?')
239     {
240       if (val.size == '?')
241         {
242           /* Neither has been specified.  */
243           val.format = oformat;
244           val.size = osize;
245         }
246       else
247         /* If a size is specified, any format makes a reasonable
248            default except 'i'.  */
249         val.format = oformat == 'i' ? 'x' : oformat;
250     }
251   else if (val.size == '?')
252     switch (val.format)
253       {
254       case 'a':
255         /* Pick the appropriate size for an address.  This is deferred
256            until do_examine when we know the actual architecture to use.
257            A special size value of 'a' is used to indicate this case.  */
258         val.size = osize ? 'a' : osize;
259         break;
260       case 'f':
261         /* Floating point has to be word or giantword.  */
262         if (osize == 'w' || osize == 'g')
263           val.size = osize;
264         else
265           /* Default it to giantword if the last used size is not
266              appropriate.  */
267           val.size = osize ? 'g' : osize;
268         break;
269       case 'c':
270         /* Characters default to one byte.  */
271         val.size = osize ? 'b' : osize;
272         break;
273       case 's':
274         /* Display strings with byte size chars unless explicitly
275            specified.  */
276         val.size = '\0';
277         break;
278
279       default:
280         /* The default is the size most recently specified.  */
281         val.size = osize;
282       }
283
284   return val;
285 }
286 \f
287 /* Print value VAL on stream according to OPTIONS.
288    Do not end with a newline.
289    SIZE is the letter for the size of datum being printed.
290    This is used to pad hex numbers so they line up.  SIZE is 0
291    for print / output and set for examine.  */
292
293 static void
294 print_formatted (struct value *val, int size,
295                  const struct value_print_options *options,
296                  struct ui_file *stream)
297 {
298   struct type *type = check_typedef (value_type (val));
299   int len = TYPE_LENGTH (type);
300
301   if (VALUE_LVAL (val) == lval_memory)
302     next_address = value_address (val) + len;
303
304   if (size)
305     {
306       switch (options->format)
307         {
308         case 's':
309           {
310             struct type *elttype = value_type (val);
311
312             next_address = (value_address (val)
313                             + val_print_string (elttype, NULL,
314                                                 value_address (val), -1,
315                                                 stream, options) * len);
316           }
317           return;
318
319         case 'i':
320           /* We often wrap here if there are long symbolic names.  */
321           wrap_here ("    ");
322           next_address = (value_address (val)
323                           + gdb_print_insn (get_type_arch (type),
324                                             value_address (val), stream,
325                                             &branch_delay_insns));
326           return;
327         }
328     }
329
330   if (options->format == 0 || options->format == 's'
331       || TYPE_CODE (type) == TYPE_CODE_REF
332       || TYPE_CODE (type) == TYPE_CODE_ARRAY
333       || TYPE_CODE (type) == TYPE_CODE_STRING
334       || TYPE_CODE (type) == TYPE_CODE_STRUCT
335       || TYPE_CODE (type) == TYPE_CODE_UNION
336       || TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
337     value_print (val, stream, options);
338   else
339     /* User specified format, so don't look to the type to tell us
340        what to do.  */
341     val_print_scalar_formatted (type,
342                                 value_contents_for_printing (val),
343                                 value_embedded_offset (val),
344                                 val,
345                                 options, size, stream);
346 }
347
348 /* Return builtin floating point type of same length as TYPE.
349    If no such type is found, return TYPE itself.  */
350 static struct type *
351 float_type_from_length (struct type *type)
352 {
353   struct gdbarch *gdbarch = get_type_arch (type);
354   const struct builtin_type *builtin = builtin_type (gdbarch);
355   unsigned int len = TYPE_LENGTH (type);
356
357   if (len == TYPE_LENGTH (builtin->builtin_float))
358     type = builtin->builtin_float;
359   else if (len == TYPE_LENGTH (builtin->builtin_double))
360     type = builtin->builtin_double;
361   else if (len == TYPE_LENGTH (builtin->builtin_long_double))
362     type = builtin->builtin_long_double;
363
364   return type;
365 }
366
367 /* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
368    according to OPTIONS and SIZE on STREAM.  Formats s and i are not
369    supported at this level.  */
370
371 void
372 print_scalar_formatted (const void *valaddr, struct type *type,
373                         const struct value_print_options *options,
374                         int size, struct ui_file *stream)
375 {
376   struct gdbarch *gdbarch = get_type_arch (type);
377   LONGEST val_long = 0;
378   unsigned int len = TYPE_LENGTH (type);
379   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
380
381   /* String printing should go through val_print_scalar_formatted.  */
382   gdb_assert (options->format != 's');
383
384   if (len > sizeof(LONGEST) &&
385       (TYPE_CODE (type) == TYPE_CODE_INT
386        || TYPE_CODE (type) == TYPE_CODE_ENUM))
387     {
388       switch (options->format)
389         {
390         case 'o':
391           print_octal_chars (stream, valaddr, len, byte_order);
392           return;
393         case 'u':
394         case 'd':
395           print_decimal_chars (stream, valaddr, len, byte_order);
396           return;
397         case 't':
398           print_binary_chars (stream, valaddr, len, byte_order);
399           return;
400         case 'x':
401           print_hex_chars (stream, valaddr, len, byte_order);
402           return;
403         case 'c':
404           print_char_chars (stream, type, valaddr, len, byte_order);
405           return;
406         default:
407           break;
408         };
409     }
410
411   if (options->format != 'f')
412     val_long = unpack_long (type, valaddr);
413
414   /* If the value is a pointer, and pointers and addresses are not the
415      same, then at this point, the value's length (in target bytes) is
416      gdbarch_addr_bit/TARGET_CHAR_BIT, not TYPE_LENGTH (type).  */
417   if (TYPE_CODE (type) == TYPE_CODE_PTR)
418     len = gdbarch_addr_bit (gdbarch) / TARGET_CHAR_BIT;
419
420   /* If we are printing it as unsigned, truncate it in case it is actually
421      a negative signed value (e.g. "print/u (short)-1" should print 65535
422      (if shorts are 16 bits) instead of 4294967295).  */
423   if (options->format != 'd' || TYPE_UNSIGNED (type))
424     {
425       if (len < sizeof (LONGEST))
426         val_long &= ((LONGEST) 1 << HOST_CHAR_BIT * len) - 1;
427     }
428
429   switch (options->format)
430     {
431     case 'x':
432       if (!size)
433         {
434           /* No size specified, like in print.  Print varying # of digits.  */
435           print_longest (stream, 'x', 1, val_long);
436         }
437       else
438         switch (size)
439           {
440           case 'b':
441           case 'h':
442           case 'w':
443           case 'g':
444             print_longest (stream, size, 1, val_long);
445             break;
446           default:
447             error (_("Undefined output size \"%c\"."), size);
448           }
449       break;
450
451     case 'd':
452       print_longest (stream, 'd', 1, val_long);
453       break;
454
455     case 'u':
456       print_longest (stream, 'u', 0, val_long);
457       break;
458
459     case 'o':
460       if (val_long)
461         print_longest (stream, 'o', 1, val_long);
462       else
463         fprintf_filtered (stream, "0");
464       break;
465
466     case 'a':
467       {
468         CORE_ADDR addr = unpack_pointer (type, valaddr);
469
470         print_address (gdbarch, addr, stream);
471       }
472       break;
473
474     case 'c':
475       {
476         struct value_print_options opts = *options;
477
478         opts.format = 0;
479         if (TYPE_UNSIGNED (type))
480           type = builtin_type (gdbarch)->builtin_true_unsigned_char;
481         else
482           type = builtin_type (gdbarch)->builtin_true_char;
483
484         value_print (value_from_longest (type, val_long), stream, &opts);
485       }
486       break;
487
488     case 'f':
489       type = float_type_from_length (type);
490       print_floating (valaddr, type, stream);
491       break;
492
493     case 0:
494       internal_error (__FILE__, __LINE__,
495                       _("failed internal consistency check"));
496
497     case 't':
498       /* Binary; 't' stands for "two".  */
499       {
500         char bits[8 * (sizeof val_long) + 1];
501         char buf[8 * (sizeof val_long) + 32];
502         char *cp = bits;
503         int width;
504
505         if (!size)
506           width = 8 * (sizeof val_long);
507         else
508           switch (size)
509             {
510             case 'b':
511               width = 8;
512               break;
513             case 'h':
514               width = 16;
515               break;
516             case 'w':
517               width = 32;
518               break;
519             case 'g':
520               width = 64;
521               break;
522             default:
523               error (_("Undefined output size \"%c\"."), size);
524             }
525
526         bits[width] = '\0';
527         while (width-- > 0)
528           {
529             bits[width] = (val_long & 1) ? '1' : '0';
530             val_long >>= 1;
531           }
532         if (!size)
533           {
534             while (*cp && *cp == '0')
535               cp++;
536             if (*cp == '\0')
537               cp--;
538           }
539         strncpy (buf, cp, sizeof (bits));
540         fputs_filtered (buf, stream);
541       }
542       break;
543
544     default:
545       error (_("Undefined output format \"%c\"."), options->format);
546     }
547 }
548
549 /* Specify default address for `x' command.
550    The `info lines' command uses this.  */
551
552 void
553 set_next_address (struct gdbarch *gdbarch, CORE_ADDR addr)
554 {
555   struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
556
557   next_gdbarch = gdbarch;
558   next_address = addr;
559
560   /* Make address available to the user as $_.  */
561   set_internalvar (lookup_internalvar ("_"),
562                    value_from_pointer (ptr_type, addr));
563 }
564
565 /* Optionally print address ADDR symbolically as <SYMBOL+OFFSET> on STREAM,
566    after LEADIN.  Print nothing if no symbolic name is found nearby.
567    Optionally also print source file and line number, if available.
568    DO_DEMANGLE controls whether to print a symbol in its native "raw" form,
569    or to interpret it as a possible C++ name and convert it back to source
570    form.  However note that DO_DEMANGLE can be overridden by the specific
571    settings of the demangle and asm_demangle variables.  */
572
573 void
574 print_address_symbolic (struct gdbarch *gdbarch, CORE_ADDR addr,
575                         struct ui_file *stream,
576                         int do_demangle, char *leadin)
577 {
578   char *name = NULL;
579   char *filename = NULL;
580   int unmapped = 0;
581   int offset = 0;
582   int line = 0;
583
584   /* Throw away both name and filename.  */
585   struct cleanup *cleanup_chain = make_cleanup (free_current_contents, &name);
586   make_cleanup (free_current_contents, &filename);
587
588   if (build_address_symbolic (gdbarch, addr, do_demangle, &name, &offset,
589                               &filename, &line, &unmapped))
590     {
591       do_cleanups (cleanup_chain);
592       return;
593     }
594
595   fputs_filtered (leadin, stream);
596   if (unmapped)
597     fputs_filtered ("<*", stream);
598   else
599     fputs_filtered ("<", stream);
600   fputs_filtered (name, stream);
601   if (offset != 0)
602     fprintf_filtered (stream, "+%u", (unsigned int) offset);
603
604   /* Append source filename and line number if desired.  Give specific
605      line # of this addr, if we have it; else line # of the nearest symbol.  */
606   if (print_symbol_filename && filename != NULL)
607     {
608       if (line != -1)
609         fprintf_filtered (stream, " at %s:%d", filename, line);
610       else
611         fprintf_filtered (stream, " in %s", filename);
612     }
613   if (unmapped)
614     fputs_filtered ("*>", stream);
615   else
616     fputs_filtered (">", stream);
617
618   do_cleanups (cleanup_chain);
619 }
620
621 /* Given an address ADDR return all the elements needed to print the
622    address in a symbolic form.  NAME can be mangled or not depending
623    on DO_DEMANGLE (and also on the asm_demangle global variable,
624    manipulated via ''set print asm-demangle'').  Return 0 in case of
625    success, when all the info in the OUT paramters is valid.  Return 1
626    otherwise.  */
627 int
628 build_address_symbolic (struct gdbarch *gdbarch,
629                         CORE_ADDR addr,  /* IN */
630                         int do_demangle, /* IN */
631                         char **name,     /* OUT */
632                         int *offset,     /* OUT */
633                         char **filename, /* OUT */
634                         int *line,       /* OUT */
635                         int *unmapped)   /* OUT */
636 {
637   struct minimal_symbol *msymbol;
638   struct symbol *symbol;
639   CORE_ADDR name_location = 0;
640   struct obj_section *section = NULL;
641   const char *name_temp = "";
642   
643   /* Let's say it is mapped (not unmapped).  */
644   *unmapped = 0;
645
646   /* Determine if the address is in an overlay, and whether it is
647      mapped.  */
648   if (overlay_debugging)
649     {
650       section = find_pc_overlay (addr);
651       if (pc_in_unmapped_range (addr, section))
652         {
653           *unmapped = 1;
654           addr = overlay_mapped_address (addr, section);
655         }
656     }
657
658   /* First try to find the address in the symbol table, then
659      in the minsyms.  Take the closest one.  */
660
661   /* This is defective in the sense that it only finds text symbols.  So
662      really this is kind of pointless--we should make sure that the
663      minimal symbols have everything we need (by changing that we could
664      save some memory, but for many debug format--ELF/DWARF or
665      anything/stabs--it would be inconvenient to eliminate those minimal
666      symbols anyway).  */
667   msymbol = lookup_minimal_symbol_by_pc_section (addr, section);
668   symbol = find_pc_sect_function (addr, section);
669
670   if (symbol)
671     {
672       /* If this is a function (i.e. a code address), strip out any
673          non-address bits.  For instance, display a pointer to the
674          first instruction of a Thumb function as <function>; the
675          second instruction will be <function+2>, even though the
676          pointer is <function+3>.  This matches the ISA behavior.  */
677       addr = gdbarch_addr_bits_remove (gdbarch, addr);
678
679       name_location = BLOCK_START (SYMBOL_BLOCK_VALUE (symbol));
680       if (do_demangle || asm_demangle)
681         name_temp = SYMBOL_PRINT_NAME (symbol);
682       else
683         name_temp = SYMBOL_LINKAGE_NAME (symbol);
684     }
685
686   if (msymbol != NULL)
687     {
688       if (SYMBOL_VALUE_ADDRESS (msymbol) > name_location || symbol == NULL)
689         {
690           /* The msymbol is closer to the address than the symbol;
691              use the msymbol instead.  */
692           symbol = 0;
693           name_location = SYMBOL_VALUE_ADDRESS (msymbol);
694           if (do_demangle || asm_demangle)
695             name_temp = SYMBOL_PRINT_NAME (msymbol);
696           else
697             name_temp = SYMBOL_LINKAGE_NAME (msymbol);
698         }
699     }
700   if (symbol == NULL && msymbol == NULL)
701     return 1;
702
703   /* If the nearest symbol is too far away, don't print anything symbolic.  */
704
705   /* For when CORE_ADDR is larger than unsigned int, we do math in
706      CORE_ADDR.  But when we detect unsigned wraparound in the
707      CORE_ADDR math, we ignore this test and print the offset,
708      because addr+max_symbolic_offset has wrapped through the end
709      of the address space back to the beginning, giving bogus comparison.  */
710   if (addr > name_location + max_symbolic_offset
711       && name_location + max_symbolic_offset > name_location)
712     return 1;
713
714   *offset = addr - name_location;
715
716   *name = xstrdup (name_temp);
717
718   if (print_symbol_filename)
719     {
720       struct symtab_and_line sal;
721
722       sal = find_pc_sect_line (addr, section, 0);
723
724       if (sal.symtab)
725         {
726           *filename = xstrdup (sal.symtab->filename);
727           *line = sal.line;
728         }
729     }
730   return 0;
731 }
732
733
734 /* Print address ADDR symbolically on STREAM.
735    First print it as a number.  Then perhaps print
736    <SYMBOL + OFFSET> after the number.  */
737
738 void
739 print_address (struct gdbarch *gdbarch,
740                CORE_ADDR addr, struct ui_file *stream)
741 {
742   fputs_filtered (paddress (gdbarch, addr), stream);
743   print_address_symbolic (gdbarch, addr, stream, asm_demangle, " ");
744 }
745
746 /* Return a prefix for instruction address:
747    "=> " for current instruction, else "   ".  */
748
749 const char *
750 pc_prefix (CORE_ADDR addr)
751 {
752   if (has_stack_frames ())
753     {
754       struct frame_info *frame;
755       CORE_ADDR pc;
756
757       frame = get_selected_frame (NULL);
758       if (get_frame_pc_if_available (frame, &pc) && pc == addr)
759         return "=> ";
760     }
761   return "   ";
762 }
763
764 /* Print address ADDR symbolically on STREAM.  Parameter DEMANGLE
765    controls whether to print the symbolic name "raw" or demangled.
766    Global setting "addressprint" controls whether to print hex address
767    or not.  */
768
769 void
770 print_address_demangle (const struct value_print_options *opts,
771                         struct gdbarch *gdbarch, CORE_ADDR addr,
772                         struct ui_file *stream, int do_demangle)
773 {
774   if (addr == 0)
775     {
776       fprintf_filtered (stream, "0");
777     }
778   else if (opts->addressprint)
779     {
780       fputs_filtered (paddress (gdbarch, addr), stream);
781       print_address_symbolic (gdbarch, addr, stream, do_demangle, " ");
782     }
783   else
784     {
785       print_address_symbolic (gdbarch, addr, stream, do_demangle, "");
786     }
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   struct display *b, *tmp;
1612   int num;
1613
1614   if (args == NULL)
1615     error_no_arg (_("one or more display numbers"));
1616
1617   init_number_or_range (&state, args);
1618
1619   while (!state.finished)
1620     {
1621       char *p = state.string;
1622
1623       num = get_number_or_range (&state);
1624       if (num == 0)
1625         warning (_("bad display number at or near '%s'"), p);
1626       else
1627         {
1628           struct display *d, *tmp;
1629
1630           ALL_DISPLAYS_SAFE (d, tmp)
1631             if (d->number == num)
1632               break;
1633           if (d == NULL)
1634             printf_unfiltered (_("No display number %d.\n"), num);
1635           else
1636             function (d, data);
1637         }
1638     }
1639 }
1640
1641 /* Callback for map_display_numbers, that deletes a display.  */
1642
1643 static void
1644 do_delete_display (struct display *d, void *data)
1645 {
1646   delete_display (d);
1647 }
1648
1649 /* "undisplay" command.  */
1650
1651 static void
1652 undisplay_command (char *args, int from_tty)
1653 {
1654   int num;
1655   struct get_number_or_range_state state;
1656
1657   if (args == NULL)
1658     {
1659       if (query (_("Delete all auto-display expressions? ")))
1660         clear_displays ();
1661       dont_repeat ();
1662       return;
1663     }
1664
1665   map_display_numbers (args, do_delete_display, NULL);
1666   dont_repeat ();
1667 }
1668
1669 /* Display a single auto-display.  
1670    Do nothing if the display cannot be printed in the current context,
1671    or if the display is disabled.  */
1672
1673 static void
1674 do_one_display (struct display *d)
1675 {
1676   struct cleanup *old_chain;
1677   int within_current_scope;
1678
1679   if (d->enabled_p == 0)
1680     return;
1681
1682   /* The expression carries the architecture that was used at parse time.
1683      This is a problem if the expression depends on architecture features
1684      (e.g. register numbers), and the current architecture is now different.
1685      For example, a display statement like "display/i $pc" is expected to
1686      display the PC register of the current architecture, not the arch at
1687      the time the display command was given.  Therefore, we re-parse the
1688      expression if the current architecture has changed.  */
1689   if (d->exp != NULL && d->exp->gdbarch != get_current_arch ())
1690     {
1691       xfree (d->exp);
1692       d->exp = NULL;
1693       d->block = NULL;
1694     }
1695
1696   if (d->exp == NULL)
1697     {
1698       volatile struct gdb_exception ex;
1699
1700       TRY_CATCH (ex, RETURN_MASK_ALL)
1701         {
1702           innermost_block = NULL;
1703           d->exp = parse_expression (d->exp_string);
1704           d->block = innermost_block;
1705         }
1706       if (ex.reason < 0)
1707         {
1708           /* Can't re-parse the expression.  Disable this display item.  */
1709           d->enabled_p = 0;
1710           warning (_("Unable to display \"%s\": %s"),
1711                    d->exp_string, ex.message);
1712           return;
1713         }
1714     }
1715
1716   if (d->block)
1717     {
1718       if (d->pspace == current_program_space)
1719         within_current_scope = contained_in (get_selected_block (0), d->block);
1720       else
1721         within_current_scope = 0;
1722     }
1723   else
1724     within_current_scope = 1;
1725   if (!within_current_scope)
1726     return;
1727
1728   old_chain = make_cleanup_restore_integer (&current_display_number);
1729   current_display_number = d->number;
1730
1731   annotate_display_begin ();
1732   printf_filtered ("%d", d->number);
1733   annotate_display_number_end ();
1734   printf_filtered (": ");
1735   if (d->format.size)
1736     {
1737       volatile struct gdb_exception ex;
1738
1739       annotate_display_format ();
1740
1741       printf_filtered ("x/");
1742       if (d->format.count != 1)
1743         printf_filtered ("%d", d->format.count);
1744       printf_filtered ("%c", d->format.format);
1745       if (d->format.format != 'i' && d->format.format != 's')
1746         printf_filtered ("%c", d->format.size);
1747       printf_filtered (" ");
1748
1749       annotate_display_expression ();
1750
1751       puts_filtered (d->exp_string);
1752       annotate_display_expression_end ();
1753
1754       if (d->format.count != 1 || d->format.format == 'i')
1755         printf_filtered ("\n");
1756       else
1757         printf_filtered ("  ");
1758
1759       annotate_display_value ();
1760
1761       TRY_CATCH (ex, RETURN_MASK_ERROR)
1762         {
1763           struct value *val;
1764           CORE_ADDR addr;
1765
1766           val = evaluate_expression (d->exp);
1767           addr = value_as_address (val);
1768           if (d->format.format == 'i')
1769             addr = gdbarch_addr_bits_remove (d->exp->gdbarch, addr);
1770           do_examine (d->format, d->exp->gdbarch, addr);
1771         }
1772       if (ex.reason < 0)
1773         fprintf_filtered (gdb_stdout, _("<error: %s>\n"), ex.message);
1774     }
1775   else
1776     {
1777       struct value_print_options opts;
1778       volatile struct gdb_exception ex;
1779
1780       annotate_display_format ();
1781
1782       if (d->format.format)
1783         printf_filtered ("/%c ", d->format.format);
1784
1785       annotate_display_expression ();
1786
1787       puts_filtered (d->exp_string);
1788       annotate_display_expression_end ();
1789
1790       printf_filtered (" = ");
1791
1792       annotate_display_expression ();
1793
1794       get_formatted_print_options (&opts, d->format.format);
1795       opts.raw = d->format.raw;
1796
1797       TRY_CATCH (ex, RETURN_MASK_ERROR)
1798         {
1799           struct value *val;
1800
1801           val = evaluate_expression (d->exp);
1802           print_formatted (val, d->format.size, &opts, gdb_stdout);
1803         }
1804       if (ex.reason < 0)
1805         fprintf_filtered (gdb_stdout, _("<error: %s>"), ex.message);
1806       printf_filtered ("\n");
1807     }
1808
1809   annotate_display_end ();
1810
1811   gdb_flush (gdb_stdout);
1812   do_cleanups (old_chain);
1813 }
1814
1815 /* Display all of the values on the auto-display chain which can be
1816    evaluated in the current scope.  */
1817
1818 void
1819 do_displays (void)
1820 {
1821   struct display *d;
1822
1823   for (d = display_chain; d; d = d->next)
1824     do_one_display (d);
1825 }
1826
1827 /* Delete the auto-display which we were in the process of displaying.
1828    This is done when there is an error or a signal.  */
1829
1830 void
1831 disable_display (int num)
1832 {
1833   struct display *d;
1834
1835   for (d = display_chain; d; d = d->next)
1836     if (d->number == num)
1837       {
1838         d->enabled_p = 0;
1839         return;
1840       }
1841   printf_unfiltered (_("No display number %d.\n"), num);
1842 }
1843
1844 void
1845 disable_current_display (void)
1846 {
1847   if (current_display_number >= 0)
1848     {
1849       disable_display (current_display_number);
1850       fprintf_unfiltered (gdb_stderr,
1851                           _("Disabling display %d to "
1852                             "avoid infinite recursion.\n"),
1853                           current_display_number);
1854     }
1855   current_display_number = -1;
1856 }
1857
1858 static void
1859 display_info (char *ignore, int from_tty)
1860 {
1861   struct display *d;
1862
1863   if (!display_chain)
1864     printf_unfiltered (_("There are no auto-display expressions now.\n"));
1865   else
1866     printf_filtered (_("Auto-display expressions now in effect:\n\
1867 Num Enb Expression\n"));
1868
1869   for (d = display_chain; d; d = d->next)
1870     {
1871       printf_filtered ("%d:   %c  ", d->number, "ny"[(int) d->enabled_p]);
1872       if (d->format.size)
1873         printf_filtered ("/%d%c%c ", d->format.count, d->format.size,
1874                          d->format.format);
1875       else if (d->format.format)
1876         printf_filtered ("/%c ", d->format.format);
1877       puts_filtered (d->exp_string);
1878       if (d->block && !contained_in (get_selected_block (0), d->block))
1879         printf_filtered (_(" (cannot be evaluated in the current context)"));
1880       printf_filtered ("\n");
1881       gdb_flush (gdb_stdout);
1882     }
1883 }
1884
1885 /* Callback fo map_display_numbers, that enables or disables the
1886    passed in display D.  */
1887
1888 static void
1889 do_enable_disable_display (struct display *d, void *data)
1890 {
1891   d->enabled_p = *(int *) data;
1892 }
1893
1894 /* Implamentation of both the "disable display" and "enable display"
1895    commands.  ENABLE decides what to do.  */
1896
1897 static void
1898 enable_disable_display_command (char *args, int from_tty, int enable)
1899 {
1900   if (args == NULL)
1901     {
1902       struct display *d;
1903
1904       ALL_DISPLAYS (d)
1905         d->enabled_p = enable;
1906       return;
1907     }
1908
1909   map_display_numbers (args, do_enable_disable_display, &enable);
1910 }
1911
1912 /* The "enable display" command.  */
1913
1914 static void
1915 enable_display_command (char *args, int from_tty)
1916 {
1917   enable_disable_display_command (args, from_tty, 1);
1918 }
1919
1920 /* The "disable display" command.  */
1921
1922 static void
1923 disable_display_command (char *args, int from_tty)
1924 {
1925   enable_disable_display_command (args, from_tty, 0);
1926 }
1927
1928 /* display_chain items point to blocks and expressions.  Some expressions in
1929    turn may point to symbols.
1930    Both symbols and blocks are obstack_alloc'd on objfile_stack, and are
1931    obstack_free'd when a shared library is unloaded.
1932    Clear pointers that are about to become dangling.
1933    Both .exp and .block fields will be restored next time we need to display
1934    an item by re-parsing .exp_string field in the new execution context.  */
1935
1936 static void
1937 clear_dangling_display_expressions (struct so_list *solib)
1938 {
1939   struct objfile *objfile = solib->objfile;
1940   struct display *d;
1941
1942   /* With no symbol file we cannot have a block or expression from it.  */
1943   if (objfile == NULL)
1944     return;
1945   if (objfile->separate_debug_objfile_backlink)
1946     objfile = objfile->separate_debug_objfile_backlink;
1947   gdb_assert (objfile->pspace == solib->pspace);
1948
1949   for (d = display_chain; d != NULL; d = d->next)
1950     {
1951       if (d->pspace != solib->pspace)
1952         continue;
1953
1954       if (lookup_objfile_from_block (d->block) == objfile
1955           || (d->exp && exp_uses_objfile (d->exp, objfile)))
1956       {
1957         xfree (d->exp);
1958         d->exp = NULL;
1959         d->block = NULL;
1960       }
1961     }
1962 }
1963 \f
1964
1965 /* Print the value in stack frame FRAME of a variable specified by a
1966    struct symbol.  NAME is the name to print; if NULL then VAR's print
1967    name will be used.  STREAM is the ui_file on which to print the
1968    value.  INDENT specifies the number of indent levels to print
1969    before printing the variable name.  */
1970
1971 void
1972 print_variable_and_value (const char *name, struct symbol *var,
1973                           struct frame_info *frame,
1974                           struct ui_file *stream, int indent)
1975 {
1976   volatile struct gdb_exception except;
1977
1978   if (!name)
1979     name = SYMBOL_PRINT_NAME (var);
1980
1981   fprintf_filtered (stream, "%s%s = ", n_spaces (2 * indent), name);
1982   TRY_CATCH (except, RETURN_MASK_ERROR)
1983     {
1984       struct value *val;
1985       struct value_print_options opts;
1986
1987       val = read_var_value (var, frame);
1988       get_user_print_options (&opts);
1989       opts.deref_ref = 1;
1990       common_val_print (val, stream, indent, &opts, current_language);
1991     }
1992   if (except.reason < 0)
1993     fprintf_filtered(stream, "<error reading variable %s (%s)>", name,
1994                      except.message);
1995   fprintf_filtered (stream, "\n");
1996 }
1997
1998 /* printf "printf format string" ARG to STREAM.  */
1999
2000 static void
2001 ui_printf (char *arg, struct ui_file *stream)
2002 {
2003   char *f = NULL;
2004   char *s = arg;
2005   char *string = NULL;
2006   struct value **val_args;
2007   char *substrings;
2008   char *current_substring;
2009   int nargs = 0;
2010   int allocated_args = 20;
2011   struct cleanup *old_cleanups;
2012
2013   val_args = xmalloc (allocated_args * sizeof (struct value *));
2014   old_cleanups = make_cleanup (free_current_contents, &val_args);
2015
2016   if (s == 0)
2017     error_no_arg (_("format-control string and values to print"));
2018
2019   s = skip_spaces (s);
2020
2021   /* A format string should follow, enveloped in double quotes.  */
2022   if (*s++ != '"')
2023     error (_("Bad format string, missing '\"'."));
2024
2025   /* Parse the format-control string and copy it into the string STRING,
2026      processing some kinds of escape sequence.  */
2027
2028   f = string = (char *) alloca (strlen (s) + 1);
2029
2030   while (*s != '"')
2031     {
2032       int c = *s++;
2033       switch (c)
2034         {
2035         case '\0':
2036           error (_("Bad format string, non-terminated '\"'."));
2037
2038         case '\\':
2039           switch (c = *s++)
2040             {
2041             case '\\':
2042               *f++ = '\\';
2043               break;
2044             case 'a':
2045               *f++ = '\a';
2046               break;
2047             case 'b':
2048               *f++ = '\b';
2049               break;
2050             case 'f':
2051               *f++ = '\f';
2052               break;
2053             case 'n':
2054               *f++ = '\n';
2055               break;
2056             case 'r':
2057               *f++ = '\r';
2058               break;
2059             case 't':
2060               *f++ = '\t';
2061               break;
2062             case 'v':
2063               *f++ = '\v';
2064               break;
2065             case '"':
2066               *f++ = '"';
2067               break;
2068             default:
2069               /* ??? TODO: handle other escape sequences.  */
2070               error (_("Unrecognized escape character \\%c in format string."),
2071                      c);
2072             }
2073           break;
2074
2075         default:
2076           *f++ = c;
2077         }
2078     }
2079
2080   /* Skip over " and following space and comma.  */
2081   s++;
2082   *f++ = '\0';
2083   s = skip_spaces (s);
2084
2085   if (*s != ',' && *s != 0)
2086     error (_("Invalid argument syntax"));
2087
2088   if (*s == ',')
2089     s++;
2090   s = skip_spaces (s);
2091
2092   /* Need extra space for the '\0's.  Doubling the size is sufficient.  */
2093   substrings = alloca (strlen (string) * 2);
2094   current_substring = substrings;
2095
2096   {
2097     /* Now scan the string for %-specs and see what kinds of args they want.
2098        argclass[I] classifies the %-specs so we can give printf_filtered
2099        something of the right size.  */
2100
2101     enum argclass
2102       {
2103         int_arg, long_arg, long_long_arg, ptr_arg,
2104         string_arg, wide_string_arg, wide_char_arg,
2105         double_arg, long_double_arg, decfloat_arg
2106       };
2107     enum argclass *argclass;
2108     enum argclass this_argclass;
2109     char *last_arg;
2110     int nargs_wanted;
2111     int i;
2112
2113     argclass = (enum argclass *) alloca (strlen (s) * sizeof *argclass);
2114     nargs_wanted = 0;
2115     f = string;
2116     last_arg = string;
2117     while (*f)
2118       if (*f++ == '%')
2119         {
2120           int seen_hash = 0, seen_zero = 0, lcount = 0, seen_prec = 0;
2121           int seen_space = 0, seen_plus = 0;
2122           int seen_big_l = 0, seen_h = 0, seen_big_h = 0;
2123           int seen_big_d = 0, seen_double_big_d = 0;
2124           int bad = 0;
2125
2126           /* Check the validity of the format specifier, and work
2127              out what argument it expects.  We only accept C89
2128              format strings, with the exception of long long (which
2129              we autoconf for).  */
2130
2131           /* Skip over "%%".  */
2132           if (*f == '%')
2133             {
2134               f++;
2135               continue;
2136             }
2137
2138           /* The first part of a format specifier is a set of flag
2139              characters.  */
2140           while (strchr ("0-+ #", *f))
2141             {
2142               if (*f == '#')
2143                 seen_hash = 1;
2144               else if (*f == '0')
2145                 seen_zero = 1;
2146               else if (*f == ' ')
2147                 seen_space = 1;
2148               else if (*f == '+')
2149                 seen_plus = 1;
2150               f++;
2151             }
2152
2153           /* The next part of a format specifier is a width.  */
2154           while (strchr ("0123456789", *f))
2155             f++;
2156
2157           /* The next part of a format specifier is a precision.  */
2158           if (*f == '.')
2159             {
2160               seen_prec = 1;
2161               f++;
2162               while (strchr ("0123456789", *f))
2163                 f++;
2164             }
2165
2166           /* The next part of a format specifier is a length modifier.  */
2167           if (*f == 'h')
2168             {
2169               seen_h = 1;
2170               f++;
2171             }
2172           else if (*f == 'l')
2173             {
2174               f++;
2175               lcount++;
2176               if (*f == 'l')
2177                 {
2178                   f++;
2179                   lcount++;
2180                 }
2181             }
2182           else if (*f == 'L')
2183             {
2184               seen_big_l = 1;
2185               f++;
2186             }
2187           /* Decimal32 modifier.  */
2188           else if (*f == 'H')
2189             {
2190               seen_big_h = 1;
2191               f++;
2192             }
2193           /* Decimal64 and Decimal128 modifiers.  */
2194           else if (*f == 'D')
2195             {
2196               f++;
2197
2198               /* Check for a Decimal128.  */
2199               if (*f == 'D')
2200                 {
2201                   f++;
2202                   seen_double_big_d = 1;
2203                 }
2204               else
2205                 seen_big_d = 1;
2206             }
2207
2208           switch (*f)
2209             {
2210             case 'u':
2211               if (seen_hash)
2212                 bad = 1;
2213               /* FALLTHROUGH */
2214
2215             case 'o':
2216             case 'x':
2217             case 'X':
2218               if (seen_space || seen_plus)
2219                 bad = 1;
2220               /* FALLTHROUGH */
2221
2222             case 'd':
2223             case 'i':
2224               if (lcount == 0)
2225                 this_argclass = int_arg;
2226               else if (lcount == 1)
2227                 this_argclass = long_arg;
2228               else
2229                 this_argclass = long_long_arg;
2230
2231               if (seen_big_l)
2232                 bad = 1;
2233               break;
2234
2235             case 'c':
2236               this_argclass = lcount == 0 ? int_arg : wide_char_arg;
2237               if (lcount > 1 || seen_h || seen_big_l)
2238                 bad = 1;
2239               if (seen_prec || seen_zero || seen_space || seen_plus)
2240                 bad = 1;
2241               break;
2242
2243             case 'p':
2244               this_argclass = ptr_arg;
2245               if (lcount || seen_h || seen_big_l)
2246                 bad = 1;
2247               if (seen_prec || seen_zero || seen_space || seen_plus)
2248                 bad = 1;
2249               break;
2250
2251             case 's':
2252               this_argclass = lcount == 0 ? string_arg : wide_string_arg;
2253               if (lcount > 1 || seen_h || seen_big_l)
2254                 bad = 1;
2255               if (seen_zero || seen_space || seen_plus)
2256                 bad = 1;
2257               break;
2258
2259             case 'e':
2260             case 'f':
2261             case 'g':
2262             case 'E':
2263             case 'G':
2264               if (seen_big_h || seen_big_d || seen_double_big_d)
2265                 this_argclass = decfloat_arg;
2266               else if (seen_big_l)
2267                 this_argclass = long_double_arg;
2268               else
2269                 this_argclass = double_arg;
2270
2271               if (lcount || seen_h)
2272                 bad = 1;
2273               break;
2274
2275             case '*':
2276               error (_("`*' not supported for precision or width in printf"));
2277
2278             case 'n':
2279               error (_("Format specifier `n' not supported in printf"));
2280
2281             case '\0':
2282               error (_("Incomplete format specifier at end of format string"));
2283
2284             default:
2285               error (_("Unrecognized format specifier '%c' in printf"), *f);
2286             }
2287
2288           if (bad)
2289             error (_("Inappropriate modifiers to "
2290                      "format specifier '%c' in printf"),
2291                    *f);
2292
2293           f++;
2294
2295           if (lcount > 1 && USE_PRINTF_I64)
2296             {
2297               /* Windows' printf does support long long, but not the usual way.
2298                  Convert %lld to %I64d.  */
2299               int length_before_ll = f - last_arg - 1 - lcount;
2300
2301               strncpy (current_substring, last_arg, length_before_ll);
2302               strcpy (current_substring + length_before_ll, "I64");
2303               current_substring[length_before_ll + 3] =
2304                 last_arg[length_before_ll + lcount];
2305               current_substring += length_before_ll + 4;
2306             }
2307           else if (this_argclass == wide_string_arg
2308                    || this_argclass == wide_char_arg)
2309             {
2310               /* Convert %ls or %lc to %s.  */
2311               int length_before_ls = f - last_arg - 2;
2312
2313               strncpy (current_substring, last_arg, length_before_ls);
2314               strcpy (current_substring + length_before_ls, "s");
2315               current_substring += length_before_ls + 2;
2316             }
2317           else
2318             {
2319               strncpy (current_substring, last_arg, f - last_arg);
2320               current_substring += f - last_arg;
2321             }
2322           *current_substring++ = '\0';
2323           last_arg = f;
2324           argclass[nargs_wanted++] = this_argclass;
2325         }
2326
2327     /* Now, parse all arguments and evaluate them.
2328        Store the VALUEs in VAL_ARGS.  */
2329
2330     while (*s != '\0')
2331       {
2332         char *s1;
2333
2334         if (nargs == allocated_args)
2335           val_args = (struct value **) xrealloc ((char *) val_args,
2336                                                  (allocated_args *= 2)
2337                                                  * sizeof (struct value *));
2338         s1 = s;
2339         val_args[nargs] = parse_to_comma_and_eval (&s1);
2340
2341         nargs++;
2342         s = s1;
2343         if (*s == ',')
2344           s++;
2345       }
2346
2347     if (nargs != nargs_wanted)
2348       error (_("Wrong number of arguments for specified format-string"));
2349
2350     /* Now actually print them.  */
2351     current_substring = substrings;
2352     for (i = 0; i < nargs; i++)
2353       {
2354         switch (argclass[i])
2355           {
2356           case string_arg:
2357             {
2358               gdb_byte *str;
2359               CORE_ADDR tem;
2360               int j;
2361
2362               tem = value_as_address (val_args[i]);
2363
2364               /* This is a %s argument.  Find the length of the string.  */
2365               for (j = 0;; j++)
2366                 {
2367                   gdb_byte c;
2368
2369                   QUIT;
2370                   read_memory (tem + j, &c, 1);
2371                   if (c == 0)
2372                     break;
2373                 }
2374
2375               /* Copy the string contents into a string inside GDB.  */
2376               str = (gdb_byte *) alloca (j + 1);
2377               if (j != 0)
2378                 read_memory (tem, str, j);
2379               str[j] = 0;
2380
2381               fprintf_filtered (stream, current_substring, (char *) str);
2382             }
2383             break;
2384           case wide_string_arg:
2385             {
2386               gdb_byte *str;
2387               CORE_ADDR tem;
2388               int j;
2389               struct gdbarch *gdbarch
2390                 = get_type_arch (value_type (val_args[i]));
2391               enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
2392               struct type *wctype = lookup_typename (current_language, gdbarch,
2393                                                      "wchar_t", NULL, 0);
2394               int wcwidth = TYPE_LENGTH (wctype);
2395               gdb_byte *buf = alloca (wcwidth);
2396               struct obstack output;
2397               struct cleanup *inner_cleanup;
2398
2399               tem = value_as_address (val_args[i]);
2400
2401               /* This is a %s argument.  Find the length of the string.  */
2402               for (j = 0;; j += wcwidth)
2403                 {
2404                   QUIT;
2405                   read_memory (tem + j, buf, wcwidth);
2406                   if (extract_unsigned_integer (buf, wcwidth, byte_order) == 0)
2407                     break;
2408                 }
2409
2410               /* Copy the string contents into a string inside GDB.  */
2411               str = (gdb_byte *) alloca (j + wcwidth);
2412               if (j != 0)
2413                 read_memory (tem, str, j);
2414               memset (&str[j], 0, wcwidth);
2415
2416               obstack_init (&output);
2417               inner_cleanup = make_cleanup_obstack_free (&output);
2418
2419               convert_between_encodings (target_wide_charset (gdbarch),
2420                                          host_charset (),
2421                                          str, j, wcwidth,
2422                                          &output, translit_char);
2423               obstack_grow_str0 (&output, "");
2424
2425               fprintf_filtered (stream, current_substring,
2426                                 obstack_base (&output));
2427               do_cleanups (inner_cleanup);
2428             }
2429             break;
2430           case wide_char_arg:
2431             {
2432               struct gdbarch *gdbarch
2433                 = get_type_arch (value_type (val_args[i]));
2434               struct type *wctype = lookup_typename (current_language, gdbarch,
2435                                                      "wchar_t", NULL, 0);
2436               struct type *valtype;
2437               struct obstack output;
2438               struct cleanup *inner_cleanup;
2439               const gdb_byte *bytes;
2440
2441               valtype = value_type (val_args[i]);
2442               if (TYPE_LENGTH (valtype) != TYPE_LENGTH (wctype)
2443                   || TYPE_CODE (valtype) != TYPE_CODE_INT)
2444                 error (_("expected wchar_t argument for %%lc"));
2445
2446               bytes = value_contents (val_args[i]);
2447
2448               obstack_init (&output);
2449               inner_cleanup = make_cleanup_obstack_free (&output);
2450
2451               convert_between_encodings (target_wide_charset (gdbarch),
2452                                          host_charset (),
2453                                          bytes, TYPE_LENGTH (valtype),
2454                                          TYPE_LENGTH (valtype),
2455                                          &output, translit_char);
2456               obstack_grow_str0 (&output, "");
2457
2458               fprintf_filtered (stream, current_substring,
2459                                 obstack_base (&output));
2460               do_cleanups (inner_cleanup);
2461             }
2462             break;
2463           case double_arg:
2464             {
2465               struct type *type = value_type (val_args[i]);
2466               DOUBLEST val;
2467               int inv;
2468
2469               /* If format string wants a float, unchecked-convert the value
2470                  to floating point of the same size.  */
2471               type = float_type_from_length (type);
2472               val = unpack_double (type, value_contents (val_args[i]), &inv);
2473               if (inv)
2474                 error (_("Invalid floating value found in program."));
2475
2476               fprintf_filtered (stream, current_substring, (double) val);
2477               break;
2478             }
2479           case long_double_arg:
2480 #ifdef HAVE_LONG_DOUBLE
2481             {
2482               struct type *type = value_type (val_args[i]);
2483               DOUBLEST val;
2484               int inv;
2485
2486               /* If format string wants a float, unchecked-convert the value
2487                  to floating point of the same size.  */
2488               type = float_type_from_length (type);
2489               val = unpack_double (type, value_contents (val_args[i]), &inv);
2490               if (inv)
2491                 error (_("Invalid floating value found in program."));
2492
2493               fprintf_filtered (stream, current_substring,
2494                                 (long double) val);
2495               break;
2496             }
2497 #else
2498             error (_("long double not supported in printf"));
2499 #endif
2500           case long_long_arg:
2501 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
2502             {
2503               long long val = value_as_long (val_args[i]);
2504
2505               fprintf_filtered (stream, current_substring, val);
2506               break;
2507             }
2508 #else
2509             error (_("long long not supported in printf"));
2510 #endif
2511           case int_arg:
2512             {
2513               int val = value_as_long (val_args[i]);
2514
2515               fprintf_filtered (stream, current_substring, val);
2516               break;
2517             }
2518           case long_arg:
2519             {
2520               long val = value_as_long (val_args[i]);
2521
2522               fprintf_filtered (stream, current_substring, val);
2523               break;
2524             }
2525
2526           /* Handles decimal floating values.  */
2527         case decfloat_arg:
2528             {
2529               const gdb_byte *param_ptr = value_contents (val_args[i]);
2530
2531 #if defined (PRINTF_HAS_DECFLOAT)
2532               /* If we have native support for Decimal floating
2533                  printing, handle it here.  */
2534               fprintf_filtered (stream, current_substring, param_ptr);
2535 #else
2536
2537               /* As a workaround until vasprintf has native support for DFP
2538                we convert the DFP values to string and print them using
2539                the %s format specifier.  */
2540
2541               char *eos, *sos;
2542               int nnull_chars = 0;
2543
2544               /* Parameter data.  */
2545               struct type *param_type = value_type (val_args[i]);
2546               unsigned int param_len = TYPE_LENGTH (param_type);
2547               struct gdbarch *gdbarch = get_type_arch (param_type);
2548               enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
2549
2550               /* DFP output data.  */
2551               struct value *dfp_value = NULL;
2552               gdb_byte *dfp_ptr;
2553               int dfp_len = 16;
2554               gdb_byte dec[16];
2555               struct type *dfp_type = NULL;
2556               char decstr[MAX_DECIMAL_STRING];
2557
2558               /* Points to the end of the string so that we can go back
2559                  and check for DFP length modifiers.  */
2560               eos = current_substring + strlen (current_substring);
2561
2562               /* Look for the float/double format specifier.  */
2563               while (*eos != 'f' && *eos != 'e' && *eos != 'E'
2564                      && *eos != 'g' && *eos != 'G')
2565                   eos--;
2566
2567               sos = eos;
2568
2569               /* Search for the '%' char and extract the size and type of
2570                  the output decimal value based on its modifiers
2571                  (%Hf, %Df, %DDf).  */
2572               while (*--sos != '%')
2573                 {
2574                   if (*sos == 'H')
2575                     {
2576                       dfp_len = 4;
2577                       dfp_type = builtin_type (gdbarch)->builtin_decfloat;
2578                     }
2579                   else if (*sos == 'D' && *(sos - 1) == 'D')
2580                     {
2581                       dfp_len = 16;
2582                       dfp_type = builtin_type (gdbarch)->builtin_declong;
2583                       sos--;
2584                     }
2585                   else
2586                     {
2587                       dfp_len = 8;
2588                       dfp_type = builtin_type (gdbarch)->builtin_decdouble;
2589                     }
2590                 }
2591
2592               /* Replace %Hf, %Df and %DDf with %s's.  */
2593               *++sos = 's';
2594
2595               /* Go through the whole format string and pull the correct
2596                  number of chars back to compensate for the change in the
2597                  format specifier.  */
2598               while (nnull_chars < nargs - i)
2599                 {
2600                   if (*eos == '\0')
2601                     nnull_chars++;
2602
2603                   *++sos = *++eos;
2604                 }
2605
2606               /* Conversion between different DFP types.  */
2607               if (TYPE_CODE (param_type) == TYPE_CODE_DECFLOAT)
2608                 decimal_convert (param_ptr, param_len, byte_order,
2609                                  dec, dfp_len, byte_order);
2610               else
2611                 /* If this is a non-trivial conversion, just output 0.
2612                    A correct converted value can be displayed by explicitly
2613                    casting to a DFP type.  */
2614                 decimal_from_string (dec, dfp_len, byte_order, "0");
2615
2616               dfp_value = value_from_decfloat (dfp_type, dec);
2617
2618               dfp_ptr = (gdb_byte *) value_contents (dfp_value);
2619
2620               decimal_to_string (dfp_ptr, dfp_len, byte_order, decstr);
2621
2622               /* Print the DFP value.  */
2623               fprintf_filtered (stream, current_substring, decstr);
2624
2625               break;
2626 #endif
2627             }
2628
2629           case ptr_arg:
2630             {
2631               /* We avoid the host's %p because pointers are too
2632                  likely to be the wrong size.  The only interesting
2633                  modifier for %p is a width; extract that, and then
2634                  handle %p as glibc would: %#x or a literal "(nil)".  */
2635
2636               char *p, *fmt, *fmt_p;
2637 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
2638               long long val = value_as_long (val_args[i]);
2639 #else
2640               long val = value_as_long (val_args[i]);
2641 #endif
2642
2643               fmt = alloca (strlen (current_substring) + 5);
2644
2645               /* Copy up to the leading %.  */
2646               p = current_substring;
2647               fmt_p = fmt;
2648               while (*p)
2649                 {
2650                   int is_percent = (*p == '%');
2651
2652                   *fmt_p++ = *p++;
2653                   if (is_percent)
2654                     {
2655                       if (*p == '%')
2656                         *fmt_p++ = *p++;
2657                       else
2658                         break;
2659                     }
2660                 }
2661
2662               if (val != 0)
2663                 *fmt_p++ = '#';
2664
2665               /* Copy any width.  */
2666               while (*p >= '0' && *p < '9')
2667                 *fmt_p++ = *p++;
2668
2669               gdb_assert (*p == 'p' && *(p + 1) == '\0');
2670               if (val != 0)
2671                 {
2672 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
2673                   *fmt_p++ = 'l';
2674 #endif
2675                   *fmt_p++ = 'l';
2676                   *fmt_p++ = 'x';
2677                   *fmt_p++ = '\0';
2678                   fprintf_filtered (stream, fmt, val);
2679                 }
2680               else
2681                 {
2682                   *fmt_p++ = 's';
2683                   *fmt_p++ = '\0';
2684                   fprintf_filtered (stream, fmt, "(nil)");
2685                 }
2686
2687               break;
2688             }
2689           default:
2690             internal_error (__FILE__, __LINE__,
2691                             _("failed internal consistency check"));
2692           }
2693         /* Skip to the next substring.  */
2694         current_substring += strlen (current_substring) + 1;
2695       }
2696     /* Print the portion of the format string after the last argument.
2697        Note that this will not include any ordinary %-specs, but it
2698        might include "%%".  That is why we use printf_filtered and not
2699        puts_filtered here.  Also, we pass a dummy argument because
2700        some platforms have modified GCC to include -Wformat-security
2701        by default, which will warn here if there is no argument.  */
2702     fprintf_filtered (stream, last_arg, 0);
2703   }
2704   do_cleanups (old_cleanups);
2705 }
2706
2707 /* Implement the "printf" command.  */
2708
2709 static void
2710 printf_command (char *arg, int from_tty)
2711 {
2712   ui_printf (arg, gdb_stdout);
2713 }
2714
2715 /* Implement the "eval" command.  */
2716
2717 static void
2718 eval_command (char *arg, int from_tty)
2719 {
2720   struct ui_file *ui_out = mem_fileopen ();
2721   struct cleanup *cleanups = make_cleanup_ui_file_delete (ui_out);
2722   char *expanded;
2723
2724   ui_printf (arg, ui_out);
2725
2726   expanded = ui_file_xstrdup (ui_out, NULL);
2727   make_cleanup (xfree, expanded);
2728
2729   execute_command (expanded, from_tty);
2730
2731   do_cleanups (cleanups);
2732 }
2733
2734 void
2735 _initialize_printcmd (void)
2736 {
2737   struct cmd_list_element *c;
2738
2739   current_display_number = -1;
2740
2741   observer_attach_solib_unloaded (clear_dangling_display_expressions);
2742
2743   add_info ("address", address_info,
2744             _("Describe where symbol SYM is stored."));
2745
2746   add_info ("symbol", sym_info, _("\
2747 Describe what symbol is at location ADDR.\n\
2748 Only for symbols with fixed locations (global or static scope)."));
2749
2750   add_com ("x", class_vars, x_command, _("\
2751 Examine memory: x/FMT ADDRESS.\n\
2752 ADDRESS is an expression for the memory address to examine.\n\
2753 FMT is a repeat count followed by a format letter and a size letter.\n\
2754 Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),\n\
2755   t(binary), f(float), a(address), i(instruction), c(char) and s(string).\n\
2756 Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).\n\
2757 The specified number of objects of the specified size are printed\n\
2758 according to the format.\n\n\
2759 Defaults for format and size letters are those previously used.\n\
2760 Default count is 1.  Default address is following last thing printed\n\
2761 with this command or \"print\"."));
2762
2763 #if 0
2764   add_com ("whereis", class_vars, whereis_command,
2765            _("Print line number and file of definition of variable."));
2766 #endif
2767
2768   add_info ("display", display_info, _("\
2769 Expressions to display when program stops, with code numbers."));
2770
2771   add_cmd ("undisplay", class_vars, undisplay_command, _("\
2772 Cancel some expressions to be displayed when program stops.\n\
2773 Arguments are the code numbers of the expressions to stop displaying.\n\
2774 No argument means cancel all automatic-display expressions.\n\
2775 \"delete display\" has the same effect as this command.\n\
2776 Do \"info display\" to see current list of code numbers."),
2777            &cmdlist);
2778
2779   add_com ("display", class_vars, display_command, _("\
2780 Print value of expression EXP each time the program stops.\n\
2781 /FMT may be used before EXP as in the \"print\" command.\n\
2782 /FMT \"i\" or \"s\" or including a size-letter is allowed,\n\
2783 as in the \"x\" command, and then EXP is used to get the address to examine\n\
2784 and examining is done as in the \"x\" command.\n\n\
2785 With no argument, display all currently requested auto-display expressions.\n\
2786 Use \"undisplay\" to cancel display requests previously made."));
2787
2788   add_cmd ("display", class_vars, enable_display_command, _("\
2789 Enable some expressions to be displayed when program stops.\n\
2790 Arguments are the code numbers of the expressions to resume displaying.\n\
2791 No argument means enable all automatic-display expressions.\n\
2792 Do \"info display\" to see current list of code numbers."), &enablelist);
2793
2794   add_cmd ("display", class_vars, disable_display_command, _("\
2795 Disable some expressions to be displayed when program stops.\n\
2796 Arguments are the code numbers of the expressions to stop displaying.\n\
2797 No argument means disable all automatic-display expressions.\n\
2798 Do \"info display\" to see current list of code numbers."), &disablelist);
2799
2800   add_cmd ("display", class_vars, undisplay_command, _("\
2801 Cancel some expressions to be displayed when program stops.\n\
2802 Arguments are the code numbers of the expressions to stop displaying.\n\
2803 No argument means cancel all automatic-display expressions.\n\
2804 Do \"info display\" to see current list of code numbers."), &deletelist);
2805
2806   add_com ("printf", class_vars, printf_command, _("\
2807 printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
2808 This is useful for formatted output in user-defined commands."));
2809
2810   add_com ("output", class_vars, output_command, _("\
2811 Like \"print\" but don't put in value history and don't print newline.\n\
2812 This is useful in user-defined commands."));
2813
2814   add_prefix_cmd ("set", class_vars, set_command, _("\
2815 Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2816 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2817 example).  VAR may be a debugger \"convenience\" variable (names starting\n\
2818 with $), a register (a few standard names starting with $), or an actual\n\
2819 variable in the program being debugged.  EXP is any valid expression.\n\
2820 Use \"set variable\" for variables with names identical to set subcommands.\n\
2821 \n\
2822 With a subcommand, this command modifies parts of the gdb environment.\n\
2823 You can see these environment settings with the \"show\" command."),
2824                   &setlist, "set ", 1, &cmdlist);
2825   if (dbx_commands)
2826     add_com ("assign", class_vars, set_command, _("\
2827 Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2828 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2829 example).  VAR may be a debugger \"convenience\" variable (names starting\n\
2830 with $), a register (a few standard names starting with $), or an actual\n\
2831 variable in the program being debugged.  EXP is any valid expression.\n\
2832 Use \"set variable\" for variables with names identical to set subcommands.\n\
2833 \nWith a subcommand, this command modifies parts of the gdb environment.\n\
2834 You can see these environment settings with the \"show\" command."));
2835
2836   /* "call" is the same as "set", but handy for dbx users to call fns.  */
2837   c = add_com ("call", class_vars, call_command, _("\
2838 Call a function in the program.\n\
2839 The argument is the function name and arguments, in the notation of the\n\
2840 current working language.  The result is printed and saved in the value\n\
2841 history, if it is not void."));
2842   set_cmd_completer (c, expression_completer);
2843
2844   add_cmd ("variable", class_vars, set_command, _("\
2845 Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2846 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2847 example).  VAR may be a debugger \"convenience\" variable (names starting\n\
2848 with $), a register (a few standard names starting with $), or an actual\n\
2849 variable in the program being debugged.  EXP is any valid expression.\n\
2850 This may usually be abbreviated to simply \"set\"."),
2851            &setlist);
2852
2853   c = add_com ("print", class_vars, print_command, _("\
2854 Print value of expression EXP.\n\
2855 Variables accessible are those of the lexical environment of the selected\n\
2856 stack frame, plus all those whose scope is global or an entire file.\n\
2857 \n\
2858 $NUM gets previous value number NUM.  $ and $$ are the last two values.\n\
2859 $$NUM refers to NUM'th value back from the last one.\n\
2860 Names starting with $ refer to registers (with the values they would have\n\
2861 if the program were to return to the stack frame now selected, restoring\n\
2862 all registers saved by frames farther in) or else to debugger\n\
2863 \"convenience\" variables (any such name not a known register).\n\
2864 Use assignment expressions to give values to convenience variables.\n\
2865 \n\
2866 {TYPE}ADREXP refers to a datum of data type TYPE, located at address ADREXP.\n\
2867 @ is a binary operator for treating consecutive data objects\n\
2868 anywhere in memory as an array.  FOO@NUM gives an array whose first\n\
2869 element is FOO, whose second element is stored in the space following\n\
2870 where FOO is stored, etc.  FOO must be an expression whose value\n\
2871 resides in memory.\n\
2872 \n\
2873 EXP may be preceded with /FMT, where FMT is a format letter\n\
2874 but no count or size letter (see \"x\" command)."));
2875   set_cmd_completer (c, expression_completer);
2876   add_com_alias ("p", "print", class_vars, 1);
2877
2878   c = add_com ("inspect", class_vars, inspect_command, _("\
2879 Same as \"print\" command, except that if you are running in the epoch\n\
2880 environment, the value is printed in its own window."));
2881   set_cmd_completer (c, expression_completer);
2882
2883   add_setshow_uinteger_cmd ("max-symbolic-offset", no_class,
2884                             &max_symbolic_offset, _("\
2885 Set the largest offset that will be printed in <symbol+1234> form."), _("\
2886 Show the largest offset that will be printed in <symbol+1234> form."), NULL,
2887                             NULL,
2888                             show_max_symbolic_offset,
2889                             &setprintlist, &showprintlist);
2890   add_setshow_boolean_cmd ("symbol-filename", no_class,
2891                            &print_symbol_filename, _("\
2892 Set printing of source filename and line number with <symbol>."), _("\
2893 Show printing of source filename and line number with <symbol>."), NULL,
2894                            NULL,
2895                            show_print_symbol_filename,
2896                            &setprintlist, &showprintlist);
2897
2898   add_com ("eval", no_class, eval_command, _("\
2899 Convert \"printf format string\", arg1, arg2, arg3, ..., argn to\n\
2900 a command line, and call it."));
2901 }