OSDN Git Service

* frame.h (selected_frame_level): Document as deprecated.
[pf3gnuchains/pf3gnuchains3x.git] / gdb / stack.c
1 /* Print and select stack frames for GDB, the GNU debugger.
2
3    Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
4    1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software
5    Foundation, Inc.
6
7    This file is part of GDB.
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 2 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program; if not, write to the Free Software
21    Foundation, Inc., 59 Temple Place - Suite 330,
22    Boston, MA 02111-1307, USA.  */
23
24 #include <ctype.h>
25 #include "defs.h"
26 #include "gdb_string.h"
27 #include "value.h"
28 #include "symtab.h"
29 #include "gdbtypes.h"
30 #include "expression.h"
31 #include "language.h"
32 #include "frame.h"
33 #include "gdbcmd.h"
34 #include "gdbcore.h"
35 #include "target.h"
36 #include "breakpoint.h"
37 #include "demangle.h"
38 #include "inferior.h"
39 #include "annotate.h"
40 #include "ui-out.h"
41
42 /* Prototypes for exported functions. */
43
44 void args_info (char *, int);
45
46 void locals_info (char *, int);
47
48 void (*selected_frame_level_changed_hook) (int);
49
50 void _initialize_stack (void);
51
52 /* Prototypes for local functions. */
53
54 static void return_command (char *, int);
55
56 static void down_command (char *, int);
57
58 static void down_silently_base (char *);
59
60 static void down_silently_command (char *, int);
61
62 static void up_command (char *, int);
63
64 static void up_silently_base (char *);
65
66 static void up_silently_command (char *, int);
67
68 void frame_command (char *, int);
69
70 static void current_frame_command (char *, int);
71
72 static void select_frame_command (char *, int);
73
74 static void print_frame_arg_vars (struct frame_info *, struct ui_file *);
75
76 static void catch_info (char *, int);
77
78 static void args_plus_locals_info (char *, int);
79
80 static void print_frame_label_vars (struct frame_info *, int,
81                                     struct ui_file *);
82
83 static void print_frame_local_vars (struct frame_info *, int,
84                                     struct ui_file *);
85
86 static int print_block_frame_labels (struct block *, int *,
87                                      struct ui_file *);
88
89 static int print_block_frame_locals (struct block *,
90                                      struct frame_info *,
91                                      int,
92                                      struct ui_file *);
93
94 static void print_frame (struct frame_info *fi, 
95                          int level, 
96                          int source, 
97                          int args, 
98                          struct symtab_and_line sal);
99
100 static void print_frame_info_base (struct frame_info *, int, int, int);
101
102 static void print_stack_frame_base (struct frame_info *, int, int);
103
104 static void backtrace_command (char *, int);
105
106 struct frame_info *parse_frame_specification (char *);
107
108 static void frame_info (char *, int);
109
110 extern int addressprint;        /* Print addresses, or stay symbolic only? */
111 extern int lines_to_list;       /* # of lines "list" command shows by default */
112
113 /* The "selected" stack frame is used by default for local and arg access.
114    May be zero, for no selected frame.  */
115
116 struct frame_info *selected_frame;
117
118 /* Level of the selected frame:
119    0 for innermost, 1 for its caller, ...
120    or -1 for frame specified by address with no defined level.  */
121
122 /* FIXME: cagney/2002-04-21: The variable `selected_frame_level' is
123    deprecated.  It will dissapear `real soon now'.  */
124
125 int selected_frame_level; /* DEPRECATED */
126
127 /* Level of the selected frame: 0 for innermost, 1 for its caller, ...
128    or -1 for NULL frame.  */
129
130 int
131 frame_relative_level (struct frame_info *fi)
132 {
133   if (fi == NULL)
134     return -1;
135   else
136     return fi->level;
137 }
138
139 /* Zero means do things normally; we are interacting directly with the
140    user.  One means print the full filename and linenumber when a
141    frame is printed, and do so in a format emacs18/emacs19.22 can
142    parse.  Two means print similar annotations, but in many more
143    cases and in a slightly different syntax.  */
144
145 int annotation_level = 0;
146 \f
147
148 struct print_stack_frame_args
149   {
150     struct frame_info *fi;
151     int level;
152     int source;
153     int args;
154   };
155
156 static int print_stack_frame_base_stub (char *);
157
158 /* Show and print the frame arguments.
159    Pass the args the way catch_errors wants them.  */
160 static int show_and_print_stack_frame_stub (void *args);
161 static int
162 show_and_print_stack_frame_stub (void *args)
163 {
164   struct print_stack_frame_args *p = (struct print_stack_frame_args *) args;
165
166   print_frame_info (p->fi, p->level, p->source, p->args);
167
168   return 0;
169 }
170
171 /* Show or print the frame arguments.
172    Pass the args the way catch_errors wants them.  */
173 static int print_stack_frame_stub (void *args);
174 static int
175 print_stack_frame_stub (void *args)
176 {
177   struct print_stack_frame_args *p = (struct print_stack_frame_args *) args;
178
179   print_frame_info_base (p->fi, p->level, p->source, p->args);
180   return 0;
181 }
182
183 /* Print a stack frame briefly.  FRAME_INFI should be the frame info
184    and LEVEL should be its level in the stack (or -1 for level not
185    defined). */
186
187 /* Pass the args the way catch_errors wants them.  */
188 static int
189 print_stack_frame_base_stub (char *args)
190 {
191   struct print_stack_frame_args *p = (struct print_stack_frame_args *) args;
192
193   print_frame_info_base (p->fi, p->level, p->source, p->args);
194   return 0;
195 }
196
197 /* print the frame arguments to the terminal.  
198    Pass the args the way catch_errors wants them.  */
199 static int print_only_stack_frame_stub (void *);
200 static int
201 print_only_stack_frame_stub (void *args)
202 {
203   struct print_stack_frame_args *p = (struct print_stack_frame_args *) args;
204
205   print_frame_info_base (p->fi, p->level, p->source, p->args);
206   return 0;
207 }
208
209 /* Print a stack frame briefly.  FRAME_INFI should be the frame info
210    and LEVEL should be its level in the stack (or -1 for level not defined).
211    This prints the level, the function executing, the arguments,
212    and the file name and line number.
213    If the pc is not at the beginning of the source line,
214    the actual pc is printed at the beginning.
215
216    If SOURCE is 1, print the source line as well.
217    If SOURCE is -1, print ONLY the source line.  */
218
219 static void
220 print_stack_frame_base (struct frame_info *fi, int level, int source)
221 {
222   struct print_stack_frame_args args;
223
224   args.fi = fi;
225   args.level = level;
226   args.source = source;
227   args.args = 1;
228
229   catch_errors (print_stack_frame_stub, &args, "", RETURN_MASK_ALL);
230 }
231
232 /* Show and print a stack frame briefly.  FRAME_INFI should be the frame info
233    and LEVEL should be its level in the stack (or -1 for level not defined).
234    This prints the level, the function executing, the arguments,
235    and the file name and line number.
236    If the pc is not at the beginning of the source line,
237    the actual pc is printed at the beginning.
238
239    If SOURCE is 1, print the source line as well.
240    If SOURCE is -1, print ONLY the source line.  */
241
242 void
243 show_and_print_stack_frame (struct frame_info *fi, int level, int source)
244 {
245   struct print_stack_frame_args args;
246
247   args.fi = fi;
248   args.level = level;
249   args.source = source;
250   args.args = 1;
251
252   catch_errors (show_and_print_stack_frame_stub, &args, "", RETURN_MASK_ALL);
253 }
254
255
256 /* Show or print a stack frame briefly.  FRAME_INFI should be the frame info
257    and LEVEL should be its level in the stack (or -1 for level not defined).
258    This prints the level, the function executing, the arguments,
259    and the file name and line number.
260    If the pc is not at the beginning of the source line,
261    the actual pc is printed at the beginning.
262
263    If SOURCE is 1, print the source line as well.
264    If SOURCE is -1, print ONLY the source line.  */
265
266 void
267 print_stack_frame (struct frame_info *fi, int level, int source)
268 {
269   struct print_stack_frame_args args;
270
271   args.fi = fi;
272   args.level = level;
273   args.source = source;
274   args.args = 1;
275
276   catch_errors (print_stack_frame_stub, (char *) &args, "", RETURN_MASK_ALL);
277 }
278
279 /* Print a stack frame briefly.  FRAME_INFI should be the frame info
280    and LEVEL should be its level in the stack (or -1 for level not defined).
281    This prints the level, the function executing, the arguments,
282    and the file name and line number.
283    If the pc is not at the beginning of the source line,
284    the actual pc is printed at the beginning.
285
286    If SOURCE is 1, print the source line as well.
287    If SOURCE is -1, print ONLY the source line.  */
288
289 void
290 print_only_stack_frame (struct frame_info *fi, int level, int source)
291 {
292   struct print_stack_frame_args args;
293
294   args.fi = fi;
295   args.level = level;
296   args.source = source;
297   args.args = 1;
298
299   catch_errors (print_only_stack_frame_stub, &args, "", RETURN_MASK_ALL);
300 }
301
302 struct print_args_args
303 {
304   struct symbol *func;
305   struct frame_info *fi;
306   struct ui_file *stream;
307 };
308
309 static int print_args_stub (PTR);
310
311 /* Pass the args the way catch_errors wants them.  */
312
313 static int
314 print_args_stub (PTR args)
315 {
316   int numargs;
317   struct print_args_args *p = (struct print_args_args *) args;
318
319   numargs = FRAME_NUM_ARGS (p->fi);
320   print_frame_args (p->func, p->fi, numargs, p->stream);
321   return 0;
322 }
323
324 /* Print information about a frame for frame "fi" at level "level".
325    Used in "where" output, also used to emit breakpoint or step
326    messages.  
327    LEVEL is the level of the frame, or -1 if it is the
328    innermost frame but we don't want to print the level.  
329    The meaning of the SOURCE argument is: 
330    SRC_LINE: Print only source line
331    LOCATION: Print only location 
332    LOC_AND_SRC: Print location and source line.  */
333
334 static void
335 print_frame_info_base (struct frame_info *fi, int level, int source, int args)
336 {
337   struct symtab_and_line sal;
338   int source_print;
339   int location_print;
340
341 #if 0
342   char buf[MAX_REGISTER_RAW_SIZE];
343   CORE_ADDR sp;
344
345   /* On the 68k, this spends too much time in m68k_find_saved_regs.  */
346
347   /* Get the value of SP_REGNUM relative to the frame.  */
348   get_saved_register (buf, (int *) NULL, (CORE_ADDR *) NULL,
349                     FRAME_INFO_ID (fi), SP_REGNUM, (enum lval_type *) NULL);
350   sp = extract_address (buf, REGISTER_RAW_SIZE (SP_REGNUM));
351
352   /* This is not a perfect test, because if a function alloca's some
353      memory, puts some code there, and then jumps into it, then the test
354      will succeed even though there is no call dummy.  Probably best is
355      to check for a bp_call_dummy breakpoint.  */
356   if (PC_IN_CALL_DUMMY (fi->pc, sp, fi->frame))
357 #else
358   if (frame_in_dummy (fi))
359 #endif
360     {
361       annotate_frame_begin (level == -1 ? 0 : level, fi->pc);
362
363       /* Do this regardless of SOURCE because we don't have any source
364          to list for this frame.  */
365       if (level >= 0)
366         printf_filtered ("#%-2d ", level);
367       annotate_function_call ();
368       printf_filtered ("<function called from gdb>\n");
369       annotate_frame_end ();
370       return;
371     }
372   if (fi->signal_handler_caller)
373     {
374       annotate_frame_begin (level == -1 ? 0 : level, fi->pc);
375
376       /* Do this regardless of SOURCE because we don't have any source
377          to list for this frame.  */
378       if (level >= 0)
379         printf_filtered ("#%-2d ", level);
380       annotate_signal_handler_caller ();
381       printf_filtered ("<signal handler called>\n");
382       annotate_frame_end ();
383       return;
384     }
385
386   /* If fi is not the innermost frame, that normally means that fi->pc
387      points to *after* the call instruction, and we want to get the line
388      containing the call, never the next line.  But if the next frame is
389      a signal_handler_caller or a dummy frame, then the next frame was
390      not entered as the result of a call, and we want to get the line
391      containing fi->pc.  */
392   sal =
393     find_pc_line (fi->pc,
394                   fi->next != NULL
395                   && !fi->next->signal_handler_caller
396                   && !frame_in_dummy (fi->next));
397
398   location_print = (source == LOCATION 
399                     || source == LOC_AND_ADDRESS
400                     || source == SRC_AND_LOC);
401
402   if (location_print || !sal.symtab)
403     print_frame (fi, level, source, args, sal);
404
405   source_print = (source == SRC_LINE || source == SRC_AND_LOC);
406
407   if (source_print && sal.symtab)
408     {
409       int done = 0;
410       int mid_statement = (source == SRC_LINE) && (fi->pc != sal.pc);
411
412       if (annotation_level)
413         done = identify_source_line (sal.symtab, sal.line, mid_statement,
414                                      fi->pc);
415       if (!done)
416         {
417           if (print_frame_info_listing_hook)
418             {
419               print_frame_info_listing_hook (sal.symtab, sal.line, sal.line + 1, 0);
420               current_source_symtab = sal.symtab;
421             }
422           else
423             {
424               /* We used to do this earlier, but that is clearly
425                  wrong. This function is used by many different
426                  parts of gdb, including normal_stop in infrun.c,
427                  which uses this to print out the current PC
428                  when we stepi/nexti into the middle of a source
429                  line. Only the command line really wants this
430                  behavior. Other UIs probably would like the
431                  ability to decide for themselves if it is desired. */
432               if (addressprint && mid_statement)
433                 {
434                   ui_out_field_core_addr (uiout, "addr", fi->pc);
435                   ui_out_text (uiout, "\t");
436                 }
437
438               print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
439             }
440         }
441       current_source_line = max (sal.line - lines_to_list / 2, 1);
442     }
443
444   if (source != 0)
445     set_default_breakpoint (1, fi->pc, sal.symtab, sal.line);
446
447   annotate_frame_end ();
448
449   gdb_flush (gdb_stdout);
450 }
451
452 static void
453 print_frame (struct frame_info *fi, 
454              int level, 
455              int source, 
456              int args, 
457              struct symtab_and_line sal)
458 {
459   struct symbol *func;
460   register char *funname = 0;
461   enum language funlang = language_unknown;
462   struct ui_stream *stb;
463   struct cleanup *old_chain;
464   struct cleanup *list_chain;
465
466   stb = ui_out_stream_new (uiout);
467   old_chain = make_cleanup_ui_out_stream_delete (stb);
468
469   func = find_pc_function (fi->pc);
470   if (func)
471     {
472       /* In certain pathological cases, the symtabs give the wrong
473          function (when we are in the first function in a file which
474          is compiled without debugging symbols, the previous function
475          is compiled with debugging symbols, and the "foo.o" symbol
476          that is supposed to tell us where the file with debugging symbols
477          ends has been truncated by ar because it is longer than 15
478          characters).  This also occurs if the user uses asm() to create
479          a function but not stabs for it (in a file compiled -g).
480
481          So look in the minimal symbol tables as well, and if it comes
482          up with a larger address for the function use that instead.
483          I don't think this can ever cause any problems; there shouldn't
484          be any minimal symbols in the middle of a function; if this is
485          ever changed many parts of GDB will need to be changed (and we'll
486          create a find_pc_minimal_function or some such).  */
487
488       struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
489       if (msymbol != NULL
490           && (SYMBOL_VALUE_ADDRESS (msymbol)
491               > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
492         {
493 #if 0
494           /* There is no particular reason to think the line number
495              information is wrong.  Someone might have just put in
496              a label with asm() but left the line numbers alone.  */
497           /* In this case we have no way of knowing the source file
498              and line number, so don't print them.  */
499           sal.symtab = 0;
500 #endif
501           /* We also don't know anything about the function besides
502              its address and name.  */
503           func = 0;
504           funname = SYMBOL_NAME (msymbol);
505           funlang = SYMBOL_LANGUAGE (msymbol);
506         }
507       else
508         {
509           /* I'd like to use SYMBOL_SOURCE_NAME() here, to display the
510              demangled name that we already have stored in the symbol
511              table, but we stored a version with DMGL_PARAMS turned
512              on, and here we don't want to display parameters. So call
513              the demangler again, with DMGL_ANSI only. (Yes, I know
514              that printf_symbol_filtered() will again try to demangle
515              the name on the fly, but the issue is that if
516              cplus_demangle() fails here, it'll fail there too. So we
517              want to catch the failure ("demangled==NULL" case below)
518              here, while we still have our hands on the function
519              symbol.) */
520           char *demangled;
521           funname = SYMBOL_NAME (func);
522           funlang = SYMBOL_LANGUAGE (func);
523           if (funlang == language_cplus)
524             {
525               demangled = cplus_demangle (funname, DMGL_ANSI);
526               if (demangled == NULL)
527                 /* If the demangler fails, try the demangled name from
528                    the symbol table. This'll have parameters, but
529                    that's preferable to diplaying a mangled name. */
530                 funname = SYMBOL_SOURCE_NAME (func);
531             }
532         }
533     }
534   else
535     {
536       struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
537       if (msymbol != NULL)
538         {
539           funname = SYMBOL_NAME (msymbol);
540           funlang = SYMBOL_LANGUAGE (msymbol);
541         }
542     }
543
544   annotate_frame_begin (level == -1 ? 0 : level, fi->pc);
545
546   list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
547
548   if (level >= 0)
549     {
550       ui_out_text (uiout, "#");
551       ui_out_field_fmt (uiout, "level", "%-2d", level);
552       ui_out_spaces (uiout, 1);
553     }
554   if (addressprint)
555     if (fi->pc != sal.pc || !sal.symtab || source == LOC_AND_ADDRESS)
556       {
557         annotate_frame_address ();
558         ui_out_field_core_addr (uiout, "addr", fi->pc);
559         annotate_frame_address_end ();
560         ui_out_text (uiout, " in ");
561       }
562   annotate_frame_function_name ();
563   fprintf_symbol_filtered (stb->stream, funname ? funname : "??", funlang,
564                            DMGL_ANSI);
565   ui_out_field_stream (uiout, "func", stb);
566   ui_out_wrap_hint (uiout, "   ");
567   annotate_frame_args ();
568       
569   ui_out_text (uiout, " (");
570   if (args)
571     {
572       struct print_args_args args;
573       struct cleanup *args_list_chain;
574       args.fi = fi;
575       args.func = func;
576       args.stream = gdb_stdout;
577       args_list_chain = make_cleanup_ui_out_list_begin_end (uiout, "args");
578       catch_errors (print_args_stub, &args, "", RETURN_MASK_ALL);
579       /* FIXME: args must be a list. If one argument is a string it will
580                  have " that will not be properly escaped.  */
581       /* Invoke ui_out_tuple_end.  */
582       do_cleanups (args_list_chain);
583       QUIT;
584     }
585   ui_out_text (uiout, ")");
586   if (sal.symtab && sal.symtab->filename)
587     {
588       annotate_frame_source_begin ();
589       ui_out_wrap_hint (uiout, "   ");
590       ui_out_text (uiout, " at ");
591       annotate_frame_source_file ();
592       ui_out_field_string (uiout, "file", sal.symtab->filename);
593       annotate_frame_source_file_end ();
594       ui_out_text (uiout, ":");
595       annotate_frame_source_line ();
596       ui_out_field_int (uiout, "line", sal.line);
597       annotate_frame_source_end ();
598     }
599
600 #ifdef PC_SOLIB
601   if (!funname || (!sal.symtab || !sal.symtab->filename))
602     {
603       char *lib = PC_SOLIB (fi->pc);
604       if (lib)
605         {
606           annotate_frame_where ();
607           ui_out_wrap_hint (uiout, "  ");
608           ui_out_text (uiout, " from ");
609           ui_out_field_string (uiout, "from", lib);
610         }
611     }
612 #endif /* PC_SOLIB */
613
614   /* do_cleanups will call ui_out_tuple_end() for us.  */
615   do_cleanups (list_chain);
616   ui_out_text (uiout, "\n");
617   do_cleanups (old_chain);
618 }
619 \f
620
621 /* Show or print the frame info.  If this is the tui, it will be shown in 
622    the source display */
623 void
624 print_frame_info (struct frame_info *fi, register int level, int source,
625                   int args)
626 {
627   print_frame_info_base (fi, level, source, args);
628 }
629
630 /* Show the frame info.  If this is the tui, it will be shown in 
631    the source display otherwise, nothing is done */
632 void
633 show_stack_frame (struct frame_info *fi)
634 {
635 }
636 \f
637
638 /* Read a frame specification in whatever the appropriate format is.
639    Call error() if the specification is in any way invalid (i.e.
640    this function never returns NULL).  */
641
642 struct frame_info *
643 parse_frame_specification (char *frame_exp)
644 {
645   int numargs = 0;
646 #define MAXARGS 4
647   CORE_ADDR args[MAXARGS];
648   int level;
649
650   if (frame_exp)
651     {
652       char *addr_string, *p;
653       struct cleanup *tmp_cleanup;
654
655       while (*frame_exp == ' ')
656         frame_exp++;
657
658       while (*frame_exp)
659         {
660           if (numargs > MAXARGS)
661             error ("Too many args in frame specification");
662           /* Parse an argument.  */
663           for (p = frame_exp; *p && *p != ' '; p++)
664             ;
665           addr_string = savestring (frame_exp, p - frame_exp);
666
667           {
668             struct value *vp;
669
670             tmp_cleanup = make_cleanup (xfree, addr_string);
671
672             /* NOTE: we call parse_and_eval and then both
673                value_as_long and value_as_address rather than calling
674                parse_and_eval_long and parse_and_eval_address because
675                of the issue of potential side effects from evaluating
676                the expression.  */
677             vp = parse_and_eval (addr_string);
678             if (numargs == 0)
679               level = value_as_long (vp);
680
681             args[numargs++] = value_as_address (vp);
682             do_cleanups (tmp_cleanup);
683           }
684
685           /* Skip spaces, move to possible next arg.  */
686           while (*p == ' ')
687             p++;
688           frame_exp = p;
689         }
690     }
691
692   switch (numargs)
693     {
694     case 0:
695       if (selected_frame == NULL)
696         error ("No selected frame.");
697       return selected_frame;
698       /* NOTREACHED */
699     case 1:
700       {
701         struct frame_info *fid =
702         find_relative_frame (get_current_frame (), &level);
703         struct frame_info *tfid;
704
705         if (level == 0)
706           /* find_relative_frame was successful */
707           return fid;
708
709         /* If SETUP_ARBITRARY_FRAME is defined, then frame specifications
710            take at least 2 addresses.  It is important to detect this case
711            here so that "frame 100" does not give a confusing error message
712            like "frame specification requires two addresses".  This of course
713            does not solve the "frame 100" problem for machines on which
714            a frame specification can be made with one address.  To solve
715            that, we need a new syntax for a specifying a frame by address.
716            I think the cleanest syntax is $frame(0x45) ($frame(0x23,0x45) for
717            two args, etc.), but people might think that is too much typing,
718            so I guess *0x23,0x45 would be a possible alternative (commas
719            really should be used instead of spaces to delimit; using spaces
720            normally works in an expression).  */
721 #ifdef SETUP_ARBITRARY_FRAME
722         error ("No frame %s", paddr_d (args[0]));
723 #endif
724
725         /* If (s)he specifies the frame with an address, he deserves what
726            (s)he gets.  Still, give the highest one that matches.  */
727
728         for (fid = get_current_frame ();
729              fid && fid->frame != args[0];
730              fid = get_prev_frame (fid))
731           ;
732
733         if (fid)
734           while ((tfid = get_prev_frame (fid)) &&
735                  (tfid->frame == args[0]))
736             fid = tfid;
737
738         /* We couldn't identify the frame as an existing frame, but
739            perhaps we can create one with a single argument.  */
740       }
741
742     default:
743 #ifdef SETUP_ARBITRARY_FRAME
744       return SETUP_ARBITRARY_FRAME (numargs, args);
745 #else
746       /* Usual case.  Do it here rather than have everyone supply
747          a SETUP_ARBITRARY_FRAME that does this.  */
748       if (numargs == 1)
749         return create_new_frame (args[0], 0);
750       error ("Too many args in frame specification");
751 #endif
752       /* NOTREACHED */
753     }
754   /* NOTREACHED */
755 }
756
757 /* FRAME_ARGS_ADDRESS_CORRECT is just like FRAME_ARGS_ADDRESS except
758    that if it is unsure about the answer, it returns 0
759    instead of guessing (this happens on the VAX and i960, for example).
760
761    On most machines, we never have to guess about the args address,
762    so FRAME_ARGS_ADDRESS{,_CORRECT} are the same.  */
763 #if !defined (FRAME_ARGS_ADDRESS_CORRECT)
764 #define FRAME_ARGS_ADDRESS_CORRECT FRAME_ARGS_ADDRESS
765 #endif
766
767 /* Print verbosely the selected frame or the frame at address ADDR.
768    This means absolutely all information in the frame is printed.  */
769
770 static void
771 frame_info (char *addr_exp, int from_tty)
772 {
773   struct frame_info *fi;
774   struct symtab_and_line sal;
775   struct symbol *func;
776   struct symtab *s;
777   struct frame_info *calling_frame_info;
778   int i, count, numregs;
779   char *funname = 0;
780   enum language funlang = language_unknown;
781
782   if (!target_has_stack)
783     error ("No stack.");
784
785   fi = parse_frame_specification (addr_exp);
786   if (fi == NULL)
787     error ("Invalid frame specified.");
788
789   sal = find_pc_line (fi->pc,
790                       fi->next != NULL
791                       && !fi->next->signal_handler_caller
792                       && !frame_in_dummy (fi->next));
793   func = get_frame_function (fi);
794   s = find_pc_symtab (fi->pc);
795   if (func)
796     {
797       /* I'd like to use SYMBOL_SOURCE_NAME() here, to display
798        * the demangled name that we already have stored in
799        * the symbol table, but we stored a version with
800        * DMGL_PARAMS turned on, and here we don't want
801        * to display parameters. So call the demangler again,
802        * with DMGL_ANSI only. RT
803        * (Yes, I know that printf_symbol_filtered() will
804        * again try to demangle the name on the fly, but
805        * the issue is that if cplus_demangle() fails here,
806        * it'll fail there too. So we want to catch the failure
807        * ("demangled==NULL" case below) here, while we still
808        * have our hands on the function symbol.)
809        */
810       char *demangled;
811       funname = SYMBOL_NAME (func);
812       funlang = SYMBOL_LANGUAGE (func);
813       if (funlang == language_cplus)
814         {
815           demangled = cplus_demangle (funname, DMGL_ANSI);
816           /* If the demangler fails, try the demangled name
817            * from the symbol table. This'll have parameters,
818            * but that's preferable to diplaying a mangled name.
819            */
820           if (demangled == NULL)
821             funname = SYMBOL_SOURCE_NAME (func);
822         }
823     }
824   else
825     {
826       register struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
827       if (msymbol != NULL)
828         {
829           funname = SYMBOL_NAME (msymbol);
830           funlang = SYMBOL_LANGUAGE (msymbol);
831         }
832     }
833   calling_frame_info = get_prev_frame (fi);
834
835   if (!addr_exp && frame_relative_level (selected_frame) >= 0)
836     {
837       printf_filtered ("Stack level %d, frame at ",
838                        frame_relative_level (selected_frame));
839       print_address_numeric (fi->frame, 1, gdb_stdout);
840       printf_filtered (":\n");
841     }
842   else
843     {
844       printf_filtered ("Stack frame at ");
845       print_address_numeric (fi->frame, 1, gdb_stdout);
846       printf_filtered (":\n");
847     }
848   printf_filtered (" %s = ", REGISTER_NAME (PC_REGNUM));
849   print_address_numeric (fi->pc, 1, gdb_stdout);
850
851   wrap_here ("   ");
852   if (funname)
853     {
854       printf_filtered (" in ");
855       fprintf_symbol_filtered (gdb_stdout, funname, funlang,
856                                DMGL_ANSI | DMGL_PARAMS);
857     }
858   wrap_here ("   ");
859   if (sal.symtab)
860     printf_filtered (" (%s:%d)", sal.symtab->filename, sal.line);
861   puts_filtered ("; ");
862   wrap_here ("    ");
863   printf_filtered ("saved %s ", REGISTER_NAME (PC_REGNUM));
864   print_address_numeric (FRAME_SAVED_PC (fi), 1, gdb_stdout);
865   printf_filtered ("\n");
866
867   {
868     int frameless;
869     frameless = FRAMELESS_FUNCTION_INVOCATION (fi);
870     if (frameless)
871       printf_filtered (" (FRAMELESS),");
872   }
873
874   if (calling_frame_info)
875     {
876       printf_filtered (" called by frame at ");
877       print_address_numeric (calling_frame_info->frame, 1, gdb_stdout);
878     }
879   if (fi->next && calling_frame_info)
880     puts_filtered (",");
881   wrap_here ("   ");
882   if (fi->next)
883     {
884       printf_filtered (" caller of frame at ");
885       print_address_numeric (fi->next->frame, 1, gdb_stdout);
886     }
887   if (fi->next || calling_frame_info)
888     puts_filtered ("\n");
889   if (s)
890     printf_filtered (" source language %s.\n", language_str (s->language));
891
892 #ifdef PRINT_EXTRA_FRAME_INFO
893   PRINT_EXTRA_FRAME_INFO (fi);
894 #endif
895
896   {
897     /* Address of the argument list for this frame, or 0.  */
898     CORE_ADDR arg_list = FRAME_ARGS_ADDRESS_CORRECT (fi);
899     /* Number of args for this frame, or -1 if unknown.  */
900     int numargs;
901
902     if (arg_list == 0)
903       printf_filtered (" Arglist at unknown address.\n");
904     else
905       {
906         printf_filtered (" Arglist at ");
907         print_address_numeric (arg_list, 1, gdb_stdout);
908         printf_filtered (",");
909
910         numargs = FRAME_NUM_ARGS (fi);
911         if (numargs < 0)
912           puts_filtered (" args: ");
913         else if (numargs == 0)
914           puts_filtered (" no args.");
915         else if (numargs == 1)
916           puts_filtered (" 1 arg: ");
917         else
918           printf_filtered (" %d args: ", numargs);
919         print_frame_args (func, fi, numargs, gdb_stdout);
920         puts_filtered ("\n");
921       }
922   }
923   {
924     /* Address of the local variables for this frame, or 0.  */
925     CORE_ADDR arg_list = FRAME_LOCALS_ADDRESS (fi);
926
927     if (arg_list == 0)
928       printf_filtered (" Locals at unknown address,");
929     else
930       {
931         printf_filtered (" Locals at ");
932         print_address_numeric (arg_list, 1, gdb_stdout);
933         printf_filtered (",");
934       }
935   }
936
937   FRAME_INIT_SAVED_REGS (fi);
938   if (fi->saved_regs != NULL)
939     {
940       /* The sp is special; what's returned isn't the save address, but
941          actually the value of the previous frame's sp.  */
942       printf_filtered (" Previous frame's sp is ");
943       print_address_numeric (fi->saved_regs[SP_REGNUM], 1, gdb_stdout);
944       printf_filtered ("\n");
945       count = 0;
946       numregs = NUM_REGS + NUM_PSEUDO_REGS;
947       for (i = 0; i < numregs; i++)
948         if (fi->saved_regs[i] && i != SP_REGNUM)
949           {
950             if (count == 0)
951               puts_filtered (" Saved registers:\n ");
952             else
953               puts_filtered (",");
954             wrap_here (" ");
955             printf_filtered (" %s at ", REGISTER_NAME (i));
956             print_address_numeric (fi->saved_regs[i], 1, gdb_stdout);
957             count++;
958           }
959       if (count)
960         puts_filtered ("\n");
961     }
962   else
963     {
964       /* We could get some information about saved registers by
965          calling get_saved_register on each register.  Which info goes
966          with which frame is necessarily lost, however, and I suspect
967          that the users don't care whether they get the info.  */
968       puts_filtered ("\n");
969     }
970 }
971
972 #if 0
973 /* Set a limit on the number of frames printed by default in a
974    backtrace.  */
975
976 static int backtrace_limit;
977
978 static void
979 set_backtrace_limit_command (char *count_exp, int from_tty)
980 {
981   int count = parse_and_eval_long (count_exp);
982
983   if (count < 0)
984     error ("Negative argument not meaningful as backtrace limit.");
985
986   backtrace_limit = count;
987 }
988
989 static void
990 backtrace_limit_info (char *arg, int from_tty)
991 {
992   if (arg)
993     error ("\"Info backtrace-limit\" takes no arguments.");
994
995   printf_unfiltered ("Backtrace limit: %d.\n", backtrace_limit);
996 }
997 #endif
998
999 /* Print briefly all stack frames or just the innermost COUNT frames.  */
1000
1001 static void backtrace_command_1 (char *count_exp, int show_locals,
1002                                  int from_tty);
1003 static void
1004 backtrace_command_1 (char *count_exp, int show_locals, int from_tty)
1005 {
1006   struct frame_info *fi;
1007   register int count;
1008   register int i;
1009   register struct frame_info *trailing;
1010   register int trailing_level;
1011
1012   if (!target_has_stack)
1013     error ("No stack.");
1014
1015   /* The following code must do two things.  First, it must
1016      set the variable TRAILING to the frame from which we should start
1017      printing.  Second, it must set the variable count to the number
1018      of frames which we should print, or -1 if all of them.  */
1019   trailing = get_current_frame ();
1020
1021   /* The target can be in a state where there is no valid frames
1022      (e.g., just connected). */
1023   if (trailing == NULL)
1024     error ("No stack.");
1025
1026   trailing_level = 0;
1027   if (count_exp)
1028     {
1029       count = parse_and_eval_long (count_exp);
1030       if (count < 0)
1031         {
1032           struct frame_info *current;
1033
1034           count = -count;
1035
1036           current = trailing;
1037           while (current && count--)
1038             {
1039               QUIT;
1040               current = get_prev_frame (current);
1041             }
1042
1043           /* Will stop when CURRENT reaches the top of the stack.  TRAILING
1044              will be COUNT below it.  */
1045           while (current)
1046             {
1047               QUIT;
1048               trailing = get_prev_frame (trailing);
1049               current = get_prev_frame (current);
1050               trailing_level++;
1051             }
1052
1053           count = -1;
1054         }
1055     }
1056   else
1057     count = -1;
1058
1059   if (info_verbose)
1060     {
1061       struct partial_symtab *ps;
1062
1063       /* Read in symbols for all of the frames.  Need to do this in
1064          a separate pass so that "Reading in symbols for xxx" messages
1065          don't screw up the appearance of the backtrace.  Also
1066          if people have strong opinions against reading symbols for
1067          backtrace this may have to be an option.  */
1068       i = count;
1069       for (fi = trailing;
1070            fi != NULL && i--;
1071            fi = get_prev_frame (fi))
1072         {
1073           QUIT;
1074           ps = find_pc_psymtab (fi->pc);
1075           if (ps)
1076             PSYMTAB_TO_SYMTAB (ps);     /* Force syms to come in */
1077         }
1078     }
1079
1080   for (i = 0, fi = trailing;
1081        fi && count--;
1082        i++, fi = get_prev_frame (fi))
1083     {
1084       QUIT;
1085
1086       /* Don't use print_stack_frame; if an error() occurs it probably
1087          means further attempts to backtrace would fail (on the other
1088          hand, perhaps the code does or could be fixed to make sure
1089          the frame->prev field gets set to NULL in that case).  */
1090       print_frame_info_base (fi, trailing_level + i, 0, 1);
1091       if (show_locals)
1092         print_frame_local_vars (fi, 1, gdb_stdout);
1093     }
1094
1095   /* If we've stopped before the end, mention that.  */
1096   if (fi && from_tty)
1097     printf_filtered ("(More stack frames follow...)\n");
1098 }
1099
1100 static void
1101 backtrace_command (char *arg, int from_tty)
1102 {
1103   struct cleanup *old_chain = (struct cleanup *) NULL;
1104   char **argv = (char **) NULL;
1105   int argIndicatingFullTrace = (-1), totArgLen = 0, argc = 0;
1106   char *argPtr = arg;
1107
1108   if (arg != (char *) NULL)
1109     {
1110       int i;
1111
1112       argv = buildargv (arg);
1113       old_chain = make_cleanup_freeargv (argv);
1114       argc = 0;
1115       for (i = 0; (argv[i] != (char *) NULL); i++)
1116         {
1117           unsigned int j;
1118
1119           for (j = 0; (j < strlen (argv[i])); j++)
1120             argv[i][j] = tolower (argv[i][j]);
1121
1122           if (argIndicatingFullTrace < 0 && subset_compare (argv[i], "full"))
1123             argIndicatingFullTrace = argc;
1124           else
1125             {
1126               argc++;
1127               totArgLen += strlen (argv[i]);
1128             }
1129         }
1130       totArgLen += argc;
1131       if (argIndicatingFullTrace >= 0)
1132         {
1133           if (totArgLen > 0)
1134             {
1135               argPtr = (char *) xmalloc (totArgLen + 1);
1136               if (!argPtr)
1137                 nomem (0);
1138               else
1139                 {
1140                   memset (argPtr, 0, totArgLen + 1);
1141                   for (i = 0; (i < (argc + 1)); i++)
1142                     {
1143                       if (i != argIndicatingFullTrace)
1144                         {
1145                           strcat (argPtr, argv[i]);
1146                           strcat (argPtr, " ");
1147                         }
1148                     }
1149                 }
1150             }
1151           else
1152             argPtr = (char *) NULL;
1153         }
1154     }
1155
1156   backtrace_command_1 (argPtr, (argIndicatingFullTrace >= 0), from_tty);
1157
1158   if (argIndicatingFullTrace >= 0 && totArgLen > 0)
1159     xfree (argPtr);
1160
1161   if (old_chain)
1162     do_cleanups (old_chain);
1163 }
1164
1165 static void backtrace_full_command (char *arg, int from_tty);
1166 static void
1167 backtrace_full_command (char *arg, int from_tty)
1168 {
1169   backtrace_command_1 (arg, 1, from_tty);
1170 }
1171 \f
1172
1173 /* Print the local variables of a block B active in FRAME.
1174    Return 1 if any variables were printed; 0 otherwise.  */
1175
1176 static int
1177 print_block_frame_locals (struct block *b, register struct frame_info *fi,
1178                           int num_tabs, register struct ui_file *stream)
1179 {
1180   register int i, j;
1181   register struct symbol *sym;
1182   register int values_printed = 0;
1183
1184   ALL_BLOCK_SYMBOLS (b, i, sym)
1185     {
1186       switch (SYMBOL_CLASS (sym))
1187         {
1188         case LOC_LOCAL:
1189         case LOC_REGISTER:
1190         case LOC_STATIC:
1191         case LOC_BASEREG:
1192           values_printed = 1;
1193           for (j = 0; j < num_tabs; j++)
1194             fputs_filtered ("\t", stream);
1195           fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
1196           fputs_filtered (" = ", stream);
1197           print_variable_value (sym, fi, stream);
1198           fprintf_filtered (stream, "\n");
1199           break;
1200
1201         default:
1202           /* Ignore symbols which are not locals.  */
1203           break;
1204         }
1205     }
1206   return values_printed;
1207 }
1208
1209 /* Same, but print labels.  */
1210
1211 static int
1212 print_block_frame_labels (struct block *b, int *have_default,
1213                           register struct ui_file *stream)
1214 {
1215   register int i;
1216   register struct symbol *sym;
1217   register int values_printed = 0;
1218
1219   ALL_BLOCK_SYMBOLS (b, i, sym)
1220     {
1221       if (STREQ (SYMBOL_NAME (sym), "default"))
1222         {
1223           if (*have_default)
1224             continue;
1225           *have_default = 1;
1226         }
1227       if (SYMBOL_CLASS (sym) == LOC_LABEL)
1228         {
1229           struct symtab_and_line sal;
1230           sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
1231           values_printed = 1;
1232           fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
1233           if (addressprint)
1234             {
1235               fprintf_filtered (stream, " ");
1236               print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), 1, stream);
1237             }
1238           fprintf_filtered (stream, " in file %s, line %d\n",
1239                             sal.symtab->filename, sal.line);
1240         }
1241     }
1242   return values_printed;
1243 }
1244
1245 /* Print on STREAM all the local variables in frame FRAME,
1246    including all the blocks active in that frame
1247    at its current pc.
1248
1249    Returns 1 if the job was done,
1250    or 0 if nothing was printed because we have no info
1251    on the function running in FRAME.  */
1252
1253 static void
1254 print_frame_local_vars (register struct frame_info *fi, register int num_tabs,
1255                         register struct ui_file *stream)
1256 {
1257   register struct block *block = get_frame_block (fi, 0);
1258   register int values_printed = 0;
1259
1260   if (block == 0)
1261     {
1262       fprintf_filtered (stream, "No symbol table info available.\n");
1263       return;
1264     }
1265
1266   while (block != 0)
1267     {
1268       if (print_block_frame_locals (block, fi, num_tabs, stream))
1269         values_printed = 1;
1270       /* After handling the function's top-level block, stop.
1271          Don't continue to its superblock, the block of
1272          per-file symbols.  */
1273       if (BLOCK_FUNCTION (block))
1274         break;
1275       block = BLOCK_SUPERBLOCK (block);
1276     }
1277
1278   if (!values_printed)
1279     {
1280       fprintf_filtered (stream, "No locals.\n");
1281     }
1282 }
1283
1284 /* Same, but print labels.  */
1285
1286 static void
1287 print_frame_label_vars (register struct frame_info *fi, int this_level_only,
1288                         register struct ui_file *stream)
1289 {
1290   register struct blockvector *bl;
1291   register struct block *block = get_frame_block (fi, 0);
1292   register int values_printed = 0;
1293   int index, have_default = 0;
1294   char *blocks_printed;
1295   CORE_ADDR pc = fi->pc;
1296
1297   if (block == 0)
1298     {
1299       fprintf_filtered (stream, "No symbol table info available.\n");
1300       return;
1301     }
1302
1303   bl = blockvector_for_pc (BLOCK_END (block) - 4, &index);
1304   blocks_printed = (char *) alloca (BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1305   memset (blocks_printed, 0, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1306
1307   while (block != 0)
1308     {
1309       CORE_ADDR end = BLOCK_END (block) - 4;
1310       int last_index;
1311
1312       if (bl != blockvector_for_pc (end, &index))
1313         error ("blockvector blotch");
1314       if (BLOCKVECTOR_BLOCK (bl, index) != block)
1315         error ("blockvector botch");
1316       last_index = BLOCKVECTOR_NBLOCKS (bl);
1317       index += 1;
1318
1319       /* Don't print out blocks that have gone by.  */
1320       while (index < last_index
1321              && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < pc)
1322         index++;
1323
1324       while (index < last_index
1325              && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < end)
1326         {
1327           if (blocks_printed[index] == 0)
1328             {
1329               if (print_block_frame_labels (BLOCKVECTOR_BLOCK (bl, index), &have_default, stream))
1330                 values_printed = 1;
1331               blocks_printed[index] = 1;
1332             }
1333           index++;
1334         }
1335       if (have_default)
1336         return;
1337       if (values_printed && this_level_only)
1338         return;
1339
1340       /* After handling the function's top-level block, stop.
1341          Don't continue to its superblock, the block of
1342          per-file symbols.  */
1343       if (BLOCK_FUNCTION (block))
1344         break;
1345       block = BLOCK_SUPERBLOCK (block);
1346     }
1347
1348   if (!values_printed && !this_level_only)
1349     {
1350       fprintf_filtered (stream, "No catches.\n");
1351     }
1352 }
1353
1354 /* ARGSUSED */
1355 void
1356 locals_info (char *args, int from_tty)
1357 {
1358   if (!selected_frame)
1359     error ("No frame selected.");
1360   print_frame_local_vars (selected_frame, 0, gdb_stdout);
1361 }
1362
1363 static void
1364 catch_info (char *ignore, int from_tty)
1365 {
1366   struct symtab_and_line *sal;
1367
1368   /* Check for target support for exception handling */
1369   sal = target_enable_exception_callback (EX_EVENT_CATCH, 1);
1370   if (sal)
1371     {
1372       /* Currently not handling this */
1373       /* Ideally, here we should interact with the C++ runtime
1374          system to find the list of active handlers, etc. */
1375       fprintf_filtered (gdb_stdout, "Info catch not supported with this target/compiler combination.\n");
1376 #if 0
1377       if (!selected_frame)
1378         error ("No frame selected.");
1379 #endif
1380     }
1381   else
1382     {
1383       /* Assume g++ compiled code -- old v 4.16 behaviour */
1384       if (!selected_frame)
1385         error ("No frame selected.");
1386
1387       print_frame_label_vars (selected_frame, 0, gdb_stdout);
1388     }
1389 }
1390
1391 static void
1392 print_frame_arg_vars (register struct frame_info *fi,
1393                       register struct ui_file *stream)
1394 {
1395   struct symbol *func = get_frame_function (fi);
1396   register struct block *b;
1397   register int i;
1398   register struct symbol *sym, *sym2;
1399   register int values_printed = 0;
1400
1401   if (func == 0)
1402     {
1403       fprintf_filtered (stream, "No symbol table info available.\n");
1404       return;
1405     }
1406
1407   b = SYMBOL_BLOCK_VALUE (func);
1408   ALL_BLOCK_SYMBOLS (b, i, sym)
1409     {
1410       switch (SYMBOL_CLASS (sym))
1411         {
1412         case LOC_ARG:
1413         case LOC_LOCAL_ARG:
1414         case LOC_REF_ARG:
1415         case LOC_REGPARM:
1416         case LOC_REGPARM_ADDR:
1417         case LOC_BASEREG_ARG:
1418           values_printed = 1;
1419           fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
1420           fputs_filtered (" = ", stream);
1421
1422           /* We have to look up the symbol because arguments can have
1423              two entries (one a parameter, one a local) and the one we
1424              want is the local, which lookup_symbol will find for us.
1425              This includes gcc1 (not gcc2) on the sparc when passing a
1426              small structure and gcc2 when the argument type is float
1427              and it is passed as a double and converted to float by
1428              the prologue (in the latter case the type of the LOC_ARG
1429              symbol is double and the type of the LOC_LOCAL symbol is
1430              float).  There are also LOC_ARG/LOC_REGISTER pairs which
1431              are not combined in symbol-reading.  */
1432
1433           sym2 = lookup_symbol (SYMBOL_NAME (sym),
1434                    b, VAR_NAMESPACE, (int *) NULL, (struct symtab **) NULL);
1435           print_variable_value (sym2, fi, stream);
1436           fprintf_filtered (stream, "\n");
1437           break;
1438
1439         default:
1440           /* Don't worry about things which aren't arguments.  */
1441           break;
1442         }
1443     }
1444   if (!values_printed)
1445     {
1446       fprintf_filtered (stream, "No arguments.\n");
1447     }
1448 }
1449
1450 void
1451 args_info (char *ignore, int from_tty)
1452 {
1453   if (!selected_frame)
1454     error ("No frame selected.");
1455   print_frame_arg_vars (selected_frame, gdb_stdout);
1456 }
1457
1458
1459 static void
1460 args_plus_locals_info (char *ignore, int from_tty)
1461 {
1462   args_info (ignore, from_tty);
1463   locals_info (ignore, from_tty);
1464 }
1465 \f
1466
1467 /* Select frame FI, and note that its stack level is LEVEL.
1468    LEVEL may be -1 if an actual level number is not known.  */
1469
1470 void
1471 select_frame (struct frame_info *fi, int level)
1472 {
1473   register struct symtab *s;
1474
1475   selected_frame = fi;
1476   /* FIXME: cagney/2002-04-21: The variable `selected_frame_level' is
1477      deprecated.  It will dissapear `real soon now'.  */
1478   selected_frame_level = level; /* DEPRECATED */
1479   /* FIXME: cagney/2002-04-05: It can't be this easy (and looking at
1480      the increasingly complex list of checkes, it wasn't)!  GDB is
1481      dragging around, and constantly updating, the global variable
1482      selected_frame_level.  Surely all that was needed was for the
1483      level to be computed direct from the frame (by counting back to
1484      the inner-most frame) or, as has been done here using a cached
1485      value.  For moment, check that the expected and the actual level
1486      are consistent.  If, after a few weeks, no one reports that this
1487      assertion has failed, the global selected_frame_level and many
1488      many parameters can all be deleted.  */
1489   if (fi == NULL && level == -1)
1490     /* Ok.  The target is clearing the selected frame as part of a
1491        cache flush.  */
1492     ;
1493   else if (fi != NULL && fi->level == level)
1494     /* Ok.  What you would expect.  Level is redundant.  */
1495     ;
1496   else if (fi != NULL && level == -1)
1497     /* Ok.  See breakpoint.c.  The watchpoint code changes the
1498        selected frame to the frame that contains the watchpoint and
1499        then, later changes it back to the old value.  The -1 is used
1500        as a marker so that the watchpoint code can easily detect that
1501        things are not what they should be.  Why the watchpoint code
1502        can't mindlessly save/restore the selected frame I don't know,
1503        hopefully it can be simplified that way.  Hopefully the global
1504        selected_frame can be replaced by a frame parameter, making
1505        still more simplification possible.  */
1506     ;
1507   else
1508     internal_error (__FILE__, __LINE__,
1509                     "Conflicting frame levels fi->level=%d, level=%d",
1510                     (fi ? fi->level : -1),
1511                     level);
1512   if (selected_frame_level_changed_hook)
1513     selected_frame_level_changed_hook (level);
1514
1515   /* Ensure that symbols for this frame are read in.  Also, determine the
1516      source language of this frame, and switch to it if desired.  */
1517   if (fi)
1518     {
1519       s = find_pc_symtab (fi->pc);
1520       if (s
1521           && s->language != current_language->la_language
1522           && s->language != language_unknown
1523           && language_mode == language_mode_auto)
1524         {
1525           set_language (s->language);
1526         }
1527     }
1528 }
1529 \f
1530
1531 /* Select frame FI, noting that its stack level is LEVEL.  Also print
1532    the stack frame and show the source if this is the tui version.  */
1533 void
1534 select_and_print_frame (struct frame_info *fi, int level)
1535 {
1536   select_frame (fi, level);
1537   if (fi)
1538     {
1539       print_stack_frame (fi, level, 1);
1540     }
1541 }
1542 \f
1543
1544 /* Store the selected frame and its level into *FRAMEP and *LEVELP.
1545    If there is no selected frame, *FRAMEP is set to NULL.  */
1546
1547 void
1548 record_selected_frame (CORE_ADDR *frameaddrp, int *levelp)
1549 {
1550   *frameaddrp = selected_frame ? selected_frame->frame : 0;
1551   *levelp = frame_relative_level (selected_frame);
1552 }
1553
1554 /* Return the symbol-block in which the selected frame is executing.
1555    Can return zero under various legitimate circumstances.
1556
1557    If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
1558    code address within the block returned.  We use this to decide
1559    which macros are in scope.  */
1560
1561 struct block *
1562 get_selected_block (CORE_ADDR *addr_in_block)
1563 {
1564   if (!target_has_stack)
1565     return 0;
1566
1567   if (!selected_frame)
1568     return get_current_block (addr_in_block);
1569   return get_frame_block (selected_frame, addr_in_block);
1570 }
1571
1572 /* Find a frame a certain number of levels away from FRAME.
1573    LEVEL_OFFSET_PTR points to an int containing the number of levels.
1574    Positive means go to earlier frames (up); negative, the reverse.
1575    The int that contains the number of levels is counted toward
1576    zero as the frames for those levels are found.
1577    If the top or bottom frame is reached, that frame is returned,
1578    but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
1579    how much farther the original request asked to go.  */
1580
1581 struct frame_info *
1582 find_relative_frame (register struct frame_info *frame,
1583                      register int *level_offset_ptr)
1584 {
1585   register struct frame_info *prev;
1586   register struct frame_info *frame1;
1587
1588   /* Going up is simple: just do get_prev_frame enough times
1589      or until initial frame is reached.  */
1590   while (*level_offset_ptr > 0)
1591     {
1592       prev = get_prev_frame (frame);
1593       if (prev == 0)
1594         break;
1595       (*level_offset_ptr)--;
1596       frame = prev;
1597     }
1598   /* Going down is just as simple.  */
1599   if (*level_offset_ptr < 0)
1600     {
1601       while (*level_offset_ptr < 0)
1602         {
1603           frame1 = get_next_frame (frame);
1604           if (!frame1)
1605             break;
1606           frame = frame1;
1607           (*level_offset_ptr)++;
1608         }
1609     }
1610   return frame;
1611 }
1612
1613 /* The "select_frame" command.  With no arg, NOP.
1614    With arg LEVEL_EXP, select the frame at level LEVEL if it is a
1615    valid level.  Otherwise, treat level_exp as an address expression
1616    and select it.  See parse_frame_specification for more info on proper
1617    frame expressions. */
1618
1619 /* ARGSUSED */
1620 void
1621 select_frame_command_wrapper (char *level_exp, int from_tty)
1622 {
1623   select_frame_command (level_exp, from_tty);
1624 }
1625
1626 static void
1627 select_frame_command (char *level_exp, int from_tty)
1628 {
1629   register struct frame_info *frame, *frame1;
1630   unsigned int level = 0;
1631
1632   if (!target_has_stack)
1633     error ("No stack.");
1634
1635   frame = parse_frame_specification (level_exp);
1636
1637   /* Try to figure out what level this frame is.  But if there is
1638      no current stack, don't error out -- let the user set one.  */
1639   frame1 = 0;
1640   if (get_current_frame ())
1641     {
1642       for (frame1 = get_prev_frame (0);
1643            frame1 && frame1 != frame;
1644            frame1 = get_prev_frame (frame1))
1645         level++;
1646     }
1647
1648   if (!frame1)
1649     level = 0;
1650
1651   select_frame (frame, level);
1652 }
1653
1654 /* The "frame" command.  With no arg, print selected frame briefly.
1655    With arg, behaves like select_frame and then prints the selected
1656    frame.  */
1657
1658 void
1659 frame_command (char *level_exp, int from_tty)
1660 {
1661   select_frame_command (level_exp, from_tty);
1662   show_and_print_stack_frame (selected_frame,
1663                               frame_relative_level (selected_frame), 1);
1664 }
1665
1666 /* The XDB Compatibility command to print the current frame. */
1667
1668 static void
1669 current_frame_command (char *level_exp, int from_tty)
1670 {
1671   if (target_has_stack == 0 || selected_frame == 0)
1672     error ("No stack.");
1673   print_only_stack_frame (selected_frame,
1674                           frame_relative_level (selected_frame), 1);
1675 }
1676
1677 /* Select the frame up one or COUNT stack levels
1678    from the previously selected frame, and print it briefly.  */
1679
1680 /* ARGSUSED */
1681 static void
1682 up_silently_base (char *count_exp)
1683 {
1684   register struct frame_info *fi;
1685   int count = 1, count1;
1686   if (count_exp)
1687     count = parse_and_eval_long (count_exp);
1688   count1 = count;
1689
1690   if (target_has_stack == 0 || selected_frame == 0)
1691     error ("No stack.");
1692
1693   fi = find_relative_frame (selected_frame, &count1);
1694   if (count1 != 0 && count_exp == 0)
1695     error ("Initial frame selected; you cannot go up.");
1696   select_frame (fi, frame_relative_level (selected_frame) + count - count1);
1697 }
1698
1699 static void
1700 up_silently_command (char *count_exp, int from_tty)
1701 {
1702   up_silently_base (count_exp);
1703 }
1704
1705 static void
1706 up_command (char *count_exp, int from_tty)
1707 {
1708   up_silently_base (count_exp);
1709   show_and_print_stack_frame (selected_frame,
1710                               frame_relative_level (selected_frame), 1);
1711 }
1712
1713 /* Select the frame down one or COUNT stack levels
1714    from the previously selected frame, and print it briefly.  */
1715
1716 /* ARGSUSED */
1717 static void
1718 down_silently_base (char *count_exp)
1719 {
1720   register struct frame_info *frame;
1721   int count = -1, count1;
1722   if (count_exp)
1723     count = -parse_and_eval_long (count_exp);
1724   count1 = count;
1725
1726   if (target_has_stack == 0 || selected_frame == 0)
1727     error ("No stack.");
1728
1729   frame = find_relative_frame (selected_frame, &count1);
1730   if (count1 != 0 && count_exp == 0)
1731     {
1732
1733       /* We only do this if count_exp is not specified.  That way "down"
1734          means to really go down (and let me know if that is
1735          impossible), but "down 9999" can be used to mean go all the way
1736          down without getting an error.  */
1737
1738       error ("Bottom (i.e., innermost) frame selected; you cannot go down.");
1739     }
1740
1741   select_frame (frame, frame_relative_level (selected_frame) + count - count1);
1742 }
1743
1744 /* ARGSUSED */
1745 static void
1746 down_silently_command (char *count_exp, int from_tty)
1747 {
1748   down_silently_base (count_exp);
1749 }
1750
1751 static void
1752 down_command (char *count_exp, int from_tty)
1753 {
1754   down_silently_base (count_exp);
1755   show_and_print_stack_frame (selected_frame,
1756                               frame_relative_level (selected_frame), 1);
1757 }
1758 \f
1759 void
1760 return_command_wrapper (char *retval_exp, int from_tty)
1761 {
1762   return_command (retval_exp, from_tty);
1763 }
1764
1765 static void
1766 return_command (char *retval_exp, int from_tty)
1767 {
1768   struct symbol *thisfun;
1769   CORE_ADDR selected_frame_addr;
1770   CORE_ADDR selected_frame_pc;
1771   struct frame_info *frame;
1772   struct value *return_value = NULL;
1773
1774   if (selected_frame == NULL)
1775     error ("No selected frame.");
1776   thisfun = get_frame_function (selected_frame);
1777   selected_frame_addr = FRAME_FP (selected_frame);
1778   selected_frame_pc = selected_frame->pc;
1779
1780   /* Compute the return value (if any -- possibly getting errors here).  */
1781
1782   if (retval_exp)
1783     {
1784       struct type *return_type = NULL;
1785
1786       return_value = parse_and_eval (retval_exp);
1787
1788       /* Cast return value to the return type of the function.  */
1789       if (thisfun != NULL)
1790         return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
1791       if (return_type == NULL)
1792         return_type = builtin_type_int;
1793       return_value = value_cast (return_type, return_value);
1794
1795       /* Make sure we have fully evaluated it, since
1796          it might live in the stack frame we're about to pop.  */
1797       if (VALUE_LAZY (return_value))
1798         value_fetch_lazy (return_value);
1799     }
1800
1801   /* If interactive, require confirmation.  */
1802
1803   if (from_tty)
1804     {
1805       if (thisfun != 0)
1806         {
1807           if (!query ("Make %s return now? ", SYMBOL_SOURCE_NAME (thisfun)))
1808             {
1809               error ("Not confirmed.");
1810               /* NOTREACHED */
1811             }
1812         }
1813       else if (!query ("Make selected stack frame return now? "))
1814         error ("Not confirmed.");
1815     }
1816
1817   /* Do the real work.  Pop until the specified frame is current.  We
1818      use this method because the selected_frame is not valid after
1819      a POP_FRAME.  The pc comparison makes this work even if the
1820      selected frame shares its fp with another frame.  */
1821
1822   while (selected_frame_addr != (frame = get_current_frame ())->frame
1823          || selected_frame_pc != frame->pc)
1824     POP_FRAME;
1825
1826   /* Then pop that frame.  */
1827
1828   POP_FRAME;
1829
1830   /* Compute the return value (if any) and store in the place
1831      for return values.  */
1832
1833   if (retval_exp)
1834     set_return_value (return_value);
1835
1836   /* If we are at the end of a call dummy now, pop the dummy frame too.  */
1837
1838   if (CALL_DUMMY_HAS_COMPLETED (read_pc(), read_sp (),
1839                                 FRAME_FP (get_current_frame ())))
1840     POP_FRAME;
1841
1842   /* If interactive, print the frame that is now current.  */
1843
1844   if (from_tty)
1845     frame_command ("0", 1);
1846   else
1847     select_frame_command ("0", 0);
1848 }
1849
1850 /* Sets the scope to input function name, provided that the
1851    function is within the current stack frame */
1852
1853 struct function_bounds
1854 {
1855   CORE_ADDR low, high;
1856 };
1857
1858 static void func_command (char *arg, int from_tty);
1859 static void
1860 func_command (char *arg, int from_tty)
1861 {
1862   struct frame_info *fp;
1863   int found = 0;
1864   struct symtabs_and_lines sals;
1865   int i;
1866   int level = 1;
1867   struct function_bounds *func_bounds = (struct function_bounds *) NULL;
1868
1869   if (arg != (char *) NULL)
1870     return;
1871
1872   fp = parse_frame_specification ("0");
1873   sals = decode_line_spec (arg, 1);
1874   func_bounds = (struct function_bounds *) xmalloc (
1875                               sizeof (struct function_bounds) * sals.nelts);
1876   for (i = 0; (i < sals.nelts && !found); i++)
1877     {
1878       if (sals.sals[i].pc == (CORE_ADDR) 0 ||
1879           find_pc_partial_function (sals.sals[i].pc,
1880                                     (char **) NULL,
1881                                     &func_bounds[i].low,
1882                                     &func_bounds[i].high) == 0)
1883         {
1884           func_bounds[i].low =
1885             func_bounds[i].high = (CORE_ADDR) NULL;
1886         }
1887     }
1888
1889   do
1890     {
1891       for (i = 0; (i < sals.nelts && !found); i++)
1892         found = (fp->pc >= func_bounds[i].low &&
1893                  fp->pc < func_bounds[i].high);
1894       if (!found)
1895         {
1896           level = 1;
1897           fp = find_relative_frame (fp, &level);
1898         }
1899     }
1900   while (!found && level == 0);
1901
1902   if (func_bounds)
1903     xfree (func_bounds);
1904
1905   if (!found)
1906     printf_filtered ("'%s' not within current stack frame.\n", arg);
1907   else if (fp != selected_frame)
1908     select_and_print_frame (fp, level);
1909 }
1910
1911 /* Gets the language of the current frame.  */
1912
1913 enum language
1914 get_frame_language (void)
1915 {
1916   register struct symtab *s;
1917   enum language flang;          /* The language of the current frame */
1918
1919   if (selected_frame)
1920     {
1921       s = find_pc_symtab (selected_frame->pc);
1922       if (s)
1923         flang = s->language;
1924       else
1925         flang = language_unknown;
1926     }
1927   else
1928     flang = language_unknown;
1929
1930   return flang;
1931 }
1932 \f
1933 void
1934 _initialize_stack (void)
1935 {
1936 #if 0
1937   backtrace_limit = 30;
1938 #endif
1939
1940   add_com ("return", class_stack, return_command,
1941            "Make selected stack frame return to its caller.\n\
1942 Control remains in the debugger, but when you continue\n\
1943 execution will resume in the frame above the one now selected.\n\
1944 If an argument is given, it is an expression for the value to return.");
1945
1946   add_com ("up", class_stack, up_command,
1947            "Select and print stack frame that called this one.\n\
1948 An argument says how many frames up to go.");
1949   add_com ("up-silently", class_support, up_silently_command,
1950            "Same as the `up' command, but does not print anything.\n\
1951 This is useful in command scripts.");
1952
1953   add_com ("down", class_stack, down_command,
1954            "Select and print stack frame called by this one.\n\
1955 An argument says how many frames down to go.");
1956   add_com_alias ("do", "down", class_stack, 1);
1957   add_com_alias ("dow", "down", class_stack, 1);
1958   add_com ("down-silently", class_support, down_silently_command,
1959            "Same as the `down' command, but does not print anything.\n\
1960 This is useful in command scripts.");
1961
1962   add_com ("frame", class_stack, frame_command,
1963            "Select and print a stack frame.\n\
1964 With no argument, print the selected stack frame.  (See also \"info frame\").\n\
1965 An argument specifies the frame to select.\n\
1966 It can be a stack frame number or the address of the frame.\n\
1967 With argument, nothing is printed if input is coming from\n\
1968 a command file or a user-defined command.");
1969
1970   add_com_alias ("f", "frame", class_stack, 1);
1971
1972   if (xdb_commands)
1973     {
1974       add_com ("L", class_stack, current_frame_command,
1975                "Print the current stack frame.\n");
1976       add_com_alias ("V", "frame", class_stack, 1);
1977     }
1978   add_com ("select-frame", class_stack, select_frame_command,
1979            "Select a stack frame without printing anything.\n\
1980 An argument specifies the frame to select.\n\
1981 It can be a stack frame number or the address of the frame.\n");
1982
1983   add_com ("backtrace", class_stack, backtrace_command,
1984            "Print backtrace of all stack frames, or innermost COUNT frames.\n\
1985 With a negative argument, print outermost -COUNT frames.\n\
1986 Use of the 'full' qualifier also prints the values of the local variables.\n");
1987   add_com_alias ("bt", "backtrace", class_stack, 0);
1988   if (xdb_commands)
1989     {
1990       add_com_alias ("t", "backtrace", class_stack, 0);
1991       add_com ("T", class_stack, backtrace_full_command,
1992                "Print backtrace of all stack frames, or innermost COUNT frames \n\
1993 and the values of the local variables.\n\
1994 With a negative argument, print outermost -COUNT frames.\n\
1995 Usage: T <count>\n");
1996     }
1997
1998   add_com_alias ("where", "backtrace", class_alias, 0);
1999   add_info ("stack", backtrace_command,
2000             "Backtrace of the stack, or innermost COUNT frames.");
2001   add_info_alias ("s", "stack", 1);
2002   add_info ("frame", frame_info,
2003             "All about selected stack frame, or frame at ADDR.");
2004   add_info_alias ("f", "frame", 1);
2005   add_info ("locals", locals_info,
2006             "Local variables of current stack frame.");
2007   add_info ("args", args_info,
2008             "Argument variables of current stack frame.");
2009   if (xdb_commands)
2010     add_com ("l", class_info, args_plus_locals_info,
2011              "Argument and local variables of current stack frame.");
2012
2013   if (dbx_commands)
2014     add_com ("func", class_stack, func_command,
2015       "Select the stack frame that contains <func>.\nUsage: func <name>\n");
2016
2017   add_info ("catch", catch_info,
2018             "Exceptions that can be caught in the current stack frame.");
2019
2020 #if 0
2021   add_cmd ("backtrace-limit", class_stack, set_backtrace_limit_command,
2022   "Specify maximum number of frames for \"backtrace\" to print by default.",
2023            &setlist);
2024   add_info ("backtrace-limit", backtrace_limit_info,
2025      "The maximum number of frames for \"backtrace\" to print by default.");
2026 #endif
2027 }