2007-07-16 H.J. Lu <hongjiu.lu@intel.com>
[deliverable/binutils-gdb.git] / gdb / printcmd.c
1 /* Print values for GNU debugger GDB.
2
3 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
5 Free Software Foundation, Inc.
6
7 This file is part of GDB.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 51 Franklin Street, Fifth Floor,
22 Boston, MA 02110-1301, USA. */
23
24 #include "defs.h"
25 #include "gdb_string.h"
26 #include "frame.h"
27 #include "symtab.h"
28 #include "gdbtypes.h"
29 #include "value.h"
30 #include "language.h"
31 #include "expression.h"
32 #include "gdbcore.h"
33 #include "gdbcmd.h"
34 #include "target.h"
35 #include "breakpoint.h"
36 #include "demangle.h"
37 #include "valprint.h"
38 #include "annotate.h"
39 #include "symfile.h" /* for overlay functions */
40 #include "objfiles.h" /* ditto */
41 #include "completer.h" /* for completion functions */
42 #include "ui-out.h"
43 #include "gdb_assert.h"
44 #include "block.h"
45 #include "disasm.h"
46
47 #ifdef TUI
48 #include "tui/tui.h" /* For tui_active et.al. */
49 #endif
50
51 extern int asm_demangle; /* Whether to demangle syms in asm printouts */
52 extern int addressprint; /* Whether to print hex addresses in HLL " */
53
54 struct format_data
55 {
56 int count;
57 char format;
58 char size;
59 };
60
61 /* Last specified output format. */
62
63 static char last_format = 'x';
64
65 /* Last specified examination size. 'b', 'h', 'w' or `q'. */
66
67 static char last_size = 'w';
68
69 /* Default address to examine next. */
70
71 static CORE_ADDR next_address;
72
73 /* Number of delay instructions following current disassembled insn. */
74
75 static int branch_delay_insns;
76
77 /* Last address examined. */
78
79 static CORE_ADDR last_examine_address;
80
81 /* Contents of last address examined.
82 This is not valid past the end of the `x' command! */
83
84 static struct value *last_examine_value;
85
86 /* Largest offset between a symbolic value and an address, that will be
87 printed as `0x1234 <symbol+offset>'. */
88
89 static unsigned int max_symbolic_offset = UINT_MAX;
90 static void
91 show_max_symbolic_offset (struct ui_file *file, int from_tty,
92 struct cmd_list_element *c, const char *value)
93 {
94 fprintf_filtered (file, _("\
95 The largest offset that will be printed in <symbol+1234> form is %s.\n"),
96 value);
97 }
98
99 /* Append the source filename and linenumber of the symbol when
100 printing a symbolic value as `<symbol at filename:linenum>' if set. */
101 static int print_symbol_filename = 0;
102 static void
103 show_print_symbol_filename (struct ui_file *file, int from_tty,
104 struct cmd_list_element *c, const char *value)
105 {
106 fprintf_filtered (file, _("\
107 Printing of source filename and line number with <symbol> is %s.\n"),
108 value);
109 }
110
111 /* Number of auto-display expression currently being displayed.
112 So that we can disable it if we get an error or a signal within it.
113 -1 when not doing one. */
114
115 int current_display_number;
116
117 /* Flag to low-level print routines that this value is being printed
118 in an epoch window. We'd like to pass this as a parameter, but
119 every routine would need to take it. Perhaps we can encapsulate
120 this in the I/O stream once we have GNU stdio. */
121
122 int inspect_it = 0;
123
124 struct display
125 {
126 /* Chain link to next auto-display item. */
127 struct display *next;
128 /* Expression to be evaluated and displayed. */
129 struct expression *exp;
130 /* Item number of this auto-display item. */
131 int number;
132 /* Display format specified. */
133 struct format_data format;
134 /* Innermost block required by this expression when evaluated */
135 struct block *block;
136 /* Status of this display (enabled or disabled) */
137 int enabled_p;
138 };
139
140 /* Chain of expressions whose values should be displayed
141 automatically each time the program stops. */
142
143 static struct display *display_chain;
144
145 static int display_number;
146
147 /* Prototypes for exported functions. */
148
149 void output_command (char *, int);
150
151 void _initialize_printcmd (void);
152
153 /* Prototypes for local functions. */
154
155 static void do_one_display (struct display *);
156 \f
157
158 /* Decode a format specification. *STRING_PTR should point to it.
159 OFORMAT and OSIZE are used as defaults for the format and size
160 if none are given in the format specification.
161 If OSIZE is zero, then the size field of the returned value
162 should be set only if a size is explicitly specified by the
163 user.
164 The structure returned describes all the data
165 found in the specification. In addition, *STRING_PTR is advanced
166 past the specification and past all whitespace following it. */
167
168 static struct format_data
169 decode_format (char **string_ptr, int oformat, int osize)
170 {
171 struct format_data val;
172 char *p = *string_ptr;
173
174 val.format = '?';
175 val.size = '?';
176 val.count = 1;
177
178 if (*p >= '0' && *p <= '9')
179 val.count = atoi (p);
180 while (*p >= '0' && *p <= '9')
181 p++;
182
183 /* Now process size or format letters that follow. */
184
185 while (1)
186 {
187 if (*p == 'b' || *p == 'h' || *p == 'w' || *p == 'g')
188 val.size = *p++;
189 else if (*p >= 'a' && *p <= 'z')
190 val.format = *p++;
191 else
192 break;
193 }
194
195 while (*p == ' ' || *p == '\t')
196 p++;
197 *string_ptr = p;
198
199 /* Set defaults for format and size if not specified. */
200 if (val.format == '?')
201 {
202 if (val.size == '?')
203 {
204 /* Neither has been specified. */
205 val.format = oformat;
206 val.size = osize;
207 }
208 else
209 /* If a size is specified, any format makes a reasonable
210 default except 'i'. */
211 val.format = oformat == 'i' ? 'x' : oformat;
212 }
213 else if (val.size == '?')
214 switch (val.format)
215 {
216 case 'a':
217 case 's':
218 /* Pick the appropriate size for an address. */
219 if (gdbarch_ptr_bit (current_gdbarch) == 64)
220 val.size = osize ? 'g' : osize;
221 else if (gdbarch_ptr_bit (current_gdbarch) == 32)
222 val.size = osize ? 'w' : osize;
223 else if (gdbarch_ptr_bit (current_gdbarch) == 16)
224 val.size = osize ? 'h' : osize;
225 else
226 /* Bad value for gdbarch_ptr_bit. */
227 internal_error (__FILE__, __LINE__,
228 _("failed internal consistency check"));
229 break;
230 case 'f':
231 /* Floating point has to be word or giantword. */
232 if (osize == 'w' || osize == 'g')
233 val.size = osize;
234 else
235 /* Default it to giantword if the last used size is not
236 appropriate. */
237 val.size = osize ? 'g' : osize;
238 break;
239 case 'c':
240 /* Characters default to one byte. */
241 val.size = osize ? 'b' : osize;
242 break;
243 default:
244 /* The default is the size most recently specified. */
245 val.size = osize;
246 }
247
248 return val;
249 }
250 \f
251 /* Print value VAL on stream according to FORMAT, a letter or 0.
252 Do not end with a newline.
253 0 means print VAL according to its own type.
254 SIZE is the letter for the size of datum being printed.
255 This is used to pad hex numbers so they line up. */
256
257 static void
258 print_formatted (struct value *val, int format, int size,
259 struct ui_file *stream)
260 {
261 struct type *type = check_typedef (value_type (val));
262 int len = TYPE_LENGTH (type);
263
264 if (VALUE_LVAL (val) == lval_memory)
265 next_address = VALUE_ADDRESS (val) + len;
266
267 switch (format)
268 {
269 case 's':
270 /* FIXME: Need to handle wchar_t's here... */
271 next_address = VALUE_ADDRESS (val)
272 + val_print_string (VALUE_ADDRESS (val), -1, 1, stream);
273 break;
274
275 case 'i':
276 /* The old comment says
277 "Force output out, print_insn not using _filtered".
278 I'm not completely sure what that means, I suspect most print_insn
279 now do use _filtered, so I guess it's obsolete.
280 --Yes, it does filter now, and so this is obsolete. -JB */
281
282 /* We often wrap here if there are long symbolic names. */
283 wrap_here (" ");
284 next_address = (VALUE_ADDRESS (val)
285 + gdb_print_insn (VALUE_ADDRESS (val), stream,
286 &branch_delay_insns));
287 break;
288
289 default:
290 if (format == 0
291 || TYPE_CODE (type) == TYPE_CODE_ARRAY
292 || TYPE_CODE (type) == TYPE_CODE_STRING
293 || TYPE_CODE (type) == TYPE_CODE_STRUCT
294 || TYPE_CODE (type) == TYPE_CODE_UNION
295 || TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
296 /* If format is 0, use the 'natural' format for that type of
297 value. If the type is non-scalar, we have to use language
298 rules to print it as a series of scalars. */
299 value_print (val, stream, format, Val_pretty_default);
300 else
301 /* User specified format, so don't look to the the type to
302 tell us what to do. */
303 print_scalar_formatted (value_contents (val), type,
304 format, size, stream);
305 }
306 }
307
308 /* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
309 according to letters FORMAT and SIZE on STREAM.
310 FORMAT may not be zero. Formats s and i are not supported at this level.
311
312 This is how the elements of an array or structure are printed
313 with a format. */
314
315 void
316 print_scalar_formatted (const void *valaddr, struct type *type,
317 int format, int size, struct ui_file *stream)
318 {
319 LONGEST val_long = 0;
320 unsigned int len = TYPE_LENGTH (type);
321
322 if (len > sizeof(LONGEST) &&
323 (TYPE_CODE (type) == TYPE_CODE_INT
324 || TYPE_CODE (type) == TYPE_CODE_ENUM))
325 {
326 switch (format)
327 {
328 case 'o':
329 print_octal_chars (stream, valaddr, len);
330 return;
331 case 'u':
332 case 'd':
333 print_decimal_chars (stream, valaddr, len);
334 return;
335 case 't':
336 print_binary_chars (stream, valaddr, len);
337 return;
338 case 'x':
339 print_hex_chars (stream, valaddr, len);
340 return;
341 case 'c':
342 print_char_chars (stream, valaddr, len);
343 return;
344 default:
345 break;
346 };
347 }
348
349 if (format != 'f')
350 val_long = unpack_long (type, valaddr);
351
352 /* If the value is a pointer, and pointers and addresses are not the
353 same, then at this point, the value's length (in target bytes) is
354 gdbarch_addr_bit/TARGET_CHAR_BIT, not TYPE_LENGTH (type). */
355 if (TYPE_CODE (type) == TYPE_CODE_PTR)
356 len = gdbarch_addr_bit (current_gdbarch) / TARGET_CHAR_BIT;
357
358 /* If we are printing it as unsigned, truncate it in case it is actually
359 a negative signed value (e.g. "print/u (short)-1" should print 65535
360 (if shorts are 16 bits) instead of 4294967295). */
361 if (format != 'd')
362 {
363 if (len < sizeof (LONGEST))
364 val_long &= ((LONGEST) 1 << HOST_CHAR_BIT * len) - 1;
365 }
366
367 switch (format)
368 {
369 case 'x':
370 if (!size)
371 {
372 /* No size specified, like in print. Print varying # of digits. */
373 print_longest (stream, 'x', 1, val_long);
374 }
375 else
376 switch (size)
377 {
378 case 'b':
379 case 'h':
380 case 'w':
381 case 'g':
382 print_longest (stream, size, 1, val_long);
383 break;
384 default:
385 error (_("Undefined output size \"%c\"."), size);
386 }
387 break;
388
389 case 'd':
390 print_longest (stream, 'd', 1, val_long);
391 break;
392
393 case 'u':
394 print_longest (stream, 'u', 0, val_long);
395 break;
396
397 case 'o':
398 if (val_long)
399 print_longest (stream, 'o', 1, val_long);
400 else
401 fprintf_filtered (stream, "0");
402 break;
403
404 case 'a':
405 {
406 CORE_ADDR addr = unpack_pointer (type, valaddr);
407 print_address (addr, stream);
408 }
409 break;
410
411 case 'c':
412 value_print (value_from_longest (builtin_type_true_char, val_long),
413 stream, 0, Val_pretty_default);
414 break;
415
416 case 'f':
417 if (len == TYPE_LENGTH (builtin_type_float))
418 type = builtin_type_float;
419 else if (len == TYPE_LENGTH (builtin_type_double))
420 type = builtin_type_double;
421 else if (len == TYPE_LENGTH (builtin_type_long_double))
422 type = builtin_type_long_double;
423 print_floating (valaddr, type, stream);
424 break;
425
426 case 0:
427 internal_error (__FILE__, __LINE__,
428 _("failed internal consistency check"));
429
430 case 't':
431 /* Binary; 't' stands for "two". */
432 {
433 char bits[8 * (sizeof val_long) + 1];
434 char buf[8 * (sizeof val_long) + 32];
435 char *cp = bits;
436 int width;
437
438 if (!size)
439 width = 8 * (sizeof val_long);
440 else
441 switch (size)
442 {
443 case 'b':
444 width = 8;
445 break;
446 case 'h':
447 width = 16;
448 break;
449 case 'w':
450 width = 32;
451 break;
452 case 'g':
453 width = 64;
454 break;
455 default:
456 error (_("Undefined output size \"%c\"."), size);
457 }
458
459 bits[width] = '\0';
460 while (width-- > 0)
461 {
462 bits[width] = (val_long & 1) ? '1' : '0';
463 val_long >>= 1;
464 }
465 if (!size)
466 {
467 while (*cp && *cp == '0')
468 cp++;
469 if (*cp == '\0')
470 cp--;
471 }
472 strcpy (buf, cp);
473 fputs_filtered (buf, stream);
474 }
475 break;
476
477 default:
478 error (_("Undefined output format \"%c\"."), format);
479 }
480 }
481
482 /* Specify default address for `x' command.
483 The `info lines' command uses this. */
484
485 void
486 set_next_address (CORE_ADDR addr)
487 {
488 next_address = addr;
489
490 /* Make address available to the user as $_. */
491 set_internalvar (lookup_internalvar ("_"),
492 value_from_pointer (lookup_pointer_type (builtin_type_void),
493 addr));
494 }
495
496 /* Optionally print address ADDR symbolically as <SYMBOL+OFFSET> on STREAM,
497 after LEADIN. Print nothing if no symbolic name is found nearby.
498 Optionally also print source file and line number, if available.
499 DO_DEMANGLE controls whether to print a symbol in its native "raw" form,
500 or to interpret it as a possible C++ name and convert it back to source
501 form. However note that DO_DEMANGLE can be overridden by the specific
502 settings of the demangle and asm_demangle variables. */
503
504 void
505 print_address_symbolic (CORE_ADDR addr, struct ui_file *stream,
506 int do_demangle, char *leadin)
507 {
508 char *name = NULL;
509 char *filename = NULL;
510 int unmapped = 0;
511 int offset = 0;
512 int line = 0;
513
514 /* Throw away both name and filename. */
515 struct cleanup *cleanup_chain = make_cleanup (free_current_contents, &name);
516 make_cleanup (free_current_contents, &filename);
517
518 if (build_address_symbolic (addr, do_demangle, &name, &offset,
519 &filename, &line, &unmapped))
520 {
521 do_cleanups (cleanup_chain);
522 return;
523 }
524
525 fputs_filtered (leadin, stream);
526 if (unmapped)
527 fputs_filtered ("<*", stream);
528 else
529 fputs_filtered ("<", stream);
530 fputs_filtered (name, stream);
531 if (offset != 0)
532 fprintf_filtered (stream, "+%u", (unsigned int) offset);
533
534 /* Append source filename and line number if desired. Give specific
535 line # of this addr, if we have it; else line # of the nearest symbol. */
536 if (print_symbol_filename && filename != NULL)
537 {
538 if (line != -1)
539 fprintf_filtered (stream, " at %s:%d", filename, line);
540 else
541 fprintf_filtered (stream, " in %s", filename);
542 }
543 if (unmapped)
544 fputs_filtered ("*>", stream);
545 else
546 fputs_filtered (">", stream);
547
548 do_cleanups (cleanup_chain);
549 }
550
551 /* Given an address ADDR return all the elements needed to print the
552 address in a symbolic form. NAME can be mangled or not depending
553 on DO_DEMANGLE (and also on the asm_demangle global variable,
554 manipulated via ''set print asm-demangle''). Return 0 in case of
555 success, when all the info in the OUT paramters is valid. Return 1
556 otherwise. */
557 int
558 build_address_symbolic (CORE_ADDR addr, /* IN */
559 int do_demangle, /* IN */
560 char **name, /* OUT */
561 int *offset, /* OUT */
562 char **filename, /* OUT */
563 int *line, /* OUT */
564 int *unmapped) /* OUT */
565 {
566 struct minimal_symbol *msymbol;
567 struct symbol *symbol;
568 struct symtab *symtab = 0;
569 CORE_ADDR name_location = 0;
570 asection *section = 0;
571 char *name_temp = "";
572
573 /* Let's say it is unmapped. */
574 *unmapped = 0;
575
576 /* Determine if the address is in an overlay, and whether it is
577 mapped. */
578 if (overlay_debugging)
579 {
580 section = find_pc_overlay (addr);
581 if (pc_in_unmapped_range (addr, section))
582 {
583 *unmapped = 1;
584 addr = overlay_mapped_address (addr, section);
585 }
586 }
587
588 /* First try to find the address in the symbol table, then
589 in the minsyms. Take the closest one. */
590
591 /* This is defective in the sense that it only finds text symbols. So
592 really this is kind of pointless--we should make sure that the
593 minimal symbols have everything we need (by changing that we could
594 save some memory, but for many debug format--ELF/DWARF or
595 anything/stabs--it would be inconvenient to eliminate those minimal
596 symbols anyway). */
597 msymbol = lookup_minimal_symbol_by_pc_section (addr, section);
598 symbol = find_pc_sect_function (addr, section);
599
600 if (symbol)
601 {
602 name_location = BLOCK_START (SYMBOL_BLOCK_VALUE (symbol));
603 if (do_demangle || asm_demangle)
604 name_temp = SYMBOL_PRINT_NAME (symbol);
605 else
606 name_temp = DEPRECATED_SYMBOL_NAME (symbol);
607 }
608
609 if (msymbol != NULL)
610 {
611 if (SYMBOL_VALUE_ADDRESS (msymbol) > name_location || symbol == NULL)
612 {
613 /* The msymbol is closer to the address than the symbol;
614 use the msymbol instead. */
615 symbol = 0;
616 symtab = 0;
617 name_location = SYMBOL_VALUE_ADDRESS (msymbol);
618 if (do_demangle || asm_demangle)
619 name_temp = SYMBOL_PRINT_NAME (msymbol);
620 else
621 name_temp = DEPRECATED_SYMBOL_NAME (msymbol);
622 }
623 }
624 if (symbol == NULL && msymbol == NULL)
625 return 1;
626
627 /* If the nearest symbol is too far away, don't print anything symbolic. */
628
629 /* For when CORE_ADDR is larger than unsigned int, we do math in
630 CORE_ADDR. But when we detect unsigned wraparound in the
631 CORE_ADDR math, we ignore this test and print the offset,
632 because addr+max_symbolic_offset has wrapped through the end
633 of the address space back to the beginning, giving bogus comparison. */
634 if (addr > name_location + max_symbolic_offset
635 && name_location + max_symbolic_offset > name_location)
636 return 1;
637
638 *offset = addr - name_location;
639
640 *name = xstrdup (name_temp);
641
642 if (print_symbol_filename)
643 {
644 struct symtab_and_line sal;
645
646 sal = find_pc_sect_line (addr, section, 0);
647
648 if (sal.symtab)
649 {
650 *filename = xstrdup (sal.symtab->filename);
651 *line = sal.line;
652 }
653 else if (symtab && symbol && symbol->line)
654 {
655 *filename = xstrdup (symtab->filename);
656 *line = symbol->line;
657 }
658 else if (symtab)
659 {
660 *filename = xstrdup (symtab->filename);
661 *line = -1;
662 }
663 }
664 return 0;
665 }
666
667 /* Print address ADDR on STREAM. USE_LOCAL means the same thing as for
668 print_longest. */
669 void
670 deprecated_print_address_numeric (CORE_ADDR addr, int use_local,
671 struct ui_file *stream)
672 {
673 if (use_local)
674 fputs_filtered (paddress (addr), stream);
675 else
676 {
677 int addr_bit = gdbarch_addr_bit (current_gdbarch);
678
679 if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
680 addr &= ((CORE_ADDR) 1 << addr_bit) - 1;
681 print_longest (stream, 'x', 0, (ULONGEST) addr);
682 }
683 }
684
685 /* Print address ADDR symbolically on STREAM.
686 First print it as a number. Then perhaps print
687 <SYMBOL + OFFSET> after the number. */
688
689 void
690 print_address (CORE_ADDR addr, struct ui_file *stream)
691 {
692 deprecated_print_address_numeric (addr, 1, stream);
693 print_address_symbolic (addr, stream, asm_demangle, " ");
694 }
695
696 /* Print address ADDR symbolically on STREAM. Parameter DEMANGLE
697 controls whether to print the symbolic name "raw" or demangled.
698 Global setting "addressprint" controls whether to print hex address
699 or not. */
700
701 void
702 print_address_demangle (CORE_ADDR addr, struct ui_file *stream,
703 int do_demangle)
704 {
705 if (addr == 0)
706 {
707 fprintf_filtered (stream, "0");
708 }
709 else if (addressprint)
710 {
711 deprecated_print_address_numeric (addr, 1, stream);
712 print_address_symbolic (addr, stream, do_demangle, " ");
713 }
714 else
715 {
716 print_address_symbolic (addr, stream, do_demangle, "");
717 }
718 }
719 \f
720
721 /* These are the types that $__ will get after an examine command of one
722 of these sizes. */
723
724 static struct type *examine_i_type;
725
726 static struct type *examine_b_type;
727 static struct type *examine_h_type;
728 static struct type *examine_w_type;
729 static struct type *examine_g_type;
730
731 /* Examine data at address ADDR in format FMT.
732 Fetch it from memory and print on gdb_stdout. */
733
734 static void
735 do_examine (struct format_data fmt, CORE_ADDR addr)
736 {
737 char format = 0;
738 char size;
739 int count = 1;
740 struct type *val_type = NULL;
741 int i;
742 int maxelts;
743
744 format = fmt.format;
745 size = fmt.size;
746 count = fmt.count;
747 next_address = addr;
748
749 /* String or instruction format implies fetch single bytes
750 regardless of the specified size. */
751 if (format == 's' || format == 'i')
752 size = 'b';
753
754 if (format == 'i')
755 val_type = examine_i_type;
756 else if (size == 'b')
757 val_type = examine_b_type;
758 else if (size == 'h')
759 val_type = examine_h_type;
760 else if (size == 'w')
761 val_type = examine_w_type;
762 else if (size == 'g')
763 val_type = examine_g_type;
764
765 maxelts = 8;
766 if (size == 'w')
767 maxelts = 4;
768 if (size == 'g')
769 maxelts = 2;
770 if (format == 's' || format == 'i')
771 maxelts = 1;
772
773 /* Print as many objects as specified in COUNT, at most maxelts per line,
774 with the address of the next one at the start of each line. */
775
776 while (count > 0)
777 {
778 QUIT;
779 print_address (next_address, gdb_stdout);
780 printf_filtered (":");
781 for (i = maxelts;
782 i > 0 && count > 0;
783 i--, count--)
784 {
785 printf_filtered ("\t");
786 /* Note that print_formatted sets next_address for the next
787 object. */
788 last_examine_address = next_address;
789
790 if (last_examine_value)
791 value_free (last_examine_value);
792
793 /* The value to be displayed is not fetched greedily.
794 Instead, to avoid the possibility of a fetched value not
795 being used, its retrieval is delayed until the print code
796 uses it. When examining an instruction stream, the
797 disassembler will perform its own memory fetch using just
798 the address stored in LAST_EXAMINE_VALUE. FIXME: Should
799 the disassembler be modified so that LAST_EXAMINE_VALUE
800 is left with the byte sequence from the last complete
801 instruction fetched from memory? */
802 last_examine_value = value_at_lazy (val_type, next_address);
803
804 if (last_examine_value)
805 release_value (last_examine_value);
806
807 print_formatted (last_examine_value, format, size, gdb_stdout);
808
809 /* Display any branch delay slots following the final insn. */
810 if (format == 'i' && count == 1)
811 count += branch_delay_insns;
812 }
813 printf_filtered ("\n");
814 gdb_flush (gdb_stdout);
815 }
816 }
817 \f
818 static void
819 validate_format (struct format_data fmt, char *cmdname)
820 {
821 if (fmt.size != 0)
822 error (_("Size letters are meaningless in \"%s\" command."), cmdname);
823 if (fmt.count != 1)
824 error (_("Item count other than 1 is meaningless in \"%s\" command."),
825 cmdname);
826 if (fmt.format == 'i' || fmt.format == 's')
827 error (_("Format letter \"%c\" is meaningless in \"%s\" command."),
828 fmt.format, cmdname);
829 }
830
831 /* Evaluate string EXP as an expression in the current language and
832 print the resulting value. EXP may contain a format specifier as the
833 first argument ("/x myvar" for example, to print myvar in hex). */
834
835 static void
836 print_command_1 (char *exp, int inspect, int voidprint)
837 {
838 struct expression *expr;
839 struct cleanup *old_chain = 0;
840 char format = 0;
841 struct value *val;
842 struct format_data fmt;
843 int cleanup = 0;
844
845 /* Pass inspect flag to the rest of the print routines in a global
846 (sigh). */
847 inspect_it = inspect;
848
849 if (exp && *exp == '/')
850 {
851 exp++;
852 fmt = decode_format (&exp, last_format, 0);
853 validate_format (fmt, "print");
854 last_format = format = fmt.format;
855 }
856 else
857 {
858 fmt.count = 1;
859 fmt.format = 0;
860 fmt.size = 0;
861 }
862
863 if (exp && *exp)
864 {
865 struct type *type;
866 expr = parse_expression (exp);
867 old_chain = make_cleanup (free_current_contents, &expr);
868 cleanup = 1;
869 val = evaluate_expression (expr);
870 }
871 else
872 val = access_value_history (0);
873
874 if (voidprint || (val && value_type (val) &&
875 TYPE_CODE (value_type (val)) != TYPE_CODE_VOID))
876 {
877 int histindex = record_latest_value (val);
878
879 if (histindex >= 0)
880 annotate_value_history_begin (histindex, value_type (val));
881 else
882 annotate_value_begin (value_type (val));
883
884 if (inspect)
885 printf_unfiltered ("\031(gdb-makebuffer \"%s\" %d '(\"",
886 exp, histindex);
887 else if (histindex >= 0)
888 printf_filtered ("$%d = ", histindex);
889
890 if (histindex >= 0)
891 annotate_value_history_value ();
892
893 print_formatted (val, format, fmt.size, gdb_stdout);
894 printf_filtered ("\n");
895
896 if (histindex >= 0)
897 annotate_value_history_end ();
898 else
899 annotate_value_end ();
900
901 if (inspect)
902 printf_unfiltered ("\") )\030");
903 }
904
905 if (cleanup)
906 do_cleanups (old_chain);
907 inspect_it = 0; /* Reset print routines to normal. */
908 }
909
910 static void
911 print_command (char *exp, int from_tty)
912 {
913 print_command_1 (exp, 0, 1);
914 }
915
916 /* Same as print, except in epoch, it gets its own window. */
917 static void
918 inspect_command (char *exp, int from_tty)
919 {
920 extern int epoch_interface;
921
922 print_command_1 (exp, epoch_interface, 1);
923 }
924
925 /* Same as print, except it doesn't print void results. */
926 static void
927 call_command (char *exp, int from_tty)
928 {
929 print_command_1 (exp, 0, 0);
930 }
931
932 void
933 output_command (char *exp, int from_tty)
934 {
935 struct expression *expr;
936 struct cleanup *old_chain;
937 char format = 0;
938 struct value *val;
939 struct format_data fmt;
940
941 fmt.size = 0;
942
943 if (exp && *exp == '/')
944 {
945 exp++;
946 fmt = decode_format (&exp, 0, 0);
947 validate_format (fmt, "output");
948 format = fmt.format;
949 }
950
951 expr = parse_expression (exp);
952 old_chain = make_cleanup (free_current_contents, &expr);
953
954 val = evaluate_expression (expr);
955
956 annotate_value_begin (value_type (val));
957
958 print_formatted (val, format, fmt.size, gdb_stdout);
959
960 annotate_value_end ();
961
962 wrap_here ("");
963 gdb_flush (gdb_stdout);
964
965 do_cleanups (old_chain);
966 }
967
968 static void
969 set_command (char *exp, int from_tty)
970 {
971 struct expression *expr = parse_expression (exp);
972 struct cleanup *old_chain =
973 make_cleanup (free_current_contents, &expr);
974 evaluate_expression (expr);
975 do_cleanups (old_chain);
976 }
977
978 static void
979 sym_info (char *arg, int from_tty)
980 {
981 struct minimal_symbol *msymbol;
982 struct objfile *objfile;
983 struct obj_section *osect;
984 asection *sect;
985 CORE_ADDR addr, sect_addr;
986 int matches = 0;
987 unsigned int offset;
988
989 if (!arg)
990 error_no_arg (_("address"));
991
992 addr = parse_and_eval_address (arg);
993 ALL_OBJSECTIONS (objfile, osect)
994 {
995 /* Only process each object file once, even if there's a separate
996 debug file. */
997 if (objfile->separate_debug_objfile_backlink)
998 continue;
999
1000 sect = osect->the_bfd_section;
1001 sect_addr = overlay_mapped_address (addr, sect);
1002
1003 if (osect->addr <= sect_addr && sect_addr < osect->endaddr &&
1004 (msymbol = lookup_minimal_symbol_by_pc_section (sect_addr, sect)))
1005 {
1006 matches = 1;
1007 offset = sect_addr - SYMBOL_VALUE_ADDRESS (msymbol);
1008 if (offset)
1009 printf_filtered ("%s + %u in ",
1010 SYMBOL_PRINT_NAME (msymbol), offset);
1011 else
1012 printf_filtered ("%s in ",
1013 SYMBOL_PRINT_NAME (msymbol));
1014 if (pc_in_unmapped_range (addr, sect))
1015 printf_filtered (_("load address range of "));
1016 if (section_is_overlay (sect))
1017 printf_filtered (_("%s overlay "),
1018 section_is_mapped (sect) ? "mapped" : "unmapped");
1019 printf_filtered (_("section %s"), sect->name);
1020 printf_filtered ("\n");
1021 }
1022 }
1023 if (matches == 0)
1024 printf_filtered (_("No symbol matches %s.\n"), arg);
1025 }
1026
1027 static void
1028 address_info (char *exp, int from_tty)
1029 {
1030 struct symbol *sym;
1031 struct minimal_symbol *msymbol;
1032 long val;
1033 long basereg;
1034 asection *section;
1035 CORE_ADDR load_addr;
1036 int is_a_field_of_this; /* C++: lookup_symbol sets this to nonzero
1037 if exp is a field of `this'. */
1038
1039 if (exp == 0)
1040 error (_("Argument required."));
1041
1042 sym = lookup_symbol (exp, get_selected_block (0), VAR_DOMAIN,
1043 &is_a_field_of_this, (struct symtab **) NULL);
1044 if (sym == NULL)
1045 {
1046 if (is_a_field_of_this)
1047 {
1048 printf_filtered ("Symbol \"");
1049 fprintf_symbol_filtered (gdb_stdout, exp,
1050 current_language->la_language, DMGL_ANSI);
1051 printf_filtered ("\" is a field of the local class variable ");
1052 if (current_language->la_language == language_objc)
1053 printf_filtered ("`self'\n"); /* ObjC equivalent of "this" */
1054 else
1055 printf_filtered ("`this'\n");
1056 return;
1057 }
1058
1059 msymbol = lookup_minimal_symbol (exp, NULL, NULL);
1060
1061 if (msymbol != NULL)
1062 {
1063 load_addr = SYMBOL_VALUE_ADDRESS (msymbol);
1064
1065 printf_filtered ("Symbol \"");
1066 fprintf_symbol_filtered (gdb_stdout, exp,
1067 current_language->la_language, DMGL_ANSI);
1068 printf_filtered ("\" is at ");
1069 deprecated_print_address_numeric (load_addr, 1, gdb_stdout);
1070 printf_filtered (" in a file compiled without debugging");
1071 section = SYMBOL_BFD_SECTION (msymbol);
1072 if (section_is_overlay (section))
1073 {
1074 load_addr = overlay_unmapped_address (load_addr, section);
1075 printf_filtered (",\n -- loaded at ");
1076 deprecated_print_address_numeric (load_addr, 1, gdb_stdout);
1077 printf_filtered (" in overlay section %s", section->name);
1078 }
1079 printf_filtered (".\n");
1080 }
1081 else
1082 error (_("No symbol \"%s\" in current context."), exp);
1083 return;
1084 }
1085
1086 printf_filtered ("Symbol \"");
1087 fprintf_symbol_filtered (gdb_stdout, DEPRECATED_SYMBOL_NAME (sym),
1088 current_language->la_language, DMGL_ANSI);
1089 printf_filtered ("\" is ");
1090 val = SYMBOL_VALUE (sym);
1091 basereg = SYMBOL_BASEREG (sym);
1092 section = SYMBOL_BFD_SECTION (sym);
1093
1094 switch (SYMBOL_CLASS (sym))
1095 {
1096 case LOC_CONST:
1097 case LOC_CONST_BYTES:
1098 printf_filtered ("constant");
1099 break;
1100
1101 case LOC_LABEL:
1102 printf_filtered ("a label at address ");
1103 deprecated_print_address_numeric (load_addr = SYMBOL_VALUE_ADDRESS (sym),
1104 1, gdb_stdout);
1105 if (section_is_overlay (section))
1106 {
1107 load_addr = overlay_unmapped_address (load_addr, section);
1108 printf_filtered (",\n -- loaded at ");
1109 deprecated_print_address_numeric (load_addr, 1, gdb_stdout);
1110 printf_filtered (" in overlay section %s", section->name);
1111 }
1112 break;
1113
1114 case LOC_COMPUTED:
1115 case LOC_COMPUTED_ARG:
1116 /* FIXME: cagney/2004-01-26: It should be possible to
1117 unconditionally call the SYMBOL_OPS method when available.
1118 Unfortunately DWARF 2 stores the frame-base (instead of the
1119 function) location in a function's symbol. Oops! For the
1120 moment enable this when/where applicable. */
1121 SYMBOL_OPS (sym)->describe_location (sym, gdb_stdout);
1122 break;
1123
1124 case LOC_REGISTER:
1125 printf_filtered (_("a variable in register %s"),
1126 gdbarch_register_name (current_gdbarch, val));
1127 break;
1128
1129 case LOC_STATIC:
1130 printf_filtered (_("static storage at address "));
1131 deprecated_print_address_numeric (load_addr = SYMBOL_VALUE_ADDRESS (sym),
1132 1, gdb_stdout);
1133 if (section_is_overlay (section))
1134 {
1135 load_addr = overlay_unmapped_address (load_addr, section);
1136 printf_filtered (_(",\n -- loaded at "));
1137 deprecated_print_address_numeric (load_addr, 1, gdb_stdout);
1138 printf_filtered (_(" in overlay section %s"), section->name);
1139 }
1140 break;
1141
1142 case LOC_INDIRECT:
1143 printf_filtered (_("external global (indirect addressing), at address *("));
1144 deprecated_print_address_numeric (load_addr = SYMBOL_VALUE_ADDRESS (sym),
1145 1, gdb_stdout);
1146 printf_filtered (")");
1147 if (section_is_overlay (section))
1148 {
1149 load_addr = overlay_unmapped_address (load_addr, section);
1150 printf_filtered (_(",\n -- loaded at "));
1151 deprecated_print_address_numeric (load_addr, 1, gdb_stdout);
1152 printf_filtered (_(" in overlay section %s"), section->name);
1153 }
1154 break;
1155
1156 case LOC_REGPARM:
1157 printf_filtered (_("an argument in register %s"),
1158 gdbarch_register_name (current_gdbarch, val));
1159 break;
1160
1161 case LOC_REGPARM_ADDR:
1162 printf_filtered (_("address of an argument in register %s"),
1163 gdbarch_register_name (current_gdbarch, val));
1164 break;
1165
1166 case LOC_ARG:
1167 printf_filtered (_("an argument at offset %ld"), val);
1168 break;
1169
1170 case LOC_LOCAL_ARG:
1171 printf_filtered (_("an argument at frame offset %ld"), val);
1172 break;
1173
1174 case LOC_LOCAL:
1175 printf_filtered (_("a local variable at frame offset %ld"), val);
1176 break;
1177
1178 case LOC_REF_ARG:
1179 printf_filtered (_("a reference argument at offset %ld"), val);
1180 break;
1181
1182 case LOC_BASEREG:
1183 printf_filtered (_("a variable at offset %ld from register %s"),
1184 val, gdbarch_register_name (current_gdbarch, basereg));
1185 break;
1186
1187 case LOC_BASEREG_ARG:
1188 printf_filtered (_("an argument at offset %ld from register %s"),
1189 val, gdbarch_register_name (current_gdbarch, basereg));
1190 break;
1191
1192 case LOC_TYPEDEF:
1193 printf_filtered (_("a typedef"));
1194 break;
1195
1196 case LOC_BLOCK:
1197 printf_filtered (_("a function at address "));
1198 load_addr = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
1199 deprecated_print_address_numeric (load_addr, 1, gdb_stdout);
1200 if (section_is_overlay (section))
1201 {
1202 load_addr = overlay_unmapped_address (load_addr, section);
1203 printf_filtered (_(",\n -- loaded at "));
1204 deprecated_print_address_numeric (load_addr, 1, gdb_stdout);
1205 printf_filtered (_(" in overlay section %s"), section->name);
1206 }
1207 break;
1208
1209 case LOC_UNRESOLVED:
1210 {
1211 struct minimal_symbol *msym;
1212
1213 msym = lookup_minimal_symbol (DEPRECATED_SYMBOL_NAME (sym), NULL, NULL);
1214 if (msym == NULL)
1215 printf_filtered ("unresolved");
1216 else
1217 {
1218 section = SYMBOL_BFD_SECTION (msym);
1219 printf_filtered (_("static storage at address "));
1220 load_addr = SYMBOL_VALUE_ADDRESS (msym);
1221 deprecated_print_address_numeric (load_addr, 1, gdb_stdout);
1222 if (section_is_overlay (section))
1223 {
1224 load_addr = overlay_unmapped_address (load_addr, section);
1225 printf_filtered (_(",\n -- loaded at "));
1226 deprecated_print_address_numeric (load_addr, 1, gdb_stdout);
1227 printf_filtered (_(" in overlay section %s"), section->name);
1228 }
1229 }
1230 }
1231 break;
1232
1233 case LOC_HP_THREAD_LOCAL_STATIC:
1234 printf_filtered (_("\
1235 a thread-local variable at offset %ld from the thread base register %s"),
1236 val, gdbarch_register_name (current_gdbarch, basereg));
1237 break;
1238
1239 case LOC_OPTIMIZED_OUT:
1240 printf_filtered (_("optimized out"));
1241 break;
1242
1243 default:
1244 printf_filtered (_("of unknown (botched) type"));
1245 break;
1246 }
1247 printf_filtered (".\n");
1248 }
1249 \f
1250
1251 static void
1252 x_command (char *exp, int from_tty)
1253 {
1254 struct expression *expr;
1255 struct format_data fmt;
1256 struct cleanup *old_chain;
1257 struct value *val;
1258
1259 fmt.format = last_format;
1260 fmt.size = last_size;
1261 fmt.count = 1;
1262
1263 if (exp && *exp == '/')
1264 {
1265 exp++;
1266 fmt = decode_format (&exp, last_format, last_size);
1267 }
1268
1269 /* If we have an expression, evaluate it and use it as the address. */
1270
1271 if (exp != 0 && *exp != 0)
1272 {
1273 expr = parse_expression (exp);
1274 /* Cause expression not to be there any more if this command is
1275 repeated with Newline. But don't clobber a user-defined
1276 command's definition. */
1277 if (from_tty)
1278 *exp = 0;
1279 old_chain = make_cleanup (free_current_contents, &expr);
1280 val = evaluate_expression (expr);
1281 if (TYPE_CODE (value_type (val)) == TYPE_CODE_REF)
1282 val = value_ind (val);
1283 /* In rvalue contexts, such as this, functions are coerced into
1284 pointers to functions. This makes "x/i main" work. */
1285 if (/* last_format == 'i' && */
1286 TYPE_CODE (value_type (val)) == TYPE_CODE_FUNC
1287 && VALUE_LVAL (val) == lval_memory)
1288 next_address = VALUE_ADDRESS (val);
1289 else
1290 next_address = value_as_address (val);
1291 do_cleanups (old_chain);
1292 }
1293
1294 do_examine (fmt, next_address);
1295
1296 /* If the examine succeeds, we remember its size and format for next
1297 time. */
1298 last_size = fmt.size;
1299 last_format = fmt.format;
1300
1301 /* Set a couple of internal variables if appropriate. */
1302 if (last_examine_value)
1303 {
1304 /* Make last address examined available to the user as $_. Use
1305 the correct pointer type. */
1306 struct type *pointer_type
1307 = lookup_pointer_type (value_type (last_examine_value));
1308 set_internalvar (lookup_internalvar ("_"),
1309 value_from_pointer (pointer_type,
1310 last_examine_address));
1311
1312 /* Make contents of last address examined available to the user
1313 as $__. If the last value has not been fetched from memory
1314 then don't fetch it now; instead mark it by voiding the $__
1315 variable. */
1316 if (value_lazy (last_examine_value))
1317 set_internalvar (lookup_internalvar ("__"),
1318 allocate_value (builtin_type_void));
1319 else
1320 set_internalvar (lookup_internalvar ("__"), last_examine_value);
1321 }
1322 }
1323 \f
1324
1325 /* Add an expression to the auto-display chain.
1326 Specify the expression. */
1327
1328 static void
1329 display_command (char *exp, int from_tty)
1330 {
1331 struct format_data fmt;
1332 struct expression *expr;
1333 struct display *new;
1334 int display_it = 1;
1335
1336 #if defined(TUI)
1337 /* NOTE: cagney/2003-02-13 The `tui_active' was previously
1338 `tui_version'. */
1339 if (tui_active && exp != NULL && *exp == '$')
1340 display_it = (tui_set_layout_for_display_command (exp) == TUI_FAILURE);
1341 #endif
1342
1343 if (display_it)
1344 {
1345 if (exp == 0)
1346 {
1347 do_displays ();
1348 return;
1349 }
1350
1351 if (*exp == '/')
1352 {
1353 exp++;
1354 fmt = decode_format (&exp, 0, 0);
1355 if (fmt.size && fmt.format == 0)
1356 fmt.format = 'x';
1357 if (fmt.format == 'i' || fmt.format == 's')
1358 fmt.size = 'b';
1359 }
1360 else
1361 {
1362 fmt.format = 0;
1363 fmt.size = 0;
1364 fmt.count = 0;
1365 }
1366
1367 innermost_block = 0;
1368 expr = parse_expression (exp);
1369
1370 new = (struct display *) xmalloc (sizeof (struct display));
1371
1372 new->exp = expr;
1373 new->block = innermost_block;
1374 new->next = display_chain;
1375 new->number = ++display_number;
1376 new->format = fmt;
1377 new->enabled_p = 1;
1378 display_chain = new;
1379
1380 if (from_tty && target_has_execution)
1381 do_one_display (new);
1382
1383 dont_repeat ();
1384 }
1385 }
1386
1387 static void
1388 free_display (struct display *d)
1389 {
1390 xfree (d->exp);
1391 xfree (d);
1392 }
1393
1394 /* Clear out the display_chain. Done when new symtabs are loaded,
1395 since this invalidates the types stored in many expressions. */
1396
1397 void
1398 clear_displays (void)
1399 {
1400 struct display *d;
1401
1402 while ((d = display_chain) != NULL)
1403 {
1404 xfree (d->exp);
1405 display_chain = d->next;
1406 xfree (d);
1407 }
1408 }
1409
1410 /* Delete the auto-display number NUM. */
1411
1412 static void
1413 delete_display (int num)
1414 {
1415 struct display *d1, *d;
1416
1417 if (!display_chain)
1418 error (_("No display number %d."), num);
1419
1420 if (display_chain->number == num)
1421 {
1422 d1 = display_chain;
1423 display_chain = d1->next;
1424 free_display (d1);
1425 }
1426 else
1427 for (d = display_chain;; d = d->next)
1428 {
1429 if (d->next == 0)
1430 error (_("No display number %d."), num);
1431 if (d->next->number == num)
1432 {
1433 d1 = d->next;
1434 d->next = d1->next;
1435 free_display (d1);
1436 break;
1437 }
1438 }
1439 }
1440
1441 /* Delete some values from the auto-display chain.
1442 Specify the element numbers. */
1443
1444 static void
1445 undisplay_command (char *args, int from_tty)
1446 {
1447 char *p = args;
1448 char *p1;
1449 int num;
1450
1451 if (args == 0)
1452 {
1453 if (query ("Delete all auto-display expressions? "))
1454 clear_displays ();
1455 dont_repeat ();
1456 return;
1457 }
1458
1459 while (*p)
1460 {
1461 p1 = p;
1462 while (*p1 >= '0' && *p1 <= '9')
1463 p1++;
1464 if (*p1 && *p1 != ' ' && *p1 != '\t')
1465 error (_("Arguments must be display numbers."));
1466
1467 num = atoi (p);
1468
1469 delete_display (num);
1470
1471 p = p1;
1472 while (*p == ' ' || *p == '\t')
1473 p++;
1474 }
1475 dont_repeat ();
1476 }
1477
1478 /* Display a single auto-display.
1479 Do nothing if the display cannot be printed in the current context,
1480 or if the display is disabled. */
1481
1482 static void
1483 do_one_display (struct display *d)
1484 {
1485 int within_current_scope;
1486
1487 if (d->enabled_p == 0)
1488 return;
1489
1490 if (d->block)
1491 within_current_scope = contained_in (get_selected_block (0), d->block);
1492 else
1493 within_current_scope = 1;
1494 if (!within_current_scope)
1495 return;
1496
1497 current_display_number = d->number;
1498
1499 annotate_display_begin ();
1500 printf_filtered ("%d", d->number);
1501 annotate_display_number_end ();
1502 printf_filtered (": ");
1503 if (d->format.size)
1504 {
1505 CORE_ADDR addr;
1506 struct value *val;
1507
1508 annotate_display_format ();
1509
1510 printf_filtered ("x/");
1511 if (d->format.count != 1)
1512 printf_filtered ("%d", d->format.count);
1513 printf_filtered ("%c", d->format.format);
1514 if (d->format.format != 'i' && d->format.format != 's')
1515 printf_filtered ("%c", d->format.size);
1516 printf_filtered (" ");
1517
1518 annotate_display_expression ();
1519
1520 print_expression (d->exp, gdb_stdout);
1521 annotate_display_expression_end ();
1522
1523 if (d->format.count != 1 || d->format.format == 'i')
1524 printf_filtered ("\n");
1525 else
1526 printf_filtered (" ");
1527
1528 val = evaluate_expression (d->exp);
1529 addr = value_as_address (val);
1530 if (d->format.format == 'i')
1531 addr = gdbarch_addr_bits_remove (current_gdbarch, addr);
1532
1533 annotate_display_value ();
1534
1535 do_examine (d->format, addr);
1536 }
1537 else
1538 {
1539 annotate_display_format ();
1540
1541 if (d->format.format)
1542 printf_filtered ("/%c ", d->format.format);
1543
1544 annotate_display_expression ();
1545
1546 print_expression (d->exp, gdb_stdout);
1547 annotate_display_expression_end ();
1548
1549 printf_filtered (" = ");
1550
1551 annotate_display_expression ();
1552
1553 print_formatted (evaluate_expression (d->exp),
1554 d->format.format, d->format.size, gdb_stdout);
1555 printf_filtered ("\n");
1556 }
1557
1558 annotate_display_end ();
1559
1560 gdb_flush (gdb_stdout);
1561 current_display_number = -1;
1562 }
1563
1564 /* Display all of the values on the auto-display chain which can be
1565 evaluated in the current scope. */
1566
1567 void
1568 do_displays (void)
1569 {
1570 struct display *d;
1571
1572 for (d = display_chain; d; d = d->next)
1573 do_one_display (d);
1574 }
1575
1576 /* Delete the auto-display which we were in the process of displaying.
1577 This is done when there is an error or a signal. */
1578
1579 void
1580 disable_display (int num)
1581 {
1582 struct display *d;
1583
1584 for (d = display_chain; d; d = d->next)
1585 if (d->number == num)
1586 {
1587 d->enabled_p = 0;
1588 return;
1589 }
1590 printf_unfiltered (_("No display number %d.\n"), num);
1591 }
1592
1593 void
1594 disable_current_display (void)
1595 {
1596 if (current_display_number >= 0)
1597 {
1598 disable_display (current_display_number);
1599 fprintf_unfiltered (gdb_stderr, _("\
1600 Disabling display %d to avoid infinite recursion.\n"),
1601 current_display_number);
1602 }
1603 current_display_number = -1;
1604 }
1605
1606 static void
1607 display_info (char *ignore, int from_tty)
1608 {
1609 struct display *d;
1610
1611 if (!display_chain)
1612 printf_unfiltered (_("There are no auto-display expressions now.\n"));
1613 else
1614 printf_filtered (_("Auto-display expressions now in effect:\n\
1615 Num Enb Expression\n"));
1616
1617 for (d = display_chain; d; d = d->next)
1618 {
1619 printf_filtered ("%d: %c ", d->number, "ny"[(int) d->enabled_p]);
1620 if (d->format.size)
1621 printf_filtered ("/%d%c%c ", d->format.count, d->format.size,
1622 d->format.format);
1623 else if (d->format.format)
1624 printf_filtered ("/%c ", d->format.format);
1625 print_expression (d->exp, gdb_stdout);
1626 if (d->block && !contained_in (get_selected_block (0), d->block))
1627 printf_filtered (_(" (cannot be evaluated in the current context)"));
1628 printf_filtered ("\n");
1629 gdb_flush (gdb_stdout);
1630 }
1631 }
1632
1633 static void
1634 enable_display (char *args, int from_tty)
1635 {
1636 char *p = args;
1637 char *p1;
1638 int num;
1639 struct display *d;
1640
1641 if (p == 0)
1642 {
1643 for (d = display_chain; d; d = d->next)
1644 d->enabled_p = 1;
1645 }
1646 else
1647 while (*p)
1648 {
1649 p1 = p;
1650 while (*p1 >= '0' && *p1 <= '9')
1651 p1++;
1652 if (*p1 && *p1 != ' ' && *p1 != '\t')
1653 error (_("Arguments must be display numbers."));
1654
1655 num = atoi (p);
1656
1657 for (d = display_chain; d; d = d->next)
1658 if (d->number == num)
1659 {
1660 d->enabled_p = 1;
1661 goto win;
1662 }
1663 printf_unfiltered (_("No display number %d.\n"), num);
1664 win:
1665 p = p1;
1666 while (*p == ' ' || *p == '\t')
1667 p++;
1668 }
1669 }
1670
1671 static void
1672 disable_display_command (char *args, int from_tty)
1673 {
1674 char *p = args;
1675 char *p1;
1676 struct display *d;
1677
1678 if (p == 0)
1679 {
1680 for (d = display_chain; d; d = d->next)
1681 d->enabled_p = 0;
1682 }
1683 else
1684 while (*p)
1685 {
1686 p1 = p;
1687 while (*p1 >= '0' && *p1 <= '9')
1688 p1++;
1689 if (*p1 && *p1 != ' ' && *p1 != '\t')
1690 error (_("Arguments must be display numbers."));
1691
1692 disable_display (atoi (p));
1693
1694 p = p1;
1695 while (*p == ' ' || *p == '\t')
1696 p++;
1697 }
1698 }
1699 \f
1700
1701 /* Print the value in stack frame FRAME of a variable specified by a
1702 struct symbol. */
1703
1704 void
1705 print_variable_value (struct symbol *var, struct frame_info *frame,
1706 struct ui_file *stream)
1707 {
1708 struct value *val = read_var_value (var, frame);
1709
1710 value_print (val, stream, 0, Val_pretty_default);
1711 }
1712
1713 static void
1714 printf_command (char *arg, int from_tty)
1715 {
1716 char *f = NULL;
1717 char *s = arg;
1718 char *string = NULL;
1719 struct value **val_args;
1720 char *substrings;
1721 char *current_substring;
1722 int nargs = 0;
1723 int allocated_args = 20;
1724 struct cleanup *old_cleanups;
1725
1726 val_args = xmalloc (allocated_args * sizeof (struct value *));
1727 old_cleanups = make_cleanup (free_current_contents, &val_args);
1728
1729 if (s == 0)
1730 error_no_arg (_("format-control string and values to print"));
1731
1732 /* Skip white space before format string */
1733 while (*s == ' ' || *s == '\t')
1734 s++;
1735
1736 /* A format string should follow, enveloped in double quotes. */
1737 if (*s++ != '"')
1738 error (_("Bad format string, missing '\"'."));
1739
1740 /* Parse the format-control string and copy it into the string STRING,
1741 processing some kinds of escape sequence. */
1742
1743 f = string = (char *) alloca (strlen (s) + 1);
1744
1745 while (*s != '"')
1746 {
1747 int c = *s++;
1748 switch (c)
1749 {
1750 case '\0':
1751 error (_("Bad format string, non-terminated '\"'."));
1752
1753 case '\\':
1754 switch (c = *s++)
1755 {
1756 case '\\':
1757 *f++ = '\\';
1758 break;
1759 case 'a':
1760 *f++ = '\a';
1761 break;
1762 case 'b':
1763 *f++ = '\b';
1764 break;
1765 case 'f':
1766 *f++ = '\f';
1767 break;
1768 case 'n':
1769 *f++ = '\n';
1770 break;
1771 case 'r':
1772 *f++ = '\r';
1773 break;
1774 case 't':
1775 *f++ = '\t';
1776 break;
1777 case 'v':
1778 *f++ = '\v';
1779 break;
1780 case '"':
1781 *f++ = '"';
1782 break;
1783 default:
1784 /* ??? TODO: handle other escape sequences */
1785 error (_("Unrecognized escape character \\%c in format string."),
1786 c);
1787 }
1788 break;
1789
1790 default:
1791 *f++ = c;
1792 }
1793 }
1794
1795 /* Skip over " and following space and comma. */
1796 s++;
1797 *f++ = '\0';
1798 while (*s == ' ' || *s == '\t')
1799 s++;
1800
1801 if (*s != ',' && *s != 0)
1802 error (_("Invalid argument syntax"));
1803
1804 if (*s == ',')
1805 s++;
1806 while (*s == ' ' || *s == '\t')
1807 s++;
1808
1809 /* Need extra space for the '\0's. Doubling the size is sufficient. */
1810 substrings = alloca (strlen (string) * 2);
1811 current_substring = substrings;
1812
1813 {
1814 /* Now scan the string for %-specs and see what kinds of args they want.
1815 argclass[I] classifies the %-specs so we can give printf_filtered
1816 something of the right size. */
1817
1818 enum argclass
1819 {
1820 int_arg, long_arg, long_long_arg, ptr_arg, string_arg,
1821 double_arg, long_double_arg
1822 };
1823 enum argclass *argclass;
1824 enum argclass this_argclass;
1825 char *last_arg;
1826 int nargs_wanted;
1827 int i;
1828
1829 argclass = (enum argclass *) alloca (strlen (s) * sizeof *argclass);
1830 nargs_wanted = 0;
1831 f = string;
1832 last_arg = string;
1833 while (*f)
1834 if (*f++ == '%')
1835 {
1836 int seen_hash = 0, seen_zero = 0, lcount = 0, seen_prec = 0;
1837 int seen_space = 0, seen_plus = 0;
1838 int seen_big_l = 0, seen_h = 0;
1839 int bad = 0;
1840
1841 /* Check the validity of the format specifier, and work
1842 out what argument it expects. We only accept C89
1843 format strings, with the exception of long long (which
1844 we autoconf for). */
1845
1846 /* Skip over "%%". */
1847 if (*f == '%')
1848 {
1849 f++;
1850 continue;
1851 }
1852
1853 /* The first part of a format specifier is a set of flag
1854 characters. */
1855 while (strchr ("0-+ #", *f))
1856 {
1857 if (*f == '#')
1858 seen_hash = 1;
1859 else if (*f == '0')
1860 seen_zero = 1;
1861 else if (*f == ' ')
1862 seen_space = 1;
1863 else if (*f == '+')
1864 seen_plus = 1;
1865 f++;
1866 }
1867
1868 /* The next part of a format specifier is a width. */
1869 while (strchr ("0123456789", *f))
1870 f++;
1871
1872 /* The next part of a format specifier is a precision. */
1873 if (*f == '.')
1874 {
1875 seen_prec = 1;
1876 f++;
1877 while (strchr ("0123456789", *f))
1878 f++;
1879 }
1880
1881 /* The next part of a format specifier is a length modifier. */
1882 if (*f == 'h')
1883 {
1884 seen_h = 1;
1885 f++;
1886 }
1887 else if (*f == 'l')
1888 {
1889 f++;
1890 lcount++;
1891 if (*f == 'l')
1892 {
1893 f++;
1894 lcount++;
1895 }
1896 }
1897 else if (*f == 'L')
1898 {
1899 seen_big_l = 1;
1900 f++;
1901 }
1902
1903 switch (*f)
1904 {
1905 case 'u':
1906 if (seen_hash)
1907 bad = 1;
1908 /* FALLTHROUGH */
1909
1910 case 'o':
1911 case 'x':
1912 case 'X':
1913 if (seen_space || seen_plus)
1914 bad = 1;
1915 /* FALLTHROUGH */
1916
1917 case 'd':
1918 case 'i':
1919 if (lcount == 0)
1920 this_argclass = int_arg;
1921 else if (lcount == 1)
1922 this_argclass = long_arg;
1923 else
1924 this_argclass = long_long_arg;
1925
1926 if (seen_big_l)
1927 bad = 1;
1928 break;
1929
1930 case 'c':
1931 this_argclass = int_arg;
1932 if (lcount || seen_h || seen_big_l)
1933 bad = 1;
1934 if (seen_prec || seen_zero || seen_space || seen_plus)
1935 bad = 1;
1936 break;
1937
1938 case 'p':
1939 this_argclass = ptr_arg;
1940 if (lcount || seen_h || seen_big_l)
1941 bad = 1;
1942 if (seen_prec || seen_zero || seen_space || seen_plus)
1943 bad = 1;
1944 break;
1945
1946 case 's':
1947 this_argclass = string_arg;
1948 if (lcount || seen_h || seen_big_l)
1949 bad = 1;
1950 if (seen_zero || seen_space || seen_plus)
1951 bad = 1;
1952 break;
1953
1954 case 'e':
1955 case 'f':
1956 case 'g':
1957 case 'E':
1958 case 'G':
1959 if (seen_big_l)
1960 this_argclass = long_double_arg;
1961 else
1962 this_argclass = double_arg;
1963
1964 if (lcount || seen_h)
1965 bad = 1;
1966 break;
1967
1968 case '*':
1969 error (_("`*' not supported for precision or width in printf"));
1970
1971 case 'n':
1972 error (_("Format specifier `n' not supported in printf"));
1973
1974 case '\0':
1975 error (_("Incomplete format specifier at end of format string"));
1976
1977 default:
1978 error (_("Unrecognized format specifier '%c' in printf"), *f);
1979 }
1980
1981 if (bad)
1982 error (_("Inappropriate modifiers to format specifier '%c' in printf"),
1983 *f);
1984
1985 f++;
1986 strncpy (current_substring, last_arg, f - last_arg);
1987 current_substring += f - last_arg;
1988 *current_substring++ = '\0';
1989 last_arg = f;
1990 argclass[nargs_wanted++] = this_argclass;
1991 }
1992
1993 /* Now, parse all arguments and evaluate them.
1994 Store the VALUEs in VAL_ARGS. */
1995
1996 while (*s != '\0')
1997 {
1998 char *s1;
1999 if (nargs == allocated_args)
2000 val_args = (struct value **) xrealloc ((char *) val_args,
2001 (allocated_args *= 2)
2002 * sizeof (struct value *));
2003 s1 = s;
2004 val_args[nargs] = parse_to_comma_and_eval (&s1);
2005
2006 /* If format string wants a float, unchecked-convert the value to
2007 floating point of the same size */
2008
2009 if (argclass[nargs] == double_arg)
2010 {
2011 struct type *type = value_type (val_args[nargs]);
2012 if (TYPE_LENGTH (type) == sizeof (float))
2013 deprecated_set_value_type (val_args[nargs], builtin_type_float);
2014 if (TYPE_LENGTH (type) == sizeof (double))
2015 deprecated_set_value_type (val_args[nargs], builtin_type_double);
2016 }
2017 nargs++;
2018 s = s1;
2019 if (*s == ',')
2020 s++;
2021 }
2022
2023 if (nargs != nargs_wanted)
2024 error (_("Wrong number of arguments for specified format-string"));
2025
2026 /* Now actually print them. */
2027 current_substring = substrings;
2028 for (i = 0; i < nargs; i++)
2029 {
2030 switch (argclass[i])
2031 {
2032 case string_arg:
2033 {
2034 gdb_byte *str;
2035 CORE_ADDR tem;
2036 int j;
2037 tem = value_as_address (val_args[i]);
2038
2039 /* This is a %s argument. Find the length of the string. */
2040 for (j = 0;; j++)
2041 {
2042 gdb_byte c;
2043 QUIT;
2044 read_memory (tem + j, &c, 1);
2045 if (c == 0)
2046 break;
2047 }
2048
2049 /* Copy the string contents into a string inside GDB. */
2050 str = (gdb_byte *) alloca (j + 1);
2051 if (j != 0)
2052 read_memory (tem, str, j);
2053 str[j] = 0;
2054
2055 printf_filtered (current_substring, (char *) str);
2056 }
2057 break;
2058 case double_arg:
2059 {
2060 double val = value_as_double (val_args[i]);
2061 printf_filtered (current_substring, val);
2062 break;
2063 }
2064 case long_double_arg:
2065 #ifdef HAVE_LONG_DOUBLE
2066 {
2067 long double val = value_as_double (val_args[i]);
2068 printf_filtered (current_substring, val);
2069 break;
2070 }
2071 #else
2072 error (_("long double not supported in printf"));
2073 #endif
2074 case long_long_arg:
2075 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
2076 {
2077 long long val = value_as_long (val_args[i]);
2078 printf_filtered (current_substring, val);
2079 break;
2080 }
2081 #else
2082 error (_("long long not supported in printf"));
2083 #endif
2084 case int_arg:
2085 {
2086 int val = value_as_long (val_args[i]);
2087 printf_filtered (current_substring, val);
2088 break;
2089 }
2090 case long_arg:
2091 {
2092 long val = value_as_long (val_args[i]);
2093 printf_filtered (current_substring, val);
2094 break;
2095 }
2096 default:
2097 internal_error (__FILE__, __LINE__,
2098 _("failed internal consitency check"));
2099 }
2100 /* Skip to the next substring. */
2101 current_substring += strlen (current_substring) + 1;
2102 }
2103 /* Print the portion of the format string after the last argument. */
2104 puts_filtered (last_arg);
2105 }
2106 do_cleanups (old_cleanups);
2107 }
2108
2109 void
2110 _initialize_printcmd (void)
2111 {
2112 struct cmd_list_element *c;
2113
2114 current_display_number = -1;
2115
2116 add_info ("address", address_info,
2117 _("Describe where symbol SYM is stored."));
2118
2119 add_info ("symbol", sym_info, _("\
2120 Describe what symbol is at location ADDR.\n\
2121 Only for symbols with fixed locations (global or static scope)."));
2122
2123 add_com ("x", class_vars, x_command, _("\
2124 Examine memory: x/FMT ADDRESS.\n\
2125 ADDRESS is an expression for the memory address to examine.\n\
2126 FMT is a repeat count followed by a format letter and a size letter.\n\
2127 Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),\n\
2128 t(binary), f(float), a(address), i(instruction), c(char) and s(string).\n\
2129 Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).\n\
2130 The specified number of objects of the specified size are printed\n\
2131 according to the format.\n\n\
2132 Defaults for format and size letters are those previously used.\n\
2133 Default count is 1. Default address is following last thing printed\n\
2134 with this command or \"print\"."));
2135
2136 #if 0
2137 add_com ("whereis", class_vars, whereis_command,
2138 _("Print line number and file of definition of variable."));
2139 #endif
2140
2141 add_info ("display", display_info, _("\
2142 Expressions to display when program stops, with code numbers."));
2143
2144 add_cmd ("undisplay", class_vars, undisplay_command, _("\
2145 Cancel some expressions to be displayed when program stops.\n\
2146 Arguments are the code numbers of the expressions to stop displaying.\n\
2147 No argument means cancel all automatic-display expressions.\n\
2148 \"delete display\" has the same effect as this command.\n\
2149 Do \"info display\" to see current list of code numbers."),
2150 &cmdlist);
2151
2152 add_com ("display", class_vars, display_command, _("\
2153 Print value of expression EXP each time the program stops.\n\
2154 /FMT may be used before EXP as in the \"print\" command.\n\
2155 /FMT \"i\" or \"s\" or including a size-letter is allowed,\n\
2156 as in the \"x\" command, and then EXP is used to get the address to examine\n\
2157 and examining is done as in the \"x\" command.\n\n\
2158 With no argument, display all currently requested auto-display expressions.\n\
2159 Use \"undisplay\" to cancel display requests previously made."));
2160
2161 add_cmd ("display", class_vars, enable_display, _("\
2162 Enable some expressions to be displayed when program stops.\n\
2163 Arguments are the code numbers of the expressions to resume displaying.\n\
2164 No argument means enable all automatic-display expressions.\n\
2165 Do \"info display\" to see current list of code numbers."), &enablelist);
2166
2167 add_cmd ("display", class_vars, disable_display_command, _("\
2168 Disable some expressions to be displayed when program stops.\n\
2169 Arguments are the code numbers of the expressions to stop displaying.\n\
2170 No argument means disable all automatic-display expressions.\n\
2171 Do \"info display\" to see current list of code numbers."), &disablelist);
2172
2173 add_cmd ("display", class_vars, undisplay_command, _("\
2174 Cancel some expressions to be displayed when program stops.\n\
2175 Arguments are the code numbers of the expressions to stop displaying.\n\
2176 No argument means cancel all automatic-display expressions.\n\
2177 Do \"info display\" to see current list of code numbers."), &deletelist);
2178
2179 add_com ("printf", class_vars, printf_command, _("\
2180 printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
2181 This is useful for formatted output in user-defined commands."));
2182
2183 add_com ("output", class_vars, output_command, _("\
2184 Like \"print\" but don't put in value history and don't print newline.\n\
2185 This is useful in user-defined commands."));
2186
2187 add_prefix_cmd ("set", class_vars, set_command, _("\
2188 Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2189 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2190 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2191 with $), a register (a few standard names starting with $), or an actual\n\
2192 variable in the program being debugged. EXP is any valid expression.\n\
2193 Use \"set variable\" for variables with names identical to set subcommands.\n\
2194 \n\
2195 With a subcommand, this command modifies parts of the gdb environment.\n\
2196 You can see these environment settings with the \"show\" command."),
2197 &setlist, "set ", 1, &cmdlist);
2198 if (dbx_commands)
2199 add_com ("assign", class_vars, set_command, _("\
2200 Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2201 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2202 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2203 with $), a register (a few standard names starting with $), or an actual\n\
2204 variable in the program being debugged. EXP is any valid expression.\n\
2205 Use \"set variable\" for variables with names identical to set subcommands.\n\
2206 \nWith a subcommand, this command modifies parts of the gdb environment.\n\
2207 You can see these environment settings with the \"show\" command."));
2208
2209 /* "call" is the same as "set", but handy for dbx users to call fns. */
2210 c = add_com ("call", class_vars, call_command, _("\
2211 Call a function in the program.\n\
2212 The argument is the function name and arguments, in the notation of the\n\
2213 current working language. The result is printed and saved in the value\n\
2214 history, if it is not void."));
2215 set_cmd_completer (c, location_completer);
2216
2217 add_cmd ("variable", class_vars, set_command, _("\
2218 Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2219 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2220 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2221 with $), a register (a few standard names starting with $), or an actual\n\
2222 variable in the program being debugged. EXP is any valid expression.\n\
2223 This may usually be abbreviated to simply \"set\"."),
2224 &setlist);
2225
2226 c = add_com ("print", class_vars, print_command, _("\
2227 Print value of expression EXP.\n\
2228 Variables accessible are those of the lexical environment of the selected\n\
2229 stack frame, plus all those whose scope is global or an entire file.\n\
2230 \n\
2231 $NUM gets previous value number NUM. $ and $$ are the last two values.\n\
2232 $$NUM refers to NUM'th value back from the last one.\n\
2233 Names starting with $ refer to registers (with the values they would have\n\
2234 if the program were to return to the stack frame now selected, restoring\n\
2235 all registers saved by frames farther in) or else to debugger\n\
2236 \"convenience\" variables (any such name not a known register).\n\
2237 Use assignment expressions to give values to convenience variables.\n\
2238 \n\
2239 {TYPE}ADREXP refers to a datum of data type TYPE, located at address ADREXP.\n\
2240 @ is a binary operator for treating consecutive data objects\n\
2241 anywhere in memory as an array. FOO@NUM gives an array whose first\n\
2242 element is FOO, whose second element is stored in the space following\n\
2243 where FOO is stored, etc. FOO must be an expression whose value\n\
2244 resides in memory.\n\
2245 \n\
2246 EXP may be preceded with /FMT, where FMT is a format letter\n\
2247 but no count or size letter (see \"x\" command)."));
2248 set_cmd_completer (c, location_completer);
2249 add_com_alias ("p", "print", class_vars, 1);
2250
2251 c = add_com ("inspect", class_vars, inspect_command, _("\
2252 Same as \"print\" command, except that if you are running in the epoch\n\
2253 environment, the value is printed in its own window."));
2254 set_cmd_completer (c, location_completer);
2255
2256 add_setshow_uinteger_cmd ("max-symbolic-offset", no_class,
2257 &max_symbolic_offset, _("\
2258 Set the largest offset that will be printed in <symbol+1234> form."), _("\
2259 Show the largest offset that will be printed in <symbol+1234> form."), NULL,
2260 NULL,
2261 show_max_symbolic_offset,
2262 &setprintlist, &showprintlist);
2263 add_setshow_boolean_cmd ("symbol-filename", no_class,
2264 &print_symbol_filename, _("\
2265 Set printing of source filename and line number with <symbol>."), _("\
2266 Show printing of source filename and line number with <symbol>."), NULL,
2267 NULL,
2268 show_print_symbol_filename,
2269 &setprintlist, &showprintlist);
2270
2271 /* For examine/instruction a single byte quantity is specified as
2272 the data. This avoids problems with value_at_lazy() requiring a
2273 valid data type (and rejecting VOID). */
2274 examine_i_type = init_type (TYPE_CODE_INT, 1, 0, "examine_i_type", NULL);
2275
2276 examine_b_type = init_type (TYPE_CODE_INT, 1, 0, "examine_b_type", NULL);
2277 examine_h_type = init_type (TYPE_CODE_INT, 2, 0, "examine_h_type", NULL);
2278 examine_w_type = init_type (TYPE_CODE_INT, 4, 0, "examine_w_type", NULL);
2279 examine_g_type = init_type (TYPE_CODE_INT, 8, 0, "examine_g_type", NULL);
2280
2281 }
This page took 0.075699 seconds and 4 git commands to generate.