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