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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
22 #include "gdb_string.h"
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 *));
116 disassemble_info tm_print_insn_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 struct type *type = check_typedef (VALUE_TYPE (val));
276 int len = TYPE_LENGTH (type);
278 if (VALUE_LVAL (val) == lval_memory)
279 next_address = VALUE_ADDRESS (val) + len;
284 next_address = VALUE_ADDRESS (val)
285 + val_print_string (VALUE_ADDRESS (val), 0, gdb_stdout);
289 /* The old comment says
290 "Force output out, print_insn not using _filtered".
291 I'm not completely sure what that means, I suspect most print_insn
292 now do use _filtered, so I guess it's obsolete. */
293 /* We often wrap here if there are long symbolic names. */
295 next_address = VALUE_ADDRESS (val)
296 + print_insn (VALUE_ADDRESS (val), gdb_stdout);
301 || TYPE_CODE (type) == TYPE_CODE_ARRAY
302 || TYPE_CODE (type) == TYPE_CODE_STRING
303 || TYPE_CODE (type) == TYPE_CODE_STRUCT
304 || TYPE_CODE (type) == TYPE_CODE_UNION)
305 value_print (val, gdb_stdout, format, Val_pretty_default);
307 print_scalar_formatted (VALUE_CONTENTS (val), type,
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 unsigned int len = TYPE_LENGTH (type);
330 if (len > sizeof (LONGEST)
338 if (! TYPE_UNSIGNED (type)
339 || ! extract_long_unsigned_integer (valaddr, len, &val_long))
341 /* We can't print it normally, but we can print it in hex.
342 Printing it in the wrong radix is more useful than saying
343 "use /x, you dummy". */
344 /* FIXME: we could also do octal or binary if that was the
346 /* FIXME: we should be using the size field to give us a
347 minimum field width to print. */
348 val_print_type_code_int (type, valaddr, stream);
352 /* If we get here, extract_long_unsigned_integer set val_long. */
354 else if (format != 'f')
355 val_long = unpack_long (type, valaddr);
357 /* If we are printing it as unsigned, truncate it in case it is actually
358 a negative signed value (e.g. "print/u (short)-1" should print 65535
359 (if shorts are 16 bits) instead of 4294967295). */
362 if (len < sizeof (LONGEST))
363 val_long &= ((LONGEST) 1 << HOST_CHAR_BIT * len) - 1;
371 /* no size specified, like in print. Print varying # of digits. */
372 print_longest (stream, 'x', 1, val_long);
381 print_longest (stream, size, 1, val_long);
384 error ("Undefined output size \"%c\".", size);
389 print_longest (stream, 'd', 1, val_long);
393 print_longest (stream, 'u', 0, val_long);
398 print_longest (stream, 'o', 1, val_long);
400 fprintf_filtered (stream, "0");
404 print_address (unpack_pointer (type, valaddr), stream);
408 value_print (value_from_longest (builtin_type_char, val_long), stream, 0,
413 if (len == sizeof (float))
414 type = builtin_type_float;
415 else if (len == sizeof (double))
416 type = builtin_type_double;
417 print_floating (valaddr, type, stream);
424 /* Binary; 't' stands for "two". */
426 char bits[8*(sizeof val_long) + 1];
431 width = 8*(sizeof val_long);
448 error ("Undefined output size \"%c\".", size);
454 bits[width] = (val_long & 1) ? '1' : '0';
459 while (*cp && *cp == '0')
464 fprintf_filtered (stream, local_binary_format_prefix());
465 fprintf_filtered (stream, cp);
466 fprintf_filtered (stream, local_binary_format_suffix());
471 error ("Undefined output format \"%c\".", format);
475 /* Specify default address for `x' command.
476 `info lines' uses this. */
479 set_next_address (addr)
484 /* Make address available to the user as $_. */
485 set_internalvar (lookup_internalvar ("_"),
486 value_from_longest (lookup_pointer_type (builtin_type_void),
490 /* Optionally print address ADDR symbolically as <SYMBOL+OFFSET> on STREAM,
491 after LEADIN. Print nothing if no symbolic name is found nearby.
492 Optionally also print source file and line number, if available.
493 DO_DEMANGLE controls whether to print a symbol in its native "raw" form,
494 or to interpret it as a possible C++ name and convert it back to source
495 form. However note that DO_DEMANGLE can be overridden by the specific
496 settings of the demangle and asm_demangle variables. */
499 print_address_symbolic (addr, stream, do_demangle, leadin)
505 struct minimal_symbol *msymbol;
506 struct symbol *symbol;
507 struct symtab *symtab = 0;
508 CORE_ADDR name_location = 0;
511 /* First try to find the address in the symbol table, then
512 in the minsyms. Take the closest one. */
514 /* This is defective in the sense that it only finds text symbols. So
515 really this is kind of pointless--we should make sure that the
516 minimal symbols have everything we need (by changing that we could
517 save some memory, but for many debug format--ELF/DWARF or
518 anything/stabs--it would be inconvenient to eliminate those minimal
520 symbol = find_pc_function (addr);
522 name_location = BLOCK_START (SYMBOL_BLOCK_VALUE (symbol));
527 name = SYMBOL_SOURCE_NAME (symbol);
529 name = SYMBOL_LINKAGE_NAME (symbol);
532 msymbol = lookup_minimal_symbol_by_pc (addr);
535 if (SYMBOL_VALUE_ADDRESS (msymbol) > name_location || symbol == NULL)
537 /* The msymbol is closer to the address than the symbol;
538 use the msymbol instead. */
541 name_location = SYMBOL_VALUE_ADDRESS (msymbol);
543 name = SYMBOL_SOURCE_NAME (msymbol);
545 name = SYMBOL_LINKAGE_NAME (msymbol);
548 if (symbol == NULL && msymbol == NULL)
551 /* If the nearest symbol is too far away, don't print anything symbolic. */
553 /* For when CORE_ADDR is larger than unsigned int, we do math in
554 CORE_ADDR. But when we detect unsigned wraparound in the
555 CORE_ADDR math, we ignore this test and print the offset,
556 because addr+max_symbolic_offset has wrapped through the end
557 of the address space back to the beginning, giving bogus comparison. */
558 if (addr > name_location + max_symbolic_offset
559 && name_location + max_symbolic_offset > name_location)
562 fputs_filtered (leadin, stream);
563 fputs_filtered ("<", stream);
564 fputs_filtered (name, stream);
565 if (addr != name_location)
566 fprintf_filtered (stream, "+%u", (unsigned int)(addr - name_location));
568 /* Append source filename and line number if desired. Give specific
569 line # of this addr, if we have it; else line # of the nearest symbol. */
570 if (print_symbol_filename)
572 struct symtab_and_line sal;
574 sal = find_pc_line (addr, 0);
576 fprintf_filtered (stream, " at %s:%d", sal.symtab->filename, sal.line);
577 else if (symtab && symbol && symbol->line)
578 fprintf_filtered (stream, " at %s:%d", symtab->filename, symbol->line);
580 fprintf_filtered (stream, " in %s", symtab->filename);
582 fputs_filtered (">", stream);
585 /* Print address ADDR on STREAM. USE_LOCAL means the same thing as for
588 print_address_numeric (addr, use_local, stream)
593 /* This assumes a CORE_ADDR can fit in a LONGEST. Probably a safe
595 print_longest (stream, 'x', use_local, (unsigned LONGEST) addr);
598 /* Print address ADDR symbolically on STREAM.
599 First print it as a number. Then perhaps print
600 <SYMBOL + OFFSET> after the number. */
603 print_address (addr, stream)
607 print_address_numeric (addr, 1, stream);
608 print_address_symbolic (addr, stream, asm_demangle, " ");
611 /* Print address ADDR symbolically on STREAM. Parameter DEMANGLE
612 controls whether to print the symbolic name "raw" or demangled.
613 Global setting "addressprint" controls whether to print hex address
617 print_address_demangle (addr, stream, do_demangle)
624 fprintf_filtered (stream, "0");
626 else if (addressprint)
628 print_address_numeric (addr, 1, stream);
629 print_address_symbolic (addr, stream, do_demangle, " ");
633 print_address_symbolic (addr, stream, do_demangle, "");
638 /* These are the types that $__ will get after an examine command of one
641 static struct type *examine_b_type;
642 static struct type *examine_h_type;
643 static struct type *examine_w_type;
644 static struct type *examine_g_type;
646 /* Examine data at address ADDR in format FMT.
647 Fetch it from memory and print on gdb_stdout. */
650 do_examine (fmt, addr)
651 struct format_data fmt;
654 register char format = 0;
656 register int count = 1;
657 struct type *val_type = NULL;
659 register int maxelts;
666 /* String or instruction format implies fetch single bytes
667 regardless of the specified size. */
668 if (format == 's' || format == 'i')
672 val_type = examine_b_type;
673 else if (size == 'h')
674 val_type = examine_h_type;
675 else if (size == 'w')
676 val_type = examine_w_type;
677 else if (size == 'g')
678 val_type = examine_g_type;
685 if (format == 's' || format == 'i')
688 /* Print as many objects as specified in COUNT, at most maxelts per line,
689 with the address of the next one at the start of each line. */
694 print_address (next_address, gdb_stdout);
695 printf_filtered (":");
700 printf_filtered ("\t");
701 /* Note that print_formatted sets next_address for the next
703 last_examine_address = next_address;
704 last_examine_value = value_at (val_type, next_address);
705 print_formatted (last_examine_value, format, size);
707 printf_filtered ("\n");
708 gdb_flush (gdb_stdout);
713 validate_format (fmt, cmdname)
714 struct format_data fmt;
718 error ("Size letters are meaningless in \"%s\" command.", cmdname);
720 error ("Item count other than 1 is meaningless in \"%s\" command.",
722 if (fmt.format == 'i' || fmt.format == 's')
723 error ("Format letter \"%c\" is meaningless in \"%s\" command.",
724 fmt.format, cmdname);
727 /* Evaluate string EXP as an expression in the current language and
728 print the resulting value. EXP may contain a format specifier as the
729 first argument ("/x myvar" for example, to print myvar in hex).
733 print_command_1 (exp, inspect, voidprint)
738 struct expression *expr;
739 register struct cleanup *old_chain = 0;
740 register char format = 0;
741 register value_ptr val;
742 struct format_data fmt;
745 /* Pass inspect flag to the rest of the print routines in a global (sigh). */
746 inspect_it = inspect;
748 if (exp && *exp == '/')
751 fmt = decode_format (&exp, last_format, 0);
752 validate_format (fmt, "print");
753 last_format = format = fmt.format;
764 extern int objectprint;
766 expr = parse_expression (exp);
767 old_chain = make_cleanup (free_current_contents, &expr);
769 val = evaluate_expression (expr);
771 /* C++: figure out what type we actually want to print it as. */
772 type = VALUE_TYPE (val);
775 && ( TYPE_CODE (type) == TYPE_CODE_PTR
776 || TYPE_CODE (type) == TYPE_CODE_REF)
777 && ( TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_STRUCT
778 || TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_UNION))
782 v = value_from_vtable_info (val, TYPE_TARGET_TYPE (type));
786 type = VALUE_TYPE (val);
791 val = access_value_history (0);
793 if (voidprint || (val && VALUE_TYPE (val) &&
794 TYPE_CODE (VALUE_TYPE (val)) != TYPE_CODE_VOID))
796 int histindex = record_latest_value (val);
799 annotate_value_history_begin (histindex, VALUE_TYPE (val));
801 annotate_value_begin (VALUE_TYPE (val));
804 printf_unfiltered ("\031(gdb-makebuffer \"%s\" %d '(\"", exp, histindex);
806 if (histindex >= 0) printf_filtered ("$%d = ", histindex);
809 annotate_value_history_value ();
811 print_formatted (val, format, fmt.size);
812 printf_filtered ("\n");
815 annotate_value_history_end ();
817 annotate_value_end ();
820 printf_unfiltered("\") )\030");
824 do_cleanups (old_chain);
825 inspect_it = 0; /* Reset print routines to normal */
830 print_command (exp, from_tty)
834 print_command_1 (exp, 0, 1);
837 /* Same as print, except in epoch, it gets its own window */
840 inspect_command (exp, from_tty)
844 extern int epoch_interface;
846 print_command_1 (exp, epoch_interface, 1);
849 /* Same as print, except it doesn't print void results. */
852 call_command (exp, from_tty)
856 print_command_1 (exp, 0, 0);
861 output_command (exp, from_tty)
865 struct expression *expr;
866 register struct cleanup *old_chain;
867 register char format = 0;
868 register value_ptr val;
869 struct format_data fmt;
871 if (exp && *exp == '/')
874 fmt = decode_format (&exp, 0, 0);
875 validate_format (fmt, "output");
879 expr = parse_expression (exp);
880 old_chain = make_cleanup (free_current_contents, &expr);
882 val = evaluate_expression (expr);
884 annotate_value_begin (VALUE_TYPE (val));
886 print_formatted (val, format, fmt.size);
888 annotate_value_end ();
890 do_cleanups (old_chain);
895 set_command (exp, from_tty)
899 struct expression *expr = parse_expression (exp);
900 register struct cleanup *old_chain
901 = make_cleanup (free_current_contents, &expr);
902 evaluate_expression (expr);
903 do_cleanups (old_chain);
908 address_info (exp, from_tty)
912 register struct symbol *sym;
913 register struct minimal_symbol *msymbol;
915 register long basereg;
916 int is_a_field_of_this; /* C++: lookup_symbol sets this to nonzero
917 if exp is a field of `this'. */
920 error ("Argument required.");
922 sym = lookup_symbol (exp, get_selected_block (), VAR_NAMESPACE,
923 &is_a_field_of_this, (struct symtab **)NULL);
926 if (is_a_field_of_this)
928 printf_filtered ("Symbol \"");
929 fprintf_symbol_filtered (gdb_stdout, exp,
930 current_language->la_language, DMGL_ANSI);
931 printf_filtered ("\" is a field of the local class variable `this'\n");
935 msymbol = lookup_minimal_symbol (exp, NULL, NULL);
939 printf_filtered ("Symbol \"");
940 fprintf_symbol_filtered (gdb_stdout, exp,
941 current_language->la_language, DMGL_ANSI);
942 printf_filtered ("\" is at ");
943 print_address_numeric (SYMBOL_VALUE_ADDRESS (msymbol), 1,
945 printf_filtered (" in a file compiled without debugging.\n");
948 error ("No symbol \"%s\" in current context.", exp);
952 printf_filtered ("Symbol \"");
953 fprintf_symbol_filtered (gdb_stdout, SYMBOL_NAME (sym),
954 current_language->la_language, DMGL_ANSI);
955 printf_filtered ("\" is ");
956 val = SYMBOL_VALUE (sym);
957 basereg = SYMBOL_BASEREG (sym);
959 switch (SYMBOL_CLASS (sym))
962 case LOC_CONST_BYTES:
963 printf_filtered ("constant");
967 printf_filtered ("a label at address ");
968 print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), 1, gdb_stdout);
972 printf_filtered ("a variable in register %s", reg_names[val]);
976 printf_filtered ("static storage at address ");
977 print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), 1, gdb_stdout);
981 printf_filtered ("an argument in register %s", reg_names[val]);
984 case LOC_REGPARM_ADDR:
985 printf_filtered ("address of an argument in register %s", reg_names[val]);
989 printf_filtered ("an argument at offset %ld", val);
993 printf_filtered ("an argument at frame offset %ld", val);
997 printf_filtered ("a local variable at frame offset %ld", val);
1001 printf_filtered ("a reference argument at offset %ld", val);
1005 printf_filtered ("a variable at offset %ld from register %s",
1006 val, reg_names[basereg]);
1009 case LOC_BASEREG_ARG:
1010 printf_filtered ("an argument at offset %ld from register %s",
1011 val, reg_names[basereg]);
1015 printf_filtered ("a typedef");
1019 printf_filtered ("a function at address ");
1020 print_address_numeric (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)), 1,
1024 case LOC_UNRESOLVED:
1026 struct minimal_symbol *msym;
1028 msym = lookup_minimal_symbol (SYMBOL_NAME (sym), NULL, NULL);
1030 printf_filtered ("unresolved");
1033 printf_filtered ("static storage at address ");
1034 print_address_numeric (SYMBOL_VALUE_ADDRESS (msym), 1, gdb_stdout);
1039 case LOC_OPTIMIZED_OUT:
1040 printf_filtered ("optimized out");
1044 printf_filtered ("of unknown (botched) type");
1047 printf_filtered (".\n");
1051 x_command (exp, from_tty)
1055 struct expression *expr;
1056 struct format_data fmt;
1057 struct cleanup *old_chain;
1060 fmt.format = last_format;
1061 fmt.size = last_size;
1064 if (exp && *exp == '/')
1067 fmt = decode_format (&exp, last_format, last_size);
1070 /* If we have an expression, evaluate it and use it as the address. */
1072 if (exp != 0 && *exp != 0)
1074 expr = parse_expression (exp);
1075 /* Cause expression not to be there any more
1076 if this command is repeated with Newline.
1077 But don't clobber a user-defined command's definition. */
1080 old_chain = make_cleanup (free_current_contents, &expr);
1081 val = evaluate_expression (expr);
1082 if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_REF)
1083 val = value_ind (val);
1084 /* In rvalue contexts, such as this, functions are coerced into
1085 pointers to functions. This makes "x/i main" work. */
1086 if (/* last_format == 'i'
1087 && */ TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FUNC
1088 && VALUE_LVAL (val) == lval_memory)
1089 next_address = VALUE_ADDRESS (val);
1091 next_address = value_as_pointer (val);
1092 do_cleanups (old_chain);
1095 do_examine (fmt, next_address);
1097 /* If the examine succeeds, we remember its size and format for next time. */
1098 last_size = fmt.size;
1099 last_format = fmt.format;
1101 /* Set a couple of internal variables if appropriate. */
1102 if (last_examine_value)
1104 /* Make last address examined available to the user as $_. Use
1105 the correct pointer type. */
1106 set_internalvar (lookup_internalvar ("_"),
1107 value_from_longest (
1108 lookup_pointer_type (VALUE_TYPE (last_examine_value)),
1109 (LONGEST) last_examine_address));
1111 /* Make contents of last address examined available to the user as $__.*/
1112 set_internalvar (lookup_internalvar ("__"), last_examine_value);
1117 /* Add an expression to the auto-display chain.
1118 Specify the expression. */
1121 display_command (exp, from_tty)
1125 struct format_data fmt;
1126 register struct expression *expr;
1127 register struct display *new;
1138 fmt = decode_format (&exp, 0, 0);
1139 if (fmt.size && fmt.format == 0)
1141 if (fmt.format == 'i' || fmt.format == 's')
1151 innermost_block = 0;
1152 expr = parse_expression (exp);
1154 new = (struct display *) xmalloc (sizeof (struct display));
1157 new->block = innermost_block;
1158 new->next = display_chain;
1159 new->number = ++display_number;
1161 new->status = enabled;
1162 display_chain = new;
1164 if (from_tty && target_has_execution)
1165 do_one_display (new);
1178 /* Clear out the display_chain.
1179 Done when new symtabs are loaded, since this invalidates
1180 the types stored in many expressions. */
1185 register struct display *d;
1187 while ((d = display_chain) != NULL)
1190 display_chain = d->next;
1195 /* Delete the auto-display number NUM. */
1198 delete_display (num)
1201 register struct display *d1, *d;
1204 error ("No display number %d.", num);
1206 if (display_chain->number == num)
1209 display_chain = d1->next;
1213 for (d = display_chain; ; d = d->next)
1216 error ("No display number %d.", num);
1217 if (d->next->number == num)
1227 /* Delete some values from the auto-display chain.
1228 Specify the element numbers. */
1231 undisplay_command (args, from_tty)
1235 register char *p = args;
1241 if (query ("Delete all auto-display expressions? "))
1250 while (*p1 >= '0' && *p1 <= '9') p1++;
1251 if (*p1 && *p1 != ' ' && *p1 != '\t')
1252 error ("Arguments must be display numbers.");
1256 delete_display (num);
1259 while (*p == ' ' || *p == '\t') p++;
1264 /* Display a single auto-display.
1265 Do nothing if the display cannot be printed in the current context,
1266 or if the display is disabled. */
1272 int within_current_scope;
1274 if (d->status == disabled)
1278 within_current_scope = contained_in (get_selected_block (), d->block);
1280 within_current_scope = 1;
1281 if (!within_current_scope)
1284 current_display_number = d->number;
1286 annotate_display_begin ();
1287 printf_filtered ("%d", d->number);
1288 annotate_display_number_end ();
1289 printf_filtered (": ");
1294 annotate_display_format ();
1296 printf_filtered ("x/");
1297 if (d->format.count != 1)
1298 printf_filtered ("%d", d->format.count);
1299 printf_filtered ("%c", d->format.format);
1300 if (d->format.format != 'i' && d->format.format != 's')
1301 printf_filtered ("%c", d->format.size);
1302 printf_filtered (" ");
1304 annotate_display_expression ();
1306 print_expression (d->exp, gdb_stdout);
1307 annotate_display_expression_end ();
1309 if (d->format.count != 1)
1310 printf_filtered ("\n");
1312 printf_filtered (" ");
1314 addr = value_as_pointer (evaluate_expression (d->exp));
1315 if (d->format.format == 'i')
1316 addr = ADDR_BITS_REMOVE (addr);
1318 annotate_display_value ();
1320 do_examine (d->format, addr);
1324 annotate_display_format ();
1326 if (d->format.format)
1327 printf_filtered ("/%c ", d->format.format);
1329 annotate_display_expression ();
1331 print_expression (d->exp, gdb_stdout);
1332 annotate_display_expression_end ();
1334 printf_filtered (" = ");
1336 annotate_display_expression ();
1338 print_formatted (evaluate_expression (d->exp),
1339 d->format.format, d->format.size);
1340 printf_filtered ("\n");
1343 annotate_display_end ();
1345 gdb_flush (gdb_stdout);
1346 current_display_number = -1;
1349 /* Display all of the values on the auto-display chain which can be
1350 evaluated in the current scope. */
1355 register struct display *d;
1357 for (d = display_chain; d; d = d->next)
1361 /* Delete the auto-display which we were in the process of displaying.
1362 This is done when there is an error or a signal. */
1365 disable_display (num)
1368 register struct display *d;
1370 for (d = display_chain; d; d = d->next)
1371 if (d->number == num)
1373 d->status = disabled;
1376 printf_unfiltered ("No display number %d.\n", num);
1380 disable_current_display ()
1382 if (current_display_number >= 0)
1384 disable_display (current_display_number);
1385 fprintf_unfiltered (gdb_stderr, "Disabling display %d to avoid infinite recursion.\n",
1386 current_display_number);
1388 current_display_number = -1;
1392 display_info (ignore, from_tty)
1396 register struct display *d;
1399 printf_unfiltered ("There are no auto-display expressions now.\n");
1401 printf_filtered ("Auto-display expressions now in effect:\n\
1402 Num Enb Expression\n");
1404 for (d = display_chain; d; d = d->next)
1406 printf_filtered ("%d: %c ", d->number, "ny"[(int)d->status]);
1408 printf_filtered ("/%d%c%c ", d->format.count, d->format.size,
1410 else if (d->format.format)
1411 printf_filtered ("/%c ", d->format.format);
1412 print_expression (d->exp, gdb_stdout);
1413 if (d->block && !contained_in (get_selected_block (), d->block))
1414 printf_filtered (" (cannot be evaluated in the current context)");
1415 printf_filtered ("\n");
1416 gdb_flush (gdb_stdout);
1421 enable_display (args, from_tty)
1425 register char *p = args;
1428 register struct display *d;
1432 for (d = display_chain; d; d = d->next)
1433 d->status = enabled;
1439 while (*p1 >= '0' && *p1 <= '9')
1441 if (*p1 && *p1 != ' ' && *p1 != '\t')
1442 error ("Arguments must be display numbers.");
1446 for (d = display_chain; d; d = d->next)
1447 if (d->number == num)
1449 d->status = enabled;
1452 printf_unfiltered ("No display number %d.\n", num);
1455 while (*p == ' ' || *p == '\t')
1462 disable_display_command (args, from_tty)
1466 register char *p = args;
1468 register struct display *d;
1472 for (d = display_chain; d; d = d->next)
1473 d->status = disabled;
1479 while (*p1 >= '0' && *p1 <= '9')
1481 if (*p1 && *p1 != ' ' && *p1 != '\t')
1482 error ("Arguments must be display numbers.");
1484 disable_display (atoi (p));
1487 while (*p == ' ' || *p == '\t')
1493 /* Print the value in stack frame FRAME of a variable
1494 specified by a struct symbol. */
1497 print_variable_value (var, frame, stream)
1499 struct frame_info *frame;
1502 value_ptr val = read_var_value (var, frame);
1504 value_print (val, stream, 0, Val_pretty_default);
1507 /* Print the arguments of a stack frame, given the function FUNC
1508 running in that frame (as a symbol), the info on the frame,
1509 and the number of args according to the stack frame (or -1 if unknown). */
1511 /* References here and elsewhere to "number of args according to the
1512 stack frame" appear in all cases to refer to "number of ints of args
1513 according to the stack frame". At least for VAX, i386, isi. */
1516 print_frame_args (func, fi, num, stream)
1517 struct symbol *func;
1518 struct frame_info *fi;
1522 struct block *b = NULL;
1526 register struct symbol *sym;
1527 register value_ptr val;
1528 /* Offset of next stack argument beyond the one we have seen that is
1529 at the highest offset.
1530 -1 if we haven't come to a stack argument yet. */
1531 long highest_offset = -1;
1533 /* Number of ints of arguments that we have printed so far. */
1534 int args_printed = 0;
1538 b = SYMBOL_BLOCK_VALUE (func);
1539 nsyms = BLOCK_NSYMS (b);
1542 for (i = 0; i < nsyms; i++)
1545 sym = BLOCK_SYM (b, i);
1547 /* Keep track of the highest stack argument offset seen, and
1548 skip over any kinds of symbols we don't care about. */
1550 switch (SYMBOL_CLASS (sym)) {
1554 long current_offset = SYMBOL_VALUE (sym);
1555 arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
1557 /* Compute address of next argument by adding the size of
1558 this argument and rounding to an int boundary. */
1560 = ((current_offset + arg_size + sizeof (int) - 1)
1561 & ~(sizeof (int) - 1));
1563 /* If this is the highest offset seen yet, set highest_offset. */
1564 if (highest_offset == -1
1565 || (current_offset > highest_offset))
1566 highest_offset = current_offset;
1568 /* Add the number of ints we're about to print to args_printed. */
1569 args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
1572 /* We care about types of symbols, but don't need to keep track of
1573 stack offsets in them. */
1575 case LOC_REGPARM_ADDR:
1577 case LOC_BASEREG_ARG:
1580 /* Other types of symbols we just skip over. */
1585 /* We have to look up the symbol because arguments can have
1586 two entries (one a parameter, one a local) and the one we
1587 want is the local, which lookup_symbol will find for us.
1588 This includes gcc1 (not gcc2) on the sparc when passing a
1589 small structure and gcc2 when the argument type is float
1590 and it is passed as a double and converted to float by
1591 the prologue (in the latter case the type of the LOC_ARG
1592 symbol is double and the type of the LOC_LOCAL symbol is
1594 /* But if the parameter name is null, don't try it.
1595 Null parameter names occur on the RS/6000, for traceback tables.
1596 FIXME, should we even print them? */
1598 if (*SYMBOL_NAME (sym))
1600 struct symbol *nsym;
1601 nsym = lookup_symbol
1603 b, VAR_NAMESPACE, (int *)NULL, (struct symtab **)NULL);
1604 if (SYMBOL_CLASS (nsym) == LOC_REGISTER)
1606 /* There is a LOC_ARG/LOC_REGISTER pair. This means that
1607 it was passed on the stack and loaded into a register,
1608 or passed in a register and stored in a stack slot.
1609 GDB 3.x used the LOC_ARG; GDB 4.0-4.11 used the LOC_REGISTER.
1611 Reasons for using the LOC_ARG:
1612 (1) because find_saved_registers may be slow for remote
1614 (2) because registers are often re-used and stack slots
1615 rarely (never?) are. Therefore using the stack slot is
1616 much less likely to print garbage.
1618 Reasons why we might want to use the LOC_REGISTER:
1619 (1) So that the backtrace prints the same value as
1620 "print foo". I see no compelling reason why this needs
1621 to be the case; having the backtrace print the value which
1622 was passed in, and "print foo" print the value as modified
1623 within the called function, makes perfect sense to me.
1625 Additional note: It might be nice if "info args" displayed
1627 One more note: There is a case with sparc structure passing
1628 where we need to use the LOC_REGISTER, but this is dealt with
1629 by creating a single LOC_REGPARM in symbol reading. */
1631 /* Leave sym (the LOC_ARG) alone. */
1638 /* Print the current arg. */
1640 fprintf_filtered (stream, ", ");
1643 annotate_arg_begin ();
1645 fprintf_symbol_filtered (stream, SYMBOL_SOURCE_NAME (sym),
1646 SYMBOL_LANGUAGE (sym), DMGL_PARAMS | DMGL_ANSI);
1647 annotate_arg_name_end ();
1648 fputs_filtered ("=", stream);
1650 /* Avoid value_print because it will deref ref parameters. We just
1651 want to print their addresses. Print ??? for args whose address
1652 we do not know. We pass 2 as "recurse" to val_print because our
1653 standard indentation here is 4 spaces, and val_print indents
1654 2 for each recurse. */
1655 val = read_var_value (sym, fi);
1657 annotate_arg_value (val == NULL ? NULL : VALUE_TYPE (val));
1660 val_print (VALUE_TYPE (val), VALUE_CONTENTS (val), VALUE_ADDRESS (val),
1661 stream, 0, 0, 2, Val_no_prettyprint);
1663 fputs_filtered ("???", stream);
1665 annotate_arg_end ();
1670 /* Don't print nameless args in situations where we don't know
1671 enough about the stack to find them. */
1676 if (highest_offset == -1)
1677 start = FRAME_ARGS_SKIP;
1679 start = highest_offset;
1681 print_frame_nameless_args (fi, start, num - args_printed,
1686 /* Print nameless args on STREAM.
1687 FI is the frameinfo for this frame, START is the offset
1688 of the first nameless arg, and NUM is the number of nameless args to
1689 print. FIRST is nonzero if this is the first argument (not just
1690 the first nameless arg). */
1693 print_frame_nameless_args (fi, start, num, first, stream)
1694 struct frame_info *fi;
1704 for (i = 0; i < num; i++)
1707 #ifdef NAMELESS_ARG_VALUE
1708 NAMELESS_ARG_VALUE (fi, start, &arg_value);
1710 argsaddr = FRAME_ARGS_ADDRESS (fi);
1714 arg_value = read_memory_integer (argsaddr + start, sizeof (int));
1718 fprintf_filtered (stream, ", ");
1720 #ifdef PRINT_NAMELESS_INTEGER
1721 PRINT_NAMELESS_INTEGER (stream, arg_value);
1723 #ifdef PRINT_TYPELESS_INTEGER
1724 PRINT_TYPELESS_INTEGER (stream, builtin_type_int, (LONGEST) arg_value);
1726 fprintf_filtered (stream, "%ld", arg_value);
1727 #endif /* PRINT_TYPELESS_INTEGER */
1728 #endif /* PRINT_NAMELESS_INTEGER */
1730 start += sizeof (int);
1736 printf_command (arg, from_tty)
1741 register char *s = arg;
1743 value_ptr *val_args;
1745 char *current_substring;
1747 int allocated_args = 20;
1748 struct cleanup *old_cleanups;
1750 val_args = (value_ptr *) xmalloc (allocated_args * sizeof (value_ptr));
1751 old_cleanups = make_cleanup (free_current_contents, &val_args);
1754 error_no_arg ("format-control string and values to print");
1756 /* Skip white space before format string */
1757 while (*s == ' ' || *s == '\t') s++;
1759 /* A format string should follow, enveloped in double quotes */
1761 error ("Bad format string, missing '\"'.");
1763 /* Parse the format-control string and copy it into the string STRING,
1764 processing some kinds of escape sequence. */
1766 f = string = (char *) alloca (strlen (s) + 1);
1774 error ("Bad format string, non-terminated '\"'.");
1786 *f++ = '\007'; /* Bell */
1811 /* ??? TODO: handle other escape sequences */
1812 error ("Unrecognized escape character \\%c in format string.",
1822 /* Skip over " and following space and comma. */
1825 while (*s == ' ' || *s == '\t') s++;
1827 if (*s != ',' && *s != 0)
1828 error ("Invalid argument syntax");
1831 while (*s == ' ' || *s == '\t') s++;
1833 /* Need extra space for the '\0's. Doubling the size is sufficient. */
1834 substrings = alloca (strlen (string) * 2);
1835 current_substring = substrings;
1838 /* Now scan the string for %-specs and see what kinds of args they want.
1839 argclass[I] classifies the %-specs so we can give printf_filtered
1840 something of the right size. */
1842 enum argclass {no_arg, int_arg, string_arg, double_arg, long_long_arg};
1843 enum argclass *argclass;
1844 enum argclass this_argclass;
1850 argclass = (enum argclass *) alloca (strlen (s) * sizeof *argclass);
1858 while (strchr ("0123456789.hlL-+ #", *f))
1860 if (*f == 'l' || *f == 'L')
1867 this_argclass = string_arg;
1873 this_argclass = double_arg;
1877 error ("`*' not supported for precision or width in printf");
1880 error ("Format specifier `n' not supported in printf");
1883 this_argclass = no_arg;
1888 this_argclass = long_long_arg;
1890 this_argclass = int_arg;
1894 if (this_argclass != no_arg)
1896 strncpy (current_substring, last_arg, f - last_arg);
1897 current_substring += f - last_arg;
1898 *current_substring++ = '\0';
1900 argclass[nargs_wanted++] = this_argclass;
1904 /* Now, parse all arguments and evaluate them.
1905 Store the VALUEs in VAL_ARGS. */
1910 if (nargs == allocated_args)
1911 val_args = (value_ptr *) xrealloc ((char *) val_args,
1912 (allocated_args *= 2)
1913 * sizeof (value_ptr));
1915 val_args[nargs] = parse_to_comma_and_eval (&s1);
1917 /* If format string wants a float, unchecked-convert the value to
1918 floating point of the same size */
1920 if (argclass[nargs] == double_arg)
1922 struct type *type = VALUE_TYPE (val_args[nargs]);
1923 if (TYPE_LENGTH (type) == sizeof (float))
1924 VALUE_TYPE (val_args[nargs]) = builtin_type_float;
1925 if (TYPE_LENGTH (type) == sizeof (double))
1926 VALUE_TYPE (val_args[nargs]) = builtin_type_double;
1934 if (nargs != nargs_wanted)
1935 error ("Wrong number of arguments for specified format-string");
1937 /* Now actually print them. */
1938 current_substring = substrings;
1939 for (i = 0; i < nargs; i++)
1941 switch (argclass[i])
1948 tem = value_as_pointer (val_args[i]);
1950 /* This is a %s argument. Find the length of the string. */
1955 read_memory (tem + j, &c, 1);
1960 /* Copy the string contents into a string inside GDB. */
1961 str = (char *) alloca (j + 1);
1962 read_memory (tem, str, j);
1965 printf_filtered (current_substring, str);
1970 double val = value_as_double (val_args[i]);
1971 printf_filtered (current_substring, val);
1975 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
1977 long long val = value_as_long (val_args[i]);
1978 printf_filtered (current_substring, val);
1982 error ("long long not supported in printf");
1986 /* FIXME: there should be separate int_arg and long_arg. */
1987 long val = value_as_long (val_args[i]);
1988 printf_filtered (current_substring, val);
1992 error ("internal error in printf_command");
1994 /* Skip to the next substring. */
1995 current_substring += strlen (current_substring) + 1;
1997 /* Print the portion of the format string after the last argument. */
1998 printf_filtered (last_arg);
2000 do_cleanups (old_cleanups);
2003 /* Dump a specified section of assembly code. With no command line
2004 arguments, this command will dump the assembly code for the
2005 function surrounding the pc value in the selected frame. With one
2006 argument, it will dump the assembly code surrounding that pc value.
2007 Two arguments are interpeted as bounds within which to dump
2012 disassemble_command (arg, from_tty)
2016 CORE_ADDR low, high;
2024 if (!selected_frame)
2025 error ("No frame selected.\n");
2027 pc = get_frame_pc (selected_frame);
2028 if (find_pc_partial_function (pc, &name, &low, &high) == 0)
2029 error ("No function contains program counter for selected frame.\n");
2031 else if (!(space_index = (char *) strchr (arg, ' ')))
2034 pc = parse_and_eval_address (arg);
2035 if (find_pc_partial_function (pc, &name, &low, &high) == 0)
2036 error ("No function contains specified address.\n");
2040 /* Two arguments. */
2041 *space_index = '\0';
2042 low = parse_and_eval_address (arg);
2043 high = parse_and_eval_address (space_index + 1);
2046 printf_filtered ("Dump of assembler code ");
2049 printf_filtered ("for function %s:\n", name);
2053 printf_filtered ("from ");
2054 print_address_numeric (low, 1, gdb_stdout);
2055 printf_filtered (" to ");
2056 print_address_numeric (high, 1, gdb_stdout);
2057 printf_filtered (":\n");
2060 /* Dump the specified range. */
2061 for (pc = low; pc < high; )
2064 print_address (pc, gdb_stdout);
2065 printf_filtered (":\t");
2066 /* We often wrap here if there are long symbolic names. */
2068 pc += print_insn (pc, gdb_stdout);
2069 printf_filtered ("\n");
2071 printf_filtered ("End of assembler dump.\n");
2072 gdb_flush (gdb_stdout);
2075 /* Print the instruction at address MEMADDR in debugged memory,
2076 on STREAM. Returns length of the instruction, in bytes. */
2079 print_insn (memaddr, stream)
2083 /* If there's no disassembler, something is very wrong. */
2084 if (tm_print_insn == NULL)
2087 if (TARGET_BYTE_ORDER == BIG_ENDIAN)
2088 tm_print_insn_info.endian = BFD_ENDIAN_BIG;
2090 tm_print_insn_info.endian = BFD_ENDIAN_LITTLE;
2091 return (*tm_print_insn) (memaddr, &tm_print_insn_info);
2096 _initialize_printcmd ()
2098 current_display_number = -1;
2100 add_info ("address", address_info,
2101 "Describe where variable VAR is stored.");
2103 add_com ("x", class_vars, x_command,
2104 concat ("Examine memory: x/FMT ADDRESS.\n\
2105 ADDRESS is an expression for the memory address to examine.\n\
2106 FMT is a repeat count followed by a format letter and a size letter.\n\
2107 Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),\n\
2108 t(binary), f(float), a(address), i(instruction), c(char) and s(string).\n",
2109 "Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).\n\
2110 The specified number of objects of the specified size are printed\n\
2111 according to the format.\n\n\
2112 Defaults for format and size letters are those previously used.\n\
2113 Default count is 1. Default address is following last thing printed\n\
2114 with this command or \"print\".", NULL));
2116 add_com ("disassemble", class_vars, disassemble_command,
2117 "Disassemble a specified section of memory.\n\
2118 Default is the function surrounding the pc of the selected frame.\n\
2119 With a single argument, the function surrounding that address is dumped.\n\
2120 Two arguments are taken as a range of memory to dump.");
2123 add_com ("whereis", class_vars, whereis_command,
2124 "Print line number and file of definition of variable.");
2127 add_info ("display", display_info,
2128 "Expressions to display when program stops, with code numbers.");
2130 add_cmd ("undisplay", class_vars, undisplay_command,
2131 "Cancel some expressions to be displayed when program stops.\n\
2132 Arguments are the code numbers of the expressions to stop displaying.\n\
2133 No argument means cancel all automatic-display expressions.\n\
2134 \"delete display\" has the same effect as this command.\n\
2135 Do \"info display\" to see current list of code numbers.",
2138 add_com ("display", class_vars, display_command,
2139 "Print value of expression EXP each time the program stops.\n\
2140 /FMT may be used before EXP as in the \"print\" command.\n\
2141 /FMT \"i\" or \"s\" or including a size-letter is allowed,\n\
2142 as in the \"x\" command, and then EXP is used to get the address to examine\n\
2143 and examining is done as in the \"x\" command.\n\n\
2144 With no argument, display all currently requested auto-display expressions.\n\
2145 Use \"undisplay\" to cancel display requests previously made."
2148 add_cmd ("display", class_vars, enable_display,
2149 "Enable some expressions to be displayed when program stops.\n\
2150 Arguments are the code numbers of the expressions to resume displaying.\n\
2151 No argument means enable all automatic-display expressions.\n\
2152 Do \"info display\" to see current list of code numbers.", &enablelist);
2154 add_cmd ("display", class_vars, disable_display_command,
2155 "Disable some expressions to be displayed when program stops.\n\
2156 Arguments are the code numbers of the expressions to stop displaying.\n\
2157 No argument means disable all automatic-display expressions.\n\
2158 Do \"info display\" to see current list of code numbers.", &disablelist);
2160 add_cmd ("display", class_vars, undisplay_command,
2161 "Cancel some expressions to be displayed when program stops.\n\
2162 Arguments are the code numbers of the expressions to stop displaying.\n\
2163 No argument means cancel all automatic-display expressions.\n\
2164 Do \"info display\" to see current list of code numbers.", &deletelist);
2166 add_com ("printf", class_vars, printf_command,
2167 "printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
2168 This is useful for formatted output in user-defined commands.");
2170 add_com ("output", class_vars, output_command,
2171 "Like \"print\" but don't put in value history and don't print newline.\n\
2172 This is useful in user-defined commands.");
2174 add_prefix_cmd ("set", class_vars, set_command,
2175 concat ("Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2176 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2177 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2178 with $), a register (a few standard names starting with $), or an actual\n\
2179 variable in the program being debugged. EXP is any valid expression.\n",
2180 "Use \"set variable\" for variables with names identical to set subcommands.\n\
2181 \nWith a subcommand, this command modifies parts of the gdb environment.\n\
2182 You can see these environment settings with the \"show\" command.", NULL),
2183 &setlist, "set ", 1, &cmdlist);
2185 /* "call" is the same as "set", but handy for dbx users to call fns. */
2186 add_com ("call", class_vars, call_command,
2187 "Call a function in the program.\n\
2188 The argument is the function name and arguments, in the notation of the\n\
2189 current working language. The result is printed and saved in the value\n\
2190 history, if it is not void.");
2192 add_cmd ("variable", class_vars, set_command,
2193 "Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2194 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2195 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2196 with $), a register (a few standard names starting with $), or an actual\n\
2197 variable in the program being debugged. EXP is any valid expression.\n\
2198 This may usually be abbreviated to simply \"set\".",
2201 add_com ("print", class_vars, print_command,
2202 concat ("Print value of expression EXP.\n\
2203 Variables accessible are those of the lexical environment of the selected\n\
2204 stack frame, plus all those whose scope is global or an entire file.\n\
2206 $NUM gets previous value number NUM. $ and $$ are the last two values.\n\
2207 $$NUM refers to NUM'th value back from the last one.\n\
2208 Names starting with $ refer to registers (with the values they would have\n",
2209 "if the program were to return to the stack frame now selected, restoring\n\
2210 all registers saved by frames farther in) or else to debugger\n\
2211 \"convenience\" variables (any such name not a known register).\n\
2212 Use assignment expressions to give values to convenience variables.\n",
2214 {TYPE}ADREXP refers to a datum of data type TYPE, located at address ADREXP.\n\
2215 @ is a binary operator for treating consecutive data objects\n\
2216 anywhere in memory as an array. FOO@NUM gives an array whose first\n\
2217 element is FOO, whose second element is stored in the space following\n\
2218 where FOO is stored, etc. FOO must be an expression whose value\n\
2219 resides in memory.\n",
2221 EXP may be preceded with /FMT, where FMT is a format letter\n\
2222 but no count or size letter (see \"x\" command).", NULL));
2223 add_com_alias ("p", "print", class_vars, 1);
2225 add_com ("inspect", class_vars, inspect_command,
2226 "Same as \"print\" command, except that if you are running in the epoch\n\
2227 environment, the value is printed in its own window.");
2230 add_set_cmd ("max-symbolic-offset", no_class, var_uinteger,
2231 (char *)&max_symbolic_offset,
2232 "Set the largest offset that will be printed in <symbol+1234> form.",
2236 add_set_cmd ("symbol-filename", no_class, var_boolean,
2237 (char *)&print_symbol_filename,
2238 "Set printing of source filename and line number with <symbol>.",
2242 examine_b_type = init_type (TYPE_CODE_INT, 1, 0, "examine_b_type", NULL);
2243 examine_h_type = init_type (TYPE_CODE_INT, 2, 0, "examine_h_type", NULL);
2244 examine_w_type = init_type (TYPE_CODE_INT, 4, 0, "examine_w_type", NULL);
2245 examine_g_type = init_type (TYPE_CODE_INT, 8, 0, "examine_g_type", NULL);
2247 INIT_DISASSEMBLE_INFO_NO_ARCH (tm_print_insn_info, gdb_stdout, (fprintf_ftype)fprintf_filtered);
2248 tm_print_insn_info.read_memory_func = dis_asm_read_memory;
2249 tm_print_insn_info.memory_error_func = dis_asm_memory_error;
2250 tm_print_insn_info.print_address_func = dis_asm_print_address;