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