aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2005-06-15 22:50:31 +0000
committerChristopher Faylor <me@cgf.cx>2005-06-15 22:50:31 +0000
commita9c461626eac4c32b5b0a197909c81b62e7c8269 (patch)
treee9ffe515b2235a58f2bc79e2ae3ef239be22af9e
parent0fc9cf11f84797e28168fbbc1d63a72fc50b7608 (diff)
downloadnewlib-a9c461626eac4c32b5b0a197909c81b62e7c8269.zip
newlib-a9c461626eac4c32b5b0a197909c81b62e7c8269.tar.gz
newlib-a9c461626eac4c32b5b0a197909c81b62e7c8269.tar.bz2
* cygthread.cc (cygthread::detach): Fix debugging output.
* dcrt0.cc (dll_crt0_1): Create signal_arrived early -- before any filename manipulation. * sigproc.cc (sigproc_init): Don't create signal_arrived here. * fork.cc (fork_child): Ditto.
-rw-r--r--winsup/cygwin/ChangeLog8
-rw-r--r--winsup/cygwin/cygthread.cc2
-rw-r--r--winsup/cygwin/dcrt0.cc2
-rw-r--r--winsup/cygwin/fork.cc3
-rw-r--r--winsup/cygwin/sigproc.cc2
-rw-r--r--winsup/cygwin/sigproc.h1
6 files changed, 12 insertions, 6 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 574ca7d..e9c3827 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,11 @@
+2005-06-15 Christopher Faylor <cgf@timesys.com>
+
+ * cygthread.cc (cygthread::detach): Fix debugging output.
+ * dcrt0.cc (dll_crt0_1): Create signal_arrived early -- before any
+ filename manipulation.
+ * sigproc.cc (sigproc_init): Don't create signal_arrived here.
+ * fork.cc (fork_child): Ditto.
+
2005-06-14 Christopher Faylor <cgf@timesys.com>
* path.cc (path_conv::check): Always reset to FH_FS when component != 0
diff --git a/winsup/cygwin/cygthread.cc b/winsup/cygwin/cygthread.cc
index 8960868..f96908c 100644
--- a/winsup/cygwin/cygthread.cc
+++ b/winsup/cygwin/cygthread.cc
@@ -353,7 +353,7 @@ cygthread::detach (HANDLE sigwait)
case WAIT_TIMEOUT:
break;
default:
- system_printf ("%s handle %p is bad", j ? "semaphore" : "signal_arrived", w4[j]);
+ system_printf ("%s handle %p is bad", (j ? "signal_arrived" : "semaphore"), w4[j]);
break;
}
api_fatal ("exiting on fatal error");
diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc
index ea0edbd..b119ba2 100644
--- a/winsup/cygwin/dcrt0.cc
+++ b/winsup/cygwin/dcrt0.cc
@@ -743,6 +743,8 @@ dll_crt0_1 (char *)
strace.microseconds ();
#endif
+ create_signal_arrived ();
+
/* Initialize debug muto, if DLL is built with --enable-debugging.
Need to do this before any helper threads start. */
debug_init ();
diff --git a/winsup/cygwin/fork.cc b/winsup/cygwin/fork.cc
index 5ecd3bb..504af29 100644
--- a/winsup/cygwin/fork.cc
+++ b/winsup/cygwin/fork.cc
@@ -158,7 +158,6 @@ fork_child (HANDLE& hParent, dll *&first_dll, bool& load_dlls)
{
extern void fixup_hooks_after_fork ();
extern void fixup_timers_after_fork ();
- extern void __stdcall create_signal_arrived ();
debug_printf ("child is running. pid %d, ppid %d, stack here %p",
myself->pid, myself->ppid, __builtin_frame_address (0));
@@ -204,8 +203,6 @@ fork_child (HANDLE& hParent, dll *&first_dll, bool& load_dlls)
if (fixup_mmaps_after_fork (hParent))
api_fatal ("recreate_mmaps_after_fork_failed");
- create_signal_arrived ();
-
#ifdef USE_SERVER
/* Incredible but true: If we use sockets and SYSV IPC shared memory,
there's a good chance that a duplicated socket in the child occupies
diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc
index 3e3b519..758bd52 100644
--- a/winsup/cygwin/sigproc.cc
+++ b/winsup/cygwin/sigproc.cc
@@ -490,8 +490,6 @@ sigproc_init ()
*/
sync_proc_subproc.init ("sync_proc_subproc");
- create_signal_arrived ();
-
hwait_sig = new cygthread (wait_sig, cygself, "sig");
hwait_sig->zap_h ();
diff --git a/winsup/cygwin/sigproc.h b/winsup/cygwin/sigproc.h
index a4e8a71..a5b9a54 100644
--- a/winsup/cygwin/sigproc.h
+++ b/winsup/cygwin/sigproc.h
@@ -79,6 +79,7 @@ int __stdcall sig_send (_pinfo *, int) __attribute__ ((regparm (2)));
void __stdcall signal_fixup_after_exec ();
void __stdcall wait_for_sigthread ();
void __stdcall sigalloc ();
+void __stdcall create_signal_arrived ();
int kill_pgrp (pid_t, siginfo_t&);
int killsys (pid_t, int);