1 /* Print and select stack frames for GDB, the GNU debugger.
3 Copyright (C) 1986-2014 Free Software Foundation, Inc.
5 This file is part of GDB.
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
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
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.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
24 #include "expression.h"
31 #include "breakpoint.h"
38 #include "dictionary.h"
39 #include "exceptions.h"
40 #include "reggroups.h"
44 #include "gdbthread.h"
45 #include "cp-support.h"
47 #include "inline-frame.h"
49 #include "cli/cli-utils.h"
52 #include "gdb_assert.h"
57 #include "extension.h"
59 void (*deprecated_selected_frame_level_changed_hook
) (int);
61 /* The possible choices of "set print frame-arguments", and the value
64 static const char *const print_frame_arguments_choices
[] =
65 {"all", "scalars", "none", NULL
};
66 static const char *print_frame_arguments
= "scalars";
68 /* If non-zero, don't invoke pretty-printers for frame arguments. */
69 static int print_raw_frame_arguments
;
71 /* The possible choices of "set print entry-values", and the value
74 const char print_entry_values_no
[] = "no";
75 const char print_entry_values_only
[] = "only";
76 const char print_entry_values_preferred
[] = "preferred";
77 const char print_entry_values_if_needed
[] = "if-needed";
78 const char print_entry_values_both
[] = "both";
79 const char print_entry_values_compact
[] = "compact";
80 const char print_entry_values_default
[] = "default";
81 static const char *const print_entry_values_choices
[] =
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
,
92 const char *print_entry_values
= print_entry_values_default
;
94 /* Prototypes for local functions. */
96 static void print_frame_local_vars (struct frame_info
*, int,
99 static void print_frame (struct frame_info
*frame
, int print_level
,
100 enum print_what print_what
, int print_args
,
101 struct symtab_and_line sal
);
103 static void set_last_displayed_sal (int valid
,
104 struct program_space
*pspace
,
106 struct symtab
*symtab
,
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. */
115 int annotation_level
= 0;
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. */
119 static int last_displayed_sal_valid
= 0;
120 static struct program_space
*last_displayed_pspace
= 0;
121 static CORE_ADDR last_displayed_addr
= 0;
122 static struct symtab
*last_displayed_symtab
= 0;
123 static int last_displayed_line
= 0;
126 /* Return 1 if we should display the address in addition to the location,
127 because we are in the middle of a statement. */
130 frame_show_address (struct frame_info
*frame
,
131 struct symtab_and_line sal
)
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)
140 if (get_next_frame (frame
) == NULL
)
141 gdb_assert (inline_skipped_frames (inferior_ptid
) > 0);
143 gdb_assert (get_frame_type (get_next_frame (frame
)) == INLINE_FRAME
);
147 return get_frame_pc (frame
) != sal
.pc
;
150 /* Show or print a stack frame FRAME briefly. The output is format
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. */
157 print_stack_frame (struct frame_info
*frame
, int print_level
,
158 enum print_what print_what
,
161 volatile struct gdb_exception e
;
163 /* For mi, alway print location and address. */
164 if (ui_out_is_mi_like_p (current_uiout
))
165 print_what
= LOC_AND_ADDRESS
;
167 TRY_CATCH (e
, RETURN_MASK_ERROR
)
169 print_frame_info (frame
, print_level
, print_what
, 1 /* print_args */,
172 set_current_sal_from_frame (frame
);
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). */
182 print_frame_nameless_args (struct frame_info
*frame
, long start
, int num
,
183 int first
, struct ui_file
*stream
)
185 struct gdbarch
*gdbarch
= get_frame_arch (frame
);
186 enum bfd_endian byte_order
= gdbarch_byte_order (gdbarch
);
191 for (i
= 0; i
< num
; i
++)
194 argsaddr
= get_frame_args_address (frame
);
197 arg_value
= read_memory_integer (argsaddr
+ start
,
198 sizeof (int), byte_order
);
200 fprintf_filtered (stream
, ", ");
201 fprintf_filtered (stream
, "%ld", arg_value
);
203 start
+= sizeof (int);
207 /* Print single argument of inferior function. ARG must be already
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. */
214 print_frame_arg (const struct frame_arg
*arg
)
216 struct ui_out
*uiout
= current_uiout
;
217 volatile struct gdb_exception except
;
218 struct cleanup
*old_chain
;
221 stb
= mem_fileopen ();
222 old_chain
= make_cleanup_ui_file_delete (stb
);
224 gdb_assert (!arg
->val
|| !arg
->error
);
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
));
230 annotate_arg_begin ();
232 make_cleanup_ui_out_tuple_begin_end (uiout
, NULL
);
233 fprintf_symbol_filtered (stb
, SYMBOL_PRINT_NAME (arg
->sym
),
234 SYMBOL_LANGUAGE (arg
->sym
), DMGL_PARAMS
| DMGL_ANSI
);
235 if (arg
->entry_kind
== print_entry_values_compact
)
237 /* It is OK to provide invalid MI-like stream as with
238 PRINT_ENTRY_VALUE_COMPACT we never use MI. */
239 fputs_filtered ("=", stb
);
241 fprintf_symbol_filtered (stb
, SYMBOL_PRINT_NAME (arg
->sym
),
242 SYMBOL_LANGUAGE (arg
->sym
),
243 DMGL_PARAMS
| DMGL_ANSI
);
245 if (arg
->entry_kind
== print_entry_values_only
246 || arg
->entry_kind
== print_entry_values_compact
)
247 fputs_filtered ("@entry", stb
);
248 ui_out_field_stream (uiout
, "name", stb
);
249 annotate_arg_name_end ();
250 ui_out_text (uiout
, "=");
252 if (!arg
->val
&& !arg
->error
)
253 ui_out_text (uiout
, "...");
257 except
.message
= arg
->error
;
260 /* TRY_CATCH has two statements, wrap it in a block. */
262 TRY_CATCH (except
, RETURN_MASK_ERROR
)
264 const struct language_defn
*language
;
265 struct value_print_options opts
;
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. */
273 annotate_arg_value (value_type (arg
->val
));
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
));
280 language
= current_language
;
282 get_no_prettyformat_print_options (&opts
);
284 opts
.raw
= print_raw_frame_arguments
;
286 /* True in "summary" mode, false otherwise. */
287 opts
.summary
= !strcmp (print_frame_arguments
, "scalars");
289 common_val_print (arg
->val
, stb
, 2, &opts
, language
);
293 fprintf_filtered (stb
, _("<error reading variable: %s>"),
297 ui_out_field_stream (uiout
, "value", stb
);
299 /* Also invoke ui_out_tuple_end. */
300 do_cleanups (old_chain
);
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
310 read_frame_local (struct symbol
*sym
, struct frame_info
*frame
,
311 struct frame_arg
*argp
)
313 volatile struct gdb_exception except
;
314 struct value
*val
= NULL
;
316 TRY_CATCH (except
, RETURN_MASK_ERROR
)
318 val
= read_var_value (sym
, frame
);
321 argp
->error
= (val
== NULL
) ? xstrdup (except
.message
) : NULL
;
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
331 read_frame_arg (struct symbol
*sym
, struct frame_info
*frame
,
332 struct frame_arg
*argp
, struct frame_arg
*entryargp
)
334 struct value
*val
= NULL
, *entryval
= NULL
;
335 char *val_error
= NULL
, *entryval_error
= NULL
;
337 volatile struct gdb_exception except
;
339 if (print_entry_values
!= print_entry_values_only
340 && print_entry_values
!= print_entry_values_preferred
)
342 TRY_CATCH (except
, RETURN_MASK_ERROR
)
344 val
= read_var_value (sym
, frame
);
348 val_error
= alloca (strlen (except
.message
) + 1);
349 strcpy (val_error
, except
.message
);
353 if (SYMBOL_COMPUTED_OPS (sym
) != NULL
354 && SYMBOL_COMPUTED_OPS (sym
)->read_variable_at_entry
!= NULL
355 && print_entry_values
!= print_entry_values_no
356 && (print_entry_values
!= print_entry_values_if_needed
357 || !val
|| value_optimized_out (val
)))
359 TRY_CATCH (except
, RETURN_MASK_ERROR
)
361 const struct symbol_computed_ops
*ops
;
363 ops
= SYMBOL_COMPUTED_OPS (sym
);
364 entryval
= ops
->read_variable_at_entry (sym
, frame
);
368 entryval_error
= alloca (strlen (except
.message
) + 1);
369 strcpy (entryval_error
, except
.message
);
372 if (except
.error
== NO_ENTRY_VALUE_ERROR
373 || (entryval
&& value_optimized_out (entryval
)))
376 entryval_error
= NULL
;
379 if (print_entry_values
== print_entry_values_compact
380 || print_entry_values
== print_entry_values_default
)
382 /* For MI do not try to use print_entry_values_compact for ARGP. */
384 if (val
&& entryval
&& !ui_out_is_mi_like_p (current_uiout
))
386 struct type
*type
= value_type (val
);
388 if (!value_optimized_out (val
)
389 && value_available_contents_eq (val
, 0, entryval
, 0,
392 /* Initialize it just to avoid a GCC false warning. */
393 struct value
*val_deref
= NULL
, *entryval_deref
;
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
400 TRY_CATCH (except
, RETURN_MASK_ERROR
)
402 struct type
*type_deref
;
404 val_deref
= coerce_ref (val
);
405 if (value_lazy (val_deref
))
406 value_fetch_lazy (val_deref
);
407 type_deref
= value_type (val_deref
);
409 entryval_deref
= coerce_ref (entryval
);
410 if (value_lazy (entryval_deref
))
411 value_fetch_lazy (entryval_deref
);
413 /* If the reference addresses match but dereferenced
414 content does not match print them. */
416 && value_available_contents_eq (val_deref
, 0,
418 TYPE_LENGTH (type_deref
)))
422 /* Value was not a reference; and its content matches. */
423 if (val
== val_deref
)
425 /* If the dereferenced content could not be fetched do not
427 else if (except
.error
== NO_ENTRY_VALUE_ERROR
)
429 else if (except
.message
)
431 entryval_error
= alloca (strlen (except
.message
) + 1);
432 strcpy (entryval_error
, except
.message
);
440 /* Try to remove possibly duplicate error message for ENTRYARGP even
443 if (val_error
&& entryval_error
444 && strcmp (val_error
, entryval_error
) == 0)
446 entryval_error
= NULL
;
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
455 if (entryval
== NULL
)
457 if (print_entry_values
== print_entry_values_preferred
)
459 TRY_CATCH (except
, RETURN_MASK_ERROR
)
461 val
= read_var_value (sym
, frame
);
465 val_error
= alloca (strlen (except
.message
) + 1);
466 strcpy (val_error
, except
.message
);
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
))))
474 entryval
= allocate_optimized_out_value (SYMBOL_TYPE (sym
));
475 entryval_error
= NULL
;
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
)
489 argp
->error
= val_error
? xstrdup (val_error
) : NULL
;
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
)
495 argp
->entry_kind
= print_entry_values_compact
;
496 gdb_assert (!ui_out_is_mi_like_p (current_uiout
));
499 argp
->entry_kind
= print_entry_values_no
;
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
;
507 entryargp
->entry_kind
= print_entry_values_only
;
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). */
515 /* Note that currently the "number of arguments according to the
516 stack frame" is only known on VAX where i refers to the "number of
517 ints of arguments according to the stack frame". */
520 print_frame_args (struct symbol
*func
, struct frame_info
*frame
,
521 int num
, struct ui_file
*stream
)
523 struct ui_out
*uiout
= current_uiout
;
525 /* Offset of next stack argument beyond the one we have seen that is
526 at the highest offset, or -1 if we haven't come to a stack
528 long highest_offset
= -1;
529 /* Number of ints of arguments that we have printed so far. */
530 int args_printed
= 0;
531 struct cleanup
*old_chain
;
533 /* True if we should print arguments, false otherwise. */
534 int print_args
= strcmp (print_frame_arguments
, "none");
536 stb
= mem_fileopen ();
537 old_chain
= make_cleanup_ui_file_delete (stb
);
541 const struct block
*b
= SYMBOL_BLOCK_VALUE (func
);
542 struct block_iterator iter
;
545 ALL_BLOCK_SYMBOLS (b
, iter
, sym
)
547 struct frame_arg arg
, entryarg
;
551 /* Keep track of the highest stack argument offset seen, and
552 skip over any kinds of symbols we don't care about. */
554 if (!SYMBOL_IS_ARGUMENT (sym
))
557 switch (SYMBOL_CLASS (sym
))
562 long current_offset
= SYMBOL_VALUE (sym
);
563 int arg_size
= TYPE_LENGTH (SYMBOL_TYPE (sym
));
565 /* Compute address of next argument by adding the size of
566 this argument and rounding to an int boundary. */
568 ((current_offset
+ arg_size
+ sizeof (int) - 1)
569 & ~(sizeof (int) - 1));
571 /* If this is the highest offset seen yet, set
573 if (highest_offset
== -1
574 || (current_offset
> highest_offset
))
575 highest_offset
= current_offset
;
577 /* Add the number of ints we're about to print to
579 args_printed
+= (arg_size
+ sizeof (int) - 1) / sizeof (int);
582 /* We care about types of symbols, but don't need to
583 keep track of stack offsets in them. */
585 case LOC_REGPARM_ADDR
:
587 case LOC_OPTIMIZED_OUT
:
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.
595 This includes gcc1 (not gcc2) on SPARC when passing a
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
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? */
605 if (*SYMBOL_LINKAGE_NAME (sym
))
609 nsym
= lookup_symbol (SYMBOL_LINKAGE_NAME (sym
),
610 b
, VAR_DOMAIN
, NULL
);
611 gdb_assert (nsym
!= NULL
);
612 if (SYMBOL_CLASS (nsym
) == LOC_REGISTER
613 && !SYMBOL_IS_ARGUMENT (nsym
))
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.
621 Reasons for using the LOC_ARG:
623 (1) Because find_saved_registers may be slow for
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
631 Reasons why we might want to use the LOC_REGISTER:
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
641 Additional note: It might be nice if "info args"
642 displayed both values.
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. */
649 /* Leave sym (the LOC_ARG) alone. */
656 /* Print the current arg. */
658 ui_out_text (uiout
, ", ");
659 ui_out_wrap_hint (uiout
, " ");
663 memset (&arg
, 0, sizeof (arg
));
665 arg
.entry_kind
= print_entry_values_no
;
666 memset (&entryarg
, 0, sizeof (entryarg
));
668 entryarg
.entry_kind
= print_entry_values_no
;
671 read_frame_arg (sym
, frame
, &arg
, &entryarg
);
673 if (arg
.entry_kind
!= print_entry_values_only
)
674 print_frame_arg (&arg
);
676 if (entryarg
.entry_kind
!= print_entry_values_no
)
678 if (arg
.entry_kind
!= print_entry_values_only
)
680 ui_out_text (uiout
, ", ");
681 ui_out_wrap_hint (uiout
, " ");
684 print_frame_arg (&entryarg
);
688 xfree (entryarg
.error
);
694 /* Don't print nameless args in situations where we don't know
695 enough about the stack to find them. */
700 if (highest_offset
== -1)
701 start
= gdbarch_frame_args_skip (get_frame_arch (frame
));
703 start
= highest_offset
;
705 print_frame_nameless_args (frame
, start
, num
- args_printed
,
709 do_cleanups (old_chain
);
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'. */
717 set_current_sal_from_frame (struct frame_info
*frame
)
719 struct symtab_and_line sal
;
721 find_frame_sal (frame
, &sal
);
722 if (sal
.symtab
!= NULL
)
723 set_current_source_symtab_and_line (&sal
);
726 /* If ON, GDB will display disassembly of the next source line when
727 execution of the program being debugged stops.
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. */
732 static enum auto_boolean disassemble_next_line
;
735 show_disassemble_next_line (struct ui_file
*file
, int from_tty
,
736 struct cmd_list_element
*c
,
739 fprintf_filtered (file
,
740 _("Debugger's willingness to use "
741 "disassemble-next-line is %s.\n"),
745 /* Use TRY_CATCH to catch the exception from the gdb_disassembly
746 because it will be broken by filter sometime. */
749 do_gdb_disassembly (struct gdbarch
*gdbarch
,
750 int how_many
, CORE_ADDR low
, CORE_ADDR high
)
752 volatile struct gdb_exception exception
;
754 TRY_CATCH (exception
, RETURN_MASK_ERROR
)
756 gdb_disassembly (gdbarch
, current_uiout
, 0,
757 DISASSEMBLY_RAW_INSN
, how_many
,
760 if (exception
.reason
< 0)
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
);
768 /* Print information about frame FRAME. The output is format according
769 to PRINT_LEVEL and PRINT_WHAT and PRINT_ARGS. The meaning of
772 SRC_LINE: Print only source line.
773 LOCATION: Print only location.
774 LOC_AND_SRC: Print location and source line.
776 Used in "where" output, and to emit breakpoint or step
780 print_frame_info (struct frame_info
*frame
, int print_level
,
781 enum print_what print_what
, int print_args
,
784 struct gdbarch
*gdbarch
= get_frame_arch (frame
);
785 struct symtab_and_line sal
;
788 struct ui_out
*uiout
= current_uiout
;
790 if (get_frame_type (frame
) == DUMMY_FRAME
791 || get_frame_type (frame
) == SIGTRAMP_FRAME
792 || get_frame_type (frame
) == ARCH_FRAME
)
794 struct cleanup
*uiout_cleanup
795 = make_cleanup_ui_out_tuple_begin_end (uiout
, "frame");
797 annotate_frame_begin (print_level
? frame_relative_level (frame
) : 0,
798 gdbarch
, get_frame_pc (frame
));
800 /* Do this regardless of SOURCE because we don't have any source
801 to list for this frame. */
804 ui_out_text (uiout
, "#");
805 ui_out_field_fmt_int (uiout
, 2, ui_left
, "level",
806 frame_relative_level (frame
));
808 if (ui_out_is_mi_like_p (uiout
))
810 annotate_frame_address ();
811 ui_out_field_core_addr (uiout
, "addr",
812 gdbarch
, get_frame_pc (frame
));
813 annotate_frame_address_end ();
816 if (get_frame_type (frame
) == DUMMY_FRAME
)
818 annotate_function_call ();
819 ui_out_field_string (uiout
, "func", "<function called from gdb>");
821 else if (get_frame_type (frame
) == SIGTRAMP_FRAME
)
823 annotate_signal_handler_caller ();
824 ui_out_field_string (uiout
, "func", "<signal handler called>");
826 else if (get_frame_type (frame
) == ARCH_FRAME
)
828 ui_out_field_string (uiout
, "func", "<cross-architecture call>");
830 ui_out_text (uiout
, "\n");
831 annotate_frame_end ();
833 /* If disassemble-next-line is set to auto or on output the next
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);
840 do_cleanups (uiout_cleanup
);
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
);
852 location_print
= (print_what
== LOCATION
853 || print_what
== LOC_AND_ADDRESS
854 || print_what
== SRC_AND_LOC
);
856 if (location_print
|| !sal
.symtab
)
857 print_frame (frame
, print_level
, print_what
, print_args
, sal
);
859 source_print
= (print_what
== SRC_LINE
|| print_what
== SRC_AND_LOC
);
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
)
866 do_gdb_disassembly (get_frame_arch (frame
), 1,
867 get_frame_pc (frame
), get_frame_pc (frame
) + 1);
869 if (source_print
&& sal
.symtab
)
872 int mid_statement
= ((print_what
== SRC_LINE
)
873 && frame_show_address (frame
, sal
));
875 if (annotation_level
)
876 done
= identify_source_line (sal
.symtab
, sal
.line
, mid_statement
,
877 get_frame_pc (frame
));
880 if (deprecated_print_frame_info_listing_hook
)
881 deprecated_print_frame_info_listing_hook (sal
.symtab
,
886 struct value_print_options opts
;
888 get_user_print_options (&opts
);
889 /* We used to do this earlier, but that is clearly
890 wrong. This function is used by many different
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
894 line. Only the command line really wants this
895 behavior. Other UIs probably would like the
896 ability to decide for themselves if it is desired. */
897 if (opts
.addressprint
&& mid_statement
)
899 ui_out_field_core_addr (uiout
, "addr",
900 gdbarch
, get_frame_pc (frame
));
901 ui_out_text (uiout
, "\t");
904 print_source_lines (sal
.symtab
, sal
.line
, sal
.line
+ 1, 0);
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
)
911 do_gdb_disassembly (get_frame_arch (frame
), -1, sal
.pc
, sal
.end
);
918 if (get_frame_pc_if_available (frame
, &pc
))
919 set_last_displayed_sal (1, sal
.pspace
, pc
, sal
.symtab
, sal
.line
);
921 set_last_displayed_sal (0, 0, 0, 0, 0);
924 annotate_frame_end ();
926 gdb_flush (gdb_stdout
);
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. */
934 set_last_displayed_sal (int valid
, struct program_space
*pspace
,
935 CORE_ADDR addr
, struct symtab
*symtab
,
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
;
943 if (valid
&& pspace
== NULL
)
945 clear_last_displayed_sal ();
946 internal_error (__FILE__
, __LINE__
,
947 _("Trying to set NULL pspace."));
951 /* Forget the last sal we displayed. */
954 clear_last_displayed_sal (void)
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;
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
968 last_displayed_sal_is_valid (void)
970 return last_displayed_sal_valid
;
973 /* Get the pspace of the last sal we displayed, if it's valid. */
975 struct program_space
*
976 get_last_displayed_pspace (void)
978 if (last_displayed_sal_valid
)
979 return last_displayed_pspace
;
983 /* Get the address of the last sal we displayed, if it's valid. */
986 get_last_displayed_addr (void)
988 if (last_displayed_sal_valid
)
989 return last_displayed_addr
;
993 /* Get the symtab of the last sal we displayed, if it's valid. */
996 get_last_displayed_symtab (void)
998 if (last_displayed_sal_valid
)
999 return last_displayed_symtab
;
1003 /* Get the line of the last sal we displayed, if it's valid. */
1006 get_last_displayed_line (void)
1008 if (last_displayed_sal_valid
)
1009 return last_displayed_line
;
1013 /* Get the last sal we displayed, if it's valid. */
1016 get_last_displayed_sal (struct symtab_and_line
*sal
)
1018 if (last_displayed_sal_valid
)
1020 sal
->pspace
= last_displayed_pspace
;
1021 sal
->pc
= last_displayed_addr
;
1022 sal
->symtab
= last_displayed_symtab
;
1023 sal
->line
= last_displayed_line
;
1035 /* Attempt to obtain the FUNNAME, FUNLANG and optionally FUNCP of the function
1036 corresponding to FRAME. FUNNAME needs to be freed by the caller. */
1039 find_frame_funname (struct frame_info
*frame
, char **funname
,
1040 enum language
*funlang
, struct symbol
**funcp
)
1042 struct symbol
*func
;
1045 *funlang
= language_unknown
;
1049 func
= get_frame_function (frame
);
1052 /* In certain pathological cases, the symtabs give the wrong
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
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
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.
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
1070 struct bound_minimal_symbol msymbol
;
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
)))
1076 = lookup_minimal_symbol_by_pc (get_frame_address_in_block (frame
));
1078 memset (&msymbol
, 0, sizeof (msymbol
));
1080 if (msymbol
.minsym
!= NULL
1081 && (BMSYMBOL_VALUE_ADDRESS (msymbol
)
1082 > BLOCK_START (SYMBOL_BLOCK_VALUE (func
))))
1084 /* We also don't know anything about the function besides
1085 its address and name. */
1087 *funname
= xstrdup (MSYMBOL_PRINT_NAME (msymbol
.minsym
));
1088 *funlang
= MSYMBOL_LANGUAGE (msymbol
.minsym
);
1092 *funname
= xstrdup (SYMBOL_PRINT_NAME (func
));
1093 *funlang
= SYMBOL_LANGUAGE (func
);
1096 if (*funlang
== language_cplus
)
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
1102 display parameters. So remove the parameters. */
1103 char *func_only
= cp_remove_params (*funname
);
1108 *funname
= func_only
;
1115 struct bound_minimal_symbol msymbol
;
1118 if (!get_frame_address_in_block_if_available (frame
, &pc
))
1121 msymbol
= lookup_minimal_symbol_by_pc (pc
);
1122 if (msymbol
.minsym
!= NULL
)
1124 *funname
= xstrdup (MSYMBOL_PRINT_NAME (msymbol
.minsym
));
1125 *funlang
= MSYMBOL_LANGUAGE (msymbol
.minsym
);
1131 print_frame (struct frame_info
*frame
, int print_level
,
1132 enum print_what print_what
, int print_args
,
1133 struct symtab_and_line sal
)
1135 struct gdbarch
*gdbarch
= get_frame_arch (frame
);
1136 struct ui_out
*uiout
= current_uiout
;
1137 char *funname
= NULL
;
1138 enum language funlang
= language_unknown
;
1139 struct ui_file
*stb
;
1140 struct cleanup
*old_chain
, *list_chain
;
1141 struct value_print_options opts
;
1142 struct symbol
*func
;
1146 pc_p
= get_frame_pc_if_available (frame
, &pc
);
1148 stb
= mem_fileopen ();
1149 old_chain
= make_cleanup_ui_file_delete (stb
);
1151 find_frame_funname (frame
, &funname
, &funlang
, &func
);
1152 make_cleanup (xfree
, funname
);
1154 annotate_frame_begin (print_level
? frame_relative_level (frame
) : 0,
1157 list_chain
= make_cleanup_ui_out_tuple_begin_end (uiout
, "frame");
1161 ui_out_text (uiout
, "#");
1162 ui_out_field_fmt_int (uiout
, 2, ui_left
, "level",
1163 frame_relative_level (frame
));
1165 get_user_print_options (&opts
);
1166 if (opts
.addressprint
)
1168 || frame_show_address (frame
, sal
)
1169 || print_what
== LOC_AND_ADDRESS
)
1171 annotate_frame_address ();
1173 ui_out_field_core_addr (uiout
, "addr", gdbarch
, pc
);
1175 ui_out_field_string (uiout
, "addr", "<unavailable>");
1176 annotate_frame_address_end ();
1177 ui_out_text (uiout
, " in ");
1179 annotate_frame_function_name ();
1180 fprintf_symbol_filtered (stb
, funname
? funname
: "??",
1181 funlang
, DMGL_ANSI
);
1182 ui_out_field_stream (uiout
, "func", stb
);
1183 ui_out_wrap_hint (uiout
, " ");
1184 annotate_frame_args ();
1186 ui_out_text (uiout
, " (");
1189 struct gdbarch
*gdbarch
= get_frame_arch (frame
);
1191 struct cleanup
*args_list_chain
;
1192 volatile struct gdb_exception e
;
1194 if (gdbarch_frame_num_args_p (gdbarch
))
1196 numargs
= gdbarch_frame_num_args (gdbarch
, frame
);
1197 gdb_assert (numargs
>= 0);
1202 args_list_chain
= make_cleanup_ui_out_list_begin_end (uiout
, "args");
1203 TRY_CATCH (e
, RETURN_MASK_ERROR
)
1205 print_frame_args (func
, frame
, numargs
, gdb_stdout
);
1207 /* FIXME: ARGS must be a list. If one argument is a string it
1208 will have " that will not be properly escaped. */
1209 /* Invoke ui_out_tuple_end. */
1210 do_cleanups (args_list_chain
);
1213 ui_out_text (uiout
, ")");
1216 const char *filename_display
;
1218 filename_display
= symtab_to_filename_for_display (sal
.symtab
);
1219 annotate_frame_source_begin ();
1220 ui_out_wrap_hint (uiout
, " ");
1221 ui_out_text (uiout
, " at ");
1222 annotate_frame_source_file ();
1223 ui_out_field_string (uiout
, "file", filename_display
);
1224 if (ui_out_is_mi_like_p (uiout
))
1226 const char *fullname
= symtab_to_fullname (sal
.symtab
);
1228 ui_out_field_string (uiout
, "fullname", fullname
);
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
);
1234 annotate_frame_source_end ();
1237 if (pc_p
&& (funname
== NULL
|| sal
.symtab
== NULL
))
1239 char *lib
= solib_name_from_address (get_frame_program_space (frame
),
1240 get_frame_pc (frame
));
1244 annotate_frame_where ();
1245 ui_out_wrap_hint (uiout
, " ");
1246 ui_out_text (uiout
, " from ");
1247 ui_out_field_string (uiout
, "from", lib
);
1251 /* do_cleanups will call ui_out_tuple_end() for us. */
1252 do_cleanups (list_chain
);
1253 ui_out_text (uiout
, "\n");
1254 do_cleanups (old_chain
);
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. */
1264 static struct frame_info
*
1265 parse_frame_specification_1 (const char *frame_exp
, const char *message
,
1266 int *selected_frame_p
)
1269 struct value
*args
[4];
1270 CORE_ADDR addrs
[ARRAY_SIZE (args
)];
1272 if (frame_exp
== NULL
)
1280 struct cleanup
*cleanup
;
1283 /* Skip leading white space, bail of EOL. */
1284 frame_exp
= skip_spaces_const (frame_exp
);
1288 /* Parse the argument, extract it, save it. */
1290 *p
&& !isspace (*p
);
1292 addr_string
= savestring (frame_exp
, p
- frame_exp
);
1294 cleanup
= make_cleanup (xfree
, addr_string
);
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
1302 if (numargs
>= ARRAY_SIZE (args
))
1303 error (_("Too many args in frame specification"));
1304 args
[numargs
++] = parse_and_eval (addr_string
);
1306 do_cleanups (cleanup
);
1310 /* If no args, default to the selected frame. */
1313 if (selected_frame_p
!= NULL
)
1314 (*selected_frame_p
) = 1;
1315 return get_selected_frame (message
);
1318 /* None of the remaining use the selected frame. */
1319 if (selected_frame_p
!= NULL
)
1320 (*selected_frame_p
) = 0;
1322 /* Assume the single arg[0] is an integer, and try using that to
1323 select a frame relative to current. */
1326 struct frame_info
*fid
;
1327 int level
= value_as_long (args
[0]);
1329 fid
= find_relative_frame (get_current_frame (), &level
);
1331 /* find_relative_frame was successful. */
1335 /* Convert each value into a corresponding address. */
1339 for (i
= 0; i
< numargs
; i
++)
1340 addrs
[i
] = value_as_address (args
[i
]);
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. */
1348 struct frame_id id
= frame_id_build_wild (addrs
[0]);
1349 struct frame_info
*fid
;
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
1355 for (fid
= get_current_frame ();
1357 fid
= get_prev_frame (fid
))
1359 if (frame_id_eq (id
, get_frame_id (fid
)))
1361 struct frame_info
*prev_frame
;
1365 prev_frame
= get_prev_frame (fid
);
1367 || !frame_id_eq (id
, get_frame_id (prev_frame
)))
1376 /* We couldn't identify the frame as an existing frame, but
1377 perhaps we can create one with a single argument. */
1379 return create_new_frame (addrs
[0], 0);
1380 else if (numargs
== 2)
1381 return create_new_frame (addrs
[0], addrs
[1]);
1383 error (_("Too many args in frame specification"));
1386 static struct frame_info
*
1387 parse_frame_specification (char *frame_exp
)
1389 return parse_frame_specification_1 (frame_exp
, NULL
, NULL
);
1392 /* Print verbosely the selected frame or the frame at address
1393 ADDR_EXP. Absolutely all information in the frame is printed. */
1396 frame_info (char *addr_exp
, int from_tty
)
1398 struct frame_info
*fi
;
1399 struct symtab_and_line sal
;
1400 struct symbol
*func
;
1402 struct frame_info
*calling_frame_info
;
1404 const char *funname
= 0;
1405 enum language funlang
= language_unknown
;
1406 const char *pc_regname
;
1407 int selected_frame_p
;
1408 struct gdbarch
*gdbarch
;
1409 struct cleanup
*back_to
= make_cleanup (null_cleanup
, NULL
);
1412 /* Initialize it to avoid "may be used uninitialized" warning. */
1413 CORE_ADDR caller_pc
= 0;
1414 volatile struct gdb_exception ex
;
1416 fi
= parse_frame_specification_1 (addr_exp
, "No stack.", &selected_frame_p
);
1417 gdbarch
= get_frame_arch (fi
);
1419 /* Name of the value returned by get_frame_pc(). Per comments, "pc"
1420 is not a good name. */
1421 if (gdbarch_pc_regnum (gdbarch
) >= 0)
1422 /* OK, this is weird. The gdbarch_pc_regnum hardware register's value can
1423 easily not match that of the internal value returned by
1425 pc_regname
= gdbarch_register_name (gdbarch
, gdbarch_pc_regnum (gdbarch
));
1427 /* But then, this is weird to. Even without gdbarch_pc_regnum, an
1428 architectures will often have a hardware register called "pc",
1429 and that register's value, again, can easily not match
1433 frame_pc_p
= get_frame_pc_if_available (fi
, &frame_pc
);
1434 find_frame_sal (fi
, &sal
);
1435 func
= get_frame_function (fi
);
1439 funname
= SYMBOL_PRINT_NAME (func
);
1440 funlang
= SYMBOL_LANGUAGE (func
);
1441 if (funlang
== language_cplus
)
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
);
1452 funname
= func_only
;
1453 make_cleanup (xfree
, func_only
);
1457 else if (frame_pc_p
)
1459 struct bound_minimal_symbol msymbol
;
1461 msymbol
= lookup_minimal_symbol_by_pc (frame_pc
);
1462 if (msymbol
.minsym
!= NULL
)
1464 funname
= MSYMBOL_PRINT_NAME (msymbol
.minsym
);
1465 funlang
= MSYMBOL_LANGUAGE (msymbol
.minsym
);
1468 calling_frame_info
= get_prev_frame (fi
);
1470 if (selected_frame_p
&& frame_relative_level (fi
) >= 0)
1472 printf_filtered (_("Stack level %d, frame at "),
1473 frame_relative_level (fi
));
1477 printf_filtered (_("Stack frame at "));
1479 fputs_filtered (paddress (gdbarch
, get_frame_base (fi
)), gdb_stdout
);
1480 printf_filtered (":\n");
1481 printf_filtered (" %s = ", pc_regname
);
1483 fputs_filtered (paddress (gdbarch
, get_frame_pc (fi
)), gdb_stdout
);
1485 fputs_filtered ("<unavailable>", gdb_stdout
);
1490 printf_filtered (" in ");
1491 fprintf_symbol_filtered (gdb_stdout
, funname
, funlang
,
1492 DMGL_ANSI
| DMGL_PARAMS
);
1496 printf_filtered (" (%s:%d)", symtab_to_filename_for_display (sal
.symtab
),
1498 puts_filtered ("; ");
1500 printf_filtered ("saved %s = ", pc_regname
);
1502 TRY_CATCH (ex
, RETURN_MASK_ERROR
)
1504 caller_pc
= frame_unwind_caller_pc (fi
);
1510 case NOT_AVAILABLE_ERROR
:
1511 val_print_unavailable (gdb_stdout
);
1513 case OPTIMIZED_OUT_ERROR
:
1514 val_print_not_saved (gdb_stdout
);
1517 fprintf_filtered (gdb_stdout
, _("<error: %s>"), ex
.message
);
1522 fputs_filtered (paddress (gdbarch
, caller_pc
), gdb_stdout
);
1523 printf_filtered ("\n");
1525 if (calling_frame_info
== NULL
)
1527 enum unwind_stop_reason reason
;
1529 reason
= get_frame_unwind_stop_reason (fi
);
1530 if (reason
!= UNWIND_NO_REASON
)
1531 printf_filtered (_(" Outermost frame: %s\n"),
1532 frame_stop_reason_string (fi
));
1534 else if (get_frame_type (fi
) == TAILCALL_FRAME
)
1535 puts_filtered (" tail call frame");
1536 else if (get_frame_type (fi
) == INLINE_FRAME
)
1537 printf_filtered (" inlined into frame %d",
1538 frame_relative_level (get_prev_frame (fi
)));
1541 printf_filtered (" called by frame at ");
1542 fputs_filtered (paddress (gdbarch
, get_frame_base (calling_frame_info
)),
1545 if (get_next_frame (fi
) && calling_frame_info
)
1546 puts_filtered (",");
1548 if (get_next_frame (fi
))
1550 printf_filtered (" caller of frame at ");
1551 fputs_filtered (paddress (gdbarch
, get_frame_base (get_next_frame (fi
))),
1554 if (get_next_frame (fi
) || calling_frame_info
)
1555 puts_filtered ("\n");
1558 printf_filtered (" source language %s.\n",
1559 language_str (s
->language
));
1562 /* Address of the argument list for this frame, or 0. */
1563 CORE_ADDR arg_list
= get_frame_args_address (fi
);
1564 /* Number of args for this frame, or -1 if unknown. */
1568 printf_filtered (" Arglist at unknown address.\n");
1571 printf_filtered (" Arglist at ");
1572 fputs_filtered (paddress (gdbarch
, arg_list
), gdb_stdout
);
1573 printf_filtered (",");
1575 if (!gdbarch_frame_num_args_p (gdbarch
))
1578 puts_filtered (" args: ");
1582 numargs
= gdbarch_frame_num_args (gdbarch
, fi
);
1583 gdb_assert (numargs
>= 0);
1585 puts_filtered (" no args.");
1586 else if (numargs
== 1)
1587 puts_filtered (" 1 arg: ");
1589 printf_filtered (" %d args: ", numargs
);
1591 print_frame_args (func
, fi
, numargs
, gdb_stdout
);
1592 puts_filtered ("\n");
1596 /* Address of the local variables for this frame, or 0. */
1597 CORE_ADDR arg_list
= get_frame_locals_address (fi
);
1600 printf_filtered (" Locals at unknown address,");
1603 printf_filtered (" Locals at ");
1604 fputs_filtered (paddress (gdbarch
, arg_list
), gdb_stdout
);
1605 printf_filtered (",");
1609 /* Print as much information as possible on the location of all the
1612 enum lval_type lval
;
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
1626 if (gdbarch_sp_regnum (gdbarch
) >= 0)
1628 /* Find out the location of the saved stack pointer with out
1629 actually evaluating it. */
1630 frame_register_unwind (fi
, gdbarch_sp_regnum (gdbarch
),
1631 &optimized
, &unavailable
, &lval
, &addr
,
1633 if (!optimized
&& !unavailable
&& lval
== not_lval
)
1635 enum bfd_endian byte_order
= gdbarch_byte_order (gdbarch
);
1636 int sp_size
= register_size (gdbarch
, gdbarch_sp_regnum (gdbarch
));
1637 gdb_byte value
[MAX_REGISTER_SIZE
];
1640 frame_register_unwind (fi
, gdbarch_sp_regnum (gdbarch
),
1641 &optimized
, &unavailable
, &lval
, &addr
,
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. */
1646 sp
= extract_unsigned_integer (value
, sp_size
, byte_order
);
1647 printf_filtered (" Previous frame's sp is ");
1648 fputs_filtered (paddress (gdbarch
, sp
), gdb_stdout
);
1649 printf_filtered ("\n");
1652 else if (!optimized
&& !unavailable
&& lval
== lval_memory
)
1654 printf_filtered (" Previous frame's sp at ");
1655 fputs_filtered (paddress (gdbarch
, addr
), gdb_stdout
);
1656 printf_filtered ("\n");
1659 else if (!optimized
&& !unavailable
&& lval
== lval_register
)
1661 printf_filtered (" Previous frame's sp in %s\n",
1662 gdbarch_register_name (gdbarch
, realnum
));
1665 /* else keep quiet. */
1669 numregs
= gdbarch_num_regs (gdbarch
)
1670 + gdbarch_num_pseudo_regs (gdbarch
);
1671 for (i
= 0; i
< numregs
; i
++)
1672 if (i
!= gdbarch_sp_regnum (gdbarch
)
1673 && gdbarch_register_reggroup_p (gdbarch
, i
, all_reggroup
))
1675 /* Find out the location of the saved register without
1676 fetching the corresponding value. */
1677 frame_register_unwind (fi
, i
, &optimized
, &unavailable
,
1678 &lval
, &addr
, &realnum
, NULL
);
1679 /* For moment, only display registers that were saved on the
1681 if (!optimized
&& !unavailable
&& lval
== lval_memory
)
1684 puts_filtered (" Saved registers:\n ");
1686 puts_filtered (",");
1688 printf_filtered (" %s at ",
1689 gdbarch_register_name (gdbarch
, i
));
1690 fputs_filtered (paddress (gdbarch
, addr
), gdb_stdout
);
1694 if (count
|| need_nl
)
1695 puts_filtered ("\n");
1698 do_cleanups (back_to
);
1701 /* Print briefly all stack frames or just the innermost COUNT_EXP
1705 backtrace_command_1 (char *count_exp
, int show_locals
, int no_filters
,
1708 struct frame_info
*fi
;
1711 struct frame_info
*trailing
;
1712 int trailing_level
, py_start
= 0, py_end
= 0;
1713 enum ext_lang_bt_status result
= EXT_LANG_BT_ERROR
;
1715 if (!target_has_stack
)
1716 error (_("No stack."));
1718 /* The following code must do two things. First, it must set the
1719 variable TRAILING to the frame from which we should start
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 ();
1727 count
= parse_and_eval_long (count_exp
);
1730 struct frame_info
*current
;
1736 while (current
&& count
--)
1739 current
= get_prev_frame (current
);
1742 /* Will stop when CURRENT reaches the top of the stack.
1743 TRAILING will be COUNT below it. */
1747 trailing
= get_prev_frame (trailing
);
1748 current
= get_prev_frame (current
);
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
1772 backtrace this may have to be an option. */
1774 for (fi
= trailing
; fi
!= NULL
&& i
--; fi
= get_prev_frame (fi
))
1779 pc
= get_frame_address_in_block (fi
);
1780 find_pc_sect_symtab_via_partial (pc
, find_pc_mapped_section (pc
));
1786 int flags
= PRINT_LEVEL
| PRINT_FRAME_INFO
| PRINT_ARGS
;
1787 enum ext_lang_frame_args arg_type
;
1790 flags
|= PRINT_LOCALS
;
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
;
1797 arg_type
= NO_VALUES
;
1799 result
= apply_ext_lang_frame_filter (get_current_frame (), flags
,
1800 arg_type
, current_uiout
,
1804 /* Run the inbuilt backtrace if there are no filters registered, or
1805 "no-filters" has been specified from the command. */
1806 if (no_filters
|| result
== EXT_LANG_BT_NO_FILTERS
)
1808 for (i
= 0, fi
= trailing
; fi
&& count
--; i
++, fi
= get_prev_frame (fi
))
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). */
1817 print_frame_info (fi
, 1, LOCATION
, 1, 0);
1820 struct frame_id frame_id
= get_frame_id (fi
);
1822 print_frame_local_vars (fi
, 1, gdb_stdout
);
1824 /* print_frame_local_vars invalidates FI. */
1825 fi
= frame_find_by_id (frame_id
);
1829 warning (_("Unable to restore previously selected frame."));
1834 /* Save the last frame to check for error conditions. */
1838 /* If we've stopped before the end, mention that. */
1840 printf_filtered (_("(More stack frames follow...)\n"));
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
)
1846 enum unwind_stop_reason reason
;
1848 reason
= get_frame_unwind_stop_reason (trailing
);
1849 if (reason
>= UNWIND_FIRST_ERROR
)
1850 printf_filtered (_("Backtrace stopped: %s\n"),
1851 frame_stop_reason_string (trailing
));
1857 backtrace_command (char *arg
, int from_tty
)
1859 struct cleanup
*old_chain
= make_cleanup (null_cleanup
, NULL
);
1860 int fulltrace_arg
= -1, arglen
= 0, argc
= 0, no_filters
= -1;
1868 argv
= gdb_buildargv (arg
);
1869 make_cleanup_freeargv (argv
);
1871 for (i
= 0; argv
[i
]; i
++)
1875 for (j
= 0; j
< strlen (argv
[i
]); j
++)
1876 argv
[i
][j
] = tolower (argv
[i
][j
]);
1878 if (no_filters
< 0 && subset_compare (argv
[i
], "no-filters"))
1882 if (fulltrace_arg
< 0 && subset_compare (argv
[i
], "full"))
1883 fulltrace_arg
= argc
;
1887 arglen
+= strlen (argv
[i
]);
1893 if (fulltrace_arg
>= 0 || no_filters
>= 0)
1897 arg
= xmalloc (arglen
+ 1);
1898 make_cleanup (xfree
, arg
);
1900 for (i
= 0; i
< argc
; i
++)
1902 if (i
!= fulltrace_arg
&& i
!= no_filters
)
1904 strcat (arg
, argv
[i
]);
1914 backtrace_command_1 (arg
, fulltrace_arg
>= 0 /* show_locals */,
1915 no_filters
>= 0 /* no frame-filters */, from_tty
);
1917 do_cleanups (old_chain
);
1921 backtrace_full_command (char *arg
, int from_tty
)
1923 backtrace_command_1 (arg
, 1 /* show_locals */, 0, from_tty
);
1927 /* Iterate over the local variables of a block B, calling CB with
1931 iterate_over_block_locals (const struct block
*b
,
1932 iterate_over_block_arg_local_vars_cb cb
,
1935 struct block_iterator iter
;
1938 ALL_BLOCK_SYMBOLS (b
, iter
, sym
)
1940 switch (SYMBOL_CLASS (sym
))
1946 if (SYMBOL_IS_ARGUMENT (sym
))
1948 if (SYMBOL_DOMAIN (sym
) == COMMON_BLOCK_DOMAIN
)
1950 (*cb
) (SYMBOL_PRINT_NAME (sym
), sym
, cb_data
);
1954 /* Ignore symbols which are not locals. */
1961 /* Same, but print labels. */
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. */
1971 print_block_frame_labels (struct gdbarch
*gdbarch
, struct block
*b
,
1972 int *have_default
, struct ui_file
*stream
)
1974 struct block_iterator iter
;
1976 int values_printed
= 0;
1978 ALL_BLOCK_SYMBOLS (b
, iter
, sym
)
1980 if (strcmp (SYMBOL_LINKAGE_NAME (sym
), "default") == 0)
1986 if (SYMBOL_CLASS (sym
) == LOC_LABEL
)
1988 struct symtab_and_line sal
;
1989 struct value_print_options opts
;
1991 sal
= find_pc_line (SYMBOL_VALUE_ADDRESS (sym
), 0);
1993 fputs_filtered (SYMBOL_PRINT_NAME (sym
), stream
);
1994 get_user_print_options (&opts
);
1995 if (opts
.addressprint
)
1997 fprintf_filtered (stream
, " ");
1998 fputs_filtered (paddress (gdbarch
, SYMBOL_VALUE_ADDRESS (sym
)),
2001 fprintf_filtered (stream
, " in file %s, line %d\n",
2002 sal
.symtab
->filename
, sal
.line
);
2006 return values_printed
;
2010 /* Iterate over all the local variables in block B, including all its
2011 superblocks, stopping when the top-level block is reached. */
2014 iterate_over_block_local_vars (const struct block
*block
,
2015 iterate_over_block_arg_local_vars_cb cb
,
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
2024 if (BLOCK_FUNCTION (block
))
2026 block
= BLOCK_SUPERBLOCK (block
);
2030 /* Data to be passed around in the calls to the locals and args
2033 struct print_variable_and_value_data
2035 struct frame_id frame_id
;
2037 struct ui_file
*stream
;
2041 /* The callback for the locals and args iterators. */
2044 do_print_variable_and_value (const char *print_name
,
2048 struct print_variable_and_value_data
*p
= cb_data
;
2049 struct frame_info
*frame
;
2051 frame
= frame_find_by_id (p
->frame_id
);
2054 warning (_("Unable to restore previously selected frame."));
2058 print_variable_and_value (print_name
, sym
, frame
, p
->stream
, p
->num_tabs
);
2060 /* print_variable_and_value invalidates FRAME. */
2063 p
->values_printed
= 1;
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.
2069 This function will invalidate FRAME. */
2072 print_frame_local_vars (struct frame_info
*frame
, int num_tabs
,
2073 struct ui_file
*stream
)
2075 struct print_variable_and_value_data cb_data
;
2076 const struct block
*block
;
2079 if (!get_frame_pc_if_available (frame
, &pc
))
2081 fprintf_filtered (stream
,
2082 _("PC unavailable, cannot determine locals.\n"));
2086 block
= get_frame_block (frame
, 0);
2089 fprintf_filtered (stream
, "No symbol table info available.\n");
2093 cb_data
.frame_id
= get_frame_id (frame
);
2094 cb_data
.num_tabs
= 4 * num_tabs
;
2095 cb_data
.stream
= stream
;
2096 cb_data
.values_printed
= 0;
2098 iterate_over_block_local_vars (block
,
2099 do_print_variable_and_value
,
2102 /* do_print_variable_and_value invalidates FRAME. */
2105 if (!cb_data
.values_printed
)
2106 fprintf_filtered (stream
, _("No locals.\n"));
2110 locals_info (char *args
, int from_tty
)
2112 print_frame_local_vars (get_selected_frame (_("No frame selected.")),
2116 /* Iterate over all the argument variables in block B.
2118 Returns 1 if any argument was walked; 0 otherwise. */
2121 iterate_over_block_arg_vars (const struct block
*b
,
2122 iterate_over_block_arg_local_vars_cb cb
,
2125 struct block_iterator iter
;
2126 struct symbol
*sym
, *sym2
;
2128 ALL_BLOCK_SYMBOLS (b
, iter
, sym
)
2130 /* Don't worry about things which aren't arguments. */
2131 if (SYMBOL_IS_ARGUMENT (sym
))
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. */
2144 sym2
= lookup_symbol (SYMBOL_LINKAGE_NAME (sym
),
2145 b
, VAR_DOMAIN
, NULL
);
2146 (*cb
) (SYMBOL_PRINT_NAME (sym
), sym2
, cb_data
);
2151 /* Print all argument variables of the function of FRAME.
2152 Print them with values to STREAM.
2154 This function will invalidate FRAME. */
2157 print_frame_arg_vars (struct frame_info
*frame
, struct ui_file
*stream
)
2159 struct print_variable_and_value_data cb_data
;
2160 struct symbol
*func
;
2163 if (!get_frame_pc_if_available (frame
, &pc
))
2165 fprintf_filtered (stream
, _("PC unavailable, cannot determine args.\n"));
2169 func
= get_frame_function (frame
);
2172 fprintf_filtered (stream
, _("No symbol table info available.\n"));
2176 cb_data
.frame_id
= get_frame_id (frame
);
2177 cb_data
.num_tabs
= 0;
2178 cb_data
.stream
= gdb_stdout
;
2179 cb_data
.values_printed
= 0;
2181 iterate_over_block_arg_vars (SYMBOL_BLOCK_VALUE (func
),
2182 do_print_variable_and_value
, &cb_data
);
2184 /* do_print_variable_and_value invalidates FRAME. */
2187 if (!cb_data
.values_printed
)
2188 fprintf_filtered (stream
, _("No arguments.\n"));
2192 args_info (char *ignore
, int from_tty
)
2194 print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
2200 args_plus_locals_info (char *ignore
, int from_tty
)
2202 args_info (ignore
, from_tty
);
2203 locals_info (ignore
, from_tty
);
2207 /* Select frame FRAME. Also print the stack frame and show the source
2208 if this is the tui version. */
2210 select_and_print_frame (struct frame_info
*frame
)
2212 select_frame (frame
);
2214 print_stack_frame (frame
, 1, SRC_AND_LOC
, 1);
2217 /* Return the symbol-block in which the selected frame is executing.
2218 Can return zero under various legitimate circumstances.
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. */
2224 const struct block
*
2225 get_selected_block (CORE_ADDR
*addr_in_block
)
2227 if (!has_stack_frames ())
2230 return get_frame_block (get_selected_frame (NULL
), addr_in_block
);
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. */
2243 find_relative_frame (struct frame_info
*frame
, int *level_offset_ptr
)
2245 /* Going up is simple: just call get_prev_frame enough times or
2246 until the initial frame is reached. */
2247 while (*level_offset_ptr
> 0)
2249 struct frame_info
*prev
= get_prev_frame (frame
);
2253 (*level_offset_ptr
)--;
2257 /* Going down is just as simple. */
2258 while (*level_offset_ptr
< 0)
2260 struct frame_info
*next
= get_next_frame (frame
);
2264 (*level_offset_ptr
)++;
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.
2275 See parse_frame_specification for more info on proper frame
2279 select_frame_command (char *level_exp
, int from_tty
)
2281 select_frame (parse_frame_specification_1 (level_exp
, "No stack.", NULL
));
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. */
2289 frame_command (char *level_exp
, int from_tty
)
2291 select_frame_command (level_exp
, from_tty
);
2292 print_stack_frame (get_selected_frame (NULL
), 1, SRC_AND_LOC
, 1);
2295 /* The XDB Compatibility command to print the current frame. */
2298 current_frame_command (char *level_exp
, int from_tty
)
2300 print_stack_frame (get_selected_frame (_("No stack.")), 1, SRC_AND_LOC
, 1);
2303 /* Select the frame up one or COUNT_EXP stack levels from the
2304 previously selected frame, and print it briefly. */
2307 up_silently_base (char *count_exp
)
2309 struct frame_info
*frame
;
2313 count
= parse_and_eval_long (count_exp
);
2315 frame
= find_relative_frame (get_selected_frame ("No stack."), &count
);
2316 if (count
!= 0 && count_exp
== NULL
)
2317 error (_("Initial frame selected; you cannot go up."));
2318 select_frame (frame
);
2322 up_silently_command (char *count_exp
, int from_tty
)
2324 up_silently_base (count_exp
);
2328 up_command (char *count_exp
, int from_tty
)
2330 up_silently_base (count_exp
);
2331 print_stack_frame (get_selected_frame (NULL
), 1, SRC_AND_LOC
, 1);
2334 /* Select the frame down one or COUNT_EXP stack levels from the previously
2335 selected frame, and print it briefly. */
2338 down_silently_base (char *count_exp
)
2340 struct frame_info
*frame
;
2344 count
= -parse_and_eval_long (count_exp
);
2346 frame
= find_relative_frame (get_selected_frame ("No stack."), &count
);
2347 if (count
!= 0 && count_exp
== NULL
)
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. */
2354 error (_("Bottom (innermost) frame selected; you cannot go down."));
2357 select_frame (frame
);
2361 down_silently_command (char *count_exp
, int from_tty
)
2363 down_silently_base (count_exp
);
2367 down_command (char *count_exp
, int from_tty
)
2369 down_silently_base (count_exp
);
2370 print_stack_frame (get_selected_frame (NULL
), 1, SRC_AND_LOC
, 1);
2375 return_command (char *retval_exp
, int from_tty
)
2377 /* Initialize it just to avoid a GCC false warning. */
2378 enum return_value_convention rv_conv
= RETURN_VALUE_STRUCT_CONVENTION
;
2379 struct frame_info
*thisframe
;
2380 struct gdbarch
*gdbarch
;
2381 struct symbol
*thisfun
;
2382 struct value
*return_value
= NULL
;
2383 struct value
*function
= NULL
;
2384 const char *query_prefix
= "";
2386 thisframe
= get_selected_frame ("No selected frame.");
2387 thisfun
= get_frame_function (thisframe
);
2388 gdbarch
= get_frame_arch (thisframe
);
2390 if (get_frame_type (get_current_frame ()) == INLINE_FRAME
)
2391 error (_("Can not force return from an inlined function."));
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
2399 struct expression
*retval_expr
= parse_expression (retval_exp
);
2400 struct cleanup
*old_chain
= make_cleanup (xfree
, retval_expr
);
2401 struct type
*return_type
= NULL
;
2403 /* Compute the return value. Should the computation fail, this
2404 call throws an error. */
2405 return_value
= evaluate_expression (retval_expr
);
2407 /* Cast return value to the return type of the function. Should
2408 the cast fail, this call throws an error. */
2409 if (thisfun
!= NULL
)
2410 return_type
= TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun
));
2411 if (return_type
== NULL
)
2413 if (retval_expr
->elts
[0].opcode
!= UNOP_CAST
2414 && retval_expr
->elts
[0].opcode
!= UNOP_CAST_TYPE
)
2415 error (_("Return value type not available for selected "
2417 "Please use an explicit cast of the value to return."));
2418 return_type
= value_type (return_value
);
2420 do_cleanups (old_chain
);
2421 CHECK_TYPEDEF (return_type
);
2422 return_value
= value_cast (return_type
, return_value
);
2424 /* Make sure the value is fully evaluated. It may live in the
2425 stack frame we're about to pop. */
2426 if (value_lazy (return_value
))
2427 value_fetch_lazy (return_value
);
2429 if (thisfun
!= NULL
)
2430 function
= read_var_value (thisfun
, thisframe
);
2432 rv_conv
= RETURN_VALUE_REGISTER_CONVENTION
;
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
2439 return_value
= NULL
;
2440 else if (thisfun
!= NULL
)
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
)
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
;
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. */
2462 if (thisfun
== NULL
)
2463 confirmed
= query (_("%sMake selected stack frame return now? "),
2466 confirmed
= query (_("%sMake %s return now? "), query_prefix
,
2467 SYMBOL_PRINT_NAME (thisfun
));
2469 error (_("Not confirmed"));
2472 /* Discard the selected frame and all frames inner-to it. */
2473 frame_pop (get_selected_frame (NULL
));
2475 /* Store RETURN_VALUE in the just-returned register set. */
2476 if (return_value
!= NULL
)
2478 struct type
*return_type
= value_type (return_value
);
2479 struct gdbarch
*gdbarch
= get_regcache_arch (get_current_regcache ());
2481 gdb_assert (rv_conv
!= RETURN_VALUE_STRUCT_CONVENTION
2482 && rv_conv
!= RETURN_VALUE_ABI_RETURNS_ADDRESS
);
2483 gdbarch_return_value (gdbarch
, function
, return_type
,
2484 get_current_regcache (), NULL
/*read*/,
2485 value_contents (return_value
) /*write*/);
2488 /* If we are at the end of a call dummy now, pop the dummy frame
2490 if (get_frame_type (get_current_frame ()) == DUMMY_FRAME
)
2491 frame_pop (get_current_frame ());
2493 /* If interactive, print the frame that is now current. */
2495 frame_command ("0", 1);
2497 select_frame_command ("0", 0);
2500 /* Sets the scope to input function name, provided that the function
2501 is within the current stack frame. */
2503 struct function_bounds
2505 CORE_ADDR low
, high
;
2509 func_command (char *arg
, int from_tty
)
2511 struct frame_info
*frame
;
2513 struct symtabs_and_lines sals
;
2516 struct function_bounds
*func_bounds
= NULL
;
2517 struct cleanup
*cleanups
;
2522 frame
= parse_frame_specification ("0");
2523 sals
= decode_line_with_current_source (arg
, DECODE_LINE_FUNFIRSTLINE
);
2524 cleanups
= make_cleanup (xfree
, sals
.sals
);
2525 func_bounds
= (struct function_bounds
*) xmalloc (
2526 sizeof (struct function_bounds
) * sals
.nelts
);
2527 make_cleanup (xfree
, func_bounds
);
2528 for (i
= 0; (i
< sals
.nelts
&& !found
); i
++)
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)
2537 func_bounds
[i
].low
= func_bounds
[i
].high
= 0;
2543 for (i
= 0; (i
< sals
.nelts
&& !found
); i
++)
2544 found
= (get_frame_pc (frame
) >= func_bounds
[i
].low
2545 && get_frame_pc (frame
) < func_bounds
[i
].high
);
2549 frame
= find_relative_frame (frame
, &level
);
2552 while (!found
&& level
== 0);
2554 do_cleanups (cleanups
);
2557 printf_filtered (_("'%s' not within current stack frame.\n"), arg
);
2558 else if (frame
!= get_selected_frame (NULL
))
2559 select_and_print_frame (frame
);
2562 /* Gets the language of the current frame. */
2565 get_frame_language (void)
2567 struct frame_info
*frame
= deprecated_safe_get_selected_frame ();
2571 volatile struct gdb_exception ex
;
2575 /* We determine the current frame language by looking up its
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
2584 TRY_CATCH (ex
, RETURN_MASK_ERROR
)
2586 pc
= get_frame_address_in_block (frame
);
2590 if (ex
.error
!= NOT_AVAILABLE_ERROR
)
2591 throw_exception (ex
);
2595 s
= find_pc_symtab (pc
);
2601 return language_unknown
;
2605 /* Provide a prototype to silence -Wmissing-prototypes. */
2606 void _initialize_stack (void);
2609 _initialize_stack (void)
2611 add_com ("return", class_stack
, return_command
, _("\
2612 Make selected stack frame return to its caller.\n\
2613 Control remains in the debugger, but when you continue\n\
2614 execution will resume in the frame above the one now selected.\n\
2615 If an argument is given, it is an expression for the value to return."));
2617 add_com ("up", class_stack
, up_command
, _("\
2618 Select and print stack frame that called this one.\n\
2619 An argument says how many frames up to go."));
2620 add_com ("up-silently", class_support
, up_silently_command
, _("\
2621 Same as the `up' command, but does not print anything.\n\
2622 This is useful in command scripts."));
2624 add_com ("down", class_stack
, down_command
, _("\
2625 Select and print stack frame called by this one.\n\
2626 An argument says how many frames down to go."));
2627 add_com_alias ("do", "down", class_stack
, 1);
2628 add_com_alias ("dow", "down", class_stack
, 1);
2629 add_com ("down-silently", class_support
, down_silently_command
, _("\
2630 Same as the `down' command, but does not print anything.\n\
2631 This is useful in command scripts."));
2633 add_com ("frame", class_stack
, frame_command
, _("\
2634 Select and print a stack frame.\nWith no argument, \
2635 print the selected stack frame. (See also \"info frame\").\n\
2636 An argument specifies the frame to select.\n\
2637 It can be a stack frame number or the address of the frame.\n\
2638 With argument, nothing is printed if input is coming from\n\
2639 a command file or a user-defined command."));
2641 add_com_alias ("f", "frame", class_stack
, 1);
2645 add_com ("L", class_stack
, current_frame_command
,
2646 _("Print the current stack frame.\n"));
2647 add_com_alias ("V", "frame", class_stack
, 1);
2649 add_com ("select-frame", class_stack
, select_frame_command
, _("\
2650 Select a stack frame without printing anything.\n\
2651 An argument specifies the frame to select.\n\
2652 It can be a stack frame number or the address of the frame.\n"));
2654 add_com ("backtrace", class_stack
, backtrace_command
, _("\
2655 Print backtrace of all stack frames, or innermost COUNT frames.\n\
2656 With a negative argument, print outermost -COUNT frames.\nUse of the \
2657 'full' qualifier also prints the values of the local variables.\n\
2658 Use of the 'no-filters' qualifier prohibits frame filters from executing\n\
2659 on this backtrace.\n"));
2660 add_com_alias ("bt", "backtrace", class_stack
, 0);
2663 add_com_alias ("t", "backtrace", class_stack
, 0);
2664 add_com ("T", class_stack
, backtrace_full_command
, _("\
2665 Print backtrace of all stack frames, or innermost COUNT frames\n\
2666 and the values of the local variables.\n\
2667 With a negative argument, print outermost -COUNT frames.\n\
2668 Usage: T <count>\n"));
2671 add_com_alias ("where", "backtrace", class_alias
, 0);
2672 add_info ("stack", backtrace_command
,
2673 _("Backtrace of the stack, or innermost COUNT frames."));
2674 add_info_alias ("s", "stack", 1);
2675 add_info ("frame", frame_info
,
2676 _("All about selected stack frame, or frame at ADDR."));
2677 add_info_alias ("f", "frame", 1);
2678 add_info ("locals", locals_info
,
2679 _("Local variables of current stack frame."));
2680 add_info ("args", args_info
,
2681 _("Argument variables of current stack frame."));
2683 add_com ("l", class_info
, args_plus_locals_info
,
2684 _("Argument and local variables of current stack frame."));
2687 add_com ("func", class_stack
, func_command
, _("\
2688 Select the stack frame that contains <func>.\n\
2689 Usage: func <name>\n"));
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
);
2697 add_setshow_boolean_cmd ("frame-arguments", no_class
,
2698 &print_raw_frame_arguments
, _("\
2699 Set whether to print frame arguments in raw form."), _("\
2700 Show whether to print frame arguments in raw form."), _("\
2701 If set, frame arguments are printed in raw form, bypassing any\n\
2702 pretty-printers for that value."),
2704 &setprintrawlist
, &showprintrawlist
);
2706 add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack
,
2707 &disassemble_next_line
, _("\
2708 Set whether to disassemble next source line or insn when execution stops."),
2710 Show whether to disassemble next source line or insn when execution stops."),
2712 If ON, GDB will display disassembly of the next source line, in addition\n\
2713 to displaying the source line itself. If the next source line cannot\n\
2714 be displayed (e.g., source is unavailable or there's no line info), GDB\n\
2715 will display disassembly of next instruction instead of showing the\n\
2717 If AUTO, display disassembly of next instruction only if the source line\n\
2718 cannot be displayed.\n\
2719 If OFF (which is the default), never display the disassembly of the next\n\
2722 show_disassemble_next_line
,
2723 &setlist
, &showlist
);
2724 disassemble_next_line
= AUTO_BOOLEAN_FALSE
;
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 "
2730 _("Show printing of function arguments at function "
2733 GDB can sometimes determine the values of function arguments at entry,\n\
2734 in addition to their current values. This option tells GDB whether\n\
2735 to print the current value, the value at entry (marked as val@entry),\n\
2736 or both. Note that one or both of these values may be <optimized out>."),
2737 NULL
, NULL
, &setprintlist
, &showprintlist
);