summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog8
-rw-r--r--winsup/cygwin/dll_init.cc2
-rwxr-xr-xwinsup/cygwin/gendef8
3 files changed, 13 insertions, 5 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index b13bff59f..1fd037412 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,11 @@
+2013-05-27 Corinna Vinschen <corinna@vinschen.de>
+
+ * dll_init.cc (dll_list::topsort): Fix early-return condition to
+ accommodate process with all runtime loaded DLLs already dlclosed
+ at fork time.
+ * gendef (_sigfe_maybe): Fix code handling early return if we don't
+ have a tls, broken on 2013-05-21.
+
2013-05-24 Corinna Vinschen <corinna@vinschen.de>
* Makefile.in (DEFS): Unused, remove.
diff --git a/winsup/cygwin/dll_init.cc b/winsup/cygwin/dll_init.cc
index 1c68196fb..c61bbdb8c 100644
--- a/winsup/cygwin/dll_init.cc
+++ b/winsup/cygwin/dll_init.cc
@@ -299,7 +299,7 @@ void
dll_list::topsort ()
{
/* Anything to do? */
- if (!end)
+ if (!end || end == &start)
return;
/* make sure we have all the deps available */
diff --git a/winsup/cygwin/gendef b/winsup/cygwin/gendef
index 37077997b..2bb790588 100755
--- a/winsup/cygwin/gendef
+++ b/winsup/cygwin/gendef
@@ -133,13 +133,13 @@ EOF
_sigfe_maybe: # stack is aligned on entry!
.seh_endprologue
movq %gs:8,%r10 # location of bottom of stack
- addq \$$tls::initialized,%r10 # where we will be looking
- cmpq %r10,%rsp # stack loc > than tls
- ret # yep. we don't have a tls.
- subq \$$tls::initialized,%r10 # where we will be looking
+ leaq $tls::initialized(%r10),%r11 # where we will be looking
+ cmpq %r11,%rsp # stack loc > than tls
+ jge 0f # yep. we don't have a tls.
movl $tls::initialized(%r10),%r11d
cmpl \$0xc763173f,%r11d # initialized?
je 1f
+0: ret
.seh_endproc
.seh_proc _sigfe