2002-10-02 Elena Zannoni <ezannoni@redhat.com>
[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 (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         printf_filtered ("#%-2d ", level);
362       annotate_function_call ();
363       printf_filtered ("<function called from gdb>\n");
364       annotate_frame_end ();
365       return;
366     }
367   if (fi->signal_handler_caller)
368     {
369       annotate_frame_begin (level == -1 ? 0 : level, fi->pc);
370
371       /* Do this regardless of SOURCE because we don't have any source
372          to list for this frame.  */
373       if (level >= 0)
374         printf_filtered ("#%-2d ", level);
375       annotate_signal_handler_caller ();
376       printf_filtered ("<signal handler called>\n");
377       annotate_frame_end ();
378       return;
379     }
380
381   /* If fi is not the innermost frame, that normally means that fi->pc
382      points to *after* the call instruction, and we want to get the line
383      containing the call, never the next line.  But if the next frame is
384      a signal_handler_caller or a dummy frame, then the next frame was
385      not entered as the result of a call, and we want to get the line
386      containing fi->pc.  */
387   sal =
388     find_pc_line (fi->pc,
389                   fi->next != NULL
390                   && !fi->next->signal_handler_caller
391                   && !frame_in_dummy (fi->next));
392
393   location_print = (source == LOCATION 
394                     || source == LOC_AND_ADDRESS
395                     || source == SRC_AND_LOC);
396
397   if (location_print || !sal.symtab)
398     print_frame (fi, level, source, args, sal);
399
400   source_print = (source == SRC_LINE || source == SRC_AND_LOC);
401
402   if (sal.symtab)
403     set_current_source_symtab_and_line (&sal);
404
405   if (source_print && sal.symtab)
406     {
407       struct symtab_and_line cursal;
408       int done = 0;
409       int mid_statement = (source == SRC_LINE) && (fi->pc != sal.pc);
410
411       if (annotation_level)
412         done = identify_source_line (sal.symtab, sal.line, mid_statement,
413                                      fi->pc);
414       if (!done)
415         {
416           if (print_frame_info_listing_hook)
417             print_frame_info_listing_hook (sal.symtab, sal.line, sal.line + 1, 0);
418           else
419             {
420               /* We used to do this earlier, but that is clearly
421                  wrong. This function is used by many different
422                  parts of gdb, including normal_stop in infrun.c,
423                  which uses this to print out the current PC
424                  when we stepi/nexti into the middle of a source
425                  line. Only the command line really wants this
426                  behavior. Other UIs probably would like the
427                  ability to decide for themselves if it is desired. */
428               if (addressprint && mid_statement)
429                 {
430                   ui_out_field_core_addr (uiout, "addr", fi->pc);
431                   ui_out_text (uiout, "\t");
432                 }
433
434               print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
435             }
436         }
437       /* Make sure we have at least a default source file */
438       set_default_source_symtab_and_line ();
439       cursal = get_current_source_symtab_and_line ();
440       cursal.line = max (sal.line - get_lines_to_list () / 2, 1);
441       set_current_source_symtab_and_line (&cursal);
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 (frame_address_in_block (fi));
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 (frame_address_in_block (fi));
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 (frame_address_in_block (fi));
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   if (fi->saved_regs == NULL)
938     FRAME_INIT_SAVED_REGS (fi);
939   /* Print as much information as possible on the location of all the
940      registers.  */
941   {
942     enum lval_type lval;
943     int optimized;
944     CORE_ADDR addr;
945     int realnum;
946     int count;
947     int i;
948     int need_nl = 1;
949
950     /* The sp is special; what's displayed isn't the save address, but
951        the value of the previous frame's sp.  This is a legacy thing,
952        at one stage the frame cached the previous frame's SP instead
953        of its address, hence it was easiest to just display the cached
954        value.  */
955     if (SP_REGNUM >= 0)
956       {
957         /* Find out the location of the saved stack pointer with out
958            actually evaluating it.  */
959         frame_register_unwind (fi, SP_REGNUM, &optimized, &lval, &addr,
960                                &realnum, NULL);
961         if (!optimized && lval == not_lval)
962           {
963             void *value = alloca (MAX_REGISTER_RAW_SIZE);
964             CORE_ADDR sp;
965             frame_register_unwind (fi, SP_REGNUM, &optimized, &lval, &addr,
966                                    &realnum, value);
967             sp = extract_address (value, REGISTER_RAW_SIZE (SP_REGNUM));
968             printf_filtered (" Previous frame's sp is ");
969             print_address_numeric (sp, 1, gdb_stdout);
970             printf_filtered ("\n");
971             need_nl = 0;
972           }
973         else if (!optimized && lval == lval_memory)
974           {
975             printf_filtered (" Previous frame's sp at ");
976             print_address_numeric (addr, 1, gdb_stdout);
977             printf_filtered ("\n");
978             need_nl = 0;
979           }
980         else if (!optimized && lval == lval_register)
981           {
982             printf_filtered (" Previous frame's sp in %s\n",
983                              REGISTER_NAME (realnum));
984             need_nl = 0;
985           }
986         /* else keep quiet.  */
987       }
988
989     count = 0;
990     numregs = NUM_REGS + NUM_PSEUDO_REGS;
991     for (i = 0; i < numregs; i++)
992       if (i != SP_REGNUM)
993         {
994           /* Find out the location of the saved register without
995              fetching the corresponding value.  */
996           frame_register_unwind (fi, i, &optimized, &lval, &addr, &realnum,
997                                  NULL);
998           /* For moment, only display registers that were saved on the
999              stack.  */
1000           if (!optimized && lval == lval_memory)
1001             {
1002               if (count == 0)
1003                 puts_filtered (" Saved registers:\n ");
1004               else
1005                 puts_filtered (",");
1006               wrap_here (" ");
1007               printf_filtered (" %s at ", REGISTER_NAME (i));
1008               print_address_numeric (addr, 1, gdb_stdout);
1009               count++;
1010             }
1011         }
1012     if (count || need_nl)
1013       puts_filtered ("\n");
1014   }
1015 }
1016
1017 #if 0
1018 /* Set a limit on the number of frames printed by default in a
1019    backtrace.  */
1020
1021 static int backtrace_limit;
1022
1023 static void
1024 set_backtrace_limit_command (char *count_exp, int from_tty)
1025 {
1026   int count = parse_and_eval_long (count_exp);
1027
1028   if (count < 0)
1029     error ("Negative argument not meaningful as backtrace limit.");
1030
1031   backtrace_limit = count;
1032 }
1033
1034 static void
1035 backtrace_limit_info (char *arg, int from_tty)
1036 {
1037   if (arg)
1038     error ("\"Info backtrace-limit\" takes no arguments.");
1039
1040   printf_unfiltered ("Backtrace limit: %d.\n", backtrace_limit);
1041 }
1042 #endif
1043
1044 /* Print briefly all stack frames or just the innermost COUNT frames.  */
1045
1046 static void backtrace_command_1 (char *count_exp, int show_locals,
1047                                  int from_tty);
1048 static void
1049 backtrace_command_1 (char *count_exp, int show_locals, int from_tty)
1050 {
1051   struct frame_info *fi;
1052   register int count;
1053   register int i;
1054   register struct frame_info *trailing;
1055   register int trailing_level;
1056
1057   if (!target_has_stack)
1058     error ("No stack.");
1059
1060   /* The following code must do two things.  First, it must
1061      set the variable TRAILING to the frame from which we should start
1062      printing.  Second, it must set the variable count to the number
1063      of frames which we should print, or -1 if all of them.  */
1064   trailing = get_current_frame ();
1065
1066   /* The target can be in a state where there is no valid frames
1067      (e.g., just connected). */
1068   if (trailing == NULL)
1069     error ("No stack.");
1070
1071   trailing_level = 0;
1072   if (count_exp)
1073     {
1074       count = parse_and_eval_long (count_exp);
1075       if (count < 0)
1076         {
1077           struct frame_info *current;
1078
1079           count = -count;
1080
1081           current = trailing;
1082           while (current && count--)
1083             {
1084               QUIT;
1085               current = get_prev_frame (current);
1086             }
1087
1088           /* Will stop when CURRENT reaches the top of the stack.  TRAILING
1089              will be COUNT below it.  */
1090           while (current)
1091             {
1092               QUIT;
1093               trailing = get_prev_frame (trailing);
1094               current = get_prev_frame (current);
1095               trailing_level++;
1096             }
1097
1098           count = -1;
1099         }
1100     }
1101   else
1102     count = -1;
1103
1104   if (info_verbose)
1105     {
1106       struct partial_symtab *ps;
1107
1108       /* Read in symbols for all of the frames.  Need to do this in
1109          a separate pass so that "Reading in symbols for xxx" messages
1110          don't screw up the appearance of the backtrace.  Also
1111          if people have strong opinions against reading symbols for
1112          backtrace this may have to be an option.  */
1113       i = count;
1114       for (fi = trailing;
1115            fi != NULL && i--;
1116            fi = get_prev_frame (fi))
1117         {
1118           QUIT;
1119           ps = find_pc_psymtab (frame_address_in_block (fi));
1120           if (ps)
1121             PSYMTAB_TO_SYMTAB (ps);     /* Force syms to come in */
1122         }
1123     }
1124
1125   for (i = 0, fi = trailing;
1126        fi && count--;
1127        i++, fi = get_prev_frame (fi))
1128     {
1129       QUIT;
1130
1131       /* Don't use print_stack_frame; if an error() occurs it probably
1132          means further attempts to backtrace would fail (on the other
1133          hand, perhaps the code does or could be fixed to make sure
1134          the frame->prev field gets set to NULL in that case).  */
1135       print_frame_info_base (fi, trailing_level + i, 0, 1);
1136       if (show_locals)
1137         print_frame_local_vars (fi, 1, gdb_stdout);
1138     }
1139
1140   /* If we've stopped before the end, mention that.  */
1141   if (fi && from_tty)
1142     printf_filtered ("(More stack frames follow...)\n");
1143 }
1144
1145 static void
1146 backtrace_command (char *arg, int from_tty)
1147 {
1148   struct cleanup *old_chain = (struct cleanup *) NULL;
1149   char **argv = (char **) NULL;
1150   int argIndicatingFullTrace = (-1), totArgLen = 0, argc = 0;
1151   char *argPtr = arg;
1152
1153   if (arg != (char *) NULL)
1154     {
1155       int i;
1156
1157       argv = buildargv (arg);
1158       old_chain = make_cleanup_freeargv (argv);
1159       argc = 0;
1160       for (i = 0; (argv[i] != (char *) NULL); i++)
1161         {
1162           unsigned int j;
1163
1164           for (j = 0; (j < strlen (argv[i])); j++)
1165             argv[i][j] = tolower (argv[i][j]);
1166
1167           if (argIndicatingFullTrace < 0 && subset_compare (argv[i], "full"))
1168             argIndicatingFullTrace = argc;
1169           else
1170             {
1171               argc++;
1172               totArgLen += strlen (argv[i]);
1173             }
1174         }
1175       totArgLen += argc;
1176       if (argIndicatingFullTrace >= 0)
1177         {
1178           if (totArgLen > 0)
1179             {
1180               argPtr = (char *) xmalloc (totArgLen + 1);
1181               if (!argPtr)
1182                 nomem (0);
1183               else
1184                 {
1185                   memset (argPtr, 0, totArgLen + 1);
1186                   for (i = 0; (i < (argc + 1)); i++)
1187                     {
1188                       if (i != argIndicatingFullTrace)
1189                         {
1190                           strcat (argPtr, argv[i]);
1191                           strcat (argPtr, " ");
1192                         }
1193                     }
1194                 }
1195             }
1196           else
1197             argPtr = (char *) NULL;
1198         }
1199     }
1200
1201   backtrace_command_1 (argPtr, (argIndicatingFullTrace >= 0), from_tty);
1202
1203   if (argIndicatingFullTrace >= 0 && totArgLen > 0)
1204     xfree (argPtr);
1205
1206   if (old_chain)
1207     do_cleanups (old_chain);
1208 }
1209
1210 static void backtrace_full_command (char *arg, int from_tty);
1211 static void
1212 backtrace_full_command (char *arg, int from_tty)
1213 {
1214   backtrace_command_1 (arg, 1, from_tty);
1215 }
1216 \f
1217
1218 /* Print the local variables of a block B active in FRAME.
1219    Return 1 if any variables were printed; 0 otherwise.  */
1220
1221 static int
1222 print_block_frame_locals (struct block *b, register struct frame_info *fi,
1223                           int num_tabs, register struct ui_file *stream)
1224 {
1225   register int i, j;
1226   register struct symbol *sym;
1227   register int values_printed = 0;
1228
1229   ALL_BLOCK_SYMBOLS (b, i, sym)
1230     {
1231       switch (SYMBOL_CLASS (sym))
1232         {
1233         case LOC_LOCAL:
1234         case LOC_REGISTER:
1235         case LOC_STATIC:
1236         case LOC_BASEREG:
1237           values_printed = 1;
1238           for (j = 0; j < num_tabs; j++)
1239             fputs_filtered ("\t", stream);
1240           fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
1241           fputs_filtered (" = ", stream);
1242           print_variable_value (sym, fi, stream);
1243           fprintf_filtered (stream, "\n");
1244           break;
1245
1246         default:
1247           /* Ignore symbols which are not locals.  */
1248           break;
1249         }
1250     }
1251   return values_printed;
1252 }
1253
1254 /* Same, but print labels.  */
1255
1256 static int
1257 print_block_frame_labels (struct block *b, int *have_default,
1258                           register struct ui_file *stream)
1259 {
1260   register int i;
1261   register struct symbol *sym;
1262   register int values_printed = 0;
1263
1264   ALL_BLOCK_SYMBOLS (b, i, sym)
1265     {
1266       if (STREQ (SYMBOL_NAME (sym), "default"))
1267         {
1268           if (*have_default)
1269             continue;
1270           *have_default = 1;
1271         }
1272       if (SYMBOL_CLASS (sym) == LOC_LABEL)
1273         {
1274           struct symtab_and_line sal;
1275           sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
1276           values_printed = 1;
1277           fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
1278           if (addressprint)
1279             {
1280               fprintf_filtered (stream, " ");
1281               print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), 1, stream);
1282             }
1283           fprintf_filtered (stream, " in file %s, line %d\n",
1284                             sal.symtab->filename, sal.line);
1285         }
1286     }
1287   return values_printed;
1288 }
1289
1290 /* Print on STREAM all the local variables in frame FRAME,
1291    including all the blocks active in that frame
1292    at its current pc.
1293
1294    Returns 1 if the job was done,
1295    or 0 if nothing was printed because we have no info
1296    on the function running in FRAME.  */
1297
1298 static void
1299 print_frame_local_vars (register struct frame_info *fi, register int num_tabs,
1300                         register struct ui_file *stream)
1301 {
1302   register struct block *block = get_frame_block (fi, 0);
1303   register int values_printed = 0;
1304
1305   if (block == 0)
1306     {
1307       fprintf_filtered (stream, "No symbol table info available.\n");
1308       return;
1309     }
1310
1311   while (block != 0)
1312     {
1313       if (print_block_frame_locals (block, fi, num_tabs, stream))
1314         values_printed = 1;
1315       /* After handling the function's top-level block, stop.
1316          Don't continue to its superblock, the block of
1317          per-file symbols.  */
1318       if (BLOCK_FUNCTION (block))
1319         break;
1320       block = BLOCK_SUPERBLOCK (block);
1321     }
1322
1323   if (!values_printed)
1324     {
1325       fprintf_filtered (stream, "No locals.\n");
1326     }
1327 }
1328
1329 /* Same, but print labels.  */
1330
1331 static void
1332 print_frame_label_vars (register struct frame_info *fi, int this_level_only,
1333                         register struct ui_file *stream)
1334 {
1335   register struct blockvector *bl;
1336   register struct block *block = get_frame_block (fi, 0);
1337   register int values_printed = 0;
1338   int index, have_default = 0;
1339   char *blocks_printed;
1340   CORE_ADDR pc = fi->pc;
1341
1342   if (block == 0)
1343     {
1344       fprintf_filtered (stream, "No symbol table info available.\n");
1345       return;
1346     }
1347
1348   bl = blockvector_for_pc (BLOCK_END (block) - 4, &index);
1349   blocks_printed = (char *) alloca (BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1350   memset (blocks_printed, 0, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1351
1352   while (block != 0)
1353     {
1354       CORE_ADDR end = BLOCK_END (block) - 4;
1355       int last_index;
1356
1357       if (bl != blockvector_for_pc (end, &index))
1358         error ("blockvector blotch");
1359       if (BLOCKVECTOR_BLOCK (bl, index) != block)
1360         error ("blockvector botch");
1361       last_index = BLOCKVECTOR_NBLOCKS (bl);
1362       index += 1;
1363
1364       /* Don't print out blocks that have gone by.  */
1365       while (index < last_index
1366              && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < pc)
1367         index++;
1368
1369       while (index < last_index
1370              && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < end)
1371         {
1372           if (blocks_printed[index] == 0)
1373             {
1374               if (print_block_frame_labels (BLOCKVECTOR_BLOCK (bl, index), &have_default, stream))
1375                 values_printed = 1;
1376               blocks_printed[index] = 1;
1377             }
1378           index++;
1379         }
1380       if (have_default)
1381         return;
1382       if (values_printed && this_level_only)
1383         return;
1384
1385       /* After handling the function's top-level block, stop.
1386          Don't continue to its superblock, the block of
1387          per-file symbols.  */
1388       if (BLOCK_FUNCTION (block))
1389         break;
1390       block = BLOCK_SUPERBLOCK (block);
1391     }
1392
1393   if (!values_printed && !this_level_only)
1394     {
1395       fprintf_filtered (stream, "No catches.\n");
1396     }
1397 }
1398
1399 /* ARGSUSED */
1400 void
1401 locals_info (char *args, int from_tty)
1402 {
1403   if (!selected_frame)
1404     error ("No frame selected.");
1405   print_frame_local_vars (selected_frame, 0, gdb_stdout);
1406 }
1407
1408 static void
1409 catch_info (char *ignore, int from_tty)
1410 {
1411   struct symtab_and_line *sal;
1412
1413   /* Check for target support for exception handling */
1414   sal = target_enable_exception_callback (EX_EVENT_CATCH, 1);
1415   if (sal)
1416     {
1417       /* Currently not handling this */
1418       /* Ideally, here we should interact with the C++ runtime
1419          system to find the list of active handlers, etc. */
1420       fprintf_filtered (gdb_stdout, "Info catch not supported with this target/compiler combination.\n");
1421 #if 0
1422       if (!selected_frame)
1423         error ("No frame selected.");
1424 #endif
1425     }
1426   else
1427     {
1428       /* Assume g++ compiled code -- old v 4.16 behaviour */
1429       if (!selected_frame)
1430         error ("No frame selected.");
1431
1432       print_frame_label_vars (selected_frame, 0, gdb_stdout);
1433     }
1434 }
1435
1436 static void
1437 print_frame_arg_vars (register struct frame_info *fi,
1438                       register struct ui_file *stream)
1439 {
1440   struct symbol *func = get_frame_function (fi);
1441   register struct block *b;
1442   register int i;
1443   register struct symbol *sym, *sym2;
1444   register int values_printed = 0;
1445
1446   if (func == 0)
1447     {
1448       fprintf_filtered (stream, "No symbol table info available.\n");
1449       return;
1450     }
1451
1452   b = SYMBOL_BLOCK_VALUE (func);
1453   ALL_BLOCK_SYMBOLS (b, i, sym)
1454     {
1455       switch (SYMBOL_CLASS (sym))
1456         {
1457         case LOC_ARG:
1458         case LOC_LOCAL_ARG:
1459         case LOC_REF_ARG:
1460         case LOC_REGPARM:
1461         case LOC_REGPARM_ADDR:
1462         case LOC_BASEREG_ARG:
1463           values_printed = 1;
1464           fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
1465           fputs_filtered (" = ", stream);
1466
1467           /* We have to look up the symbol because arguments can have
1468              two entries (one a parameter, one a local) and the one we
1469              want is the local, which lookup_symbol will find for us.
1470              This includes gcc1 (not gcc2) on the sparc when passing a
1471              small structure and gcc2 when the argument type is float
1472              and it is passed as a double and converted to float by
1473              the prologue (in the latter case the type of the LOC_ARG
1474              symbol is double and the type of the LOC_LOCAL symbol is
1475              float).  There are also LOC_ARG/LOC_REGISTER pairs which
1476              are not combined in symbol-reading.  */
1477
1478           sym2 = lookup_symbol (SYMBOL_NAME (sym),
1479                    b, VAR_NAMESPACE, (int *) NULL, (struct symtab **) NULL);
1480           print_variable_value (sym2, fi, stream);
1481           fprintf_filtered (stream, "\n");
1482           break;
1483
1484         default:
1485           /* Don't worry about things which aren't arguments.  */
1486           break;
1487         }
1488     }
1489   if (!values_printed)
1490     {
1491       fprintf_filtered (stream, "No arguments.\n");
1492     }
1493 }
1494
1495 void
1496 args_info (char *ignore, int from_tty)
1497 {
1498   if (!selected_frame)
1499     error ("No frame selected.");
1500   print_frame_arg_vars (selected_frame, gdb_stdout);
1501 }
1502
1503
1504 static void
1505 args_plus_locals_info (char *ignore, int from_tty)
1506 {
1507   args_info (ignore, from_tty);
1508   locals_info (ignore, from_tty);
1509 }
1510 \f
1511
1512 /* Select frame FI (or NULL - to invalidate the current frame).  */
1513
1514 void
1515 select_frame (struct frame_info *fi)
1516 {
1517   register struct symtab *s;
1518
1519   selected_frame = fi;
1520   /* NOTE: cagney/2002-05-04: FI can be NULL.  This occures when the
1521      frame is being invalidated.  */
1522   if (selected_frame_level_changed_hook)
1523     selected_frame_level_changed_hook (frame_relative_level (fi));
1524
1525   /* FIXME: kseitz/2002-08-28: It would be nice to call
1526      selected_frame_level_changed_event right here, but due to limitations
1527      in the current interfaces, we would end up flooding UIs with events
1528      because select_frame is used extensively internally.
1529
1530      Once we have frame-parameterized frame (and frame-related) commands,
1531      the event notification can be moved here, since this function will only
1532      be called when the users selected frame is being changed. */
1533
1534   /* Ensure that symbols for this frame are read in.  Also, determine the
1535      source language of this frame, and switch to it if desired.  */
1536   if (fi)
1537     {
1538       s = find_pc_symtab (fi->pc);
1539       if (s
1540           && s->language != current_language->la_language
1541           && s->language != language_unknown
1542           && language_mode == language_mode_auto)
1543         {
1544           set_language (s->language);
1545         }
1546     }
1547 }
1548 \f
1549
1550 /* Select frame FI.  Also print the stack frame and show the source if
1551    this is the tui version.  */
1552 static void
1553 select_and_print_frame (struct frame_info *fi)
1554 {
1555   select_frame (fi);
1556   if (fi)
1557     {
1558       print_stack_frame (fi, frame_relative_level (fi), 1);
1559     }
1560 }
1561 \f
1562 /* Return the symbol-block in which the selected frame is executing.
1563    Can return zero under various legitimate circumstances.
1564
1565    If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
1566    code address within the block returned.  We use this to decide
1567    which macros are in scope.  */
1568
1569 struct block *
1570 get_selected_block (CORE_ADDR *addr_in_block)
1571 {
1572   if (!target_has_stack)
1573     return 0;
1574
1575   if (!selected_frame)
1576     return get_current_block (addr_in_block);
1577   return get_frame_block (selected_frame, addr_in_block);
1578 }
1579
1580 /* Find a frame a certain number of levels away from FRAME.
1581    LEVEL_OFFSET_PTR points to an int containing the number of levels.
1582    Positive means go to earlier frames (up); negative, the reverse.
1583    The int that contains the number of levels is counted toward
1584    zero as the frames for those levels are found.
1585    If the top or bottom frame is reached, that frame is returned,
1586    but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
1587    how much farther the original request asked to go.  */
1588
1589 struct frame_info *
1590 find_relative_frame (register struct frame_info *frame,
1591                      register int *level_offset_ptr)
1592 {
1593   register struct frame_info *prev;
1594   register struct frame_info *frame1;
1595
1596   /* Going up is simple: just do get_prev_frame enough times
1597      or until initial frame is reached.  */
1598   while (*level_offset_ptr > 0)
1599     {
1600       prev = get_prev_frame (frame);
1601       if (prev == 0)
1602         break;
1603       (*level_offset_ptr)--;
1604       frame = prev;
1605     }
1606   /* Going down is just as simple.  */
1607   if (*level_offset_ptr < 0)
1608     {
1609       while (*level_offset_ptr < 0)
1610         {
1611           frame1 = get_next_frame (frame);
1612           if (!frame1)
1613             break;
1614           frame = frame1;
1615           (*level_offset_ptr)++;
1616         }
1617     }
1618   return frame;
1619 }
1620
1621 /* The "select_frame" command.  With no arg, NOP.
1622    With arg LEVEL_EXP, select the frame at level LEVEL if it is a
1623    valid level.  Otherwise, treat level_exp as an address expression
1624    and select it.  See parse_frame_specification for more info on proper
1625    frame expressions. */
1626
1627 /* ARGSUSED */
1628 void
1629 select_frame_command_wrapper (char *level_exp, int from_tty)
1630 {
1631   select_frame_command (level_exp, from_tty);
1632 }
1633
1634 static void
1635 select_frame_command (char *level_exp, int from_tty)
1636 {
1637   struct frame_info *frame;
1638   int level = frame_relative_level (selected_frame);
1639
1640   if (!target_has_stack)
1641     error ("No stack.");
1642
1643   frame = parse_frame_specification (level_exp);
1644
1645   select_frame (frame);
1646   if (level != frame_relative_level (selected_frame))
1647     selected_frame_level_changed_event (frame_relative_level (selected_frame));
1648 }
1649
1650 /* The "frame" command.  With no arg, print selected frame briefly.
1651    With arg, behaves like select_frame and then prints the selected
1652    frame.  */
1653
1654 void
1655 frame_command (char *level_exp, int from_tty)
1656 {
1657   select_frame_command (level_exp, from_tty);
1658   show_and_print_stack_frame (selected_frame,
1659                               frame_relative_level (selected_frame), 1);
1660 }
1661
1662 /* The XDB Compatibility command to print the current frame. */
1663
1664 static void
1665 current_frame_command (char *level_exp, int from_tty)
1666 {
1667   if (target_has_stack == 0 || selected_frame == 0)
1668     error ("No stack.");
1669   print_only_stack_frame (selected_frame,
1670                           frame_relative_level (selected_frame), 1);
1671 }
1672
1673 /* Select the frame up one or COUNT stack levels
1674    from the previously selected frame, and print it briefly.  */
1675
1676 /* ARGSUSED */
1677 static void
1678 up_silently_base (char *count_exp)
1679 {
1680   register struct frame_info *fi;
1681   int count = 1, count1;
1682   if (count_exp)
1683     count = parse_and_eval_long (count_exp);
1684   count1 = count;
1685
1686   if (target_has_stack == 0 || selected_frame == 0)
1687     error ("No stack.");
1688
1689   fi = find_relative_frame (selected_frame, &count1);
1690   if (count1 != 0 && count_exp == 0)
1691     error ("Initial frame selected; you cannot go up.");
1692   select_frame (fi);
1693   selected_frame_level_changed_event (frame_relative_level (selected_frame));
1694 }
1695
1696 static void
1697 up_silently_command (char *count_exp, int from_tty)
1698 {
1699   up_silently_base (count_exp);
1700 }
1701
1702 static void
1703 up_command (char *count_exp, int from_tty)
1704 {
1705   up_silently_base (count_exp);
1706   show_and_print_stack_frame (selected_frame,
1707                               frame_relative_level (selected_frame), 1);
1708 }
1709
1710 /* Select the frame down one or COUNT stack levels
1711    from the previously selected frame, and print it briefly.  */
1712
1713 /* ARGSUSED */
1714 static void
1715 down_silently_base (char *count_exp)
1716 {
1717   register struct frame_info *frame;
1718   int count = -1, count1;
1719   if (count_exp)
1720     count = -parse_and_eval_long (count_exp);
1721   count1 = count;
1722
1723   if (target_has_stack == 0 || selected_frame == 0)
1724     error ("No stack.");
1725
1726   frame = find_relative_frame (selected_frame, &count1);
1727   if (count1 != 0 && count_exp == 0)
1728     {
1729
1730       /* We only do this if count_exp is not specified.  That way "down"
1731          means to really go down (and let me know if that is
1732          impossible), but "down 9999" can be used to mean go all the way
1733          down without getting an error.  */
1734
1735       error ("Bottom (i.e., innermost) frame selected; you cannot go down.");
1736     }
1737
1738   select_frame (frame);
1739   selected_frame_level_changed_event (frame_relative_level (selected_frame));
1740 }
1741
1742 /* ARGSUSED */
1743 static void
1744 down_silently_command (char *count_exp, int from_tty)
1745 {
1746   down_silently_base (count_exp);
1747 }
1748
1749 static void
1750 down_command (char *count_exp, int from_tty)
1751 {
1752   down_silently_base (count_exp);
1753   show_and_print_stack_frame (selected_frame,
1754                               frame_relative_level (selected_frame), 1);
1755 }
1756 \f
1757 void
1758 return_command (char *retval_exp, int from_tty)
1759 {
1760   struct symbol *thisfun;
1761   CORE_ADDR selected_frame_addr;
1762   CORE_ADDR selected_frame_pc;
1763   struct frame_info *frame;
1764   struct value *return_value = NULL;
1765
1766   if (selected_frame == NULL)
1767     error ("No selected frame.");
1768   thisfun = get_frame_function (selected_frame);
1769   selected_frame_addr = FRAME_FP (selected_frame);
1770   selected_frame_pc = selected_frame->pc;
1771
1772   /* Compute the return value (if any -- possibly getting errors here).  */
1773
1774   if (retval_exp)
1775     {
1776       struct type *return_type = NULL;
1777
1778       return_value = parse_and_eval (retval_exp);
1779
1780       /* Cast return value to the return type of the function.  */
1781       if (thisfun != NULL)
1782         return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
1783       if (return_type == NULL)
1784         return_type = builtin_type_int;
1785       return_value = value_cast (return_type, return_value);
1786
1787       /* Make sure we have fully evaluated it, since
1788          it might live in the stack frame we're about to pop.  */
1789       if (VALUE_LAZY (return_value))
1790         value_fetch_lazy (return_value);
1791     }
1792
1793   /* If interactive, require confirmation.  */
1794
1795   if (from_tty)
1796     {
1797       if (thisfun != 0)
1798         {
1799           if (!query ("Make %s return now? ", SYMBOL_SOURCE_NAME (thisfun)))
1800             {
1801               error ("Not confirmed.");
1802               /* NOTREACHED */
1803             }
1804         }
1805       else if (!query ("Make selected stack frame return now? "))
1806         error ("Not confirmed.");
1807     }
1808
1809   /* Do the real work.  Pop until the specified frame is current.  We
1810      use this method because the selected_frame is not valid after
1811      a POP_FRAME.  The pc comparison makes this work even if the
1812      selected frame shares its fp with another frame.  */
1813
1814   while (selected_frame_addr != (frame = get_current_frame ())->frame
1815          || selected_frame_pc != frame->pc)
1816     POP_FRAME;
1817
1818   /* Then pop that frame.  */
1819
1820   POP_FRAME;
1821
1822   /* Compute the return value (if any) and store in the place
1823      for return values.  */
1824
1825   if (retval_exp)
1826     set_return_value (return_value);
1827
1828   /* If we are at the end of a call dummy now, pop the dummy frame too.  */
1829
1830   if (CALL_DUMMY_HAS_COMPLETED (read_pc(), read_sp (),
1831                                 FRAME_FP (get_current_frame ())))
1832     POP_FRAME;
1833
1834   /* If interactive, print the frame that is now current.  */
1835
1836   if (from_tty)
1837     frame_command ("0", 1);
1838   else
1839     select_frame_command ("0", 0);
1840 }
1841
1842 /* Sets the scope to input function name, provided that the
1843    function is within the current stack frame */
1844
1845 struct function_bounds
1846 {
1847   CORE_ADDR low, high;
1848 };
1849
1850 static void func_command (char *arg, int from_tty);
1851 static void
1852 func_command (char *arg, int from_tty)
1853 {
1854   struct frame_info *fp;
1855   int found = 0;
1856   struct symtabs_and_lines sals;
1857   int i;
1858   int level = 1;
1859   struct function_bounds *func_bounds = (struct function_bounds *) NULL;
1860
1861   if (arg != (char *) NULL)
1862     return;
1863
1864   fp = parse_frame_specification ("0");
1865   sals = decode_line_spec (arg, 1);
1866   func_bounds = (struct function_bounds *) xmalloc (
1867                               sizeof (struct function_bounds) * sals.nelts);
1868   for (i = 0; (i < sals.nelts && !found); i++)
1869     {
1870       if (sals.sals[i].pc == (CORE_ADDR) 0 ||
1871           find_pc_partial_function (sals.sals[i].pc,
1872                                     (char **) NULL,
1873                                     &func_bounds[i].low,
1874                                     &func_bounds[i].high) == 0)
1875         {
1876           func_bounds[i].low =
1877             func_bounds[i].high = (CORE_ADDR) NULL;
1878         }
1879     }
1880
1881   do
1882     {
1883       for (i = 0; (i < sals.nelts && !found); i++)
1884         found = (fp->pc >= func_bounds[i].low &&
1885                  fp->pc < func_bounds[i].high);
1886       if (!found)
1887         {
1888           level = 1;
1889           fp = find_relative_frame (fp, &level);
1890         }
1891     }
1892   while (!found && level == 0);
1893
1894   if (func_bounds)
1895     xfree (func_bounds);
1896
1897   if (!found)
1898     printf_filtered ("'%s' not within current stack frame.\n", arg);
1899   else if (fp != selected_frame)
1900     select_and_print_frame (fp);
1901 }
1902
1903 /* Gets the language of the current frame.  */
1904
1905 enum language
1906 get_frame_language (void)
1907 {
1908   register struct symtab *s;
1909   enum language flang;          /* The language of the current frame */
1910
1911   if (selected_frame)
1912     {
1913       s = find_pc_symtab (selected_frame->pc);
1914       if (s)
1915         flang = s->language;
1916       else
1917         flang = language_unknown;
1918     }
1919   else
1920     flang = language_unknown;
1921
1922   return flang;
1923 }
1924 \f
1925 void
1926 _initialize_stack (void)
1927 {
1928 #if 0
1929   backtrace_limit = 30;
1930 #endif
1931
1932   add_com ("return", class_stack, return_command,
1933            "Make selected stack frame return to its caller.\n\
1934 Control remains in the debugger, but when you continue\n\
1935 execution will resume in the frame above the one now selected.\n\
1936 If an argument is given, it is an expression for the value to return.");
1937
1938   add_com ("up", class_stack, up_command,
1939            "Select and print stack frame that called this one.\n\
1940 An argument says how many frames up to go.");
1941   add_com ("up-silently", class_support, up_silently_command,
1942            "Same as the `up' command, but does not print anything.\n\
1943 This is useful in command scripts.");
1944
1945   add_com ("down", class_stack, down_command,
1946            "Select and print stack frame called by this one.\n\
1947 An argument says how many frames down to go.");
1948   add_com_alias ("do", "down", class_stack, 1);
1949   add_com_alias ("dow", "down", class_stack, 1);
1950   add_com ("down-silently", class_support, down_silently_command,
1951            "Same as the `down' command, but does not print anything.\n\
1952 This is useful in command scripts.");
1953
1954   add_com ("frame", class_stack, frame_command,
1955            "Select and print a stack frame.\n\
1956 With no argument, print the selected stack frame.  (See also \"info frame\").\n\
1957 An argument specifies the frame to select.\n\
1958 It can be a stack frame number or the address of the frame.\n\
1959 With argument, nothing is printed if input is coming from\n\
1960 a command file or a user-defined command.");
1961
1962   add_com_alias ("f", "frame", class_stack, 1);
1963
1964   if (xdb_commands)
1965     {
1966       add_com ("L", class_stack, current_frame_command,
1967                "Print the current stack frame.\n");
1968       add_com_alias ("V", "frame", class_stack, 1);
1969     }
1970   add_com ("select-frame", class_stack, select_frame_command,
1971            "Select a stack frame without printing anything.\n\
1972 An argument specifies the frame to select.\n\
1973 It can be a stack frame number or the address of the frame.\n");
1974
1975   add_com ("backtrace", class_stack, backtrace_command,
1976            "Print backtrace of all stack frames, or innermost COUNT frames.\n\
1977 With a negative argument, print outermost -COUNT frames.\n\
1978 Use of the 'full' qualifier also prints the values of the local variables.\n");
1979   add_com_alias ("bt", "backtrace", class_stack, 0);
1980   if (xdb_commands)
1981     {
1982       add_com_alias ("t", "backtrace", class_stack, 0);
1983       add_com ("T", class_stack, backtrace_full_command,
1984                "Print backtrace of all stack frames, or innermost COUNT frames \n\
1985 and the values of the local variables.\n\
1986 With a negative argument, print outermost -COUNT frames.\n\
1987 Usage: T <count>\n");
1988     }
1989
1990   add_com_alias ("where", "backtrace", class_alias, 0);
1991   add_info ("stack", backtrace_command,
1992             "Backtrace of the stack, or innermost COUNT frames.");
1993   add_info_alias ("s", "stack", 1);
1994   add_info ("frame", frame_info,
1995             "All about selected stack frame, or frame at ADDR.");
1996   add_info_alias ("f", "frame", 1);
1997   add_info ("locals", locals_info,
1998             "Local variables of current stack frame.");
1999   add_info ("args", args_info,
2000             "Argument variables of current stack frame.");
2001   if (xdb_commands)
2002     add_com ("l", class_info, args_plus_locals_info,
2003              "Argument and local variables of current stack frame.");
2004
2005   if (dbx_commands)
2006     add_com ("func", class_stack, func_command,
2007       "Select the stack frame that contains <func>.\nUsage: func <name>\n");
2008
2009   add_info ("catch", catch_info,
2010             "Exceptions that can be caught in the current stack frame.");
2011
2012 #if 0
2013   add_cmd ("backtrace-limit", class_stack, set_backtrace_limit_command,
2014   "Specify maximum number of frames for \"backtrace\" to print by default.",
2015            &setlist);
2016   add_info ("backtrace-limit", backtrace_limit_info,
2017      "The maximum number of frames for \"backtrace\" to print by default.");
2018 #endif
2019 }