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