* dll_init.cc (dll_dllcrt0): Don't try to initialize dll data if we're

dynamically loaded since fork() doesn't work in that scenario anyway.
(dll_dllcrt0_1): Don't accommodate dynamically loaded dlls.
* exceptions.cc (ctrl_c_handler): Don't lock the process; there's too much risk
of deadlock.
* sigproc.cc (_cygtls::remove_wq): Don't try to remove anything from the waitq
if there is obviously nothing there.
* strace.cc (strace::activate): Allow stracing dynamically loaded cygwin1.dll.
This commit is contained in:
Christopher Faylor
2011-12-08 06:17:49 +00:00
parent 069e637c0e
commit 5025bf330b
5 changed files with 18 additions and 13 deletions

View File

@ -546,12 +546,10 @@ struct dllcrt0_info
extern "C" int
dll_dllcrt0 (HMODULE h, per_process *p)
{
if (dynamically_loaded)
return 1;
dllcrt0_info x (h, p);
if (_my_tls.isinitialized ())
dll_dllcrt0_1 (&x);
else
_my_tls.call ((DWORD (*) (void *, void *)) dll_dllcrt0_1, &x);
dll_dllcrt0_1 (&x);
return x.res;
}
@ -592,11 +590,7 @@ dll_dllcrt0_1 (VOID *x)
However, that's just a note for the record; at the moment, we can't
see any need to worry about this happening. */
/* Partially initialize Cygwin guts for non-cygwin apps. */
if (dynamically_loaded && user_data->magic_biscuit == 0)
dll_crt0 (p);
else
check_sanity_and_sync (p);
check_sanity_and_sync (p);
dll_type type;