* valops.c (value_cast): When casting a pointer to an integer,
[deliverable/binutils-gdb.git] / gdb / printcmd.c
1 /* Print values for GNU debugger GDB.
2
3 Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
5
6 This file is part of GDB.
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330,
21 Boston, MA 02111-1307, USA. */
22
23 #include "defs.h"
24 #include "gdb_string.h"
25 #include "frame.h"
26 #include "symtab.h"
27 #include "gdbtypes.h"
28 #include "value.h"
29 #include "language.h"
30 #include "expression.h"
31 #include "gdbcore.h"
32 #include "gdbcmd.h"
33 #include "target.h"
34 #include "breakpoint.h"
35 #include "demangle.h"
36 #include "valprint.h"
37 #include "annotate.h"
38 #include "symfile.h" /* for overlay functions */
39 #include "objfiles.h" /* ditto */
40 #include "completer.h" /* for completion functions */
41 #ifdef UI_OUT
42 #include "ui-out.h"
43 #endif
44
45 extern int asm_demangle; /* Whether to demangle syms in asm printouts */
46 extern int addressprint; /* Whether to print hex addresses in HLL " */
47
48 struct format_data
49 {
50 int count;
51 char format;
52 char size;
53 };
54
55 /* Last specified output format. */
56
57 static char last_format = 'x';
58
59 /* Last specified examination size. 'b', 'h', 'w' or `q'. */
60
61 static char last_size = 'w';
62
63 /* Default address to examine next. */
64
65 static CORE_ADDR next_address;
66
67 /* Default section to examine next. */
68
69 static asection *next_section;
70
71 /* Last address examined. */
72
73 static CORE_ADDR last_examine_address;
74
75 /* Contents of last address examined.
76 This is not valid past the end of the `x' command! */
77
78 static value_ptr last_examine_value;
79
80 /* Largest offset between a symbolic value and an address, that will be
81 printed as `0x1234 <symbol+offset>'. */
82
83 static unsigned int max_symbolic_offset = UINT_MAX;
84
85 /* Append the source filename and linenumber of the symbol when
86 printing a symbolic value as `<symbol at filename:linenum>' if set. */
87 static int print_symbol_filename = 0;
88
89 /* Number of auto-display expression currently being displayed.
90 So that we can disable it if we get an error or a signal within it.
91 -1 when not doing one. */
92
93 int current_display_number;
94
95 /* Flag to low-level print routines that this value is being printed
96 in an epoch window. We'd like to pass this as a parameter, but
97 every routine would need to take it. Perhaps we can encapsulate
98 this in the I/O stream once we have GNU stdio. */
99
100 int inspect_it = 0;
101
102 struct display
103 {
104 /* Chain link to next auto-display item. */
105 struct display *next;
106 /* Expression to be evaluated and displayed. */
107 struct expression *exp;
108 /* Item number of this auto-display item. */
109 int number;
110 /* Display format specified. */
111 struct format_data format;
112 /* Innermost block required by this expression when evaluated */
113 struct block *block;
114 /* Status of this display (enabled or disabled) */
115 enum enable status;
116 };
117
118 /* Chain of expressions whose values should be displayed
119 automatically each time the program stops. */
120
121 static struct display *display_chain;
122
123 static int display_number;
124
125 /* Prototypes for exported functions. */
126
127 void output_command (char *, int);
128
129 void _initialize_printcmd (void);
130
131 /* Prototypes for local functions. */
132
133 static void delete_display (int);
134
135 static void enable_display (char *, int);
136
137 static void disable_display_command (char *, int);
138
139 static void disassemble_command (char *, int);
140
141 static void printf_command (char *, int);
142
143 static void print_frame_nameless_args (struct frame_info *, long,
144 int, int, struct ui_file *);
145
146 static void display_info (char *, int);
147
148 static void do_one_display (struct display *);
149
150 static void undisplay_command (char *, int);
151
152 static void free_display (struct display *);
153
154 static void display_command (char *, int);
155
156 void x_command (char *, int);
157
158 static void address_info (char *, int);
159
160 static void set_command (char *, int);
161
162 static void call_command (char *, int);
163
164 static void inspect_command (char *, int);
165
166 static void print_command (char *, int);
167
168 static void print_command_1 (char *, int, int);
169
170 static void validate_format (struct format_data, char *);
171
172 static void do_examine (struct format_data, CORE_ADDR addr,
173 asection * section);
174
175 static void print_formatted (value_ptr, int, int, struct ui_file *);
176
177 static struct format_data decode_format (char **, int, int);
178
179 static int print_insn (CORE_ADDR, struct ui_file *);
180
181 static void sym_info (char *, int);
182 \f
183
184 /* Decode a format specification. *STRING_PTR should point to it.
185 OFORMAT and OSIZE are used as defaults for the format and size
186 if none are given in the format specification.
187 If OSIZE is zero, then the size field of the returned value
188 should be set only if a size is explicitly specified by the
189 user.
190 The structure returned describes all the data
191 found in the specification. In addition, *STRING_PTR is advanced
192 past the specification and past all whitespace following it. */
193
194 static struct format_data
195 decode_format (char **string_ptr, int oformat, int osize)
196 {
197 struct format_data val;
198 register char *p = *string_ptr;
199
200 val.format = '?';
201 val.size = '?';
202 val.count = 1;
203
204 if (*p >= '0' && *p <= '9')
205 val.count = atoi (p);
206 while (*p >= '0' && *p <= '9')
207 p++;
208
209 /* Now process size or format letters that follow. */
210
211 while (1)
212 {
213 if (*p == 'b' || *p == 'h' || *p == 'w' || *p == 'g')
214 val.size = *p++;
215 else if (*p >= 'a' && *p <= 'z')
216 val.format = *p++;
217 else
218 break;
219 }
220
221 while (*p == ' ' || *p == '\t')
222 p++;
223 *string_ptr = p;
224
225 /* Set defaults for format and size if not specified. */
226 if (val.format == '?')
227 {
228 if (val.size == '?')
229 {
230 /* Neither has been specified. */
231 val.format = oformat;
232 val.size = osize;
233 }
234 else
235 /* If a size is specified, any format makes a reasonable
236 default except 'i'. */
237 val.format = oformat == 'i' ? 'x' : oformat;
238 }
239 else if (val.size == '?')
240 switch (val.format)
241 {
242 case 'a':
243 case 's':
244 /* Pick the appropriate size for an address. */
245 if (TARGET_PTR_BIT == 64)
246 val.size = osize ? 'g' : osize;
247 else if (TARGET_PTR_BIT == 32)
248 val.size = osize ? 'w' : osize;
249 else if (TARGET_PTR_BIT == 16)
250 val.size = osize ? 'h' : osize;
251 else
252 /* Bad value for TARGET_PTR_BIT */
253 internal_error (__FILE__, __LINE__, "failed internal consistency check");
254 break;
255 case 'f':
256 /* Floating point has to be word or giantword. */
257 if (osize == 'w' || osize == 'g')
258 val.size = osize;
259 else
260 /* Default it to giantword if the last used size is not
261 appropriate. */
262 val.size = osize ? 'g' : osize;
263 break;
264 case 'c':
265 /* Characters default to one byte. */
266 val.size = osize ? 'b' : osize;
267 break;
268 default:
269 /* The default is the size most recently specified. */
270 val.size = osize;
271 }
272
273 return val;
274 }
275 \f
276 /* Print value VAL on stream according to FORMAT, a letter or 0.
277 Do not end with a newline.
278 0 means print VAL according to its own type.
279 SIZE is the letter for the size of datum being printed.
280 This is used to pad hex numbers so they line up. */
281
282 static void
283 print_formatted (register value_ptr val, register int format, int size,
284 struct ui_file *stream)
285 {
286 struct type *type = check_typedef (VALUE_TYPE (val));
287 int len = TYPE_LENGTH (type);
288
289 if (VALUE_LVAL (val) == lval_memory)
290 {
291 next_address = VALUE_ADDRESS (val) + len;
292 next_section = VALUE_BFD_SECTION (val);
293 }
294
295 switch (format)
296 {
297 case 's':
298 /* FIXME: Need to handle wchar_t's here... */
299 next_address = VALUE_ADDRESS (val)
300 + val_print_string (VALUE_ADDRESS (val), -1, 1, stream);
301 next_section = VALUE_BFD_SECTION (val);
302 break;
303
304 case 'i':
305 /* The old comment says
306 "Force output out, print_insn not using _filtered".
307 I'm not completely sure what that means, I suspect most print_insn
308 now do use _filtered, so I guess it's obsolete.
309 --Yes, it does filter now, and so this is obsolete. -JB */
310
311 /* We often wrap here if there are long symbolic names. */
312 wrap_here (" ");
313 next_address = VALUE_ADDRESS (val)
314 + print_insn (VALUE_ADDRESS (val), stream);
315 next_section = VALUE_BFD_SECTION (val);
316 break;
317
318 default:
319 if (format == 0
320 || TYPE_CODE (type) == TYPE_CODE_ARRAY
321 || TYPE_CODE (type) == TYPE_CODE_STRING
322 || TYPE_CODE (type) == TYPE_CODE_STRUCT
323 || TYPE_CODE (type) == TYPE_CODE_UNION)
324 /* If format is 0, use the 'natural' format for
325 * that type of value. If the type is non-scalar,
326 * we have to use language rules to print it as
327 * a series of scalars.
328 */
329 value_print (val, stream, format, Val_pretty_default);
330 else
331 /* User specified format, so don't look to the
332 * the type to tell us what to do.
333 */
334 print_scalar_formatted (VALUE_CONTENTS (val), type,
335 format, size, stream);
336 }
337 }
338
339 /* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
340 according to letters FORMAT and SIZE on STREAM.
341 FORMAT may not be zero. Formats s and i are not supported at this level.
342
343 This is how the elements of an array or structure are printed
344 with a format. */
345
346 void
347 print_scalar_formatted (char *valaddr, struct type *type, int format, int size,
348 struct ui_file *stream)
349 {
350 LONGEST val_long;
351 unsigned int len = TYPE_LENGTH (type);
352
353 if (len > sizeof (LONGEST)
354 && (format == 't'
355 || format == 'c'
356 || format == 'o'
357 || format == 'u'
358 || format == 'd'
359 || format == 'x'))
360 {
361 if (!TYPE_UNSIGNED (type)
362 || !extract_long_unsigned_integer (valaddr, len, &val_long))
363 {
364 /* We can't print it normally, but we can print it in hex.
365 Printing it in the wrong radix is more useful than saying
366 "use /x, you dummy". */
367 /* FIXME: we could also do octal or binary if that was the
368 desired format. */
369 /* FIXME: we should be using the size field to give us a
370 minimum field width to print. */
371
372 if (format == 'o')
373 print_octal_chars (stream, valaddr, len);
374 else if (format == 'd')
375 print_decimal_chars (stream, valaddr, len);
376 else if (format == 't')
377 print_binary_chars (stream, valaddr, len);
378 else
379 /* replace with call to print_hex_chars? Looks
380 like val_print_type_code_int is redoing
381 work. - edie */
382
383 val_print_type_code_int (type, valaddr, stream);
384
385 return;
386 }
387
388 /* If we get here, extract_long_unsigned_integer set val_long. */
389 }
390 else if (format != 'f')
391 val_long = unpack_long (type, valaddr);
392
393 /* If we are printing it as unsigned, truncate it in case it is actually
394 a negative signed value (e.g. "print/u (short)-1" should print 65535
395 (if shorts are 16 bits) instead of 4294967295). */
396 if (format != 'd')
397 {
398 if (len < sizeof (LONGEST))
399 val_long &= ((LONGEST) 1 << HOST_CHAR_BIT * len) - 1;
400 }
401
402 switch (format)
403 {
404 case 'x':
405 if (!size)
406 {
407 /* no size specified, like in print. Print varying # of digits. */
408 print_longest (stream, 'x', 1, val_long);
409 }
410 else
411 switch (size)
412 {
413 case 'b':
414 case 'h':
415 case 'w':
416 case 'g':
417 print_longest (stream, size, 1, val_long);
418 break;
419 default:
420 error ("Undefined output size \"%c\".", size);
421 }
422 break;
423
424 case 'd':
425 print_longest (stream, 'd', 1, val_long);
426 break;
427
428 case 'u':
429 print_longest (stream, 'u', 0, val_long);
430 break;
431
432 case 'o':
433 if (val_long)
434 print_longest (stream, 'o', 1, val_long);
435 else
436 fprintf_filtered (stream, "0");
437 break;
438
439 case 'a':
440 {
441 CORE_ADDR addr = unpack_pointer (type, valaddr);
442 print_address (addr, stream);
443 }
444 break;
445
446 case 'c':
447 value_print (value_from_longest (builtin_type_true_char, val_long),
448 stream, 0, Val_pretty_default);
449 break;
450
451 case 'f':
452 if (len == sizeof (float))
453 type = builtin_type_float;
454 else if (len == sizeof (double))
455 type = builtin_type_double;
456 print_floating (valaddr, type, stream);
457 break;
458
459 case 0:
460 internal_error (__FILE__, __LINE__, "failed internal consistency check");
461
462 case 't':
463 /* Binary; 't' stands for "two". */
464 {
465 char bits[8 * (sizeof val_long) + 1];
466 char buf[8 * (sizeof val_long) + 32];
467 char *cp = bits;
468 int width;
469
470 if (!size)
471 width = 8 * (sizeof val_long);
472 else
473 switch (size)
474 {
475 case 'b':
476 width = 8;
477 break;
478 case 'h':
479 width = 16;
480 break;
481 case 'w':
482 width = 32;
483 break;
484 case 'g':
485 width = 64;
486 break;
487 default:
488 error ("Undefined output size \"%c\".", size);
489 }
490
491 bits[width] = '\0';
492 while (width-- > 0)
493 {
494 bits[width] = (val_long & 1) ? '1' : '0';
495 val_long >>= 1;
496 }
497 if (!size)
498 {
499 while (*cp && *cp == '0')
500 cp++;
501 if (*cp == '\0')
502 cp--;
503 }
504 strcpy (buf, local_binary_format_prefix ());
505 strcat (buf, cp);
506 strcat (buf, local_binary_format_suffix ());
507 fprintf_filtered (stream, buf);
508 }
509 break;
510
511 default:
512 error ("Undefined output format \"%c\".", format);
513 }
514 }
515
516 /* Specify default address for `x' command.
517 `info lines' uses this. */
518
519 void
520 set_next_address (CORE_ADDR addr)
521 {
522 next_address = addr;
523
524 /* Make address available to the user as $_. */
525 set_internalvar (lookup_internalvar ("_"),
526 value_from_pointer (lookup_pointer_type (builtin_type_void),
527 addr));
528 }
529
530 /* Optionally print address ADDR symbolically as <SYMBOL+OFFSET> on STREAM,
531 after LEADIN. Print nothing if no symbolic name is found nearby.
532 Optionally also print source file and line number, if available.
533 DO_DEMANGLE controls whether to print a symbol in its native "raw" form,
534 or to interpret it as a possible C++ name and convert it back to source
535 form. However note that DO_DEMANGLE can be overridden by the specific
536 settings of the demangle and asm_demangle variables. */
537
538 void
539 print_address_symbolic (CORE_ADDR addr, struct ui_file *stream, int do_demangle,
540 char *leadin)
541 {
542 char *name = NULL;
543 char *filename = NULL;
544 int unmapped = 0;
545 int offset = 0;
546 int line = 0;
547
548 /* throw away both name and filename */
549 struct cleanup *cleanup_chain = make_cleanup (free_current_contents, &name);
550 make_cleanup (free_current_contents, &filename);
551
552 if (build_address_symbolic (addr, do_demangle, &name, &offset, &filename, &line, &unmapped))
553 {
554 do_cleanups (cleanup_chain);
555 return;
556 }
557
558 fputs_filtered (leadin, stream);
559 if (unmapped)
560 fputs_filtered ("<*", stream);
561 else
562 fputs_filtered ("<", stream);
563 fputs_filtered (name, stream);
564 if (offset != 0)
565 fprintf_filtered (stream, "+%u", (unsigned int) offset);
566
567 /* Append source filename and line number if desired. Give specific
568 line # of this addr, if we have it; else line # of the nearest symbol. */
569 if (print_symbol_filename && filename != NULL)
570 {
571 if (line != -1)
572 fprintf_filtered (stream, " at %s:%d", filename, line);
573 else
574 fprintf_filtered (stream, " in %s", filename);
575 }
576 if (unmapped)
577 fputs_filtered ("*>", stream);
578 else
579 fputs_filtered (">", stream);
580
581 do_cleanups (cleanup_chain);
582 }
583
584 /* Given an address ADDR return all the elements needed to print the
585 address in a symbolic form. NAME can be mangled or not depending
586 on DO_DEMANGLE (and also on the asm_demangle global variable,
587 manipulated via ''set print asm-demangle''). Return 0 in case of
588 success, when all the info in the OUT paramters is valid. Return 1
589 otherwise. */
590 int
591 build_address_symbolic (CORE_ADDR addr, /* IN */
592 int do_demangle, /* IN */
593 char **name, /* OUT */
594 int *offset, /* OUT */
595 char **filename, /* OUT */
596 int *line, /* OUT */
597 int *unmapped) /* OUT */
598 {
599 struct minimal_symbol *msymbol;
600 struct symbol *symbol;
601 struct symtab *symtab = 0;
602 CORE_ADDR name_location = 0;
603 asection *section = 0;
604 char *name_temp = "";
605
606 /* Let's say it is unmapped. */
607 *unmapped = 0;
608
609 /* Determine if the address is in an overlay, and whether it is
610 mapped. */
611 if (overlay_debugging)
612 {
613 section = find_pc_overlay (addr);
614 if (pc_in_unmapped_range (addr, section))
615 {
616 *unmapped = 1;
617 addr = overlay_mapped_address (addr, section);
618 }
619 }
620
621 /* On some targets, add in extra "flag" bits to PC for
622 disassembly. This should ensure that "rounding errors" in
623 symbol addresses that are masked for disassembly favour the
624 the correct symbol. */
625
626 #ifdef GDB_TARGET_UNMASK_DISAS_PC
627 addr = GDB_TARGET_UNMASK_DISAS_PC (addr);
628 #endif
629
630 /* First try to find the address in the symbol table, then
631 in the minsyms. Take the closest one. */
632
633 /* This is defective in the sense that it only finds text symbols. So
634 really this is kind of pointless--we should make sure that the
635 minimal symbols have everything we need (by changing that we could
636 save some memory, but for many debug format--ELF/DWARF or
637 anything/stabs--it would be inconvenient to eliminate those minimal
638 symbols anyway). */
639 msymbol = lookup_minimal_symbol_by_pc_section (addr, section);
640 symbol = find_pc_sect_function (addr, section);
641
642 if (symbol)
643 {
644 name_location = BLOCK_START (SYMBOL_BLOCK_VALUE (symbol));
645 if (do_demangle)
646 name_temp = SYMBOL_SOURCE_NAME (symbol);
647 else
648 name_temp = SYMBOL_LINKAGE_NAME (symbol);
649 }
650
651 if (msymbol != NULL)
652 {
653 if (SYMBOL_VALUE_ADDRESS (msymbol) > name_location || symbol == NULL)
654 {
655 /* The msymbol is closer to the address than the symbol;
656 use the msymbol instead. */
657 symbol = 0;
658 symtab = 0;
659 name_location = SYMBOL_VALUE_ADDRESS (msymbol);
660 if (do_demangle)
661 name_temp = SYMBOL_SOURCE_NAME (msymbol);
662 else
663 name_temp = SYMBOL_LINKAGE_NAME (msymbol);
664 }
665 }
666 if (symbol == NULL && msymbol == NULL)
667 return 1;
668
669 /* On some targets, mask out extra "flag" bits from PC for handsome
670 disassembly. */
671
672 #ifdef GDB_TARGET_MASK_DISAS_PC
673 name_location = GDB_TARGET_MASK_DISAS_PC (name_location);
674 addr = GDB_TARGET_MASK_DISAS_PC (addr);
675 #endif
676
677 /* If the nearest symbol is too far away, don't print anything symbolic. */
678
679 /* For when CORE_ADDR is larger than unsigned int, we do math in
680 CORE_ADDR. But when we detect unsigned wraparound in the
681 CORE_ADDR math, we ignore this test and print the offset,
682 because addr+max_symbolic_offset has wrapped through the end
683 of the address space back to the beginning, giving bogus comparison. */
684 if (addr > name_location + max_symbolic_offset
685 && name_location + max_symbolic_offset > name_location)
686 return 1;
687
688 *offset = addr - name_location;
689
690 *name = xstrdup (name_temp);
691
692 if (print_symbol_filename)
693 {
694 struct symtab_and_line sal;
695
696 sal = find_pc_sect_line (addr, section, 0);
697
698 if (sal.symtab)
699 {
700 *filename = xstrdup (sal.symtab->filename);
701 *line = sal.line;
702 }
703 else if (symtab && symbol && symbol->line)
704 {
705 *filename = xstrdup (symtab->filename);
706 *line = symbol->line;
707 }
708 else if (symtab)
709 {
710 *filename = xstrdup (symtab->filename);
711 *line = -1;
712 }
713 }
714 return 0;
715 }
716
717 /* Print address ADDR on STREAM. USE_LOCAL means the same thing as for
718 print_longest. */
719 void
720 print_address_numeric (CORE_ADDR addr, int use_local, struct ui_file *stream)
721 {
722 /* Truncate address to the size of a target address, avoiding shifts
723 larger or equal than the width of a CORE_ADDR. The local
724 variable ADDR_BIT stops the compiler reporting a shift overflow
725 when it won't occur. */
726 /* NOTE: This assumes that the significant address information is
727 kept in the least significant bits of ADDR - the upper bits were
728 either zero or sign extended. Should ADDRESS_TO_POINTER() or
729 some ADDRESS_TO_PRINTABLE() be used to do the conversion? */
730
731 int addr_bit = TARGET_ADDR_BIT;
732
733 if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
734 addr &= ((CORE_ADDR) 1 << addr_bit) - 1;
735 print_longest (stream, 'x', use_local, (ULONGEST) addr);
736 }
737
738 /* Print address ADDR symbolically on STREAM.
739 First print it as a number. Then perhaps print
740 <SYMBOL + OFFSET> after the number. */
741
742 void
743 print_address (CORE_ADDR addr, struct ui_file *stream)
744 {
745 print_address_numeric (addr, 1, stream);
746 print_address_symbolic (addr, stream, asm_demangle, " ");
747 }
748
749 /* Print address ADDR symbolically on STREAM. Parameter DEMANGLE
750 controls whether to print the symbolic name "raw" or demangled.
751 Global setting "addressprint" controls whether to print hex address
752 or not. */
753
754 void
755 print_address_demangle (CORE_ADDR addr, struct ui_file *stream, int do_demangle)
756 {
757 if (addr == 0)
758 {
759 fprintf_filtered (stream, "0");
760 }
761 else if (addressprint)
762 {
763 print_address_numeric (addr, 1, stream);
764 print_address_symbolic (addr, stream, do_demangle, " ");
765 }
766 else
767 {
768 print_address_symbolic (addr, stream, do_demangle, "");
769 }
770 }
771 \f
772
773 /* These are the types that $__ will get after an examine command of one
774 of these sizes. */
775
776 static struct type *examine_i_type;
777
778 static struct type *examine_b_type;
779 static struct type *examine_h_type;
780 static struct type *examine_w_type;
781 static struct type *examine_g_type;
782
783 /* Examine data at address ADDR in format FMT.
784 Fetch it from memory and print on gdb_stdout. */
785
786 static void
787 do_examine (struct format_data fmt, CORE_ADDR addr, asection *sect)
788 {
789 register char format = 0;
790 register char size;
791 register int count = 1;
792 struct type *val_type = NULL;
793 register int i;
794 register int maxelts;
795
796 format = fmt.format;
797 size = fmt.size;
798 count = fmt.count;
799 next_address = addr;
800 next_section = sect;
801
802 /* String or instruction format implies fetch single bytes
803 regardless of the specified size. */
804 if (format == 's' || format == 'i')
805 size = 'b';
806
807 if (format == 'i')
808 val_type = examine_i_type;
809 else if (size == 'b')
810 val_type = examine_b_type;
811 else if (size == 'h')
812 val_type = examine_h_type;
813 else if (size == 'w')
814 val_type = examine_w_type;
815 else if (size == 'g')
816 val_type = examine_g_type;
817
818 maxelts = 8;
819 if (size == 'w')
820 maxelts = 4;
821 if (size == 'g')
822 maxelts = 2;
823 if (format == 's' || format == 'i')
824 maxelts = 1;
825
826 /* Print as many objects as specified in COUNT, at most maxelts per line,
827 with the address of the next one at the start of each line. */
828
829 while (count > 0)
830 {
831 QUIT;
832 print_address (next_address, gdb_stdout);
833 printf_filtered (":");
834 for (i = maxelts;
835 i > 0 && count > 0;
836 i--, count--)
837 {
838 printf_filtered ("\t");
839 /* Note that print_formatted sets next_address for the next
840 object. */
841 last_examine_address = next_address;
842
843 if (last_examine_value)
844 value_free (last_examine_value);
845
846 /* The value to be displayed is not fetched greedily.
847 Instead, to avoid the posibility of a fetched value not
848 being used, its retreval is delayed until the print code
849 uses it. When examining an instruction stream, the
850 disassembler will perform its own memory fetch using just
851 the address stored in LAST_EXAMINE_VALUE. FIXME: Should
852 the disassembler be modified so that LAST_EXAMINE_VALUE
853 is left with the byte sequence from the last complete
854 instruction fetched from memory? */
855 last_examine_value = value_at_lazy (val_type, next_address, sect);
856
857 if (last_examine_value)
858 release_value (last_examine_value);
859
860 print_formatted (last_examine_value, format, size, gdb_stdout);
861 }
862 printf_filtered ("\n");
863 gdb_flush (gdb_stdout);
864 }
865 }
866 \f
867 static void
868 validate_format (struct format_data fmt, char *cmdname)
869 {
870 if (fmt.size != 0)
871 error ("Size letters are meaningless in \"%s\" command.", cmdname);
872 if (fmt.count != 1)
873 error ("Item count other than 1 is meaningless in \"%s\" command.",
874 cmdname);
875 if (fmt.format == 'i' || fmt.format == 's')
876 error ("Format letter \"%c\" is meaningless in \"%s\" command.",
877 fmt.format, cmdname);
878 }
879
880 /* Evaluate string EXP as an expression in the current language and
881 print the resulting value. EXP may contain a format specifier as the
882 first argument ("/x myvar" for example, to print myvar in hex).
883 */
884
885 static void
886 print_command_1 (char *exp, int inspect, int voidprint)
887 {
888 struct expression *expr;
889 register struct cleanup *old_chain = 0;
890 register char format = 0;
891 register value_ptr val;
892 struct format_data fmt;
893 int cleanup = 0;
894
895 /* Pass inspect flag to the rest of the print routines in a global (sigh). */
896 inspect_it = inspect;
897
898 if (exp && *exp == '/')
899 {
900 exp++;
901 fmt = decode_format (&exp, last_format, 0);
902 validate_format (fmt, "print");
903 last_format = format = fmt.format;
904 }
905 else
906 {
907 fmt.count = 1;
908 fmt.format = 0;
909 fmt.size = 0;
910 }
911
912 if (exp && *exp)
913 {
914 struct type *type;
915 expr = parse_expression (exp);
916 old_chain = make_cleanup (free_current_contents, &expr);
917 cleanup = 1;
918 val = evaluate_expression (expr);
919
920 /* C++: figure out what type we actually want to print it as. */
921 type = VALUE_TYPE (val);
922
923 if (objectprint
924 && (TYPE_CODE (type) == TYPE_CODE_PTR
925 || TYPE_CODE (type) == TYPE_CODE_REF)
926 && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_STRUCT
927 || TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_UNION))
928 {
929 value_ptr v;
930
931 v = value_from_vtable_info (val, TYPE_TARGET_TYPE (type));
932 if (v != 0)
933 {
934 val = v;
935 type = VALUE_TYPE (val);
936 }
937 }
938 }
939 else
940 val = access_value_history (0);
941
942 if (voidprint || (val && VALUE_TYPE (val) &&
943 TYPE_CODE (VALUE_TYPE (val)) != TYPE_CODE_VOID))
944 {
945 int histindex = record_latest_value (val);
946
947 if (histindex >= 0)
948 annotate_value_history_begin (histindex, VALUE_TYPE (val));
949 else
950 annotate_value_begin (VALUE_TYPE (val));
951
952 if (inspect)
953 printf_unfiltered ("\031(gdb-makebuffer \"%s\" %d '(\"", exp, histindex);
954 else if (histindex >= 0)
955 printf_filtered ("$%d = ", histindex);
956
957 if (histindex >= 0)
958 annotate_value_history_value ();
959
960 print_formatted (val, format, fmt.size, gdb_stdout);
961 printf_filtered ("\n");
962
963 if (histindex >= 0)
964 annotate_value_history_end ();
965 else
966 annotate_value_end ();
967
968 if (inspect)
969 printf_unfiltered ("\") )\030");
970 }
971
972 if (cleanup)
973 do_cleanups (old_chain);
974 inspect_it = 0; /* Reset print routines to normal */
975 }
976
977 /* ARGSUSED */
978 static void
979 print_command (char *exp, int from_tty)
980 {
981 print_command_1 (exp, 0, 1);
982 }
983
984 /* Same as print, except in epoch, it gets its own window */
985 /* ARGSUSED */
986 static void
987 inspect_command (char *exp, int from_tty)
988 {
989 extern int epoch_interface;
990
991 print_command_1 (exp, epoch_interface, 1);
992 }
993
994 /* Same as print, except it doesn't print void results. */
995 /* ARGSUSED */
996 static void
997 call_command (char *exp, int from_tty)
998 {
999 print_command_1 (exp, 0, 0);
1000 }
1001
1002 /* ARGSUSED */
1003 void
1004 output_command (char *exp, int from_tty)
1005 {
1006 struct expression *expr;
1007 register struct cleanup *old_chain;
1008 register char format = 0;
1009 register value_ptr val;
1010 struct format_data fmt;
1011
1012 if (exp && *exp == '/')
1013 {
1014 exp++;
1015 fmt = decode_format (&exp, 0, 0);
1016 validate_format (fmt, "output");
1017 format = fmt.format;
1018 }
1019
1020 expr = parse_expression (exp);
1021 old_chain = make_cleanup (free_current_contents, &expr);
1022
1023 val = evaluate_expression (expr);
1024
1025 annotate_value_begin (VALUE_TYPE (val));
1026
1027 print_formatted (val, format, fmt.size, gdb_stdout);
1028
1029 annotate_value_end ();
1030
1031 wrap_here ("");
1032 gdb_flush (gdb_stdout);
1033
1034 do_cleanups (old_chain);
1035 }
1036
1037 /* ARGSUSED */
1038 static void
1039 set_command (char *exp, int from_tty)
1040 {
1041 struct expression *expr = parse_expression (exp);
1042 register struct cleanup *old_chain =
1043 make_cleanup (free_current_contents, &expr);
1044 evaluate_expression (expr);
1045 do_cleanups (old_chain);
1046 }
1047
1048 /* ARGSUSED */
1049 static void
1050 sym_info (char *arg, int from_tty)
1051 {
1052 struct minimal_symbol *msymbol;
1053 struct objfile *objfile;
1054 struct obj_section *osect;
1055 asection *sect;
1056 CORE_ADDR addr, sect_addr;
1057 int matches = 0;
1058 unsigned int offset;
1059
1060 if (!arg)
1061 error_no_arg ("address");
1062
1063 addr = parse_and_eval_address (arg);
1064 ALL_OBJSECTIONS (objfile, osect)
1065 {
1066 sect = osect->the_bfd_section;
1067 sect_addr = overlay_mapped_address (addr, sect);
1068
1069 if (osect->addr <= sect_addr && sect_addr < osect->endaddr &&
1070 (msymbol = lookup_minimal_symbol_by_pc_section (sect_addr, sect)))
1071 {
1072 matches = 1;
1073 offset = sect_addr - SYMBOL_VALUE_ADDRESS (msymbol);
1074 if (offset)
1075 printf_filtered ("%s + %u in ",
1076 SYMBOL_SOURCE_NAME (msymbol), offset);
1077 else
1078 printf_filtered ("%s in ",
1079 SYMBOL_SOURCE_NAME (msymbol));
1080 if (pc_in_unmapped_range (addr, sect))
1081 printf_filtered ("load address range of ");
1082 if (section_is_overlay (sect))
1083 printf_filtered ("%s overlay ",
1084 section_is_mapped (sect) ? "mapped" : "unmapped");
1085 printf_filtered ("section %s", sect->name);
1086 printf_filtered ("\n");
1087 }
1088 }
1089 if (matches == 0)
1090 printf_filtered ("No symbol matches %s.\n", arg);
1091 }
1092
1093 /* ARGSUSED */
1094 static void
1095 address_info (char *exp, int from_tty)
1096 {
1097 register struct symbol *sym;
1098 register struct minimal_symbol *msymbol;
1099 register long val;
1100 register long basereg;
1101 asection *section;
1102 CORE_ADDR load_addr;
1103 int is_a_field_of_this; /* C++: lookup_symbol sets this to nonzero
1104 if exp is a field of `this'. */
1105
1106 if (exp == 0)
1107 error ("Argument required.");
1108
1109 sym = lookup_symbol (exp, get_selected_block (), VAR_NAMESPACE,
1110 &is_a_field_of_this, (struct symtab **) NULL);
1111 if (sym == NULL)
1112 {
1113 if (is_a_field_of_this)
1114 {
1115 printf_filtered ("Symbol \"");
1116 fprintf_symbol_filtered (gdb_stdout, exp,
1117 current_language->la_language, DMGL_ANSI);
1118 printf_filtered ("\" is a field of the local class variable `this'\n");
1119 return;
1120 }
1121
1122 msymbol = lookup_minimal_symbol (exp, NULL, NULL);
1123
1124 if (msymbol != NULL)
1125 {
1126 load_addr = SYMBOL_VALUE_ADDRESS (msymbol);
1127
1128 printf_filtered ("Symbol \"");
1129 fprintf_symbol_filtered (gdb_stdout, exp,
1130 current_language->la_language, DMGL_ANSI);
1131 printf_filtered ("\" is at ");
1132 print_address_numeric (load_addr, 1, gdb_stdout);
1133 printf_filtered (" in a file compiled without debugging");
1134 section = SYMBOL_BFD_SECTION (msymbol);
1135 if (section_is_overlay (section))
1136 {
1137 load_addr = overlay_unmapped_address (load_addr, section);
1138 printf_filtered (",\n -- loaded at ");
1139 print_address_numeric (load_addr, 1, gdb_stdout);
1140 printf_filtered (" in overlay section %s", section->name);
1141 }
1142 printf_filtered (".\n");
1143 }
1144 else
1145 error ("No symbol \"%s\" in current context.", exp);
1146 return;
1147 }
1148
1149 printf_filtered ("Symbol \"");
1150 fprintf_symbol_filtered (gdb_stdout, SYMBOL_NAME (sym),
1151 current_language->la_language, DMGL_ANSI);
1152 printf_filtered ("\" is ");
1153 val = SYMBOL_VALUE (sym);
1154 basereg = SYMBOL_BASEREG (sym);
1155 section = SYMBOL_BFD_SECTION (sym);
1156
1157 switch (SYMBOL_CLASS (sym))
1158 {
1159 case LOC_CONST:
1160 case LOC_CONST_BYTES:
1161 printf_filtered ("constant");
1162 break;
1163
1164 case LOC_LABEL:
1165 printf_filtered ("a label at address ");
1166 print_address_numeric (load_addr = SYMBOL_VALUE_ADDRESS (sym),
1167 1, gdb_stdout);
1168 if (section_is_overlay (section))
1169 {
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);
1174 }
1175 break;
1176
1177 case LOC_REGISTER:
1178 printf_filtered ("a variable in register %s", REGISTER_NAME (val));
1179 break;
1180
1181 case LOC_STATIC:
1182 printf_filtered ("static storage at address ");
1183 print_address_numeric (load_addr = SYMBOL_VALUE_ADDRESS (sym),
1184 1, gdb_stdout);
1185 if (section_is_overlay (section))
1186 {
1187 load_addr = overlay_unmapped_address (load_addr, section);
1188 printf_filtered (",\n -- loaded at ");
1189 print_address_numeric (load_addr, 1, gdb_stdout);
1190 printf_filtered (" in overlay section %s", section->name);
1191 }
1192 break;
1193
1194 case LOC_INDIRECT:
1195 printf_filtered ("external global (indirect addressing), at address *(");
1196 print_address_numeric (load_addr = SYMBOL_VALUE_ADDRESS (sym),
1197 1, gdb_stdout);
1198 printf_filtered (")");
1199 if (section_is_overlay (section))
1200 {
1201 load_addr = overlay_unmapped_address (load_addr, section);
1202 printf_filtered (",\n -- loaded at ");
1203 print_address_numeric (load_addr, 1, gdb_stdout);
1204 printf_filtered (" in overlay section %s", section->name);
1205 }
1206 break;
1207
1208 case LOC_REGPARM:
1209 printf_filtered ("an argument in register %s", REGISTER_NAME (val));
1210 break;
1211
1212 case LOC_REGPARM_ADDR:
1213 printf_filtered ("address of an argument in register %s", REGISTER_NAME (val));
1214 break;
1215
1216 case LOC_ARG:
1217 printf_filtered ("an argument at offset %ld", val);
1218 break;
1219
1220 case LOC_LOCAL_ARG:
1221 printf_filtered ("an argument at frame offset %ld", val);
1222 break;
1223
1224 case LOC_LOCAL:
1225 printf_filtered ("a local variable at frame offset %ld", val);
1226 break;
1227
1228 case LOC_REF_ARG:
1229 printf_filtered ("a reference argument at offset %ld", val);
1230 break;
1231
1232 case LOC_BASEREG:
1233 printf_filtered ("a variable at offset %ld from register %s",
1234 val, REGISTER_NAME (basereg));
1235 break;
1236
1237 case LOC_BASEREG_ARG:
1238 printf_filtered ("an argument at offset %ld from register %s",
1239 val, REGISTER_NAME (basereg));
1240 break;
1241
1242 case LOC_TYPEDEF:
1243 printf_filtered ("a typedef");
1244 break;
1245
1246 case LOC_BLOCK:
1247 printf_filtered ("a function at address ");
1248 #ifdef GDB_TARGET_MASK_DISAS_PC
1249 print_address_numeric
1250 (load_addr = GDB_TARGET_MASK_DISAS_PC (BLOCK_START (SYMBOL_BLOCK_VALUE (sym))),
1251 1, gdb_stdout);
1252 #else
1253 print_address_numeric (load_addr = BLOCK_START (SYMBOL_BLOCK_VALUE (sym)),
1254 1, gdb_stdout);
1255 #endif
1256 if (section_is_overlay (section))
1257 {
1258 load_addr = overlay_unmapped_address (load_addr, section);
1259 printf_filtered (",\n -- loaded at ");
1260 print_address_numeric (load_addr, 1, gdb_stdout);
1261 printf_filtered (" in overlay section %s", section->name);
1262 }
1263 break;
1264
1265 case LOC_UNRESOLVED:
1266 {
1267 struct minimal_symbol *msym;
1268
1269 msym = lookup_minimal_symbol (SYMBOL_NAME (sym), NULL, NULL);
1270 if (msym == NULL)
1271 printf_filtered ("unresolved");
1272 else
1273 {
1274 section = SYMBOL_BFD_SECTION (msym);
1275 printf_filtered ("static storage at address ");
1276 print_address_numeric (load_addr = SYMBOL_VALUE_ADDRESS (msym),
1277 1, gdb_stdout);
1278 if (section_is_overlay (section))
1279 {
1280 load_addr = overlay_unmapped_address (load_addr, section);
1281 printf_filtered (",\n -- loaded at ");
1282 print_address_numeric (load_addr, 1, gdb_stdout);
1283 printf_filtered (" in overlay section %s", section->name);
1284 }
1285 }
1286 }
1287 break;
1288
1289 case LOC_THREAD_LOCAL_STATIC:
1290 printf_filtered (
1291 "a thread-local variable at offset %ld from the thread base register %s",
1292 val, REGISTER_NAME (basereg));
1293 break;
1294
1295 case LOC_OPTIMIZED_OUT:
1296 printf_filtered ("optimized out");
1297 break;
1298
1299 default:
1300 printf_filtered ("of unknown (botched) type");
1301 break;
1302 }
1303 printf_filtered (".\n");
1304 }
1305 \f
1306 void
1307 x_command (char *exp, int from_tty)
1308 {
1309 struct expression *expr;
1310 struct format_data fmt;
1311 struct cleanup *old_chain;
1312 struct value *val;
1313
1314 fmt.format = last_format;
1315 fmt.size = last_size;
1316 fmt.count = 1;
1317
1318 if (exp && *exp == '/')
1319 {
1320 exp++;
1321 fmt = decode_format (&exp, last_format, last_size);
1322 }
1323
1324 /* If we have an expression, evaluate it and use it as the address. */
1325
1326 if (exp != 0 && *exp != 0)
1327 {
1328 expr = parse_expression (exp);
1329 /* Cause expression not to be there any more
1330 if this command is repeated with Newline.
1331 But don't clobber a user-defined command's definition. */
1332 if (from_tty)
1333 *exp = 0;
1334 old_chain = make_cleanup (free_current_contents, &expr);
1335 val = evaluate_expression (expr);
1336 if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_REF)
1337 val = value_ind (val);
1338 /* In rvalue contexts, such as this, functions are coerced into
1339 pointers to functions. This makes "x/i main" work. */
1340 if (/* last_format == 'i' && */
1341 TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FUNC
1342 && VALUE_LVAL (val) == lval_memory)
1343 next_address = VALUE_ADDRESS (val);
1344 else
1345 next_address = value_as_pointer (val);
1346 if (VALUE_BFD_SECTION (val))
1347 next_section = VALUE_BFD_SECTION (val);
1348 do_cleanups (old_chain);
1349 }
1350
1351 do_examine (fmt, next_address, next_section);
1352
1353 /* If the examine succeeds, we remember its size and format for next time. */
1354 last_size = fmt.size;
1355 last_format = fmt.format;
1356
1357 /* Set a couple of internal variables if appropriate. */
1358 if (last_examine_value)
1359 {
1360 /* Make last address examined available to the user as $_. Use
1361 the correct pointer type. */
1362 struct type *pointer_type
1363 = lookup_pointer_type (VALUE_TYPE (last_examine_value));
1364 set_internalvar (lookup_internalvar ("_"),
1365 value_from_pointer (pointer_type,
1366 last_examine_address));
1367
1368 /* Make contents of last address examined available to the user as $__. */
1369 /* If the last value has not been fetched from memory then don't
1370 fetch it now - instead mark it by voiding the $__ variable. */
1371 if (VALUE_LAZY (last_examine_value))
1372 set_internalvar (lookup_internalvar ("__"),
1373 allocate_value (builtin_type_void));
1374 else
1375 set_internalvar (lookup_internalvar ("__"), last_examine_value);
1376 }
1377 }
1378 \f
1379
1380 /* Add an expression to the auto-display chain.
1381 Specify the expression. */
1382
1383 static void
1384 display_command (char *exp, int from_tty)
1385 {
1386 struct format_data fmt;
1387 register struct expression *expr;
1388 register struct display *new;
1389 int display_it = 1;
1390
1391 #if defined(TUI)
1392 if (tui_version && *exp == '$')
1393 display_it = ((TuiStatus) tuiDo (
1394 (TuiOpaqueFuncPtr) tui_vSetLayoutTo, exp) == TUI_FAILURE);
1395 #endif
1396
1397 if (display_it)
1398 {
1399 if (exp == 0)
1400 {
1401 do_displays ();
1402 return;
1403 }
1404
1405 if (*exp == '/')
1406 {
1407 exp++;
1408 fmt = decode_format (&exp, 0, 0);
1409 if (fmt.size && fmt.format == 0)
1410 fmt.format = 'x';
1411 if (fmt.format == 'i' || fmt.format == 's')
1412 fmt.size = 'b';
1413 }
1414 else
1415 {
1416 fmt.format = 0;
1417 fmt.size = 0;
1418 fmt.count = 0;
1419 }
1420
1421 innermost_block = 0;
1422 expr = parse_expression (exp);
1423
1424 new = (struct display *) xmalloc (sizeof (struct display));
1425
1426 new->exp = expr;
1427 new->block = innermost_block;
1428 new->next = display_chain;
1429 new->number = ++display_number;
1430 new->format = fmt;
1431 new->status = enabled;
1432 display_chain = new;
1433
1434 if (from_tty && target_has_execution)
1435 do_one_display (new);
1436
1437 dont_repeat ();
1438 }
1439 }
1440
1441 static void
1442 free_display (struct display *d)
1443 {
1444 xfree (d->exp);
1445 xfree (d);
1446 }
1447
1448 /* Clear out the display_chain.
1449 Done when new symtabs are loaded, since this invalidates
1450 the types stored in many expressions. */
1451
1452 void
1453 clear_displays (void)
1454 {
1455 register struct display *d;
1456
1457 while ((d = display_chain) != NULL)
1458 {
1459 xfree (d->exp);
1460 display_chain = d->next;
1461 xfree (d);
1462 }
1463 }
1464
1465 /* Delete the auto-display number NUM. */
1466
1467 static void
1468 delete_display (int num)
1469 {
1470 register struct display *d1, *d;
1471
1472 if (!display_chain)
1473 error ("No display number %d.", num);
1474
1475 if (display_chain->number == num)
1476 {
1477 d1 = display_chain;
1478 display_chain = d1->next;
1479 free_display (d1);
1480 }
1481 else
1482 for (d = display_chain;; d = d->next)
1483 {
1484 if (d->next == 0)
1485 error ("No display number %d.", num);
1486 if (d->next->number == num)
1487 {
1488 d1 = d->next;
1489 d->next = d1->next;
1490 free_display (d1);
1491 break;
1492 }
1493 }
1494 }
1495
1496 /* Delete some values from the auto-display chain.
1497 Specify the element numbers. */
1498
1499 static void
1500 undisplay_command (char *args, int from_tty)
1501 {
1502 register char *p = args;
1503 register char *p1;
1504 register int num;
1505
1506 if (args == 0)
1507 {
1508 if (query ("Delete all auto-display expressions? "))
1509 clear_displays ();
1510 dont_repeat ();
1511 return;
1512 }
1513
1514 while (*p)
1515 {
1516 p1 = p;
1517 while (*p1 >= '0' && *p1 <= '9')
1518 p1++;
1519 if (*p1 && *p1 != ' ' && *p1 != '\t')
1520 error ("Arguments must be display numbers.");
1521
1522 num = atoi (p);
1523
1524 delete_display (num);
1525
1526 p = p1;
1527 while (*p == ' ' || *p == '\t')
1528 p++;
1529 }
1530 dont_repeat ();
1531 }
1532
1533 /* Display a single auto-display.
1534 Do nothing if the display cannot be printed in the current context,
1535 or if the display is disabled. */
1536
1537 static void
1538 do_one_display (struct display *d)
1539 {
1540 int within_current_scope;
1541
1542 if (d->status == disabled)
1543 return;
1544
1545 if (d->block)
1546 within_current_scope = contained_in (get_selected_block (), d->block);
1547 else
1548 within_current_scope = 1;
1549 if (!within_current_scope)
1550 return;
1551
1552 current_display_number = d->number;
1553
1554 annotate_display_begin ();
1555 printf_filtered ("%d", d->number);
1556 annotate_display_number_end ();
1557 printf_filtered (": ");
1558 if (d->format.size)
1559 {
1560 CORE_ADDR addr;
1561 value_ptr val;
1562
1563 annotate_display_format ();
1564
1565 printf_filtered ("x/");
1566 if (d->format.count != 1)
1567 printf_filtered ("%d", d->format.count);
1568 printf_filtered ("%c", d->format.format);
1569 if (d->format.format != 'i' && d->format.format != 's')
1570 printf_filtered ("%c", d->format.size);
1571 printf_filtered (" ");
1572
1573 annotate_display_expression ();
1574
1575 print_expression (d->exp, gdb_stdout);
1576 annotate_display_expression_end ();
1577
1578 if (d->format.count != 1)
1579 printf_filtered ("\n");
1580 else
1581 printf_filtered (" ");
1582
1583 val = evaluate_expression (d->exp);
1584 addr = value_as_pointer (val);
1585 if (d->format.format == 'i')
1586 addr = ADDR_BITS_REMOVE (addr);
1587
1588 annotate_display_value ();
1589
1590 do_examine (d->format, addr, VALUE_BFD_SECTION (val));
1591 }
1592 else
1593 {
1594 annotate_display_format ();
1595
1596 if (d->format.format)
1597 printf_filtered ("/%c ", d->format.format);
1598
1599 annotate_display_expression ();
1600
1601 print_expression (d->exp, gdb_stdout);
1602 annotate_display_expression_end ();
1603
1604 printf_filtered (" = ");
1605
1606 annotate_display_expression ();
1607
1608 print_formatted (evaluate_expression (d->exp),
1609 d->format.format, d->format.size, gdb_stdout);
1610 printf_filtered ("\n");
1611 }
1612
1613 annotate_display_end ();
1614
1615 gdb_flush (gdb_stdout);
1616 current_display_number = -1;
1617 }
1618
1619 /* Display all of the values on the auto-display chain which can be
1620 evaluated in the current scope. */
1621
1622 void
1623 do_displays (void)
1624 {
1625 register struct display *d;
1626
1627 for (d = display_chain; d; d = d->next)
1628 do_one_display (d);
1629 }
1630
1631 /* Delete the auto-display which we were in the process of displaying.
1632 This is done when there is an error or a signal. */
1633
1634 void
1635 disable_display (int num)
1636 {
1637 register struct display *d;
1638
1639 for (d = display_chain; d; d = d->next)
1640 if (d->number == num)
1641 {
1642 d->status = disabled;
1643 return;
1644 }
1645 printf_unfiltered ("No display number %d.\n", num);
1646 }
1647
1648 void
1649 disable_current_display (void)
1650 {
1651 if (current_display_number >= 0)
1652 {
1653 disable_display (current_display_number);
1654 fprintf_unfiltered (gdb_stderr, "Disabling display %d to avoid infinite recursion.\n",
1655 current_display_number);
1656 }
1657 current_display_number = -1;
1658 }
1659
1660 static void
1661 display_info (char *ignore, int from_tty)
1662 {
1663 register struct display *d;
1664
1665 if (!display_chain)
1666 printf_unfiltered ("There are no auto-display expressions now.\n");
1667 else
1668 printf_filtered ("Auto-display expressions now in effect:\n\
1669 Num Enb Expression\n");
1670
1671 for (d = display_chain; d; d = d->next)
1672 {
1673 printf_filtered ("%d: %c ", d->number, "ny"[(int) d->status]);
1674 if (d->format.size)
1675 printf_filtered ("/%d%c%c ", d->format.count, d->format.size,
1676 d->format.format);
1677 else if (d->format.format)
1678 printf_filtered ("/%c ", d->format.format);
1679 print_expression (d->exp, gdb_stdout);
1680 if (d->block && !contained_in (get_selected_block (), d->block))
1681 printf_filtered (" (cannot be evaluated in the current context)");
1682 printf_filtered ("\n");
1683 gdb_flush (gdb_stdout);
1684 }
1685 }
1686
1687 static void
1688 enable_display (char *args, int from_tty)
1689 {
1690 register char *p = args;
1691 register char *p1;
1692 register int num;
1693 register struct display *d;
1694
1695 if (p == 0)
1696 {
1697 for (d = display_chain; d; d = d->next)
1698 d->status = enabled;
1699 }
1700 else
1701 while (*p)
1702 {
1703 p1 = p;
1704 while (*p1 >= '0' && *p1 <= '9')
1705 p1++;
1706 if (*p1 && *p1 != ' ' && *p1 != '\t')
1707 error ("Arguments must be display numbers.");
1708
1709 num = atoi (p);
1710
1711 for (d = display_chain; d; d = d->next)
1712 if (d->number == num)
1713 {
1714 d->status = enabled;
1715 goto win;
1716 }
1717 printf_unfiltered ("No display number %d.\n", num);
1718 win:
1719 p = p1;
1720 while (*p == ' ' || *p == '\t')
1721 p++;
1722 }
1723 }
1724
1725 /* ARGSUSED */
1726 static void
1727 disable_display_command (char *args, int from_tty)
1728 {
1729 register char *p = args;
1730 register char *p1;
1731 register struct display *d;
1732
1733 if (p == 0)
1734 {
1735 for (d = display_chain; d; d = d->next)
1736 d->status = disabled;
1737 }
1738 else
1739 while (*p)
1740 {
1741 p1 = p;
1742 while (*p1 >= '0' && *p1 <= '9')
1743 p1++;
1744 if (*p1 && *p1 != ' ' && *p1 != '\t')
1745 error ("Arguments must be display numbers.");
1746
1747 disable_display (atoi (p));
1748
1749 p = p1;
1750 while (*p == ' ' || *p == '\t')
1751 p++;
1752 }
1753 }
1754 \f
1755
1756 /* Print the value in stack frame FRAME of a variable
1757 specified by a struct symbol. */
1758
1759 void
1760 print_variable_value (struct symbol *var, struct frame_info *frame,
1761 struct ui_file *stream)
1762 {
1763 value_ptr val = read_var_value (var, frame);
1764
1765 value_print (val, stream, 0, Val_pretty_default);
1766 }
1767
1768 /* Print the arguments of a stack frame, given the function FUNC
1769 running in that frame (as a symbol), the info on the frame,
1770 and the number of args according to the stack frame (or -1 if unknown). */
1771
1772 /* References here and elsewhere to "number of args according to the
1773 stack frame" appear in all cases to refer to "number of ints of args
1774 according to the stack frame". At least for VAX, i386, isi. */
1775
1776 void
1777 print_frame_args (struct symbol *func, struct frame_info *fi, int num,
1778 struct ui_file *stream)
1779 {
1780 struct block *b = NULL;
1781 int nsyms = 0;
1782 int first = 1;
1783 register int i;
1784 register struct symbol *sym;
1785 register value_ptr val;
1786 /* Offset of next stack argument beyond the one we have seen that is
1787 at the highest offset.
1788 -1 if we haven't come to a stack argument yet. */
1789 long highest_offset = -1;
1790 int arg_size;
1791 /* Number of ints of arguments that we have printed so far. */
1792 int args_printed = 0;
1793 #ifdef UI_OUT
1794 struct cleanup *old_chain, *list_chain;
1795 struct ui_stream *stb;
1796
1797 stb = ui_out_stream_new (uiout);
1798 old_chain = make_cleanup_ui_out_stream_delete (stb);
1799 #endif /* UI_OUT */
1800
1801 if (func)
1802 {
1803 b = SYMBOL_BLOCK_VALUE (func);
1804 nsyms = BLOCK_NSYMS (b);
1805 }
1806
1807 for (i = 0; i < nsyms; i++)
1808 {
1809 QUIT;
1810 sym = BLOCK_SYM (b, i);
1811
1812 /* Keep track of the highest stack argument offset seen, and
1813 skip over any kinds of symbols we don't care about. */
1814
1815 switch (SYMBOL_CLASS (sym))
1816 {
1817 case LOC_ARG:
1818 case LOC_REF_ARG:
1819 {
1820 long current_offset = SYMBOL_VALUE (sym);
1821 arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
1822
1823 /* Compute address of next argument by adding the size of
1824 this argument and rounding to an int boundary. */
1825 current_offset =
1826 ((current_offset + arg_size + sizeof (int) - 1)
1827 & ~(sizeof (int) - 1));
1828
1829 /* If this is the highest offset seen yet, set highest_offset. */
1830 if (highest_offset == -1
1831 || (current_offset > highest_offset))
1832 highest_offset = current_offset;
1833
1834 /* Add the number of ints we're about to print to args_printed. */
1835 args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
1836 }
1837
1838 /* We care about types of symbols, but don't need to keep track of
1839 stack offsets in them. */
1840 case LOC_REGPARM:
1841 case LOC_REGPARM_ADDR:
1842 case LOC_LOCAL_ARG:
1843 case LOC_BASEREG_ARG:
1844 break;
1845
1846 /* Other types of symbols we just skip over. */
1847 default:
1848 continue;
1849 }
1850
1851 /* We have to look up the symbol because arguments can have
1852 two entries (one a parameter, one a local) and the one we
1853 want is the local, which lookup_symbol will find for us.
1854 This includes gcc1 (not gcc2) on the sparc when passing a
1855 small structure and gcc2 when the argument type is float
1856 and it is passed as a double and converted to float by
1857 the prologue (in the latter case the type of the LOC_ARG
1858 symbol is double and the type of the LOC_LOCAL symbol is
1859 float). */
1860 /* But if the parameter name is null, don't try it.
1861 Null parameter names occur on the RS/6000, for traceback tables.
1862 FIXME, should we even print them? */
1863
1864 if (*SYMBOL_NAME (sym))
1865 {
1866 struct symbol *nsym;
1867 nsym = lookup_symbol
1868 (SYMBOL_NAME (sym),
1869 b, VAR_NAMESPACE, (int *) NULL, (struct symtab **) NULL);
1870 if (SYMBOL_CLASS (nsym) == LOC_REGISTER)
1871 {
1872 /* There is a LOC_ARG/LOC_REGISTER pair. This means that
1873 it was passed on the stack and loaded into a register,
1874 or passed in a register and stored in a stack slot.
1875 GDB 3.x used the LOC_ARG; GDB 4.0-4.11 used the LOC_REGISTER.
1876
1877 Reasons for using the LOC_ARG:
1878 (1) because find_saved_registers may be slow for remote
1879 debugging,
1880 (2) because registers are often re-used and stack slots
1881 rarely (never?) are. Therefore using the stack slot is
1882 much less likely to print garbage.
1883
1884 Reasons why we might want to use the LOC_REGISTER:
1885 (1) So that the backtrace prints the same value as
1886 "print foo". I see no compelling reason why this needs
1887 to be the case; having the backtrace print the value which
1888 was passed in, and "print foo" print the value as modified
1889 within the called function, makes perfect sense to me.
1890
1891 Additional note: It might be nice if "info args" displayed
1892 both values.
1893 One more note: There is a case with sparc structure passing
1894 where we need to use the LOC_REGISTER, but this is dealt with
1895 by creating a single LOC_REGPARM in symbol reading. */
1896
1897 /* Leave sym (the LOC_ARG) alone. */
1898 ;
1899 }
1900 else
1901 sym = nsym;
1902 }
1903
1904 #ifdef UI_OUT
1905 /* Print the current arg. */
1906 if (!first)
1907 ui_out_text (uiout, ", ");
1908 ui_out_wrap_hint (uiout, " ");
1909
1910 annotate_arg_begin ();
1911
1912 list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
1913 fprintf_symbol_filtered (stb->stream, SYMBOL_SOURCE_NAME (sym),
1914 SYMBOL_LANGUAGE (sym), DMGL_PARAMS | DMGL_ANSI);
1915 ui_out_field_stream (uiout, "name", stb);
1916 annotate_arg_name_end ();
1917 ui_out_text (uiout, "=");
1918 #else
1919 /* Print the current arg. */
1920 if (!first)
1921 fprintf_filtered (stream, ", ");
1922 wrap_here (" ");
1923
1924 annotate_arg_begin ();
1925
1926 fprintf_symbol_filtered (stream, SYMBOL_SOURCE_NAME (sym),
1927 SYMBOL_LANGUAGE (sym), DMGL_PARAMS | DMGL_ANSI);
1928 annotate_arg_name_end ();
1929 fputs_filtered ("=", stream);
1930 #endif
1931
1932 /* Avoid value_print because it will deref ref parameters. We just
1933 want to print their addresses. Print ??? for args whose address
1934 we do not know. We pass 2 as "recurse" to val_print because our
1935 standard indentation here is 4 spaces, and val_print indents
1936 2 for each recurse. */
1937 val = read_var_value (sym, fi);
1938
1939 annotate_arg_value (val == NULL ? NULL : VALUE_TYPE (val));
1940
1941 if (val)
1942 {
1943 if (GDB_TARGET_IS_D10V
1944 && SYMBOL_CLASS (sym) == LOC_REGPARM && TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_PTR)
1945 TYPE_LENGTH (VALUE_TYPE (val)) = 2;
1946 #ifdef UI_OUT
1947 val_print (VALUE_TYPE (val), VALUE_CONTENTS (val), 0,
1948 VALUE_ADDRESS (val),
1949 stb->stream, 0, 0, 2, Val_no_prettyprint);
1950 ui_out_field_stream (uiout, "value", stb);
1951 }
1952 else
1953 ui_out_text (uiout, "???");
1954
1955 /* Invoke ui_out_tuple_end. */
1956 do_cleanups (list_chain);
1957 #else
1958 val_print (VALUE_TYPE (val), VALUE_CONTENTS (val), 0,
1959 VALUE_ADDRESS (val),
1960 stream, 0, 0, 2, Val_no_prettyprint);
1961 }
1962 else
1963 fputs_filtered ("???", stream);
1964 #endif
1965
1966 annotate_arg_end ();
1967
1968 first = 0;
1969 }
1970
1971 /* Don't print nameless args in situations where we don't know
1972 enough about the stack to find them. */
1973 if (num != -1)
1974 {
1975 long start;
1976
1977 if (highest_offset == -1)
1978 start = FRAME_ARGS_SKIP;
1979 else
1980 start = highest_offset;
1981
1982 print_frame_nameless_args (fi, start, num - args_printed,
1983 first, stream);
1984 }
1985 #ifdef UI_OUT
1986 do_cleanups (old_chain);
1987 #endif /* no UI_OUT */
1988 }
1989
1990 /* Print nameless args on STREAM.
1991 FI is the frameinfo for this frame, START is the offset
1992 of the first nameless arg, and NUM is the number of nameless args to
1993 print. FIRST is nonzero if this is the first argument (not just
1994 the first nameless arg). */
1995
1996 static void
1997 print_frame_nameless_args (struct frame_info *fi, long start, int num,
1998 int first, struct ui_file *stream)
1999 {
2000 int i;
2001 CORE_ADDR argsaddr;
2002 long arg_value;
2003
2004 for (i = 0; i < num; i++)
2005 {
2006 QUIT;
2007 #ifdef NAMELESS_ARG_VALUE
2008 NAMELESS_ARG_VALUE (fi, start, &arg_value);
2009 #else
2010 argsaddr = FRAME_ARGS_ADDRESS (fi);
2011 if (!argsaddr)
2012 return;
2013
2014 arg_value = read_memory_integer (argsaddr + start, sizeof (int));
2015 #endif
2016
2017 if (!first)
2018 fprintf_filtered (stream, ", ");
2019
2020 #ifdef PRINT_NAMELESS_INTEGER
2021 PRINT_NAMELESS_INTEGER (stream, arg_value);
2022 #else
2023 #ifdef PRINT_TYPELESS_INTEGER
2024 PRINT_TYPELESS_INTEGER (stream, builtin_type_int, (LONGEST) arg_value);
2025 #else
2026 fprintf_filtered (stream, "%ld", arg_value);
2027 #endif /* PRINT_TYPELESS_INTEGER */
2028 #endif /* PRINT_NAMELESS_INTEGER */
2029 first = 0;
2030 start += sizeof (int);
2031 }
2032 }
2033 \f
2034 /* ARGSUSED */
2035 static void
2036 printf_command (char *arg, int from_tty)
2037 {
2038 register char *f = NULL;
2039 register char *s = arg;
2040 char *string = NULL;
2041 value_ptr *val_args;
2042 char *substrings;
2043 char *current_substring;
2044 int nargs = 0;
2045 int allocated_args = 20;
2046 struct cleanup *old_cleanups;
2047
2048 val_args = (value_ptr *) xmalloc (allocated_args * sizeof (value_ptr));
2049 old_cleanups = make_cleanup (free_current_contents, &val_args);
2050
2051 if (s == 0)
2052 error_no_arg ("format-control string and values to print");
2053
2054 /* Skip white space before format string */
2055 while (*s == ' ' || *s == '\t')
2056 s++;
2057
2058 /* A format string should follow, enveloped in double quotes */
2059 if (*s++ != '"')
2060 error ("Bad format string, missing '\"'.");
2061
2062 /* Parse the format-control string and copy it into the string STRING,
2063 processing some kinds of escape sequence. */
2064
2065 f = string = (char *) alloca (strlen (s) + 1);
2066
2067 while (*s != '"')
2068 {
2069 int c = *s++;
2070 switch (c)
2071 {
2072 case '\0':
2073 error ("Bad format string, non-terminated '\"'.");
2074
2075 case '\\':
2076 switch (c = *s++)
2077 {
2078 case '\\':
2079 *f++ = '\\';
2080 break;
2081 case 'a':
2082 *f++ = '\a';
2083 break;
2084 case 'b':
2085 *f++ = '\b';
2086 break;
2087 case 'f':
2088 *f++ = '\f';
2089 break;
2090 case 'n':
2091 *f++ = '\n';
2092 break;
2093 case 'r':
2094 *f++ = '\r';
2095 break;
2096 case 't':
2097 *f++ = '\t';
2098 break;
2099 case 'v':
2100 *f++ = '\v';
2101 break;
2102 case '"':
2103 *f++ = '"';
2104 break;
2105 default:
2106 /* ??? TODO: handle other escape sequences */
2107 error ("Unrecognized escape character \\%c in format string.",
2108 c);
2109 }
2110 break;
2111
2112 default:
2113 *f++ = c;
2114 }
2115 }
2116
2117 /* Skip over " and following space and comma. */
2118 s++;
2119 *f++ = '\0';
2120 while (*s == ' ' || *s == '\t')
2121 s++;
2122
2123 if (*s != ',' && *s != 0)
2124 error ("Invalid argument syntax");
2125
2126 if (*s == ',')
2127 s++;
2128 while (*s == ' ' || *s == '\t')
2129 s++;
2130
2131 /* Need extra space for the '\0's. Doubling the size is sufficient. */
2132 substrings = alloca (strlen (string) * 2);
2133 current_substring = substrings;
2134
2135 {
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. */
2139
2140 enum argclass
2141 {
2142 no_arg, int_arg, string_arg, double_arg, long_long_arg
2143 };
2144 enum argclass *argclass;
2145 enum argclass this_argclass;
2146 char *last_arg;
2147 int nargs_wanted;
2148 int lcount;
2149 int i;
2150
2151 argclass = (enum argclass *) alloca (strlen (s) * sizeof *argclass);
2152 nargs_wanted = 0;
2153 f = string;
2154 last_arg = string;
2155 while (*f)
2156 if (*f++ == '%')
2157 {
2158 lcount = 0;
2159 while (strchr ("0123456789.hlL-+ #", *f))
2160 {
2161 if (*f == 'l' || *f == 'L')
2162 lcount++;
2163 f++;
2164 }
2165 switch (*f)
2166 {
2167 case 's':
2168 this_argclass = string_arg;
2169 break;
2170
2171 case 'e':
2172 case 'f':
2173 case 'g':
2174 this_argclass = double_arg;
2175 break;
2176
2177 case '*':
2178 error ("`*' not supported for precision or width in printf");
2179
2180 case 'n':
2181 error ("Format specifier `n' not supported in printf");
2182
2183 case '%':
2184 this_argclass = no_arg;
2185 break;
2186
2187 default:
2188 if (lcount > 1)
2189 this_argclass = long_long_arg;
2190 else
2191 this_argclass = int_arg;
2192 break;
2193 }
2194 f++;
2195 if (this_argclass != no_arg)
2196 {
2197 strncpy (current_substring, last_arg, f - last_arg);
2198 current_substring += f - last_arg;
2199 *current_substring++ = '\0';
2200 last_arg = f;
2201 argclass[nargs_wanted++] = this_argclass;
2202 }
2203 }
2204
2205 /* Now, parse all arguments and evaluate them.
2206 Store the VALUEs in VAL_ARGS. */
2207
2208 while (*s != '\0')
2209 {
2210 char *s1;
2211 if (nargs == allocated_args)
2212 val_args = (value_ptr *) xrealloc ((char *) val_args,
2213 (allocated_args *= 2)
2214 * sizeof (value_ptr));
2215 s1 = s;
2216 val_args[nargs] = parse_to_comma_and_eval (&s1);
2217
2218 /* If format string wants a float, unchecked-convert the value to
2219 floating point of the same size */
2220
2221 if (argclass[nargs] == double_arg)
2222 {
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;
2228 }
2229 nargs++;
2230 s = s1;
2231 if (*s == ',')
2232 s++;
2233 }
2234
2235 if (nargs != nargs_wanted)
2236 error ("Wrong number of arguments for specified format-string");
2237
2238 /* Now actually print them. */
2239 current_substring = substrings;
2240 for (i = 0; i < nargs; i++)
2241 {
2242 switch (argclass[i])
2243 {
2244 case string_arg:
2245 {
2246 char *str;
2247 CORE_ADDR tem;
2248 int j;
2249 tem = value_as_pointer (val_args[i]);
2250
2251 /* This is a %s argument. Find the length of the string. */
2252 for (j = 0;; j++)
2253 {
2254 char c;
2255 QUIT;
2256 read_memory (tem + j, &c, 1);
2257 if (c == 0)
2258 break;
2259 }
2260
2261 /* Copy the string contents into a string inside GDB. */
2262 str = (char *) alloca (j + 1);
2263 if (j != 0)
2264 read_memory (tem, str, j);
2265 str[j] = 0;
2266
2267 printf_filtered (current_substring, str);
2268 }
2269 break;
2270 case double_arg:
2271 {
2272 double val = value_as_double (val_args[i]);
2273 printf_filtered (current_substring, val);
2274 break;
2275 }
2276 case long_long_arg:
2277 #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
2278 {
2279 long long val = value_as_long (val_args[i]);
2280 printf_filtered (current_substring, val);
2281 break;
2282 }
2283 #else
2284 error ("long long not supported in printf");
2285 #endif
2286 case int_arg:
2287 {
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);
2291 break;
2292 }
2293 default: /* purecov: deadcode */
2294 error ("internal error in printf_command"); /* purecov: deadcode */
2295 }
2296 /* Skip to the next substring. */
2297 current_substring += strlen (current_substring) + 1;
2298 }
2299 /* Print the portion of the format string after the last argument. */
2300 printf_filtered (last_arg);
2301 }
2302 do_cleanups (old_cleanups);
2303 }
2304 \f
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
2310 assembly. */
2311
2312 /* ARGSUSED */
2313 static void
2314 disassemble_command (char *arg, int from_tty)
2315 {
2316 CORE_ADDR low, high;
2317 char *name;
2318 CORE_ADDR pc, pc_masked;
2319 char *space_index;
2320 #if 0
2321 asection *section;
2322 #endif
2323
2324 name = NULL;
2325 if (!arg)
2326 {
2327 if (!selected_frame)
2328 error ("No frame selected.\n");
2329
2330 pc = get_frame_pc (selected_frame);
2331 if (find_pc_partial_function (pc, &name, &low, &high) == 0)
2332 error ("No function contains program counter for selected frame.\n");
2333 #if defined(TUI)
2334 else if (tui_version)
2335 low = (CORE_ADDR) tuiDo ((TuiOpaqueFuncPtr) tui_vGetLowDisassemblyAddress,
2336 (Opaque) low,
2337 (Opaque) pc);
2338 #endif
2339 low += FUNCTION_START_OFFSET;
2340 }
2341 else if (!(space_index = (char *) strchr (arg, ' ')))
2342 {
2343 /* One argument. */
2344 pc = parse_and_eval_address (arg);
2345 if (find_pc_partial_function (pc, &name, &low, &high) == 0)
2346 error ("No function contains specified address.\n");
2347 #if defined(TUI)
2348 else if (tui_version)
2349 low = (CORE_ADDR) tuiDo ((TuiOpaqueFuncPtr) tui_vGetLowDisassemblyAddress,
2350 (Opaque) low,
2351 (Opaque) pc);
2352 #endif
2353 #if 0
2354 if (overlay_debugging)
2355 {
2356 section = find_pc_overlay (pc);
2357 if (pc_in_unmapped_range (pc, section))
2358 {
2359 /* find_pc_partial_function will have returned low and high
2360 relative to the symbolic (mapped) address range. Need to
2361 translate them back to the unmapped range where PC is. */
2362 low = overlay_unmapped_address (low, section);
2363 high = overlay_unmapped_address (high, section);
2364 }
2365 }
2366 #endif
2367 low += FUNCTION_START_OFFSET;
2368 }
2369 else
2370 {
2371 /* Two arguments. */
2372 *space_index = '\0';
2373 low = parse_and_eval_address (arg);
2374 high = parse_and_eval_address (space_index + 1);
2375 }
2376
2377 #if defined(TUI)
2378 if (!tui_version ||
2379 m_winPtrIsNull (disassemWin) || !disassemWin->generic.isVisible)
2380 #endif
2381 {
2382 printf_filtered ("Dump of assembler code ");
2383 if (name != NULL)
2384 {
2385 printf_filtered ("for function %s:\n", name);
2386 }
2387 else
2388 {
2389 printf_filtered ("from ");
2390 print_address_numeric (low, 1, gdb_stdout);
2391 printf_filtered (" to ");
2392 print_address_numeric (high, 1, gdb_stdout);
2393 printf_filtered (":\n");
2394 }
2395
2396 /* Dump the specified range. */
2397 pc = low;
2398
2399 #ifdef GDB_TARGET_MASK_DISAS_PC
2400 pc_masked = GDB_TARGET_MASK_DISAS_PC (pc);
2401 #else
2402 pc_masked = pc;
2403 #endif
2404
2405 while (pc_masked < high)
2406 {
2407 QUIT;
2408 print_address (pc_masked, gdb_stdout);
2409 printf_filtered (":\t");
2410 /* We often wrap here if there are long symbolic names. */
2411 wrap_here (" ");
2412 pc += print_insn (pc, gdb_stdout);
2413 printf_filtered ("\n");
2414
2415 #ifdef GDB_TARGET_MASK_DISAS_PC
2416 pc_masked = GDB_TARGET_MASK_DISAS_PC (pc);
2417 #else
2418 pc_masked = pc;
2419 #endif
2420 }
2421 printf_filtered ("End of assembler dump.\n");
2422 gdb_flush (gdb_stdout);
2423 }
2424 #if defined(TUI)
2425 else
2426 {
2427 tuiDo ((TuiOpaqueFuncPtr) tui_vAddWinToLayout, DISASSEM_WIN);
2428 tuiDo ((TuiOpaqueFuncPtr) tui_vUpdateSourceWindowsWithAddr, low);
2429 }
2430 #endif
2431 }
2432
2433 /* Print the instruction at address MEMADDR in debugged memory,
2434 on STREAM. Returns length of the instruction, in bytes. */
2435
2436 static int
2437 print_insn (CORE_ADDR memaddr, struct ui_file *stream)
2438 {
2439 if (TARGET_BYTE_ORDER == BIG_ENDIAN)
2440 TARGET_PRINT_INSN_INFO->endian = BFD_ENDIAN_BIG;
2441 else
2442 TARGET_PRINT_INSN_INFO->endian = BFD_ENDIAN_LITTLE;
2443
2444 if (TARGET_ARCHITECTURE != NULL)
2445 TARGET_PRINT_INSN_INFO->mach = TARGET_ARCHITECTURE->mach;
2446 /* else: should set .mach=0 but some disassemblers don't grok this */
2447
2448 return TARGET_PRINT_INSN (memaddr, TARGET_PRINT_INSN_INFO);
2449 }
2450 \f
2451
2452 void
2453 _initialize_printcmd (void)
2454 {
2455 struct cmd_list_element *c;
2456
2457 current_display_number = -1;
2458
2459 add_info ("address", address_info,
2460 "Describe where symbol SYM is stored.");
2461
2462 add_info ("symbol", sym_info,
2463 "Describe what symbol is at location ADDR.\n\
2464 Only for symbols with fixed locations (global or static scope).");
2465
2466 add_com ("x", class_vars, x_command,
2467 concat ("Examine memory: x/FMT ADDRESS.\n\
2468 ADDRESS is an expression for the memory address to examine.\n\
2469 FMT is a repeat count followed by a format letter and a size letter.\n\
2470 Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),\n\
2471 t(binary), f(float), a(address), i(instruction), c(char) and s(string).\n",
2472 "Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).\n\
2473 The specified number of objects of the specified size are printed\n\
2474 according to the format.\n\n\
2475 Defaults for format and size letters are those previously used.\n\
2476 Default count is 1. Default address is following last thing printed\n\
2477 with this command or \"print\".", NULL));
2478
2479 c = add_com ("disassemble", class_vars, disassemble_command,
2480 "Disassemble a specified section of memory.\n\
2481 Default is the function surrounding the pc of the selected frame.\n\
2482 With a single argument, the function surrounding that address is dumped.\n\
2483 Two arguments are taken as a range of memory to dump.");
2484 c->completer = location_completer;
2485 if (xdb_commands)
2486 add_com_alias ("va", "disassemble", class_xdb, 0);
2487
2488 #if 0
2489 add_com ("whereis", class_vars, whereis_command,
2490 "Print line number and file of definition of variable.");
2491 #endif
2492
2493 add_info ("display", display_info,
2494 "Expressions to display when program stops, with code numbers.");
2495
2496 add_cmd ("undisplay", class_vars, undisplay_command,
2497 "Cancel some expressions to be displayed when program stops.\n\
2498 Arguments are the code numbers of the expressions to stop displaying.\n\
2499 No argument means cancel all automatic-display expressions.\n\
2500 \"delete display\" has the same effect as this command.\n\
2501 Do \"info display\" to see current list of code numbers.",
2502 &cmdlist);
2503
2504 add_com ("display", class_vars, display_command,
2505 "Print value of expression EXP each time the program stops.\n\
2506 /FMT may be used before EXP as in the \"print\" command.\n\
2507 /FMT \"i\" or \"s\" or including a size-letter is allowed,\n\
2508 as in the \"x\" command, and then EXP is used to get the address to examine\n\
2509 and examining is done as in the \"x\" command.\n\n\
2510 With no argument, display all currently requested auto-display expressions.\n\
2511 Use \"undisplay\" to cancel display requests previously made."
2512 );
2513
2514 add_cmd ("display", class_vars, enable_display,
2515 "Enable some expressions to be displayed when program stops.\n\
2516 Arguments are the code numbers of the expressions to resume displaying.\n\
2517 No argument means enable all automatic-display expressions.\n\
2518 Do \"info display\" to see current list of code numbers.", &enablelist);
2519
2520 add_cmd ("display", class_vars, disable_display_command,
2521 "Disable some expressions to be displayed when program stops.\n\
2522 Arguments are the code numbers of the expressions to stop displaying.\n\
2523 No argument means disable all automatic-display expressions.\n\
2524 Do \"info display\" to see current list of code numbers.", &disablelist);
2525
2526 add_cmd ("display", class_vars, undisplay_command,
2527 "Cancel some expressions to be displayed when program stops.\n\
2528 Arguments are the code numbers of the expressions to stop displaying.\n\
2529 No argument means cancel all automatic-display expressions.\n\
2530 Do \"info display\" to see current list of code numbers.", &deletelist);
2531
2532 add_com ("printf", class_vars, printf_command,
2533 "printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
2534 This is useful for formatted output in user-defined commands.");
2535
2536 add_com ("output", class_vars, output_command,
2537 "Like \"print\" but don't put in value history and don't print newline.\n\
2538 This is useful in user-defined commands.");
2539
2540 add_prefix_cmd ("set", class_vars, set_command,
2541 concat ("Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2542 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2543 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2544 with $), a register (a few standard names starting with $), or an actual\n\
2545 variable in the program being debugged. EXP is any valid expression.\n",
2546 "Use \"set variable\" for variables with names identical to set subcommands.\n\
2547 \nWith a subcommand, this command modifies parts of the gdb environment.\n\
2548 You can see these environment settings with the \"show\" command.", NULL),
2549 &setlist, "set ", 1, &cmdlist);
2550 if (dbx_commands)
2551 add_com ("assign", class_vars, set_command, concat ("Evaluate expression \
2552 EXP and assign result to variable VAR, using assignment\n\
2553 syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2554 example). VAR may be a debugger \"convenience\" variable (names starting\n\
2555 with $), a register (a few standard names starting with $), or an actual\n\
2556 variable in the program being debugged. EXP is any valid expression.\n",
2557 "Use \"set variable\" for variables with names identical to set subcommands.\n\
2558 \nWith a subcommand, this command modifies parts of the gdb environment.\n\
2559 You can see these environment settings with the \"show\" command.", NULL));
2560
2561 /* "call" is the same as "set", but handy for dbx users to call fns. */
2562 c = add_com ("call", class_vars, call_command,
2563 "Call a function in the program.\n\
2564 The argument is the function name and arguments, in the notation of the\n\
2565 current working language. The result is printed and saved in the value\n\
2566 history, if it is not void.");
2567 c->completer = location_completer;
2568
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\".",
2576 &setlist);
2577
2578 c = 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\
2582 \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",
2590 "\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",
2597 "\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 c->completer = location_completer;
2601 add_com_alias ("p", "print", class_vars, 1);
2602
2603 c = add_com ("inspect", class_vars, inspect_command,
2604 "Same as \"print\" command, except that if you are running in the epoch\n\
2605 environment, the value is printed in its own window.");
2606 c->completer = location_completer;
2607
2608 add_show_from_set (
2609 add_set_cmd ("max-symbolic-offset", no_class, var_uinteger,
2610 (char *) &max_symbolic_offset,
2611 "Set the largest offset that will be printed in <symbol+1234> form.",
2612 &setprintlist),
2613 &showprintlist);
2614 add_show_from_set (
2615 add_set_cmd ("symbol-filename", no_class, var_boolean,
2616 (char *) &print_symbol_filename,
2617 "Set printing of source filename and line number with <symbol>.",
2618 &setprintlist),
2619 &showprintlist);
2620
2621 /* For examine/instruction a single byte quantity is specified as
2622 the data. This avoids problems with value_at_lazy() requiring a
2623 valid data type (and rejecting VOID). */
2624 examine_i_type = init_type (TYPE_CODE_INT, 1, 0, "examine_i_type", NULL);
2625
2626 examine_b_type = init_type (TYPE_CODE_INT, 1, 0, "examine_b_type", NULL);
2627 examine_h_type = init_type (TYPE_CODE_INT, 2, 0, "examine_h_type", NULL);
2628 examine_w_type = init_type (TYPE_CODE_INT, 4, 0, "examine_w_type", NULL);
2629 examine_g_type = init_type (TYPE_CODE_INT, 8, 0, "examine_g_type", NULL);
2630
2631 }
This page took 0.089376 seconds and 5 git commands to generate.