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