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