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