* symtab.h (enum address_class): Remove LOC_BASEREG and
[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_ERROR);
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_COMPUTED_ARG:
268               break;
269
270             /* Other types of symbols we just skip over.  */
271             default:
272               continue;
273             }
274
275           /* We have to look up the symbol because arguments can have
276              two entries (one a parameter, one a local) and the one we
277              want is the local, which lookup_symbol will find for us.
278              This includes gcc1 (not gcc2) on SPARC when passing a
279              small structure and gcc2 when the argument type is float
280              and it is passed as a double and converted to float by
281              the prologue (in the latter case the type of the LOC_ARG
282              symbol is double and the type of the LOC_LOCAL symbol is
283              float).  */
284           /* But if the parameter name is null, don't try it.  Null
285              parameter names occur on the RS/6000, for traceback
286              tables.  FIXME, should we even print them?  */
287
288           if (*DEPRECATED_SYMBOL_NAME (sym))
289             {
290               struct symbol *nsym;
291               nsym = lookup_symbol (DEPRECATED_SYMBOL_NAME (sym),
292                                     b, VAR_DOMAIN, NULL);
293               gdb_assert (nsym != NULL);
294               if (SYMBOL_CLASS (nsym) == LOC_REGISTER)
295                 {
296                   /* There is a LOC_ARG/LOC_REGISTER pair.  This means
297                      that it was passed on the stack and loaded into a
298                      register, or passed in a register and stored in a
299                      stack slot.  GDB 3.x used the LOC_ARG; GDB
300                      4.0-4.11 used the LOC_REGISTER.
301
302                      Reasons for using the LOC_ARG:
303
304                      (1) Because find_saved_registers may be slow for
305                          remote debugging.
306
307                      (2) Because registers are often re-used and stack
308                          slots rarely (never?) are.  Therefore using
309                          the stack slot is much less likely to print
310                          garbage.
311
312                      Reasons why we might want to use the LOC_REGISTER:
313
314                      (1) So that the backtrace prints the same value
315                          as "print foo".  I see no compelling reason
316                          why this needs to be the case; having the
317                          backtrace print the value which was passed
318                          in, and "print foo" print the value as
319                          modified within the called function, makes
320                          perfect sense to me.
321
322                      Additional note: It might be nice if "info args"
323                      displayed both values.
324
325                      One more note: There is a case with SPARC
326                      structure passing where we need to use the
327                      LOC_REGISTER, but this is dealt with by creating
328                      a single LOC_REGPARM in symbol reading.  */
329
330                   /* Leave sym (the LOC_ARG) alone.  */
331                   ;
332                 }
333               else
334                 sym = nsym;
335             }
336
337           /* Print the current arg.  */
338           if (!first)
339             ui_out_text (uiout, ", ");
340           ui_out_wrap_hint (uiout, "    ");
341
342           annotate_arg_begin ();
343
344           list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
345           fprintf_symbol_filtered (stb->stream, SYMBOL_PRINT_NAME (sym),
346                                    SYMBOL_LANGUAGE (sym),
347                                    DMGL_PARAMS | DMGL_ANSI);
348           ui_out_field_stream (uiout, "name", stb);
349           annotate_arg_name_end ();
350           ui_out_text (uiout, "=");
351
352           if (print_this_frame_argument_p (sym))
353             {
354               /* Avoid value_print because it will deref ref parameters.
355                  We just want to print their addresses.  Print ??? for
356                  args whose address we do not know.  We pass 2 as
357                  "recurse" to val_print because our standard indentation
358                  here is 4 spaces, and val_print indents 2 for each
359                  recurse.  */
360               val = read_var_value (sym, frame);
361
362               annotate_arg_value (val == NULL ? NULL : value_type (val));
363
364               if (val)
365                 {
366                   const struct language_defn *language;
367
368                   /* Use the appropriate language to display our symbol,
369                      unless the user forced the language to a specific
370                      language.  */
371                   if (language_mode == language_mode_auto)
372                     language = language_def (SYMBOL_LANGUAGE (sym));
373                   else
374                     language = current_language;
375
376                   common_val_print (val, stb->stream, 0, 0, 2,
377                                     Val_no_prettyprint, language);
378                   ui_out_field_stream (uiout, "value", stb);
379                 }
380               else
381                 ui_out_text (uiout, "???");
382             }
383           else
384             ui_out_text (uiout, "...");
385
386
387           /* Invoke ui_out_tuple_end.  */
388           do_cleanups (list_chain);
389
390           annotate_arg_end ();
391
392           first = 0;
393         }
394     }
395
396   /* Don't print nameless args in situations where we don't know
397      enough about the stack to find them.  */
398   if (num != -1)
399     {
400       long start;
401
402       if (highest_offset == -1)
403         start = gdbarch_frame_args_skip (get_frame_arch (frame));
404       else
405         start = highest_offset;
406
407       print_frame_nameless_args (frame, start, num - args_printed,
408                                  first, stream);
409     }
410
411   do_cleanups (old_chain);
412 }
413
414 /* Stub for catch_errors.  */
415
416 static int
417 print_args_stub (void *args)
418 {
419   struct print_args_args *p = args;
420   struct gdbarch *gdbarch = get_frame_arch (p->frame);
421   int numargs;
422
423   if (gdbarch_frame_num_args_p (gdbarch))
424     {
425       numargs = gdbarch_frame_num_args (gdbarch, p->frame);
426       gdb_assert (numargs >= 0);
427     }
428   else
429     numargs = -1;
430   print_frame_args (p->func, p->frame, numargs, p->stream);
431   return 0;
432 }
433
434 /* Set the current source and line to the location given by frame
435    FRAME, if possible.  When CENTER is true, adjust so the relevant
436    line is in the center of the next 'list'.  */
437
438 void
439 set_current_sal_from_frame (struct frame_info *frame, int center)
440 {
441   struct symtab_and_line sal;
442
443   find_frame_sal (frame, &sal);
444   if (sal.symtab)
445     {
446       if (center)
447         sal.line = max (sal.line - get_lines_to_list () / 2, 1);
448       set_current_source_symtab_and_line (&sal);
449     }
450 }
451
452 /* Print information about frame FRAME.  The output is format according
453    to PRINT_LEVEL and PRINT_WHAT and PRINT ARGS.  The meaning of
454    PRINT_WHAT is:
455    
456    SRC_LINE: Print only source line.
457    LOCATION: Print only location.
458    LOC_AND_SRC: Print location and source line.
459
460    Used in "where" output, and to emit breakpoint or step
461    messages.  */
462
463 void
464 print_frame_info (struct frame_info *frame, int print_level,
465                   enum print_what print_what, int print_args)
466 {
467   struct symtab_and_line sal;
468   int source_print;
469   int location_print;
470
471   if (get_frame_type (frame) == DUMMY_FRAME
472       || get_frame_type (frame) == SIGTRAMP_FRAME)
473     {
474       struct cleanup *uiout_cleanup
475         = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
476
477       annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
478                             get_frame_pc (frame));
479
480       /* Do this regardless of SOURCE because we don't have any source
481          to list for this frame.  */
482       if (print_level)
483         {
484           ui_out_text (uiout, "#");
485           ui_out_field_fmt_int (uiout, 2, ui_left, "level",
486                                 frame_relative_level (frame));
487         }
488       if (ui_out_is_mi_like_p (uiout))
489         {
490           annotate_frame_address ();
491           ui_out_field_core_addr (uiout, "addr", get_frame_pc (frame));
492           annotate_frame_address_end ();
493         }
494
495       if (get_frame_type (frame) == DUMMY_FRAME)
496         {
497           annotate_function_call ();
498           ui_out_field_string (uiout, "func", "<function called from gdb>");
499         }
500       else if (get_frame_type (frame) == SIGTRAMP_FRAME)
501         {
502           annotate_signal_handler_caller ();
503           ui_out_field_string (uiout, "func", "<signal handler called>");
504         }
505       ui_out_text (uiout, "\n");
506       annotate_frame_end ();
507
508       do_cleanups (uiout_cleanup);
509       return;
510     }
511
512   /* If FRAME is not the innermost frame, that normally means that
513      FRAME->pc points to *after* the call instruction, and we want to
514      get the line containing the call, never the next line.  But if
515      the next frame is a SIGTRAMP_FRAME or a DUMMY_FRAME, then the
516      next frame was not entered as the result of a call, and we want
517      to get the line containing FRAME->pc.  */
518   find_frame_sal (frame, &sal);
519
520   location_print = (print_what == LOCATION 
521                     || print_what == LOC_AND_ADDRESS
522                     || print_what == SRC_AND_LOC);
523
524   if (location_print || !sal.symtab)
525     print_frame (frame, print_level, print_what, print_args, sal);
526
527   source_print = (print_what == SRC_LINE || print_what == SRC_AND_LOC);
528
529   if (source_print && sal.symtab)
530     {
531       int done = 0;
532       int mid_statement = ((print_what == SRC_LINE)
533                            && (get_frame_pc (frame) != sal.pc));
534
535       if (annotation_level)
536         done = identify_source_line (sal.symtab, sal.line, mid_statement,
537                                      get_frame_pc (frame));
538       if (!done)
539         {
540           if (deprecated_print_frame_info_listing_hook)
541             deprecated_print_frame_info_listing_hook (sal.symtab, 
542                                                       sal.line, 
543                                                       sal.line + 1, 0);
544           else
545             {
546               /* We used to do this earlier, but that is clearly
547                  wrong. This function is used by many different
548                  parts of gdb, including normal_stop in infrun.c,
549                  which uses this to print out the current PC
550                  when we stepi/nexti into the middle of a source
551                  line. Only the command line really wants this
552                  behavior. Other UIs probably would like the
553                  ability to decide for themselves if it is desired.  */
554               if (addressprint && mid_statement)
555                 {
556                   ui_out_field_core_addr (uiout, "addr", get_frame_pc (frame));
557                   ui_out_text (uiout, "\t");
558                 }
559
560               print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
561             }
562         }
563     }
564
565   if (print_what != LOCATION)
566     set_default_breakpoint (1, get_frame_pc (frame), sal.symtab, sal.line);
567
568   annotate_frame_end ();
569
570   gdb_flush (gdb_stdout);
571 }
572
573 static void
574 print_frame (struct frame_info *frame, int print_level,
575              enum print_what print_what, int print_args,
576              struct symtab_and_line sal)
577 {
578   struct symbol *func;
579   char *funname = NULL;
580   enum language funlang = language_unknown;
581   struct ui_stream *stb;
582   struct cleanup *old_chain, *list_chain;
583
584   stb = ui_out_stream_new (uiout);
585   old_chain = make_cleanup_ui_out_stream_delete (stb);
586
587   func = find_pc_function (get_frame_address_in_block (frame));
588   if (func)
589     {
590       /* In certain pathological cases, the symtabs give the wrong
591          function (when we are in the first function in a file which
592          is compiled without debugging symbols, the previous function
593          is compiled with debugging symbols, and the "foo.o" symbol
594          that is supposed to tell us where the file with debugging
595          symbols ends has been truncated by ar because it is longer
596          than 15 characters).  This also occurs if the user uses asm()
597          to create a function but not stabs for it (in a file compiled
598          with -g).
599
600          So look in the minimal symbol tables as well, and if it comes
601          up with a larger address for the function use that instead.
602          I don't think this can ever cause any problems; there
603          shouldn't be any minimal symbols in the middle of a function;
604          if this is ever changed many parts of GDB will need to be
605          changed (and we'll create a find_pc_minimal_function or some
606          such).  */
607
608       struct minimal_symbol *msymbol =
609         lookup_minimal_symbol_by_pc (get_frame_address_in_block (frame));
610
611       if (msymbol != NULL
612           && (SYMBOL_VALUE_ADDRESS (msymbol)
613               > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
614         {
615           /* We also don't know anything about the function besides
616              its address and name.  */
617           func = 0;
618           funname = DEPRECATED_SYMBOL_NAME (msymbol);
619           funlang = SYMBOL_LANGUAGE (msymbol);
620         }
621       else
622         {
623           funname = DEPRECATED_SYMBOL_NAME (func);
624           funlang = SYMBOL_LANGUAGE (func);
625           if (funlang == language_cplus)
626             {
627               /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
628                  to display the demangled name that we already have
629                  stored in the symbol table, but we stored a version
630                  with DMGL_PARAMS turned on, and here we don't want to
631                  display parameters. So call the demangler again, with
632                  DMGL_ANSI only.
633
634                  Yes, printf_symbol_filtered() will again try to
635                  demangle the name on the fly, but the issue is that
636                  if cplus_demangle() fails here, it will fail there
637                  too. So we want to catch the failure (where DEMANGLED
638                  is NULL below) here, while we still have our hands on
639                  the function symbol.)  */
640               char *demangled = cplus_demangle (funname, DMGL_ANSI);
641               if (demangled == NULL)
642                 /* If the demangler fails, try the demangled name from
643                    the symbol table. That'll have parameters, but
644                    that's preferable to displaying a mangled name.  */
645                 funname = SYMBOL_PRINT_NAME (func);
646               else
647                 xfree (demangled);
648             }
649         }
650     }
651   else
652     {
653       struct minimal_symbol *msymbol = 
654         lookup_minimal_symbol_by_pc (get_frame_address_in_block (frame));
655
656       if (msymbol != NULL)
657         {
658           funname = DEPRECATED_SYMBOL_NAME (msymbol);
659           funlang = SYMBOL_LANGUAGE (msymbol);
660         }
661     }
662
663   annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
664                         get_frame_pc (frame));
665
666   list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
667
668   if (print_level)
669     {
670       ui_out_text (uiout, "#");
671       ui_out_field_fmt_int (uiout, 2, ui_left, "level",
672                             frame_relative_level (frame));
673     }
674   if (addressprint)
675     if (get_frame_pc (frame) != sal.pc || !sal.symtab
676         || print_what == LOC_AND_ADDRESS)
677       {
678         annotate_frame_address ();
679         ui_out_field_core_addr (uiout, "addr", get_frame_pc (frame));
680         annotate_frame_address_end ();
681         ui_out_text (uiout, " in ");
682       }
683   annotate_frame_function_name ();
684   fprintf_symbol_filtered (stb->stream, funname ? funname : "??",
685                            funlang, DMGL_ANSI);
686   ui_out_field_stream (uiout, "func", stb);
687   ui_out_wrap_hint (uiout, "   ");
688   annotate_frame_args ();
689       
690   ui_out_text (uiout, " (");
691   if (print_args)
692     {
693       struct print_args_args args;
694       struct cleanup *args_list_chain;
695       args.frame = frame;
696       args.func = func;
697       args.stream = gdb_stdout;
698       args_list_chain = make_cleanup_ui_out_list_begin_end (uiout, "args");
699       catch_errors (print_args_stub, &args, "", RETURN_MASK_ERROR);
700       /* FIXME: ARGS must be a list. If one argument is a string it
701           will have " that will not be properly escaped.  */
702       /* Invoke ui_out_tuple_end.  */
703       do_cleanups (args_list_chain);
704       QUIT;
705     }
706   ui_out_text (uiout, ")");
707   if (sal.symtab && sal.symtab->filename)
708     {
709       annotate_frame_source_begin ();
710       ui_out_wrap_hint (uiout, "   ");
711       ui_out_text (uiout, " at ");
712       annotate_frame_source_file ();
713       ui_out_field_string (uiout, "file", sal.symtab->filename);
714       if (ui_out_is_mi_like_p (uiout))
715         {
716           const char *fullname = symtab_to_fullname (sal.symtab);
717           if (fullname != NULL)
718             ui_out_field_string (uiout, "fullname", fullname);
719         }
720       annotate_frame_source_file_end ();
721       ui_out_text (uiout, ":");
722       annotate_frame_source_line ();
723       ui_out_field_int (uiout, "line", sal.line);
724       annotate_frame_source_end ();
725     }
726
727   if (!funname || (!sal.symtab || !sal.symtab->filename))
728     {
729 #ifdef PC_SOLIB
730       char *lib = PC_SOLIB (get_frame_pc (frame));
731 #else
732       char *lib = solib_address (get_frame_pc (frame));
733 #endif
734       if (lib)
735         {
736           annotate_frame_where ();
737           ui_out_wrap_hint (uiout, "  ");
738           ui_out_text (uiout, " from ");
739           ui_out_field_string (uiout, "from", lib);
740         }
741     }
742
743   /* do_cleanups will call ui_out_tuple_end() for us.  */
744   do_cleanups (list_chain);
745   ui_out_text (uiout, "\n");
746   do_cleanups (old_chain);
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   fputs_filtered (paddress (get_frame_base (fi)), gdb_stdout);
968   printf_filtered (":\n");
969   printf_filtered (" %s = ", pc_regname);
970   fputs_filtered (paddress (get_frame_pc (fi)), 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   fputs_filtered (paddress (frame_pc_unwind (fi)), 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       fputs_filtered (paddress (get_frame_base (calling_frame_info)),
1002                       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       fputs_filtered (paddress (get_frame_base (get_next_frame (fi))),
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         fputs_filtered (paddress (arg_list), 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         fputs_filtered (paddress (arg_list), 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             fputs_filtered (paddress (sp), 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             fputs_filtered (paddress (addr), 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               fputs_filtered (paddress (addr), 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_COMPUTED:
1378           values_printed = 1;
1379           for (j = 0; j < num_tabs; j++)
1380             fputs_filtered ("\t", stream);
1381           fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
1382           fputs_filtered (" = ", stream);
1383           print_variable_value (sym, frame, stream);
1384           fprintf_filtered (stream, "\n");
1385           break;
1386
1387         default:
1388           /* Ignore symbols which are not locals.  */
1389           break;
1390         }
1391     }
1392
1393   return values_printed;
1394 }
1395
1396 /* Same, but print labels.  */
1397
1398 static int
1399 print_block_frame_labels (struct block *b, int *have_default,
1400                           struct ui_file *stream)
1401 {
1402   struct dict_iterator iter;
1403   struct symbol *sym;
1404   int values_printed = 0;
1405
1406   ALL_BLOCK_SYMBOLS (b, iter, sym)
1407     {
1408       if (strcmp (DEPRECATED_SYMBOL_NAME (sym), "default") == 0)
1409         {
1410           if (*have_default)
1411             continue;
1412           *have_default = 1;
1413         }
1414       if (SYMBOL_CLASS (sym) == LOC_LABEL)
1415         {
1416           struct symtab_and_line sal;
1417           sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
1418           values_printed = 1;
1419           fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
1420           if (addressprint)
1421             {
1422               fprintf_filtered (stream, " ");
1423               fputs_filtered (paddress (SYMBOL_VALUE_ADDRESS (sym)), stream);
1424             }
1425           fprintf_filtered (stream, " in file %s, line %d\n",
1426                             sal.symtab->filename, sal.line);
1427         }
1428     }
1429
1430   return values_printed;
1431 }
1432
1433 /* Print on STREAM all the local variables in frame FRAME, including
1434    all the blocks active in that frame at its current PC.
1435
1436    Returns 1 if the job was done, or 0 if nothing was printed because
1437    we have no info on the function running in FRAME.  */
1438
1439 static void
1440 print_frame_local_vars (struct frame_info *frame, int num_tabs,
1441                         struct ui_file *stream)
1442 {
1443   struct block *block = get_frame_block (frame, 0);
1444   int values_printed = 0;
1445
1446   if (block == 0)
1447     {
1448       fprintf_filtered (stream, "No symbol table info available.\n");
1449       return;
1450     }
1451
1452   while (block)
1453     {
1454       if (print_block_frame_locals (block, frame, num_tabs, stream))
1455         values_printed = 1;
1456       /* After handling the function's top-level block, stop.  Don't
1457          continue to its superblock, the block of per-file symbols.  */
1458       if (BLOCK_FUNCTION (block))
1459         break;
1460       block = BLOCK_SUPERBLOCK (block);
1461     }
1462
1463   if (!values_printed)
1464     fprintf_filtered (stream, _("No locals.\n"));
1465 }
1466
1467 /* Same, but print labels.  */
1468
1469 static void
1470 print_frame_label_vars (struct frame_info *frame, int this_level_only,
1471                         struct ui_file *stream)
1472 {
1473 #if 1
1474   fprintf_filtered (stream, "print_frame_label_vars disabled.\n");
1475 #else
1476   struct blockvector *bl;
1477   struct block *block = get_frame_block (frame, 0);
1478   int values_printed = 0;
1479   int index, have_default = 0;
1480   char *blocks_printed;
1481   CORE_ADDR pc = get_frame_pc (frame);
1482
1483   if (block == 0)
1484     {
1485       fprintf_filtered (stream, "No symbol table info available.\n");
1486       return;
1487     }
1488
1489   bl = blockvector_for_pc (BLOCK_END (block) - 4, &index);
1490   blocks_printed = alloca (BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1491   memset (blocks_printed, 0, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1492
1493   while (block != 0)
1494     {
1495       CORE_ADDR end = BLOCK_END (block) - 4;
1496       int last_index;
1497
1498       if (bl != blockvector_for_pc (end, &index))
1499         error (_("blockvector blotch"));
1500       if (BLOCKVECTOR_BLOCK (bl, index) != block)
1501         error (_("blockvector botch"));
1502       last_index = BLOCKVECTOR_NBLOCKS (bl);
1503       index += 1;
1504
1505       /* Don't print out blocks that have gone by.  */
1506       while (index < last_index
1507              && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < pc)
1508         index++;
1509
1510       while (index < last_index
1511              && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < end)
1512         {
1513           if (blocks_printed[index] == 0)
1514             {
1515               if (print_block_frame_labels (BLOCKVECTOR_BLOCK (bl, index),
1516                                             &have_default, stream))
1517                 values_printed = 1;
1518               blocks_printed[index] = 1;
1519             }
1520           index++;
1521         }
1522       if (have_default)
1523         return;
1524       if (values_printed && this_level_only)
1525         return;
1526
1527       /* After handling the function's top-level block, stop.  Don't
1528          continue to its superblock, the block of per-file symbols.  */
1529       if (BLOCK_FUNCTION (block))
1530         break;
1531       block = BLOCK_SUPERBLOCK (block);
1532     }
1533
1534   if (!values_printed && !this_level_only)
1535     fprintf_filtered (stream, _("No catches.\n"));
1536 #endif
1537 }
1538
1539 void
1540 locals_info (char *args, int from_tty)
1541 {
1542   print_frame_local_vars (get_selected_frame (_("No frame selected.")),
1543                           0, gdb_stdout);
1544 }
1545
1546 static void
1547 catch_info (char *ignore, int from_tty)
1548 {
1549   struct symtab_and_line *sal;
1550
1551   /* Assume g++ compiled code; old GDB 4.16 behaviour.  */
1552   print_frame_label_vars (get_selected_frame (_("No frame selected.")),
1553                           0, gdb_stdout);
1554 }
1555
1556 static void
1557 print_frame_arg_vars (struct frame_info *frame, struct ui_file *stream)
1558 {
1559   struct symbol *func = get_frame_function (frame);
1560   struct block *b;
1561   struct dict_iterator iter;
1562   struct symbol *sym, *sym2;
1563   int values_printed = 0;
1564
1565   if (func == 0)
1566     {
1567       fprintf_filtered (stream, _("No symbol table info available.\n"));
1568       return;
1569     }
1570
1571   b = SYMBOL_BLOCK_VALUE (func);
1572   ALL_BLOCK_SYMBOLS (b, iter, sym)
1573     {
1574       switch (SYMBOL_CLASS (sym))
1575         {
1576         case LOC_ARG:
1577         case LOC_REF_ARG:
1578         case LOC_REGPARM:
1579         case LOC_REGPARM_ADDR:
1580         case LOC_COMPUTED_ARG:
1581           values_printed = 1;
1582           fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
1583           fputs_filtered (" = ", stream);
1584
1585           /* We have to look up the symbol because arguments can have
1586              two entries (one a parameter, one a local) and the one we
1587              want is the local, which lookup_symbol will find for us.
1588              This includes gcc1 (not gcc2) on the sparc when passing a
1589              small structure and gcc2 when the argument type is float
1590              and it is passed as a double and converted to float by
1591              the prologue (in the latter case the type of the LOC_ARG
1592              symbol is double and the type of the LOC_LOCAL symbol is
1593              float).  There are also LOC_ARG/LOC_REGISTER pairs which
1594              are not combined in symbol-reading.  */
1595
1596           sym2 = lookup_symbol (DEPRECATED_SYMBOL_NAME (sym),
1597                                 b, VAR_DOMAIN, NULL);
1598           print_variable_value (sym2, frame, stream);
1599           fprintf_filtered (stream, "\n");
1600           break;
1601
1602         default:
1603           /* Don't worry about things which aren't arguments.  */
1604           break;
1605         }
1606     }
1607
1608   if (!values_printed)
1609     fprintf_filtered (stream, _("No arguments.\n"));
1610 }
1611
1612 void
1613 args_info (char *ignore, int from_tty)
1614 {
1615   print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
1616                         gdb_stdout);
1617 }
1618
1619
1620 static void
1621 args_plus_locals_info (char *ignore, int from_tty)
1622 {
1623   args_info (ignore, from_tty);
1624   locals_info (ignore, from_tty);
1625 }
1626 \f
1627
1628 /* Select frame FRAME.  Also print the stack frame and show the source
1629    if this is the tui version.  */
1630 static void
1631 select_and_print_frame (struct frame_info *frame)
1632 {
1633   select_frame (frame);
1634   if (frame)
1635     print_stack_frame (frame, 1, SRC_AND_LOC);
1636 }
1637 \f
1638 /* Return the symbol-block in which the selected frame is executing.
1639    Can return zero under various legitimate circumstances.
1640
1641    If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
1642    code address within the block returned.  We use this to decide
1643    which macros are in scope.  */
1644
1645 struct block *
1646 get_selected_block (CORE_ADDR *addr_in_block)
1647 {
1648   if (!target_has_stack)
1649     return 0;
1650
1651   return get_frame_block (get_selected_frame (NULL), addr_in_block);
1652 }
1653
1654 /* Find a frame a certain number of levels away from FRAME.
1655    LEVEL_OFFSET_PTR points to an int containing the number of levels.
1656    Positive means go to earlier frames (up); negative, the reverse.
1657    The int that contains the number of levels is counted toward
1658    zero as the frames for those levels are found.
1659    If the top or bottom frame is reached, that frame is returned,
1660    but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
1661    how much farther the original request asked to go.  */
1662
1663 struct frame_info *
1664 find_relative_frame (struct frame_info *frame, int *level_offset_ptr)
1665 {
1666   /* Going up is simple: just call get_prev_frame enough times or
1667      until the initial frame is reached.  */
1668   while (*level_offset_ptr > 0)
1669     {
1670       struct frame_info *prev = get_prev_frame (frame);
1671       if (!prev)
1672         break;
1673       (*level_offset_ptr)--;
1674       frame = prev;
1675     }
1676
1677   /* Going down is just as simple.  */
1678   while (*level_offset_ptr < 0)
1679     {
1680       struct frame_info *next = get_next_frame (frame);
1681       if (!next)
1682         break;
1683       (*level_offset_ptr)++;
1684       frame = next;
1685     }
1686
1687   return frame;
1688 }
1689
1690 /* The "select_frame" command.  With no argument this is a NOP.
1691    Select the frame at level LEVEL_EXP if it is a valid level.
1692    Otherwise, treat LEVEL_EXP as an address expression and select it.
1693
1694    See parse_frame_specification for more info on proper frame
1695    expressions.  */
1696
1697 void
1698 select_frame_command (char *level_exp, int from_tty)
1699 {
1700   select_frame (parse_frame_specification_1 (level_exp, "No stack.", NULL));
1701 }
1702
1703 /* The "frame" command.  With no argument, print the selected frame
1704    briefly.  With an argument, behave like select_frame and then print
1705    the selected frame.  */
1706
1707 static void
1708 frame_command (char *level_exp, int from_tty)
1709 {
1710   select_frame_command (level_exp, from_tty);
1711   print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1712 }
1713
1714 /* The XDB Compatibility command to print the current frame.  */
1715
1716 static void
1717 current_frame_command (char *level_exp, int from_tty)
1718 {
1719   print_stack_frame (get_selected_frame (_("No stack.")), 1, SRC_AND_LOC);
1720 }
1721
1722 /* Select the frame up one or COUNT_EXP stack levels from the
1723    previously selected frame, and print it briefly.  */
1724
1725 static void
1726 up_silently_base (char *count_exp)
1727 {
1728   struct frame_info *frame;
1729   int count = 1;
1730
1731   if (count_exp)
1732     count = parse_and_eval_long (count_exp);
1733
1734   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
1735   if (count != 0 && count_exp == NULL)
1736     error (_("Initial frame selected; you cannot go up."));
1737   select_frame (frame);
1738 }
1739
1740 static void
1741 up_silently_command (char *count_exp, int from_tty)
1742 {
1743   up_silently_base (count_exp);
1744 }
1745
1746 static void
1747 up_command (char *count_exp, int from_tty)
1748 {
1749   up_silently_base (count_exp);
1750   print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1751 }
1752
1753 /* Select the frame down one or COUNT_EXP stack levels from the previously
1754    selected frame, and print it briefly.  */
1755
1756 static void
1757 down_silently_base (char *count_exp)
1758 {
1759   struct frame_info *frame;
1760   int count = -1;
1761   if (count_exp)
1762     count = -parse_and_eval_long (count_exp);
1763
1764   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
1765   if (count != 0 && count_exp == NULL)
1766     {
1767       /* We only do this if COUNT_EXP is not specified.  That way
1768          "down" means to really go down (and let me know if that is
1769          impossible), but "down 9999" can be used to mean go all the
1770          way down without getting an error.  */
1771
1772       error (_("Bottom (innermost) frame selected; you cannot go down."));
1773     }
1774
1775   select_frame (frame);
1776 }
1777
1778 static void
1779 down_silently_command (char *count_exp, int from_tty)
1780 {
1781   down_silently_base (count_exp);
1782 }
1783
1784 static void
1785 down_command (char *count_exp, int from_tty)
1786 {
1787   down_silently_base (count_exp);
1788   print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1789 }
1790 \f
1791
1792 void
1793 return_command (char *retval_exp, int from_tty)
1794 {
1795   struct symbol *thisfun;
1796   struct value *return_value = NULL;
1797   const char *query_prefix = "";
1798
1799   thisfun = get_frame_function (get_selected_frame ("No selected frame."));
1800
1801   /* Compute the return value.  If the computation triggers an error,
1802      let it bail.  If the return type can't be handled, set
1803      RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
1804      message.  */
1805   if (retval_exp)
1806     {
1807       struct type *return_type = NULL;
1808
1809       /* Compute the return value.  Should the computation fail, this
1810          call throws an error.  */
1811       return_value = parse_and_eval (retval_exp);
1812
1813       /* Cast return value to the return type of the function.  Should
1814          the cast fail, this call throws an error.  */
1815       if (thisfun != NULL)
1816         return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
1817       if (return_type == NULL)
1818         return_type = builtin_type_int;
1819       CHECK_TYPEDEF (return_type);
1820       return_value = value_cast (return_type, return_value);
1821
1822       /* Make sure the value is fully evaluated.  It may live in the
1823          stack frame we're about to pop.  */
1824       if (value_lazy (return_value))
1825         value_fetch_lazy (return_value);
1826
1827       if (TYPE_CODE (return_type) == TYPE_CODE_VOID)
1828         /* If the return-type is "void", don't try to find the
1829            return-value's location.  However, do still evaluate the
1830            return expression so that, even when the expression result
1831            is discarded, side effects such as "return i++" still
1832            occur.  */
1833         return_value = NULL;
1834       else if (using_struct_return (SYMBOL_TYPE (thisfun), return_type))
1835         {
1836           query_prefix = "\
1837 The location at which to store the function's return value is unknown.\n\
1838 If you continue, the return value that you specified will be ignored.\n";
1839           return_value = NULL;
1840         }
1841     }
1842
1843   /* Does an interactive user really want to do this?  Include
1844      information, such as how well GDB can handle the return value, in
1845      the query message.  */
1846   if (from_tty)
1847     {
1848       int confirmed;
1849       if (thisfun == NULL)
1850         confirmed = query (_("%sMake selected stack frame return now? "),
1851                            query_prefix);
1852       else
1853         confirmed = query (_("%sMake %s return now? "), query_prefix,
1854                            SYMBOL_PRINT_NAME (thisfun));
1855       if (!confirmed)
1856         error (_("Not confirmed"));
1857     }
1858
1859   /* NOTE: cagney/2003-01-18: Is this silly?  Rather than pop each
1860      frame in turn, should this code just go straight to the relevant
1861      frame and pop that?  */
1862
1863   /* First discard all frames inner-to the selected frame (making the
1864      selected frame current).  */
1865   {
1866     struct frame_id selected_id = get_frame_id (get_selected_frame (NULL));
1867     while (!frame_id_eq (selected_id, get_frame_id (get_current_frame ())))
1868       {
1869         struct frame_info *frame = get_current_frame ();
1870         if (frame_id_inner (get_frame_arch (frame), selected_id,
1871                             get_frame_id (frame)))
1872           /* Caught in the safety net, oops!  We've gone way past the
1873              selected frame.  */
1874           error (_("Problem while popping stack frames (corrupt stack?)"));
1875         frame_pop (get_current_frame ());
1876       }
1877   }
1878
1879   /* Second discard the selected frame (which is now also the current
1880      frame).  */
1881   frame_pop (get_current_frame ());
1882
1883   /* Store RETURN_VALUE in the just-returned register set.  */
1884   if (return_value != NULL)
1885     {
1886       struct type *return_type = value_type (return_value);
1887       struct gdbarch *gdbarch = get_regcache_arch (get_current_regcache ());
1888       gdb_assert (gdbarch_return_value (gdbarch, SYMBOL_TYPE (thisfun),
1889                                         return_type, NULL, NULL, NULL)
1890                   == RETURN_VALUE_REGISTER_CONVENTION);
1891       gdbarch_return_value (gdbarch, SYMBOL_TYPE (thisfun), return_type,
1892                             get_current_regcache (), NULL /*read*/,
1893                             value_contents (return_value) /*write*/);
1894     }
1895
1896   /* If we are at the end of a call dummy now, pop the dummy frame
1897      too.  */
1898   if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
1899     frame_pop (get_current_frame ());
1900
1901   /* If interactive, print the frame that is now current.  */
1902   if (from_tty)
1903     frame_command ("0", 1);
1904   else
1905     select_frame_command ("0", 0);
1906 }
1907
1908 /* Sets the scope to input function name, provided that the function
1909    is within the current stack frame */
1910
1911 struct function_bounds
1912 {
1913   CORE_ADDR low, high;
1914 };
1915
1916 static void
1917 func_command (char *arg, int from_tty)
1918 {
1919   struct frame_info *frame;
1920   int found = 0;
1921   struct symtabs_and_lines sals;
1922   int i;
1923   int level = 1;
1924   struct function_bounds *func_bounds = NULL;
1925
1926   if (arg != NULL)
1927     return;
1928
1929   frame = parse_frame_specification ("0");
1930   sals = decode_line_spec (arg, 1);
1931   func_bounds = (struct function_bounds *) xmalloc (
1932                               sizeof (struct function_bounds) * sals.nelts);
1933   for (i = 0; (i < sals.nelts && !found); i++)
1934     {
1935       if (sals.sals[i].pc == 0
1936           || find_pc_partial_function (sals.sals[i].pc, NULL,
1937                                        &func_bounds[i].low,
1938                                        &func_bounds[i].high) == 0)
1939         {
1940           func_bounds[i].low = func_bounds[i].high = 0;
1941         }
1942     }
1943
1944   do
1945     {
1946       for (i = 0; (i < sals.nelts && !found); i++)
1947         found = (get_frame_pc (frame) >= func_bounds[i].low
1948                  && get_frame_pc (frame) < func_bounds[i].high);
1949       if (!found)
1950         {
1951           level = 1;
1952           frame = find_relative_frame (frame, &level);
1953         }
1954     }
1955   while (!found && level == 0);
1956
1957   if (func_bounds)
1958     xfree (func_bounds);
1959
1960   if (!found)
1961     printf_filtered (_("'%s' not within current stack frame.\n"), arg);
1962   else if (frame != get_selected_frame (NULL))
1963     select_and_print_frame (frame);
1964 }
1965
1966 /* Gets the language of the current frame.  */
1967
1968 enum language
1969 get_frame_language (void)
1970 {
1971   struct frame_info *frame = deprecated_safe_get_selected_frame ();
1972
1973   if (frame)
1974     {
1975       /* We determine the current frame language by looking up its
1976          associated symtab.  To retrieve this symtab, we use the frame
1977          PC.  However we cannot use the frame PC as is, because it
1978          usually points to the instruction following the "call", which
1979          is sometimes the first instruction of another function.  So
1980          we rely on get_frame_address_in_block(), it provides us with
1981          a PC that is guaranteed to be inside the frame's code
1982          block.  */
1983       CORE_ADDR pc = get_frame_address_in_block (frame);
1984       struct symtab *s = find_pc_symtab (pc);
1985
1986       if (s)
1987         return s->language;
1988     }
1989
1990   return language_unknown;
1991 }
1992 \f
1993
1994 /* Provide a prototype to silence -Wmissing-prototypes.  */
1995 void _initialize_stack (void);
1996
1997 void
1998 _initialize_stack (void)
1999 {
2000 #if 0
2001   backtrace_limit = 30;
2002 #endif
2003
2004   add_com ("return", class_stack, return_command, _("\
2005 Make selected stack frame return to its caller.\n\
2006 Control remains in the debugger, but when you continue\n\
2007 execution will resume in the frame above the one now selected.\n\
2008 If an argument is given, it is an expression for the value to return."));
2009
2010   add_com ("up", class_stack, up_command, _("\
2011 Select and print stack frame that called this one.\n\
2012 An argument says how many frames up to go."));
2013   add_com ("up-silently", class_support, up_silently_command, _("\
2014 Same as the `up' command, but does not print anything.\n\
2015 This is useful in command scripts."));
2016
2017   add_com ("down", class_stack, down_command, _("\
2018 Select and print stack frame called by this one.\n\
2019 An argument says how many frames down to go."));
2020   add_com_alias ("do", "down", class_stack, 1);
2021   add_com_alias ("dow", "down", class_stack, 1);
2022   add_com ("down-silently", class_support, down_silently_command, _("\
2023 Same as the `down' command, but does not print anything.\n\
2024 This is useful in command scripts."));
2025
2026   add_com ("frame", class_stack, frame_command, _("\
2027 Select and print a stack frame.\n\
2028 With no argument, print the selected stack frame.  (See also \"info frame\").\n\
2029 An argument specifies the frame to select.\n\
2030 It can be a stack frame number or the address of the frame.\n\
2031 With argument, nothing is printed if input is coming from\n\
2032 a command file or a user-defined command."));
2033
2034   add_com_alias ("f", "frame", class_stack, 1);
2035
2036   if (xdb_commands)
2037     {
2038       add_com ("L", class_stack, current_frame_command,
2039                _("Print the current stack frame.\n"));
2040       add_com_alias ("V", "frame", class_stack, 1);
2041     }
2042   add_com ("select-frame", class_stack, select_frame_command, _("\
2043 Select a stack frame without printing anything.\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
2047   add_com ("backtrace", class_stack, backtrace_command, _("\
2048 Print backtrace of all stack frames, or innermost COUNT frames.\n\
2049 With a negative argument, print outermost -COUNT frames.\n\
2050 Use of the 'full' qualifier also prints the values of the local variables.\n"));
2051   add_com_alias ("bt", "backtrace", class_stack, 0);
2052   if (xdb_commands)
2053     {
2054       add_com_alias ("t", "backtrace", class_stack, 0);
2055       add_com ("T", class_stack, backtrace_full_command, _("\
2056 Print backtrace of all stack frames, or innermost COUNT frames \n\
2057 and the values of the local variables.\n\
2058 With a negative argument, print outermost -COUNT frames.\n\
2059 Usage: T <count>\n"));
2060     }
2061
2062   add_com_alias ("where", "backtrace", class_alias, 0);
2063   add_info ("stack", backtrace_command,
2064             _("Backtrace of the stack, or innermost COUNT frames."));
2065   add_info_alias ("s", "stack", 1);
2066   add_info ("frame", frame_info,
2067             _("All about selected stack frame, or frame at ADDR."));
2068   add_info_alias ("f", "frame", 1);
2069   add_info ("locals", locals_info,
2070             _("Local variables of current stack frame."));
2071   add_info ("args", args_info,
2072             _("Argument variables of current stack frame."));
2073   if (xdb_commands)
2074     add_com ("l", class_info, args_plus_locals_info,
2075              _("Argument and local variables of current stack frame."));
2076
2077   if (dbx_commands)
2078     add_com ("func", class_stack, func_command, _("\
2079 Select the stack frame that contains <func>.\n\
2080 Usage: func <name>\n"));
2081
2082   add_info ("catch", catch_info,
2083             _("Exceptions that can be caught in the current stack frame."));
2084
2085   add_setshow_enum_cmd ("frame-arguments", class_stack,
2086                         print_frame_arguments_choices, &print_frame_arguments,
2087                         _("Set printing of non-scalar frame arguments"),
2088                         _("Show printing of non-scalar frame arguments"),
2089                         NULL, NULL, NULL, &setprintlist, &showprintlist);
2090
2091 #if 0
2092   add_cmd ("backtrace-limit", class_stack, set_backtrace_limit_command, _(\
2093 "Specify maximum number of frames for \"backtrace\" to print by default."),
2094            &setlist);
2095   add_info ("backtrace-limit", backtrace_limit_info, _("\
2096 The maximum number of frames for \"backtrace\" to print by default."));
2097 #endif
2098 }