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