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