+ mcontext_t mctx = uctx->uc_mcontext;
+#if CONFORMANCE_SPECIFIC_HACK
+ // There is a conformance test which initialized a ucontext A by memcpy-ing
+ // a ucontext B that was previously initialized with getcontext.
+ // getcontext(B) modified B such that B.uc_mcontext = &B.__mcontext_data;
+ // But by doing the memcpy of B to A, A.uc_mcontext = &B.__mcontext_data
+ // when that's not necessarily what we want. We therefore have to
+ // unfortunately ignore A.uc_mccontext and use &A.__mcontext_data even though we
+ // don't know if A.__mcontext_data was properly initialized. This is really
+ // because the conformance test doesn't initialize properly with multiple
+ // getcontexts and instead copies contexts around.
+ //
+ //
+ // Note that this hack, is causing us to fail when restoring a ucontext from
+ // a signal. See <rdar://problem/63408163> Restoring context from signal
+ // fails on intel and arm64 platforms
+ mctx = (mcontext_t) &uctx->__mcontext_data;
+#endif
+
+#if defined(__x86_64__) || defined(__arm64__)