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