summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/dcrt0.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/dcrt0.cc')
-rw-r--r--winsup/cygwin/dcrt0.cc21
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];