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