2005-11-16 Daniel Jacobowitz <dan@codesourcery.com>
+ * config/ia64/unwind-ia64.c (uw_advance_context): New. Call
+ uw_update_context.
+ * unwind-dw2.c (uw_advance_context): Likewise.
+ * unwind-sjlj.c (uw_advance_context): Likewise. Also call
+ _Unwind_SjLj_Unregister.
+ * unwind.inc (_Unwind_ForcedUnwind_Phase2): Call uw_advance_context.
+
+2005-11-16 Daniel Jacobowitz <dan@codesourcery.com>
+
* unwind-sjlj.c (_Unwind_GetCFA): Handle the builtin_setjmp case.
2005-11-16 Eric Botcazou <ebotcazou@adacore.com>
}
}
+static void
+uw_advance_context (struct _Unwind_Context *context, _Unwind_FrameState *fs)
+{
+ uw_update_context (context, fs);
+}
+
/* Fill in CONTEXT for top-of-stack. The only valid registers at this
level will be the return address and the CFA. Note that CFA = SP+16. */
context->ra = __builtin_extract_return_addr
(_Unwind_GetPtr (context, fs->retaddr_column));
}
+
+static void
+uw_advance_context (struct _Unwind_Context *context, _Unwind_FrameState *fs)
+{
+ uw_update_context (context, fs);
+}
\f
/* Fill in CONTEXT for top-of-stack. The only valid registers at this
level will be the return address and the CFA. */
context->fc = context->fc->prev;
}
+static void
+uw_advance_context (struct _Unwind_Context *context, _Unwind_FrameState *fs)
+{
+ _Unwind_SjLj_Unregister (context->fc);
+ uw_update_context (context, fs);
+}
+
static inline void
uw_init_context (struct _Unwind_Context *context)
{
return _URC_FATAL_PHASE2_ERROR;
}
- /* Update cur_context to describe the same frame as fs. */
- uw_update_context (context, &fs);
+ /* Update cur_context to describe the same frame as fs, and discard
+ the previous context if necessary. */
+ uw_advance_context (context, &fs);
}
return code;