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