]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/stack.c
Make xmethods tests not to depend on inferior IO.
[thirdparty/binutils-gdb.git] / gdb / stack.c
CommitLineData
c906108c 1/* Print and select stack frames for GDB, the GNU debugger.
8926118c 2
ecd75fc8 3 Copyright (C) 1986-2014 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"
60250e8b 39#include "exceptions.h"
898c62f5 40#include "reggroups.h"
fc70c2a0 41#include "regcache.h"
a77053c2 42#include "solib.h"
033a42c2 43#include "valprint.h"
8ea051c5 44#include "gdbthread.h"
3567439c 45#include "cp-support.h"
30c33a9f 46#include "disasm.h"
edb3359d 47#include "inline-frame.h"
f8eba3c6 48#include "linespec.h"
529480d0 49#include "cli/cli-utils.h"
77e371c0 50#include "objfiles.h"
c906108c 51
033a42c2
MK
52#include "gdb_assert.h"
53#include <ctype.h>
0e9f083f 54#include <string.h>
c906108c 55
ccefe4c4 56#include "symfile.h"
6dddc817 57#include "extension.h"
ccefe4c4 58
9a4105ab 59void (*deprecated_selected_frame_level_changed_hook) (int);
c906108c 60
2421fe6f 61/* The possible choices of "set print frame-arguments", and the value
88408340
JB
62 of this setting. */
63
40478521 64static const char *const print_frame_arguments_choices[] =
88408340 65 {"all", "scalars", "none", NULL};
476f7b68 66static const char *print_frame_arguments = "scalars";
88408340 67
e7045703
DE
68/* If non-zero, don't invoke pretty-printers for frame arguments. */
69static int print_raw_frame_arguments;
70
e18b2753
JK
71/* The possible choices of "set print entry-values", and the value
72 of this setting. */
73
74const char print_entry_values_no[] = "no";
75const char print_entry_values_only[] = "only";
76const char print_entry_values_preferred[] = "preferred";
77const char print_entry_values_if_needed[] = "if-needed";
78const char print_entry_values_both[] = "both";
79const char print_entry_values_compact[] = "compact";
80const char print_entry_values_default[] = "default";
40478521 81static const char *const print_entry_values_choices[] =
e18b2753
JK
82{
83 print_entry_values_no,
84 print_entry_values_only,
85 print_entry_values_preferred,
86 print_entry_values_if_needed,
87 print_entry_values_both,
88 print_entry_values_compact,
89 print_entry_values_default,
90 NULL
91};
92const char *print_entry_values = print_entry_values_default;
93
c378eb4e 94/* Prototypes for local functions. */
c906108c 95
d9fcf2fb
JM
96static void print_frame_local_vars (struct frame_info *, int,
97 struct ui_file *);
c906108c 98
033a42c2
MK
99static void print_frame (struct frame_info *frame, int print_level,
100 enum print_what print_what, int print_args,
c5394b80
JM
101 struct symtab_and_line sal);
102
1bfeeb0f
JL
103static void set_last_displayed_sal (int valid,
104 struct program_space *pspace,
105 CORE_ADDR addr,
106 struct symtab *symtab,
107 int line);
108
c906108c
SS
109/* Zero means do things normally; we are interacting directly with the
110 user. One means print the full filename and linenumber when a
111 frame is printed, and do so in a format emacs18/emacs19.22 can
112 parse. Two means print similar annotations, but in many more
113 cases and in a slightly different syntax. */
114
115int annotation_level = 0;
1bfeeb0f
JL
116
117/* These variables hold the last symtab and line we displayed to the user.
118 * This is where we insert a breakpoint or a skiplist entry by default. */
119static int last_displayed_sal_valid = 0;
120static struct program_space *last_displayed_pspace = 0;
121static CORE_ADDR last_displayed_addr = 0;
122static struct symtab *last_displayed_symtab = 0;
123static int last_displayed_line = 0;
c906108c 124\f
c5aa993b 125
edb3359d
DJ
126/* Return 1 if we should display the address in addition to the location,
127 because we are in the middle of a statement. */
128
129static int
130frame_show_address (struct frame_info *frame,
131 struct symtab_and_line sal)
132{
133 /* If there is a line number, but no PC, then there is no location
134 information associated with this sal. The only way that should
135 happen is for the call sites of inlined functions (SAL comes from
136 find_frame_sal). Otherwise, we would have some PC range if the
137 SAL came from a line table. */
138 if (sal.line != 0 && sal.pc == 0 && sal.end == 0)
139 {
140 if (get_next_frame (frame) == NULL)
141 gdb_assert (inline_skipped_frames (inferior_ptid) > 0);
142 else
143 gdb_assert (get_frame_type (get_next_frame (frame)) == INLINE_FRAME);
144 return 0;
145 }
146
147 return get_frame_pc (frame) != sal.pc;
148}
149
033a42c2 150/* Show or print a stack frame FRAME briefly. The output is format
d762c46a
AC
151 according to PRINT_LEVEL and PRINT_WHAT printing the frame's
152 relative level, function name, argument list, and file name and
153 line number. If the frame's PC is not at the beginning of the
154 source line, the actual PC is printed at the beginning. */
c906108c
SS
155
156void
033a42c2 157print_stack_frame (struct frame_info *frame, int print_level,
08d72866
PA
158 enum print_what print_what,
159 int set_current_sal)
c906108c 160{
311b5970 161 volatile struct gdb_exception e;
c906108c 162
aaf9e9fd 163 /* For mi, alway print location and address. */
79a45e25 164 if (ui_out_is_mi_like_p (current_uiout))
311b5970 165 print_what = LOC_AND_ADDRESS;
c906108c 166
311b5970
JK
167 TRY_CATCH (e, RETURN_MASK_ERROR)
168 {
08d72866
PA
169 print_frame_info (frame, print_level, print_what, 1 /* print_args */,
170 set_current_sal);
171 if (set_current_sal)
5166082f 172 set_current_sal_from_frame (frame);
311b5970
JK
173 }
174}
c906108c 175
033a42c2
MK
176/* Print nameless arguments of frame FRAME on STREAM, where START is
177 the offset of the first nameless argument, and NUM is the number of
178 nameless arguments to print. FIRST is nonzero if this is the first
179 argument (not just the first nameless argument). */
8d3b0994
AC
180
181static void
033a42c2 182print_frame_nameless_args (struct frame_info *frame, long start, int num,
8d3b0994
AC
183 int first, struct ui_file *stream)
184{
e17a4113
UW
185 struct gdbarch *gdbarch = get_frame_arch (frame);
186 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
8d3b0994
AC
187 int i;
188 CORE_ADDR argsaddr;
189 long arg_value;
190
191 for (i = 0; i < num; i++)
192 {
193 QUIT;
033a42c2 194 argsaddr = get_frame_args_address (frame);
8d3b0994
AC
195 if (!argsaddr)
196 return;
e17a4113
UW
197 arg_value = read_memory_integer (argsaddr + start,
198 sizeof (int), byte_order);
8d3b0994
AC
199 if (!first)
200 fprintf_filtered (stream, ", ");
201 fprintf_filtered (stream, "%ld", arg_value);
202 first = 0;
203 start += sizeof (int);
204 }
205}
206
93d86cef
JK
207/* Print single argument of inferior function. ARG must be already
208 read in.
209
210 Errors are printed as if they would be the parameter value. Use zeroed ARG
211 iff it should not be printed accoring to user settings. */
212
213static void
214print_frame_arg (const struct frame_arg *arg)
215{
216 struct ui_out *uiout = current_uiout;
217 volatile struct gdb_exception except;
218 struct cleanup *old_chain;
f99d8bf4 219 struct ui_file *stb;
93d86cef 220
f99d8bf4
PA
221 stb = mem_fileopen ();
222 old_chain = make_cleanup_ui_file_delete (stb);
93d86cef
JK
223
224 gdb_assert (!arg->val || !arg->error);
e18b2753
JK
225 gdb_assert (arg->entry_kind == print_entry_values_no
226 || arg->entry_kind == print_entry_values_only
227 || (!ui_out_is_mi_like_p (uiout)
228 && arg->entry_kind == print_entry_values_compact));
93d86cef
JK
229
230 annotate_arg_begin ();
231
232 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
f99d8bf4 233 fprintf_symbol_filtered (stb, SYMBOL_PRINT_NAME (arg->sym),
93d86cef 234 SYMBOL_LANGUAGE (arg->sym), DMGL_PARAMS | DMGL_ANSI);
e18b2753
JK
235 if (arg->entry_kind == print_entry_values_compact)
236 {
237 /* It is OK to provide invalid MI-like stream as with
238 PRINT_ENTRY_VALUE_COMPACT we never use MI. */
f99d8bf4 239 fputs_filtered ("=", stb);
e18b2753 240
f99d8bf4 241 fprintf_symbol_filtered (stb, SYMBOL_PRINT_NAME (arg->sym),
e18b2753
JK
242 SYMBOL_LANGUAGE (arg->sym),
243 DMGL_PARAMS | DMGL_ANSI);
244 }
245 if (arg->entry_kind == print_entry_values_only
246 || arg->entry_kind == print_entry_values_compact)
f99d8bf4 247 fputs_filtered ("@entry", stb);
93d86cef
JK
248 ui_out_field_stream (uiout, "name", stb);
249 annotate_arg_name_end ();
250 ui_out_text (uiout, "=");
251
252 if (!arg->val && !arg->error)
253 ui_out_text (uiout, "...");
254 else
255 {
256 if (arg->error)
257 except.message = arg->error;
258 else
259 {
260 /* TRY_CATCH has two statements, wrap it in a block. */
261
262 TRY_CATCH (except, RETURN_MASK_ERROR)
263 {
264 const struct language_defn *language;
265 struct value_print_options opts;
266
267 /* Avoid value_print because it will deref ref parameters. We
268 just want to print their addresses. Print ??? for args whose
269 address we do not know. We pass 2 as "recurse" to val_print
270 because our standard indentation here is 4 spaces, and
271 val_print indents 2 for each recurse. */
272
273 annotate_arg_value (value_type (arg->val));
274
275 /* Use the appropriate language to display our symbol, unless the
276 user forced the language to a specific language. */
277 if (language_mode == language_mode_auto)
278 language = language_def (SYMBOL_LANGUAGE (arg->sym));
279 else
280 language = current_language;
281
2a998fc0 282 get_no_prettyformat_print_options (&opts);
3343315b 283 opts.deref_ref = 1;
e7045703 284 opts.raw = print_raw_frame_arguments;
93d86cef
JK
285
286 /* True in "summary" mode, false otherwise. */
287 opts.summary = !strcmp (print_frame_arguments, "scalars");
288
f99d8bf4 289 common_val_print (arg->val, stb, 2, &opts, language);
93d86cef
JK
290 }
291 }
292 if (except.message)
f99d8bf4 293 fprintf_filtered (stb, _("<error reading variable: %s>"),
93d86cef
JK
294 except.message);
295 }
296
297 ui_out_field_stream (uiout, "value", stb);
298
f99d8bf4 299 /* Also invoke ui_out_tuple_end. */
93d86cef
JK
300 do_cleanups (old_chain);
301
302 annotate_arg_end ();
303}
304
82a0a75f
YQ
305/* Read in inferior function local SYM at FRAME into ARGP. Caller is
306 responsible for xfree of ARGP->ERROR. This function never throws an
307 exception. */
308
309void
310read_frame_local (struct symbol *sym, struct frame_info *frame,
311 struct frame_arg *argp)
312{
313 volatile struct gdb_exception except;
314 struct value *val = NULL;
315
316 TRY_CATCH (except, RETURN_MASK_ERROR)
317 {
318 val = read_var_value (sym, frame);
319 }
320
321 argp->error = (val == NULL) ? xstrdup (except.message) : NULL;
322 argp->sym = sym;
323 argp->val = val;
324}
325
93d86cef
JK
326/* Read in inferior function parameter SYM at FRAME into ARGP. Caller is
327 responsible for xfree of ARGP->ERROR. This function never throws an
328 exception. */
329
330void
331read_frame_arg (struct symbol *sym, struct frame_info *frame,
e18b2753 332 struct frame_arg *argp, struct frame_arg *entryargp)
93d86cef 333{
e18b2753
JK
334 struct value *val = NULL, *entryval = NULL;
335 char *val_error = NULL, *entryval_error = NULL;
336 int val_equal = 0;
93d86cef
JK
337 volatile struct gdb_exception except;
338
e18b2753
JK
339 if (print_entry_values != print_entry_values_only
340 && print_entry_values != print_entry_values_preferred)
341 {
342 TRY_CATCH (except, RETURN_MASK_ERROR)
343 {
344 val = read_var_value (sym, frame);
345 }
346 if (!val)
347 {
348 val_error = alloca (strlen (except.message) + 1);
349 strcpy (val_error, except.message);
350 }
351 }
352
24d6c2a0
TT
353 if (SYMBOL_COMPUTED_OPS (sym) != NULL
354 && SYMBOL_COMPUTED_OPS (sym)->read_variable_at_entry != NULL
e18b2753
JK
355 && print_entry_values != print_entry_values_no
356 && (print_entry_values != print_entry_values_if_needed
357 || !val || value_optimized_out (val)))
358 {
359 TRY_CATCH (except, RETURN_MASK_ERROR)
360 {
361 const struct symbol_computed_ops *ops;
362
363 ops = SYMBOL_COMPUTED_OPS (sym);
364 entryval = ops->read_variable_at_entry (sym, frame);
365 }
366 if (!entryval)
367 {
368 entryval_error = alloca (strlen (except.message) + 1);
369 strcpy (entryval_error, except.message);
370 }
371
372 if (except.error == NO_ENTRY_VALUE_ERROR
373 || (entryval && value_optimized_out (entryval)))
374 {
375 entryval = NULL;
376 entryval_error = NULL;
377 }
378
379 if (print_entry_values == print_entry_values_compact
380 || print_entry_values == print_entry_values_default)
381 {
382 /* For MI do not try to use print_entry_values_compact for ARGP. */
383
384 if (val && entryval && !ui_out_is_mi_like_p (current_uiout))
385 {
744a8059 386 struct type *type = value_type (val);
e18b2753 387
e18b2753 388 if (!value_optimized_out (val)
744a8059
SP
389 && value_available_contents_eq (val, 0, entryval, 0,
390 TYPE_LENGTH (type)))
e18b2753 391 {
509f0fd9
JK
392 /* Initialize it just to avoid a GCC false warning. */
393 struct value *val_deref = NULL, *entryval_deref;
a471c594
JK
394
395 /* DW_AT_GNU_call_site_value does match with the current
396 value. If it is a reference still try to verify if
397 dereferenced DW_AT_GNU_call_site_data_value does not
398 differ. */
399
400 TRY_CATCH (except, RETURN_MASK_ERROR)
401 {
744a8059 402 struct type *type_deref;
a471c594
JK
403
404 val_deref = coerce_ref (val);
405 if (value_lazy (val_deref))
406 value_fetch_lazy (val_deref);
744a8059 407 type_deref = value_type (val_deref);
a471c594
JK
408
409 entryval_deref = coerce_ref (entryval);
410 if (value_lazy (entryval_deref))
411 value_fetch_lazy (entryval_deref);
412
413 /* If the reference addresses match but dereferenced
414 content does not match print them. */
415 if (val != val_deref
416 && value_available_contents_eq (val_deref, 0,
417 entryval_deref, 0,
744a8059 418 TYPE_LENGTH (type_deref)))
a471c594
JK
419 val_equal = 1;
420 }
421
422 /* Value was not a reference; and its content matches. */
423 if (val == val_deref)
424 val_equal = 1;
425 /* If the dereferenced content could not be fetched do not
426 display anything. */
427 else if (except.error == NO_ENTRY_VALUE_ERROR)
428 val_equal = 1;
429 else if (except.message)
430 {
431 entryval_error = alloca (strlen (except.message) + 1);
432 strcpy (entryval_error, except.message);
433 }
434
435 if (val_equal)
436 entryval = NULL;
e18b2753
JK
437 }
438 }
439
440 /* Try to remove possibly duplicate error message for ENTRYARGP even
441 in MI mode. */
442
443 if (val_error && entryval_error
444 && strcmp (val_error, entryval_error) == 0)
445 {
446 entryval_error = NULL;
447
448 /* Do not se VAL_EQUAL as the same error message may be shown for
449 the entry value even if no entry values are present in the
450 inferior. */
451 }
452 }
453 }
454
455 if (entryval == NULL)
93d86cef 456 {
e18b2753
JK
457 if (print_entry_values == print_entry_values_preferred)
458 {
459 TRY_CATCH (except, RETURN_MASK_ERROR)
460 {
461 val = read_var_value (sym, frame);
462 }
463 if (!val)
464 {
465 val_error = alloca (strlen (except.message) + 1);
466 strcpy (val_error, except.message);
467 }
468 }
469 if (print_entry_values == print_entry_values_only
470 || print_entry_values == print_entry_values_both
471 || (print_entry_values == print_entry_values_preferred
472 && (!val || value_optimized_out (val))))
1ed8d800
YQ
473 {
474 entryval = allocate_optimized_out_value (SYMBOL_TYPE (sym));
475 entryval_error = NULL;
476 }
93d86cef 477 }
e18b2753
JK
478 if ((print_entry_values == print_entry_values_compact
479 || print_entry_values == print_entry_values_if_needed
480 || print_entry_values == print_entry_values_preferred)
481 && (!val || value_optimized_out (val)) && entryval != NULL)
93d86cef 482 {
e18b2753
JK
483 val = NULL;
484 val_error = NULL;
93d86cef
JK
485 }
486
487 argp->sym = sym;
488 argp->val = val;
489 argp->error = val_error ? xstrdup (val_error) : NULL;
e18b2753
JK
490 if (!val && !val_error)
491 argp->entry_kind = print_entry_values_only;
492 else if ((print_entry_values == print_entry_values_compact
493 || print_entry_values == print_entry_values_default) && val_equal)
494 {
495 argp->entry_kind = print_entry_values_compact;
496 gdb_assert (!ui_out_is_mi_like_p (current_uiout));
497 }
498 else
499 argp->entry_kind = print_entry_values_no;
500
501 entryargp->sym = sym;
502 entryargp->val = entryval;
503 entryargp->error = entryval_error ? xstrdup (entryval_error) : NULL;
504 if (!entryval && !entryval_error)
505 entryargp->entry_kind = print_entry_values_no;
506 else
507 entryargp->entry_kind = print_entry_values_only;
93d86cef
JK
508}
509
033a42c2
MK
510/* Print the arguments of frame FRAME on STREAM, given the function
511 FUNC running in that frame (as a symbol), where NUM is the number
512 of arguments according to the stack frame (or -1 if the number of
513 arguments is unknown). */
8d3b0994 514
e3168615 515/* Note that currently the "number of arguments according to the
033a42c2 516 stack frame" is only known on VAX where i refers to the "number of
e3168615 517 ints of arguments according to the stack frame". */
8d3b0994
AC
518
519static void
033a42c2
MK
520print_frame_args (struct symbol *func, struct frame_info *frame,
521 int num, struct ui_file *stream)
8d3b0994 522{
79a45e25 523 struct ui_out *uiout = current_uiout;
8d3b0994 524 int first = 1;
8d3b0994 525 /* Offset of next stack argument beyond the one we have seen that is
033a42c2
MK
526 at the highest offset, or -1 if we haven't come to a stack
527 argument yet. */
8d3b0994 528 long highest_offset = -1;
8d3b0994
AC
529 /* Number of ints of arguments that we have printed so far. */
530 int args_printed = 0;
22e048c9 531 struct cleanup *old_chain;
f99d8bf4 532 struct ui_file *stb;
a6bac58e
TT
533 /* True if we should print arguments, false otherwise. */
534 int print_args = strcmp (print_frame_arguments, "none");
8d3b0994 535
f99d8bf4
PA
536 stb = mem_fileopen ();
537 old_chain = make_cleanup_ui_file_delete (stb);
8d3b0994
AC
538
539 if (func)
540 {
033a42c2 541 struct block *b = SYMBOL_BLOCK_VALUE (func);
8157b174 542 struct block_iterator iter;
033a42c2 543 struct symbol *sym;
8d3b0994 544
de4f826b 545 ALL_BLOCK_SYMBOLS (b, iter, sym)
8d3b0994 546 {
e18b2753 547 struct frame_arg arg, entryarg;
93d86cef 548
8d3b0994
AC
549 QUIT;
550
551 /* Keep track of the highest stack argument offset seen, and
552 skip over any kinds of symbols we don't care about. */
553
2a2d4dc3
AS
554 if (!SYMBOL_IS_ARGUMENT (sym))
555 continue;
556
8d3b0994
AC
557 switch (SYMBOL_CLASS (sym))
558 {
559 case LOC_ARG:
560 case LOC_REF_ARG:
561 {
562 long current_offset = SYMBOL_VALUE (sym);
033a42c2 563 int arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
8d3b0994
AC
564
565 /* Compute address of next argument by adding the size of
566 this argument and rounding to an int boundary. */
567 current_offset =
568 ((current_offset + arg_size + sizeof (int) - 1)
569 & ~(sizeof (int) - 1));
570
033a42c2
MK
571 /* If this is the highest offset seen yet, set
572 highest_offset. */
8d3b0994
AC
573 if (highest_offset == -1
574 || (current_offset > highest_offset))
575 highest_offset = current_offset;
576
033a42c2
MK
577 /* Add the number of ints we're about to print to
578 args_printed. */
8d3b0994
AC
579 args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
580 }
581
033a42c2
MK
582 /* We care about types of symbols, but don't need to
583 keep track of stack offsets in them. */
2a2d4dc3 584 case LOC_REGISTER:
8d3b0994 585 case LOC_REGPARM_ADDR:
2a2d4dc3
AS
586 case LOC_COMPUTED:
587 case LOC_OPTIMIZED_OUT:
8d3b0994 588 default:
2a2d4dc3 589 break;
8d3b0994
AC
590 }
591
592 /* We have to look up the symbol because arguments can have
593 two entries (one a parameter, one a local) and the one we
594 want is the local, which lookup_symbol will find for us.
033a42c2 595 This includes gcc1 (not gcc2) on SPARC when passing a
8d3b0994
AC
596 small structure and gcc2 when the argument type is float
597 and it is passed as a double and converted to float by
598 the prologue (in the latter case the type of the LOC_ARG
599 symbol is double and the type of the LOC_LOCAL symbol is
600 float). */
033a42c2
MK
601 /* But if the parameter name is null, don't try it. Null
602 parameter names occur on the RS/6000, for traceback
603 tables. FIXME, should we even print them? */
8d3b0994 604
3567439c 605 if (*SYMBOL_LINKAGE_NAME (sym))
8d3b0994
AC
606 {
607 struct symbol *nsym;
433759f7 608
3567439c 609 nsym = lookup_symbol (SYMBOL_LINKAGE_NAME (sym),
2570f2b7 610 b, VAR_DOMAIN, NULL);
55765a25 611 gdb_assert (nsym != NULL);
2a2d4dc3
AS
612 if (SYMBOL_CLASS (nsym) == LOC_REGISTER
613 && !SYMBOL_IS_ARGUMENT (nsym))
8d3b0994 614 {
033a42c2
MK
615 /* There is a LOC_ARG/LOC_REGISTER pair. This means
616 that it was passed on the stack and loaded into a
617 register, or passed in a register and stored in a
618 stack slot. GDB 3.x used the LOC_ARG; GDB
619 4.0-4.11 used the LOC_REGISTER.
8d3b0994
AC
620
621 Reasons for using the LOC_ARG:
033a42c2
MK
622
623 (1) Because find_saved_registers may be slow for
624 remote debugging.
625
626 (2) Because registers are often re-used and stack
627 slots rarely (never?) are. Therefore using
628 the stack slot is much less likely to print
629 garbage.
8d3b0994
AC
630
631 Reasons why we might want to use the LOC_REGISTER:
033a42c2
MK
632
633 (1) So that the backtrace prints the same value
634 as "print foo". I see no compelling reason
635 why this needs to be the case; having the
636 backtrace print the value which was passed
637 in, and "print foo" print the value as
638 modified within the called function, makes
639 perfect sense to me.
640
641 Additional note: It might be nice if "info args"
642 displayed both values.
643
644 One more note: There is a case with SPARC
645 structure passing where we need to use the
646 LOC_REGISTER, but this is dealt with by creating
647 a single LOC_REGPARM in symbol reading. */
8d3b0994
AC
648
649 /* Leave sym (the LOC_ARG) alone. */
650 ;
651 }
652 else
653 sym = nsym;
654 }
655
656 /* Print the current arg. */
657 if (!first)
658 ui_out_text (uiout, ", ");
659 ui_out_wrap_hint (uiout, " ");
660
93d86cef
JK
661 if (!print_args)
662 {
663 memset (&arg, 0, sizeof (arg));
664 arg.sym = sym;
e18b2753
JK
665 arg.entry_kind = print_entry_values_no;
666 memset (&entryarg, 0, sizeof (entryarg));
667 entryarg.sym = sym;
668 entryarg.entry_kind = print_entry_values_no;
93d86cef
JK
669 }
670 else
e18b2753 671 read_frame_arg (sym, frame, &arg, &entryarg);
8d3b0994 672
e18b2753
JK
673 if (arg.entry_kind != print_entry_values_only)
674 print_frame_arg (&arg);
675
676 if (entryarg.entry_kind != print_entry_values_no)
677 {
678 if (arg.entry_kind != print_entry_values_only)
679 {
680 ui_out_text (uiout, ", ");
681 ui_out_wrap_hint (uiout, " ");
682 }
683
684 print_frame_arg (&entryarg);
685 }
8d3b0994 686
93d86cef 687 xfree (arg.error);
e18b2753 688 xfree (entryarg.error);
8d3b0994
AC
689
690 first = 0;
691 }
692 }
693
694 /* Don't print nameless args in situations where we don't know
695 enough about the stack to find them. */
696 if (num != -1)
697 {
698 long start;
699
700 if (highest_offset == -1)
7500260a 701 start = gdbarch_frame_args_skip (get_frame_arch (frame));
8d3b0994
AC
702 else
703 start = highest_offset;
704
033a42c2 705 print_frame_nameless_args (frame, start, num - args_printed,
8d3b0994
AC
706 first, stream);
707 }
033a42c2 708
8d3b0994
AC
709 do_cleanups (old_chain);
710}
711
033a42c2
MK
712/* Set the current source and line to the location given by frame
713 FRAME, if possible. When CENTER is true, adjust so the relevant
714 line is in the center of the next 'list'. */
c789492a 715
7abfe014 716void
5166082f 717set_current_sal_from_frame (struct frame_info *frame)
c789492a
FL
718{
719 struct symtab_and_line sal;
720
033a42c2 721 find_frame_sal (frame, &sal);
5166082f
PA
722 if (sal.symtab != NULL)
723 set_current_source_symtab_and_line (&sal);
c789492a
FL
724}
725
30c33a9f
HZ
726/* If ON, GDB will display disassembly of the next source line when
727 execution of the program being debugged stops.
481df73e
HZ
728 If AUTO (which is the default), or there's no line info to determine
729 the source line of the next instruction, display disassembly of next
730 instruction instead. */
30c33a9f
HZ
731
732static enum auto_boolean disassemble_next_line;
733
734static void
735show_disassemble_next_line (struct ui_file *file, int from_tty,
736 struct cmd_list_element *c,
737 const char *value)
738{
3e43a32a
MS
739 fprintf_filtered (file,
740 _("Debugger's willingness to use "
741 "disassemble-next-line is %s.\n"),
30c33a9f
HZ
742 value);
743}
744
30c33a9f
HZ
745/* Use TRY_CATCH to catch the exception from the gdb_disassembly
746 because it will be broken by filter sometime. */
747
748static void
13274fc3
UW
749do_gdb_disassembly (struct gdbarch *gdbarch,
750 int how_many, CORE_ADDR low, CORE_ADDR high)
30c33a9f
HZ
751{
752 volatile struct gdb_exception exception;
30c33a9f 753
b1d288d3 754 TRY_CATCH (exception, RETURN_MASK_ERROR)
30c33a9f 755 {
79a45e25
PA
756 gdb_disassembly (gdbarch, current_uiout, 0,
757 DISASSEMBLY_RAW_INSN, how_many,
758 low, high);
30c33a9f 759 }
b1d288d3
JK
760 if (exception.reason < 0)
761 {
762 /* If an exception was thrown while doing the disassembly, print
763 the error message, to give the user a clue of what happened. */
764 exception_print (gdb_stderr, exception);
765 }
30c33a9f
HZ
766}
767
033a42c2 768/* Print information about frame FRAME. The output is format according
65aa373f 769 to PRINT_LEVEL and PRINT_WHAT and PRINT_ARGS. The meaning of
033a42c2
MK
770 PRINT_WHAT is:
771
772 SRC_LINE: Print only source line.
773 LOCATION: Print only location.
774 LOC_AND_SRC: Print location and source line.
775
776 Used in "where" output, and to emit breakpoint or step
777 messages. */
c906108c 778
7789c6f5 779void
033a42c2 780print_frame_info (struct frame_info *frame, int print_level,
08d72866
PA
781 enum print_what print_what, int print_args,
782 int set_current_sal)
c906108c 783{
5af949e3 784 struct gdbarch *gdbarch = get_frame_arch (frame);
c906108c 785 struct symtab_and_line sal;
c5394b80
JM
786 int source_print;
787 int location_print;
79a45e25 788 struct ui_out *uiout = current_uiout;
c906108c 789
033a42c2 790 if (get_frame_type (frame) == DUMMY_FRAME
36f15f55
UW
791 || get_frame_type (frame) == SIGTRAMP_FRAME
792 || get_frame_type (frame) == ARCH_FRAME)
c906108c 793 {
075559bc
AC
794 struct cleanup *uiout_cleanup
795 = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
c906108c 796
033a42c2 797 annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
5af949e3 798 gdbarch, get_frame_pc (frame));
6a3fe0a4 799
c906108c 800 /* Do this regardless of SOURCE because we don't have any source
c5aa993b 801 to list for this frame. */
0faf0076 802 if (print_level)
52c6a6ac
JJ
803 {
804 ui_out_text (uiout, "#");
0faf0076 805 ui_out_field_fmt_int (uiout, 2, ui_left, "level",
033a42c2 806 frame_relative_level (frame));
52c6a6ac 807 }
075559bc 808 if (ui_out_is_mi_like_p (uiout))
52c6a6ac 809 {
075559bc 810 annotate_frame_address ();
5af949e3
UW
811 ui_out_field_core_addr (uiout, "addr",
812 gdbarch, get_frame_pc (frame));
075559bc 813 annotate_frame_address_end ();
52c6a6ac 814 }
6a3fe0a4 815
033a42c2 816 if (get_frame_type (frame) == DUMMY_FRAME)
075559bc
AC
817 {
818 annotate_function_call ();
819 ui_out_field_string (uiout, "func", "<function called from gdb>");
820 }
033a42c2 821 else if (get_frame_type (frame) == SIGTRAMP_FRAME)
075559bc
AC
822 {
823 annotate_signal_handler_caller ();
824 ui_out_field_string (uiout, "func", "<signal handler called>");
825 }
36f15f55
UW
826 else if (get_frame_type (frame) == ARCH_FRAME)
827 {
828 ui_out_field_string (uiout, "func", "<cross-architecture call>");
829 }
075559bc 830 ui_out_text (uiout, "\n");
c906108c 831 annotate_frame_end ();
075559bc 832
433e77fa
HZ
833 /* If disassemble-next-line is set to auto or on output the next
834 instruction. */
835 if (disassemble_next_line == AUTO_BOOLEAN_AUTO
836 || disassemble_next_line == AUTO_BOOLEAN_TRUE)
837 do_gdb_disassembly (get_frame_arch (frame), 1,
838 get_frame_pc (frame), get_frame_pc (frame) + 1);
839
075559bc 840 do_cleanups (uiout_cleanup);
c906108c
SS
841 return;
842 }
843
033a42c2
MK
844 /* If FRAME is not the innermost frame, that normally means that
845 FRAME->pc points to *after* the call instruction, and we want to
846 get the line containing the call, never the next line. But if
847 the next frame is a SIGTRAMP_FRAME or a DUMMY_FRAME, then the
848 next frame was not entered as the result of a call, and we want
849 to get the line containing FRAME->pc. */
850 find_frame_sal (frame, &sal);
c906108c 851
0faf0076
AC
852 location_print = (print_what == LOCATION
853 || print_what == LOC_AND_ADDRESS
854 || print_what == SRC_AND_LOC);
c5394b80
JM
855
856 if (location_print || !sal.symtab)
033a42c2 857 print_frame (frame, print_level, print_what, print_args, sal);
c5394b80 858
0faf0076 859 source_print = (print_what == SRC_LINE || print_what == SRC_AND_LOC);
0378c332 860
30c33a9f
HZ
861 /* If disassemble-next-line is set to auto or on and doesn't have
862 the line debug messages for $pc, output the next instruction. */
863 if ((disassemble_next_line == AUTO_BOOLEAN_AUTO
864 || disassemble_next_line == AUTO_BOOLEAN_TRUE)
865 && source_print && !sal.symtab)
13274fc3
UW
866 do_gdb_disassembly (get_frame_arch (frame), 1,
867 get_frame_pc (frame), get_frame_pc (frame) + 1);
30c33a9f 868
c5394b80
JM
869 if (source_print && sal.symtab)
870 {
871 int done = 0;
0faf0076 872 int mid_statement = ((print_what == SRC_LINE)
edb3359d 873 && frame_show_address (frame, sal));
c5394b80
JM
874
875 if (annotation_level)
876 done = identify_source_line (sal.symtab, sal.line, mid_statement,
033a42c2 877 get_frame_pc (frame));
c5394b80
JM
878 if (!done)
879 {
9a4105ab 880 if (deprecated_print_frame_info_listing_hook)
cbd3c883
MS
881 deprecated_print_frame_info_listing_hook (sal.symtab,
882 sal.line,
883 sal.line + 1, 0);
ba4bbdcb 884 else
c5394b80 885 {
79a45b7d 886 struct value_print_options opts;
433759f7 887
79a45b7d 888 get_user_print_options (&opts);
ba4bbdcb 889 /* We used to do this earlier, but that is clearly
c378eb4e 890 wrong. This function is used by many different
ba4bbdcb
KS
891 parts of gdb, including normal_stop in infrun.c,
892 which uses this to print out the current PC
893 when we stepi/nexti into the middle of a source
c378eb4e
MS
894 line. Only the command line really wants this
895 behavior. Other UIs probably would like the
cbd3c883 896 ability to decide for themselves if it is desired. */
79a45b7d 897 if (opts.addressprint && mid_statement)
ba4bbdcb 898 {
5af949e3
UW
899 ui_out_field_core_addr (uiout, "addr",
900 gdbarch, get_frame_pc (frame));
ba4bbdcb 901 ui_out_text (uiout, "\t");
ba4bbdcb
KS
902 }
903
904 print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
c5394b80 905 }
c5394b80 906 }
30c33a9f
HZ
907
908 /* If disassemble-next-line is set to on and there is line debug
909 messages, output assembly codes for next line. */
910 if (disassemble_next_line == AUTO_BOOLEAN_TRUE)
2b28d209 911 do_gdb_disassembly (get_frame_arch (frame), -1, sal.pc, sal.end);
c5394b80
JM
912 }
913
08d72866 914 if (set_current_sal)
e3eebbd7
PA
915 {
916 CORE_ADDR pc;
917
918 if (get_frame_pc_if_available (frame, &pc))
1bfeeb0f 919 set_last_displayed_sal (1, sal.pspace, pc, sal.symtab, sal.line);
e3eebbd7 920 else
1bfeeb0f 921 set_last_displayed_sal (0, 0, 0, 0, 0);
e3eebbd7 922 }
c5394b80
JM
923
924 annotate_frame_end ();
925
926 gdb_flush (gdb_stdout);
927}
928
1bfeeb0f
JL
929/* Remember the last symtab and line we displayed, which we use e.g.
930 * as the place to put a breakpoint when the `break' command is
931 * invoked with no arguments. */
932
933static void
934set_last_displayed_sal (int valid, struct program_space *pspace,
935 CORE_ADDR addr, struct symtab *symtab,
936 int line)
937{
938 last_displayed_sal_valid = valid;
939 last_displayed_pspace = pspace;
940 last_displayed_addr = addr;
941 last_displayed_symtab = symtab;
942 last_displayed_line = line;
4cb6da1c
AR
943 if (valid && pspace == NULL)
944 {
4cb6da1c 945 clear_last_displayed_sal ();
e36930bb
PA
946 internal_error (__FILE__, __LINE__,
947 _("Trying to set NULL pspace."));
4cb6da1c 948 }
1bfeeb0f
JL
949}
950
951/* Forget the last sal we displayed. */
952
953void
954clear_last_displayed_sal (void)
955{
956 last_displayed_sal_valid = 0;
957 last_displayed_pspace = 0;
958 last_displayed_addr = 0;
959 last_displayed_symtab = 0;
960 last_displayed_line = 0;
961}
962
963/* Is our record of the last sal we displayed valid? If not,
964 * the get_last_displayed_* functions will return NULL or 0, as
965 * appropriate. */
966
967int
968last_displayed_sal_is_valid (void)
969{
970 return last_displayed_sal_valid;
971}
972
973/* Get the pspace of the last sal we displayed, if it's valid. */
974
975struct program_space *
976get_last_displayed_pspace (void)
977{
978 if (last_displayed_sal_valid)
979 return last_displayed_pspace;
980 return 0;
981}
982
983/* Get the address of the last sal we displayed, if it's valid. */
984
985CORE_ADDR
986get_last_displayed_addr (void)
987{
988 if (last_displayed_sal_valid)
989 return last_displayed_addr;
990 return 0;
991}
992
993/* Get the symtab of the last sal we displayed, if it's valid. */
994
995struct symtab*
996get_last_displayed_symtab (void)
997{
998 if (last_displayed_sal_valid)
999 return last_displayed_symtab;
1000 return 0;
1001}
1002
1003/* Get the line of the last sal we displayed, if it's valid. */
1004
1005int
1006get_last_displayed_line (void)
1007{
1008 if (last_displayed_sal_valid)
1009 return last_displayed_line;
1010 return 0;
1011}
1012
1013/* Get the last sal we displayed, if it's valid. */
1014
1015void
1016get_last_displayed_sal (struct symtab_and_line *sal)
1017{
1018 if (last_displayed_sal_valid)
1019 {
1020 sal->pspace = last_displayed_pspace;
1021 sal->pc = last_displayed_addr;
1022 sal->symtab = last_displayed_symtab;
1023 sal->line = last_displayed_line;
1024 }
1025 else
1026 {
1027 sal->pspace = 0;
1028 sal->pc = 0;
1029 sal->symtab = 0;
1030 sal->line = 0;
1031 }
1032}
1033
1034
e9e07ba6 1035/* Attempt to obtain the FUNNAME, FUNLANG and optionally FUNCP of the function
55b87a52 1036 corresponding to FRAME. FUNNAME needs to be freed by the caller. */
e9e07ba6 1037
f8f6f20b 1038void
55b87a52 1039find_frame_funname (struct frame_info *frame, char **funname,
e9e07ba6 1040 enum language *funlang, struct symbol **funcp)
c5394b80
JM
1041{
1042 struct symbol *func;
8b93c638 1043
f8f6f20b
TJB
1044 *funname = NULL;
1045 *funlang = language_unknown;
e9e07ba6
JK
1046 if (funcp)
1047 *funcp = NULL;
c5394b80 1048
edb3359d 1049 func = get_frame_function (frame);
c906108c
SS
1050 if (func)
1051 {
1052 /* In certain pathological cases, the symtabs give the wrong
c5aa993b
JM
1053 function (when we are in the first function in a file which
1054 is compiled without debugging symbols, the previous function
1055 is compiled with debugging symbols, and the "foo.o" symbol
033a42c2
MK
1056 that is supposed to tell us where the file with debugging
1057 symbols ends has been truncated by ar because it is longer
1058 than 15 characters). This also occurs if the user uses asm()
1059 to create a function but not stabs for it (in a file compiled
1060 with -g).
c5aa993b
JM
1061
1062 So look in the minimal symbol tables as well, and if it comes
1063 up with a larger address for the function use that instead.
033a42c2
MK
1064 I don't think this can ever cause any problems; there
1065 shouldn't be any minimal symbols in the middle of a function;
1066 if this is ever changed many parts of GDB will need to be
1067 changed (and we'll create a find_pc_minimal_function or some
1068 such). */
1069
7cbd4a93 1070 struct bound_minimal_symbol msymbol;
edb3359d
DJ
1071
1072 /* Don't attempt to do this for inlined functions, which do not
1073 have a corresponding minimal symbol. */
1074 if (!block_inlined_p (SYMBOL_BLOCK_VALUE (func)))
1075 msymbol
1076 = lookup_minimal_symbol_by_pc (get_frame_address_in_block (frame));
7cbd4a93
TT
1077 else
1078 memset (&msymbol, 0, sizeof (msymbol));
c906108c 1079
7cbd4a93 1080 if (msymbol.minsym != NULL
77e371c0 1081 && (BMSYMBOL_VALUE_ADDRESS (msymbol)
c906108c
SS
1082 > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
1083 {
c906108c
SS
1084 /* We also don't know anything about the function besides
1085 its address and name. */
1086 func = 0;
efd66ac6
TT
1087 *funname = xstrdup (MSYMBOL_PRINT_NAME (msymbol.minsym));
1088 *funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
c906108c
SS
1089 }
1090 else
1091 {
55b87a52 1092 *funname = xstrdup (SYMBOL_PRINT_NAME (func));
f8f6f20b 1093 *funlang = SYMBOL_LANGUAGE (func);
e9e07ba6
JK
1094 if (funcp)
1095 *funcp = func;
f8f6f20b 1096 if (*funlang == language_cplus)
c5aa993b 1097 {
033a42c2
MK
1098 /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1099 to display the demangled name that we already have
1100 stored in the symbol table, but we stored a version
1101 with DMGL_PARAMS turned on, and here we don't want to
3567439c 1102 display parameters. So remove the parameters. */
f8f6f20b 1103 char *func_only = cp_remove_params (*funname);
433759f7 1104
3567439c
DJ
1105 if (func_only)
1106 {
55b87a52 1107 xfree (*funname);
f8f6f20b 1108 *funname = func_only;
3567439c 1109 }
c5aa993b 1110 }
c906108c
SS
1111 }
1112 }
1113 else
1114 {
7cbd4a93 1115 struct bound_minimal_symbol msymbol;
e3eebbd7 1116 CORE_ADDR pc;
033a42c2 1117
e3eebbd7
PA
1118 if (!get_frame_address_in_block_if_available (frame, &pc))
1119 return;
1120
1121 msymbol = lookup_minimal_symbol_by_pc (pc);
7cbd4a93 1122 if (msymbol.minsym != NULL)
c906108c 1123 {
efd66ac6
TT
1124 *funname = xstrdup (MSYMBOL_PRINT_NAME (msymbol.minsym));
1125 *funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
c906108c
SS
1126 }
1127 }
f8f6f20b
TJB
1128}
1129
1130static void
1131print_frame (struct frame_info *frame, int print_level,
1132 enum print_what print_what, int print_args,
1133 struct symtab_and_line sal)
1134{
5af949e3 1135 struct gdbarch *gdbarch = get_frame_arch (frame);
79a45e25 1136 struct ui_out *uiout = current_uiout;
55b87a52 1137 char *funname = NULL;
f8f6f20b 1138 enum language funlang = language_unknown;
f99d8bf4 1139 struct ui_file *stb;
f8f6f20b
TJB
1140 struct cleanup *old_chain, *list_chain;
1141 struct value_print_options opts;
e9e07ba6 1142 struct symbol *func;
e3eebbd7
PA
1143 CORE_ADDR pc = 0;
1144 int pc_p;
1145
1146 pc_p = get_frame_pc_if_available (frame, &pc);
f8f6f20b 1147
f99d8bf4
PA
1148 stb = mem_fileopen ();
1149 old_chain = make_cleanup_ui_file_delete (stb);
f8f6f20b 1150
e9e07ba6 1151 find_frame_funname (frame, &funname, &funlang, &func);
55b87a52 1152 make_cleanup (xfree, funname);
c906108c 1153
033a42c2 1154 annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
e3eebbd7 1155 gdbarch, pc);
c5394b80 1156
666547aa 1157 list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
c5394b80 1158
0faf0076 1159 if (print_level)
8b93c638 1160 {
8b93c638 1161 ui_out_text (uiout, "#");
0faf0076 1162 ui_out_field_fmt_int (uiout, 2, ui_left, "level",
033a42c2 1163 frame_relative_level (frame));
8b93c638 1164 }
79a45b7d
TT
1165 get_user_print_options (&opts);
1166 if (opts.addressprint)
e3eebbd7
PA
1167 if (!sal.symtab
1168 || frame_show_address (frame, sal)
0faf0076 1169 || print_what == LOC_AND_ADDRESS)
c5394b80
JM
1170 {
1171 annotate_frame_address ();
e3eebbd7
PA
1172 if (pc_p)
1173 ui_out_field_core_addr (uiout, "addr", gdbarch, pc);
1174 else
1175 ui_out_field_string (uiout, "addr", "<unavailable>");
8b93c638
JM
1176 annotate_frame_address_end ();
1177 ui_out_text (uiout, " in ");
c5394b80
JM
1178 }
1179 annotate_frame_function_name ();
f99d8bf4 1180 fprintf_symbol_filtered (stb, funname ? funname : "??",
033a42c2 1181 funlang, DMGL_ANSI);
8b93c638
JM
1182 ui_out_field_stream (uiout, "func", stb);
1183 ui_out_wrap_hint (uiout, " ");
c5394b80
JM
1184 annotate_frame_args ();
1185
8b93c638 1186 ui_out_text (uiout, " (");
0faf0076 1187 if (print_args)
c906108c 1188 {
311b5970
JK
1189 struct gdbarch *gdbarch = get_frame_arch (frame);
1190 int numargs;
d493eb33 1191 struct cleanup *args_list_chain;
311b5970 1192 volatile struct gdb_exception e;
433759f7 1193
311b5970
JK
1194 if (gdbarch_frame_num_args_p (gdbarch))
1195 {
1196 numargs = gdbarch_frame_num_args (gdbarch, frame);
1197 gdb_assert (numargs >= 0);
1198 }
1199 else
1200 numargs = -1;
1201
68c81b54 1202 args_list_chain = make_cleanup_ui_out_list_begin_end (uiout, "args");
311b5970
JK
1203 TRY_CATCH (e, RETURN_MASK_ERROR)
1204 {
1205 print_frame_args (func, frame, numargs, gdb_stdout);
1206 }
c378eb4e 1207 /* FIXME: ARGS must be a list. If one argument is a string it
033a42c2 1208 will have " that will not be properly escaped. */
666547aa 1209 /* Invoke ui_out_tuple_end. */
d493eb33 1210 do_cleanups (args_list_chain);
c5394b80
JM
1211 QUIT;
1212 }
8b93c638 1213 ui_out_text (uiout, ")");
4e04028d 1214 if (sal.symtab)
c5394b80 1215 {
1b56eb55
JK
1216 const char *filename_display;
1217
1218 filename_display = symtab_to_filename_for_display (sal.symtab);
c5394b80 1219 annotate_frame_source_begin ();
8b93c638
JM
1220 ui_out_wrap_hint (uiout, " ");
1221 ui_out_text (uiout, " at ");
1222 annotate_frame_source_file ();
1b56eb55 1223 ui_out_field_string (uiout, "file", filename_display);
76ff342d
DJ
1224 if (ui_out_is_mi_like_p (uiout))
1225 {
1226 const char *fullname = symtab_to_fullname (sal.symtab);
433759f7 1227
f35a17b5 1228 ui_out_field_string (uiout, "fullname", fullname);
76ff342d 1229 }
8b93c638
JM
1230 annotate_frame_source_file_end ();
1231 ui_out_text (uiout, ":");
1232 annotate_frame_source_line ();
1233 ui_out_field_int (uiout, "line", sal.line);
c5394b80
JM
1234 annotate_frame_source_end ();
1235 }
c906108c 1236
4e04028d 1237 if (pc_p && (funname == NULL || sal.symtab == NULL))
c906108c 1238 {
6c95b8df
PA
1239 char *lib = solib_name_from_address (get_frame_program_space (frame),
1240 get_frame_pc (frame));
4d1eb6b4 1241
c5394b80 1242 if (lib)
c906108c 1243 {
c5394b80 1244 annotate_frame_where ();
8b93c638
JM
1245 ui_out_wrap_hint (uiout, " ");
1246 ui_out_text (uiout, " from ");
1247 ui_out_field_string (uiout, "from", lib);
c906108c 1248 }
c906108c 1249 }
e514a9d6 1250
666547aa 1251 /* do_cleanups will call ui_out_tuple_end() for us. */
e6e0bfab 1252 do_cleanups (list_chain);
8b93c638
JM
1253 ui_out_text (uiout, "\n");
1254 do_cleanups (old_chain);
c906108c
SS
1255}
1256\f
c5aa993b 1257
033a42c2
MK
1258/* Read a frame specification in whatever the appropriate format is
1259 from FRAME_EXP. Call error(), printing MESSAGE, if the
1260 specification is in any way invalid (so this function never returns
1261 NULL). When SEPECTED_P is non-NULL set its target to indicate that
1262 the default selected frame was used. */
c906108c 1263
1c8831c5
AC
1264static struct frame_info *
1265parse_frame_specification_1 (const char *frame_exp, const char *message,
1266 int *selected_frame_p)
c906108c 1267{
1c8831c5
AC
1268 int numargs;
1269 struct value *args[4];
1270 CORE_ADDR addrs[ARRAY_SIZE (args)];
c5aa993b 1271
1c8831c5
AC
1272 if (frame_exp == NULL)
1273 numargs = 0;
1274 else
c906108c 1275 {
1c8831c5
AC
1276 numargs = 0;
1277 while (1)
c906108c 1278 {
1c8831c5
AC
1279 char *addr_string;
1280 struct cleanup *cleanup;
1281 const char *p;
1282
1283 /* Skip leading white space, bail of EOL. */
529480d0 1284 frame_exp = skip_spaces_const (frame_exp);
1c8831c5
AC
1285 if (!*frame_exp)
1286 break;
c906108c 1287
1c8831c5
AC
1288 /* Parse the argument, extract it, save it. */
1289 for (p = frame_exp;
1290 *p && !isspace (*p);
1291 p++);
1292 addr_string = savestring (frame_exp, p - frame_exp);
c906108c 1293 frame_exp = p;
1c8831c5
AC
1294 cleanup = make_cleanup (xfree, addr_string);
1295
1296 /* NOTE: Parse and evaluate expression, but do not use
1297 functions such as parse_and_eval_long or
1298 parse_and_eval_address to also extract the value.
1299 Instead value_as_long and value_as_address are used.
1300 This avoids problems with expressions that contain
1301 side-effects. */
1302 if (numargs >= ARRAY_SIZE (args))
8a3fe4f8 1303 error (_("Too many args in frame specification"));
1c8831c5
AC
1304 args[numargs++] = parse_and_eval (addr_string);
1305
1306 do_cleanups (cleanup);
c906108c
SS
1307 }
1308 }
1309
1c8831c5
AC
1310 /* If no args, default to the selected frame. */
1311 if (numargs == 0)
c906108c 1312 {
1c8831c5
AC
1313 if (selected_frame_p != NULL)
1314 (*selected_frame_p) = 1;
1315 return get_selected_frame (message);
1316 }
c906108c 1317
1c8831c5
AC
1318 /* None of the remaining use the selected frame. */
1319 if (selected_frame_p != NULL)
98f276a0 1320 (*selected_frame_p) = 0;
c906108c 1321
1c8831c5
AC
1322 /* Assume the single arg[0] is an integer, and try using that to
1323 select a frame relative to current. */
1324 if (numargs == 1)
1325 {
1326 struct frame_info *fid;
1327 int level = value_as_long (args[0]);
433759f7 1328
1c8831c5
AC
1329 fid = find_relative_frame (get_current_frame (), &level);
1330 if (level == 0)
c378eb4e 1331 /* find_relative_frame was successful. */
1c8831c5
AC
1332 return fid;
1333 }
c906108c 1334
1c8831c5
AC
1335 /* Convert each value into a corresponding address. */
1336 {
1337 int i;
433759f7 1338
1c8831c5 1339 for (i = 0; i < numargs; i++)
1e275f79 1340 addrs[i] = value_as_address (args[i]);
1c8831c5 1341 }
c5aa993b 1342
1c8831c5
AC
1343 /* Assume that the single arg[0] is an address, use that to identify
1344 a frame with a matching ID. Should this also accept stack/pc or
1345 stack/pc/special. */
1346 if (numargs == 1)
1347 {
1348 struct frame_id id = frame_id_build_wild (addrs[0]);
1349 struct frame_info *fid;
1350
1c8831c5
AC
1351 /* If (s)he specifies the frame with an address, he deserves
1352 what (s)he gets. Still, give the highest one that matches.
1353 (NOTE: cagney/2004-10-29: Why highest, or outer-most, I don't
1354 know). */
1355 for (fid = get_current_frame ();
1356 fid != NULL;
1357 fid = get_prev_frame (fid))
1358 {
1359 if (frame_id_eq (id, get_frame_id (fid)))
1360 {
c7ce8faa
DJ
1361 struct frame_info *prev_frame;
1362
1363 while (1)
1364 {
1365 prev_frame = get_prev_frame (fid);
1366 if (!prev_frame
1367 || !frame_id_eq (id, get_frame_id (prev_frame)))
1368 break;
1369 fid = prev_frame;
1370 }
1c8831c5
AC
1371 return fid;
1372 }
1373 }
c906108c
SS
1374 }
1375
1c8831c5
AC
1376 /* We couldn't identify the frame as an existing frame, but
1377 perhaps we can create one with a single argument. */
1c8831c5
AC
1378 if (numargs == 1)
1379 return create_new_frame (addrs[0], 0);
cd65c8f6
AC
1380 else if (numargs == 2)
1381 return create_new_frame (addrs[0], addrs[1]);
1382 else
8a3fe4f8 1383 error (_("Too many args in frame specification"));
1c8831c5
AC
1384}
1385
9c833c82 1386static struct frame_info *
1c8831c5
AC
1387parse_frame_specification (char *frame_exp)
1388{
1389 return parse_frame_specification_1 (frame_exp, NULL, NULL);
c906108c
SS
1390}
1391
033a42c2
MK
1392/* Print verbosely the selected frame or the frame at address
1393 ADDR_EXP. Absolutely all information in the frame is printed. */
c906108c
SS
1394
1395static void
fba45db2 1396frame_info (char *addr_exp, int from_tty)
c906108c
SS
1397{
1398 struct frame_info *fi;
1399 struct symtab_and_line sal;
1400 struct symbol *func;
1401 struct symtab *s;
1402 struct frame_info *calling_frame_info;
167e4384 1403 int numregs;
0d5cff50 1404 const char *funname = 0;
c906108c 1405 enum language funlang = language_unknown;
82de1e5b 1406 const char *pc_regname;
1c8831c5 1407 int selected_frame_p;
7500260a 1408 struct gdbarch *gdbarch;
3567439c 1409 struct cleanup *back_to = make_cleanup (null_cleanup, NULL);
008f8f2e
PA
1410 CORE_ADDR frame_pc;
1411 int frame_pc_p;
e5e6f788
YQ
1412 /* Initialize it to avoid "may be used uninitialized" warning. */
1413 CORE_ADDR caller_pc = 0;
782d47df 1414 volatile struct gdb_exception ex;
c906108c 1415
1c8831c5 1416 fi = parse_frame_specification_1 (addr_exp, "No stack.", &selected_frame_p);
12368003 1417 gdbarch = get_frame_arch (fi);
c906108c 1418
82de1e5b
AC
1419 /* Name of the value returned by get_frame_pc(). Per comments, "pc"
1420 is not a good name. */
12368003 1421 if (gdbarch_pc_regnum (gdbarch) >= 0)
3e8c568d 1422 /* OK, this is weird. The gdbarch_pc_regnum hardware register's value can
82de1e5b
AC
1423 easily not match that of the internal value returned by
1424 get_frame_pc(). */
12368003 1425 pc_regname = gdbarch_register_name (gdbarch, gdbarch_pc_regnum (gdbarch));
82de1e5b 1426 else
3e8c568d 1427 /* But then, this is weird to. Even without gdbarch_pc_regnum, an
82de1e5b
AC
1428 architectures will often have a hardware register called "pc",
1429 and that register's value, again, can easily not match
1430 get_frame_pc(). */
1431 pc_regname = "pc";
1432
008f8f2e 1433 frame_pc_p = get_frame_pc_if_available (fi, &frame_pc);
1058bca7 1434 find_frame_sal (fi, &sal);
c906108c 1435 func = get_frame_function (fi);
008f8f2e 1436 s = sal.symtab;
c906108c
SS
1437 if (func)
1438 {
3567439c 1439 funname = SYMBOL_PRINT_NAME (func);
c5aa993b
JM
1440 funlang = SYMBOL_LANGUAGE (func);
1441 if (funlang == language_cplus)
1442 {
3567439c
DJ
1443 /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1444 to display the demangled name that we already have
1445 stored in the symbol table, but we stored a version
1446 with DMGL_PARAMS turned on, and here we don't want to
1447 display parameters. So remove the parameters. */
1448 char *func_only = cp_remove_params (funname);
433759f7 1449
3567439c
DJ
1450 if (func_only)
1451 {
1452 funname = func_only;
1453 make_cleanup (xfree, func_only);
1454 }
c5aa993b 1455 }
c906108c 1456 }
008f8f2e 1457 else if (frame_pc_p)
c906108c 1458 {
7cbd4a93 1459 struct bound_minimal_symbol msymbol;
033a42c2 1460
008f8f2e 1461 msymbol = lookup_minimal_symbol_by_pc (frame_pc);
7cbd4a93 1462 if (msymbol.minsym != NULL)
c906108c 1463 {
efd66ac6
TT
1464 funname = MSYMBOL_PRINT_NAME (msymbol.minsym);
1465 funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
c906108c
SS
1466 }
1467 }
1468 calling_frame_info = get_prev_frame (fi);
1469
1c8831c5 1470 if (selected_frame_p && frame_relative_level (fi) >= 0)
c906108c 1471 {
a3f17187 1472 printf_filtered (_("Stack level %d, frame at "),
1c8831c5 1473 frame_relative_level (fi));
c906108c
SS
1474 }
1475 else
1476 {
a3f17187 1477 printf_filtered (_("Stack frame at "));
c906108c 1478 }
5af949e3 1479 fputs_filtered (paddress (gdbarch, get_frame_base (fi)), gdb_stdout);
9c833c82 1480 printf_filtered (":\n");
82de1e5b 1481 printf_filtered (" %s = ", pc_regname);
008f8f2e
PA
1482 if (frame_pc_p)
1483 fputs_filtered (paddress (gdbarch, get_frame_pc (fi)), gdb_stdout);
1484 else
1485 fputs_filtered ("<unavailable>", gdb_stdout);
c906108c
SS
1486
1487 wrap_here (" ");
1488 if (funname)
1489 {
1490 printf_filtered (" in ");
1491 fprintf_symbol_filtered (gdb_stdout, funname, funlang,
1492 DMGL_ANSI | DMGL_PARAMS);
1493 }
1494 wrap_here (" ");
1495 if (sal.symtab)
05cba821
JK
1496 printf_filtered (" (%s:%d)", symtab_to_filename_for_display (sal.symtab),
1497 sal.line);
c906108c
SS
1498 puts_filtered ("; ");
1499 wrap_here (" ");
782d47df
PA
1500 printf_filtered ("saved %s = ", pc_regname);
1501
1502 TRY_CATCH (ex, RETURN_MASK_ERROR)
1503 {
1504 caller_pc = frame_unwind_caller_pc (fi);
1505 }
1506 if (ex.reason < 0)
1507 {
1508 switch (ex.error)
1509 {
1510 case NOT_AVAILABLE_ERROR:
1511 val_print_unavailable (gdb_stdout);
1512 break;
1513 case OPTIMIZED_OUT_ERROR:
1514 val_print_not_saved (gdb_stdout);
1515 break;
1516 default:
1517 fprintf_filtered (gdb_stdout, _("<error: %s>"), ex.message);
1518 break;
1519 }
1520 }
008f8f2e 1521 else
782d47df 1522 fputs_filtered (paddress (gdbarch, caller_pc), gdb_stdout);
c906108c
SS
1523 printf_filtered ("\n");
1524
55feb689
DJ
1525 if (calling_frame_info == NULL)
1526 {
1527 enum unwind_stop_reason reason;
1528
1529 reason = get_frame_unwind_stop_reason (fi);
1530 if (reason != UNWIND_NO_REASON)
1531 printf_filtered (_(" Outermost frame: %s\n"),
53e8a631 1532 frame_stop_reason_string (fi));
55feb689 1533 }
111c6489
JK
1534 else if (get_frame_type (fi) == TAILCALL_FRAME)
1535 puts_filtered (" tail call frame");
edb3359d
DJ
1536 else if (get_frame_type (fi) == INLINE_FRAME)
1537 printf_filtered (" inlined into frame %d",
1538 frame_relative_level (get_prev_frame (fi)));
1539 else
c906108c
SS
1540 {
1541 printf_filtered (" called by frame at ");
5af949e3 1542 fputs_filtered (paddress (gdbarch, get_frame_base (calling_frame_info)),
ed49a04f 1543 gdb_stdout);
c906108c 1544 }
75e3c1f9 1545 if (get_next_frame (fi) && calling_frame_info)
c906108c
SS
1546 puts_filtered (",");
1547 wrap_here (" ");
75e3c1f9 1548 if (get_next_frame (fi))
c906108c
SS
1549 {
1550 printf_filtered (" caller of frame at ");
5af949e3 1551 fputs_filtered (paddress (gdbarch, get_frame_base (get_next_frame (fi))),
ed49a04f 1552 gdb_stdout);
c906108c 1553 }
75e3c1f9 1554 if (get_next_frame (fi) || calling_frame_info)
c906108c 1555 puts_filtered ("\n");
55feb689 1556
c906108c 1557 if (s)
1058bca7
AC
1558 printf_filtered (" source language %s.\n",
1559 language_str (s->language));
c906108c 1560
c906108c
SS
1561 {
1562 /* Address of the argument list for this frame, or 0. */
da62e633 1563 CORE_ADDR arg_list = get_frame_args_address (fi);
c906108c
SS
1564 /* Number of args for this frame, or -1 if unknown. */
1565 int numargs;
1566
1567 if (arg_list == 0)
1568 printf_filtered (" Arglist at unknown address.\n");
1569 else
1570 {
1571 printf_filtered (" Arglist at ");
5af949e3 1572 fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
c906108c
SS
1573 printf_filtered (",");
1574
7500260a 1575 if (!gdbarch_frame_num_args_p (gdbarch))
983a287a
AC
1576 {
1577 numargs = -1;
1578 puts_filtered (" args: ");
1579 }
c906108c 1580 else
983a287a 1581 {
7500260a 1582 numargs = gdbarch_frame_num_args (gdbarch, fi);
983a287a
AC
1583 gdb_assert (numargs >= 0);
1584 if (numargs == 0)
1585 puts_filtered (" no args.");
1586 else if (numargs == 1)
1587 puts_filtered (" 1 arg: ");
1588 else
1589 printf_filtered (" %d args: ", numargs);
1590 }
c906108c
SS
1591 print_frame_args (func, fi, numargs, gdb_stdout);
1592 puts_filtered ("\n");
1593 }
1594 }
1595 {
1596 /* Address of the local variables for this frame, or 0. */
da62e633 1597 CORE_ADDR arg_list = get_frame_locals_address (fi);
c906108c
SS
1598
1599 if (arg_list == 0)
1600 printf_filtered (" Locals at unknown address,");
1601 else
1602 {
1603 printf_filtered (" Locals at ");
5af949e3 1604 fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
c906108c
SS
1605 printf_filtered (",");
1606 }
1607 }
1608
4f460812
AC
1609 /* Print as much information as possible on the location of all the
1610 registers. */
1611 {
1612 enum lval_type lval;
1613 int optimized;
0fdb4f18 1614 int unavailable;
4f460812
AC
1615 CORE_ADDR addr;
1616 int realnum;
1617 int count;
1618 int i;
1619 int need_nl = 1;
1620
1621 /* The sp is special; what's displayed isn't the save address, but
1622 the value of the previous frame's sp. This is a legacy thing,
1623 at one stage the frame cached the previous frame's SP instead
1624 of its address, hence it was easiest to just display the cached
1625 value. */
7500260a 1626 if (gdbarch_sp_regnum (gdbarch) >= 0)
4f460812
AC
1627 {
1628 /* Find out the location of the saved stack pointer with out
1629 actually evaluating it. */
7500260a 1630 frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
0fdb4f18 1631 &optimized, &unavailable, &lval, &addr,
4f460812 1632 &realnum, NULL);
0fdb4f18 1633 if (!optimized && !unavailable && lval == not_lval)
c906108c 1634 {
e17a4113
UW
1635 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1636 int sp_size = register_size (gdbarch, gdbarch_sp_regnum (gdbarch));
10c42a71 1637 gdb_byte value[MAX_REGISTER_SIZE];
4f460812 1638 CORE_ADDR sp;
433759f7 1639
7500260a 1640 frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
0fdb4f18 1641 &optimized, &unavailable, &lval, &addr,
4f460812 1642 &realnum, value);
af1342ab
AC
1643 /* NOTE: cagney/2003-05-22: This is assuming that the
1644 stack pointer was packed as an unsigned integer. That
1645 may or may not be valid. */
e17a4113 1646 sp = extract_unsigned_integer (value, sp_size, byte_order);
4f460812 1647 printf_filtered (" Previous frame's sp is ");
5af949e3 1648 fputs_filtered (paddress (gdbarch, sp), gdb_stdout);
4f460812
AC
1649 printf_filtered ("\n");
1650 need_nl = 0;
c906108c 1651 }
0fdb4f18 1652 else if (!optimized && !unavailable && lval == lval_memory)
4f460812
AC
1653 {
1654 printf_filtered (" Previous frame's sp at ");
5af949e3 1655 fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
4f460812
AC
1656 printf_filtered ("\n");
1657 need_nl = 0;
1658 }
0fdb4f18 1659 else if (!optimized && !unavailable && lval == lval_register)
4f460812
AC
1660 {
1661 printf_filtered (" Previous frame's sp in %s\n",
7500260a 1662 gdbarch_register_name (gdbarch, realnum));
4f460812
AC
1663 need_nl = 0;
1664 }
1665 /* else keep quiet. */
1666 }
1667
1668 count = 0;
7500260a
UW
1669 numregs = gdbarch_num_regs (gdbarch)
1670 + gdbarch_num_pseudo_regs (gdbarch);
4f460812 1671 for (i = 0; i < numregs; i++)
7500260a
UW
1672 if (i != gdbarch_sp_regnum (gdbarch)
1673 && gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
4f460812
AC
1674 {
1675 /* Find out the location of the saved register without
1676 fetching the corresponding value. */
0fdb4f18
PA
1677 frame_register_unwind (fi, i, &optimized, &unavailable,
1678 &lval, &addr, &realnum, NULL);
4f460812
AC
1679 /* For moment, only display registers that were saved on the
1680 stack. */
0fdb4f18 1681 if (!optimized && !unavailable && lval == lval_memory)
4f460812
AC
1682 {
1683 if (count == 0)
1684 puts_filtered (" Saved registers:\n ");
1685 else
1686 puts_filtered (",");
1687 wrap_here (" ");
c9f4d572 1688 printf_filtered (" %s at ",
7500260a 1689 gdbarch_register_name (gdbarch, i));
5af949e3 1690 fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
4f460812
AC
1691 count++;
1692 }
1693 }
1694 if (count || need_nl)
c906108c 1695 puts_filtered ("\n");
4f460812 1696 }
3567439c
DJ
1697
1698 do_cleanups (back_to);
c906108c
SS
1699}
1700
033a42c2
MK
1701/* Print briefly all stack frames or just the innermost COUNT_EXP
1702 frames. */
c906108c
SS
1703
1704static void
1e611234
PM
1705backtrace_command_1 (char *count_exp, int show_locals, int no_filters,
1706 int from_tty)
c906108c
SS
1707{
1708 struct frame_info *fi;
52f0bd74
AC
1709 int count;
1710 int i;
1711 struct frame_info *trailing;
1e611234 1712 int trailing_level, py_start = 0, py_end = 0;
6dddc817 1713 enum ext_lang_bt_status result = EXT_LANG_BT_ERROR;
c906108c
SS
1714
1715 if (!target_has_stack)
8a3fe4f8 1716 error (_("No stack."));
c906108c 1717
033a42c2
MK
1718 /* The following code must do two things. First, it must set the
1719 variable TRAILING to the frame from which we should start
c906108c
SS
1720 printing. Second, it must set the variable count to the number
1721 of frames which we should print, or -1 if all of them. */
1722 trailing = get_current_frame ();
d082b2bb 1723
c906108c
SS
1724 trailing_level = 0;
1725 if (count_exp)
1726 {
bb518678 1727 count = parse_and_eval_long (count_exp);
c906108c
SS
1728 if (count < 0)
1729 {
1730 struct frame_info *current;
1731
1e611234 1732 py_start = count;
c906108c
SS
1733 count = -count;
1734
1735 current = trailing;
1736 while (current && count--)
1737 {
1738 QUIT;
1739 current = get_prev_frame (current);
1740 }
c5aa993b 1741
033a42c2
MK
1742 /* Will stop when CURRENT reaches the top of the stack.
1743 TRAILING will be COUNT below it. */
c906108c
SS
1744 while (current)
1745 {
1746 QUIT;
1747 trailing = get_prev_frame (trailing);
1748 current = get_prev_frame (current);
1749 trailing_level++;
1750 }
c5aa993b 1751
c906108c
SS
1752 count = -1;
1753 }
1e611234
PM
1754 else
1755 {
1756 py_start = 0;
1757 py_end = count;
1758 }
c906108c
SS
1759 }
1760 else
1e611234
PM
1761 {
1762 py_end = -1;
1763 count = -1;
1764 }
c906108c
SS
1765
1766 if (info_verbose)
1767 {
033a42c2
MK
1768 /* Read in symbols for all of the frames. Need to do this in a
1769 separate pass so that "Reading in symbols for xxx" messages
1770 don't screw up the appearance of the backtrace. Also if
1771 people have strong opinions against reading symbols for
c5aa993b 1772 backtrace this may have to be an option. */
c906108c 1773 i = count;
033a42c2 1774 for (fi = trailing; fi != NULL && i--; fi = get_prev_frame (fi))
c906108c 1775 {
ccefe4c4 1776 CORE_ADDR pc;
433759f7 1777
c906108c 1778 QUIT;
ccefe4c4
TT
1779 pc = get_frame_address_in_block (fi);
1780 find_pc_sect_symtab_via_partial (pc, find_pc_mapped_section (pc));
c906108c
SS
1781 }
1782 }
1783
1e611234 1784 if (! no_filters)
c906108c 1785 {
1e611234 1786 int flags = PRINT_LEVEL | PRINT_FRAME_INFO | PRINT_ARGS;
6dddc817 1787 enum ext_lang_frame_args arg_type;
c906108c 1788
c906108c 1789 if (show_locals)
1e611234
PM
1790 flags |= PRINT_LOCALS;
1791
1792 if (!strcmp (print_frame_arguments, "scalars"))
1793 arg_type = CLI_SCALAR_VALUES;
1794 else if (!strcmp (print_frame_arguments, "all"))
1795 arg_type = CLI_ALL_VALUES;
1796 else
1797 arg_type = NO_VALUES;
1798
6dddc817
DE
1799 result = apply_ext_lang_frame_filter (get_current_frame (), flags,
1800 arg_type, current_uiout,
1801 py_start, py_end);
1e611234 1802 }
6dddc817 1803
1e611234
PM
1804 /* Run the inbuilt backtrace if there are no filters registered, or
1805 "no-filters" has been specified from the command. */
6dddc817 1806 if (no_filters || result == EXT_LANG_BT_NO_FILTERS)
1e611234
PM
1807 {
1808 for (i = 0, fi = trailing; fi && count--; i++, fi = get_prev_frame (fi))
1809 {
1810 QUIT;
1811
1812 /* Don't use print_stack_frame; if an error() occurs it probably
1813 means further attempts to backtrace would fail (on the other
1814 hand, perhaps the code does or could be fixed to make sure
1815 the frame->prev field gets set to NULL in that case). */
1816
08d72866 1817 print_frame_info (fi, 1, LOCATION, 1, 0);
1e611234 1818 if (show_locals)
d0548fa2
PM
1819 {
1820 struct frame_id frame_id = get_frame_id (fi);
8f043999 1821
d0548fa2 1822 print_frame_local_vars (fi, 1, gdb_stdout);
8f043999 1823
d0548fa2
PM
1824 /* print_frame_local_vars invalidates FI. */
1825 fi = frame_find_by_id (frame_id);
1826 if (fi == NULL)
1827 {
1828 trailing = NULL;
1829 warning (_("Unable to restore previously selected frame."));
1830 break;
1831 }
8f043999 1832 }
55feb689 1833
1e611234
PM
1834 /* Save the last frame to check for error conditions. */
1835 trailing = fi;
1836 }
c906108c 1837
1e611234
PM
1838 /* If we've stopped before the end, mention that. */
1839 if (fi && from_tty)
1840 printf_filtered (_("(More stack frames follow...)\n"));
55feb689 1841
1e611234
PM
1842 /* If we've run out of frames, and the reason appears to be an error
1843 condition, print it. */
1844 if (fi == NULL && trailing != NULL)
1845 {
1846 enum unwind_stop_reason reason;
55feb689 1847
1e611234
PM
1848 reason = get_frame_unwind_stop_reason (trailing);
1849 if (reason >= UNWIND_FIRST_ERROR)
1850 printf_filtered (_("Backtrace stopped: %s\n"),
53e8a631 1851 frame_stop_reason_string (trailing));
1e611234 1852 }
55feb689 1853 }
c906108c
SS
1854}
1855
1856static void
fba45db2 1857backtrace_command (char *arg, int from_tty)
c906108c 1858{
5fe41fbf 1859 struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
1e611234
PM
1860 int fulltrace_arg = -1, arglen = 0, argc = 0, no_filters = -1;
1861 int user_arg = 0;
c906108c 1862
033a42c2 1863 if (arg)
c906108c 1864 {
033a42c2 1865 char **argv;
c906108c
SS
1866 int i;
1867
d1a41061 1868 argv = gdb_buildargv (arg);
5fe41fbf 1869 make_cleanup_freeargv (argv);
c906108c 1870 argc = 0;
033a42c2 1871 for (i = 0; argv[i]; i++)
c5aa993b 1872 {
745b8ca0 1873 unsigned int j;
c5aa993b 1874
033a42c2 1875 for (j = 0; j < strlen (argv[i]); j++)
c5aa993b
JM
1876 argv[i][j] = tolower (argv[i][j]);
1877
1e611234
PM
1878 if (no_filters < 0 && subset_compare (argv[i], "no-filters"))
1879 no_filters = argc;
c5aa993b
JM
1880 else
1881 {
1e611234
PM
1882 if (fulltrace_arg < 0 && subset_compare (argv[i], "full"))
1883 fulltrace_arg = argc;
1884 else
1885 {
1886 user_arg++;
1887 arglen += strlen (argv[i]);
1888 }
c5aa993b 1889 }
1e611234 1890 argc++;
c5aa993b 1891 }
1e611234
PM
1892 arglen += user_arg;
1893 if (fulltrace_arg >= 0 || no_filters >= 0)
c5aa993b 1894 {
033a42c2 1895 if (arglen > 0)
c5aa993b 1896 {
033a42c2 1897 arg = xmalloc (arglen + 1);
b1d288d3
JK
1898 make_cleanup (xfree, arg);
1899 arg[0] = 0;
1e611234 1900 for (i = 0; i < argc; i++)
c5aa993b 1901 {
1e611234 1902 if (i != fulltrace_arg && i != no_filters)
c5aa993b 1903 {
033a42c2
MK
1904 strcat (arg, argv[i]);
1905 strcat (arg, " ");
c5aa993b
JM
1906 }
1907 }
1908 }
1909 else
033a42c2 1910 arg = NULL;
c5aa993b 1911 }
c906108c
SS
1912 }
1913
1e611234
PM
1914 backtrace_command_1 (arg, fulltrace_arg >= 0 /* show_locals */,
1915 no_filters >= 0 /* no frame-filters */, from_tty);
c906108c 1916
5fe41fbf 1917 do_cleanups (old_chain);
c906108c
SS
1918}
1919
1920static void
fba45db2 1921backtrace_full_command (char *arg, int from_tty)
c906108c 1922{
1e611234 1923 backtrace_command_1 (arg, 1 /* show_locals */, 0, from_tty);
c906108c 1924}
c906108c 1925\f
c5aa993b 1926
2c58c0a9
PA
1927/* Iterate over the local variables of a block B, calling CB with
1928 CB_DATA. */
c906108c 1929
2c58c0a9
PA
1930static void
1931iterate_over_block_locals (struct block *b,
1932 iterate_over_block_arg_local_vars_cb cb,
1933 void *cb_data)
c906108c 1934{
8157b174 1935 struct block_iterator iter;
de4f826b 1936 struct symbol *sym;
c906108c 1937
de4f826b 1938 ALL_BLOCK_SYMBOLS (b, iter, sym)
c906108c 1939 {
c906108c
SS
1940 switch (SYMBOL_CLASS (sym))
1941 {
1942 case LOC_LOCAL:
1943 case LOC_REGISTER:
1944 case LOC_STATIC:
4c2df51b 1945 case LOC_COMPUTED:
2a2d4dc3
AS
1946 if (SYMBOL_IS_ARGUMENT (sym))
1947 break;
4357ac6c
TT
1948 if (SYMBOL_DOMAIN (sym) == COMMON_BLOCK_DOMAIN)
1949 break;
2c58c0a9 1950 (*cb) (SYMBOL_PRINT_NAME (sym), sym, cb_data);
c906108c
SS
1951 break;
1952
1953 default:
1954 /* Ignore symbols which are not locals. */
1955 break;
1956 }
1957 }
c906108c
SS
1958}
1959
65c06092 1960
c906108c
SS
1961/* Same, but print labels. */
1962
65c06092
JB
1963#if 0
1964/* Commented out, as the code using this function has also been
1965 commented out. FIXME:brobecker/2009-01-13: Find out why the code
1966 was commented out in the first place. The discussion introducing
1967 this change (2007-12-04: Support lexical blocks and function bodies
1968 that occupy non-contiguous address ranges) did not explain why
1969 this change was made. */
c906108c 1970static int
5af949e3
UW
1971print_block_frame_labels (struct gdbarch *gdbarch, struct block *b,
1972 int *have_default, struct ui_file *stream)
c906108c 1973{
8157b174 1974 struct block_iterator iter;
52f0bd74
AC
1975 struct symbol *sym;
1976 int values_printed = 0;
c906108c 1977
de4f826b 1978 ALL_BLOCK_SYMBOLS (b, iter, sym)
c906108c 1979 {
3567439c 1980 if (strcmp (SYMBOL_LINKAGE_NAME (sym), "default") == 0)
c906108c
SS
1981 {
1982 if (*have_default)
1983 continue;
1984 *have_default = 1;
1985 }
1986 if (SYMBOL_CLASS (sym) == LOC_LABEL)
1987 {
1988 struct symtab_and_line sal;
79a45b7d 1989 struct value_print_options opts;
433759f7 1990
c906108c
SS
1991 sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
1992 values_printed = 1;
de5ad195 1993 fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
79a45b7d
TT
1994 get_user_print_options (&opts);
1995 if (opts.addressprint)
c906108c
SS
1996 {
1997 fprintf_filtered (stream, " ");
5af949e3
UW
1998 fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (sym)),
1999 stream);
c906108c
SS
2000 }
2001 fprintf_filtered (stream, " in file %s, line %d\n",
2002 sal.symtab->filename, sal.line);
2003 }
2004 }
033a42c2 2005
c906108c
SS
2006 return values_printed;
2007}
65c06092 2008#endif
c906108c 2009
2c58c0a9
PA
2010/* Iterate over all the local variables in block B, including all its
2011 superblocks, stopping when the top-level block is reached. */
2012
2013void
2014iterate_over_block_local_vars (struct block *block,
2015 iterate_over_block_arg_local_vars_cb cb,
2016 void *cb_data)
2017{
2018 while (block)
2019 {
2020 iterate_over_block_locals (block, cb, cb_data);
2021 /* After handling the function's top-level block, stop. Don't
2022 continue to its superblock, the block of per-file
2023 symbols. */
2024 if (BLOCK_FUNCTION (block))
2025 break;
2026 block = BLOCK_SUPERBLOCK (block);
2027 }
2028}
2029
2030/* Data to be passed around in the calls to the locals and args
2031 iterators. */
c906108c 2032
2c58c0a9
PA
2033struct print_variable_and_value_data
2034{
8f043999 2035 struct frame_id frame_id;
2c58c0a9
PA
2036 int num_tabs;
2037 struct ui_file *stream;
2038 int values_printed;
2039};
2040
c378eb4e 2041/* The callback for the locals and args iterators. */
2c58c0a9
PA
2042
2043static void
2044do_print_variable_and_value (const char *print_name,
2045 struct symbol *sym,
2046 void *cb_data)
2047{
2048 struct print_variable_and_value_data *p = cb_data;
8f043999
JK
2049 struct frame_info *frame;
2050
2051 frame = frame_find_by_id (p->frame_id);
2052 if (frame == NULL)
2053 {
2054 warning (_("Unable to restore previously selected frame."));
2055 return;
2056 }
2057
2058 print_variable_and_value (print_name, sym, frame, p->stream, p->num_tabs);
2059
2060 /* print_variable_and_value invalidates FRAME. */
2061 frame = NULL;
2c58c0a9 2062
2c58c0a9
PA
2063 p->values_printed = 1;
2064}
c906108c 2065
8f043999
JK
2066/* Print all variables from the innermost up to the function block of FRAME.
2067 Print them with values to STREAM indented by NUM_TABS.
2068
2069 This function will invalidate FRAME. */
2070
c906108c 2071static void
033a42c2 2072print_frame_local_vars (struct frame_info *frame, int num_tabs,
aa1ee363 2073 struct ui_file *stream)
c906108c 2074{
2c58c0a9
PA
2075 struct print_variable_and_value_data cb_data;
2076 struct block *block;
1d4f5741
PA
2077 CORE_ADDR pc;
2078
2079 if (!get_frame_pc_if_available (frame, &pc))
2080 {
2081 fprintf_filtered (stream,
2082 _("PC unavailable, cannot determine locals.\n"));
2083 return;
2084 }
c906108c 2085
2c58c0a9 2086 block = get_frame_block (frame, 0);
c906108c
SS
2087 if (block == 0)
2088 {
2089 fprintf_filtered (stream, "No symbol table info available.\n");
2090 return;
2091 }
c5aa993b 2092
8f043999 2093 cb_data.frame_id = get_frame_id (frame);
2c58c0a9
PA
2094 cb_data.num_tabs = 4 * num_tabs;
2095 cb_data.stream = stream;
2096 cb_data.values_printed = 0;
2097
2098 iterate_over_block_local_vars (block,
2099 do_print_variable_and_value,
2100 &cb_data);
c906108c 2101
8f043999
JK
2102 /* do_print_variable_and_value invalidates FRAME. */
2103 frame = NULL;
2104
2c58c0a9 2105 if (!cb_data.values_printed)
033a42c2 2106 fprintf_filtered (stream, _("No locals.\n"));
c906108c
SS
2107}
2108
c906108c 2109void
fba45db2 2110locals_info (char *args, int from_tty)
c906108c 2111{
033a42c2 2112 print_frame_local_vars (get_selected_frame (_("No frame selected.")),
b04f3ab4 2113 0, gdb_stdout);
c906108c
SS
2114}
2115
2c58c0a9
PA
2116/* Iterate over all the argument variables in block B.
2117
2118 Returns 1 if any argument was walked; 0 otherwise. */
2119
2120void
2121iterate_over_block_arg_vars (struct block *b,
2122 iterate_over_block_arg_local_vars_cb cb,
2123 void *cb_data)
c906108c 2124{
8157b174 2125 struct block_iterator iter;
52f0bd74 2126 struct symbol *sym, *sym2;
c906108c 2127
de4f826b 2128 ALL_BLOCK_SYMBOLS (b, iter, sym)
c906108c 2129 {
2a2d4dc3
AS
2130 /* Don't worry about things which aren't arguments. */
2131 if (SYMBOL_IS_ARGUMENT (sym))
c906108c 2132 {
c906108c
SS
2133 /* We have to look up the symbol because arguments can have
2134 two entries (one a parameter, one a local) and the one we
2135 want is the local, which lookup_symbol will find for us.
2136 This includes gcc1 (not gcc2) on the sparc when passing a
2137 small structure and gcc2 when the argument type is float
2138 and it is passed as a double and converted to float by
2139 the prologue (in the latter case the type of the LOC_ARG
2140 symbol is double and the type of the LOC_LOCAL symbol is
2141 float). There are also LOC_ARG/LOC_REGISTER pairs which
2142 are not combined in symbol-reading. */
2143
3567439c 2144 sym2 = lookup_symbol (SYMBOL_LINKAGE_NAME (sym),
2570f2b7 2145 b, VAR_DOMAIN, NULL);
2c58c0a9 2146 (*cb) (SYMBOL_PRINT_NAME (sym), sym2, cb_data);
c906108c
SS
2147 }
2148 }
2c58c0a9
PA
2149}
2150
8f043999
JK
2151/* Print all argument variables of the function of FRAME.
2152 Print them with values to STREAM.
2153
2154 This function will invalidate FRAME. */
2155
2c58c0a9
PA
2156static void
2157print_frame_arg_vars (struct frame_info *frame, struct ui_file *stream)
2158{
2159 struct print_variable_and_value_data cb_data;
2160 struct symbol *func;
1d4f5741
PA
2161 CORE_ADDR pc;
2162
2163 if (!get_frame_pc_if_available (frame, &pc))
2164 {
2165 fprintf_filtered (stream, _("PC unavailable, cannot determine args.\n"));
2166 return;
2167 }
2c58c0a9
PA
2168
2169 func = get_frame_function (frame);
2170 if (func == NULL)
2171 {
2172 fprintf_filtered (stream, _("No symbol table info available.\n"));
2173 return;
2174 }
2175
8f043999 2176 cb_data.frame_id = get_frame_id (frame);
2c58c0a9
PA
2177 cb_data.num_tabs = 0;
2178 cb_data.stream = gdb_stdout;
2179 cb_data.values_printed = 0;
2180
2181 iterate_over_block_arg_vars (SYMBOL_BLOCK_VALUE (func),
2182 do_print_variable_and_value, &cb_data);
033a42c2 2183
8f043999
JK
2184 /* do_print_variable_and_value invalidates FRAME. */
2185 frame = NULL;
2186
2c58c0a9 2187 if (!cb_data.values_printed)
033a42c2 2188 fprintf_filtered (stream, _("No arguments.\n"));
c906108c
SS
2189}
2190
2191void
fba45db2 2192args_info (char *ignore, int from_tty)
c906108c 2193{
033a42c2 2194 print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
b04f3ab4 2195 gdb_stdout);
c906108c
SS
2196}
2197
2198
2199static void
fba45db2 2200args_plus_locals_info (char *ignore, int from_tty)
c906108c 2201{
c5aa993b
JM
2202 args_info (ignore, from_tty);
2203 locals_info (ignore, from_tty);
c906108c 2204}
c906108c 2205\f
c5aa993b 2206
033a42c2
MK
2207/* Select frame FRAME. Also print the stack frame and show the source
2208 if this is the tui version. */
bedfa57b 2209static void
033a42c2 2210select_and_print_frame (struct frame_info *frame)
c906108c 2211{
033a42c2
MK
2212 select_frame (frame);
2213 if (frame)
08d72866 2214 print_stack_frame (frame, 1, SRC_AND_LOC, 1);
c906108c 2215}
c906108c 2216\f
c906108c 2217/* Return the symbol-block in which the selected frame is executing.
ae767bfb
JB
2218 Can return zero under various legitimate circumstances.
2219
2220 If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
2221 code address within the block returned. We use this to decide
2222 which macros are in scope. */
c906108c
SS
2223
2224struct block *
ae767bfb 2225get_selected_block (CORE_ADDR *addr_in_block)
c906108c 2226{
d729566a 2227 if (!has_stack_frames ())
8ea051c5
PA
2228 return 0;
2229
206415a3 2230 return get_frame_block (get_selected_frame (NULL), addr_in_block);
c906108c
SS
2231}
2232
2233/* Find a frame a certain number of levels away from FRAME.
2234 LEVEL_OFFSET_PTR points to an int containing the number of levels.
2235 Positive means go to earlier frames (up); negative, the reverse.
2236 The int that contains the number of levels is counted toward
2237 zero as the frames for those levels are found.
2238 If the top or bottom frame is reached, that frame is returned,
2239 but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
2240 how much farther the original request asked to go. */
2241
2242struct frame_info *
033a42c2 2243find_relative_frame (struct frame_info *frame, int *level_offset_ptr)
c906108c 2244{
033a42c2
MK
2245 /* Going up is simple: just call get_prev_frame enough times or
2246 until the initial frame is reached. */
c906108c
SS
2247 while (*level_offset_ptr > 0)
2248 {
033a42c2 2249 struct frame_info *prev = get_prev_frame (frame);
433759f7 2250
033a42c2 2251 if (!prev)
c906108c
SS
2252 break;
2253 (*level_offset_ptr)--;
2254 frame = prev;
2255 }
033a42c2 2256
c906108c 2257 /* Going down is just as simple. */
033a42c2 2258 while (*level_offset_ptr < 0)
c906108c 2259 {
033a42c2 2260 struct frame_info *next = get_next_frame (frame);
433759f7 2261
033a42c2
MK
2262 if (!next)
2263 break;
2264 (*level_offset_ptr)++;
2265 frame = next;
c906108c 2266 }
033a42c2 2267
c906108c
SS
2268 return frame;
2269}
2270
033a42c2
MK
2271/* The "select_frame" command. With no argument this is a NOP.
2272 Select the frame at level LEVEL_EXP if it is a valid level.
2273 Otherwise, treat LEVEL_EXP as an address expression and select it.
2274
2275 See parse_frame_specification for more info on proper frame
2276 expressions. */
c906108c 2277
8b93c638 2278void
fba45db2 2279select_frame_command (char *level_exp, int from_tty)
c906108c 2280{
1c8831c5 2281 select_frame (parse_frame_specification_1 (level_exp, "No stack.", NULL));
c906108c
SS
2282}
2283
033a42c2
MK
2284/* The "frame" command. With no argument, print the selected frame
2285 briefly. With an argument, behave like select_frame and then print
2286 the selected frame. */
c906108c 2287
033a42c2 2288static void
fba45db2 2289frame_command (char *level_exp, int from_tty)
c906108c
SS
2290{
2291 select_frame_command (level_exp, from_tty);
08d72866 2292 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
c906108c
SS
2293}
2294
033a42c2 2295/* The XDB Compatibility command to print the current frame. */
c906108c 2296
7a292a7a 2297static void
fba45db2 2298current_frame_command (char *level_exp, int from_tty)
c906108c 2299{
08d72866 2300 print_stack_frame (get_selected_frame (_("No stack.")), 1, SRC_AND_LOC, 1);
7a292a7a 2301}
c906108c 2302
033a42c2
MK
2303/* Select the frame up one or COUNT_EXP stack levels from the
2304 previously selected frame, and print it briefly. */
c906108c 2305
c906108c 2306static void
fba45db2 2307up_silently_base (char *count_exp)
c906108c 2308{
033a42c2
MK
2309 struct frame_info *frame;
2310 int count = 1;
2311
c906108c 2312 if (count_exp)
bb518678 2313 count = parse_and_eval_long (count_exp);
c5aa993b 2314
033a42c2
MK
2315 frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2316 if (count != 0 && count_exp == NULL)
8a3fe4f8 2317 error (_("Initial frame selected; you cannot go up."));
033a42c2 2318 select_frame (frame);
c906108c
SS
2319}
2320
2321static void
fba45db2 2322up_silently_command (char *count_exp, int from_tty)
c906108c 2323{
c5aa993b 2324 up_silently_base (count_exp);
c906108c
SS
2325}
2326
2327static void
fba45db2 2328up_command (char *count_exp, int from_tty)
c906108c
SS
2329{
2330 up_silently_base (count_exp);
08d72866 2331 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
c906108c
SS
2332}
2333
033a42c2
MK
2334/* Select the frame down one or COUNT_EXP stack levels from the previously
2335 selected frame, and print it briefly. */
c906108c 2336
c906108c 2337static void
fba45db2 2338down_silently_base (char *count_exp)
c906108c 2339{
52f0bd74 2340 struct frame_info *frame;
033a42c2 2341 int count = -1;
f89b749f 2342
c906108c 2343 if (count_exp)
bb518678 2344 count = -parse_and_eval_long (count_exp);
c5aa993b 2345
033a42c2
MK
2346 frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2347 if (count != 0 && count_exp == NULL)
c906108c 2348 {
033a42c2
MK
2349 /* We only do this if COUNT_EXP is not specified. That way
2350 "down" means to really go down (and let me know if that is
2351 impossible), but "down 9999" can be used to mean go all the
2352 way down without getting an error. */
c906108c 2353
033a42c2 2354 error (_("Bottom (innermost) frame selected; you cannot go down."));
c906108c
SS
2355 }
2356
0f7d239c 2357 select_frame (frame);
c906108c
SS
2358}
2359
c906108c 2360static void
fba45db2 2361down_silently_command (char *count_exp, int from_tty)
c906108c
SS
2362{
2363 down_silently_base (count_exp);
c906108c
SS
2364}
2365
2366static void
fba45db2 2367down_command (char *count_exp, int from_tty)
c906108c
SS
2368{
2369 down_silently_base (count_exp);
08d72866 2370 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
c906108c
SS
2371}
2372\f
033a42c2 2373
8b93c638 2374void
fba45db2 2375return_command (char *retval_exp, int from_tty)
c906108c 2376{
901900c4
MGD
2377 /* Initialize it just to avoid a GCC false warning. */
2378 enum return_value_convention rv_conv = RETURN_VALUE_STRUCT_CONVENTION;
5ed92fa8 2379 struct frame_info *thisframe;
d80b854b 2380 struct gdbarch *gdbarch;
c906108c 2381 struct symbol *thisfun;
3d6d86c6 2382 struct value *return_value = NULL;
6a3a010b 2383 struct value *function = NULL;
fc70c2a0 2384 const char *query_prefix = "";
c906108c 2385
5ed92fa8
UW
2386 thisframe = get_selected_frame ("No selected frame.");
2387 thisfun = get_frame_function (thisframe);
d80b854b 2388 gdbarch = get_frame_arch (thisframe);
c906108c 2389
edb3359d
DJ
2390 if (get_frame_type (get_current_frame ()) == INLINE_FRAME)
2391 error (_("Can not force return from an inlined function."));
2392
fc70c2a0
AC
2393 /* Compute the return value. If the computation triggers an error,
2394 let it bail. If the return type can't be handled, set
2395 RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
2396 message. */
c906108c
SS
2397 if (retval_exp)
2398 {
61ff14c6
JK
2399 struct expression *retval_expr = parse_expression (retval_exp);
2400 struct cleanup *old_chain = make_cleanup (xfree, retval_expr);
c906108c
SS
2401 struct type *return_type = NULL;
2402
fc70c2a0
AC
2403 /* Compute the return value. Should the computation fail, this
2404 call throws an error. */
61ff14c6 2405 return_value = evaluate_expression (retval_expr);
c906108c 2406
fc70c2a0
AC
2407 /* Cast return value to the return type of the function. Should
2408 the cast fail, this call throws an error. */
c906108c
SS
2409 if (thisfun != NULL)
2410 return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
2411 if (return_type == NULL)
61ff14c6 2412 {
9eaf6705
TT
2413 if (retval_expr->elts[0].opcode != UNOP_CAST
2414 && retval_expr->elts[0].opcode != UNOP_CAST_TYPE)
61ff14c6
JK
2415 error (_("Return value type not available for selected "
2416 "stack frame.\n"
2417 "Please use an explicit cast of the value to return."));
2418 return_type = value_type (return_value);
2419 }
2420 do_cleanups (old_chain);
3e9a183c 2421 CHECK_TYPEDEF (return_type);
c906108c
SS
2422 return_value = value_cast (return_type, return_value);
2423
fc70c2a0
AC
2424 /* Make sure the value is fully evaluated. It may live in the
2425 stack frame we're about to pop. */
d69fe07e 2426 if (value_lazy (return_value))
c906108c 2427 value_fetch_lazy (return_value);
c906108c 2428
6a3a010b
MR
2429 if (thisfun != NULL)
2430 function = read_var_value (thisfun, thisframe);
2431
bbfdfe1c 2432 rv_conv = RETURN_VALUE_REGISTER_CONVENTION;
667e784f
AC
2433 if (TYPE_CODE (return_type) == TYPE_CODE_VOID)
2434 /* If the return-type is "void", don't try to find the
2435 return-value's location. However, do still evaluate the
2436 return expression so that, even when the expression result
2437 is discarded, side effects such as "return i++" still
033a42c2 2438 occur. */
667e784f 2439 return_value = NULL;
bbfdfe1c 2440 else if (thisfun != NULL)
fc70c2a0 2441 {
bbfdfe1c
DM
2442 rv_conv = struct_return_convention (gdbarch, function, return_type);
2443 if (rv_conv == RETURN_VALUE_STRUCT_CONVENTION
2444 || rv_conv == RETURN_VALUE_ABI_RETURNS_ADDRESS)
2445 {
2446 query_prefix = "The location at which to store the "
2447 "function's return value is unknown.\n"
2448 "If you continue, the return value "
2449 "that you specified will be ignored.\n";
2450 return_value = NULL;
2451 }
fc70c2a0 2452 }
c906108c
SS
2453 }
2454
fc70c2a0
AC
2455 /* Does an interactive user really want to do this? Include
2456 information, such as how well GDB can handle the return value, in
2457 the query message. */
2458 if (from_tty)
2459 {
2460 int confirmed;
433759f7 2461
fc70c2a0 2462 if (thisfun == NULL)
e2e0b3e5 2463 confirmed = query (_("%sMake selected stack frame return now? "),
fc70c2a0
AC
2464 query_prefix);
2465 else
e2e0b3e5 2466 confirmed = query (_("%sMake %s return now? "), query_prefix,
fc70c2a0
AC
2467 SYMBOL_PRINT_NAME (thisfun));
2468 if (!confirmed)
8a3fe4f8 2469 error (_("Not confirmed"));
fc70c2a0 2470 }
c906108c 2471
a45ae3ed
UW
2472 /* Discard the selected frame and all frames inner-to it. */
2473 frame_pop (get_selected_frame (NULL));
c906108c 2474
a1f5b845 2475 /* Store RETURN_VALUE in the just-returned register set. */
fc70c2a0
AC
2476 if (return_value != NULL)
2477 {
df407dfe 2478 struct type *return_type = value_type (return_value);
7500260a 2479 struct gdbarch *gdbarch = get_regcache_arch (get_current_regcache ());
42e2132c 2480
bbfdfe1c
DM
2481 gdb_assert (rv_conv != RETURN_VALUE_STRUCT_CONVENTION
2482 && rv_conv != RETURN_VALUE_ABI_RETURNS_ADDRESS);
6a3a010b 2483 gdbarch_return_value (gdbarch, function, return_type,
594f7785 2484 get_current_regcache (), NULL /*read*/,
0fd88904 2485 value_contents (return_value) /*write*/);
fc70c2a0 2486 }
1a2aab69 2487
fc70c2a0
AC
2488 /* If we are at the end of a call dummy now, pop the dummy frame
2489 too. */
e8bcf01f
AC
2490 if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
2491 frame_pop (get_current_frame ());
1a2aab69 2492
c906108c 2493 /* If interactive, print the frame that is now current. */
c906108c
SS
2494 if (from_tty)
2495 frame_command ("0", 1);
2496 else
2497 select_frame_command ("0", 0);
2498}
2499
033a42c2 2500/* Sets the scope to input function name, provided that the function
c378eb4e 2501 is within the current stack frame. */
c906108c
SS
2502
2503struct function_bounds
2504{
2505 CORE_ADDR low, high;
2506};
2507
2508static void
fba45db2 2509func_command (char *arg, int from_tty)
c906108c 2510{
033a42c2 2511 struct frame_info *frame;
c906108c
SS
2512 int found = 0;
2513 struct symtabs_and_lines sals;
2514 int i;
2515 int level = 1;
033a42c2 2516 struct function_bounds *func_bounds = NULL;
f8eba3c6 2517 struct cleanup *cleanups;
c906108c 2518
033a42c2 2519 if (arg != NULL)
c906108c
SS
2520 return;
2521
033a42c2 2522 frame = parse_frame_specification ("0");
39cf75f7 2523 sals = decode_line_with_current_source (arg, DECODE_LINE_FUNFIRSTLINE);
f8eba3c6 2524 cleanups = make_cleanup (xfree, sals.sals);
c906108c
SS
2525 func_bounds = (struct function_bounds *) xmalloc (
2526 sizeof (struct function_bounds) * sals.nelts);
f8eba3c6 2527 make_cleanup (xfree, func_bounds);
c906108c
SS
2528 for (i = 0; (i < sals.nelts && !found); i++)
2529 {
f8eba3c6
TT
2530 if (sals.sals[i].pspace != current_program_space)
2531 func_bounds[i].low = func_bounds[i].high = 0;
2532 else if (sals.sals[i].pc == 0
2533 || find_pc_partial_function (sals.sals[i].pc, NULL,
2534 &func_bounds[i].low,
2535 &func_bounds[i].high) == 0)
c906108c 2536 {
033a42c2 2537 func_bounds[i].low = func_bounds[i].high = 0;
c906108c
SS
2538 }
2539 }
2540
2541 do
2542 {
2543 for (i = 0; (i < sals.nelts && !found); i++)
033a42c2
MK
2544 found = (get_frame_pc (frame) >= func_bounds[i].low
2545 && get_frame_pc (frame) < func_bounds[i].high);
c906108c
SS
2546 if (!found)
2547 {
2548 level = 1;
033a42c2 2549 frame = find_relative_frame (frame, &level);
c906108c
SS
2550 }
2551 }
2552 while (!found && level == 0);
2553
f8eba3c6 2554 do_cleanups (cleanups);
c906108c
SS
2555
2556 if (!found)
a3f17187 2557 printf_filtered (_("'%s' not within current stack frame.\n"), arg);
206415a3 2558 else if (frame != get_selected_frame (NULL))
033a42c2 2559 select_and_print_frame (frame);
c906108c
SS
2560}
2561
2562/* Gets the language of the current frame. */
2563
2564enum language
fba45db2 2565get_frame_language (void)
c906108c 2566{
206415a3 2567 struct frame_info *frame = deprecated_safe_get_selected_frame ();
c5aa993b 2568
033a42c2 2569 if (frame)
c906108c 2570 {
e3eebbd7
PA
2571 volatile struct gdb_exception ex;
2572 CORE_ADDR pc = 0;
2573 struct symtab *s;
2574
7ae4c3a5 2575 /* We determine the current frame language by looking up its
033a42c2
MK
2576 associated symtab. To retrieve this symtab, we use the frame
2577 PC. However we cannot use the frame PC as is, because it
2578 usually points to the instruction following the "call", which
2579 is sometimes the first instruction of another function. So
2580 we rely on get_frame_address_in_block(), it provides us with
2581 a PC that is guaranteed to be inside the frame's code
2582 block. */
033a42c2 2583
e3eebbd7
PA
2584 TRY_CATCH (ex, RETURN_MASK_ERROR)
2585 {
2586 pc = get_frame_address_in_block (frame);
2587 }
2588 if (ex.reason < 0)
2589 {
2590 if (ex.error != NOT_AVAILABLE_ERROR)
2591 throw_exception (ex);
2592 }
2593 else
2594 {
2595 s = find_pc_symtab (pc);
2596 if (s != NULL)
2597 return s->language;
2598 }
c906108c 2599 }
c906108c 2600
033a42c2 2601 return language_unknown;
c906108c
SS
2602}
2603\f
033a42c2
MK
2604
2605/* Provide a prototype to silence -Wmissing-prototypes. */
2606void _initialize_stack (void);
2607
c906108c 2608void
fba45db2 2609_initialize_stack (void)
c906108c 2610{
1bedd215
AC
2611 add_com ("return", class_stack, return_command, _("\
2612Make selected stack frame return to its caller.\n\
c906108c
SS
2613Control remains in the debugger, but when you continue\n\
2614execution will resume in the frame above the one now selected.\n\
1bedd215
AC
2615If an argument is given, it is an expression for the value to return."));
2616
2617 add_com ("up", class_stack, up_command, _("\
2618Select and print stack frame that called this one.\n\
2619An argument says how many frames up to go."));
2620 add_com ("up-silently", class_support, up_silently_command, _("\
2621Same as the `up' command, but does not print anything.\n\
2622This is useful in command scripts."));
2623
2624 add_com ("down", class_stack, down_command, _("\
2625Select and print stack frame called by this one.\n\
2626An argument says how many frames down to go."));
c906108c
SS
2627 add_com_alias ("do", "down", class_stack, 1);
2628 add_com_alias ("dow", "down", class_stack, 1);
1bedd215
AC
2629 add_com ("down-silently", class_support, down_silently_command, _("\
2630Same as the `down' command, but does not print anything.\n\
2631This is useful in command scripts."));
c906108c 2632
1bedd215 2633 add_com ("frame", class_stack, frame_command, _("\
3e43a32a
MS
2634Select and print a stack frame.\nWith no argument, \
2635print the selected stack frame. (See also \"info frame\").\n\
c906108c
SS
2636An argument specifies the frame to select.\n\
2637It can be a stack frame number or the address of the frame.\n\
2638With argument, nothing is printed if input is coming from\n\
1bedd215 2639a command file or a user-defined command."));
c906108c
SS
2640
2641 add_com_alias ("f", "frame", class_stack, 1);
2642
2643 if (xdb_commands)
2644 {
c5aa993b 2645 add_com ("L", class_stack, current_frame_command,
1bedd215 2646 _("Print the current stack frame.\n"));
c906108c
SS
2647 add_com_alias ("V", "frame", class_stack, 1);
2648 }
1bedd215
AC
2649 add_com ("select-frame", class_stack, select_frame_command, _("\
2650Select a stack frame without printing anything.\n\
c906108c 2651An argument specifies the frame to select.\n\
1bedd215 2652It can be a stack frame number or the address of the frame.\n"));
c906108c 2653
1bedd215
AC
2654 add_com ("backtrace", class_stack, backtrace_command, _("\
2655Print backtrace of all stack frames, or innermost COUNT frames.\n\
3e43a32a 2656With a negative argument, print outermost -COUNT frames.\nUse of the \
1e611234
PM
2657'full' qualifier also prints the values of the local variables.\n\
2658Use of the 'no-filters' qualifier prohibits frame filters from executing\n\
2659on this backtrace.\n"));
c906108c
SS
2660 add_com_alias ("bt", "backtrace", class_stack, 0);
2661 if (xdb_commands)
2662 {
2663 add_com_alias ("t", "backtrace", class_stack, 0);
1bedd215 2664 add_com ("T", class_stack, backtrace_full_command, _("\
cce7e648 2665Print backtrace of all stack frames, or innermost COUNT frames\n\
c906108c
SS
2666and the values of the local variables.\n\
2667With a negative argument, print outermost -COUNT frames.\n\
1bedd215 2668Usage: T <count>\n"));
c906108c
SS
2669 }
2670
2671 add_com_alias ("where", "backtrace", class_alias, 0);
2672 add_info ("stack", backtrace_command,
1bedd215 2673 _("Backtrace of the stack, or innermost COUNT frames."));
c906108c
SS
2674 add_info_alias ("s", "stack", 1);
2675 add_info ("frame", frame_info,
1bedd215 2676 _("All about selected stack frame, or frame at ADDR."));
c906108c
SS
2677 add_info_alias ("f", "frame", 1);
2678 add_info ("locals", locals_info,
1bedd215 2679 _("Local variables of current stack frame."));
c906108c 2680 add_info ("args", args_info,
1bedd215 2681 _("Argument variables of current stack frame."));
c906108c 2682 if (xdb_commands)
c5aa993b 2683 add_com ("l", class_info, args_plus_locals_info,
1bedd215 2684 _("Argument and local variables of current stack frame."));
c906108c
SS
2685
2686 if (dbx_commands)
1bedd215
AC
2687 add_com ("func", class_stack, func_command, _("\
2688Select the stack frame that contains <func>.\n\
2689Usage: func <name>\n"));
c906108c 2690
88408340
JB
2691 add_setshow_enum_cmd ("frame-arguments", class_stack,
2692 print_frame_arguments_choices, &print_frame_arguments,
2693 _("Set printing of non-scalar frame arguments"),
2694 _("Show printing of non-scalar frame arguments"),
2695 NULL, NULL, NULL, &setprintlist, &showprintlist);
2696
e7045703
DE
2697 add_setshow_boolean_cmd ("frame-arguments", no_class,
2698 &print_raw_frame_arguments, _("\
2699Set whether to print frame arguments in raw form."), _("\
2700Show whether to print frame arguments in raw form."), _("\
2701If set, frame arguments are printed in raw form, bypassing any\n\
2702pretty-printers for that value."),
2703 NULL, NULL,
2704 &setprintrawlist, &showprintrawlist);
2705
30c33a9f
HZ
2706 add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
2707 &disassemble_next_line, _("\
3e43a32a
MS
2708Set whether to disassemble next source line or insn when execution stops."),
2709 _("\
2710Show whether to disassemble next source line or insn when execution stops."),
2711 _("\
80a0ea0f
EZ
2712If ON, GDB will display disassembly of the next source line, in addition\n\
2713to displaying the source line itself. If the next source line cannot\n\
2714be displayed (e.g., source is unavailable or there's no line info), GDB\n\
2715will display disassembly of next instruction instead of showing the\n\
2716source line.\n\
2717If AUTO, display disassembly of next instruction only if the source line\n\
2718cannot be displayed.\n\
2719If OFF (which is the default), never display the disassembly of the next\n\
2720source line."),
30c33a9f
HZ
2721 NULL,
2722 show_disassemble_next_line,
2723 &setlist, &showlist);
a362e3d3 2724 disassemble_next_line = AUTO_BOOLEAN_FALSE;
e18b2753
JK
2725
2726 add_setshow_enum_cmd ("entry-values", class_stack,
2727 print_entry_values_choices, &print_entry_values,
2728 _("Set printing of function arguments at function "
2729 "entry"),
2730 _("Show printing of function arguments at function "
2731 "entry"),
2732 _("\
2733GDB can sometimes determine the values of function arguments at entry,\n\
2734in addition to their current values. This option tells GDB whether\n\
2735to print the current value, the value at entry (marked as val@entry),\n\
2736or both. Note that one or both of these values may be <optimized out>."),
2737 NULL, NULL, &setprintlist, &showprintlist);
c906108c 2738}