blob: 7b2b5b44e3017072da765102f21da4e19c8faa79 [file] [log] [blame]
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;