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 + + * 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 * 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