More updated translations
[binutils-gdb.git] / gdb / stack.c
blob2d6712ab16ba74cf5a560ec9a8611976f72df72e
1 /* Print and select stack frames for GDB, the GNU debugger.
3 Copyright (C) 1986-2024 Free Software Foundation, Inc.
5 This file is part of GDB.
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.
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.
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/>. */
20 #include "event-top.h"
21 #include "exceptions.h"
22 #include "extract-store-integer.h"
23 #include "top.h"
24 #include "value.h"
25 #include "symtab.h"
26 #include "gdbtypes.h"
27 #include "expression.h"
28 #include "language.h"
29 #include "frame.h"
30 #include "cli/cli-cmds.h"
31 #include "gdbcore.h"
32 #include "target.h"
33 #include "source.h"
34 #include "breakpoint.h"
35 #include "demangle.h"
36 #include "inferior.h"
37 #include "annotate.h"
38 #include "ui-out.h"
39 #include "block.h"
40 #include "stack.h"
41 #include "dictionary.h"
42 #include "reggroups.h"
43 #include "regcache.h"
44 #include "solib.h"
45 #include "valprint.h"
46 #include "gdbthread.h"
47 #include "cp-support.h"
48 #include "disasm.h"
49 #include "inline-frame.h"
50 #include "linespec.h"
51 #include "cli/cli-utils.h"
52 #include "objfiles.h"
54 #include "symfile.h"
55 #include "extension.h"
56 #include "observable.h"
57 #include "gdbsupport/def-vector.h"
58 #include "cli/cli-option.h"
59 #include "cli/cli-style.h"
60 #include "gdbsupport/buildargv.h"
62 /* The possible choices of "set print frame-arguments", and the value
63 of this setting. */
65 const char print_frame_arguments_all[] = "all";
66 const char print_frame_arguments_scalars[] = "scalars";
67 const char print_frame_arguments_none[] = "none";
68 const char print_frame_arguments_presence[] = "presence";
70 static const char *const print_frame_arguments_choices[] =
72 print_frame_arguments_all,
73 print_frame_arguments_scalars,
74 print_frame_arguments_none,
75 print_frame_arguments_presence,
76 NULL
79 /* The possible choices of "set print frame-info", and the value
80 of this setting. */
82 const char print_frame_info_auto[] = "auto";
83 const char print_frame_info_source_line[] = "source-line";
84 const char print_frame_info_location[] = "location";
85 const char print_frame_info_source_and_location[] = "source-and-location";
86 const char print_frame_info_location_and_address[] = "location-and-address";
87 const char print_frame_info_short_location[] = "short-location";
89 static const char *const print_frame_info_choices[] =
91 print_frame_info_auto,
92 print_frame_info_source_line,
93 print_frame_info_location,
94 print_frame_info_source_and_location,
95 print_frame_info_location_and_address,
96 print_frame_info_short_location,
97 NULL
100 /* print_frame_info_print_what[i] maps a choice to the corresponding
101 print_what enum. */
102 static const std::optional<enum print_what> print_frame_info_print_what[] =
103 {{}, /* Empty value for "auto". */
104 SRC_LINE, LOCATION, SRC_AND_LOC, LOC_AND_ADDRESS, SHORT_LOCATION};
106 /* The possible choices of "set print entry-values", and the value
107 of this setting. */
109 const char print_entry_values_no[] = "no";
110 const char print_entry_values_only[] = "only";
111 const char print_entry_values_preferred[] = "preferred";
112 const char print_entry_values_if_needed[] = "if-needed";
113 const char print_entry_values_both[] = "both";
114 const char print_entry_values_compact[] = "compact";
115 const char print_entry_values_default[] = "default";
116 static const char *const print_entry_values_choices[] =
118 print_entry_values_no,
119 print_entry_values_only,
120 print_entry_values_preferred,
121 print_entry_values_if_needed,
122 print_entry_values_both,
123 print_entry_values_compact,
124 print_entry_values_default,
125 NULL
128 /* See frame.h. */
129 frame_print_options user_frame_print_options;
131 /* Option definitions for some frame-related "set print ..."
132 settings. */
134 using boolean_option_def
135 = gdb::option::boolean_option_def<frame_print_options>;
136 using enum_option_def
137 = gdb::option::enum_option_def<frame_print_options>;
139 static const gdb::option::option_def frame_print_option_defs[] = {
141 enum_option_def {
142 "entry-values",
143 print_entry_values_choices,
144 [] (frame_print_options *opt) { return &opt->print_entry_values; },
145 NULL, /* show_cmd_cb */
146 N_("Set printing of function arguments at function entry."),
147 N_("Show printing of function arguments at function entry."),
148 N_("GDB can sometimes determine the values of function arguments at entry,\n\
149 in addition to their current values. This option tells GDB whether\n\
150 to print the current value, the value at entry (marked as val@entry),\n\
151 or both. Note that one or both of these values may be <optimized out>."),
154 enum_option_def {
155 "frame-arguments",
156 print_frame_arguments_choices,
157 [] (frame_print_options *opt) { return &opt->print_frame_arguments; },
158 NULL, /* show_cmd_cb */
159 N_("Set printing of non-scalar frame arguments."),
160 N_("Show printing of non-scalar frame arguments."),
161 NULL /* help_doc */
164 boolean_option_def {
165 "raw-frame-arguments",
166 [] (frame_print_options *opt) { return &opt->print_raw_frame_arguments; },
167 NULL, /* show_cmd_cb */
168 N_("Set whether to print frame arguments in raw form."),
169 N_("Show whether to print frame arguments in raw form."),
170 N_("If set, frame arguments are printed in raw form, bypassing any\n\
171 pretty-printers for that value.")
174 enum_option_def {
175 "frame-info",
176 print_frame_info_choices,
177 [] (frame_print_options *opt) { return &opt->print_frame_info; },
178 NULL, /* show_cmd_cb */
179 N_("Set printing of frame information."),
180 N_("Show printing of frame information."),
181 NULL /* help_doc */
186 /* Options for the "backtrace" command. */
188 struct backtrace_cmd_options
190 bool full = false;
191 bool no_filters = false;
192 bool hide = false;
195 using bt_flag_option_def
196 = gdb::option::flag_option_def<backtrace_cmd_options>;
198 static const gdb::option::option_def backtrace_command_option_defs[] = {
199 bt_flag_option_def {
200 "full",
201 [] (backtrace_cmd_options *opt) { return &opt->full; },
202 N_("Print values of local variables.")
205 bt_flag_option_def {
206 "no-filters",
207 [] (backtrace_cmd_options *opt) { return &opt->no_filters; },
208 N_("Prohibit frame filters from executing on a backtrace."),
211 bt_flag_option_def {
212 "hide",
213 [] (backtrace_cmd_options *opt) { return &opt->hide; },
214 N_("Causes Python frame filter elided frames to not be printed."),
218 /* Prototypes for local functions. */
220 static void print_frame_local_vars (const frame_info_ptr &frame,
221 bool quiet,
222 const char *regexp, const char *t_regexp,
223 int num_tabs, struct ui_file *stream);
225 static void print_frame (struct ui_out *uiout,
226 const frame_print_options &opts,
227 const frame_info_ptr &frame, int print_level,
228 enum print_what print_what, int print_args,
229 struct symtab_and_line sal);
231 static frame_info_ptr find_frame_for_function (const char *);
232 static frame_info_ptr find_frame_for_address (CORE_ADDR);
234 /* Class used to manage tracking the last symtab we displayed. */
236 class last_displayed_symtab_info_type
238 public:
239 /* True if the cached information is valid. */
240 bool is_valid () const
241 { return m_valid; }
243 /* Return the cached program_space. If the cache is invalid nullptr is
244 returned. */
245 struct program_space *pspace () const
246 { return m_pspace; }
248 /* Return the cached CORE_ADDR address. If the cache is invalid 0 is
249 returned. */
250 CORE_ADDR address () const
251 { return m_address; }
253 /* Return the cached symtab. If the cache is invalid nullptr is
254 returned. */
255 struct symtab *symtab () const
256 { return m_symtab; }
258 /* Return the cached line number. If the cache is invalid 0 is
259 returned. */
260 int line () const
261 { return m_line; }
263 /* Invalidate the cache, reset all the members to their default value. */
264 void invalidate ()
266 m_valid = false;
267 m_pspace = nullptr;
268 m_address = 0;
269 m_symtab = nullptr;
270 m_line = 0;
273 /* Store a new set of values in the cache. */
274 void set (struct program_space *pspace, CORE_ADDR address,
275 struct symtab *symtab, int line)
277 gdb_assert (pspace != nullptr);
279 m_valid = true;
280 m_pspace = pspace;
281 m_address = address;
282 m_symtab = symtab;
283 m_line = line;
286 private:
287 /* True when the cache is valid. */
288 bool m_valid = false;
290 /* The last program space displayed. */
291 struct program_space *m_pspace = nullptr;
293 /* The last address displayed. */
294 CORE_ADDR m_address = 0;
296 /* The last symtab displayed. */
297 struct symtab *m_symtab = nullptr;
299 /* The last line number displayed. */
300 int m_line = 0;
303 /* An actual instance of the cache, holds information about the last symtab
304 displayed. */
305 static last_displayed_symtab_info_type last_displayed_symtab_info;
309 /* See stack.h. */
311 bool
312 frame_show_address (const frame_info_ptr &frame,
313 struct symtab_and_line sal)
315 /* If there is a line number, but no PC, then there is no location
316 information associated with this sal. The only way that should
317 happen is for the call sites of inlined functions (SAL comes from
318 find_frame_sal). Otherwise, we would have some PC range if the
319 SAL came from a line table. */
320 if (sal.line != 0 && sal.pc == 0 && sal.end == 0)
322 if (get_next_frame (frame) == NULL)
323 gdb_assert (inline_skipped_frames (inferior_thread ()) > 0);
324 else
325 gdb_assert (get_frame_type (get_next_frame (frame)) == INLINE_FRAME);
326 return false;
329 return get_frame_pc (frame) != sal.pc || !sal.is_stmt;
332 /* See frame.h. */
334 void
335 print_stack_frame_to_uiout (struct ui_out *uiout, const frame_info_ptr &frame,
336 int print_level, enum print_what print_what,
337 int set_current_sal)
339 scoped_restore save_uiout = make_scoped_restore (&current_uiout, uiout);
341 print_stack_frame (frame, print_level, print_what, set_current_sal);
344 /* Show or print a stack frame FRAME briefly. The output is formatted
345 according to PRINT_LEVEL and PRINT_WHAT printing the frame's
346 relative level, function name, argument list, and file name and
347 line number. If the frame's PC is not at the beginning of the
348 source line, the actual PC is printed at the beginning. */
350 void
351 print_stack_frame (const frame_info_ptr &frame, int print_level,
352 enum print_what print_what,
353 int set_current_sal)
356 /* For mi, always print location and address. */
357 if (current_uiout->is_mi_like_p ())
358 print_what = LOC_AND_ADDRESS;
362 print_frame_info (user_frame_print_options,
363 frame, print_level, print_what, 1 /* print_args */,
364 set_current_sal);
365 if (set_current_sal)
366 set_current_sal_from_frame (frame);
368 catch (const gdb_exception_error &e)
373 /* Print nameless arguments of frame FRAME on STREAM, where START is
374 the offset of the first nameless argument, and NUM is the number of
375 nameless arguments to print. FIRST is nonzero if this is the first
376 argument (not just the first nameless argument). */
378 static void
379 print_frame_nameless_args (const frame_info_ptr &frame, long start, int num,
380 int first, struct ui_file *stream)
382 struct gdbarch *gdbarch = get_frame_arch (frame);
383 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
384 int i;
385 CORE_ADDR argsaddr;
386 long arg_value;
388 for (i = 0; i < num; i++)
390 QUIT;
391 argsaddr = get_frame_args_address (frame);
392 if (!argsaddr)
393 return;
394 arg_value = read_memory_integer (argsaddr + start,
395 sizeof (int), byte_order);
396 if (!first)
397 gdb_printf (stream, ", ");
398 gdb_printf (stream, "%ld", arg_value);
399 first = 0;
400 start += sizeof (int);
404 /* Print single argument of inferior function. ARG must be already
405 read in.
407 Errors are printed as if they would be the parameter value. Use zeroed ARG
408 iff it should not be printed according to user settings. */
410 static void
411 print_frame_arg (const frame_print_options &fp_opts,
412 const struct frame_arg *arg)
414 struct ui_out *uiout = current_uiout;
416 string_file stb;
418 gdb_assert (!arg->val || !arg->error);
419 gdb_assert (arg->entry_kind == print_entry_values_no
420 || arg->entry_kind == print_entry_values_only
421 || (!uiout->is_mi_like_p ()
422 && arg->entry_kind == print_entry_values_compact));
424 annotate_arg_emitter arg_emitter;
425 ui_out_emit_tuple tuple_emitter (uiout, NULL);
426 gdb_puts (arg->sym->print_name (), &stb);
427 if (arg->entry_kind == print_entry_values_compact)
429 /* It is OK to provide invalid MI-like stream as with
430 PRINT_ENTRY_VALUE_COMPACT we never use MI. */
431 stb.puts ("=");
433 gdb_puts (arg->sym->print_name (), &stb);
435 if (arg->entry_kind == print_entry_values_only
436 || arg->entry_kind == print_entry_values_compact)
437 stb.puts ("@entry");
438 uiout->field_stream ("name", stb, variable_name_style.style ());
439 annotate_arg_name_end ();
440 uiout->text ("=");
442 ui_file_style style;
443 if (!arg->val && !arg->error)
444 uiout->text ("...");
445 else
447 if (arg->error)
449 stb.printf (_("<error reading variable: %s>"), arg->error.get ());
450 style = metadata_style.style ();
452 else
456 const struct language_defn *language;
457 struct value_print_options vp_opts;
459 /* Avoid value_print because it will deref ref parameters. We
460 just want to print their addresses. Print ??? for args whose
461 address we do not know. We pass 2 as "recurse" to val_print
462 because our standard indentation here is 4 spaces, and
463 val_print indents 2 for each recurse. */
465 annotate_arg_value (arg->val->type ());
467 /* Use the appropriate language to display our symbol, unless the
468 user forced the language to a specific language. */
469 if (language_mode == language_mode_auto)
470 language = language_def (arg->sym->language ());
471 else
472 language = current_language;
474 get_no_prettyformat_print_options (&vp_opts);
475 vp_opts.deref_ref = true;
476 vp_opts.raw = fp_opts.print_raw_frame_arguments;
478 /* True in "summary" mode, false otherwise. */
479 vp_opts.summary
480 = fp_opts.print_frame_arguments == print_frame_arguments_scalars;
482 common_val_print_checked (arg->val, &stb, 2, &vp_opts, language);
484 catch (const gdb_exception_error &except)
486 stb.printf (_("<error reading variable: %s>"),
487 except.what ());
488 style = metadata_style.style ();
493 uiout->field_stream ("value", stb, style);
496 /* Read in inferior function local SYM at FRAME into ARGP. Caller is
497 responsible for xfree of ARGP->ERROR. This function never throws an
498 exception. */
500 void
501 read_frame_local (struct symbol *sym, const frame_info_ptr &frame,
502 struct frame_arg *argp)
504 argp->sym = sym;
505 argp->val = NULL;
506 argp->error = NULL;
510 argp->val = read_var_value (sym, NULL, frame);
512 catch (const gdb_exception_error &except)
514 argp->error.reset (xstrdup (except.what ()));
518 /* Read in inferior function parameter SYM at FRAME into ARGP. This
519 function never throws an exception. */
521 void
522 read_frame_arg (const frame_print_options &fp_opts,
523 symbol *sym, const frame_info_ptr &frame,
524 struct frame_arg *argp, struct frame_arg *entryargp)
526 struct value *val = NULL, *entryval = NULL;
527 char *val_error = NULL, *entryval_error = NULL;
528 int val_equal = 0;
530 if (fp_opts.print_entry_values != print_entry_values_only
531 && fp_opts.print_entry_values != print_entry_values_preferred)
535 val = read_var_value (sym, NULL, frame);
537 catch (const gdb_exception_error &except)
539 val_error = (char *) alloca (except.message->size () + 1);
540 strcpy (val_error, except.what ());
544 if (const symbol_computed_ops *computed_ops = sym->computed_ops ();
545 (computed_ops != nullptr
546 && computed_ops->read_variable_at_entry != nullptr
547 && fp_opts.print_entry_values != print_entry_values_no
548 && (fp_opts.print_entry_values != print_entry_values_if_needed || !val
549 || val->optimized_out ())))
553 entryval = computed_ops->read_variable_at_entry (sym, frame);
555 catch (const gdb_exception_error &except)
557 if (except.error != NO_ENTRY_VALUE_ERROR)
559 entryval_error = (char *) alloca (except.message->size () + 1);
560 strcpy (entryval_error, except.what ());
564 if (entryval != NULL && entryval->optimized_out ())
565 entryval = NULL;
567 if (fp_opts.print_entry_values == print_entry_values_compact
568 || fp_opts.print_entry_values == print_entry_values_default)
570 /* For MI do not try to use print_entry_values_compact for ARGP. */
572 if (val && entryval && !current_uiout->is_mi_like_p ())
574 struct type *type = val->type ();
576 if (val->lazy ())
577 val->fetch_lazy ();
578 if (entryval->lazy ())
579 entryval->fetch_lazy ();
581 if (val->contents_eq (0, entryval, 0, type->length ()))
583 /* Initialize it just to avoid a GCC false warning. */
584 struct value *val_deref = NULL, *entryval_deref;
586 /* DW_AT_call_value does match with the current
587 value. If it is a reference still try to verify if
588 dereferenced DW_AT_call_data_value does not differ. */
592 struct type *type_deref;
594 val_deref = coerce_ref (val);
595 if (val_deref->lazy ())
596 val_deref->fetch_lazy ();
597 type_deref = val_deref->type ();
599 entryval_deref = coerce_ref (entryval);
600 if (entryval_deref->lazy ())
601 entryval_deref->fetch_lazy ();
603 /* If the reference addresses match but dereferenced
604 content does not match print them. */
605 if (val != val_deref
606 && val_deref->contents_eq (0,
607 entryval_deref, 0,
608 type_deref->length ()))
609 val_equal = 1;
611 catch (const gdb_exception_error &except)
613 /* If the dereferenced content could not be
614 fetched do not display anything. */
615 if (except.error == NO_ENTRY_VALUE_ERROR)
616 val_equal = 1;
617 else if (except.message != NULL)
619 entryval_error
620 = (char *) alloca (except.message->size () + 1);
621 strcpy (entryval_error, except.what ());
625 /* Value was not a reference; and its content matches. */
626 if (val == val_deref)
627 val_equal = 1;
629 if (val_equal)
630 entryval = NULL;
634 /* Try to remove possibly duplicate error message for ENTRYARGP even
635 in MI mode. */
637 if (val_error && entryval_error
638 && strcmp (val_error, entryval_error) == 0)
640 entryval_error = NULL;
642 /* Do not se VAL_EQUAL as the same error message may be shown for
643 the entry value even if no entry values are present in the
644 inferior. */
649 if (entryval == NULL)
651 if (fp_opts.print_entry_values == print_entry_values_preferred)
653 gdb_assert (val == NULL);
657 val = read_var_value (sym, NULL, frame);
659 catch (const gdb_exception_error &except)
661 val_error = (char *) alloca (except.message->size () + 1);
662 strcpy (val_error, except.what ());
665 if (fp_opts.print_entry_values == print_entry_values_only
666 || fp_opts.print_entry_values == print_entry_values_both
667 || (fp_opts.print_entry_values == print_entry_values_preferred
668 && (!val || val->optimized_out ())))
670 entryval = value::allocate_optimized_out (sym->type ());
671 entryval_error = NULL;
674 if ((fp_opts.print_entry_values == print_entry_values_compact
675 || fp_opts.print_entry_values == print_entry_values_if_needed
676 || fp_opts.print_entry_values == print_entry_values_preferred)
677 && (!val || val->optimized_out ()) && entryval != NULL)
679 val = NULL;
680 val_error = NULL;
683 argp->sym = sym;
684 argp->val = val;
685 argp->error.reset (val_error ? xstrdup (val_error) : NULL);
686 if (!val && !val_error)
687 argp->entry_kind = print_entry_values_only;
688 else if ((fp_opts.print_entry_values == print_entry_values_compact
689 || fp_opts.print_entry_values == print_entry_values_default)
690 && val_equal)
692 argp->entry_kind = print_entry_values_compact;
693 gdb_assert (!current_uiout->is_mi_like_p ());
695 else
696 argp->entry_kind = print_entry_values_no;
698 entryargp->sym = sym;
699 entryargp->val = entryval;
700 entryargp->error.reset (entryval_error ? xstrdup (entryval_error) : NULL);
701 if (!entryval && !entryval_error)
702 entryargp->entry_kind = print_entry_values_no;
703 else
704 entryargp->entry_kind = print_entry_values_only;
707 /* Print the arguments of frame FRAME on STREAM, given the function
708 FUNC running in that frame (as a symbol), where NUM is the number
709 of arguments according to the stack frame (or -1 if the number of
710 arguments is unknown). */
712 /* Note that currently the "number of arguments according to the
713 stack frame" is only known on VAX where i refers to the "number of
714 ints of arguments according to the stack frame". */
716 static void
717 print_frame_args (const frame_print_options &fp_opts,
718 struct symbol *func, const frame_info_ptr &frame,
719 int num, struct ui_file *stream)
721 struct ui_out *uiout = current_uiout;
722 int first = 1;
723 /* Offset of next stack argument beyond the one we have seen that is
724 at the highest offset, or -1 if we haven't come to a stack
725 argument yet. */
726 long highest_offset = -1;
727 /* Number of ints of arguments that we have printed so far. */
728 int args_printed = 0;
729 /* True if we should print arg names. If false, we only indicate
730 the presence of arguments by printing ellipsis. */
731 bool print_names
732 = fp_opts.print_frame_arguments != print_frame_arguments_presence;
733 /* True if we should print arguments, false otherwise. */
734 bool print_args
735 = (print_names
736 && fp_opts.print_frame_arguments != print_frame_arguments_none);
738 if (func)
740 const struct block *b = func->value_block ();
742 for (struct symbol *sym : block_iterator_range (b))
744 struct frame_arg arg, entryarg;
746 QUIT;
748 /* Keep track of the highest stack argument offset seen, and
749 skip over any kinds of symbols we don't care about. */
751 if (!sym->is_argument ())
752 continue;
754 if (!print_names)
756 uiout->text ("...");
757 first = 0;
758 break;
761 switch (sym->aclass ())
763 case LOC_ARG:
764 case LOC_REF_ARG:
766 long current_offset = sym->value_longest ();
767 int arg_size = sym->type ()->length ();
769 /* Compute address of next argument by adding the size of
770 this argument and rounding to an int boundary. */
771 current_offset =
772 ((current_offset + arg_size + sizeof (int) - 1)
773 & ~(sizeof (int) - 1));
775 /* If this is the highest offset seen yet, set
776 highest_offset. */
777 if (highest_offset == -1
778 || (current_offset > highest_offset))
779 highest_offset = current_offset;
781 /* Add the number of ints we're about to print to
782 args_printed. */
783 args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
786 /* We care about types of symbols, but don't need to
787 keep track of stack offsets in them. */
788 case LOC_REGISTER:
789 case LOC_REGPARM_ADDR:
790 case LOC_COMPUTED:
791 case LOC_OPTIMIZED_OUT:
792 default:
793 break;
796 /* We have to look up the symbol because arguments can have
797 two entries (one a parameter, one a local) and the one we
798 want is the local, which lookup_symbol will find for us.
799 This includes gcc1 (not gcc2) on SPARC when passing a
800 small structure and gcc2 when the argument type is float
801 and it is passed as a double and converted to float by
802 the prologue (in the latter case the type of the LOC_ARG
803 symbol is double and the type of the LOC_LOCAL symbol is
804 float). */
805 /* But if the parameter name is null, don't try it. Null
806 parameter names occur on the RS/6000, for traceback
807 tables. FIXME, should we even print them? */
809 if (*sym->linkage_name ())
811 struct symbol *nsym;
813 nsym = lookup_symbol_search_name (sym->search_name (),
814 b, SEARCH_VAR_DOMAIN).symbol;
815 gdb_assert (nsym != NULL);
816 if (nsym->aclass () == LOC_REGISTER
817 && !nsym->is_argument ())
819 /* There is a LOC_ARG/LOC_REGISTER pair. This means
820 that it was passed on the stack and loaded into a
821 register, or passed in a register and stored in a
822 stack slot. GDB 3.x used the LOC_ARG; GDB
823 4.0-4.11 used the LOC_REGISTER.
825 Reasons for using the LOC_ARG:
827 (1) Because find_saved_registers may be slow for
828 remote debugging.
830 (2) Because registers are often re-used and stack
831 slots rarely (never?) are. Therefore using
832 the stack slot is much less likely to print
833 garbage.
835 Reasons why we might want to use the LOC_REGISTER:
837 (1) So that the backtrace prints the same value
838 as "print foo". I see no compelling reason
839 why this needs to be the case; having the
840 backtrace print the value which was passed
841 in, and "print foo" print the value as
842 modified within the called function, makes
843 perfect sense to me.
845 Additional note: It might be nice if "info args"
846 displayed both values.
848 One more note: There is a case with SPARC
849 structure passing where we need to use the
850 LOC_REGISTER, but this is dealt with by creating
851 a single LOC_REGPARM in symbol reading. */
853 /* Leave sym (the LOC_ARG) alone. */
856 else
857 sym = nsym;
860 /* Print the current arg. */
861 if (!first)
862 uiout->text (", ");
863 uiout->wrap_hint (4);
865 if (!print_args)
867 arg.sym = sym;
868 arg.entry_kind = print_entry_values_no;
869 entryarg.sym = sym;
870 entryarg.entry_kind = print_entry_values_no;
872 else
873 read_frame_arg (fp_opts, sym, frame, &arg, &entryarg);
875 if (arg.entry_kind != print_entry_values_only)
876 print_frame_arg (fp_opts, &arg);
878 if (entryarg.entry_kind != print_entry_values_no)
880 if (arg.entry_kind != print_entry_values_only)
882 uiout->text (", ");
883 uiout->wrap_hint (4);
886 print_frame_arg (fp_opts, &entryarg);
889 first = 0;
893 /* Don't print nameless args in situations where we don't know
894 enough about the stack to find them. */
895 if (num != -1)
897 long start;
899 if (highest_offset == -1)
900 start = gdbarch_frame_args_skip (get_frame_arch (frame));
901 else
902 start = highest_offset;
904 if (!print_names && !first && num > 0)
905 uiout->text ("...");
906 else
907 print_frame_nameless_args (frame, start, num - args_printed,
908 first, stream);
912 /* Set the current source and line to the location given by frame
913 FRAME, if possible. When CENTER is true, adjust so the relevant
914 line is in the center of the next 'list'. */
916 void
917 set_current_sal_from_frame (const frame_info_ptr &frame)
919 symtab_and_line sal = find_frame_sal (frame);
920 if (sal.symtab != NULL)
921 set_current_source_symtab_and_line (sal);
924 /* If ON, GDB will display disassembly of the next source line when
925 execution of the program being debugged stops.
926 If AUTO (which is the default), or there's no line info to determine
927 the source line of the next instruction, display disassembly of next
928 instruction instead. */
930 static enum auto_boolean disassemble_next_line;
932 static void
933 show_disassemble_next_line (struct ui_file *file, int from_tty,
934 struct cmd_list_element *c,
935 const char *value)
937 gdb_printf (file,
938 _("Debugger's willingness to use "
939 "disassemble-next-line is %s.\n"),
940 value);
943 /* Use TRY_CATCH to catch the exception from the gdb_disassembly
944 because it will be broken by filter sometime. */
946 static void
947 do_gdb_disassembly (struct gdbarch *gdbarch,
948 int how_many, CORE_ADDR low, CORE_ADDR high)
953 gdb_disassembly (gdbarch, current_uiout,
954 DISASSEMBLY_RAW_INSN, how_many,
955 low, high);
957 catch (const gdb_exception_error &exception)
959 /* If an exception was thrown while doing the disassembly, print
960 the error message, to give the user a clue of what happened. */
961 exception_print (gdb_stderr, exception);
965 /* Converts the PRINT_FRAME_INFO choice to an optional enum print_what.
966 Value not present indicates to the caller to use default values
967 specific to the command being executed. */
969 static std::optional<enum print_what>
970 print_frame_info_to_print_what (const char *print_frame_info)
972 for (int i = 0; print_frame_info_choices[i] != NULL; i++)
973 if (print_frame_info == print_frame_info_choices[i])
974 return print_frame_info_print_what[i];
976 internal_error ("Unexpected print frame-info value `%s'.",
977 print_frame_info);
980 /* Print the PC from FRAME, plus any flags, to UIOUT. */
982 static void
983 print_pc (struct ui_out *uiout, struct gdbarch *gdbarch, const frame_info_ptr &frame,
984 CORE_ADDR pc)
986 uiout->field_core_addr ("addr", gdbarch, pc);
988 std::string flags = gdbarch_get_pc_address_flags (gdbarch, frame, pc);
989 if (!flags.empty ())
991 uiout->text (" [");
992 uiout->field_string ("addr_flags", flags);
993 uiout->text ("]");
997 /* See stack.h. */
999 void
1000 get_user_print_what_frame_info (std::optional<enum print_what> *what)
1002 *what
1003 = print_frame_info_to_print_what
1004 (user_frame_print_options.print_frame_info);
1007 /* Print information about frame FRAME. The output is format according
1008 to PRINT_LEVEL and PRINT_WHAT and PRINT_ARGS. For the meaning of
1009 PRINT_WHAT, see enum print_what comments in frame.h.
1010 Note that PRINT_WHAT is overridden if FP_OPTS.print_frame_info
1011 != print_frame_info_auto.
1013 Used in "where" output, and to emit breakpoint or step
1014 messages. */
1016 static void
1017 do_print_frame_info (struct ui_out *uiout, const frame_print_options &fp_opts,
1018 const frame_info_ptr &frame, int print_level,
1019 enum print_what print_what, int print_args,
1020 int set_current_sal)
1022 struct gdbarch *gdbarch = get_frame_arch (frame);
1023 int source_print;
1024 int location_print;
1026 if (!current_uiout->is_mi_like_p ()
1027 && fp_opts.print_frame_info != print_frame_info_auto)
1029 /* Use the specific frame information desired by the user. */
1030 print_what = *print_frame_info_to_print_what (fp_opts.print_frame_info);
1033 if (get_frame_type (frame) == DUMMY_FRAME
1034 || get_frame_type (frame) == SIGTRAMP_FRAME
1035 || get_frame_type (frame) == ARCH_FRAME)
1037 ui_out_emit_tuple tuple_emitter (uiout, "frame");
1039 annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
1040 gdbarch, get_frame_pc (frame));
1042 /* Do this regardless of SOURCE because we don't have any source
1043 to list for this frame. */
1044 if (print_level)
1046 uiout->text ("#");
1047 uiout->field_fmt_signed (2, ui_left, "level",
1048 frame_relative_level (frame));
1050 if (uiout->is_mi_like_p ())
1052 annotate_frame_address ();
1053 print_pc (uiout, gdbarch, frame, get_frame_pc (frame));
1054 annotate_frame_address_end ();
1057 if (get_frame_type (frame) == DUMMY_FRAME)
1059 annotate_function_call ();
1060 uiout->field_string ("func", "<function called from gdb>",
1061 metadata_style.style ());
1063 else if (get_frame_type (frame) == SIGTRAMP_FRAME)
1065 annotate_signal_handler_caller ();
1066 uiout->field_string ("func", "<signal handler called>",
1067 metadata_style.style ());
1069 else if (get_frame_type (frame) == ARCH_FRAME)
1071 uiout->field_string ("func", "<cross-architecture call>",
1072 metadata_style.style ());
1074 uiout->text ("\n");
1075 annotate_frame_end ();
1077 /* If disassemble-next-line is set to auto or on output the next
1078 instruction. */
1079 if (disassemble_next_line == AUTO_BOOLEAN_AUTO
1080 || disassemble_next_line == AUTO_BOOLEAN_TRUE)
1081 do_gdb_disassembly (get_frame_arch (frame), 1,
1082 get_frame_pc (frame), get_frame_pc (frame) + 1);
1084 return;
1087 /* If FRAME is not the innermost frame, that normally means that
1088 FRAME->pc points to *after* the call instruction, and we want to
1089 get the line containing the call, never the next line. But if
1090 the next frame is a SIGTRAMP_FRAME or a DUMMY_FRAME, then the
1091 next frame was not entered as the result of a call, and we want
1092 to get the line containing FRAME->pc. */
1093 symtab_and_line sal = find_frame_sal (frame);
1095 location_print = (print_what == LOCATION
1096 || print_what == SRC_AND_LOC
1097 || print_what == LOC_AND_ADDRESS
1098 || print_what == SHORT_LOCATION);
1099 if (location_print || !sal.symtab)
1100 print_frame (uiout, fp_opts, frame, print_level,
1101 print_what, print_args, sal);
1103 source_print = (print_what == SRC_LINE || print_what == SRC_AND_LOC);
1105 /* If disassemble-next-line is set to auto or on and doesn't have
1106 the line debug messages for $pc, output the next instruction. */
1107 if ((disassemble_next_line == AUTO_BOOLEAN_AUTO
1108 || disassemble_next_line == AUTO_BOOLEAN_TRUE)
1109 && source_print && !sal.symtab)
1110 do_gdb_disassembly (get_frame_arch (frame), 1,
1111 get_frame_pc (frame), get_frame_pc (frame) + 1);
1113 if (source_print && sal.symtab)
1115 int mid_statement = ((print_what == SRC_LINE)
1116 && frame_show_address (frame, sal));
1117 if (annotation_level > 0
1118 && annotate_source_line (sal.symtab, sal.line, mid_statement,
1119 get_frame_pc (frame)))
1121 /* The call to ANNOTATE_SOURCE_LINE already printed the
1122 annotation for this source line, so we avoid the two cases
1123 below and do not print the actual source line. The
1124 documentation for annotations makes it clear that the source
1125 line annotation is printed __instead__ of printing the source
1126 line, not as well as.
1128 However, if we fail to print the source line, which usually
1129 means either the source file is missing, or the requested
1130 line is out of range of the file, then we don't print the
1131 source annotation, and will pass through the "normal" print
1132 source line code below, the expectation is that this code
1133 will print an appropriate error. */
1135 else if (deprecated_print_frame_info_listing_hook)
1136 deprecated_print_frame_info_listing_hook (sal.symtab, sal.line,
1137 sal.line + 1, 0);
1138 else
1140 struct value_print_options opts;
1142 get_user_print_options (&opts);
1143 /* We used to do this earlier, but that is clearly
1144 wrong. This function is used by many different
1145 parts of gdb, including normal_stop in infrun.c,
1146 which uses this to print out the current PC
1147 when we stepi/nexti into the middle of a source
1148 line. Only the command line really wants this
1149 behavior. Other UIs probably would like the
1150 ability to decide for themselves if it is desired. */
1151 if (opts.addressprint && mid_statement)
1153 print_pc (uiout, gdbarch, frame, get_frame_pc (frame));
1154 uiout->text ("\t");
1157 print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
1160 /* If disassemble-next-line is set to on and there is line debug
1161 messages, output assembly codes for next line. */
1162 if (disassemble_next_line == AUTO_BOOLEAN_TRUE)
1163 do_gdb_disassembly (get_frame_arch (frame), -1, sal.pc, sal.end);
1166 if (set_current_sal)
1168 CORE_ADDR pc;
1170 if (get_frame_pc_if_available (frame, &pc))
1171 last_displayed_symtab_info.set (sal.pspace, pc, sal.symtab, sal.line);
1172 else
1173 last_displayed_symtab_info.invalidate ();
1176 annotate_frame_end ();
1178 gdb_flush (gdb_stdout);
1181 /* Redirect output to a temporary buffer for the duration
1182 of do_print_frame_info. */
1184 void
1185 print_frame_info (const frame_print_options &fp_opts,
1186 const frame_info_ptr &frame, int print_level,
1187 enum print_what print_what, int print_args,
1188 int set_current_sal)
1190 do_with_buffered_output (do_print_frame_info, current_uiout,
1191 fp_opts, frame, print_level, print_what,
1192 print_args, set_current_sal);
1195 /* See stack.h. */
1197 void
1198 clear_last_displayed_sal (void)
1200 last_displayed_symtab_info.invalidate ();
1203 /* See stack.h. */
1205 bool
1206 last_displayed_sal_is_valid (void)
1208 return last_displayed_symtab_info.is_valid ();
1211 /* See stack.h. */
1213 struct program_space *
1214 get_last_displayed_pspace (void)
1216 return last_displayed_symtab_info.pspace ();
1219 /* See stack.h. */
1221 CORE_ADDR
1222 get_last_displayed_addr (void)
1224 return last_displayed_symtab_info.address ();
1227 /* See stack.h. */
1229 struct symtab*
1230 get_last_displayed_symtab (void)
1232 return last_displayed_symtab_info.symtab ();
1235 /* See stack.h. */
1238 get_last_displayed_line (void)
1240 return last_displayed_symtab_info.line ();
1243 /* See stack.h. */
1245 symtab_and_line
1246 get_last_displayed_sal ()
1248 symtab_and_line sal;
1250 if (last_displayed_symtab_info.is_valid ())
1252 sal.pspace = last_displayed_symtab_info.pspace ();
1253 sal.pc = last_displayed_symtab_info.address ();
1254 sal.symtab = last_displayed_symtab_info.symtab ();
1255 sal.line = last_displayed_symtab_info.line ();
1258 return sal;
1262 /* Attempt to obtain the name, FUNLANG and optionally FUNCP of the function
1263 corresponding to FRAME. */
1265 gdb::unique_xmalloc_ptr<char>
1266 find_frame_funname (const frame_info_ptr &frame, enum language *funlang,
1267 struct symbol **funcp)
1269 struct symbol *func;
1270 gdb::unique_xmalloc_ptr<char> funname;
1272 *funlang = language_unknown;
1273 if (funcp)
1274 *funcp = NULL;
1276 func = get_frame_function (frame);
1277 if (func)
1279 const char *print_name = func->print_name ();
1281 *funlang = func->language ();
1282 if (funcp)
1283 *funcp = func;
1284 if (*funlang == language_cplus)
1286 /* It seems appropriate to use print_name() here,
1287 to display the demangled name that we already have
1288 stored in the symbol table, but we stored a version
1289 with DMGL_PARAMS turned on, and here we don't want to
1290 display parameters. So remove the parameters. */
1291 funname = cp_remove_params (print_name);
1294 /* If we didn't hit the C++ case above, set *funname
1295 here. */
1296 if (funname == NULL)
1297 funname.reset (xstrdup (print_name));
1299 else
1301 CORE_ADDR pc;
1303 if (!get_frame_address_in_block_if_available (frame, &pc))
1304 return funname;
1306 bound_minimal_symbol msymbol = lookup_minimal_symbol_by_pc (pc);
1307 if (msymbol.minsym != NULL)
1309 funname.reset (xstrdup (msymbol.minsym->print_name ()));
1310 *funlang = msymbol.minsym->language ();
1314 return funname;
1317 static void
1318 print_frame (struct ui_out *uiout,
1319 const frame_print_options &fp_opts,
1320 const frame_info_ptr &frame, int print_level,
1321 enum print_what print_what, int print_args,
1322 struct symtab_and_line sal)
1324 struct gdbarch *gdbarch = get_frame_arch (frame);
1325 enum language funlang = language_unknown;
1326 struct value_print_options opts;
1327 struct symbol *func;
1328 CORE_ADDR pc = 0;
1329 int pc_p;
1331 pc_p = get_frame_pc_if_available (frame, &pc);
1333 gdb::unique_xmalloc_ptr<char> funname
1334 = find_frame_funname (frame, &funlang, &func);
1336 annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
1337 gdbarch, pc);
1340 ui_out_emit_tuple tuple_emitter (uiout, "frame");
1342 if (print_level)
1344 uiout->text ("#");
1345 uiout->field_fmt_signed (2, ui_left, "level",
1346 frame_relative_level (frame));
1348 get_user_print_options (&opts);
1349 if (opts.addressprint)
1350 if (!sal.symtab
1351 || frame_show_address (frame, sal)
1352 || print_what == LOC_AND_ADDRESS)
1354 annotate_frame_address ();
1355 if (pc_p)
1356 print_pc (uiout, gdbarch, frame, pc);
1357 else
1358 uiout->field_string ("addr", "<unavailable>",
1359 metadata_style.style ());
1360 annotate_frame_address_end ();
1361 uiout->text (" in ");
1363 annotate_frame_function_name ();
1365 string_file stb;
1366 gdb_puts (funname ? funname.get () : "??", &stb);
1367 uiout->field_stream ("func", stb, function_name_style.style ());
1368 uiout->wrap_hint (3);
1369 annotate_frame_args ();
1371 uiout->text (" (");
1372 if (print_args)
1374 int numargs;
1376 if (gdbarch_frame_num_args_p (gdbarch))
1378 numargs = gdbarch_frame_num_args (gdbarch, frame);
1379 gdb_assert (numargs >= 0);
1381 else
1382 numargs = -1;
1385 ui_out_emit_list list_emitter (uiout, "args");
1388 print_frame_args (fp_opts, func, frame, numargs, gdb_stdout);
1390 catch (const gdb_exception_error &e)
1394 /* FIXME: ARGS must be a list. If one argument is a string it
1395 will have " that will not be properly escaped. */
1397 QUIT;
1399 uiout->text (")");
1400 if (print_what != SHORT_LOCATION && sal.symtab)
1402 const char *filename_display;
1404 filename_display = symtab_to_filename_for_display (sal.symtab);
1405 annotate_frame_source_begin ();
1406 uiout->wrap_hint (3);
1407 uiout->text (" at ");
1408 annotate_frame_source_file ();
1409 uiout->field_string ("file", filename_display,
1410 file_name_style.style ());
1411 if (uiout->is_mi_like_p ())
1413 const char *fullname = symtab_to_fullname (sal.symtab);
1415 uiout->field_string ("fullname", fullname);
1417 annotate_frame_source_file_end ();
1418 uiout->text (":");
1419 annotate_frame_source_line ();
1420 uiout->field_signed ("line", sal.line, line_number_style.style ());
1421 annotate_frame_source_end ();
1424 if (print_what != SHORT_LOCATION
1425 && pc_p && (funname == NULL || sal.symtab == NULL))
1427 const char *lib
1428 = solib_name_from_address (get_frame_program_space (frame),
1429 get_frame_address_in_block (frame));
1431 if (lib)
1433 annotate_frame_where ();
1434 uiout->wrap_hint (2);
1435 uiout->text (" from ");
1436 uiout->field_string ("from", lib, file_name_style.style ());
1439 if (uiout->is_mi_like_p ())
1440 uiout->field_string ("arch",
1441 (gdbarch_bfd_arch_info (gdbarch))->printable_name);
1444 uiout->text ("\n");
1448 /* Completion function for "frame function", "info frame function", and
1449 "select-frame function" commands. */
1451 static void
1452 frame_selection_by_function_completer (struct cmd_list_element *ignore,
1453 completion_tracker &tracker,
1454 const char *text, const char *word)
1456 /* This is used to complete function names within a stack. It would be
1457 nice if we only offered functions that were actually in the stack.
1458 However, this would mean unwinding the stack to completion, which
1459 could take too long, or on a corrupted stack, possibly not end.
1460 Instead, we offer all symbol names as a safer choice. */
1461 collect_symbol_completion_matches (tracker,
1462 complete_symbol_mode::EXPRESSION,
1463 symbol_name_match_type::EXPRESSION,
1464 text, word);
1467 /* Core of all the "info frame" sub-commands. Print information about a
1468 frame FI. If SELECTED_FRAME_P is true then the user didn't provide a
1469 frame specification, they just entered 'info frame'. If the user did
1470 provide a frame specification (for example 'info frame 0', 'info frame
1471 level 1') then SELECTED_FRAME_P will be false. */
1473 static void
1474 info_frame_command_core (const frame_info_ptr &fi, bool selected_frame_p)
1476 struct symbol *func;
1477 struct symtab *s;
1478 frame_info_ptr calling_frame_info;
1479 int numregs;
1480 const char *funname = 0;
1481 enum language funlang = language_unknown;
1482 const char *pc_regname;
1483 struct gdbarch *gdbarch;
1484 CORE_ADDR frame_pc;
1485 int frame_pc_p;
1486 /* Initialize it to avoid "may be used uninitialized" warning. */
1487 CORE_ADDR caller_pc = 0;
1488 int caller_pc_p = 0;
1490 gdbarch = get_frame_arch (fi);
1492 /* Name of the value returned by get_frame_pc(). Per comments, "pc"
1493 is not a good name. */
1494 if (gdbarch_pc_regnum (gdbarch) >= 0)
1495 /* OK, this is weird. The gdbarch_pc_regnum hardware register's value can
1496 easily not match that of the internal value returned by
1497 get_frame_pc(). */
1498 pc_regname = gdbarch_register_name (gdbarch, gdbarch_pc_regnum (gdbarch));
1499 else
1500 /* But then, this is weird to. Even without gdbarch_pc_regnum, an
1501 architectures will often have a hardware register called "pc",
1502 and that register's value, again, can easily not match
1503 get_frame_pc(). */
1504 pc_regname = "pc";
1506 frame_pc_p = get_frame_pc_if_available (fi, &frame_pc);
1507 func = get_frame_function (fi);
1508 symtab_and_line sal = find_frame_sal (fi);
1509 s = sal.symtab;
1510 gdb::unique_xmalloc_ptr<char> func_only;
1511 if (func)
1513 funname = func->print_name ();
1514 funlang = func->language ();
1515 if (funlang == language_cplus)
1517 /* It seems appropriate to use print_name() here,
1518 to display the demangled name that we already have
1519 stored in the symbol table, but we stored a version
1520 with DMGL_PARAMS turned on, and here we don't want to
1521 display parameters. So remove the parameters. */
1522 func_only = cp_remove_params (funname);
1524 if (func_only)
1525 funname = func_only.get ();
1528 else if (frame_pc_p)
1530 bound_minimal_symbol msymbol = lookup_minimal_symbol_by_pc (frame_pc);
1531 if (msymbol.minsym != NULL)
1533 funname = msymbol.minsym->print_name ();
1534 funlang = msymbol.minsym->language ();
1537 calling_frame_info = get_prev_frame (fi);
1539 if (selected_frame_p && frame_relative_level (fi) >= 0)
1541 gdb_printf (_("Stack level %d, frame at "),
1542 frame_relative_level (fi));
1544 else
1546 gdb_printf (_("Stack frame at "));
1548 gdb_puts (paddress (gdbarch, get_frame_base (fi)));
1549 gdb_printf (":\n");
1550 gdb_printf (" %s = ", pc_regname);
1551 if (frame_pc_p)
1552 gdb_puts (paddress (gdbarch, get_frame_pc (fi)));
1553 else
1554 fputs_styled ("<unavailable>", metadata_style.style (), gdb_stdout);
1556 gdb_stdout->wrap_here (3);
1557 if (funname)
1559 gdb_printf (" in ");
1560 gdb_puts (funname);
1562 gdb_stdout->wrap_here (3);
1563 if (sal.symtab)
1564 gdb_printf
1565 (" (%ps:%d)",
1566 styled_string (file_name_style.style (),
1567 symtab_to_filename_for_display (sal.symtab)),
1568 sal.line);
1569 gdb_puts ("; ");
1570 gdb_stdout->wrap_here (4);
1571 gdb_printf ("saved %s = ", pc_regname);
1573 if (!frame_id_p (frame_unwind_caller_id (fi)))
1574 val_print_not_saved (gdb_stdout);
1575 else
1579 caller_pc = frame_unwind_caller_pc (fi);
1580 caller_pc_p = 1;
1582 catch (const gdb_exception_error &ex)
1584 switch (ex.error)
1586 case NOT_AVAILABLE_ERROR:
1587 val_print_unavailable (gdb_stdout);
1588 break;
1589 case OPTIMIZED_OUT_ERROR:
1590 val_print_not_saved (gdb_stdout);
1591 break;
1592 default:
1593 fprintf_styled (gdb_stdout, metadata_style.style (),
1594 _("<error: %s>"),
1595 ex.what ());
1596 break;
1601 if (caller_pc_p)
1602 gdb_puts (paddress (gdbarch, caller_pc));
1603 gdb_printf ("\n");
1605 if (calling_frame_info == NULL)
1607 enum unwind_stop_reason reason;
1609 reason = get_frame_unwind_stop_reason (fi);
1610 if (reason != UNWIND_NO_REASON)
1611 gdb_printf (_(" Outermost frame: %s\n"),
1612 frame_stop_reason_string (fi));
1614 else if (get_frame_type (fi) == TAILCALL_FRAME)
1615 gdb_puts (" tail call frame");
1616 else if (get_frame_type (fi) == INLINE_FRAME)
1617 gdb_printf (" inlined into frame %d",
1618 frame_relative_level (get_prev_frame (fi)));
1619 else
1621 gdb_printf (" called by frame at ");
1622 gdb_puts (paddress (gdbarch, get_frame_base (calling_frame_info)));
1624 if (get_next_frame (fi) && calling_frame_info)
1625 gdb_puts (",");
1626 gdb_stdout->wrap_here (3);
1627 if (get_next_frame (fi))
1629 gdb_printf (" caller of frame at ");
1630 gdb_puts (paddress (gdbarch, get_frame_base (get_next_frame (fi))));
1632 if (get_next_frame (fi) || calling_frame_info)
1633 gdb_puts ("\n");
1635 if (s)
1636 gdb_printf (" source language %s.\n",
1637 language_str (s->language ()));
1640 /* Address of the argument list for this frame, or 0. */
1641 CORE_ADDR arg_list = get_frame_args_address (fi);
1642 /* Number of args for this frame, or -1 if unknown. */
1643 int numargs;
1645 if (arg_list == 0)
1646 gdb_printf (" Arglist at unknown address.\n");
1647 else
1649 gdb_printf (" Arglist at ");
1650 gdb_puts (paddress (gdbarch, arg_list));
1651 gdb_printf (",");
1653 if (!gdbarch_frame_num_args_p (gdbarch))
1655 numargs = -1;
1656 gdb_puts (" args: ");
1658 else
1660 numargs = gdbarch_frame_num_args (gdbarch, fi);
1661 gdb_assert (numargs >= 0);
1662 if (numargs == 0)
1663 gdb_puts (" no args.");
1664 else if (numargs == 1)
1665 gdb_puts (" 1 arg: ");
1666 else
1667 gdb_printf (" %d args: ", numargs);
1670 print_frame_args (user_frame_print_options,
1671 func, fi, numargs, gdb_stdout);
1672 gdb_puts ("\n");
1676 /* Address of the local variables for this frame, or 0. */
1677 CORE_ADDR arg_list = get_frame_locals_address (fi);
1679 if (arg_list == 0)
1680 gdb_printf (" Locals at unknown address,");
1681 else
1683 gdb_printf (" Locals at ");
1684 gdb_puts (paddress (gdbarch, arg_list));
1685 gdb_printf (",");
1689 /* Print as much information as possible on the location of all the
1690 registers. */
1692 int count;
1693 int i;
1694 int need_nl = 1;
1695 int sp_regnum = gdbarch_sp_regnum (gdbarch);
1697 /* The sp is special; what's displayed isn't the save address, but
1698 the value of the previous frame's sp. This is a legacy thing,
1699 at one stage the frame cached the previous frame's SP instead
1700 of its address, hence it was easiest to just display the cached
1701 value. */
1702 if (sp_regnum >= 0)
1704 struct value *value = frame_unwind_register_value (fi, sp_regnum);
1705 gdb_assert (value != NULL);
1707 if (!value->optimized_out () && value->entirely_available ())
1709 if (value->lval () == not_lval)
1711 CORE_ADDR sp;
1712 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1713 int sp_size = register_size (gdbarch, sp_regnum);
1715 sp = extract_unsigned_integer
1716 (value->contents_all ().data (), sp_size, byte_order);
1718 gdb_printf (" Previous frame's sp is ");
1719 gdb_puts (paddress (gdbarch, sp));
1720 gdb_printf ("\n");
1722 else if (value->lval () == lval_memory)
1724 gdb_printf (" Previous frame's sp at ");
1725 gdb_puts (paddress (gdbarch, value->address ()));
1726 gdb_printf ("\n");
1728 else if (value->lval () == lval_register)
1729 gdb_printf (" Previous frame's sp in %s\n",
1730 gdbarch_register_name (gdbarch, value->regnum ()));
1732 release_value (value);
1733 need_nl = 0;
1735 /* else keep quiet. */
1738 count = 0;
1739 numregs = gdbarch_num_cooked_regs (gdbarch);
1740 for (i = 0; i < numregs; i++)
1741 if (i != sp_regnum
1742 && gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
1744 enum lval_type lval;
1745 int optimized;
1746 int unavailable;
1747 CORE_ADDR addr;
1748 int realnum;
1750 /* Find out the location of the saved register without
1751 fetching the corresponding value. */
1752 frame_register_unwind (fi, i, &optimized, &unavailable,
1753 &lval, &addr, &realnum);
1754 /* For moment, only display registers that were saved on the
1755 stack. */
1756 if (!optimized && !unavailable && lval == lval_memory)
1758 if (count == 0)
1759 gdb_puts (" Saved registers:\n ");
1760 else
1761 gdb_puts (",");
1762 gdb_stdout->wrap_here (1);
1763 gdb_printf (" %s at ",
1764 gdbarch_register_name (gdbarch, i));
1765 gdb_puts (paddress (gdbarch, addr));
1766 count++;
1769 if (count || need_nl)
1770 gdb_puts ("\n");
1774 /* Return the innermost frame at level LEVEL. */
1776 static frame_info_ptr
1777 leading_innermost_frame (int level)
1779 frame_info_ptr leading;
1781 leading = get_current_frame ();
1783 gdb_assert (level >= 0);
1785 while (leading != nullptr && level)
1787 QUIT;
1788 leading = get_prev_frame (leading);
1789 level--;
1792 return leading;
1795 /* Return the starting frame needed to handle COUNT outermost frames. */
1797 static frame_info_ptr
1798 trailing_outermost_frame (int count)
1800 frame_info_ptr current;
1801 frame_info_ptr trailing;
1803 trailing = get_current_frame ();
1805 gdb_assert (count > 0);
1807 current = trailing;
1808 while (current != nullptr && count--)
1810 QUIT;
1811 current = get_prev_frame (current);
1814 /* Will stop when CURRENT reaches the top of the stack.
1815 TRAILING will be COUNT below it. */
1816 while (current != nullptr)
1818 QUIT;
1819 trailing = get_prev_frame (trailing);
1820 current = get_prev_frame (current);
1823 return trailing;
1826 /* The core of all the "select-frame" sub-commands. Just wraps a call to
1827 SELECT_FRAME. */
1829 static void
1830 select_frame_command_core (const frame_info_ptr &fi, bool ignored)
1832 frame_info_ptr prev_frame = get_selected_frame ();
1833 select_frame (fi);
1834 if (get_selected_frame () != prev_frame)
1835 notify_user_selected_context_changed (USER_SELECTED_FRAME);
1838 /* The core of all the "frame" sub-commands. Select frame FI, and if this
1839 means we change frame send out a change notification (otherwise, just
1840 reprint the current frame summary). */
1842 static void
1843 frame_command_core (const frame_info_ptr &fi, bool ignored)
1845 frame_info_ptr prev_frame = get_selected_frame ();
1846 select_frame (fi);
1847 if (get_selected_frame () != prev_frame)
1848 notify_user_selected_context_changed (USER_SELECTED_FRAME);
1849 else
1850 print_selected_thread_frame (current_uiout, USER_SELECTED_FRAME);
1853 /* The three commands 'frame', 'select-frame', and 'info frame' all have a
1854 common set of sub-commands that allow a specific frame to be selected.
1855 All of the sub-command functions are static methods within this class
1856 template which is then instantiated below. The template parameter is a
1857 callback used to implement the functionality of the base command
1858 ('frame', 'select-frame', or 'info frame').
1860 In the template parameter FI is the frame being selected. The
1861 SELECTED_FRAME_P flag is true if the frame being selected was done by
1862 default, which happens when the user uses the base command with no
1863 arguments. For example the commands 'info frame', 'select-frame',
1864 'frame' will all cause SELECTED_FRAME_P to be true. In all other cases
1865 SELECTED_FRAME_P is false. */
1867 template <void (*FPTR) (const frame_info_ptr &fi, bool selected_frame_p)>
1868 class frame_command_helper
1870 public:
1872 /* The "frame level" family of commands. The ARG is an integer that is
1873 the frame's level in the stack. */
1874 static void
1875 level (const char *arg, int from_tty)
1877 int level = value_as_long (parse_and_eval (arg));
1878 frame_info_ptr fid
1879 = find_relative_frame (get_current_frame (), &level);
1880 if (level != 0)
1881 error (_("No frame at level %s."), arg);
1882 FPTR (fid, false);
1885 /* The "frame address" family of commands. ARG is a stack-pointer
1886 address for an existing frame. This command does not allow new
1887 frames to be created. */
1889 static void
1890 address (const char *arg, int from_tty)
1892 CORE_ADDR addr = value_as_address (parse_and_eval (arg));
1893 frame_info_ptr fid = find_frame_for_address (addr);
1894 if (fid == NULL)
1895 error (_("No frame at address %s."), arg);
1896 FPTR (fid, false);
1899 /* The "frame view" family of commands. ARG is one or two addresses and
1900 is used to view a frame that might be outside the current backtrace.
1901 The addresses are stack-pointer address, and (optional) pc-address. */
1903 static void
1904 view (const char *args, int from_tty)
1906 frame_info_ptr fid;
1908 if (args == NULL)
1909 error (_("Missing address argument to view a frame"));
1911 gdb_argv argv (args);
1913 if (argv.count () == 2)
1915 CORE_ADDR addr[2];
1917 addr [0] = value_as_address (parse_and_eval (argv[0]));
1918 addr [1] = value_as_address (parse_and_eval (argv[1]));
1919 fid = create_new_frame (addr[0], addr[1]);
1921 else
1923 CORE_ADDR addr = value_as_address (parse_and_eval (argv[0]));
1924 fid = create_new_frame (addr, false);
1926 FPTR (fid, false);
1929 /* The "frame function" family of commands. ARG is the name of a
1930 function within the stack, the first function (searching from frame
1931 0) with that name will be selected. */
1933 static void
1934 function (const char *arg, int from_tty)
1936 if (arg == NULL)
1937 error (_("Missing function name argument"));
1938 frame_info_ptr fid = find_frame_for_function (arg);
1939 if (fid == NULL)
1940 error (_("No frame for function \"%s\"."), arg);
1941 FPTR (fid, false);
1944 /* The "frame" base command, that is, when no sub-command is specified.
1945 If one argument is provided then we assume that this is a frame's
1946 level as historically, this was the supported command syntax that was
1947 used most often.
1949 If no argument is provided, then the current frame is selected. */
1951 static void
1952 base_command (const char *arg, int from_tty)
1954 if (arg == NULL)
1955 FPTR (get_selected_frame (_("No stack.")), true);
1956 else
1957 level (arg, from_tty);
1961 /* Instantiate three FRAME_COMMAND_HELPER instances to implement the
1962 sub-commands for 'info frame', 'frame', and 'select-frame' commands. */
1964 static frame_command_helper <info_frame_command_core> info_frame_cmd;
1965 static frame_command_helper <frame_command_core> frame_cmd;
1966 static frame_command_helper <select_frame_command_core> select_frame_cmd;
1968 /* Print briefly all stack frames or just the innermost COUNT_EXP
1969 frames. */
1971 static void
1972 backtrace_command_1 (const frame_print_options &fp_opts,
1973 const backtrace_cmd_options &bt_opts,
1974 const char *count_exp, int from_tty)
1977 frame_info_ptr fi;
1978 int count;
1979 int py_start = 0, py_end = 0;
1980 enum ext_lang_bt_status result = EXT_LANG_BT_ERROR;
1982 if (!target_has_stack ())
1983 error (_("No stack."));
1985 if (count_exp)
1987 count = parse_and_eval_long (count_exp);
1988 if (count < 0)
1989 py_start = count;
1990 else
1992 py_start = 0;
1993 /* The argument to apply_ext_lang_frame_filter is the number
1994 of the final frame to print, and frames start at 0. */
1995 py_end = count - 1;
1998 else
2000 py_end = -1;
2001 count = -1;
2004 frame_filter_flags flags = 0;
2006 if (bt_opts.full)
2007 flags |= PRINT_LOCALS;
2008 if (bt_opts.hide)
2009 flags |= PRINT_HIDE;
2010 if (fp_opts.print_raw_frame_arguments)
2011 flags |= PRINT_RAW_FRAME_ARGUMENTS;
2013 if (!bt_opts.no_filters)
2015 enum ext_lang_frame_args arg_type;
2017 flags |= PRINT_LEVEL | PRINT_FRAME_INFO | PRINT_ARGS;
2018 if (from_tty)
2019 flags |= PRINT_MORE_FRAMES;
2021 if (fp_opts.print_frame_arguments == print_frame_arguments_scalars)
2022 arg_type = CLI_SCALAR_VALUES;
2023 else if (fp_opts.print_frame_arguments == print_frame_arguments_all)
2024 arg_type = CLI_ALL_VALUES;
2025 else if (fp_opts.print_frame_arguments == print_frame_arguments_presence)
2026 arg_type = CLI_PRESENCE;
2027 else if (fp_opts.print_frame_arguments == print_frame_arguments_none)
2028 arg_type = NO_VALUES;
2029 else
2030 gdb_assert (0);
2032 result = apply_ext_lang_frame_filter (get_current_frame (), flags,
2033 arg_type, current_uiout,
2034 py_start, py_end);
2037 /* Run the inbuilt backtrace if there are no filters registered, or
2038 "-no-filters" has been specified from the command. */
2039 if (bt_opts.no_filters || result == EXT_LANG_BT_NO_FILTERS)
2041 frame_info_ptr trailing;
2043 /* The following code must do two things. First, it must set the
2044 variable TRAILING to the frame from which we should start
2045 printing. Second, it must set the variable count to the number
2046 of frames which we should print, or -1 if all of them. */
2048 if (count_exp != NULL && count < 0)
2050 trailing = trailing_outermost_frame (-count);
2051 count = -1;
2053 else
2054 trailing = get_current_frame ();
2056 for (fi = trailing; fi && count--; fi = get_prev_frame (fi))
2058 QUIT;
2060 /* Don't use print_stack_frame; if an error() occurs it probably
2061 means further attempts to backtrace would fail (on the other
2062 hand, perhaps the code does or could be fixed to make sure
2063 the frame->prev field gets set to NULL in that case). */
2065 print_frame_info (fp_opts, fi, 1, LOCATION, 1, 0);
2066 if ((flags & PRINT_LOCALS) != 0)
2067 print_frame_local_vars (fi, false, NULL, NULL, 1, gdb_stdout);
2069 /* Save the last frame to check for error conditions. */
2070 trailing = fi;
2073 /* If we've stopped before the end, mention that. */
2074 if (fi && from_tty)
2075 gdb_printf (_("(More stack frames follow...)\n"));
2077 /* If we've run out of frames, and the reason appears to be an error
2078 condition, print it. */
2079 if (fi == NULL && trailing != NULL)
2081 enum unwind_stop_reason reason;
2083 reason = get_frame_unwind_stop_reason (trailing);
2084 if (reason >= UNWIND_FIRST_ERROR)
2085 gdb_printf (_("Backtrace stopped: %s\n"),
2086 frame_stop_reason_string (trailing));
2091 /* Create an option_def_group array grouping all the "backtrace"
2092 options, with FP_OPTS, BT_CMD_OPT, SET_BT_OPTS as contexts. */
2094 static inline std::array<gdb::option::option_def_group, 3>
2095 make_backtrace_options_def_group (frame_print_options *fp_opts,
2096 backtrace_cmd_options *bt_cmd_opts,
2097 set_backtrace_options *set_bt_opts)
2099 return {{
2100 { {frame_print_option_defs}, fp_opts },
2101 { {set_backtrace_option_defs}, set_bt_opts },
2102 { {backtrace_command_option_defs}, bt_cmd_opts }
2106 /* Parse the backtrace command's qualifiers. Returns ARG advanced
2107 past the qualifiers, if any. BT_CMD_OPTS, if not null, is used to
2108 store the parsed qualifiers. */
2110 static const char *
2111 parse_backtrace_qualifiers (const char *arg,
2112 backtrace_cmd_options *bt_cmd_opts = nullptr)
2114 while (true)
2116 const char *save_arg = arg;
2117 std::string this_arg = extract_arg (&arg);
2119 if (this_arg.empty ())
2120 return arg;
2122 if (startswith ("no-filters", this_arg))
2124 if (bt_cmd_opts != nullptr)
2125 bt_cmd_opts->no_filters = true;
2127 else if (startswith ("full", this_arg))
2129 if (bt_cmd_opts != nullptr)
2130 bt_cmd_opts->full = true;
2132 else if (startswith ("hide", this_arg))
2134 if (bt_cmd_opts != nullptr)
2135 bt_cmd_opts->hide = true;
2137 else
2139 /* Not a recognized qualifier, so stop. */
2140 return save_arg;
2145 static void
2146 backtrace_command (const char *arg, int from_tty)
2148 frame_print_options fp_opts = user_frame_print_options;
2149 backtrace_cmd_options bt_cmd_opts;
2150 set_backtrace_options set_bt_opts = user_set_backtrace_options;
2152 auto grp
2153 = make_backtrace_options_def_group (&fp_opts, &bt_cmd_opts, &set_bt_opts);
2154 gdb::option::process_options
2155 (&arg, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
2157 /* Parse non-'-'-prefixed qualifiers, for backwards
2158 compatibility. */
2159 if (arg != NULL)
2161 arg = parse_backtrace_qualifiers (arg, &bt_cmd_opts);
2162 if (*arg == '\0')
2163 arg = NULL;
2166 /* These options are handled quite deep in the unwind machinery, so
2167 we get to pass them down by swapping globals. */
2168 scoped_restore restore_set_backtrace_options
2169 = make_scoped_restore (&user_set_backtrace_options, set_bt_opts);
2171 backtrace_command_1 (fp_opts, bt_cmd_opts, arg, from_tty);
2174 /* Completer for the "backtrace" command. */
2176 static void
2177 backtrace_command_completer (struct cmd_list_element *ignore,
2178 completion_tracker &tracker,
2179 const char *text, const char */*word*/)
2181 const auto group
2182 = make_backtrace_options_def_group (nullptr, nullptr, nullptr);
2183 if (gdb::option::complete_options
2184 (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
2185 return;
2187 if (*text != '\0')
2189 const char *p = skip_to_space (text);
2190 if (*p == '\0')
2192 static const char *const backtrace_cmd_qualifier_choices[] = {
2193 "full", "no-filters", "hide", nullptr,
2195 complete_on_enum (tracker, backtrace_cmd_qualifier_choices,
2196 text, text);
2198 if (tracker.have_completions ())
2199 return;
2201 else
2203 const char *cmd = parse_backtrace_qualifiers (text);
2204 tracker.advance_custom_word_point_by (cmd - text);
2205 text = cmd;
2209 const char *word = advance_to_expression_complete_word_point (tracker, text);
2210 expression_completer (ignore, tracker, text, word);
2213 /* Iterate over the local variables of a block B, calling CB. */
2215 static void
2216 iterate_over_block_locals (const struct block *b,
2217 iterate_over_block_arg_local_vars_cb cb)
2219 for (struct symbol *sym : block_iterator_range (b))
2221 switch (sym->aclass ())
2223 case LOC_CONST:
2224 case LOC_CONST_BYTES:
2225 case LOC_LOCAL:
2226 case LOC_REGISTER:
2227 case LOC_STATIC:
2228 case LOC_COMPUTED:
2229 case LOC_OPTIMIZED_OUT:
2230 if (sym->is_argument ())
2231 break;
2232 if (sym->domain () == COMMON_BLOCK_DOMAIN)
2233 break;
2234 cb (sym->print_name (), sym);
2235 break;
2237 default:
2238 /* Ignore symbols which are not locals. */
2239 break;
2244 /* Iterate over all the local variables in block B, including all its
2245 superblocks, stopping when the top-level block is reached. */
2247 void
2248 iterate_over_block_local_vars (const struct block *block,
2249 iterate_over_block_arg_local_vars_cb cb)
2251 while (block)
2253 iterate_over_block_locals (block, cb);
2254 /* After handling the function's top-level block, stop. Don't
2255 continue to its superblock, the block of per-file
2256 symbols. */
2257 if (block->function ())
2258 break;
2259 block = block->superblock ();
2263 /* Data to be passed around in the calls to the locals and args
2264 iterators. */
2266 struct print_variable_and_value_data
2268 std::optional<compiled_regex> preg;
2269 std::optional<compiled_regex> treg;
2270 struct frame_id frame_id;
2271 int num_tabs;
2272 struct ui_file *stream;
2273 int values_printed;
2275 void operator() (const char *print_name, struct symbol *sym);
2278 /* The callback for the locals and args iterators. */
2280 void
2281 print_variable_and_value_data::operator() (const char *print_name,
2282 struct symbol *sym)
2284 frame_info_ptr frame;
2286 if (preg.has_value ()
2287 && preg->exec (sym->natural_name (), 0, NULL, 0) != 0)
2288 return;
2289 if (treg.has_value ()
2290 && !treg_matches_sym_type_name (*treg, sym))
2291 return;
2292 if (language_def (sym->language ())->symbol_printing_suppressed (sym))
2293 return;
2295 frame = frame_find_by_id (frame_id);
2296 if (frame == NULL)
2298 warning (_("Unable to restore previously selected frame."));
2299 return;
2302 print_variable_and_value (print_name, sym, frame, stream, num_tabs);
2304 values_printed = 1;
2307 /* Prepares the regular expression REG from REGEXP.
2308 If REGEXP is NULL, it results in an empty regular expression. */
2310 static void
2311 prepare_reg (const char *regexp, std::optional<compiled_regex> *reg)
2313 if (regexp != NULL)
2315 int cflags = REG_NOSUB | (case_sensitivity == case_sensitive_off
2316 ? REG_ICASE : 0);
2317 reg->emplace (regexp, cflags, _("Invalid regexp"));
2319 else
2320 reg->reset ();
2323 /* Print all variables from the innermost up to the function block of FRAME.
2324 Print them with values to STREAM indented by NUM_TABS.
2325 If REGEXP is not NULL, only print local variables whose name
2326 matches REGEXP.
2327 If T_REGEXP is not NULL, only print local variables whose type
2328 matches T_REGEXP.
2329 If no local variables have been printed and !QUIET, prints a message
2330 explaining why no local variables could be printed. */
2332 static void
2333 print_frame_local_vars (const frame_info_ptr &frame,
2334 bool quiet,
2335 const char *regexp, const char *t_regexp,
2336 int num_tabs, struct ui_file *stream)
2338 struct print_variable_and_value_data cb_data;
2339 const struct block *block;
2340 CORE_ADDR pc;
2342 if (!get_frame_pc_if_available (frame, &pc))
2344 if (!quiet)
2345 gdb_printf (stream,
2346 _("PC unavailable, cannot determine locals.\n"));
2347 return;
2350 block = get_frame_block (frame, 0);
2351 if (block == 0)
2353 if (!quiet)
2354 gdb_printf (stream, "No symbol table info available.\n");
2355 return;
2358 prepare_reg (regexp, &cb_data.preg);
2359 prepare_reg (t_regexp, &cb_data.treg);
2360 cb_data.frame_id = get_frame_id (frame);
2361 cb_data.num_tabs = 4 * num_tabs;
2362 cb_data.stream = stream;
2363 cb_data.values_printed = 0;
2365 /* Temporarily change the selected frame to the given FRAME.
2366 This allows routines that rely on the selected frame instead
2367 of being given a frame as parameter to use the correct frame. */
2368 scoped_restore_selected_frame restore_selected_frame;
2369 select_frame (frame);
2371 iterate_over_block_local_vars (block, cb_data);
2373 if (!cb_data.values_printed && !quiet)
2375 if (regexp == NULL && t_regexp == NULL)
2376 gdb_printf (stream, _("No locals.\n"));
2377 else
2378 gdb_printf (stream, _("No matching locals.\n"));
2382 /* Structure to hold the values of the options used by the 'info
2383 variables' command and other similar commands. These correspond to the
2384 -q and -t options. */
2386 struct info_print_options
2388 bool quiet = false;
2389 std::string type_regexp;
2392 /* The options used by the 'info locals' and 'info args' commands. */
2394 static const gdb::option::option_def info_print_options_defs[] = {
2395 gdb::option::boolean_option_def<info_print_options> {
2396 "q",
2397 [] (info_print_options *opt) { return &opt->quiet; },
2398 nullptr, /* show_cmd_cb */
2399 nullptr /* set_doc */
2402 gdb::option::string_option_def<info_print_options> {
2403 "t",
2404 [] (info_print_options *opt) { return &opt->type_regexp; },
2405 nullptr, /* show_cmd_cb */
2406 nullptr /* set_doc */
2410 /* Returns the option group used by 'info locals' and 'info args'
2411 commands. */
2413 static gdb::option::option_def_group
2414 make_info_print_options_def_group (info_print_options *opts)
2416 return {{info_print_options_defs}, opts};
2419 /* Command completer for 'info locals' and 'info args'. */
2421 static void
2422 info_print_command_completer (struct cmd_list_element *ignore,
2423 completion_tracker &tracker,
2424 const char *text, const char * /* word */)
2426 const auto group
2427 = make_info_print_options_def_group (nullptr);
2428 if (gdb::option::complete_options
2429 (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
2430 return;
2432 const char *word = advance_to_expression_complete_word_point (tracker, text);
2433 symbol_completer (ignore, tracker, text, word);
2436 /* Implement the 'info locals' command. */
2438 void
2439 info_locals_command (const char *args, int from_tty)
2441 info_print_options opts;
2442 auto grp = make_info_print_options_def_group (&opts);
2443 gdb::option::process_options
2444 (&args, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
2445 if (args != nullptr && *args == '\0')
2446 args = nullptr;
2448 print_frame_local_vars
2449 (get_selected_frame (_("No frame selected.")),
2450 opts.quiet, args,
2451 opts.type_regexp.empty () ? nullptr : opts.type_regexp.c_str (),
2452 0, gdb_stdout);
2455 /* Iterate over all the argument variables in block B. */
2457 void
2458 iterate_over_block_arg_vars (const struct block *b,
2459 iterate_over_block_arg_local_vars_cb cb)
2461 for (struct symbol *sym : block_iterator_range (b))
2463 /* Don't worry about things which aren't arguments. */
2464 if (sym->is_argument ())
2466 /* We have to look up the symbol because arguments can have
2467 two entries (one a parameter, one a local) and the one we
2468 want is the local, which lookup_symbol will find for us.
2469 This includes gcc1 (not gcc2) on the sparc when passing a
2470 small structure and gcc2 when the argument type is float
2471 and it is passed as a double and converted to float by
2472 the prologue (in the latter case the type of the LOC_ARG
2473 symbol is double and the type of the LOC_LOCAL symbol is
2474 float). There are also LOC_ARG/LOC_REGISTER pairs which
2475 are not combined in symbol-reading. */
2477 struct symbol *sym2
2478 = lookup_symbol_search_name (sym->search_name (),
2479 b, SEARCH_VAR_DOMAIN).symbol;
2480 cb (sym->print_name (), sym2);
2485 /* Print all argument variables of the function of FRAME.
2486 Print them with values to STREAM.
2487 If REGEXP is not NULL, only print argument variables whose name
2488 matches REGEXP.
2489 If T_REGEXP is not NULL, only print argument variables whose type
2490 matches T_REGEXP.
2491 If no argument variables have been printed and !QUIET, prints a message
2492 explaining why no argument variables could be printed. */
2494 static void
2495 print_frame_arg_vars (const frame_info_ptr &frame,
2496 bool quiet,
2497 const char *regexp, const char *t_regexp,
2498 struct ui_file *stream)
2500 struct print_variable_and_value_data cb_data;
2501 struct symbol *func;
2502 CORE_ADDR pc;
2503 std::optional<compiled_regex> preg;
2504 std::optional<compiled_regex> treg;
2506 if (!get_frame_pc_if_available (frame, &pc))
2508 if (!quiet)
2509 gdb_printf (stream,
2510 _("PC unavailable, cannot determine args.\n"));
2511 return;
2514 func = get_frame_function (frame);
2515 if (func == NULL)
2517 if (!quiet)
2518 gdb_printf (stream, _("No symbol table info available.\n"));
2519 return;
2522 prepare_reg (regexp, &cb_data.preg);
2523 prepare_reg (t_regexp, &cb_data.treg);
2524 cb_data.frame_id = get_frame_id (frame);
2525 cb_data.num_tabs = 0;
2526 cb_data.stream = stream;
2527 cb_data.values_printed = 0;
2529 iterate_over_block_arg_vars (func->value_block (), cb_data);
2531 if (!cb_data.values_printed && !quiet)
2533 if (regexp == NULL && t_regexp == NULL)
2534 gdb_printf (stream, _("No arguments.\n"));
2535 else
2536 gdb_printf (stream, _("No matching arguments.\n"));
2540 /* Implement the 'info args' command. */
2542 void
2543 info_args_command (const char *args, int from_tty)
2545 info_print_options opts;
2546 auto grp = make_info_print_options_def_group (&opts);
2547 gdb::option::process_options
2548 (&args, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
2549 if (args != nullptr && *args == '\0')
2550 args = nullptr;
2552 print_frame_arg_vars
2553 (get_selected_frame (_("No frame selected.")),
2554 opts.quiet, args,
2555 opts.type_regexp.empty () ? nullptr : opts.type_regexp.c_str (),
2556 gdb_stdout);
2559 /* Return the symbol-block in which the selected frame is executing.
2560 Can return zero under various legitimate circumstances.
2562 If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
2563 code address within the block returned. We use this to decide
2564 which macros are in scope. */
2566 const struct block *
2567 get_selected_block (CORE_ADDR *addr_in_block)
2569 if (!has_stack_frames ())
2570 return 0;
2572 return get_frame_block (get_selected_frame (NULL), addr_in_block);
2575 /* Find a frame a certain number of levels away from FRAME.
2576 LEVEL_OFFSET_PTR points to an int containing the number of levels.
2577 Positive means go to earlier frames (up); negative, the reverse.
2578 The int that contains the number of levels is counted toward
2579 zero as the frames for those levels are found.
2580 If the top or bottom frame is reached, that frame is returned,
2581 but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
2582 how much farther the original request asked to go. */
2584 frame_info_ptr
2585 find_relative_frame (frame_info_ptr frame, int *level_offset_ptr)
2587 /* Going up is simple: just call get_prev_frame enough times or
2588 until the initial frame is reached. */
2589 while (*level_offset_ptr > 0)
2591 frame_info_ptr prev = get_prev_frame (frame);
2593 if (!prev)
2594 break;
2595 (*level_offset_ptr)--;
2596 frame = prev;
2599 /* Going down is just as simple. */
2600 while (*level_offset_ptr < 0)
2602 frame_info_ptr next = get_next_frame (frame);
2604 if (!next)
2605 break;
2606 (*level_offset_ptr)++;
2607 frame = next;
2610 return frame;
2613 /* Select the frame up one or COUNT_EXP stack levels from the
2614 previously selected frame, and print it briefly. */
2616 static void
2617 up_silently_base (const char *count_exp)
2619 frame_info_ptr frame;
2620 int count = 1;
2622 if (count_exp)
2623 count = parse_and_eval_long (count_exp);
2625 frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2626 if (count != 0 && count_exp == NULL)
2627 error (_("Initial frame selected; you cannot go up."));
2628 select_frame (frame);
2631 static void
2632 up_silently_command (const char *count_exp, int from_tty)
2634 up_silently_base (count_exp);
2637 static void
2638 up_command (const char *count_exp, int from_tty)
2640 up_silently_base (count_exp);
2641 notify_user_selected_context_changed (USER_SELECTED_FRAME);
2644 /* Select the frame down one or COUNT_EXP stack levels from the previously
2645 selected frame, and print it briefly. */
2647 static void
2648 down_silently_base (const char *count_exp)
2650 frame_info_ptr frame;
2651 int count = -1;
2653 if (count_exp)
2654 count = -parse_and_eval_long (count_exp);
2656 frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2657 if (count != 0 && count_exp == NULL)
2659 /* We only do this if COUNT_EXP is not specified. That way
2660 "down" means to really go down (and let me know if that is
2661 impossible), but "down 9999" can be used to mean go all the
2662 way down without getting an error. */
2664 error (_("Bottom (innermost) frame selected; you cannot go down."));
2667 select_frame (frame);
2670 static void
2671 down_silently_command (const char *count_exp, int from_tty)
2673 down_silently_base (count_exp);
2676 static void
2677 down_command (const char *count_exp, int from_tty)
2679 down_silently_base (count_exp);
2680 notify_user_selected_context_changed (USER_SELECTED_FRAME);
2683 void
2684 return_command (const char *retval_exp, int from_tty)
2686 /* Initialize it just to avoid a GCC false warning. */
2687 enum return_value_convention rv_conv = RETURN_VALUE_STRUCT_CONVENTION;
2688 frame_info_ptr thisframe;
2689 struct gdbarch *gdbarch;
2690 struct symbol *thisfun;
2691 struct value *return_value = NULL;
2692 struct value *function = NULL;
2693 std::string query_prefix;
2695 thisframe = get_selected_frame ("No selected frame.");
2696 thisfun = get_frame_function (thisframe);
2697 gdbarch = get_frame_arch (thisframe);
2699 if (get_frame_type (get_current_frame ()) == INLINE_FRAME)
2700 error (_("Can not force return from an inlined function."));
2702 /* Compute the return value. If the computation triggers an error,
2703 let it bail. If the return type can't be handled, set
2704 RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
2705 message. */
2706 if (retval_exp)
2708 expression_up retval_expr = parse_expression (retval_exp);
2709 struct type *return_type = NULL;
2711 /* Compute the return value. Should the computation fail, this
2712 call throws an error. */
2713 return_value = retval_expr->evaluate ();
2715 /* Cast return value to the return type of the function. Should
2716 the cast fail, this call throws an error. */
2717 if (thisfun != NULL)
2718 return_type = thisfun->type ()->target_type ();
2719 if (return_type == NULL)
2721 if (retval_expr->first_opcode () != UNOP_CAST
2722 && retval_expr->first_opcode () != UNOP_CAST_TYPE)
2723 error (_("Return value type not available for selected "
2724 "stack frame.\n"
2725 "Please use an explicit cast of the value to return."));
2726 return_type = return_value->type ();
2728 return_type = check_typedef (return_type);
2729 return_value = value_cast (return_type, return_value);
2731 /* Make sure the value is fully evaluated. It may live in the
2732 stack frame we're about to pop. */
2733 if (return_value->lazy ())
2734 return_value->fetch_lazy ();
2736 if (thisfun != NULL)
2737 function = read_var_value (thisfun, NULL, thisframe);
2739 rv_conv = RETURN_VALUE_REGISTER_CONVENTION;
2740 if (return_type->code () == TYPE_CODE_VOID)
2741 /* If the return-type is "void", don't try to find the
2742 return-value's location. However, do still evaluate the
2743 return expression so that, even when the expression result
2744 is discarded, side effects such as "return i++" still
2745 occur. */
2746 return_value = NULL;
2747 else if (thisfun != NULL)
2749 if (is_nocall_function (check_typedef (function->type ())))
2751 query_prefix =
2752 string_printf ("Function '%s' does not follow the target "
2753 "calling convention.\n"
2754 "If you continue, setting the return value "
2755 "will probably lead to unpredictable "
2756 "behaviors.\n",
2757 thisfun->print_name ());
2760 rv_conv = struct_return_convention (gdbarch, function, return_type);
2761 if (rv_conv == RETURN_VALUE_STRUCT_CONVENTION
2762 || rv_conv == RETURN_VALUE_ABI_RETURNS_ADDRESS)
2764 query_prefix = "The location at which to store the "
2765 "function's return value is unknown.\n"
2766 "If you continue, the return value "
2767 "that you specified will be ignored.\n";
2768 return_value = NULL;
2773 /* Does an interactive user really want to do this? Include
2774 information, such as how well GDB can handle the return value, in
2775 the query message. */
2776 if (from_tty)
2778 int confirmed;
2780 if (get_frame_type (thisframe) == SIGTRAMP_FRAME)
2782 warning (_("Returning from signal trampoline does not fully restore"
2783 " pre-signal state, such as process signal mask."));
2784 confirmed = query (_("%sMake signal trampoline return now? "),
2785 query_prefix.c_str ());
2787 else if (thisfun == NULL)
2788 confirmed = query (_("%sMake selected stack frame return now? "),
2789 query_prefix.c_str ());
2790 else
2792 if (TYPE_NO_RETURN (thisfun->type ()))
2793 warning (_("Function does not return normally to caller."));
2794 confirmed = query (_("%sMake %s return now? "),
2795 query_prefix.c_str (),
2796 thisfun->print_name ());
2798 if (!confirmed)
2799 error (_("Not confirmed"));
2802 /* Discard the selected frame and all frames inner-to it. */
2803 frame_pop (get_selected_frame (NULL));
2805 /* Store RETURN_VALUE in the just-returned register set. */
2806 if (return_value != NULL)
2808 struct type *return_type = return_value->type ();
2809 regcache *regcache = get_thread_regcache (inferior_thread ());
2810 struct gdbarch *cache_arch = regcache->arch ();
2812 gdb_assert (rv_conv != RETURN_VALUE_STRUCT_CONVENTION
2813 && rv_conv != RETURN_VALUE_ABI_RETURNS_ADDRESS);
2814 gdbarch_return_value_as_value
2815 (cache_arch, function, return_type, regcache, NULL /*read*/,
2816 return_value->contents ().data () /*write*/);
2819 /* If we are at the end of a call dummy now, pop the dummy frame
2820 too. */
2821 if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
2822 frame_pop (get_current_frame ());
2824 select_frame (get_current_frame ());
2825 /* If interactive, print the frame that is now current. */
2826 if (from_tty)
2827 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2830 /* Find the most inner frame in the current stack for a function called
2831 FUNCTION_NAME. If no matching frame is found return NULL. */
2833 static frame_info_ptr
2834 find_frame_for_function (const char *function_name)
2836 /* Used to hold the lower and upper addresses for each of the
2837 SYMTAB_AND_LINEs found for functions matching FUNCTION_NAME. */
2838 struct function_bounds
2840 CORE_ADDR low, high;
2842 frame_info_ptr frame;
2843 bool found = false;
2844 int level = 1;
2846 gdb_assert (function_name != NULL);
2848 frame = get_current_frame ();
2849 std::vector<symtab_and_line> sals
2850 = decode_line_with_current_source (function_name,
2851 DECODE_LINE_FUNFIRSTLINE);
2852 gdb::def_vector<function_bounds> func_bounds (sals.size ());
2853 for (size_t i = 0; i < sals.size (); i++)
2855 if (sals[i].pspace != current_program_space)
2856 func_bounds[i].low = func_bounds[i].high = 0;
2857 else if (sals[i].pc == 0
2858 || find_pc_partial_function (sals[i].pc, NULL,
2859 &func_bounds[i].low,
2860 &func_bounds[i].high) == 0)
2861 func_bounds[i].low = func_bounds[i].high = 0;
2866 for (size_t i = 0; (i < sals.size () && !found); i++)
2867 found = (get_frame_pc (frame) >= func_bounds[i].low
2868 && get_frame_pc (frame) < func_bounds[i].high);
2869 if (!found)
2871 level = 1;
2872 frame = find_relative_frame (frame, &level);
2875 while (!found && level == 0);
2877 if (!found)
2878 frame = NULL;
2880 return frame;
2883 /* The qcs command line flags for the "frame apply" commands. Keep
2884 this in sync with the "thread apply" commands. */
2886 using qcs_flag_option_def
2887 = gdb::option::flag_option_def<qcs_flags>;
2889 static const gdb::option::option_def fr_qcs_flags_option_defs[] = {
2890 qcs_flag_option_def {
2891 "q", [] (qcs_flags *opt) { return &opt->quiet; },
2892 N_("Disables printing the frame location information."),
2895 qcs_flag_option_def {
2896 "c", [] (qcs_flags *opt) { return &opt->cont; },
2897 N_("Print any error raised by COMMAND and continue."),
2900 qcs_flag_option_def {
2901 "s", [] (qcs_flags *opt) { return &opt->silent; },
2902 N_("Silently ignore any errors or empty output produced by COMMAND."),
2906 /* Create an option_def_group array for all the "frame apply" options,
2907 with FLAGS and SET_BT_OPTS as context. */
2909 static inline std::array<gdb::option::option_def_group, 2>
2910 make_frame_apply_options_def_group (qcs_flags *flags,
2911 set_backtrace_options *set_bt_opts)
2913 return {{
2914 { {fr_qcs_flags_option_defs}, flags },
2915 { {set_backtrace_option_defs}, set_bt_opts },
2919 /* Apply a GDB command to all stack frames, or a set of identified frames,
2920 or innermost COUNT frames.
2921 With a negative COUNT, apply command on outermost -COUNT frames.
2923 frame apply 3 info frame Apply 'info frame' to frames 0, 1, 2
2924 frame apply -3 info frame Apply 'info frame' to outermost 3 frames.
2925 frame apply all x/i $pc Apply 'x/i $pc' cmd to all frames.
2926 frame apply all -s p local_var_no_idea_in_which_frame
2927 If a frame has a local variable called
2928 local_var_no_idea_in_which_frame, print frame
2929 and value of local_var_no_idea_in_which_frame.
2930 frame apply all -s -q p local_var_no_idea_in_which_frame
2931 Same as before, but only print the variable value.
2932 frame apply level 2-5 0 4-7 -s p i = i + 1
2933 Adds 1 to the variable i in the specified frames.
2934 Note that i will be incremented twice in
2935 frames 4 and 5. */
2937 /* Apply a GDB command to COUNT stack frames, starting at TRAILING.
2938 CMD starts with 0 or more qcs flags followed by the GDB command to apply.
2939 COUNT -1 means all frames starting at TRAILING. WHICH_COMMAND is used
2940 for error messages. */
2942 static void
2943 frame_apply_command_count (const char *which_command,
2944 const char *cmd, int from_tty,
2945 frame_info_ptr trailing, int count)
2947 qcs_flags flags;
2948 set_backtrace_options set_bt_opts = user_set_backtrace_options;
2950 auto group = make_frame_apply_options_def_group (&flags, &set_bt_opts);
2951 gdb::option::process_options
2952 (&cmd, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group);
2954 validate_flags_qcs (which_command, &flags);
2956 if (cmd == NULL || *cmd == '\0')
2957 error (_("Please specify a command to apply on the selected frames"));
2959 /* The below will restore the current inferior/thread/frame.
2960 Usually, only the frame is effectively to be restored.
2961 But in case CMD switches of inferior/thread, better restore
2962 these also. */
2963 scoped_restore_current_thread restore_thread;
2965 /* These options are handled quite deep in the unwind machinery, so
2966 we get to pass them down by swapping globals. */
2967 scoped_restore restore_set_backtrace_options
2968 = make_scoped_restore (&user_set_backtrace_options, set_bt_opts);
2970 for (frame_info_ptr fi = trailing; fi && count--; fi = get_prev_frame (fi))
2972 QUIT;
2974 select_frame (fi);
2977 std::string cmd_result;
2979 /* In case CMD switches of inferior/thread/frame, the below
2980 restores the inferior/thread/frame. FI can then be
2981 set to the selected frame. */
2982 scoped_restore_current_thread restore_fi_current_frame;
2984 execute_command_to_string
2985 (cmd_result, cmd, from_tty, gdb_stdout->term_out ());
2987 fi = get_selected_frame (_("frame apply "
2988 "unable to get selected frame."));
2989 if (!flags.silent || cmd_result.length () > 0)
2991 if (!flags.quiet)
2992 print_stack_frame (fi, 1, LOCATION, 0);
2993 gdb_printf ("%s", cmd_result.c_str ());
2996 catch (const gdb_exception_error &ex)
2998 fi = get_selected_frame (_("frame apply "
2999 "unable to get selected frame."));
3000 if (!flags.silent)
3002 if (!flags.quiet)
3003 print_stack_frame (fi, 1, LOCATION, 0);
3004 if (flags.cont)
3005 gdb_printf ("%s\n", ex.what ());
3006 else
3007 throw;
3013 /* Completer for the "frame apply ..." commands. */
3015 static void
3016 frame_apply_completer (completion_tracker &tracker, const char *text)
3018 const auto group = make_frame_apply_options_def_group (nullptr, nullptr);
3019 if (gdb::option::complete_options
3020 (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
3021 return;
3023 complete_nested_command_line (tracker, text);
3026 /* Completer for the "frame apply" commands. */
3028 static void
3029 frame_apply_level_cmd_completer (struct cmd_list_element *ignore,
3030 completion_tracker &tracker,
3031 const char *text, const char */*word*/)
3033 /* Do this explicitly because there's an early return below. */
3034 tracker.set_use_custom_word_point (true);
3036 number_or_range_parser levels (text);
3038 /* Skip the LEVEL list to find the options and command args. */
3041 while (!levels.finished ())
3043 /* Call for effect. */
3044 levels.get_number ();
3046 if (levels.in_range ())
3047 levels.skip_range ();
3050 catch (const gdb_exception_error &ex)
3052 /* get_number throws if it parses a negative number, for
3053 example. But a seemingly negative number may be the start of
3054 an option instead. */
3057 const char *cmd = levels.cur_tok ();
3059 if (cmd == text)
3061 /* No level list yet. */
3062 return;
3065 /* Check if we're past a valid LEVEL already. */
3066 if (levels.finished ()
3067 && cmd > text && !isspace (cmd[-1]))
3068 return;
3070 /* We're past LEVELs, advance word point. */
3071 tracker.advance_custom_word_point_by (cmd - text);
3072 text = cmd;
3074 frame_apply_completer (tracker, text);
3077 /* Completer for the "frame apply all" command. */
3079 void
3080 frame_apply_all_cmd_completer (struct cmd_list_element *ignore,
3081 completion_tracker &tracker,
3082 const char *text, const char */*word*/)
3084 frame_apply_completer (tracker, text);
3087 /* Completer for the "frame apply COUNT" command. */
3089 static void
3090 frame_apply_cmd_completer (struct cmd_list_element *ignore,
3091 completion_tracker &tracker,
3092 const char *text, const char */*word*/)
3094 const char *cmd = text;
3096 int count = get_number_trailer (&cmd, 0);
3097 if (count == 0)
3098 return;
3100 /* Check if we're past a valid COUNT already. */
3101 if (cmd > text && !isspace (cmd[-1]))
3102 return;
3104 /* We're past COUNT, advance word point. */
3105 tracker.advance_custom_word_point_by (cmd - text);
3106 text = cmd;
3108 frame_apply_completer (tracker, text);
3111 /* Implementation of the "frame apply level" command. */
3113 static void
3114 frame_apply_level_command (const char *cmd, int from_tty)
3116 if (!target_has_stack ())
3117 error (_("No stack."));
3119 bool level_found = false;
3120 const char *levels_str = cmd;
3121 number_or_range_parser levels (levels_str);
3123 /* Skip the LEVEL list to find the flags and command args. */
3124 while (!levels.finished ())
3126 /* Call for effect. */
3127 levels.get_number ();
3129 level_found = true;
3130 if (levels.in_range ())
3131 levels.skip_range ();
3134 if (!level_found)
3135 error (_("Missing or invalid LEVEL... argument"));
3137 cmd = levels.cur_tok ();
3139 /* Redo the LEVELS parsing, but applying COMMAND. */
3140 levels.init (levels_str);
3141 while (!levels.finished ())
3143 const int level_beg = levels.get_number ();
3144 int n_frames;
3146 if (levels.in_range ())
3148 n_frames = levels.end_value () - level_beg + 1;
3149 levels.skip_range ();
3151 else
3152 n_frames = 1;
3154 frame_apply_command_count ("frame apply level", cmd, from_tty,
3155 leading_innermost_frame (level_beg), n_frames);
3159 /* Implementation of the "frame apply all" command. */
3161 static void
3162 frame_apply_all_command (const char *cmd, int from_tty)
3164 if (!target_has_stack ())
3165 error (_("No stack."));
3167 frame_apply_command_count ("frame apply all", cmd, from_tty,
3168 get_current_frame (), INT_MAX);
3171 /* Implementation of the "frame apply" command. */
3173 static void
3174 frame_apply_command (const char* cmd, int from_tty)
3176 int count;
3177 frame_info_ptr trailing;
3179 if (!target_has_stack ())
3180 error (_("No stack."));
3182 if (cmd == NULL)
3183 error (_("Missing COUNT argument."));
3184 count = get_number_trailer (&cmd, 0);
3185 if (count == 0)
3186 error (_("Invalid COUNT argument."));
3188 if (count < 0)
3190 trailing = trailing_outermost_frame (-count);
3191 count = -1;
3193 else
3194 trailing = get_current_frame ();
3196 frame_apply_command_count ("frame apply", cmd, from_tty,
3197 trailing, count);
3200 /* Implementation of the "faas" command. */
3202 static void
3203 faas_command (const char *cmd, int from_tty)
3205 if (cmd == NULL || *cmd == '\0')
3206 error (_("Please specify a command to apply on all frames"));
3207 std::string expanded = std::string ("frame apply all -s ") + cmd;
3208 execute_command (expanded.c_str (), from_tty);
3212 /* Find inner-mode frame with frame address ADDRESS. Return NULL if no
3213 matching frame can be found. */
3215 static frame_info_ptr
3216 find_frame_for_address (CORE_ADDR address)
3218 struct frame_id id;
3219 frame_info_ptr fid;
3221 id = frame_id_build_wild (address);
3223 /* If (s)he specifies the frame with an address, he deserves
3224 what (s)he gets. Still, give the highest one that matches.
3225 (NOTE: cagney/2004-10-29: Why highest, or outer-most, I don't
3226 know). */
3227 for (fid = get_current_frame ();
3228 fid != NULL;
3229 fid = get_prev_frame (fid))
3231 if (id == get_frame_id (fid))
3233 frame_info_ptr prev_frame;
3235 while (1)
3237 prev_frame = get_prev_frame (fid);
3238 if (!prev_frame
3239 || id != get_frame_id (prev_frame))
3240 break;
3241 fid = prev_frame;
3243 return fid;
3246 return NULL;
3251 /* Commands with a prefix of `frame apply'. */
3252 static struct cmd_list_element *frame_apply_cmd_list = NULL;
3254 /* Commands with a prefix of `frame'. */
3255 static struct cmd_list_element *frame_cmd_list = NULL;
3257 /* Commands with a prefix of `select frame'. */
3258 static struct cmd_list_element *select_frame_cmd_list = NULL;
3260 /* Commands with a prefix of `info frame'. */
3261 static struct cmd_list_element *info_frame_cmd_list = NULL;
3263 void _initialize_stack ();
3264 void
3265 _initialize_stack ()
3267 struct cmd_list_element *cmd;
3269 add_com ("return", class_stack, return_command, _("\
3270 Make selected stack frame return to its caller.\n\
3271 Control remains in the debugger, but when you continue\n\
3272 execution will resume in the frame above the one now selected.\n\
3273 If an argument is given, it is an expression for the value to return."));
3275 add_com ("up", class_stack, up_command, _("\
3276 Select and print stack frame that called this one.\n\
3277 An argument says how many frames up to go."));
3278 add_com ("up-silently", class_support, up_silently_command, _("\
3279 Same as the `up' command, but does not print anything.\n\
3280 This is useful in command scripts."));
3282 cmd_list_element *down_cmd
3283 = add_com ("down", class_stack, down_command, _("\
3284 Select and print stack frame called by this one.\n\
3285 An argument says how many frames down to go."));
3286 add_com_alias ("do", down_cmd, class_stack, 1);
3287 add_com_alias ("dow", down_cmd, class_stack, 1);
3288 add_com ("down-silently", class_support, down_silently_command, _("\
3289 Same as the `down' command, but does not print anything.\n\
3290 This is useful in command scripts."));
3292 cmd_list_element *frame_cmd_el
3293 = add_prefix_cmd ("frame", class_stack,
3294 &frame_cmd.base_command, _("\
3295 Select and print a stack frame.\n\
3296 With no argument, print the selected stack frame. (See also \"info frame\").\n\
3297 A single numerical argument specifies the frame to select."),
3298 &frame_cmd_list, 1, &cmdlist);
3299 add_com_alias ("f", frame_cmd_el, class_stack, 1);
3301 #define FRAME_APPLY_OPTION_HELP "\
3302 Prints the frame location information followed by COMMAND output.\n\
3304 By default, an error raised during the execution of COMMAND\n\
3305 aborts \"frame apply\".\n\
3307 Options:\n\
3308 %OPTIONS%"
3310 const auto frame_apply_opts
3311 = make_frame_apply_options_def_group (nullptr, nullptr);
3313 static std::string frame_apply_cmd_help = gdb::option::build_help (_("\
3314 Apply a command to a number of frames.\n\
3315 Usage: frame apply COUNT [OPTION]... COMMAND\n\
3316 With a negative COUNT argument, applies the command on outermost -COUNT frames.\n"
3317 FRAME_APPLY_OPTION_HELP),
3318 frame_apply_opts);
3320 cmd = add_prefix_cmd ("apply", class_stack, frame_apply_command,
3321 frame_apply_cmd_help.c_str (),
3322 &frame_apply_cmd_list, 1,
3323 &frame_cmd_list);
3324 set_cmd_completer_handle_brkchars (cmd, frame_apply_cmd_completer);
3326 static std::string frame_apply_all_cmd_help = gdb::option::build_help (_("\
3327 Apply a command to all frames.\n\
3329 Usage: frame apply all [OPTION]... COMMAND\n"
3330 FRAME_APPLY_OPTION_HELP),
3331 frame_apply_opts);
3333 cmd = add_cmd ("all", class_stack, frame_apply_all_command,
3334 frame_apply_all_cmd_help.c_str (),
3335 &frame_apply_cmd_list);
3336 set_cmd_completer_handle_brkchars (cmd, frame_apply_all_cmd_completer);
3338 static std::string frame_apply_level_cmd_help = gdb::option::build_help (_("\
3339 Apply a command to a list of frames.\n\
3341 Usage: frame apply level LEVEL... [OPTION]... COMMAND\n\
3342 LEVEL is a space-separated list of levels of frames to apply COMMAND on.\n"
3343 FRAME_APPLY_OPTION_HELP),
3344 frame_apply_opts);
3346 cmd = add_cmd ("level", class_stack, frame_apply_level_command,
3347 frame_apply_level_cmd_help.c_str (),
3348 &frame_apply_cmd_list);
3349 set_cmd_completer_handle_brkchars (cmd, frame_apply_level_cmd_completer);
3351 cmd = add_com ("faas", class_stack, faas_command, _("\
3352 Apply a command to all frames (ignoring errors and empty output).\n\
3353 Usage: faas [OPTION]... COMMAND\n\
3354 shortcut for 'frame apply all -s [OPTION]... COMMAND'\n\
3355 See \"help frame apply all\" for available options."));
3356 set_cmd_completer_handle_brkchars (cmd, frame_apply_all_cmd_completer);
3358 add_cmd ("address", class_stack, &frame_cmd.address,
3359 _("\
3360 Select and print a stack frame by stack address.\n\
3362 Usage: frame address STACK-ADDRESS"),
3363 &frame_cmd_list);
3365 add_cmd ("view", class_stack, &frame_cmd.view,
3366 _("\
3367 View a stack frame that might be outside the current backtrace.\n\
3369 Usage: frame view STACK-ADDRESS\n\
3370 frame view STACK-ADDRESS PC-ADDRESS"),
3371 &frame_cmd_list);
3373 cmd = add_cmd ("function", class_stack, &frame_cmd.function,
3374 _("\
3375 Select and print a stack frame by function name.\n\
3377 Usage: frame function NAME\n\
3379 The innermost frame that visited function NAME is selected."),
3380 &frame_cmd_list);
3381 set_cmd_completer (cmd, frame_selection_by_function_completer);
3384 add_cmd ("level", class_stack, &frame_cmd.level,
3385 _("\
3386 Select and print a stack frame by level.\n\
3388 Usage: frame level LEVEL"),
3389 &frame_cmd_list);
3391 cmd = add_prefix_cmd_suppress_notification ("select-frame", class_stack,
3392 &select_frame_cmd.base_command, _("\
3393 Select a stack frame without printing anything.\n\
3394 A single numerical argument specifies the frame to select."),
3395 &select_frame_cmd_list, 1, &cmdlist,
3396 &cli_suppress_notification.user_selected_context);
3398 add_cmd_suppress_notification ("address", class_stack,
3399 &select_frame_cmd.address, _("\
3400 Select a stack frame by stack address.\n\
3402 Usage: select-frame address STACK-ADDRESS"),
3403 &select_frame_cmd_list,
3404 &cli_suppress_notification.user_selected_context);
3407 add_cmd_suppress_notification ("view", class_stack,
3408 &select_frame_cmd.view, _("\
3409 Select a stack frame that might be outside the current backtrace.\n\
3411 Usage: select-frame view STACK-ADDRESS\n\
3412 select-frame view STACK-ADDRESS PC-ADDRESS"),
3413 &select_frame_cmd_list,
3414 &cli_suppress_notification.user_selected_context);
3416 cmd = add_cmd_suppress_notification ("function", class_stack,
3417 &select_frame_cmd.function, _("\
3418 Select a stack frame by function name.\n\
3420 Usage: select-frame function NAME"),
3421 &select_frame_cmd_list,
3422 &cli_suppress_notification.user_selected_context);
3423 set_cmd_completer (cmd, frame_selection_by_function_completer);
3425 add_cmd_suppress_notification ("level", class_stack,
3426 &select_frame_cmd.level, _("\
3427 Select a stack frame by level.\n\
3429 Usage: select-frame level LEVEL"),
3430 &select_frame_cmd_list,
3431 &cli_suppress_notification.user_selected_context);
3433 const auto backtrace_opts
3434 = make_backtrace_options_def_group (nullptr, nullptr, nullptr);
3436 static std::string backtrace_help
3437 = gdb::option::build_help (_("\
3438 Print backtrace of all stack frames, or innermost COUNT frames.\n\
3439 Usage: backtrace [OPTION]... [QUALIFIER]... [COUNT | -COUNT]\n\
3441 Options:\n\
3442 %OPTIONS%\n\
3444 For backward compatibility, the following qualifiers are supported:\n\
3446 full - same as -full option.\n\
3447 no-filters - same as -no-filters option.\n\
3448 hide - same as -hide.\n\
3450 With a negative COUNT, print outermost -COUNT frames."),
3451 backtrace_opts);
3453 cmd_list_element *backtrace_cmd
3454 = add_com ("backtrace", class_stack, backtrace_command,
3455 backtrace_help.c_str ());
3456 set_cmd_completer_handle_brkchars (backtrace_cmd, backtrace_command_completer);
3458 add_com_alias ("bt", backtrace_cmd, class_stack, 0);
3460 add_com_alias ("where", backtrace_cmd, class_stack, 0);
3461 cmd_list_element *info_stack_cmd
3462 = add_info ("stack", backtrace_command,
3463 _("Backtrace of the stack, or innermost COUNT frames."));
3464 add_info_alias ("s", info_stack_cmd, 1);
3466 cmd_list_element *info_frame_cmd_el
3467 = add_prefix_cmd ("frame", class_info, &info_frame_cmd.base_command,
3468 _("All about the selected stack frame.\n\
3469 With no arguments, displays information about the currently selected stack\n\
3470 frame. Alternatively a frame specification may be provided (See \"frame\")\n\
3471 the information is then printed about the specified frame."),
3472 &info_frame_cmd_list, 1, &infolist);
3473 add_info_alias ("f", info_frame_cmd_el, 1);
3475 add_cmd ("address", class_stack, &info_frame_cmd.address,
3476 _("\
3477 Print information about a stack frame selected by stack address.\n\
3479 Usage: info frame address STACK-ADDRESS"),
3480 &info_frame_cmd_list);
3482 add_cmd ("view", class_stack, &info_frame_cmd.view,
3483 _("\
3484 Print information about a stack frame outside the current backtrace.\n\
3486 Usage: info frame view STACK-ADDRESS\n\
3487 info frame view STACK-ADDRESS PC-ADDRESS"),
3488 &info_frame_cmd_list);
3490 cmd = add_cmd ("function", class_stack, &info_frame_cmd.function,
3491 _("\
3492 Print information about a stack frame selected by function name.\n\
3494 Usage: info frame function NAME"),
3495 &info_frame_cmd_list);
3496 set_cmd_completer (cmd, frame_selection_by_function_completer);
3498 add_cmd ("level", class_stack, &info_frame_cmd.level,
3499 _("\
3500 Print information about a stack frame selected by level.\n\
3502 Usage: info frame level LEVEL"),
3503 &info_frame_cmd_list);
3505 cmd = add_info ("locals", info_locals_command,
3506 info_print_args_help (_("\
3507 All local variables of current stack frame or those matching REGEXPs.\n\
3508 Usage: info locals [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n\
3509 Prints the local variables of the current stack frame.\n"),
3510 _("local variables"),
3511 false));
3512 set_cmd_completer_handle_brkchars (cmd, info_print_command_completer);
3513 cmd = add_info ("args", info_args_command,
3514 info_print_args_help (_("\
3515 All argument variables of current stack frame or those matching REGEXPs.\n\
3516 Usage: info args [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n\
3517 Prints the argument variables of the current stack frame.\n"),
3518 _("argument variables"),
3519 false));
3520 set_cmd_completer_handle_brkchars (cmd, info_print_command_completer);
3522 /* Install "set print raw frame-arguments", a deprecated spelling of
3523 "set print raw-frame-arguments". */
3524 set_show_commands set_show_frame_args
3525 = add_setshow_boolean_cmd
3526 ("frame-arguments", no_class,
3527 &user_frame_print_options.print_raw_frame_arguments,
3528 _("\
3529 Set whether to print frame arguments in raw form."), _("\
3530 Show whether to print frame arguments in raw form."), _("\
3531 If set, frame arguments are printed in raw form, bypassing any\n\
3532 pretty-printers for that value."),
3533 NULL, NULL,
3534 &setprintrawlist, &showprintrawlist);
3535 deprecate_cmd (set_show_frame_args.set, "set print raw-frame-arguments");
3537 add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
3538 &disassemble_next_line, _("\
3539 Set whether to disassemble next source line or insn when execution stops."),
3540 _("\
3541 Show whether to disassemble next source line or insn when execution stops."),
3542 _("\
3543 If ON, GDB will display disassembly of the next source line, in addition\n\
3544 to displaying the source line itself. If the next source line cannot\n\
3545 be displayed (e.g., source is unavailable or there's no line info), GDB\n\
3546 will display disassembly of next instruction instead of showing the\n\
3547 source line.\n\
3548 If AUTO, display disassembly of next instruction only if the source line\n\
3549 cannot be displayed.\n\
3550 If OFF (which is the default), never display the disassembly of the next\n\
3551 source line."),
3552 NULL,
3553 show_disassemble_next_line,
3554 &setlist, &showlist);
3555 disassemble_next_line = AUTO_BOOLEAN_FALSE;
3557 gdb::option::add_setshow_cmds_for_options
3558 (class_stack, &user_frame_print_options,
3559 frame_print_option_defs, &setprintlist, &showprintlist);