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