diff options
Diffstat (limited to 'winsup/cygwin/dcrt0.cc')
-rw-r--r-- | winsup/cygwin/dcrt0.cc | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index 5f7f2708b..971954fb3 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -754,12 +754,6 @@ dll_crt0_0 () user_data->resourcelocks->Init (); user_data->threadinterface->Init (); - if (!in_forkee) - { - pinfo_init (envp, envc); - uinfo_init (); /* initialize user info */ - } - _cygtls::init (); /* Initialize events */ @@ -838,6 +832,7 @@ dll_crt0_1 (char *) fork_init (); } #endif + pinfo_init (envp, envc); /* Can be set only after environment has been initialized. */ if (wincap.has_security ()) @@ -849,6 +844,14 @@ dll_crt0_1 (char *) /* Allocate cygheap->fdtab */ dtable_init (); + uinfo_init (); /* initialize user info */ + + wait_for_sigthread (); + extern DWORD threadfunc_ix; + if (!threadfunc_ix) + system_printf ("internal error: couldn't determine location of thread function on stack. Expect signal problems."); + + /* Connect to tty. */ tty_init (); @@ -960,13 +963,7 @@ initialize_main_tls (char *padding) extern "C" void __stdcall _dll_crt0 () { - extern DWORD threadfunc_ix; - wait_for_sigthread (); - if (!threadfunc_ix) - system_printf ("internal error: couldn't determine location of thread function on stack. Expect signal problems."); - main_environ = user_data->envptr; - update_envptrs (); char padding[CYGTLS_PADSIZE]; |