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