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