gold/
[external/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 /* The possible choices of "set print entry-values", and the value
69    of this setting.  */
70
71 const char print_entry_values_no[] = "no";
72 const char print_entry_values_only[] = "only";
73 const char print_entry_values_preferred[] = "preferred";
74 const char print_entry_values_if_needed[] = "if-needed";
75 const char print_entry_values_both[] = "both";
76 const char print_entry_values_compact[] = "compact";
77 const char print_entry_values_default[] = "default";
78 static const char *const print_entry_values_choices[] =
79 {
80   print_entry_values_no,
81   print_entry_values_only,
82   print_entry_values_preferred,
83   print_entry_values_if_needed,
84   print_entry_values_both,
85   print_entry_values_compact,
86   print_entry_values_default,
87   NULL
88 };
89 const char *print_entry_values = print_entry_values_default;
90
91 /* Prototypes for local functions.  */
92
93 static void print_frame_local_vars (struct frame_info *, int,
94                                     struct ui_file *);
95
96 static void print_frame (struct frame_info *frame, int print_level,
97                          enum print_what print_what,  int print_args,
98                          struct symtab_and_line sal);
99
100 static void set_last_displayed_sal (int valid,
101                                     struct program_space *pspace,
102                                     CORE_ADDR addr,
103                                     struct symtab *symtab,
104                                     int line);
105
106 /* Zero means do things normally; we are interacting directly with the
107    user.  One means print the full filename and linenumber when a
108    frame is printed, and do so in a format emacs18/emacs19.22 can
109    parse.  Two means print similar annotations, but in many more
110    cases and in a slightly different syntax.  */
111
112 int annotation_level = 0;
113
114 /* These variables hold the last symtab and line we displayed to the user.
115  * This is where we insert a breakpoint or a skiplist entry by default.  */
116 static int last_displayed_sal_valid = 0;
117 static struct program_space *last_displayed_pspace = 0;
118 static CORE_ADDR last_displayed_addr = 0;
119 static struct symtab *last_displayed_symtab = 0;
120 static int last_displayed_line = 0;
121 \f
122
123 /* Return 1 if we should display the address in addition to the location,
124    because we are in the middle of a statement.  */
125
126 static int
127 frame_show_address (struct frame_info *frame,
128                     struct symtab_and_line sal)
129 {
130   /* If there is a line number, but no PC, then there is no location
131      information associated with this sal.  The only way that should
132      happen is for the call sites of inlined functions (SAL comes from
133      find_frame_sal).  Otherwise, we would have some PC range if the
134      SAL came from a line table.  */
135   if (sal.line != 0 && sal.pc == 0 && sal.end == 0)
136     {
137       if (get_next_frame (frame) == NULL)
138         gdb_assert (inline_skipped_frames (inferior_ptid) > 0);
139       else
140         gdb_assert (get_frame_type (get_next_frame (frame)) == INLINE_FRAME);
141       return 0;
142     }
143
144   return get_frame_pc (frame) != sal.pc;
145 }
146
147 /* Show or print a stack frame FRAME briefly.  The output is format
148    according to PRINT_LEVEL and PRINT_WHAT printing the frame's
149    relative level, function name, argument list, and file name and
150    line number.  If the frame's PC is not at the beginning of the
151    source line, the actual PC is printed at the beginning.  */
152
153 void
154 print_stack_frame (struct frame_info *frame, int print_level,
155                    enum print_what print_what)
156 {
157   volatile struct gdb_exception e;
158
159   /* For mi, alway print location and address.  */
160   if (ui_out_is_mi_like_p (current_uiout))
161     print_what = LOC_AND_ADDRESS;
162
163   TRY_CATCH (e, RETURN_MASK_ERROR)
164     {
165       int center = (print_what == SRC_LINE || print_what == SRC_AND_LOC);
166
167       print_frame_info (frame, print_level, print_what, 1 /* print_args */);
168       set_current_sal_from_frame (frame, center);
169     }
170 }
171
172 /* Print nameless arguments of frame FRAME on STREAM, where START is
173    the offset of the first nameless argument, and NUM is the number of
174    nameless arguments to print.  FIRST is nonzero if this is the first
175    argument (not just the first nameless argument).  */
176
177 static void
178 print_frame_nameless_args (struct frame_info *frame, long start, int num,
179                            int first, struct ui_file *stream)
180 {
181   struct gdbarch *gdbarch = get_frame_arch (frame);
182   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
183   int i;
184   CORE_ADDR argsaddr;
185   long arg_value;
186
187   for (i = 0; i < num; i++)
188     {
189       QUIT;
190       argsaddr = get_frame_args_address (frame);
191       if (!argsaddr)
192         return;
193       arg_value = read_memory_integer (argsaddr + start,
194                                        sizeof (int), byte_order);
195       if (!first)
196         fprintf_filtered (stream, ", ");
197       fprintf_filtered (stream, "%ld", arg_value);
198       first = 0;
199       start += sizeof (int);
200     }
201 }
202
203 /* Print single argument of inferior function.  ARG must be already
204    read in.
205
206    Errors are printed as if they would be the parameter value.  Use zeroed ARG
207    iff it should not be printed accoring to user settings.  */
208
209 static void
210 print_frame_arg (const struct frame_arg *arg)
211 {
212   struct ui_out *uiout = current_uiout;
213   volatile struct gdb_exception except;
214   struct cleanup *old_chain;
215   struct ui_file *stb;
216
217   stb = mem_fileopen ();
218   old_chain = make_cleanup_ui_file_delete (stb);
219
220   gdb_assert (!arg->val || !arg->error);
221   gdb_assert (arg->entry_kind == print_entry_values_no
222               || arg->entry_kind == print_entry_values_only
223               || (!ui_out_is_mi_like_p (uiout)
224                   && arg->entry_kind == print_entry_values_compact));
225
226   annotate_arg_begin ();
227
228   make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
229   fprintf_symbol_filtered (stb, SYMBOL_PRINT_NAME (arg->sym),
230                            SYMBOL_LANGUAGE (arg->sym), DMGL_PARAMS | DMGL_ANSI);
231   if (arg->entry_kind == print_entry_values_compact)
232     {
233       /* It is OK to provide invalid MI-like stream as with
234          PRINT_ENTRY_VALUE_COMPACT we never use MI.  */
235       fputs_filtered ("=", stb);
236
237       fprintf_symbol_filtered (stb, SYMBOL_PRINT_NAME (arg->sym),
238                                SYMBOL_LANGUAGE (arg->sym),
239                                DMGL_PARAMS | DMGL_ANSI);
240     }
241   if (arg->entry_kind == print_entry_values_only
242       || arg->entry_kind == print_entry_values_compact)
243     fputs_filtered ("@entry", stb);
244   ui_out_field_stream (uiout, "name", stb);
245   annotate_arg_name_end ();
246   ui_out_text (uiout, "=");
247
248   if (!arg->val && !arg->error)
249     ui_out_text (uiout, "...");
250   else
251     {
252       if (arg->error)
253         except.message = arg->error;
254       else
255         {
256           /* TRY_CATCH has two statements, wrap it in a block.  */
257
258           TRY_CATCH (except, RETURN_MASK_ERROR)
259             {
260               const struct language_defn *language;
261               struct value_print_options opts;
262
263               /* Avoid value_print because it will deref ref parameters.  We
264                  just want to print their addresses.  Print ??? for args whose
265                  address we do not know.  We pass 2 as "recurse" to val_print
266                  because our standard indentation here is 4 spaces, and
267                  val_print indents 2 for each recurse.  */ 
268
269               annotate_arg_value (value_type (arg->val));
270
271               /* Use the appropriate language to display our symbol, unless the
272                  user forced the language to a specific language.  */
273               if (language_mode == language_mode_auto)
274                 language = language_def (SYMBOL_LANGUAGE (arg->sym));
275               else
276                 language = current_language;
277
278               get_raw_print_options (&opts);
279               opts.deref_ref = 1;
280
281               /* True in "summary" mode, false otherwise.  */
282               opts.summary = !strcmp (print_frame_arguments, "scalars");
283
284               common_val_print (arg->val, stb, 2, &opts, language);
285             }
286         }
287       if (except.message)
288         fprintf_filtered (stb, _("<error reading variable: %s>"),
289                           except.message);
290     }
291
292   ui_out_field_stream (uiout, "value", stb);
293
294   /* Also invoke ui_out_tuple_end.  */
295   do_cleanups (old_chain);
296
297   annotate_arg_end ();
298 }
299
300 /* Read in inferior function parameter SYM at FRAME into ARGP.  Caller is
301    responsible for xfree of ARGP->ERROR.  This function never throws an
302    exception.  */
303
304 void
305 read_frame_arg (struct symbol *sym, struct frame_info *frame,
306                 struct frame_arg *argp, struct frame_arg *entryargp)
307 {
308   struct value *val = NULL, *entryval = NULL;
309   char *val_error = NULL, *entryval_error = NULL;
310   int val_equal = 0;
311   volatile struct gdb_exception except;
312
313   if (print_entry_values != print_entry_values_only
314       && print_entry_values != print_entry_values_preferred)
315     {
316       TRY_CATCH (except, RETURN_MASK_ERROR)
317         {
318           val = read_var_value (sym, frame);
319         }
320       if (!val)
321         {
322           val_error = alloca (strlen (except.message) + 1);
323           strcpy (val_error, except.message);
324         }
325     }
326
327   if (SYMBOL_COMPUTED_OPS (sym) != NULL
328       && SYMBOL_COMPUTED_OPS (sym)->read_variable_at_entry != NULL
329       && print_entry_values != print_entry_values_no
330       && (print_entry_values != print_entry_values_if_needed
331           || !val || value_optimized_out (val)))
332     {
333       TRY_CATCH (except, RETURN_MASK_ERROR)
334         {
335           const struct symbol_computed_ops *ops;
336
337           ops = SYMBOL_COMPUTED_OPS (sym);
338           entryval = ops->read_variable_at_entry (sym, frame);
339         }
340       if (!entryval)
341         {
342           entryval_error = alloca (strlen (except.message) + 1);
343           strcpy (entryval_error, except.message);
344         }
345
346       if (except.error == NO_ENTRY_VALUE_ERROR
347           || (entryval && value_optimized_out (entryval)))
348         {
349           entryval = NULL;
350           entryval_error = NULL;
351         }
352
353       if (print_entry_values == print_entry_values_compact
354           || print_entry_values == print_entry_values_default)
355         {
356           /* For MI do not try to use print_entry_values_compact for ARGP.  */
357
358           if (val && entryval && !ui_out_is_mi_like_p (current_uiout))
359             {
360               struct type *type = value_type (val);
361
362               if (!value_optimized_out (val) && value_lazy (val))
363                 value_fetch_lazy (val);
364               if (!value_optimized_out (val) && value_lazy (entryval))
365                 value_fetch_lazy (entryval);
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.  */
1008
1009 void
1010 find_frame_funname (struct frame_info *frame, const 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 = SYMBOL_PRINT_NAME (msymbol.minsym);
1059           *funlang = SYMBOL_LANGUAGE (msymbol.minsym);
1060         }
1061       else
1062         {
1063           *funname = 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                   *funname = func_only;
1079                   make_cleanup (xfree, 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 = 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   const 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
1124   annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
1125                         gdbarch, pc);
1126
1127   list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
1128
1129   if (print_level)
1130     {
1131       ui_out_text (uiout, "#");
1132       ui_out_field_fmt_int (uiout, 2, ui_left, "level",
1133                             frame_relative_level (frame));
1134     }
1135   get_user_print_options (&opts);
1136   if (opts.addressprint)
1137     if (!sal.symtab
1138         || frame_show_address (frame, sal)
1139         || print_what == LOC_AND_ADDRESS)
1140       {
1141         annotate_frame_address ();
1142         if (pc_p)
1143           ui_out_field_core_addr (uiout, "addr", gdbarch, pc);
1144         else
1145           ui_out_field_string (uiout, "addr", "<unavailable>");
1146         annotate_frame_address_end ();
1147         ui_out_text (uiout, " in ");
1148       }
1149   annotate_frame_function_name ();
1150   fprintf_symbol_filtered (stb, funname ? funname : "??",
1151                            funlang, DMGL_ANSI);
1152   ui_out_field_stream (uiout, "func", stb);
1153   ui_out_wrap_hint (uiout, "   ");
1154   annotate_frame_args ();
1155       
1156   ui_out_text (uiout, " (");
1157   if (print_args)
1158     {
1159       struct gdbarch *gdbarch = get_frame_arch (frame);
1160       int numargs;
1161       struct cleanup *args_list_chain;
1162       volatile struct gdb_exception e;
1163
1164       if (gdbarch_frame_num_args_p (gdbarch))
1165         {
1166           numargs = gdbarch_frame_num_args (gdbarch, frame);
1167           gdb_assert (numargs >= 0);
1168         }
1169       else
1170         numargs = -1;
1171     
1172       args_list_chain = make_cleanup_ui_out_list_begin_end (uiout, "args");
1173       TRY_CATCH (e, RETURN_MASK_ERROR)
1174         {
1175           print_frame_args (func, frame, numargs, gdb_stdout);
1176         }
1177       /* FIXME: ARGS must be a list.  If one argument is a string it
1178           will have " that will not be properly escaped.  */
1179       /* Invoke ui_out_tuple_end.  */
1180       do_cleanups (args_list_chain);
1181       QUIT;
1182     }
1183   ui_out_text (uiout, ")");
1184   if (sal.symtab)
1185     {
1186       const char *filename_display;
1187       
1188       filename_display = symtab_to_filename_for_display (sal.symtab);
1189       annotate_frame_source_begin ();
1190       ui_out_wrap_hint (uiout, "   ");
1191       ui_out_text (uiout, " at ");
1192       annotate_frame_source_file ();
1193       ui_out_field_string (uiout, "file", filename_display);
1194       if (ui_out_is_mi_like_p (uiout))
1195         {
1196           const char *fullname = symtab_to_fullname (sal.symtab);
1197
1198           ui_out_field_string (uiout, "fullname", fullname);
1199         }
1200       annotate_frame_source_file_end ();
1201       ui_out_text (uiout, ":");
1202       annotate_frame_source_line ();
1203       ui_out_field_int (uiout, "line", sal.line);
1204       annotate_frame_source_end ();
1205     }
1206
1207   if (pc_p && (funname == NULL || sal.symtab == NULL))
1208     {
1209       char *lib = solib_name_from_address (get_frame_program_space (frame),
1210                                            get_frame_pc (frame));
1211
1212       if (lib)
1213         {
1214           annotate_frame_where ();
1215           ui_out_wrap_hint (uiout, "  ");
1216           ui_out_text (uiout, " from ");
1217           ui_out_field_string (uiout, "from", lib);
1218         }
1219     }
1220
1221   /* do_cleanups will call ui_out_tuple_end() for us.  */
1222   do_cleanups (list_chain);
1223   ui_out_text (uiout, "\n");
1224   do_cleanups (old_chain);
1225 }
1226 \f
1227
1228 /* Read a frame specification in whatever the appropriate format is
1229    from FRAME_EXP.  Call error(), printing MESSAGE, if the
1230    specification is in any way invalid (so this function never returns
1231    NULL).  When SEPECTED_P is non-NULL set its target to indicate that
1232    the default selected frame was used.  */
1233
1234 static struct frame_info *
1235 parse_frame_specification_1 (const char *frame_exp, const char *message,
1236                              int *selected_frame_p)
1237 {
1238   int numargs;
1239   struct value *args[4];
1240   CORE_ADDR addrs[ARRAY_SIZE (args)];
1241
1242   if (frame_exp == NULL)
1243     numargs = 0;
1244   else
1245     {
1246       numargs = 0;
1247       while (1)
1248         {
1249           char *addr_string;
1250           struct cleanup *cleanup;
1251           const char *p;
1252
1253           /* Skip leading white space, bail of EOL.  */
1254           frame_exp = skip_spaces_const (frame_exp);
1255           if (!*frame_exp)
1256             break;
1257
1258           /* Parse the argument, extract it, save it.  */
1259           for (p = frame_exp;
1260                *p && !isspace (*p);
1261                p++);
1262           addr_string = savestring (frame_exp, p - frame_exp);
1263           frame_exp = p;
1264           cleanup = make_cleanup (xfree, addr_string);
1265           
1266           /* NOTE: Parse and evaluate expression, but do not use
1267              functions such as parse_and_eval_long or
1268              parse_and_eval_address to also extract the value.
1269              Instead value_as_long and value_as_address are used.
1270              This avoids problems with expressions that contain
1271              side-effects.  */
1272           if (numargs >= ARRAY_SIZE (args))
1273             error (_("Too many args in frame specification"));
1274           args[numargs++] = parse_and_eval (addr_string);
1275
1276           do_cleanups (cleanup);
1277         }
1278     }
1279
1280   /* If no args, default to the selected frame.  */
1281   if (numargs == 0)
1282     {
1283       if (selected_frame_p != NULL)
1284         (*selected_frame_p) = 1;
1285       return get_selected_frame (message);
1286     }
1287
1288   /* None of the remaining use the selected frame.  */
1289   if (selected_frame_p != NULL)
1290     (*selected_frame_p) = 0;
1291
1292   /* Assume the single arg[0] is an integer, and try using that to
1293      select a frame relative to current.  */
1294   if (numargs == 1)
1295     {
1296       struct frame_info *fid;
1297       int level = value_as_long (args[0]);
1298
1299       fid = find_relative_frame (get_current_frame (), &level);
1300       if (level == 0)
1301         /* find_relative_frame was successful.  */
1302         return fid;
1303     }
1304
1305   /* Convert each value into a corresponding address.  */
1306   {
1307     int i;
1308
1309     for (i = 0; i < numargs; i++)
1310       addrs[i] = value_as_address (args[i]);
1311   }
1312
1313   /* Assume that the single arg[0] is an address, use that to identify
1314      a frame with a matching ID.  Should this also accept stack/pc or
1315      stack/pc/special.  */
1316   if (numargs == 1)
1317     {
1318       struct frame_id id = frame_id_build_wild (addrs[0]);
1319       struct frame_info *fid;
1320
1321       /* If (s)he specifies the frame with an address, he deserves
1322          what (s)he gets.  Still, give the highest one that matches.
1323          (NOTE: cagney/2004-10-29: Why highest, or outer-most, I don't
1324          know).  */
1325       for (fid = get_current_frame ();
1326            fid != NULL;
1327            fid = get_prev_frame (fid))
1328         {
1329           if (frame_id_eq (id, get_frame_id (fid)))
1330             {
1331               struct frame_info *prev_frame;
1332
1333               while (1)
1334                 {
1335                   prev_frame = get_prev_frame (fid);
1336                   if (!prev_frame
1337                       || !frame_id_eq (id, get_frame_id (prev_frame)))
1338                     break;
1339                   fid = prev_frame;
1340                 }
1341               return fid;
1342             }
1343         }
1344       }
1345
1346   /* We couldn't identify the frame as an existing frame, but
1347      perhaps we can create one with a single argument.  */
1348   if (numargs == 1)
1349     return create_new_frame (addrs[0], 0);
1350   else if (numargs == 2)
1351     return create_new_frame (addrs[0], addrs[1]);
1352   else
1353     error (_("Too many args in frame specification"));
1354 }
1355
1356 static struct frame_info *
1357 parse_frame_specification (char *frame_exp)
1358 {
1359   return parse_frame_specification_1 (frame_exp, NULL, NULL);
1360 }
1361
1362 /* Print verbosely the selected frame or the frame at address
1363    ADDR_EXP.  Absolutely all information in the frame is printed.  */
1364
1365 static void
1366 frame_info (char *addr_exp, int from_tty)
1367 {
1368   struct frame_info *fi;
1369   struct symtab_and_line sal;
1370   struct symbol *func;
1371   struct symtab *s;
1372   struct frame_info *calling_frame_info;
1373   int numregs;
1374   const char *funname = 0;
1375   enum language funlang = language_unknown;
1376   const char *pc_regname;
1377   int selected_frame_p;
1378   struct gdbarch *gdbarch;
1379   struct cleanup *back_to = make_cleanup (null_cleanup, NULL);
1380   CORE_ADDR frame_pc;
1381   int frame_pc_p;
1382   CORE_ADDR caller_pc;
1383
1384   fi = parse_frame_specification_1 (addr_exp, "No stack.", &selected_frame_p);
1385   gdbarch = get_frame_arch (fi);
1386
1387   /* Name of the value returned by get_frame_pc().  Per comments, "pc"
1388      is not a good name.  */
1389   if (gdbarch_pc_regnum (gdbarch) >= 0)
1390     /* OK, this is weird.  The gdbarch_pc_regnum hardware register's value can
1391        easily not match that of the internal value returned by
1392        get_frame_pc().  */
1393     pc_regname = gdbarch_register_name (gdbarch, gdbarch_pc_regnum (gdbarch));
1394   else
1395     /* But then, this is weird to.  Even without gdbarch_pc_regnum, an
1396        architectures will often have a hardware register called "pc",
1397        and that register's value, again, can easily not match
1398        get_frame_pc().  */
1399     pc_regname = "pc";
1400
1401   frame_pc_p = get_frame_pc_if_available (fi, &frame_pc);
1402   find_frame_sal (fi, &sal);
1403   func = get_frame_function (fi);
1404   s = sal.symtab;
1405   if (func)
1406     {
1407       funname = SYMBOL_PRINT_NAME (func);
1408       funlang = SYMBOL_LANGUAGE (func);
1409       if (funlang == language_cplus)
1410         {
1411           /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1412              to display the demangled name that we already have
1413              stored in the symbol table, but we stored a version
1414              with DMGL_PARAMS turned on, and here we don't want to
1415              display parameters.  So remove the parameters.  */
1416           char *func_only = cp_remove_params (funname);
1417
1418           if (func_only)
1419             {
1420               funname = func_only;
1421               make_cleanup (xfree, func_only);
1422             }
1423         }
1424     }
1425   else if (frame_pc_p)
1426     {
1427       struct bound_minimal_symbol msymbol;
1428
1429       msymbol = lookup_minimal_symbol_by_pc (frame_pc);
1430       if (msymbol.minsym != NULL)
1431         {
1432           funname = SYMBOL_PRINT_NAME (msymbol.minsym);
1433           funlang = SYMBOL_LANGUAGE (msymbol.minsym);
1434         }
1435     }
1436   calling_frame_info = get_prev_frame (fi);
1437
1438   if (selected_frame_p && frame_relative_level (fi) >= 0)
1439     {
1440       printf_filtered (_("Stack level %d, frame at "),
1441                        frame_relative_level (fi));
1442     }
1443   else
1444     {
1445       printf_filtered (_("Stack frame at "));
1446     }
1447   fputs_filtered (paddress (gdbarch, get_frame_base (fi)), gdb_stdout);
1448   printf_filtered (":\n");
1449   printf_filtered (" %s = ", pc_regname);
1450   if (frame_pc_p)
1451     fputs_filtered (paddress (gdbarch, get_frame_pc (fi)), gdb_stdout);
1452   else
1453     fputs_filtered ("<unavailable>", gdb_stdout);
1454
1455   wrap_here ("   ");
1456   if (funname)
1457     {
1458       printf_filtered (" in ");
1459       fprintf_symbol_filtered (gdb_stdout, funname, funlang,
1460                                DMGL_ANSI | DMGL_PARAMS);
1461     }
1462   wrap_here ("   ");
1463   if (sal.symtab)
1464     printf_filtered (" (%s:%d)", symtab_to_filename_for_display (sal.symtab),
1465                      sal.line);
1466   puts_filtered ("; ");
1467   wrap_here ("    ");
1468   printf_filtered ("saved %s ", pc_regname);
1469   if (frame_unwind_caller_pc_if_available (fi, &caller_pc))
1470     fputs_filtered (paddress (gdbarch, caller_pc), gdb_stdout);
1471   else
1472     fputs_filtered ("<unavailable>", gdb_stdout);
1473   printf_filtered ("\n");
1474
1475   if (calling_frame_info == NULL)
1476     {
1477       enum unwind_stop_reason reason;
1478
1479       reason = get_frame_unwind_stop_reason (fi);
1480       if (reason != UNWIND_NO_REASON)
1481         printf_filtered (_(" Outermost frame: %s\n"),
1482                          frame_stop_reason_string (reason));
1483     }
1484   else if (get_frame_type (fi) == TAILCALL_FRAME)
1485     puts_filtered (" tail call frame");
1486   else if (get_frame_type (fi) == INLINE_FRAME)
1487     printf_filtered (" inlined into frame %d",
1488                      frame_relative_level (get_prev_frame (fi)));
1489   else
1490     {
1491       printf_filtered (" called by frame at ");
1492       fputs_filtered (paddress (gdbarch, get_frame_base (calling_frame_info)),
1493                       gdb_stdout);
1494     }
1495   if (get_next_frame (fi) && calling_frame_info)
1496     puts_filtered (",");
1497   wrap_here ("   ");
1498   if (get_next_frame (fi))
1499     {
1500       printf_filtered (" caller of frame at ");
1501       fputs_filtered (paddress (gdbarch, get_frame_base (get_next_frame (fi))),
1502                       gdb_stdout);
1503     }
1504   if (get_next_frame (fi) || calling_frame_info)
1505     puts_filtered ("\n");
1506
1507   if (s)
1508     printf_filtered (" source language %s.\n",
1509                      language_str (s->language));
1510
1511   {
1512     /* Address of the argument list for this frame, or 0.  */
1513     CORE_ADDR arg_list = get_frame_args_address (fi);
1514     /* Number of args for this frame, or -1 if unknown.  */
1515     int numargs;
1516
1517     if (arg_list == 0)
1518       printf_filtered (" Arglist at unknown address.\n");
1519     else
1520       {
1521         printf_filtered (" Arglist at ");
1522         fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1523         printf_filtered (",");
1524
1525         if (!gdbarch_frame_num_args_p (gdbarch))
1526           {
1527             numargs = -1;
1528             puts_filtered (" args: ");
1529           }
1530         else
1531           {
1532             numargs = gdbarch_frame_num_args (gdbarch, fi);
1533             gdb_assert (numargs >= 0);
1534             if (numargs == 0)
1535               puts_filtered (" no args.");
1536             else if (numargs == 1)
1537               puts_filtered (" 1 arg: ");
1538             else
1539               printf_filtered (" %d args: ", numargs);
1540           }
1541         print_frame_args (func, fi, numargs, gdb_stdout);
1542         puts_filtered ("\n");
1543       }
1544   }
1545   {
1546     /* Address of the local variables for this frame, or 0.  */
1547     CORE_ADDR arg_list = get_frame_locals_address (fi);
1548
1549     if (arg_list == 0)
1550       printf_filtered (" Locals at unknown address,");
1551     else
1552       {
1553         printf_filtered (" Locals at ");
1554         fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1555         printf_filtered (",");
1556       }
1557   }
1558
1559   /* Print as much information as possible on the location of all the
1560      registers.  */
1561   {
1562     enum lval_type lval;
1563     int optimized;
1564     int unavailable;
1565     CORE_ADDR addr;
1566     int realnum;
1567     int count;
1568     int i;
1569     int need_nl = 1;
1570
1571     /* The sp is special; what's displayed isn't the save address, but
1572        the value of the previous frame's sp.  This is a legacy thing,
1573        at one stage the frame cached the previous frame's SP instead
1574        of its address, hence it was easiest to just display the cached
1575        value.  */
1576     if (gdbarch_sp_regnum (gdbarch) >= 0)
1577       {
1578         /* Find out the location of the saved stack pointer with out
1579            actually evaluating it.  */
1580         frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
1581                                &optimized, &unavailable, &lval, &addr,
1582                                &realnum, NULL);
1583         if (!optimized && !unavailable && lval == not_lval)
1584           {
1585             enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1586             int sp_size = register_size (gdbarch, gdbarch_sp_regnum (gdbarch));
1587             gdb_byte value[MAX_REGISTER_SIZE];
1588             CORE_ADDR sp;
1589
1590             frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
1591                                    &optimized, &unavailable, &lval, &addr,
1592                                    &realnum, value);
1593             /* NOTE: cagney/2003-05-22: This is assuming that the
1594                stack pointer was packed as an unsigned integer.  That
1595                may or may not be valid.  */
1596             sp = extract_unsigned_integer (value, sp_size, byte_order);
1597             printf_filtered (" Previous frame's sp is ");
1598             fputs_filtered (paddress (gdbarch, sp), gdb_stdout);
1599             printf_filtered ("\n");
1600             need_nl = 0;
1601           }
1602         else if (!optimized && !unavailable && lval == lval_memory)
1603           {
1604             printf_filtered (" Previous frame's sp at ");
1605             fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
1606             printf_filtered ("\n");
1607             need_nl = 0;
1608           }
1609         else if (!optimized && !unavailable && lval == lval_register)
1610           {
1611             printf_filtered (" Previous frame's sp in %s\n",
1612                              gdbarch_register_name (gdbarch, realnum));
1613             need_nl = 0;
1614           }
1615         /* else keep quiet.  */
1616       }
1617
1618     count = 0;
1619     numregs = gdbarch_num_regs (gdbarch)
1620               + gdbarch_num_pseudo_regs (gdbarch);
1621     for (i = 0; i < numregs; i++)
1622       if (i != gdbarch_sp_regnum (gdbarch)
1623           && gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
1624         {
1625           /* Find out the location of the saved register without
1626              fetching the corresponding value.  */
1627           frame_register_unwind (fi, i, &optimized, &unavailable,
1628                                  &lval, &addr, &realnum, NULL);
1629           /* For moment, only display registers that were saved on the
1630              stack.  */
1631           if (!optimized && !unavailable && lval == lval_memory)
1632             {
1633               if (count == 0)
1634                 puts_filtered (" Saved registers:\n ");
1635               else
1636                 puts_filtered (",");
1637               wrap_here (" ");
1638               printf_filtered (" %s at ",
1639                                gdbarch_register_name (gdbarch, i));
1640               fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
1641               count++;
1642             }
1643         }
1644     if (count || need_nl)
1645       puts_filtered ("\n");
1646   }
1647
1648   do_cleanups (back_to);
1649 }
1650
1651 /* Print briefly all stack frames or just the innermost COUNT_EXP
1652    frames.  */
1653
1654 static void
1655 backtrace_command_1 (char *count_exp, int show_locals, int no_filters,
1656                      int from_tty)
1657 {
1658   struct frame_info *fi;
1659   int count;
1660   int i;
1661   struct frame_info *trailing;
1662   int trailing_level, py_start = 0, py_end = 0;
1663   enum py_bt_status result = PY_BT_ERROR;
1664
1665   if (!target_has_stack)
1666     error (_("No stack."));
1667
1668   /* The following code must do two things.  First, it must set the
1669      variable TRAILING to the frame from which we should start
1670      printing.  Second, it must set the variable count to the number
1671      of frames which we should print, or -1 if all of them.  */
1672   trailing = get_current_frame ();
1673
1674   trailing_level = 0;
1675   if (count_exp)
1676     {
1677       count = parse_and_eval_long (count_exp);
1678       if (count < 0)
1679         {
1680           struct frame_info *current;
1681
1682           py_start = count;
1683           count = -count;
1684
1685           current = trailing;
1686           while (current && count--)
1687             {
1688               QUIT;
1689               current = get_prev_frame (current);
1690             }
1691
1692           /* Will stop when CURRENT reaches the top of the stack.
1693              TRAILING will be COUNT below it.  */
1694           while (current)
1695             {
1696               QUIT;
1697               trailing = get_prev_frame (trailing);
1698               current = get_prev_frame (current);
1699               trailing_level++;
1700             }
1701
1702           count = -1;
1703         }
1704       else
1705         {
1706           py_start = 0;
1707           py_end = count;
1708         }
1709     }
1710   else
1711     {
1712       py_end = -1;
1713       count = -1;
1714     }
1715
1716   if (info_verbose)
1717     {
1718       /* Read in symbols for all of the frames.  Need to do this in a
1719          separate pass so that "Reading in symbols for xxx" messages
1720          don't screw up the appearance of the backtrace.  Also if
1721          people have strong opinions against reading symbols for
1722          backtrace this may have to be an option.  */
1723       i = count;
1724       for (fi = trailing; fi != NULL && i--; fi = get_prev_frame (fi))
1725         {
1726           CORE_ADDR pc;
1727
1728           QUIT;
1729           pc = get_frame_address_in_block (fi);
1730           find_pc_sect_symtab_via_partial (pc, find_pc_mapped_section (pc));
1731         }
1732     }
1733
1734   if (! no_filters)
1735     {
1736       int flags = PRINT_LEVEL | PRINT_FRAME_INFO | PRINT_ARGS;
1737       enum py_frame_args arg_type;
1738
1739       if (show_locals)
1740         flags |= PRINT_LOCALS;
1741
1742       if (!strcmp (print_frame_arguments, "scalars"))
1743         arg_type = CLI_SCALAR_VALUES;
1744       else if (!strcmp (print_frame_arguments, "all"))
1745         arg_type = CLI_ALL_VALUES;
1746       else
1747         arg_type = NO_VALUES;
1748
1749       result = apply_frame_filter (get_current_frame (), flags, arg_type,
1750                                    current_uiout, py_start, py_end);
1751
1752     }
1753   /* Run the inbuilt backtrace if there are no filters registered, or
1754      "no-filters" has been specified from the command.  */
1755   if (no_filters ||  result == PY_BT_NO_FILTERS)
1756     {
1757       for (i = 0, fi = trailing; fi && count--; i++, fi = get_prev_frame (fi))
1758         {
1759           QUIT;
1760
1761           /* Don't use print_stack_frame; if an error() occurs it probably
1762              means further attempts to backtrace would fail (on the other
1763              hand, perhaps the code does or could be fixed to make sure
1764              the frame->prev field gets set to NULL in that case).  */
1765
1766           print_frame_info (fi, 1, LOCATION, 1);
1767           if (show_locals)
1768         {
1769           struct frame_id frame_id = get_frame_id (fi);
1770
1771           print_frame_local_vars (fi, 1, gdb_stdout);
1772
1773           /* print_frame_local_vars invalidates FI.  */
1774           fi = frame_find_by_id (frame_id);
1775           if (fi == NULL)
1776             {
1777               trailing = NULL;
1778               warning (_("Unable to restore previously selected frame."));
1779               break;
1780             }
1781         }
1782
1783           /* Save the last frame to check for error conditions.  */
1784           trailing = fi;
1785         }
1786
1787       /* If we've stopped before the end, mention that.  */
1788       if (fi && from_tty)
1789         printf_filtered (_("(More stack frames follow...)\n"));
1790
1791       /* If we've run out of frames, and the reason appears to be an error
1792          condition, print it.  */
1793       if (fi == NULL && trailing != NULL)
1794         {
1795           enum unwind_stop_reason reason;
1796
1797           reason = get_frame_unwind_stop_reason (trailing);
1798           if (reason >= UNWIND_FIRST_ERROR)
1799             printf_filtered (_("Backtrace stopped: %s\n"),
1800                              frame_stop_reason_string (reason));
1801         }
1802     }
1803 }
1804
1805 static void
1806 backtrace_command (char *arg, int from_tty)
1807 {
1808   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
1809   int fulltrace_arg = -1, arglen = 0, argc = 0, no_filters  = -1;
1810   int user_arg = 0;
1811
1812   if (arg)
1813     {
1814       char **argv;
1815       int i;
1816
1817       argv = gdb_buildargv (arg);
1818       make_cleanup_freeargv (argv);
1819       argc = 0;
1820       for (i = 0; argv[i]; i++)
1821         {
1822           unsigned int j;
1823
1824           for (j = 0; j < strlen (argv[i]); j++)
1825             argv[i][j] = tolower (argv[i][j]);
1826
1827           if (no_filters < 0 && subset_compare (argv[i], "no-filters"))
1828             no_filters = argc;
1829           else
1830             {
1831               if (fulltrace_arg < 0 && subset_compare (argv[i], "full"))
1832                 fulltrace_arg = argc;
1833               else
1834                 {
1835                   user_arg++;
1836                   arglen += strlen (argv[i]);
1837                 }
1838             }
1839           argc++;
1840         }
1841       arglen += user_arg;
1842       if (fulltrace_arg >= 0 || no_filters >= 0)
1843         {
1844           if (arglen > 0)
1845             {
1846               arg = xmalloc (arglen + 1);
1847               make_cleanup (xfree, arg);
1848               arg[0] = 0;
1849               for (i = 0; i < argc; i++)
1850                 {
1851                   if (i != fulltrace_arg && i != no_filters)
1852                     {
1853                       strcat (arg, argv[i]);
1854                       strcat (arg, " ");
1855                     }
1856                 }
1857             }
1858           else
1859             arg = NULL;
1860         }
1861     }
1862
1863   backtrace_command_1 (arg, fulltrace_arg >= 0 /* show_locals */,
1864                        no_filters >= 0 /* no frame-filters */, from_tty);
1865
1866   do_cleanups (old_chain);
1867 }
1868
1869 static void
1870 backtrace_full_command (char *arg, int from_tty)
1871 {
1872   backtrace_command_1 (arg, 1 /* show_locals */, 0, from_tty);
1873 }
1874 \f
1875
1876 /* Iterate over the local variables of a block B, calling CB with
1877    CB_DATA.  */
1878
1879 static void
1880 iterate_over_block_locals (struct block *b,
1881                            iterate_over_block_arg_local_vars_cb cb,
1882                            void *cb_data)
1883 {
1884   struct block_iterator iter;
1885   struct symbol *sym;
1886
1887   ALL_BLOCK_SYMBOLS (b, iter, sym)
1888     {
1889       switch (SYMBOL_CLASS (sym))
1890         {
1891         case LOC_LOCAL:
1892         case LOC_REGISTER:
1893         case LOC_STATIC:
1894         case LOC_COMPUTED:
1895           if (SYMBOL_IS_ARGUMENT (sym))
1896             break;
1897           if (SYMBOL_DOMAIN (sym) == COMMON_BLOCK_DOMAIN)
1898             break;
1899           (*cb) (SYMBOL_PRINT_NAME (sym), sym, cb_data);
1900           break;
1901
1902         default:
1903           /* Ignore symbols which are not locals.  */
1904           break;
1905         }
1906     }
1907 }
1908
1909
1910 /* Same, but print labels.  */
1911
1912 #if 0
1913 /* Commented out, as the code using this function has also been
1914    commented out.  FIXME:brobecker/2009-01-13: Find out why the code
1915    was commented out in the first place.  The discussion introducing
1916    this change (2007-12-04: Support lexical blocks and function bodies
1917    that occupy non-contiguous address ranges) did not explain why
1918    this change was made.  */
1919 static int
1920 print_block_frame_labels (struct gdbarch *gdbarch, struct block *b,
1921                           int *have_default, struct ui_file *stream)
1922 {
1923   struct block_iterator iter;
1924   struct symbol *sym;
1925   int values_printed = 0;
1926
1927   ALL_BLOCK_SYMBOLS (b, iter, sym)
1928     {
1929       if (strcmp (SYMBOL_LINKAGE_NAME (sym), "default") == 0)
1930         {
1931           if (*have_default)
1932             continue;
1933           *have_default = 1;
1934         }
1935       if (SYMBOL_CLASS (sym) == LOC_LABEL)
1936         {
1937           struct symtab_and_line sal;
1938           struct value_print_options opts;
1939
1940           sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
1941           values_printed = 1;
1942           fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
1943           get_user_print_options (&opts);
1944           if (opts.addressprint)
1945             {
1946               fprintf_filtered (stream, " ");
1947               fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (sym)),
1948                               stream);
1949             }
1950           fprintf_filtered (stream, " in file %s, line %d\n",
1951                             sal.symtab->filename, sal.line);
1952         }
1953     }
1954
1955   return values_printed;
1956 }
1957 #endif
1958
1959 /* Iterate over all the local variables in block B, including all its
1960    superblocks, stopping when the top-level block is reached.  */
1961
1962 void
1963 iterate_over_block_local_vars (struct block *block,
1964                                iterate_over_block_arg_local_vars_cb cb,
1965                                void *cb_data)
1966 {
1967   while (block)
1968     {
1969       iterate_over_block_locals (block, cb, cb_data);
1970       /* After handling the function's top-level block, stop.  Don't
1971          continue to its superblock, the block of per-file
1972          symbols.  */
1973       if (BLOCK_FUNCTION (block))
1974         break;
1975       block = BLOCK_SUPERBLOCK (block);
1976     }
1977 }
1978
1979 /* Data to be passed around in the calls to the locals and args
1980    iterators.  */
1981
1982 struct print_variable_and_value_data
1983 {
1984   struct frame_id frame_id;
1985   int num_tabs;
1986   struct ui_file *stream;
1987   int values_printed;
1988 };
1989
1990 /* The callback for the locals and args iterators.  */
1991
1992 static void
1993 do_print_variable_and_value (const char *print_name,
1994                              struct symbol *sym,
1995                              void *cb_data)
1996 {
1997   struct print_variable_and_value_data *p = cb_data;
1998   struct frame_info *frame;
1999
2000   frame = frame_find_by_id (p->frame_id);
2001   if (frame == NULL)
2002     {
2003       warning (_("Unable to restore previously selected frame."));
2004       return;
2005     }
2006
2007   print_variable_and_value (print_name, sym, frame, p->stream, p->num_tabs);
2008
2009   /* print_variable_and_value invalidates FRAME.  */
2010   frame = NULL;
2011
2012   p->values_printed = 1;
2013 }
2014
2015 /* Print all variables from the innermost up to the function block of FRAME.
2016    Print them with values to STREAM indented by NUM_TABS.
2017
2018    This function will invalidate FRAME.  */
2019
2020 static void
2021 print_frame_local_vars (struct frame_info *frame, int num_tabs,
2022                         struct ui_file *stream)
2023 {
2024   struct print_variable_and_value_data cb_data;
2025   struct block *block;
2026   CORE_ADDR pc;
2027
2028   if (!get_frame_pc_if_available (frame, &pc))
2029     {
2030       fprintf_filtered (stream,
2031                         _("PC unavailable, cannot determine locals.\n"));
2032       return;
2033     }
2034
2035   block = get_frame_block (frame, 0);
2036   if (block == 0)
2037     {
2038       fprintf_filtered (stream, "No symbol table info available.\n");
2039       return;
2040     }
2041
2042   cb_data.frame_id = get_frame_id (frame);
2043   cb_data.num_tabs = 4 * num_tabs;
2044   cb_data.stream = stream;
2045   cb_data.values_printed = 0;
2046
2047   iterate_over_block_local_vars (block,
2048                                  do_print_variable_and_value,
2049                                  &cb_data);
2050
2051   /* do_print_variable_and_value invalidates FRAME.  */
2052   frame = NULL;
2053
2054   if (!cb_data.values_printed)
2055     fprintf_filtered (stream, _("No locals.\n"));
2056 }
2057
2058 void
2059 locals_info (char *args, int from_tty)
2060 {
2061   print_frame_local_vars (get_selected_frame (_("No frame selected.")),
2062                           0, gdb_stdout);
2063 }
2064
2065 /* Iterate over all the argument variables in block B.
2066
2067    Returns 1 if any argument was walked; 0 otherwise.  */
2068
2069 void
2070 iterate_over_block_arg_vars (struct block *b,
2071                              iterate_over_block_arg_local_vars_cb cb,
2072                              void *cb_data)
2073 {
2074   struct block_iterator iter;
2075   struct symbol *sym, *sym2;
2076
2077   ALL_BLOCK_SYMBOLS (b, iter, sym)
2078     {
2079       /* Don't worry about things which aren't arguments.  */
2080       if (SYMBOL_IS_ARGUMENT (sym))
2081         {
2082           /* We have to look up the symbol because arguments can have
2083              two entries (one a parameter, one a local) and the one we
2084              want is the local, which lookup_symbol will find for us.
2085              This includes gcc1 (not gcc2) on the sparc when passing a
2086              small structure and gcc2 when the argument type is float
2087              and it is passed as a double and converted to float by
2088              the prologue (in the latter case the type of the LOC_ARG
2089              symbol is double and the type of the LOC_LOCAL symbol is
2090              float).  There are also LOC_ARG/LOC_REGISTER pairs which
2091              are not combined in symbol-reading.  */
2092
2093           sym2 = lookup_symbol (SYMBOL_LINKAGE_NAME (sym),
2094                                 b, VAR_DOMAIN, NULL);
2095           (*cb) (SYMBOL_PRINT_NAME (sym), sym2, cb_data);
2096         }
2097     }
2098 }
2099
2100 /* Print all argument variables of the function of FRAME.
2101    Print them with values to STREAM.
2102
2103    This function will invalidate FRAME.  */
2104
2105 static void
2106 print_frame_arg_vars (struct frame_info *frame, struct ui_file *stream)
2107 {
2108   struct print_variable_and_value_data cb_data;
2109   struct symbol *func;
2110   CORE_ADDR pc;
2111
2112   if (!get_frame_pc_if_available (frame, &pc))
2113     {
2114       fprintf_filtered (stream, _("PC unavailable, cannot determine args.\n"));
2115       return;
2116     }
2117
2118   func = get_frame_function (frame);
2119   if (func == NULL)
2120     {
2121       fprintf_filtered (stream, _("No symbol table info available.\n"));
2122       return;
2123     }
2124
2125   cb_data.frame_id = get_frame_id (frame);
2126   cb_data.num_tabs = 0;
2127   cb_data.stream = gdb_stdout;
2128   cb_data.values_printed = 0;
2129
2130   iterate_over_block_arg_vars (SYMBOL_BLOCK_VALUE (func),
2131                                do_print_variable_and_value, &cb_data);
2132
2133   /* do_print_variable_and_value invalidates FRAME.  */
2134   frame = NULL;
2135
2136   if (!cb_data.values_printed)
2137     fprintf_filtered (stream, _("No arguments.\n"));
2138 }
2139
2140 void
2141 args_info (char *ignore, int from_tty)
2142 {
2143   print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
2144                         gdb_stdout);
2145 }
2146
2147
2148 static void
2149 args_plus_locals_info (char *ignore, int from_tty)
2150 {
2151   args_info (ignore, from_tty);
2152   locals_info (ignore, from_tty);
2153 }
2154 \f
2155
2156 /* Select frame FRAME.  Also print the stack frame and show the source
2157    if this is the tui version.  */
2158 static void
2159 select_and_print_frame (struct frame_info *frame)
2160 {
2161   select_frame (frame);
2162   if (frame)
2163     print_stack_frame (frame, 1, SRC_AND_LOC);
2164 }
2165 \f
2166 /* Return the symbol-block in which the selected frame is executing.
2167    Can return zero under various legitimate circumstances.
2168
2169    If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
2170    code address within the block returned.  We use this to decide
2171    which macros are in scope.  */
2172
2173 struct block *
2174 get_selected_block (CORE_ADDR *addr_in_block)
2175 {
2176   if (!has_stack_frames ())
2177     return 0;
2178
2179   return get_frame_block (get_selected_frame (NULL), addr_in_block);
2180 }
2181
2182 /* Find a frame a certain number of levels away from FRAME.
2183    LEVEL_OFFSET_PTR points to an int containing the number of levels.
2184    Positive means go to earlier frames (up); negative, the reverse.
2185    The int that contains the number of levels is counted toward
2186    zero as the frames for those levels are found.
2187    If the top or bottom frame is reached, that frame is returned,
2188    but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
2189    how much farther the original request asked to go.  */
2190
2191 struct frame_info *
2192 find_relative_frame (struct frame_info *frame, int *level_offset_ptr)
2193 {
2194   /* Going up is simple: just call get_prev_frame enough times or
2195      until the initial frame is reached.  */
2196   while (*level_offset_ptr > 0)
2197     {
2198       struct frame_info *prev = get_prev_frame (frame);
2199
2200       if (!prev)
2201         break;
2202       (*level_offset_ptr)--;
2203       frame = prev;
2204     }
2205
2206   /* Going down is just as simple.  */
2207   while (*level_offset_ptr < 0)
2208     {
2209       struct frame_info *next = get_next_frame (frame);
2210
2211       if (!next)
2212         break;
2213       (*level_offset_ptr)++;
2214       frame = next;
2215     }
2216
2217   return frame;
2218 }
2219
2220 /* The "select_frame" command.  With no argument this is a NOP.
2221    Select the frame at level LEVEL_EXP if it is a valid level.
2222    Otherwise, treat LEVEL_EXP as an address expression and select it.
2223
2224    See parse_frame_specification for more info on proper frame
2225    expressions.  */
2226
2227 void
2228 select_frame_command (char *level_exp, int from_tty)
2229 {
2230   select_frame (parse_frame_specification_1 (level_exp, "No stack.", NULL));
2231 }
2232
2233 /* The "frame" command.  With no argument, print the selected frame
2234    briefly.  With an argument, behave like select_frame and then print
2235    the selected frame.  */
2236
2237 static void
2238 frame_command (char *level_exp, int from_tty)
2239 {
2240   select_frame_command (level_exp, from_tty);
2241   print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
2242 }
2243
2244 /* The XDB Compatibility command to print the current frame.  */
2245
2246 static void
2247 current_frame_command (char *level_exp, int from_tty)
2248 {
2249   print_stack_frame (get_selected_frame (_("No stack.")), 1, SRC_AND_LOC);
2250 }
2251
2252 /* Select the frame up one or COUNT_EXP stack levels from the
2253    previously selected frame, and print it briefly.  */
2254
2255 static void
2256 up_silently_base (char *count_exp)
2257 {
2258   struct frame_info *frame;
2259   int count = 1;
2260
2261   if (count_exp)
2262     count = parse_and_eval_long (count_exp);
2263
2264   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2265   if (count != 0 && count_exp == NULL)
2266     error (_("Initial frame selected; you cannot go up."));
2267   select_frame (frame);
2268 }
2269
2270 static void
2271 up_silently_command (char *count_exp, int from_tty)
2272 {
2273   up_silently_base (count_exp);
2274 }
2275
2276 static void
2277 up_command (char *count_exp, int from_tty)
2278 {
2279   up_silently_base (count_exp);
2280   print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
2281 }
2282
2283 /* Select the frame down one or COUNT_EXP stack levels from the previously
2284    selected frame, and print it briefly.  */
2285
2286 static void
2287 down_silently_base (char *count_exp)
2288 {
2289   struct frame_info *frame;
2290   int count = -1;
2291
2292   if (count_exp)
2293     count = -parse_and_eval_long (count_exp);
2294
2295   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2296   if (count != 0 && count_exp == NULL)
2297     {
2298       /* We only do this if COUNT_EXP is not specified.  That way
2299          "down" means to really go down (and let me know if that is
2300          impossible), but "down 9999" can be used to mean go all the
2301          way down without getting an error.  */
2302
2303       error (_("Bottom (innermost) frame selected; you cannot go down."));
2304     }
2305
2306   select_frame (frame);
2307 }
2308
2309 static void
2310 down_silently_command (char *count_exp, int from_tty)
2311 {
2312   down_silently_base (count_exp);
2313 }
2314
2315 static void
2316 down_command (char *count_exp, int from_tty)
2317 {
2318   down_silently_base (count_exp);
2319   print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
2320 }
2321 \f
2322
2323 void
2324 return_command (char *retval_exp, int from_tty)
2325 {
2326   /* Initialize it just to avoid a GCC false warning.  */
2327   enum return_value_convention rv_conv = RETURN_VALUE_STRUCT_CONVENTION;
2328   struct frame_info *thisframe;
2329   struct gdbarch *gdbarch;
2330   struct symbol *thisfun;
2331   struct value *return_value = NULL;
2332   struct value *function = NULL;
2333   const char *query_prefix = "";
2334
2335   thisframe = get_selected_frame ("No selected frame.");
2336   thisfun = get_frame_function (thisframe);
2337   gdbarch = get_frame_arch (thisframe);
2338
2339   if (get_frame_type (get_current_frame ()) == INLINE_FRAME)
2340     error (_("Can not force return from an inlined function."));
2341
2342   /* Compute the return value.  If the computation triggers an error,
2343      let it bail.  If the return type can't be handled, set
2344      RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
2345      message.  */
2346   if (retval_exp)
2347     {
2348       struct expression *retval_expr = parse_expression (retval_exp);
2349       struct cleanup *old_chain = make_cleanup (xfree, retval_expr);
2350       struct type *return_type = NULL;
2351
2352       /* Compute the return value.  Should the computation fail, this
2353          call throws an error.  */
2354       return_value = evaluate_expression (retval_expr);
2355
2356       /* Cast return value to the return type of the function.  Should
2357          the cast fail, this call throws an error.  */
2358       if (thisfun != NULL)
2359         return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
2360       if (return_type == NULL)
2361         {
2362           if (retval_expr->elts[0].opcode != UNOP_CAST
2363               && retval_expr->elts[0].opcode != UNOP_CAST_TYPE)
2364             error (_("Return value type not available for selected "
2365                      "stack frame.\n"
2366                      "Please use an explicit cast of the value to return."));
2367           return_type = value_type (return_value);
2368         }
2369       do_cleanups (old_chain);
2370       CHECK_TYPEDEF (return_type);
2371       return_value = value_cast (return_type, return_value);
2372
2373       /* Make sure the value is fully evaluated.  It may live in the
2374          stack frame we're about to pop.  */
2375       if (value_lazy (return_value))
2376         value_fetch_lazy (return_value);
2377
2378       if (thisfun != NULL)
2379         function = read_var_value (thisfun, thisframe);
2380
2381       rv_conv = RETURN_VALUE_REGISTER_CONVENTION;
2382       if (TYPE_CODE (return_type) == TYPE_CODE_VOID)
2383         /* If the return-type is "void", don't try to find the
2384            return-value's location.  However, do still evaluate the
2385            return expression so that, even when the expression result
2386            is discarded, side effects such as "return i++" still
2387            occur.  */
2388         return_value = NULL;
2389       else if (thisfun != NULL)
2390         {
2391           rv_conv = struct_return_convention (gdbarch, function, return_type);
2392           if (rv_conv == RETURN_VALUE_STRUCT_CONVENTION
2393               || rv_conv == RETURN_VALUE_ABI_RETURNS_ADDRESS)
2394             {
2395               query_prefix = "The location at which to store the "
2396                 "function's return value is unknown.\n"
2397                 "If you continue, the return value "
2398                 "that you specified will be ignored.\n";
2399               return_value = NULL;
2400             }
2401         }
2402     }
2403
2404   /* Does an interactive user really want to do this?  Include
2405      information, such as how well GDB can handle the return value, in
2406      the query message.  */
2407   if (from_tty)
2408     {
2409       int confirmed;
2410
2411       if (thisfun == NULL)
2412         confirmed = query (_("%sMake selected stack frame return now? "),
2413                            query_prefix);
2414       else
2415         confirmed = query (_("%sMake %s return now? "), query_prefix,
2416                            SYMBOL_PRINT_NAME (thisfun));
2417       if (!confirmed)
2418         error (_("Not confirmed"));
2419     }
2420
2421   /* Discard the selected frame and all frames inner-to it.  */
2422   frame_pop (get_selected_frame (NULL));
2423
2424   /* Store RETURN_VALUE in the just-returned register set.  */
2425   if (return_value != NULL)
2426     {
2427       struct type *return_type = value_type (return_value);
2428       struct gdbarch *gdbarch = get_regcache_arch (get_current_regcache ());
2429
2430       gdb_assert (rv_conv != RETURN_VALUE_STRUCT_CONVENTION
2431                   && rv_conv != RETURN_VALUE_ABI_RETURNS_ADDRESS);
2432       gdbarch_return_value (gdbarch, function, return_type,
2433                             get_current_regcache (), NULL /*read*/,
2434                             value_contents (return_value) /*write*/);
2435     }
2436
2437   /* If we are at the end of a call dummy now, pop the dummy frame
2438      too.  */
2439   if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
2440     frame_pop (get_current_frame ());
2441
2442   /* If interactive, print the frame that is now current.  */
2443   if (from_tty)
2444     frame_command ("0", 1);
2445   else
2446     select_frame_command ("0", 0);
2447 }
2448
2449 /* Sets the scope to input function name, provided that the function
2450    is within the current stack frame.  */
2451
2452 struct function_bounds
2453 {
2454   CORE_ADDR low, high;
2455 };
2456
2457 static void
2458 func_command (char *arg, int from_tty)
2459 {
2460   struct frame_info *frame;
2461   int found = 0;
2462   struct symtabs_and_lines sals;
2463   int i;
2464   int level = 1;
2465   struct function_bounds *func_bounds = NULL;
2466   struct cleanup *cleanups;
2467
2468   if (arg != NULL)
2469     return;
2470
2471   frame = parse_frame_specification ("0");
2472   sals = decode_line_with_current_source (arg, DECODE_LINE_FUNFIRSTLINE);
2473   cleanups = make_cleanup (xfree, sals.sals);
2474   func_bounds = (struct function_bounds *) xmalloc (
2475                               sizeof (struct function_bounds) * sals.nelts);
2476   make_cleanup (xfree, func_bounds);
2477   for (i = 0; (i < sals.nelts && !found); i++)
2478     {
2479       if (sals.sals[i].pspace != current_program_space)
2480         func_bounds[i].low = func_bounds[i].high = 0;
2481       else if (sals.sals[i].pc == 0
2482                || find_pc_partial_function (sals.sals[i].pc, NULL,
2483                                             &func_bounds[i].low,
2484                                             &func_bounds[i].high) == 0)
2485         {
2486           func_bounds[i].low = func_bounds[i].high = 0;
2487         }
2488     }
2489
2490   do
2491     {
2492       for (i = 0; (i < sals.nelts && !found); i++)
2493         found = (get_frame_pc (frame) >= func_bounds[i].low
2494                  && get_frame_pc (frame) < func_bounds[i].high);
2495       if (!found)
2496         {
2497           level = 1;
2498           frame = find_relative_frame (frame, &level);
2499         }
2500     }
2501   while (!found && level == 0);
2502
2503   do_cleanups (cleanups);
2504
2505   if (!found)
2506     printf_filtered (_("'%s' not within current stack frame.\n"), arg);
2507   else if (frame != get_selected_frame (NULL))
2508     select_and_print_frame (frame);
2509 }
2510
2511 /* Gets the language of the current frame.  */
2512
2513 enum language
2514 get_frame_language (void)
2515 {
2516   struct frame_info *frame = deprecated_safe_get_selected_frame ();
2517
2518   if (frame)
2519     {
2520       volatile struct gdb_exception ex;
2521       CORE_ADDR pc = 0;
2522       struct symtab *s;
2523
2524       /* We determine the current frame language by looking up its
2525          associated symtab.  To retrieve this symtab, we use the frame
2526          PC.  However we cannot use the frame PC as is, because it
2527          usually points to the instruction following the "call", which
2528          is sometimes the first instruction of another function.  So
2529          we rely on get_frame_address_in_block(), it provides us with
2530          a PC that is guaranteed to be inside the frame's code
2531          block.  */
2532
2533       TRY_CATCH (ex, RETURN_MASK_ERROR)
2534         {
2535           pc = get_frame_address_in_block (frame);
2536         }
2537       if (ex.reason < 0)
2538         {
2539           if (ex.error != NOT_AVAILABLE_ERROR)
2540             throw_exception (ex);
2541         }
2542       else
2543         {
2544           s = find_pc_symtab (pc);
2545           if (s != NULL)
2546             return s->language;
2547         }
2548     }
2549
2550   return language_unknown;
2551 }
2552 \f
2553
2554 /* Provide a prototype to silence -Wmissing-prototypes.  */
2555 void _initialize_stack (void);
2556
2557 void
2558 _initialize_stack (void)
2559 {
2560   add_com ("return", class_stack, return_command, _("\
2561 Make selected stack frame return to its caller.\n\
2562 Control remains in the debugger, but when you continue\n\
2563 execution will resume in the frame above the one now selected.\n\
2564 If an argument is given, it is an expression for the value to return."));
2565
2566   add_com ("up", class_stack, up_command, _("\
2567 Select and print stack frame that called this one.\n\
2568 An argument says how many frames up to go."));
2569   add_com ("up-silently", class_support, up_silently_command, _("\
2570 Same as the `up' command, but does not print anything.\n\
2571 This is useful in command scripts."));
2572
2573   add_com ("down", class_stack, down_command, _("\
2574 Select and print stack frame called by this one.\n\
2575 An argument says how many frames down to go."));
2576   add_com_alias ("do", "down", class_stack, 1);
2577   add_com_alias ("dow", "down", class_stack, 1);
2578   add_com ("down-silently", class_support, down_silently_command, _("\
2579 Same as the `down' command, but does not print anything.\n\
2580 This is useful in command scripts."));
2581
2582   add_com ("frame", class_stack, frame_command, _("\
2583 Select and print a stack frame.\nWith no argument, \
2584 print the selected stack frame.  (See also \"info frame\").\n\
2585 An argument specifies the frame to select.\n\
2586 It can be a stack frame number or the address of the frame.\n\
2587 With argument, nothing is printed if input is coming from\n\
2588 a command file or a user-defined command."));
2589
2590   add_com_alias ("f", "frame", class_stack, 1);
2591
2592   if (xdb_commands)
2593     {
2594       add_com ("L", class_stack, current_frame_command,
2595                _("Print the current stack frame.\n"));
2596       add_com_alias ("V", "frame", class_stack, 1);
2597     }
2598   add_com ("select-frame", class_stack, select_frame_command, _("\
2599 Select a stack frame without printing anything.\n\
2600 An argument specifies the frame to select.\n\
2601 It can be a stack frame number or the address of the frame.\n"));
2602
2603   add_com ("backtrace", class_stack, backtrace_command, _("\
2604 Print backtrace of all stack frames, or innermost COUNT frames.\n\
2605 With a negative argument, print outermost -COUNT frames.\nUse of the \
2606 'full' qualifier also prints the values of the local variables.\n\
2607 Use of the 'no-filters' qualifier prohibits frame filters from executing\n\
2608 on this backtrace.\n"));
2609   add_com_alias ("bt", "backtrace", class_stack, 0);
2610   if (xdb_commands)
2611     {
2612       add_com_alias ("t", "backtrace", class_stack, 0);
2613       add_com ("T", class_stack, backtrace_full_command, _("\
2614 Print backtrace of all stack frames, or innermost COUNT frames\n\
2615 and the values of the local variables.\n\
2616 With a negative argument, print outermost -COUNT frames.\n\
2617 Usage: T <count>\n"));
2618     }
2619
2620   add_com_alias ("where", "backtrace", class_alias, 0);
2621   add_info ("stack", backtrace_command,
2622             _("Backtrace of the stack, or innermost COUNT frames."));
2623   add_info_alias ("s", "stack", 1);
2624   add_info ("frame", frame_info,
2625             _("All about selected stack frame, or frame at ADDR."));
2626   add_info_alias ("f", "frame", 1);
2627   add_info ("locals", locals_info,
2628             _("Local variables of current stack frame."));
2629   add_info ("args", args_info,
2630             _("Argument variables of current stack frame."));
2631   if (xdb_commands)
2632     add_com ("l", class_info, args_plus_locals_info,
2633              _("Argument and local variables of current stack frame."));
2634
2635   if (dbx_commands)
2636     add_com ("func", class_stack, func_command, _("\
2637 Select the stack frame that contains <func>.\n\
2638 Usage: func <name>\n"));
2639
2640   add_setshow_enum_cmd ("frame-arguments", class_stack,
2641                         print_frame_arguments_choices, &print_frame_arguments,
2642                         _("Set printing of non-scalar frame arguments"),
2643                         _("Show printing of non-scalar frame arguments"),
2644                         NULL, NULL, NULL, &setprintlist, &showprintlist);
2645
2646   add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
2647                                 &disassemble_next_line, _("\
2648 Set whether to disassemble next source line or insn when execution stops."),
2649                                 _("\
2650 Show whether to disassemble next source line or insn when execution stops."),
2651                                 _("\
2652 If ON, GDB will display disassembly of the next source line, in addition\n\
2653 to displaying the source line itself.  If the next source line cannot\n\
2654 be displayed (e.g., source is unavailable or there's no line info), GDB\n\
2655 will display disassembly of next instruction instead of showing the\n\
2656 source line.\n\
2657 If AUTO, display disassembly of next instruction only if the source line\n\
2658 cannot be displayed.\n\
2659 If OFF (which is the default), never display the disassembly of the next\n\
2660 source line."),
2661                                 NULL,
2662                                 show_disassemble_next_line,
2663                                 &setlist, &showlist);
2664   disassemble_next_line = AUTO_BOOLEAN_FALSE;
2665
2666   add_setshow_enum_cmd ("entry-values", class_stack,
2667                         print_entry_values_choices, &print_entry_values,
2668                         _("Set printing of function arguments at function "
2669                           "entry"),
2670                         _("Show printing of function arguments at function "
2671                           "entry"),
2672                         _("\
2673 GDB can sometimes determine the values of function arguments at entry,\n\
2674 in addition to their current values.  This option tells GDB whether\n\
2675 to print the current value, the value at entry (marked as val@entry),\n\
2676 or both.  Note that one or both of these values may be <optimized out>."),
2677                         NULL, NULL, &setprintlist, &showprintlist);
2678 }