+
+ // Take a copy of the context for our own purpose:
+ st->context = *(unw_context_t*)current_stack->context;
+#if defined(PROCESSOR_x86_64) || defined(PROCESSOR_i686)
+ // On x86_64, ucontext_t contains a pointer to itself for FP registers.
+ // We don't really need support for FR registers as they are caller saved
+ // and probably never use those fields as libunwind-x86_64 does not read
+ // FP registers from the unw_context_t
+ // but we fix the pointer in order to avoid dangling pointers:
+ st->context.uc_mcontext.fpregs = &st->context.__fpregs_mem;
+#else
+ // Do we need to do any fixup like this?
+ #error Target CPU type is not handled.
+#endif
+
+ st->stack_frames = MC_unwind_stack_frames(&st->context);