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