Support lexical blocks and function bodies that occupy
[platform/upstream/binutils.git] / gdb / stack.c
1 /* Print and select stack frames for GDB, the GNU debugger.
2
3    Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4    1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007
5    Free Software Foundation, Inc.
6
7    This file is part of GDB.
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 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   /* Check for target support for exception handling */
1553   sal = target_enable_exception_callback (EX_EVENT_CATCH, 1);
1554   if (sal)
1555     {
1556       /* Currently not handling this.  Ideally, here we should
1557          interact with the C++ runtime system to find the list of
1558          active handlers, etc.  */
1559       fprintf_filtered (gdb_stdout, _("\
1560 Info catch not supported with this target/compiler combination.\n"));
1561     }
1562   else
1563     {
1564       /* Assume g++ compiled code; old GDB 4.16 behaviour.  */
1565       print_frame_label_vars (get_selected_frame (_("No frame selected.")),
1566                               0, gdb_stdout);
1567     }
1568 }
1569
1570 static void
1571 print_frame_arg_vars (struct frame_info *frame, struct ui_file *stream)
1572 {
1573   struct symbol *func = get_frame_function (frame);
1574   struct block *b;
1575   struct dict_iterator iter;
1576   struct symbol *sym, *sym2;
1577   int values_printed = 0;
1578
1579   if (func == 0)
1580     {
1581       fprintf_filtered (stream, _("No symbol table info available.\n"));
1582       return;
1583     }
1584
1585   b = SYMBOL_BLOCK_VALUE (func);
1586   ALL_BLOCK_SYMBOLS (b, iter, sym)
1587     {
1588       switch (SYMBOL_CLASS (sym))
1589         {
1590         case LOC_ARG:
1591         case LOC_LOCAL_ARG:
1592         case LOC_REF_ARG:
1593         case LOC_REGPARM:
1594         case LOC_REGPARM_ADDR:
1595         case LOC_BASEREG_ARG:
1596         case LOC_COMPUTED_ARG:
1597           values_printed = 1;
1598           fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
1599           fputs_filtered (" = ", stream);
1600
1601           /* We have to look up the symbol because arguments can have
1602              two entries (one a parameter, one a local) and the one we
1603              want is the local, which lookup_symbol will find for us.
1604              This includes gcc1 (not gcc2) on the sparc when passing a
1605              small structure and gcc2 when the argument type is float
1606              and it is passed as a double and converted to float by
1607              the prologue (in the latter case the type of the LOC_ARG
1608              symbol is double and the type of the LOC_LOCAL symbol is
1609              float).  There are also LOC_ARG/LOC_REGISTER pairs which
1610              are not combined in symbol-reading.  */
1611
1612           sym2 = lookup_symbol (DEPRECATED_SYMBOL_NAME (sym),
1613                                 b, VAR_DOMAIN, NULL, NULL);
1614           print_variable_value (sym2, frame, stream);
1615           fprintf_filtered (stream, "\n");
1616           break;
1617
1618         default:
1619           /* Don't worry about things which aren't arguments.  */
1620           break;
1621         }
1622     }
1623
1624   if (!values_printed)
1625     fprintf_filtered (stream, _("No arguments.\n"));
1626 }
1627
1628 void
1629 args_info (char *ignore, int from_tty)
1630 {
1631   print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
1632                         gdb_stdout);
1633 }
1634
1635
1636 static void
1637 args_plus_locals_info (char *ignore, int from_tty)
1638 {
1639   args_info (ignore, from_tty);
1640   locals_info (ignore, from_tty);
1641 }
1642 \f
1643
1644 /* Select frame FRAME.  Also print the stack frame and show the source
1645    if this is the tui version.  */
1646 static void
1647 select_and_print_frame (struct frame_info *frame)
1648 {
1649   select_frame (frame);
1650   if (frame)
1651     print_stack_frame (frame, 1, SRC_AND_LOC);
1652 }
1653 \f
1654 /* Return the symbol-block in which the selected frame is executing.
1655    Can return zero under various legitimate circumstances.
1656
1657    If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
1658    code address within the block returned.  We use this to decide
1659    which macros are in scope.  */
1660
1661 struct block *
1662 get_selected_block (CORE_ADDR *addr_in_block)
1663 {
1664   if (!target_has_stack)
1665     return 0;
1666
1667   return get_frame_block (get_selected_frame (NULL), addr_in_block);
1668 }
1669
1670 /* Find a frame a certain number of levels away from FRAME.
1671    LEVEL_OFFSET_PTR points to an int containing the number of levels.
1672    Positive means go to earlier frames (up); negative, the reverse.
1673    The int that contains the number of levels is counted toward
1674    zero as the frames for those levels are found.
1675    If the top or bottom frame is reached, that frame is returned,
1676    but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
1677    how much farther the original request asked to go.  */
1678
1679 struct frame_info *
1680 find_relative_frame (struct frame_info *frame, int *level_offset_ptr)
1681 {
1682   /* Going up is simple: just call get_prev_frame enough times or
1683      until the initial frame is reached.  */
1684   while (*level_offset_ptr > 0)
1685     {
1686       struct frame_info *prev = get_prev_frame (frame);
1687       if (!prev)
1688         break;
1689       (*level_offset_ptr)--;
1690       frame = prev;
1691     }
1692
1693   /* Going down is just as simple.  */
1694   while (*level_offset_ptr < 0)
1695     {
1696       struct frame_info *next = get_next_frame (frame);
1697       if (!next)
1698         break;
1699       (*level_offset_ptr)++;
1700       frame = next;
1701     }
1702
1703   return frame;
1704 }
1705
1706 /* The "select_frame" command.  With no argument this is a NOP.
1707    Select the frame at level LEVEL_EXP if it is a valid level.
1708    Otherwise, treat LEVEL_EXP as an address expression and select it.
1709
1710    See parse_frame_specification for more info on proper frame
1711    expressions.  */
1712
1713 void
1714 select_frame_command (char *level_exp, int from_tty)
1715 {
1716   select_frame (parse_frame_specification_1 (level_exp, "No stack.", NULL));
1717 }
1718
1719 /* The "frame" command.  With no argument, print the selected frame
1720    briefly.  With an argument, behave like select_frame and then print
1721    the selected frame.  */
1722
1723 static void
1724 frame_command (char *level_exp, int from_tty)
1725 {
1726   select_frame_command (level_exp, from_tty);
1727   print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1728 }
1729
1730 /* The XDB Compatibility command to print the current frame.  */
1731
1732 static void
1733 current_frame_command (char *level_exp, int from_tty)
1734 {
1735   print_stack_frame (get_selected_frame (_("No stack.")), 1, SRC_AND_LOC);
1736 }
1737
1738 /* Select the frame up one or COUNT_EXP stack levels from the
1739    previously selected frame, and print it briefly.  */
1740
1741 static void
1742 up_silently_base (char *count_exp)
1743 {
1744   struct frame_info *frame;
1745   int count = 1;
1746
1747   if (count_exp)
1748     count = parse_and_eval_long (count_exp);
1749
1750   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
1751   if (count != 0 && count_exp == NULL)
1752     error (_("Initial frame selected; you cannot go up."));
1753   select_frame (frame);
1754 }
1755
1756 static void
1757 up_silently_command (char *count_exp, int from_tty)
1758 {
1759   up_silently_base (count_exp);
1760 }
1761
1762 static void
1763 up_command (char *count_exp, int from_tty)
1764 {
1765   up_silently_base (count_exp);
1766   print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1767 }
1768
1769 /* Select the frame down one or COUNT_EXP stack levels from the previously
1770    selected frame, and print it briefly.  */
1771
1772 static void
1773 down_silently_base (char *count_exp)
1774 {
1775   struct frame_info *frame;
1776   int count = -1;
1777   if (count_exp)
1778     count = -parse_and_eval_long (count_exp);
1779
1780   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
1781   if (count != 0 && count_exp == NULL)
1782     {
1783       /* We only do this if COUNT_EXP is not specified.  That way
1784          "down" means to really go down (and let me know if that is
1785          impossible), but "down 9999" can be used to mean go all the
1786          way down without getting an error.  */
1787
1788       error (_("Bottom (innermost) frame selected; you cannot go down."));
1789     }
1790
1791   select_frame (frame);
1792 }
1793
1794 static void
1795 down_silently_command (char *count_exp, int from_tty)
1796 {
1797   down_silently_base (count_exp);
1798 }
1799
1800 static void
1801 down_command (char *count_exp, int from_tty)
1802 {
1803   down_silently_base (count_exp);
1804   print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1805 }
1806 \f
1807
1808 void
1809 return_command (char *retval_exp, int from_tty)
1810 {
1811   struct symbol *thisfun;
1812   struct value *return_value = NULL;
1813   const char *query_prefix = "";
1814
1815   thisfun = get_frame_function (get_selected_frame ("No selected frame."));
1816
1817   /* Compute the return value.  If the computation triggers an error,
1818      let it bail.  If the return type can't be handled, set
1819      RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
1820      message.  */
1821   if (retval_exp)
1822     {
1823       struct type *return_type = NULL;
1824
1825       /* Compute the return value.  Should the computation fail, this
1826          call throws an error.  */
1827       return_value = parse_and_eval (retval_exp);
1828
1829       /* Cast return value to the return type of the function.  Should
1830          the cast fail, this call throws an error.  */
1831       if (thisfun != NULL)
1832         return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
1833       if (return_type == NULL)
1834         return_type = builtin_type_int;
1835       CHECK_TYPEDEF (return_type);
1836       return_value = value_cast (return_type, return_value);
1837
1838       /* Make sure the value is fully evaluated.  It may live in the
1839          stack frame we're about to pop.  */
1840       if (value_lazy (return_value))
1841         value_fetch_lazy (return_value);
1842
1843       if (TYPE_CODE (return_type) == TYPE_CODE_VOID)
1844         /* If the return-type is "void", don't try to find the
1845            return-value's location.  However, do still evaluate the
1846            return expression so that, even when the expression result
1847            is discarded, side effects such as "return i++" still
1848            occur.  */
1849         return_value = NULL;
1850       else if (using_struct_return (return_type))
1851         {
1852           query_prefix = "\
1853 The location at which to store the function's return value is unknown.\n\
1854 If you continue, the return value that you specified will be ignored.\n";
1855           return_value = NULL;
1856         }
1857     }
1858
1859   /* Does an interactive user really want to do this?  Include
1860      information, such as how well GDB can handle the return value, in
1861      the query message.  */
1862   if (from_tty)
1863     {
1864       int confirmed;
1865       if (thisfun == NULL)
1866         confirmed = query (_("%sMake selected stack frame return now? "),
1867                            query_prefix);
1868       else
1869         confirmed = query (_("%sMake %s return now? "), query_prefix,
1870                            SYMBOL_PRINT_NAME (thisfun));
1871       if (!confirmed)
1872         error (_("Not confirmed"));
1873     }
1874
1875   /* NOTE: cagney/2003-01-18: Is this silly?  Rather than pop each
1876      frame in turn, should this code just go straight to the relevant
1877      frame and pop that?  */
1878
1879   /* First discard all frames inner-to the selected frame (making the
1880      selected frame current).  */
1881   {
1882     struct frame_id selected_id = get_frame_id (get_selected_frame (NULL));
1883     while (!frame_id_eq (selected_id, get_frame_id (get_current_frame ())))
1884       {
1885         struct frame_info *frame = get_current_frame ();
1886         if (frame_id_inner (get_frame_arch (frame), selected_id,
1887                             get_frame_id (frame)))
1888           /* Caught in the safety net, oops!  We've gone way past the
1889              selected frame.  */
1890           error (_("Problem while popping stack frames (corrupt stack?)"));
1891         frame_pop (get_current_frame ());
1892       }
1893   }
1894
1895   /* Second discard the selected frame (which is now also the current
1896      frame).  */
1897   frame_pop (get_current_frame ());
1898
1899   /* Store RETURN_VALUE in the just-returned register set.  */
1900   if (return_value != NULL)
1901     {
1902       struct type *return_type = value_type (return_value);
1903       struct gdbarch *gdbarch = get_regcache_arch (get_current_regcache ());
1904       gdb_assert (gdbarch_return_value (gdbarch, return_type, NULL, NULL, NULL)
1905                   == RETURN_VALUE_REGISTER_CONVENTION);
1906       gdbarch_return_value (gdbarch, return_type,
1907                             get_current_regcache (), NULL /*read*/,
1908                             value_contents (return_value) /*write*/);
1909     }
1910
1911   /* If we are at the end of a call dummy now, pop the dummy frame
1912      too.  */
1913   if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
1914     frame_pop (get_current_frame ());
1915
1916   /* If interactive, print the frame that is now current.  */
1917   if (from_tty)
1918     frame_command ("0", 1);
1919   else
1920     select_frame_command ("0", 0);
1921 }
1922
1923 /* Sets the scope to input function name, provided that the function
1924    is within the current stack frame */
1925
1926 struct function_bounds
1927 {
1928   CORE_ADDR low, high;
1929 };
1930
1931 static void
1932 func_command (char *arg, int from_tty)
1933 {
1934   struct frame_info *frame;
1935   int found = 0;
1936   struct symtabs_and_lines sals;
1937   int i;
1938   int level = 1;
1939   struct function_bounds *func_bounds = NULL;
1940
1941   if (arg != NULL)
1942     return;
1943
1944   frame = parse_frame_specification ("0");
1945   sals = decode_line_spec (arg, 1);
1946   func_bounds = (struct function_bounds *) xmalloc (
1947                               sizeof (struct function_bounds) * sals.nelts);
1948   for (i = 0; (i < sals.nelts && !found); i++)
1949     {
1950       if (sals.sals[i].pc == 0
1951           || find_pc_partial_function (sals.sals[i].pc, NULL,
1952                                        &func_bounds[i].low,
1953                                        &func_bounds[i].high) == 0)
1954         {
1955           func_bounds[i].low = func_bounds[i].high = 0;
1956         }
1957     }
1958
1959   do
1960     {
1961       for (i = 0; (i < sals.nelts && !found); i++)
1962         found = (get_frame_pc (frame) >= func_bounds[i].low
1963                  && get_frame_pc (frame) < func_bounds[i].high);
1964       if (!found)
1965         {
1966           level = 1;
1967           frame = find_relative_frame (frame, &level);
1968         }
1969     }
1970   while (!found && level == 0);
1971
1972   if (func_bounds)
1973     xfree (func_bounds);
1974
1975   if (!found)
1976     printf_filtered (_("'%s' not within current stack frame.\n"), arg);
1977   else if (frame != get_selected_frame (NULL))
1978     select_and_print_frame (frame);
1979 }
1980
1981 /* Gets the language of the current frame.  */
1982
1983 enum language
1984 get_frame_language (void)
1985 {
1986   struct frame_info *frame = deprecated_safe_get_selected_frame ();
1987
1988   if (frame)
1989     {
1990       /* We determine the current frame language by looking up its
1991          associated symtab.  To retrieve this symtab, we use the frame
1992          PC.  However we cannot use the frame PC as is, because it
1993          usually points to the instruction following the "call", which
1994          is sometimes the first instruction of another function.  So
1995          we rely on get_frame_address_in_block(), it provides us with
1996          a PC that is guaranteed to be inside the frame's code
1997          block.  */
1998       CORE_ADDR pc = get_frame_address_in_block (frame);
1999       struct symtab *s = find_pc_symtab (pc);
2000
2001       if (s)
2002         return s->language;
2003     }
2004
2005   return language_unknown;
2006 }
2007 \f
2008
2009 /* Provide a prototype to silence -Wmissing-prototypes.  */
2010 void _initialize_stack (void);
2011
2012 void
2013 _initialize_stack (void)
2014 {
2015 #if 0
2016   backtrace_limit = 30;
2017 #endif
2018
2019   add_com ("return", class_stack, return_command, _("\
2020 Make selected stack frame return to its caller.\n\
2021 Control remains in the debugger, but when you continue\n\
2022 execution will resume in the frame above the one now selected.\n\
2023 If an argument is given, it is an expression for the value to return."));
2024
2025   add_com ("up", class_stack, up_command, _("\
2026 Select and print stack frame that called this one.\n\
2027 An argument says how many frames up to go."));
2028   add_com ("up-silently", class_support, up_silently_command, _("\
2029 Same as the `up' command, but does not print anything.\n\
2030 This is useful in command scripts."));
2031
2032   add_com ("down", class_stack, down_command, _("\
2033 Select and print stack frame called by this one.\n\
2034 An argument says how many frames down to go."));
2035   add_com_alias ("do", "down", class_stack, 1);
2036   add_com_alias ("dow", "down", class_stack, 1);
2037   add_com ("down-silently", class_support, down_silently_command, _("\
2038 Same as the `down' command, but does not print anything.\n\
2039 This is useful in command scripts."));
2040
2041   add_com ("frame", class_stack, frame_command, _("\
2042 Select and print a stack frame.\n\
2043 With no argument, print the selected stack frame.  (See also \"info frame\").\n\
2044 An argument specifies the frame to select.\n\
2045 It can be a stack frame number or the address of the frame.\n\
2046 With argument, nothing is printed if input is coming from\n\
2047 a command file or a user-defined command."));
2048
2049   add_com_alias ("f", "frame", class_stack, 1);
2050
2051   if (xdb_commands)
2052     {
2053       add_com ("L", class_stack, current_frame_command,
2054                _("Print the current stack frame.\n"));
2055       add_com_alias ("V", "frame", class_stack, 1);
2056     }
2057   add_com ("select-frame", class_stack, select_frame_command, _("\
2058 Select a stack frame without printing anything.\n\
2059 An argument specifies the frame to select.\n\
2060 It can be a stack frame number or the address of the frame.\n"));
2061
2062   add_com ("backtrace", class_stack, backtrace_command, _("\
2063 Print backtrace of all stack frames, or innermost COUNT frames.\n\
2064 With a negative argument, print outermost -COUNT frames.\n\
2065 Use of the 'full' qualifier also prints the values of the local variables.\n"));
2066   add_com_alias ("bt", "backtrace", class_stack, 0);
2067   if (xdb_commands)
2068     {
2069       add_com_alias ("t", "backtrace", class_stack, 0);
2070       add_com ("T", class_stack, backtrace_full_command, _("\
2071 Print backtrace of all stack frames, or innermost COUNT frames \n\
2072 and the values of the local variables.\n\
2073 With a negative argument, print outermost -COUNT frames.\n\
2074 Usage: T <count>\n"));
2075     }
2076
2077   add_com_alias ("where", "backtrace", class_alias, 0);
2078   add_info ("stack", backtrace_command,
2079             _("Backtrace of the stack, or innermost COUNT frames."));
2080   add_info_alias ("s", "stack", 1);
2081   add_info ("frame", frame_info,
2082             _("All about selected stack frame, or frame at ADDR."));
2083   add_info_alias ("f", "frame", 1);
2084   add_info ("locals", locals_info,
2085             _("Local variables of current stack frame."));
2086   add_info ("args", args_info,
2087             _("Argument variables of current stack frame."));
2088   if (xdb_commands)
2089     add_com ("l", class_info, args_plus_locals_info,
2090              _("Argument and local variables of current stack frame."));
2091
2092   if (dbx_commands)
2093     add_com ("func", class_stack, func_command, _("\
2094 Select the stack frame that contains <func>.\n\
2095 Usage: func <name>\n"));
2096
2097   add_info ("catch", catch_info,
2098             _("Exceptions that can be caught in the current stack frame."));
2099
2100   add_setshow_enum_cmd ("frame-arguments", class_stack,
2101                         print_frame_arguments_choices, &print_frame_arguments,
2102                         _("Set printing of non-scalar frame arguments"),
2103                         _("Show printing of non-scalar frame arguments"),
2104                         NULL, NULL, NULL, &setprintlist, &showprintlist);
2105
2106 #if 0
2107   add_cmd ("backtrace-limit", class_stack, set_backtrace_limit_command, _(\
2108 "Specify maximum number of frames for \"backtrace\" to print by default."),
2109            &setlist);
2110   add_info ("backtrace-limit", backtrace_limit_info, _("\
2111 The maximum number of frames for \"backtrace\" to print by default."));
2112 #endif
2113 }