1 /* Print values for GNU debugger GDB.
2 Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1993, 1994
3 Free Software Foundation, Inc.
5 This file is part of GDB.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
29 #include "expression.h"
33 #include "breakpoint.h"
37 extern int asm_demangle; /* Whether to demangle syms in asm printouts */
38 extern int addressprint; /* Whether to print hex addresses in HLL " */
47 /* Last specified output format. */
49 static char last_format = 'x';
51 /* Last specified examination size. 'b', 'h', 'w' or `q'. */
53 static char last_size = 'w';
55 /* Default address to examine next. */
57 static CORE_ADDR next_address;
59 /* Last address examined. */
61 static CORE_ADDR last_examine_address;
63 /* Contents of last address examined.
64 This is not valid past the end of the `x' command! */
66 static value last_examine_value;
68 /* Largest offset between a symbolic value and an address, that will be
69 printed as `0x1234 <symbol+offset>'. */
71 static unsigned int max_symbolic_offset = UINT_MAX;
73 /* Append the source filename and linenumber of the symbol when
74 printing a symbolic value as `<symbol at filename:linenum>' if set. */
75 static int print_symbol_filename = 0;
77 /* Switch for quick display of symbolic addresses -- only uses minsyms,
78 not full search of symtabs. */
80 int fast_symbolic_addr = 1;
82 /* Number of auto-display expression currently being displayed.
83 So that we can disable it if we get an error or a signal within it.
84 -1 when not doing one. */
86 int current_display_number;
88 /* Flag to low-level print routines that this value is being printed
89 in an epoch window. We'd like to pass this as a parameter, but
90 every routine would need to take it. Perhaps we can encapsulate
91 this in the I/O stream once we have GNU stdio. */
97 /* Chain link to next auto-display item. */
99 /* Expression to be evaluated and displayed. */
100 struct expression *exp;
101 /* Item number of this auto-display item. */
103 /* Display format specified. */
104 struct format_data format;
105 /* Innermost block required by this expression when evaluated */
107 /* Status of this display (enabled or disabled) */
111 /* Chain of expressions whose values should be displayed
112 automatically each time the program stops. */
114 static struct display *display_chain;
116 static int display_number;
118 /* Prototypes for local functions */
121 delete_display PARAMS ((int));
124 enable_display PARAMS ((char *, int));
127 disable_display_command PARAMS ((char *, int));
130 disassemble_command PARAMS ((char *, int));
133 printf_command PARAMS ((char *, int));
136 print_frame_nameless_args PARAMS ((struct frame_info *, long, int, int,
140 display_info PARAMS ((char *, int));
143 do_one_display PARAMS ((struct display *));
146 undisplay_command PARAMS ((char *, int));
149 free_display PARAMS ((struct display *));
152 display_command PARAMS ((char *, int));
155 x_command PARAMS ((char *, int));
158 address_info PARAMS ((char *, int));
161 set_command PARAMS ((char *, int));
164 output_command PARAMS ((char *, int));
167 call_command PARAMS ((char *, int));
170 inspect_command PARAMS ((char *, int));
173 print_command PARAMS ((char *, int));
176 print_command_1 PARAMS ((char *, int, int));
179 validate_format PARAMS ((struct format_data, char *));
182 do_examine PARAMS ((struct format_data, CORE_ADDR));
185 print_formatted PARAMS ((value, int, int));
187 static struct format_data
188 decode_format PARAMS ((char **, int, int));
191 /* Decode a format specification. *STRING_PTR should point to it.
192 OFORMAT and OSIZE are used as defaults for the format and size
193 if none are given in the format specification.
194 If OSIZE is zero, then the size field of the returned value
195 should be set only if a size is explicitly specified by the
197 The structure returned describes all the data
198 found in the specification. In addition, *STRING_PTR is advanced
199 past the specification and past all whitespace following it. */
201 static struct format_data
202 decode_format (string_ptr, oformat, osize)
207 struct format_data val;
208 register char *p = *string_ptr;
214 if (*p >= '0' && *p <= '9')
215 val.count = atoi (p);
216 while (*p >= '0' && *p <= '9') p++;
218 /* Now process size or format letters that follow. */
222 if (*p == 'b' || *p == 'h' || *p == 'w' || *p == 'g')
224 else if (*p >= 'a' && *p <= 'z')
230 #ifndef CC_HAS_LONG_LONG
231 /* Make sure 'g' size is not used on integer types.
232 Well, actually, we can handle hex. */
233 if (val.size == 'g' && val.format != 'f' && val.format != 'x')
237 while (*p == ' ' || *p == '\t') p++;
240 /* Set defaults for format and size if not specified. */
241 if (val.format == '?')
245 /* Neither has been specified. */
246 val.format = oformat;
250 /* If a size is specified, any format makes a reasonable
251 default except 'i'. */
252 val.format = oformat == 'i' ? 'x' : oformat;
254 else if (val.size == '?')
259 /* Addresses must be words. */
260 val.size = osize ? 'w' : osize;
263 /* Floating point has to be word or giantword. */
264 if (osize == 'w' || osize == 'g')
267 /* Default it to giantword if the last used size is not
269 val.size = osize ? 'g' : osize;
272 /* Characters default to one byte. */
273 val.size = osize ? 'b' : osize;
276 /* The default is the size most recently specified. */
283 /* Print value VAL on gdb_stdout according to FORMAT, a letter or 0.
284 Do not end with a newline.
285 0 means print VAL according to its own type.
286 SIZE is the letter for the size of datum being printed.
287 This is used to pad hex numbers so they line up. */
290 print_formatted (val, format, size)
295 int len = TYPE_LENGTH (VALUE_TYPE (val));
297 if (VALUE_LVAL (val) == lval_memory)
298 next_address = VALUE_ADDRESS (val) + len;
303 next_address = VALUE_ADDRESS (val)
304 + value_print (value_addr (val), gdb_stdout, format, Val_pretty_default);
308 /* The old comment says
309 "Force output out, print_insn not using _filtered".
310 I'm not completely sure what that means, I suspect most print_insn
311 now do use _filtered, so I guess it's obsolete. */
312 /* We often wrap here if there are long symbolic names. */
314 next_address = VALUE_ADDRESS (val)
315 + print_insn (VALUE_ADDRESS (val), gdb_stdout);
320 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_ARRAY
321 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_STRING
322 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_STRUCT
323 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_UNION
324 || VALUE_REPEATED (val))
325 value_print (val, gdb_stdout, format, Val_pretty_default);
327 print_scalar_formatted (VALUE_CONTENTS (val), VALUE_TYPE (val),
328 format, size, gdb_stdout);
332 /* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
333 according to letters FORMAT and SIZE on STREAM.
334 FORMAT may not be zero. Formats s and i are not supported at this level.
336 This is how the elements of an array or structure are printed
340 print_scalar_formatted (valaddr, type, format, size, stream)
348 int len = TYPE_LENGTH (type);
350 if (len > sizeof (LONGEST)
358 /* We can't print it normally, but we can print it in hex.
359 Printing it in the wrong radix is more useful than saying
360 "use /x, you dummy". */
361 /* FIXME: we could also do octal or binary if that was the
363 /* FIXME: we should be using the size field to give us a minimum
364 field width to print. */
365 val_print_type_code_int (type, valaddr, stream);
369 val_long = unpack_long (type, valaddr);
371 /* If we are printing it as unsigned, truncate it in case it is actually
372 a negative signed value (e.g. "print/u (short)-1" should print 65535
373 (if shorts are 16 bits) instead of 4294967295). */
376 if (len < sizeof (LONGEST))
377 val_long &= ((LONGEST) 1 << HOST_CHAR_BIT * len) - 1;
385 /* no size specified, like in print. Print varying # of digits. */
386 print_longest (stream, 'x', 1, val_long);
395 print_longest (stream, size, 1, val_long);
398 error ("Undefined output size \"%c\".", size);
403 print_longest (stream, 'd', 1, val_long);
407 print_longest (stream, 'u', 0, val_long);
412 print_longest (stream, 'o', 1, val_long);
414 fprintf_filtered (stream, "0");
418 print_address (unpack_pointer (type, valaddr), stream);
422 value_print (value_from_longest (builtin_type_char, val_long), stream, 0,
427 if (len == sizeof (float))
428 type = builtin_type_float;
429 else if (len == sizeof (double))
430 type = builtin_type_double;
431 print_floating (valaddr, type, stream);
438 /* Binary; 't' stands for "two". */
440 char bits[8*(sizeof val_long) + 1];
445 width = 8*(sizeof val_long);
462 error ("Undefined output size \"%c\".", size);
468 bits[width] = (val_long & 1) ? '1' : '0';
473 while (*cp && *cp == '0')
478 fprintf_filtered (stream, local_binary_format_prefix());
479 fprintf_filtered (stream, cp);
480 fprintf_filtered (stream, local_binary_format_suffix());
485 error ("Undefined output format \"%c\".", format);
489 /* Specify default address for `x' command.
490 `info lines' uses this. */
493 set_next_address (addr)
498 /* Make address available to the user as $_. */
499 set_internalvar (lookup_internalvar ("_"),
500 value_from_longest (lookup_pointer_type (builtin_type_void),
504 /* Optionally print address ADDR symbolically as <SYMBOL+OFFSET> on STREAM,
505 after LEADIN. Print nothing if no symbolic name is found nearby.
506 Optionally also print source file and line number, if available.
507 DO_DEMANGLE controls whether to print a symbol in its native "raw" form,
508 or to interpret it as a possible C++ name and convert it back to source
509 form. However note that DO_DEMANGLE can be overridden by the specific
510 settings of the demangle and asm_demangle variables. */
513 print_address_symbolic (addr, stream, do_demangle, leadin)
519 struct minimal_symbol *msymbol;
520 struct symbol *symbol;
521 struct symtab *symtab = 0;
522 CORE_ADDR name_location = 0;
525 /* First try to find the address in the symbol table, then
526 in the minsyms. Take the closest one. */
528 if (fast_symbolic_addr)
530 /* This is defective in the sense that it only finds text symbols. */
531 symbol = find_pc_function (addr);
533 name_location = BLOCK_START (SYMBOL_BLOCK_VALUE (symbol));
536 find_addr_symbol (addr, &symtab, &name_location);
541 name = SYMBOL_SOURCE_NAME (symbol);
543 name = SYMBOL_LINKAGE_NAME (symbol);
546 msymbol = lookup_minimal_symbol_by_pc (addr);
549 if (SYMBOL_VALUE_ADDRESS (msymbol) > name_location || symbol == NULL)
551 /* The msymbol is closer to the address than the symbol;
552 use the msymbol instead. */
555 name_location = SYMBOL_VALUE_ADDRESS (msymbol);
557 name = SYMBOL_SOURCE_NAME (msymbol);
559 name = SYMBOL_LINKAGE_NAME (msymbol);
562 if (symbol == NULL && msymbol == NULL)
565 /* If the nearest symbol is too far away, don't print anything symbolic. */
567 /* For when CORE_ADDR is larger than unsigned int, we do math in
568 CORE_ADDR. But when we detect unsigned wraparound in the
569 CORE_ADDR math, we ignore this test and print the offset,
570 because addr+max_symbolic_offset has wrapped through the end
571 of the address space back to the beginning, giving bogus comparison. */
572 if (addr > name_location + max_symbolic_offset
573 && name_location + max_symbolic_offset > name_location)
576 fputs_filtered (leadin, stream);
577 fputs_filtered ("<", stream);
578 fputs_filtered (name, stream);
579 if (addr != name_location)
580 fprintf_filtered (stream, "+%u", (unsigned int)(addr - name_location));
582 /* Append source filename and line number if desired. Give specific
583 line # of this addr, if we have it; else line # of the nearest symbol. */
584 if (print_symbol_filename)
586 struct symtab_and_line sal;
588 sal = find_pc_line (addr, 0);
590 fprintf_filtered (stream, " at %s:%d", sal.symtab->filename, sal.line);
591 else if (symtab && symbol && symbol->line)
592 fprintf_filtered (stream, " at %s:%d", symtab->filename, symbol->line);
594 fprintf_filtered (stream, " in %s", symtab->filename);
596 fputs_filtered (">", stream);
599 /* Print address ADDR on STREAM. */
601 print_address_numeric (addr, stream)
605 /* This assumes a CORE_ADDR can fit in a LONGEST. Probably a safe
606 assumption. We pass use_local but I'm not completely sure whether
607 that is correct. When (if ever) should we *not* use_local? */
608 print_longest (stream, 'x', 1, (unsigned LONGEST) addr);
611 /* Print address ADDR symbolically on STREAM.
612 First print it as a number. Then perhaps print
613 <SYMBOL + OFFSET> after the number. */
616 print_address (addr, stream)
620 print_address_numeric (addr, stream);
621 print_address_symbolic (addr, stream, asm_demangle, " ");
624 /* Print address ADDR symbolically on STREAM. Parameter DEMANGLE
625 controls whether to print the symbolic name "raw" or demangled.
626 Global setting "addressprint" controls whether to print hex address
630 print_address_demangle (addr, stream, do_demangle)
637 fprintf_filtered (stream, "0");
639 else if (addressprint)
641 print_address_numeric (addr, stream);
642 print_address_symbolic (addr, stream, do_demangle, " ");
646 print_address_symbolic (addr, stream, do_demangle, "");
651 /* These are the types that $__ will get after an examine command of one
654 static struct type *examine_b_type;
655 static struct type *examine_h_type;
656 static struct type *examine_w_type;
657 static struct type *examine_g_type;
659 /* Examine data at address ADDR in format FMT.
660 Fetch it from memory and print on gdb_stdout. */
663 do_examine (fmt, addr)
664 struct format_data fmt;
667 register char format = 0;
669 register int count = 1;
670 struct type *val_type = NULL;
672 register int maxelts;
679 /* String or instruction format implies fetch single bytes
680 regardless of the specified size. */
681 if (format == 's' || format == 'i')
685 val_type = examine_b_type;
686 else if (size == 'h')
687 val_type = examine_h_type;
688 else if (size == 'w')
689 val_type = examine_w_type;
690 else if (size == 'g')
691 val_type = examine_g_type;
698 if (format == 's' || format == 'i')
701 /* Print as many objects as specified in COUNT, at most maxelts per line,
702 with the address of the next one at the start of each line. */
706 print_address (next_address, gdb_stdout);
707 printf_filtered (":");
712 printf_filtered ("\t");
713 /* Note that print_formatted sets next_address for the next
715 last_examine_address = next_address;
716 last_examine_value = value_at (val_type, next_address);
717 print_formatted (last_examine_value, format, size);
719 printf_filtered ("\n");
720 gdb_flush (gdb_stdout);
725 validate_format (fmt, cmdname)
726 struct format_data fmt;
730 error ("Size letters are meaningless in \"%s\" command.", cmdname);
732 error ("Item count other than 1 is meaningless in \"%s\" command.",
734 if (fmt.format == 'i' || fmt.format == 's')
735 error ("Format letter \"%c\" is meaningless in \"%s\" command.",
736 fmt.format, cmdname);
739 /* Evaluate string EXP as an expression in the current language and
740 print the resulting value. EXP may contain a format specifier as the
741 first argument ("/x myvar" for example, to print myvar in hex).
745 print_command_1 (exp, inspect, voidprint)
750 struct expression *expr;
751 register struct cleanup *old_chain = 0;
752 register char format = 0;
754 struct format_data fmt;
757 /* Pass inspect flag to the rest of the print routines in a global (sigh). */
758 inspect_it = inspect;
760 if (exp && *exp == '/')
763 fmt = decode_format (&exp, last_format, 0);
764 validate_format (fmt, "print");
765 last_format = format = fmt.format;
776 extern int objectprint;
778 expr = parse_expression (exp);
779 old_chain = make_cleanup (free_current_contents, &expr);
781 val = evaluate_expression (expr);
783 /* C++: figure out what type we actually want to print it as. */
784 type = VALUE_TYPE (val);
787 && ( TYPE_CODE (type) == TYPE_CODE_PTR
788 || TYPE_CODE (type) == TYPE_CODE_REF)
789 && ( TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_STRUCT
790 || TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_UNION))
794 v = value_from_vtable_info (val, TYPE_TARGET_TYPE (type));
798 type = VALUE_TYPE (val);
803 val = access_value_history (0);
805 if (voidprint || (val && VALUE_TYPE (val) &&
806 TYPE_CODE (VALUE_TYPE (val)) != TYPE_CODE_VOID))
808 int histindex = record_latest_value (val);
811 printf_unfiltered ("\031(gdb-makebuffer \"%s\" %d '(\"", exp, histindex);
813 if (histindex >= 0) printf_filtered ("$%d = ", histindex);
815 print_formatted (val, format, fmt.size);
816 printf_filtered ("\n");
818 printf_unfiltered("\") )\030");
822 do_cleanups (old_chain);
823 inspect_it = 0; /* Reset print routines to normal */
828 print_command (exp, from_tty)
832 print_command_1 (exp, 0, 1);
835 /* Same as print, except in epoch, it gets its own window */
838 inspect_command (exp, from_tty)
842 extern int epoch_interface;
844 print_command_1 (exp, epoch_interface, 1);
847 /* Same as print, except it doesn't print void results. */
850 call_command (exp, from_tty)
854 print_command_1 (exp, 0, 0);
859 output_command (exp, from_tty)
863 struct expression *expr;
864 register struct cleanup *old_chain;
865 register char format = 0;
867 struct format_data fmt;
869 if (exp && *exp == '/')
872 fmt = decode_format (&exp, 0, 0);
873 validate_format (fmt, "output");
877 expr = parse_expression (exp);
878 old_chain = make_cleanup (free_current_contents, &expr);
880 val = evaluate_expression (expr);
882 print_formatted (val, format, fmt.size);
884 do_cleanups (old_chain);
889 set_command (exp, from_tty)
893 struct expression *expr = parse_expression (exp);
894 register struct cleanup *old_chain
895 = make_cleanup (free_current_contents, &expr);
896 evaluate_expression (expr);
897 do_cleanups (old_chain);
902 address_info (exp, from_tty)
906 register struct symbol *sym;
907 register struct minimal_symbol *msymbol;
909 register long basereg;
910 int is_a_field_of_this; /* C++: lookup_symbol sets this to nonzero
911 if exp is a field of `this'. */
914 error ("Argument required.");
916 sym = lookup_symbol (exp, get_selected_block (), VAR_NAMESPACE,
917 &is_a_field_of_this, (struct symtab **)NULL);
920 if (is_a_field_of_this)
922 printf_filtered ("Symbol \"");
923 fprintf_symbol_filtered (gdb_stdout, exp,
924 current_language->la_language, DMGL_ANSI);
925 printf_filtered ("\" is a field of the local class variable `this'\n");
929 msymbol = lookup_minimal_symbol (exp, (struct objfile *) NULL);
933 printf_filtered ("Symbol \"");
934 fprintf_symbol_filtered (gdb_stdout, exp,
935 current_language->la_language, DMGL_ANSI);
936 printf_filtered ("\" is at ");
937 print_address_numeric (SYMBOL_VALUE_ADDRESS (msymbol), gdb_stdout);
938 printf_filtered (" in a file compiled without debugging.\n");
941 error ("No symbol \"%s\" in current context.", exp);
945 printf_filtered ("Symbol \"");
946 fprintf_symbol_filtered (gdb_stdout, SYMBOL_NAME (sym),
947 current_language->la_language, DMGL_ANSI);
948 printf_filtered ("\" is ", SYMBOL_NAME (sym));
949 val = SYMBOL_VALUE (sym);
950 basereg = SYMBOL_BASEREG (sym);
952 switch (SYMBOL_CLASS (sym))
955 case LOC_CONST_BYTES:
956 printf_filtered ("constant");
960 printf_filtered ("a label at address ");
961 print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), gdb_stdout);
965 printf_filtered ("a variable in register %s", reg_names[val]);
969 printf_filtered ("static storage at address ");
970 print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), gdb_stdout);
974 printf_filtered ("an argument in register %s", reg_names[val]);
977 case LOC_REGPARM_ADDR:
978 printf_filtered ("address of an argument in register %s", reg_names[val]);
982 printf_filtered ("an argument at offset %ld", val);
986 printf_filtered ("an argument at frame offset %ld", val);
990 printf_filtered ("a local variable at frame offset %ld", val);
994 printf_filtered ("a reference argument at offset %ld", val);
998 printf_filtered ("a variable at offset %ld from register %s",
999 val, reg_names[basereg]);
1002 case LOC_BASEREG_ARG:
1003 printf_filtered ("an argument at offset %ld from register %s",
1004 val, reg_names[basereg]);
1008 printf_filtered ("a typedef");
1012 printf_filtered ("a function at address ");
1013 print_address_numeric (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)),
1017 case LOC_OPTIMIZED_OUT:
1018 printf_filtered ("optimized out");
1022 printf_filtered ("of unknown (botched) type");
1025 printf_filtered (".\n");
1029 x_command (exp, from_tty)
1033 struct expression *expr;
1034 struct format_data fmt;
1035 struct cleanup *old_chain;
1038 fmt.format = last_format;
1039 fmt.size = last_size;
1042 if (exp && *exp == '/')
1045 fmt = decode_format (&exp, last_format, last_size);
1048 /* If we have an expression, evaluate it and use it as the address. */
1050 if (exp != 0 && *exp != 0)
1052 expr = parse_expression (exp);
1053 /* Cause expression not to be there any more
1054 if this command is repeated with Newline.
1055 But don't clobber a user-defined command's definition. */
1058 old_chain = make_cleanup (free_current_contents, &expr);
1059 val = evaluate_expression (expr);
1060 if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_REF)
1061 val = value_ind (val);
1062 /* In rvalue contexts, such as this, functions are coerced into
1063 pointers to functions. This makes "x/i main" work. */
1064 if (/* last_format == 'i'
1065 && */ TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FUNC
1066 && VALUE_LVAL (val) == lval_memory)
1067 next_address = VALUE_ADDRESS (val);
1069 next_address = value_as_pointer (val);
1070 do_cleanups (old_chain);
1073 do_examine (fmt, next_address);
1075 /* If the examine succeeds, we remember its size and format for next time. */
1076 last_size = fmt.size;
1077 last_format = fmt.format;
1079 /* Set a couple of internal variables if appropriate. */
1080 if (last_examine_value)
1082 /* Make last address examined available to the user as $_. Use
1083 the correct pointer type. */
1084 set_internalvar (lookup_internalvar ("_"),
1085 value_from_longest (
1086 lookup_pointer_type (VALUE_TYPE (last_examine_value)),
1087 (LONGEST) last_examine_address));
1089 /* Make contents of last address examined available to the user as $__.*/
1090 set_internalvar (lookup_internalvar ("__"), last_examine_value);
1095 /* Add an expression to the auto-display chain.
1096 Specify the expression. */
1099 display_command (exp, from_tty)
1103 struct format_data fmt;
1104 register struct expression *expr;
1105 register struct display *new;
1116 fmt = decode_format (&exp, 0, 0);
1117 if (fmt.size && fmt.format == 0)
1119 if (fmt.format == 'i' || fmt.format == 's')
1129 innermost_block = 0;
1130 expr = parse_expression (exp);
1132 new = (struct display *) xmalloc (sizeof (struct display));
1135 new->block = innermost_block;
1136 new->next = display_chain;
1137 new->number = ++display_number;
1139 new->status = enabled;
1140 display_chain = new;
1142 if (from_tty && target_has_execution)
1143 do_one_display (new);
1156 /* Clear out the display_chain.
1157 Done when new symtabs are loaded, since this invalidates
1158 the types stored in many expressions. */
1163 register struct display *d;
1165 while ((d = display_chain) != NULL)
1168 display_chain = d->next;
1173 /* Delete the auto-display number NUM. */
1176 delete_display (num)
1179 register struct display *d1, *d;
1182 error ("No display number %d.", num);
1184 if (display_chain->number == num)
1187 display_chain = d1->next;
1191 for (d = display_chain; ; d = d->next)
1194 error ("No display number %d.", num);
1195 if (d->next->number == num)
1205 /* Delete some values from the auto-display chain.
1206 Specify the element numbers. */
1209 undisplay_command (args, from_tty)
1213 register char *p = args;
1219 if (query ("Delete all auto-display expressions? "))
1228 while (*p1 >= '0' && *p1 <= '9') p1++;
1229 if (*p1 && *p1 != ' ' && *p1 != '\t')
1230 error ("Arguments must be display numbers.");
1234 delete_display (num);
1237 while (*p == ' ' || *p == '\t') p++;
1242 /* Display a single auto-display.
1243 Do nothing if the display cannot be printed in the current context,
1244 or if the display is disabled. */
1250 int within_current_scope;
1252 if (d->status == disabled)
1256 within_current_scope = contained_in (get_selected_block (), d->block);
1258 within_current_scope = 1;
1259 if (!within_current_scope)
1262 current_display_number = d->number;
1264 printf_filtered ("%d: ", d->number);
1269 printf_filtered ("x/");
1270 if (d->format.count != 1)
1271 printf_filtered ("%d", d->format.count);
1272 printf_filtered ("%c", d->format.format);
1273 if (d->format.format != 'i' && d->format.format != 's')
1274 printf_filtered ("%c", d->format.size);
1275 printf_filtered (" ");
1276 print_expression (d->exp, gdb_stdout);
1277 if (d->format.count != 1)
1278 printf_filtered ("\n");
1280 printf_filtered (" ");
1282 addr = value_as_pointer (evaluate_expression (d->exp));
1283 if (d->format.format == 'i')
1284 addr = ADDR_BITS_REMOVE (addr);
1286 do_examine (d->format, addr);
1290 if (d->format.format)
1291 printf_filtered ("/%c ", d->format.format);
1292 print_expression (d->exp, gdb_stdout);
1293 printf_filtered (" = ");
1294 print_formatted (evaluate_expression (d->exp),
1295 d->format.format, d->format.size);
1296 printf_filtered ("\n");
1299 gdb_flush (gdb_stdout);
1300 current_display_number = -1;
1303 /* Display all of the values on the auto-display chain which can be
1304 evaluated in the current scope. */
1309 register struct display *d;
1311 for (d = display_chain; d; d = d->next)
1315 /* Delete the auto-display which we were in the process of displaying.
1316 This is done when there is an error or a signal. */
1319 disable_display (num)
1322 register struct display *d;
1324 for (d = display_chain; d; d = d->next)
1325 if (d->number == num)
1327 d->status = disabled;
1330 printf_unfiltered ("No display number %d.\n", num);
1334 disable_current_display ()
1336 if (current_display_number >= 0)
1338 disable_display (current_display_number);
1339 fprintf_unfiltered (gdb_stderr, "Disabling display %d to avoid infinite recursion.\n",
1340 current_display_number);
1342 current_display_number = -1;
1346 display_info (ignore, from_tty)
1350 register struct display *d;
1353 printf_unfiltered ("There are no auto-display expressions now.\n");
1355 printf_filtered ("Auto-display expressions now in effect:\n\
1356 Num Enb Expression\n");
1358 for (d = display_chain; d; d = d->next)
1360 printf_filtered ("%d: %c ", d->number, "ny"[(int)d->status]);
1362 printf_filtered ("/%d%c%c ", d->format.count, d->format.size,
1364 else if (d->format.format)
1365 printf_filtered ("/%c ", d->format.format);
1366 print_expression (d->exp, gdb_stdout);
1367 if (d->block && !contained_in (get_selected_block (), d->block))
1368 printf_filtered (" (cannot be evaluated in the current context)");
1369 printf_filtered ("\n");
1370 gdb_flush (gdb_stdout);
1375 enable_display (args, from_tty)
1379 register char *p = args;
1382 register struct display *d;
1386 for (d = display_chain; d; d = d->next)
1387 d->status = enabled;
1393 while (*p1 >= '0' && *p1 <= '9')
1395 if (*p1 && *p1 != ' ' && *p1 != '\t')
1396 error ("Arguments must be display numbers.");
1400 for (d = display_chain; d; d = d->next)
1401 if (d->number == num)
1403 d->status = enabled;
1406 printf_unfiltered ("No display number %d.\n", num);
1409 while (*p == ' ' || *p == '\t')
1416 disable_display_command (args, from_tty)
1420 register char *p = args;
1422 register struct display *d;
1426 for (d = display_chain; d; d = d->next)
1427 d->status = disabled;
1433 while (*p1 >= '0' && *p1 <= '9')
1435 if (*p1 && *p1 != ' ' && *p1 != '\t')
1436 error ("Arguments must be display numbers.");
1438 disable_display (atoi (p));
1441 while (*p == ' ' || *p == '\t')
1447 /* Print the value in stack frame FRAME of a variable
1448 specified by a struct symbol. */
1451 print_variable_value (var, frame, stream)
1456 value val = read_var_value (var, frame);
1457 value_print (val, stream, 0, Val_pretty_default);
1460 /* Print the arguments of a stack frame, given the function FUNC
1461 running in that frame (as a symbol), the info on the frame,
1462 and the number of args according to the stack frame (or -1 if unknown). */
1464 /* References here and elsewhere to "number of args according to the
1465 stack frame" appear in all cases to refer to "number of ints of args
1466 according to the stack frame". At least for VAX, i386, isi. */
1469 print_frame_args (func, fi, num, stream)
1470 struct symbol *func;
1471 struct frame_info *fi;
1475 struct block *b = NULL;
1479 register struct symbol *sym;
1481 /* Offset of next stack argument beyond the one we have seen that is
1482 at the highest offset.
1483 -1 if we haven't come to a stack argument yet. */
1484 long highest_offset = -1;
1486 /* Number of ints of arguments that we have printed so far. */
1487 int args_printed = 0;
1491 b = SYMBOL_BLOCK_VALUE (func);
1492 nsyms = BLOCK_NSYMS (b);
1495 for (i = 0; i < nsyms; i++)
1498 sym = BLOCK_SYM (b, i);
1500 /* Keep track of the highest stack argument offset seen, and
1501 skip over any kinds of symbols we don't care about. */
1503 switch (SYMBOL_CLASS (sym)) {
1507 long current_offset = SYMBOL_VALUE (sym);
1509 arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
1511 /* Compute address of next argument by adding the size of
1512 this argument and rounding to an int boundary. */
1514 = ((current_offset + arg_size + sizeof (int) - 1)
1515 & ~(sizeof (int) - 1));
1517 /* If this is the highest offset seen yet, set highest_offset. */
1518 if (highest_offset == -1
1519 || (current_offset > highest_offset))
1520 highest_offset = current_offset;
1522 /* Add the number of ints we're about to print to args_printed. */
1523 args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
1526 /* We care about types of symbols, but don't need to keep track of
1527 stack offsets in them. */
1529 case LOC_REGPARM_ADDR:
1531 case LOC_BASEREG_ARG:
1534 /* Other types of symbols we just skip over. */
1539 /* We have to look up the symbol because arguments can have
1540 two entries (one a parameter, one a local) and the one we
1541 want is the local, which lookup_symbol will find for us.
1542 This includes gcc1 (not gcc2) on the sparc when passing a
1543 small structure and gcc2 when the argument type is float
1544 and it is passed as a double and converted to float by
1545 the prologue (in the latter case the type of the LOC_ARG
1546 symbol is double and the type of the LOC_LOCAL symbol is
1548 /* But if the parameter name is null, don't try it.
1549 Null parameter names occur on the RS/6000, for traceback tables.
1550 FIXME, should we even print them? */
1552 if (*SYMBOL_NAME (sym))
1554 struct symbol *nsym;
1555 nsym = lookup_symbol
1557 b, VAR_NAMESPACE, (int *)NULL, (struct symtab **)NULL);
1558 if (SYMBOL_CLASS (nsym) == LOC_REGISTER)
1560 /* There is a LOC_ARG/LOC_REGISTER pair. This means that
1561 it was passed on the stack and loaded into a register,
1562 or passed in a register and stored in a stack slot.
1563 GDB 3.x used the LOC_ARG; GDB 4.0-4.11 used the LOC_REGISTER.
1565 Reasons for using the LOC_ARG:
1566 (1) because find_saved_registers may be slow for remote
1568 (2) because registers are often re-used and stack slots
1569 rarely (never?) are. Therefore using the stack slot is
1570 much less likely to print garbage.
1572 Reasons why we might want to use the LOC_REGISTER:
1573 (1) So that the backtrace prints the same value as
1574 "print foo". I see no compelling reason why this needs
1575 to be the case; having the backtrace print the value which
1576 was passed in, and "print foo" print the value as modified
1577 within the called function, makes perfect sense to me.
1579 Additional note: It might be nice if "info args" displayed
1581 One more note: There is a case with sparc sturcture passing
1582 where we need to use the LOC_REGISTER, but this is dealt with
1583 by creating a single LOC_REGPARM in symbol reading. */
1585 /* Leave sym (the LOC_ARG) alone. */
1592 /* Print the current arg. */
1594 fprintf_filtered (stream, ", ");
1596 fprintf_symbol_filtered (stream, SYMBOL_SOURCE_NAME (sym),
1597 SYMBOL_LANGUAGE (sym), DMGL_PARAMS | DMGL_ANSI);
1598 fputs_filtered ("=", stream);
1600 /* Avoid value_print because it will deref ref parameters. We just
1601 want to print their addresses. Print ??? for args whose address
1602 we do not know. We pass 2 as "recurse" to val_print because our
1603 standard indentation here is 4 spaces, and val_print indents
1604 2 for each recurse. */
1605 val = read_var_value (sym, FRAME_INFO_ID (fi));
1607 val_print (VALUE_TYPE (val), VALUE_CONTENTS (val), VALUE_ADDRESS (val),
1608 stream, 0, 0, 2, Val_no_prettyprint);
1610 fputs_filtered ("???", stream);
1614 /* Don't print nameless args in situations where we don't know
1615 enough about the stack to find them. */
1620 if (highest_offset == -1)
1621 start = FRAME_ARGS_SKIP;
1623 start = highest_offset;
1625 print_frame_nameless_args (fi, start, num - args_printed,
1630 /* Print nameless args on STREAM.
1631 FI is the frameinfo for this frame, START is the offset
1632 of the first nameless arg, and NUM is the number of nameless args to
1633 print. FIRST is nonzero if this is the first argument (not just
1634 the first nameless arg). */
1636 print_frame_nameless_args (fi, start, num, first, stream)
1637 struct frame_info *fi;
1647 for (i = 0; i < num; i++)
1650 #ifdef NAMELESS_ARG_VALUE
1651 NAMELESS_ARG_VALUE (fi, start, &arg_value);
1653 argsaddr = FRAME_ARGS_ADDRESS (fi);
1657 arg_value = read_memory_integer (argsaddr + start, sizeof (int));
1661 fprintf_filtered (stream, ", ");
1663 #ifdef PRINT_NAMELESS_INTEGER
1664 PRINT_NAMELESS_INTEGER (stream, arg_value);
1666 #ifdef PRINT_TYPELESS_INTEGER
1667 PRINT_TYPELESS_INTEGER (stream, builtin_type_int, (LONGEST) arg_value);
1669 fprintf_filtered (stream, "%d", arg_value);
1670 #endif /* PRINT_TYPELESS_INTEGER */
1671 #endif /* PRINT_NAMELESS_INTEGER */
1673 start += sizeof (int);
1679 printf_command (arg, from_tty)
1684 register char *s = arg;
1688 char *current_substring;
1690 int allocated_args = 20;
1691 struct cleanup *old_cleanups;
1693 val_args = (value *) xmalloc (allocated_args * sizeof (value));
1694 old_cleanups = make_cleanup (free_current_contents, &val_args);
1697 error_no_arg ("format-control string and values to print");
1699 /* Skip white space before format string */
1700 while (*s == ' ' || *s == '\t') s++;
1702 /* A format string should follow, enveloped in double quotes */
1704 error ("Bad format string, missing '\"'.");
1706 /* Parse the format-control string and copy it into the string STRING,
1707 processing some kinds of escape sequence. */
1709 f = string = (char *) alloca (strlen (s) + 1);
1717 error ("Bad format string, non-terminated '\"'.");
1738 /* ??? TODO: handle other escape sequences */
1739 error ("Unrecognized \\ escape character in format string.");
1748 /* Skip over " and following space and comma. */
1751 while (*s == ' ' || *s == '\t') s++;
1753 if (*s != ',' && *s != 0)
1754 error ("Invalid argument syntax");
1757 while (*s == ' ' || *s == '\t') s++;
1759 /* Need extra space for the '\0's. Doubling the size is sufficient. */
1760 substrings = alloca (strlen (string) * 2);
1761 current_substring = substrings;
1764 /* Now scan the string for %-specs and see what kinds of args they want.
1765 argclass[I] classifies the %-specs so we can give vprintf_unfiltered something
1766 of the right size. */
1768 enum argclass {no_arg, int_arg, string_arg, double_arg, long_long_arg};
1769 enum argclass *argclass;
1770 enum argclass this_argclass;
1776 argclass = (enum argclass *) alloca (strlen (s) * sizeof *argclass);
1784 while (strchr ("0123456789.hlL-+ #", *f))
1786 if (*f == 'l' || *f == 'L')
1793 this_argclass = string_arg;
1799 this_argclass = double_arg;
1803 error ("`*' not supported for precision or width in printf");
1806 error ("Format specifier `n' not supported in printf");
1809 this_argclass = no_arg;
1814 this_argclass = long_long_arg;
1816 this_argclass = int_arg;
1820 if (this_argclass != no_arg)
1822 strncpy (current_substring, last_arg, f - last_arg);
1823 current_substring += f - last_arg;
1824 *current_substring++ = '\0';
1826 argclass[nargs_wanted++] = this_argclass;
1830 /* Now, parse all arguments and evaluate them.
1831 Store the VALUEs in VAL_ARGS. */
1836 if (nargs == allocated_args)
1837 val_args = (value *) xrealloc ((char *) val_args,
1838 (allocated_args *= 2)
1841 val_args[nargs] = parse_to_comma_and_eval (&s1);
1843 /* If format string wants a float, unchecked-convert the value to
1844 floating point of the same size */
1846 if (argclass[nargs] == double_arg)
1848 if (TYPE_LENGTH (VALUE_TYPE (val_args[nargs])) == sizeof (float))
1849 VALUE_TYPE (val_args[nargs]) = builtin_type_float;
1850 if (TYPE_LENGTH (VALUE_TYPE (val_args[nargs])) == sizeof (double))
1851 VALUE_TYPE (val_args[nargs]) = builtin_type_double;
1859 if (nargs != nargs_wanted)
1860 error ("Wrong number of arguments for specified format-string");
1862 /* FIXME: We should be using vprintf_filtered, but as long as it
1863 has an arbitrary limit that is unacceptable. Correct fix is
1864 for vprintf_filtered to scan down the format string so it knows
1865 how big a buffer it needs (perhaps by putting a vasprintf (see
1866 GNU C library) in libiberty).
1868 But for now, just force out any pending output, so at least the output
1869 appears in the correct order. */
1870 wrap_here ((char *)NULL);
1872 /* Now actually print them. */
1873 current_substring = substrings;
1874 for (i = 0; i < nargs; i++)
1876 switch (argclass[i])
1883 tem = value_as_pointer (val_args[i]);
1885 /* This is a %s argument. Find the length of the string. */
1890 read_memory (tem + j, &c, 1);
1895 /* Copy the string contents into a string inside GDB. */
1896 str = (char *) alloca (j + 1);
1897 read_memory (tem, str, j);
1900 /* Don't use printf_filtered because of arbitrary limit. */
1901 printf_unfiltered (current_substring, str);
1906 double val = value_as_double (val_args[i]);
1907 /* Don't use printf_filtered because of arbitrary limit. */
1908 printf_unfiltered (current_substring, val);
1912 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
1914 long long val = value_as_long (val_args[i]);
1915 /* Don't use printf_filtered because of arbitrary limit. */
1916 printf_unfiltered (current_substring, val);
1920 error ("long long not supported in printf");
1924 /* FIXME: there should be separate int_arg and long_arg. */
1925 long val = value_as_long (val_args[i]);
1926 /* Don't use printf_filtered because of arbitrary limit. */
1927 printf_unfiltered (current_substring, val);
1931 error ("internal error in printf_command");
1933 /* Skip to the next substring. */
1934 current_substring += strlen (current_substring) + 1;
1936 /* Print the portion of the format string after the last argument. */
1937 /* It would be OK to use printf_filtered here. */
1940 do_cleanups (old_cleanups);
1943 /* Dump a specified section of assembly code. With no command line
1944 arguments, this command will dump the assembly code for the
1945 function surrounding the pc value in the selected frame. With one
1946 argument, it will dump the assembly code surrounding that pc value.
1947 Two arguments are interpeted as bounds within which to dump
1952 disassemble_command (arg, from_tty)
1956 CORE_ADDR low, high;
1964 if (!selected_frame)
1965 error ("No frame selected.\n");
1967 pc = get_frame_pc (selected_frame);
1968 if (find_pc_partial_function (pc, &name, &low, &high) == 0)
1969 error ("No function contains program counter for selected frame.\n");
1971 else if (!(space_index = (char *) strchr (arg, ' ')))
1974 pc = parse_and_eval_address (arg);
1975 if (find_pc_partial_function (pc, &name, &low, &high) == 0)
1976 error ("No function contains specified address.\n");
1980 /* Two arguments. */
1981 *space_index = '\0';
1982 low = parse_and_eval_address (arg);
1983 high = parse_and_eval_address (space_index + 1);
1986 printf_filtered ("Dump of assembler code ");
1989 printf_filtered ("for function %s:\n", name);
1993 printf_filtered ("from ");
1994 print_address_numeric (low, gdb_stdout);
1995 printf_filtered (" to ");
1996 print_address_numeric (high, gdb_stdout);
1997 printf_filtered (":\n");
2000 /* Dump the specified range. */
2001 for (pc = low; pc < high; )
2004 print_address (pc, gdb_stdout);
2005 printf_filtered (":\t");
2006 /* We often wrap here if there are long symbolic names. */
2008 pc += print_insn (pc, gdb_stdout);
2009 printf_filtered ("\n");
2011 printf_filtered ("End of assembler dump.\n");
2012 gdb_flush (gdb_stdout);
2017 _initialize_printcmd ()
2019 current_display_number = -1;
2021 add_info ("address", address_info,
2022 "Describe where variable VAR is stored.");
2024 add_com ("x", class_vars, x_command,
2025 "Examine memory: x/FMT ADDRESS.\n\
2026 ADDRESS is an expression for the memory address to examine.\n\
2027 FMT is a repeat count followed by a format letter and a size letter.\n\
2028 Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),\n\
2029 t(binary), f(float), a(address), i(instruction), c(char) and s(string).\n\
2030 Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).\n\
2031 The specified number of objects of the specified size are printed\n\
2032 according to the format.\n\n\
2033 Defaults for format and size letters are those previously used.\n\
2034 Default count is 1. Default address is following last thing printed\n\
2035 with this command or \"print\".");
2037 add_com ("disassemble", class_vars, disassemble_command,
2038 "Disassemble a specified section of memory.\n\
2039 Default is the function surrounding the pc of the selected frame.\n\
2040 With a single argument, the function surrounding that address is dumped.\n\
2041 Two arguments are taken as a range of memory to dump.");
2044 add_com ("whereis", class_vars, whereis_command,
2045 "Print line number and file of definition of variable.");
2048 add_info ("display", display_info,
2049 "Expressions to display when program stops, with code numbers.");
2051 add_cmd ("undisplay", class_vars, undisplay_command,
2052 "Cancel some expressions to be displayed when program stops.\n\
2053 Arguments are the code numbers of the expressions to stop displaying.\n\
2054 No argument means cancel all automatic-display expressions.\n\
2055 \"delete display\" has the same effect as this command.\n\
2056 Do \"info display\" to see current list of code numbers.",
2059 add_com ("display", class_vars, display_command,
2060 "Print value of expression EXP each time the program stops.\n\
2061 /FMT may be used before EXP as in the \"print\" command.\n\
2062 /FMT \"i\" or \"s\" or including a size-letter is allowed,\n\
2063 as in the \"x\" command, and then EXP is used to get the address to examine\n\
2064 and examining is done as in the \"x\" command.\n\n\
2065 With no argument, display all currently requested auto-display expressions.\n\
2066 Use \"undisplay\" to cancel display requests previously made.");
2068 add_cmd ("display", class_vars, enable_display,
2069 "Enable some expressions to be displayed when program stops.\n\
2070 Arguments are the code numbers of the expressions to resume displaying.\n\
2071 No argument means enable all automatic-display expressions.\n\
2072 Do \"info display\" to see current list of code numbers.", &enablelist);
2074 add_cmd ("display", class_vars, disable_display_command,
2075 "Disable some expressions to be displayed when program stops.\n\
2076 Arguments are the code numbers of the expressions to stop displaying.\n\
2077 No argument means disable all automatic-display expressions.\n\
2078 Do \"info display\" to see current list of code numbers.", &disablelist);
2080 add_cmd ("display", class_vars, undisplay_command,
2081 "Cancel some expressions to be displayed when program stops.\n\
2082 Arguments are the code numbers of the expressions to stop displaying.\n\
2083 No argument means cancel all automatic-display expressions.\n\
2084 Do \"info display\" to see current list of code numbers.", &deletelist);
2086 add_com ("printf", class_vars, printf_command,
2087 "printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
2088 This is useful for formatted output in user-defined commands.");
2089 add_com ("output", class_vars, output_command,
2090 "Like \"print\" but don't put in value history and don't print newline.\n\
2091 This is useful in user-defined commands.");
2093 add_prefix_cmd ("set", class_vars, set_command,
2094 "Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2095 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2096 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2097 with $), a register (a few standard names starting with $), or an actual\n\
2098 variable in the program being debugged. EXP is any valid expression.\n\
2099 Use \"set variable\" for variables with names identical to set subcommands.\n\
2100 \nWith a subcommand, this command modifies parts of the gdb environment.\n\
2101 You can see these environment settings with the \"show\" command.",
2102 &setlist, "set ", 1, &cmdlist);
2104 /* "call" is the same as "set", but handy for dbx users to call fns. */
2105 add_com ("call", class_vars, call_command,
2106 "Call a function in the program.\n\
2107 The argument is the function name and arguments, in the notation of the\n\
2108 current working language. The result is printed and saved in the value\n\
2109 history, if it is not void.");
2111 add_cmd ("variable", class_vars, set_command,
2112 "Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2113 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2114 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2115 with $), a register (a few standard names starting with $), or an actual\n\
2116 variable in the program being debugged. EXP is any valid expression.\n\
2117 This may usually be abbreviated to simply \"set\".",
2120 add_com ("print", class_vars, print_command,
2121 concat ("Print value of expression EXP.\n\
2122 Variables accessible are those of the lexical environment of the selected\n\
2123 stack frame, plus all those whose scope is global or an entire file.\n\
2125 $NUM gets previous value number NUM. $ and $$ are the last two values.\n\
2126 $$NUM refers to NUM'th value back from the last one.\n\
2127 Names starting with $ refer to registers (with the values they would have\n\
2128 if the program were to return to the stack frame now selected, restoring\n\
2129 all registers saved by frames farther in) or else to debugger\n\
2130 \"convenience\" variables (any such name not a known register).\n\
2131 Use assignment expressions to give values to convenience variables.\n",
2133 {TYPE}ADREXP refers to a datum of data type TYPE, located at address ADREXP.\n\
2134 @ is a binary operator for treating consecutive data objects\n\
2135 anywhere in memory as an array. FOO@NUM gives an array whose first\n\
2136 element is FOO, whose second element is stored in the space following\n\
2137 where FOO is stored, etc. FOO must be an expression whose value\n\
2138 resides in memory.\n",
2140 EXP may be preceded with /FMT, where FMT is a format letter\n\
2141 but no count or size letter (see \"x\" command).", NULL));
2142 add_com_alias ("p", "print", class_vars, 1);
2144 add_com ("inspect", class_vars, inspect_command,
2145 "Same as \"print\" command, except that if you are running in the epoch\n\
2146 environment, the value is printed in its own window.");
2149 add_set_cmd ("max-symbolic-offset", no_class, var_uinteger,
2150 (char *)&max_symbolic_offset,
2151 "Set the largest offset that will be printed in <symbol+1234> form.",
2155 add_set_cmd ("symbol-filename", no_class, var_boolean,
2156 (char *)&print_symbol_filename,
2157 "Set printing of source filename and line number with <symbol>.",
2162 add_set_cmd ("fast-symbolic-addr", no_class, var_boolean,
2163 (char *)&fast_symbolic_addr,
2164 "Set fast printing of symbolic addresses (using minimal symbols).",
2168 examine_b_type = init_type (TYPE_CODE_INT, 1, 0, NULL, NULL);
2169 examine_h_type = init_type (TYPE_CODE_INT, 2, 0, NULL, NULL);
2170 examine_w_type = init_type (TYPE_CODE_INT, 4, 0, NULL, NULL);
2171 examine_g_type = init_type (TYPE_CODE_INT, 8, 0, NULL, NULL);