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