Add AArch64 Pointer Authentication to the NEWS file
[external/binutils.git] / gdb / stack.c
1 /* Print and select stack frames for GDB, the GNU debugger.
2
3    Copyright (C) 1986-2019 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 "reggroups.h"
40 #include "regcache.h"
41 #include "solib.h"
42 #include "valprint.h"
43 #include "gdbthread.h"
44 #include "cp-support.h"
45 #include "disasm.h"
46 #include "inline-frame.h"
47 #include "linespec.h"
48 #include "cli/cli-utils.h"
49 #include "objfiles.h"
50
51 #include "symfile.h"
52 #include "extension.h"
53 #include "observable.h"
54 #include "common/def-vector.h"
55
56 /* The possible choices of "set print frame-arguments", and the value
57    of this setting.  */
58
59 static const char *const print_frame_arguments_choices[] =
60   {"all", "scalars", "none", NULL};
61 static const char *print_frame_arguments = "scalars";
62
63 /* If non-zero, don't invoke pretty-printers for frame arguments.  */
64 static int print_raw_frame_arguments;
65
66 /* The possible choices of "set print entry-values", and the value
67    of this setting.  */
68
69 const char print_entry_values_no[] = "no";
70 const char print_entry_values_only[] = "only";
71 const char print_entry_values_preferred[] = "preferred";
72 const char print_entry_values_if_needed[] = "if-needed";
73 const char print_entry_values_both[] = "both";
74 const char print_entry_values_compact[] = "compact";
75 const char print_entry_values_default[] = "default";
76 static const char *const print_entry_values_choices[] =
77 {
78   print_entry_values_no,
79   print_entry_values_only,
80   print_entry_values_preferred,
81   print_entry_values_if_needed,
82   print_entry_values_both,
83   print_entry_values_compact,
84   print_entry_values_default,
85   NULL
86 };
87 const char *print_entry_values = print_entry_values_default;
88
89 /* Prototypes for local functions.  */
90
91 static void print_frame_local_vars (struct frame_info *frame,
92                                     bool quiet,
93                                     const char *regexp, const char *t_regexp,
94                                     int num_tabs, struct ui_file *stream);
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 static struct frame_info *find_frame_for_function (const char *);
107 static struct frame_info *find_frame_for_address (CORE_ADDR);
108
109 /* Zero means do things normally; we are interacting directly with the
110    user.  One means print the full filename and linenumber when a
111    frame is printed, and do so in a format emacs18/emacs19.22 can
112    parse.  Two means print similar annotations, but in many more
113    cases and in a slightly different syntax.  */
114
115 int annotation_level = 0;
116
117 /* These variables hold the last symtab and line we displayed to the user.
118  * This is where we insert a breakpoint or a skiplist entry by default.  */
119 static int last_displayed_sal_valid = 0;
120 static struct program_space *last_displayed_pspace = 0;
121 static CORE_ADDR last_displayed_addr = 0;
122 static struct symtab *last_displayed_symtab = 0;
123 static int last_displayed_line = 0;
124 \f
125
126 /* Return 1 if we should display the address in addition to the location,
127    because we are in the middle of a statement.  */
128
129 static int
130 frame_show_address (struct frame_info *frame,
131                     struct symtab_and_line sal)
132 {
133   /* If there is a line number, but no PC, then there is no location
134      information associated with this sal.  The only way that should
135      happen is for the call sites of inlined functions (SAL comes from
136      find_frame_sal).  Otherwise, we would have some PC range if the
137      SAL came from a line table.  */
138   if (sal.line != 0 && sal.pc == 0 && sal.end == 0)
139     {
140       if (get_next_frame (frame) == NULL)
141         gdb_assert (inline_skipped_frames (inferior_thread ()) > 0);
142       else
143         gdb_assert (get_frame_type (get_next_frame (frame)) == INLINE_FRAME);
144       return 0;
145     }
146
147   return get_frame_pc (frame) != sal.pc;
148 }
149
150 /* See frame.h.  */
151
152 void
153 print_stack_frame_to_uiout (struct ui_out *uiout, struct frame_info *frame,
154                             int print_level, enum print_what print_what,
155                             int set_current_sal)
156 {
157   scoped_restore save_uiout = make_scoped_restore (&current_uiout, uiout);
158
159   print_stack_frame (frame, print_level, print_what, set_current_sal);
160 }
161
162 /* Show or print a stack frame FRAME briefly.  The output is formatted
163    according to PRINT_LEVEL and PRINT_WHAT printing the frame's
164    relative level, function name, argument list, and file name and
165    line number.  If the frame's PC is not at the beginning of the
166    source line, the actual PC is printed at the beginning.  */
167
168 void
169 print_stack_frame (struct frame_info *frame, int print_level,
170                    enum print_what print_what,
171                    int set_current_sal)
172 {
173
174   /* For mi, alway print location and address.  */
175   if (current_uiout->is_mi_like_p ())
176     print_what = LOC_AND_ADDRESS;
177
178   TRY
179     {
180       print_frame_info (frame, print_level, print_what, 1 /* print_args */,
181                         set_current_sal);
182       if (set_current_sal)
183         set_current_sal_from_frame (frame);
184     }
185   CATCH (e, RETURN_MASK_ERROR)
186     {
187     }
188   END_CATCH
189 }
190
191 /* Print nameless arguments of frame FRAME on STREAM, where START is
192    the offset of the first nameless argument, and NUM is the number of
193    nameless arguments to print.  FIRST is nonzero if this is the first
194    argument (not just the first nameless argument).  */
195
196 static void
197 print_frame_nameless_args (struct frame_info *frame, long start, int num,
198                            int first, struct ui_file *stream)
199 {
200   struct gdbarch *gdbarch = get_frame_arch (frame);
201   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
202   int i;
203   CORE_ADDR argsaddr;
204   long arg_value;
205
206   for (i = 0; i < num; i++)
207     {
208       QUIT;
209       argsaddr = get_frame_args_address (frame);
210       if (!argsaddr)
211         return;
212       arg_value = read_memory_integer (argsaddr + start,
213                                        sizeof (int), byte_order);
214       if (!first)
215         fprintf_filtered (stream, ", ");
216       fprintf_filtered (stream, "%ld", arg_value);
217       first = 0;
218       start += sizeof (int);
219     }
220 }
221
222 /* Print single argument of inferior function.  ARG must be already
223    read in.
224
225    Errors are printed as if they would be the parameter value.  Use zeroed ARG
226    iff it should not be printed accoring to user settings.  */
227
228 static void
229 print_frame_arg (const struct frame_arg *arg)
230 {
231   struct ui_out *uiout = current_uiout;
232   const char *error_message = NULL;
233
234   string_file stb;
235
236   gdb_assert (!arg->val || !arg->error);
237   gdb_assert (arg->entry_kind == print_entry_values_no
238               || arg->entry_kind == print_entry_values_only
239               || (!uiout->is_mi_like_p ()
240                   && arg->entry_kind == print_entry_values_compact));
241
242   annotate_arg_emitter arg_emitter;
243   ui_out_emit_tuple tuple_emitter (uiout, NULL);
244   fprintf_symbol_filtered (&stb, SYMBOL_PRINT_NAME (arg->sym),
245                            SYMBOL_LANGUAGE (arg->sym), DMGL_PARAMS | DMGL_ANSI);
246   if (arg->entry_kind == print_entry_values_compact)
247     {
248       /* It is OK to provide invalid MI-like stream as with
249          PRINT_ENTRY_VALUE_COMPACT we never use MI.  */
250       stb.puts ("=");
251
252       fprintf_symbol_filtered (&stb, SYMBOL_PRINT_NAME (arg->sym),
253                                SYMBOL_LANGUAGE (arg->sym),
254                                DMGL_PARAMS | DMGL_ANSI);
255     }
256   if (arg->entry_kind == print_entry_values_only
257       || arg->entry_kind == print_entry_values_compact)
258     stb.puts ("@entry");
259   uiout->field_stream ("name", stb, ui_out_style_kind::VARIABLE);
260   annotate_arg_name_end ();
261   uiout->text ("=");
262
263   if (!arg->val && !arg->error)
264     uiout->text ("...");
265   else
266     {
267       if (arg->error)
268         error_message = arg->error;
269       else
270         {
271           TRY
272             {
273               const struct language_defn *language;
274               struct value_print_options opts;
275
276               /* Avoid value_print because it will deref ref parameters.  We
277                  just want to print their addresses.  Print ??? for args whose
278                  address we do not know.  We pass 2 as "recurse" to val_print
279                  because our standard indentation here is 4 spaces, and
280                  val_print indents 2 for each recurse.  */ 
281
282               annotate_arg_value (value_type (arg->val));
283
284               /* Use the appropriate language to display our symbol, unless the
285                  user forced the language to a specific language.  */
286               if (language_mode == language_mode_auto)
287                 language = language_def (SYMBOL_LANGUAGE (arg->sym));
288               else
289                 language = current_language;
290
291               get_no_prettyformat_print_options (&opts);
292               opts.deref_ref = 1;
293               opts.raw = print_raw_frame_arguments;
294
295               /* True in "summary" mode, false otherwise.  */
296               opts.summary = !strcmp (print_frame_arguments, "scalars");
297
298               common_val_print (arg->val, &stb, 2, &opts, language);
299             }
300           CATCH (except, RETURN_MASK_ERROR)
301             {
302               error_message = except.message;
303             }
304           END_CATCH
305         }
306       if (error_message != NULL)
307         stb.printf (_("<error reading variable: %s>"), error_message);
308     }
309
310   uiout->field_stream ("value", stb);
311 }
312
313 /* Read in inferior function local SYM at FRAME into ARGP.  Caller is
314    responsible for xfree of ARGP->ERROR.  This function never throws an
315    exception.  */
316
317 void
318 read_frame_local (struct symbol *sym, struct frame_info *frame,
319                   struct frame_arg *argp)
320 {
321   argp->sym = sym;
322   argp->val = NULL;
323   argp->error = NULL;
324
325   TRY
326     {
327       argp->val = read_var_value (sym, NULL, frame);
328     }
329   CATCH (except, RETURN_MASK_ERROR)
330     {
331       argp->error = xstrdup (except.message);
332     }
333   END_CATCH
334 }
335
336 /* Read in inferior function parameter SYM at FRAME into ARGP.  Caller is
337    responsible for xfree of ARGP->ERROR.  This function never throws an
338    exception.  */
339
340 void
341 read_frame_arg (struct symbol *sym, struct frame_info *frame,
342                 struct frame_arg *argp, struct frame_arg *entryargp)
343 {
344   struct value *val = NULL, *entryval = NULL;
345   char *val_error = NULL, *entryval_error = NULL;
346   int val_equal = 0;
347
348   if (print_entry_values != print_entry_values_only
349       && print_entry_values != print_entry_values_preferred)
350     {
351       TRY
352         {
353           val = read_var_value (sym, NULL, frame);
354         }
355       CATCH (except, RETURN_MASK_ERROR)
356         {
357           val_error = (char *) alloca (strlen (except.message) + 1);
358           strcpy (val_error, except.message);
359         }
360       END_CATCH
361     }
362
363   if (SYMBOL_COMPUTED_OPS (sym) != NULL
364       && SYMBOL_COMPUTED_OPS (sym)->read_variable_at_entry != NULL
365       && print_entry_values != print_entry_values_no
366       && (print_entry_values != print_entry_values_if_needed
367           || !val || value_optimized_out (val)))
368     {
369       TRY
370         {
371           const struct symbol_computed_ops *ops;
372
373           ops = SYMBOL_COMPUTED_OPS (sym);
374           entryval = ops->read_variable_at_entry (sym, frame);
375         }
376       CATCH (except, RETURN_MASK_ERROR)
377         {
378           if (except.error != NO_ENTRY_VALUE_ERROR)
379             {
380               entryval_error = (char *) alloca (strlen (except.message) + 1);
381               strcpy (entryval_error, except.message);
382             }
383         }
384       END_CATCH
385
386       if (entryval != NULL && value_optimized_out (entryval))
387         entryval = NULL;
388
389       if (print_entry_values == print_entry_values_compact
390           || print_entry_values == print_entry_values_default)
391         {
392           /* For MI do not try to use print_entry_values_compact for ARGP.  */
393
394           if (val && entryval && !current_uiout->is_mi_like_p ())
395             {
396               struct type *type = value_type (val);
397
398               if (value_lazy (val))
399                 value_fetch_lazy (val);
400               if (value_lazy (entryval))
401                 value_fetch_lazy (entryval);
402
403               if (value_contents_eq (val, 0, entryval, 0, TYPE_LENGTH (type)))
404                 {
405                   /* Initialize it just to avoid a GCC false warning.  */
406                   struct value *val_deref = NULL, *entryval_deref;
407
408                   /* DW_AT_call_value does match with the current
409                      value.  If it is a reference still try to verify if
410                      dereferenced DW_AT_call_data_value does not differ.  */
411
412                   TRY
413                     {
414                       struct type *type_deref;
415
416                       val_deref = coerce_ref (val);
417                       if (value_lazy (val_deref))
418                         value_fetch_lazy (val_deref);
419                       type_deref = value_type (val_deref);
420
421                       entryval_deref = coerce_ref (entryval);
422                       if (value_lazy (entryval_deref))
423                         value_fetch_lazy (entryval_deref);
424
425                       /* If the reference addresses match but dereferenced
426                          content does not match print them.  */
427                       if (val != val_deref
428                           && value_contents_eq (val_deref, 0,
429                                                 entryval_deref, 0,
430                                                 TYPE_LENGTH (type_deref)))
431                         val_equal = 1;
432                     }
433                   CATCH (except, RETURN_MASK_ERROR)
434                     {
435                       /* If the dereferenced content could not be
436                          fetched do not display anything.  */
437                       if (except.error == NO_ENTRY_VALUE_ERROR)
438                         val_equal = 1;
439                       else if (except.message != NULL)
440                         {
441                           entryval_error = (char *) alloca (strlen (except.message) + 1);
442                           strcpy (entryval_error, except.message);
443                         }
444                     }
445                   END_CATCH
446
447                   /* Value was not a reference; and its content matches.  */
448                   if (val == val_deref)
449                     val_equal = 1;
450
451                   if (val_equal)
452                     entryval = NULL;
453                 }
454             }
455
456           /* Try to remove possibly duplicate error message for ENTRYARGP even
457              in MI mode.  */
458
459           if (val_error && entryval_error
460               && strcmp (val_error, entryval_error) == 0)
461             {
462               entryval_error = NULL;
463
464               /* Do not se VAL_EQUAL as the same error message may be shown for
465                  the entry value even if no entry values are present in the
466                  inferior.  */
467             }
468         }
469     }
470
471   if (entryval == NULL)
472     {
473       if (print_entry_values == print_entry_values_preferred)
474         {
475           gdb_assert (val == NULL);
476
477           TRY
478             {
479               val = read_var_value (sym, NULL, frame);
480             }
481           CATCH (except, RETURN_MASK_ERROR)
482             {
483               val_error = (char *) alloca (strlen (except.message) + 1);
484               strcpy (val_error, except.message);
485             }
486           END_CATCH
487         }
488       if (print_entry_values == print_entry_values_only
489           || print_entry_values == print_entry_values_both
490           || (print_entry_values == print_entry_values_preferred
491               && (!val || value_optimized_out (val))))
492         {
493           entryval = allocate_optimized_out_value (SYMBOL_TYPE (sym));
494           entryval_error = NULL;
495         }
496     }
497   if ((print_entry_values == print_entry_values_compact
498        || print_entry_values == print_entry_values_if_needed
499        || print_entry_values == print_entry_values_preferred)
500       && (!val || value_optimized_out (val)) && entryval != NULL)
501     {
502       val = NULL;
503       val_error = NULL;
504     }
505
506   argp->sym = sym;
507   argp->val = val;
508   argp->error = val_error ? xstrdup (val_error) : NULL;
509   if (!val && !val_error)
510     argp->entry_kind = print_entry_values_only;
511   else if ((print_entry_values == print_entry_values_compact
512            || print_entry_values == print_entry_values_default) && val_equal)
513     {
514       argp->entry_kind = print_entry_values_compact;
515       gdb_assert (!current_uiout->is_mi_like_p ());
516     }
517   else
518     argp->entry_kind = print_entry_values_no;
519
520   entryargp->sym = sym;
521   entryargp->val = entryval;
522   entryargp->error = entryval_error ? xstrdup (entryval_error) : NULL;
523   if (!entryval && !entryval_error)
524     entryargp->entry_kind = print_entry_values_no;
525   else
526     entryargp->entry_kind = print_entry_values_only;
527 }
528
529 /* Print the arguments of frame FRAME on STREAM, given the function
530    FUNC running in that frame (as a symbol), where NUM is the number
531    of arguments according to the stack frame (or -1 if the number of
532    arguments is unknown).  */
533
534 /* Note that currently the "number of arguments according to the
535    stack frame" is only known on VAX where i refers to the "number of
536    ints of arguments according to the stack frame".  */
537
538 static void
539 print_frame_args (struct symbol *func, struct frame_info *frame,
540                   int num, struct ui_file *stream)
541 {
542   struct ui_out *uiout = current_uiout;
543   int first = 1;
544   /* Offset of next stack argument beyond the one we have seen that is
545      at the highest offset, or -1 if we haven't come to a stack
546      argument yet.  */
547   long highest_offset = -1;
548   /* Number of ints of arguments that we have printed so far.  */
549   int args_printed = 0;
550   /* True if we should print arguments, false otherwise.  */
551   int print_args = strcmp (print_frame_arguments, "none");
552
553   if (func)
554     {
555       const struct block *b = SYMBOL_BLOCK_VALUE (func);
556       struct block_iterator iter;
557       struct symbol *sym;
558
559       ALL_BLOCK_SYMBOLS (b, iter, sym)
560         {
561           struct frame_arg arg, entryarg;
562
563           QUIT;
564
565           /* Keep track of the highest stack argument offset seen, and
566              skip over any kinds of symbols we don't care about.  */
567
568           if (!SYMBOL_IS_ARGUMENT (sym))
569             continue;
570
571           switch (SYMBOL_CLASS (sym))
572             {
573             case LOC_ARG:
574             case LOC_REF_ARG:
575               {
576                 long current_offset = SYMBOL_VALUE (sym);
577                 int arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
578
579                 /* Compute address of next argument by adding the size of
580                    this argument and rounding to an int boundary.  */
581                 current_offset =
582                   ((current_offset + arg_size + sizeof (int) - 1)
583                    & ~(sizeof (int) - 1));
584
585                 /* If this is the highest offset seen yet, set
586                    highest_offset.  */
587                 if (highest_offset == -1
588                     || (current_offset > highest_offset))
589                   highest_offset = current_offset;
590
591                 /* Add the number of ints we're about to print to
592                    args_printed.  */
593                 args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
594               }
595
596               /* We care about types of symbols, but don't need to
597                  keep track of stack offsets in them.  */
598             case LOC_REGISTER:
599             case LOC_REGPARM_ADDR:
600             case LOC_COMPUTED:
601             case LOC_OPTIMIZED_OUT:
602             default:
603               break;
604             }
605
606           /* We have to look up the symbol because arguments can have
607              two entries (one a parameter, one a local) and the one we
608              want is the local, which lookup_symbol will find for us.
609              This includes gcc1 (not gcc2) on SPARC when passing a
610              small structure and gcc2 when the argument type is float
611              and it is passed as a double and converted to float by
612              the prologue (in the latter case the type of the LOC_ARG
613              symbol is double and the type of the LOC_LOCAL symbol is
614              float).  */
615           /* But if the parameter name is null, don't try it.  Null
616              parameter names occur on the RS/6000, for traceback
617              tables.  FIXME, should we even print them?  */
618
619           if (*SYMBOL_LINKAGE_NAME (sym))
620             {
621               struct symbol *nsym;
622
623               nsym = lookup_symbol_search_name (SYMBOL_SEARCH_NAME (sym),
624                                                 b, VAR_DOMAIN).symbol;
625               gdb_assert (nsym != NULL);
626               if (SYMBOL_CLASS (nsym) == LOC_REGISTER
627                   && !SYMBOL_IS_ARGUMENT (nsym))
628                 {
629                   /* There is a LOC_ARG/LOC_REGISTER pair.  This means
630                      that it was passed on the stack and loaded into a
631                      register, or passed in a register and stored in a
632                      stack slot.  GDB 3.x used the LOC_ARG; GDB
633                      4.0-4.11 used the LOC_REGISTER.
634
635                      Reasons for using the LOC_ARG:
636
637                      (1) Because find_saved_registers may be slow for
638                          remote debugging.
639
640                      (2) Because registers are often re-used and stack
641                          slots rarely (never?) are.  Therefore using
642                          the stack slot is much less likely to print
643                          garbage.
644
645                      Reasons why we might want to use the LOC_REGISTER:
646
647                      (1) So that the backtrace prints the same value
648                          as "print foo".  I see no compelling reason
649                          why this needs to be the case; having the
650                          backtrace print the value which was passed
651                          in, and "print foo" print the value as
652                          modified within the called function, makes
653                          perfect sense to me.
654
655                      Additional note: It might be nice if "info args"
656                      displayed both values.
657
658                      One more note: There is a case with SPARC
659                      structure passing where we need to use the
660                      LOC_REGISTER, but this is dealt with by creating
661                      a single LOC_REGPARM in symbol reading.  */
662
663                   /* Leave sym (the LOC_ARG) alone.  */
664                   ;
665                 }
666               else
667                 sym = nsym;
668             }
669
670           /* Print the current arg.  */
671           if (!first)
672             uiout->text (", ");
673           uiout->wrap_hint ("    ");
674
675           if (!print_args)
676             {
677               memset (&arg, 0, sizeof (arg));
678               arg.sym = sym;
679               arg.entry_kind = print_entry_values_no;
680               memset (&entryarg, 0, sizeof (entryarg));
681               entryarg.sym = sym;
682               entryarg.entry_kind = print_entry_values_no;
683             }
684           else
685             read_frame_arg (sym, frame, &arg, &entryarg);
686
687           if (arg.entry_kind != print_entry_values_only)
688             print_frame_arg (&arg);
689
690           if (entryarg.entry_kind != print_entry_values_no)
691             {
692               if (arg.entry_kind != print_entry_values_only)
693                 {
694                   uiout->text (", ");
695                   uiout->wrap_hint ("    ");
696                 }
697
698               print_frame_arg (&entryarg);
699             }
700
701           xfree (arg.error);
702           xfree (entryarg.error);
703
704           first = 0;
705         }
706     }
707
708   /* Don't print nameless args in situations where we don't know
709      enough about the stack to find them.  */
710   if (num != -1)
711     {
712       long start;
713
714       if (highest_offset == -1)
715         start = gdbarch_frame_args_skip (get_frame_arch (frame));
716       else
717         start = highest_offset;
718
719       print_frame_nameless_args (frame, start, num - args_printed,
720                                  first, stream);
721     }
722 }
723
724 /* Set the current source and line to the location given by frame
725    FRAME, if possible.  When CENTER is true, adjust so the relevant
726    line is in the center of the next 'list'.  */
727
728 void
729 set_current_sal_from_frame (struct frame_info *frame)
730 {
731   symtab_and_line sal = find_frame_sal (frame);
732   if (sal.symtab != NULL)
733     set_current_source_symtab_and_line (sal);
734 }
735
736 /* If ON, GDB will display disassembly of the next source line when
737    execution of the program being debugged stops.
738    If AUTO (which is the default), or there's no line info to determine
739    the source line of the next instruction, display disassembly of next
740    instruction instead.  */
741
742 static enum auto_boolean disassemble_next_line;
743
744 static void
745 show_disassemble_next_line (struct ui_file *file, int from_tty,
746                                  struct cmd_list_element *c,
747                                  const char *value)
748 {
749   fprintf_filtered (file,
750                     _("Debugger's willingness to use "
751                       "disassemble-next-line is %s.\n"),
752                     value);
753 }
754
755 /* Use TRY_CATCH to catch the exception from the gdb_disassembly
756    because it will be broken by filter sometime.  */
757
758 static void
759 do_gdb_disassembly (struct gdbarch *gdbarch,
760                     int how_many, CORE_ADDR low, CORE_ADDR high)
761 {
762
763   TRY
764     {
765       gdb_disassembly (gdbarch, current_uiout,
766                        DISASSEMBLY_RAW_INSN, how_many,
767                        low, high);
768     }
769   CATCH (exception, RETURN_MASK_ERROR)
770     {
771       /* If an exception was thrown while doing the disassembly, print
772          the error message, to give the user a clue of what happened.  */
773       exception_print (gdb_stderr, exception);
774     }
775   END_CATCH
776 }
777
778 /* Print information about frame FRAME.  The output is format according
779    to PRINT_LEVEL and PRINT_WHAT and PRINT_ARGS.  The meaning of
780    PRINT_WHAT is:
781    
782    SRC_LINE: Print only source line.
783    LOCATION: Print only location.
784    SRC_AND_LOC: Print location and source line.
785
786    Used in "where" output, and to emit breakpoint or step
787    messages.  */
788
789 void
790 print_frame_info (struct frame_info *frame, int print_level,
791                   enum print_what print_what, int print_args,
792                   int set_current_sal)
793 {
794   struct gdbarch *gdbarch = get_frame_arch (frame);
795   int source_print;
796   int location_print;
797   struct ui_out *uiout = current_uiout;
798
799   if (get_frame_type (frame) == DUMMY_FRAME
800       || get_frame_type (frame) == SIGTRAMP_FRAME
801       || get_frame_type (frame) == ARCH_FRAME)
802     {
803       ui_out_emit_tuple tuple_emitter (uiout, "frame");
804
805       annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
806                             gdbarch, get_frame_pc (frame));
807
808       /* Do this regardless of SOURCE because we don't have any source
809          to list for this frame.  */
810       if (print_level)
811         {
812           uiout->text ("#");
813           uiout->field_fmt_int (2, ui_left, "level",
814                                 frame_relative_level (frame));
815         }
816       if (uiout->is_mi_like_p ())
817         {
818           annotate_frame_address ();
819           uiout->field_core_addr ("addr",
820                                   gdbarch, get_frame_pc (frame));
821           annotate_frame_address_end ();
822         }
823
824       if (get_frame_type (frame) == DUMMY_FRAME)
825         {
826           annotate_function_call ();
827           uiout->field_string ("func", "<function called from gdb>",
828                                ui_out_style_kind::FUNCTION);
829         }
830       else if (get_frame_type (frame) == SIGTRAMP_FRAME)
831         {
832           annotate_signal_handler_caller ();
833           uiout->field_string ("func", "<signal handler called>",
834                                ui_out_style_kind::FUNCTION);
835         }
836       else if (get_frame_type (frame) == ARCH_FRAME)
837         {
838           uiout->field_string ("func", "<cross-architecture call>",
839                                ui_out_style_kind::FUNCTION);
840         }
841       uiout->text ("\n");
842       annotate_frame_end ();
843
844       /* If disassemble-next-line is set to auto or on output the next
845          instruction.  */
846       if (disassemble_next_line == AUTO_BOOLEAN_AUTO
847           || disassemble_next_line == AUTO_BOOLEAN_TRUE)
848         do_gdb_disassembly (get_frame_arch (frame), 1,
849                             get_frame_pc (frame), get_frame_pc (frame) + 1);
850
851       return;
852     }
853
854   /* If FRAME is not the innermost frame, that normally means that
855      FRAME->pc points to *after* the call instruction, and we want to
856      get the line containing the call, never the next line.  But if
857      the next frame is a SIGTRAMP_FRAME or a DUMMY_FRAME, then the
858      next frame was not entered as the result of a call, and we want
859      to get the line containing FRAME->pc.  */
860   symtab_and_line sal = find_frame_sal (frame);
861
862   location_print = (print_what == LOCATION 
863                     || print_what == LOC_AND_ADDRESS
864                     || print_what == SRC_AND_LOC);
865
866   if (location_print || !sal.symtab)
867     print_frame (frame, print_level, print_what, print_args, sal);
868
869   source_print = (print_what == SRC_LINE || print_what == SRC_AND_LOC);
870
871   /* If disassemble-next-line is set to auto or on and doesn't have
872      the line debug messages for $pc, output the next instruction.  */
873   if ((disassemble_next_line == AUTO_BOOLEAN_AUTO
874        || disassemble_next_line == AUTO_BOOLEAN_TRUE)
875       && source_print && !sal.symtab)
876     do_gdb_disassembly (get_frame_arch (frame), 1,
877                         get_frame_pc (frame), get_frame_pc (frame) + 1);
878
879   if (source_print && sal.symtab)
880     {
881       int done = 0;
882       int mid_statement = ((print_what == SRC_LINE)
883                            && frame_show_address (frame, sal));
884
885       if (annotation_level)
886         done = identify_source_line (sal.symtab, sal.line, mid_statement,
887                                      get_frame_pc (frame));
888       if (!done)
889         {
890           if (deprecated_print_frame_info_listing_hook)
891             deprecated_print_frame_info_listing_hook (sal.symtab, 
892                                                       sal.line, 
893                                                       sal.line + 1, 0);
894           else
895             {
896               struct value_print_options opts;
897
898               get_user_print_options (&opts);
899               /* We used to do this earlier, but that is clearly
900                  wrong.  This function is used by many different
901                  parts of gdb, including normal_stop in infrun.c,
902                  which uses this to print out the current PC
903                  when we stepi/nexti into the middle of a source
904                  line.  Only the command line really wants this
905                  behavior.  Other UIs probably would like the
906                  ability to decide for themselves if it is desired.  */
907               if (opts.addressprint && mid_statement)
908                 {
909                   uiout->field_core_addr ("addr",
910                                           gdbarch, get_frame_pc (frame));
911                   uiout->text ("\t");
912                 }
913
914               print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
915             }
916         }
917
918       /* If disassemble-next-line is set to on and there is line debug
919          messages, output assembly codes for next line.  */
920       if (disassemble_next_line == AUTO_BOOLEAN_TRUE)
921         do_gdb_disassembly (get_frame_arch (frame), -1, sal.pc, sal.end);
922     }
923
924   if (set_current_sal)
925     {
926       CORE_ADDR pc;
927
928       if (get_frame_pc_if_available (frame, &pc))
929         set_last_displayed_sal (1, sal.pspace, pc, sal.symtab, sal.line);
930       else
931         set_last_displayed_sal (0, 0, 0, 0, 0);
932     }
933
934   annotate_frame_end ();
935
936   gdb_flush (gdb_stdout);
937 }
938
939 /* Remember the last symtab and line we displayed, which we use e.g.
940  * as the place to put a breakpoint when the `break' command is
941  * invoked with no arguments.  */
942
943 static void
944 set_last_displayed_sal (int valid, struct program_space *pspace,
945                         CORE_ADDR addr, struct symtab *symtab,
946                         int line)
947 {
948   last_displayed_sal_valid = valid;
949   last_displayed_pspace = pspace;
950   last_displayed_addr = addr;
951   last_displayed_symtab = symtab;
952   last_displayed_line = line;
953   if (valid && pspace == NULL)
954     {
955       clear_last_displayed_sal ();
956       internal_error (__FILE__, __LINE__,
957                       _("Trying to set NULL pspace."));
958     }
959 }
960
961 /* Forget the last sal we displayed.  */
962
963 void
964 clear_last_displayed_sal (void)
965 {
966   last_displayed_sal_valid = 0;
967   last_displayed_pspace = 0;
968   last_displayed_addr = 0;
969   last_displayed_symtab = 0;
970   last_displayed_line = 0;
971 }
972
973 /* Is our record of the last sal we displayed valid?  If not,
974  * the get_last_displayed_* functions will return NULL or 0, as
975  * appropriate.  */
976
977 int
978 last_displayed_sal_is_valid (void)
979 {
980   return last_displayed_sal_valid;
981 }
982
983 /* Get the pspace of the last sal we displayed, if it's valid.  */
984
985 struct program_space *
986 get_last_displayed_pspace (void)
987 {
988   if (last_displayed_sal_valid)
989     return last_displayed_pspace;
990   return 0;
991 }
992
993 /* Get the address of the last sal we displayed, if it's valid.  */
994
995 CORE_ADDR
996 get_last_displayed_addr (void)
997 {
998   if (last_displayed_sal_valid)
999     return last_displayed_addr;
1000   return 0;
1001 }
1002
1003 /* Get the symtab of the last sal we displayed, if it's valid.  */
1004
1005 struct symtab*
1006 get_last_displayed_symtab (void)
1007 {
1008   if (last_displayed_sal_valid)
1009     return last_displayed_symtab;
1010   return 0;
1011 }
1012
1013 /* Get the line of the last sal we displayed, if it's valid.  */
1014
1015 int
1016 get_last_displayed_line (void)
1017 {
1018   if (last_displayed_sal_valid)
1019     return last_displayed_line;
1020   return 0;
1021 }
1022
1023 /* Get the last sal we displayed, if it's valid.  */
1024
1025 symtab_and_line
1026 get_last_displayed_sal ()
1027 {
1028   symtab_and_line sal;
1029
1030   if (last_displayed_sal_valid)
1031     {
1032       sal.pspace = last_displayed_pspace;
1033       sal.pc = last_displayed_addr;
1034       sal.symtab = last_displayed_symtab;
1035       sal.line = last_displayed_line;
1036     }
1037
1038   return sal;
1039 }
1040
1041
1042 /* Attempt to obtain the name, FUNLANG and optionally FUNCP of the function
1043    corresponding to FRAME.  */
1044
1045 gdb::unique_xmalloc_ptr<char>
1046 find_frame_funname (struct frame_info *frame, enum language *funlang,
1047                     struct symbol **funcp)
1048 {
1049   struct symbol *func;
1050   gdb::unique_xmalloc_ptr<char> funname;
1051
1052   *funlang = language_unknown;
1053   if (funcp)
1054     *funcp = NULL;
1055
1056   func = get_frame_function (frame);
1057   if (func)
1058     {
1059       /* In certain pathological cases, the symtabs give the wrong
1060          function (when we are in the first function in a file which
1061          is compiled without debugging symbols, the previous function
1062          is compiled with debugging symbols, and the "foo.o" symbol
1063          that is supposed to tell us where the file with debugging
1064          symbols ends has been truncated by ar because it is longer
1065          than 15 characters).  This also occurs if the user uses asm()
1066          to create a function but not stabs for it (in a file compiled
1067          with -g).
1068
1069          So look in the minimal symbol tables as well, and if it comes
1070          up with a larger address for the function use that instead.
1071          I don't think this can ever cause any problems; there
1072          shouldn't be any minimal symbols in the middle of a function;
1073          if this is ever changed many parts of GDB will need to be
1074          changed (and we'll create a find_pc_minimal_function or some
1075          such).  */
1076
1077       struct bound_minimal_symbol msymbol;
1078
1079       /* Don't attempt to do this for inlined functions, which do not
1080          have a corresponding minimal symbol.  */
1081       if (!block_inlined_p (SYMBOL_BLOCK_VALUE (func)))
1082         msymbol
1083           = lookup_minimal_symbol_by_pc (get_frame_address_in_block (frame));
1084       else
1085         memset (&msymbol, 0, sizeof (msymbol));
1086
1087       if (msymbol.minsym != NULL
1088           && (BMSYMBOL_VALUE_ADDRESS (msymbol)
1089               > BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (func))))
1090         {
1091           /* We also don't know anything about the function besides
1092              its address and name.  */
1093           func = 0;
1094           funname.reset (xstrdup (MSYMBOL_PRINT_NAME (msymbol.minsym)));
1095           *funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1096         }
1097       else
1098         {
1099           const char *print_name = SYMBOL_PRINT_NAME (func);
1100
1101           *funlang = SYMBOL_LANGUAGE (func);
1102           if (funcp)
1103             *funcp = func;
1104           if (*funlang == language_cplus)
1105             {
1106               /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1107                  to display the demangled name that we already have
1108                  stored in the symbol table, but we stored a version
1109                  with DMGL_PARAMS turned on, and here we don't want to
1110                  display parameters.  So remove the parameters.  */
1111               funname = cp_remove_params (print_name);
1112             }
1113
1114           /* If we didn't hit the C++ case above, set *funname
1115              here.  */
1116           if (funname == NULL)
1117             funname.reset (xstrdup (print_name));
1118         }
1119     }
1120   else
1121     {
1122       struct bound_minimal_symbol msymbol;
1123       CORE_ADDR pc;
1124
1125       if (!get_frame_address_in_block_if_available (frame, &pc))
1126         return funname;
1127
1128       msymbol = lookup_minimal_symbol_by_pc (pc);
1129       if (msymbol.minsym != NULL)
1130         {
1131           funname.reset (xstrdup (MSYMBOL_PRINT_NAME (msymbol.minsym)));
1132           *funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1133         }
1134     }
1135
1136   return funname;
1137 }
1138
1139 static void
1140 print_frame (struct frame_info *frame, int print_level,
1141              enum print_what print_what, int print_args,
1142              struct symtab_and_line sal)
1143 {
1144   struct gdbarch *gdbarch = get_frame_arch (frame);
1145   struct ui_out *uiout = current_uiout;
1146   enum language funlang = language_unknown;
1147   struct value_print_options opts;
1148   struct symbol *func;
1149   CORE_ADDR pc = 0;
1150   int pc_p;
1151
1152   pc_p = get_frame_pc_if_available (frame, &pc);
1153
1154   gdb::unique_xmalloc_ptr<char> funname
1155     = find_frame_funname (frame, &funlang, &func);
1156
1157   annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
1158                         gdbarch, pc);
1159
1160   {
1161     ui_out_emit_tuple tuple_emitter (uiout, "frame");
1162
1163     if (print_level)
1164       {
1165         uiout->text ("#");
1166         uiout->field_fmt_int (2, ui_left, "level",
1167                               frame_relative_level (frame));
1168       }
1169     get_user_print_options (&opts);
1170     if (opts.addressprint)
1171       if (!sal.symtab
1172           || frame_show_address (frame, sal)
1173           || print_what == LOC_AND_ADDRESS)
1174         {
1175           annotate_frame_address ();
1176           if (pc_p)
1177             uiout->field_core_addr ("addr", gdbarch, pc);
1178           else
1179             uiout->field_string ("addr", "<unavailable>",
1180                                  ui_out_style_kind::ADDRESS);
1181           annotate_frame_address_end ();
1182           uiout->text (" in ");
1183         }
1184     annotate_frame_function_name ();
1185
1186     string_file stb;
1187     fprintf_symbol_filtered (&stb, funname ? funname.get () : "??",
1188                              funlang, DMGL_ANSI);
1189     uiout->field_stream ("func", stb, ui_out_style_kind::FUNCTION);
1190     uiout->wrap_hint ("   ");
1191     annotate_frame_args ();
1192
1193     uiout->text (" (");
1194     if (print_args)
1195       {
1196         int numargs;
1197
1198         if (gdbarch_frame_num_args_p (gdbarch))
1199           {
1200             numargs = gdbarch_frame_num_args (gdbarch, frame);
1201             gdb_assert (numargs >= 0);
1202           }
1203         else
1204           numargs = -1;
1205     
1206         {
1207           ui_out_emit_list list_emitter (uiout, "args");
1208           TRY
1209             {
1210               print_frame_args (func, frame, numargs, gdb_stdout);
1211             }
1212           CATCH (e, RETURN_MASK_ERROR)
1213             {
1214             }
1215           END_CATCH
1216
1217             /* FIXME: ARGS must be a list.  If one argument is a string it
1218                will have " that will not be properly escaped.  */
1219             }
1220         QUIT;
1221       }
1222     uiout->text (")");
1223     if (sal.symtab)
1224       {
1225         const char *filename_display;
1226       
1227         filename_display = symtab_to_filename_for_display (sal.symtab);
1228         annotate_frame_source_begin ();
1229         uiout->wrap_hint ("   ");
1230         uiout->text (" at ");
1231         annotate_frame_source_file ();
1232         uiout->field_string ("file", filename_display, ui_out_style_kind::FILE);
1233         if (uiout->is_mi_like_p ())
1234           {
1235             const char *fullname = symtab_to_fullname (sal.symtab);
1236
1237             uiout->field_string ("fullname", fullname);
1238           }
1239         annotate_frame_source_file_end ();
1240         uiout->text (":");
1241         annotate_frame_source_line ();
1242         uiout->field_int ("line", sal.line);
1243         annotate_frame_source_end ();
1244       }
1245
1246     if (pc_p && (funname == NULL || sal.symtab == NULL))
1247       {
1248         char *lib = solib_name_from_address (get_frame_program_space (frame),
1249                                              get_frame_pc (frame));
1250
1251         if (lib)
1252           {
1253             annotate_frame_where ();
1254             uiout->wrap_hint ("  ");
1255             uiout->text (" from ");
1256             uiout->field_string ("from", lib);
1257           }
1258       }
1259     if (uiout->is_mi_like_p ())
1260       uiout->field_string ("arch",
1261                            (gdbarch_bfd_arch_info (gdbarch))->printable_name);
1262   }
1263
1264   uiout->text ("\n");
1265 }
1266 \f
1267
1268 /* Completion function for "frame function", "info frame function", and
1269    "select-frame function" commands.  */
1270
1271 void
1272 frame_selection_by_function_completer (struct cmd_list_element *ignore,
1273                                        completion_tracker &tracker,
1274                                        const char *text, const char *word)
1275 {
1276   /* This is used to complete function names within a stack.  It would be
1277      nice if we only offered functions that were actually in the stack.
1278      However, this would mean unwinding the stack to completion, which
1279      could take too long, or on a corrupted stack, possibly not end.
1280      Instead, we offer all symbol names as a safer choice.  */
1281   collect_symbol_completion_matches (tracker,
1282                                      complete_symbol_mode::EXPRESSION,
1283                                      symbol_name_match_type::EXPRESSION,
1284                                      text, word);
1285 }
1286
1287 /* Core of all the "info frame" sub-commands.  Print information about a
1288    frame FI.  If SELECTED_FRAME_P is true then the user didn't provide a
1289    frame specification, they just entered 'info frame'.  If the user did
1290    provide a frame specification (for example 'info frame 0', 'info frame
1291    level 1') then SELECTED_FRAME_P will be false.  */
1292
1293 static void
1294 info_frame_command_core (struct frame_info *fi, bool selected_frame_p)
1295 {
1296   struct symbol *func;
1297   struct symtab *s;
1298   struct frame_info *calling_frame_info;
1299   int numregs;
1300   const char *funname = 0;
1301   enum language funlang = language_unknown;
1302   const char *pc_regname;
1303   struct gdbarch *gdbarch;
1304   CORE_ADDR frame_pc;
1305   int frame_pc_p;
1306   /* Initialize it to avoid "may be used uninitialized" warning.  */
1307   CORE_ADDR caller_pc = 0;
1308   int caller_pc_p = 0;
1309
1310   gdbarch = get_frame_arch (fi);
1311
1312   /* Name of the value returned by get_frame_pc().  Per comments, "pc"
1313      is not a good name.  */
1314   if (gdbarch_pc_regnum (gdbarch) >= 0)
1315     /* OK, this is weird.  The gdbarch_pc_regnum hardware register's value can
1316        easily not match that of the internal value returned by
1317        get_frame_pc().  */
1318     pc_regname = gdbarch_register_name (gdbarch, gdbarch_pc_regnum (gdbarch));
1319   else
1320     /* But then, this is weird to.  Even without gdbarch_pc_regnum, an
1321        architectures will often have a hardware register called "pc",
1322        and that register's value, again, can easily not match
1323        get_frame_pc().  */
1324     pc_regname = "pc";
1325
1326   frame_pc_p = get_frame_pc_if_available (fi, &frame_pc);
1327   func = get_frame_function (fi);
1328   symtab_and_line sal = find_frame_sal (fi);
1329   s = sal.symtab;
1330   gdb::unique_xmalloc_ptr<char> func_only;
1331   if (func)
1332     {
1333       funname = SYMBOL_PRINT_NAME (func);
1334       funlang = SYMBOL_LANGUAGE (func);
1335       if (funlang == language_cplus)
1336         {
1337           /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1338              to display the demangled name that we already have
1339              stored in the symbol table, but we stored a version
1340              with DMGL_PARAMS turned on, and here we don't want to
1341              display parameters.  So remove the parameters.  */
1342           func_only = cp_remove_params (funname);
1343
1344           if (func_only)
1345             funname = func_only.get ();
1346         }
1347     }
1348   else if (frame_pc_p)
1349     {
1350       struct bound_minimal_symbol msymbol;
1351
1352       msymbol = lookup_minimal_symbol_by_pc (frame_pc);
1353       if (msymbol.minsym != NULL)
1354         {
1355           funname = MSYMBOL_PRINT_NAME (msymbol.minsym);
1356           funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1357         }
1358     }
1359   calling_frame_info = get_prev_frame (fi);
1360
1361   if (selected_frame_p && frame_relative_level (fi) >= 0)
1362     {
1363       printf_filtered (_("Stack level %d, frame at "),
1364                        frame_relative_level (fi));
1365     }
1366   else
1367     {
1368       printf_filtered (_("Stack frame at "));
1369     }
1370   fputs_filtered (paddress (gdbarch, get_frame_base (fi)), gdb_stdout);
1371   printf_filtered (":\n");
1372   printf_filtered (" %s = ", pc_regname);
1373   if (frame_pc_p)
1374     fputs_filtered (paddress (gdbarch, get_frame_pc (fi)), gdb_stdout);
1375   else
1376     fputs_filtered ("<unavailable>", gdb_stdout);
1377
1378   wrap_here ("   ");
1379   if (funname)
1380     {
1381       printf_filtered (" in ");
1382       fprintf_symbol_filtered (gdb_stdout, funname, funlang,
1383                                DMGL_ANSI | DMGL_PARAMS);
1384     }
1385   wrap_here ("   ");
1386   if (sal.symtab)
1387     printf_filtered (" (%s:%d)", symtab_to_filename_for_display (sal.symtab),
1388                      sal.line);
1389   puts_filtered ("; ");
1390   wrap_here ("    ");
1391   printf_filtered ("saved %s = ", pc_regname);
1392
1393   if (!frame_id_p (frame_unwind_caller_id (fi)))
1394     val_print_not_saved (gdb_stdout);
1395   else
1396     {
1397       TRY
1398         {
1399           caller_pc = frame_unwind_caller_pc (fi);
1400           caller_pc_p = 1;
1401         }
1402       CATCH (ex, RETURN_MASK_ERROR)
1403         {
1404           switch (ex.error)
1405             {
1406             case NOT_AVAILABLE_ERROR:
1407               val_print_unavailable (gdb_stdout);
1408               break;
1409             case OPTIMIZED_OUT_ERROR:
1410               val_print_not_saved (gdb_stdout);
1411               break;
1412             default:
1413               fprintf_filtered (gdb_stdout, _("<error: %s>"), ex.message);
1414               break;
1415             }
1416         }
1417       END_CATCH
1418     }
1419
1420   if (caller_pc_p)
1421     fputs_filtered (paddress (gdbarch, caller_pc), gdb_stdout);
1422   printf_filtered ("\n");
1423
1424   if (calling_frame_info == NULL)
1425     {
1426       enum unwind_stop_reason reason;
1427
1428       reason = get_frame_unwind_stop_reason (fi);
1429       if (reason != UNWIND_NO_REASON)
1430         printf_filtered (_(" Outermost frame: %s\n"),
1431                          frame_stop_reason_string (fi));
1432     }
1433   else if (get_frame_type (fi) == TAILCALL_FRAME)
1434     puts_filtered (" tail call frame");
1435   else if (get_frame_type (fi) == INLINE_FRAME)
1436     printf_filtered (" inlined into frame %d",
1437                      frame_relative_level (get_prev_frame (fi)));
1438   else
1439     {
1440       printf_filtered (" called by frame at ");
1441       fputs_filtered (paddress (gdbarch, get_frame_base (calling_frame_info)),
1442                       gdb_stdout);
1443     }
1444   if (get_next_frame (fi) && calling_frame_info)
1445     puts_filtered (",");
1446   wrap_here ("   ");
1447   if (get_next_frame (fi))
1448     {
1449       printf_filtered (" caller of frame at ");
1450       fputs_filtered (paddress (gdbarch, get_frame_base (get_next_frame (fi))),
1451                       gdb_stdout);
1452     }
1453   if (get_next_frame (fi) || calling_frame_info)
1454     puts_filtered ("\n");
1455
1456   if (s)
1457     printf_filtered (" source language %s.\n",
1458                      language_str (s->language));
1459
1460   {
1461     /* Address of the argument list for this frame, or 0.  */
1462     CORE_ADDR arg_list = get_frame_args_address (fi);
1463     /* Number of args for this frame, or -1 if unknown.  */
1464     int numargs;
1465
1466     if (arg_list == 0)
1467       printf_filtered (" Arglist at unknown address.\n");
1468     else
1469       {
1470         printf_filtered (" Arglist at ");
1471         fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1472         printf_filtered (",");
1473
1474         if (!gdbarch_frame_num_args_p (gdbarch))
1475           {
1476             numargs = -1;
1477             puts_filtered (" args: ");
1478           }
1479         else
1480           {
1481             numargs = gdbarch_frame_num_args (gdbarch, fi);
1482             gdb_assert (numargs >= 0);
1483             if (numargs == 0)
1484               puts_filtered (" no args.");
1485             else if (numargs == 1)
1486               puts_filtered (" 1 arg: ");
1487             else
1488               printf_filtered (" %d args: ", numargs);
1489           }
1490         print_frame_args (func, fi, numargs, gdb_stdout);
1491         puts_filtered ("\n");
1492       }
1493   }
1494   {
1495     /* Address of the local variables for this frame, or 0.  */
1496     CORE_ADDR arg_list = get_frame_locals_address (fi);
1497
1498     if (arg_list == 0)
1499       printf_filtered (" Locals at unknown address,");
1500     else
1501       {
1502         printf_filtered (" Locals at ");
1503         fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1504         printf_filtered (",");
1505       }
1506   }
1507
1508   /* Print as much information as possible on the location of all the
1509      registers.  */
1510   {
1511     int count;
1512     int i;
1513     int need_nl = 1;
1514     int sp_regnum = gdbarch_sp_regnum (gdbarch);
1515
1516     /* The sp is special; what's displayed isn't the save address, but
1517        the value of the previous frame's sp.  This is a legacy thing,
1518        at one stage the frame cached the previous frame's SP instead
1519        of its address, hence it was easiest to just display the cached
1520        value.  */
1521     if (sp_regnum >= 0)
1522       {
1523         struct value *value = frame_unwind_register_value (fi, sp_regnum);
1524         gdb_assert (value != NULL);
1525
1526         if (!value_optimized_out (value) && value_entirely_available (value))
1527           {
1528             if (VALUE_LVAL (value) == not_lval)
1529               {
1530                 CORE_ADDR sp;
1531                 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1532                 int sp_size = register_size (gdbarch, sp_regnum);
1533
1534                 sp = extract_unsigned_integer (value_contents_all (value),
1535                                                sp_size, byte_order);
1536
1537                 printf_filtered (" Previous frame's sp is ");
1538                 fputs_filtered (paddress (gdbarch, sp), gdb_stdout);
1539                 printf_filtered ("\n");
1540               }
1541             else if (VALUE_LVAL (value) == lval_memory)
1542               {
1543                 printf_filtered (" Previous frame's sp at ");
1544                 fputs_filtered (paddress (gdbarch, value_address (value)),
1545                                 gdb_stdout);
1546                 printf_filtered ("\n");
1547               }
1548             else if (VALUE_LVAL (value) == lval_register)
1549               {
1550                 printf_filtered (" Previous frame's sp in %s\n",
1551                                  gdbarch_register_name (gdbarch,
1552                                                         VALUE_REGNUM (value)));
1553               }
1554
1555             release_value (value);
1556             need_nl = 0;
1557           }
1558         /* else keep quiet.  */
1559       }
1560
1561     count = 0;
1562     numregs = gdbarch_num_cooked_regs (gdbarch);
1563     for (i = 0; i < numregs; i++)
1564       if (i != sp_regnum
1565           && gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
1566         {
1567           enum lval_type lval;
1568           int optimized;
1569           int unavailable;
1570           CORE_ADDR addr;
1571           int realnum;
1572
1573           /* Find out the location of the saved register without
1574              fetching the corresponding value.  */
1575           frame_register_unwind (fi, i, &optimized, &unavailable,
1576                                  &lval, &addr, &realnum, NULL);
1577           /* For moment, only display registers that were saved on the
1578              stack.  */
1579           if (!optimized && !unavailable && lval == lval_memory)
1580             {
1581               if (count == 0)
1582                 puts_filtered (" Saved registers:\n ");
1583               else
1584                 puts_filtered (",");
1585               wrap_here (" ");
1586               printf_filtered (" %s at ",
1587                                gdbarch_register_name (gdbarch, i));
1588               fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
1589               count++;
1590             }
1591         }
1592     if (count || need_nl)
1593       puts_filtered ("\n");
1594   }
1595 }
1596
1597 /* Return the innermost frame at level LEVEL.  */
1598
1599 static struct frame_info *
1600 leading_innermost_frame (int level)
1601 {
1602   struct frame_info *leading;
1603
1604   leading = get_current_frame ();
1605
1606   gdb_assert (level >= 0);
1607
1608   while (leading != nullptr && level)
1609     {
1610       QUIT;
1611       leading = get_prev_frame (leading);
1612       level--;
1613     }
1614
1615   return leading;
1616 }
1617
1618 /* Return the starting frame needed to handle COUNT outermost frames.  */
1619
1620 static struct frame_info *
1621 trailing_outermost_frame (int count)
1622 {
1623   struct frame_info *current;
1624   struct frame_info *trailing;
1625
1626   trailing = get_current_frame ();
1627
1628   gdb_assert (count > 0);
1629
1630   current = trailing;
1631   while (current != nullptr && count--)
1632     {
1633       QUIT;
1634       current = get_prev_frame (current);
1635     }
1636
1637   /* Will stop when CURRENT reaches the top of the stack.
1638      TRAILING will be COUNT below it.  */
1639   while (current != nullptr)
1640     {
1641       QUIT;
1642       trailing = get_prev_frame (trailing);
1643       current = get_prev_frame (current);
1644     }
1645
1646   return trailing;
1647 }
1648
1649 /* The core of all the "select-frame" sub-commands.  Just wraps a call to
1650    SELECT_FRAME.  */
1651
1652 static void
1653 select_frame_command_core (struct frame_info *fi, bool ignored)
1654 {
1655   struct frame_info *prev_frame = get_selected_frame_if_set ();
1656   select_frame (fi);
1657   if (get_selected_frame_if_set () != prev_frame)
1658     gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
1659 }
1660
1661 /* See stack.h.  */
1662
1663 void
1664 select_frame_for_mi (struct frame_info *fi)
1665 {
1666   select_frame_command_core (fi, FALSE /* Ignored.  */);
1667 }
1668
1669 /* The core of all the "frame" sub-commands.  Select frame FI, and if this
1670    means we change frame send out a change notification (otherwise, just
1671    reprint the current frame summary).   */
1672
1673 static void
1674 frame_command_core (struct frame_info *fi, bool ignored)
1675 {
1676   struct frame_info *prev_frame = get_selected_frame_if_set ();
1677
1678   select_frame (fi);
1679   if (get_selected_frame_if_set () != prev_frame)
1680     gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
1681   else
1682     print_selected_thread_frame (current_uiout, USER_SELECTED_FRAME);
1683 }
1684
1685 /* The three commands 'frame', 'select-frame', and 'info frame' all have a
1686    common set of sub-commands that allow a specific frame to be selected.
1687    All of the sub-command functions are static methods within this class
1688    template which is then instantiated below.  The template parameter is a
1689    callback used to implement the functionality of the base command
1690    ('frame', 'select-frame', or 'info frame').
1691
1692    In the template parameter FI is the frame being selected.  The
1693    SELECTED_FRAME_P flag is true if the frame being selected was done by
1694    default, which happens when the user uses the base command with no
1695    arguments.  For example the commands 'info frame', 'select-frame',
1696    'frame' will all cause SELECTED_FRAME_P to be true.  In all other cases
1697    SELECTED_FRAME_P is false.  */
1698
1699 template <void (*FPTR) (struct frame_info *fi, bool selected_frame_p)>
1700 class frame_command_helper
1701 {
1702 public:
1703
1704   /* The "frame level" family of commands.  The ARG is an integer that is
1705      the frame's level in the stack.  */
1706   static void
1707   level (const char *arg, int from_tty)
1708   {
1709     int level = value_as_long (parse_and_eval (arg));
1710     struct frame_info *fid
1711       = find_relative_frame (get_current_frame (), &level);
1712     if (level != 0)
1713       error (_("No frame at level %s."), arg);
1714     FPTR (fid, false);
1715   }
1716
1717   /* The "frame address" family of commands.  ARG is a stack-pointer
1718      address for an existing frame.  This command does not allow new
1719      frames to be created.  */
1720
1721   static void
1722   address (const char *arg, int from_tty)
1723   {
1724     CORE_ADDR addr = value_as_address (parse_and_eval (arg));
1725     struct frame_info *fid = find_frame_for_address (addr);
1726     if (fid == NULL)
1727       error (_("No frame at address %s."), arg);
1728     FPTR (fid, false);
1729   }
1730
1731   /* The "frame view" family of commands.  ARG is one or two addresses and
1732      is used to view a frame that might be outside the current backtrace.
1733      The addresses are stack-pointer address, and (optional) pc-address.  */
1734
1735   static void
1736   view (const char *args, int from_tty)
1737   {
1738     struct frame_info *fid;
1739
1740     if (args == NULL)
1741     error (_("Missing address argument to view a frame"));
1742
1743     gdb_argv argv (args);
1744
1745     if (argv.count () == 2)
1746       {
1747         CORE_ADDR addr[2];
1748
1749         addr [0] = value_as_address (parse_and_eval (argv[0]));
1750         addr [1] = value_as_address (parse_and_eval (argv[1]));
1751         fid = create_new_frame (addr[0], addr[1]);
1752       }
1753     else
1754       {
1755         CORE_ADDR addr = value_as_address (parse_and_eval (argv[0]));
1756         fid = create_new_frame (addr, false);
1757       }
1758     FPTR (fid, false);
1759   }
1760
1761   /* The "frame function" family of commands.  ARG is the name of a
1762      function within the stack, the first function (searching from frame
1763      0) with that name will be selected.  */
1764
1765   static void
1766   function (const char *arg, int from_tty)
1767   {
1768     if (arg == NULL)
1769       error (_("Missing function name argument"));
1770     struct frame_info *fid = find_frame_for_function (arg);
1771     if (fid == NULL)
1772       error (_("No frame for function \"%s\"."), arg);
1773     FPTR (fid, false);
1774   }
1775
1776   /* The "frame" base command, that is, when no sub-command is specified.
1777      If one argument is provided then we assume that this is a frame's
1778      level as historically, this was the supported command syntax that was
1779      used most often.
1780
1781      If no argument is provided, then the current frame is selected.  */
1782
1783   static void
1784   base_command (const char *arg, int from_tty)
1785   {
1786     if (arg == NULL)
1787       FPTR (get_selected_frame (_("No stack.")), true);
1788     else
1789       level (arg, from_tty);
1790   }
1791 };
1792
1793 /* Instantiate three FRAME_COMMAND_HELPER instances to implement the
1794    sub-commands for 'info frame', 'frame', and 'select-frame' commands.  */
1795
1796 static frame_command_helper <info_frame_command_core> info_frame_cmd;
1797 static frame_command_helper <frame_command_core> frame_cmd;
1798 static frame_command_helper <select_frame_command_core> select_frame_cmd;
1799
1800 /* Print briefly all stack frames or just the innermost COUNT_EXP
1801    frames.  */
1802
1803 static void
1804 backtrace_command_1 (const char *count_exp, frame_filter_flags flags,
1805                      int no_filters, int from_tty)
1806 {
1807   struct frame_info *fi;
1808   int count;
1809   int py_start = 0, py_end = 0;
1810   enum ext_lang_bt_status result = EXT_LANG_BT_ERROR;
1811
1812   if (!target_has_stack)
1813     error (_("No stack."));
1814
1815   if (count_exp)
1816     {
1817       count = parse_and_eval_long (count_exp);
1818       if (count < 0)
1819         py_start = count;
1820       else
1821         {
1822           py_start = 0;
1823           /* The argument to apply_ext_lang_frame_filter is the number
1824              of the final frame to print, and frames start at 0.  */
1825           py_end = count - 1;
1826         }
1827     }
1828   else
1829     {
1830       py_end = -1;
1831       count = -1;
1832     }
1833
1834   if (! no_filters)
1835     {
1836       enum ext_lang_frame_args arg_type;
1837
1838       flags |= PRINT_LEVEL | PRINT_FRAME_INFO | PRINT_ARGS;
1839       if (from_tty)
1840         flags |= PRINT_MORE_FRAMES;
1841
1842       if (!strcmp (print_frame_arguments, "scalars"))
1843         arg_type = CLI_SCALAR_VALUES;
1844       else if (!strcmp (print_frame_arguments, "all"))
1845         arg_type = CLI_ALL_VALUES;
1846       else
1847         arg_type = NO_VALUES;
1848
1849       result = apply_ext_lang_frame_filter (get_current_frame (), flags,
1850                                             arg_type, current_uiout,
1851                                             py_start, py_end);
1852     }
1853
1854   /* Run the inbuilt backtrace if there are no filters registered, or
1855      "no-filters" has been specified from the command.  */
1856   if (no_filters ||  result == EXT_LANG_BT_NO_FILTERS)
1857     {
1858       struct frame_info *trailing;
1859
1860       /* The following code must do two things.  First, it must set the
1861          variable TRAILING to the frame from which we should start
1862          printing.  Second, it must set the variable count to the number
1863          of frames which we should print, or -1 if all of them.  */
1864
1865       if (count_exp != NULL && count < 0)
1866         {
1867           trailing = trailing_outermost_frame (-count);
1868           count = -1;
1869         }
1870       else
1871         trailing = get_current_frame ();
1872
1873       for (fi = trailing; fi && count--; fi = get_prev_frame (fi))
1874         {
1875           QUIT;
1876
1877           /* Don't use print_stack_frame; if an error() occurs it probably
1878              means further attempts to backtrace would fail (on the other
1879              hand, perhaps the code does or could be fixed to make sure
1880              the frame->prev field gets set to NULL in that case).  */
1881
1882           print_frame_info (fi, 1, LOCATION, 1, 0);
1883           if ((flags & PRINT_LOCALS) != 0)
1884             {
1885               struct frame_id frame_id = get_frame_id (fi);
1886
1887               print_frame_local_vars (fi, false, NULL, NULL, 1, gdb_stdout);
1888
1889               /* print_frame_local_vars invalidates FI.  */
1890               fi = frame_find_by_id (frame_id);
1891               if (fi == NULL)
1892                 {
1893                   trailing = NULL;
1894                   warning (_("Unable to restore previously selected frame."));
1895                   break;
1896                 }
1897             }
1898
1899           /* Save the last frame to check for error conditions.  */
1900           trailing = fi;
1901         }
1902
1903       /* If we've stopped before the end, mention that.  */
1904       if (fi && from_tty)
1905         printf_filtered (_("(More stack frames follow...)\n"));
1906
1907       /* If we've run out of frames, and the reason appears to be an error
1908          condition, print it.  */
1909       if (fi == NULL && trailing != NULL)
1910         {
1911           enum unwind_stop_reason reason;
1912
1913           reason = get_frame_unwind_stop_reason (trailing);
1914           if (reason >= UNWIND_FIRST_ERROR)
1915             printf_filtered (_("Backtrace stopped: %s\n"),
1916                              frame_stop_reason_string (trailing));
1917         }
1918     }
1919 }
1920
1921 static void
1922 backtrace_command (const char *arg, int from_tty)
1923 {
1924   bool filters = true;
1925   frame_filter_flags flags = 0;
1926
1927   if (arg)
1928     {
1929       bool done = false;
1930
1931       while (!done)
1932         {
1933           const char *save_arg = arg;
1934           std::string this_arg = extract_arg (&arg);
1935
1936           if (this_arg.empty ())
1937             break;
1938
1939           if (subset_compare (this_arg.c_str (), "no-filters"))
1940             filters = false;
1941           else if (subset_compare (this_arg.c_str (), "full"))
1942             flags |= PRINT_LOCALS;
1943           else if (subset_compare (this_arg.c_str (), "hide"))
1944             flags |= PRINT_HIDE;
1945           else
1946             {
1947               /* Not a recognized argument, so stop.  */
1948               arg = save_arg;
1949               done = true;
1950             }
1951         }
1952
1953       if (*arg == '\0')
1954         arg = NULL;
1955     }
1956
1957   backtrace_command_1 (arg, flags, !filters /* no frame-filters */, from_tty);
1958 }
1959
1960 /* Iterate over the local variables of a block B, calling CB with
1961    CB_DATA.  */
1962
1963 static void
1964 iterate_over_block_locals (const struct block *b,
1965                            iterate_over_block_arg_local_vars_cb cb,
1966                            void *cb_data)
1967 {
1968   struct block_iterator iter;
1969   struct symbol *sym;
1970
1971   ALL_BLOCK_SYMBOLS (b, iter, sym)
1972     {
1973       switch (SYMBOL_CLASS (sym))
1974         {
1975         case LOC_LOCAL:
1976         case LOC_REGISTER:
1977         case LOC_STATIC:
1978         case LOC_COMPUTED:
1979         case LOC_OPTIMIZED_OUT:
1980           if (SYMBOL_IS_ARGUMENT (sym))
1981             break;
1982           if (SYMBOL_DOMAIN (sym) == COMMON_BLOCK_DOMAIN)
1983             break;
1984           (*cb) (SYMBOL_PRINT_NAME (sym), sym, cb_data);
1985           break;
1986
1987         default:
1988           /* Ignore symbols which are not locals.  */
1989           break;
1990         }
1991     }
1992 }
1993
1994
1995 /* Same, but print labels.  */
1996
1997 #if 0
1998 /* Commented out, as the code using this function has also been
1999    commented out.  FIXME:brobecker/2009-01-13: Find out why the code
2000    was commented out in the first place.  The discussion introducing
2001    this change (2007-12-04: Support lexical blocks and function bodies
2002    that occupy non-contiguous address ranges) did not explain why
2003    this change was made.  */
2004 static int
2005 print_block_frame_labels (struct gdbarch *gdbarch, struct block *b,
2006                           int *have_default, struct ui_file *stream)
2007 {
2008   struct block_iterator iter;
2009   struct symbol *sym;
2010   int values_printed = 0;
2011
2012   ALL_BLOCK_SYMBOLS (b, iter, sym)
2013     {
2014       if (strcmp (SYMBOL_LINKAGE_NAME (sym), "default") == 0)
2015         {
2016           if (*have_default)
2017             continue;
2018           *have_default = 1;
2019         }
2020       if (SYMBOL_CLASS (sym) == LOC_LABEL)
2021         {
2022           struct symtab_and_line sal;
2023           struct value_print_options opts;
2024
2025           sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
2026           values_printed = 1;
2027           fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
2028           get_user_print_options (&opts);
2029           if (opts.addressprint)
2030             {
2031               fprintf_filtered (stream, " ");
2032               fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (sym)),
2033                               stream);
2034             }
2035           fprintf_filtered (stream, " in file %s, line %d\n",
2036                             sal.symtab->filename, sal.line);
2037         }
2038     }
2039
2040   return values_printed;
2041 }
2042 #endif
2043
2044 /* Iterate over all the local variables in block B, including all its
2045    superblocks, stopping when the top-level block is reached.  */
2046
2047 void
2048 iterate_over_block_local_vars (const struct block *block,
2049                                iterate_over_block_arg_local_vars_cb cb,
2050                                void *cb_data)
2051 {
2052   while (block)
2053     {
2054       iterate_over_block_locals (block, cb, cb_data);
2055       /* After handling the function's top-level block, stop.  Don't
2056          continue to its superblock, the block of per-file
2057          symbols.  */
2058       if (BLOCK_FUNCTION (block))
2059         break;
2060       block = BLOCK_SUPERBLOCK (block);
2061     }
2062 }
2063
2064 /* Data to be passed around in the calls to the locals and args
2065    iterators.  */
2066
2067 struct print_variable_and_value_data
2068 {
2069   gdb::optional<compiled_regex> preg;
2070   gdb::optional<compiled_regex> treg;
2071   struct frame_id frame_id;
2072   int num_tabs;
2073   struct ui_file *stream;
2074   int values_printed;
2075 };
2076
2077 /* The callback for the locals and args iterators.  */
2078
2079 static void
2080 do_print_variable_and_value (const char *print_name,
2081                              struct symbol *sym,
2082                              void *cb_data)
2083 {
2084   struct print_variable_and_value_data *p
2085     = (struct print_variable_and_value_data *) cb_data;
2086   struct frame_info *frame;
2087
2088   if (p->preg.has_value ()
2089       && p->preg->exec (SYMBOL_NATURAL_NAME (sym), 0,
2090                         NULL, 0) != 0)
2091     return;
2092   if (p->treg.has_value ()
2093       && !treg_matches_sym_type_name (*p->treg, sym))
2094     return;
2095
2096   frame = frame_find_by_id (p->frame_id);
2097   if (frame == NULL)
2098     {
2099       warning (_("Unable to restore previously selected frame."));
2100       return;
2101     }
2102
2103   print_variable_and_value (print_name, sym, frame, p->stream, p->num_tabs);
2104
2105   /* print_variable_and_value invalidates FRAME.  */
2106   frame = NULL;
2107
2108   p->values_printed = 1;
2109 }
2110
2111 /* Prepares the regular expression REG from REGEXP.
2112    If REGEXP is NULL, it results in an empty regular expression.  */
2113
2114 static void
2115 prepare_reg (const char *regexp, gdb::optional<compiled_regex> *reg)
2116 {
2117   if (regexp != NULL)
2118     {
2119       int cflags = REG_NOSUB | (case_sensitivity == case_sensitive_off
2120                                 ? REG_ICASE : 0);
2121       reg->emplace (regexp, cflags, _("Invalid regexp"));
2122     }
2123   else
2124     reg->reset ();
2125 }
2126
2127 /* Print all variables from the innermost up to the function block of FRAME.
2128    Print them with values to STREAM indented by NUM_TABS.
2129    If REGEXP is not NULL, only print local variables whose name
2130    matches REGEXP.
2131    If T_REGEXP is not NULL, only print local variables whose type
2132    matches T_REGEXP.
2133    If no local variables have been printed and !QUIET, prints a message
2134    explaining why no local variables could be printed.
2135
2136    This function will invalidate FRAME.  */
2137
2138 static void
2139 print_frame_local_vars (struct frame_info *frame,
2140                         bool quiet,
2141                         const char *regexp, const char *t_regexp,
2142                         int num_tabs, struct ui_file *stream)
2143 {
2144   struct print_variable_and_value_data cb_data;
2145   const struct block *block;
2146   CORE_ADDR pc;
2147
2148   if (!get_frame_pc_if_available (frame, &pc))
2149     {
2150       if (!quiet)
2151         fprintf_filtered (stream,
2152                           _("PC unavailable, cannot determine locals.\n"));
2153       return;
2154     }
2155
2156   block = get_frame_block (frame, 0);
2157   if (block == 0)
2158     {
2159       if (!quiet)
2160         fprintf_filtered (stream, "No symbol table info available.\n");
2161       return;
2162     }
2163
2164   prepare_reg (regexp, &cb_data.preg);
2165   prepare_reg (t_regexp, &cb_data.treg);
2166   cb_data.frame_id = get_frame_id (frame);
2167   cb_data.num_tabs = 4 * num_tabs;
2168   cb_data.stream = stream;
2169   cb_data.values_printed = 0;
2170
2171   /* Temporarily change the selected frame to the given FRAME.
2172      This allows routines that rely on the selected frame instead
2173      of being given a frame as parameter to use the correct frame.  */
2174   scoped_restore_selected_frame restore_selected_frame;
2175   select_frame (frame);
2176
2177   iterate_over_block_local_vars (block,
2178                                  do_print_variable_and_value,
2179                                  &cb_data);
2180
2181   if (!cb_data.values_printed && !quiet)
2182     {
2183       if (regexp == NULL && t_regexp == NULL)
2184         fprintf_filtered (stream, _("No locals.\n"));
2185       else
2186         fprintf_filtered (stream, _("No matching locals.\n"));
2187     }
2188 }
2189
2190 void
2191 info_locals_command (const char *args, int from_tty)
2192 {
2193   std::string regexp;
2194   std::string t_regexp;
2195   bool quiet = false;
2196
2197   while (args != NULL
2198          && extract_info_print_args (&args, &quiet, &regexp, &t_regexp))
2199     ;
2200
2201   if (args != NULL)
2202     report_unrecognized_option_error ("info locals", args);
2203
2204   print_frame_local_vars (get_selected_frame (_("No frame selected.")),
2205                           quiet,
2206                           regexp.empty () ? NULL : regexp.c_str (),
2207                           t_regexp.empty () ? NULL : t_regexp.c_str (),
2208                           0, gdb_stdout);
2209 }
2210
2211 /* Iterate over all the argument variables in block B.  */
2212
2213 void
2214 iterate_over_block_arg_vars (const struct block *b,
2215                              iterate_over_block_arg_local_vars_cb cb,
2216                              void *cb_data)
2217 {
2218   struct block_iterator iter;
2219   struct symbol *sym, *sym2;
2220
2221   ALL_BLOCK_SYMBOLS (b, iter, sym)
2222     {
2223       /* Don't worry about things which aren't arguments.  */
2224       if (SYMBOL_IS_ARGUMENT (sym))
2225         {
2226           /* We have to look up the symbol because arguments can have
2227              two entries (one a parameter, one a local) and the one we
2228              want is the local, which lookup_symbol will find for us.
2229              This includes gcc1 (not gcc2) on the sparc when passing a
2230              small structure and gcc2 when the argument type is float
2231              and it is passed as a double and converted to float by
2232              the prologue (in the latter case the type of the LOC_ARG
2233              symbol is double and the type of the LOC_LOCAL symbol is
2234              float).  There are also LOC_ARG/LOC_REGISTER pairs which
2235              are not combined in symbol-reading.  */
2236
2237           sym2 = lookup_symbol_search_name (SYMBOL_SEARCH_NAME (sym),
2238                                             b, VAR_DOMAIN).symbol;
2239           (*cb) (SYMBOL_PRINT_NAME (sym), sym2, cb_data);
2240         }
2241     }
2242 }
2243
2244 /* Print all argument variables of the function of FRAME.
2245    Print them with values to STREAM.
2246    If REGEXP is not NULL, only print argument variables whose name
2247    matches REGEXP.
2248    If T_REGEXP is not NULL, only print argument variables whose type
2249    matches T_REGEXP.
2250    If no argument variables have been printed and !QUIET, prints a message
2251    explaining why no argument variables could be printed.
2252
2253    This function will invalidate FRAME.  */
2254
2255 static void
2256 print_frame_arg_vars (struct frame_info *frame,
2257                       bool quiet,
2258                       const char *regexp, const char *t_regexp,
2259                       struct ui_file *stream)
2260 {
2261   struct print_variable_and_value_data cb_data;
2262   struct symbol *func;
2263   CORE_ADDR pc;
2264   gdb::optional<compiled_regex> preg;
2265   gdb::optional<compiled_regex> treg;
2266
2267   if (!get_frame_pc_if_available (frame, &pc))
2268     {
2269       if (!quiet)
2270         fprintf_filtered (stream,
2271                           _("PC unavailable, cannot determine args.\n"));
2272       return;
2273     }
2274
2275   func = get_frame_function (frame);
2276   if (func == NULL)
2277     {
2278       if (!quiet)
2279         fprintf_filtered (stream, _("No symbol table info available.\n"));
2280       return;
2281     }
2282
2283   prepare_reg (regexp, &cb_data.preg);
2284   prepare_reg (t_regexp, &cb_data.treg);
2285   cb_data.frame_id = get_frame_id (frame);
2286   cb_data.num_tabs = 0;
2287   cb_data.stream = stream;
2288   cb_data.values_printed = 0;
2289
2290   iterate_over_block_arg_vars (SYMBOL_BLOCK_VALUE (func),
2291                                do_print_variable_and_value, &cb_data);
2292
2293   /* do_print_variable_and_value invalidates FRAME.  */
2294   frame = NULL;
2295
2296   if (!cb_data.values_printed && !quiet)
2297     {
2298       if (regexp == NULL && t_regexp == NULL)
2299         fprintf_filtered (stream, _("No arguments.\n"));
2300       else
2301         fprintf_filtered (stream, _("No matching arguments.\n"));
2302     }
2303 }
2304
2305 void
2306 info_args_command (const char *args, int from_tty)
2307 {
2308   std::string regexp;
2309   std::string t_regexp;
2310   bool quiet = false;
2311
2312   while (args != NULL
2313          && extract_info_print_args (&args, &quiet, &regexp, &t_regexp))
2314     ;
2315
2316   if (args != NULL)
2317     report_unrecognized_option_error ("info args", args);
2318
2319
2320   print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
2321                         quiet,
2322                         regexp.empty () ? NULL : regexp.c_str (),
2323                         t_regexp.empty () ? NULL : t_regexp.c_str (),
2324                         gdb_stdout);
2325 }
2326 \f
2327 /* Return the symbol-block in which the selected frame is executing.
2328    Can return zero under various legitimate circumstances.
2329
2330    If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
2331    code address within the block returned.  We use this to decide
2332    which macros are in scope.  */
2333
2334 const struct block *
2335 get_selected_block (CORE_ADDR *addr_in_block)
2336 {
2337   if (!has_stack_frames ())
2338     return 0;
2339
2340   return get_frame_block (get_selected_frame (NULL), addr_in_block);
2341 }
2342
2343 /* Find a frame a certain number of levels away from FRAME.
2344    LEVEL_OFFSET_PTR points to an int containing the number of levels.
2345    Positive means go to earlier frames (up); negative, the reverse.
2346    The int that contains the number of levels is counted toward
2347    zero as the frames for those levels are found.
2348    If the top or bottom frame is reached, that frame is returned,
2349    but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
2350    how much farther the original request asked to go.  */
2351
2352 struct frame_info *
2353 find_relative_frame (struct frame_info *frame, int *level_offset_ptr)
2354 {
2355   /* Going up is simple: just call get_prev_frame enough times or
2356      until the initial frame is reached.  */
2357   while (*level_offset_ptr > 0)
2358     {
2359       struct frame_info *prev = get_prev_frame (frame);
2360
2361       if (!prev)
2362         break;
2363       (*level_offset_ptr)--;
2364       frame = prev;
2365     }
2366
2367   /* Going down is just as simple.  */
2368   while (*level_offset_ptr < 0)
2369     {
2370       struct frame_info *next = get_next_frame (frame);
2371
2372       if (!next)
2373         break;
2374       (*level_offset_ptr)++;
2375       frame = next;
2376     }
2377
2378   return frame;
2379 }
2380
2381 /* Select the frame up one or COUNT_EXP stack levels from the
2382    previously selected frame, and print it briefly.  */
2383
2384 static void
2385 up_silently_base (const char *count_exp)
2386 {
2387   struct frame_info *frame;
2388   int count = 1;
2389
2390   if (count_exp)
2391     count = parse_and_eval_long (count_exp);
2392
2393   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2394   if (count != 0 && count_exp == NULL)
2395     error (_("Initial frame selected; you cannot go up."));
2396   select_frame (frame);
2397 }
2398
2399 static void
2400 up_silently_command (const char *count_exp, int from_tty)
2401 {
2402   up_silently_base (count_exp);
2403 }
2404
2405 static void
2406 up_command (const char *count_exp, int from_tty)
2407 {
2408   up_silently_base (count_exp);
2409   gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
2410 }
2411
2412 /* Select the frame down one or COUNT_EXP stack levels from the previously
2413    selected frame, and print it briefly.  */
2414
2415 static void
2416 down_silently_base (const char *count_exp)
2417 {
2418   struct frame_info *frame;
2419   int count = -1;
2420
2421   if (count_exp)
2422     count = -parse_and_eval_long (count_exp);
2423
2424   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2425   if (count != 0 && count_exp == NULL)
2426     {
2427       /* We only do this if COUNT_EXP is not specified.  That way
2428          "down" means to really go down (and let me know if that is
2429          impossible), but "down 9999" can be used to mean go all the
2430          way down without getting an error.  */
2431
2432       error (_("Bottom (innermost) frame selected; you cannot go down."));
2433     }
2434
2435   select_frame (frame);
2436 }
2437
2438 static void
2439 down_silently_command (const char *count_exp, int from_tty)
2440 {
2441   down_silently_base (count_exp);
2442 }
2443
2444 static void
2445 down_command (const char *count_exp, int from_tty)
2446 {
2447   down_silently_base (count_exp);
2448   gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
2449 }
2450
2451 void
2452 return_command (const char *retval_exp, int from_tty)
2453 {
2454   /* Initialize it just to avoid a GCC false warning.  */
2455   enum return_value_convention rv_conv = RETURN_VALUE_STRUCT_CONVENTION;
2456   struct frame_info *thisframe;
2457   struct gdbarch *gdbarch;
2458   struct symbol *thisfun;
2459   struct value *return_value = NULL;
2460   struct value *function = NULL;
2461   const char *query_prefix = "";
2462
2463   thisframe = get_selected_frame ("No selected frame.");
2464   thisfun = get_frame_function (thisframe);
2465   gdbarch = get_frame_arch (thisframe);
2466
2467   if (get_frame_type (get_current_frame ()) == INLINE_FRAME)
2468     error (_("Can not force return from an inlined function."));
2469
2470   /* Compute the return value.  If the computation triggers an error,
2471      let it bail.  If the return type can't be handled, set
2472      RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
2473      message.  */
2474   if (retval_exp)
2475     {
2476       expression_up retval_expr = parse_expression (retval_exp);
2477       struct type *return_type = NULL;
2478
2479       /* Compute the return value.  Should the computation fail, this
2480          call throws an error.  */
2481       return_value = evaluate_expression (retval_expr.get ());
2482
2483       /* Cast return value to the return type of the function.  Should
2484          the cast fail, this call throws an error.  */
2485       if (thisfun != NULL)
2486         return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
2487       if (return_type == NULL)
2488         {
2489           if (retval_expr->elts[0].opcode != UNOP_CAST
2490               && retval_expr->elts[0].opcode != UNOP_CAST_TYPE)
2491             error (_("Return value type not available for selected "
2492                      "stack frame.\n"
2493                      "Please use an explicit cast of the value to return."));
2494           return_type = value_type (return_value);
2495         }
2496       return_type = check_typedef (return_type);
2497       return_value = value_cast (return_type, return_value);
2498
2499       /* Make sure the value is fully evaluated.  It may live in the
2500          stack frame we're about to pop.  */
2501       if (value_lazy (return_value))
2502         value_fetch_lazy (return_value);
2503
2504       if (thisfun != NULL)
2505         function = read_var_value (thisfun, NULL, thisframe);
2506
2507       rv_conv = RETURN_VALUE_REGISTER_CONVENTION;
2508       if (TYPE_CODE (return_type) == TYPE_CODE_VOID)
2509         /* If the return-type is "void", don't try to find the
2510            return-value's location.  However, do still evaluate the
2511            return expression so that, even when the expression result
2512            is discarded, side effects such as "return i++" still
2513            occur.  */
2514         return_value = NULL;
2515       else if (thisfun != NULL)
2516         {
2517           rv_conv = struct_return_convention (gdbarch, function, return_type);
2518           if (rv_conv == RETURN_VALUE_STRUCT_CONVENTION
2519               || rv_conv == RETURN_VALUE_ABI_RETURNS_ADDRESS)
2520             {
2521               query_prefix = "The location at which to store the "
2522                 "function's return value is unknown.\n"
2523                 "If you continue, the return value "
2524                 "that you specified will be ignored.\n";
2525               return_value = NULL;
2526             }
2527         }
2528     }
2529
2530   /* Does an interactive user really want to do this?  Include
2531      information, such as how well GDB can handle the return value, in
2532      the query message.  */
2533   if (from_tty)
2534     {
2535       int confirmed;
2536
2537       if (thisfun == NULL)
2538         confirmed = query (_("%sMake selected stack frame return now? "),
2539                            query_prefix);
2540       else
2541         {
2542           if (TYPE_NO_RETURN (thisfun->type))
2543             warning (_("Function does not return normally to caller."));
2544           confirmed = query (_("%sMake %s return now? "), query_prefix,
2545                              SYMBOL_PRINT_NAME (thisfun));
2546         }
2547       if (!confirmed)
2548         error (_("Not confirmed"));
2549     }
2550
2551   /* Discard the selected frame and all frames inner-to it.  */
2552   frame_pop (get_selected_frame (NULL));
2553
2554   /* Store RETURN_VALUE in the just-returned register set.  */
2555   if (return_value != NULL)
2556     {
2557       struct type *return_type = value_type (return_value);
2558       struct gdbarch *cache_arch = get_current_regcache ()->arch ();
2559
2560       gdb_assert (rv_conv != RETURN_VALUE_STRUCT_CONVENTION
2561                   && rv_conv != RETURN_VALUE_ABI_RETURNS_ADDRESS);
2562       gdbarch_return_value (cache_arch, function, return_type,
2563                             get_current_regcache (), NULL /*read*/,
2564                             value_contents (return_value) /*write*/);
2565     }
2566
2567   /* If we are at the end of a call dummy now, pop the dummy frame
2568      too.  */
2569   if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
2570     frame_pop (get_current_frame ());
2571
2572   select_frame (get_current_frame ());
2573   /* If interactive, print the frame that is now current.  */
2574   if (from_tty)
2575     print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2576 }
2577
2578 /* Find the most inner frame in the current stack for a function called
2579    FUNCTION_NAME.  If no matching frame is found return NULL.  */
2580
2581 static struct frame_info *
2582 find_frame_for_function (const char *function_name)
2583 {
2584   /* Used to hold the lower and upper addresses for each of the
2585      SYMTAB_AND_LINEs found for functions matching FUNCTION_NAME.  */
2586   struct function_bounds
2587   {
2588     CORE_ADDR low, high;
2589   };
2590   struct frame_info *frame;
2591   bool found = false;
2592   int level = 1;
2593
2594   gdb_assert (function_name != NULL);
2595
2596   frame = get_current_frame ();
2597   std::vector<symtab_and_line> sals
2598     = decode_line_with_current_source (function_name,
2599                                        DECODE_LINE_FUNFIRSTLINE);
2600   gdb::def_vector<function_bounds> func_bounds (sals.size ());
2601   for (size_t i = 0; i < sals.size (); i++)
2602     {
2603       if (sals[i].pspace != current_program_space)
2604         func_bounds[i].low = func_bounds[i].high = 0;
2605       else if (sals[i].pc == 0
2606                || find_pc_partial_function (sals[i].pc, NULL,
2607                                             &func_bounds[i].low,
2608                                             &func_bounds[i].high) == 0)
2609         func_bounds[i].low = func_bounds[i].high = 0;
2610     }
2611
2612   do
2613     {
2614       for (size_t i = 0; (i < sals.size () && !found); i++)
2615         found = (get_frame_pc (frame) >= func_bounds[i].low
2616                  && get_frame_pc (frame) < func_bounds[i].high);
2617       if (!found)
2618         {
2619           level = 1;
2620           frame = find_relative_frame (frame, &level);
2621         }
2622     }
2623   while (!found && level == 0);
2624
2625   if (!found)
2626     frame = NULL;
2627
2628   return frame;
2629 }
2630
2631 /* Implements the dbx 'func' command.  */
2632
2633 static void
2634 func_command (const char *arg, int from_tty)
2635 {
2636   if (arg == NULL)
2637     return;
2638
2639   struct frame_info *frame = find_frame_for_function (arg);
2640   if (frame == NULL)
2641     error (_("'%s' not within current stack frame."), arg);
2642   if (frame != get_selected_frame (NULL))
2643     {
2644       select_frame (frame);
2645       print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2646     }
2647 }
2648
2649 /* Apply a GDB command to all stack frames, or a set of identified frames,
2650    or innermost COUNT frames.
2651    With a negative COUNT, apply command on outermost -COUNT frames.
2652
2653    frame apply 3 info frame     Apply 'info frame' to frames 0, 1, 2
2654    frame apply -3 info frame    Apply 'info frame' to outermost 3 frames.
2655    frame apply all x/i $pc      Apply 'x/i $pc' cmd to all frames.
2656    frame apply all -s p local_var_no_idea_in_which_frame
2657                 If a frame has a local variable called
2658                 local_var_no_idea_in_which_frame, print frame
2659                 and value of local_var_no_idea_in_which_frame.
2660    frame apply all -s -q p local_var_no_idea_in_which_frame
2661                 Same as before, but only print the variable value.
2662    frame apply level 2-5 0 4-7 -s p i = i + 1
2663                 Adds 1 to the variable i in the specified frames.
2664                 Note that i will be incremented twice in
2665                 frames 4 and 5.  */
2666
2667 /* Apply a GDB command to COUNT stack frames, starting at TRAILING.
2668    CMD starts with 0 or more qcs flags followed by the GDB command to apply.
2669    COUNT -1 means all frames starting at TRAILING.  WHICH_COMMAND is used
2670    for error messages.  */
2671
2672 static void
2673 frame_apply_command_count (const char *which_command,
2674                            const char *cmd, int from_tty,
2675                            struct frame_info *trailing, int count)
2676 {
2677   qcs_flags flags;
2678   struct frame_info *fi;
2679
2680   while (cmd != NULL && parse_flags_qcs (which_command, &cmd, &flags))
2681     ;
2682
2683   if (cmd == NULL || *cmd == '\0')
2684     error (_("Please specify a command to apply on the selected frames"));
2685
2686   /* The below will restore the current inferior/thread/frame.
2687      Usually, only the frame is effectively to be restored.
2688      But in case CMD switches of inferior/thread, better restore
2689      these also.  */
2690   scoped_restore_current_thread restore_thread;
2691
2692   for (fi = trailing; fi && count--; fi = get_prev_frame (fi))
2693     {
2694       QUIT;
2695
2696       select_frame (fi);
2697       TRY
2698         {
2699           std::string cmd_result;
2700           {
2701             /* In case CMD switches of inferior/thread/frame, the below
2702                restores the inferior/thread/frame.  FI can then be
2703                set to the selected frame.  */
2704             scoped_restore_current_thread restore_fi_current_frame;
2705
2706             cmd_result = execute_command_to_string (cmd, from_tty);
2707           }
2708           fi = get_selected_frame (_("frame apply "
2709                                      "unable to get selected frame."));
2710           if (!flags.silent || cmd_result.length () > 0)
2711             {
2712               if (!flags.quiet)
2713                 print_stack_frame (fi, 1, LOCATION, 0);
2714               printf_filtered ("%s", cmd_result.c_str ());
2715             }
2716         }
2717       CATCH (ex, RETURN_MASK_ERROR)
2718         {
2719           fi = get_selected_frame (_("frame apply "
2720                                      "unable to get selected frame."));
2721           if (!flags.silent)
2722             {
2723               if (!flags.quiet)
2724                 print_stack_frame (fi, 1, LOCATION, 0);
2725               if (flags.cont)
2726                 printf_filtered ("%s\n", ex.message);
2727               else
2728                 throw_exception (ex);
2729             }
2730         }
2731       END_CATCH;
2732     }
2733 }
2734
2735 /* Implementation of the "frame apply level" command.  */
2736
2737 static void
2738 frame_apply_level_command (const char *cmd, int from_tty)
2739 {
2740   if (!target_has_stack)
2741     error (_("No stack."));
2742
2743   bool level_found = false;
2744   const char *levels_str = cmd;
2745   number_or_range_parser levels (levels_str);
2746
2747   /* Skip the LEVEL list to find the flags and command args.  */
2748   while (!levels.finished ())
2749     {
2750       /* Call for effect.  */
2751       levels.get_number ();
2752
2753       level_found = true;
2754       if (levels.in_range ())
2755         levels.skip_range ();
2756     }
2757
2758   if (!level_found)
2759     error (_("Missing or invalid LEVEL... argument"));
2760
2761   cmd = levels.cur_tok ();
2762
2763   /* Redo the LEVELS parsing, but applying COMMAND.  */
2764   levels.init (levels_str);
2765   while (!levels.finished ())
2766     {
2767       const int level_beg = levels.get_number ();
2768       int n_frames;
2769
2770       if (levels.in_range ())
2771         {
2772           n_frames = levels.end_value () - level_beg + 1;
2773           levels.skip_range ();
2774         }
2775       else
2776         n_frames = 1;
2777
2778       frame_apply_command_count ("frame apply level", cmd, from_tty,
2779                                  leading_innermost_frame (level_beg), n_frames);
2780     }
2781 }
2782
2783 /* Implementation of the "frame apply all" command.  */
2784
2785 static void
2786 frame_apply_all_command (const char *cmd, int from_tty)
2787 {
2788   if (!target_has_stack)
2789     error (_("No stack."));
2790
2791   frame_apply_command_count ("frame apply all", cmd, from_tty,
2792                              get_current_frame (), INT_MAX);
2793 }
2794
2795 /* Implementation of the "frame apply" command.  */
2796
2797 static void
2798 frame_apply_command (const char* cmd, int from_tty)
2799 {
2800   int count;
2801   struct frame_info *trailing;
2802
2803   if (!target_has_stack)
2804     error (_("No stack."));
2805
2806   if (cmd == NULL)
2807     error (_("Missing COUNT argument."));
2808   count = get_number_trailer (&cmd, 0);
2809   if (count == 0)
2810     error (_("Invalid COUNT argument."));
2811
2812   if (count < 0)
2813     {
2814       trailing = trailing_outermost_frame (-count);
2815       count = -1;
2816     }
2817   else
2818     trailing = get_current_frame ();
2819
2820   frame_apply_command_count ("frame apply", cmd, from_tty,
2821                              trailing, count);
2822 }
2823
2824 /* Implementation of the "faas" command.  */
2825
2826 static void
2827 faas_command (const char *cmd, int from_tty)
2828 {
2829   std::string expanded = std::string ("frame apply all -s ") + cmd;
2830   execute_command (expanded.c_str (), from_tty);
2831 }
2832
2833
2834 /* Find inner-mode frame with frame address ADDRESS.  Return NULL if no
2835    matching frame can be found.  */
2836
2837 static struct frame_info *
2838 find_frame_for_address (CORE_ADDR address)
2839 {
2840   struct frame_id id;
2841   struct frame_info *fid;
2842
2843   id = frame_id_build_wild (address);
2844
2845   /* If (s)he specifies the frame with an address, he deserves
2846      what (s)he gets.  Still, give the highest one that matches.
2847      (NOTE: cagney/2004-10-29: Why highest, or outer-most, I don't
2848      know).  */
2849   for (fid = get_current_frame ();
2850        fid != NULL;
2851        fid = get_prev_frame (fid))
2852     {
2853       if (frame_id_eq (id, get_frame_id (fid)))
2854         {
2855           struct frame_info *prev_frame;
2856
2857           while (1)
2858             {
2859               prev_frame = get_prev_frame (fid);
2860               if (!prev_frame
2861                   || !frame_id_eq (id, get_frame_id (prev_frame)))
2862                 break;
2863               fid = prev_frame;
2864             }
2865           return fid;
2866         }
2867     }
2868   return NULL;
2869 }
2870
2871 \f
2872
2873 /* Commands with a prefix of `frame apply'.  */
2874 static struct cmd_list_element *frame_apply_cmd_list = NULL;
2875
2876 /* Commands with a prefix of `frame'.  */
2877 static struct cmd_list_element *frame_cmd_list = NULL;
2878
2879 /* Commands with a prefix of `select frame'.  */
2880 static struct cmd_list_element *select_frame_cmd_list = NULL;
2881
2882 /* Commands with a prefix of `info frame'.  */
2883 static struct cmd_list_element *info_frame_cmd_list = NULL;
2884
2885 void
2886 _initialize_stack (void)
2887 {
2888   struct cmd_list_element *cmd;
2889
2890   add_com ("return", class_stack, return_command, _("\
2891 Make selected stack frame return to its caller.\n\
2892 Control remains in the debugger, but when you continue\n\
2893 execution will resume in the frame above the one now selected.\n\
2894 If an argument is given, it is an expression for the value to return."));
2895
2896   add_com ("up", class_stack, up_command, _("\
2897 Select and print stack frame that called this one.\n\
2898 An argument says how many frames up to go."));
2899   add_com ("up-silently", class_support, up_silently_command, _("\
2900 Same as the `up' command, but does not print anything.\n\
2901 This is useful in command scripts."));
2902
2903   add_com ("down", class_stack, down_command, _("\
2904 Select and print stack frame called by this one.\n\
2905 An argument says how many frames down to go."));
2906   add_com_alias ("do", "down", class_stack, 1);
2907   add_com_alias ("dow", "down", class_stack, 1);
2908   add_com ("down-silently", class_support, down_silently_command, _("\
2909 Same as the `down' command, but does not print anything.\n\
2910 This is useful in command scripts."));
2911
2912   add_prefix_cmd ("frame", class_stack,
2913                   &frame_cmd.base_command, _("\
2914 Select and print a stack frame.\n\
2915 With no argument, print the selected stack frame.  (See also \"info frame\").\n\
2916 A single numerical argument specifies the frame to select."),
2917                   &frame_cmd_list, "frame ", 1, &cmdlist);
2918
2919   add_com_alias ("f", "frame", class_stack, 1);
2920
2921 #define FRAME_APPLY_FLAGS_HELP "\
2922 Prints the frame location information followed by COMMAND output.\n\
2923 FLAG arguments are -q (quiet), -c (continue), -s (silent).\n\
2924 Flag -q disables printing the frame location information.\n\
2925 By default, if a COMMAND raises an error, frame apply is aborted.\n\
2926 Flag -c indicates to print the error and continue.\n\
2927 Flag -s indicates to silently ignore a COMMAND that raises an error\n\
2928 or produces no output."
2929
2930   add_prefix_cmd ("apply", class_stack, frame_apply_command,
2931                   _("Apply a command to a number of frames.\n\
2932 Usage: frame apply COUNT [FLAG]... COMMAND\n\
2933 With a negative COUNT argument, applies the command on outermost -COUNT frames.\n"
2934 FRAME_APPLY_FLAGS_HELP),
2935                   &frame_apply_cmd_list, "frame apply ", 1, &frame_cmd_list);
2936
2937   add_cmd ("all", class_stack, frame_apply_all_command,
2938            _("\
2939 Apply a command to all frames.\n\
2940 \n\
2941 Usage: frame apply all [FLAG]... COMMAND\n"
2942 FRAME_APPLY_FLAGS_HELP),
2943            &frame_apply_cmd_list);
2944
2945   add_cmd ("level", class_stack, frame_apply_level_command,
2946            _("\
2947 Apply a command to a list of frames.\n\
2948 \n\
2949 Usage: frame apply level LEVEL... [FLAG]... COMMAND\n\
2950 ID is a space-separated list of LEVELs of frames to apply COMMAND on.\n"
2951 FRAME_APPLY_FLAGS_HELP),
2952            &frame_apply_cmd_list);
2953
2954   add_com ("faas", class_stack, faas_command, _("\
2955 Apply a command to all frames (ignoring errors and empty output).\n\
2956 Usage: faas COMMAND\n\
2957 shortcut for 'frame apply all -s COMMAND'"));
2958
2959
2960   add_prefix_cmd ("frame", class_stack,
2961                   &frame_cmd.base_command, _("\
2962 Select and print a stack frame.\n\
2963 With no argument, print the selected stack frame.  (See also \"info frame\").\n\
2964 A single numerical argument specifies the frame to select."),
2965                   &frame_cmd_list, "frame ", 1, &cmdlist);
2966   add_com_alias ("f", "frame", class_stack, 1);
2967
2968   add_cmd ("address", class_stack, &frame_cmd.address,
2969            _("\
2970 Select and print a stack frame by stack address\n\
2971 \n\
2972 Usage: frame address STACK-ADDRESS"),
2973            &frame_cmd_list);
2974
2975   add_cmd ("view", class_stack, &frame_cmd.view,
2976            _("\
2977 View a stack frame that might be outside the current backtrace.\n\
2978 \n\
2979 Usage: frame view STACK-ADDRESS\n\
2980        frame view STACK-ADDRESS PC-ADDRESS"),
2981            &frame_cmd_list);
2982
2983   cmd = add_cmd ("function", class_stack, &frame_cmd.function,
2984            _("\
2985 Select and print a stack frame by function name.\n\
2986 \n\
2987 Usage: frame function NAME\n\
2988 \n\
2989 The innermost frame that visited function NAME is selected."),
2990            &frame_cmd_list);
2991   set_cmd_completer (cmd, frame_selection_by_function_completer);
2992
2993
2994   add_cmd ("level", class_stack, &frame_cmd.level,
2995            _("\
2996 Select and print a stack frame by level.\n\
2997 \n\
2998 Usage: frame level LEVEL"),
2999            &frame_cmd_list);
3000
3001   cmd = add_prefix_cmd_suppress_notification ("select-frame", class_stack,
3002                       &select_frame_cmd.base_command, _("\
3003 Select a stack frame without printing anything.\n\
3004 A single numerical argument specifies the frame to select."),
3005                       &select_frame_cmd_list, "select-frame ", 1, &cmdlist,
3006                       &cli_suppress_notification.user_selected_context);
3007
3008   add_cmd_suppress_notification ("address", class_stack,
3009                          &select_frame_cmd.address, _("\
3010 Select a stack frame by stack address.\n\
3011 \n\
3012 Usage: select-frame address STACK-ADDRESS"),
3013                          &select_frame_cmd_list,
3014                          &cli_suppress_notification.user_selected_context);
3015
3016
3017   add_cmd_suppress_notification ("view", class_stack,
3018                  &select_frame_cmd.view, _("\
3019 Select a stack frame that might be outside the current backtrace.\n\
3020 \n\
3021 Usage: select-frame view STACK-ADDRESS\n\
3022        select-frame view STACK-ADDRESS PC-ADDRESS"),
3023                  &select_frame_cmd_list,
3024                  &cli_suppress_notification.user_selected_context);
3025
3026   cmd = add_cmd_suppress_notification ("function", class_stack,
3027                &select_frame_cmd.function, _("\
3028 Select a stack frame by function name.\n\
3029 \n\
3030 Usage: select-frame function NAME"),
3031                &select_frame_cmd_list,
3032                &cli_suppress_notification.user_selected_context);
3033   set_cmd_completer (cmd, frame_selection_by_function_completer);
3034
3035   add_cmd_suppress_notification ("level", class_stack,
3036                          &select_frame_cmd.level, _("\
3037 Select a stack frame by level.\n\
3038 \n\
3039 Usage: select-frame level LEVEL"),
3040                          &select_frame_cmd_list,
3041                          &cli_suppress_notification.user_selected_context);
3042
3043   add_com ("backtrace", class_stack, backtrace_command, _("\
3044 Print backtrace of all stack frames, or innermost COUNT frames.\n\
3045 Usage: backtrace [QUALIFIERS]... [COUNT]\n\
3046 With a negative argument, print outermost -COUNT frames.\n\
3047 Use of the 'full' qualifier also prints the values of the local variables.\n\
3048 Use of the 'no-filters' qualifier prohibits frame filters from executing\n\
3049 on this backtrace."));
3050   add_com_alias ("bt", "backtrace", class_stack, 0);
3051
3052   add_com_alias ("where", "backtrace", class_alias, 0);
3053   add_info ("stack", backtrace_command,
3054             _("Backtrace of the stack, or innermost COUNT frames."));
3055   add_info_alias ("s", "stack", 1);
3056
3057   add_prefix_cmd ("frame", class_info, &info_frame_cmd.base_command,
3058                   _("All about the selected stack frame.\n\
3059 With no arguments, displays information about the currently selected stack\n\
3060 frame.  Alternatively a frame specification may be provided (See \"frame\")\n\
3061 the information is then printed about the specified frame."),
3062                   &info_frame_cmd_list, "info frame ", 1, &infolist);
3063   add_info_alias ("f", "frame", 1);
3064
3065   add_cmd ("address", class_stack, &info_frame_cmd.address,
3066            _("\
3067 Print information about a stack frame selected by stack address.\n\
3068 \n\
3069 Usage: info frame address STACK-ADDRESS"),
3070            &info_frame_cmd_list);
3071
3072   add_cmd ("view", class_stack, &info_frame_cmd.view,
3073            _("\
3074 Print information about a stack frame outside the current backtrace.\n\
3075 \n\
3076 Usage: info frame view STACK-ADDRESS\n\
3077        info frame view STACK-ADDRESS PC-ADDRESS"),
3078            &info_frame_cmd_list);
3079
3080   cmd = add_cmd ("function", class_stack, &info_frame_cmd.function,
3081            _("\
3082 Print information about a stack frame selected by function name.\n\
3083 \n\
3084 Usage: info frame function NAME"),
3085            &info_frame_cmd_list);
3086   set_cmd_completer (cmd, frame_selection_by_function_completer);
3087
3088   add_cmd ("level", class_stack, &info_frame_cmd.level,
3089            _("\
3090 Print information about a stack frame selected by level.\n\
3091 \n\
3092 Usage: info frame level LEVEL"),
3093            &info_frame_cmd_list);
3094
3095   add_info ("locals", info_locals_command,
3096             info_print_args_help (_("\
3097 All local variables of current stack frame or those matching REGEXPs.\n\
3098 Usage: info locals [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n\
3099 Prints the local variables of the current stack frame.\n"),
3100                                   _("local variables")));
3101   add_info ("args", info_args_command,
3102             info_print_args_help (_("\
3103 All argument variables of current stack frame or those matching REGEXPs.\n\
3104 Usage: info args [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n\
3105 Prints the argument variables of the current stack frame.\n"),
3106                                   _("argument variables")));
3107
3108   if (dbx_commands)
3109     add_com ("func", class_stack, func_command, _("\
3110 Select the stack frame that contains NAME.\n\
3111 Usage: func NAME"));
3112
3113   add_setshow_enum_cmd ("frame-arguments", class_stack,
3114                         print_frame_arguments_choices, &print_frame_arguments,
3115                         _("Set printing of non-scalar frame arguments"),
3116                         _("Show printing of non-scalar frame arguments"),
3117                         NULL, NULL, NULL, &setprintlist, &showprintlist);
3118
3119   add_setshow_boolean_cmd ("frame-arguments", no_class,
3120                            &print_raw_frame_arguments, _("\
3121 Set whether to print frame arguments in raw form."), _("\
3122 Show whether to print frame arguments in raw form."), _("\
3123 If set, frame arguments are printed in raw form, bypassing any\n\
3124 pretty-printers for that value."),
3125                            NULL, NULL,
3126                            &setprintrawlist, &showprintrawlist);
3127
3128   add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
3129                                 &disassemble_next_line, _("\
3130 Set whether to disassemble next source line or insn when execution stops."),
3131                                 _("\
3132 Show whether to disassemble next source line or insn when execution stops."),
3133                                 _("\
3134 If ON, GDB will display disassembly of the next source line, in addition\n\
3135 to displaying the source line itself.  If the next source line cannot\n\
3136 be displayed (e.g., source is unavailable or there's no line info), GDB\n\
3137 will display disassembly of next instruction instead of showing the\n\
3138 source line.\n\
3139 If AUTO, display disassembly of next instruction only if the source line\n\
3140 cannot be displayed.\n\
3141 If OFF (which is the default), never display the disassembly of the next\n\
3142 source line."),
3143                                 NULL,
3144                                 show_disassemble_next_line,
3145                                 &setlist, &showlist);
3146   disassemble_next_line = AUTO_BOOLEAN_FALSE;
3147
3148   add_setshow_enum_cmd ("entry-values", class_stack,
3149                         print_entry_values_choices, &print_entry_values,
3150                         _("Set printing of function arguments at function "
3151                           "entry"),
3152                         _("Show printing of function arguments at function "
3153                           "entry"),
3154                         _("\
3155 GDB can sometimes determine the values of function arguments at entry,\n\
3156 in addition to their current values.  This option tells GDB whether\n\
3157 to print the current value, the value at entry (marked as val@entry),\n\
3158 or both.  Note that one or both of these values may be <optimized out>."),
3159                         NULL, NULL, &setprintlist, &showprintlist);
3160 }