/* Definitions for dealing with stack frames, for GDB, the GNU debugger.
- Copyright (C) 1986-2013 Free Software Foundation, Inc.
+ Copyright (C) 1986-2014 Free Software Foundation, Inc.
This file is part of GDB.
address is set to indicate a wild card. */
extern struct frame_id frame_id_build_unavailable_stack (CORE_ADDR code_addr);
+/* Construct a frame ID representing a frame where the stack address
+ exists, but is unavailable. CODE_ADDR is the frame's constant code
+ address (typically the entry point). SPECIAL_ADDR is the special
+ identifier address. */
+extern struct frame_id
+ frame_id_build_unavailable_stack_special (CORE_ADDR code_addr,
+ CORE_ADDR special_addr);
+
/* Construct a wild card frame ID. The parameter is the frame's constant
stack address (typically the outer-bound). The code address as well
as the special identifier address are set to indicate wild cards. */
extern struct frame_info *get_prev_frame (struct frame_info *);
extern struct frame_info *get_next_frame (struct frame_info *);
+/* Return a "struct frame_info" corresponding to the frame that called
+ THIS_FRAME. Returns NULL if there is no such frame.
+
+ Unlike get_prev_frame, this function always tries to unwind the
+ frame. */
+extern struct frame_info *get_prev_frame_always (struct frame_info *);
+
/* Given a frame's ID, relocate the frame. Returns NULL if the frame
is not found. */
extern struct frame_info *frame_find_by_id (struct frame_id id);
struct symtab_and_line *sal);
/* Set the current source and line to the location given by frame
- FRAME, if possible. When CENTER is true, adjust so the relevant
- line is in the center of the next 'list'. */
+ FRAME, if possible. */
-void set_current_sal_from_frame (struct frame_info *, int);
+void set_current_sal_from_frame (struct frame_info *);
/* Return the frame base (what ever that is) (DEPRECATED).
enum unwind_stop_reason get_frame_unwind_stop_reason (struct frame_info *);
-/* Translate a reason code to an informative string. */
+/* Translate a reason code to an informative string. This converts the
+ generic stop reason codes into a generic string describing the code.
+ For a possibly frame specific string explaining the stop reason, use
+ FRAME_STOP_REASON_STRING instead. */
+
+const char *unwind_stop_reason_to_string (enum unwind_stop_reason);
+
+/* Return a possibly frame specific string explaining why the unwind
+ stopped here. E.g., if unwinding tripped on a memory error, this
+ will return the error description string, which includes the address
+ that we failed to access. If there's no specific reason stored for
+ a frame then a generic reason string will be returned.
+
+ Should only be called for frames that don't have a previous frame. */
-const char *frame_stop_reason_string (enum unwind_stop_reason);
+const char *frame_stop_reason_string (struct frame_info *);
/* Unwind the stack frame so that the value of REGNUM, in the previous
(up, older) frame is returned. If VALUEP is NULL, don't