Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2003-12-12 08:04:47 +0300
committerChristopher Faylor <me@cgf.cx>2003-12-12 08:04:47 +0300
commitfac0681d6cd0dea950ccf1ea79c0879fdf4321b4 (patch)
tree9464de11b461b0121a7403d38dcdadd28d549b6e
parentc76d70d7c04797ab9c24ae134d602b78d201b052 (diff)
* dcrt0.cc (alloc_stack): Move _main_tls if stack is relocated.
-rw-r--r--winsup/cygwin/ChangeLog4
-rw-r--r--winsup/cygwin/dcrt0.cc30
2 files changed, 21 insertions, 13 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 8cc59fd6c..fc9f1e7ed 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,7 @@
+2003-12-12 Christopher Faylor <cgf@redhat.com>
+
+ * dcrt0.cc (alloc_stack): Move _main_tls if stack is relocated.
+
2003-12-11 Christopher Faylor <cgf@redhat.com>
* miscfuncs.cc (low_priority_sleep): Correct thinko which caused
diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc
index 31655c0bd..0b878a8b3 100644
--- a/winsup/cygwin/dcrt0.cc
+++ b/winsup/cygwin/dcrt0.cc
@@ -54,6 +54,16 @@ bool strip_title_path;
bool allow_glob = true;
codepage_type current_codepage = ansi_cp;
+static NO_COPY int mypid = 0;
+int __argc_safe;
+int _declspec(dllexport) __argc;
+char _declspec(dllexport) **__argv;
+vfork_save NO_COPY *main_vfork = NULL;
+
+extern "C" void __sinit (_reent *);
+
+_threadinfo NO_COPY *_main_tls;
+
int cygwin_finished_initializing;
/* Used in SIGTOMASK for generating a bit for insertion into a sigset_t.
@@ -507,24 +517,18 @@ alloc_stack (child_info_fork *ci)
if (!VirtualQuery ((LPCVOID) &b, &sm, sizeof sm))
api_fatal ("fork: couldn't get stack info, %E");
- if (sm.AllocationBase != ci->stacktop)
- alloc_stack_hard_way (ci, b + sizeof (b) - 1);
- else
+ if (sm.AllocationBase == ci->stacktop)
ci->stacksize = 0;
+ else
+ {
+ alloc_stack_hard_way (ci, b + sizeof (b) - 1);
+ _main_tls = &_my_tls;
+ _main_tls->init_thread (NULL);
+ }
return;
}
-static NO_COPY int mypid = 0;
-int __argc_safe;
-int _declspec(dllexport) __argc;
-char _declspec(dllexport) **__argv;
-vfork_save NO_COPY *main_vfork = NULL;
-
-extern "C" void __sinit (_reent *);
-
-_threadinfo NO_COPY *_main_tls;
-
/* Take over from libc's crt0.o and start the application. Note the
various special cases when Cygwin DLL is being runtime loaded (as
opposed to being link-time loaded by Cygwin apps) from a non