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