* infrun.c (normal_stop): Set stop_pc after popping the dummy frame
[deliverable/binutils-gdb.git] / gdb / stack.c
1 /* Print and select stack frames for GDB, the GNU debugger.
2 Copyright 1986, 1987, 1989, 1991, 1992, 1993 Free Software Foundation, Inc.
3
4 This file is part of GDB.
5
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.
10
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.
15
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. */
19
20 #include "defs.h"
21 #include "value.h"
22 #include "symtab.h"
23 #include "gdbtypes.h"
24 #include "expression.h"
25 #include "language.h"
26 #include "frame.h"
27 #include "gdbcmd.h"
28 #include "gdbcore.h"
29 #include "target.h"
30 #include "breakpoint.h"
31 #include "demangle.h"
32 #include "inferior.h"
33
34 static void
35 return_command PARAMS ((char *, int));
36
37 static void
38 down_command PARAMS ((char *, int));
39
40 static void
41 down_silently_command PARAMS ((char *, int));
42
43 static void
44 up_command PARAMS ((char *, int));
45
46 static void
47 up_silently_command PARAMS ((char *, int));
48
49 static void
50 frame_command PARAMS ((char *, int));
51
52 static void
53 select_frame_command PARAMS ((char *, int));
54
55 static void
56 args_info PARAMS ((char *, int));
57
58 static void
59 print_frame_arg_vars PARAMS ((FRAME, GDB_FILE *));
60
61 static void
62 catch_info PARAMS ((char *, int));
63
64 static void
65 locals_info PARAMS ((char *, int));
66
67 static void
68 print_frame_label_vars PARAMS ((FRAME, int, GDB_FILE *));
69
70 static void
71 print_frame_local_vars PARAMS ((FRAME, GDB_FILE *));
72
73 static int
74 print_block_frame_labels PARAMS ((struct block *, int *, GDB_FILE *));
75
76 static int
77 print_block_frame_locals PARAMS ((struct block *, FRAME, GDB_FILE *));
78
79 static void
80 backtrace_command PARAMS ((char *, int));
81
82 static FRAME
83 parse_frame_specification PARAMS ((char *));
84
85 static void
86 frame_info PARAMS ((char *, int));
87
88
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 */
92
93 /* The "selected" stack frame is used by default for local and arg access.
94 May be zero, for no selected frame. */
95
96 FRAME selected_frame;
97
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. */
101
102 int selected_frame_level;
103
104 /* Nonzero means print the full filename and linenumber
105 when a frame is printed, and do so in a format programs can parse. */
106
107 int frame_file_full_name = 0;
108
109 \f
110 struct print_stack_frame_args {
111 struct frame_info *fi;
112 int level;
113 int source;
114 int args;
115 };
116
117 static int print_stack_frame_stub PARAMS ((char *));
118
119 /* Pass the args the way catch_errors wants them. */
120 static int
121 print_stack_frame_stub (args)
122 char *args;
123 {
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);
126 return 0;
127 }
128
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.
135
136 If SOURCE is 1, print the source line as well.
137 If SOURCE is -1, print ONLY the source line. */
138
139 void
140 print_stack_frame (frame, level, source)
141 FRAME frame;
142 int level;
143 int source;
144 {
145 struct print_stack_frame_args args;
146
147 args.fi = get_frame_info (frame);
148 args.level = level;
149 args.source = source;
150 args.args = 1;
151
152 catch_errors (print_stack_frame_stub, (char *)&args, "", RETURN_MASK_ERROR);
153 }
154
155 struct print_args_args {
156 struct symbol *func;
157 struct frame_info *fi;
158 };
159
160 static int print_args_stub PARAMS ((char *));
161
162 /* Pass the args the way catch_errors wants them. */
163 static int
164 print_args_stub (args)
165 char *args;
166 {
167 int numargs;
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);
171 return 0;
172 }
173
174 void
175 print_frame_info (fi, level, source, args)
176 struct frame_info *fi;
177 register int level;
178 int source;
179 int args;
180 {
181 struct symtab_and_line sal;
182 struct symbol *func;
183 register char *funname = 0;
184 enum language funlang = language_unknown;
185 char buf[MAX_REGISTER_RAW_SIZE];
186 CORE_ADDR sp;
187
188 #if 0
189 /* On the 68k, this spends too much time in m68k_find_saved_regs. */
190
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));
195
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))
201 #else
202 if (frame_in_dummy (fi))
203 #endif
204 {
205 /* Do this regardless of SOURCE because we don't have any source
206 to list for this frame. */
207 if (level >= 0)
208 printf_filtered ("#%-2d ", level);
209 printf_filtered ("<function called from gdb>\n");
210 return;
211 }
212 if (fi->signal_handler_caller)
213 {
214 /* Do this regardless of SOURCE because we don't have any source
215 to list for this frame. */
216 if (level >= 0)
217 printf_filtered ("#%-2d ", level);
218 printf_filtered ("<signal handler called>\n");
219 return;
220 }
221
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. */
228 sal =
229 find_pc_line (fi->pc,
230 fi->next != NULL
231 && !fi->next->signal_handler_caller
232 && !frame_in_dummy (fi->next));
233
234 func = find_pc_function (fi->pc);
235 if (func)
236 {
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).
245
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). */
252
253 struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
254 if (msymbol != NULL
255 && (SYMBOL_VALUE_ADDRESS (msymbol)
256 > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
257 {
258 /* In this case we have no way of knowing the source file
259 and line number, so don't print them. */
260 sal.symtab = 0;
261 /* We also don't know anything about the function besides
262 its address and name. */
263 func = 0;
264 funname = SYMBOL_NAME (msymbol);
265 funlang = SYMBOL_LANGUAGE (msymbol);
266 }
267 else
268 {
269 funname = SYMBOL_NAME (func);
270 funlang = SYMBOL_LANGUAGE (func);
271 }
272 }
273 else
274 {
275 register struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
276 if (msymbol != NULL)
277 {
278 funname = SYMBOL_NAME (msymbol);
279 funlang = SYMBOL_LANGUAGE (msymbol);
280 }
281 }
282
283 if (source >= 0 || !sal.symtab)
284 {
285 if (level >= 0)
286 printf_filtered ("#%-2d ", level);
287 if (addressprint)
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,
291 DMGL_ANSI);
292 wrap_here (" ");
293 fputs_filtered (" (", gdb_stdout);
294 if (args)
295 {
296 struct print_args_args args;
297 args.fi = fi;
298 args.func = func;
299 catch_errors (print_args_stub, (char *)&args, "", RETURN_MASK_ERROR);
300 }
301 printf_filtered (")");
302 if (sal.symtab && sal.symtab->filename)
303 {
304 wrap_here (" ");
305 printf_filtered (" at %s:%d", sal.symtab->filename, sal.line);
306 }
307
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. */
312 if (!funname) {
313 wrap_here (" ");
314 printf_filtered (" from %s", PC_LOAD_SEGMENT (fi->pc));
315 }
316 #endif
317 printf_filtered ("\n");
318 }
319
320 if ((source != 0) && sal.symtab)
321 {
322 int done = 0;
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,
326 fi->pc);
327 if (!done)
328 {
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);
332 }
333 current_source_line = max (sal.line - lines_to_list/2, 1);
334 }
335 if (source != 0)
336 set_default_breakpoint (1, fi->pc, sal.symtab, sal.line);
337
338 gdb_flush (gdb_stdout);
339 }
340
341 /*
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).
345 */
346 static FRAME
347 parse_frame_specification (frame_exp)
348 char *frame_exp;
349 {
350 int numargs = 0;
351 #define MAXARGS 4
352 CORE_ADDR args[MAXARGS];
353
354 if (frame_exp)
355 {
356 char *addr_string, *p;
357 struct cleanup *tmp_cleanup;
358
359 while (*frame_exp == ' ') frame_exp++;
360
361 while (*frame_exp)
362 {
363 if (numargs > MAXARGS)
364 error ("Too many args in frame specification");
365 /* Parse an argument. */
366 for (p = frame_exp; *p && *p != ' '; p++)
367 ;
368 addr_string = savestring(frame_exp, p - frame_exp);
369
370 {
371 tmp_cleanup = make_cleanup (free, addr_string);
372 args[numargs++] = parse_and_eval_address (addr_string);
373 do_cleanups (tmp_cleanup);
374 }
375
376 /* Skip spaces, move to possible next arg. */
377 while (*p == ' ') p++;
378 frame_exp = p;
379 }
380 }
381
382 switch (numargs)
383 {
384 case 0:
385 if (selected_frame == NULL)
386 error ("No selected frame.");
387 return selected_frame;
388 /* NOTREACHED */
389 case 1:
390 {
391 int level = args[0];
392 FRAME fid = find_relative_frame (get_current_frame (), &level);
393 FRAME tfid;
394
395 if (level == 0)
396 /* find_relative_frame was successful */
397 return fid;
398
399 /* If (s)he specifies the frame with an address, he deserves what
400 (s)he gets. Still, give the highest one that matches. */
401
402 for (fid = get_current_frame ();
403 fid && FRAME_FP (fid) != args[0];
404 fid = get_prev_frame (fid))
405 ;
406
407 if (fid)
408 while ((tfid = get_prev_frame (fid)) &&
409 (FRAME_FP (tfid) == args[0]))
410 fid = tfid;
411
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. */
416 }
417
418 default:
419 #ifdef SETUP_ARBITRARY_FRAME
420 return SETUP_ARBITRARY_FRAME (numargs, args);
421 #else
422 /* Usual case. Do it here rather than have everyone supply
423 a SETUP_ARBITRARY_FRAME that does this. */
424 if (numargs == 1)
425 return create_new_frame (args[0], 0);
426 error ("Too many args in frame specification");
427 #endif
428 /* NOTREACHED */
429 }
430 /* NOTREACHED */
431 }
432
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).
436
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
441 #endif
442
443 /* Print verbosely the selected frame or the frame at address ADDR.
444 This means absolutely all information in the frame is printed. */
445
446 static void
447 frame_info (addr_exp, from_tty)
448 char *addr_exp;
449 int from_tty;
450 {
451 FRAME frame;
452 struct frame_info *fi;
453 struct frame_saved_regs fsr;
454 struct symtab_and_line sal;
455 struct symbol *func;
456 struct symtab *s;
457 FRAME calling_frame;
458 int i, count;
459 char *funname = 0;
460 enum language funlang = language_unknown;
461
462 if (!target_has_stack)
463 error ("No stack.");
464
465 frame = parse_frame_specification (addr_exp);
466 if (!frame)
467 error ("Invalid frame specified.");
468
469 fi = get_frame_info (frame);
470 sal = find_pc_line (fi->pc,
471 fi->next != NULL
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);
476 if (func)
477 {
478 funname = SYMBOL_NAME (func);
479 funlang = SYMBOL_LANGUAGE (func);
480 }
481 else
482 {
483 register struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
484 if (msymbol != NULL)
485 {
486 funname = SYMBOL_NAME (msymbol);
487 funlang = SYMBOL_LANGUAGE (msymbol);
488 }
489 }
490 calling_frame = get_prev_frame (frame);
491
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)));
496 } else {
497 printf_filtered ("Stack frame at %s:\n",
498 local_hex_string((unsigned long) FRAME_FP(frame)));
499 }
500 printf_filtered (" %s = %s",
501 reg_names[PC_REGNUM],
502 local_hex_string((unsigned long) fi->pc));
503
504 wrap_here (" ");
505 if (funname)
506 {
507 printf_filtered (" in ");
508 fprintf_symbol_filtered (gdb_stdout, funname, funlang,
509 DMGL_ANSI | DMGL_PARAMS);
510 }
511 wrap_here (" ");
512 if (sal.symtab)
513 printf_filtered (" (%s:%d)", sal.symtab->filename, sal.line);
514 puts_filtered ("; ");
515 wrap_here (" ");
516 printf_filtered ("saved %s %s\n", reg_names[PC_REGNUM],
517 local_hex_string((unsigned long) FRAME_SAVED_PC (frame)));
518
519 {
520 int frameless = 0;
521 #ifdef FRAMELESS_FUNCTION_INVOCATION
522 FRAMELESS_FUNCTION_INVOCATION (fi, frameless);
523 #endif
524 if (frameless)
525 printf_filtered (" (FRAMELESS),");
526 }
527
528 if (calling_frame)
529 printf_filtered (" called by frame at %s",
530 local_hex_string((unsigned long) FRAME_FP (calling_frame)));
531 if (fi->next && calling_frame)
532 puts_filtered (",");
533 wrap_here (" ");
534 if (fi->next)
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");
539 if (s)
540 printf_filtered(" source language %s.\n", language_str(s->language));
541
542 #ifdef PRINT_EXTRA_FRAME_INFO
543 PRINT_EXTRA_FRAME_INFO (fi);
544 #endif
545
546 {
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. */
550 int numargs;
551
552 if (arg_list == 0)
553 printf_filtered (" Arglist at unknown address.\n");
554 else
555 {
556 printf_filtered (" Arglist at %s,",
557 local_hex_string((unsigned long) arg_list));
558
559 FRAME_NUM_ARGS (numargs, fi);
560 if (numargs < 0)
561 puts_filtered (" args: ");
562 else if (numargs == 0)
563 puts_filtered (" no args.");
564 else if (numargs == 1)
565 puts_filtered (" 1 arg: ");
566 else
567 printf_filtered (" %d args: ", numargs);
568 print_frame_args (func, fi, numargs, gdb_stdout);
569 puts_filtered ("\n");
570 }
571 }
572 {
573 /* Address of the local variables for this frame, or 0. */
574 CORE_ADDR arg_list = FRAME_LOCALS_ADDRESS (fi);
575
576 if (arg_list == 0)
577 printf_filtered (" Locals at unknown address,");
578 else
579 printf_filtered (" Locals at %s,",
580 local_hex_string((unsigned long) arg_list));
581 }
582
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]));
589 count = 0;
590 for (i = 0; i < NUM_REGS; i++)
591 if (fsr.regs[i] && i != SP_REGNUM)
592 {
593 if (count == 0)
594 puts_filtered (" Saved registers:\n ");
595 else
596 puts_filtered (",");
597 wrap_here (" ");
598 printf_filtered (" %s at %s", reg_names[i],
599 local_hex_string((unsigned long) fsr.regs[i]));
600 count++;
601 }
602 if (count)
603 puts_filtered ("\n");
604 #else /* Have FRAME_FIND_SAVED_REGS. */
605 puts_filtered ("\n");
606 #endif /* Have FRAME_FIND_SAVED_REGS. */
607 }
608
609 #if 0
610 /* Set a limit on the number of frames printed by default in a
611 backtrace. */
612
613 static int backtrace_limit;
614
615 static void
616 set_backtrace_limit_command (count_exp, from_tty)
617 char *count_exp;
618 int from_tty;
619 {
620 int count = parse_and_eval_address (count_exp);
621
622 if (count < 0)
623 error ("Negative argument not meaningful as backtrace limit.");
624
625 backtrace_limit = count;
626 }
627
628 static void
629 backtrace_limit_info (arg, from_tty)
630 char *arg;
631 int from_tty;
632 {
633 if (arg)
634 error ("\"Info backtrace-limit\" takes no arguments.");
635
636 printf_unfiltered ("Backtrace limit: %d.\n", backtrace_limit);
637 }
638 #endif
639
640 /* Print briefly all stack frames or just the innermost COUNT frames. */
641
642 static void
643 backtrace_command (count_exp, from_tty)
644 char *count_exp;
645 int from_tty;
646 {
647 struct frame_info *fi;
648 register int count;
649 register FRAME frame;
650 register int i;
651 register FRAME trailing;
652 register int trailing_level;
653
654 if (!target_has_stack)
655 error ("No stack.");
656
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 ();
662 trailing_level = 0;
663 if (count_exp)
664 {
665 count = parse_and_eval_address (count_exp);
666 if (count < 0)
667 {
668 FRAME current;
669
670 count = -count;
671
672 current = trailing;
673 while (current && count--)
674 {
675 QUIT;
676 current = get_prev_frame (current);
677 }
678
679 /* Will stop when CURRENT reaches the top of the stack. TRAILING
680 will be COUNT below it. */
681 while (current)
682 {
683 QUIT;
684 trailing = get_prev_frame (trailing);
685 current = get_prev_frame (current);
686 trailing_level++;
687 }
688
689 count = -1;
690 }
691 }
692 else
693 count = -1;
694
695 if (info_verbose)
696 {
697 struct partial_symtab *ps;
698
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. */
704 i = count;
705 for (frame = trailing;
706 frame != NULL && i--;
707 frame = get_prev_frame (frame))
708 {
709 QUIT;
710 fi = get_frame_info (frame);
711 ps = find_pc_psymtab (fi->pc);
712 if (ps)
713 PSYMTAB_TO_SYMTAB (ps); /* Force syms to come in */
714 }
715 }
716
717 for (i = 0, frame = trailing;
718 frame && count--;
719 i++, frame = get_prev_frame (frame))
720 {
721 QUIT;
722 fi = get_frame_info (frame);
723
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);
729 }
730
731 /* If we've stopped before the end, mention that. */
732 if (frame && from_tty)
733 printf_filtered ("(More stack frames follow...)\n");
734 }
735 \f
736 /* Print the local variables of a block B active in FRAME.
737 Return 1 if any variables were printed; 0 otherwise. */
738
739 static int
740 print_block_frame_locals (b, frame, stream)
741 struct block *b;
742 register FRAME frame;
743 register GDB_FILE *stream;
744 {
745 int nsyms;
746 register int i;
747 register struct symbol *sym;
748 register int values_printed = 0;
749
750 nsyms = BLOCK_NSYMS (b);
751
752 for (i = 0; i < nsyms; i++)
753 {
754 sym = BLOCK_SYM (b, i);
755 switch (SYMBOL_CLASS (sym))
756 {
757 case LOC_LOCAL:
758 case LOC_REGISTER:
759 case LOC_STATIC:
760 case LOC_BASEREG:
761 values_printed = 1;
762 fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
763 fputs_filtered (" = ", stream);
764 print_variable_value (sym, frame, stream);
765 fprintf_filtered (stream, "\n");
766 break;
767
768 default:
769 /* Ignore symbols which are not locals. */
770 break;
771 }
772 }
773 return values_printed;
774 }
775
776 /* Same, but print labels. */
777
778 static int
779 print_block_frame_labels (b, have_default, stream)
780 struct block *b;
781 int *have_default;
782 register GDB_FILE *stream;
783 {
784 int nsyms;
785 register int i;
786 register struct symbol *sym;
787 register int values_printed = 0;
788
789 nsyms = BLOCK_NSYMS (b);
790
791 for (i = 0; i < nsyms; i++)
792 {
793 sym = BLOCK_SYM (b, i);
794 if (STREQ (SYMBOL_NAME (sym), "default"))
795 {
796 if (*have_default)
797 continue;
798 *have_default = 1;
799 }
800 if (SYMBOL_CLASS (sym) == LOC_LABEL)
801 {
802 struct symtab_and_line sal;
803 sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
804 values_printed = 1;
805 fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
806 if (addressprint)
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);
811 }
812 }
813 return values_printed;
814 }
815
816 /* Print on STREAM all the local variables in frame FRAME,
817 including all the blocks active in that frame
818 at its current pc.
819
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. */
823
824 static void
825 print_frame_local_vars (frame, stream)
826 register FRAME frame;
827 register GDB_FILE *stream;
828 {
829 register struct block *block = get_frame_block (frame);
830 register int values_printed = 0;
831
832 if (block == 0)
833 {
834 fprintf_filtered (stream, "No symbol table info available.\n");
835 return;
836 }
837
838 while (block != 0)
839 {
840 if (print_block_frame_locals (block, frame, stream))
841 values_printed = 1;
842 /* After handling the function's top-level block, stop.
843 Don't continue to its superblock, the block of
844 per-file symbols. */
845 if (BLOCK_FUNCTION (block))
846 break;
847 block = BLOCK_SUPERBLOCK (block);
848 }
849
850 if (!values_printed)
851 {
852 fprintf_filtered (stream, "No locals.\n");
853 }
854 }
855
856 /* Same, but print labels. */
857
858 static void
859 print_frame_label_vars (frame, this_level_only, stream)
860 register FRAME frame;
861 int this_level_only;
862 register GDB_FILE *stream;
863 {
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;
871
872 if (block == 0)
873 {
874 fprintf_filtered (stream, "No symbol table info available.\n");
875 return;
876 }
877
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));
881
882 while (block != 0)
883 {
884 CORE_ADDR end = BLOCK_END (block) - 4;
885 int last_index;
886
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);
892 index += 1;
893
894 /* Don't print out blocks that have gone by. */
895 while (index < last_index
896 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < pc)
897 index++;
898
899 while (index < last_index
900 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < end)
901 {
902 if (blocks_printed[index] == 0)
903 {
904 if (print_block_frame_labels (BLOCKVECTOR_BLOCK (bl, index), &have_default, stream))
905 values_printed = 1;
906 blocks_printed[index] = 1;
907 }
908 index++;
909 }
910 if (have_default)
911 return;
912 if (values_printed && this_level_only)
913 return;
914
915 /* After handling the function's top-level block, stop.
916 Don't continue to its superblock, the block of
917 per-file symbols. */
918 if (BLOCK_FUNCTION (block))
919 break;
920 block = BLOCK_SUPERBLOCK (block);
921 }
922
923 if (!values_printed && !this_level_only)
924 {
925 fprintf_filtered (stream, "No catches.\n");
926 }
927 }
928
929 /* ARGSUSED */
930 static void
931 locals_info (args, from_tty)
932 char *args;
933 int from_tty;
934 {
935 if (!selected_frame)
936 error ("No frame selected.");
937 print_frame_local_vars (selected_frame, gdb_stdout);
938 }
939
940 static void
941 catch_info (ignore, from_tty)
942 char *ignore;
943 int from_tty;
944 {
945 if (!selected_frame)
946 error ("No frame selected.");
947 print_frame_label_vars (selected_frame, 0, gdb_stdout);
948 }
949
950 static void
951 print_frame_arg_vars (frame, stream)
952 register FRAME frame;
953 register GDB_FILE *stream;
954 {
955 struct symbol *func = get_frame_function (frame);
956 register struct block *b;
957 int nsyms;
958 register int i;
959 register struct symbol *sym, *sym2;
960 register int values_printed = 0;
961
962 if (func == 0)
963 {
964 fprintf_filtered (stream, "No symbol table info available.\n");
965 return;
966 }
967
968 b = SYMBOL_BLOCK_VALUE (func);
969 nsyms = BLOCK_NSYMS (b);
970
971 for (i = 0; i < nsyms; i++)
972 {
973 sym = BLOCK_SYM (b, i);
974 switch (SYMBOL_CLASS (sym))
975 {
976 case LOC_ARG:
977 case LOC_LOCAL_ARG:
978 case LOC_REF_ARG:
979 case LOC_REGPARM:
980 case LOC_REGPARM_ADDR:
981 case LOC_BASEREG_ARG:
982 values_printed = 1;
983 fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
984 fputs_filtered (" = ", stream);
985
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. */
996
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");
1001 break;
1002
1003 default:
1004 /* Don't worry about things which aren't arguments. */
1005 break;
1006 }
1007 }
1008
1009 if (!values_printed)
1010 {
1011 fprintf_filtered (stream, "No arguments.\n");
1012 }
1013 }
1014
1015 static void
1016 args_info (ignore, from_tty)
1017 char *ignore;
1018 int from_tty;
1019 {
1020 if (!selected_frame)
1021 error ("No frame selected.");
1022 print_frame_arg_vars (selected_frame, gdb_stdout);
1023 }
1024 \f
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. */
1027
1028 void
1029 select_frame (frame, level)
1030 FRAME frame;
1031 int level;
1032 {
1033 register struct symtab *s;
1034
1035 selected_frame = frame;
1036 selected_frame_level = level;
1037
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. */
1040 if (frame)
1041 {
1042 s = find_pc_symtab (get_frame_info (frame)->pc);
1043 if (s
1044 && s->language != current_language->la_language
1045 && s->language != language_unknown
1046 && language_mode == language_mode_auto) {
1047 set_language(s->language);
1048 }
1049 }
1050 }
1051
1052 /* Store the selected frame and its level into *FRAMEP and *LEVELP.
1053 If there is no selected frame, *FRAMEP is set to NULL. */
1054
1055 void
1056 record_selected_frame (frameaddrp, levelp)
1057 FRAME_ADDR *frameaddrp;
1058 int *levelp;
1059 {
1060 *frameaddrp = selected_frame ? FRAME_FP (selected_frame) : 0;
1061 *levelp = selected_frame_level;
1062 }
1063
1064 /* Return the symbol-block in which the selected frame is executing.
1065 Can return zero under various legitimate circumstances. */
1066
1067 struct block *
1068 get_selected_block ()
1069 {
1070 if (!target_has_stack)
1071 return 0;
1072
1073 if (!selected_frame)
1074 return get_current_block ();
1075 return get_frame_block (selected_frame);
1076 }
1077
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. */
1086
1087 FRAME
1088 find_relative_frame (frame, level_offset_ptr)
1089 register FRAME frame;
1090 register int* level_offset_ptr;
1091 {
1092 register FRAME prev;
1093 register FRAME frame1;
1094
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)
1098 {
1099 prev = get_prev_frame (frame);
1100 if (prev == 0)
1101 break;
1102 (*level_offset_ptr)--;
1103 frame = prev;
1104 }
1105 /* Going down is just as simple. */
1106 if (*level_offset_ptr < 0)
1107 {
1108 while (*level_offset_ptr < 0) {
1109 frame1 = get_next_frame (frame);
1110 if (!frame1)
1111 break;
1112 frame = frame1;
1113 (*level_offset_ptr)++;
1114 }
1115 }
1116 return frame;
1117 }
1118
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. */
1124
1125 /* ARGSUSED */
1126 static void
1127 select_frame_command (level_exp, from_tty)
1128 char *level_exp;
1129 int from_tty;
1130 {
1131 register FRAME frame, frame1;
1132 unsigned int level = 0;
1133
1134 if (!target_has_stack)
1135 error ("No stack.");
1136
1137 frame = parse_frame_specification (level_exp);
1138
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. */
1141 frame1 = 0;
1142 if (get_current_frame()) {
1143 for (frame1 = get_prev_frame (0);
1144 frame1 && frame1 != frame;
1145 frame1 = get_prev_frame (frame1))
1146 level++;
1147 }
1148
1149 if (!frame1)
1150 level = 0;
1151
1152 select_frame (frame, level);
1153 }
1154
1155 /* The "frame" command. With no arg, print selected frame briefly.
1156 With arg, behaves like select_frame and then prints the selected
1157 frame. */
1158
1159 static void
1160 frame_command (level_exp, from_tty)
1161 char *level_exp;
1162 int from_tty;
1163 {
1164 select_frame_command (level_exp, from_tty);
1165 print_stack_frame (selected_frame, selected_frame_level, 1);
1166 }
1167
1168 /* Select the frame up one or COUNT stack levels
1169 from the previously selected frame, and print it briefly. */
1170
1171 /* ARGSUSED */
1172 static void
1173 up_silently_command (count_exp, from_tty)
1174 char *count_exp;
1175 int from_tty;
1176 {
1177 register FRAME frame;
1178 int count = 1, count1;
1179 if (count_exp)
1180 count = parse_and_eval_address (count_exp);
1181 count1 = count;
1182
1183 if (target_has_stack == 0 || selected_frame == 0)
1184 error ("No stack.");
1185
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);
1190 }
1191
1192 static void
1193 up_command (count_exp, from_tty)
1194 char *count_exp;
1195 int from_tty;
1196 {
1197 up_silently_command (count_exp, from_tty);
1198 print_stack_frame (selected_frame, selected_frame_level, 1);
1199 }
1200
1201 /* Select the frame down one or COUNT stack levels
1202 from the previously selected frame, and print it briefly. */
1203
1204 /* ARGSUSED */
1205 static void
1206 down_silently_command (count_exp, from_tty)
1207 char *count_exp;
1208 int from_tty;
1209 {
1210 register FRAME frame;
1211 int count = -1, count1;
1212 if (count_exp)
1213 count = - parse_and_eval_address (count_exp);
1214 count1 = count;
1215
1216 if (target_has_stack == 0 || selected_frame == 0)
1217 error ("No stack.");
1218
1219 frame = find_relative_frame (selected_frame, &count1);
1220 if (count1 != 0 && count_exp == 0)
1221 {
1222
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. */
1227
1228 error ("Bottom (i.e., innermost) frame selected; you cannot go down.");
1229 }
1230
1231 select_frame (frame, selected_frame_level + count - count1);
1232 }
1233
1234
1235 static void
1236 down_command (count_exp, from_tty)
1237 char *count_exp;
1238 int from_tty;
1239 {
1240 down_silently_command (count_exp, from_tty);
1241 print_stack_frame (selected_frame, selected_frame_level, 1);
1242 }
1243 \f
1244 static void
1245 return_command (retval_exp, from_tty)
1246 char *retval_exp;
1247 int from_tty;
1248 {
1249 struct symbol *thisfun;
1250 FRAME_ADDR selected_frame_addr;
1251 CORE_ADDR selected_frame_pc;
1252 FRAME frame;
1253 value return_value = NULL;
1254
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;
1260
1261 /* Compute the return value (if any -- possibly getting errors here). */
1262
1263 if (retval_exp)
1264 {
1265 return_value = parse_and_eval (retval_exp);
1266
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);
1271 }
1272
1273 /* If interactive, require confirmation. */
1274
1275 if (from_tty)
1276 {
1277 if (thisfun != 0)
1278 {
1279 if (!query ("Make %s return now? ", SYMBOL_SOURCE_NAME (thisfun)))
1280 {
1281 error ("Not confirmed.");
1282 /* NOTREACHED */
1283 }
1284 }
1285 else
1286 if (!query ("Make selected stack frame return now? "))
1287 error ("Not confirmed.");
1288 }
1289
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. */
1294
1295 while ( selected_frame_addr != FRAME_FP (frame = get_current_frame())
1296 || selected_frame_pc != (get_frame_info (frame))->pc )
1297 POP_FRAME;
1298
1299 /* Then pop that frame. */
1300
1301 POP_FRAME;
1302
1303 /* Compute the return value (if any) and store in the place
1304 for return values. */
1305
1306 if (retval_exp)
1307 set_return_value (return_value);
1308
1309 /* If interactive, print the frame that is now current. */
1310
1311 if (from_tty)
1312 frame_command ("0", 1);
1313 }
1314
1315 /* Gets the language of the current frame. */
1316 enum language
1317 get_frame_language()
1318 {
1319 register struct symtab *s;
1320 FRAME fr;
1321 enum language flang; /* The language of the current frame */
1322
1323 fr = get_frame_info(selected_frame);
1324 if(fr)
1325 {
1326 s = find_pc_symtab(fr->pc);
1327 if(s)
1328 flang = s->language;
1329 else
1330 flang = language_unknown;
1331 }
1332 else
1333 flang = language_unknown;
1334
1335 return flang;
1336 }
1337 \f
1338 void
1339 _initialize_stack ()
1340 {
1341 #if 0
1342 backtrace_limit = 30;
1343 #endif
1344
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.");
1350
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.");
1357
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.");
1366
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.");
1374
1375 add_com_alias ("f", "frame", class_stack, 1);
1376
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");
1381
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.");
1399
1400 #if 0
1401 add_cmd ("backtrace-limit", class_stack, set_backtrace_limit_command,
1402 "Specify maximum number of frames for \"backtrace\" to print by default.",
1403 &setlist);
1404 add_info ("backtrace-limit", backtrace_limit_info,
1405 "The maximum number of frames for \"backtrace\" to print by default.");
1406 #endif
1407 }
This page took 0.058562 seconds and 4 git commands to generate.