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 /* Zero means do things normally; we are interacting directly with the
105 user. One means print the full filename and linenumber when a
106 frame is printed, and do so in a format emacs18/emacs19.22 can
107 parse. Two means print similar annotations, but in many more
108 cases and in a slightly different syntax. */
110 int annotation_level = 0;
113 struct print_stack_frame_args {
114 struct frame_info *fi;
120 static int print_stack_frame_stub PARAMS ((char *));
122 /* Pass the args the way catch_errors wants them. */
124 print_stack_frame_stub (args)
127 struct print_stack_frame_args *p = (struct print_stack_frame_args *)args;
128 print_frame_info (p->fi, p->level, p->source, p->args);
132 /* Print a stack frame briefly. FRAME should be the frame id
133 and LEVEL should be its level in the stack (or -1 for level not defined).
134 This prints the level, the function executing, the arguments,
135 and the file name and line number.
136 If the pc is not at the beginning of the source line,
137 the actual pc is printed at the beginning.
139 If SOURCE is 1, print the source line as well.
140 If SOURCE is -1, print ONLY the source line. */
143 print_stack_frame (frame, level, source)
148 struct print_stack_frame_args args;
150 args.fi = get_frame_info (frame);
152 args.source = source;
155 catch_errors (print_stack_frame_stub, (char *)&args, "", RETURN_MASK_ERROR);
158 struct print_args_args {
160 struct frame_info *fi;
163 static int print_args_stub PARAMS ((char *));
165 /* Pass the args the way catch_errors wants them. */
167 print_args_stub (args)
171 struct print_args_args *p = (struct print_args_args *)args;
172 FRAME_NUM_ARGS (numargs, (p->fi));
173 print_frame_args (p->func, p->fi, numargs, gdb_stdout);
178 print_frame_info (fi, level, source, args)
179 struct frame_info *fi;
184 struct symtab_and_line sal;
186 register char *funname = 0;
187 enum language funlang = language_unknown;
188 char buf[MAX_REGISTER_RAW_SIZE];
192 /* On the 68k, this spends too much time in m68k_find_saved_regs. */
194 /* Get the value of SP_REGNUM relative to the frame. */
195 get_saved_register (buf, (int *)NULL, (CORE_ADDR *)NULL,
196 FRAME_INFO_ID (fi), SP_REGNUM, (enum lval_type *)NULL);
197 sp = extract_address (buf, REGISTER_RAW_SIZE (SP_REGNUM));
199 /* This is not a perfect test, because if a function alloca's some
200 memory, puts some code there, and then jumps into it, then the test
201 will succeed even though there is no call dummy. Probably best is
202 to check for a bp_call_dummy breakpoint. */
203 if (PC_IN_CALL_DUMMY (fi->pc, sp, fi->frame))
205 if (frame_in_dummy (fi))
208 /* Do this regardless of SOURCE because we don't have any source
209 to list for this frame. */
211 printf_filtered ("#%-2d ", level);
212 printf_filtered ("<function called from gdb>\n");
215 if (fi->signal_handler_caller)
217 /* Do this regardless of SOURCE because we don't have any source
218 to list for this frame. */
220 printf_filtered ("#%-2d ", level);
221 printf_filtered ("<signal handler called>\n");
225 /* If fi is not the innermost frame, that normally means that fi->pc
226 points to *after* the call instruction, and we want to get the line
227 containing the call, never the next line. But if the next frame is
228 a signal_handler_caller or a dummy frame, then the next frame was
229 not entered as the result of a call, and we want to get the line
230 containing fi->pc. */
232 find_pc_line (fi->pc,
234 && !fi->next->signal_handler_caller
235 && !frame_in_dummy (fi->next));
237 func = find_pc_function (fi->pc);
240 /* In certain pathological cases, the symtabs give the wrong
241 function (when we are in the first function in a file which
242 is compiled without debugging symbols, the previous function
243 is compiled with debugging symbols, and the "foo.o" symbol
244 that is supposed to tell us where the file with debugging symbols
245 ends has been truncated by ar because it is longer than 15
246 characters). This also occurs if the user uses asm() to create
247 a function but not stabs for it (in a file compiled -g).
249 So look in the minimal symbol tables as well, and if it comes
250 up with a larger address for the function use that instead.
251 I don't think this can ever cause any problems; there shouldn't
252 be any minimal symbols in the middle of a function; if this is
253 ever changed many parts of GDB will need to be changed (and we'll
254 create a find_pc_minimal_function or some such). */
256 struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
258 && (SYMBOL_VALUE_ADDRESS (msymbol)
259 > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
262 /* There is no particular reason to think the line number
263 information is wrong. Someone might have just put in
264 a label with asm() but left the line numbers alone. */
265 /* In this case we have no way of knowing the source file
266 and line number, so don't print them. */
269 /* We also don't know anything about the function besides
270 its address and name. */
272 funname = SYMBOL_NAME (msymbol);
273 funlang = SYMBOL_LANGUAGE (msymbol);
277 funname = SYMBOL_NAME (func);
278 funlang = SYMBOL_LANGUAGE (func);
283 register struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
286 funname = SYMBOL_NAME (msymbol);
287 funlang = SYMBOL_LANGUAGE (msymbol);
291 if (source >= 0 || !sal.symtab)
294 printf_filtered ("#%-2d ", level);
296 if (fi->pc != sal.pc || !sal.symtab)
298 print_address_numeric (fi->pc, 1, gdb_stdout);
299 printf_filtered (" in ");
301 fprintf_symbol_filtered (gdb_stdout, funname ? funname : "??", funlang,
304 fputs_filtered (" (", gdb_stdout);
307 struct print_args_args args;
310 catch_errors (print_args_stub, (char *)&args, "", RETURN_MASK_ERROR);
312 printf_filtered (")");
313 if (sal.symtab && sal.symtab->filename)
316 printf_filtered (" at %s:%d", sal.symtab->filename, sal.line);
319 #ifdef PC_LOAD_SEGMENT
320 /* If we couldn't print out function name but if can figure out what
321 load segment this pc value is from, at least print out some info
322 about its load segment. */
325 printf_filtered (" from %s", PC_LOAD_SEGMENT (fi->pc));
328 printf_filtered ("\n");
331 if ((source != 0) && sal.symtab)
334 int mid_statement = source < 0 && fi->pc != sal.pc;
335 if (annotation_level)
336 done = identify_source_line (sal.symtab, sal.line, mid_statement,
340 if (addressprint && mid_statement)
342 print_address_numeric (fi->pc, 1, gdb_stdout);
343 printf_filtered ("\t");
345 print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
347 current_source_line = max (sal.line - lines_to_list/2, 1);
350 set_default_breakpoint (1, fi->pc, sal.symtab, sal.line);
352 gdb_flush (gdb_stdout);
356 * Read a frame specification in whatever the appropriate format is.
357 * Call error() if the specification is in any way invalid (i.e.
358 * this function never returns NULL).
361 parse_frame_specification (frame_exp)
366 CORE_ADDR args[MAXARGS];
370 char *addr_string, *p;
371 struct cleanup *tmp_cleanup;
373 while (*frame_exp == ' ') frame_exp++;
377 if (numargs > MAXARGS)
378 error ("Too many args in frame specification");
379 /* Parse an argument. */
380 for (p = frame_exp; *p && *p != ' '; p++)
382 addr_string = savestring(frame_exp, p - frame_exp);
385 tmp_cleanup = make_cleanup (free, addr_string);
386 args[numargs++] = parse_and_eval_address (addr_string);
387 do_cleanups (tmp_cleanup);
390 /* Skip spaces, move to possible next arg. */
391 while (*p == ' ') p++;
399 if (selected_frame == NULL)
400 error ("No selected frame.");
401 return selected_frame;
406 FRAME fid = find_relative_frame (get_current_frame (), &level);
410 /* find_relative_frame was successful */
413 /* If SETUP_ARBITRARY_FRAME is defined, then frame specifications
414 take at least 2 addresses. It is important to detect this case
415 here so that "frame 100" does not give a confusing error message
416 like "frame specification requires two addresses". This of course
417 does not solve the "frame 100" problem for machines on which
418 a frame specification can be made with one address. To solve
419 that, we need a new syntax for a specifying a frame by address.
420 I think the cleanest syntax is $frame(0x45) ($frame(0x23,0x45) for
421 two args, etc.), but people might think that is too much typing,
422 so I guess *0x23,0x45 would be a possible alternative (commas
423 really should be used instead of spaces to delimit; using spaces
424 normally works in an expression). */
425 #ifdef SETUP_ARBITRARY_FRAME
426 error ("No frame %d", args[0]);
429 /* If (s)he specifies the frame with an address, he deserves what
430 (s)he gets. Still, give the highest one that matches. */
432 for (fid = get_current_frame ();
433 fid && FRAME_FP (fid) != args[0];
434 fid = get_prev_frame (fid))
438 while ((tfid = get_prev_frame (fid)) &&
439 (FRAME_FP (tfid) == args[0]))
442 /* We couldn't identify the frame as an existing frame, but
443 perhaps we can create one with a single argument. */
447 #ifdef SETUP_ARBITRARY_FRAME
448 return SETUP_ARBITRARY_FRAME (numargs, args);
450 /* Usual case. Do it here rather than have everyone supply
451 a SETUP_ARBITRARY_FRAME that does this. */
453 return create_new_frame (args[0], 0);
454 error ("Too many args in frame specification");
461 /* FRAME_ARGS_ADDRESS_CORRECT is just like FRAME_ARGS_ADDRESS except
462 that if it is unsure about the answer, it returns 0
463 instead of guessing (this happens on the VAX and i960, for example).
465 On most machines, we never have to guess about the args address,
466 so FRAME_ARGS_ADDRESS{,_CORRECT} are the same. */
467 #if !defined (FRAME_ARGS_ADDRESS_CORRECT)
468 #define FRAME_ARGS_ADDRESS_CORRECT FRAME_ARGS_ADDRESS
471 /* Print verbosely the selected frame or the frame at address ADDR.
472 This means absolutely all information in the frame is printed. */
475 frame_info (addr_exp, from_tty)
480 struct frame_info *fi;
481 struct frame_saved_regs fsr;
482 struct symtab_and_line sal;
488 enum language funlang = language_unknown;
490 if (!target_has_stack)
493 frame = parse_frame_specification (addr_exp);
495 error ("Invalid frame specified.");
497 fi = get_frame_info (frame);
498 sal = find_pc_line (fi->pc,
500 && !fi->next->signal_handler_caller
501 && !frame_in_dummy (fi->next));
502 func = get_frame_function (frame);
503 s = find_pc_symtab(fi->pc);
506 funname = SYMBOL_NAME (func);
507 funlang = SYMBOL_LANGUAGE (func);
511 register struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
514 funname = SYMBOL_NAME (msymbol);
515 funlang = SYMBOL_LANGUAGE (msymbol);
518 calling_frame = get_prev_frame (frame);
520 if (!addr_exp && selected_frame_level >= 0)
522 printf_filtered ("Stack level %d, frame at ", selected_frame_level);
523 print_address_numeric (FRAME_FP(frame), 1, gdb_stdout);
524 printf_filtered (":\n");
528 printf_filtered ("Stack frame at ");
529 print_address_numeric (FRAME_FP(frame), 1, gdb_stdout);
530 printf_filtered (":\n");
532 printf_filtered (" %s = ",
533 reg_names[PC_REGNUM]);
534 print_address_numeric (fi->pc, 1, gdb_stdout);
539 printf_filtered (" in ");
540 fprintf_symbol_filtered (gdb_stdout, funname, funlang,
541 DMGL_ANSI | DMGL_PARAMS);
545 printf_filtered (" (%s:%d)", sal.symtab->filename, sal.line);
546 puts_filtered ("; ");
548 printf_filtered ("saved %s ", reg_names[PC_REGNUM]);
549 print_address_numeric (FRAME_SAVED_PC (frame), 1, gdb_stdout);
550 printf_filtered ("\n");
554 #ifdef FRAMELESS_FUNCTION_INVOCATION
555 FRAMELESS_FUNCTION_INVOCATION (fi, frameless);
558 printf_filtered (" (FRAMELESS),");
563 printf_filtered (" called by frame at ");
564 print_address_numeric (FRAME_FP (calling_frame), 1, gdb_stdout);
566 if (fi->next && calling_frame)
571 printf_filtered (" caller of frame at ");
572 print_address_numeric (fi->next->frame, 1, gdb_stdout);
574 if (fi->next || calling_frame)
575 puts_filtered ("\n");
577 printf_filtered (" source language %s.\n", language_str (s->language));
579 #ifdef PRINT_EXTRA_FRAME_INFO
580 PRINT_EXTRA_FRAME_INFO (fi);
584 /* Address of the argument list for this frame, or 0. */
585 CORE_ADDR arg_list = FRAME_ARGS_ADDRESS_CORRECT (fi);
586 /* Number of args for this frame, or -1 if unknown. */
590 printf_filtered (" Arglist at unknown address.\n");
593 printf_filtered (" Arglist at ");
594 print_address_numeric (arg_list, 1, gdb_stdout);
595 printf_filtered (",");
597 FRAME_NUM_ARGS (numargs, fi);
599 puts_filtered (" args: ");
600 else if (numargs == 0)
601 puts_filtered (" no args.");
602 else if (numargs == 1)
603 puts_filtered (" 1 arg: ");
605 printf_filtered (" %d args: ", numargs);
606 print_frame_args (func, fi, numargs, gdb_stdout);
607 puts_filtered ("\n");
611 /* Address of the local variables for this frame, or 0. */
612 CORE_ADDR arg_list = FRAME_LOCALS_ADDRESS (fi);
615 printf_filtered (" Locals at unknown address,");
618 printf_filtered (" Locals at ");
619 print_address_numeric (arg_list, 1, gdb_stdout);
620 printf_filtered (",");
624 #if defined (FRAME_FIND_SAVED_REGS)
625 get_frame_saved_regs (fi, &fsr);
626 /* The sp is special; what's returned isn't the save address, but
627 actually the value of the previous frame's sp. */
628 printf_filtered (" Previous frame's sp is ");
629 print_address_numeric (fsr.regs[SP_REGNUM], 1, gdb_stdout);
630 printf_filtered ("\n");
632 for (i = 0; i < NUM_REGS; i++)
633 if (fsr.regs[i] && i != SP_REGNUM)
636 puts_filtered (" Saved registers:\n ");
640 printf_filtered (" %s at ", reg_names[i]);
641 print_address_numeric (fsr.regs[i], 1, gdb_stdout);
645 puts_filtered ("\n");
646 #else /* Have FRAME_FIND_SAVED_REGS. */
647 puts_filtered ("\n");
648 #endif /* Have FRAME_FIND_SAVED_REGS. */
652 /* Set a limit on the number of frames printed by default in a
655 static int backtrace_limit;
658 set_backtrace_limit_command (count_exp, from_tty)
662 int count = parse_and_eval_address (count_exp);
665 error ("Negative argument not meaningful as backtrace limit.");
667 backtrace_limit = count;
671 backtrace_limit_info (arg, from_tty)
676 error ("\"Info backtrace-limit\" takes no arguments.");
678 printf_unfiltered ("Backtrace limit: %d.\n", backtrace_limit);
682 /* Print briefly all stack frames or just the innermost COUNT frames. */
685 backtrace_command (count_exp, from_tty)
689 struct frame_info *fi;
691 register FRAME frame;
693 register FRAME trailing;
694 register int trailing_level;
696 if (!target_has_stack)
699 /* The following code must do two things. First, it must
700 set the variable TRAILING to the frame from which we should start
701 printing. Second, it must set the variable count to the number
702 of frames which we should print, or -1 if all of them. */
703 trailing = get_current_frame ();
707 count = parse_and_eval_address (count_exp);
715 while (current && count--)
718 current = get_prev_frame (current);
721 /* Will stop when CURRENT reaches the top of the stack. TRAILING
722 will be COUNT below it. */
726 trailing = get_prev_frame (trailing);
727 current = get_prev_frame (current);
739 struct partial_symtab *ps;
741 /* Read in symbols for all of the frames. Need to do this in
742 a separate pass so that "Reading in symbols for xxx" messages
743 don't screw up the appearance of the backtrace. Also
744 if people have strong opinions against reading symbols for
745 backtrace this may have to be an option. */
747 for (frame = trailing;
748 frame != NULL && i--;
749 frame = get_prev_frame (frame))
752 fi = get_frame_info (frame);
753 ps = find_pc_psymtab (fi->pc);
755 PSYMTAB_TO_SYMTAB (ps); /* Force syms to come in */
759 for (i = 0, frame = trailing;
761 i++, frame = get_prev_frame (frame))
764 fi = get_frame_info (frame);
766 /* Don't use print_stack_frame; if an error() occurs it probably
767 means further attempts to backtrace would fail (on the other
768 hand, perhaps the code does or could be fixed to make sure
769 the frame->prev field gets set to NULL in that case). */
770 print_frame_info (fi, trailing_level + i, 0, 1);
773 /* If we've stopped before the end, mention that. */
774 if (frame && from_tty)
775 printf_filtered ("(More stack frames follow...)\n");
778 /* Print the local variables of a block B active in FRAME.
779 Return 1 if any variables were printed; 0 otherwise. */
782 print_block_frame_locals (b, frame, stream)
784 register FRAME frame;
785 register GDB_FILE *stream;
789 register struct symbol *sym;
790 register int values_printed = 0;
792 nsyms = BLOCK_NSYMS (b);
794 for (i = 0; i < nsyms; i++)
796 sym = BLOCK_SYM (b, i);
797 switch (SYMBOL_CLASS (sym))
804 fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
805 fputs_filtered (" = ", stream);
806 print_variable_value (sym, frame, stream);
807 fprintf_filtered (stream, "\n");
811 /* Ignore symbols which are not locals. */
815 return values_printed;
818 /* Same, but print labels. */
821 print_block_frame_labels (b, have_default, stream)
824 register GDB_FILE *stream;
828 register struct symbol *sym;
829 register int values_printed = 0;
831 nsyms = BLOCK_NSYMS (b);
833 for (i = 0; i < nsyms; i++)
835 sym = BLOCK_SYM (b, i);
836 if (STREQ (SYMBOL_NAME (sym), "default"))
842 if (SYMBOL_CLASS (sym) == LOC_LABEL)
844 struct symtab_and_line sal;
845 sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
847 fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
850 fprintf_filtered (stream, " ");
851 print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), 1, stream);
853 fprintf_filtered (stream, " in file %s, line %d\n",
854 sal.symtab->filename, sal.line);
857 return values_printed;
860 /* Print on STREAM all the local variables in frame FRAME,
861 including all the blocks active in that frame
864 Returns 1 if the job was done,
865 or 0 if nothing was printed because we have no info
866 on the function running in FRAME. */
869 print_frame_local_vars (frame, stream)
870 register FRAME frame;
871 register GDB_FILE *stream;
873 register struct block *block = get_frame_block (frame);
874 register int values_printed = 0;
878 fprintf_filtered (stream, "No symbol table info available.\n");
884 if (print_block_frame_locals (block, frame, stream))
886 /* After handling the function's top-level block, stop.
887 Don't continue to its superblock, the block of
889 if (BLOCK_FUNCTION (block))
891 block = BLOCK_SUPERBLOCK (block);
896 fprintf_filtered (stream, "No locals.\n");
900 /* Same, but print labels. */
903 print_frame_label_vars (frame, this_level_only, stream)
904 register FRAME frame;
906 register GDB_FILE *stream;
908 register struct blockvector *bl;
909 register struct block *block = get_frame_block (frame);
910 register int values_printed = 0;
911 int index, have_default = 0;
912 char *blocks_printed;
913 struct frame_info *fi = get_frame_info (frame);
914 CORE_ADDR pc = fi->pc;
918 fprintf_filtered (stream, "No symbol table info available.\n");
922 bl = blockvector_for_pc (BLOCK_END (block) - 4, &index);
923 blocks_printed = (char *) alloca (BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
924 memset (blocks_printed, 0, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
928 CORE_ADDR end = BLOCK_END (block) - 4;
931 if (bl != blockvector_for_pc (end, &index))
932 error ("blockvector blotch");
933 if (BLOCKVECTOR_BLOCK (bl, index) != block)
934 error ("blockvector botch");
935 last_index = BLOCKVECTOR_NBLOCKS (bl);
938 /* Don't print out blocks that have gone by. */
939 while (index < last_index
940 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < pc)
943 while (index < last_index
944 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < end)
946 if (blocks_printed[index] == 0)
948 if (print_block_frame_labels (BLOCKVECTOR_BLOCK (bl, index), &have_default, stream))
950 blocks_printed[index] = 1;
956 if (values_printed && this_level_only)
959 /* After handling the function's top-level block, stop.
960 Don't continue to its superblock, the block of
962 if (BLOCK_FUNCTION (block))
964 block = BLOCK_SUPERBLOCK (block);
967 if (!values_printed && !this_level_only)
969 fprintf_filtered (stream, "No catches.\n");
975 locals_info (args, from_tty)
980 error ("No frame selected.");
981 print_frame_local_vars (selected_frame, gdb_stdout);
985 catch_info (ignore, from_tty)
990 error ("No frame selected.");
991 print_frame_label_vars (selected_frame, 0, gdb_stdout);
995 print_frame_arg_vars (frame, stream)
996 register FRAME frame;
997 register GDB_FILE *stream;
999 struct symbol *func = get_frame_function (frame);
1000 register struct block *b;
1003 register struct symbol *sym, *sym2;
1004 register int values_printed = 0;
1008 fprintf_filtered (stream, "No symbol table info available.\n");
1012 b = SYMBOL_BLOCK_VALUE (func);
1013 nsyms = BLOCK_NSYMS (b);
1015 for (i = 0; i < nsyms; i++)
1017 sym = BLOCK_SYM (b, i);
1018 switch (SYMBOL_CLASS (sym))
1024 case LOC_REGPARM_ADDR:
1025 case LOC_BASEREG_ARG:
1027 fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
1028 fputs_filtered (" = ", stream);
1030 /* We have to look up the symbol because arguments can have
1031 two entries (one a parameter, one a local) and the one we
1032 want is the local, which lookup_symbol will find for us.
1033 This includes gcc1 (not gcc2) on the sparc when passing a
1034 small structure and gcc2 when the argument type is float
1035 and it is passed as a double and converted to float by
1036 the prologue (in the latter case the type of the LOC_ARG
1037 symbol is double and the type of the LOC_LOCAL symbol is
1038 float). There are also LOC_ARG/LOC_REGISTER pairs which
1039 are not combined in symbol-reading. */
1041 sym2 = lookup_symbol (SYMBOL_NAME (sym),
1042 b, VAR_NAMESPACE, (int *)NULL, (struct symtab **)NULL);
1043 print_variable_value (sym2, frame, stream);
1044 fprintf_filtered (stream, "\n");
1048 /* Don't worry about things which aren't arguments. */
1053 if (!values_printed)
1055 fprintf_filtered (stream, "No arguments.\n");
1060 args_info (ignore, from_tty)
1064 if (!selected_frame)
1065 error ("No frame selected.");
1066 print_frame_arg_vars (selected_frame, gdb_stdout);
1069 /* Select frame FRAME, and note that its stack level is LEVEL.
1070 LEVEL may be -1 if an actual level number is not known. */
1073 select_frame (frame, level)
1077 register struct symtab *s;
1079 selected_frame = frame;
1080 selected_frame_level = level;
1082 /* Ensure that symbols for this frame are read in. Also, determine the
1083 source language of this frame, and switch to it if desired. */
1086 s = find_pc_symtab (get_frame_info (frame)->pc);
1088 && s->language != current_language->la_language
1089 && s->language != language_unknown
1090 && language_mode == language_mode_auto) {
1091 set_language(s->language);
1096 /* Store the selected frame and its level into *FRAMEP and *LEVELP.
1097 If there is no selected frame, *FRAMEP is set to NULL. */
1100 record_selected_frame (frameaddrp, levelp)
1101 FRAME_ADDR *frameaddrp;
1104 *frameaddrp = selected_frame ? FRAME_FP (selected_frame) : 0;
1105 *levelp = selected_frame_level;
1108 /* Return the symbol-block in which the selected frame is executing.
1109 Can return zero under various legitimate circumstances. */
1112 get_selected_block ()
1114 if (!target_has_stack)
1117 if (!selected_frame)
1118 return get_current_block ();
1119 return get_frame_block (selected_frame);
1122 /* Find a frame a certain number of levels away from FRAME.
1123 LEVEL_OFFSET_PTR points to an int containing the number of levels.
1124 Positive means go to earlier frames (up); negative, the reverse.
1125 The int that contains the number of levels is counted toward
1126 zero as the frames for those levels are found.
1127 If the top or bottom frame is reached, that frame is returned,
1128 but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
1129 how much farther the original request asked to go. */
1132 find_relative_frame (frame, level_offset_ptr)
1133 register FRAME frame;
1134 register int* level_offset_ptr;
1136 register FRAME prev;
1137 register FRAME frame1;
1139 /* Going up is simple: just do get_prev_frame enough times
1140 or until initial frame is reached. */
1141 while (*level_offset_ptr > 0)
1143 prev = get_prev_frame (frame);
1146 (*level_offset_ptr)--;
1149 /* Going down is just as simple. */
1150 if (*level_offset_ptr < 0)
1152 while (*level_offset_ptr < 0) {
1153 frame1 = get_next_frame (frame);
1157 (*level_offset_ptr)++;
1163 /* The "select_frame" command. With no arg, NOP.
1164 With arg LEVEL_EXP, select the frame at level LEVEL if it is a
1165 valid level. Otherwise, treat level_exp as an address expression
1166 and select it. See parse_frame_specification for more info on proper
1167 frame expressions. */
1171 select_frame_command (level_exp, from_tty)
1175 register FRAME frame, frame1;
1176 unsigned int level = 0;
1178 if (!target_has_stack)
1179 error ("No stack.");
1181 frame = parse_frame_specification (level_exp);
1183 /* Try to figure out what level this frame is. But if there is
1184 no current stack, don't error out -- let the user set one. */
1186 if (get_current_frame()) {
1187 for (frame1 = get_prev_frame (0);
1188 frame1 && frame1 != frame;
1189 frame1 = get_prev_frame (frame1))
1196 select_frame (frame, level);
1199 /* The "frame" command. With no arg, print selected frame briefly.
1200 With arg, behaves like select_frame and then prints the selected
1204 frame_command (level_exp, from_tty)
1208 select_frame_command (level_exp, from_tty);
1209 print_stack_frame (selected_frame, selected_frame_level, 1);
1212 /* Select the frame up one or COUNT stack levels
1213 from the previously selected frame, and print it briefly. */
1217 up_silently_command (count_exp, from_tty)
1221 register FRAME frame;
1222 int count = 1, count1;
1224 count = parse_and_eval_address (count_exp);
1227 if (target_has_stack == 0 || selected_frame == 0)
1228 error ("No stack.");
1230 frame = find_relative_frame (selected_frame, &count1);
1231 if (count1 != 0 && count_exp == 0)
1232 error ("Initial frame selected; you cannot go up.");
1233 select_frame (frame, selected_frame_level + count - count1);
1237 up_command (count_exp, from_tty)
1241 up_silently_command (count_exp, from_tty);
1242 print_stack_frame (selected_frame, selected_frame_level, 1);
1245 /* Select the frame down one or COUNT stack levels
1246 from the previously selected frame, and print it briefly. */
1250 down_silently_command (count_exp, from_tty)
1254 register FRAME frame;
1255 int count = -1, count1;
1257 count = - parse_and_eval_address (count_exp);
1260 if (target_has_stack == 0 || selected_frame == 0)
1261 error ("No stack.");
1263 frame = find_relative_frame (selected_frame, &count1);
1264 if (count1 != 0 && count_exp == 0)
1267 /* We only do this if count_exp is not specified. That way "down"
1268 means to really go down (and let me know if that is
1269 impossible), but "down 9999" can be used to mean go all the way
1270 down without getting an error. */
1272 error ("Bottom (i.e., innermost) frame selected; you cannot go down.");
1275 select_frame (frame, selected_frame_level + count - count1);
1280 down_command (count_exp, from_tty)
1284 down_silently_command (count_exp, from_tty);
1285 print_stack_frame (selected_frame, selected_frame_level, 1);
1289 return_command (retval_exp, from_tty)
1293 struct symbol *thisfun;
1294 FRAME_ADDR selected_frame_addr;
1295 CORE_ADDR selected_frame_pc;
1297 value_ptr return_value = NULL;
1299 if (selected_frame == NULL)
1300 error ("No selected frame.");
1301 thisfun = get_frame_function (selected_frame);
1302 selected_frame_addr = FRAME_FP (selected_frame);
1303 selected_frame_pc = (get_frame_info (selected_frame))->pc;
1305 /* Compute the return value (if any -- possibly getting errors here). */
1309 return_value = parse_and_eval (retval_exp);
1311 /* Make sure we have fully evaluated it, since
1312 it might live in the stack frame we're about to pop. */
1313 if (VALUE_LAZY (return_value))
1314 value_fetch_lazy (return_value);
1317 /* If interactive, require confirmation. */
1323 if (!query ("Make %s return now? ", SYMBOL_SOURCE_NAME (thisfun)))
1325 error ("Not confirmed.");
1330 if (!query ("Make selected stack frame return now? "))
1331 error ("Not confirmed.");
1334 /* Do the real work. Pop until the specified frame is current. We
1335 use this method because the selected_frame is not valid after
1336 a POP_FRAME. The pc comparison makes this work even if the
1337 selected frame shares its fp with another frame. */
1339 while ( selected_frame_addr != FRAME_FP (frame = get_current_frame())
1340 || selected_frame_pc != (get_frame_info (frame))->pc )
1343 /* Then pop that frame. */
1347 /* Compute the return value (if any) and store in the place
1348 for return values. */
1351 set_return_value (return_value);
1353 /* If interactive, print the frame that is now current. */
1356 frame_command ("0", 1);
1359 /* Gets the language of the current frame. */
1361 get_frame_language()
1363 register struct symtab *s;
1365 enum language flang; /* The language of the current frame */
1367 fr = get_frame_info(selected_frame);
1370 s = find_pc_symtab(fr->pc);
1372 flang = s->language;
1374 flang = language_unknown;
1377 flang = language_unknown;
1383 _initialize_stack ()
1386 backtrace_limit = 30;
1389 add_com ("return", class_stack, return_command,
1390 "Make selected stack frame return to its caller.\n\
1391 Control remains in the debugger, but when you continue\n\
1392 execution will resume in the frame above the one now selected.\n\
1393 If an argument is given, it is an expression for the value to return.");
1395 add_com ("up", class_stack, up_command,
1396 "Select and print stack frame that called this one.\n\
1397 An argument says how many frames up to go.");
1398 add_com ("up-silently", class_support, up_silently_command,
1399 "Same as the `up' command, but does not print anything.\n\
1400 This is useful in command scripts.");
1402 add_com ("down", class_stack, down_command,
1403 "Select and print stack frame called by this one.\n\
1404 An argument says how many frames down to go.");
1405 add_com_alias ("do", "down", class_stack, 1);
1406 add_com_alias ("dow", "down", class_stack, 1);
1407 add_com ("down-silently", class_support, down_silently_command,
1408 "Same as the `down' command, but does not print anything.\n\
1409 This is useful in command scripts.");
1411 add_com ("frame", class_stack, frame_command,
1412 "Select and print a stack frame.\n\
1413 With no argument, print the selected stack frame. (See also \"info frame\").\n\
1414 An argument specifies the frame to select.\n\
1415 It can be a stack frame number or the address of the frame.\n\
1416 With argument, nothing is printed if input is coming from\n\
1417 a command file or a user-defined command.");
1419 add_com_alias ("f", "frame", class_stack, 1);
1421 add_com ("select-frame", class_stack, select_frame_command,
1422 "Select a stack frame without printing anything.\n\
1423 An argument specifies the frame to select.\n\
1424 It can be a stack frame number or the address of the frame.\n");
1426 add_com ("backtrace", class_stack, backtrace_command,
1427 "Print backtrace of all stack frames, or innermost COUNT frames.\n\
1428 With a negative argument, print outermost -COUNT frames.");
1429 add_com_alias ("bt", "backtrace", class_stack, 0);
1430 add_com_alias ("where", "backtrace", class_alias, 0);
1431 add_info ("stack", backtrace_command,
1432 "Backtrace of the stack, or innermost COUNT frames.");
1433 add_info_alias ("s", "stack", 1);
1434 add_info ("frame", frame_info,
1435 "All about selected stack frame, or frame at ADDR.");
1436 add_info_alias ("f", "frame", 1);
1437 add_info ("locals", locals_info,
1438 "Local variables of current stack frame.");
1439 add_info ("args", args_info,
1440 "Argument variables of current stack frame.");
1441 add_info ("catch", catch_info,
1442 "Exceptions that can be caught in the current stack frame.");
1445 add_cmd ("backtrace-limit", class_stack, set_backtrace_limit_command,
1446 "Specify maximum number of frames for \"backtrace\" to print by default.",
1448 add_info ("backtrace-limit", backtrace_limit_info,
1449 "The maximum number of frames for \"backtrace\" to print by default.");