1 /* Print and select stack frames for GDB, the GNU debugger.
2 Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995
3 Free Software Foundation, Inc.
5 This file is part of GDB.
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.
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.
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. */
23 #include "gdb_string.h"
27 #include "expression.h"
33 #include "breakpoint.h"
38 static void return_command PARAMS ((char *, int));
40 static void down_command PARAMS ((char *, int));
42 static void down_silently_command PARAMS ((char *, int));
44 static void up_command PARAMS ((char *, int));
46 static void up_silently_command PARAMS ((char *, int));
48 static void frame_command PARAMS ((char *, int));
50 static void select_frame_command PARAMS ((char *, int));
52 static void args_info PARAMS ((char *, int));
54 static void print_frame_arg_vars PARAMS ((struct frame_info *, GDB_FILE *));
56 static void catch_info PARAMS ((char *, int));
58 static void locals_info PARAMS ((char *, int));
60 static void print_frame_label_vars PARAMS ((struct frame_info *, int,
63 static void print_frame_local_vars PARAMS ((struct frame_info *, GDB_FILE *));
65 static int print_block_frame_labels PARAMS ((struct block *, int *,
68 static int print_block_frame_locals PARAMS ((struct block *,
72 static void backtrace_command PARAMS ((char *, int));
74 static struct frame_info *parse_frame_specification PARAMS ((char *));
76 static void frame_info PARAMS ((char *, int));
78 extern int addressprint; /* Print addresses, or stay symbolic only? */
79 extern int info_verbose; /* Verbosity of symbol reading msgs */
80 extern int lines_to_list; /* # of lines "list" command shows by default */
82 /* The "selected" stack frame is used by default for local and arg access.
83 May be zero, for no selected frame. */
85 struct frame_info *selected_frame;
87 /* Level of the selected frame:
88 0 for innermost, 1 for its caller, ...
89 or -1 for frame specified by address with no defined level. */
91 int selected_frame_level;
93 /* Zero means do things normally; we are interacting directly with the
94 user. One means print the full filename and linenumber when a
95 frame is printed, and do so in a format emacs18/emacs19.22 can
96 parse. Two means print similar annotations, but in many more
97 cases and in a slightly different syntax. */
99 int annotation_level = 0;
102 struct print_stack_frame_args {
103 struct frame_info *fi;
109 static int print_stack_frame_stub PARAMS ((char *));
111 /* Pass the args the way catch_errors wants them. */
113 print_stack_frame_stub (args)
116 struct print_stack_frame_args *p = (struct print_stack_frame_args *)args;
118 print_frame_info (p->fi, p->level, p->source, p->args);
122 /* Print a stack frame briefly. FRAME_INFI should be the frame info
123 and LEVEL should be its level in the stack (or -1 for level not defined).
124 This prints the level, the function executing, the arguments,
125 and the file name and line number.
126 If the pc is not at the beginning of the source line,
127 the actual pc is printed at the beginning.
129 If SOURCE is 1, print the source line as well.
130 If SOURCE is -1, print ONLY the source line. */
133 print_stack_frame (fi, level, source)
134 struct frame_info *fi;
138 struct print_stack_frame_args args;
142 args.source = source;
145 catch_errors (print_stack_frame_stub, (char *)&args, "", RETURN_MASK_ERROR);
148 struct print_args_args {
150 struct frame_info *fi;
153 static int print_args_stub PARAMS ((char *));
155 /* Pass the args the way catch_errors wants them. */
158 print_args_stub (args)
162 struct print_args_args *p = (struct print_args_args *)args;
164 FRAME_NUM_ARGS (numargs, (p->fi));
165 print_frame_args (p->func, p->fi, numargs, gdb_stdout);
169 /* LEVEL is the level of the frame, or -1 if it is the innermost frame
170 but we don't want to print the level. */
173 print_frame_info (fi, level, source, args)
174 struct frame_info *fi;
179 struct symtab_and_line sal;
181 register char *funname = 0;
182 enum language funlang = language_unknown;
185 char buf[MAX_REGISTER_RAW_SIZE];
188 /* On the 68k, this spends too much time in m68k_find_saved_regs. */
190 /* Get the value of SP_REGNUM relative to the frame. */
191 get_saved_register (buf, (int *)NULL, (CORE_ADDR *)NULL,
192 FRAME_INFO_ID (fi), SP_REGNUM, (enum lval_type *)NULL);
193 sp = extract_address (buf, REGISTER_RAW_SIZE (SP_REGNUM));
195 /* This is not a perfect test, because if a function alloca's some
196 memory, puts some code there, and then jumps into it, then the test
197 will succeed even though there is no call dummy. Probably best is
198 to check for a bp_call_dummy breakpoint. */
199 if (PC_IN_CALL_DUMMY (fi->pc, sp, fi->frame))
201 if (frame_in_dummy (fi))
204 annotate_frame_begin (level == -1 ? 0 : level, fi->pc);
206 /* Do this regardless of SOURCE because we don't have any source
207 to list for this frame. */
209 printf_filtered ("#%-2d ", level);
210 annotate_function_call ();
211 printf_filtered ("<function called from gdb>\n");
212 annotate_frame_end ();
215 if (fi->signal_handler_caller)
217 annotate_frame_begin (level == -1 ? 0 : level, fi->pc);
219 /* Do this regardless of SOURCE because we don't have any source
220 to list for this frame. */
222 printf_filtered ("#%-2d ", level);
223 annotate_signal_handler_caller ();
224 printf_filtered ("<signal handler called>\n");
225 annotate_frame_end ();
229 /* If fi is not the innermost frame, that normally means that fi->pc
230 points to *after* the call instruction, and we want to get the line
231 containing the call, never the next line. But if the next frame is
232 a signal_handler_caller or a dummy frame, then the next frame was
233 not entered as the result of a call, and we want to get the line
234 containing fi->pc. */
236 find_pc_line (fi->pc,
238 && !fi->next->signal_handler_caller
239 && !frame_in_dummy (fi->next));
241 func = find_pc_function (fi->pc);
244 /* In certain pathological cases, the symtabs give the wrong
245 function (when we are in the first function in a file which
246 is compiled without debugging symbols, the previous function
247 is compiled with debugging symbols, and the "foo.o" symbol
248 that is supposed to tell us where the file with debugging symbols
249 ends has been truncated by ar because it is longer than 15
250 characters). This also occurs if the user uses asm() to create
251 a function but not stabs for it (in a file compiled -g).
253 So look in the minimal symbol tables as well, and if it comes
254 up with a larger address for the function use that instead.
255 I don't think this can ever cause any problems; there shouldn't
256 be any minimal symbols in the middle of a function; if this is
257 ever changed many parts of GDB will need to be changed (and we'll
258 create a find_pc_minimal_function or some such). */
260 struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
262 && (SYMBOL_VALUE_ADDRESS (msymbol)
263 > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
266 /* There is no particular reason to think the line number
267 information is wrong. Someone might have just put in
268 a label with asm() but left the line numbers alone. */
269 /* In this case we have no way of knowing the source file
270 and line number, so don't print them. */
273 /* We also don't know anything about the function besides
274 its address and name. */
276 funname = SYMBOL_NAME (msymbol);
277 funlang = SYMBOL_LANGUAGE (msymbol);
281 funname = SYMBOL_NAME (func);
282 funlang = SYMBOL_LANGUAGE (func);
287 register struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
290 funname = SYMBOL_NAME (msymbol);
291 funlang = SYMBOL_LANGUAGE (msymbol);
295 if (source >= 0 || !sal.symtab)
297 annotate_frame_begin (level == -1 ? 0 : level, fi->pc);
300 printf_filtered ("#%-2d ", level);
302 if (fi->pc != sal.pc || !sal.symtab)
304 annotate_frame_address ();
305 print_address_numeric (fi->pc, 1, gdb_stdout);
306 annotate_frame_address_end ();
307 printf_filtered (" in ");
309 annotate_frame_function_name ();
310 fprintf_symbol_filtered (gdb_stdout, funname ? funname : "??", funlang,
313 annotate_frame_args ();
314 fputs_filtered (" (", gdb_stdout);
317 struct print_args_args args;
320 catch_errors (print_args_stub, (char *)&args, "", RETURN_MASK_ERROR);
322 printf_filtered (")");
323 if (sal.symtab && sal.symtab->filename)
325 annotate_frame_source_begin ();
327 printf_filtered (" at ");
328 annotate_frame_source_file ();
329 printf_filtered ("%s", sal.symtab->filename);
330 annotate_frame_source_file_end ();
331 printf_filtered (":");
332 annotate_frame_source_line ();
333 printf_filtered ("%d", sal.line);
334 annotate_frame_source_end ();
337 #ifdef PC_LOAD_SEGMENT
338 /* If we couldn't print out function name but if can figure out what
339 load segment this pc value is from, at least print out some info
340 about its load segment. */
343 annotate_frame_where ();
345 printf_filtered (" from %s", PC_LOAD_SEGMENT (fi->pc));
351 char *lib = PC_SOLIB (fi->pc);
354 annotate_frame_where ();
356 printf_filtered (" from %s", lib);
360 printf_filtered ("\n");
363 if ((source != 0) && sal.symtab)
366 int mid_statement = source < 0 && fi->pc != sal.pc;
367 if (annotation_level)
368 done = identify_source_line (sal.symtab, sal.line, mid_statement,
372 if (addressprint && mid_statement)
374 print_address_numeric (fi->pc, 1, gdb_stdout);
375 printf_filtered ("\t");
377 if (print_frame_info_listing_hook)
378 print_frame_info_listing_hook (sal.symtab, sal.line, sal.line + 1, 0);
380 print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
382 current_source_line = max (sal.line - lines_to_list/2, 1);
385 set_default_breakpoint (1, fi->pc, sal.symtab, sal.line);
387 annotate_frame_end ();
389 gdb_flush (gdb_stdout);
392 /* Read a frame specification in whatever the appropriate format is.
393 Call error() if the specification is in any way invalid (i.e.
394 this function never returns NULL). */
396 static struct frame_info *
397 parse_frame_specification (frame_exp)
402 CORE_ADDR args[MAXARGS];
406 char *addr_string, *p;
407 struct cleanup *tmp_cleanup;
409 while (*frame_exp == ' ') frame_exp++;
413 if (numargs > MAXARGS)
414 error ("Too many args in frame specification");
415 /* Parse an argument. */
416 for (p = frame_exp; *p && *p != ' '; p++)
418 addr_string = savestring(frame_exp, p - frame_exp);
421 tmp_cleanup = make_cleanup (free, addr_string);
422 args[numargs++] = parse_and_eval_address (addr_string);
423 do_cleanups (tmp_cleanup);
426 /* Skip spaces, move to possible next arg. */
427 while (*p == ' ') p++;
435 if (selected_frame == NULL)
436 error ("No selected frame.");
437 return selected_frame;
442 struct frame_info *fid =
443 find_relative_frame (get_current_frame (), &level);
444 struct frame_info *tfid;
447 /* find_relative_frame was successful */
450 /* If SETUP_ARBITRARY_FRAME is defined, then frame specifications
451 take at least 2 addresses. It is important to detect this case
452 here so that "frame 100" does not give a confusing error message
453 like "frame specification requires two addresses". This of course
454 does not solve the "frame 100" problem for machines on which
455 a frame specification can be made with one address. To solve
456 that, we need a new syntax for a specifying a frame by address.
457 I think the cleanest syntax is $frame(0x45) ($frame(0x23,0x45) for
458 two args, etc.), but people might think that is too much typing,
459 so I guess *0x23,0x45 would be a possible alternative (commas
460 really should be used instead of spaces to delimit; using spaces
461 normally works in an expression). */
462 #ifdef SETUP_ARBITRARY_FRAME
463 error ("No frame %d", args[0]);
466 /* If (s)he specifies the frame with an address, he deserves what
467 (s)he gets. Still, give the highest one that matches. */
469 for (fid = get_current_frame ();
470 fid && fid->frame != args[0];
471 fid = get_prev_frame (fid))
475 while ((tfid = get_prev_frame (fid)) &&
476 (tfid->frame == args[0]))
479 /* We couldn't identify the frame as an existing frame, but
480 perhaps we can create one with a single argument. */
484 #ifdef SETUP_ARBITRARY_FRAME
485 return SETUP_ARBITRARY_FRAME (numargs, args);
487 /* Usual case. Do it here rather than have everyone supply
488 a SETUP_ARBITRARY_FRAME that does this. */
490 return create_new_frame (args[0], 0);
491 error ("Too many args in frame specification");
498 /* FRAME_ARGS_ADDRESS_CORRECT is just like FRAME_ARGS_ADDRESS except
499 that if it is unsure about the answer, it returns 0
500 instead of guessing (this happens on the VAX and i960, for example).
502 On most machines, we never have to guess about the args address,
503 so FRAME_ARGS_ADDRESS{,_CORRECT} are the same. */
504 #if !defined (FRAME_ARGS_ADDRESS_CORRECT)
505 #define FRAME_ARGS_ADDRESS_CORRECT FRAME_ARGS_ADDRESS
508 /* Print verbosely the selected frame or the frame at address ADDR.
509 This means absolutely all information in the frame is printed. */
512 frame_info (addr_exp, from_tty)
516 struct frame_info *fi;
517 struct frame_saved_regs fsr;
518 struct symtab_and_line sal;
521 struct frame_info *calling_frame_info;
522 int i, count, numregs;
524 enum language funlang = language_unknown;
526 if (!target_has_stack)
529 fi = parse_frame_specification (addr_exp);
531 error ("Invalid frame specified.");
533 sal = find_pc_line (fi->pc,
535 && !fi->next->signal_handler_caller
536 && !frame_in_dummy (fi->next));
537 func = get_frame_function (fi);
538 s = find_pc_symtab(fi->pc);
541 funname = SYMBOL_NAME (func);
542 funlang = SYMBOL_LANGUAGE (func);
546 register struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
549 funname = SYMBOL_NAME (msymbol);
550 funlang = SYMBOL_LANGUAGE (msymbol);
553 calling_frame_info = get_prev_frame (fi);
555 if (!addr_exp && selected_frame_level >= 0)
557 printf_filtered ("Stack level %d, frame at ", selected_frame_level);
558 print_address_numeric (fi->frame, 1, gdb_stdout);
559 printf_filtered (":\n");
563 printf_filtered ("Stack frame at ");
564 print_address_numeric (fi->frame, 1, gdb_stdout);
565 printf_filtered (":\n");
567 printf_filtered (" %s = ", reg_names[PC_REGNUM]);
568 print_address_numeric (fi->pc, 1, gdb_stdout);
573 printf_filtered (" in ");
574 fprintf_symbol_filtered (gdb_stdout, funname, funlang,
575 DMGL_ANSI | DMGL_PARAMS);
579 printf_filtered (" (%s:%d)", sal.symtab->filename, sal.line);
580 puts_filtered ("; ");
582 printf_filtered ("saved %s ", reg_names[PC_REGNUM]);
583 print_address_numeric (FRAME_SAVED_PC (fi), 1, gdb_stdout);
584 printf_filtered ("\n");
588 #ifdef FRAMELESS_FUNCTION_INVOCATION
589 FRAMELESS_FUNCTION_INVOCATION (fi, frameless);
592 printf_filtered (" (FRAMELESS),");
595 if (calling_frame_info)
597 printf_filtered (" called by frame at ");
598 print_address_numeric (calling_frame_info->frame, 1, gdb_stdout);
600 if (fi->next && calling_frame_info)
605 printf_filtered (" caller of frame at ");
606 print_address_numeric (fi->next->frame, 1, gdb_stdout);
608 if (fi->next || calling_frame_info)
609 puts_filtered ("\n");
611 printf_filtered (" source language %s.\n", language_str (s->language));
613 #ifdef PRINT_EXTRA_FRAME_INFO
614 PRINT_EXTRA_FRAME_INFO (fi);
618 /* Address of the argument list for this frame, or 0. */
619 CORE_ADDR arg_list = FRAME_ARGS_ADDRESS_CORRECT (fi);
620 /* Number of args for this frame, or -1 if unknown. */
624 printf_filtered (" Arglist at unknown address.\n");
627 printf_filtered (" Arglist at ");
628 print_address_numeric (arg_list, 1, gdb_stdout);
629 printf_filtered (",");
631 FRAME_NUM_ARGS (numargs, fi);
633 puts_filtered (" args: ");
634 else if (numargs == 0)
635 puts_filtered (" no args.");
636 else if (numargs == 1)
637 puts_filtered (" 1 arg: ");
639 printf_filtered (" %d args: ", numargs);
640 print_frame_args (func, fi, numargs, gdb_stdout);
641 puts_filtered ("\n");
645 /* Address of the local variables for this frame, or 0. */
646 CORE_ADDR arg_list = FRAME_LOCALS_ADDRESS (fi);
649 printf_filtered (" Locals at unknown address,");
652 printf_filtered (" Locals at ");
653 print_address_numeric (arg_list, 1, gdb_stdout);
654 printf_filtered (",");
658 #if defined (FRAME_FIND_SAVED_REGS)
659 get_frame_saved_regs (fi, &fsr);
660 /* The sp is special; what's returned isn't the save address, but
661 actually the value of the previous frame's sp. */
662 printf_filtered (" Previous frame's sp is ");
663 print_address_numeric (fsr.regs[SP_REGNUM], 1, gdb_stdout);
664 printf_filtered ("\n");
666 numregs = ARCH_NUM_REGS;
667 for (i = 0; i < numregs; i++)
668 if (fsr.regs[i] && i != SP_REGNUM)
671 puts_filtered (" Saved registers:\n ");
675 printf_filtered (" %s at ", reg_names[i]);
676 print_address_numeric (fsr.regs[i], 1, gdb_stdout);
680 puts_filtered ("\n");
681 #else /* Have FRAME_FIND_SAVED_REGS. */
682 /* We could get some information about saved registers by calling
683 get_saved_register on each register. Which info goes with which frame
684 is necessarily lost, however, and I suspect that the users don't care
685 whether they get the info. */
686 puts_filtered ("\n");
687 #endif /* Have FRAME_FIND_SAVED_REGS. */
691 /* Set a limit on the number of frames printed by default in a
694 static int backtrace_limit;
697 set_backtrace_limit_command (count_exp, from_tty)
701 int count = parse_and_eval_address (count_exp);
704 error ("Negative argument not meaningful as backtrace limit.");
706 backtrace_limit = count;
710 backtrace_limit_info (arg, from_tty)
715 error ("\"Info backtrace-limit\" takes no arguments.");
717 printf_unfiltered ("Backtrace limit: %d.\n", backtrace_limit);
721 /* Print briefly all stack frames or just the innermost COUNT frames. */
724 backtrace_command (count_exp, from_tty)
728 struct frame_info *fi;
731 register struct frame_info *trailing;
732 register int trailing_level;
734 if (!target_has_stack)
737 /* The following code must do two things. First, it must
738 set the variable TRAILING to the frame from which we should start
739 printing. Second, it must set the variable count to the number
740 of frames which we should print, or -1 if all of them. */
741 trailing = get_current_frame ();
745 count = parse_and_eval_address (count_exp);
748 struct frame_info *current;
753 while (current && count--)
756 current = get_prev_frame (current);
759 /* Will stop when CURRENT reaches the top of the stack. TRAILING
760 will be COUNT below it. */
764 trailing = get_prev_frame (trailing);
765 current = get_prev_frame (current);
777 struct partial_symtab *ps;
779 /* Read in symbols for all of the frames. Need to do this in
780 a separate pass so that "Reading in symbols for xxx" messages
781 don't screw up the appearance of the backtrace. Also
782 if people have strong opinions against reading symbols for
783 backtrace this may have to be an option. */
787 fi = get_prev_frame (fi))
790 ps = find_pc_psymtab (fi->pc);
792 PSYMTAB_TO_SYMTAB (ps); /* Force syms to come in */
796 for (i = 0, fi = trailing;
798 i++, fi = get_prev_frame (fi))
802 /* Don't use print_stack_frame; if an error() occurs it probably
803 means further attempts to backtrace would fail (on the other
804 hand, perhaps the code does or could be fixed to make sure
805 the frame->prev field gets set to NULL in that case). */
806 print_frame_info (fi, trailing_level + i, 0, 1);
809 /* If we've stopped before the end, mention that. */
811 printf_filtered ("(More stack frames follow...)\n");
814 /* Print the local variables of a block B active in FRAME.
815 Return 1 if any variables were printed; 0 otherwise. */
818 print_block_frame_locals (b, fi, stream)
820 register struct frame_info *fi;
821 register GDB_FILE *stream;
825 register struct symbol *sym;
826 register int values_printed = 0;
828 nsyms = BLOCK_NSYMS (b);
830 for (i = 0; i < nsyms; i++)
832 sym = BLOCK_SYM (b, i);
833 switch (SYMBOL_CLASS (sym))
840 fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
841 fputs_filtered (" = ", stream);
842 print_variable_value (sym, fi, stream);
843 fprintf_filtered (stream, "\n");
847 /* Ignore symbols which are not locals. */
851 return values_printed;
854 /* Same, but print labels. */
857 print_block_frame_labels (b, have_default, stream)
860 register GDB_FILE *stream;
864 register struct symbol *sym;
865 register int values_printed = 0;
867 nsyms = BLOCK_NSYMS (b);
869 for (i = 0; i < nsyms; i++)
871 sym = BLOCK_SYM (b, i);
872 if (STREQ (SYMBOL_NAME (sym), "default"))
878 if (SYMBOL_CLASS (sym) == LOC_LABEL)
880 struct symtab_and_line sal;
881 sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
883 fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
886 fprintf_filtered (stream, " ");
887 print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), 1, stream);
889 fprintf_filtered (stream, " in file %s, line %d\n",
890 sal.symtab->filename, sal.line);
893 return values_printed;
896 /* Print on STREAM all the local variables in frame FRAME,
897 including all the blocks active in that frame
900 Returns 1 if the job was done,
901 or 0 if nothing was printed because we have no info
902 on the function running in FRAME. */
905 print_frame_local_vars (fi, stream)
906 register struct frame_info *fi;
907 register GDB_FILE *stream;
909 register struct block *block = get_frame_block (fi);
910 register int values_printed = 0;
914 fprintf_filtered (stream, "No symbol table info available.\n");
920 if (print_block_frame_locals (block, fi, stream))
922 /* After handling the function's top-level block, stop.
923 Don't continue to its superblock, the block of
925 if (BLOCK_FUNCTION (block))
927 block = BLOCK_SUPERBLOCK (block);
932 fprintf_filtered (stream, "No locals.\n");
936 /* Same, but print labels. */
939 print_frame_label_vars (fi, this_level_only, stream)
940 register struct frame_info *fi;
942 register GDB_FILE *stream;
944 register struct blockvector *bl;
945 register struct block *block = get_frame_block (fi);
946 register int values_printed = 0;
947 int index, have_default = 0;
948 char *blocks_printed;
949 CORE_ADDR pc = fi->pc;
953 fprintf_filtered (stream, "No symbol table info available.\n");
957 bl = blockvector_for_pc (BLOCK_END (block) - 4, &index);
958 blocks_printed = (char *) alloca (BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
959 memset (blocks_printed, 0, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
963 CORE_ADDR end = BLOCK_END (block) - 4;
966 if (bl != blockvector_for_pc (end, &index))
967 error ("blockvector blotch");
968 if (BLOCKVECTOR_BLOCK (bl, index) != block)
969 error ("blockvector botch");
970 last_index = BLOCKVECTOR_NBLOCKS (bl);
973 /* Don't print out blocks that have gone by. */
974 while (index < last_index
975 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < pc)
978 while (index < last_index
979 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < end)
981 if (blocks_printed[index] == 0)
983 if (print_block_frame_labels (BLOCKVECTOR_BLOCK (bl, index), &have_default, stream))
985 blocks_printed[index] = 1;
991 if (values_printed && this_level_only)
994 /* After handling the function's top-level block, stop.
995 Don't continue to its superblock, the block of
997 if (BLOCK_FUNCTION (block))
999 block = BLOCK_SUPERBLOCK (block);
1002 if (!values_printed && !this_level_only)
1004 fprintf_filtered (stream, "No catches.\n");
1010 locals_info (args, from_tty)
1014 if (!selected_frame)
1015 error ("No frame selected.");
1016 print_frame_local_vars (selected_frame, gdb_stdout);
1020 catch_info (ignore, from_tty)
1024 if (!selected_frame)
1025 error ("No frame selected.");
1026 print_frame_label_vars (selected_frame, 0, gdb_stdout);
1030 print_frame_arg_vars (fi, stream)
1031 register struct frame_info *fi;
1032 register GDB_FILE *stream;
1034 struct symbol *func = get_frame_function (fi);
1035 register struct block *b;
1038 register struct symbol *sym, *sym2;
1039 register int values_printed = 0;
1043 fprintf_filtered (stream, "No symbol table info available.\n");
1047 b = SYMBOL_BLOCK_VALUE (func);
1048 nsyms = BLOCK_NSYMS (b);
1050 for (i = 0; i < nsyms; i++)
1052 sym = BLOCK_SYM (b, i);
1053 switch (SYMBOL_CLASS (sym))
1059 case LOC_REGPARM_ADDR:
1060 case LOC_BASEREG_ARG:
1062 fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
1063 fputs_filtered (" = ", stream);
1065 /* We have to look up the symbol because arguments can have
1066 two entries (one a parameter, one a local) and the one we
1067 want is the local, which lookup_symbol will find for us.
1068 This includes gcc1 (not gcc2) on the sparc when passing a
1069 small structure and gcc2 when the argument type is float
1070 and it is passed as a double and converted to float by
1071 the prologue (in the latter case the type of the LOC_ARG
1072 symbol is double and the type of the LOC_LOCAL symbol is
1073 float). There are also LOC_ARG/LOC_REGISTER pairs which
1074 are not combined in symbol-reading. */
1076 sym2 = lookup_symbol (SYMBOL_NAME (sym),
1077 b, VAR_NAMESPACE, (int *)NULL, (struct symtab **)NULL);
1078 print_variable_value (sym2, fi, stream);
1079 fprintf_filtered (stream, "\n");
1083 /* Don't worry about things which aren't arguments. */
1088 if (!values_printed)
1090 fprintf_filtered (stream, "No arguments.\n");
1095 args_info (ignore, from_tty)
1099 if (!selected_frame)
1100 error ("No frame selected.");
1101 print_frame_arg_vars (selected_frame, gdb_stdout);
1104 /* Select frame FI, and note that its stack level is LEVEL.
1105 LEVEL may be -1 if an actual level number is not known. */
1108 select_frame (fi, level)
1109 struct frame_info *fi;
1112 register struct symtab *s;
1114 selected_frame = fi;
1115 selected_frame_level = level;
1117 /* Ensure that symbols for this frame are read in. Also, determine the
1118 source language of this frame, and switch to it if desired. */
1121 s = find_pc_symtab (fi->pc);
1123 && s->language != current_language->la_language
1124 && s->language != language_unknown
1125 && language_mode == language_mode_auto) {
1126 set_language(s->language);
1131 /* Store the selected frame and its level into *FRAMEP and *LEVELP.
1132 If there is no selected frame, *FRAMEP is set to NULL. */
1135 record_selected_frame (frameaddrp, levelp)
1136 CORE_ADDR *frameaddrp;
1139 *frameaddrp = selected_frame ? selected_frame->frame : 0;
1140 *levelp = selected_frame_level;
1143 /* Return the symbol-block in which the selected frame is executing.
1144 Can return zero under various legitimate circumstances. */
1147 get_selected_block ()
1149 if (!target_has_stack)
1152 if (!selected_frame)
1153 return get_current_block ();
1154 return get_frame_block (selected_frame);
1157 /* Find a frame a certain number of levels away from FRAME.
1158 LEVEL_OFFSET_PTR points to an int containing the number of levels.
1159 Positive means go to earlier frames (up); negative, the reverse.
1160 The int that contains the number of levels is counted toward
1161 zero as the frames for those levels are found.
1162 If the top or bottom frame is reached, that frame is returned,
1163 but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
1164 how much farther the original request asked to go. */
1167 find_relative_frame (frame, level_offset_ptr)
1168 register struct frame_info *frame;
1169 register int *level_offset_ptr;
1171 register struct frame_info *prev;
1172 register struct frame_info *frame1;
1174 /* Going up is simple: just do get_prev_frame enough times
1175 or until initial frame is reached. */
1176 while (*level_offset_ptr > 0)
1178 prev = get_prev_frame (frame);
1181 (*level_offset_ptr)--;
1184 /* Going down is just as simple. */
1185 if (*level_offset_ptr < 0)
1187 while (*level_offset_ptr < 0) {
1188 frame1 = get_next_frame (frame);
1192 (*level_offset_ptr)++;
1198 /* The "select_frame" command. With no arg, NOP.
1199 With arg LEVEL_EXP, select the frame at level LEVEL if it is a
1200 valid level. Otherwise, treat level_exp as an address expression
1201 and select it. See parse_frame_specification for more info on proper
1202 frame expressions. */
1206 select_frame_command (level_exp, from_tty)
1210 register struct frame_info *frame, *frame1;
1211 unsigned int level = 0;
1213 if (!target_has_stack)
1214 error ("No stack.");
1216 frame = parse_frame_specification (level_exp);
1218 /* Try to figure out what level this frame is. But if there is
1219 no current stack, don't error out -- let the user set one. */
1221 if (get_current_frame()) {
1222 for (frame1 = get_prev_frame (0);
1223 frame1 && frame1 != frame;
1224 frame1 = get_prev_frame (frame1))
1231 select_frame (frame, level);
1234 /* The "frame" command. With no arg, print selected frame briefly.
1235 With arg, behaves like select_frame and then prints the selected
1239 frame_command (level_exp, from_tty)
1243 select_frame_command (level_exp, from_tty);
1244 print_stack_frame (selected_frame, selected_frame_level, 1);
1247 /* Select the frame up one or COUNT stack levels
1248 from the previously selected frame, and print it briefly. */
1252 up_silently_command (count_exp, from_tty)
1256 register struct frame_info *fi;
1257 int count = 1, count1;
1259 count = parse_and_eval_address (count_exp);
1262 if (target_has_stack == 0 || selected_frame == 0)
1263 error ("No stack.");
1265 fi = find_relative_frame (selected_frame, &count1);
1266 if (count1 != 0 && count_exp == 0)
1267 error ("Initial frame selected; you cannot go up.");
1268 select_frame (fi, selected_frame_level + count - count1);
1272 up_command (count_exp, from_tty)
1276 up_silently_command (count_exp, from_tty);
1277 print_stack_frame (selected_frame, selected_frame_level, 1);
1280 /* Select the frame down one or COUNT stack levels
1281 from the previously selected frame, and print it briefly. */
1285 down_silently_command (count_exp, from_tty)
1289 register struct frame_info *frame;
1290 int count = -1, count1;
1292 count = - parse_and_eval_address (count_exp);
1295 if (target_has_stack == 0 || selected_frame == 0)
1296 error ("No stack.");
1298 frame = find_relative_frame (selected_frame, &count1);
1299 if (count1 != 0 && count_exp == 0)
1302 /* We only do this if count_exp is not specified. That way "down"
1303 means to really go down (and let me know if that is
1304 impossible), but "down 9999" can be used to mean go all the way
1305 down without getting an error. */
1307 error ("Bottom (i.e., innermost) frame selected; you cannot go down.");
1310 select_frame (frame, selected_frame_level + count - count1);
1315 down_command (count_exp, from_tty)
1319 down_silently_command (count_exp, from_tty);
1320 print_stack_frame (selected_frame, selected_frame_level, 1);
1324 return_command (retval_exp, from_tty)
1328 struct symbol *thisfun;
1329 CORE_ADDR selected_frame_addr;
1330 CORE_ADDR selected_frame_pc;
1331 struct frame_info *frame;
1332 value_ptr return_value = NULL;
1334 if (selected_frame == NULL)
1335 error ("No selected frame.");
1336 thisfun = get_frame_function (selected_frame);
1337 selected_frame_addr = FRAME_FP (selected_frame);
1338 selected_frame_pc = selected_frame->pc;
1340 /* Compute the return value (if any -- possibly getting errors here). */
1344 struct type *return_type = NULL;
1346 return_value = parse_and_eval (retval_exp);
1348 /* Cast return value to the return type of the function. */
1349 if (thisfun != NULL)
1350 return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
1351 if (return_type == NULL)
1352 return_type = builtin_type_int;
1353 return_value = value_cast (return_type, return_value);
1355 /* Make sure we have fully evaluated it, since
1356 it might live in the stack frame we're about to pop. */
1357 if (VALUE_LAZY (return_value))
1358 value_fetch_lazy (return_value);
1361 /* If interactive, require confirmation. */
1367 if (!query ("Make %s return now? ", SYMBOL_SOURCE_NAME (thisfun)))
1369 error ("Not confirmed.");
1374 if (!query ("Make selected stack frame return now? "))
1375 error ("Not confirmed.");
1378 /* Do the real work. Pop until the specified frame is current. We
1379 use this method because the selected_frame is not valid after
1380 a POP_FRAME. The pc comparison makes this work even if the
1381 selected frame shares its fp with another frame. */
1383 while (selected_frame_addr != (frame = get_current_frame())->frame
1384 || selected_frame_pc != frame->pc)
1387 /* Then pop that frame. */
1391 /* Compute the return value (if any) and store in the place
1392 for return values. */
1395 set_return_value (return_value);
1397 /* If interactive, print the frame that is now current. */
1400 frame_command ("0", 1);
1402 select_frame_command ("0", 0);
1405 /* Gets the language of the current frame. */
1408 get_frame_language()
1410 register struct symtab *s;
1411 enum language flang; /* The language of the current frame */
1415 s = find_pc_symtab(selected_frame->pc);
1417 flang = s->language;
1419 flang = language_unknown;
1422 flang = language_unknown;
1428 _initialize_stack ()
1431 backtrace_limit = 30;
1434 add_com ("return", class_stack, return_command,
1435 "Make selected stack frame return to its caller.\n\
1436 Control remains in the debugger, but when you continue\n\
1437 execution will resume in the frame above the one now selected.\n\
1438 If an argument is given, it is an expression for the value to return.");
1440 add_com ("up", class_stack, up_command,
1441 "Select and print stack frame that called this one.\n\
1442 An argument says how many frames up to go.");
1443 add_com ("up-silently", class_support, up_silently_command,
1444 "Same as the `up' command, but does not print anything.\n\
1445 This is useful in command scripts.");
1447 add_com ("down", class_stack, down_command,
1448 "Select and print stack frame called by this one.\n\
1449 An argument says how many frames down to go.");
1450 add_com_alias ("do", "down", class_stack, 1);
1451 add_com_alias ("dow", "down", class_stack, 1);
1452 add_com ("down-silently", class_support, down_silently_command,
1453 "Same as the `down' command, but does not print anything.\n\
1454 This is useful in command scripts.");
1456 add_com ("frame", class_stack, frame_command,
1457 "Select and print a stack frame.\n\
1458 With no argument, print the selected stack frame. (See also \"info frame\").\n\
1459 An argument specifies the frame to select.\n\
1460 It can be a stack frame number or the address of the frame.\n\
1461 With argument, nothing is printed if input is coming from\n\
1462 a command file or a user-defined command.");
1464 add_com_alias ("f", "frame", class_stack, 1);
1466 add_com ("select-frame", class_stack, select_frame_command,
1467 "Select a stack frame without printing anything.\n\
1468 An argument specifies the frame to select.\n\
1469 It can be a stack frame number or the address of the frame.\n");
1471 add_com ("backtrace", class_stack, backtrace_command,
1472 "Print backtrace of all stack frames, or innermost COUNT frames.\n\
1473 With a negative argument, print outermost -COUNT frames.");
1474 add_com_alias ("bt", "backtrace", class_stack, 0);
1475 add_com_alias ("where", "backtrace", class_alias, 0);
1476 add_info ("stack", backtrace_command,
1477 "Backtrace of the stack, or innermost COUNT frames.");
1478 add_info_alias ("s", "stack", 1);
1479 add_info ("frame", frame_info,
1480 "All about selected stack frame, or frame at ADDR.");
1481 add_info_alias ("f", "frame", 1);
1482 add_info ("locals", locals_info,
1483 "Local variables of current stack frame.");
1484 add_info ("args", args_info,
1485 "Argument variables of current stack frame.");
1486 add_info ("catch", catch_info,
1487 "Exceptions that can be caught in the current stack frame.");
1490 add_cmd ("backtrace-limit", class_stack, set_backtrace_limit_command,
1491 "Specify maximum number of frames for \"backtrace\" to print by default.",
1493 add_info ("backtrace-limit", backtrace_limit_info,
1494 "The maximum number of frames for \"backtrace\" to print by default.");