mirror of
https://gcc.gnu.org/git/gcc.git
synced 2025-01-12 14:04:22 +08:00
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:
parent
0e32bbcc67
commit
60aef23e38
@ -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.
|
||||
|
@ -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. */
|
||||
|
||||
|
@ -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. */
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user