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