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