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