* Makefile.in: Remove page break; OpenBSD make chokes on them.
[deliverable/binutils-gdb.git] / gdb / printcmd.c
1 /* Print values for GNU debugger GDB.
2
3 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
5 2008 Free Software Foundation, Inc.
6
7 This file is part of GDB.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21
22 #include "defs.h"
23 #include "gdb_string.h"
24 #include "frame.h"
25 #include "symtab.h"
26 #include "gdbtypes.h"
27 #include "value.h"
28 #include "language.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "target.h"
33 #include "breakpoint.h"
34 #include "demangle.h"
35 #include "valprint.h"
36 #include "annotate.h"
37 #include "symfile.h" /* for overlay functions */
38 #include "objfiles.h" /* ditto */
39 #include "completer.h" /* for completion functions */
40 #include "ui-out.h"
41 #include "gdb_assert.h"
42 #include "block.h"
43 #include "disasm.h"
44 #include "dfp.h"
45
46 #ifdef TUI
47 #include "tui/tui.h" /* For tui_active et.al. */
48 #endif
49
50 #if defined(__MINGW32__)
51 # define USE_PRINTF_I64 1
52 # define PRINTF_HAS_LONG_LONG
53 #else
54 # define USE_PRINTF_I64 0
55 #endif
56
57 extern int asm_demangle; /* Whether to demangle syms in asm printouts */
58 extern int addressprint; /* Whether to print hex addresses in HLL " */
59
60 struct format_data
61 {
62 int count;
63 char format;
64 char size;
65 };
66
67 /* Last specified output format. */
68
69 static char last_format = 'x';
70
71 /* Last specified examination size. 'b', 'h', 'w' or `q'. */
72
73 static char last_size = 'w';
74
75 /* Default address to examine next. */
76
77 static CORE_ADDR next_address;
78
79 /* Number of delay instructions following current disassembled insn. */
80
81 static int branch_delay_insns;
82
83 /* Last address examined. */
84
85 static CORE_ADDR last_examine_address;
86
87 /* Contents of last address examined.
88 This is not valid past the end of the `x' command! */
89
90 static struct value *last_examine_value;
91
92 /* Largest offset between a symbolic value and an address, that will be
93 printed as `0x1234 <symbol+offset>'. */
94
95 static unsigned int max_symbolic_offset = UINT_MAX;
96 static void
97 show_max_symbolic_offset (struct ui_file *file, int from_tty,
98 struct cmd_list_element *c, const char *value)
99 {
100 fprintf_filtered (file, _("\
101 The largest offset that will be printed in <symbol+1234> form is %s.\n"),
102 value);
103 }
104
105 /* Append the source filename and linenumber of the symbol when
106 printing a symbolic value as `<symbol at filename:linenum>' if set. */
107 static int print_symbol_filename = 0;
108 static void
109 show_print_symbol_filename (struct ui_file *file, int from_tty,
110 struct cmd_list_element *c, const char *value)
111 {
112 fprintf_filtered (file, _("\
113 Printing of source filename and line number with <symbol> is %s.\n"),
114 value);
115 }
116
117 /* Number of auto-display expression currently being displayed.
118 So that we can disable it if we get an error or a signal within it.
119 -1 when not doing one. */
120
121 int current_display_number;
122
123 /* Flag to low-level print routines that this value is being printed
124 in an epoch window. We'd like to pass this as a parameter, but
125 every routine would need to take it. Perhaps we can encapsulate
126 this in the I/O stream once we have GNU stdio. */
127
128 int inspect_it = 0;
129
130 struct display
131 {
132 /* Chain link to next auto-display item. */
133 struct display *next;
134 /* Expression to be evaluated and displayed. */
135 struct expression *exp;
136 /* Item number of this auto-display item. */
137 int number;
138 /* Display format specified. */
139 struct format_data format;
140 /* Innermost block required by this expression when evaluated */
141 struct block *block;
142 /* Status of this display (enabled or disabled) */
143 int enabled_p;
144 };
145
146 /* Chain of expressions whose values should be displayed
147 automatically each time the program stops. */
148
149 static struct display *display_chain;
150
151 static int display_number;
152
153 /* Prototypes for exported functions. */
154
155 void output_command (char *, int);
156
157 void _initialize_printcmd (void);
158
159 /* Prototypes for local functions. */
160
161 static void do_one_display (struct display *);
162 \f
163
164 /* Decode a format specification. *STRING_PTR should point to it.
165 OFORMAT and OSIZE are used as defaults for the format and size
166 if none are given in the format specification.
167 If OSIZE is zero, then the size field of the returned value
168 should be set only if a size is explicitly specified by the
169 user.
170 The structure returned describes all the data
171 found in the specification. In addition, *STRING_PTR is advanced
172 past the specification and past all whitespace following it. */
173
174 static struct format_data
175 decode_format (char **string_ptr, int oformat, int osize)
176 {
177 struct format_data val;
178 char *p = *string_ptr;
179
180 val.format = '?';
181 val.size = '?';
182 val.count = 1;
183
184 if (*p >= '0' && *p <= '9')
185 val.count = atoi (p);
186 while (*p >= '0' && *p <= '9')
187 p++;
188
189 /* Now process size or format letters that follow. */
190
191 while (1)
192 {
193 if (*p == 'b' || *p == 'h' || *p == 'w' || *p == 'g')
194 val.size = *p++;
195 else if (*p >= 'a' && *p <= 'z')
196 val.format = *p++;
197 else
198 break;
199 }
200
201 while (*p == ' ' || *p == '\t')
202 p++;
203 *string_ptr = p;
204
205 /* Set defaults for format and size if not specified. */
206 if (val.format == '?')
207 {
208 if (val.size == '?')
209 {
210 /* Neither has been specified. */
211 val.format = oformat;
212 val.size = osize;
213 }
214 else
215 /* If a size is specified, any format makes a reasonable
216 default except 'i'. */
217 val.format = oformat == 'i' ? 'x' : oformat;
218 }
219 else if (val.size == '?')
220 switch (val.format)
221 {
222 case 'a':
223 case 's':
224 /* Pick the appropriate size for an address. */
225 if (gdbarch_ptr_bit (current_gdbarch) == 64)
226 val.size = osize ? 'g' : osize;
227 else if (gdbarch_ptr_bit (current_gdbarch) == 32)
228 val.size = osize ? 'w' : osize;
229 else if (gdbarch_ptr_bit (current_gdbarch) == 16)
230 val.size = osize ? 'h' : osize;
231 else
232 /* Bad value for gdbarch_ptr_bit. */
233 internal_error (__FILE__, __LINE__,
234 _("failed internal consistency check"));
235 break;
236 case 'f':
237 /* Floating point has to be word or giantword. */
238 if (osize == 'w' || osize == 'g')
239 val.size = osize;
240 else
241 /* Default it to giantword if the last used size is not
242 appropriate. */
243 val.size = osize ? 'g' : osize;
244 break;
245 case 'c':
246 /* Characters default to one byte. */
247 val.size = osize ? 'b' : osize;
248 break;
249 default:
250 /* The default is the size most recently specified. */
251 val.size = osize;
252 }
253
254 return val;
255 }
256 \f
257 /* Print value VAL on stream according to FORMAT, a letter or 0.
258 Do not end with a newline.
259 0 means print VAL according to its own type.
260 SIZE is the letter for the size of datum being printed.
261 This is used to pad hex numbers so they line up. SIZE is 0
262 for print / output and set for examine. */
263
264 static void
265 print_formatted (struct value *val, int format, int size,
266 struct ui_file *stream)
267 {
268 struct type *type = check_typedef (value_type (val));
269 int len = TYPE_LENGTH (type);
270
271 if (VALUE_LVAL (val) == lval_memory)
272 next_address = VALUE_ADDRESS (val) + len;
273
274 if (size)
275 {
276 switch (format)
277 {
278 case 's':
279 /* FIXME: Need to handle wchar_t's here... */
280 next_address = VALUE_ADDRESS (val)
281 + val_print_string (VALUE_ADDRESS (val), -1, 1, stream);
282 return;
283
284 case 'i':
285 /* We often wrap here if there are long symbolic names. */
286 wrap_here (" ");
287 next_address = (VALUE_ADDRESS (val)
288 + gdb_print_insn (VALUE_ADDRESS (val), stream,
289 &branch_delay_insns));
290 return;
291 }
292 }
293
294 if (format == 0 || format == 's'
295 || TYPE_CODE (type) == TYPE_CODE_REF
296 || TYPE_CODE (type) == TYPE_CODE_ARRAY
297 || TYPE_CODE (type) == TYPE_CODE_STRING
298 || TYPE_CODE (type) == TYPE_CODE_STRUCT
299 || TYPE_CODE (type) == TYPE_CODE_UNION
300 || TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
301 /* If format is 0, use the 'natural' format for that type of
302 value. If the type is non-scalar, we have to use language
303 rules to print it as a series of scalars. */
304 value_print (val, stream, format, Val_pretty_default);
305 else
306 /* User specified format, so don't look to the the type to
307 tell us what to do. */
308 print_scalar_formatted (value_contents (val), type,
309 format, size, stream);
310 }
311
312 /* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
313 according to letters FORMAT and SIZE on STREAM.
314 FORMAT may not be zero. Formats s and i are not supported at this level.
315
316 This is how the elements of an array or structure are printed
317 with a format. */
318
319 void
320 print_scalar_formatted (const void *valaddr, struct type *type,
321 int format, int size, struct ui_file *stream)
322 {
323 LONGEST val_long = 0;
324 unsigned int len = TYPE_LENGTH (type);
325 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 = DEPRECATED_SYMBOL_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 = DEPRECATED_SYMBOL_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 (osect->addr <= sect_addr && sect_addr < osect->endaddr &&
999 (msymbol = lookup_minimal_symbol_by_pc_section (sect_addr, sect)))
1000 {
1001 matches = 1;
1002 offset = sect_addr - SYMBOL_VALUE_ADDRESS (msymbol);
1003 if (offset)
1004 printf_filtered ("%s + %u in ",
1005 SYMBOL_PRINT_NAME (msymbol), offset);
1006 else
1007 printf_filtered ("%s in ",
1008 SYMBOL_PRINT_NAME (msymbol));
1009 if (pc_in_unmapped_range (addr, sect))
1010 printf_filtered (_("load address range of "));
1011 if (section_is_overlay (sect))
1012 printf_filtered (_("%s overlay "),
1013 section_is_mapped (sect) ? "mapped" : "unmapped");
1014 printf_filtered (_("section %s"), sect->name);
1015 printf_filtered ("\n");
1016 }
1017 }
1018 if (matches == 0)
1019 printf_filtered (_("No symbol matches %s.\n"), arg);
1020 }
1021
1022 static void
1023 address_info (char *exp, int from_tty)
1024 {
1025 struct symbol *sym;
1026 struct minimal_symbol *msymbol;
1027 long val;
1028 asection *section;
1029 CORE_ADDR load_addr;
1030 int is_a_field_of_this; /* C++: lookup_symbol sets this to nonzero
1031 if exp is a field of `this'. */
1032
1033 if (exp == 0)
1034 error (_("Argument required."));
1035
1036 sym = lookup_symbol (exp, get_selected_block (0), VAR_DOMAIN,
1037 &is_a_field_of_this);
1038 if (sym == NULL)
1039 {
1040 if (is_a_field_of_this)
1041 {
1042 printf_filtered ("Symbol \"");
1043 fprintf_symbol_filtered (gdb_stdout, exp,
1044 current_language->la_language, DMGL_ANSI);
1045 printf_filtered ("\" is a field of the local class variable ");
1046 if (current_language->la_language == language_objc)
1047 printf_filtered ("`self'\n"); /* ObjC equivalent of "this" */
1048 else
1049 printf_filtered ("`this'\n");
1050 return;
1051 }
1052
1053 msymbol = lookup_minimal_symbol (exp, NULL, NULL);
1054
1055 if (msymbol != NULL)
1056 {
1057 load_addr = SYMBOL_VALUE_ADDRESS (msymbol);
1058
1059 printf_filtered ("Symbol \"");
1060 fprintf_symbol_filtered (gdb_stdout, exp,
1061 current_language->la_language, DMGL_ANSI);
1062 printf_filtered ("\" is at ");
1063 fputs_filtered (paddress (load_addr), gdb_stdout);
1064 printf_filtered (" in a file compiled without debugging");
1065 section = SYMBOL_BFD_SECTION (msymbol);
1066 if (section_is_overlay (section))
1067 {
1068 load_addr = overlay_unmapped_address (load_addr, section);
1069 printf_filtered (",\n -- loaded at ");
1070 fputs_filtered (paddress (load_addr), gdb_stdout);
1071 printf_filtered (" in overlay section %s", section->name);
1072 }
1073 printf_filtered (".\n");
1074 }
1075 else
1076 error (_("No symbol \"%s\" in current context."), exp);
1077 return;
1078 }
1079
1080 printf_filtered ("Symbol \"");
1081 fprintf_symbol_filtered (gdb_stdout, DEPRECATED_SYMBOL_NAME (sym),
1082 current_language->la_language, DMGL_ANSI);
1083 printf_filtered ("\" is ");
1084 val = SYMBOL_VALUE (sym);
1085 section = SYMBOL_BFD_SECTION (sym);
1086
1087 switch (SYMBOL_CLASS (sym))
1088 {
1089 case LOC_CONST:
1090 case LOC_CONST_BYTES:
1091 printf_filtered ("constant");
1092 break;
1093
1094 case LOC_LABEL:
1095 printf_filtered ("a label at address ");
1096 fputs_filtered (paddress (load_addr = SYMBOL_VALUE_ADDRESS (sym)),
1097 gdb_stdout);
1098 if (section_is_overlay (section))
1099 {
1100 load_addr = overlay_unmapped_address (load_addr, section);
1101 printf_filtered (",\n -- loaded at ");
1102 fputs_filtered (paddress (load_addr), gdb_stdout);
1103 printf_filtered (" in overlay section %s", section->name);
1104 }
1105 break;
1106
1107 case LOC_COMPUTED:
1108 /* FIXME: cagney/2004-01-26: It should be possible to
1109 unconditionally call the SYMBOL_OPS method when available.
1110 Unfortunately DWARF 2 stores the frame-base (instead of the
1111 function) location in a function's symbol. Oops! For the
1112 moment enable this when/where applicable. */
1113 SYMBOL_OPS (sym)->describe_location (sym, gdb_stdout);
1114 break;
1115
1116 case LOC_REGISTER:
1117 if (SYMBOL_IS_ARGUMENT (sym))
1118 printf_filtered (_("an argument in register %s"),
1119 gdbarch_register_name (current_gdbarch, val));
1120 else
1121 printf_filtered (_("a variable in register %s"),
1122 gdbarch_register_name (current_gdbarch, val));
1123 break;
1124
1125 case LOC_STATIC:
1126 printf_filtered (_("static storage at address "));
1127 fputs_filtered (paddress (load_addr = SYMBOL_VALUE_ADDRESS (sym)),
1128 gdb_stdout);
1129 if (section_is_overlay (section))
1130 {
1131 load_addr = overlay_unmapped_address (load_addr, section);
1132 printf_filtered (_(",\n -- loaded at "));
1133 fputs_filtered (paddress (load_addr), gdb_stdout);
1134 printf_filtered (_(" in overlay section %s"), section->name);
1135 }
1136 break;
1137
1138 case LOC_REGPARM_ADDR:
1139 printf_filtered (_("address of an argument in register %s"),
1140 gdbarch_register_name (current_gdbarch, val));
1141 break;
1142
1143 case LOC_ARG:
1144 printf_filtered (_("an argument at offset %ld"), val);
1145 break;
1146
1147 case LOC_LOCAL:
1148 printf_filtered (_("a local variable at frame offset %ld"), val);
1149 break;
1150
1151 case LOC_REF_ARG:
1152 printf_filtered (_("a reference argument at offset %ld"), val);
1153 break;
1154
1155 case LOC_TYPEDEF:
1156 printf_filtered (_("a typedef"));
1157 break;
1158
1159 case LOC_BLOCK:
1160 printf_filtered (_("a function at address "));
1161 load_addr = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
1162 fputs_filtered (paddress (load_addr), gdb_stdout);
1163 if (section_is_overlay (section))
1164 {
1165 load_addr = overlay_unmapped_address (load_addr, section);
1166 printf_filtered (_(",\n -- loaded at "));
1167 fputs_filtered (paddress (load_addr), gdb_stdout);
1168 printf_filtered (_(" in overlay section %s"), section->name);
1169 }
1170 break;
1171
1172 case LOC_UNRESOLVED:
1173 {
1174 struct minimal_symbol *msym;
1175
1176 msym = lookup_minimal_symbol (DEPRECATED_SYMBOL_NAME (sym), NULL, NULL);
1177 if (msym == NULL)
1178 printf_filtered ("unresolved");
1179 else
1180 {
1181 section = SYMBOL_BFD_SECTION (msym);
1182 printf_filtered (_("static storage at address "));
1183 load_addr = SYMBOL_VALUE_ADDRESS (msym);
1184 fputs_filtered (paddress (load_addr), gdb_stdout);
1185 if (section_is_overlay (section))
1186 {
1187 load_addr = overlay_unmapped_address (load_addr, section);
1188 printf_filtered (_(",\n -- loaded at "));
1189 fputs_filtered (paddress (load_addr), gdb_stdout);
1190 printf_filtered (_(" in overlay section %s"), section->name);
1191 }
1192 }
1193 }
1194 break;
1195
1196 case LOC_OPTIMIZED_OUT:
1197 printf_filtered (_("optimized out"));
1198 break;
1199
1200 default:
1201 printf_filtered (_("of unknown (botched) type"));
1202 break;
1203 }
1204 printf_filtered (".\n");
1205 }
1206 \f
1207
1208 static void
1209 x_command (char *exp, int from_tty)
1210 {
1211 struct expression *expr;
1212 struct format_data fmt;
1213 struct cleanup *old_chain;
1214 struct value *val;
1215
1216 fmt.format = last_format;
1217 fmt.size = last_size;
1218 fmt.count = 1;
1219
1220 if (exp && *exp == '/')
1221 {
1222 exp++;
1223 fmt = decode_format (&exp, last_format, last_size);
1224 }
1225
1226 /* If we have an expression, evaluate it and use it as the address. */
1227
1228 if (exp != 0 && *exp != 0)
1229 {
1230 expr = parse_expression (exp);
1231 /* Cause expression not to be there any more if this command is
1232 repeated with Newline. But don't clobber a user-defined
1233 command's definition. */
1234 if (from_tty)
1235 *exp = 0;
1236 old_chain = make_cleanup (free_current_contents, &expr);
1237 val = evaluate_expression (expr);
1238 if (TYPE_CODE (value_type (val)) == TYPE_CODE_REF)
1239 val = value_ind (val);
1240 /* In rvalue contexts, such as this, functions are coerced into
1241 pointers to functions. This makes "x/i main" work. */
1242 if (/* last_format == 'i' && */
1243 TYPE_CODE (value_type (val)) == TYPE_CODE_FUNC
1244 && VALUE_LVAL (val) == lval_memory)
1245 next_address = VALUE_ADDRESS (val);
1246 else
1247 next_address = value_as_address (val);
1248 do_cleanups (old_chain);
1249 }
1250
1251 do_examine (fmt, next_address);
1252
1253 /* If the examine succeeds, we remember its size and format for next
1254 time. */
1255 last_size = fmt.size;
1256 last_format = fmt.format;
1257
1258 /* Set a couple of internal variables if appropriate. */
1259 if (last_examine_value)
1260 {
1261 /* Make last address examined available to the user as $_. Use
1262 the correct pointer type. */
1263 struct type *pointer_type
1264 = lookup_pointer_type (value_type (last_examine_value));
1265 set_internalvar (lookup_internalvar ("_"),
1266 value_from_pointer (pointer_type,
1267 last_examine_address));
1268
1269 /* Make contents of last address examined available to the user
1270 as $__. If the last value has not been fetched from memory
1271 then don't fetch it now; instead mark it by voiding the $__
1272 variable. */
1273 if (value_lazy (last_examine_value))
1274 set_internalvar (lookup_internalvar ("__"),
1275 allocate_value (builtin_type_void));
1276 else
1277 set_internalvar (lookup_internalvar ("__"), last_examine_value);
1278 }
1279 }
1280 \f
1281
1282 /* Add an expression to the auto-display chain.
1283 Specify the expression. */
1284
1285 static void
1286 display_command (char *exp, int from_tty)
1287 {
1288 struct format_data fmt;
1289 struct expression *expr;
1290 struct display *new;
1291 int display_it = 1;
1292
1293 #if defined(TUI)
1294 /* NOTE: cagney/2003-02-13 The `tui_active' was previously
1295 `tui_version'. */
1296 if (tui_active && exp != NULL && *exp == '$')
1297 display_it = (tui_set_layout_for_display_command (exp) == TUI_FAILURE);
1298 #endif
1299
1300 if (display_it)
1301 {
1302 if (exp == 0)
1303 {
1304 do_displays ();
1305 return;
1306 }
1307
1308 if (*exp == '/')
1309 {
1310 exp++;
1311 fmt = decode_format (&exp, 0, 0);
1312 if (fmt.size && fmt.format == 0)
1313 fmt.format = 'x';
1314 if (fmt.format == 'i' || fmt.format == 's')
1315 fmt.size = 'b';
1316 }
1317 else
1318 {
1319 fmt.format = 0;
1320 fmt.size = 0;
1321 fmt.count = 0;
1322 }
1323
1324 innermost_block = 0;
1325 expr = parse_expression (exp);
1326
1327 new = (struct display *) xmalloc (sizeof (struct display));
1328
1329 new->exp = expr;
1330 new->block = innermost_block;
1331 new->next = display_chain;
1332 new->number = ++display_number;
1333 new->format = fmt;
1334 new->enabled_p = 1;
1335 display_chain = new;
1336
1337 if (from_tty && target_has_execution)
1338 do_one_display (new);
1339
1340 dont_repeat ();
1341 }
1342 }
1343
1344 static void
1345 free_display (struct display *d)
1346 {
1347 xfree (d->exp);
1348 xfree (d);
1349 }
1350
1351 /* Clear out the display_chain. Done when new symtabs are loaded,
1352 since this invalidates the types stored in many expressions. */
1353
1354 void
1355 clear_displays (void)
1356 {
1357 struct display *d;
1358
1359 while ((d = display_chain) != NULL)
1360 {
1361 xfree (d->exp);
1362 display_chain = d->next;
1363 xfree (d);
1364 }
1365 }
1366
1367 /* Delete the auto-display number NUM. */
1368
1369 static void
1370 delete_display (int num)
1371 {
1372 struct display *d1, *d;
1373
1374 if (!display_chain)
1375 error (_("No display number %d."), num);
1376
1377 if (display_chain->number == num)
1378 {
1379 d1 = display_chain;
1380 display_chain = d1->next;
1381 free_display (d1);
1382 }
1383 else
1384 for (d = display_chain;; d = d->next)
1385 {
1386 if (d->next == 0)
1387 error (_("No display number %d."), num);
1388 if (d->next->number == num)
1389 {
1390 d1 = d->next;
1391 d->next = d1->next;
1392 free_display (d1);
1393 break;
1394 }
1395 }
1396 }
1397
1398 /* Delete some values from the auto-display chain.
1399 Specify the element numbers. */
1400
1401 static void
1402 undisplay_command (char *args, int from_tty)
1403 {
1404 char *p = args;
1405 char *p1;
1406 int num;
1407
1408 if (args == 0)
1409 {
1410 if (query ("Delete all auto-display expressions? "))
1411 clear_displays ();
1412 dont_repeat ();
1413 return;
1414 }
1415
1416 while (*p)
1417 {
1418 p1 = p;
1419 while (*p1 >= '0' && *p1 <= '9')
1420 p1++;
1421 if (*p1 && *p1 != ' ' && *p1 != '\t')
1422 error (_("Arguments must be display numbers."));
1423
1424 num = atoi (p);
1425
1426 delete_display (num);
1427
1428 p = p1;
1429 while (*p == ' ' || *p == '\t')
1430 p++;
1431 }
1432 dont_repeat ();
1433 }
1434
1435 /* Display a single auto-display.
1436 Do nothing if the display cannot be printed in the current context,
1437 or if the display is disabled. */
1438
1439 static void
1440 do_one_display (struct display *d)
1441 {
1442 int within_current_scope;
1443
1444 if (d->enabled_p == 0)
1445 return;
1446
1447 if (d->block)
1448 within_current_scope = contained_in (get_selected_block (0), d->block);
1449 else
1450 within_current_scope = 1;
1451 if (!within_current_scope)
1452 return;
1453
1454 current_display_number = d->number;
1455
1456 annotate_display_begin ();
1457 printf_filtered ("%d", d->number);
1458 annotate_display_number_end ();
1459 printf_filtered (": ");
1460 if (d->format.size)
1461 {
1462 CORE_ADDR addr;
1463 struct value *val;
1464
1465 annotate_display_format ();
1466
1467 printf_filtered ("x/");
1468 if (d->format.count != 1)
1469 printf_filtered ("%d", d->format.count);
1470 printf_filtered ("%c", d->format.format);
1471 if (d->format.format != 'i' && d->format.format != 's')
1472 printf_filtered ("%c", d->format.size);
1473 printf_filtered (" ");
1474
1475 annotate_display_expression ();
1476
1477 print_expression (d->exp, gdb_stdout);
1478 annotate_display_expression_end ();
1479
1480 if (d->format.count != 1 || d->format.format == 'i')
1481 printf_filtered ("\n");
1482 else
1483 printf_filtered (" ");
1484
1485 val = evaluate_expression (d->exp);
1486 addr = value_as_address (val);
1487 if (d->format.format == 'i')
1488 addr = gdbarch_addr_bits_remove (current_gdbarch, addr);
1489
1490 annotate_display_value ();
1491
1492 do_examine (d->format, addr);
1493 }
1494 else
1495 {
1496 annotate_display_format ();
1497
1498 if (d->format.format)
1499 printf_filtered ("/%c ", d->format.format);
1500
1501 annotate_display_expression ();
1502
1503 print_expression (d->exp, gdb_stdout);
1504 annotate_display_expression_end ();
1505
1506 printf_filtered (" = ");
1507
1508 annotate_display_expression ();
1509
1510 print_formatted (evaluate_expression (d->exp),
1511 d->format.format, d->format.size, gdb_stdout);
1512 printf_filtered ("\n");
1513 }
1514
1515 annotate_display_end ();
1516
1517 gdb_flush (gdb_stdout);
1518 current_display_number = -1;
1519 }
1520
1521 /* Display all of the values on the auto-display chain which can be
1522 evaluated in the current scope. */
1523
1524 void
1525 do_displays (void)
1526 {
1527 struct display *d;
1528
1529 for (d = display_chain; d; d = d->next)
1530 do_one_display (d);
1531 }
1532
1533 /* Delete the auto-display which we were in the process of displaying.
1534 This is done when there is an error or a signal. */
1535
1536 void
1537 disable_display (int num)
1538 {
1539 struct display *d;
1540
1541 for (d = display_chain; d; d = d->next)
1542 if (d->number == num)
1543 {
1544 d->enabled_p = 0;
1545 return;
1546 }
1547 printf_unfiltered (_("No display number %d.\n"), num);
1548 }
1549
1550 void
1551 disable_current_display (void)
1552 {
1553 if (current_display_number >= 0)
1554 {
1555 disable_display (current_display_number);
1556 fprintf_unfiltered (gdb_stderr, _("\
1557 Disabling display %d to avoid infinite recursion.\n"),
1558 current_display_number);
1559 }
1560 current_display_number = -1;
1561 }
1562
1563 static void
1564 display_info (char *ignore, int from_tty)
1565 {
1566 struct display *d;
1567
1568 if (!display_chain)
1569 printf_unfiltered (_("There are no auto-display expressions now.\n"));
1570 else
1571 printf_filtered (_("Auto-display expressions now in effect:\n\
1572 Num Enb Expression\n"));
1573
1574 for (d = display_chain; d; d = d->next)
1575 {
1576 printf_filtered ("%d: %c ", d->number, "ny"[(int) d->enabled_p]);
1577 if (d->format.size)
1578 printf_filtered ("/%d%c%c ", d->format.count, d->format.size,
1579 d->format.format);
1580 else if (d->format.format)
1581 printf_filtered ("/%c ", d->format.format);
1582 print_expression (d->exp, gdb_stdout);
1583 if (d->block && !contained_in (get_selected_block (0), d->block))
1584 printf_filtered (_(" (cannot be evaluated in the current context)"));
1585 printf_filtered ("\n");
1586 gdb_flush (gdb_stdout);
1587 }
1588 }
1589
1590 static void
1591 enable_display (char *args, int from_tty)
1592 {
1593 char *p = args;
1594 char *p1;
1595 int num;
1596 struct display *d;
1597
1598 if (p == 0)
1599 {
1600 for (d = display_chain; d; d = d->next)
1601 d->enabled_p = 1;
1602 }
1603 else
1604 while (*p)
1605 {
1606 p1 = p;
1607 while (*p1 >= '0' && *p1 <= '9')
1608 p1++;
1609 if (*p1 && *p1 != ' ' && *p1 != '\t')
1610 error (_("Arguments must be display numbers."));
1611
1612 num = atoi (p);
1613
1614 for (d = display_chain; d; d = d->next)
1615 if (d->number == num)
1616 {
1617 d->enabled_p = 1;
1618 goto win;
1619 }
1620 printf_unfiltered (_("No display number %d.\n"), num);
1621 win:
1622 p = p1;
1623 while (*p == ' ' || *p == '\t')
1624 p++;
1625 }
1626 }
1627
1628 static void
1629 disable_display_command (char *args, int from_tty)
1630 {
1631 char *p = args;
1632 char *p1;
1633 struct display *d;
1634
1635 if (p == 0)
1636 {
1637 for (d = display_chain; d; d = d->next)
1638 d->enabled_p = 0;
1639 }
1640 else
1641 while (*p)
1642 {
1643 p1 = p;
1644 while (*p1 >= '0' && *p1 <= '9')
1645 p1++;
1646 if (*p1 && *p1 != ' ' && *p1 != '\t')
1647 error (_("Arguments must be display numbers."));
1648
1649 disable_display (atoi (p));
1650
1651 p = p1;
1652 while (*p == ' ' || *p == '\t')
1653 p++;
1654 }
1655 }
1656 \f
1657
1658 /* Print the value in stack frame FRAME of a variable specified by a
1659 struct symbol. */
1660
1661 void
1662 print_variable_value (struct symbol *var, struct frame_info *frame,
1663 struct ui_file *stream)
1664 {
1665 struct value *val = read_var_value (var, frame);
1666
1667 value_print (val, stream, 0, Val_pretty_default);
1668 }
1669
1670 static void
1671 printf_command (char *arg, int from_tty)
1672 {
1673 char *f = NULL;
1674 char *s = arg;
1675 char *string = NULL;
1676 struct value **val_args;
1677 char *substrings;
1678 char *current_substring;
1679 int nargs = 0;
1680 int allocated_args = 20;
1681 struct cleanup *old_cleanups;
1682
1683 val_args = xmalloc (allocated_args * sizeof (struct value *));
1684 old_cleanups = make_cleanup (free_current_contents, &val_args);
1685
1686 if (s == 0)
1687 error_no_arg (_("format-control string and values to print"));
1688
1689 /* Skip white space before format string */
1690 while (*s == ' ' || *s == '\t')
1691 s++;
1692
1693 /* A format string should follow, enveloped in double quotes. */
1694 if (*s++ != '"')
1695 error (_("Bad format string, missing '\"'."));
1696
1697 /* Parse the format-control string and copy it into the string STRING,
1698 processing some kinds of escape sequence. */
1699
1700 f = string = (char *) alloca (strlen (s) + 1);
1701
1702 while (*s != '"')
1703 {
1704 int c = *s++;
1705 switch (c)
1706 {
1707 case '\0':
1708 error (_("Bad format string, non-terminated '\"'."));
1709
1710 case '\\':
1711 switch (c = *s++)
1712 {
1713 case '\\':
1714 *f++ = '\\';
1715 break;
1716 case 'a':
1717 *f++ = '\a';
1718 break;
1719 case 'b':
1720 *f++ = '\b';
1721 break;
1722 case 'f':
1723 *f++ = '\f';
1724 break;
1725 case 'n':
1726 *f++ = '\n';
1727 break;
1728 case 'r':
1729 *f++ = '\r';
1730 break;
1731 case 't':
1732 *f++ = '\t';
1733 break;
1734 case 'v':
1735 *f++ = '\v';
1736 break;
1737 case '"':
1738 *f++ = '"';
1739 break;
1740 default:
1741 /* ??? TODO: handle other escape sequences */
1742 error (_("Unrecognized escape character \\%c in format string."),
1743 c);
1744 }
1745 break;
1746
1747 default:
1748 *f++ = c;
1749 }
1750 }
1751
1752 /* Skip over " and following space and comma. */
1753 s++;
1754 *f++ = '\0';
1755 while (*s == ' ' || *s == '\t')
1756 s++;
1757
1758 if (*s != ',' && *s != 0)
1759 error (_("Invalid argument syntax"));
1760
1761 if (*s == ',')
1762 s++;
1763 while (*s == ' ' || *s == '\t')
1764 s++;
1765
1766 /* Need extra space for the '\0's. Doubling the size is sufficient. */
1767 substrings = alloca (strlen (string) * 2);
1768 current_substring = substrings;
1769
1770 {
1771 /* Now scan the string for %-specs and see what kinds of args they want.
1772 argclass[I] classifies the %-specs so we can give printf_filtered
1773 something of the right size. */
1774
1775 enum argclass
1776 {
1777 int_arg, long_arg, long_long_arg, ptr_arg, string_arg,
1778 double_arg, long_double_arg, decfloat_arg
1779 };
1780 enum argclass *argclass;
1781 enum argclass this_argclass;
1782 char *last_arg;
1783 int nargs_wanted;
1784 int i;
1785
1786 argclass = (enum argclass *) alloca (strlen (s) * sizeof *argclass);
1787 nargs_wanted = 0;
1788 f = string;
1789 last_arg = string;
1790 while (*f)
1791 if (*f++ == '%')
1792 {
1793 int seen_hash = 0, seen_zero = 0, lcount = 0, seen_prec = 0;
1794 int seen_space = 0, seen_plus = 0;
1795 int seen_big_l = 0, seen_h = 0, seen_big_h = 0;
1796 int seen_big_d = 0, seen_double_big_d = 0;
1797 int bad = 0;
1798
1799 /* Check the validity of the format specifier, and work
1800 out what argument it expects. We only accept C89
1801 format strings, with the exception of long long (which
1802 we autoconf for). */
1803
1804 /* Skip over "%%". */
1805 if (*f == '%')
1806 {
1807 f++;
1808 continue;
1809 }
1810
1811 /* The first part of a format specifier is a set of flag
1812 characters. */
1813 while (strchr ("0-+ #", *f))
1814 {
1815 if (*f == '#')
1816 seen_hash = 1;
1817 else if (*f == '0')
1818 seen_zero = 1;
1819 else if (*f == ' ')
1820 seen_space = 1;
1821 else if (*f == '+')
1822 seen_plus = 1;
1823 f++;
1824 }
1825
1826 /* The next part of a format specifier is a width. */
1827 while (strchr ("0123456789", *f))
1828 f++;
1829
1830 /* The next part of a format specifier is a precision. */
1831 if (*f == '.')
1832 {
1833 seen_prec = 1;
1834 f++;
1835 while (strchr ("0123456789", *f))
1836 f++;
1837 }
1838
1839 /* The next part of a format specifier is a length modifier. */
1840 if (*f == 'h')
1841 {
1842 seen_h = 1;
1843 f++;
1844 }
1845 else if (*f == 'l')
1846 {
1847 f++;
1848 lcount++;
1849 if (*f == 'l')
1850 {
1851 f++;
1852 lcount++;
1853 }
1854 }
1855 else if (*f == 'L')
1856 {
1857 seen_big_l = 1;
1858 f++;
1859 }
1860 /* Decimal32 modifier. */
1861 else if (*f == 'H')
1862 {
1863 seen_big_h = 1;
1864 f++;
1865 }
1866 /* Decimal64 and Decimal128 modifiers. */
1867 else if (*f == 'D')
1868 {
1869 f++;
1870
1871 /* Check for a Decimal128. */
1872 if (*f == 'D')
1873 {
1874 f++;
1875 seen_double_big_d = 1;
1876 }
1877 else
1878 seen_big_d = 1;
1879 }
1880
1881 switch (*f)
1882 {
1883 case 'u':
1884 if (seen_hash)
1885 bad = 1;
1886 /* FALLTHROUGH */
1887
1888 case 'o':
1889 case 'x':
1890 case 'X':
1891 if (seen_space || seen_plus)
1892 bad = 1;
1893 /* FALLTHROUGH */
1894
1895 case 'd':
1896 case 'i':
1897 if (lcount == 0)
1898 this_argclass = int_arg;
1899 else if (lcount == 1)
1900 this_argclass = long_arg;
1901 else
1902 this_argclass = long_long_arg;
1903
1904 if (seen_big_l)
1905 bad = 1;
1906 break;
1907
1908 case 'c':
1909 this_argclass = int_arg;
1910 if (lcount || seen_h || seen_big_l)
1911 bad = 1;
1912 if (seen_prec || seen_zero || seen_space || seen_plus)
1913 bad = 1;
1914 break;
1915
1916 case 'p':
1917 this_argclass = ptr_arg;
1918 if (lcount || seen_h || seen_big_l)
1919 bad = 1;
1920 if (seen_prec || seen_zero || seen_space || seen_plus)
1921 bad = 1;
1922 break;
1923
1924 case 's':
1925 this_argclass = string_arg;
1926 if (lcount || seen_h || seen_big_l)
1927 bad = 1;
1928 if (seen_zero || seen_space || seen_plus)
1929 bad = 1;
1930 break;
1931
1932 case 'e':
1933 case 'f':
1934 case 'g':
1935 case 'E':
1936 case 'G':
1937 if (seen_big_h || seen_big_d || seen_double_big_d)
1938 this_argclass = decfloat_arg;
1939 else if (seen_big_l)
1940 this_argclass = long_double_arg;
1941 else
1942 this_argclass = double_arg;
1943
1944 if (lcount || seen_h)
1945 bad = 1;
1946 break;
1947
1948 case '*':
1949 error (_("`*' not supported for precision or width in printf"));
1950
1951 case 'n':
1952 error (_("Format specifier `n' not supported in printf"));
1953
1954 case '\0':
1955 error (_("Incomplete format specifier at end of format string"));
1956
1957 default:
1958 error (_("Unrecognized format specifier '%c' in printf"), *f);
1959 }
1960
1961 if (bad)
1962 error (_("Inappropriate modifiers to format specifier '%c' in printf"),
1963 *f);
1964
1965 f++;
1966
1967 if (lcount > 1 && USE_PRINTF_I64)
1968 {
1969 /* Windows' printf does support long long, but not the usual way.
1970 Convert %lld to %I64d. */
1971 int length_before_ll = f - last_arg - 1 - lcount;
1972 strncpy (current_substring, last_arg, length_before_ll);
1973 strcpy (current_substring + length_before_ll, "I64");
1974 current_substring[length_before_ll + 3] =
1975 last_arg[length_before_ll + lcount];
1976 current_substring += length_before_ll + 4;
1977 }
1978 else
1979 {
1980 strncpy (current_substring, last_arg, f - last_arg);
1981 current_substring += f - last_arg;
1982 }
1983 *current_substring++ = '\0';
1984 last_arg = f;
1985 argclass[nargs_wanted++] = this_argclass;
1986 }
1987
1988 /* Now, parse all arguments and evaluate them.
1989 Store the VALUEs in VAL_ARGS. */
1990
1991 while (*s != '\0')
1992 {
1993 char *s1;
1994 if (nargs == allocated_args)
1995 val_args = (struct value **) xrealloc ((char *) val_args,
1996 (allocated_args *= 2)
1997 * sizeof (struct value *));
1998 s1 = s;
1999 val_args[nargs] = parse_to_comma_and_eval (&s1);
2000
2001 /* If format string wants a float, unchecked-convert the value to
2002 floating point of the same size */
2003
2004 if (argclass[nargs] == double_arg)
2005 {
2006 struct type *type = value_type (val_args[nargs]);
2007 if (TYPE_LENGTH (type) == sizeof (float))
2008 deprecated_set_value_type (val_args[nargs], builtin_type_float);
2009 if (TYPE_LENGTH (type) == sizeof (double))
2010 deprecated_set_value_type (val_args[nargs], builtin_type_double);
2011 }
2012 nargs++;
2013 s = s1;
2014 if (*s == ',')
2015 s++;
2016 }
2017
2018 if (nargs != nargs_wanted)
2019 error (_("Wrong number of arguments for specified format-string"));
2020
2021 /* Now actually print them. */
2022 current_substring = substrings;
2023 for (i = 0; i < nargs; i++)
2024 {
2025 switch (argclass[i])
2026 {
2027 case string_arg:
2028 {
2029 gdb_byte *str;
2030 CORE_ADDR tem;
2031 int j;
2032 tem = value_as_address (val_args[i]);
2033
2034 /* This is a %s argument. Find the length of the string. */
2035 for (j = 0;; j++)
2036 {
2037 gdb_byte c;
2038 QUIT;
2039 read_memory (tem + j, &c, 1);
2040 if (c == 0)
2041 break;
2042 }
2043
2044 /* Copy the string contents into a string inside GDB. */
2045 str = (gdb_byte *) alloca (j + 1);
2046 if (j != 0)
2047 read_memory (tem, str, j);
2048 str[j] = 0;
2049
2050 printf_filtered (current_substring, (char *) str);
2051 }
2052 break;
2053 case double_arg:
2054 {
2055 double val = value_as_double (val_args[i]);
2056 printf_filtered (current_substring, val);
2057 break;
2058 }
2059 case long_double_arg:
2060 #ifdef HAVE_LONG_DOUBLE
2061 {
2062 long double val = value_as_double (val_args[i]);
2063 printf_filtered (current_substring, val);
2064 break;
2065 }
2066 #else
2067 error (_("long double not supported in printf"));
2068 #endif
2069 case long_long_arg:
2070 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
2071 {
2072 long long val = value_as_long (val_args[i]);
2073 printf_filtered (current_substring, val);
2074 break;
2075 }
2076 #else
2077 error (_("long long not supported in printf"));
2078 #endif
2079 case int_arg:
2080 {
2081 int val = value_as_long (val_args[i]);
2082 printf_filtered (current_substring, val);
2083 break;
2084 }
2085 case long_arg:
2086 {
2087 long val = value_as_long (val_args[i]);
2088 printf_filtered (current_substring, val);
2089 break;
2090 }
2091
2092 /* Handles decimal floating values. */
2093 case decfloat_arg:
2094 {
2095 const gdb_byte *param_ptr = value_contents (val_args[i]);
2096 #if defined (PRINTF_HAS_DECFLOAT)
2097 /* If we have native support for Decimal floating
2098 printing, handle it here. */
2099 printf_filtered (current_substring, param_ptr);
2100 #else
2101
2102 /* As a workaround until vasprintf has native support for DFP
2103 we convert the DFP values to string and print them using
2104 the %s format specifier. */
2105
2106 char *eos, *sos;
2107 int nnull_chars = 0;
2108
2109 /* Parameter data. */
2110 struct type *param_type = value_type (val_args[i]);
2111 unsigned int param_len = TYPE_LENGTH (param_type);
2112
2113 /* DFP output data. */
2114 struct value *dfp_value = NULL;
2115 gdb_byte *dfp_ptr;
2116 int dfp_len = 16;
2117 gdb_byte dec[16];
2118 struct type *dfp_type = NULL;
2119 char decstr[MAX_DECIMAL_STRING];
2120
2121 /* Points to the end of the string so that we can go back
2122 and check for DFP length modifiers. */
2123 eos = current_substring + strlen (current_substring);
2124
2125 /* Look for the float/double format specifier. */
2126 while (*eos != 'f' && *eos != 'e' && *eos != 'E'
2127 && *eos != 'g' && *eos != 'G')
2128 eos--;
2129
2130 sos = eos;
2131
2132 /* Search for the '%' char and extract the size and type of
2133 the output decimal value based on its modifiers
2134 (%Hf, %Df, %DDf). */
2135 while (*--sos != '%')
2136 {
2137 if (*sos == 'H')
2138 {
2139 dfp_len = 4;
2140 dfp_type = builtin_type (current_gdbarch)->builtin_decfloat;
2141 }
2142 else if (*sos == 'D' && *(sos - 1) == 'D')
2143 {
2144 dfp_len = 16;
2145 dfp_type = builtin_type (current_gdbarch)->builtin_declong;
2146 sos--;
2147 }
2148 else
2149 {
2150 dfp_len = 8;
2151 dfp_type = builtin_type (current_gdbarch)->builtin_decdouble;
2152 }
2153 }
2154
2155 /* Replace %Hf, %Df and %DDf with %s's. */
2156 *++sos = 's';
2157
2158 /* Go through the whole format string and pull the correct
2159 number of chars back to compensate for the change in the
2160 format specifier. */
2161 while (nnull_chars < nargs - i)
2162 {
2163 if (*eos == '\0')
2164 nnull_chars++;
2165
2166 *++sos = *++eos;
2167 }
2168
2169 /* Conversion between different DFP types. */
2170 if (TYPE_CODE (param_type) == TYPE_CODE_DECFLOAT)
2171 decimal_convert (param_ptr, param_len, dec, dfp_len);
2172 else
2173 /* If this is a non-trivial conversion, just output 0.
2174 A correct converted value can be displayed by explicitly
2175 casting to a DFP type. */
2176 decimal_from_string (dec, dfp_len, "0");
2177
2178 dfp_value = value_from_decfloat (dfp_type, dec);
2179
2180 dfp_ptr = (gdb_byte *) value_contents (dfp_value);
2181
2182 decimal_to_string (dfp_ptr, dfp_len, decstr);
2183
2184 /* Print the DFP value. */
2185 printf_filtered (current_substring, decstr);
2186
2187 break;
2188 #endif
2189 }
2190
2191 case ptr_arg:
2192 {
2193 /* We avoid the host's %p because pointers are too
2194 likely to be the wrong size. The only interesting
2195 modifier for %p is a width; extract that, and then
2196 handle %p as glibc would: %#x or a literal "(nil)". */
2197
2198 char *p, *fmt, *fmt_p;
2199 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
2200 long long val = value_as_long (val_args[i]);
2201 #else
2202 long val = value_as_long (val_args[i]);
2203 #endif
2204
2205 fmt = alloca (strlen (current_substring) + 5);
2206
2207 /* Copy up to the leading %. */
2208 p = current_substring;
2209 fmt_p = fmt;
2210 while (*p)
2211 {
2212 int is_percent = (*p == '%');
2213 *fmt_p++ = *p++;
2214 if (is_percent)
2215 {
2216 if (*p == '%')
2217 *fmt_p++ = *p++;
2218 else
2219 break;
2220 }
2221 }
2222
2223 if (val != 0)
2224 *fmt_p++ = '#';
2225
2226 /* Copy any width. */
2227 while (*p >= '0' && *p < '9')
2228 *fmt_p++ = *p++;
2229
2230 gdb_assert (*p == 'p' && *(p + 1) == '\0');
2231 if (val != 0)
2232 {
2233 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
2234 *fmt_p++ = 'l';
2235 #endif
2236 *fmt_p++ = 'l';
2237 *fmt_p++ = 'x';
2238 *fmt_p++ = '\0';
2239 printf_filtered (fmt, val);
2240 }
2241 else
2242 {
2243 *fmt_p++ = 's';
2244 *fmt_p++ = '\0';
2245 printf_filtered (fmt, "(nil)");
2246 }
2247
2248 break;
2249 }
2250 default:
2251 internal_error (__FILE__, __LINE__,
2252 _("failed internal consistency check"));
2253 }
2254 /* Skip to the next substring. */
2255 current_substring += strlen (current_substring) + 1;
2256 }
2257 /* Print the portion of the format string after the last argument. */
2258 puts_filtered (last_arg);
2259 }
2260 do_cleanups (old_cleanups);
2261 }
2262
2263 void
2264 _initialize_printcmd (void)
2265 {
2266 struct cmd_list_element *c;
2267
2268 current_display_number = -1;
2269
2270 add_info ("address", address_info,
2271 _("Describe where symbol SYM is stored."));
2272
2273 add_info ("symbol", sym_info, _("\
2274 Describe what symbol is at location ADDR.\n\
2275 Only for symbols with fixed locations (global or static scope)."));
2276
2277 add_com ("x", class_vars, x_command, _("\
2278 Examine memory: x/FMT ADDRESS.\n\
2279 ADDRESS is an expression for the memory address to examine.\n\
2280 FMT is a repeat count followed by a format letter and a size letter.\n\
2281 Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),\n\
2282 t(binary), f(float), a(address), i(instruction), c(char) and s(string).\n\
2283 Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).\n\
2284 The specified number of objects of the specified size are printed\n\
2285 according to the format.\n\n\
2286 Defaults for format and size letters are those previously used.\n\
2287 Default count is 1. Default address is following last thing printed\n\
2288 with this command or \"print\"."));
2289
2290 #if 0
2291 add_com ("whereis", class_vars, whereis_command,
2292 _("Print line number and file of definition of variable."));
2293 #endif
2294
2295 add_info ("display", display_info, _("\
2296 Expressions to display when program stops, with code numbers."));
2297
2298 add_cmd ("undisplay", class_vars, undisplay_command, _("\
2299 Cancel some expressions to be displayed when program stops.\n\
2300 Arguments are the code numbers of the expressions to stop displaying.\n\
2301 No argument means cancel all automatic-display expressions.\n\
2302 \"delete display\" has the same effect as this command.\n\
2303 Do \"info display\" to see current list of code numbers."),
2304 &cmdlist);
2305
2306 add_com ("display", class_vars, display_command, _("\
2307 Print value of expression EXP each time the program stops.\n\
2308 /FMT may be used before EXP as in the \"print\" command.\n\
2309 /FMT \"i\" or \"s\" or including a size-letter is allowed,\n\
2310 as in the \"x\" command, and then EXP is used to get the address to examine\n\
2311 and examining is done as in the \"x\" command.\n\n\
2312 With no argument, display all currently requested auto-display expressions.\n\
2313 Use \"undisplay\" to cancel display requests previously made."));
2314
2315 add_cmd ("display", class_vars, enable_display, _("\
2316 Enable some expressions to be displayed when program stops.\n\
2317 Arguments are the code numbers of the expressions to resume displaying.\n\
2318 No argument means enable all automatic-display expressions.\n\
2319 Do \"info display\" to see current list of code numbers."), &enablelist);
2320
2321 add_cmd ("display", class_vars, disable_display_command, _("\
2322 Disable some expressions to be displayed when program stops.\n\
2323 Arguments are the code numbers of the expressions to stop displaying.\n\
2324 No argument means disable all automatic-display expressions.\n\
2325 Do \"info display\" to see current list of code numbers."), &disablelist);
2326
2327 add_cmd ("display", class_vars, undisplay_command, _("\
2328 Cancel some expressions to be displayed when program stops.\n\
2329 Arguments are the code numbers of the expressions to stop displaying.\n\
2330 No argument means cancel all automatic-display expressions.\n\
2331 Do \"info display\" to see current list of code numbers."), &deletelist);
2332
2333 add_com ("printf", class_vars, printf_command, _("\
2334 printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
2335 This is useful for formatted output in user-defined commands."));
2336
2337 add_com ("output", class_vars, output_command, _("\
2338 Like \"print\" but don't put in value history and don't print newline.\n\
2339 This is useful in user-defined commands."));
2340
2341 add_prefix_cmd ("set", class_vars, set_command, _("\
2342 Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2343 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2344 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2345 with $), a register (a few standard names starting with $), or an actual\n\
2346 variable in the program being debugged. EXP is any valid expression.\n\
2347 Use \"set variable\" for variables with names identical to set subcommands.\n\
2348 \n\
2349 With a subcommand, this command modifies parts of the gdb environment.\n\
2350 You can see these environment settings with the \"show\" command."),
2351 &setlist, "set ", 1, &cmdlist);
2352 if (dbx_commands)
2353 add_com ("assign", class_vars, set_command, _("\
2354 Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2355 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2356 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2357 with $), a register (a few standard names starting with $), or an actual\n\
2358 variable in the program being debugged. EXP is any valid expression.\n\
2359 Use \"set variable\" for variables with names identical to set subcommands.\n\
2360 \nWith a subcommand, this command modifies parts of the gdb environment.\n\
2361 You can see these environment settings with the \"show\" command."));
2362
2363 /* "call" is the same as "set", but handy for dbx users to call fns. */
2364 c = add_com ("call", class_vars, call_command, _("\
2365 Call a function in the program.\n\
2366 The argument is the function name and arguments, in the notation of the\n\
2367 current working language. The result is printed and saved in the value\n\
2368 history, if it is not void."));
2369 set_cmd_completer (c, expression_completer);
2370
2371 add_cmd ("variable", class_vars, set_command, _("\
2372 Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2373 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2374 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2375 with $), a register (a few standard names starting with $), or an actual\n\
2376 variable in the program being debugged. EXP is any valid expression.\n\
2377 This may usually be abbreviated to simply \"set\"."),
2378 &setlist);
2379
2380 c = add_com ("print", class_vars, print_command, _("\
2381 Print value of expression EXP.\n\
2382 Variables accessible are those of the lexical environment of the selected\n\
2383 stack frame, plus all those whose scope is global or an entire file.\n\
2384 \n\
2385 $NUM gets previous value number NUM. $ and $$ are the last two values.\n\
2386 $$NUM refers to NUM'th value back from the last one.\n\
2387 Names starting with $ refer to registers (with the values they would have\n\
2388 if the program were to return to the stack frame now selected, restoring\n\
2389 all registers saved by frames farther in) or else to debugger\n\
2390 \"convenience\" variables (any such name not a known register).\n\
2391 Use assignment expressions to give values to convenience variables.\n\
2392 \n\
2393 {TYPE}ADREXP refers to a datum of data type TYPE, located at address ADREXP.\n\
2394 @ is a binary operator for treating consecutive data objects\n\
2395 anywhere in memory as an array. FOO@NUM gives an array whose first\n\
2396 element is FOO, whose second element is stored in the space following\n\
2397 where FOO is stored, etc. FOO must be an expression whose value\n\
2398 resides in memory.\n\
2399 \n\
2400 EXP may be preceded with /FMT, where FMT is a format letter\n\
2401 but no count or size letter (see \"x\" command)."));
2402 set_cmd_completer (c, expression_completer);
2403 add_com_alias ("p", "print", class_vars, 1);
2404
2405 c = add_com ("inspect", class_vars, inspect_command, _("\
2406 Same as \"print\" command, except that if you are running in the epoch\n\
2407 environment, the value is printed in its own window."));
2408 set_cmd_completer (c, expression_completer);
2409
2410 add_setshow_uinteger_cmd ("max-symbolic-offset", no_class,
2411 &max_symbolic_offset, _("\
2412 Set the largest offset that will be printed in <symbol+1234> form."), _("\
2413 Show the largest offset that will be printed in <symbol+1234> form."), NULL,
2414 NULL,
2415 show_max_symbolic_offset,
2416 &setprintlist, &showprintlist);
2417 add_setshow_boolean_cmd ("symbol-filename", no_class,
2418 &print_symbol_filename, _("\
2419 Set printing of source filename and line number with <symbol>."), _("\
2420 Show printing of source filename and line number with <symbol>."), NULL,
2421 NULL,
2422 show_print_symbol_filename,
2423 &setprintlist, &showprintlist);
2424
2425 /* For examine/instruction a single byte quantity is specified as
2426 the data. This avoids problems with value_at_lazy() requiring a
2427 valid data type (and rejecting VOID). */
2428 examine_i_type = init_type (TYPE_CODE_INT, 1, 0, "examine_i_type", NULL);
2429
2430 examine_b_type = init_type (TYPE_CODE_INT, 1, 0, "examine_b_type", NULL);
2431 examine_h_type = init_type (TYPE_CODE_INT, 2, 0, "examine_h_type", NULL);
2432 examine_w_type = init_type (TYPE_CODE_INT, 4, 0, "examine_w_type", NULL);
2433 examine_g_type = init_type (TYPE_CODE_INT, 8, 0, "examine_g_type", NULL);
2434
2435 }
This page took 0.077737 seconds and 5 git commands to generate.