1 /* Print values for GNU debugger GDB.
2 Copyright 1986-1991, 1993-1995, 1998, 2000 Free Software Foundation, Inc.
4 This file is part of GDB.
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. */
22 #include "gdb_string.h"
28 #include "expression.h"
32 #include "breakpoint.h"
36 #include "symfile.h" /* for overlay functions */
37 #include "objfiles.h" /* ditto */
42 extern int asm_demangle; /* Whether to demangle syms in asm printouts */
43 extern int addressprint; /* Whether to print hex addresses in HLL " */
52 /* Last specified output format. */
54 static char last_format = 'x';
56 /* Last specified examination size. 'b', 'h', 'w' or `q'. */
58 static char last_size = 'w';
60 /* Default address to examine next. */
62 static CORE_ADDR next_address;
64 /* Default section to examine next. */
66 static asection *next_section;
68 /* Last address examined. */
70 static CORE_ADDR last_examine_address;
72 /* Contents of last address examined.
73 This is not valid past the end of the `x' command! */
75 static value_ptr last_examine_value;
77 /* Largest offset between a symbolic value and an address, that will be
78 printed as `0x1234 <symbol+offset>'. */
80 static unsigned int max_symbolic_offset = UINT_MAX;
82 /* Append the source filename and linenumber of the symbol when
83 printing a symbolic value as `<symbol at filename:linenum>' if set. */
84 static int print_symbol_filename = 0;
86 /* Number of auto-display expression currently being displayed.
87 So that we can disable it if we get an error or a signal within it.
88 -1 when not doing one. */
90 int current_display_number;
92 /* Flag to low-level print routines that this value is being printed
93 in an epoch window. We'd like to pass this as a parameter, but
94 every routine would need to take it. Perhaps we can encapsulate
95 this in the I/O stream once we have GNU stdio. */
101 /* Chain link to next auto-display item. */
102 struct display *next;
103 /* Expression to be evaluated and displayed. */
104 struct expression *exp;
105 /* Item number of this auto-display item. */
107 /* Display format specified. */
108 struct format_data format;
109 /* Innermost block required by this expression when evaluated */
111 /* Status of this display (enabled or disabled) */
115 /* Chain of expressions whose values should be displayed
116 automatically each time the program stops. */
118 static struct display *display_chain;
120 static int display_number;
122 /* Prototypes for exported functions. */
124 void output_command PARAMS ((char *, int));
126 void _initialize_printcmd PARAMS ((void));
128 /* Prototypes for local functions. */
130 static void delete_display PARAMS ((int));
132 static void enable_display PARAMS ((char *, int));
134 static void disable_display_command PARAMS ((char *, int));
136 static void disassemble_command PARAMS ((char *, int));
138 static void printf_command PARAMS ((char *, int));
140 static void print_frame_nameless_args (struct frame_info *, long,
141 int, int, struct ui_file *);
143 static void display_info PARAMS ((char *, int));
145 static void do_one_display PARAMS ((struct display *));
147 static void undisplay_command PARAMS ((char *, int));
149 static void free_display PARAMS ((struct display *));
151 static void display_command PARAMS ((char *, int));
153 void x_command PARAMS ((char *, int));
155 static void address_info PARAMS ((char *, int));
157 static void set_command PARAMS ((char *, int));
159 static void call_command PARAMS ((char *, int));
161 static void inspect_command PARAMS ((char *, int));
163 static void print_command PARAMS ((char *, int));
165 static void print_command_1 PARAMS ((char *, int, int));
167 static void validate_format PARAMS ((struct format_data, char *));
169 static void do_examine PARAMS ((struct format_data, CORE_ADDR addr, asection * section));
171 static void print_formatted (value_ptr, int, int, struct ui_file *);
173 static struct format_data decode_format PARAMS ((char **, int, int));
175 static int print_insn (CORE_ADDR, struct ui_file *);
177 static void sym_info PARAMS ((char *, int));
180 /* Decode a format specification. *STRING_PTR should point to it.
181 OFORMAT and OSIZE are used as defaults for the format and size
182 if none are given in the format specification.
183 If OSIZE is zero, then the size field of the returned value
184 should be set only if a size is explicitly specified by the
186 The structure returned describes all the data
187 found in the specification. In addition, *STRING_PTR is advanced
188 past the specification and past all whitespace following it. */
190 static struct format_data
191 decode_format (string_ptr, oformat, osize)
196 struct format_data val;
197 register char *p = *string_ptr;
203 if (*p >= '0' && *p <= '9')
204 val.count = atoi (p);
205 while (*p >= '0' && *p <= '9')
208 /* Now process size or format letters that follow. */
212 if (*p == 'b' || *p == 'h' || *p == 'w' || *p == 'g')
214 else if (*p >= 'a' && *p <= 'z')
220 while (*p == ' ' || *p == '\t')
224 /* Set defaults for format and size if not specified. */
225 if (val.format == '?')
229 /* Neither has been specified. */
230 val.format = oformat;
234 /* If a size is specified, any format makes a reasonable
235 default except 'i'. */
236 val.format = oformat == 'i' ? 'x' : oformat;
238 else if (val.size == '?')
243 /* Pick the appropriate size for an address. */
244 if (TARGET_PTR_BIT == 64)
245 val.size = osize ? 'g' : osize;
246 else if (TARGET_PTR_BIT == 32)
247 val.size = osize ? 'w' : osize;
248 else if (TARGET_PTR_BIT == 16)
249 val.size = osize ? 'h' : osize;
251 /* Bad value for TARGET_PTR_BIT */
255 /* Floating point has to be word or giantword. */
256 if (osize == 'w' || osize == 'g')
259 /* Default it to giantword if the last used size is not
261 val.size = osize ? 'g' : osize;
264 /* Characters default to one byte. */
265 val.size = osize ? 'b' : osize;
268 /* The default is the size most recently specified. */
275 /* Print value VAL on stream according to FORMAT, a letter or 0.
276 Do not end with a newline.
277 0 means print VAL according to its own type.
278 SIZE is the letter for the size of datum being printed.
279 This is used to pad hex numbers so they line up. */
282 print_formatted (val, format, size, stream)
283 register value_ptr val;
286 struct ui_file *stream;
288 struct type *type = check_typedef (VALUE_TYPE (val));
289 int len = TYPE_LENGTH (type);
291 if (VALUE_LVAL (val) == lval_memory)
293 next_address = VALUE_ADDRESS (val) + len;
294 next_section = VALUE_BFD_SECTION (val);
300 /* FIXME: Need to handle wchar_t's here... */
301 next_address = VALUE_ADDRESS (val)
302 + val_print_string (VALUE_ADDRESS (val), -1, 1, stream);
303 next_section = VALUE_BFD_SECTION (val);
307 /* The old comment says
308 "Force output out, print_insn not using _filtered".
309 I'm not completely sure what that means, I suspect most print_insn
310 now do use _filtered, so I guess it's obsolete.
311 --Yes, it does filter now, and so this is obsolete. -JB */
313 /* We often wrap here if there are long symbolic names. */
315 next_address = VALUE_ADDRESS (val)
316 + print_insn (VALUE_ADDRESS (val), stream);
317 next_section = VALUE_BFD_SECTION (val);
322 || TYPE_CODE (type) == TYPE_CODE_ARRAY
323 || TYPE_CODE (type) == TYPE_CODE_STRING
324 || TYPE_CODE (type) == TYPE_CODE_STRUCT
325 || TYPE_CODE (type) == TYPE_CODE_UNION)
326 /* If format is 0, use the 'natural' format for
327 * that type of value. If the type is non-scalar,
328 * we have to use language rules to print it as
329 * a series of scalars.
331 value_print (val, stream, format, Val_pretty_default);
333 /* User specified format, so don't look to the
334 * the type to tell us what to do.
336 print_scalar_formatted (VALUE_CONTENTS (val), type,
337 format, size, stream);
341 /* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
342 according to letters FORMAT and SIZE on STREAM.
343 FORMAT may not be zero. Formats s and i are not supported at this level.
345 This is how the elements of an array or structure are printed
349 print_scalar_formatted (valaddr, type, format, size, stream)
354 struct ui_file *stream;
357 unsigned int len = TYPE_LENGTH (type);
359 if (len > sizeof (LONGEST)
367 if (!TYPE_UNSIGNED (type)
368 || !extract_long_unsigned_integer (valaddr, len, &val_long))
370 /* We can't print it normally, but we can print it in hex.
371 Printing it in the wrong radix is more useful than saying
372 "use /x, you dummy". */
373 /* FIXME: we could also do octal or binary if that was the
375 /* FIXME: we should be using the size field to give us a
376 minimum field width to print. */
379 print_octal_chars (stream, valaddr, len);
380 else if (format == 'd')
381 print_decimal_chars (stream, valaddr, len);
382 else if (format == 't')
383 print_binary_chars (stream, valaddr, len);
385 /* replace with call to print_hex_chars? Looks
386 like val_print_type_code_int is redoing
389 val_print_type_code_int (type, valaddr, stream);
394 /* If we get here, extract_long_unsigned_integer set val_long. */
396 else if (format != 'f')
397 val_long = unpack_long (type, valaddr);
399 /* If we are printing it as unsigned, truncate it in case it is actually
400 a negative signed value (e.g. "print/u (short)-1" should print 65535
401 (if shorts are 16 bits) instead of 4294967295). */
404 if (len < sizeof (LONGEST))
405 val_long &= ((LONGEST) 1 << HOST_CHAR_BIT * len) - 1;
413 /* no size specified, like in print. Print varying # of digits. */
414 print_longest (stream, 'x', 1, val_long);
423 print_longest (stream, size, 1, val_long);
426 error ("Undefined output size \"%c\".", size);
431 print_longest (stream, 'd', 1, val_long);
435 print_longest (stream, 'u', 0, val_long);
440 print_longest (stream, 'o', 1, val_long);
442 fprintf_filtered (stream, "0");
446 print_address (unpack_pointer (type, valaddr), stream);
450 value_print (value_from_longest (builtin_type_true_char, val_long),
451 stream, 0, Val_pretty_default);
455 if (len == sizeof (float))
456 type = builtin_type_float;
457 else if (len == sizeof (double))
458 type = builtin_type_double;
459 print_floating (valaddr, type, stream);
466 /* Binary; 't' stands for "two". */
468 char bits[8 * (sizeof val_long) + 1];
469 char buf[8 * (sizeof val_long) + 32];
474 width = 8 * (sizeof val_long);
491 error ("Undefined output size \"%c\".", size);
497 bits[width] = (val_long & 1) ? '1' : '0';
502 while (*cp && *cp == '0')
507 strcpy (buf, local_binary_format_prefix ());
509 strcat (buf, local_binary_format_suffix ());
510 fprintf_filtered (stream, buf);
515 error ("Undefined output format \"%c\".", format);
519 /* Specify default address for `x' command.
520 `info lines' uses this. */
523 set_next_address (addr)
528 /* Make address available to the user as $_. */
529 set_internalvar (lookup_internalvar ("_"),
530 value_from_longest (lookup_pointer_type (builtin_type_void),
534 /* Optionally print address ADDR symbolically as <SYMBOL+OFFSET> on STREAM,
535 after LEADIN. Print nothing if no symbolic name is found nearby.
536 Optionally also print source file and line number, if available.
537 DO_DEMANGLE controls whether to print a symbol in its native "raw" form,
538 or to interpret it as a possible C++ name and convert it back to source
539 form. However note that DO_DEMANGLE can be overridden by the specific
540 settings of the demangle and asm_demangle variables. */
543 print_address_symbolic (addr, stream, do_demangle, leadin)
545 struct ui_file *stream;
549 struct minimal_symbol *msymbol;
550 struct symbol *symbol;
551 struct symtab *symtab = 0;
552 CORE_ADDR name_location = 0;
554 asection *section = 0;
557 /* Determine if the address is in an overlay, and whether it is mapped. */
558 if (overlay_debugging)
560 section = find_pc_overlay (addr);
561 if (pc_in_unmapped_range (addr, section))
564 addr = overlay_mapped_address (addr, section);
568 /* On some targets, add in extra "flag" bits to PC for
569 disassembly. This should ensure that "rounding errors" in
570 symbol addresses that are masked for disassembly favour the
571 the correct symbol. */
573 #ifdef GDB_TARGET_UNMASK_DISAS_PC
574 addr = GDB_TARGET_UNMASK_DISAS_PC (addr);
577 /* First try to find the address in the symbol table, then
578 in the minsyms. Take the closest one. */
580 /* This is defective in the sense that it only finds text symbols. So
581 really this is kind of pointless--we should make sure that the
582 minimal symbols have everything we need (by changing that we could
583 save some memory, but for many debug format--ELF/DWARF or
584 anything/stabs--it would be inconvenient to eliminate those minimal
586 msymbol = lookup_minimal_symbol_by_pc_section (addr, section);
587 symbol = find_pc_sect_function (addr, section);
591 name_location = BLOCK_START (SYMBOL_BLOCK_VALUE (symbol));
593 name = SYMBOL_SOURCE_NAME (symbol);
595 name = SYMBOL_LINKAGE_NAME (symbol);
600 if (SYMBOL_VALUE_ADDRESS (msymbol) > name_location || symbol == NULL)
602 /* The msymbol is closer to the address than the symbol;
603 use the msymbol instead. */
606 name_location = SYMBOL_VALUE_ADDRESS (msymbol);
608 name = SYMBOL_SOURCE_NAME (msymbol);
610 name = SYMBOL_LINKAGE_NAME (msymbol);
613 if (symbol == NULL && msymbol == NULL)
616 /* On some targets, mask out extra "flag" bits from PC for handsome
619 #ifdef GDB_TARGET_MASK_DISAS_PC
620 name_location = GDB_TARGET_MASK_DISAS_PC (name_location);
621 addr = GDB_TARGET_MASK_DISAS_PC (addr);
624 /* If the nearest symbol is too far away, don't print anything symbolic. */
626 /* For when CORE_ADDR is larger than unsigned int, we do math in
627 CORE_ADDR. But when we detect unsigned wraparound in the
628 CORE_ADDR math, we ignore this test and print the offset,
629 because addr+max_symbolic_offset has wrapped through the end
630 of the address space back to the beginning, giving bogus comparison. */
631 if (addr > name_location + max_symbolic_offset
632 && name_location + max_symbolic_offset > name_location)
635 fputs_filtered (leadin, stream);
637 fputs_filtered ("<*", stream);
639 fputs_filtered ("<", stream);
640 fputs_filtered (name, stream);
641 if (addr != name_location)
642 fprintf_filtered (stream, "+%u", (unsigned int) (addr - name_location));
644 /* Append source filename and line number if desired. Give specific
645 line # of this addr, if we have it; else line # of the nearest symbol. */
646 if (print_symbol_filename)
648 struct symtab_and_line sal;
650 sal = find_pc_sect_line (addr, section, 0);
653 fprintf_filtered (stream, " at %s:%d", sal.symtab->filename, sal.line);
654 else if (symtab && symbol && symbol->line)
655 fprintf_filtered (stream, " at %s:%d", symtab->filename, symbol->line);
657 fprintf_filtered (stream, " in %s", symtab->filename);
660 fputs_filtered ("*>", stream);
662 fputs_filtered (">", stream);
666 /* Print address ADDR on STREAM. USE_LOCAL means the same thing as for
669 print_address_numeric (addr, use_local, stream)
672 struct ui_file *stream;
674 /* This assumes a CORE_ADDR can fit in a LONGEST. Probably a safe
676 print_longest (stream, 'x', use_local, (ULONGEST) addr);
679 /* Print address ADDR symbolically on STREAM.
680 First print it as a number. Then perhaps print
681 <SYMBOL + OFFSET> after the number. */
684 print_address (addr, stream)
686 struct ui_file *stream;
688 print_address_numeric (addr, 1, stream);
689 print_address_symbolic (addr, stream, asm_demangle, " ");
692 /* Print address ADDR symbolically on STREAM. Parameter DEMANGLE
693 controls whether to print the symbolic name "raw" or demangled.
694 Global setting "addressprint" controls whether to print hex address
698 print_address_demangle (addr, stream, do_demangle)
700 struct ui_file *stream;
705 fprintf_filtered (stream, "0");
707 else if (addressprint)
709 print_address_numeric (addr, 1, stream);
710 print_address_symbolic (addr, stream, do_demangle, " ");
714 print_address_symbolic (addr, stream, do_demangle, "");
719 /* These are the types that $__ will get after an examine command of one
722 static struct type *examine_i_type;
724 static struct type *examine_b_type;
725 static struct type *examine_h_type;
726 static struct type *examine_w_type;
727 static struct type *examine_g_type;
729 /* Examine data at address ADDR in format FMT.
730 Fetch it from memory and print on gdb_stdout. */
733 do_examine (fmt, addr, sect)
734 struct format_data fmt;
738 register char format = 0;
740 register int count = 1;
741 struct type *val_type = NULL;
743 register int maxelts;
751 /* String or instruction format implies fetch single bytes
752 regardless of the specified size. */
753 if (format == 's' || format == 'i')
757 val_type = examine_i_type;
758 else if (size == 'b')
759 val_type = examine_b_type;
760 else if (size == 'h')
761 val_type = examine_h_type;
762 else if (size == 'w')
763 val_type = examine_w_type;
764 else if (size == 'g')
765 val_type = examine_g_type;
772 if (format == 's' || format == 'i')
775 /* Print as many objects as specified in COUNT, at most maxelts per line,
776 with the address of the next one at the start of each line. */
781 print_address (next_address, gdb_stdout);
782 printf_filtered (":");
787 printf_filtered ("\t");
788 /* Note that print_formatted sets next_address for the next
790 last_examine_address = next_address;
792 if (last_examine_value)
793 value_free (last_examine_value);
795 /* The value to be displayed is not fetched greedily.
796 Instead, to avoid the posibility of a fetched value not
797 being used, its retreval is delayed until the print code
798 uses it. When examining an instruction stream, the
799 disassembler will perform its own memory fetch using just
800 the address stored in LAST_EXAMINE_VALUE. FIXME: Should
801 the disassembler be modified so that LAST_EXAMINE_VALUE
802 is left with the byte sequence from the last complete
803 instruction fetched from memory? */
804 last_examine_value = value_at_lazy (val_type, next_address, sect);
806 if (last_examine_value)
807 release_value (last_examine_value);
809 print_formatted (last_examine_value, format, size, gdb_stdout);
811 printf_filtered ("\n");
812 gdb_flush (gdb_stdout);
817 validate_format (fmt, cmdname)
818 struct format_data fmt;
822 error ("Size letters are meaningless in \"%s\" command.", cmdname);
824 error ("Item count other than 1 is meaningless in \"%s\" command.",
826 if (fmt.format == 'i' || fmt.format == 's')
827 error ("Format letter \"%c\" is meaningless in \"%s\" command.",
828 fmt.format, cmdname);
831 /* Evaluate string EXP as an expression in the current language and
832 print the resulting value. EXP may contain a format specifier as the
833 first argument ("/x myvar" for example, to print myvar in hex).
837 print_command_1 (exp, inspect, voidprint)
842 struct expression *expr;
843 register struct cleanup *old_chain = 0;
844 register char format = 0;
845 register value_ptr val;
846 struct format_data fmt;
849 /* Pass inspect flag to the rest of the print routines in a global (sigh). */
850 inspect_it = inspect;
852 if (exp && *exp == '/')
855 fmt = decode_format (&exp, last_format, 0);
856 validate_format (fmt, "print");
857 last_format = format = fmt.format;
869 expr = parse_expression (exp);
870 old_chain = make_cleanup ((make_cleanup_func) free_current_contents,
873 val = evaluate_expression (expr);
875 /* C++: figure out what type we actually want to print it as. */
876 type = VALUE_TYPE (val);
879 && (TYPE_CODE (type) == TYPE_CODE_PTR
880 || TYPE_CODE (type) == TYPE_CODE_REF)
881 && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_STRUCT
882 || TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_UNION))
886 v = value_from_vtable_info (val, TYPE_TARGET_TYPE (type));
890 type = VALUE_TYPE (val);
895 val = access_value_history (0);
897 if (voidprint || (val && VALUE_TYPE (val) &&
898 TYPE_CODE (VALUE_TYPE (val)) != TYPE_CODE_VOID))
900 int histindex = record_latest_value (val);
903 annotate_value_history_begin (histindex, VALUE_TYPE (val));
905 annotate_value_begin (VALUE_TYPE (val));
908 printf_unfiltered ("\031(gdb-makebuffer \"%s\" %d '(\"", exp, histindex);
909 else if (histindex >= 0)
910 printf_filtered ("$%d = ", histindex);
913 annotate_value_history_value ();
915 print_formatted (val, format, fmt.size, gdb_stdout);
916 printf_filtered ("\n");
919 annotate_value_history_end ();
921 annotate_value_end ();
924 printf_unfiltered ("\") )\030");
928 do_cleanups (old_chain);
929 inspect_it = 0; /* Reset print routines to normal */
934 print_command (exp, from_tty)
938 print_command_1 (exp, 0, 1);
941 /* Same as print, except in epoch, it gets its own window */
944 inspect_command (exp, from_tty)
948 extern int epoch_interface;
950 print_command_1 (exp, epoch_interface, 1);
953 /* Same as print, except it doesn't print void results. */
956 call_command (exp, from_tty)
960 print_command_1 (exp, 0, 0);
965 output_command (exp, from_tty)
969 struct expression *expr;
970 register struct cleanup *old_chain;
971 register char format = 0;
972 register value_ptr val;
973 struct format_data fmt;
975 if (exp && *exp == '/')
978 fmt = decode_format (&exp, 0, 0);
979 validate_format (fmt, "output");
983 expr = parse_expression (exp);
984 old_chain = make_cleanup ((make_cleanup_func) free_current_contents, &expr);
986 val = evaluate_expression (expr);
988 annotate_value_begin (VALUE_TYPE (val));
990 print_formatted (val, format, fmt.size, gdb_stdout);
992 annotate_value_end ();
995 gdb_flush (gdb_stdout);
997 do_cleanups (old_chain);
1002 set_command (exp, from_tty)
1006 struct expression *expr = parse_expression (exp);
1007 register struct cleanup *old_chain
1008 = make_cleanup ((make_cleanup_func) free_current_contents, &expr);
1009 evaluate_expression (expr);
1010 do_cleanups (old_chain);
1015 sym_info (arg, from_tty)
1019 struct minimal_symbol *msymbol;
1020 struct objfile *objfile;
1021 struct obj_section *osect;
1023 CORE_ADDR addr, sect_addr;
1025 unsigned int offset;
1028 error_no_arg ("address");
1030 addr = parse_and_eval_address (arg);
1031 ALL_OBJSECTIONS (objfile, osect)
1033 sect = osect->the_bfd_section;
1034 sect_addr = overlay_mapped_address (addr, sect);
1036 if (osect->addr <= sect_addr && sect_addr < osect->endaddr &&
1037 (msymbol = lookup_minimal_symbol_by_pc_section (sect_addr, sect)))
1040 offset = sect_addr - SYMBOL_VALUE_ADDRESS (msymbol);
1042 printf_filtered ("%s + %u in ",
1043 SYMBOL_SOURCE_NAME (msymbol), offset);
1045 printf_filtered ("%s in ",
1046 SYMBOL_SOURCE_NAME (msymbol));
1047 if (pc_in_unmapped_range (addr, sect))
1048 printf_filtered ("load address range of ");
1049 if (section_is_overlay (sect))
1050 printf_filtered ("%s overlay ",
1051 section_is_mapped (sect) ? "mapped" : "unmapped");
1052 printf_filtered ("section %s", sect->name);
1053 printf_filtered ("\n");
1057 printf_filtered ("No symbol matches %s.\n", arg);
1062 address_info (exp, from_tty)
1066 register struct symbol *sym;
1067 register struct minimal_symbol *msymbol;
1069 register long basereg;
1071 CORE_ADDR load_addr;
1072 int is_a_field_of_this; /* C++: lookup_symbol sets this to nonzero
1073 if exp is a field of `this'. */
1076 error ("Argument required.");
1078 sym = lookup_symbol (exp, get_selected_block (), VAR_NAMESPACE,
1079 &is_a_field_of_this, (struct symtab **) NULL);
1082 if (is_a_field_of_this)
1084 printf_filtered ("Symbol \"");
1085 fprintf_symbol_filtered (gdb_stdout, exp,
1086 current_language->la_language, DMGL_ANSI);
1087 printf_filtered ("\" is a field of the local class variable `this'\n");
1091 msymbol = lookup_minimal_symbol (exp, NULL, NULL);
1093 if (msymbol != NULL)
1095 load_addr = SYMBOL_VALUE_ADDRESS (msymbol);
1097 printf_filtered ("Symbol \"");
1098 fprintf_symbol_filtered (gdb_stdout, exp,
1099 current_language->la_language, DMGL_ANSI);
1100 printf_filtered ("\" is at ");
1101 print_address_numeric (load_addr, 1, gdb_stdout);
1102 printf_filtered (" in a file compiled without debugging");
1103 section = SYMBOL_BFD_SECTION (msymbol);
1104 if (section_is_overlay (section))
1106 load_addr = overlay_unmapped_address (load_addr, section);
1107 printf_filtered (",\n -- loaded at ");
1108 print_address_numeric (load_addr, 1, gdb_stdout);
1109 printf_filtered (" in overlay section %s", section->name);
1111 printf_filtered (".\n");
1114 error ("No symbol \"%s\" in current context.", exp);
1118 printf_filtered ("Symbol \"");
1119 fprintf_symbol_filtered (gdb_stdout, SYMBOL_NAME (sym),
1120 current_language->la_language, DMGL_ANSI);
1121 printf_filtered ("\" is ");
1122 val = SYMBOL_VALUE (sym);
1123 basereg = SYMBOL_BASEREG (sym);
1124 section = SYMBOL_BFD_SECTION (sym);
1126 switch (SYMBOL_CLASS (sym))
1129 case LOC_CONST_BYTES:
1130 printf_filtered ("constant");
1134 printf_filtered ("a label at address ");
1135 print_address_numeric (load_addr = SYMBOL_VALUE_ADDRESS (sym),
1137 if (section_is_overlay (section))
1139 load_addr = overlay_unmapped_address (load_addr, section);
1140 printf_filtered (",\n -- loaded at ");
1141 print_address_numeric (load_addr, 1, gdb_stdout);
1142 printf_filtered (" in overlay section %s", section->name);
1147 printf_filtered ("a variable in register %s", REGISTER_NAME (val));
1151 printf_filtered ("static storage at address ");
1152 print_address_numeric (load_addr = SYMBOL_VALUE_ADDRESS (sym),
1154 if (section_is_overlay (section))
1156 load_addr = overlay_unmapped_address (load_addr, section);
1157 printf_filtered (",\n -- loaded at ");
1158 print_address_numeric (load_addr, 1, gdb_stdout);
1159 printf_filtered (" in overlay section %s", section->name);
1164 printf_filtered ("external global (indirect addressing), at address *(");
1165 print_address_numeric (load_addr = SYMBOL_VALUE_ADDRESS (sym),
1167 printf_filtered (")");
1168 if (section_is_overlay (section))
1170 load_addr = overlay_unmapped_address (load_addr, section);
1171 printf_filtered (",\n -- loaded at ");
1172 print_address_numeric (load_addr, 1, gdb_stdout);
1173 printf_filtered (" in overlay section %s", section->name);
1178 printf_filtered ("an argument in register %s", REGISTER_NAME (val));
1181 case LOC_REGPARM_ADDR:
1182 printf_filtered ("address of an argument in register %s", REGISTER_NAME (val));
1186 printf_filtered ("an argument at offset %ld", val);
1190 printf_filtered ("an argument at frame offset %ld", val);
1194 printf_filtered ("a local variable at frame offset %ld", val);
1198 printf_filtered ("a reference argument at offset %ld", val);
1202 printf_filtered ("a variable at offset %ld from register %s",
1203 val, REGISTER_NAME (basereg));
1206 case LOC_BASEREG_ARG:
1207 printf_filtered ("an argument at offset %ld from register %s",
1208 val, REGISTER_NAME (basereg));
1212 printf_filtered ("a typedef");
1216 printf_filtered ("a function at address ");
1217 #ifdef GDB_TARGET_MASK_DISAS_PC
1218 print_address_numeric
1219 (load_addr = GDB_TARGET_MASK_DISAS_PC (BLOCK_START (SYMBOL_BLOCK_VALUE (sym))),
1222 print_address_numeric (load_addr = BLOCK_START (SYMBOL_BLOCK_VALUE (sym)),
1225 if (section_is_overlay (section))
1227 load_addr = overlay_unmapped_address (load_addr, section);
1228 printf_filtered (",\n -- loaded at ");
1229 print_address_numeric (load_addr, 1, gdb_stdout);
1230 printf_filtered (" in overlay section %s", section->name);
1234 case LOC_UNRESOLVED:
1236 struct minimal_symbol *msym;
1238 msym = lookup_minimal_symbol (SYMBOL_NAME (sym), NULL, NULL);
1240 printf_filtered ("unresolved");
1243 section = SYMBOL_BFD_SECTION (msym);
1244 printf_filtered ("static storage at address ");
1245 print_address_numeric (load_addr = SYMBOL_VALUE_ADDRESS (msym),
1247 if (section_is_overlay (section))
1249 load_addr = overlay_unmapped_address (load_addr, section);
1250 printf_filtered (",\n -- loaded at ");
1251 print_address_numeric (load_addr, 1, gdb_stdout);
1252 printf_filtered (" in overlay section %s", section->name);
1258 case LOC_THREAD_LOCAL_STATIC:
1260 "a thread-local variable at offset %ld from the thread base register %s",
1261 val, REGISTER_NAME (basereg));
1264 case LOC_OPTIMIZED_OUT:
1265 printf_filtered ("optimized out");
1269 printf_filtered ("of unknown (botched) type");
1272 printf_filtered (".\n");
1276 x_command (exp, from_tty)
1280 struct expression *expr;
1281 struct format_data fmt;
1282 struct cleanup *old_chain;
1285 fmt.format = last_format;
1286 fmt.size = last_size;
1289 if (exp && *exp == '/')
1292 fmt = decode_format (&exp, last_format, last_size);
1295 /* If we have an expression, evaluate it and use it as the address. */
1297 if (exp != 0 && *exp != 0)
1299 expr = parse_expression (exp);
1300 /* Cause expression not to be there any more
1301 if this command is repeated with Newline.
1302 But don't clobber a user-defined command's definition. */
1305 old_chain = make_cleanup ((make_cleanup_func) free_current_contents,
1307 val = evaluate_expression (expr);
1308 if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_REF)
1309 val = value_ind (val);
1310 /* In rvalue contexts, such as this, functions are coerced into
1311 pointers to functions. This makes "x/i main" work. */
1312 if ( /* last_format == 'i'
1313 && */ TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FUNC
1314 && VALUE_LVAL (val) == lval_memory)
1315 next_address = VALUE_ADDRESS (val);
1317 next_address = value_as_pointer (val);
1318 if (VALUE_BFD_SECTION (val))
1319 next_section = VALUE_BFD_SECTION (val);
1320 do_cleanups (old_chain);
1323 do_examine (fmt, next_address, next_section);
1325 /* If the examine succeeds, we remember its size and format for next time. */
1326 last_size = fmt.size;
1327 last_format = fmt.format;
1329 /* Set a couple of internal variables if appropriate. */
1330 if (last_examine_value)
1332 /* Make last address examined available to the user as $_. Use
1333 the correct pointer type. */
1334 set_internalvar (lookup_internalvar ("_"),
1335 value_from_longest (
1336 lookup_pointer_type (VALUE_TYPE (last_examine_value)),
1337 (LONGEST) last_examine_address));
1339 /* Make contents of last address examined available to the user as $__. */
1340 /* If the last value has not been fetched from memory then don't
1341 fetch it now - instead mark it by voiding the $__ variable. */
1342 if (VALUE_LAZY (last_examine_value))
1343 set_internalvar (lookup_internalvar ("__"),
1344 allocate_value (builtin_type_void));
1346 set_internalvar (lookup_internalvar ("__"), last_examine_value);
1351 /* Add an expression to the auto-display chain.
1352 Specify the expression. */
1355 display_command (exp, from_tty)
1359 struct format_data fmt;
1360 register struct expression *expr;
1361 register struct display *new;
1365 if (tui_version && *exp == '$')
1366 display_it = ((TuiStatus) tuiDo (
1367 (TuiOpaqueFuncPtr) tui_vSetLayoutTo, exp) == TUI_FAILURE);
1381 fmt = decode_format (&exp, 0, 0);
1382 if (fmt.size && fmt.format == 0)
1384 if (fmt.format == 'i' || fmt.format == 's')
1394 innermost_block = 0;
1395 expr = parse_expression (exp);
1397 new = (struct display *) xmalloc (sizeof (struct display));
1400 new->block = innermost_block;
1401 new->next = display_chain;
1402 new->number = ++display_number;
1404 new->status = enabled;
1405 display_chain = new;
1407 if (from_tty && target_has_execution)
1408 do_one_display (new);
1418 free ((PTR) d->exp);
1422 /* Clear out the display_chain.
1423 Done when new symtabs are loaded, since this invalidates
1424 the types stored in many expressions. */
1429 register struct display *d;
1431 while ((d = display_chain) != NULL)
1433 free ((PTR) d->exp);
1434 display_chain = d->next;
1439 /* Delete the auto-display number NUM. */
1442 delete_display (num)
1445 register struct display *d1, *d;
1448 error ("No display number %d.", num);
1450 if (display_chain->number == num)
1453 display_chain = d1->next;
1457 for (d = display_chain;; d = d->next)
1460 error ("No display number %d.", num);
1461 if (d->next->number == num)
1471 /* Delete some values from the auto-display chain.
1472 Specify the element numbers. */
1475 undisplay_command (args, from_tty)
1479 register char *p = args;
1485 if (query ("Delete all auto-display expressions? "))
1494 while (*p1 >= '0' && *p1 <= '9')
1496 if (*p1 && *p1 != ' ' && *p1 != '\t')
1497 error ("Arguments must be display numbers.");
1501 delete_display (num);
1504 while (*p == ' ' || *p == '\t')
1510 /* Display a single auto-display.
1511 Do nothing if the display cannot be printed in the current context,
1512 or if the display is disabled. */
1518 int within_current_scope;
1520 if (d->status == disabled)
1524 within_current_scope = contained_in (get_selected_block (), d->block);
1526 within_current_scope = 1;
1527 if (!within_current_scope)
1530 current_display_number = d->number;
1532 annotate_display_begin ();
1533 printf_filtered ("%d", d->number);
1534 annotate_display_number_end ();
1535 printf_filtered (": ");
1541 annotate_display_format ();
1543 printf_filtered ("x/");
1544 if (d->format.count != 1)
1545 printf_filtered ("%d", d->format.count);
1546 printf_filtered ("%c", d->format.format);
1547 if (d->format.format != 'i' && d->format.format != 's')
1548 printf_filtered ("%c", d->format.size);
1549 printf_filtered (" ");
1551 annotate_display_expression ();
1553 print_expression (d->exp, gdb_stdout);
1554 annotate_display_expression_end ();
1556 if (d->format.count != 1)
1557 printf_filtered ("\n");
1559 printf_filtered (" ");
1561 val = evaluate_expression (d->exp);
1562 addr = value_as_pointer (val);
1563 if (d->format.format == 'i')
1564 addr = ADDR_BITS_REMOVE (addr);
1566 annotate_display_value ();
1568 do_examine (d->format, addr, VALUE_BFD_SECTION (val));
1572 annotate_display_format ();
1574 if (d->format.format)
1575 printf_filtered ("/%c ", d->format.format);
1577 annotate_display_expression ();
1579 print_expression (d->exp, gdb_stdout);
1580 annotate_display_expression_end ();
1582 printf_filtered (" = ");
1584 annotate_display_expression ();
1586 print_formatted (evaluate_expression (d->exp),
1587 d->format.format, d->format.size, gdb_stdout);
1588 printf_filtered ("\n");
1591 annotate_display_end ();
1593 gdb_flush (gdb_stdout);
1594 current_display_number = -1;
1597 /* Display all of the values on the auto-display chain which can be
1598 evaluated in the current scope. */
1603 register struct display *d;
1605 for (d = display_chain; d; d = d->next)
1609 /* Delete the auto-display which we were in the process of displaying.
1610 This is done when there is an error or a signal. */
1613 disable_display (num)
1616 register struct display *d;
1618 for (d = display_chain; d; d = d->next)
1619 if (d->number == num)
1621 d->status = disabled;
1624 printf_unfiltered ("No display number %d.\n", num);
1628 disable_current_display ()
1630 if (current_display_number >= 0)
1632 disable_display (current_display_number);
1633 fprintf_unfiltered (gdb_stderr, "Disabling display %d to avoid infinite recursion.\n",
1634 current_display_number);
1636 current_display_number = -1;
1640 display_info (ignore, from_tty)
1644 register struct display *d;
1647 printf_unfiltered ("There are no auto-display expressions now.\n");
1649 printf_filtered ("Auto-display expressions now in effect:\n\
1650 Num Enb Expression\n");
1652 for (d = display_chain; d; d = d->next)
1654 printf_filtered ("%d: %c ", d->number, "ny"[(int) d->status]);
1656 printf_filtered ("/%d%c%c ", d->format.count, d->format.size,
1658 else if (d->format.format)
1659 printf_filtered ("/%c ", d->format.format);
1660 print_expression (d->exp, gdb_stdout);
1661 if (d->block && !contained_in (get_selected_block (), d->block))
1662 printf_filtered (" (cannot be evaluated in the current context)");
1663 printf_filtered ("\n");
1664 gdb_flush (gdb_stdout);
1669 enable_display (args, from_tty)
1673 register char *p = args;
1676 register struct display *d;
1680 for (d = display_chain; d; d = d->next)
1681 d->status = enabled;
1687 while (*p1 >= '0' && *p1 <= '9')
1689 if (*p1 && *p1 != ' ' && *p1 != '\t')
1690 error ("Arguments must be display numbers.");
1694 for (d = display_chain; d; d = d->next)
1695 if (d->number == num)
1697 d->status = enabled;
1700 printf_unfiltered ("No display number %d.\n", num);
1703 while (*p == ' ' || *p == '\t')
1710 disable_display_command (args, from_tty)
1714 register char *p = args;
1716 register struct display *d;
1720 for (d = display_chain; d; d = d->next)
1721 d->status = disabled;
1727 while (*p1 >= '0' && *p1 <= '9')
1729 if (*p1 && *p1 != ' ' && *p1 != '\t')
1730 error ("Arguments must be display numbers.");
1732 disable_display (atoi (p));
1735 while (*p == ' ' || *p == '\t')
1741 /* Print the value in stack frame FRAME of a variable
1742 specified by a struct symbol. */
1745 print_variable_value (var, frame, stream)
1747 struct frame_info *frame;
1748 struct ui_file *stream;
1750 value_ptr val = read_var_value (var, frame);
1752 value_print (val, stream, 0, Val_pretty_default);
1755 /* Print the arguments of a stack frame, given the function FUNC
1756 running in that frame (as a symbol), the info on the frame,
1757 and the number of args according to the stack frame (or -1 if unknown). */
1759 /* References here and elsewhere to "number of args according to the
1760 stack frame" appear in all cases to refer to "number of ints of args
1761 according to the stack frame". At least for VAX, i386, isi. */
1764 print_frame_args (func, fi, num, stream)
1765 struct symbol *func;
1766 struct frame_info *fi;
1768 struct ui_file *stream;
1770 struct block *b = NULL;
1774 register struct symbol *sym;
1775 register value_ptr val;
1776 /* Offset of next stack argument beyond the one we have seen that is
1777 at the highest offset.
1778 -1 if we haven't come to a stack argument yet. */
1779 long highest_offset = -1;
1781 /* Number of ints of arguments that we have printed so far. */
1782 int args_printed = 0;
1784 struct cleanup *old_chain;
1785 struct ui_stream *stb;
1787 stb = ui_out_stream_new (uiout);
1788 old_chain = make_cleanup ((make_cleanup_func) ui_out_stream_delete, stb);
1793 b = SYMBOL_BLOCK_VALUE (func);
1794 nsyms = BLOCK_NSYMS (b);
1797 for (i = 0; i < nsyms; i++)
1800 sym = BLOCK_SYM (b, i);
1802 /* Keep track of the highest stack argument offset seen, and
1803 skip over any kinds of symbols we don't care about. */
1805 switch (SYMBOL_CLASS (sym))
1810 long current_offset = SYMBOL_VALUE (sym);
1811 arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
1813 /* Compute address of next argument by adding the size of
1814 this argument and rounding to an int boundary. */
1816 = ((current_offset + arg_size + sizeof (int) - 1)
1817 & ~(sizeof (int) - 1));
1819 /* If this is the highest offset seen yet, set highest_offset. */
1820 if (highest_offset == -1
1821 || (current_offset > highest_offset))
1822 highest_offset = current_offset;
1824 /* Add the number of ints we're about to print to args_printed. */
1825 args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
1828 /* We care about types of symbols, but don't need to keep track of
1829 stack offsets in them. */
1831 case LOC_REGPARM_ADDR:
1833 case LOC_BASEREG_ARG:
1836 /* Other types of symbols we just skip over. */
1841 /* We have to look up the symbol because arguments can have
1842 two entries (one a parameter, one a local) and the one we
1843 want is the local, which lookup_symbol will find for us.
1844 This includes gcc1 (not gcc2) on the sparc when passing a
1845 small structure and gcc2 when the argument type is float
1846 and it is passed as a double and converted to float by
1847 the prologue (in the latter case the type of the LOC_ARG
1848 symbol is double and the type of the LOC_LOCAL symbol is
1850 /* But if the parameter name is null, don't try it.
1851 Null parameter names occur on the RS/6000, for traceback tables.
1852 FIXME, should we even print them? */
1854 if (*SYMBOL_NAME (sym))
1856 struct symbol *nsym;
1857 nsym = lookup_symbol
1859 b, VAR_NAMESPACE, (int *) NULL, (struct symtab **) NULL);
1860 if (SYMBOL_CLASS (nsym) == LOC_REGISTER)
1862 /* There is a LOC_ARG/LOC_REGISTER pair. This means that
1863 it was passed on the stack and loaded into a register,
1864 or passed in a register and stored in a stack slot.
1865 GDB 3.x used the LOC_ARG; GDB 4.0-4.11 used the LOC_REGISTER.
1867 Reasons for using the LOC_ARG:
1868 (1) because find_saved_registers may be slow for remote
1870 (2) because registers are often re-used and stack slots
1871 rarely (never?) are. Therefore using the stack slot is
1872 much less likely to print garbage.
1874 Reasons why we might want to use the LOC_REGISTER:
1875 (1) So that the backtrace prints the same value as
1876 "print foo". I see no compelling reason why this needs
1877 to be the case; having the backtrace print the value which
1878 was passed in, and "print foo" print the value as modified
1879 within the called function, makes perfect sense to me.
1881 Additional note: It might be nice if "info args" displayed
1883 One more note: There is a case with sparc structure passing
1884 where we need to use the LOC_REGISTER, but this is dealt with
1885 by creating a single LOC_REGPARM in symbol reading. */
1887 /* Leave sym (the LOC_ARG) alone. */
1895 /* Print the current arg. */
1897 ui_out_text (uiout, ", ");
1898 ui_out_wrap_hint (uiout, " ");
1900 annotate_arg_begin ();
1902 ui_out_list_begin (uiout, NULL);
1903 fprintf_symbol_filtered (stb->stream, SYMBOL_SOURCE_NAME (sym),
1904 SYMBOL_LANGUAGE (sym), DMGL_PARAMS | DMGL_ANSI);
1905 ui_out_field_stream (uiout, "name", stb);
1906 annotate_arg_name_end ();
1907 ui_out_text (uiout, "=");
1909 /* Print the current arg. */
1911 fprintf_filtered (stream, ", ");
1914 annotate_arg_begin ();
1916 fprintf_symbol_filtered (stream, SYMBOL_SOURCE_NAME (sym),
1917 SYMBOL_LANGUAGE (sym), DMGL_PARAMS | DMGL_ANSI);
1918 annotate_arg_name_end ();
1919 fputs_filtered ("=", stream);
1922 /* Avoid value_print because it will deref ref parameters. We just
1923 want to print their addresses. Print ??? for args whose address
1924 we do not know. We pass 2 as "recurse" to val_print because our
1925 standard indentation here is 4 spaces, and val_print indents
1926 2 for each recurse. */
1927 val = read_var_value (sym, fi);
1929 annotate_arg_value (val == NULL ? NULL : VALUE_TYPE (val));
1933 if (GDB_TARGET_IS_D10V
1934 && SYMBOL_CLASS (sym) == LOC_REGPARM && TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_PTR)
1935 TYPE_LENGTH (VALUE_TYPE (val)) = 2;
1937 val_print (VALUE_TYPE (val), VALUE_CONTENTS (val), 0,
1938 VALUE_ADDRESS (val),
1939 stb->stream, 0, 0, 2, Val_no_prettyprint);
1940 ui_out_field_stream (uiout, "value", stb);
1943 ui_out_text (uiout, "???");
1945 ui_out_list_end (uiout);
1947 val_print (VALUE_TYPE (val), VALUE_CONTENTS (val), 0,
1948 VALUE_ADDRESS (val),
1949 stream, 0, 0, 2, Val_no_prettyprint);
1952 fputs_filtered ("???", stream);
1955 annotate_arg_end ();
1960 /* Don't print nameless args in situations where we don't know
1961 enough about the stack to find them. */
1966 if (highest_offset == -1)
1967 start = FRAME_ARGS_SKIP;
1969 start = highest_offset;
1971 print_frame_nameless_args (fi, start, num - args_printed,
1975 do_cleanups (old_chain);
1976 #endif /* no UI_OUT */
1979 /* Print nameless args on STREAM.
1980 FI is the frameinfo for this frame, START is the offset
1981 of the first nameless arg, and NUM is the number of nameless args to
1982 print. FIRST is nonzero if this is the first argument (not just
1983 the first nameless arg). */
1986 print_frame_nameless_args (fi, start, num, first, stream)
1987 struct frame_info *fi;
1991 struct ui_file *stream;
1997 for (i = 0; i < num; i++)
2000 #ifdef NAMELESS_ARG_VALUE
2001 NAMELESS_ARG_VALUE (fi, start, &arg_value);
2003 argsaddr = FRAME_ARGS_ADDRESS (fi);
2007 arg_value = read_memory_integer (argsaddr + start, sizeof (int));
2011 fprintf_filtered (stream, ", ");
2013 #ifdef PRINT_NAMELESS_INTEGER
2014 PRINT_NAMELESS_INTEGER (stream, arg_value);
2016 #ifdef PRINT_TYPELESS_INTEGER
2017 PRINT_TYPELESS_INTEGER (stream, builtin_type_int, (LONGEST) arg_value);
2019 fprintf_filtered (stream, "%ld", arg_value);
2020 #endif /* PRINT_TYPELESS_INTEGER */
2021 #endif /* PRINT_NAMELESS_INTEGER */
2023 start += sizeof (int);
2029 printf_command (arg, from_tty)
2033 register char *f = NULL;
2034 register char *s = arg;
2035 char *string = NULL;
2036 value_ptr *val_args;
2038 char *current_substring;
2040 int allocated_args = 20;
2041 struct cleanup *old_cleanups;
2043 val_args = (value_ptr *) xmalloc (allocated_args * sizeof (value_ptr));
2044 old_cleanups = make_cleanup ((make_cleanup_func) free_current_contents,
2048 error_no_arg ("format-control string and values to print");
2050 /* Skip white space before format string */
2051 while (*s == ' ' || *s == '\t')
2054 /* A format string should follow, enveloped in double quotes */
2056 error ("Bad format string, missing '\"'.");
2058 /* Parse the format-control string and copy it into the string STRING,
2059 processing some kinds of escape sequence. */
2061 f = string = (char *) alloca (strlen (s) + 1);
2069 error ("Bad format string, non-terminated '\"'.");
2081 *f++ = '\007'; /* Bell */
2106 /* ??? TODO: handle other escape sequences */
2107 error ("Unrecognized escape character \\%c in format string.",
2117 /* Skip over " and following space and comma. */
2120 while (*s == ' ' || *s == '\t')
2123 if (*s != ',' && *s != 0)
2124 error ("Invalid argument syntax");
2128 while (*s == ' ' || *s == '\t')
2131 /* Need extra space for the '\0's. Doubling the size is sufficient. */
2132 substrings = alloca (strlen (string) * 2);
2133 current_substring = substrings;
2136 /* Now scan the string for %-specs and see what kinds of args they want.
2137 argclass[I] classifies the %-specs so we can give printf_filtered
2138 something of the right size. */
2142 no_arg, int_arg, string_arg, double_arg, long_long_arg
2144 enum argclass *argclass;
2145 enum argclass this_argclass;
2151 argclass = (enum argclass *) alloca (strlen (s) * sizeof *argclass);
2159 while (strchr ("0123456789.hlL-+ #", *f))
2161 if (*f == 'l' || *f == 'L')
2168 this_argclass = string_arg;
2174 this_argclass = double_arg;
2178 error ("`*' not supported for precision or width in printf");
2181 error ("Format specifier `n' not supported in printf");
2184 this_argclass = no_arg;
2189 this_argclass = long_long_arg;
2191 this_argclass = int_arg;
2195 if (this_argclass != no_arg)
2197 strncpy (current_substring, last_arg, f - last_arg);
2198 current_substring += f - last_arg;
2199 *current_substring++ = '\0';
2201 argclass[nargs_wanted++] = this_argclass;
2205 /* Now, parse all arguments and evaluate them.
2206 Store the VALUEs in VAL_ARGS. */
2211 if (nargs == allocated_args)
2212 val_args = (value_ptr *) xrealloc ((char *) val_args,
2213 (allocated_args *= 2)
2214 * sizeof (value_ptr));
2216 val_args[nargs] = parse_to_comma_and_eval (&s1);
2218 /* If format string wants a float, unchecked-convert the value to
2219 floating point of the same size */
2221 if (argclass[nargs] == double_arg)
2223 struct type *type = VALUE_TYPE (val_args[nargs]);
2224 if (TYPE_LENGTH (type) == sizeof (float))
2225 VALUE_TYPE (val_args[nargs]) = builtin_type_float;
2226 if (TYPE_LENGTH (type) == sizeof (double))
2227 VALUE_TYPE (val_args[nargs]) = builtin_type_double;
2235 if (nargs != nargs_wanted)
2236 error ("Wrong number of arguments for specified format-string");
2238 /* Now actually print them. */
2239 current_substring = substrings;
2240 for (i = 0; i < nargs; i++)
2242 switch (argclass[i])
2249 tem = value_as_pointer (val_args[i]);
2251 /* This is a %s argument. Find the length of the string. */
2256 read_memory_section (tem + j, &c, 1,
2257 VALUE_BFD_SECTION (val_args[i]));
2262 /* Copy the string contents into a string inside GDB. */
2263 str = (char *) alloca (j + 1);
2264 read_memory_section (tem, str, j, VALUE_BFD_SECTION (val_args[i]));
2267 printf_filtered (current_substring, str);
2272 double val = value_as_double (val_args[i]);
2273 printf_filtered (current_substring, val);
2277 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
2279 long long val = value_as_long (val_args[i]);
2280 printf_filtered (current_substring, val);
2284 error ("long long not supported in printf");
2288 /* FIXME: there should be separate int_arg and long_arg. */
2289 long val = value_as_long (val_args[i]);
2290 printf_filtered (current_substring, val);
2293 default: /* purecov: deadcode */
2294 error ("internal error in printf_command"); /* purecov: deadcode */
2296 /* Skip to the next substring. */
2297 current_substring += strlen (current_substring) + 1;
2299 /* Print the portion of the format string after the last argument. */
2300 printf_filtered (last_arg);
2302 do_cleanups (old_cleanups);
2305 /* Dump a specified section of assembly code. With no command line
2306 arguments, this command will dump the assembly code for the
2307 function surrounding the pc value in the selected frame. With one
2308 argument, it will dump the assembly code surrounding that pc value.
2309 Two arguments are interpeted as bounds within which to dump
2314 disassemble_command (arg, from_tty)
2318 CORE_ADDR low, high;
2320 CORE_ADDR pc, pc_masked;
2329 if (!selected_frame)
2330 error ("No frame selected.\n");
2332 pc = get_frame_pc (selected_frame);
2333 if (find_pc_partial_function (pc, &name, &low, &high) == 0)
2334 error ("No function contains program counter for selected frame.\n");
2336 else if (tui_version)
2337 low = (CORE_ADDR) tuiDo ((TuiOpaqueFuncPtr) tui_vGetLowDisassemblyAddress,
2341 low += FUNCTION_START_OFFSET;
2343 else if (!(space_index = (char *) strchr (arg, ' ')))
2346 pc = parse_and_eval_address (arg);
2347 if (find_pc_partial_function (pc, &name, &low, &high) == 0)
2348 error ("No function contains specified address.\n");
2350 else if (tui_version)
2351 low = (CORE_ADDR) tuiDo ((TuiOpaqueFuncPtr) tui_vGetLowDisassemblyAddress,
2356 if (overlay_debugging)
2358 section = find_pc_overlay (pc);
2359 if (pc_in_unmapped_range (pc, section))
2361 /* find_pc_partial_function will have returned low and high
2362 relative to the symbolic (mapped) address range. Need to
2363 translate them back to the unmapped range where PC is. */
2364 low = overlay_unmapped_address (low, section);
2365 high = overlay_unmapped_address (high, section);
2369 low += FUNCTION_START_OFFSET;
2373 /* Two arguments. */
2374 *space_index = '\0';
2375 low = parse_and_eval_address (arg);
2376 high = parse_and_eval_address (space_index + 1);
2381 m_winPtrIsNull (disassemWin) || !disassemWin->generic.isVisible)
2384 printf_filtered ("Dump of assembler code ");
2387 printf_filtered ("for function %s:\n", name);
2391 printf_filtered ("from ");
2392 print_address_numeric (low, 1, gdb_stdout);
2393 printf_filtered (" to ");
2394 print_address_numeric (high, 1, gdb_stdout);
2395 printf_filtered (":\n");
2398 /* Dump the specified range. */
2401 #ifdef GDB_TARGET_MASK_DISAS_PC
2402 pc_masked = GDB_TARGET_MASK_DISAS_PC (pc);
2407 while (pc_masked < high)
2410 print_address (pc_masked, gdb_stdout);
2411 printf_filtered (":\t");
2412 /* We often wrap here if there are long symbolic names. */
2414 pc += print_insn (pc, gdb_stdout);
2415 printf_filtered ("\n");
2417 #ifdef GDB_TARGET_MASK_DISAS_PC
2418 pc_masked = GDB_TARGET_MASK_DISAS_PC (pc);
2423 printf_filtered ("End of assembler dump.\n");
2424 gdb_flush (gdb_stdout);
2429 tuiDo ((TuiOpaqueFuncPtr) tui_vAddWinToLayout, DISASSEM_WIN);
2430 tuiDo ((TuiOpaqueFuncPtr) tui_vUpdateSourceWindowsWithAddr, low);
2435 /* Print the instruction at address MEMADDR in debugged memory,
2436 on STREAM. Returns length of the instruction, in bytes. */
2439 print_insn (memaddr, stream)
2441 struct ui_file *stream;
2443 if (TARGET_BYTE_ORDER == BIG_ENDIAN)
2444 TARGET_PRINT_INSN_INFO->endian = BFD_ENDIAN_BIG;
2446 TARGET_PRINT_INSN_INFO->endian = BFD_ENDIAN_LITTLE;
2448 if (TARGET_ARCHITECTURE != NULL)
2449 TARGET_PRINT_INSN_INFO->mach = TARGET_ARCHITECTURE->mach;
2450 /* else: should set .mach=0 but some disassemblers don't grok this */
2452 return TARGET_PRINT_INSN (memaddr, TARGET_PRINT_INSN_INFO);
2457 _initialize_printcmd ()
2459 current_display_number = -1;
2461 add_info ("address", address_info,
2462 "Describe where symbol SYM is stored.");
2464 add_info ("symbol", sym_info,
2465 "Describe what symbol is at location ADDR.\n\
2466 Only for symbols with fixed locations (global or static scope).");
2468 add_com ("x", class_vars, x_command,
2469 concat ("Examine memory: x/FMT ADDRESS.\n\
2470 ADDRESS is an expression for the memory address to examine.\n\
2471 FMT is a repeat count followed by a format letter and a size letter.\n\
2472 Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),\n\
2473 t(binary), f(float), a(address), i(instruction), c(char) and s(string).\n",
2474 "Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).\n\
2475 The specified number of objects of the specified size are printed\n\
2476 according to the format.\n\n\
2477 Defaults for format and size letters are those previously used.\n\
2478 Default count is 1. Default address is following last thing printed\n\
2479 with this command or \"print\".", NULL));
2481 add_com ("disassemble", class_vars, disassemble_command,
2482 "Disassemble a specified section of memory.\n\
2483 Default is the function surrounding the pc of the selected frame.\n\
2484 With a single argument, the function surrounding that address is dumped.\n\
2485 Two arguments are taken as a range of memory to dump.");
2487 add_com_alias ("va", "disassemble", class_xdb, 0);
2490 add_com ("whereis", class_vars, whereis_command,
2491 "Print line number and file of definition of variable.");
2494 add_info ("display", display_info,
2495 "Expressions to display when program stops, with code numbers.");
2497 add_cmd ("undisplay", class_vars, undisplay_command,
2498 "Cancel some expressions to be displayed when program stops.\n\
2499 Arguments are the code numbers of the expressions to stop displaying.\n\
2500 No argument means cancel all automatic-display expressions.\n\
2501 \"delete display\" has the same effect as this command.\n\
2502 Do \"info display\" to see current list of code numbers.",
2505 add_com ("display", class_vars, display_command,
2506 "Print value of expression EXP each time the program stops.\n\
2507 /FMT may be used before EXP as in the \"print\" command.\n\
2508 /FMT \"i\" or \"s\" or including a size-letter is allowed,\n\
2509 as in the \"x\" command, and then EXP is used to get the address to examine\n\
2510 and examining is done as in the \"x\" command.\n\n\
2511 With no argument, display all currently requested auto-display expressions.\n\
2512 Use \"undisplay\" to cancel display requests previously made."
2515 add_cmd ("display", class_vars, enable_display,
2516 "Enable some expressions to be displayed when program stops.\n\
2517 Arguments are the code numbers of the expressions to resume displaying.\n\
2518 No argument means enable all automatic-display expressions.\n\
2519 Do \"info display\" to see current list of code numbers.", &enablelist);
2521 add_cmd ("display", class_vars, disable_display_command,
2522 "Disable some expressions to be displayed when program stops.\n\
2523 Arguments are the code numbers of the expressions to stop displaying.\n\
2524 No argument means disable all automatic-display expressions.\n\
2525 Do \"info display\" to see current list of code numbers.", &disablelist);
2527 add_cmd ("display", class_vars, undisplay_command,
2528 "Cancel some expressions to be displayed when program stops.\n\
2529 Arguments are the code numbers of the expressions to stop displaying.\n\
2530 No argument means cancel all automatic-display expressions.\n\
2531 Do \"info display\" to see current list of code numbers.", &deletelist);
2533 add_com ("printf", class_vars, printf_command,
2534 "printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
2535 This is useful for formatted output in user-defined commands.");
2537 add_com ("output", class_vars, output_command,
2538 "Like \"print\" but don't put in value history and don't print newline.\n\
2539 This is useful in user-defined commands.");
2541 add_prefix_cmd ("set", class_vars, set_command,
2542 concat ("Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2543 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2544 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2545 with $), a register (a few standard names starting with $), or an actual\n\
2546 variable in the program being debugged. EXP is any valid expression.\n",
2547 "Use \"set variable\" for variables with names identical to set subcommands.\n\
2548 \nWith a subcommand, this command modifies parts of the gdb environment.\n\
2549 You can see these environment settings with the \"show\" command.", NULL),
2550 &setlist, "set ", 1, &cmdlist);
2552 add_com ("assign", class_vars, set_command, concat ("Evaluate expression \
2553 EXP and assign result to variable VAR, using assignment\n\
2554 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2555 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2556 with $), a register (a few standard names starting with $), or an actual\n\
2557 variable in the program being debugged. EXP is any valid expression.\n",
2558 "Use \"set variable\" for variables with names identical to set subcommands.\n\
2559 \nWith a subcommand, this command modifies parts of the gdb environment.\n\
2560 You can see these environment settings with the \"show\" command.", NULL));
2562 /* "call" is the same as "set", but handy for dbx users to call fns. */
2563 add_com ("call", class_vars, call_command,
2564 "Call a function in the program.\n\
2565 The argument is the function name and arguments, in the notation of the\n\
2566 current working language. The result is printed and saved in the value\n\
2567 history, if it is not void.");
2569 add_cmd ("variable", class_vars, set_command,
2570 "Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2571 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2572 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2573 with $), a register (a few standard names starting with $), or an actual\n\
2574 variable in the program being debugged. EXP is any valid expression.\n\
2575 This may usually be abbreviated to simply \"set\".",
2578 add_com ("print", class_vars, print_command,
2579 concat ("Print value of expression EXP.\n\
2580 Variables accessible are those of the lexical environment of the selected\n\
2581 stack frame, plus all those whose scope is global or an entire file.\n\
2583 $NUM gets previous value number NUM. $ and $$ are the last two values.\n\
2584 $$NUM refers to NUM'th value back from the last one.\n\
2585 Names starting with $ refer to registers (with the values they would have\n",
2586 "if the program were to return to the stack frame now selected, restoring\n\
2587 all registers saved by frames farther in) or else to debugger\n\
2588 \"convenience\" variables (any such name not a known register).\n\
2589 Use assignment expressions to give values to convenience variables.\n",
2591 {TYPE}ADREXP refers to a datum of data type TYPE, located at address ADREXP.\n\
2592 @ is a binary operator for treating consecutive data objects\n\
2593 anywhere in memory as an array. FOO@NUM gives an array whose first\n\
2594 element is FOO, whose second element is stored in the space following\n\
2595 where FOO is stored, etc. FOO must be an expression whose value\n\
2596 resides in memory.\n",
2598 EXP may be preceded with /FMT, where FMT is a format letter\n\
2599 but no count or size letter (see \"x\" command).", NULL));
2600 add_com_alias ("p", "print", class_vars, 1);
2602 add_com ("inspect", class_vars, inspect_command,
2603 "Same as \"print\" command, except that if you are running in the epoch\n\
2604 environment, the value is printed in its own window.");
2607 add_set_cmd ("max-symbolic-offset", no_class, var_uinteger,
2608 (char *) &max_symbolic_offset,
2609 "Set the largest offset that will be printed in <symbol+1234> form.",
2613 add_set_cmd ("symbol-filename", no_class, var_boolean,
2614 (char *) &print_symbol_filename,
2615 "Set printing of source filename and line number with <symbol>.",
2619 /* For examine/instruction a single byte quantity is specified as
2620 the data. This avoids problems with value_at_lazy() requiring a
2621 valid data type (and rejecting VOID). */
2622 examine_i_type = init_type (TYPE_CODE_INT, 1, 0, "examine_i_type", NULL);
2624 examine_b_type = init_type (TYPE_CODE_INT, 1, 0, "examine_b_type", NULL);
2625 examine_h_type = init_type (TYPE_CODE_INT, 2, 0, "examine_h_type", NULL);
2626 examine_w_type = init_type (TYPE_CODE_INT, 4, 0, "examine_w_type", NULL);
2627 examine_g_type = init_type (TYPE_CODE_INT, 8, 0, "examine_g_type", NULL);