1 /* Print and select stack frames for GDB, the GNU debugger.
2 Copyright 1986, 1987, 1989, 1991, 1992, 1993 Free Software Foundation, Inc.
4 This file is part of GDB.
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
24 #include "expression.h"
30 #include "breakpoint.h"
35 return_command PARAMS ((char *, int));
38 down_command PARAMS ((char *, int));
41 down_silently_command PARAMS ((char *, int));
44 up_command PARAMS ((char *, int));
47 up_silently_command PARAMS ((char *, int));
50 frame_command PARAMS ((char *, int));
53 select_frame_command PARAMS ((char *, int));
56 args_info PARAMS ((char *, int));
59 print_frame_arg_vars PARAMS ((FRAME, GDB_FILE *));
62 catch_info PARAMS ((char *, int));
65 locals_info PARAMS ((char *, int));
68 print_frame_label_vars PARAMS ((FRAME, int, GDB_FILE *));
71 print_frame_local_vars PARAMS ((FRAME, GDB_FILE *));
74 print_block_frame_labels PARAMS ((struct block *, int *, GDB_FILE *));
77 print_block_frame_locals PARAMS ((struct block *, FRAME, GDB_FILE *));
80 backtrace_command PARAMS ((char *, int));
83 parse_frame_specification PARAMS ((char *));
86 frame_info PARAMS ((char *, int));
89 extern int addressprint; /* Print addresses, or stay symbolic only? */
90 extern int info_verbose; /* Verbosity of symbol reading msgs */
91 extern int lines_to_list; /* # of lines "list" command shows by default */
93 /* The "selected" stack frame is used by default for local and arg access.
94 May be zero, for no selected frame. */
98 /* Level of the selected frame:
99 0 for innermost, 1 for its caller, ...
100 or -1 for frame specified by address with no defined level. */
102 int selected_frame_level;
104 /* Nonzero means print the full filename and linenumber
105 when a frame is printed, and do so in a format programs can parse. */
107 int frame_file_full_name = 0;
110 struct print_stack_frame_args {
111 struct frame_info *fi;
117 static int print_stack_frame_stub PARAMS ((char *));
119 /* Pass the args the way catch_errors wants them. */
121 print_stack_frame_stub (args)
124 struct print_stack_frame_args *p = (struct print_stack_frame_args *)args;
125 print_frame_info (p->fi, p->level, p->source, p->args);
129 /* Print a stack frame briefly. FRAME should be the frame id
130 and LEVEL should be its level in the stack (or -1 for level not defined).
131 This prints the level, the function executing, the arguments,
132 and the file name and line number.
133 If the pc is not at the beginning of the source line,
134 the actual pc is printed at the beginning.
136 If SOURCE is 1, print the source line as well.
137 If SOURCE is -1, print ONLY the source line. */
140 print_stack_frame (frame, level, source)
145 struct print_stack_frame_args args;
147 args.fi = get_frame_info (frame);
149 args.source = source;
152 catch_errors (print_stack_frame_stub, (char *)&args, "", RETURN_MASK_ERROR);
155 struct print_args_args {
157 struct frame_info *fi;
160 static int print_args_stub PARAMS ((char *));
162 /* Pass the args the way catch_errors wants them. */
164 print_args_stub (args)
168 struct print_args_args *p = (struct print_args_args *)args;
169 FRAME_NUM_ARGS (numargs, (p->fi));
170 print_frame_args (p->func, p->fi, numargs, gdb_stdout);
175 print_frame_info (fi, level, source, args)
176 struct frame_info *fi;
181 struct symtab_and_line sal;
183 register char *funname = 0;
184 enum language funlang = language_unknown;
185 char buf[MAX_REGISTER_RAW_SIZE];
189 /* On the 68k, this spends too much time in m68k_find_saved_regs. */
191 /* Get the value of SP_REGNUM relative to the frame. */
192 get_saved_register (buf, (int *)NULL, (CORE_ADDR *)NULL,
193 FRAME_INFO_ID (fi), SP_REGNUM, (enum lval_type *)NULL);
194 sp = extract_address (buf, REGISTER_RAW_SIZE (SP_REGNUM));
196 /* This is not a perfect test, because if a function alloca's some
197 memory, puts some code there, and then jumps into it, then the test
198 will succeed even though there is no call dummy. Probably best is
199 to check for a bp_call_dummy breakpoint. */
200 if (PC_IN_CALL_DUMMY (fi->pc, sp, fi->frame))
202 if (frame_in_dummy (fi))
205 /* Do this regardless of SOURCE because we don't have any source
206 to list for this frame. */
208 printf_filtered ("#%-2d ", level);
209 printf_filtered ("<function called from gdb>\n");
212 if (fi->signal_handler_caller)
214 /* Do this regardless of SOURCE because we don't have any source
215 to list for this frame. */
217 printf_filtered ("#%-2d ", level);
218 printf_filtered ("<signal handler called>\n");
222 /* If fi is not the innermost frame, that normally means that fi->pc
223 points to *after* the call instruction, and we want to get the line
224 containing the call, never the next line. But if the next frame is
225 a signal_handler_caller or a dummy frame, then the next frame was
226 not entered as the result of a call, and we want to get the line
227 containing fi->pc. */
229 find_pc_line (fi->pc,
231 && !fi->next->signal_handler_caller
232 && !frame_in_dummy (fi->next));
234 func = find_pc_function (fi->pc);
237 /* In certain pathological cases, the symtabs give the wrong
238 function (when we are in the first function in a file which
239 is compiled without debugging symbols, the previous function
240 is compiled with debugging symbols, and the "foo.o" symbol
241 that is supposed to tell us where the file with debugging symbols
242 ends has been truncated by ar because it is longer than 15
243 characters). This also occurs if the user uses asm() to create
244 a function but not stabs for it (in a file compiled -g).
246 So look in the minimal symbol tables as well, and if it comes
247 up with a larger address for the function use that instead.
248 I don't think this can ever cause any problems; there shouldn't
249 be any minimal symbols in the middle of a function; if this is
250 ever changed many parts of GDB will need to be changed (and we'll
251 create a find_pc_minimal_function or some such). */
253 struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
255 && (SYMBOL_VALUE_ADDRESS (msymbol)
256 > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
258 /* In this case we have no way of knowing the source file
259 and line number, so don't print them. */
261 /* We also don't know anything about the function besides
262 its address and name. */
264 funname = SYMBOL_NAME (msymbol);
265 funlang = SYMBOL_LANGUAGE (msymbol);
269 funname = SYMBOL_NAME (func);
270 funlang = SYMBOL_LANGUAGE (func);
275 register struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
278 funname = SYMBOL_NAME (msymbol);
279 funlang = SYMBOL_LANGUAGE (msymbol);
283 if (source >= 0 || !sal.symtab)
286 printf_filtered ("#%-2d ", level);
288 if (fi->pc != sal.pc || !sal.symtab)
289 printf_filtered ("%s in ", local_hex_string((unsigned long) fi->pc));
290 fprintf_symbol_filtered (gdb_stdout, funname ? funname : "??", funlang,
293 fputs_filtered (" (", gdb_stdout);
296 struct print_args_args args;
299 catch_errors (print_args_stub, (char *)&args, "", RETURN_MASK_ERROR);
301 printf_filtered (")");
302 if (sal.symtab && sal.symtab->filename)
305 printf_filtered (" at %s:%d", sal.symtab->filename, sal.line);
308 #ifdef PC_LOAD_SEGMENT
309 /* If we couldn't print out function name but if can figure out what
310 load segment this pc value is from, at least print out some info
311 about its load segment. */
314 printf_filtered (" from %s", PC_LOAD_SEGMENT (fi->pc));
317 printf_filtered ("\n");
320 if ((source != 0) && sal.symtab)
323 int mid_statement = source < 0 && fi->pc != sal.pc;
324 if (frame_file_full_name)
325 done = identify_source_line (sal.symtab, sal.line, mid_statement,
329 if (addressprint && mid_statement)
330 printf_filtered ("%s\t", local_hex_string((unsigned long) fi->pc));
331 print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
333 current_source_line = max (sal.line - lines_to_list/2, 1);
336 set_default_breakpoint (1, fi->pc, sal.symtab, sal.line);
338 gdb_flush (gdb_stdout);
342 * Read a frame specification in whatever the appropriate format is.
343 * Call error() if the specification is in any way invalid (i.e.
344 * this function never returns NULL).
347 parse_frame_specification (frame_exp)
352 CORE_ADDR args[MAXARGS];
356 char *addr_string, *p;
357 struct cleanup *tmp_cleanup;
359 while (*frame_exp == ' ') frame_exp++;
363 if (numargs > MAXARGS)
364 error ("Too many args in frame specification");
365 /* Parse an argument. */
366 for (p = frame_exp; *p && *p != ' '; p++)
368 addr_string = savestring(frame_exp, p - frame_exp);
371 tmp_cleanup = make_cleanup (free, addr_string);
372 args[numargs++] = parse_and_eval_address (addr_string);
373 do_cleanups (tmp_cleanup);
376 /* Skip spaces, move to possible next arg. */
377 while (*p == ' ') p++;
385 if (selected_frame == NULL)
386 error ("No selected frame.");
387 return selected_frame;
392 FRAME fid = find_relative_frame (get_current_frame (), &level);
396 /* find_relative_frame was successful */
399 /* If (s)he specifies the frame with an address, he deserves what
400 (s)he gets. Still, give the highest one that matches. */
402 for (fid = get_current_frame ();
403 fid && FRAME_FP (fid) != args[0];
404 fid = get_prev_frame (fid))
408 while ((tfid = get_prev_frame (fid)) &&
409 (FRAME_FP (tfid) == args[0]))
412 /* We couldn't identify the frame as an existing frame, but
413 perhaps we can create one with a single argument.
414 Fall through to default case; it's up to SETUP_ARBITRARY_FRAME
415 to complain if it doesn't like a single arg. */
419 #ifdef SETUP_ARBITRARY_FRAME
420 return SETUP_ARBITRARY_FRAME (numargs, args);
422 /* Usual case. Do it here rather than have everyone supply
423 a SETUP_ARBITRARY_FRAME that does this. */
425 return create_new_frame (args[0], 0);
426 error ("Too many args in frame specification");
433 /* FRAME_ARGS_ADDRESS_CORRECT is just like FRAME_ARGS_ADDRESS except
434 that if it is unsure about the answer, it returns 0
435 instead of guessing (this happens on the VAX and i960, for example).
437 On most machines, we never have to guess about the args address,
438 so FRAME_ARGS_ADDRESS{,_CORRECT} are the same. */
439 #if !defined (FRAME_ARGS_ADDRESS_CORRECT)
440 #define FRAME_ARGS_ADDRESS_CORRECT FRAME_ARGS_ADDRESS
443 /* Print verbosely the selected frame or the frame at address ADDR.
444 This means absolutely all information in the frame is printed. */
447 frame_info (addr_exp, from_tty)
452 struct frame_info *fi;
453 struct frame_saved_regs fsr;
454 struct symtab_and_line sal;
460 enum language funlang = language_unknown;
462 if (!target_has_stack)
465 frame = parse_frame_specification (addr_exp);
467 error ("Invalid frame specified.");
469 fi = get_frame_info (frame);
470 sal = find_pc_line (fi->pc,
472 && !fi->next->signal_handler_caller
473 && !frame_in_dummy (fi->next));
474 func = get_frame_function (frame);
475 s = find_pc_symtab(fi->pc);
478 funname = SYMBOL_NAME (func);
479 funlang = SYMBOL_LANGUAGE (func);
483 register struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
486 funname = SYMBOL_NAME (msymbol);
487 funlang = SYMBOL_LANGUAGE (msymbol);
490 calling_frame = get_prev_frame (frame);
492 if (!addr_exp && selected_frame_level >= 0) {
493 printf_filtered ("Stack level %d, frame at %s:\n",
494 selected_frame_level,
495 local_hex_string((unsigned long) FRAME_FP(frame)));
497 printf_filtered ("Stack frame at %s:\n",
498 local_hex_string((unsigned long) FRAME_FP(frame)));
500 printf_filtered (" %s = %s",
501 reg_names[PC_REGNUM],
502 local_hex_string((unsigned long) fi->pc));
507 printf_filtered (" in ");
508 fprintf_symbol_filtered (gdb_stdout, funname, funlang,
509 DMGL_ANSI | DMGL_PARAMS);
513 printf_filtered (" (%s:%d)", sal.symtab->filename, sal.line);
514 puts_filtered ("; ");
516 printf_filtered ("saved %s %s\n", reg_names[PC_REGNUM],
517 local_hex_string((unsigned long) FRAME_SAVED_PC (frame)));
521 #ifdef FRAMELESS_FUNCTION_INVOCATION
522 FRAMELESS_FUNCTION_INVOCATION (fi, frameless);
525 printf_filtered (" (FRAMELESS),");
529 printf_filtered (" called by frame at %s",
530 local_hex_string((unsigned long) FRAME_FP (calling_frame)));
531 if (fi->next && calling_frame)
535 printf_filtered (" caller of frame at %s",
536 local_hex_string ((unsigned long) fi->next->frame));
537 if (fi->next || calling_frame)
538 puts_filtered ("\n");
540 printf_filtered(" source language %s.\n", language_str(s->language));
542 #ifdef PRINT_EXTRA_FRAME_INFO
543 PRINT_EXTRA_FRAME_INFO (fi);
547 /* Address of the argument list for this frame, or 0. */
548 CORE_ADDR arg_list = FRAME_ARGS_ADDRESS_CORRECT (fi);
549 /* Number of args for this frame, or -1 if unknown. */
553 printf_filtered (" Arglist at unknown address.\n");
556 printf_filtered (" Arglist at %s,",
557 local_hex_string((unsigned long) arg_list));
559 FRAME_NUM_ARGS (numargs, fi);
561 puts_filtered (" args: ");
562 else if (numargs == 0)
563 puts_filtered (" no args.");
564 else if (numargs == 1)
565 puts_filtered (" 1 arg: ");
567 printf_filtered (" %d args: ", numargs);
568 print_frame_args (func, fi, numargs, gdb_stdout);
569 puts_filtered ("\n");
573 /* Address of the local variables for this frame, or 0. */
574 CORE_ADDR arg_list = FRAME_LOCALS_ADDRESS (fi);
577 printf_filtered (" Locals at unknown address,");
579 printf_filtered (" Locals at %s,",
580 local_hex_string((unsigned long) arg_list));
583 #if defined (FRAME_FIND_SAVED_REGS)
584 get_frame_saved_regs (fi, &fsr);
585 /* The sp is special; what's returned isn't the save address, but
586 actually the value of the previous frame's sp. */
587 printf_filtered (" Previous frame's sp is %s\n",
588 local_hex_string((unsigned long) fsr.regs[SP_REGNUM]));
590 for (i = 0; i < NUM_REGS; i++)
591 if (fsr.regs[i] && i != SP_REGNUM)
594 puts_filtered (" Saved registers:\n ");
598 printf_filtered (" %s at %s", reg_names[i],
599 local_hex_string((unsigned long) fsr.regs[i]));
603 puts_filtered ("\n");
604 #else /* Have FRAME_FIND_SAVED_REGS. */
605 puts_filtered ("\n");
606 #endif /* Have FRAME_FIND_SAVED_REGS. */
610 /* Set a limit on the number of frames printed by default in a
613 static int backtrace_limit;
616 set_backtrace_limit_command (count_exp, from_tty)
620 int count = parse_and_eval_address (count_exp);
623 error ("Negative argument not meaningful as backtrace limit.");
625 backtrace_limit = count;
629 backtrace_limit_info (arg, from_tty)
634 error ("\"Info backtrace-limit\" takes no arguments.");
636 printf_unfiltered ("Backtrace limit: %d.\n", backtrace_limit);
640 /* Print briefly all stack frames or just the innermost COUNT frames. */
643 backtrace_command (count_exp, from_tty)
647 struct frame_info *fi;
649 register FRAME frame;
651 register FRAME trailing;
652 register int trailing_level;
654 if (!target_has_stack)
657 /* The following code must do two things. First, it must
658 set the variable TRAILING to the frame from which we should start
659 printing. Second, it must set the variable count to the number
660 of frames which we should print, or -1 if all of them. */
661 trailing = get_current_frame ();
665 count = parse_and_eval_address (count_exp);
673 while (current && count--)
676 current = get_prev_frame (current);
679 /* Will stop when CURRENT reaches the top of the stack. TRAILING
680 will be COUNT below it. */
684 trailing = get_prev_frame (trailing);
685 current = get_prev_frame (current);
697 struct partial_symtab *ps;
699 /* Read in symbols for all of the frames. Need to do this in
700 a separate pass so that "Reading in symbols for xxx" messages
701 don't screw up the appearance of the backtrace. Also
702 if people have strong opinions against reading symbols for
703 backtrace this may have to be an option. */
705 for (frame = trailing;
706 frame != NULL && i--;
707 frame = get_prev_frame (frame))
710 fi = get_frame_info (frame);
711 ps = find_pc_psymtab (fi->pc);
713 PSYMTAB_TO_SYMTAB (ps); /* Force syms to come in */
717 for (i = 0, frame = trailing;
719 i++, frame = get_prev_frame (frame))
722 fi = get_frame_info (frame);
724 /* Don't use print_stack_frame; if an error() occurs it probably
725 means further attempts to backtrace would fail (on the other
726 hand, perhaps the code does or could be fixed to make sure
727 the frame->prev field gets set to NULL in that case). */
728 print_frame_info (fi, trailing_level + i, 0, 1);
731 /* If we've stopped before the end, mention that. */
732 if (frame && from_tty)
733 printf_filtered ("(More stack frames follow...)\n");
736 /* Print the local variables of a block B active in FRAME.
737 Return 1 if any variables were printed; 0 otherwise. */
740 print_block_frame_locals (b, frame, stream)
742 register FRAME frame;
743 register GDB_FILE *stream;
747 register struct symbol *sym;
748 register int values_printed = 0;
750 nsyms = BLOCK_NSYMS (b);
752 for (i = 0; i < nsyms; i++)
754 sym = BLOCK_SYM (b, i);
755 switch (SYMBOL_CLASS (sym))
762 fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
763 fputs_filtered (" = ", stream);
764 print_variable_value (sym, frame, stream);
765 fprintf_filtered (stream, "\n");
769 /* Ignore symbols which are not locals. */
773 return values_printed;
776 /* Same, but print labels. */
779 print_block_frame_labels (b, have_default, stream)
782 register GDB_FILE *stream;
786 register struct symbol *sym;
787 register int values_printed = 0;
789 nsyms = BLOCK_NSYMS (b);
791 for (i = 0; i < nsyms; i++)
793 sym = BLOCK_SYM (b, i);
794 if (STREQ (SYMBOL_NAME (sym), "default"))
800 if (SYMBOL_CLASS (sym) == LOC_LABEL)
802 struct symtab_and_line sal;
803 sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
805 fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
807 fprintf_filtered (stream, " %s",
808 local_hex_string((unsigned long) SYMBOL_VALUE_ADDRESS (sym)));
809 fprintf_filtered (stream, " in file %s, line %d\n",
810 sal.symtab->filename, sal.line);
813 return values_printed;
816 /* Print on STREAM all the local variables in frame FRAME,
817 including all the blocks active in that frame
820 Returns 1 if the job was done,
821 or 0 if nothing was printed because we have no info
822 on the function running in FRAME. */
825 print_frame_local_vars (frame, stream)
826 register FRAME frame;
827 register GDB_FILE *stream;
829 register struct block *block = get_frame_block (frame);
830 register int values_printed = 0;
834 fprintf_filtered (stream, "No symbol table info available.\n");
840 if (print_block_frame_locals (block, frame, stream))
842 /* After handling the function's top-level block, stop.
843 Don't continue to its superblock, the block of
845 if (BLOCK_FUNCTION (block))
847 block = BLOCK_SUPERBLOCK (block);
852 fprintf_filtered (stream, "No locals.\n");
856 /* Same, but print labels. */
859 print_frame_label_vars (frame, this_level_only, stream)
860 register FRAME frame;
862 register GDB_FILE *stream;
864 register struct blockvector *bl;
865 register struct block *block = get_frame_block (frame);
866 register int values_printed = 0;
867 int index, have_default = 0;
868 char *blocks_printed;
869 struct frame_info *fi = get_frame_info (frame);
870 CORE_ADDR pc = fi->pc;
874 fprintf_filtered (stream, "No symbol table info available.\n");
878 bl = blockvector_for_pc (BLOCK_END (block) - 4, &index);
879 blocks_printed = (char *) alloca (BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
880 memset (blocks_printed, 0, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
884 CORE_ADDR end = BLOCK_END (block) - 4;
887 if (bl != blockvector_for_pc (end, &index))
888 error ("blockvector blotch");
889 if (BLOCKVECTOR_BLOCK (bl, index) != block)
890 error ("blockvector botch");
891 last_index = BLOCKVECTOR_NBLOCKS (bl);
894 /* Don't print out blocks that have gone by. */
895 while (index < last_index
896 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < pc)
899 while (index < last_index
900 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < end)
902 if (blocks_printed[index] == 0)
904 if (print_block_frame_labels (BLOCKVECTOR_BLOCK (bl, index), &have_default, stream))
906 blocks_printed[index] = 1;
912 if (values_printed && this_level_only)
915 /* After handling the function's top-level block, stop.
916 Don't continue to its superblock, the block of
918 if (BLOCK_FUNCTION (block))
920 block = BLOCK_SUPERBLOCK (block);
923 if (!values_printed && !this_level_only)
925 fprintf_filtered (stream, "No catches.\n");
931 locals_info (args, from_tty)
936 error ("No frame selected.");
937 print_frame_local_vars (selected_frame, gdb_stdout);
941 catch_info (ignore, from_tty)
946 error ("No frame selected.");
947 print_frame_label_vars (selected_frame, 0, gdb_stdout);
951 print_frame_arg_vars (frame, stream)
952 register FRAME frame;
953 register GDB_FILE *stream;
955 struct symbol *func = get_frame_function (frame);
956 register struct block *b;
959 register struct symbol *sym, *sym2;
960 register int values_printed = 0;
964 fprintf_filtered (stream, "No symbol table info available.\n");
968 b = SYMBOL_BLOCK_VALUE (func);
969 nsyms = BLOCK_NSYMS (b);
971 for (i = 0; i < nsyms; i++)
973 sym = BLOCK_SYM (b, i);
974 switch (SYMBOL_CLASS (sym))
980 case LOC_REGPARM_ADDR:
981 case LOC_BASEREG_ARG:
983 fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
984 fputs_filtered (" = ", stream);
986 /* We have to look up the symbol because arguments can have
987 two entries (one a parameter, one a local) and the one we
988 want is the local, which lookup_symbol will find for us.
989 This includes gcc1 (not gcc2) on the sparc when passing a
990 small structure and gcc2 when the argument type is float
991 and it is passed as a double and converted to float by
992 the prologue (in the latter case the type of the LOC_ARG
993 symbol is double and the type of the LOC_LOCAL symbol is
994 float). There are also LOC_ARG/LOC_REGISTER pairs which
995 are not combined in symbol-reading. */
997 sym2 = lookup_symbol (SYMBOL_NAME (sym),
998 b, VAR_NAMESPACE, (int *)NULL, (struct symtab **)NULL);
999 print_variable_value (sym2, frame, stream);
1000 fprintf_filtered (stream, "\n");
1004 /* Don't worry about things which aren't arguments. */
1009 if (!values_printed)
1011 fprintf_filtered (stream, "No arguments.\n");
1016 args_info (ignore, from_tty)
1020 if (!selected_frame)
1021 error ("No frame selected.");
1022 print_frame_arg_vars (selected_frame, gdb_stdout);
1025 /* Select frame FRAME, and note that its stack level is LEVEL.
1026 LEVEL may be -1 if an actual level number is not known. */
1029 select_frame (frame, level)
1033 register struct symtab *s;
1035 selected_frame = frame;
1036 selected_frame_level = level;
1038 /* Ensure that symbols for this frame are read in. Also, determine the
1039 source language of this frame, and switch to it if desired. */
1042 s = find_pc_symtab (get_frame_info (frame)->pc);
1044 && s->language != current_language->la_language
1045 && s->language != language_unknown
1046 && language_mode == language_mode_auto) {
1047 set_language(s->language);
1052 /* Store the selected frame and its level into *FRAMEP and *LEVELP.
1053 If there is no selected frame, *FRAMEP is set to NULL. */
1056 record_selected_frame (frameaddrp, levelp)
1057 FRAME_ADDR *frameaddrp;
1060 *frameaddrp = selected_frame ? FRAME_FP (selected_frame) : 0;
1061 *levelp = selected_frame_level;
1064 /* Return the symbol-block in which the selected frame is executing.
1065 Can return zero under various legitimate circumstances. */
1068 get_selected_block ()
1070 if (!target_has_stack)
1073 if (!selected_frame)
1074 return get_current_block ();
1075 return get_frame_block (selected_frame);
1078 /* Find a frame a certain number of levels away from FRAME.
1079 LEVEL_OFFSET_PTR points to an int containing the number of levels.
1080 Positive means go to earlier frames (up); negative, the reverse.
1081 The int that contains the number of levels is counted toward
1082 zero as the frames for those levels are found.
1083 If the top or bottom frame is reached, that frame is returned,
1084 but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
1085 how much farther the original request asked to go. */
1088 find_relative_frame (frame, level_offset_ptr)
1089 register FRAME frame;
1090 register int* level_offset_ptr;
1092 register FRAME prev;
1093 register FRAME frame1;
1095 /* Going up is simple: just do get_prev_frame enough times
1096 or until initial frame is reached. */
1097 while (*level_offset_ptr > 0)
1099 prev = get_prev_frame (frame);
1102 (*level_offset_ptr)--;
1105 /* Going down is just as simple. */
1106 if (*level_offset_ptr < 0)
1108 while (*level_offset_ptr < 0) {
1109 frame1 = get_next_frame (frame);
1113 (*level_offset_ptr)++;
1119 /* The "select_frame" command. With no arg, NOP.
1120 With arg LEVEL_EXP, select the frame at level LEVEL if it is a
1121 valid level. Otherwise, treat level_exp as an address expression
1122 and select it. See parse_frame_specification for more info on proper
1123 frame expressions. */
1127 select_frame_command (level_exp, from_tty)
1131 register FRAME frame, frame1;
1132 unsigned int level = 0;
1134 if (!target_has_stack)
1135 error ("No stack.");
1137 frame = parse_frame_specification (level_exp);
1139 /* Try to figure out what level this frame is. But if there is
1140 no current stack, don't error out -- let the user set one. */
1142 if (get_current_frame()) {
1143 for (frame1 = get_prev_frame (0);
1144 frame1 && frame1 != frame;
1145 frame1 = get_prev_frame (frame1))
1152 select_frame (frame, level);
1155 /* The "frame" command. With no arg, print selected frame briefly.
1156 With arg, behaves like select_frame and then prints the selected
1160 frame_command (level_exp, from_tty)
1164 select_frame_command (level_exp, from_tty);
1165 print_stack_frame (selected_frame, selected_frame_level, 1);
1168 /* Select the frame up one or COUNT stack levels
1169 from the previously selected frame, and print it briefly. */
1173 up_silently_command (count_exp, from_tty)
1177 register FRAME frame;
1178 int count = 1, count1;
1180 count = parse_and_eval_address (count_exp);
1183 if (target_has_stack == 0 || selected_frame == 0)
1184 error ("No stack.");
1186 frame = find_relative_frame (selected_frame, &count1);
1187 if (count1 != 0 && count_exp == 0)
1188 error ("Initial frame selected; you cannot go up.");
1189 select_frame (frame, selected_frame_level + count - count1);
1193 up_command (count_exp, from_tty)
1197 up_silently_command (count_exp, from_tty);
1198 print_stack_frame (selected_frame, selected_frame_level, 1);
1201 /* Select the frame down one or COUNT stack levels
1202 from the previously selected frame, and print it briefly. */
1206 down_silently_command (count_exp, from_tty)
1210 register FRAME frame;
1211 int count = -1, count1;
1213 count = - parse_and_eval_address (count_exp);
1216 if (target_has_stack == 0 || selected_frame == 0)
1217 error ("No stack.");
1219 frame = find_relative_frame (selected_frame, &count1);
1220 if (count1 != 0 && count_exp == 0)
1223 /* We only do this if count_exp is not specified. That way "down"
1224 means to really go down (and let me know if that is
1225 impossible), but "down 9999" can be used to mean go all the way
1226 down without getting an error. */
1228 error ("Bottom (i.e., innermost) frame selected; you cannot go down.");
1231 select_frame (frame, selected_frame_level + count - count1);
1236 down_command (count_exp, from_tty)
1240 down_silently_command (count_exp, from_tty);
1241 print_stack_frame (selected_frame, selected_frame_level, 1);
1245 return_command (retval_exp, from_tty)
1249 struct symbol *thisfun;
1250 FRAME_ADDR selected_frame_addr;
1251 CORE_ADDR selected_frame_pc;
1253 value return_value = NULL;
1255 if (selected_frame == NULL)
1256 error ("No selected frame.");
1257 thisfun = get_frame_function (selected_frame);
1258 selected_frame_addr = FRAME_FP (selected_frame);
1259 selected_frame_pc = (get_frame_info (selected_frame))->pc;
1261 /* Compute the return value (if any -- possibly getting errors here). */
1265 return_value = parse_and_eval (retval_exp);
1267 /* Make sure we have fully evaluated it, since
1268 it might live in the stack frame we're about to pop. */
1269 if (VALUE_LAZY (return_value))
1270 value_fetch_lazy (return_value);
1273 /* If interactive, require confirmation. */
1279 if (!query ("Make %s return now? ", SYMBOL_SOURCE_NAME (thisfun)))
1281 error ("Not confirmed.");
1286 if (!query ("Make selected stack frame return now? "))
1287 error ("Not confirmed.");
1290 /* Do the real work. Pop until the specified frame is current. We
1291 use this method because the selected_frame is not valid after
1292 a POP_FRAME. The pc comparison makes this work even if the
1293 selected frame shares its fp with another frame. */
1295 while ( selected_frame_addr != FRAME_FP (frame = get_current_frame())
1296 || selected_frame_pc != (get_frame_info (frame))->pc )
1299 /* Then pop that frame. */
1303 /* Compute the return value (if any) and store in the place
1304 for return values. */
1307 set_return_value (return_value);
1309 /* If interactive, print the frame that is now current. */
1312 frame_command ("0", 1);
1315 /* Gets the language of the current frame. */
1317 get_frame_language()
1319 register struct symtab *s;
1321 enum language flang; /* The language of the current frame */
1323 fr = get_frame_info(selected_frame);
1326 s = find_pc_symtab(fr->pc);
1328 flang = s->language;
1330 flang = language_unknown;
1333 flang = language_unknown;
1339 _initialize_stack ()
1342 backtrace_limit = 30;
1345 add_com ("return", class_stack, return_command,
1346 "Make selected stack frame return to its caller.\n\
1347 Control remains in the debugger, but when you continue\n\
1348 execution will resume in the frame above the one now selected.\n\
1349 If an argument is given, it is an expression for the value to return.");
1351 add_com ("up", class_stack, up_command,
1352 "Select and print stack frame that called this one.\n\
1353 An argument says how many frames up to go.");
1354 add_com ("up-silently", class_support, up_silently_command,
1355 "Same as the `up' command, but does not print anything.\n\
1356 This is useful in command scripts.");
1358 add_com ("down", class_stack, down_command,
1359 "Select and print stack frame called by this one.\n\
1360 An argument says how many frames down to go.");
1361 add_com_alias ("do", "down", class_stack, 1);
1362 add_com_alias ("dow", "down", class_stack, 1);
1363 add_com ("down-silently", class_support, down_silently_command,
1364 "Same as the `down' command, but does not print anything.\n\
1365 This is useful in command scripts.");
1367 add_com ("frame", class_stack, frame_command,
1368 "Select and print a stack frame.\n\
1369 With no argument, print the selected stack frame. (See also \"info frame\").\n\
1370 An argument specifies the frame to select.\n\
1371 It can be a stack frame number or the address of the frame.\n\
1372 With argument, nothing is printed if input is coming from\n\
1373 a command file or a user-defined command.");
1375 add_com_alias ("f", "frame", class_stack, 1);
1377 add_com ("select-frame", class_stack, select_frame_command,
1378 "Select a stack frame without printing anything.\n\
1379 An argument specifies the frame to select.\n\
1380 It can be a stack frame number or the address of the frame.\n");
1382 add_com ("backtrace", class_stack, backtrace_command,
1383 "Print backtrace of all stack frames, or innermost COUNT frames.\n\
1384 With a negative argument, print outermost -COUNT frames.");
1385 add_com_alias ("bt", "backtrace", class_stack, 0);
1386 add_com_alias ("where", "backtrace", class_alias, 0);
1387 add_info ("stack", backtrace_command,
1388 "Backtrace of the stack, or innermost COUNT frames.");
1389 add_info_alias ("s", "stack", 1);
1390 add_info ("frame", frame_info,
1391 "All about selected stack frame, or frame at ADDR.");
1392 add_info_alias ("f", "frame", 1);
1393 add_info ("locals", locals_info,
1394 "Local variables of current stack frame.");
1395 add_info ("args", args_info,
1396 "Argument variables of current stack frame.");
1397 add_info ("catch", catch_info,
1398 "Exceptions that can be caught in the current stack frame.");
1401 add_cmd ("backtrace-limit", class_stack, set_backtrace_limit_command,
1402 "Specify maximum number of frames for \"backtrace\" to print by default.",
1404 add_info ("backtrace-limit", backtrace_limit_info,
1405 "The maximum number of frames for \"backtrace\" to print by default.");