Alexandre Julliard : ntdll: Create the initial stack on the Unix side.

Alexandre Julliard julliard at winehq.org
Thu Apr 1 16:09:26 CDT 2021


Module: wine
Branch: master
Commit: c00c62bbfdb85eb2e2ecc545b6eee838e5a481f7
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=c00c62bbfdb85eb2e2ecc545b6eee838e5a481f7

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Apr  1 11:25:48 2021 +0200

ntdll: Create the initial stack on the Unix side.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/loader.c      | 6 ------
 dlls/ntdll/unix/loader.c | 5 +++++
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 336b11c6344..e418eef6acb 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -4020,7 +4020,6 @@ static void map_wow64cpu(void)
  */
 static NTSTATUS process_init(void)
 {
-    INITIAL_TEB stack;
     TEB *teb = NtCurrentTeb();
     PEB *peb = teb->Peb;
 
@@ -4069,11 +4068,6 @@ static NTSTATUS process_init(void)
         map_wow64cpu();
     }
 #endif
-
-    RtlCreateUserStack( 0, 0, 0, 0x10000, 0x10000, &stack );
-    teb->Tib.StackBase = stack.StackBase;
-    teb->Tib.StackLimit = stack.StackLimit;
-    teb->DeallocationStack = stack.DeallocationStack;
     return STATUS_SUCCESS;
 }
 
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index 5b0004b6d01..1d3a940aab8 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -1797,6 +1797,7 @@ static struct unix_funcs unix_funcs =
 static void start_main_thread(void)
 {
     NTSTATUS status;
+    INITIAL_TEB stack;
     TEB *teb = virtual_alloc_first_teb();
 
     signal_init_threading();
@@ -1809,6 +1810,10 @@ static void start_main_thread(void)
     syscall_dispatcher = signal_init_syscalls();
     init_files();
     init_startup_info();
+    virtual_alloc_thread_stack( &stack, 0, 0, NULL );
+    teb->Tib.StackBase = stack.StackBase;
+    teb->Tib.StackLimit = stack.StackLimit;
+    teb->DeallocationStack = stack.DeallocationStack;
     NtCreateKeyedEvent( &keyed_event, GENERIC_READ | GENERIC_WRITE, NULL, 0 );
     load_ntdll();
     load_libwine();




More information about the wine-cvs mailing list