Fix test for sections with different VMA<->LMA relationships so that it only applies...
[binutils-gdb.git] / gdb / stack.c
blob9c679222708e014134f70443fbb47f582253c8f6
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 "value.h"
21 #include "symtab.h"
22 #include "gdbtypes.h"
23 #include "expression.h"
24 #include "language.h"
25 #include "frame.h"
26 #include "gdbcmd.h"
27 #include "gdbcore.h"
28 #include "target.h"
29 #include "source.h"
30 #include "breakpoint.h"
31 #include "demangle.h"
32 #include "inferior.h"
33 #include "annotate.h"
34 #include "ui-out.h"
35 #include "block.h"
36 #include "stack.h"
37 #include "dictionary.h"
38 #include "reggroups.h"
39 #include "regcache.h"
40 #include "solib.h"
41 #include "valprint.h"
42 #include "gdbthread.h"
43 #include "cp-support.h"
44 #include "disasm.h"
45 #include "inline-frame.h"
46 #include "linespec.h"
47 #include "cli/cli-utils.h"
48 #include "objfiles.h"
49 #include "annotate.h"
51 #include "symfile.h"
52 #include "extension.h"
53 #include "observable.h"
54 #include "gdbsupport/def-vector.h"
55 #include "cli/cli-option.h"
56 #include "cli/cli-style.h"
57 #include "gdbsupport/buildargv.h"
59 /* The possible choices of "set print frame-arguments", and the value
60 of this setting. */
62 const char print_frame_arguments_all[] = "all";
63 const char print_frame_arguments_scalars[] = "scalars";
64 const char print_frame_arguments_none[] = "none";
65 const char print_frame_arguments_presence[] = "presence";
67 static const char *const print_frame_arguments_choices[] =
69 print_frame_arguments_all,
70 print_frame_arguments_scalars,
71 print_frame_arguments_none,
72 print_frame_arguments_presence,
73 NULL
76 /* The possible choices of "set print frame-info", and the value
77 of this setting. */
79 const char print_frame_info_auto[] = "auto";
80 const char print_frame_info_source_line[] = "source-line";
81 const char print_frame_info_location[] = "location";
82 const char print_frame_info_source_and_location[] = "source-and-location";
83 const char print_frame_info_location_and_address[] = "location-and-address";
84 const char print_frame_info_short_location[] = "short-location";
86 static const char *const print_frame_info_choices[] =
88 print_frame_info_auto,
89 print_frame_info_source_line,
90 print_frame_info_location,
91 print_frame_info_source_and_location,
92 print_frame_info_location_and_address,
93 print_frame_info_short_location,
94 NULL
97 /* print_frame_info_print_what[i] maps a choice to the corresponding
98 print_what enum. */
99 static const std::optional<enum print_what> print_frame_info_print_what[] =
100 {{}, /* Empty value for "auto". */
101 SRC_LINE, LOCATION, SRC_AND_LOC, LOC_AND_ADDRESS, SHORT_LOCATION};
103 /* The possible choices of "set print entry-values", and the value
104 of this setting. */
106 const char print_entry_values_no[] = "no";
107 const char print_entry_values_only[] = "only";
108 const char print_entry_values_preferred[] = "preferred";
109 const char print_entry_values_if_needed[] = "if-needed";
110 const char print_entry_values_both[] = "both";
111 const char print_entry_values_compact[] = "compact";
112 const char print_entry_values_default[] = "default";
113 static const char *const print_entry_values_choices[] =
115 print_entry_values_no,
116 print_entry_values_only,
117 print_entry_values_preferred,
118 print_entry_values_if_needed,
119 print_entry_values_both,
120 print_entry_values_compact,
121 print_entry_values_default,
122 NULL
125 /* See frame.h. */
126 frame_print_options user_frame_print_options;
128 /* Option definitions for some frame-related "set print ..."
129 settings. */
131 using boolean_option_def
132 = gdb::option::boolean_option_def<frame_print_options>;
133 using enum_option_def
134 = gdb::option::enum_option_def<frame_print_options>;
136 static const gdb::option::option_def frame_print_option_defs[] = {
138 enum_option_def {
139 "entry-values",
140 print_entry_values_choices,
141 [] (frame_print_options *opt) { return &opt->print_entry_values; },
142 NULL, /* show_cmd_cb */
143 N_("Set printing of function arguments at function entry."),
144 N_("Show printing of function arguments at function entry."),
145 N_("GDB can sometimes determine the values of function arguments at entry,\n\
146 in addition to their current values. This option tells GDB whether\n\
147 to print the current value, the value at entry (marked as val@entry),\n\
148 or both. Note that one or both of these values may be <optimized out>."),
151 enum_option_def {
152 "frame-arguments",
153 print_frame_arguments_choices,
154 [] (frame_print_options *opt) { return &opt->print_frame_arguments; },
155 NULL, /* show_cmd_cb */
156 N_("Set printing of non-scalar frame arguments."),
157 N_("Show printing of non-scalar frame arguments."),
158 NULL /* help_doc */
161 boolean_option_def {
162 "raw-frame-arguments",
163 [] (frame_print_options *opt) { return &opt->print_raw_frame_arguments; },
164 NULL, /* show_cmd_cb */
165 N_("Set whether to print frame arguments in raw form."),
166 N_("Show whether to print frame arguments in raw form."),
167 N_("If set, frame arguments are printed in raw form, bypassing any\n\
168 pretty-printers for that value.")
171 enum_option_def {
172 "frame-info",
173 print_frame_info_choices,
174 [] (frame_print_options *opt) { return &opt->print_frame_info; },
175 NULL, /* show_cmd_cb */
176 N_("Set printing of frame information."),
177 N_("Show printing of frame information."),
178 NULL /* help_doc */
183 /* Options for the "backtrace" command. */
185 struct backtrace_cmd_options
187 bool full = false;
188 bool no_filters = false;
189 bool hide = false;
192 using bt_flag_option_def
193 = gdb::option::flag_option_def<backtrace_cmd_options>;
195 static const gdb::option::option_def backtrace_command_option_defs[] = {
196 bt_flag_option_def {
197 "full",
198 [] (backtrace_cmd_options *opt) { return &opt->full; },
199 N_("Print values of local variables.")
202 bt_flag_option_def {
203 "no-filters",
204 [] (backtrace_cmd_options *opt) { return &opt->no_filters; },
205 N_("Prohibit frame filters from executing on a backtrace."),
208 bt_flag_option_def {
209 "hide",
210 [] (backtrace_cmd_options *opt) { return &opt->hide; },
211 N_("Causes Python frame filter elided frames to not be printed."),
215 /* Prototypes for local functions. */
217 static void print_frame_local_vars (const frame_info_ptr &frame,
218 bool quiet,
219 const char *regexp, const char *t_regexp,
220 int num_tabs, struct ui_file *stream);
222 static void print_frame (struct ui_out *uiout,
223 const frame_print_options &opts,
224 const frame_info_ptr &frame, int print_level,
225 enum print_what print_what, int print_args,
226 struct symtab_and_line sal);
228 static frame_info_ptr find_frame_for_function (const char *);
229 static frame_info_ptr find_frame_for_address (CORE_ADDR);
231 /* Zero means do things normally; we are interacting directly with the
232 user. One means print the full filename and linenumber when a
233 frame is printed, and do so in a format emacs18/emacs19.22 can
234 parse. Two means print similar annotations, but in many more
235 cases and in a slightly different syntax. */
237 int annotation_level = 0;
239 /* Class used to manage tracking the last symtab we displayed. */
241 class last_displayed_symtab_info_type
243 public:
244 /* True if the cached information is valid. */
245 bool is_valid () const
246 { return m_valid; }
248 /* Return the cached program_space. If the cache is invalid nullptr is
249 returned. */
250 struct program_space *pspace () const
251 { return m_pspace; }
253 /* Return the cached CORE_ADDR address. If the cache is invalid 0 is
254 returned. */
255 CORE_ADDR address () const
256 { return m_address; }
258 /* Return the cached symtab. If the cache is invalid nullptr is
259 returned. */
260 struct symtab *symtab () const
261 { return m_symtab; }
263 /* Return the cached line number. If the cache is invalid 0 is
264 returned. */
265 int line () const
266 { return m_line; }
268 /* Invalidate the cache, reset all the members to their default value. */
269 void invalidate ()
271 m_valid = false;
272 m_pspace = nullptr;
273 m_address = 0;
274 m_symtab = nullptr;
275 m_line = 0;
278 /* Store a new set of values in the cache. */
279 void set (struct program_space *pspace, CORE_ADDR address,
280 struct symtab *symtab, int line)
282 gdb_assert (pspace != nullptr);
284 m_valid = true;
285 m_pspace = pspace;
286 m_address = address;
287 m_symtab = symtab;
288 m_line = line;
291 private:
292 /* True when the cache is valid. */
293 bool m_valid = false;
295 /* The last program space displayed. */
296 struct program_space *m_pspace = nullptr;
298 /* The last address displayed. */
299 CORE_ADDR m_address = 0;
301 /* The last symtab displayed. */
302 struct symtab *m_symtab = nullptr;
304 /* The last line number displayed. */
305 int m_line = 0;
308 /* An actual instance of the cache, holds information about the last symtab
309 displayed. */
310 static last_displayed_symtab_info_type last_displayed_symtab_info;
314 /* See stack.h. */
316 bool
317 frame_show_address (const frame_info_ptr &frame,
318 struct symtab_and_line sal)
320 /* If there is a line number, but no PC, then there is no location
321 information associated with this sal. The only way that should
322 happen is for the call sites of inlined functions (SAL comes from
323 find_frame_sal). Otherwise, we would have some PC range if the
324 SAL came from a line table. */
325 if (sal.line != 0 && sal.pc == 0 && sal.end == 0)
327 if (get_next_frame (frame) == NULL)
328 gdb_assert (inline_skipped_frames (inferior_thread ()) > 0);
329 else
330 gdb_assert (get_frame_type (get_next_frame (frame)) == INLINE_FRAME);
331 return false;
334 return get_frame_pc (frame) != sal.pc || !sal.is_stmt;
337 /* See frame.h. */
339 void
340 print_stack_frame_to_uiout (struct ui_out *uiout, const frame_info_ptr &frame,
341 int print_level, enum print_what print_what,
342 int set_current_sal)
344 scoped_restore save_uiout = make_scoped_restore (&current_uiout, uiout);
346 print_stack_frame (frame, print_level, print_what, set_current_sal);
349 /* Show or print a stack frame FRAME briefly. The output is formatted
350 according to PRINT_LEVEL and PRINT_WHAT printing the frame's
351 relative level, function name, argument list, and file name and
352 line number. If the frame's PC is not at the beginning of the
353 source line, the actual PC is printed at the beginning. */
355 void
356 print_stack_frame (const frame_info_ptr &frame, int print_level,
357 enum print_what print_what,
358 int set_current_sal)
361 /* For mi, always print location and address. */
362 if (current_uiout->is_mi_like_p ())
363 print_what = LOC_AND_ADDRESS;
367 print_frame_info (user_frame_print_options,
368 frame, print_level, print_what, 1 /* print_args */,
369 set_current_sal);
370 if (set_current_sal)
371 set_current_sal_from_frame (frame);
373 catch (const gdb_exception_error &e)
378 /* Print nameless arguments of frame FRAME on STREAM, where START is
379 the offset of the first nameless argument, and NUM is the number of
380 nameless arguments to print. FIRST is nonzero if this is the first
381 argument (not just the first nameless argument). */
383 static void
384 print_frame_nameless_args (const frame_info_ptr &frame, long start, int num,
385 int first, struct ui_file *stream)
387 struct gdbarch *gdbarch = get_frame_arch (frame);
388 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
389 int i;
390 CORE_ADDR argsaddr;
391 long arg_value;
393 for (i = 0; i < num; i++)
395 QUIT;
396 argsaddr = get_frame_args_address (frame);
397 if (!argsaddr)
398 return;
399 arg_value = read_memory_integer (argsaddr + start,
400 sizeof (int), byte_order);
401 if (!first)
402 gdb_printf (stream, ", ");
403 gdb_printf (stream, "%ld", arg_value);
404 first = 0;
405 start += sizeof (int);
409 /* Print single argument of inferior function. ARG must be already
410 read in.
412 Errors are printed as if they would be the parameter value. Use zeroed ARG
413 iff it should not be printed according to user settings. */
415 static void
416 print_frame_arg (const frame_print_options &fp_opts,
417 const struct frame_arg *arg)
419 struct ui_out *uiout = current_uiout;
421 string_file stb;
423 gdb_assert (!arg->val || !arg->error);
424 gdb_assert (arg->entry_kind == print_entry_values_no
425 || arg->entry_kind == print_entry_values_only
426 || (!uiout->is_mi_like_p ()
427 && arg->entry_kind == print_entry_values_compact));
429 annotate_arg_emitter arg_emitter;
430 ui_out_emit_tuple tuple_emitter (uiout, NULL);
431 gdb_puts (arg->sym->print_name (), &stb);
432 if (arg->entry_kind == print_entry_values_compact)
434 /* It is OK to provide invalid MI-like stream as with
435 PRINT_ENTRY_VALUE_COMPACT we never use MI. */
436 stb.puts ("=");
438 gdb_puts (arg->sym->print_name (), &stb);
440 if (arg->entry_kind == print_entry_values_only
441 || arg->entry_kind == print_entry_values_compact)
442 stb.puts ("@entry");
443 uiout->field_stream ("name", stb, variable_name_style.style ());
444 annotate_arg_name_end ();
445 uiout->text ("=");
447 ui_file_style style;
448 if (!arg->val && !arg->error)
449 uiout->text ("...");
450 else
452 if (arg->error)
454 stb.printf (_("<error reading variable: %s>"), arg->error.get ());
455 style = metadata_style.style ();
457 else
461 const struct language_defn *language;
462 struct value_print_options vp_opts;
464 /* Avoid value_print because it will deref ref parameters. We
465 just want to print their addresses. Print ??? for args whose
466 address we do not know. We pass 2 as "recurse" to val_print
467 because our standard indentation here is 4 spaces, and
468 val_print indents 2 for each recurse. */
470 annotate_arg_value (arg->val->type ());
472 /* Use the appropriate language to display our symbol, unless the
473 user forced the language to a specific language. */
474 if (language_mode == language_mode_auto)
475 language = language_def (arg->sym->language ());
476 else
477 language = current_language;
479 get_no_prettyformat_print_options (&vp_opts);
480 vp_opts.deref_ref = true;
481 vp_opts.raw = fp_opts.print_raw_frame_arguments;
483 /* True in "summary" mode, false otherwise. */
484 vp_opts.summary
485 = fp_opts.print_frame_arguments == print_frame_arguments_scalars;
487 common_val_print_checked (arg->val, &stb, 2, &vp_opts, language);
489 catch (const gdb_exception_error &except)
491 stb.printf (_("<error reading variable: %s>"),
492 except.what ());
493 style = metadata_style.style ();
498 uiout->field_stream ("value", stb, style);
501 /* Read in inferior function local SYM at FRAME into ARGP. Caller is
502 responsible for xfree of ARGP->ERROR. This function never throws an
503 exception. */
505 void
506 read_frame_local (struct symbol *sym, const frame_info_ptr &frame,
507 struct frame_arg *argp)
509 argp->sym = sym;
510 argp->val = NULL;
511 argp->error = NULL;
515 argp->val = read_var_value (sym, NULL, frame);
517 catch (const gdb_exception_error &except)
519 argp->error.reset (xstrdup (except.what ()));
523 /* Read in inferior function parameter SYM at FRAME into ARGP. This
524 function never throws an exception. */
526 void
527 read_frame_arg (const frame_print_options &fp_opts,
528 symbol *sym, const frame_info_ptr &frame,
529 struct frame_arg *argp, struct frame_arg *entryargp)
531 struct value *val = NULL, *entryval = NULL;
532 char *val_error = NULL, *entryval_error = NULL;
533 int val_equal = 0;
535 if (fp_opts.print_entry_values != print_entry_values_only
536 && fp_opts.print_entry_values != print_entry_values_preferred)
540 val = read_var_value (sym, NULL, frame);
542 catch (const gdb_exception_error &except)
544 val_error = (char *) alloca (except.message->size () + 1);
545 strcpy (val_error, except.what ());
549 if (const symbol_computed_ops *computed_ops = sym->computed_ops ();
550 (computed_ops != nullptr
551 && computed_ops->read_variable_at_entry != nullptr
552 && fp_opts.print_entry_values != print_entry_values_no
553 && (fp_opts.print_entry_values != print_entry_values_if_needed || !val
554 || val->optimized_out ())))
558 entryval = computed_ops->read_variable_at_entry (sym, frame);
560 catch (const gdb_exception_error &except)
562 if (except.error != NO_ENTRY_VALUE_ERROR)
564 entryval_error = (char *) alloca (except.message->size () + 1);
565 strcpy (entryval_error, except.what ());
569 if (entryval != NULL && entryval->optimized_out ())
570 entryval = NULL;
572 if (fp_opts.print_entry_values == print_entry_values_compact
573 || fp_opts.print_entry_values == print_entry_values_default)
575 /* For MI do not try to use print_entry_values_compact for ARGP. */
577 if (val && entryval && !current_uiout->is_mi_like_p ())
579 struct type *type = val->type ();
581 if (val->lazy ())
582 val->fetch_lazy ();
583 if (entryval->lazy ())
584 entryval->fetch_lazy ();
586 if (val->contents_eq (0, entryval, 0, type->length ()))
588 /* Initialize it just to avoid a GCC false warning. */
589 struct value *val_deref = NULL, *entryval_deref;
591 /* DW_AT_call_value does match with the current
592 value. If it is a reference still try to verify if
593 dereferenced DW_AT_call_data_value does not differ. */
597 struct type *type_deref;
599 val_deref = coerce_ref (val);
600 if (val_deref->lazy ())
601 val_deref->fetch_lazy ();
602 type_deref = val_deref->type ();
604 entryval_deref = coerce_ref (entryval);
605 if (entryval_deref->lazy ())
606 entryval_deref->fetch_lazy ();
608 /* If the reference addresses match but dereferenced
609 content does not match print them. */
610 if (val != val_deref
611 && val_deref->contents_eq (0,
612 entryval_deref, 0,
613 type_deref->length ()))
614 val_equal = 1;
616 catch (const gdb_exception_error &except)
618 /* If the dereferenced content could not be
619 fetched do not display anything. */
620 if (except.error == NO_ENTRY_VALUE_ERROR)
621 val_equal = 1;
622 else if (except.message != NULL)
624 entryval_error
625 = (char *) alloca (except.message->size () + 1);
626 strcpy (entryval_error, except.what ());
630 /* Value was not a reference; and its content matches. */
631 if (val == val_deref)
632 val_equal = 1;
634 if (val_equal)
635 entryval = NULL;
639 /* Try to remove possibly duplicate error message for ENTRYARGP even
640 in MI mode. */
642 if (val_error && entryval_error
643 && strcmp (val_error, entryval_error) == 0)
645 entryval_error = NULL;
647 /* Do not se VAL_EQUAL as the same error message may be shown for
648 the entry value even if no entry values are present in the
649 inferior. */
654 if (entryval == NULL)
656 if (fp_opts.print_entry_values == print_entry_values_preferred)
658 gdb_assert (val == NULL);
662 val = read_var_value (sym, NULL, frame);
664 catch (const gdb_exception_error &except)
666 val_error = (char *) alloca (except.message->size () + 1);
667 strcpy (val_error, except.what ());
670 if (fp_opts.print_entry_values == print_entry_values_only
671 || fp_opts.print_entry_values == print_entry_values_both
672 || (fp_opts.print_entry_values == print_entry_values_preferred
673 && (!val || val->optimized_out ())))
675 entryval = value::allocate_optimized_out (sym->type ());
676 entryval_error = NULL;
679 if ((fp_opts.print_entry_values == print_entry_values_compact
680 || fp_opts.print_entry_values == print_entry_values_if_needed
681 || fp_opts.print_entry_values == print_entry_values_preferred)
682 && (!val || val->optimized_out ()) && entryval != NULL)
684 val = NULL;
685 val_error = NULL;
688 argp->sym = sym;
689 argp->val = val;
690 argp->error.reset (val_error ? xstrdup (val_error) : NULL);
691 if (!val && !val_error)
692 argp->entry_kind = print_entry_values_only;
693 else if ((fp_opts.print_entry_values == print_entry_values_compact
694 || fp_opts.print_entry_values == print_entry_values_default)
695 && val_equal)
697 argp->entry_kind = print_entry_values_compact;
698 gdb_assert (!current_uiout->is_mi_like_p ());
700 else
701 argp->entry_kind = print_entry_values_no;
703 entryargp->sym = sym;
704 entryargp->val = entryval;
705 entryargp->error.reset (entryval_error ? xstrdup (entryval_error) : NULL);
706 if (!entryval && !entryval_error)
707 entryargp->entry_kind = print_entry_values_no;
708 else
709 entryargp->entry_kind = print_entry_values_only;
712 /* Print the arguments of frame FRAME on STREAM, given the function
713 FUNC running in that frame (as a symbol), where NUM is the number
714 of arguments according to the stack frame (or -1 if the number of
715 arguments is unknown). */
717 /* Note that currently the "number of arguments according to the
718 stack frame" is only known on VAX where i refers to the "number of
719 ints of arguments according to the stack frame". */
721 static void
722 print_frame_args (const frame_print_options &fp_opts,
723 struct symbol *func, const frame_info_ptr &frame,
724 int num, struct ui_file *stream)
726 struct ui_out *uiout = current_uiout;
727 int first = 1;
728 /* Offset of next stack argument beyond the one we have seen that is
729 at the highest offset, or -1 if we haven't come to a stack
730 argument yet. */
731 long highest_offset = -1;
732 /* Number of ints of arguments that we have printed so far. */
733 int args_printed = 0;
734 /* True if we should print arg names. If false, we only indicate
735 the presence of arguments by printing ellipsis. */
736 bool print_names
737 = fp_opts.print_frame_arguments != print_frame_arguments_presence;
738 /* True if we should print arguments, false otherwise. */
739 bool print_args
740 = (print_names
741 && fp_opts.print_frame_arguments != print_frame_arguments_none);
743 if (func)
745 const struct block *b = func->value_block ();
747 for (struct symbol *sym : block_iterator_range (b))
749 struct frame_arg arg, entryarg;
751 QUIT;
753 /* Keep track of the highest stack argument offset seen, and
754 skip over any kinds of symbols we don't care about. */
756 if (!sym->is_argument ())
757 continue;
759 if (!print_names)
761 uiout->text ("...");
762 first = 0;
763 break;
766 switch (sym->aclass ())
768 case LOC_ARG:
769 case LOC_REF_ARG:
771 long current_offset = sym->value_longest ();
772 int arg_size = sym->type ()->length ();
774 /* Compute address of next argument by adding the size of
775 this argument and rounding to an int boundary. */
776 current_offset =
777 ((current_offset + arg_size + sizeof (int) - 1)
778 & ~(sizeof (int) - 1));
780 /* If this is the highest offset seen yet, set
781 highest_offset. */
782 if (highest_offset == -1
783 || (current_offset > highest_offset))
784 highest_offset = current_offset;
786 /* Add the number of ints we're about to print to
787 args_printed. */
788 args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
791 /* We care about types of symbols, but don't need to
792 keep track of stack offsets in them. */
793 case LOC_REGISTER:
794 case LOC_REGPARM_ADDR:
795 case LOC_COMPUTED:
796 case LOC_OPTIMIZED_OUT:
797 default:
798 break;
801 /* We have to look up the symbol because arguments can have
802 two entries (one a parameter, one a local) and the one we
803 want is the local, which lookup_symbol will find for us.
804 This includes gcc1 (not gcc2) on SPARC when passing a
805 small structure and gcc2 when the argument type is float
806 and it is passed as a double and converted to float by
807 the prologue (in the latter case the type of the LOC_ARG
808 symbol is double and the type of the LOC_LOCAL symbol is
809 float). */
810 /* But if the parameter name is null, don't try it. Null
811 parameter names occur on the RS/6000, for traceback
812 tables. FIXME, should we even print them? */
814 if (*sym->linkage_name ())
816 struct symbol *nsym;
818 nsym = lookup_symbol_search_name (sym->search_name (),
819 b, SEARCH_VAR_DOMAIN).symbol;
820 gdb_assert (nsym != NULL);
821 if (nsym->aclass () == LOC_REGISTER
822 && !nsym->is_argument ())
824 /* There is a LOC_ARG/LOC_REGISTER pair. This means
825 that it was passed on the stack and loaded into a
826 register, or passed in a register and stored in a
827 stack slot. GDB 3.x used the LOC_ARG; GDB
828 4.0-4.11 used the LOC_REGISTER.
830 Reasons for using the LOC_ARG:
832 (1) Because find_saved_registers may be slow for
833 remote debugging.
835 (2) Because registers are often re-used and stack
836 slots rarely (never?) are. Therefore using
837 the stack slot is much less likely to print
838 garbage.
840 Reasons why we might want to use the LOC_REGISTER:
842 (1) So that the backtrace prints the same value
843 as "print foo". I see no compelling reason
844 why this needs to be the case; having the
845 backtrace print the value which was passed
846 in, and "print foo" print the value as
847 modified within the called function, makes
848 perfect sense to me.
850 Additional note: It might be nice if "info args"
851 displayed both values.
853 One more note: There is a case with SPARC
854 structure passing where we need to use the
855 LOC_REGISTER, but this is dealt with by creating
856 a single LOC_REGPARM in symbol reading. */
858 /* Leave sym (the LOC_ARG) alone. */
861 else
862 sym = nsym;
865 /* Print the current arg. */
866 if (!first)
867 uiout->text (", ");
868 uiout->wrap_hint (4);
870 if (!print_args)
872 arg.sym = sym;
873 arg.entry_kind = print_entry_values_no;
874 entryarg.sym = sym;
875 entryarg.entry_kind = print_entry_values_no;
877 else
878 read_frame_arg (fp_opts, sym, frame, &arg, &entryarg);
880 if (arg.entry_kind != print_entry_values_only)
881 print_frame_arg (fp_opts, &arg);
883 if (entryarg.entry_kind != print_entry_values_no)
885 if (arg.entry_kind != print_entry_values_only)
887 uiout->text (", ");
888 uiout->wrap_hint (4);
891 print_frame_arg (fp_opts, &entryarg);
894 first = 0;
898 /* Don't print nameless args in situations where we don't know
899 enough about the stack to find them. */
900 if (num != -1)
902 long start;
904 if (highest_offset == -1)
905 start = gdbarch_frame_args_skip (get_frame_arch (frame));
906 else
907 start = highest_offset;
909 if (!print_names && !first && num > 0)
910 uiout->text ("...");
911 else
912 print_frame_nameless_args (frame, start, num - args_printed,
913 first, stream);
917 /* Set the current source and line to the location given by frame
918 FRAME, if possible. When CENTER is true, adjust so the relevant
919 line is in the center of the next 'list'. */
921 void
922 set_current_sal_from_frame (const frame_info_ptr &frame)
924 symtab_and_line sal = find_frame_sal (frame);
925 if (sal.symtab != NULL)
926 set_current_source_symtab_and_line (sal);
929 /* If ON, GDB will display disassembly of the next source line when
930 execution of the program being debugged stops.
931 If AUTO (which is the default), or there's no line info to determine
932 the source line of the next instruction, display disassembly of next
933 instruction instead. */
935 static enum auto_boolean disassemble_next_line;
937 static void
938 show_disassemble_next_line (struct ui_file *file, int from_tty,
939 struct cmd_list_element *c,
940 const char *value)
942 gdb_printf (file,
943 _("Debugger's willingness to use "
944 "disassemble-next-line is %s.\n"),
945 value);
948 /* Use TRY_CATCH to catch the exception from the gdb_disassembly
949 because it will be broken by filter sometime. */
951 static void
952 do_gdb_disassembly (struct gdbarch *gdbarch,
953 int how_many, CORE_ADDR low, CORE_ADDR high)
958 gdb_disassembly (gdbarch, current_uiout,
959 DISASSEMBLY_RAW_INSN, how_many,
960 low, high);
962 catch (const gdb_exception_error &exception)
964 /* If an exception was thrown while doing the disassembly, print
965 the error message, to give the user a clue of what happened. */
966 exception_print (gdb_stderr, exception);
970 /* Converts the PRINT_FRAME_INFO choice to an optional enum print_what.
971 Value not present indicates to the caller to use default values
972 specific to the command being executed. */
974 static std::optional<enum print_what>
975 print_frame_info_to_print_what (const char *print_frame_info)
977 for (int i = 0; print_frame_info_choices[i] != NULL; i++)
978 if (print_frame_info == print_frame_info_choices[i])
979 return print_frame_info_print_what[i];
981 internal_error ("Unexpected print frame-info value `%s'.",
982 print_frame_info);
985 /* Print the PC from FRAME, plus any flags, to UIOUT. */
987 static void
988 print_pc (struct ui_out *uiout, struct gdbarch *gdbarch, const frame_info_ptr &frame,
989 CORE_ADDR pc)
991 uiout->field_core_addr ("addr", gdbarch, pc);
993 std::string flags = gdbarch_get_pc_address_flags (gdbarch, frame, pc);
994 if (!flags.empty ())
996 uiout->text (" [");
997 uiout->field_string ("addr_flags", flags);
998 uiout->text ("]");
1002 /* See stack.h. */
1004 void
1005 get_user_print_what_frame_info (std::optional<enum print_what> *what)
1007 *what
1008 = print_frame_info_to_print_what
1009 (user_frame_print_options.print_frame_info);
1012 /* Print information about frame FRAME. The output is format according
1013 to PRINT_LEVEL and PRINT_WHAT and PRINT_ARGS. For the meaning of
1014 PRINT_WHAT, see enum print_what comments in frame.h.
1015 Note that PRINT_WHAT is overridden if FP_OPTS.print_frame_info
1016 != print_frame_info_auto.
1018 Used in "where" output, and to emit breakpoint or step
1019 messages. */
1021 static void
1022 do_print_frame_info (struct ui_out *uiout, const frame_print_options &fp_opts,
1023 const frame_info_ptr &frame, int print_level,
1024 enum print_what print_what, int print_args,
1025 int set_current_sal)
1027 struct gdbarch *gdbarch = get_frame_arch (frame);
1028 int source_print;
1029 int location_print;
1031 if (!current_uiout->is_mi_like_p ()
1032 && fp_opts.print_frame_info != print_frame_info_auto)
1034 /* Use the specific frame information desired by the user. */
1035 print_what = *print_frame_info_to_print_what (fp_opts.print_frame_info);
1038 if (get_frame_type (frame) == DUMMY_FRAME
1039 || get_frame_type (frame) == SIGTRAMP_FRAME
1040 || get_frame_type (frame) == ARCH_FRAME)
1042 ui_out_emit_tuple tuple_emitter (uiout, "frame");
1044 annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
1045 gdbarch, get_frame_pc (frame));
1047 /* Do this regardless of SOURCE because we don't have any source
1048 to list for this frame. */
1049 if (print_level)
1051 uiout->text ("#");
1052 uiout->field_fmt_signed (2, ui_left, "level",
1053 frame_relative_level (frame));
1055 if (uiout->is_mi_like_p ())
1057 annotate_frame_address ();
1058 print_pc (uiout, gdbarch, frame, get_frame_pc (frame));
1059 annotate_frame_address_end ();
1062 if (get_frame_type (frame) == DUMMY_FRAME)
1064 annotate_function_call ();
1065 uiout->field_string ("func", "<function called from gdb>",
1066 metadata_style.style ());
1068 else if (get_frame_type (frame) == SIGTRAMP_FRAME)
1070 annotate_signal_handler_caller ();
1071 uiout->field_string ("func", "<signal handler called>",
1072 metadata_style.style ());
1074 else if (get_frame_type (frame) == ARCH_FRAME)
1076 uiout->field_string ("func", "<cross-architecture call>",
1077 metadata_style.style ());
1079 uiout->text ("\n");
1080 annotate_frame_end ();
1082 /* If disassemble-next-line is set to auto or on output the next
1083 instruction. */
1084 if (disassemble_next_line == AUTO_BOOLEAN_AUTO
1085 || disassemble_next_line == AUTO_BOOLEAN_TRUE)
1086 do_gdb_disassembly (get_frame_arch (frame), 1,
1087 get_frame_pc (frame), get_frame_pc (frame) + 1);
1089 return;
1092 /* If FRAME is not the innermost frame, that normally means that
1093 FRAME->pc points to *after* the call instruction, and we want to
1094 get the line containing the call, never the next line. But if
1095 the next frame is a SIGTRAMP_FRAME or a DUMMY_FRAME, then the
1096 next frame was not entered as the result of a call, and we want
1097 to get the line containing FRAME->pc. */
1098 symtab_and_line sal = find_frame_sal (frame);
1100 location_print = (print_what == LOCATION
1101 || print_what == SRC_AND_LOC
1102 || print_what == LOC_AND_ADDRESS
1103 || print_what == SHORT_LOCATION);
1104 if (location_print || !sal.symtab)
1105 print_frame (uiout, fp_opts, frame, print_level,
1106 print_what, print_args, sal);
1108 source_print = (print_what == SRC_LINE || print_what == SRC_AND_LOC);
1110 /* If disassemble-next-line is set to auto or on and doesn't have
1111 the line debug messages for $pc, output the next instruction. */
1112 if ((disassemble_next_line == AUTO_BOOLEAN_AUTO
1113 || disassemble_next_line == AUTO_BOOLEAN_TRUE)
1114 && source_print && !sal.symtab)
1115 do_gdb_disassembly (get_frame_arch (frame), 1,
1116 get_frame_pc (frame), get_frame_pc (frame) + 1);
1118 if (source_print && sal.symtab)
1120 int mid_statement = ((print_what == SRC_LINE)
1121 && frame_show_address (frame, sal));
1122 if (annotation_level > 0
1123 && annotate_source_line (sal.symtab, sal.line, mid_statement,
1124 get_frame_pc (frame)))
1126 /* The call to ANNOTATE_SOURCE_LINE already printed the
1127 annotation for this source line, so we avoid the two cases
1128 below and do not print the actual source line. The
1129 documentation for annotations makes it clear that the source
1130 line annotation is printed __instead__ of printing the source
1131 line, not as well as.
1133 However, if we fail to print the source line, which usually
1134 means either the source file is missing, or the requested
1135 line is out of range of the file, then we don't print the
1136 source annotation, and will pass through the "normal" print
1137 source line code below, the expectation is that this code
1138 will print an appropriate error. */
1140 else if (deprecated_print_frame_info_listing_hook)
1141 deprecated_print_frame_info_listing_hook (sal.symtab, sal.line,
1142 sal.line + 1, 0);
1143 else
1145 struct value_print_options opts;
1147 get_user_print_options (&opts);
1148 /* We used to do this earlier, but that is clearly
1149 wrong. This function is used by many different
1150 parts of gdb, including normal_stop in infrun.c,
1151 which uses this to print out the current PC
1152 when we stepi/nexti into the middle of a source
1153 line. Only the command line really wants this
1154 behavior. Other UIs probably would like the
1155 ability to decide for themselves if it is desired. */
1156 if (opts.addressprint && mid_statement)
1158 print_pc (uiout, gdbarch, frame, get_frame_pc (frame));
1159 uiout->text ("\t");
1162 print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
1165 /* If disassemble-next-line is set to on and there is line debug
1166 messages, output assembly codes for next line. */
1167 if (disassemble_next_line == AUTO_BOOLEAN_TRUE)
1168 do_gdb_disassembly (get_frame_arch (frame), -1, sal.pc, sal.end);
1171 if (set_current_sal)
1173 CORE_ADDR pc;
1175 if (get_frame_pc_if_available (frame, &pc))
1176 last_displayed_symtab_info.set (sal.pspace, pc, sal.symtab, sal.line);
1177 else
1178 last_displayed_symtab_info.invalidate ();
1181 annotate_frame_end ();
1183 gdb_flush (gdb_stdout);
1186 /* Redirect output to a temporary buffer for the duration
1187 of do_print_frame_info. */
1189 void
1190 print_frame_info (const frame_print_options &fp_opts,
1191 const frame_info_ptr &frame, int print_level,
1192 enum print_what print_what, int print_args,
1193 int set_current_sal)
1195 do_with_buffered_output (do_print_frame_info, current_uiout,
1196 fp_opts, frame, print_level, print_what,
1197 print_args, set_current_sal);
1200 /* See stack.h. */
1202 void
1203 clear_last_displayed_sal (void)
1205 last_displayed_symtab_info.invalidate ();
1208 /* See stack.h. */
1210 bool
1211 last_displayed_sal_is_valid (void)
1213 return last_displayed_symtab_info.is_valid ();
1216 /* See stack.h. */
1218 struct program_space *
1219 get_last_displayed_pspace (void)
1221 return last_displayed_symtab_info.pspace ();
1224 /* See stack.h. */
1226 CORE_ADDR
1227 get_last_displayed_addr (void)
1229 return last_displayed_symtab_info.address ();
1232 /* See stack.h. */
1234 struct symtab*
1235 get_last_displayed_symtab (void)
1237 return last_displayed_symtab_info.symtab ();
1240 /* See stack.h. */
1243 get_last_displayed_line (void)
1245 return last_displayed_symtab_info.line ();
1248 /* See stack.h. */
1250 symtab_and_line
1251 get_last_displayed_sal ()
1253 symtab_and_line sal;
1255 if (last_displayed_symtab_info.is_valid ())
1257 sal.pspace = last_displayed_symtab_info.pspace ();
1258 sal.pc = last_displayed_symtab_info.address ();
1259 sal.symtab = last_displayed_symtab_info.symtab ();
1260 sal.line = last_displayed_symtab_info.line ();
1263 return sal;
1267 /* Attempt to obtain the name, FUNLANG and optionally FUNCP of the function
1268 corresponding to FRAME. */
1270 gdb::unique_xmalloc_ptr<char>
1271 find_frame_funname (const frame_info_ptr &frame, enum language *funlang,
1272 struct symbol **funcp)
1274 struct symbol *func;
1275 gdb::unique_xmalloc_ptr<char> funname;
1277 *funlang = language_unknown;
1278 if (funcp)
1279 *funcp = NULL;
1281 func = get_frame_function (frame);
1282 if (func)
1284 const char *print_name = func->print_name ();
1286 *funlang = func->language ();
1287 if (funcp)
1288 *funcp = func;
1289 if (*funlang == language_cplus)
1291 /* It seems appropriate to use print_name() here,
1292 to display the demangled name that we already have
1293 stored in the symbol table, but we stored a version
1294 with DMGL_PARAMS turned on, and here we don't want to
1295 display parameters. So remove the parameters. */
1296 funname = cp_remove_params (print_name);
1299 /* If we didn't hit the C++ case above, set *funname
1300 here. */
1301 if (funname == NULL)
1302 funname.reset (xstrdup (print_name));
1304 else
1306 struct bound_minimal_symbol msymbol;
1307 CORE_ADDR pc;
1309 if (!get_frame_address_in_block_if_available (frame, &pc))
1310 return funname;
1312 msymbol = lookup_minimal_symbol_by_pc (pc);
1313 if (msymbol.minsym != NULL)
1315 funname.reset (xstrdup (msymbol.minsym->print_name ()));
1316 *funlang = msymbol.minsym->language ();
1320 return funname;
1323 static void
1324 print_frame (struct ui_out *uiout,
1325 const frame_print_options &fp_opts,
1326 const frame_info_ptr &frame, int print_level,
1327 enum print_what print_what, int print_args,
1328 struct symtab_and_line sal)
1330 struct gdbarch *gdbarch = get_frame_arch (frame);
1331 enum language funlang = language_unknown;
1332 struct value_print_options opts;
1333 struct symbol *func;
1334 CORE_ADDR pc = 0;
1335 int pc_p;
1337 pc_p = get_frame_pc_if_available (frame, &pc);
1339 gdb::unique_xmalloc_ptr<char> funname
1340 = find_frame_funname (frame, &funlang, &func);
1342 annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
1343 gdbarch, pc);
1346 ui_out_emit_tuple tuple_emitter (uiout, "frame");
1348 if (print_level)
1350 uiout->text ("#");
1351 uiout->field_fmt_signed (2, ui_left, "level",
1352 frame_relative_level (frame));
1354 get_user_print_options (&opts);
1355 if (opts.addressprint)
1356 if (!sal.symtab
1357 || frame_show_address (frame, sal)
1358 || print_what == LOC_AND_ADDRESS)
1360 annotate_frame_address ();
1361 if (pc_p)
1362 print_pc (uiout, gdbarch, frame, pc);
1363 else
1364 uiout->field_string ("addr", "<unavailable>",
1365 metadata_style.style ());
1366 annotate_frame_address_end ();
1367 uiout->text (" in ");
1369 annotate_frame_function_name ();
1371 string_file stb;
1372 gdb_puts (funname ? funname.get () : "??", &stb);
1373 uiout->field_stream ("func", stb, function_name_style.style ());
1374 uiout->wrap_hint (3);
1375 annotate_frame_args ();
1377 uiout->text (" (");
1378 if (print_args)
1380 int numargs;
1382 if (gdbarch_frame_num_args_p (gdbarch))
1384 numargs = gdbarch_frame_num_args (gdbarch, frame);
1385 gdb_assert (numargs >= 0);
1387 else
1388 numargs = -1;
1391 ui_out_emit_list list_emitter (uiout, "args");
1394 print_frame_args (fp_opts, func, frame, numargs, gdb_stdout);
1396 catch (const gdb_exception_error &e)
1400 /* FIXME: ARGS must be a list. If one argument is a string it
1401 will have " that will not be properly escaped. */
1403 QUIT;
1405 uiout->text (")");
1406 if (print_what != SHORT_LOCATION && sal.symtab)
1408 const char *filename_display;
1410 filename_display = symtab_to_filename_for_display (sal.symtab);
1411 annotate_frame_source_begin ();
1412 uiout->wrap_hint (3);
1413 uiout->text (" at ");
1414 annotate_frame_source_file ();
1415 uiout->field_string ("file", filename_display,
1416 file_name_style.style ());
1417 if (uiout->is_mi_like_p ())
1419 const char *fullname = symtab_to_fullname (sal.symtab);
1421 uiout->field_string ("fullname", fullname);
1423 annotate_frame_source_file_end ();
1424 uiout->text (":");
1425 annotate_frame_source_line ();
1426 uiout->field_signed ("line", sal.line);
1427 annotate_frame_source_end ();
1430 if (print_what != SHORT_LOCATION
1431 && pc_p && (funname == NULL || sal.symtab == NULL))
1433 const char *lib
1434 = solib_name_from_address (get_frame_program_space (frame),
1435 get_frame_address_in_block (frame));
1437 if (lib)
1439 annotate_frame_where ();
1440 uiout->wrap_hint (2);
1441 uiout->text (" from ");
1442 uiout->field_string ("from", lib, file_name_style.style ());
1445 if (uiout->is_mi_like_p ())
1446 uiout->field_string ("arch",
1447 (gdbarch_bfd_arch_info (gdbarch))->printable_name);
1450 uiout->text ("\n");
1454 /* Completion function for "frame function", "info frame function", and
1455 "select-frame function" commands. */
1457 static void
1458 frame_selection_by_function_completer (struct cmd_list_element *ignore,
1459 completion_tracker &tracker,
1460 const char *text, const char *word)
1462 /* This is used to complete function names within a stack. It would be
1463 nice if we only offered functions that were actually in the stack.
1464 However, this would mean unwinding the stack to completion, which
1465 could take too long, or on a corrupted stack, possibly not end.
1466 Instead, we offer all symbol names as a safer choice. */
1467 collect_symbol_completion_matches (tracker,
1468 complete_symbol_mode::EXPRESSION,
1469 symbol_name_match_type::EXPRESSION,
1470 text, word);
1473 /* Core of all the "info frame" sub-commands. Print information about a
1474 frame FI. If SELECTED_FRAME_P is true then the user didn't provide a
1475 frame specification, they just entered 'info frame'. If the user did
1476 provide a frame specification (for example 'info frame 0', 'info frame
1477 level 1') then SELECTED_FRAME_P will be false. */
1479 static void
1480 info_frame_command_core (const frame_info_ptr &fi, bool selected_frame_p)
1482 struct symbol *func;
1483 struct symtab *s;
1484 frame_info_ptr calling_frame_info;
1485 int numregs;
1486 const char *funname = 0;
1487 enum language funlang = language_unknown;
1488 const char *pc_regname;
1489 struct gdbarch *gdbarch;
1490 CORE_ADDR frame_pc;
1491 int frame_pc_p;
1492 /* Initialize it to avoid "may be used uninitialized" warning. */
1493 CORE_ADDR caller_pc = 0;
1494 int caller_pc_p = 0;
1496 gdbarch = get_frame_arch (fi);
1498 /* Name of the value returned by get_frame_pc(). Per comments, "pc"
1499 is not a good name. */
1500 if (gdbarch_pc_regnum (gdbarch) >= 0)
1501 /* OK, this is weird. The gdbarch_pc_regnum hardware register's value can
1502 easily not match that of the internal value returned by
1503 get_frame_pc(). */
1504 pc_regname = gdbarch_register_name (gdbarch, gdbarch_pc_regnum (gdbarch));
1505 else
1506 /* But then, this is weird to. Even without gdbarch_pc_regnum, an
1507 architectures will often have a hardware register called "pc",
1508 and that register's value, again, can easily not match
1509 get_frame_pc(). */
1510 pc_regname = "pc";
1512 frame_pc_p = get_frame_pc_if_available (fi, &frame_pc);
1513 func = get_frame_function (fi);
1514 symtab_and_line sal = find_frame_sal (fi);
1515 s = sal.symtab;
1516 gdb::unique_xmalloc_ptr<char> func_only;
1517 if (func)
1519 funname = func->print_name ();
1520 funlang = func->language ();
1521 if (funlang == language_cplus)
1523 /* It seems appropriate to use print_name() here,
1524 to display the demangled name that we already have
1525 stored in the symbol table, but we stored a version
1526 with DMGL_PARAMS turned on, and here we don't want to
1527 display parameters. So remove the parameters. */
1528 func_only = cp_remove_params (funname);
1530 if (func_only)
1531 funname = func_only.get ();
1534 else if (frame_pc_p)
1536 struct bound_minimal_symbol msymbol;
1538 msymbol = lookup_minimal_symbol_by_pc (frame_pc);
1539 if (msymbol.minsym != NULL)
1541 funname = msymbol.minsym->print_name ();
1542 funlang = msymbol.minsym->language ();
1545 calling_frame_info = get_prev_frame (fi);
1547 if (selected_frame_p && frame_relative_level (fi) >= 0)
1549 gdb_printf (_("Stack level %d, frame at "),
1550 frame_relative_level (fi));
1552 else
1554 gdb_printf (_("Stack frame at "));
1556 gdb_puts (paddress (gdbarch, get_frame_base (fi)));
1557 gdb_printf (":\n");
1558 gdb_printf (" %s = ", pc_regname);
1559 if (frame_pc_p)
1560 gdb_puts (paddress (gdbarch, get_frame_pc (fi)));
1561 else
1562 fputs_styled ("<unavailable>", metadata_style.style (), gdb_stdout);
1564 gdb_stdout->wrap_here (3);
1565 if (funname)
1567 gdb_printf (" in ");
1568 gdb_puts (funname);
1570 gdb_stdout->wrap_here (3);
1571 if (sal.symtab)
1572 gdb_printf
1573 (" (%ps:%d)",
1574 styled_string (file_name_style.style (),
1575 symtab_to_filename_for_display (sal.symtab)),
1576 sal.line);
1577 gdb_puts ("; ");
1578 gdb_stdout->wrap_here (4);
1579 gdb_printf ("saved %s = ", pc_regname);
1581 if (!frame_id_p (frame_unwind_caller_id (fi)))
1582 val_print_not_saved (gdb_stdout);
1583 else
1587 caller_pc = frame_unwind_caller_pc (fi);
1588 caller_pc_p = 1;
1590 catch (const gdb_exception_error &ex)
1592 switch (ex.error)
1594 case NOT_AVAILABLE_ERROR:
1595 val_print_unavailable (gdb_stdout);
1596 break;
1597 case OPTIMIZED_OUT_ERROR:
1598 val_print_not_saved (gdb_stdout);
1599 break;
1600 default:
1601 fprintf_styled (gdb_stdout, metadata_style.style (),
1602 _("<error: %s>"),
1603 ex.what ());
1604 break;
1609 if (caller_pc_p)
1610 gdb_puts (paddress (gdbarch, caller_pc));
1611 gdb_printf ("\n");
1613 if (calling_frame_info == NULL)
1615 enum unwind_stop_reason reason;
1617 reason = get_frame_unwind_stop_reason (fi);
1618 if (reason != UNWIND_NO_REASON)
1619 gdb_printf (_(" Outermost frame: %s\n"),
1620 frame_stop_reason_string (fi));
1622 else if (get_frame_type (fi) == TAILCALL_FRAME)
1623 gdb_puts (" tail call frame");
1624 else if (get_frame_type (fi) == INLINE_FRAME)
1625 gdb_printf (" inlined into frame %d",
1626 frame_relative_level (get_prev_frame (fi)));
1627 else
1629 gdb_printf (" called by frame at ");
1630 gdb_puts (paddress (gdbarch, get_frame_base (calling_frame_info)));
1632 if (get_next_frame (fi) && calling_frame_info)
1633 gdb_puts (",");
1634 gdb_stdout->wrap_here (3);
1635 if (get_next_frame (fi))
1637 gdb_printf (" caller of frame at ");
1638 gdb_puts (paddress (gdbarch, get_frame_base (get_next_frame (fi))));
1640 if (get_next_frame (fi) || calling_frame_info)
1641 gdb_puts ("\n");
1643 if (s)
1644 gdb_printf (" source language %s.\n",
1645 language_str (s->language ()));
1648 /* Address of the argument list for this frame, or 0. */
1649 CORE_ADDR arg_list = get_frame_args_address (fi);
1650 /* Number of args for this frame, or -1 if unknown. */
1651 int numargs;
1653 if (arg_list == 0)
1654 gdb_printf (" Arglist at unknown address.\n");
1655 else
1657 gdb_printf (" Arglist at ");
1658 gdb_puts (paddress (gdbarch, arg_list));
1659 gdb_printf (",");
1661 if (!gdbarch_frame_num_args_p (gdbarch))
1663 numargs = -1;
1664 gdb_puts (" args: ");
1666 else
1668 numargs = gdbarch_frame_num_args (gdbarch, fi);
1669 gdb_assert (numargs >= 0);
1670 if (numargs == 0)
1671 gdb_puts (" no args.");
1672 else if (numargs == 1)
1673 gdb_puts (" 1 arg: ");
1674 else
1675 gdb_printf (" %d args: ", numargs);
1678 print_frame_args (user_frame_print_options,
1679 func, fi, numargs, gdb_stdout);
1680 gdb_puts ("\n");
1684 /* Address of the local variables for this frame, or 0. */
1685 CORE_ADDR arg_list = get_frame_locals_address (fi);
1687 if (arg_list == 0)
1688 gdb_printf (" Locals at unknown address,");
1689 else
1691 gdb_printf (" Locals at ");
1692 gdb_puts (paddress (gdbarch, arg_list));
1693 gdb_printf (",");
1697 /* Print as much information as possible on the location of all the
1698 registers. */
1700 int count;
1701 int i;
1702 int need_nl = 1;
1703 int sp_regnum = gdbarch_sp_regnum (gdbarch);
1705 /* The sp is special; what's displayed isn't the save address, but
1706 the value of the previous frame's sp. This is a legacy thing,
1707 at one stage the frame cached the previous frame's SP instead
1708 of its address, hence it was easiest to just display the cached
1709 value. */
1710 if (sp_regnum >= 0)
1712 struct value *value = frame_unwind_register_value (fi, sp_regnum);
1713 gdb_assert (value != NULL);
1715 if (!value->optimized_out () && value->entirely_available ())
1717 if (value->lval () == not_lval)
1719 CORE_ADDR sp;
1720 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1721 int sp_size = register_size (gdbarch, sp_regnum);
1723 sp = extract_unsigned_integer
1724 (value->contents_all ().data (), sp_size, byte_order);
1726 gdb_printf (" Previous frame's sp is ");
1727 gdb_puts (paddress (gdbarch, sp));
1728 gdb_printf ("\n");
1730 else if (value->lval () == lval_memory)
1732 gdb_printf (" Previous frame's sp at ");
1733 gdb_puts (paddress (gdbarch, value->address ()));
1734 gdb_printf ("\n");
1736 else if (value->lval () == lval_register)
1737 gdb_printf (" Previous frame's sp in %s\n",
1738 gdbarch_register_name (gdbarch, value->regnum ()));
1740 release_value (value);
1741 need_nl = 0;
1743 /* else keep quiet. */
1746 count = 0;
1747 numregs = gdbarch_num_cooked_regs (gdbarch);
1748 for (i = 0; i < numregs; i++)
1749 if (i != sp_regnum
1750 && gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
1752 enum lval_type lval;
1753 int optimized;
1754 int unavailable;
1755 CORE_ADDR addr;
1756 int realnum;
1758 /* Find out the location of the saved register without
1759 fetching the corresponding value. */
1760 frame_register_unwind (fi, i, &optimized, &unavailable,
1761 &lval, &addr, &realnum, NULL);
1762 /* For moment, only display registers that were saved on the
1763 stack. */
1764 if (!optimized && !unavailable && lval == lval_memory)
1766 if (count == 0)
1767 gdb_puts (" Saved registers:\n ");
1768 else
1769 gdb_puts (",");
1770 gdb_stdout->wrap_here (1);
1771 gdb_printf (" %s at ",
1772 gdbarch_register_name (gdbarch, i));
1773 gdb_puts (paddress (gdbarch, addr));
1774 count++;
1777 if (count || need_nl)
1778 gdb_puts ("\n");
1782 /* Return the innermost frame at level LEVEL. */
1784 static frame_info_ptr
1785 leading_innermost_frame (int level)
1787 frame_info_ptr leading;
1789 leading = get_current_frame ();
1791 gdb_assert (level >= 0);
1793 while (leading != nullptr && level)
1795 QUIT;
1796 leading = get_prev_frame (leading);
1797 level--;
1800 return leading;
1803 /* Return the starting frame needed to handle COUNT outermost frames. */
1805 static frame_info_ptr
1806 trailing_outermost_frame (int count)
1808 frame_info_ptr current;
1809 frame_info_ptr trailing;
1811 trailing = get_current_frame ();
1813 gdb_assert (count > 0);
1815 current = trailing;
1816 while (current != nullptr && count--)
1818 QUIT;
1819 current = get_prev_frame (current);
1822 /* Will stop when CURRENT reaches the top of the stack.
1823 TRAILING will be COUNT below it. */
1824 while (current != nullptr)
1826 QUIT;
1827 trailing = get_prev_frame (trailing);
1828 current = get_prev_frame (current);
1831 return trailing;
1834 /* The core of all the "select-frame" sub-commands. Just wraps a call to
1835 SELECT_FRAME. */
1837 static void
1838 select_frame_command_core (const frame_info_ptr &fi, bool ignored)
1840 frame_info_ptr prev_frame = get_selected_frame ();
1841 select_frame (fi);
1842 if (get_selected_frame () != prev_frame)
1843 notify_user_selected_context_changed (USER_SELECTED_FRAME);
1846 /* The core of all the "frame" sub-commands. Select frame FI, and if this
1847 means we change frame send out a change notification (otherwise, just
1848 reprint the current frame summary). */
1850 static void
1851 frame_command_core (const frame_info_ptr &fi, bool ignored)
1853 frame_info_ptr prev_frame = get_selected_frame ();
1854 select_frame (fi);
1855 if (get_selected_frame () != prev_frame)
1856 notify_user_selected_context_changed (USER_SELECTED_FRAME);
1857 else
1858 print_selected_thread_frame (current_uiout, USER_SELECTED_FRAME);
1861 /* The three commands 'frame', 'select-frame', and 'info frame' all have a
1862 common set of sub-commands that allow a specific frame to be selected.
1863 All of the sub-command functions are static methods within this class
1864 template which is then instantiated below. The template parameter is a
1865 callback used to implement the functionality of the base command
1866 ('frame', 'select-frame', or 'info frame').
1868 In the template parameter FI is the frame being selected. The
1869 SELECTED_FRAME_P flag is true if the frame being selected was done by
1870 default, which happens when the user uses the base command with no
1871 arguments. For example the commands 'info frame', 'select-frame',
1872 'frame' will all cause SELECTED_FRAME_P to be true. In all other cases
1873 SELECTED_FRAME_P is false. */
1875 template <void (*FPTR) (const frame_info_ptr &fi, bool selected_frame_p)>
1876 class frame_command_helper
1878 public:
1880 /* The "frame level" family of commands. The ARG is an integer that is
1881 the frame's level in the stack. */
1882 static void
1883 level (const char *arg, int from_tty)
1885 int level = value_as_long (parse_and_eval (arg));
1886 frame_info_ptr fid
1887 = find_relative_frame (get_current_frame (), &level);
1888 if (level != 0)
1889 error (_("No frame at level %s."), arg);
1890 FPTR (fid, false);
1893 /* The "frame address" family of commands. ARG is a stack-pointer
1894 address for an existing frame. This command does not allow new
1895 frames to be created. */
1897 static void
1898 address (const char *arg, int from_tty)
1900 CORE_ADDR addr = value_as_address (parse_and_eval (arg));
1901 frame_info_ptr fid = find_frame_for_address (addr);
1902 if (fid == NULL)
1903 error (_("No frame at address %s."), arg);
1904 FPTR (fid, false);
1907 /* The "frame view" family of commands. ARG is one or two addresses and
1908 is used to view a frame that might be outside the current backtrace.
1909 The addresses are stack-pointer address, and (optional) pc-address. */
1911 static void
1912 view (const char *args, int from_tty)
1914 frame_info_ptr fid;
1916 if (args == NULL)
1917 error (_("Missing address argument to view a frame"));
1919 gdb_argv argv (args);
1921 if (argv.count () == 2)
1923 CORE_ADDR addr[2];
1925 addr [0] = value_as_address (parse_and_eval (argv[0]));
1926 addr [1] = value_as_address (parse_and_eval (argv[1]));
1927 fid = create_new_frame (addr[0], addr[1]);
1929 else
1931 CORE_ADDR addr = value_as_address (parse_and_eval (argv[0]));
1932 fid = create_new_frame (addr, false);
1934 FPTR (fid, false);
1937 /* The "frame function" family of commands. ARG is the name of a
1938 function within the stack, the first function (searching from frame
1939 0) with that name will be selected. */
1941 static void
1942 function (const char *arg, int from_tty)
1944 if (arg == NULL)
1945 error (_("Missing function name argument"));
1946 frame_info_ptr fid = find_frame_for_function (arg);
1947 if (fid == NULL)
1948 error (_("No frame for function \"%s\"."), arg);
1949 FPTR (fid, false);
1952 /* The "frame" base command, that is, when no sub-command is specified.
1953 If one argument is provided then we assume that this is a frame's
1954 level as historically, this was the supported command syntax that was
1955 used most often.
1957 If no argument is provided, then the current frame is selected. */
1959 static void
1960 base_command (const char *arg, int from_tty)
1962 if (arg == NULL)
1963 FPTR (get_selected_frame (_("No stack.")), true);
1964 else
1965 level (arg, from_tty);
1969 /* Instantiate three FRAME_COMMAND_HELPER instances to implement the
1970 sub-commands for 'info frame', 'frame', and 'select-frame' commands. */
1972 static frame_command_helper <info_frame_command_core> info_frame_cmd;
1973 static frame_command_helper <frame_command_core> frame_cmd;
1974 static frame_command_helper <select_frame_command_core> select_frame_cmd;
1976 /* Print briefly all stack frames or just the innermost COUNT_EXP
1977 frames. */
1979 static void
1980 backtrace_command_1 (const frame_print_options &fp_opts,
1981 const backtrace_cmd_options &bt_opts,
1982 const char *count_exp, int from_tty)
1985 frame_info_ptr fi;
1986 int count;
1987 int py_start = 0, py_end = 0;
1988 enum ext_lang_bt_status result = EXT_LANG_BT_ERROR;
1990 if (!target_has_stack ())
1991 error (_("No stack."));
1993 if (count_exp)
1995 count = parse_and_eval_long (count_exp);
1996 if (count < 0)
1997 py_start = count;
1998 else
2000 py_start = 0;
2001 /* The argument to apply_ext_lang_frame_filter is the number
2002 of the final frame to print, and frames start at 0. */
2003 py_end = count - 1;
2006 else
2008 py_end = -1;
2009 count = -1;
2012 frame_filter_flags flags = 0;
2014 if (bt_opts.full)
2015 flags |= PRINT_LOCALS;
2016 if (bt_opts.hide)
2017 flags |= PRINT_HIDE;
2018 if (fp_opts.print_raw_frame_arguments)
2019 flags |= PRINT_RAW_FRAME_ARGUMENTS;
2021 if (!bt_opts.no_filters)
2023 enum ext_lang_frame_args arg_type;
2025 flags |= PRINT_LEVEL | PRINT_FRAME_INFO | PRINT_ARGS;
2026 if (from_tty)
2027 flags |= PRINT_MORE_FRAMES;
2029 if (fp_opts.print_frame_arguments == print_frame_arguments_scalars)
2030 arg_type = CLI_SCALAR_VALUES;
2031 else if (fp_opts.print_frame_arguments == print_frame_arguments_all)
2032 arg_type = CLI_ALL_VALUES;
2033 else if (fp_opts.print_frame_arguments == print_frame_arguments_presence)
2034 arg_type = CLI_PRESENCE;
2035 else if (fp_opts.print_frame_arguments == print_frame_arguments_none)
2036 arg_type = NO_VALUES;
2037 else
2038 gdb_assert (0);
2040 result = apply_ext_lang_frame_filter (get_current_frame (), flags,
2041 arg_type, current_uiout,
2042 py_start, py_end);
2045 /* Run the inbuilt backtrace if there are no filters registered, or
2046 "-no-filters" has been specified from the command. */
2047 if (bt_opts.no_filters || result == EXT_LANG_BT_NO_FILTERS)
2049 frame_info_ptr trailing;
2051 /* The following code must do two things. First, it must set the
2052 variable TRAILING to the frame from which we should start
2053 printing. Second, it must set the variable count to the number
2054 of frames which we should print, or -1 if all of them. */
2056 if (count_exp != NULL && count < 0)
2058 trailing = trailing_outermost_frame (-count);
2059 count = -1;
2061 else
2062 trailing = get_current_frame ();
2064 for (fi = trailing; fi && count--; fi = get_prev_frame (fi))
2066 QUIT;
2068 /* Don't use print_stack_frame; if an error() occurs it probably
2069 means further attempts to backtrace would fail (on the other
2070 hand, perhaps the code does or could be fixed to make sure
2071 the frame->prev field gets set to NULL in that case). */
2073 print_frame_info (fp_opts, fi, 1, LOCATION, 1, 0);
2074 if ((flags & PRINT_LOCALS) != 0)
2075 print_frame_local_vars (fi, false, NULL, NULL, 1, gdb_stdout);
2077 /* Save the last frame to check for error conditions. */
2078 trailing = fi;
2081 /* If we've stopped before the end, mention that. */
2082 if (fi && from_tty)
2083 gdb_printf (_("(More stack frames follow...)\n"));
2085 /* If we've run out of frames, and the reason appears to be an error
2086 condition, print it. */
2087 if (fi == NULL && trailing != NULL)
2089 enum unwind_stop_reason reason;
2091 reason = get_frame_unwind_stop_reason (trailing);
2092 if (reason >= UNWIND_FIRST_ERROR)
2093 gdb_printf (_("Backtrace stopped: %s\n"),
2094 frame_stop_reason_string (trailing));
2099 /* Create an option_def_group array grouping all the "backtrace"
2100 options, with FP_OPTS, BT_CMD_OPT, SET_BT_OPTS as contexts. */
2102 static inline std::array<gdb::option::option_def_group, 3>
2103 make_backtrace_options_def_group (frame_print_options *fp_opts,
2104 backtrace_cmd_options *bt_cmd_opts,
2105 set_backtrace_options *set_bt_opts)
2107 return {{
2108 { {frame_print_option_defs}, fp_opts },
2109 { {set_backtrace_option_defs}, set_bt_opts },
2110 { {backtrace_command_option_defs}, bt_cmd_opts }
2114 /* Parse the backtrace command's qualifiers. Returns ARG advanced
2115 past the qualifiers, if any. BT_CMD_OPTS, if not null, is used to
2116 store the parsed qualifiers. */
2118 static const char *
2119 parse_backtrace_qualifiers (const char *arg,
2120 backtrace_cmd_options *bt_cmd_opts = nullptr)
2122 while (true)
2124 const char *save_arg = arg;
2125 std::string this_arg = extract_arg (&arg);
2127 if (this_arg.empty ())
2128 return arg;
2130 if (startswith ("no-filters", this_arg))
2132 if (bt_cmd_opts != nullptr)
2133 bt_cmd_opts->no_filters = true;
2135 else if (startswith ("full", this_arg))
2137 if (bt_cmd_opts != nullptr)
2138 bt_cmd_opts->full = true;
2140 else if (startswith ("hide", this_arg))
2142 if (bt_cmd_opts != nullptr)
2143 bt_cmd_opts->hide = true;
2145 else
2147 /* Not a recognized qualifier, so stop. */
2148 return save_arg;
2153 static void
2154 backtrace_command (const char *arg, int from_tty)
2156 frame_print_options fp_opts = user_frame_print_options;
2157 backtrace_cmd_options bt_cmd_opts;
2158 set_backtrace_options set_bt_opts = user_set_backtrace_options;
2160 auto grp
2161 = make_backtrace_options_def_group (&fp_opts, &bt_cmd_opts, &set_bt_opts);
2162 gdb::option::process_options
2163 (&arg, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
2165 /* Parse non-'-'-prefixed qualifiers, for backwards
2166 compatibility. */
2167 if (arg != NULL)
2169 arg = parse_backtrace_qualifiers (arg, &bt_cmd_opts);
2170 if (*arg == '\0')
2171 arg = NULL;
2174 /* These options are handled quite deep in the unwind machinery, so
2175 we get to pass them down by swapping globals. */
2176 scoped_restore restore_set_backtrace_options
2177 = make_scoped_restore (&user_set_backtrace_options, set_bt_opts);
2179 backtrace_command_1 (fp_opts, bt_cmd_opts, arg, from_tty);
2182 /* Completer for the "backtrace" command. */
2184 static void
2185 backtrace_command_completer (struct cmd_list_element *ignore,
2186 completion_tracker &tracker,
2187 const char *text, const char */*word*/)
2189 const auto group
2190 = make_backtrace_options_def_group (nullptr, nullptr, nullptr);
2191 if (gdb::option::complete_options
2192 (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
2193 return;
2195 if (*text != '\0')
2197 const char *p = skip_to_space (text);
2198 if (*p == '\0')
2200 static const char *const backtrace_cmd_qualifier_choices[] = {
2201 "full", "no-filters", "hide", nullptr,
2203 complete_on_enum (tracker, backtrace_cmd_qualifier_choices,
2204 text, text);
2206 if (tracker.have_completions ())
2207 return;
2209 else
2211 const char *cmd = parse_backtrace_qualifiers (text);
2212 tracker.advance_custom_word_point_by (cmd - text);
2213 text = cmd;
2217 const char *word = advance_to_expression_complete_word_point (tracker, text);
2218 expression_completer (ignore, tracker, text, word);
2221 /* Iterate over the local variables of a block B, calling CB. */
2223 static void
2224 iterate_over_block_locals (const struct block *b,
2225 iterate_over_block_arg_local_vars_cb cb)
2227 for (struct symbol *sym : block_iterator_range (b))
2229 switch (sym->aclass ())
2231 case LOC_CONST:
2232 case LOC_LOCAL:
2233 case LOC_REGISTER:
2234 case LOC_STATIC:
2235 case LOC_COMPUTED:
2236 case LOC_OPTIMIZED_OUT:
2237 if (sym->is_argument ())
2238 break;
2239 if (sym->domain () == COMMON_BLOCK_DOMAIN)
2240 break;
2241 cb (sym->print_name (), sym);
2242 break;
2244 default:
2245 /* Ignore symbols which are not locals. */
2246 break;
2251 /* Iterate over all the local variables in block B, including all its
2252 superblocks, stopping when the top-level block is reached. */
2254 void
2255 iterate_over_block_local_vars (const struct block *block,
2256 iterate_over_block_arg_local_vars_cb cb)
2258 while (block)
2260 iterate_over_block_locals (block, cb);
2261 /* After handling the function's top-level block, stop. Don't
2262 continue to its superblock, the block of per-file
2263 symbols. */
2264 if (block->function ())
2265 break;
2266 block = block->superblock ();
2270 /* Data to be passed around in the calls to the locals and args
2271 iterators. */
2273 struct print_variable_and_value_data
2275 std::optional<compiled_regex> preg;
2276 std::optional<compiled_regex> treg;
2277 struct frame_id frame_id;
2278 int num_tabs;
2279 struct ui_file *stream;
2280 int values_printed;
2282 void operator() (const char *print_name, struct symbol *sym);
2285 /* The callback for the locals and args iterators. */
2287 void
2288 print_variable_and_value_data::operator() (const char *print_name,
2289 struct symbol *sym)
2291 frame_info_ptr frame;
2293 if (preg.has_value ()
2294 && preg->exec (sym->natural_name (), 0, NULL, 0) != 0)
2295 return;
2296 if (treg.has_value ()
2297 && !treg_matches_sym_type_name (*treg, sym))
2298 return;
2299 if (language_def (sym->language ())->symbol_printing_suppressed (sym))
2300 return;
2302 frame = frame_find_by_id (frame_id);
2303 if (frame == NULL)
2305 warning (_("Unable to restore previously selected frame."));
2306 return;
2309 print_variable_and_value (print_name, sym, frame, stream, num_tabs);
2311 values_printed = 1;
2314 /* Prepares the regular expression REG from REGEXP.
2315 If REGEXP is NULL, it results in an empty regular expression. */
2317 static void
2318 prepare_reg (const char *regexp, std::optional<compiled_regex> *reg)
2320 if (regexp != NULL)
2322 int cflags = REG_NOSUB | (case_sensitivity == case_sensitive_off
2323 ? REG_ICASE : 0);
2324 reg->emplace (regexp, cflags, _("Invalid regexp"));
2326 else
2327 reg->reset ();
2330 /* Print all variables from the innermost up to the function block of FRAME.
2331 Print them with values to STREAM indented by NUM_TABS.
2332 If REGEXP is not NULL, only print local variables whose name
2333 matches REGEXP.
2334 If T_REGEXP is not NULL, only print local variables whose type
2335 matches T_REGEXP.
2336 If no local variables have been printed and !QUIET, prints a message
2337 explaining why no local variables could be printed. */
2339 static void
2340 print_frame_local_vars (const frame_info_ptr &frame,
2341 bool quiet,
2342 const char *regexp, const char *t_regexp,
2343 int num_tabs, struct ui_file *stream)
2345 struct print_variable_and_value_data cb_data;
2346 const struct block *block;
2347 CORE_ADDR pc;
2349 if (!get_frame_pc_if_available (frame, &pc))
2351 if (!quiet)
2352 gdb_printf (stream,
2353 _("PC unavailable, cannot determine locals.\n"));
2354 return;
2357 block = get_frame_block (frame, 0);
2358 if (block == 0)
2360 if (!quiet)
2361 gdb_printf (stream, "No symbol table info available.\n");
2362 return;
2365 prepare_reg (regexp, &cb_data.preg);
2366 prepare_reg (t_regexp, &cb_data.treg);
2367 cb_data.frame_id = get_frame_id (frame);
2368 cb_data.num_tabs = 4 * num_tabs;
2369 cb_data.stream = stream;
2370 cb_data.values_printed = 0;
2372 /* Temporarily change the selected frame to the given FRAME.
2373 This allows routines that rely on the selected frame instead
2374 of being given a frame as parameter to use the correct frame. */
2375 scoped_restore_selected_frame restore_selected_frame;
2376 select_frame (frame);
2378 iterate_over_block_local_vars (block, cb_data);
2380 if (!cb_data.values_printed && !quiet)
2382 if (regexp == NULL && t_regexp == NULL)
2383 gdb_printf (stream, _("No locals.\n"));
2384 else
2385 gdb_printf (stream, _("No matching locals.\n"));
2389 /* Structure to hold the values of the options used by the 'info
2390 variables' command and other similar commands. These correspond to the
2391 -q and -t options. */
2393 struct info_print_options
2395 bool quiet = false;
2396 std::string type_regexp;
2399 /* The options used by the 'info locals' and 'info args' commands. */
2401 static const gdb::option::option_def info_print_options_defs[] = {
2402 gdb::option::boolean_option_def<info_print_options> {
2403 "q",
2404 [] (info_print_options *opt) { return &opt->quiet; },
2405 nullptr, /* show_cmd_cb */
2406 nullptr /* set_doc */
2409 gdb::option::string_option_def<info_print_options> {
2410 "t",
2411 [] (info_print_options *opt) { return &opt->type_regexp; },
2412 nullptr, /* show_cmd_cb */
2413 nullptr /* set_doc */
2417 /* Returns the option group used by 'info locals' and 'info args'
2418 commands. */
2420 static gdb::option::option_def_group
2421 make_info_print_options_def_group (info_print_options *opts)
2423 return {{info_print_options_defs}, opts};
2426 /* Command completer for 'info locals' and 'info args'. */
2428 static void
2429 info_print_command_completer (struct cmd_list_element *ignore,
2430 completion_tracker &tracker,
2431 const char *text, const char * /* word */)
2433 const auto group
2434 = make_info_print_options_def_group (nullptr);
2435 if (gdb::option::complete_options
2436 (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
2437 return;
2439 const char *word = advance_to_expression_complete_word_point (tracker, text);
2440 symbol_completer (ignore, tracker, text, word);
2443 /* Implement the 'info locals' command. */
2445 void
2446 info_locals_command (const char *args, int from_tty)
2448 info_print_options opts;
2449 auto grp = make_info_print_options_def_group (&opts);
2450 gdb::option::process_options
2451 (&args, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
2452 if (args != nullptr && *args == '\0')
2453 args = nullptr;
2455 print_frame_local_vars
2456 (get_selected_frame (_("No frame selected.")),
2457 opts.quiet, args,
2458 opts.type_regexp.empty () ? nullptr : opts.type_regexp.c_str (),
2459 0, gdb_stdout);
2462 /* Iterate over all the argument variables in block B. */
2464 void
2465 iterate_over_block_arg_vars (const struct block *b,
2466 iterate_over_block_arg_local_vars_cb cb)
2468 for (struct symbol *sym : block_iterator_range (b))
2470 /* Don't worry about things which aren't arguments. */
2471 if (sym->is_argument ())
2473 /* We have to look up the symbol because arguments can have
2474 two entries (one a parameter, one a local) and the one we
2475 want is the local, which lookup_symbol will find for us.
2476 This includes gcc1 (not gcc2) on the sparc when passing a
2477 small structure and gcc2 when the argument type is float
2478 and it is passed as a double and converted to float by
2479 the prologue (in the latter case the type of the LOC_ARG
2480 symbol is double and the type of the LOC_LOCAL symbol is
2481 float). There are also LOC_ARG/LOC_REGISTER pairs which
2482 are not combined in symbol-reading. */
2484 struct symbol *sym2
2485 = lookup_symbol_search_name (sym->search_name (),
2486 b, SEARCH_VAR_DOMAIN).symbol;
2487 cb (sym->print_name (), sym2);
2492 /* Print all argument variables of the function of FRAME.
2493 Print them with values to STREAM.
2494 If REGEXP is not NULL, only print argument variables whose name
2495 matches REGEXP.
2496 If T_REGEXP is not NULL, only print argument variables whose type
2497 matches T_REGEXP.
2498 If no argument variables have been printed and !QUIET, prints a message
2499 explaining why no argument variables could be printed. */
2501 static void
2502 print_frame_arg_vars (const frame_info_ptr &frame,
2503 bool quiet,
2504 const char *regexp, const char *t_regexp,
2505 struct ui_file *stream)
2507 struct print_variable_and_value_data cb_data;
2508 struct symbol *func;
2509 CORE_ADDR pc;
2510 std::optional<compiled_regex> preg;
2511 std::optional<compiled_regex> treg;
2513 if (!get_frame_pc_if_available (frame, &pc))
2515 if (!quiet)
2516 gdb_printf (stream,
2517 _("PC unavailable, cannot determine args.\n"));
2518 return;
2521 func = get_frame_function (frame);
2522 if (func == NULL)
2524 if (!quiet)
2525 gdb_printf (stream, _("No symbol table info available.\n"));
2526 return;
2529 prepare_reg (regexp, &cb_data.preg);
2530 prepare_reg (t_regexp, &cb_data.treg);
2531 cb_data.frame_id = get_frame_id (frame);
2532 cb_data.num_tabs = 0;
2533 cb_data.stream = stream;
2534 cb_data.values_printed = 0;
2536 iterate_over_block_arg_vars (func->value_block (), cb_data);
2538 if (!cb_data.values_printed && !quiet)
2540 if (regexp == NULL && t_regexp == NULL)
2541 gdb_printf (stream, _("No arguments.\n"));
2542 else
2543 gdb_printf (stream, _("No matching arguments.\n"));
2547 /* Implement the 'info args' command. */
2549 void
2550 info_args_command (const char *args, int from_tty)
2552 info_print_options opts;
2553 auto grp = make_info_print_options_def_group (&opts);
2554 gdb::option::process_options
2555 (&args, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
2556 if (args != nullptr && *args == '\0')
2557 args = nullptr;
2559 print_frame_arg_vars
2560 (get_selected_frame (_("No frame selected.")),
2561 opts.quiet, args,
2562 opts.type_regexp.empty () ? nullptr : opts.type_regexp.c_str (),
2563 gdb_stdout);
2566 /* Return the symbol-block in which the selected frame is executing.
2567 Can return zero under various legitimate circumstances.
2569 If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
2570 code address within the block returned. We use this to decide
2571 which macros are in scope. */
2573 const struct block *
2574 get_selected_block (CORE_ADDR *addr_in_block)
2576 if (!has_stack_frames ())
2577 return 0;
2579 return get_frame_block (get_selected_frame (NULL), addr_in_block);
2582 /* Find a frame a certain number of levels away from FRAME.
2583 LEVEL_OFFSET_PTR points to an int containing the number of levels.
2584 Positive means go to earlier frames (up); negative, the reverse.
2585 The int that contains the number of levels is counted toward
2586 zero as the frames for those levels are found.
2587 If the top or bottom frame is reached, that frame is returned,
2588 but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
2589 how much farther the original request asked to go. */
2591 frame_info_ptr
2592 find_relative_frame (frame_info_ptr frame, int *level_offset_ptr)
2594 /* Going up is simple: just call get_prev_frame enough times or
2595 until the initial frame is reached. */
2596 while (*level_offset_ptr > 0)
2598 frame_info_ptr prev = get_prev_frame (frame);
2600 if (!prev)
2601 break;
2602 (*level_offset_ptr)--;
2603 frame = prev;
2606 /* Going down is just as simple. */
2607 while (*level_offset_ptr < 0)
2609 frame_info_ptr next = get_next_frame (frame);
2611 if (!next)
2612 break;
2613 (*level_offset_ptr)++;
2614 frame = next;
2617 return frame;
2620 /* Select the frame up one or COUNT_EXP stack levels from the
2621 previously selected frame, and print it briefly. */
2623 static void
2624 up_silently_base (const char *count_exp)
2626 frame_info_ptr frame;
2627 int count = 1;
2629 if (count_exp)
2630 count = parse_and_eval_long (count_exp);
2632 frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2633 if (count != 0 && count_exp == NULL)
2634 error (_("Initial frame selected; you cannot go up."));
2635 select_frame (frame);
2638 static void
2639 up_silently_command (const char *count_exp, int from_tty)
2641 up_silently_base (count_exp);
2644 static void
2645 up_command (const char *count_exp, int from_tty)
2647 up_silently_base (count_exp);
2648 notify_user_selected_context_changed (USER_SELECTED_FRAME);
2651 /* Select the frame down one or COUNT_EXP stack levels from the previously
2652 selected frame, and print it briefly. */
2654 static void
2655 down_silently_base (const char *count_exp)
2657 frame_info_ptr frame;
2658 int count = -1;
2660 if (count_exp)
2661 count = -parse_and_eval_long (count_exp);
2663 frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2664 if (count != 0 && count_exp == NULL)
2666 /* We only do this if COUNT_EXP is not specified. That way
2667 "down" means to really go down (and let me know if that is
2668 impossible), but "down 9999" can be used to mean go all the
2669 way down without getting an error. */
2671 error (_("Bottom (innermost) frame selected; you cannot go down."));
2674 select_frame (frame);
2677 static void
2678 down_silently_command (const char *count_exp, int from_tty)
2680 down_silently_base (count_exp);
2683 static void
2684 down_command (const char *count_exp, int from_tty)
2686 down_silently_base (count_exp);
2687 notify_user_selected_context_changed (USER_SELECTED_FRAME);
2690 void
2691 return_command (const char *retval_exp, int from_tty)
2693 /* Initialize it just to avoid a GCC false warning. */
2694 enum return_value_convention rv_conv = RETURN_VALUE_STRUCT_CONVENTION;
2695 frame_info_ptr thisframe;
2696 struct gdbarch *gdbarch;
2697 struct symbol *thisfun;
2698 struct value *return_value = NULL;
2699 struct value *function = NULL;
2700 std::string query_prefix;
2702 thisframe = get_selected_frame ("No selected frame.");
2703 thisfun = get_frame_function (thisframe);
2704 gdbarch = get_frame_arch (thisframe);
2706 if (get_frame_type (get_current_frame ()) == INLINE_FRAME)
2707 error (_("Can not force return from an inlined function."));
2709 /* Compute the return value. If the computation triggers an error,
2710 let it bail. If the return type can't be handled, set
2711 RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
2712 message. */
2713 if (retval_exp)
2715 expression_up retval_expr = parse_expression (retval_exp);
2716 struct type *return_type = NULL;
2718 /* Compute the return value. Should the computation fail, this
2719 call throws an error. */
2720 return_value = retval_expr->evaluate ();
2722 /* Cast return value to the return type of the function. Should
2723 the cast fail, this call throws an error. */
2724 if (thisfun != NULL)
2725 return_type = thisfun->type ()->target_type ();
2726 if (return_type == NULL)
2728 if (retval_expr->first_opcode () != UNOP_CAST
2729 && retval_expr->first_opcode () != UNOP_CAST_TYPE)
2730 error (_("Return value type not available for selected "
2731 "stack frame.\n"
2732 "Please use an explicit cast of the value to return."));
2733 return_type = return_value->type ();
2735 return_type = check_typedef (return_type);
2736 return_value = value_cast (return_type, return_value);
2738 /* Make sure the value is fully evaluated. It may live in the
2739 stack frame we're about to pop. */
2740 if (return_value->lazy ())
2741 return_value->fetch_lazy ();
2743 if (thisfun != NULL)
2744 function = read_var_value (thisfun, NULL, thisframe);
2746 rv_conv = RETURN_VALUE_REGISTER_CONVENTION;
2747 if (return_type->code () == TYPE_CODE_VOID)
2748 /* If the return-type is "void", don't try to find the
2749 return-value's location. However, do still evaluate the
2750 return expression so that, even when the expression result
2751 is discarded, side effects such as "return i++" still
2752 occur. */
2753 return_value = NULL;
2754 else if (thisfun != NULL)
2756 if (is_nocall_function (check_typedef (function->type ())))
2758 query_prefix =
2759 string_printf ("Function '%s' does not follow the target "
2760 "calling convention.\n"
2761 "If you continue, setting the return value "
2762 "will probably lead to unpredictable "
2763 "behaviors.\n",
2764 thisfun->print_name ());
2767 rv_conv = struct_return_convention (gdbarch, function, return_type);
2768 if (rv_conv == RETURN_VALUE_STRUCT_CONVENTION
2769 || rv_conv == RETURN_VALUE_ABI_RETURNS_ADDRESS)
2771 query_prefix = "The location at which to store the "
2772 "function's return value is unknown.\n"
2773 "If you continue, the return value "
2774 "that you specified will be ignored.\n";
2775 return_value = NULL;
2780 /* Does an interactive user really want to do this? Include
2781 information, such as how well GDB can handle the return value, in
2782 the query message. */
2783 if (from_tty)
2785 int confirmed;
2787 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);