Alexandre Julliard : ntdll: Set the initial process context on i386.
Alexandre Julliard
julliard at winehq.org
Tue Sep 19 15:47:04 CDT 2017
Module: wine
Branch: master
Commit: 8b929bd759334611c0c957482060168fe441cd5f
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8b929bd759334611c0c957482060168fe441cd5f
Author: Alexandre Julliard <julliard at winehq.org>
Date: Tue Sep 19 12:13:54 2017 +0200
ntdll: Set the initial process context on i386.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ntdll/signal_i386.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
index a373e3d..4038436 100644
--- a/dlls/ntdll/signal_i386.c
+++ b/dlls/ntdll/signal_i386.c
@@ -2600,7 +2600,20 @@ void signal_init_process( CONTEXT *context, LPTHREAD_START_ROUTINE entry )
wine_ldt_init_locking( ldt_lock, ldt_unlock );
- /* FIXME: set the initial context */
+ /* build the initial context */
+ context->ContextFlags = CONTEXT_FULL;
+ context->SegCs = wine_get_cs();
+ context->SegDs = wine_get_ds();
+ context->SegEs = wine_get_es();
+ context->SegFs = wine_get_fs();
+ context->SegGs = wine_get_gs();
+ context->SegSs = wine_get_ss();
+ context->Eax = (DWORD)entry;
+ context->Ebx = (DWORD)NtCurrentTeb()->Peb;
+ context->Esp = (DWORD)NtCurrentTeb()->Tib.StackBase - 16;
+ context->Eip = (DWORD)call_thread_entry_point;
+ ((void **)context->Esp)[1] = kernel32_start_process;
+ ((void **)context->Esp)[2] = entry;
return;
error:
More information about the wine-cvs
mailing list