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