diff options
author | Christopher Faylor <me@cgf.cx> | 2006-06-02 00:09:50 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2006-06-02 00:09:50 +0000 |
commit | 2346864a451f0e82c26d083c1fee7c6df07edc68 (patch) | |
tree | 744e90adc1c975677be9e407f2fa86a8f0bfe2e3 /winsup/cygwin/dcrt0.cc | |
parent | 3e1290a3053d973bacb7cd2f82124e5c2d0352a2 (diff) | |
download | cygnal-2346864a451f0e82c26d083c1fee7c6df07edc68.tar.gz cygnal-2346864a451f0e82c26d083c1fee7c6df07edc68.tar.bz2 cygnal-2346864a451f0e82c26d083c1fee7c6df07edc68.zip |
* cygheap.cc (cygheap_fixup_in_child): Don't close parent handle here. Let the
caller do that.
* dcrt0.cc (child_info_spawn::handle_spawn): Close parent handle here to allow
fixup_after_exec functions to use it.
* cygtls.cc (_cygtls::call2): Avoid calling exit thread if called with
*crt0_1 functions.
* cygtls.h (_cygtls::isinitialized): Check that we actually have a tls before
seeing if it is initialized.
* gendef (_sigfe_maybe): Ditto.
* dcrt0.cc (dll_crt0_1): Remove static, use just one argument.
* dll_init.cc (dllcrt0_info): New structure.
(dll_dllcrt0): Change into a front-end to renamed dll_dllcrt0_1 so that we'll
always be assured of having something like a tls.
(dll_dllcrt0_1): New function, basically renamed from from dll_dllcrt0.
Unconditionally call _my_tls.init_exception_handler now that we are assured of
having a tls. Change variable name from "linking" to "linked".
* winsup.h (dll_crt0_1): Declare.
(dll_dllcrt0_1): Ditto.
Diffstat (limited to 'winsup/cygwin/dcrt0.cc')
-rw-r--r-- | winsup/cygwin/dcrt0.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index 8d76d66fe..b18aaa1a6 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -692,6 +692,12 @@ child_info_spawn::handle_spawn () envc = moreinfo->envc; if (!dynamically_loaded) cygheap->fdtab.fixup_after_exec (); + + /* Need to do this after debug_fixup_after_fork_exec or DEBUGGING handling of + handles might get confused. */ + CloseHandle (child_proc_info->parent); + child_proc_info->parent = NULL; + signal_fixup_after_exec (); if (moreinfo->old_title) { @@ -783,8 +789,8 @@ dll_crt0_0 () various special cases when Cygwin DLL is being runtime loaded (as opposed to being link-time loaded by Cygwin apps) from a non cygwin app via LoadLibrary. */ -static void -dll_crt0_1 (void *, void *) +void +dll_crt0_1 (void *) { check_sanity_and_sync (user_data); malloc_init (); |