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