error. But that's a project for another day. */
UNWIND_NULL_ID,
+ /* This frame is the outermost. */
+ UNWIND_OUTERMOST,
+
/* All the conditions after this point are considered errors;
abnormal stack termination. If a backtrace stops for one
of these reasons, we'll let the user know. This marker
is not a valid stop reason. */
UNWIND_FIRST_ERROR,
+ /* Can't unwind further, because that would require knowing the
+ values of registers or memory that haven't been collected. */
+ UNWIND_UNAVAILABLE,
+
/* This frame ID looks like it ought to belong to a NEXT frame,
but we got it for a PREV frame. Normally, this is a sign of
unwinder failure. It could also indicate stack corruption. */
extern CORE_ADDR frame_unwind_caller_pc (struct frame_info *frame);
+/* Same as frame_unwind_caller_pc, but returns a boolean indication of
+ whether the caller PC is determinable (when the PC is unavailable,
+ it will not be), instead of possibly throwing an error trying to
+ read unavailable memory or registers. */
+
+extern int frame_unwind_caller_pc_if_available (struct frame_info *this_frame,
+ CORE_ADDR *pc);
+
/* Discard the specified frame. Restoring the registers to the state
of the caller. */
extern void frame_pop (struct frame_info *frame);