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