1 /* Print values for GNU debugger GDB.
2 Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1993, 1994, 1995
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"
38 extern int asm_demangle; /* Whether to demangle syms in asm printouts */
39 extern int addressprint; /* Whether to print hex addresses in HLL " */
48 /* Last specified output format. */
50 static char last_format = 'x';
52 /* Last specified examination size. 'b', 'h', 'w' or `q'. */
54 static char last_size = 'w';
56 /* Default address to examine next. */
58 static CORE_ADDR next_address;
60 /* Last address examined. */
62 static CORE_ADDR last_examine_address;
64 /* Contents of last address examined.
65 This is not valid past the end of the `x' command! */
67 static value_ptr last_examine_value;
69 /* Largest offset between a symbolic value and an address, that will be
70 printed as `0x1234 <symbol+offset>'. */
72 static unsigned int max_symbolic_offset = UINT_MAX;
74 /* Append the source filename and linenumber of the symbol when
75 printing a symbolic value as `<symbol at filename:linenum>' if set. */
76 static int print_symbol_filename = 0;
78 /* Number of auto-display expression currently being displayed.
79 So that we can disable it if we get an error or a signal within it.
80 -1 when not doing one. */
82 int current_display_number;
84 /* Flag to low-level print routines that this value is being printed
85 in an epoch window. We'd like to pass this as a parameter, but
86 every routine would need to take it. Perhaps we can encapsulate
87 this in the I/O stream once we have GNU stdio. */
93 /* Chain link to next auto-display item. */
95 /* Expression to be evaluated and displayed. */
96 struct expression *exp;
97 /* Item number of this auto-display item. */
99 /* Display format specified. */
100 struct format_data format;
101 /* Innermost block required by this expression when evaluated */
103 /* Status of this display (enabled or disabled) */
107 /* Chain of expressions whose values should be displayed
108 automatically each time the program stops. */
110 static struct display *display_chain;
112 static int display_number;
114 /* Pointer to the target-dependent disassembly function. */
116 int (*tm_print_insn) PARAMS ((bfd_vma, disassemble_info *));
118 /* Prototypes for local functions. */
120 static void delete_display PARAMS ((int));
122 static void enable_display PARAMS ((char *, int));
124 static void disable_display_command PARAMS ((char *, int));
126 static void disassemble_command PARAMS ((char *, int));
128 static void printf_command PARAMS ((char *, int));
130 static void print_frame_nameless_args PARAMS ((struct frame_info *, long,
131 int, int, GDB_FILE *));
133 static void display_info PARAMS ((char *, int));
135 static void do_one_display PARAMS ((struct display *));
137 static void undisplay_command PARAMS ((char *, int));
139 static void free_display PARAMS ((struct display *));
141 static void display_command PARAMS ((char *, int));
143 static void x_command PARAMS ((char *, int));
145 static void address_info PARAMS ((char *, int));
147 static void set_command PARAMS ((char *, int));
149 static void output_command PARAMS ((char *, int));
151 static void call_command PARAMS ((char *, int));
153 static void inspect_command PARAMS ((char *, int));
155 static void print_command PARAMS ((char *, int));
157 static void print_command_1 PARAMS ((char *, int, int));
159 static void validate_format PARAMS ((struct format_data, char *));
161 static void do_examine PARAMS ((struct format_data, CORE_ADDR));
163 static void print_formatted PARAMS ((value_ptr, int, int));
165 static struct format_data decode_format PARAMS ((char **, int, int));
167 static int print_insn PARAMS ((CORE_ADDR, GDB_FILE *));
170 /* Decode a format specification. *STRING_PTR should point to it.
171 OFORMAT and OSIZE are used as defaults for the format and size
172 if none are given in the format specification.
173 If OSIZE is zero, then the size field of the returned value
174 should be set only if a size is explicitly specified by the
176 The structure returned describes all the data
177 found in the specification. In addition, *STRING_PTR is advanced
178 past the specification and past all whitespace following it. */
180 static struct format_data
181 decode_format (string_ptr, oformat, osize)
186 struct format_data val;
187 register char *p = *string_ptr;
193 if (*p >= '0' && *p <= '9')
194 val.count = atoi (p);
195 while (*p >= '0' && *p <= '9') p++;
197 /* Now process size or format letters that follow. */
201 if (*p == 'b' || *p == 'h' || *p == 'w' || *p == 'g')
203 else if (*p >= 'a' && *p <= 'z')
209 while (*p == ' ' || *p == '\t') p++;
212 /* Set defaults for format and size if not specified. */
213 if (val.format == '?')
217 /* Neither has been specified. */
218 val.format = oformat;
222 /* If a size is specified, any format makes a reasonable
223 default except 'i'. */
224 val.format = oformat == 'i' ? 'x' : oformat;
226 else if (val.size == '?')
231 /* Pick the appropriate size for an address. */
232 if (TARGET_PTR_BIT == 64)
233 val.size = osize ? 'g' : osize;
234 else if (TARGET_PTR_BIT == 32)
235 val.size = osize ? 'w' : osize;
236 else if (TARGET_PTR_BIT == 16)
237 val.size = osize ? 'h' : osize;
239 /* Bad value for TARGET_PTR_BIT */
243 /* Floating point has to be word or giantword. */
244 if (osize == 'w' || osize == 'g')
247 /* Default it to giantword if the last used size is not
249 val.size = osize ? 'g' : osize;
252 /* Characters default to one byte. */
253 val.size = osize ? 'b' : osize;
256 /* The default is the size most recently specified. */
263 /* Print value VAL on gdb_stdout according to FORMAT, a letter or 0.
264 Do not end with a newline.
265 0 means print VAL according to its own type.
266 SIZE is the letter for the size of datum being printed.
267 This is used to pad hex numbers so they line up. */
270 print_formatted (val, format, size)
271 register value_ptr val;
275 int len = TYPE_LENGTH (VALUE_TYPE (val));
277 if (VALUE_LVAL (val) == lval_memory)
278 next_address = VALUE_ADDRESS (val) + len;
283 next_address = VALUE_ADDRESS (val)
284 + val_print_string (VALUE_ADDRESS (val), 0, gdb_stdout);
288 /* The old comment says
289 "Force output out, print_insn not using _filtered".
290 I'm not completely sure what that means, I suspect most print_insn
291 now do use _filtered, so I guess it's obsolete. */
292 /* We often wrap here if there are long symbolic names. */
294 next_address = VALUE_ADDRESS (val)
295 + print_insn (VALUE_ADDRESS (val), gdb_stdout);
300 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_ARRAY
301 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_STRING
302 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_STRUCT
303 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_UNION
304 || VALUE_REPEATED (val))
305 value_print (val, gdb_stdout, format, Val_pretty_default);
307 print_scalar_formatted (VALUE_CONTENTS (val), VALUE_TYPE (val),
308 format, size, gdb_stdout);
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.
316 This is how the elements of an array or structure are printed
320 print_scalar_formatted (valaddr, type, format, size, stream)
328 int len = TYPE_LENGTH (type);
330 if (len > sizeof (LONGEST)
338 /* We can't print it normally, but we can print it in hex.
339 Printing it in the wrong radix is more useful than saying
340 "use /x, you dummy". */
341 /* FIXME: we could also do octal or binary if that was the
343 /* FIXME: we should be using the size field to give us a minimum
344 field width to print. */
345 val_print_type_code_int (type, valaddr, stream);
350 val_long = unpack_long (type, valaddr);
352 /* If we are printing it as unsigned, truncate it in case it is actually
353 a negative signed value (e.g. "print/u (short)-1" should print 65535
354 (if shorts are 16 bits) instead of 4294967295). */
357 if (len < sizeof (LONGEST))
358 val_long &= ((LONGEST) 1 << HOST_CHAR_BIT * len) - 1;
366 /* no size specified, like in print. Print varying # of digits. */
367 print_longest (stream, 'x', 1, val_long);
376 print_longest (stream, size, 1, val_long);
379 error ("Undefined output size \"%c\".", size);
384 print_longest (stream, 'd', 1, val_long);
388 print_longest (stream, 'u', 0, val_long);
393 print_longest (stream, 'o', 1, val_long);
395 fprintf_filtered (stream, "0");
399 print_address (unpack_pointer (type, valaddr), stream);
403 value_print (value_from_longest (builtin_type_char, val_long), stream, 0,
408 if (len == sizeof (float))
409 type = builtin_type_float;
410 else if (len == sizeof (double))
411 type = builtin_type_double;
412 print_floating (valaddr, type, stream);
419 /* Binary; 't' stands for "two". */
421 char bits[8*(sizeof val_long) + 1];
426 width = 8*(sizeof val_long);
443 error ("Undefined output size \"%c\".", size);
449 bits[width] = (val_long & 1) ? '1' : '0';
454 while (*cp && *cp == '0')
459 fprintf_filtered (stream, local_binary_format_prefix());
460 fprintf_filtered (stream, cp);
461 fprintf_filtered (stream, local_binary_format_suffix());
466 error ("Undefined output format \"%c\".", format);
470 /* Specify default address for `x' command.
471 `info lines' uses this. */
474 set_next_address (addr)
479 /* Make address available to the user as $_. */
480 set_internalvar (lookup_internalvar ("_"),
481 value_from_longest (lookup_pointer_type (builtin_type_void),
485 /* Optionally print address ADDR symbolically as <SYMBOL+OFFSET> on STREAM,
486 after LEADIN. Print nothing if no symbolic name is found nearby.
487 Optionally also print source file and line number, if available.
488 DO_DEMANGLE controls whether to print a symbol in its native "raw" form,
489 or to interpret it as a possible C++ name and convert it back to source
490 form. However note that DO_DEMANGLE can be overridden by the specific
491 settings of the demangle and asm_demangle variables. */
494 print_address_symbolic (addr, stream, do_demangle, leadin)
500 struct minimal_symbol *msymbol;
501 struct symbol *symbol;
502 struct symtab *symtab = 0;
503 CORE_ADDR name_location = 0;
506 /* First try to find the address in the symbol table, then
507 in the minsyms. Take the closest one. */
509 /* This is defective in the sense that it only finds text symbols. So
510 really this is kind of pointless--we should make sure that the
511 minimal symbols have everything we need (by changing that we could
512 save some memory, but for many debug format--ELF/DWARF or
513 anything/stabs--it would be inconvenient to eliminate those minimal
515 symbol = find_pc_function (addr);
517 name_location = BLOCK_START (SYMBOL_BLOCK_VALUE (symbol));
522 name = SYMBOL_SOURCE_NAME (symbol);
524 name = SYMBOL_LINKAGE_NAME (symbol);
527 msymbol = lookup_minimal_symbol_by_pc (addr);
530 if (SYMBOL_VALUE_ADDRESS (msymbol) > name_location || symbol == NULL)
532 /* The msymbol is closer to the address than the symbol;
533 use the msymbol instead. */
536 name_location = SYMBOL_VALUE_ADDRESS (msymbol);
538 name = SYMBOL_SOURCE_NAME (msymbol);
540 name = SYMBOL_LINKAGE_NAME (msymbol);
543 if (symbol == NULL && msymbol == NULL)
546 /* If the nearest symbol is too far away, don't print anything symbolic. */
548 /* For when CORE_ADDR is larger than unsigned int, we do math in
549 CORE_ADDR. But when we detect unsigned wraparound in the
550 CORE_ADDR math, we ignore this test and print the offset,
551 because addr+max_symbolic_offset has wrapped through the end
552 of the address space back to the beginning, giving bogus comparison. */
553 if (addr > name_location + max_symbolic_offset
554 && name_location + max_symbolic_offset > name_location)
557 fputs_filtered (leadin, stream);
558 fputs_filtered ("<", stream);
559 fputs_filtered (name, stream);
560 if (addr != name_location)
561 fprintf_filtered (stream, "+%u", (unsigned int)(addr - name_location));
563 /* Append source filename and line number if desired. Give specific
564 line # of this addr, if we have it; else line # of the nearest symbol. */
565 if (print_symbol_filename)
567 struct symtab_and_line sal;
569 sal = find_pc_line (addr, 0);
571 fprintf_filtered (stream, " at %s:%d", sal.symtab->filename, sal.line);
572 else if (symtab && symbol && symbol->line)
573 fprintf_filtered (stream, " at %s:%d", symtab->filename, symbol->line);
575 fprintf_filtered (stream, " in %s", symtab->filename);
577 fputs_filtered (">", stream);
580 /* Print address ADDR on STREAM. USE_LOCAL means the same thing as for
583 print_address_numeric (addr, use_local, stream)
588 /* This assumes a CORE_ADDR can fit in a LONGEST. Probably a safe
589 assumption. We pass use_local but I'm not completely sure whether
590 that is correct. When (if ever) should we *not* use_local? */
591 print_longest (stream, 'x', 1, (unsigned LONGEST) addr);
594 /* Print address ADDR symbolically on STREAM.
595 First print it as a number. Then perhaps print
596 <SYMBOL + OFFSET> after the number. */
599 print_address (addr, stream)
603 print_address_numeric (addr, 1, stream);
604 print_address_symbolic (addr, stream, asm_demangle, " ");
607 /* Print address ADDR symbolically on STREAM. Parameter DEMANGLE
608 controls whether to print the symbolic name "raw" or demangled.
609 Global setting "addressprint" controls whether to print hex address
613 print_address_demangle (addr, stream, do_demangle)
620 fprintf_filtered (stream, "0");
622 else if (addressprint)
624 print_address_numeric (addr, 1, stream);
625 print_address_symbolic (addr, stream, do_demangle, " ");
629 print_address_symbolic (addr, stream, do_demangle, "");
634 /* These are the types that $__ will get after an examine command of one
637 static struct type *examine_b_type;
638 static struct type *examine_h_type;
639 static struct type *examine_w_type;
640 static struct type *examine_g_type;
642 /* Examine data at address ADDR in format FMT.
643 Fetch it from memory and print on gdb_stdout. */
646 do_examine (fmt, addr)
647 struct format_data fmt;
650 register char format = 0;
652 register int count = 1;
653 struct type *val_type = NULL;
655 register int maxelts;
662 /* String or instruction format implies fetch single bytes
663 regardless of the specified size. */
664 if (format == 's' || format == 'i')
668 val_type = examine_b_type;
669 else if (size == 'h')
670 val_type = examine_h_type;
671 else if (size == 'w')
672 val_type = examine_w_type;
673 else if (size == 'g')
674 val_type = examine_g_type;
681 if (format == 's' || format == 'i')
684 /* Print as many objects as specified in COUNT, at most maxelts per line,
685 with the address of the next one at the start of each line. */
689 print_address (next_address, gdb_stdout);
690 printf_filtered (":");
695 printf_filtered ("\t");
696 /* Note that print_formatted sets next_address for the next
698 last_examine_address = next_address;
699 last_examine_value = value_at (val_type, next_address);
700 print_formatted (last_examine_value, format, size);
702 printf_filtered ("\n");
703 gdb_flush (gdb_stdout);
708 validate_format (fmt, cmdname)
709 struct format_data fmt;
713 error ("Size letters are meaningless in \"%s\" command.", cmdname);
715 error ("Item count other than 1 is meaningless in \"%s\" command.",
717 if (fmt.format == 'i' || fmt.format == 's')
718 error ("Format letter \"%c\" is meaningless in \"%s\" command.",
719 fmt.format, cmdname);
722 /* Evaluate string EXP as an expression in the current language and
723 print the resulting value. EXP may contain a format specifier as the
724 first argument ("/x myvar" for example, to print myvar in hex).
728 print_command_1 (exp, inspect, voidprint)
733 struct expression *expr;
734 register struct cleanup *old_chain = 0;
735 register char format = 0;
736 register value_ptr val;
737 struct format_data fmt;
740 /* Pass inspect flag to the rest of the print routines in a global (sigh). */
741 inspect_it = inspect;
743 if (exp && *exp == '/')
746 fmt = decode_format (&exp, last_format, 0);
747 validate_format (fmt, "print");
748 last_format = format = fmt.format;
759 extern int objectprint;
761 expr = parse_expression (exp);
762 old_chain = make_cleanup (free_current_contents, &expr);
764 val = evaluate_expression (expr);
766 /* C++: figure out what type we actually want to print it as. */
767 type = VALUE_TYPE (val);
770 && ( TYPE_CODE (type) == TYPE_CODE_PTR
771 || TYPE_CODE (type) == TYPE_CODE_REF)
772 && ( TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_STRUCT
773 || TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_UNION))
777 v = value_from_vtable_info (val, TYPE_TARGET_TYPE (type));
781 type = VALUE_TYPE (val);
786 val = access_value_history (0);
788 if (voidprint || (val && VALUE_TYPE (val) &&
789 TYPE_CODE (VALUE_TYPE (val)) != TYPE_CODE_VOID))
791 int histindex = record_latest_value (val);
794 annotate_value_history_begin (histindex, VALUE_TYPE (val));
796 annotate_value_begin (VALUE_TYPE (val));
799 printf_unfiltered ("\031(gdb-makebuffer \"%s\" %d '(\"", exp, histindex);
801 if (histindex >= 0) printf_filtered ("$%d = ", histindex);
804 annotate_value_history_value ();
806 print_formatted (val, format, fmt.size);
807 printf_filtered ("\n");
810 annotate_value_history_end ();
812 annotate_value_end ();
815 printf_unfiltered("\") )\030");
819 do_cleanups (old_chain);
820 inspect_it = 0; /* Reset print routines to normal */
825 print_command (exp, from_tty)
829 print_command_1 (exp, 0, 1);
832 /* Same as print, except in epoch, it gets its own window */
835 inspect_command (exp, from_tty)
839 extern int epoch_interface;
841 print_command_1 (exp, epoch_interface, 1);
844 /* Same as print, except it doesn't print void results. */
847 call_command (exp, from_tty)
851 print_command_1 (exp, 0, 0);
856 output_command (exp, from_tty)
860 struct expression *expr;
861 register struct cleanup *old_chain;
862 register char format = 0;
863 register value_ptr val;
864 struct format_data fmt;
866 if (exp && *exp == '/')
869 fmt = decode_format (&exp, 0, 0);
870 validate_format (fmt, "output");
874 expr = parse_expression (exp);
875 old_chain = make_cleanup (free_current_contents, &expr);
877 val = evaluate_expression (expr);
879 annotate_value_begin (VALUE_TYPE (val));
881 print_formatted (val, format, fmt.size);
883 annotate_value_end ();
885 do_cleanups (old_chain);
890 set_command (exp, from_tty)
894 struct expression *expr = parse_expression (exp);
895 register struct cleanup *old_chain
896 = make_cleanup (free_current_contents, &expr);
897 evaluate_expression (expr);
898 do_cleanups (old_chain);
903 address_info (exp, from_tty)
907 register struct symbol *sym;
908 register struct minimal_symbol *msymbol;
910 register long basereg;
911 int is_a_field_of_this; /* C++: lookup_symbol sets this to nonzero
912 if exp is a field of `this'. */
915 error ("Argument required.");
917 sym = lookup_symbol (exp, get_selected_block (), VAR_NAMESPACE,
918 &is_a_field_of_this, (struct symtab **)NULL);
921 if (is_a_field_of_this)
923 printf_filtered ("Symbol \"");
924 fprintf_symbol_filtered (gdb_stdout, exp,
925 current_language->la_language, DMGL_ANSI);
926 printf_filtered ("\" is a field of the local class variable `this'\n");
930 msymbol = lookup_minimal_symbol (exp, (struct objfile *) NULL);
934 printf_filtered ("Symbol \"");
935 fprintf_symbol_filtered (gdb_stdout, exp,
936 current_language->la_language, DMGL_ANSI);
937 printf_filtered ("\" is at ");
938 print_address_numeric (SYMBOL_VALUE_ADDRESS (msymbol), 1,
940 printf_filtered (" in a file compiled without debugging.\n");
943 error ("No symbol \"%s\" in current context.", exp);
947 printf_filtered ("Symbol \"");
948 fprintf_symbol_filtered (gdb_stdout, SYMBOL_NAME (sym),
949 current_language->la_language, DMGL_ANSI);
950 printf_filtered ("\" is ", SYMBOL_NAME (sym));
951 val = SYMBOL_VALUE (sym);
952 basereg = SYMBOL_BASEREG (sym);
954 switch (SYMBOL_CLASS (sym))
957 case LOC_CONST_BYTES:
958 printf_filtered ("constant");
962 printf_filtered ("a label at address ");
963 print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), 1, gdb_stdout);
967 printf_filtered ("a variable in register %s", reg_names[val]);
971 printf_filtered ("static storage at address ");
972 print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), 1, gdb_stdout);
976 printf_filtered ("an argument in register %s", reg_names[val]);
979 case LOC_REGPARM_ADDR:
980 printf_filtered ("address of an argument in register %s", reg_names[val]);
984 printf_filtered ("an argument at offset %ld", val);
988 printf_filtered ("an argument at frame offset %ld", val);
992 printf_filtered ("a local variable at frame offset %ld", val);
996 printf_filtered ("a reference argument at offset %ld", val);
1000 printf_filtered ("a variable at offset %ld from register %s",
1001 val, reg_names[basereg]);
1004 case LOC_BASEREG_ARG:
1005 printf_filtered ("an argument at offset %ld from register %s",
1006 val, reg_names[basereg]);
1010 printf_filtered ("a typedef");
1014 printf_filtered ("a function at address ");
1015 print_address_numeric (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)), 1,
1019 case LOC_OPTIMIZED_OUT:
1020 printf_filtered ("optimized out");
1024 printf_filtered ("of unknown (botched) type");
1027 printf_filtered (".\n");
1031 x_command (exp, from_tty)
1035 struct expression *expr;
1036 struct format_data fmt;
1037 struct cleanup *old_chain;
1040 fmt.format = last_format;
1041 fmt.size = last_size;
1044 if (exp && *exp == '/')
1047 fmt = decode_format (&exp, last_format, last_size);
1050 /* If we have an expression, evaluate it and use it as the address. */
1052 if (exp != 0 && *exp != 0)
1054 expr = parse_expression (exp);
1055 /* Cause expression not to be there any more
1056 if this command is repeated with Newline.
1057 But don't clobber a user-defined command's definition. */
1060 old_chain = make_cleanup (free_current_contents, &expr);
1061 val = evaluate_expression (expr);
1062 if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_REF)
1063 val = value_ind (val);
1064 /* In rvalue contexts, such as this, functions are coerced into
1065 pointers to functions. This makes "x/i main" work. */
1066 if (/* last_format == 'i'
1067 && */ TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FUNC
1068 && VALUE_LVAL (val) == lval_memory)
1069 next_address = VALUE_ADDRESS (val);
1071 next_address = value_as_pointer (val);
1072 do_cleanups (old_chain);
1075 do_examine (fmt, next_address);
1077 /* If the examine succeeds, we remember its size and format for next time. */
1078 last_size = fmt.size;
1079 last_format = fmt.format;
1081 /* Set a couple of internal variables if appropriate. */
1082 if (last_examine_value)
1084 /* Make last address examined available to the user as $_. Use
1085 the correct pointer type. */
1086 set_internalvar (lookup_internalvar ("_"),
1087 value_from_longest (
1088 lookup_pointer_type (VALUE_TYPE (last_examine_value)),
1089 (LONGEST) last_examine_address));
1091 /* Make contents of last address examined available to the user as $__.*/
1092 set_internalvar (lookup_internalvar ("__"), last_examine_value);
1097 /* Add an expression to the auto-display chain.
1098 Specify the expression. */
1101 display_command (exp, from_tty)
1105 struct format_data fmt;
1106 register struct expression *expr;
1107 register struct display *new;
1118 fmt = decode_format (&exp, 0, 0);
1119 if (fmt.size && fmt.format == 0)
1121 if (fmt.format == 'i' || fmt.format == 's')
1131 innermost_block = 0;
1132 expr = parse_expression (exp);
1134 new = (struct display *) xmalloc (sizeof (struct display));
1137 new->block = innermost_block;
1138 new->next = display_chain;
1139 new->number = ++display_number;
1141 new->status = enabled;
1142 display_chain = new;
1144 if (from_tty && target_has_execution)
1145 do_one_display (new);
1158 /* Clear out the display_chain.
1159 Done when new symtabs are loaded, since this invalidates
1160 the types stored in many expressions. */
1165 register struct display *d;
1167 while ((d = display_chain) != NULL)
1170 display_chain = d->next;
1175 /* Delete the auto-display number NUM. */
1178 delete_display (num)
1181 register struct display *d1, *d;
1184 error ("No display number %d.", num);
1186 if (display_chain->number == num)
1189 display_chain = d1->next;
1193 for (d = display_chain; ; d = d->next)
1196 error ("No display number %d.", num);
1197 if (d->next->number == num)
1207 /* Delete some values from the auto-display chain.
1208 Specify the element numbers. */
1211 undisplay_command (args, from_tty)
1215 register char *p = args;
1221 if (query ("Delete all auto-display expressions? "))
1230 while (*p1 >= '0' && *p1 <= '9') p1++;
1231 if (*p1 && *p1 != ' ' && *p1 != '\t')
1232 error ("Arguments must be display numbers.");
1236 delete_display (num);
1239 while (*p == ' ' || *p == '\t') p++;
1244 /* Display a single auto-display.
1245 Do nothing if the display cannot be printed in the current context,
1246 or if the display is disabled. */
1252 int within_current_scope;
1254 if (d->status == disabled)
1258 within_current_scope = contained_in (get_selected_block (), d->block);
1260 within_current_scope = 1;
1261 if (!within_current_scope)
1264 current_display_number = d->number;
1266 annotate_display_begin ();
1267 printf_filtered ("%d", d->number);
1268 annotate_display_number_end ();
1269 printf_filtered (": ");
1274 annotate_display_format ();
1276 printf_filtered ("x/");
1277 if (d->format.count != 1)
1278 printf_filtered ("%d", d->format.count);
1279 printf_filtered ("%c", d->format.format);
1280 if (d->format.format != 'i' && d->format.format != 's')
1281 printf_filtered ("%c", d->format.size);
1282 printf_filtered (" ");
1284 annotate_display_expression ();
1286 print_expression (d->exp, gdb_stdout);
1287 annotate_display_expression_end ();
1289 if (d->format.count != 1)
1290 printf_filtered ("\n");
1292 printf_filtered (" ");
1294 addr = value_as_pointer (evaluate_expression (d->exp));
1295 if (d->format.format == 'i')
1296 addr = ADDR_BITS_REMOVE (addr);
1298 annotate_display_value ();
1300 do_examine (d->format, addr);
1304 annotate_display_format ();
1306 if (d->format.format)
1307 printf_filtered ("/%c ", d->format.format);
1309 annotate_display_expression ();
1311 print_expression (d->exp, gdb_stdout);
1312 annotate_display_expression_end ();
1314 printf_filtered (" = ");
1316 annotate_display_expression ();
1318 print_formatted (evaluate_expression (d->exp),
1319 d->format.format, d->format.size);
1320 printf_filtered ("\n");
1323 annotate_display_end ();
1325 gdb_flush (gdb_stdout);
1326 current_display_number = -1;
1329 /* Display all of the values on the auto-display chain which can be
1330 evaluated in the current scope. */
1335 register struct display *d;
1337 for (d = display_chain; d; d = d->next)
1341 /* Delete the auto-display which we were in the process of displaying.
1342 This is done when there is an error or a signal. */
1345 disable_display (num)
1348 register struct display *d;
1350 for (d = display_chain; d; d = d->next)
1351 if (d->number == num)
1353 d->status = disabled;
1356 printf_unfiltered ("No display number %d.\n", num);
1360 disable_current_display ()
1362 if (current_display_number >= 0)
1364 disable_display (current_display_number);
1365 fprintf_unfiltered (gdb_stderr, "Disabling display %d to avoid infinite recursion.\n",
1366 current_display_number);
1368 current_display_number = -1;
1372 display_info (ignore, from_tty)
1376 register struct display *d;
1379 printf_unfiltered ("There are no auto-display expressions now.\n");
1381 printf_filtered ("Auto-display expressions now in effect:\n\
1382 Num Enb Expression\n");
1384 for (d = display_chain; d; d = d->next)
1386 printf_filtered ("%d: %c ", d->number, "ny"[(int)d->status]);
1388 printf_filtered ("/%d%c%c ", d->format.count, d->format.size,
1390 else if (d->format.format)
1391 printf_filtered ("/%c ", d->format.format);
1392 print_expression (d->exp, gdb_stdout);
1393 if (d->block && !contained_in (get_selected_block (), d->block))
1394 printf_filtered (" (cannot be evaluated in the current context)");
1395 printf_filtered ("\n");
1396 gdb_flush (gdb_stdout);
1401 enable_display (args, from_tty)
1405 register char *p = args;
1408 register struct display *d;
1412 for (d = display_chain; d; d = d->next)
1413 d->status = enabled;
1419 while (*p1 >= '0' && *p1 <= '9')
1421 if (*p1 && *p1 != ' ' && *p1 != '\t')
1422 error ("Arguments must be display numbers.");
1426 for (d = display_chain; d; d = d->next)
1427 if (d->number == num)
1429 d->status = enabled;
1432 printf_unfiltered ("No display number %d.\n", num);
1435 while (*p == ' ' || *p == '\t')
1442 disable_display_command (args, from_tty)
1446 register char *p = args;
1448 register struct display *d;
1452 for (d = display_chain; d; d = d->next)
1453 d->status = disabled;
1459 while (*p1 >= '0' && *p1 <= '9')
1461 if (*p1 && *p1 != ' ' && *p1 != '\t')
1462 error ("Arguments must be display numbers.");
1464 disable_display (atoi (p));
1467 while (*p == ' ' || *p == '\t')
1473 /* Print the value in stack frame FRAME of a variable
1474 specified by a struct symbol. */
1477 print_variable_value (var, frame, stream)
1479 struct frame_info *frame;
1482 value_ptr val = read_var_value (var, frame);
1484 value_print (val, stream, 0, Val_pretty_default);
1487 /* Print the arguments of a stack frame, given the function FUNC
1488 running in that frame (as a symbol), the info on the frame,
1489 and the number of args according to the stack frame (or -1 if unknown). */
1491 /* References here and elsewhere to "number of args according to the
1492 stack frame" appear in all cases to refer to "number of ints of args
1493 according to the stack frame". At least for VAX, i386, isi. */
1496 print_frame_args (func, fi, num, stream)
1497 struct symbol *func;
1498 struct frame_info *fi;
1502 struct block *b = NULL;
1506 register struct symbol *sym;
1507 register value_ptr val;
1508 /* Offset of next stack argument beyond the one we have seen that is
1509 at the highest offset.
1510 -1 if we haven't come to a stack argument yet. */
1511 long highest_offset = -1;
1513 /* Number of ints of arguments that we have printed so far. */
1514 int args_printed = 0;
1518 b = SYMBOL_BLOCK_VALUE (func);
1519 nsyms = BLOCK_NSYMS (b);
1522 for (i = 0; i < nsyms; i++)
1525 sym = BLOCK_SYM (b, i);
1527 /* Keep track of the highest stack argument offset seen, and
1528 skip over any kinds of symbols we don't care about. */
1530 switch (SYMBOL_CLASS (sym)) {
1534 long current_offset = SYMBOL_VALUE (sym);
1536 arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
1538 /* Compute address of next argument by adding the size of
1539 this argument and rounding to an int boundary. */
1541 = ((current_offset + arg_size + sizeof (int) - 1)
1542 & ~(sizeof (int) - 1));
1544 /* If this is the highest offset seen yet, set highest_offset. */
1545 if (highest_offset == -1
1546 || (current_offset > highest_offset))
1547 highest_offset = current_offset;
1549 /* Add the number of ints we're about to print to args_printed. */
1550 args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
1553 /* We care about types of symbols, but don't need to keep track of
1554 stack offsets in them. */
1556 case LOC_REGPARM_ADDR:
1558 case LOC_BASEREG_ARG:
1561 /* Other types of symbols we just skip over. */
1566 /* We have to look up the symbol because arguments can have
1567 two entries (one a parameter, one a local) and the one we
1568 want is the local, which lookup_symbol will find for us.
1569 This includes gcc1 (not gcc2) on the sparc when passing a
1570 small structure and gcc2 when the argument type is float
1571 and it is passed as a double and converted to float by
1572 the prologue (in the latter case the type of the LOC_ARG
1573 symbol is double and the type of the LOC_LOCAL symbol is
1575 /* But if the parameter name is null, don't try it.
1576 Null parameter names occur on the RS/6000, for traceback tables.
1577 FIXME, should we even print them? */
1579 if (*SYMBOL_NAME (sym))
1581 struct symbol *nsym;
1582 nsym = lookup_symbol
1584 b, VAR_NAMESPACE, (int *)NULL, (struct symtab **)NULL);
1585 if (SYMBOL_CLASS (nsym) == LOC_REGISTER)
1587 /* There is a LOC_ARG/LOC_REGISTER pair. This means that
1588 it was passed on the stack and loaded into a register,
1589 or passed in a register and stored in a stack slot.
1590 GDB 3.x used the LOC_ARG; GDB 4.0-4.11 used the LOC_REGISTER.
1592 Reasons for using the LOC_ARG:
1593 (1) because find_saved_registers may be slow for remote
1595 (2) because registers are often re-used and stack slots
1596 rarely (never?) are. Therefore using the stack slot is
1597 much less likely to print garbage.
1599 Reasons why we might want to use the LOC_REGISTER:
1600 (1) So that the backtrace prints the same value as
1601 "print foo". I see no compelling reason why this needs
1602 to be the case; having the backtrace print the value which
1603 was passed in, and "print foo" print the value as modified
1604 within the called function, makes perfect sense to me.
1606 Additional note: It might be nice if "info args" displayed
1608 One more note: There is a case with sparc structure passing
1609 where we need to use the LOC_REGISTER, but this is dealt with
1610 by creating a single LOC_REGPARM in symbol reading. */
1612 /* Leave sym (the LOC_ARG) alone. */
1619 /* Print the current arg. */
1621 fprintf_filtered (stream, ", ");
1624 annotate_arg_begin ();
1626 fprintf_symbol_filtered (stream, SYMBOL_SOURCE_NAME (sym),
1627 SYMBOL_LANGUAGE (sym), DMGL_PARAMS | DMGL_ANSI);
1628 annotate_arg_name_end ();
1629 fputs_filtered ("=", stream);
1631 /* Avoid value_print because it will deref ref parameters. We just
1632 want to print their addresses. Print ??? for args whose address
1633 we do not know. We pass 2 as "recurse" to val_print because our
1634 standard indentation here is 4 spaces, and val_print indents
1635 2 for each recurse. */
1636 val = read_var_value (sym, fi);
1638 annotate_arg_value (val == NULL ? NULL : VALUE_TYPE (val));
1641 val_print (VALUE_TYPE (val), VALUE_CONTENTS (val), VALUE_ADDRESS (val),
1642 stream, 0, 0, 2, Val_no_prettyprint);
1644 fputs_filtered ("???", stream);
1646 annotate_arg_end ();
1651 /* Don't print nameless args in situations where we don't know
1652 enough about the stack to find them. */
1657 if (highest_offset == -1)
1658 start = FRAME_ARGS_SKIP;
1660 start = highest_offset;
1662 print_frame_nameless_args (fi, start, num - args_printed,
1667 /* Print nameless args on STREAM.
1668 FI is the frameinfo for this frame, START is the offset
1669 of the first nameless arg, and NUM is the number of nameless args to
1670 print. FIRST is nonzero if this is the first argument (not just
1671 the first nameless arg). */
1674 print_frame_nameless_args (fi, start, num, first, stream)
1675 struct frame_info *fi;
1685 for (i = 0; i < num; i++)
1688 #ifdef NAMELESS_ARG_VALUE
1689 NAMELESS_ARG_VALUE (fi, start, &arg_value);
1691 argsaddr = FRAME_ARGS_ADDRESS (fi);
1695 arg_value = read_memory_integer (argsaddr + start, sizeof (int));
1699 fprintf_filtered (stream, ", ");
1701 #ifdef PRINT_NAMELESS_INTEGER
1702 PRINT_NAMELESS_INTEGER (stream, arg_value);
1704 #ifdef PRINT_TYPELESS_INTEGER
1705 PRINT_TYPELESS_INTEGER (stream, builtin_type_int, (LONGEST) arg_value);
1707 fprintf_filtered (stream, "%d", arg_value);
1708 #endif /* PRINT_TYPELESS_INTEGER */
1709 #endif /* PRINT_NAMELESS_INTEGER */
1711 start += sizeof (int);
1717 printf_command (arg, from_tty)
1722 register char *s = arg;
1724 value_ptr *val_args;
1726 char *current_substring;
1728 int allocated_args = 20;
1729 struct cleanup *old_cleanups;
1731 val_args = (value_ptr *) xmalloc (allocated_args * sizeof (value_ptr));
1732 old_cleanups = make_cleanup (free_current_contents, &val_args);
1735 error_no_arg ("format-control string and values to print");
1737 /* Skip white space before format string */
1738 while (*s == ' ' || *s == '\t') s++;
1740 /* A format string should follow, enveloped in double quotes */
1742 error ("Bad format string, missing '\"'.");
1744 /* Parse the format-control string and copy it into the string STRING,
1745 processing some kinds of escape sequence. */
1747 f = string = (char *) alloca (strlen (s) + 1);
1755 error ("Bad format string, non-terminated '\"'.");
1767 *f++ = '\007'; /* Bell */
1792 /* ??? TODO: handle other escape sequences */
1793 error ("Unrecognized escape character \\%c in format string.",
1803 /* Skip over " and following space and comma. */
1806 while (*s == ' ' || *s == '\t') s++;
1808 if (*s != ',' && *s != 0)
1809 error ("Invalid argument syntax");
1812 while (*s == ' ' || *s == '\t') s++;
1814 /* Need extra space for the '\0's. Doubling the size is sufficient. */
1815 substrings = alloca (strlen (string) * 2);
1816 current_substring = substrings;
1819 /* Now scan the string for %-specs and see what kinds of args they want.
1820 argclass[I] classifies the %-specs so we can give printf_filtered
1821 something of the right size. */
1823 enum argclass {no_arg, int_arg, string_arg, double_arg, long_long_arg};
1824 enum argclass *argclass;
1825 enum argclass this_argclass;
1831 argclass = (enum argclass *) alloca (strlen (s) * sizeof *argclass);
1839 while (strchr ("0123456789.hlL-+ #", *f))
1841 if (*f == 'l' || *f == 'L')
1848 this_argclass = string_arg;
1854 this_argclass = double_arg;
1858 error ("`*' not supported for precision or width in printf");
1861 error ("Format specifier `n' not supported in printf");
1864 this_argclass = no_arg;
1869 this_argclass = long_long_arg;
1871 this_argclass = int_arg;
1875 if (this_argclass != no_arg)
1877 strncpy (current_substring, last_arg, f - last_arg);
1878 current_substring += f - last_arg;
1879 *current_substring++ = '\0';
1881 argclass[nargs_wanted++] = this_argclass;
1885 /* Now, parse all arguments and evaluate them.
1886 Store the VALUEs in VAL_ARGS. */
1891 if (nargs == allocated_args)
1892 val_args = (value_ptr *) xrealloc ((char *) val_args,
1893 (allocated_args *= 2)
1894 * sizeof (value_ptr));
1896 val_args[nargs] = parse_to_comma_and_eval (&s1);
1898 /* If format string wants a float, unchecked-convert the value to
1899 floating point of the same size */
1901 if (argclass[nargs] == double_arg)
1903 if (TYPE_LENGTH (VALUE_TYPE (val_args[nargs])) == sizeof (float))
1904 VALUE_TYPE (val_args[nargs]) = builtin_type_float;
1905 if (TYPE_LENGTH (VALUE_TYPE (val_args[nargs])) == sizeof (double))
1906 VALUE_TYPE (val_args[nargs]) = builtin_type_double;
1914 if (nargs != nargs_wanted)
1915 error ("Wrong number of arguments for specified format-string");
1917 /* Now actually print them. */
1918 current_substring = substrings;
1919 for (i = 0; i < nargs; i++)
1921 switch (argclass[i])
1928 tem = value_as_pointer (val_args[i]);
1930 /* This is a %s argument. Find the length of the string. */
1935 read_memory (tem + j, &c, 1);
1940 /* Copy the string contents into a string inside GDB. */
1941 str = (char *) alloca (j + 1);
1942 read_memory (tem, str, j);
1945 printf_filtered (current_substring, str);
1950 double val = value_as_double (val_args[i]);
1951 printf_filtered (current_substring, val);
1955 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
1957 long long val = value_as_long (val_args[i]);
1958 printf_filtered (current_substring, val);
1962 error ("long long not supported in printf");
1966 /* FIXME: there should be separate int_arg and long_arg. */
1967 long val = value_as_long (val_args[i]);
1968 printf_filtered (current_substring, val);
1972 error ("internal error in printf_command");
1974 /* Skip to the next substring. */
1975 current_substring += strlen (current_substring) + 1;
1977 /* Print the portion of the format string after the last argument. */
1978 printf_filtered (last_arg);
1980 do_cleanups (old_cleanups);
1983 /* Dump a specified section of assembly code. With no command line
1984 arguments, this command will dump the assembly code for the
1985 function surrounding the pc value in the selected frame. With one
1986 argument, it will dump the assembly code surrounding that pc value.
1987 Two arguments are interpeted as bounds within which to dump
1992 disassemble_command (arg, from_tty)
1996 CORE_ADDR low, high;
2004 if (!selected_frame)
2005 error ("No frame selected.\n");
2007 pc = get_frame_pc (selected_frame);
2008 if (find_pc_partial_function (pc, &name, &low, &high) == 0)
2009 error ("No function contains program counter for selected frame.\n");
2011 else if (!(space_index = (char *) strchr (arg, ' ')))
2014 pc = parse_and_eval_address (arg);
2015 if (find_pc_partial_function (pc, &name, &low, &high) == 0)
2016 error ("No function contains specified address.\n");
2020 /* Two arguments. */
2021 *space_index = '\0';
2022 low = parse_and_eval_address (arg);
2023 high = parse_and_eval_address (space_index + 1);
2026 printf_filtered ("Dump of assembler code ");
2029 printf_filtered ("for function %s:\n", name);
2033 printf_filtered ("from ");
2034 print_address_numeric (low, 1, gdb_stdout);
2035 printf_filtered (" to ");
2036 print_address_numeric (high, 1, gdb_stdout);
2037 printf_filtered (":\n");
2040 /* Dump the specified range. */
2041 for (pc = low; pc < high; )
2044 print_address (pc, gdb_stdout);
2045 printf_filtered (":\t");
2046 /* We often wrap here if there are long symbolic names. */
2048 pc += print_insn (pc, gdb_stdout);
2049 printf_filtered ("\n");
2051 printf_filtered ("End of assembler dump.\n");
2052 gdb_flush (gdb_stdout);
2055 /* Print the instruction at address MEMADDR in debugged memory,
2056 on STREAM. Returns length of the instruction, in bytes. */
2059 print_insn (memaddr, stream)
2063 disassemble_info info;
2065 #define GDB_INIT_DISASSEMBLE_INFO(INFO, STREAM) \
2066 (INFO).fprintf_func = (fprintf_ftype)fprintf_filtered, \
2067 (INFO).stream = (STREAM), \
2068 (INFO).read_memory_func = dis_asm_read_memory, \
2069 (INFO).memory_error_func = dis_asm_memory_error, \
2070 (INFO).print_address_func = dis_asm_print_address, \
2071 (INFO).insn_info_valid = 0
2073 GDB_INIT_DISASSEMBLE_INFO(info, stream);
2075 /* If there's no disassembler, something is very wrong. */
2076 if (tm_print_insn == NULL)
2079 return (*tm_print_insn) (memaddr, &info);
2084 _initialize_printcmd ()
2086 current_display_number = -1;
2088 add_info ("address", address_info,
2089 "Describe where variable VAR is stored.");
2091 add_com ("x", class_vars, x_command,
2092 concat ("Examine memory: x/FMT ADDRESS.\n\
2093 ADDRESS is an expression for the memory address to examine.\n\
2094 FMT is a repeat count followed by a format letter and a size letter.\n\
2095 Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),\n\
2096 t(binary), f(float), a(address), i(instruction), c(char) and s(string).\n",
2097 "Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).\n\
2098 The specified number of objects of the specified size are printed\n\
2099 according to the format.\n\n\
2100 Defaults for format and size letters are those previously used.\n\
2101 Default count is 1. Default address is following last thing printed\n\
2102 with this command or \"print\".", NULL));
2104 add_com ("disassemble", class_vars, disassemble_command,
2105 "Disassemble a specified section of memory.\n\
2106 Default is the function surrounding the pc of the selected frame.\n\
2107 With a single argument, the function surrounding that address is dumped.\n\
2108 Two arguments are taken as a range of memory to dump.");
2111 add_com ("whereis", class_vars, whereis_command,
2112 "Print line number and file of definition of variable.");
2115 add_info ("display", display_info,
2116 "Expressions to display when program stops, with code numbers.");
2118 add_cmd ("undisplay", class_vars, undisplay_command,
2119 "Cancel some expressions to be displayed when program stops.\n\
2120 Arguments are the code numbers of the expressions to stop displaying.\n\
2121 No argument means cancel all automatic-display expressions.\n\
2122 \"delete display\" has the same effect as this command.\n\
2123 Do \"info display\" to see current list of code numbers.",
2126 add_com ("display", class_vars, display_command,
2127 "Print value of expression EXP each time the program stops.\n\
2128 /FMT may be used before EXP as in the \"print\" command.\n\
2129 /FMT \"i\" or \"s\" or including a size-letter is allowed,\n\
2130 as in the \"x\" command, and then EXP is used to get the address to examine\n\
2131 and examining is done as in the \"x\" command.\n\n\
2132 With no argument, display all currently requested auto-display expressions.\n\
2133 Use \"undisplay\" to cancel display requests previously made."
2136 add_cmd ("display", class_vars, enable_display,
2137 "Enable some expressions to be displayed when program stops.\n\
2138 Arguments are the code numbers of the expressions to resume displaying.\n\
2139 No argument means enable all automatic-display expressions.\n\
2140 Do \"info display\" to see current list of code numbers.", &enablelist);
2142 add_cmd ("display", class_vars, disable_display_command,
2143 "Disable some expressions to be displayed when program stops.\n\
2144 Arguments are the code numbers of the expressions to stop displaying.\n\
2145 No argument means disable all automatic-display expressions.\n\
2146 Do \"info display\" to see current list of code numbers.", &disablelist);
2148 add_cmd ("display", class_vars, undisplay_command,
2149 "Cancel some expressions to be displayed when program stops.\n\
2150 Arguments are the code numbers of the expressions to stop displaying.\n\
2151 No argument means cancel all automatic-display expressions.\n\
2152 Do \"info display\" to see current list of code numbers.", &deletelist);
2154 add_com ("printf", class_vars, printf_command,
2155 "printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
2156 This is useful for formatted output in user-defined commands.");
2158 add_com ("output", class_vars, output_command,
2159 "Like \"print\" but don't put in value history and don't print newline.\n\
2160 This is useful in user-defined commands.");
2162 add_prefix_cmd ("set", class_vars, set_command,
2163 concat ("Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2164 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2165 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2166 with $), a register (a few standard names starting with $), or an actual\n\
2167 variable in the program being debugged. EXP is any valid expression.\n",
2168 "Use \"set variable\" for variables with names identical to set subcommands.\n\
2169 \nWith a subcommand, this command modifies parts of the gdb environment.\n\
2170 You can see these environment settings with the \"show\" command.", NULL),
2171 &setlist, "set ", 1, &cmdlist);
2173 /* "call" is the same as "set", but handy for dbx users to call fns. */
2174 add_com ("call", class_vars, call_command,
2175 "Call a function in the program.\n\
2176 The argument is the function name and arguments, in the notation of the\n\
2177 current working language. The result is printed and saved in the value\n\
2178 history, if it is not void.");
2180 add_cmd ("variable", class_vars, set_command,
2181 "Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2182 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2183 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2184 with $), a register (a few standard names starting with $), or an actual\n\
2185 variable in the program being debugged. EXP is any valid expression.\n\
2186 This may usually be abbreviated to simply \"set\".",
2189 add_com ("print", class_vars, print_command,
2190 concat ("Print value of expression EXP.\n\
2191 Variables accessible are those of the lexical environment of the selected\n\
2192 stack frame, plus all those whose scope is global or an entire file.\n\
2194 $NUM gets previous value number NUM. $ and $$ are the last two values.\n\
2195 $$NUM refers to NUM'th value back from the last one.\n\
2196 Names starting with $ refer to registers (with the values they would have\n",
2197 "if the program were to return to the stack frame now selected, restoring\n\
2198 all registers saved by frames farther in) or else to debugger\n\
2199 \"convenience\" variables (any such name not a known register).\n\
2200 Use assignment expressions to give values to convenience variables.\n",
2202 {TYPE}ADREXP refers to a datum of data type TYPE, located at address ADREXP.\n\
2203 @ is a binary operator for treating consecutive data objects\n\
2204 anywhere in memory as an array. FOO@NUM gives an array whose first\n\
2205 element is FOO, whose second element is stored in the space following\n\
2206 where FOO is stored, etc. FOO must be an expression whose value\n\
2207 resides in memory.\n",
2209 EXP may be preceded with /FMT, where FMT is a format letter\n\
2210 but no count or size letter (see \"x\" command).", NULL));
2211 add_com_alias ("p", "print", class_vars, 1);
2213 add_com ("inspect", class_vars, inspect_command,
2214 "Same as \"print\" command, except that if you are running in the epoch\n\
2215 environment, the value is printed in its own window.");
2218 add_set_cmd ("max-symbolic-offset", no_class, var_uinteger,
2219 (char *)&max_symbolic_offset,
2220 "Set the largest offset that will be printed in <symbol+1234> form.",
2224 add_set_cmd ("symbol-filename", no_class, var_boolean,
2225 (char *)&print_symbol_filename,
2226 "Set printing of source filename and line number with <symbol>.",
2230 examine_b_type = init_type (TYPE_CODE_INT, 1, 0, "examine_b_type", NULL);
2231 examine_h_type = init_type (TYPE_CODE_INT, 2, 0, "examine_h_type", NULL);
2232 examine_w_type = init_type (TYPE_CODE_INT, 4, 0, "examine_w_type", NULL);
2233 examine_g_type = init_type (TYPE_CODE_INT, 8, 0, "examine_g_type", NULL);