* frame.c (deprecated_selected_frame): Rename to...
[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, 1995,
4    1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007
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 == NULL)
927     {
928       enum unwind_stop_reason reason;
929
930       reason = get_frame_unwind_stop_reason (fi);
931       if (reason != UNWIND_NO_REASON)
932         printf_filtered (_(" Outermost frame: %s\n"),
933                          frame_stop_reason_string (reason));
934     }
935
936   if (calling_frame_info)
937     {
938       printf_filtered (" called by frame at ");
939       deprecated_print_address_numeric (get_frame_base (calling_frame_info),
940                              1, gdb_stdout);
941     }
942   if (get_next_frame (fi) && calling_frame_info)
943     puts_filtered (",");
944   wrap_here ("   ");
945   if (get_next_frame (fi))
946     {
947       printf_filtered (" caller of frame at ");
948       deprecated_print_address_numeric (get_frame_base (get_next_frame (fi)), 1,
949                              gdb_stdout);
950     }
951   if (get_next_frame (fi) || calling_frame_info)
952     puts_filtered ("\n");
953
954   if (s)
955     printf_filtered (" source language %s.\n",
956                      language_str (s->language));
957
958   {
959     /* Address of the argument list for this frame, or 0.  */
960     CORE_ADDR arg_list = get_frame_args_address (fi);
961     /* Number of args for this frame, or -1 if unknown.  */
962     int numargs;
963
964     if (arg_list == 0)
965       printf_filtered (" Arglist at unknown address.\n");
966     else
967       {
968         printf_filtered (" Arglist at ");
969         deprecated_print_address_numeric (arg_list, 1, gdb_stdout);
970         printf_filtered (",");
971
972         if (!FRAME_NUM_ARGS_P ())
973           {
974             numargs = -1;
975             puts_filtered (" args: ");
976           }
977         else
978           {
979             numargs = FRAME_NUM_ARGS (fi);
980             gdb_assert (numargs >= 0);
981             if (numargs == 0)
982               puts_filtered (" no args.");
983             else if (numargs == 1)
984               puts_filtered (" 1 arg: ");
985             else
986               printf_filtered (" %d args: ", numargs);
987           }
988         print_frame_args (func, fi, numargs, gdb_stdout);
989         puts_filtered ("\n");
990       }
991   }
992   {
993     /* Address of the local variables for this frame, or 0.  */
994     CORE_ADDR arg_list = get_frame_locals_address (fi);
995
996     if (arg_list == 0)
997       printf_filtered (" Locals at unknown address,");
998     else
999       {
1000         printf_filtered (" Locals at ");
1001         deprecated_print_address_numeric (arg_list, 1, gdb_stdout);
1002         printf_filtered (",");
1003       }
1004   }
1005
1006   /* Print as much information as possible on the location of all the
1007      registers.  */
1008   {
1009     enum lval_type lval;
1010     int optimized;
1011     CORE_ADDR addr;
1012     int realnum;
1013     int count;
1014     int i;
1015     int need_nl = 1;
1016
1017     /* The sp is special; what's displayed isn't the save address, but
1018        the value of the previous frame's sp.  This is a legacy thing,
1019        at one stage the frame cached the previous frame's SP instead
1020        of its address, hence it was easiest to just display the cached
1021        value.  */
1022     if (SP_REGNUM >= 0)
1023       {
1024         /* Find out the location of the saved stack pointer with out
1025            actually evaluating it.  */
1026         frame_register_unwind (fi, SP_REGNUM, &optimized, &lval, &addr,
1027                                &realnum, NULL);
1028         if (!optimized && lval == not_lval)
1029           {
1030             gdb_byte value[MAX_REGISTER_SIZE];
1031             CORE_ADDR sp;
1032             frame_register_unwind (fi, SP_REGNUM, &optimized, &lval, &addr,
1033                                    &realnum, value);
1034             /* NOTE: cagney/2003-05-22: This is assuming that the
1035                stack pointer was packed as an unsigned integer.  That
1036                may or may not be valid.  */
1037             sp = extract_unsigned_integer (value, register_size (current_gdbarch, SP_REGNUM));
1038             printf_filtered (" Previous frame's sp is ");
1039             deprecated_print_address_numeric (sp, 1, gdb_stdout);
1040             printf_filtered ("\n");
1041             need_nl = 0;
1042           }
1043         else if (!optimized && lval == lval_memory)
1044           {
1045             printf_filtered (" Previous frame's sp at ");
1046             deprecated_print_address_numeric (addr, 1, gdb_stdout);
1047             printf_filtered ("\n");
1048             need_nl = 0;
1049           }
1050         else if (!optimized && lval == lval_register)
1051           {
1052             printf_filtered (" Previous frame's sp in %s\n",
1053                              REGISTER_NAME (realnum));
1054             need_nl = 0;
1055           }
1056         /* else keep quiet.  */
1057       }
1058
1059     count = 0;
1060     numregs = NUM_REGS + NUM_PSEUDO_REGS;
1061     for (i = 0; i < numregs; i++)
1062       if (i != SP_REGNUM
1063           && gdbarch_register_reggroup_p (current_gdbarch, i, all_reggroup))
1064         {
1065           /* Find out the location of the saved register without
1066              fetching the corresponding value.  */
1067           frame_register_unwind (fi, i, &optimized, &lval, &addr, &realnum,
1068                                  NULL);
1069           /* For moment, only display registers that were saved on the
1070              stack.  */
1071           if (!optimized && lval == lval_memory)
1072             {
1073               if (count == 0)
1074                 puts_filtered (" Saved registers:\n ");
1075               else
1076                 puts_filtered (",");
1077               wrap_here (" ");
1078               printf_filtered (" %s at ", REGISTER_NAME (i));
1079               deprecated_print_address_numeric (addr, 1, gdb_stdout);
1080               count++;
1081             }
1082         }
1083     if (count || need_nl)
1084       puts_filtered ("\n");
1085   }
1086 }
1087
1088 /* Print briefly all stack frames or just the innermost COUNT_EXP
1089    frames.  */
1090
1091 static void
1092 backtrace_command_1 (char *count_exp, int show_locals, int from_tty)
1093 {
1094   struct frame_info *fi;
1095   int count;
1096   int i;
1097   struct frame_info *trailing;
1098   int trailing_level;
1099
1100   if (!target_has_stack)
1101     error (_("No stack."));
1102
1103   /* The following code must do two things.  First, it must set the
1104      variable TRAILING to the frame from which we should start
1105      printing.  Second, it must set the variable count to the number
1106      of frames which we should print, or -1 if all of them.  */
1107   trailing = get_current_frame ();
1108
1109   /* The target can be in a state where there is no valid frames
1110      (e.g., just connected). */
1111   if (trailing == NULL)
1112     error (_("No stack."));
1113
1114   trailing_level = 0;
1115   if (count_exp)
1116     {
1117       count = parse_and_eval_long (count_exp);
1118       if (count < 0)
1119         {
1120           struct frame_info *current;
1121
1122           count = -count;
1123
1124           current = trailing;
1125           while (current && count--)
1126             {
1127               QUIT;
1128               current = get_prev_frame (current);
1129             }
1130
1131           /* Will stop when CURRENT reaches the top of the stack.
1132              TRAILING will be COUNT below it.  */
1133           while (current)
1134             {
1135               QUIT;
1136               trailing = get_prev_frame (trailing);
1137               current = get_prev_frame (current);
1138               trailing_level++;
1139             }
1140
1141           count = -1;
1142         }
1143     }
1144   else
1145     count = -1;
1146
1147   if (info_verbose)
1148     {
1149       struct partial_symtab *ps;
1150
1151       /* Read in symbols for all of the frames.  Need to do this in a
1152          separate pass so that "Reading in symbols for xxx" messages
1153          don't screw up the appearance of the backtrace.  Also if
1154          people have strong opinions against reading symbols for
1155          backtrace this may have to be an option.  */
1156       i = count;
1157       for (fi = trailing; fi != NULL && i--; fi = get_prev_frame (fi))
1158         {
1159           QUIT;
1160           ps = find_pc_psymtab (get_frame_address_in_block (fi));
1161           if (ps)
1162             PSYMTAB_TO_SYMTAB (ps); /* Force syms to come in.  */
1163         }
1164     }
1165
1166   for (i = 0, fi = trailing; fi && count--; i++, fi = get_prev_frame (fi))
1167     {
1168       QUIT;
1169
1170       /* Don't use print_stack_frame; if an error() occurs it probably
1171          means further attempts to backtrace would fail (on the other
1172          hand, perhaps the code does or could be fixed to make sure
1173          the frame->prev field gets set to NULL in that case).  */
1174       print_frame_info (fi, 1, LOCATION, 1);
1175       if (show_locals)
1176         print_frame_local_vars (fi, 1, gdb_stdout);
1177
1178       /* Save the last frame to check for error conditions.  */
1179       trailing = fi;
1180     }
1181
1182   /* If we've stopped before the end, mention that.  */
1183   if (fi && from_tty)
1184     printf_filtered (_("(More stack frames follow...)\n"));
1185
1186   /* If we've run out of frames, and the reason appears to be an error
1187      condition, print it.  */
1188   if (fi == NULL && trailing != NULL)
1189     {
1190       enum unwind_stop_reason reason;
1191
1192       reason = get_frame_unwind_stop_reason (trailing);
1193       if (reason > UNWIND_FIRST_ERROR)
1194         printf_filtered (_("Backtrace stopped: %s\n"),
1195                          frame_stop_reason_string (reason));
1196     }
1197 }
1198
1199 struct backtrace_command_args
1200 {
1201   char *count_exp;
1202   int show_locals;
1203   int from_tty;
1204 };
1205
1206 /* Stub for catch_errors.  */
1207
1208 static int
1209 backtrace_command_stub (void *data)
1210 {
1211   struct backtrace_command_args *args = data;
1212   backtrace_command_1 (args->count_exp, args->show_locals, args->from_tty);
1213   return 0;
1214 }
1215
1216 static void
1217 backtrace_command (char *arg, int from_tty)
1218 {
1219   struct cleanup *old_chain = NULL;
1220   int fulltrace_arg = -1, arglen = 0, argc = 0;
1221   struct backtrace_command_args btargs;
1222
1223   if (arg)
1224     {
1225       char **argv;
1226       int i;
1227
1228       argv = buildargv (arg);
1229       old_chain = make_cleanup_freeargv (argv);
1230       argc = 0;
1231       for (i = 0; argv[i]; i++)
1232         {
1233           unsigned int j;
1234
1235           for (j = 0; j < strlen (argv[i]); j++)
1236             argv[i][j] = tolower (argv[i][j]);
1237
1238           if (fulltrace_arg < 0 && subset_compare (argv[i], "full"))
1239             fulltrace_arg = argc;
1240           else
1241             {
1242               arglen += strlen (argv[i]);
1243               argc++;
1244             }
1245         }
1246       arglen += argc;
1247       if (fulltrace_arg >= 0)
1248         {
1249           if (arglen > 0)
1250             {
1251               arg = xmalloc (arglen + 1);
1252               memset (arg, 0, arglen + 1);
1253               for (i = 0; i < (argc + 1); i++)
1254                 {
1255                   if (i != fulltrace_arg)
1256                     {
1257                       strcat (arg, argv[i]);
1258                       strcat (arg, " ");
1259                     }
1260                 }
1261             }
1262           else
1263             arg = NULL;
1264         }
1265     }
1266
1267   btargs.count_exp = arg;
1268   btargs.show_locals = (fulltrace_arg >= 0);
1269   btargs.from_tty = from_tty;
1270   catch_errors (backtrace_command_stub, &btargs, "", RETURN_MASK_ERROR);
1271
1272   if (fulltrace_arg >= 0 && arglen > 0)
1273     xfree (arg);
1274
1275   if (old_chain)
1276     do_cleanups (old_chain);
1277 }
1278
1279 static void
1280 backtrace_full_command (char *arg, int from_tty)
1281 {
1282   struct backtrace_command_args btargs;
1283   btargs.count_exp = arg;
1284   btargs.show_locals = 1;
1285   btargs.from_tty = from_tty;
1286   catch_errors (backtrace_command_stub, &btargs, "", RETURN_MASK_ERROR);
1287 }
1288 \f
1289
1290 /* Print the local variables of a block B active in FRAME on STREAM.
1291    Return 1 if any variables were printed; 0 otherwise.  */
1292
1293 static int
1294 print_block_frame_locals (struct block *b, struct frame_info *frame,
1295                           int num_tabs, struct ui_file *stream)
1296 {
1297   struct dict_iterator iter;
1298   struct symbol *sym;
1299   int values_printed = 0;
1300   int j;
1301
1302   ALL_BLOCK_SYMBOLS (b, iter, sym)
1303     {
1304       switch (SYMBOL_CLASS (sym))
1305         {
1306         case LOC_LOCAL:
1307         case LOC_REGISTER:
1308         case LOC_STATIC:
1309         case LOC_BASEREG:
1310         case LOC_COMPUTED:
1311           values_printed = 1;
1312           for (j = 0; j < num_tabs; j++)
1313             fputs_filtered ("\t", stream);
1314           fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
1315           fputs_filtered (" = ", stream);
1316           print_variable_value (sym, frame, stream);
1317           fprintf_filtered (stream, "\n");
1318           break;
1319
1320         default:
1321           /* Ignore symbols which are not locals.  */
1322           break;
1323         }
1324     }
1325
1326   return values_printed;
1327 }
1328
1329 /* Same, but print labels.  */
1330
1331 static int
1332 print_block_frame_labels (struct block *b, int *have_default,
1333                           struct ui_file *stream)
1334 {
1335   struct dict_iterator iter;
1336   struct symbol *sym;
1337   int values_printed = 0;
1338
1339   ALL_BLOCK_SYMBOLS (b, iter, sym)
1340     {
1341       if (strcmp (DEPRECATED_SYMBOL_NAME (sym), "default") == 0)
1342         {
1343           if (*have_default)
1344             continue;
1345           *have_default = 1;
1346         }
1347       if (SYMBOL_CLASS (sym) == LOC_LABEL)
1348         {
1349           struct symtab_and_line sal;
1350           sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
1351           values_printed = 1;
1352           fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
1353           if (addressprint)
1354             {
1355               fprintf_filtered (stream, " ");
1356               deprecated_print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), 1, stream);
1357             }
1358           fprintf_filtered (stream, " in file %s, line %d\n",
1359                             sal.symtab->filename, sal.line);
1360         }
1361     }
1362
1363   return values_printed;
1364 }
1365
1366 /* Print on STREAM all the local variables in frame FRAME, including
1367    all the blocks active in that frame at its current PC.
1368
1369    Returns 1 if the job was done, or 0 if nothing was printed because
1370    we have no info on the function running in FRAME.  */
1371
1372 static void
1373 print_frame_local_vars (struct frame_info *frame, int num_tabs,
1374                         struct ui_file *stream)
1375 {
1376   struct block *block = get_frame_block (frame, 0);
1377   int values_printed = 0;
1378
1379   if (block == 0)
1380     {
1381       fprintf_filtered (stream, "No symbol table info available.\n");
1382       return;
1383     }
1384
1385   while (block)
1386     {
1387       if (print_block_frame_locals (block, frame, num_tabs, stream))
1388         values_printed = 1;
1389       /* After handling the function's top-level block, stop.  Don't
1390          continue to its superblock, the block of per-file symbols.  */
1391       if (BLOCK_FUNCTION (block))
1392         break;
1393       block = BLOCK_SUPERBLOCK (block);
1394     }
1395
1396   if (!values_printed)
1397     fprintf_filtered (stream, _("No locals.\n"));
1398 }
1399
1400 /* Same, but print labels.  */
1401
1402 static void
1403 print_frame_label_vars (struct frame_info *frame, int this_level_only,
1404                         struct ui_file *stream)
1405 {
1406   struct blockvector *bl;
1407   struct block *block = get_frame_block (frame, 0);
1408   int values_printed = 0;
1409   int index, have_default = 0;
1410   char *blocks_printed;
1411   CORE_ADDR pc = get_frame_pc (frame);
1412
1413   if (block == 0)
1414     {
1415       fprintf_filtered (stream, "No symbol table info available.\n");
1416       return;
1417     }
1418
1419   bl = blockvector_for_pc (BLOCK_END (block) - 4, &index);
1420   blocks_printed = alloca (BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1421   memset (blocks_printed, 0, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1422
1423   while (block != 0)
1424     {
1425       CORE_ADDR end = BLOCK_END (block) - 4;
1426       int last_index;
1427
1428       if (bl != blockvector_for_pc (end, &index))
1429         error (_("blockvector blotch"));
1430       if (BLOCKVECTOR_BLOCK (bl, index) != block)
1431         error (_("blockvector botch"));
1432       last_index = BLOCKVECTOR_NBLOCKS (bl);
1433       index += 1;
1434
1435       /* Don't print out blocks that have gone by.  */
1436       while (index < last_index
1437              && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < pc)
1438         index++;
1439
1440       while (index < last_index
1441              && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < end)
1442         {
1443           if (blocks_printed[index] == 0)
1444             {
1445               if (print_block_frame_labels (BLOCKVECTOR_BLOCK (bl, index),
1446                                             &have_default, stream))
1447                 values_printed = 1;
1448               blocks_printed[index] = 1;
1449             }
1450           index++;
1451         }
1452       if (have_default)
1453         return;
1454       if (values_printed && this_level_only)
1455         return;
1456
1457       /* After handling the function's top-level block, stop.  Don't
1458          continue to its superblock, the block of per-file symbols.  */
1459       if (BLOCK_FUNCTION (block))
1460         break;
1461       block = BLOCK_SUPERBLOCK (block);
1462     }
1463
1464   if (!values_printed && !this_level_only)
1465     fprintf_filtered (stream, _("No catches.\n"));
1466 }
1467
1468 void
1469 locals_info (char *args, int from_tty)
1470 {
1471   print_frame_local_vars (get_selected_frame (_("No frame selected.")),
1472                           0, gdb_stdout);
1473 }
1474
1475 static void
1476 catch_info (char *ignore, int from_tty)
1477 {
1478   struct symtab_and_line *sal;
1479
1480   /* Check for target support for exception handling */
1481   sal = target_enable_exception_callback (EX_EVENT_CATCH, 1);
1482   if (sal)
1483     {
1484       /* Currently not handling this.  Ideally, here we should
1485          interact with the C++ runtime system to find the list of
1486          active handlers, etc.  */
1487       fprintf_filtered (gdb_stdout, _("\
1488 Info catch not supported with this target/compiler combination.\n"));
1489     }
1490   else
1491     {
1492       /* Assume g++ compiled code; old GDB 4.16 behaviour.  */
1493       print_frame_label_vars (get_selected_frame (_("No frame selected.")),
1494                               0, gdb_stdout);
1495     }
1496 }
1497
1498 static void
1499 print_frame_arg_vars (struct frame_info *frame, struct ui_file *stream)
1500 {
1501   struct symbol *func = get_frame_function (frame);
1502   struct block *b;
1503   struct dict_iterator iter;
1504   struct symbol *sym, *sym2;
1505   int values_printed = 0;
1506
1507   if (func == 0)
1508     {
1509       fprintf_filtered (stream, _("No symbol table info available.\n"));
1510       return;
1511     }
1512
1513   b = SYMBOL_BLOCK_VALUE (func);
1514   ALL_BLOCK_SYMBOLS (b, iter, sym)
1515     {
1516       switch (SYMBOL_CLASS (sym))
1517         {
1518         case LOC_ARG:
1519         case LOC_LOCAL_ARG:
1520         case LOC_REF_ARG:
1521         case LOC_REGPARM:
1522         case LOC_REGPARM_ADDR:
1523         case LOC_BASEREG_ARG:
1524         case LOC_COMPUTED_ARG:
1525           values_printed = 1;
1526           fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
1527           fputs_filtered (" = ", stream);
1528
1529           /* We have to look up the symbol because arguments can have
1530              two entries (one a parameter, one a local) and the one we
1531              want is the local, which lookup_symbol will find for us.
1532              This includes gcc1 (not gcc2) on the sparc when passing a
1533              small structure and gcc2 when the argument type is float
1534              and it is passed as a double and converted to float by
1535              the prologue (in the latter case the type of the LOC_ARG
1536              symbol is double and the type of the LOC_LOCAL symbol is
1537              float).  There are also LOC_ARG/LOC_REGISTER pairs which
1538              are not combined in symbol-reading.  */
1539
1540           sym2 = lookup_symbol (DEPRECATED_SYMBOL_NAME (sym),
1541                                 b, VAR_DOMAIN, NULL, NULL);
1542           print_variable_value (sym2, frame, stream);
1543           fprintf_filtered (stream, "\n");
1544           break;
1545
1546         default:
1547           /* Don't worry about things which aren't arguments.  */
1548           break;
1549         }
1550     }
1551
1552   if (!values_printed)
1553     fprintf_filtered (stream, _("No arguments.\n"));
1554 }
1555
1556 void
1557 args_info (char *ignore, int from_tty)
1558 {
1559   print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
1560                         gdb_stdout);
1561 }
1562
1563
1564 static void
1565 args_plus_locals_info (char *ignore, int from_tty)
1566 {
1567   args_info (ignore, from_tty);
1568   locals_info (ignore, from_tty);
1569 }
1570 \f
1571
1572 /* Select frame FRAME.  Also print the stack frame and show the source
1573    if this is the tui version.  */
1574 static void
1575 select_and_print_frame (struct frame_info *frame)
1576 {
1577   select_frame (frame);
1578   if (frame)
1579     print_stack_frame (frame, 1, SRC_AND_LOC);
1580 }
1581 \f
1582 /* Return the symbol-block in which the selected frame is executing.
1583    Can return zero under various legitimate circumstances.
1584
1585    If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
1586    code address within the block returned.  We use this to decide
1587    which macros are in scope.  */
1588
1589 struct block *
1590 get_selected_block (CORE_ADDR *addr_in_block)
1591 {
1592   if (!target_has_stack)
1593     return 0;
1594
1595   return get_frame_block (get_selected_frame (NULL), addr_in_block);
1596 }
1597
1598 /* Find a frame a certain number of levels away from FRAME.
1599    LEVEL_OFFSET_PTR points to an int containing the number of levels.
1600    Positive means go to earlier frames (up); negative, the reverse.
1601    The int that contains the number of levels is counted toward
1602    zero as the frames for those levels are found.
1603    If the top or bottom frame is reached, that frame is returned,
1604    but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
1605    how much farther the original request asked to go.  */
1606
1607 struct frame_info *
1608 find_relative_frame (struct frame_info *frame, int *level_offset_ptr)
1609 {
1610   /* Going up is simple: just call get_prev_frame enough times or
1611      until the initial frame is reached.  */
1612   while (*level_offset_ptr > 0)
1613     {
1614       struct frame_info *prev = get_prev_frame (frame);
1615       if (!prev)
1616         break;
1617       (*level_offset_ptr)--;
1618       frame = prev;
1619     }
1620
1621   /* Going down is just as simple.  */
1622   while (*level_offset_ptr < 0)
1623     {
1624       struct frame_info *next = get_next_frame (frame);
1625       if (!next)
1626         break;
1627       (*level_offset_ptr)++;
1628       frame = next;
1629     }
1630
1631   return frame;
1632 }
1633
1634 /* The "select_frame" command.  With no argument this is a NOP.
1635    Select the frame at level LEVEL_EXP if it is a valid level.
1636    Otherwise, treat LEVEL_EXP as an address expression and select it.
1637
1638    See parse_frame_specification for more info on proper frame
1639    expressions.  */
1640
1641 void
1642 select_frame_command (char *level_exp, int from_tty)
1643 {
1644   select_frame (parse_frame_specification_1 (level_exp, "No stack.", NULL));
1645 }
1646
1647 /* The "frame" command.  With no argument, print the selected frame
1648    briefly.  With an argument, behave like select_frame and then print
1649    the selected frame.  */
1650
1651 static void
1652 frame_command (char *level_exp, int from_tty)
1653 {
1654   select_frame_command (level_exp, from_tty);
1655   print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1656 }
1657
1658 /* The XDB Compatibility command to print the current frame.  */
1659
1660 static void
1661 current_frame_command (char *level_exp, int from_tty)
1662 {
1663   print_stack_frame (get_selected_frame (_("No stack.")), 1, SRC_AND_LOC);
1664 }
1665
1666 /* Select the frame up one or COUNT_EXP stack levels from the
1667    previously selected frame, and print it briefly.  */
1668
1669 static void
1670 up_silently_base (char *count_exp)
1671 {
1672   struct frame_info *frame;
1673   int count = 1;
1674
1675   if (count_exp)
1676     count = parse_and_eval_long (count_exp);
1677
1678   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
1679   if (count != 0 && count_exp == NULL)
1680     error (_("Initial frame selected; you cannot go up."));
1681   select_frame (frame);
1682 }
1683
1684 static void
1685 up_silently_command (char *count_exp, int from_tty)
1686 {
1687   up_silently_base (count_exp);
1688 }
1689
1690 static void
1691 up_command (char *count_exp, int from_tty)
1692 {
1693   up_silently_base (count_exp);
1694   print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1695 }
1696
1697 /* Select the frame down one or COUNT_EXP stack levels from the previously
1698    selected frame, and print it briefly.  */
1699
1700 static void
1701 down_silently_base (char *count_exp)
1702 {
1703   struct frame_info *frame;
1704   int count = -1;
1705   if (count_exp)
1706     count = -parse_and_eval_long (count_exp);
1707
1708   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
1709   if (count != 0 && count_exp == NULL)
1710     {
1711       /* We only do this if COUNT_EXP is not specified.  That way
1712          "down" means to really go down (and let me know if that is
1713          impossible), but "down 9999" can be used to mean go all the
1714          way down without getting an error.  */
1715
1716       error (_("Bottom (innermost) frame selected; you cannot go down."));
1717     }
1718
1719   select_frame (frame);
1720 }
1721
1722 static void
1723 down_silently_command (char *count_exp, int from_tty)
1724 {
1725   down_silently_base (count_exp);
1726 }
1727
1728 static void
1729 down_command (char *count_exp, int from_tty)
1730 {
1731   down_silently_base (count_exp);
1732   print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1733 }
1734 \f
1735
1736 void
1737 return_command (char *retval_exp, int from_tty)
1738 {
1739   struct symbol *thisfun;
1740   struct value *return_value = NULL;
1741   const char *query_prefix = "";
1742
1743   thisfun = get_frame_function (get_selected_frame ("No selected frame."));
1744
1745   /* Compute the return value.  If the computation triggers an error,
1746      let it bail.  If the return type can't be handled, set
1747      RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
1748      message.  */
1749   if (retval_exp)
1750     {
1751       struct type *return_type = NULL;
1752
1753       /* Compute the return value.  Should the computation fail, this
1754          call throws an error.  */
1755       return_value = parse_and_eval (retval_exp);
1756
1757       /* Cast return value to the return type of the function.  Should
1758          the cast fail, this call throws an error.  */
1759       if (thisfun != NULL)
1760         return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
1761       if (return_type == NULL)
1762         return_type = builtin_type_int;
1763       CHECK_TYPEDEF (return_type);
1764       return_value = value_cast (return_type, return_value);
1765
1766       /* Make sure the value is fully evaluated.  It may live in the
1767          stack frame we're about to pop.  */
1768       if (value_lazy (return_value))
1769         value_fetch_lazy (return_value);
1770
1771       if (TYPE_CODE (return_type) == TYPE_CODE_VOID)
1772         /* If the return-type is "void", don't try to find the
1773            return-value's location.  However, do still evaluate the
1774            return expression so that, even when the expression result
1775            is discarded, side effects such as "return i++" still
1776            occur.  */
1777         return_value = NULL;
1778       /* FIXME: cagney/2004-01-17: If the architecture implements both
1779          return_value and extract_returned_value_address, should allow
1780          "return" to work - don't set return_value to NULL.  */
1781       else if (!gdbarch_return_value_p (current_gdbarch)
1782                && (TYPE_CODE (return_type) == TYPE_CODE_STRUCT
1783                    || TYPE_CODE (return_type) == TYPE_CODE_UNION))
1784         {
1785           /* NOTE: cagney/2003-10-20: Compatibility hack for legacy
1786              code.  Old architectures don't expect STORE_RETURN_VALUE
1787              to be called with with a small struct that needs to be
1788              stored in registers.  Don't start doing it now.  */
1789           query_prefix = "\
1790 A structure or union return type is not supported by this architecture.\n\
1791 If you continue, the return value that you specified will be ignored.\n";
1792           return_value = NULL;
1793         }
1794       else if (using_struct_return (return_type, 0))
1795         {
1796           query_prefix = "\
1797 The location at which to store the function's return value is unknown.\n\
1798 If you continue, the return value that you specified will be ignored.\n";
1799           return_value = NULL;
1800         }
1801     }
1802
1803   /* Does an interactive user really want to do this?  Include
1804      information, such as how well GDB can handle the return value, in
1805      the query message.  */
1806   if (from_tty)
1807     {
1808       int confirmed;
1809       if (thisfun == NULL)
1810         confirmed = query (_("%sMake selected stack frame return now? "),
1811                            query_prefix);
1812       else
1813         confirmed = query (_("%sMake %s return now? "), query_prefix,
1814                            SYMBOL_PRINT_NAME (thisfun));
1815       if (!confirmed)
1816         error (_("Not confirmed"));
1817     }
1818
1819   /* NOTE: cagney/2003-01-18: Is this silly?  Rather than pop each
1820      frame in turn, should this code just go straight to the relevant
1821      frame and pop that?  */
1822
1823   /* First discard all frames inner-to the selected frame (making the
1824      selected frame current).  */
1825   {
1826     struct frame_id selected_id = get_frame_id (get_selected_frame (NULL));
1827     while (!frame_id_eq (selected_id, get_frame_id (get_current_frame ())))
1828       {
1829         if (frame_id_inner (selected_id, get_frame_id (get_current_frame ())))
1830           /* Caught in the safety net, oops!  We've gone way past the
1831              selected frame.  */
1832           error (_("Problem while popping stack frames (corrupt stack?)"));
1833         frame_pop (get_current_frame ());
1834       }
1835   }
1836
1837   /* Second discard the selected frame (which is now also the current
1838      frame).  */
1839   frame_pop (get_current_frame ());
1840
1841   /* Store RETURN_VALUE in the just-returned register set.  */
1842   if (return_value != NULL)
1843     {
1844       struct type *return_type = value_type (return_value);
1845       gdb_assert (gdbarch_return_value (current_gdbarch, return_type,
1846                                         NULL, NULL, NULL)
1847                   == RETURN_VALUE_REGISTER_CONVENTION);
1848       gdbarch_return_value (current_gdbarch, return_type,
1849                             current_regcache, NULL /*read*/,
1850                             value_contents (return_value) /*write*/);
1851     }
1852
1853   /* If we are at the end of a call dummy now, pop the dummy frame
1854      too.  */
1855   if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
1856     frame_pop (get_current_frame ());
1857
1858   /* If interactive, print the frame that is now current.  */
1859   if (from_tty)
1860     frame_command ("0", 1);
1861   else
1862     select_frame_command ("0", 0);
1863 }
1864
1865 /* Sets the scope to input function name, provided that the function
1866    is within the current stack frame */
1867
1868 struct function_bounds
1869 {
1870   CORE_ADDR low, high;
1871 };
1872
1873 static void
1874 func_command (char *arg, int from_tty)
1875 {
1876   struct frame_info *frame;
1877   int found = 0;
1878   struct symtabs_and_lines sals;
1879   int i;
1880   int level = 1;
1881   struct function_bounds *func_bounds = NULL;
1882
1883   if (arg != NULL)
1884     return;
1885
1886   frame = parse_frame_specification ("0");
1887   sals = decode_line_spec (arg, 1);
1888   func_bounds = (struct function_bounds *) xmalloc (
1889                               sizeof (struct function_bounds) * sals.nelts);
1890   for (i = 0; (i < sals.nelts && !found); i++)
1891     {
1892       if (sals.sals[i].pc == 0
1893           || find_pc_partial_function (sals.sals[i].pc, NULL,
1894                                        &func_bounds[i].low,
1895                                        &func_bounds[i].high) == 0)
1896         {
1897           func_bounds[i].low = func_bounds[i].high = 0;
1898         }
1899     }
1900
1901   do
1902     {
1903       for (i = 0; (i < sals.nelts && !found); i++)
1904         found = (get_frame_pc (frame) >= func_bounds[i].low
1905                  && get_frame_pc (frame) < func_bounds[i].high);
1906       if (!found)
1907         {
1908           level = 1;
1909           frame = find_relative_frame (frame, &level);
1910         }
1911     }
1912   while (!found && level == 0);
1913
1914   if (func_bounds)
1915     xfree (func_bounds);
1916
1917   if (!found)
1918     printf_filtered (_("'%s' not within current stack frame.\n"), arg);
1919   else if (frame != get_selected_frame (NULL))
1920     select_and_print_frame (frame);
1921 }
1922
1923 /* Gets the language of the current frame.  */
1924
1925 enum language
1926 get_frame_language (void)
1927 {
1928   struct frame_info *frame = deprecated_safe_get_selected_frame ();
1929
1930   if (frame)
1931     {
1932       /* We determine the current frame language by looking up its
1933          associated symtab.  To retrieve this symtab, we use the frame
1934          PC.  However we cannot use the frame PC as is, because it
1935          usually points to the instruction following the "call", which
1936          is sometimes the first instruction of another function.  So
1937          we rely on get_frame_address_in_block(), it provides us with
1938          a PC that is guaranteed to be inside the frame's code
1939          block.  */
1940       CORE_ADDR pc = get_frame_address_in_block (frame);
1941       struct symtab *s = find_pc_symtab (pc);
1942
1943       if (s)
1944         return s->language;
1945     }
1946
1947   return language_unknown;
1948 }
1949 \f
1950
1951 /* Provide a prototype to silence -Wmissing-prototypes.  */
1952 void _initialize_stack (void);
1953
1954 void
1955 _initialize_stack (void)
1956 {
1957 #if 0
1958   backtrace_limit = 30;
1959 #endif
1960
1961   add_com ("return", class_stack, return_command, _("\
1962 Make selected stack frame return to its caller.\n\
1963 Control remains in the debugger, but when you continue\n\
1964 execution will resume in the frame above the one now selected.\n\
1965 If an argument is given, it is an expression for the value to return."));
1966
1967   add_com ("up", class_stack, up_command, _("\
1968 Select and print stack frame that called this one.\n\
1969 An argument says how many frames up to go."));
1970   add_com ("up-silently", class_support, up_silently_command, _("\
1971 Same as the `up' command, but does not print anything.\n\
1972 This is useful in command scripts."));
1973
1974   add_com ("down", class_stack, down_command, _("\
1975 Select and print stack frame called by this one.\n\
1976 An argument says how many frames down to go."));
1977   add_com_alias ("do", "down", class_stack, 1);
1978   add_com_alias ("dow", "down", class_stack, 1);
1979   add_com ("down-silently", class_support, down_silently_command, _("\
1980 Same as the `down' command, but does not print anything.\n\
1981 This is useful in command scripts."));
1982
1983   add_com ("frame", class_stack, frame_command, _("\
1984 Select and print a stack frame.\n\
1985 With no argument, print the selected stack frame.  (See also \"info frame\").\n\
1986 An argument specifies the frame to select.\n\
1987 It can be a stack frame number or the address of the frame.\n\
1988 With argument, nothing is printed if input is coming from\n\
1989 a command file or a user-defined command."));
1990
1991   add_com_alias ("f", "frame", class_stack, 1);
1992
1993   if (xdb_commands)
1994     {
1995       add_com ("L", class_stack, current_frame_command,
1996                _("Print the current stack frame.\n"));
1997       add_com_alias ("V", "frame", class_stack, 1);
1998     }
1999   add_com ("select-frame", class_stack, select_frame_command, _("\
2000 Select a stack frame without printing anything.\n\
2001 An argument specifies the frame to select.\n\
2002 It can be a stack frame number or the address of the frame.\n"));
2003
2004   add_com ("backtrace", class_stack, backtrace_command, _("\
2005 Print backtrace of all stack frames, or innermost COUNT frames.\n\
2006 With a negative argument, print outermost -COUNT frames.\n\
2007 Use of the 'full' qualifier also prints the values of the local variables.\n"));
2008   add_com_alias ("bt", "backtrace", class_stack, 0);
2009   if (xdb_commands)
2010     {
2011       add_com_alias ("t", "backtrace", class_stack, 0);
2012       add_com ("T", class_stack, backtrace_full_command, _("\
2013 Print backtrace of all stack frames, or innermost COUNT frames \n\
2014 and the values of the local variables.\n\
2015 With a negative argument, print outermost -COUNT frames.\n\
2016 Usage: T <count>\n"));
2017     }
2018
2019   add_com_alias ("where", "backtrace", class_alias, 0);
2020   add_info ("stack", backtrace_command,
2021             _("Backtrace of the stack, or innermost COUNT frames."));
2022   add_info_alias ("s", "stack", 1);
2023   add_info ("frame", frame_info,
2024             _("All about selected stack frame, or frame at ADDR."));
2025   add_info_alias ("f", "frame", 1);
2026   add_info ("locals", locals_info,
2027             _("Local variables of current stack frame."));
2028   add_info ("args", args_info,
2029             _("Argument variables of current stack frame."));
2030   if (xdb_commands)
2031     add_com ("l", class_info, args_plus_locals_info,
2032              _("Argument and local variables of current stack frame."));
2033
2034   if (dbx_commands)
2035     add_com ("func", class_stack, func_command, _("\
2036 Select the stack frame that contains <func>.\n\
2037 Usage: func <name>\n"));
2038
2039   add_info ("catch", catch_info,
2040             _("Exceptions that can be caught in the current stack frame."));
2041
2042 #if 0
2043   add_cmd ("backtrace-limit", class_stack, set_backtrace_limit_command, _(\
2044 "Specify maximum number of frames for \"backtrace\" to print by default."),
2045            &setlist);
2046   add_info ("backtrace-limit", backtrace_limit_info, _("\
2047 The maximum number of frames for \"backtrace\" to print by default."));
2048 #endif
2049 }