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