| libgcc/Changelog: |
| * unwind-seh.c (_Unwind_Backtrace): Set the ra and cfa pointers |
| before calling the callback. |
| --- |
| libgcc/unwind-seh.c | 5 +++++ |
| 1 file changed, 5 insertions(+) |
| |
| diff --git a/libgcc/unwind-seh.c b/libgcc/unwind-seh.c |
| index 1a70180cfaa..275d782903a 100644 |
| --- a/libgcc/unwind-seh.c |
| +++ b/libgcc/unwind-seh.c |
| @@ -466,6 +466,11 @@ _Unwind_Backtrace(_Unwind_Trace_Fn trace, |
| &gcc_context.disp->HandlerData, |
| &gcc_context.disp->EstablisherFrame, NULL); |
| |
| + /* Set values that the callback can inspect via _Unwind_GetIP |
| + * and _Unwind_GetCFA. */ |
| + gcc_context.ra = ms_context.Rip; |
| + gcc_context.cfa = ms_context.Rsp; |
| + |
| /* Call trace function. */ |
| if (trace (&gcc_context, trace_argument) != _URC_NO_REASON) |
| return _URC_FATAL_PHASE1_ERROR; |