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