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