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