unwind-ia64.c (uw_advance_context): New.

* 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.

From-SVN: r107103
This commit is contained in:
Daniel Jacobowitz 2005-11-16 22:10:39 +00:00 committed by Daniel Jacobowitz
parent 0e32bbcc67
commit 60aef23e38
5 changed files with 31 additions and 2 deletions

View File

@ -1,3 +1,12 @@
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.

View File

@ -2060,6 +2060,12 @@ uw_update_context (struct _Unwind_Context *context, _Unwind_FrameState *fs)
}
}
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. */

View File

@ -1210,6 +1210,12 @@ uw_update_context (struct _Unwind_Context *context, _Unwind_FrameState *fs)
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);
}
/* Fill in CONTEXT for top-of-stack. The only valid registers at this
level will be the return address and the CFA. */

View File

@ -276,6 +276,13 @@ uw_update_context (struct _Unwind_Context *context,
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)
{

View File

@ -184,8 +184,9 @@ _Unwind_ForcedUnwind_Phase2 (struct _Unwind_Exception *exc,
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;