]> Git Repo - binutils.git/blob - gdb/stack.c
gdb: remove TYPE_LENGTH
[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 ()))
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_deref->length ()))
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 = func->value_block ();
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 = sym->value_longest ();
782                 int arg_size = sym->type ()->length ();
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         const char *lib
1431           = solib_name_from_address (get_frame_program_space (frame),
1432                                      get_frame_pc (frame));
1433
1434         if (lib)
1435           {
1436             annotate_frame_where ();
1437             uiout->wrap_hint (2);
1438             uiout->text (" from ");
1439             uiout->field_string ("from", lib, file_name_style.style ());
1440           }
1441       }
1442     if (uiout->is_mi_like_p ())
1443       uiout->field_string ("arch",
1444                            (gdbarch_bfd_arch_info (gdbarch))->printable_name);
1445   }
1446
1447   uiout->text ("\n");
1448 }
1449 \f
1450
1451 /* Completion function for "frame function", "info frame function", and
1452    "select-frame function" commands.  */
1453
1454 static void
1455 frame_selection_by_function_completer (struct cmd_list_element *ignore,
1456                                        completion_tracker &tracker,
1457                                        const char *text, const char *word)
1458 {
1459   /* This is used to complete function names within a stack.  It would be
1460      nice if we only offered functions that were actually in the stack.
1461      However, this would mean unwinding the stack to completion, which
1462      could take too long, or on a corrupted stack, possibly not end.
1463      Instead, we offer all symbol names as a safer choice.  */
1464   collect_symbol_completion_matches (tracker,
1465                                      complete_symbol_mode::EXPRESSION,
1466                                      symbol_name_match_type::EXPRESSION,
1467                                      text, word);
1468 }
1469
1470 /* Core of all the "info frame" sub-commands.  Print information about a
1471    frame FI.  If SELECTED_FRAME_P is true then the user didn't provide a
1472    frame specification, they just entered 'info frame'.  If the user did
1473    provide a frame specification (for example 'info frame 0', 'info frame
1474    level 1') then SELECTED_FRAME_P will be false.  */
1475
1476 static void
1477 info_frame_command_core (struct frame_info *fi, bool selected_frame_p)
1478 {
1479   struct symbol *func;
1480   struct symtab *s;
1481   struct frame_info *calling_frame_info;
1482   int numregs;
1483   const char *funname = 0;
1484   enum language funlang = language_unknown;
1485   const char *pc_regname;
1486   struct gdbarch *gdbarch;
1487   CORE_ADDR frame_pc;
1488   int frame_pc_p;
1489   /* Initialize it to avoid "may be used uninitialized" warning.  */
1490   CORE_ADDR caller_pc = 0;
1491   int caller_pc_p = 0;
1492
1493   gdbarch = get_frame_arch (fi);
1494
1495   /* Name of the value returned by get_frame_pc().  Per comments, "pc"
1496      is not a good name.  */
1497   if (gdbarch_pc_regnum (gdbarch) >= 0)
1498     /* OK, this is weird.  The gdbarch_pc_regnum hardware register's value can
1499        easily not match that of the internal value returned by
1500        get_frame_pc().  */
1501     pc_regname = gdbarch_register_name (gdbarch, gdbarch_pc_regnum (gdbarch));
1502   else
1503     /* But then, this is weird to.  Even without gdbarch_pc_regnum, an
1504        architectures will often have a hardware register called "pc",
1505        and that register's value, again, can easily not match
1506        get_frame_pc().  */
1507     pc_regname = "pc";
1508
1509   frame_pc_p = get_frame_pc_if_available (fi, &frame_pc);
1510   func = get_frame_function (fi);
1511   symtab_and_line sal = find_frame_sal (fi);
1512   s = sal.symtab;
1513   gdb::unique_xmalloc_ptr<char> func_only;
1514   if (func)
1515     {
1516       funname = func->print_name ();
1517       funlang = func->language ();
1518       if (funlang == language_cplus)
1519         {
1520           /* It seems appropriate to use print_name() here,
1521              to display the demangled name that we already have
1522              stored in the symbol table, but we stored a version
1523              with DMGL_PARAMS turned on, and here we don't want to
1524              display parameters.  So remove the parameters.  */
1525           func_only = cp_remove_params (funname);
1526
1527           if (func_only)
1528             funname = func_only.get ();
1529         }
1530     }
1531   else if (frame_pc_p)
1532     {
1533       struct bound_minimal_symbol msymbol;
1534
1535       msymbol = lookup_minimal_symbol_by_pc (frame_pc);
1536       if (msymbol.minsym != NULL)
1537         {
1538           funname = msymbol.minsym->print_name ();
1539           funlang = msymbol.minsym->language ();
1540         }
1541     }
1542   calling_frame_info = get_prev_frame (fi);
1543
1544   if (selected_frame_p && frame_relative_level (fi) >= 0)
1545     {
1546       gdb_printf (_("Stack level %d, frame at "),
1547                   frame_relative_level (fi));
1548     }
1549   else
1550     {
1551       gdb_printf (_("Stack frame at "));
1552     }
1553   gdb_puts (paddress (gdbarch, get_frame_base (fi)));
1554   gdb_printf (":\n");
1555   gdb_printf (" %s = ", pc_regname);
1556   if (frame_pc_p)
1557     gdb_puts (paddress (gdbarch, get_frame_pc (fi)));
1558   else
1559     fputs_styled ("<unavailable>", metadata_style.style (), gdb_stdout);
1560
1561   gdb_stdout->wrap_here (3);
1562   if (funname)
1563     {
1564       gdb_printf (" in ");
1565       gdb_puts (funname);
1566     }
1567   gdb_stdout->wrap_here (3);
1568   if (sal.symtab)
1569     gdb_printf
1570       (" (%ps:%d)",
1571        styled_string (file_name_style.style (),
1572                       symtab_to_filename_for_display (sal.symtab)),
1573        sal.line);
1574   gdb_puts ("; ");
1575   gdb_stdout->wrap_here (4);
1576   gdb_printf ("saved %s = ", pc_regname);
1577
1578   if (!frame_id_p (frame_unwind_caller_id (fi)))
1579     val_print_not_saved (gdb_stdout);
1580   else
1581     {
1582       try
1583         {
1584           caller_pc = frame_unwind_caller_pc (fi);
1585           caller_pc_p = 1;
1586         }
1587       catch (const gdb_exception_error &ex)
1588         {
1589           switch (ex.error)
1590             {
1591             case NOT_AVAILABLE_ERROR:
1592               val_print_unavailable (gdb_stdout);
1593               break;
1594             case OPTIMIZED_OUT_ERROR:
1595               val_print_not_saved (gdb_stdout);
1596               break;
1597             default:
1598               fprintf_styled (gdb_stdout, metadata_style.style (),
1599                               _("<error: %s>"),
1600                               ex.what ());
1601               break;
1602             }
1603         }
1604     }
1605
1606   if (caller_pc_p)
1607     gdb_puts (paddress (gdbarch, caller_pc));
1608   gdb_printf ("\n");
1609
1610   if (calling_frame_info == NULL)
1611     {
1612       enum unwind_stop_reason reason;
1613
1614       reason = get_frame_unwind_stop_reason (fi);
1615       if (reason != UNWIND_NO_REASON)
1616         gdb_printf (_(" Outermost frame: %s\n"),
1617                     frame_stop_reason_string (fi));
1618     }
1619   else if (get_frame_type (fi) == TAILCALL_FRAME)
1620     gdb_puts (" tail call frame");
1621   else if (get_frame_type (fi) == INLINE_FRAME)
1622     gdb_printf (" inlined into frame %d",
1623                 frame_relative_level (get_prev_frame (fi)));
1624   else
1625     {
1626       gdb_printf (" called by frame at ");
1627       gdb_puts (paddress (gdbarch, get_frame_base (calling_frame_info)));
1628     }
1629   if (get_next_frame (fi) && calling_frame_info)
1630     gdb_puts (",");
1631   gdb_stdout->wrap_here (3);
1632   if (get_next_frame (fi))
1633     {
1634       gdb_printf (" caller of frame at ");
1635       gdb_puts (paddress (gdbarch, get_frame_base (get_next_frame (fi))));
1636     }
1637   if (get_next_frame (fi) || calling_frame_info)
1638     gdb_puts ("\n");
1639
1640   if (s)
1641     gdb_printf (" source language %s.\n",
1642                 language_str (s->language ()));
1643
1644   {
1645     /* Address of the argument list for this frame, or 0.  */
1646     CORE_ADDR arg_list = get_frame_args_address (fi);
1647     /* Number of args for this frame, or -1 if unknown.  */
1648     int numargs;
1649
1650     if (arg_list == 0)
1651       gdb_printf (" Arglist at unknown address.\n");
1652     else
1653       {
1654         gdb_printf (" Arglist at ");
1655         gdb_puts (paddress (gdbarch, arg_list));
1656         gdb_printf (",");
1657
1658         if (!gdbarch_frame_num_args_p (gdbarch))
1659           {
1660             numargs = -1;
1661             gdb_puts (" args: ");
1662           }
1663         else
1664           {
1665             numargs = gdbarch_frame_num_args (gdbarch, fi);
1666             gdb_assert (numargs >= 0);
1667             if (numargs == 0)
1668               gdb_puts (" no args.");
1669             else if (numargs == 1)
1670               gdb_puts (" 1 arg: ");
1671             else
1672               gdb_printf (" %d args: ", numargs);
1673           }
1674         print_frame_args (user_frame_print_options,
1675                           func, fi, numargs, gdb_stdout);
1676         gdb_puts ("\n");
1677       }
1678   }
1679   {
1680     /* Address of the local variables for this frame, or 0.  */
1681     CORE_ADDR arg_list = get_frame_locals_address (fi);
1682
1683     if (arg_list == 0)
1684       gdb_printf (" Locals at unknown address,");
1685     else
1686       {
1687         gdb_printf (" Locals at ");
1688         gdb_puts (paddress (gdbarch, arg_list));
1689         gdb_printf (",");
1690       }
1691   }
1692
1693   /* Print as much information as possible on the location of all the
1694      registers.  */
1695   {
1696     int count;
1697     int i;
1698     int need_nl = 1;
1699     int sp_regnum = gdbarch_sp_regnum (gdbarch);
1700
1701     /* The sp is special; what's displayed isn't the save address, but
1702        the value of the previous frame's sp.  This is a legacy thing,
1703        at one stage the frame cached the previous frame's SP instead
1704        of its address, hence it was easiest to just display the cached
1705        value.  */
1706     if (sp_regnum >= 0)
1707       {
1708         struct value *value = frame_unwind_register_value (fi, sp_regnum);
1709         gdb_assert (value != NULL);
1710
1711         if (!value_optimized_out (value) && value_entirely_available (value))
1712           {
1713             if (VALUE_LVAL (value) == not_lval)
1714               {
1715                 CORE_ADDR sp;
1716                 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1717                 int sp_size = register_size (gdbarch, sp_regnum);
1718
1719                 sp = extract_unsigned_integer
1720                   (value_contents_all (value).data (), sp_size, byte_order);
1721
1722                 gdb_printf (" Previous frame's sp is ");
1723                 gdb_puts (paddress (gdbarch, sp));
1724                 gdb_printf ("\n");
1725               }
1726             else if (VALUE_LVAL (value) == lval_memory)
1727               {
1728                 gdb_printf (" Previous frame's sp at ");
1729                 gdb_puts (paddress (gdbarch, value_address (value)));
1730                 gdb_printf ("\n");
1731               }
1732             else if (VALUE_LVAL (value) == lval_register)
1733               {
1734                 gdb_printf (" Previous frame's sp in %s\n",
1735                             gdbarch_register_name (gdbarch,
1736                                                    VALUE_REGNUM (value)));
1737               }
1738
1739             release_value (value);
1740             need_nl = 0;
1741           }
1742         /* else keep quiet.  */
1743       }
1744
1745     count = 0;
1746     numregs = gdbarch_num_cooked_regs (gdbarch);
1747     for (i = 0; i < numregs; i++)
1748       if (i != sp_regnum
1749           && gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
1750         {
1751           enum lval_type lval;
1752           int optimized;
1753           int unavailable;
1754           CORE_ADDR addr;
1755           int realnum;
1756
1757           /* Find out the location of the saved register without
1758              fetching the corresponding value.  */
1759           frame_register_unwind (fi, i, &optimized, &unavailable,
1760                                  &lval, &addr, &realnum, NULL);
1761           /* For moment, only display registers that were saved on the
1762              stack.  */
1763           if (!optimized && !unavailable && lval == lval_memory)
1764             {
1765               if (count == 0)
1766                 gdb_puts (" Saved registers:\n ");
1767               else
1768                 gdb_puts (",");
1769               gdb_stdout->wrap_here (1);
1770               gdb_printf (" %s at ",
1771                           gdbarch_register_name (gdbarch, i));
1772               gdb_puts (paddress (gdbarch, addr));
1773               count++;
1774             }
1775         }
1776     if (count || need_nl)
1777       gdb_puts ("\n");
1778   }
1779 }
1780
1781 /* Return the innermost frame at level LEVEL.  */
1782
1783 static struct frame_info *
1784 leading_innermost_frame (int level)
1785 {
1786   struct frame_info *leading;
1787
1788   leading = get_current_frame ();
1789
1790   gdb_assert (level >= 0);
1791
1792   while (leading != nullptr && level)
1793     {
1794       QUIT;
1795       leading = get_prev_frame (leading);
1796       level--;
1797     }
1798
1799   return leading;
1800 }
1801
1802 /* Return the starting frame needed to handle COUNT outermost frames.  */
1803
1804 static struct frame_info *
1805 trailing_outermost_frame (int count)
1806 {
1807   struct frame_info *current;
1808   struct frame_info *trailing;
1809
1810   trailing = get_current_frame ();
1811
1812   gdb_assert (count > 0);
1813
1814   current = trailing;
1815   while (current != nullptr && count--)
1816     {
1817       QUIT;
1818       current = get_prev_frame (current);
1819     }
1820
1821   /* Will stop when CURRENT reaches the top of the stack.
1822      TRAILING will be COUNT below it.  */
1823   while (current != nullptr)
1824     {
1825       QUIT;
1826       trailing = get_prev_frame (trailing);
1827       current = get_prev_frame (current);
1828     }
1829
1830   return trailing;
1831 }
1832
1833 /* The core of all the "select-frame" sub-commands.  Just wraps a call to
1834    SELECT_FRAME.  */
1835
1836 static void
1837 select_frame_command_core (struct frame_info *fi, bool ignored)
1838 {
1839   frame_info *prev_frame = get_selected_frame ();
1840   select_frame (fi);
1841   if (get_selected_frame () != prev_frame)
1842     gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
1843 }
1844
1845 /* The core of all the "frame" sub-commands.  Select frame FI, and if this
1846    means we change frame send out a change notification (otherwise, just
1847    reprint the current frame summary).   */
1848
1849 static void
1850 frame_command_core (struct frame_info *fi, bool ignored)
1851 {
1852   frame_info *prev_frame = get_selected_frame ();
1853   select_frame (fi);
1854   if (get_selected_frame () != prev_frame)
1855     gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
1856   else
1857     print_selected_thread_frame (current_uiout, USER_SELECTED_FRAME);
1858 }
1859
1860 /* The three commands 'frame', 'select-frame', and 'info frame' all have a
1861    common set of sub-commands that allow a specific frame to be selected.
1862    All of the sub-command functions are static methods within this class
1863    template which is then instantiated below.  The template parameter is a
1864    callback used to implement the functionality of the base command
1865    ('frame', 'select-frame', or 'info frame').
1866
1867    In the template parameter FI is the frame being selected.  The
1868    SELECTED_FRAME_P flag is true if the frame being selected was done by
1869    default, which happens when the user uses the base command with no
1870    arguments.  For example the commands 'info frame', 'select-frame',
1871    'frame' will all cause SELECTED_FRAME_P to be true.  In all other cases
1872    SELECTED_FRAME_P is false.  */
1873
1874 template <void (*FPTR) (struct frame_info *fi, bool selected_frame_p)>
1875 class frame_command_helper
1876 {
1877 public:
1878
1879   /* The "frame level" family of commands.  The ARG is an integer that is
1880      the frame's level in the stack.  */
1881   static void
1882   level (const char *arg, int from_tty)
1883   {
1884     int level = value_as_long (parse_and_eval (arg));
1885     struct frame_info *fid
1886       = find_relative_frame (get_current_frame (), &level);
1887     if (level != 0)
1888       error (_("No frame at level %s."), arg);
1889     FPTR (fid, false);
1890   }
1891
1892   /* The "frame address" family of commands.  ARG is a stack-pointer
1893      address for an existing frame.  This command does not allow new
1894      frames to be created.  */
1895
1896   static void
1897   address (const char *arg, int from_tty)
1898   {
1899     CORE_ADDR addr = value_as_address (parse_and_eval (arg));
1900     struct frame_info *fid = find_frame_for_address (addr);
1901     if (fid == NULL)
1902       error (_("No frame at address %s."), arg);
1903     FPTR (fid, false);
1904   }
1905
1906   /* The "frame view" family of commands.  ARG is one or two addresses and
1907      is used to view a frame that might be outside the current backtrace.
1908      The addresses are stack-pointer address, and (optional) pc-address.  */
1909
1910   static void
1911   view (const char *args, int from_tty)
1912   {
1913     struct frame_info *fid;
1914
1915     if (args == NULL)
1916       error (_("Missing address argument to view a frame"));
1917
1918     gdb_argv argv (args);
1919
1920     if (argv.count () == 2)
1921       {
1922         CORE_ADDR addr[2];
1923
1924         addr [0] = value_as_address (parse_and_eval (argv[0]));
1925         addr [1] = value_as_address (parse_and_eval (argv[1]));
1926         fid = create_new_frame (addr[0], addr[1]);
1927       }
1928     else
1929       {
1930         CORE_ADDR addr = value_as_address (parse_and_eval (argv[0]));
1931         fid = create_new_frame (addr, false);
1932       }
1933     FPTR (fid, false);
1934   }
1935
1936   /* The "frame function" family of commands.  ARG is the name of a
1937      function within the stack, the first function (searching from frame
1938      0) with that name will be selected.  */
1939
1940   static void
1941   function (const char *arg, int from_tty)
1942   {
1943     if (arg == NULL)
1944       error (_("Missing function name argument"));
1945     struct frame_info *fid = find_frame_for_function (arg);
1946     if (fid == NULL)
1947       error (_("No frame for function \"%s\"."), arg);
1948     FPTR (fid, false);
1949   }
1950
1951   /* The "frame" base command, that is, when no sub-command is specified.
1952      If one argument is provided then we assume that this is a frame's
1953      level as historically, this was the supported command syntax that was
1954      used most often.
1955
1956      If no argument is provided, then the current frame is selected.  */
1957
1958   static void
1959   base_command (const char *arg, int from_tty)
1960   {
1961     if (arg == NULL)
1962       FPTR (get_selected_frame (_("No stack.")), true);
1963     else
1964       level (arg, from_tty);
1965   }
1966 };
1967
1968 /* Instantiate three FRAME_COMMAND_HELPER instances to implement the
1969    sub-commands for 'info frame', 'frame', and 'select-frame' commands.  */
1970
1971 static frame_command_helper <info_frame_command_core> info_frame_cmd;
1972 static frame_command_helper <frame_command_core> frame_cmd;
1973 static frame_command_helper <select_frame_command_core> select_frame_cmd;
1974
1975 /* Print briefly all stack frames or just the innermost COUNT_EXP
1976    frames.  */
1977
1978 static void
1979 backtrace_command_1 (const frame_print_options &fp_opts,
1980                      const backtrace_cmd_options &bt_opts,
1981                      const char *count_exp, int from_tty)
1982
1983 {
1984   struct frame_info *fi;
1985   int count;
1986   int py_start = 0, py_end = 0;
1987   enum ext_lang_bt_status result = EXT_LANG_BT_ERROR;
1988
1989   if (!target_has_stack ())
1990     error (_("No stack."));
1991
1992   if (count_exp)
1993     {
1994       count = parse_and_eval_long (count_exp);
1995       if (count < 0)
1996         py_start = count;
1997       else
1998         {
1999           py_start = 0;
2000           /* The argument to apply_ext_lang_frame_filter is the number
2001              of the final frame to print, and frames start at 0.  */
2002           py_end = count - 1;
2003         }
2004     }
2005   else
2006     {
2007       py_end = -1;
2008       count = -1;
2009     }
2010
2011   frame_filter_flags flags = 0;
2012
2013   if (bt_opts.full)
2014     flags |= PRINT_LOCALS;
2015   if (bt_opts.hide)
2016     flags |= PRINT_HIDE;
2017
2018   if (!bt_opts.no_filters)
2019     {
2020       enum ext_lang_frame_args arg_type;
2021
2022       flags |= PRINT_LEVEL | PRINT_FRAME_INFO | PRINT_ARGS;
2023       if (from_tty)
2024         flags |= PRINT_MORE_FRAMES;
2025
2026       if (fp_opts.print_frame_arguments == print_frame_arguments_scalars)
2027         arg_type = CLI_SCALAR_VALUES;
2028       else if (fp_opts.print_frame_arguments == print_frame_arguments_all)
2029         arg_type = CLI_ALL_VALUES;
2030       else if (fp_opts.print_frame_arguments == print_frame_arguments_presence)
2031         arg_type = CLI_PRESENCE;
2032       else if (fp_opts.print_frame_arguments == print_frame_arguments_none)
2033         arg_type = NO_VALUES;
2034       else
2035         gdb_assert (0);
2036
2037       result = apply_ext_lang_frame_filter (get_current_frame (), flags,
2038                                             arg_type, current_uiout,
2039                                             py_start, py_end);
2040     }
2041
2042   /* Run the inbuilt backtrace if there are no filters registered, or
2043      "-no-filters" has been specified from the command.  */
2044   if (bt_opts.no_filters || result == EXT_LANG_BT_NO_FILTERS)
2045     {
2046       struct frame_info *trailing;
2047
2048       /* The following code must do two things.  First, it must set the
2049          variable TRAILING to the frame from which we should start
2050          printing.  Second, it must set the variable count to the number
2051          of frames which we should print, or -1 if all of them.  */
2052
2053       if (count_exp != NULL && count < 0)
2054         {
2055           trailing = trailing_outermost_frame (-count);
2056           count = -1;
2057         }
2058       else
2059         trailing = get_current_frame ();
2060
2061       for (fi = trailing; fi && count--; fi = get_prev_frame (fi))
2062         {
2063           QUIT;
2064
2065           /* Don't use print_stack_frame; if an error() occurs it probably
2066              means further attempts to backtrace would fail (on the other
2067              hand, perhaps the code does or could be fixed to make sure
2068              the frame->prev field gets set to NULL in that case).  */
2069
2070           print_frame_info (fp_opts, fi, 1, LOCATION, 1, 0);
2071           if ((flags & PRINT_LOCALS) != 0)
2072             {
2073               struct frame_id frame_id = get_frame_id (fi);
2074
2075               print_frame_local_vars (fi, false, NULL, NULL, 1, gdb_stdout);
2076
2077               /* print_frame_local_vars invalidates FI.  */
2078               fi = frame_find_by_id (frame_id);
2079               if (fi == NULL)
2080                 {
2081                   trailing = NULL;
2082                   warning (_("Unable to restore previously selected frame."));
2083                   break;
2084                 }
2085             }
2086
2087           /* Save the last frame to check for error conditions.  */
2088           trailing = fi;
2089         }
2090
2091       /* If we've stopped before the end, mention that.  */
2092       if (fi && from_tty)
2093         gdb_printf (_("(More stack frames follow...)\n"));
2094
2095       /* If we've run out of frames, and the reason appears to be an error
2096          condition, print it.  */
2097       if (fi == NULL && trailing != NULL)
2098         {
2099           enum unwind_stop_reason reason;
2100
2101           reason = get_frame_unwind_stop_reason (trailing);
2102           if (reason >= UNWIND_FIRST_ERROR)
2103             gdb_printf (_("Backtrace stopped: %s\n"),
2104                         frame_stop_reason_string (trailing));
2105         }
2106     }
2107 }
2108
2109 /* Create an option_def_group array grouping all the "backtrace"
2110    options, with FP_OPTS, BT_CMD_OPT, SET_BT_OPTS as contexts.  */
2111
2112 static inline std::array<gdb::option::option_def_group, 3>
2113 make_backtrace_options_def_group (frame_print_options *fp_opts,
2114                                   backtrace_cmd_options *bt_cmd_opts,
2115                                   set_backtrace_options *set_bt_opts)
2116 {
2117   return {{
2118     { {frame_print_option_defs}, fp_opts },
2119     { {set_backtrace_option_defs}, set_bt_opts },
2120     { {backtrace_command_option_defs}, bt_cmd_opts }
2121   }};
2122 }
2123
2124 /* Parse the backtrace command's qualifiers.  Returns ARG advanced
2125    past the qualifiers, if any.  BT_CMD_OPTS, if not null, is used to
2126    store the parsed qualifiers.  */
2127
2128 static const char *
2129 parse_backtrace_qualifiers (const char *arg,
2130                             backtrace_cmd_options *bt_cmd_opts = nullptr)
2131 {
2132   while (true)
2133     {
2134       const char *save_arg = arg;
2135       std::string this_arg = extract_arg (&arg);
2136
2137       if (this_arg.empty ())
2138         return arg;
2139
2140       if (subset_compare (this_arg.c_str (), "no-filters"))
2141         {
2142           if (bt_cmd_opts != nullptr)
2143             bt_cmd_opts->no_filters = true;
2144         }
2145       else if (subset_compare (this_arg.c_str (), "full"))
2146         {
2147           if (bt_cmd_opts != nullptr)
2148             bt_cmd_opts->full = true;
2149         }
2150       else if (subset_compare (this_arg.c_str (), "hide"))
2151         {
2152           if (bt_cmd_opts != nullptr)
2153             bt_cmd_opts->hide = true;
2154         }
2155       else
2156         {
2157           /* Not a recognized qualifier, so stop.  */
2158           return save_arg;
2159         }
2160     }
2161 }
2162
2163 static void
2164 backtrace_command (const char *arg, int from_tty)
2165 {
2166   frame_print_options fp_opts = user_frame_print_options;
2167   backtrace_cmd_options bt_cmd_opts;
2168   set_backtrace_options set_bt_opts = user_set_backtrace_options;
2169
2170   auto grp
2171     = make_backtrace_options_def_group (&fp_opts, &bt_cmd_opts, &set_bt_opts);
2172   gdb::option::process_options
2173     (&arg, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
2174
2175   /* Parse non-'-'-prefixed qualifiers, for backwards
2176      compatibility.  */
2177   if (arg != NULL)
2178     {
2179       arg = parse_backtrace_qualifiers (arg, &bt_cmd_opts);
2180       if (*arg == '\0')
2181         arg = NULL;
2182     }
2183
2184   /* These options are handled quite deep in the unwind machinery, so
2185      we get to pass them down by swapping globals.  */
2186   scoped_restore restore_set_backtrace_options
2187     = make_scoped_restore (&user_set_backtrace_options, set_bt_opts);
2188
2189   backtrace_command_1 (fp_opts, bt_cmd_opts, arg, from_tty);
2190 }
2191
2192 /* Completer for the "backtrace" command.  */
2193
2194 static void
2195 backtrace_command_completer (struct cmd_list_element *ignore,
2196                              completion_tracker &tracker,
2197                              const char *text, const char */*word*/)
2198 {
2199   const auto group
2200     = make_backtrace_options_def_group (nullptr, nullptr, nullptr);
2201   if (gdb::option::complete_options
2202       (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
2203     return;
2204
2205   if (*text != '\0')
2206     {
2207       const char *p = skip_to_space (text);
2208       if (*p == '\0')
2209         {
2210           static const char *const backtrace_cmd_qualifier_choices[] = {
2211             "full", "no-filters", "hide", nullptr,
2212           };
2213           complete_on_enum (tracker, backtrace_cmd_qualifier_choices,
2214                             text, text);
2215
2216           if (tracker.have_completions ())
2217             return;
2218         }
2219       else
2220         {
2221           const char *cmd = parse_backtrace_qualifiers (text);
2222           tracker.advance_custom_word_point_by (cmd - text);
2223           text = cmd;
2224         }
2225     }
2226
2227   const char *word = advance_to_expression_complete_word_point (tracker, text);
2228   expression_completer (ignore, tracker, text, word);
2229 }
2230
2231 /* Iterate over the local variables of a block B, calling CB.  */
2232
2233 static void
2234 iterate_over_block_locals (const struct block *b,
2235                            iterate_over_block_arg_local_vars_cb cb)
2236 {
2237   struct block_iterator iter;
2238   struct symbol *sym;
2239
2240   ALL_BLOCK_SYMBOLS (b, iter, sym)
2241     {
2242       switch (sym->aclass ())
2243         {
2244         case LOC_CONST:
2245         case LOC_LOCAL:
2246         case LOC_REGISTER:
2247         case LOC_STATIC:
2248         case LOC_COMPUTED:
2249         case LOC_OPTIMIZED_OUT:
2250           if (sym->is_argument ())
2251             break;
2252           if (sym->domain () == COMMON_BLOCK_DOMAIN)
2253             break;
2254           cb (sym->print_name (), sym);
2255           break;
2256
2257         default:
2258           /* Ignore symbols which are not locals.  */
2259           break;
2260         }
2261     }
2262 }
2263
2264 /* Iterate over all the local variables in block B, including all its
2265    superblocks, stopping when the top-level block is reached.  */
2266
2267 void
2268 iterate_over_block_local_vars (const struct block *block,
2269                                iterate_over_block_arg_local_vars_cb cb)
2270 {
2271   while (block)
2272     {
2273       iterate_over_block_locals (block, cb);
2274       /* After handling the function's top-level block, stop.  Don't
2275          continue to its superblock, the block of per-file
2276          symbols.  */
2277       if (block->function ())
2278         break;
2279       block = block->superblock ();
2280     }
2281 }
2282
2283 /* Data to be passed around in the calls to the locals and args
2284    iterators.  */
2285
2286 struct print_variable_and_value_data
2287 {
2288   gdb::optional<compiled_regex> preg;
2289   gdb::optional<compiled_regex> treg;
2290   struct frame_id frame_id;
2291   int num_tabs;
2292   struct ui_file *stream;
2293   int values_printed;
2294
2295   void operator() (const char *print_name, struct symbol *sym);
2296 };
2297
2298 /* The callback for the locals and args iterators.  */
2299
2300 void
2301 print_variable_and_value_data::operator() (const char *print_name,
2302                                            struct symbol *sym)
2303 {
2304   struct frame_info *frame;
2305
2306   if (preg.has_value ()
2307       && preg->exec (sym->natural_name (), 0, NULL, 0) != 0)
2308     return;
2309   if (treg.has_value ()
2310       && !treg_matches_sym_type_name (*treg, sym))
2311     return;
2312   if (language_def (sym->language ())->symbol_printing_suppressed (sym))
2313     return;
2314
2315   frame = frame_find_by_id (frame_id);
2316   if (frame == NULL)
2317     {
2318       warning (_("Unable to restore previously selected frame."));
2319       return;
2320     }
2321
2322   print_variable_and_value (print_name, sym, frame, stream, num_tabs);
2323
2324   /* print_variable_and_value invalidates FRAME.  */
2325   frame = NULL;
2326
2327   values_printed = 1;
2328 }
2329
2330 /* Prepares the regular expression REG from REGEXP.
2331    If REGEXP is NULL, it results in an empty regular expression.  */
2332
2333 static void
2334 prepare_reg (const char *regexp, gdb::optional<compiled_regex> *reg)
2335 {
2336   if (regexp != NULL)
2337     {
2338       int cflags = REG_NOSUB | (case_sensitivity == case_sensitive_off
2339                                 ? REG_ICASE : 0);
2340       reg->emplace (regexp, cflags, _("Invalid regexp"));
2341     }
2342   else
2343     reg->reset ();
2344 }
2345
2346 /* Print all variables from the innermost up to the function block of FRAME.
2347    Print them with values to STREAM indented by NUM_TABS.
2348    If REGEXP is not NULL, only print local variables whose name
2349    matches REGEXP.
2350    If T_REGEXP is not NULL, only print local variables whose type
2351    matches T_REGEXP.
2352    If no local variables have been printed and !QUIET, prints a message
2353    explaining why no local variables could be printed.
2354
2355    This function will invalidate FRAME.  */
2356
2357 static void
2358 print_frame_local_vars (struct frame_info *frame,
2359                         bool quiet,
2360                         const char *regexp, const char *t_regexp,
2361                         int num_tabs, struct ui_file *stream)
2362 {
2363   struct print_variable_and_value_data cb_data;
2364   const struct block *block;
2365   CORE_ADDR pc;
2366
2367   if (!get_frame_pc_if_available (frame, &pc))
2368     {
2369       if (!quiet)
2370         gdb_printf (stream,
2371                     _("PC unavailable, cannot determine locals.\n"));
2372       return;
2373     }
2374
2375   block = get_frame_block (frame, 0);
2376   if (block == 0)
2377     {
2378       if (!quiet)
2379         gdb_printf (stream, "No symbol table info available.\n");
2380       return;
2381     }
2382
2383   prepare_reg (regexp, &cb_data.preg);
2384   prepare_reg (t_regexp, &cb_data.treg);
2385   cb_data.frame_id = get_frame_id (frame);
2386   cb_data.num_tabs = 4 * num_tabs;
2387   cb_data.stream = stream;
2388   cb_data.values_printed = 0;
2389
2390   /* Temporarily change the selected frame to the given FRAME.
2391      This allows routines that rely on the selected frame instead
2392      of being given a frame as parameter to use the correct frame.  */
2393   scoped_restore_selected_frame restore_selected_frame;
2394   select_frame (frame);
2395
2396   iterate_over_block_local_vars (block, cb_data);
2397
2398   if (!cb_data.values_printed && !quiet)
2399     {
2400       if (regexp == NULL && t_regexp == NULL)
2401         gdb_printf (stream, _("No locals.\n"));
2402       else
2403         gdb_printf (stream, _("No matching locals.\n"));
2404     }
2405 }
2406
2407 /* Structure to hold the values of the options used by the 'info
2408    variables' command and other similar commands.  These correspond to the
2409    -q and -t options.  */
2410
2411 struct info_print_options
2412 {
2413   bool quiet = false;
2414   std::string type_regexp;
2415 };
2416
2417 /* The options used by the 'info locals' and 'info args' commands.  */
2418
2419 static const gdb::option::option_def info_print_options_defs[] = {
2420   gdb::option::boolean_option_def<info_print_options> {
2421     "q",
2422     [] (info_print_options *opt) { return &opt->quiet; },
2423     nullptr, /* show_cmd_cb */
2424     nullptr /* set_doc */
2425   },
2426
2427   gdb::option::string_option_def<info_print_options> {
2428     "t",
2429     [] (info_print_options *opt) { return &opt->type_regexp; },
2430     nullptr, /* show_cmd_cb */
2431     nullptr /* set_doc */
2432   }
2433 };
2434
2435 /* Returns the option group used by 'info locals' and 'info args'
2436    commands.  */
2437
2438 static gdb::option::option_def_group
2439 make_info_print_options_def_group (info_print_options *opts)
2440 {
2441   return {{info_print_options_defs}, opts};
2442 }
2443
2444 /* Command completer for 'info locals' and 'info args'.  */
2445
2446 static void
2447 info_print_command_completer (struct cmd_list_element *ignore,
2448                               completion_tracker &tracker,
2449                               const char *text, const char * /* word */)
2450 {
2451   const auto group
2452     = make_info_print_options_def_group (nullptr);
2453   if (gdb::option::complete_options
2454       (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
2455     return;
2456
2457   const char *word = advance_to_expression_complete_word_point (tracker, text);
2458   symbol_completer (ignore, tracker, text, word);
2459 }
2460
2461 /* Implement the 'info locals' command.  */
2462
2463 void
2464 info_locals_command (const char *args, int from_tty)
2465 {
2466   info_print_options opts;
2467   auto grp = make_info_print_options_def_group (&opts);
2468   gdb::option::process_options
2469     (&args, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
2470   if (args != nullptr && *args == '\0')
2471     args = nullptr;
2472
2473   print_frame_local_vars
2474     (get_selected_frame (_("No frame selected.")),
2475      opts.quiet, args,
2476      opts.type_regexp.empty () ? nullptr : opts.type_regexp.c_str (),
2477      0, gdb_stdout);
2478 }
2479
2480 /* Iterate over all the argument variables in block B.  */
2481
2482 void
2483 iterate_over_block_arg_vars (const struct block *b,
2484                              iterate_over_block_arg_local_vars_cb cb)
2485 {
2486   struct block_iterator iter;
2487   struct symbol *sym, *sym2;
2488
2489   ALL_BLOCK_SYMBOLS (b, iter, sym)
2490     {
2491       /* Don't worry about things which aren't arguments.  */
2492       if (sym->is_argument ())
2493         {
2494           /* We have to look up the symbol because arguments can have
2495              two entries (one a parameter, one a local) and the one we
2496              want is the local, which lookup_symbol will find for us.
2497              This includes gcc1 (not gcc2) on the sparc when passing a
2498              small structure and gcc2 when the argument type is float
2499              and it is passed as a double and converted to float by
2500              the prologue (in the latter case the type of the LOC_ARG
2501              symbol is double and the type of the LOC_LOCAL symbol is
2502              float).  There are also LOC_ARG/LOC_REGISTER pairs which
2503              are not combined in symbol-reading.  */
2504
2505           sym2 = lookup_symbol_search_name (sym->search_name (),
2506                                             b, VAR_DOMAIN).symbol;
2507           cb (sym->print_name (), sym2);
2508         }
2509     }
2510 }
2511
2512 /* Print all argument variables of the function of FRAME.
2513    Print them with values to STREAM.
2514    If REGEXP is not NULL, only print argument variables whose name
2515    matches REGEXP.
2516    If T_REGEXP is not NULL, only print argument variables whose type
2517    matches T_REGEXP.
2518    If no argument variables have been printed and !QUIET, prints a message
2519    explaining why no argument variables could be printed.
2520
2521    This function will invalidate FRAME.  */
2522
2523 static void
2524 print_frame_arg_vars (struct frame_info *frame,
2525                       bool quiet,
2526                       const char *regexp, const char *t_regexp,
2527                       struct ui_file *stream)
2528 {
2529   struct print_variable_and_value_data cb_data;
2530   struct symbol *func;
2531   CORE_ADDR pc;
2532   gdb::optional<compiled_regex> preg;
2533   gdb::optional<compiled_regex> treg;
2534
2535   if (!get_frame_pc_if_available (frame, &pc))
2536     {
2537       if (!quiet)
2538         gdb_printf (stream,
2539                     _("PC unavailable, cannot determine args.\n"));
2540       return;
2541     }
2542
2543   func = get_frame_function (frame);
2544   if (func == NULL)
2545     {
2546       if (!quiet)
2547         gdb_printf (stream, _("No symbol table info available.\n"));
2548       return;
2549     }
2550
2551   prepare_reg (regexp, &cb_data.preg);
2552   prepare_reg (t_regexp, &cb_data.treg);
2553   cb_data.frame_id = get_frame_id (frame);
2554   cb_data.num_tabs = 0;
2555   cb_data.stream = stream;
2556   cb_data.values_printed = 0;
2557
2558   iterate_over_block_arg_vars (func->value_block (), cb_data);
2559
2560   /* do_print_variable_and_value invalidates FRAME.  */
2561   frame = NULL;
2562
2563   if (!cb_data.values_printed && !quiet)
2564     {
2565       if (regexp == NULL && t_regexp == NULL)
2566         gdb_printf (stream, _("No arguments.\n"));
2567       else
2568         gdb_printf (stream, _("No matching arguments.\n"));
2569     }
2570 }
2571
2572 /* Implement the 'info args' command.  */
2573
2574 void
2575 info_args_command (const char *args, int from_tty)
2576 {
2577   info_print_options opts;
2578   auto grp = make_info_print_options_def_group (&opts);
2579   gdb::option::process_options
2580     (&args, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
2581   if (args != nullptr && *args == '\0')
2582     args = nullptr;
2583
2584   print_frame_arg_vars
2585     (get_selected_frame (_("No frame selected.")),
2586      opts.quiet, args,
2587      opts.type_regexp.empty () ? nullptr : opts.type_regexp.c_str (),
2588      gdb_stdout);
2589 }
2590 \f
2591 /* Return the symbol-block in which the selected frame is executing.
2592    Can return zero under various legitimate circumstances.
2593
2594    If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
2595    code address within the block returned.  We use this to decide
2596    which macros are in scope.  */
2597
2598 const struct block *
2599 get_selected_block (CORE_ADDR *addr_in_block)
2600 {
2601   if (!has_stack_frames ())
2602     return 0;
2603
2604   return get_frame_block (get_selected_frame (NULL), addr_in_block);
2605 }
2606
2607 /* Find a frame a certain number of levels away from FRAME.
2608    LEVEL_OFFSET_PTR points to an int containing the number of levels.
2609    Positive means go to earlier frames (up); negative, the reverse.
2610    The int that contains the number of levels is counted toward
2611    zero as the frames for those levels are found.
2612    If the top or bottom frame is reached, that frame is returned,
2613    but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
2614    how much farther the original request asked to go.  */
2615
2616 struct frame_info *
2617 find_relative_frame (struct frame_info *frame, int *level_offset_ptr)
2618 {
2619   /* Going up is simple: just call get_prev_frame enough times or
2620      until the initial frame is reached.  */
2621   while (*level_offset_ptr > 0)
2622     {
2623       struct frame_info *prev = get_prev_frame (frame);
2624
2625       if (!prev)
2626         break;
2627       (*level_offset_ptr)--;
2628       frame = prev;
2629     }
2630
2631   /* Going down is just as simple.  */
2632   while (*level_offset_ptr < 0)
2633     {
2634       struct frame_info *next = get_next_frame (frame);
2635
2636       if (!next)
2637         break;
2638       (*level_offset_ptr)++;
2639       frame = next;
2640     }
2641
2642   return frame;
2643 }
2644
2645 /* Select the frame up one or COUNT_EXP stack levels from the
2646    previously selected frame, and print it briefly.  */
2647
2648 static void
2649 up_silently_base (const char *count_exp)
2650 {
2651   struct frame_info *frame;
2652   int count = 1;
2653
2654   if (count_exp)
2655     count = parse_and_eval_long (count_exp);
2656
2657   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2658   if (count != 0 && count_exp == NULL)
2659     error (_("Initial frame selected; you cannot go up."));
2660   select_frame (frame);
2661 }
2662
2663 static void
2664 up_silently_command (const char *count_exp, int from_tty)
2665 {
2666   up_silently_base (count_exp);
2667 }
2668
2669 static void
2670 up_command (const char *count_exp, int from_tty)
2671 {
2672   up_silently_base (count_exp);
2673   gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
2674 }
2675
2676 /* Select the frame down one or COUNT_EXP stack levels from the previously
2677    selected frame, and print it briefly.  */
2678
2679 static void
2680 down_silently_base (const char *count_exp)
2681 {
2682   struct frame_info *frame;
2683   int count = -1;
2684
2685   if (count_exp)
2686     count = -parse_and_eval_long (count_exp);
2687
2688   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2689   if (count != 0 && count_exp == NULL)
2690     {
2691       /* We only do this if COUNT_EXP is not specified.  That way
2692          "down" means to really go down (and let me know if that is
2693          impossible), but "down 9999" can be used to mean go all the
2694          way down without getting an error.  */
2695
2696       error (_("Bottom (innermost) frame selected; you cannot go down."));
2697     }
2698
2699   select_frame (frame);
2700 }
2701
2702 static void
2703 down_silently_command (const char *count_exp, int from_tty)
2704 {
2705   down_silently_base (count_exp);
2706 }
2707
2708 static void
2709 down_command (const char *count_exp, int from_tty)
2710 {
2711   down_silently_base (count_exp);
2712   gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
2713 }
2714
2715 void
2716 return_command (const char *retval_exp, int from_tty)
2717 {
2718   /* Initialize it just to avoid a GCC false warning.  */
2719   enum return_value_convention rv_conv = RETURN_VALUE_STRUCT_CONVENTION;
2720   struct frame_info *thisframe;
2721   struct gdbarch *gdbarch;
2722   struct symbol *thisfun;
2723   struct value *return_value = NULL;
2724   struct value *function = NULL;
2725   std::string query_prefix;
2726
2727   thisframe = get_selected_frame ("No selected frame.");
2728   thisfun = get_frame_function (thisframe);
2729   gdbarch = get_frame_arch (thisframe);
2730
2731   if (get_frame_type (get_current_frame ()) == INLINE_FRAME)
2732     error (_("Can not force return from an inlined function."));
2733
2734   /* Compute the return value.  If the computation triggers an error,
2735      let it bail.  If the return type can't be handled, set
2736      RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
2737      message.  */
2738   if (retval_exp)
2739     {
2740       expression_up retval_expr = parse_expression (retval_exp);
2741       struct type *return_type = NULL;
2742
2743       /* Compute the return value.  Should the computation fail, this
2744          call throws an error.  */
2745       return_value = evaluate_expression (retval_expr.get ());
2746
2747       /* Cast return value to the return type of the function.  Should
2748          the cast fail, this call throws an error.  */
2749       if (thisfun != NULL)
2750         return_type = thisfun->type ()->target_type ();
2751       if (return_type == NULL)
2752         {
2753           if (retval_expr->first_opcode () != UNOP_CAST
2754               && retval_expr->first_opcode () != UNOP_CAST_TYPE)
2755             error (_("Return value type not available for selected "
2756                      "stack frame.\n"
2757                      "Please use an explicit cast of the value to return."));
2758           return_type = value_type (return_value);
2759         }
2760       return_type = check_typedef (return_type);
2761       return_value = value_cast (return_type, return_value);
2762
2763       /* Make sure the value is fully evaluated.  It may live in the
2764          stack frame we're about to pop.  */
2765       if (value_lazy (return_value))
2766         value_fetch_lazy (return_value);
2767
2768       if (thisfun != NULL)
2769         function = read_var_value (thisfun, NULL, thisframe);
2770
2771       rv_conv = RETURN_VALUE_REGISTER_CONVENTION;
2772       if (return_type->code () == TYPE_CODE_VOID)
2773         /* If the return-type is "void", don't try to find the
2774            return-value's location.  However, do still evaluate the
2775            return expression so that, even when the expression result
2776            is discarded, side effects such as "return i++" still
2777            occur.  */
2778         return_value = NULL;
2779       else if (thisfun != NULL)
2780         {
2781           if (is_nocall_function (check_typedef (value_type (function))))
2782             {
2783               query_prefix =
2784                 string_printf ("Function '%s' does not follow the target "
2785                                "calling convention.\n"
2786                                "If you continue, setting the return value "
2787                                "will probably lead to unpredictable "
2788                                "behaviors.\n",
2789                                thisfun->print_name ());
2790             }
2791
2792           rv_conv = struct_return_convention (gdbarch, function, return_type);
2793           if (rv_conv == RETURN_VALUE_STRUCT_CONVENTION
2794               || rv_conv == RETURN_VALUE_ABI_RETURNS_ADDRESS)
2795             {
2796               query_prefix = "The location at which to store the "
2797                 "function's return value is unknown.\n"
2798                 "If you continue, the return value "
2799                 "that you specified will be ignored.\n";
2800               return_value = NULL;
2801             }
2802         }
2803     }
2804
2805   /* Does an interactive user really want to do this?  Include
2806      information, such as how well GDB can handle the return value, in
2807      the query message.  */
2808   if (from_tty)
2809     {
2810       int confirmed;
2811
2812       if (thisfun == NULL)
2813         confirmed = query (_("%sMake selected stack frame return now? "),
2814                            query_prefix.c_str ());
2815       else
2816         {
2817           if (TYPE_NO_RETURN (thisfun->type ()))
2818             warning (_("Function does not return normally to caller."));
2819           confirmed = query (_("%sMake %s return now? "),
2820                              query_prefix.c_str (),
2821                              thisfun->print_name ());
2822         }
2823       if (!confirmed)
2824         error (_("Not confirmed"));
2825     }
2826
2827   /* Discard the selected frame and all frames inner-to it.  */
2828   frame_pop (get_selected_frame (NULL));
2829
2830   /* Store RETURN_VALUE in the just-returned register set.  */
2831   if (return_value != NULL)
2832     {
2833       struct type *return_type = value_type (return_value);
2834       struct gdbarch *cache_arch = get_current_regcache ()->arch ();
2835
2836       gdb_assert (rv_conv != RETURN_VALUE_STRUCT_CONVENTION
2837                   && rv_conv != RETURN_VALUE_ABI_RETURNS_ADDRESS);
2838       gdbarch_return_value (cache_arch, function, return_type,
2839                             get_current_regcache (), NULL /*read*/,
2840                             value_contents (return_value).data () /*write*/);
2841     }
2842
2843   /* If we are at the end of a call dummy now, pop the dummy frame
2844      too.  */
2845   if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
2846     frame_pop (get_current_frame ());
2847
2848   select_frame (get_current_frame ());
2849   /* If interactive, print the frame that is now current.  */
2850   if (from_tty)
2851     print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2852 }
2853
2854 /* Find the most inner frame in the current stack for a function called
2855    FUNCTION_NAME.  If no matching frame is found return NULL.  */
2856
2857 static struct frame_info *
2858 find_frame_for_function (const char *function_name)
2859 {
2860   /* Used to hold the lower and upper addresses for each of the
2861      SYMTAB_AND_LINEs found for functions matching FUNCTION_NAME.  */
2862   struct function_bounds
2863   {
2864     CORE_ADDR low, high;
2865   };
2866   struct frame_info *frame;
2867   bool found = false;
2868   int level = 1;
2869
2870   gdb_assert (function_name != NULL);
2871
2872   frame = get_current_frame ();
2873   std::vector<symtab_and_line> sals
2874     = decode_line_with_current_source (function_name,
2875                                        DECODE_LINE_FUNFIRSTLINE);
2876   gdb::def_vector<function_bounds> func_bounds (sals.size ());
2877   for (size_t i = 0; i < sals.size (); i++)
2878     {
2879       if (sals[i].pspace != current_program_space)
2880         func_bounds[i].low = func_bounds[i].high = 0;
2881       else if (sals[i].pc == 0
2882                || find_pc_partial_function (sals[i].pc, NULL,
2883                                             &func_bounds[i].low,
2884                                             &func_bounds[i].high) == 0)
2885         func_bounds[i].low = func_bounds[i].high = 0;
2886     }
2887
2888   do
2889     {
2890       for (size_t i = 0; (i < sals.size () && !found); i++)
2891         found = (get_frame_pc (frame) >= func_bounds[i].low
2892                  && get_frame_pc (frame) < func_bounds[i].high);
2893       if (!found)
2894         {
2895           level = 1;
2896           frame = find_relative_frame (frame, &level);
2897         }
2898     }
2899   while (!found && level == 0);
2900
2901   if (!found)
2902     frame = NULL;
2903
2904   return frame;
2905 }
2906
2907 /* The qcs command line flags for the "frame apply" commands.  Keep
2908    this in sync with the "thread apply" commands.  */
2909
2910 using qcs_flag_option_def
2911   = gdb::option::flag_option_def<qcs_flags>;
2912
2913 static const gdb::option::option_def fr_qcs_flags_option_defs[] = {
2914   qcs_flag_option_def {
2915     "q", [] (qcs_flags *opt) { return &opt->quiet; },
2916     N_("Disables printing the frame location information."),
2917   },
2918
2919   qcs_flag_option_def {
2920     "c", [] (qcs_flags *opt) { return &opt->cont; },
2921     N_("Print any error raised by COMMAND and continue."),
2922   },
2923
2924   qcs_flag_option_def {
2925     "s", [] (qcs_flags *opt) { return &opt->silent; },
2926     N_("Silently ignore any errors or empty output produced by COMMAND."),
2927   },
2928 };
2929
2930 /* Create an option_def_group array for all the "frame apply" options,
2931    with FLAGS and SET_BT_OPTS as context.  */
2932
2933 static inline std::array<gdb::option::option_def_group, 2>
2934 make_frame_apply_options_def_group (qcs_flags *flags,
2935                                     set_backtrace_options *set_bt_opts)
2936 {
2937   return {{
2938     { {fr_qcs_flags_option_defs}, flags },
2939     { {set_backtrace_option_defs}, set_bt_opts },
2940   }};
2941 }
2942
2943 /* Apply a GDB command to all stack frames, or a set of identified frames,
2944    or innermost COUNT frames.
2945    With a negative COUNT, apply command on outermost -COUNT frames.
2946
2947    frame apply 3 info frame     Apply 'info frame' to frames 0, 1, 2
2948    frame apply -3 info frame    Apply 'info frame' to outermost 3 frames.
2949    frame apply all x/i $pc      Apply 'x/i $pc' cmd to all frames.
2950    frame apply all -s p local_var_no_idea_in_which_frame
2951                 If a frame has a local variable called
2952                 local_var_no_idea_in_which_frame, print frame
2953                 and value of local_var_no_idea_in_which_frame.
2954    frame apply all -s -q p local_var_no_idea_in_which_frame
2955                 Same as before, but only print the variable value.
2956    frame apply level 2-5 0 4-7 -s p i = i + 1
2957                 Adds 1 to the variable i in the specified frames.
2958                 Note that i will be incremented twice in
2959                 frames 4 and 5.  */
2960
2961 /* Apply a GDB command to COUNT stack frames, starting at TRAILING.
2962    CMD starts with 0 or more qcs flags followed by the GDB command to apply.
2963    COUNT -1 means all frames starting at TRAILING.  WHICH_COMMAND is used
2964    for error messages.  */
2965
2966 static void
2967 frame_apply_command_count (const char *which_command,
2968                            const char *cmd, int from_tty,
2969                            struct frame_info *trailing, int count)
2970 {
2971   qcs_flags flags;
2972   set_backtrace_options set_bt_opts = user_set_backtrace_options;
2973
2974   auto group = make_frame_apply_options_def_group (&flags, &set_bt_opts);
2975   gdb::option::process_options
2976     (&cmd, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group);
2977
2978   validate_flags_qcs (which_command, &flags);
2979
2980   if (cmd == NULL || *cmd == '\0')
2981     error (_("Please specify a command to apply on the selected frames"));
2982
2983   /* The below will restore the current inferior/thread/frame.
2984      Usually, only the frame is effectively to be restored.
2985      But in case CMD switches of inferior/thread, better restore
2986      these also.  */
2987   scoped_restore_current_thread restore_thread;
2988
2989   /* These options are handled quite deep in the unwind machinery, so
2990      we get to pass them down by swapping globals.  */
2991   scoped_restore restore_set_backtrace_options
2992     = make_scoped_restore (&user_set_backtrace_options, set_bt_opts);
2993
2994   for (frame_info *fi = trailing; fi && count--; fi = get_prev_frame (fi))
2995     {
2996       QUIT;
2997
2998       select_frame (fi);
2999       try
3000         {
3001           std::string cmd_result;
3002           {
3003             /* In case CMD switches of inferior/thread/frame, the below
3004                restores the inferior/thread/frame.  FI can then be
3005                set to the selected frame.  */
3006             scoped_restore_current_thread restore_fi_current_frame;
3007
3008             execute_command_to_string
3009               (cmd_result, cmd, from_tty, gdb_stdout->term_out ());
3010           }
3011           fi = get_selected_frame (_("frame apply "
3012                                      "unable to get selected frame."));
3013           if (!flags.silent || cmd_result.length () > 0)
3014             {
3015               if (!flags.quiet)
3016                 print_stack_frame (fi, 1, LOCATION, 0);
3017               gdb_printf ("%s", cmd_result.c_str ());
3018             }
3019         }
3020       catch (const gdb_exception_error &ex)
3021         {
3022           fi = get_selected_frame (_("frame apply "
3023                                      "unable to get selected frame."));
3024           if (!flags.silent)
3025             {
3026               if (!flags.quiet)
3027                 print_stack_frame (fi, 1, LOCATION, 0);
3028               if (flags.cont)
3029                 gdb_printf ("%s\n", ex.what ());
3030               else
3031                 throw;
3032             }
3033         }
3034     }
3035 }
3036
3037 /* Completer for the "frame apply ..." commands.  */
3038
3039 static void
3040 frame_apply_completer (completion_tracker &tracker, const char *text)
3041 {
3042   const auto group = make_frame_apply_options_def_group (nullptr, nullptr);
3043   if (gdb::option::complete_options
3044       (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
3045     return;
3046
3047   complete_nested_command_line (tracker, text);
3048 }
3049
3050 /* Completer for the "frame apply" commands.  */
3051
3052 static void
3053 frame_apply_level_cmd_completer (struct cmd_list_element *ignore,
3054                                  completion_tracker &tracker,
3055                                  const char *text, const char */*word*/)
3056 {
3057   /* Do this explicitly because there's an early return below.  */
3058   tracker.set_use_custom_word_point (true);
3059
3060   number_or_range_parser levels (text);
3061
3062   /* Skip the LEVEL list to find the options and command args.  */
3063   try
3064     {
3065       while (!levels.finished ())
3066         {
3067           /* Call for effect.  */
3068           levels.get_number ();
3069
3070           if (levels.in_range ())
3071             levels.skip_range ();
3072         }
3073     }
3074   catch (const gdb_exception_error &ex)
3075     {
3076       /* get_number throws if it parses a negative number, for
3077          example.  But a seemingly negative number may be the start of
3078          an option instead.  */
3079     }
3080
3081   const char *cmd = levels.cur_tok ();
3082
3083   if (cmd == text)
3084     {
3085       /* No level list yet.  */
3086       return;
3087     }
3088
3089   /* Check if we're past a valid LEVEL already.  */
3090   if (levels.finished ()
3091       && cmd > text && !isspace (cmd[-1]))
3092     return;
3093
3094   /* We're past LEVELs, advance word point.  */
3095   tracker.advance_custom_word_point_by (cmd - text);
3096   text = cmd;
3097
3098   frame_apply_completer (tracker, text);
3099 }
3100
3101 /* Completer for the "frame apply all" command.  */
3102
3103 void
3104 frame_apply_all_cmd_completer (struct cmd_list_element *ignore,
3105                                completion_tracker &tracker,
3106                                const char *text, const char */*word*/)
3107 {
3108   frame_apply_completer (tracker, text);
3109 }
3110
3111 /* Completer for the "frame apply COUNT" command.  */
3112
3113 static void
3114 frame_apply_cmd_completer (struct cmd_list_element *ignore,
3115                            completion_tracker &tracker,
3116                            const char *text, const char */*word*/)
3117 {
3118   const char *cmd = text;
3119
3120   int count = get_number_trailer (&cmd, 0);
3121   if (count == 0)
3122     return;
3123
3124   /* Check if we're past a valid COUNT already.  */
3125   if (cmd > text && !isspace (cmd[-1]))
3126     return;
3127
3128   /* We're past COUNT, advance word point.  */
3129   tracker.advance_custom_word_point_by (cmd - text);
3130   text = cmd;
3131
3132   frame_apply_completer (tracker, text);
3133 }
3134
3135 /* Implementation of the "frame apply level" command.  */
3136
3137 static void
3138 frame_apply_level_command (const char *cmd, int from_tty)
3139 {
3140   if (!target_has_stack ())
3141     error (_("No stack."));
3142
3143   bool level_found = false;
3144   const char *levels_str = cmd;
3145   number_or_range_parser levels (levels_str);
3146
3147   /* Skip the LEVEL list to find the flags and command args.  */
3148   while (!levels.finished ())
3149     {
3150       /* Call for effect.  */
3151       levels.get_number ();
3152
3153       level_found = true;
3154       if (levels.in_range ())
3155         levels.skip_range ();
3156     }
3157
3158   if (!level_found)
3159     error (_("Missing or invalid LEVEL... argument"));
3160
3161   cmd = levels.cur_tok ();
3162
3163   /* Redo the LEVELS parsing, but applying COMMAND.  */
3164   levels.init (levels_str);
3165   while (!levels.finished ())
3166     {
3167       const int level_beg = levels.get_number ();
3168       int n_frames;
3169
3170       if (levels.in_range ())
3171         {
3172           n_frames = levels.end_value () - level_beg + 1;
3173           levels.skip_range ();
3174         }
3175       else
3176         n_frames = 1;
3177
3178       frame_apply_command_count ("frame apply level", cmd, from_tty,
3179                                  leading_innermost_frame (level_beg), n_frames);
3180     }
3181 }
3182
3183 /* Implementation of the "frame apply all" command.  */
3184
3185 static void
3186 frame_apply_all_command (const char *cmd, int from_tty)
3187 {
3188   if (!target_has_stack ())
3189     error (_("No stack."));
3190
3191   frame_apply_command_count ("frame apply all", cmd, from_tty,
3192                              get_current_frame (), INT_MAX);
3193 }
3194
3195 /* Implementation of the "frame apply" command.  */
3196
3197 static void
3198 frame_apply_command (const char* cmd, int from_tty)
3199 {
3200   int count;
3201   struct frame_info *trailing;
3202
3203   if (!target_has_stack ())
3204     error (_("No stack."));
3205
3206   if (cmd == NULL)
3207     error (_("Missing COUNT argument."));
3208   count = get_number_trailer (&cmd, 0);
3209   if (count == 0)
3210     error (_("Invalid COUNT argument."));
3211
3212   if (count < 0)
3213     {
3214       trailing = trailing_outermost_frame (-count);
3215       count = -1;
3216     }
3217   else
3218     trailing = get_current_frame ();
3219
3220   frame_apply_command_count ("frame apply", cmd, from_tty,
3221                              trailing, count);
3222 }
3223
3224 /* Implementation of the "faas" command.  */
3225
3226 static void
3227 faas_command (const char *cmd, int from_tty)
3228 {
3229   if (cmd == NULL || *cmd == '\0')
3230     error (_("Please specify a command to apply on all frames"));
3231   std::string expanded = std::string ("frame apply all -s ") + cmd;
3232   execute_command (expanded.c_str (), from_tty);
3233 }
3234
3235
3236 /* Find inner-mode frame with frame address ADDRESS.  Return NULL if no
3237    matching frame can be found.  */
3238
3239 static struct frame_info *
3240 find_frame_for_address (CORE_ADDR address)
3241 {
3242   struct frame_id id;
3243   struct frame_info *fid;
3244
3245   id = frame_id_build_wild (address);
3246
3247   /* If (s)he specifies the frame with an address, he deserves
3248      what (s)he gets.  Still, give the highest one that matches.
3249      (NOTE: cagney/2004-10-29: Why highest, or outer-most, I don't
3250      know).  */
3251   for (fid = get_current_frame ();
3252        fid != NULL;
3253        fid = get_prev_frame (fid))
3254     {
3255       if (frame_id_eq (id, get_frame_id (fid)))
3256         {
3257           struct frame_info *prev_frame;
3258
3259           while (1)
3260             {
3261               prev_frame = get_prev_frame (fid);
3262               if (!prev_frame
3263                   || !frame_id_eq (id, get_frame_id (prev_frame)))
3264                 break;
3265               fid = prev_frame;
3266             }
3267           return fid;
3268         }
3269     }
3270   return NULL;
3271 }
3272
3273 \f
3274
3275 /* Commands with a prefix of `frame apply'.  */
3276 static struct cmd_list_element *frame_apply_cmd_list = NULL;
3277
3278 /* Commands with a prefix of `frame'.  */
3279 static struct cmd_list_element *frame_cmd_list = NULL;
3280
3281 /* Commands with a prefix of `select frame'.  */
3282 static struct cmd_list_element *select_frame_cmd_list = NULL;
3283
3284 /* Commands with a prefix of `info frame'.  */
3285 static struct cmd_list_element *info_frame_cmd_list = NULL;
3286
3287 void _initialize_stack ();
3288 void
3289 _initialize_stack ()
3290 {
3291   struct cmd_list_element *cmd;
3292
3293   add_com ("return", class_stack, return_command, _("\
3294 Make selected stack frame return to its caller.\n\
3295 Control remains in the debugger, but when you continue\n\
3296 execution will resume in the frame above the one now selected.\n\
3297 If an argument is given, it is an expression for the value to return."));
3298
3299   add_com ("up", class_stack, up_command, _("\
3300 Select and print stack frame that called this one.\n\
3301 An argument says how many frames up to go."));
3302   add_com ("up-silently", class_support, up_silently_command, _("\
3303 Same as the `up' command, but does not print anything.\n\
3304 This is useful in command scripts."));
3305
3306   cmd_list_element *down_cmd
3307     = add_com ("down", class_stack, down_command, _("\
3308 Select and print stack frame called by this one.\n\
3309 An argument says how many frames down to go."));
3310   add_com_alias ("do", down_cmd, class_stack, 1);
3311   add_com_alias ("dow", down_cmd, class_stack, 1);
3312   add_com ("down-silently", class_support, down_silently_command, _("\
3313 Same as the `down' command, but does not print anything.\n\
3314 This is useful in command scripts."));
3315
3316   cmd_list_element *frame_cmd_el
3317     = add_prefix_cmd ("frame", class_stack,
3318                       &frame_cmd.base_command, _("\
3319 Select and print a stack frame.\n\
3320 With no argument, print the selected stack frame.  (See also \"info frame\").\n\
3321 A single numerical argument specifies the frame to select."),
3322                       &frame_cmd_list, 1, &cmdlist);
3323   add_com_alias ("f", frame_cmd_el, class_stack, 1);
3324
3325 #define FRAME_APPLY_OPTION_HELP "\
3326 Prints the frame location information followed by COMMAND output.\n\
3327 \n\
3328 By default, an error raised during the execution of COMMAND\n\
3329 aborts \"frame apply\".\n\
3330 \n\
3331 Options:\n\
3332 %OPTIONS%"
3333
3334   const auto frame_apply_opts
3335     = make_frame_apply_options_def_group (nullptr, nullptr);
3336
3337   static std::string frame_apply_cmd_help = gdb::option::build_help (_("\
3338 Apply a command to a number of frames.\n\
3339 Usage: frame apply COUNT [OPTION]... COMMAND\n\
3340 With a negative COUNT argument, applies the command on outermost -COUNT frames.\n"
3341                                   FRAME_APPLY_OPTION_HELP),
3342                                frame_apply_opts);
3343
3344   cmd = add_prefix_cmd ("apply", class_stack, frame_apply_command,
3345                         frame_apply_cmd_help.c_str (),
3346                         &frame_apply_cmd_list, 1,
3347                         &frame_cmd_list);
3348   set_cmd_completer_handle_brkchars (cmd, frame_apply_cmd_completer);
3349
3350   static std::string frame_apply_all_cmd_help = gdb::option::build_help (_("\
3351 Apply a command to all frames.\n\
3352 \n\
3353 Usage: frame apply all [OPTION]... COMMAND\n"
3354                                   FRAME_APPLY_OPTION_HELP),
3355                                frame_apply_opts);
3356
3357   cmd = add_cmd ("all", class_stack, frame_apply_all_command,
3358                  frame_apply_all_cmd_help.c_str (),
3359                  &frame_apply_cmd_list);
3360   set_cmd_completer_handle_brkchars (cmd, frame_apply_all_cmd_completer);
3361
3362   static std::string frame_apply_level_cmd_help = gdb::option::build_help (_("\
3363 Apply a command to a list of frames.\n\
3364 \n\
3365 Usage: frame apply level LEVEL... [OPTION]... COMMAND\n\
3366 LEVEL is a space-separated list of levels of frames to apply COMMAND on.\n"
3367                                   FRAME_APPLY_OPTION_HELP),
3368                                frame_apply_opts);
3369
3370   cmd = add_cmd ("level", class_stack, frame_apply_level_command,
3371            frame_apply_level_cmd_help.c_str (),
3372            &frame_apply_cmd_list);
3373   set_cmd_completer_handle_brkchars (cmd, frame_apply_level_cmd_completer);
3374
3375   cmd = add_com ("faas", class_stack, faas_command, _("\
3376 Apply a command to all frames (ignoring errors and empty output).\n\
3377 Usage: faas [OPTION]... COMMAND\n\
3378 shortcut for 'frame apply all -s [OPTION]... COMMAND'\n\
3379 See \"help frame apply all\" for available options."));
3380   set_cmd_completer_handle_brkchars (cmd, frame_apply_all_cmd_completer);
3381
3382   add_cmd ("address", class_stack, &frame_cmd.address,
3383            _("\
3384 Select and print a stack frame by stack address.\n\
3385 \n\
3386 Usage: frame address STACK-ADDRESS"),
3387            &frame_cmd_list);
3388
3389   add_cmd ("view", class_stack, &frame_cmd.view,
3390            _("\
3391 View a stack frame that might be outside the current backtrace.\n\
3392 \n\
3393 Usage: frame view STACK-ADDRESS\n\
3394        frame view STACK-ADDRESS PC-ADDRESS"),
3395            &frame_cmd_list);
3396
3397   cmd = add_cmd ("function", class_stack, &frame_cmd.function,
3398            _("\
3399 Select and print a stack frame by function name.\n\
3400 \n\
3401 Usage: frame function NAME\n\
3402 \n\
3403 The innermost frame that visited function NAME is selected."),
3404            &frame_cmd_list);
3405   set_cmd_completer (cmd, frame_selection_by_function_completer);
3406
3407
3408   add_cmd ("level", class_stack, &frame_cmd.level,
3409            _("\
3410 Select and print a stack frame by level.\n\
3411 \n\
3412 Usage: frame level LEVEL"),
3413            &frame_cmd_list);
3414
3415   cmd = add_prefix_cmd_suppress_notification ("select-frame", class_stack,
3416                       &select_frame_cmd.base_command, _("\
3417 Select a stack frame without printing anything.\n\
3418 A single numerical argument specifies the frame to select."),
3419                       &select_frame_cmd_list, 1, &cmdlist,
3420                       &cli_suppress_notification.user_selected_context);
3421
3422   add_cmd_suppress_notification ("address", class_stack,
3423                          &select_frame_cmd.address, _("\
3424 Select a stack frame by stack address.\n\
3425 \n\
3426 Usage: select-frame address STACK-ADDRESS"),
3427                          &select_frame_cmd_list,
3428                          &cli_suppress_notification.user_selected_context);
3429
3430
3431   add_cmd_suppress_notification ("view", class_stack,
3432                  &select_frame_cmd.view, _("\
3433 Select a stack frame that might be outside the current backtrace.\n\
3434 \n\
3435 Usage: select-frame view STACK-ADDRESS\n\
3436        select-frame view STACK-ADDRESS PC-ADDRESS"),
3437                  &select_frame_cmd_list,
3438                  &cli_suppress_notification.user_selected_context);
3439
3440   cmd = add_cmd_suppress_notification ("function", class_stack,
3441                &select_frame_cmd.function, _("\
3442 Select a stack frame by function name.\n\
3443 \n\
3444 Usage: select-frame function NAME"),
3445                &select_frame_cmd_list,
3446                &cli_suppress_notification.user_selected_context);
3447   set_cmd_completer (cmd, frame_selection_by_function_completer);
3448
3449   add_cmd_suppress_notification ("level", class_stack,
3450                          &select_frame_cmd.level, _("\
3451 Select a stack frame by level.\n\
3452 \n\
3453 Usage: select-frame level LEVEL"),
3454                          &select_frame_cmd_list,
3455                          &cli_suppress_notification.user_selected_context);
3456
3457   const auto backtrace_opts
3458     = make_backtrace_options_def_group (nullptr, nullptr, nullptr);
3459
3460   static std::string backtrace_help
3461     = gdb::option::build_help (_("\
3462 Print backtrace of all stack frames, or innermost COUNT frames.\n\
3463 Usage: backtrace [OPTION]... [QUALIFIER]... [COUNT | -COUNT]\n\
3464 \n\
3465 Options:\n\
3466 %OPTIONS%\n\
3467 \n\
3468 For backward compatibility, the following qualifiers are supported:\n\
3469 \n\
3470    full       - same as -full option.\n\
3471    no-filters - same as -no-filters option.\n\
3472    hide       - same as -hide.\n\
3473 \n\
3474 With a negative COUNT, print outermost -COUNT frames."),
3475                                backtrace_opts);
3476
3477   cmd_list_element *backtrace_cmd
3478     = add_com ("backtrace", class_stack, backtrace_command,
3479                backtrace_help.c_str ());
3480   set_cmd_completer_handle_brkchars (backtrace_cmd, backtrace_command_completer);
3481
3482   add_com_alias ("bt", backtrace_cmd, class_stack, 0);
3483
3484   add_com_alias ("where", backtrace_cmd, class_stack, 0);
3485   cmd_list_element *info_stack_cmd
3486     = add_info ("stack", backtrace_command,
3487                 _("Backtrace of the stack, or innermost COUNT frames."));
3488   add_info_alias ("s", info_stack_cmd, 1);
3489
3490   cmd_list_element *info_frame_cmd_el
3491     = add_prefix_cmd ("frame", class_info, &info_frame_cmd.base_command,
3492                       _("All about the selected stack frame.\n\
3493 With no arguments, displays information about the currently selected stack\n\
3494 frame.  Alternatively a frame specification may be provided (See \"frame\")\n\
3495 the information is then printed about the specified frame."),
3496                       &info_frame_cmd_list, 1, &infolist);
3497   add_info_alias ("f", info_frame_cmd_el, 1);
3498
3499   add_cmd ("address", class_stack, &info_frame_cmd.address,
3500            _("\
3501 Print information about a stack frame selected by stack address.\n\
3502 \n\
3503 Usage: info frame address STACK-ADDRESS"),
3504            &info_frame_cmd_list);
3505
3506   add_cmd ("view", class_stack, &info_frame_cmd.view,
3507            _("\
3508 Print information about a stack frame outside the current backtrace.\n\
3509 \n\
3510 Usage: info frame view STACK-ADDRESS\n\
3511        info frame view STACK-ADDRESS PC-ADDRESS"),
3512            &info_frame_cmd_list);
3513
3514   cmd = add_cmd ("function", class_stack, &info_frame_cmd.function,
3515            _("\
3516 Print information about a stack frame selected by function name.\n\
3517 \n\
3518 Usage: info frame function NAME"),
3519            &info_frame_cmd_list);
3520   set_cmd_completer (cmd, frame_selection_by_function_completer);
3521
3522   add_cmd ("level", class_stack, &info_frame_cmd.level,
3523            _("\
3524 Print information about a stack frame selected by level.\n\
3525 \n\
3526 Usage: info frame level LEVEL"),
3527            &info_frame_cmd_list);
3528
3529   cmd = add_info ("locals", info_locals_command,
3530                   info_print_args_help (_("\
3531 All local variables of current stack frame or those matching REGEXPs.\n\
3532 Usage: info locals [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n\
3533 Prints the local variables of the current stack frame.\n"),
3534                                         _("local variables"),
3535                                         false));
3536   set_cmd_completer_handle_brkchars (cmd, info_print_command_completer);
3537   cmd = add_info ("args", info_args_command,
3538                   info_print_args_help (_("\
3539 All argument variables of current stack frame or those matching REGEXPs.\n\
3540 Usage: info args [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n\
3541 Prints the argument variables of the current stack frame.\n"),
3542                                         _("argument variables"),
3543                                         false));
3544   set_cmd_completer_handle_brkchars (cmd, info_print_command_completer);
3545
3546   /* Install "set print raw frame-arguments", a deprecated spelling of
3547      "set print raw-frame-arguments".  */
3548   set_show_commands set_show_frame_args
3549     = add_setshow_boolean_cmd
3550       ("frame-arguments", no_class,
3551        &user_frame_print_options.print_raw_frame_arguments,
3552        _("\
3553 Set whether to print frame arguments in raw form."), _("\
3554 Show whether to print frame arguments in raw form."), _("\
3555 If set, frame arguments are printed in raw form, bypassing any\n\
3556 pretty-printers for that value."),
3557        NULL, NULL,
3558        &setprintrawlist, &showprintrawlist);
3559   deprecate_cmd (set_show_frame_args.set, "set print raw-frame-arguments");
3560
3561   add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
3562                                 &disassemble_next_line, _("\
3563 Set whether to disassemble next source line or insn when execution stops."),
3564                                 _("\
3565 Show whether to disassemble next source line or insn when execution stops."),
3566                                 _("\
3567 If ON, GDB will display disassembly of the next source line, in addition\n\
3568 to displaying the source line itself.  If the next source line cannot\n\
3569 be displayed (e.g., source is unavailable or there's no line info), GDB\n\
3570 will display disassembly of next instruction instead of showing the\n\
3571 source line.\n\
3572 If AUTO, display disassembly of next instruction only if the source line\n\
3573 cannot be displayed.\n\
3574 If OFF (which is the default), never display the disassembly of the next\n\
3575 source line."),
3576                                 NULL,
3577                                 show_disassemble_next_line,
3578                                 &setlist, &showlist);
3579   disassemble_next_line = AUTO_BOOLEAN_FALSE;
3580
3581   gdb::option::add_setshow_cmds_for_options
3582     (class_stack, &user_frame_print_options,
3583      frame_print_option_defs, &setprintlist, &showprintlist);
3584 }
This page took 0.231615 seconds and 4 git commands to generate.