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. */
28 #include "expression.h"
32 #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_ptr 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 /* Number of auto-display expression currently being displayed.
78 So that we can disable it if we get an error or a signal within it.
79 -1 when not doing one. */
81 int current_display_number;
83 /* Flag to low-level print routines that this value is being printed
84 in an epoch window. We'd like to pass this as a parameter, but
85 every routine would need to take it. Perhaps we can encapsulate
86 this in the I/O stream once we have GNU stdio. */
92 /* Chain link to next auto-display item. */
94 /* Expression to be evaluated and displayed. */
95 struct expression *exp;
96 /* Item number of this auto-display item. */
98 /* Display format specified. */
99 struct format_data format;
100 /* Innermost block required by this expression when evaluated */
102 /* Status of this display (enabled or disabled) */
106 /* Chain of expressions whose values should be displayed
107 automatically each time the program stops. */
109 static struct display *display_chain;
111 static int display_number;
113 /* Pointer to the target-dependent disassembly function. */
115 int (*tm_print_insn) PARAMS ((bfd_vma, disassemble_info *));
117 /* Prototypes for local functions. */
119 static void delete_display PARAMS ((int));
121 static void enable_display PARAMS ((char *, int));
123 static void disable_display_command PARAMS ((char *, int));
125 static void disassemble_command PARAMS ((char *, int));
127 static void printf_command PARAMS ((char *, int));
129 static void print_frame_nameless_args PARAMS ((struct frame_info *, long,
130 int, int, GDB_FILE *));
132 static void display_info PARAMS ((char *, int));
134 static void do_one_display PARAMS ((struct display *));
136 static void undisplay_command PARAMS ((char *, int));
138 static void free_display PARAMS ((struct display *));
140 static void display_command PARAMS ((char *, int));
142 static void x_command PARAMS ((char *, int));
144 static void address_info PARAMS ((char *, int));
146 static void set_command PARAMS ((char *, int));
148 static void output_command PARAMS ((char *, int));
150 static void call_command PARAMS ((char *, int));
152 static void inspect_command PARAMS ((char *, int));
154 static void print_command PARAMS ((char *, int));
156 static void print_command_1 PARAMS ((char *, int, int));
158 static void validate_format PARAMS ((struct format_data, char *));
160 static void do_examine PARAMS ((struct format_data, CORE_ADDR));
162 static void print_formatted PARAMS ((value_ptr, int, int));
164 static struct format_data decode_format PARAMS ((char **, int, int));
166 static int print_insn PARAMS ((CORE_ADDR, GDB_FILE *));
169 /* Decode a format specification. *STRING_PTR should point to it.
170 OFORMAT and OSIZE are used as defaults for the format and size
171 if none are given in the format specification.
172 If OSIZE is zero, then the size field of the returned value
173 should be set only if a size is explicitly specified by the
175 The structure returned describes all the data
176 found in the specification. In addition, *STRING_PTR is advanced
177 past the specification and past all whitespace following it. */
179 static struct format_data
180 decode_format (string_ptr, oformat, osize)
185 struct format_data val;
186 register char *p = *string_ptr;
192 if (*p >= '0' && *p <= '9')
193 val.count = atoi (p);
194 while (*p >= '0' && *p <= '9') p++;
196 /* Now process size or format letters that follow. */
200 if (*p == 'b' || *p == 'h' || *p == 'w' || *p == 'g')
202 else if (*p >= 'a' && *p <= 'z')
208 while (*p == ' ' || *p == '\t') p++;
211 /* Set defaults for format and size if not specified. */
212 if (val.format == '?')
216 /* Neither has been specified. */
217 val.format = oformat;
221 /* If a size is specified, any format makes a reasonable
222 default except 'i'. */
223 val.format = oformat == 'i' ? 'x' : oformat;
225 else if (val.size == '?')
230 /* Pick the appropriate size for an address. */
231 if (TARGET_PTR_BIT == 64)
232 val.size = osize ? 'g' : osize;
233 else if (TARGET_PTR_BIT == 32)
234 val.size = osize ? 'w' : osize;
235 else if (TARGET_PTR_BIT == 16)
236 val.size = osize ? 'h' : osize;
238 /* Bad value for TARGET_PTR_BIT */
242 /* Floating point has to be word or giantword. */
243 if (osize == 'w' || osize == 'g')
246 /* Default it to giantword if the last used size is not
248 val.size = osize ? 'g' : osize;
251 /* Characters default to one byte. */
252 val.size = osize ? 'b' : osize;
255 /* The default is the size most recently specified. */
262 /* Print value VAL on gdb_stdout according to FORMAT, a letter or 0.
263 Do not end with a newline.
264 0 means print VAL according to its own type.
265 SIZE is the letter for the size of datum being printed.
266 This is used to pad hex numbers so they line up. */
269 print_formatted (val, format, size)
270 register value_ptr val;
274 int len = TYPE_LENGTH (VALUE_TYPE (val));
276 if (VALUE_LVAL (val) == lval_memory)
277 next_address = VALUE_ADDRESS (val) + len;
282 next_address = VALUE_ADDRESS (val)
283 + val_print_string (VALUE_ADDRESS (val), 0, gdb_stdout);
287 /* The old comment says
288 "Force output out, print_insn not using _filtered".
289 I'm not completely sure what that means, I suspect most print_insn
290 now do use _filtered, so I guess it's obsolete. */
291 /* We often wrap here if there are long symbolic names. */
293 next_address = VALUE_ADDRESS (val)
294 + print_insn (VALUE_ADDRESS (val), gdb_stdout);
299 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_ARRAY
300 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_STRING
301 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_STRUCT
302 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_UNION
303 || VALUE_REPEATED (val))
304 value_print (val, gdb_stdout, format, Val_pretty_default);
306 print_scalar_formatted (VALUE_CONTENTS (val), VALUE_TYPE (val),
307 format, size, gdb_stdout);
311 /* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
312 according to letters FORMAT and SIZE on STREAM.
313 FORMAT may not be zero. Formats s and i are not supported at this level.
315 This is how the elements of an array or structure are printed
319 print_scalar_formatted (valaddr, type, format, size, stream)
327 int len = TYPE_LENGTH (type);
329 if (len > sizeof (LONGEST)
337 /* We can't print it normally, but we can print it in hex.
338 Printing it in the wrong radix is more useful than saying
339 "use /x, you dummy". */
340 /* FIXME: we could also do octal or binary if that was the
342 /* FIXME: we should be using the size field to give us a minimum
343 field width to print. */
344 val_print_type_code_int (type, valaddr, stream);
349 val_long = unpack_long (type, valaddr);
351 /* If we are printing it as unsigned, truncate it in case it is actually
352 a negative signed value (e.g. "print/u (short)-1" should print 65535
353 (if shorts are 16 bits) instead of 4294967295). */
356 if (len < sizeof (LONGEST))
357 val_long &= ((LONGEST) 1 << HOST_CHAR_BIT * len) - 1;
365 /* no size specified, like in print. Print varying # of digits. */
366 print_longest (stream, 'x', 1, val_long);
375 print_longest (stream, size, 1, val_long);
378 error ("Undefined output size \"%c\".", size);
383 print_longest (stream, 'd', 1, val_long);
387 print_longest (stream, 'u', 0, val_long);
392 print_longest (stream, 'o', 1, val_long);
394 fprintf_filtered (stream, "0");
398 print_address (unpack_pointer (type, valaddr), stream);
402 value_print (value_from_longest (builtin_type_char, val_long), stream, 0,
407 if (len == sizeof (float))
408 type = builtin_type_float;
409 else if (len == sizeof (double))
410 type = builtin_type_double;
411 print_floating (valaddr, type, stream);
418 /* Binary; 't' stands for "two". */
420 char bits[8*(sizeof val_long) + 1];
425 width = 8*(sizeof val_long);
442 error ("Undefined output size \"%c\".", size);
448 bits[width] = (val_long & 1) ? '1' : '0';
453 while (*cp && *cp == '0')
458 fprintf_filtered (stream, local_binary_format_prefix());
459 fprintf_filtered (stream, cp);
460 fprintf_filtered (stream, local_binary_format_suffix());
465 error ("Undefined output format \"%c\".", format);
469 /* Specify default address for `x' command.
470 `info lines' uses this. */
473 set_next_address (addr)
478 /* Make address available to the user as $_. */
479 set_internalvar (lookup_internalvar ("_"),
480 value_from_longest (lookup_pointer_type (builtin_type_void),
484 /* Optionally print address ADDR symbolically as <SYMBOL+OFFSET> on STREAM,
485 after LEADIN. Print nothing if no symbolic name is found nearby.
486 Optionally also print source file and line number, if available.
487 DO_DEMANGLE controls whether to print a symbol in its native "raw" form,
488 or to interpret it as a possible C++ name and convert it back to source
489 form. However note that DO_DEMANGLE can be overridden by the specific
490 settings of the demangle and asm_demangle variables. */
493 print_address_symbolic (addr, stream, do_demangle, leadin)
499 struct minimal_symbol *msymbol;
500 struct symbol *symbol;
501 struct symtab *symtab = 0;
502 CORE_ADDR name_location = 0;
505 /* First try to find the address in the symbol table, then
506 in the minsyms. Take the closest one. */
508 /* This is defective in the sense that it only finds text symbols. So
509 really this is kind of pointless--we should make sure that the
510 minimal symbols have everything we need (by changing that we could
511 save some memory, but for many debug format--ELF/DWARF or
512 anything/stabs--it would be inconvenient to eliminate those minimal
514 symbol = find_pc_function (addr);
516 name_location = BLOCK_START (SYMBOL_BLOCK_VALUE (symbol));
521 name = SYMBOL_SOURCE_NAME (symbol);
523 name = SYMBOL_LINKAGE_NAME (symbol);
526 msymbol = lookup_minimal_symbol_by_pc (addr);
529 if (SYMBOL_VALUE_ADDRESS (msymbol) > name_location || symbol == NULL)
531 /* The msymbol is closer to the address than the symbol;
532 use the msymbol instead. */
535 name_location = SYMBOL_VALUE_ADDRESS (msymbol);
537 name = SYMBOL_SOURCE_NAME (msymbol);
539 name = SYMBOL_LINKAGE_NAME (msymbol);
542 if (symbol == NULL && msymbol == NULL)
545 /* If the nearest symbol is too far away, don't print anything symbolic. */
547 /* For when CORE_ADDR is larger than unsigned int, we do math in
548 CORE_ADDR. But when we detect unsigned wraparound in the
549 CORE_ADDR math, we ignore this test and print the offset,
550 because addr+max_symbolic_offset has wrapped through the end
551 of the address space back to the beginning, giving bogus comparison. */
552 if (addr > name_location + max_symbolic_offset
553 && name_location + max_symbolic_offset > name_location)
556 fputs_filtered (leadin, stream);
557 fputs_filtered ("<", stream);
558 fputs_filtered (name, stream);
559 if (addr != name_location)
560 fprintf_filtered (stream, "+%u", (unsigned int)(addr - name_location));
562 /* Append source filename and line number if desired. Give specific
563 line # of this addr, if we have it; else line # of the nearest symbol. */
564 if (print_symbol_filename)
566 struct symtab_and_line sal;
568 sal = find_pc_line (addr, 0);
570 fprintf_filtered (stream, " at %s:%d", sal.symtab->filename, sal.line);
571 else if (symtab && symbol && symbol->line)
572 fprintf_filtered (stream, " at %s:%d", symtab->filename, symbol->line);
574 fprintf_filtered (stream, " in %s", symtab->filename);
576 fputs_filtered (">", stream);
579 /* Print address ADDR on STREAM. USE_LOCAL means the same thing as for
582 print_address_numeric (addr, use_local, stream)
587 /* This assumes a CORE_ADDR can fit in a LONGEST. Probably a safe
589 print_longest (stream, 'x', use_local, (unsigned LONGEST) addr);
592 /* Print address ADDR symbolically on STREAM.
593 First print it as a number. Then perhaps print
594 <SYMBOL + OFFSET> after the number. */
597 print_address (addr, stream)
601 print_address_numeric (addr, 1, stream);
602 print_address_symbolic (addr, stream, asm_demangle, " ");
605 /* Print address ADDR symbolically on STREAM. Parameter DEMANGLE
606 controls whether to print the symbolic name "raw" or demangled.
607 Global setting "addressprint" controls whether to print hex address
611 print_address_demangle (addr, stream, do_demangle)
618 fprintf_filtered (stream, "0");
620 else if (addressprint)
622 print_address_numeric (addr, 1, stream);
623 print_address_symbolic (addr, stream, do_demangle, " ");
627 print_address_symbolic (addr, stream, do_demangle, "");
632 /* These are the types that $__ will get after an examine command of one
635 static struct type *examine_b_type;
636 static struct type *examine_h_type;
637 static struct type *examine_w_type;
638 static struct type *examine_g_type;
640 /* Examine data at address ADDR in format FMT.
641 Fetch it from memory and print on gdb_stdout. */
644 do_examine (fmt, addr)
645 struct format_data fmt;
648 register char format = 0;
650 register int count = 1;
651 struct type *val_type = NULL;
653 register int maxelts;
660 /* String or instruction format implies fetch single bytes
661 regardless of the specified size. */
662 if (format == 's' || format == 'i')
666 val_type = examine_b_type;
667 else if (size == 'h')
668 val_type = examine_h_type;
669 else if (size == 'w')
670 val_type = examine_w_type;
671 else if (size == 'g')
672 val_type = examine_g_type;
679 if (format == 's' || format == 'i')
682 /* Print as many objects as specified in COUNT, at most maxelts per line,
683 with the address of the next one at the start of each line. */
687 print_address (next_address, gdb_stdout);
688 printf_filtered (":");
693 printf_filtered ("\t");
694 /* Note that print_formatted sets next_address for the next
696 last_examine_address = next_address;
697 last_examine_value = value_at (val_type, next_address);
698 print_formatted (last_examine_value, format, size);
700 printf_filtered ("\n");
701 gdb_flush (gdb_stdout);
706 validate_format (fmt, cmdname)
707 struct format_data fmt;
711 error ("Size letters are meaningless in \"%s\" command.", cmdname);
713 error ("Item count other than 1 is meaningless in \"%s\" command.",
715 if (fmt.format == 'i' || fmt.format == 's')
716 error ("Format letter \"%c\" is meaningless in \"%s\" command.",
717 fmt.format, cmdname);
720 /* Evaluate string EXP as an expression in the current language and
721 print the resulting value. EXP may contain a format specifier as the
722 first argument ("/x myvar" for example, to print myvar in hex).
726 print_command_1 (exp, inspect, voidprint)
731 struct expression *expr;
732 register struct cleanup *old_chain = 0;
733 register char format = 0;
734 register value_ptr val;
735 struct format_data fmt;
738 /* Pass inspect flag to the rest of the print routines in a global (sigh). */
739 inspect_it = inspect;
741 if (exp && *exp == '/')
744 fmt = decode_format (&exp, last_format, 0);
745 validate_format (fmt, "print");
746 last_format = format = fmt.format;
757 extern int objectprint;
759 expr = parse_expression (exp);
760 old_chain = make_cleanup (free_current_contents, &expr);
762 val = evaluate_expression (expr);
764 /* C++: figure out what type we actually want to print it as. */
765 type = VALUE_TYPE (val);
768 && ( TYPE_CODE (type) == TYPE_CODE_PTR
769 || TYPE_CODE (type) == TYPE_CODE_REF)
770 && ( TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_STRUCT
771 || TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_UNION))
775 v = value_from_vtable_info (val, TYPE_TARGET_TYPE (type));
779 type = VALUE_TYPE (val);
784 val = access_value_history (0);
786 if (voidprint || (val && VALUE_TYPE (val) &&
787 TYPE_CODE (VALUE_TYPE (val)) != TYPE_CODE_VOID))
789 int histindex = record_latest_value (val);
792 annotate_value_history_begin (histindex, VALUE_TYPE (val));
794 annotate_value_begin (VALUE_TYPE (val));
797 printf_unfiltered ("\031(gdb-makebuffer \"%s\" %d '(\"", exp, histindex);
799 if (histindex >= 0) printf_filtered ("$%d = ", histindex);
802 annotate_value_history_value ();
804 print_formatted (val, format, fmt.size);
805 printf_filtered ("\n");
808 annotate_value_history_end ();
810 annotate_value_end ();
813 printf_unfiltered("\") )\030");
817 do_cleanups (old_chain);
818 inspect_it = 0; /* Reset print routines to normal */
823 print_command (exp, from_tty)
827 print_command_1 (exp, 0, 1);
830 /* Same as print, except in epoch, it gets its own window */
833 inspect_command (exp, from_tty)
837 extern int epoch_interface;
839 print_command_1 (exp, epoch_interface, 1);
842 /* Same as print, except it doesn't print void results. */
845 call_command (exp, from_tty)
849 print_command_1 (exp, 0, 0);
854 output_command (exp, from_tty)
858 struct expression *expr;
859 register struct cleanup *old_chain;
860 register char format = 0;
861 register value_ptr val;
862 struct format_data fmt;
864 if (exp && *exp == '/')
867 fmt = decode_format (&exp, 0, 0);
868 validate_format (fmt, "output");
872 expr = parse_expression (exp);
873 old_chain = make_cleanup (free_current_contents, &expr);
875 val = evaluate_expression (expr);
877 annotate_value_begin (VALUE_TYPE (val));
879 print_formatted (val, format, fmt.size);
881 annotate_value_end ();
883 do_cleanups (old_chain);
888 set_command (exp, from_tty)
892 struct expression *expr = parse_expression (exp);
893 register struct cleanup *old_chain
894 = make_cleanup (free_current_contents, &expr);
895 evaluate_expression (expr);
896 do_cleanups (old_chain);
901 address_info (exp, from_tty)
905 register struct symbol *sym;
906 register struct minimal_symbol *msymbol;
908 register long basereg;
909 int is_a_field_of_this; /* C++: lookup_symbol sets this to nonzero
910 if exp is a field of `this'. */
913 error ("Argument required.");
915 sym = lookup_symbol (exp, get_selected_block (), VAR_NAMESPACE,
916 &is_a_field_of_this, (struct symtab **)NULL);
919 if (is_a_field_of_this)
921 printf_filtered ("Symbol \"");
922 fprintf_symbol_filtered (gdb_stdout, exp,
923 current_language->la_language, DMGL_ANSI);
924 printf_filtered ("\" is a field of the local class variable `this'\n");
928 msymbol = lookup_minimal_symbol (exp, NULL, NULL);
932 printf_filtered ("Symbol \"");
933 fprintf_symbol_filtered (gdb_stdout, exp,
934 current_language->la_language, DMGL_ANSI);
935 printf_filtered ("\" is at ");
936 print_address_numeric (SYMBOL_VALUE_ADDRESS (msymbol), 1,
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), 1, 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), 1, 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)), 1,
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 annotate_display_begin ();
1265 printf_filtered ("%d", d->number);
1266 annotate_display_number_end ();
1267 printf_filtered (": ");
1272 annotate_display_format ();
1274 printf_filtered ("x/");
1275 if (d->format.count != 1)
1276 printf_filtered ("%d", d->format.count);
1277 printf_filtered ("%c", d->format.format);
1278 if (d->format.format != 'i' && d->format.format != 's')
1279 printf_filtered ("%c", d->format.size);
1280 printf_filtered (" ");
1282 annotate_display_expression ();
1284 print_expression (d->exp, gdb_stdout);
1285 annotate_display_expression_end ();
1287 if (d->format.count != 1)
1288 printf_filtered ("\n");
1290 printf_filtered (" ");
1292 addr = value_as_pointer (evaluate_expression (d->exp));
1293 if (d->format.format == 'i')
1294 addr = ADDR_BITS_REMOVE (addr);
1296 annotate_display_value ();
1298 do_examine (d->format, addr);
1302 annotate_display_format ();
1304 if (d->format.format)
1305 printf_filtered ("/%c ", d->format.format);
1307 annotate_display_expression ();
1309 print_expression (d->exp, gdb_stdout);
1310 annotate_display_expression_end ();
1312 printf_filtered (" = ");
1314 annotate_display_expression ();
1316 print_formatted (evaluate_expression (d->exp),
1317 d->format.format, d->format.size);
1318 printf_filtered ("\n");
1321 annotate_display_end ();
1323 gdb_flush (gdb_stdout);
1324 current_display_number = -1;
1327 /* Display all of the values on the auto-display chain which can be
1328 evaluated in the current scope. */
1333 register struct display *d;
1335 for (d = display_chain; d; d = d->next)
1339 /* Delete the auto-display which we were in the process of displaying.
1340 This is done when there is an error or a signal. */
1343 disable_display (num)
1346 register struct display *d;
1348 for (d = display_chain; d; d = d->next)
1349 if (d->number == num)
1351 d->status = disabled;
1354 printf_unfiltered ("No display number %d.\n", num);
1358 disable_current_display ()
1360 if (current_display_number >= 0)
1362 disable_display (current_display_number);
1363 fprintf_unfiltered (gdb_stderr, "Disabling display %d to avoid infinite recursion.\n",
1364 current_display_number);
1366 current_display_number = -1;
1370 display_info (ignore, from_tty)
1374 register struct display *d;
1377 printf_unfiltered ("There are no auto-display expressions now.\n");
1379 printf_filtered ("Auto-display expressions now in effect:\n\
1380 Num Enb Expression\n");
1382 for (d = display_chain; d; d = d->next)
1384 printf_filtered ("%d: %c ", d->number, "ny"[(int)d->status]);
1386 printf_filtered ("/%d%c%c ", d->format.count, d->format.size,
1388 else if (d->format.format)
1389 printf_filtered ("/%c ", d->format.format);
1390 print_expression (d->exp, gdb_stdout);
1391 if (d->block && !contained_in (get_selected_block (), d->block))
1392 printf_filtered (" (cannot be evaluated in the current context)");
1393 printf_filtered ("\n");
1394 gdb_flush (gdb_stdout);
1399 enable_display (args, from_tty)
1403 register char *p = args;
1406 register struct display *d;
1410 for (d = display_chain; d; d = d->next)
1411 d->status = enabled;
1417 while (*p1 >= '0' && *p1 <= '9')
1419 if (*p1 && *p1 != ' ' && *p1 != '\t')
1420 error ("Arguments must be display numbers.");
1424 for (d = display_chain; d; d = d->next)
1425 if (d->number == num)
1427 d->status = enabled;
1430 printf_unfiltered ("No display number %d.\n", num);
1433 while (*p == ' ' || *p == '\t')
1440 disable_display_command (args, from_tty)
1444 register char *p = args;
1446 register struct display *d;
1450 for (d = display_chain; d; d = d->next)
1451 d->status = disabled;
1457 while (*p1 >= '0' && *p1 <= '9')
1459 if (*p1 && *p1 != ' ' && *p1 != '\t')
1460 error ("Arguments must be display numbers.");
1462 disable_display (atoi (p));
1465 while (*p == ' ' || *p == '\t')
1471 /* Print the value in stack frame FRAME of a variable
1472 specified by a struct symbol. */
1475 print_variable_value (var, frame, stream)
1477 struct frame_info *frame;
1480 value_ptr val = read_var_value (var, frame);
1482 value_print (val, stream, 0, Val_pretty_default);
1485 /* Print the arguments of a stack frame, given the function FUNC
1486 running in that frame (as a symbol), the info on the frame,
1487 and the number of args according to the stack frame (or -1 if unknown). */
1489 /* References here and elsewhere to "number of args according to the
1490 stack frame" appear in all cases to refer to "number of ints of args
1491 according to the stack frame". At least for VAX, i386, isi. */
1494 print_frame_args (func, fi, num, stream)
1495 struct symbol *func;
1496 struct frame_info *fi;
1500 struct block *b = NULL;
1504 register struct symbol *sym;
1505 register value_ptr val;
1506 /* Offset of next stack argument beyond the one we have seen that is
1507 at the highest offset.
1508 -1 if we haven't come to a stack argument yet. */
1509 long highest_offset = -1;
1511 /* Number of ints of arguments that we have printed so far. */
1512 int args_printed = 0;
1516 b = SYMBOL_BLOCK_VALUE (func);
1517 nsyms = BLOCK_NSYMS (b);
1520 for (i = 0; i < nsyms; i++)
1523 sym = BLOCK_SYM (b, i);
1525 /* Keep track of the highest stack argument offset seen, and
1526 skip over any kinds of symbols we don't care about. */
1528 switch (SYMBOL_CLASS (sym)) {
1532 long current_offset = SYMBOL_VALUE (sym);
1534 arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
1536 /* Compute address of next argument by adding the size of
1537 this argument and rounding to an int boundary. */
1539 = ((current_offset + arg_size + sizeof (int) - 1)
1540 & ~(sizeof (int) - 1));
1542 /* If this is the highest offset seen yet, set highest_offset. */
1543 if (highest_offset == -1
1544 || (current_offset > highest_offset))
1545 highest_offset = current_offset;
1547 /* Add the number of ints we're about to print to args_printed. */
1548 args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
1551 /* We care about types of symbols, but don't need to keep track of
1552 stack offsets in them. */
1554 case LOC_REGPARM_ADDR:
1556 case LOC_BASEREG_ARG:
1559 /* Other types of symbols we just skip over. */
1564 /* We have to look up the symbol because arguments can have
1565 two entries (one a parameter, one a local) and the one we
1566 want is the local, which lookup_symbol will find for us.
1567 This includes gcc1 (not gcc2) on the sparc when passing a
1568 small structure and gcc2 when the argument type is float
1569 and it is passed as a double and converted to float by
1570 the prologue (in the latter case the type of the LOC_ARG
1571 symbol is double and the type of the LOC_LOCAL symbol is
1573 /* But if the parameter name is null, don't try it.
1574 Null parameter names occur on the RS/6000, for traceback tables.
1575 FIXME, should we even print them? */
1577 if (*SYMBOL_NAME (sym))
1579 struct symbol *nsym;
1580 nsym = lookup_symbol
1582 b, VAR_NAMESPACE, (int *)NULL, (struct symtab **)NULL);
1583 if (SYMBOL_CLASS (nsym) == LOC_REGISTER)
1585 /* There is a LOC_ARG/LOC_REGISTER pair. This means that
1586 it was passed on the stack and loaded into a register,
1587 or passed in a register and stored in a stack slot.
1588 GDB 3.x used the LOC_ARG; GDB 4.0-4.11 used the LOC_REGISTER.
1590 Reasons for using the LOC_ARG:
1591 (1) because find_saved_registers may be slow for remote
1593 (2) because registers are often re-used and stack slots
1594 rarely (never?) are. Therefore using the stack slot is
1595 much less likely to print garbage.
1597 Reasons why we might want to use the LOC_REGISTER:
1598 (1) So that the backtrace prints the same value as
1599 "print foo". I see no compelling reason why this needs
1600 to be the case; having the backtrace print the value which
1601 was passed in, and "print foo" print the value as modified
1602 within the called function, makes perfect sense to me.
1604 Additional note: It might be nice if "info args" displayed
1606 One more note: There is a case with sparc structure passing
1607 where we need to use the LOC_REGISTER, but this is dealt with
1608 by creating a single LOC_REGPARM in symbol reading. */
1610 /* Leave sym (the LOC_ARG) alone. */
1617 /* Print the current arg. */
1619 fprintf_filtered (stream, ", ");
1622 annotate_arg_begin ();
1624 fprintf_symbol_filtered (stream, SYMBOL_SOURCE_NAME (sym),
1625 SYMBOL_LANGUAGE (sym), DMGL_PARAMS | DMGL_ANSI);
1626 annotate_arg_name_end ();
1627 fputs_filtered ("=", stream);
1629 /* Avoid value_print because it will deref ref parameters. We just
1630 want to print their addresses. Print ??? for args whose address
1631 we do not know. We pass 2 as "recurse" to val_print because our
1632 standard indentation here is 4 spaces, and val_print indents
1633 2 for each recurse. */
1634 val = read_var_value (sym, fi);
1636 annotate_arg_value (val == NULL ? NULL : VALUE_TYPE (val));
1639 val_print (VALUE_TYPE (val), VALUE_CONTENTS (val), VALUE_ADDRESS (val),
1640 stream, 0, 0, 2, Val_no_prettyprint);
1642 fputs_filtered ("???", stream);
1644 annotate_arg_end ();
1649 /* Don't print nameless args in situations where we don't know
1650 enough about the stack to find them. */
1655 if (highest_offset == -1)
1656 start = FRAME_ARGS_SKIP;
1658 start = highest_offset;
1660 print_frame_nameless_args (fi, start, num - args_printed,
1665 /* Print nameless args on STREAM.
1666 FI is the frameinfo for this frame, START is the offset
1667 of the first nameless arg, and NUM is the number of nameless args to
1668 print. FIRST is nonzero if this is the first argument (not just
1669 the first nameless arg). */
1672 print_frame_nameless_args (fi, start, num, first, stream)
1673 struct frame_info *fi;
1683 for (i = 0; i < num; i++)
1686 #ifdef NAMELESS_ARG_VALUE
1687 NAMELESS_ARG_VALUE (fi, start, &arg_value);
1689 argsaddr = FRAME_ARGS_ADDRESS (fi);
1693 arg_value = read_memory_integer (argsaddr + start, sizeof (int));
1697 fprintf_filtered (stream, ", ");
1699 #ifdef PRINT_NAMELESS_INTEGER
1700 PRINT_NAMELESS_INTEGER (stream, arg_value);
1702 #ifdef PRINT_TYPELESS_INTEGER
1703 PRINT_TYPELESS_INTEGER (stream, builtin_type_int, (LONGEST) arg_value);
1705 fprintf_filtered (stream, "%d", arg_value);
1706 #endif /* PRINT_TYPELESS_INTEGER */
1707 #endif /* PRINT_NAMELESS_INTEGER */
1709 start += sizeof (int);
1715 printf_command (arg, from_tty)
1720 register char *s = arg;
1722 value_ptr *val_args;
1724 char *current_substring;
1726 int allocated_args = 20;
1727 struct cleanup *old_cleanups;
1729 val_args = (value_ptr *) xmalloc (allocated_args * sizeof (value_ptr));
1730 old_cleanups = make_cleanup (free_current_contents, &val_args);
1733 error_no_arg ("format-control string and values to print");
1735 /* Skip white space before format string */
1736 while (*s == ' ' || *s == '\t') s++;
1738 /* A format string should follow, enveloped in double quotes */
1740 error ("Bad format string, missing '\"'.");
1742 /* Parse the format-control string and copy it into the string STRING,
1743 processing some kinds of escape sequence. */
1745 f = string = (char *) alloca (strlen (s) + 1);
1753 error ("Bad format string, non-terminated '\"'.");
1765 *f++ = '\007'; /* Bell */
1790 /* ??? TODO: handle other escape sequences */
1791 error ("Unrecognized escape character \\%c in format string.",
1801 /* Skip over " and following space and comma. */
1804 while (*s == ' ' || *s == '\t') s++;
1806 if (*s != ',' && *s != 0)
1807 error ("Invalid argument syntax");
1810 while (*s == ' ' || *s == '\t') s++;
1812 /* Need extra space for the '\0's. Doubling the size is sufficient. */
1813 substrings = alloca (strlen (string) * 2);
1814 current_substring = substrings;
1817 /* Now scan the string for %-specs and see what kinds of args they want.
1818 argclass[I] classifies the %-specs so we can give printf_filtered
1819 something of the right size. */
1821 enum argclass {no_arg, int_arg, string_arg, double_arg, long_long_arg};
1822 enum argclass *argclass;
1823 enum argclass this_argclass;
1829 argclass = (enum argclass *) alloca (strlen (s) * sizeof *argclass);
1837 while (strchr ("0123456789.hlL-+ #", *f))
1839 if (*f == 'l' || *f == 'L')
1846 this_argclass = string_arg;
1852 this_argclass = double_arg;
1856 error ("`*' not supported for precision or width in printf");
1859 error ("Format specifier `n' not supported in printf");
1862 this_argclass = no_arg;
1867 this_argclass = long_long_arg;
1869 this_argclass = int_arg;
1873 if (this_argclass != no_arg)
1875 strncpy (current_substring, last_arg, f - last_arg);
1876 current_substring += f - last_arg;
1877 *current_substring++ = '\0';
1879 argclass[nargs_wanted++] = this_argclass;
1883 /* Now, parse all arguments and evaluate them.
1884 Store the VALUEs in VAL_ARGS. */
1889 if (nargs == allocated_args)
1890 val_args = (value_ptr *) xrealloc ((char *) val_args,
1891 (allocated_args *= 2)
1892 * sizeof (value_ptr));
1894 val_args[nargs] = parse_to_comma_and_eval (&s1);
1896 /* If format string wants a float, unchecked-convert the value to
1897 floating point of the same size */
1899 if (argclass[nargs] == double_arg)
1901 if (TYPE_LENGTH (VALUE_TYPE (val_args[nargs])) == sizeof (float))
1902 VALUE_TYPE (val_args[nargs]) = builtin_type_float;
1903 if (TYPE_LENGTH (VALUE_TYPE (val_args[nargs])) == sizeof (double))
1904 VALUE_TYPE (val_args[nargs]) = builtin_type_double;
1912 if (nargs != nargs_wanted)
1913 error ("Wrong number of arguments for specified format-string");
1915 /* Now actually print them. */
1916 current_substring = substrings;
1917 for (i = 0; i < nargs; i++)
1919 switch (argclass[i])
1926 tem = value_as_pointer (val_args[i]);
1928 /* This is a %s argument. Find the length of the string. */
1933 read_memory (tem + j, &c, 1);
1938 /* Copy the string contents into a string inside GDB. */
1939 str = (char *) alloca (j + 1);
1940 read_memory (tem, str, j);
1943 printf_filtered (current_substring, str);
1948 double val = value_as_double (val_args[i]);
1949 printf_filtered (current_substring, val);
1953 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
1955 long long val = value_as_long (val_args[i]);
1956 printf_filtered (current_substring, val);
1960 error ("long long not supported in printf");
1964 /* FIXME: there should be separate int_arg and long_arg. */
1965 long val = value_as_long (val_args[i]);
1966 printf_filtered (current_substring, val);
1970 error ("internal error in printf_command");
1972 /* Skip to the next substring. */
1973 current_substring += strlen (current_substring) + 1;
1975 /* Print the portion of the format string after the last argument. */
1976 printf_filtered (last_arg);
1978 do_cleanups (old_cleanups);
1981 /* Dump a specified section of assembly code. With no command line
1982 arguments, this command will dump the assembly code for the
1983 function surrounding the pc value in the selected frame. With one
1984 argument, it will dump the assembly code surrounding that pc value.
1985 Two arguments are interpeted as bounds within which to dump
1990 disassemble_command (arg, from_tty)
1994 CORE_ADDR low, high;
2002 if (!selected_frame)
2003 error ("No frame selected.\n");
2005 pc = get_frame_pc (selected_frame);
2006 if (find_pc_partial_function (pc, &name, &low, &high) == 0)
2007 error ("No function contains program counter for selected frame.\n");
2009 else if (!(space_index = (char *) strchr (arg, ' ')))
2012 pc = parse_and_eval_address (arg);
2013 if (find_pc_partial_function (pc, &name, &low, &high) == 0)
2014 error ("No function contains specified address.\n");
2018 /* Two arguments. */
2019 *space_index = '\0';
2020 low = parse_and_eval_address (arg);
2021 high = parse_and_eval_address (space_index + 1);
2024 printf_filtered ("Dump of assembler code ");
2027 printf_filtered ("for function %s:\n", name);
2031 printf_filtered ("from ");
2032 print_address_numeric (low, 1, gdb_stdout);
2033 printf_filtered (" to ");
2034 print_address_numeric (high, 1, gdb_stdout);
2035 printf_filtered (":\n");
2038 /* Dump the specified range. */
2039 for (pc = low; pc < high; )
2042 print_address (pc, gdb_stdout);
2043 printf_filtered (":\t");
2044 /* We often wrap here if there are long symbolic names. */
2046 pc += print_insn (pc, gdb_stdout);
2047 printf_filtered ("\n");
2049 printf_filtered ("End of assembler dump.\n");
2050 gdb_flush (gdb_stdout);
2053 /* Print the instruction at address MEMADDR in debugged memory,
2054 on STREAM. Returns length of the instruction, in bytes. */
2057 print_insn (memaddr, stream)
2061 disassemble_info info;
2063 #define GDB_INIT_DISASSEMBLE_INFO(INFO, STREAM) \
2064 (INFO).fprintf_func = (fprintf_ftype)fprintf_filtered, \
2065 (INFO).stream = (STREAM), \
2066 (INFO).read_memory_func = dis_asm_read_memory, \
2067 (INFO).memory_error_func = dis_asm_memory_error, \
2068 (INFO).print_address_func = dis_asm_print_address, \
2069 (INFO).insn_info_valid = 0
2071 GDB_INIT_DISASSEMBLE_INFO(info, stream);
2073 /* If there's no disassembler, something is very wrong. */
2074 if (tm_print_insn == NULL)
2077 return (*tm_print_insn) (memaddr, &info);
2082 _initialize_printcmd ()
2084 current_display_number = -1;
2086 add_info ("address", address_info,
2087 "Describe where variable VAR is stored.");
2089 add_com ("x", class_vars, x_command,
2090 concat ("Examine memory: x/FMT ADDRESS.\n\
2091 ADDRESS is an expression for the memory address to examine.\n\
2092 FMT is a repeat count followed by a format letter and a size letter.\n\
2093 Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),\n\
2094 t(binary), f(float), a(address), i(instruction), c(char) and s(string).\n",
2095 "Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).\n\
2096 The specified number of objects of the specified size are printed\n\
2097 according to the format.\n\n\
2098 Defaults for format and size letters are those previously used.\n\
2099 Default count is 1. Default address is following last thing printed\n\
2100 with this command or \"print\".", NULL));
2102 add_com ("disassemble", class_vars, disassemble_command,
2103 "Disassemble a specified section of memory.\n\
2104 Default is the function surrounding the pc of the selected frame.\n\
2105 With a single argument, the function surrounding that address is dumped.\n\
2106 Two arguments are taken as a range of memory to dump.");
2109 add_com ("whereis", class_vars, whereis_command,
2110 "Print line number and file of definition of variable.");
2113 add_info ("display", display_info,
2114 "Expressions to display when program stops, with code numbers.");
2116 add_cmd ("undisplay", class_vars, undisplay_command,
2117 "Cancel some expressions to be displayed when program stops.\n\
2118 Arguments are the code numbers of the expressions to stop displaying.\n\
2119 No argument means cancel all automatic-display expressions.\n\
2120 \"delete display\" has the same effect as this command.\n\
2121 Do \"info display\" to see current list of code numbers.",
2124 add_com ("display", class_vars, display_command,
2125 "Print value of expression EXP each time the program stops.\n\
2126 /FMT may be used before EXP as in the \"print\" command.\n\
2127 /FMT \"i\" or \"s\" or including a size-letter is allowed,\n\
2128 as in the \"x\" command, and then EXP is used to get the address to examine\n\
2129 and examining is done as in the \"x\" command.\n\n\
2130 With no argument, display all currently requested auto-display expressions.\n\
2131 Use \"undisplay\" to cancel display requests previously made."
2134 add_cmd ("display", class_vars, enable_display,
2135 "Enable some expressions to be displayed when program stops.\n\
2136 Arguments are the code numbers of the expressions to resume displaying.\n\
2137 No argument means enable all automatic-display expressions.\n\
2138 Do \"info display\" to see current list of code numbers.", &enablelist);
2140 add_cmd ("display", class_vars, disable_display_command,
2141 "Disable some expressions to be displayed when program stops.\n\
2142 Arguments are the code numbers of the expressions to stop displaying.\n\
2143 No argument means disable all automatic-display expressions.\n\
2144 Do \"info display\" to see current list of code numbers.", &disablelist);
2146 add_cmd ("display", class_vars, undisplay_command,
2147 "Cancel some expressions to be displayed when program stops.\n\
2148 Arguments are the code numbers of the expressions to stop displaying.\n\
2149 No argument means cancel all automatic-display expressions.\n\
2150 Do \"info display\" to see current list of code numbers.", &deletelist);
2152 add_com ("printf", class_vars, printf_command,
2153 "printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
2154 This is useful for formatted output in user-defined commands.");
2156 add_com ("output", class_vars, output_command,
2157 "Like \"print\" but don't put in value history and don't print newline.\n\
2158 This is useful in user-defined commands.");
2160 add_prefix_cmd ("set", class_vars, set_command,
2161 concat ("Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2162 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2163 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2164 with $), a register (a few standard names starting with $), or an actual\n\
2165 variable in the program being debugged. EXP is any valid expression.\n",
2166 "Use \"set variable\" for variables with names identical to set subcommands.\n\
2167 \nWith a subcommand, this command modifies parts of the gdb environment.\n\
2168 You can see these environment settings with the \"show\" command.", NULL),
2169 &setlist, "set ", 1, &cmdlist);
2171 /* "call" is the same as "set", but handy for dbx users to call fns. */
2172 add_com ("call", class_vars, call_command,
2173 "Call a function in the program.\n\
2174 The argument is the function name and arguments, in the notation of the\n\
2175 current working language. The result is printed and saved in the value\n\
2176 history, if it is not void.");
2178 add_cmd ("variable", class_vars, set_command,
2179 "Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2180 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2181 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2182 with $), a register (a few standard names starting with $), or an actual\n\
2183 variable in the program being debugged. EXP is any valid expression.\n\
2184 This may usually be abbreviated to simply \"set\".",
2187 add_com ("print", class_vars, print_command,
2188 concat ("Print value of expression EXP.\n\
2189 Variables accessible are those of the lexical environment of the selected\n\
2190 stack frame, plus all those whose scope is global or an entire file.\n\
2192 $NUM gets previous value number NUM. $ and $$ are the last two values.\n\
2193 $$NUM refers to NUM'th value back from the last one.\n\
2194 Names starting with $ refer to registers (with the values they would have\n",
2195 "if the program were to return to the stack frame now selected, restoring\n\
2196 all registers saved by frames farther in) or else to debugger\n\
2197 \"convenience\" variables (any such name not a known register).\n\
2198 Use assignment expressions to give values to convenience variables.\n",
2200 {TYPE}ADREXP refers to a datum of data type TYPE, located at address ADREXP.\n\
2201 @ is a binary operator for treating consecutive data objects\n\
2202 anywhere in memory as an array. FOO@NUM gives an array whose first\n\
2203 element is FOO, whose second element is stored in the space following\n\
2204 where FOO is stored, etc. FOO must be an expression whose value\n\
2205 resides in memory.\n",
2207 EXP may be preceded with /FMT, where FMT is a format letter\n\
2208 but no count or size letter (see \"x\" command).", NULL));
2209 add_com_alias ("p", "print", class_vars, 1);
2211 add_com ("inspect", class_vars, inspect_command,
2212 "Same as \"print\" command, except that if you are running in the epoch\n\
2213 environment, the value is printed in its own window.");
2216 add_set_cmd ("max-symbolic-offset", no_class, var_uinteger,
2217 (char *)&max_symbolic_offset,
2218 "Set the largest offset that will be printed in <symbol+1234> form.",
2222 add_set_cmd ("symbol-filename", no_class, var_boolean,
2223 (char *)&print_symbol_filename,
2224 "Set printing of source filename and line number with <symbol>.",
2228 examine_b_type = init_type (TYPE_CODE_INT, 1, 0, "examine_b_type", NULL);
2229 examine_h_type = init_type (TYPE_CODE_INT, 2, 0, "examine_h_type", NULL);
2230 examine_w_type = init_type (TYPE_CODE_INT, 4, 0, "examine_w_type", NULL);
2231 examine_g_type = init_type (TYPE_CODE_INT, 8, 0, "examine_g_type", NULL);