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