Jinoh Kang (@iamahuman) commented about dlls/ntdll/unix/thread.c:
if (flags & CONTEXT_I386_CONTROL) { to->flags |= SERVER_CTX_CONTROL;
to->ctl.x86_64_regs.rbp = from->Ebp; to->ctl.x86_64_regs.rsp = from->Esp; to->ctl.x86_64_regs.rip = from->Eip; to->ctl.x86_64_regs.cs = from->SegCs; to->ctl.x86_64_regs.ss = from->SegSs; to->ctl.x86_64_regs.flags = from->EFlags;
to->integer.x86_64_regs.rbp = from->Ebp;
If only `SERVER_CTX_CONTROL` is set, the server would ignore this rbp value since `SERVER_CTX_INTEGER` is NOT set. This goes on similarly with other changes.
Perhaps we should move the translation logic to wineserver instead, so it can do the actual mapping itself.