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