summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/collect2.c9
-rw-r--r--gcc/fixinc/fixincl.c9
-rw-r--r--gcc/gcc.c5
-rw-r--r--gcc/protoize.c9
5 files changed, 39 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ad5fd8ba907..c13da94446b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2001-03-15 Bruce Korb <bkorb@gnu.org>
+
+ * gcc.c(main): make more rigorous
+ * collect2.c(main): guard against ignoring SIGCHLD
+ * protoize.c(main): ditto
+ * gcc/fixinc/fixincl.c(initialize): ditto
+
2001-03-15 Mark Mitchell <mark@codesourcery.com>
* sdbout.c (sdbout_symbol): Use DECL_RTL_SET_P, SET_DECL_RTL.
diff --git a/gcc/collect2.c b/gcc/collect2.c
index 1541f7cbf22..729d62d52ed 100644
--- a/gcc/collect2.c
+++ b/gcc/collect2.c
@@ -29,6 +29,9 @@ Boston, MA 02111-1307, USA. */
#include "config.h"
#include "system.h"
#include <signal.h>
+#if ! defined( SIGCHLD ) && defined( SIGCLD )
+# define SIGCHLD SIGCLD
+#endif
#ifdef vfork /* Autoconf may define this to fork for us. */
# define VFORK_STRING "fork"
@@ -869,6 +872,12 @@ main (argc, argv)
COLLECT2_HOST_INITIALIZATION;
#endif
+#ifdef SIGCHLD
+ /* We *MUST* set SIGCHLD to SIG_DFL so that the wait4() call will
+ receive the signal. A different setting is inheritable */
+ signal (SIGCHLD, SIG_DFL);
+#endif
+
/* LC_CTYPE determines the character set used by the terminal so it has be set
to output messages correctly. */
diff --git a/gcc/fixinc/fixincl.c b/gcc/fixinc/fixincl.c
index 88fffbd2bd6..5f1e363c652 100644
--- a/gcc/fixinc/fixincl.c
+++ b/gcc/fixinc/fixincl.c
@@ -29,6 +29,9 @@ Boston, MA 02111-1307, USA. */
#endif
#include <signal.h>
+#if ! defined( SIGCHLD ) && defined( SIGCLD )
+# define SIGCHLD SIGCLD
+#endif
#ifndef SEPARATE_FIX_PROC
#include "server.h"
#endif
@@ -249,6 +252,12 @@ ENV_TABLE
exit (EXIT_FAILURE);
}
+#ifdef SIGCHLD
+ /* We *MUST* set SIGCHLD to SIG_DFL so that the wait4() call will
+ receive the signal. A different setting is inheritable */
+ signal (SIGCHLD, SIG_DFL);
+#endif
+
#define _ENV_(v,m,n,t) { tSCC var[] = n; \
v = getenv (var); if (m && (v == NULL)) { \
fprintf (stderr, var_not_found, var); \
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 8477c003066..967bbba1e7a 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -73,6 +73,9 @@ compilation is specified by a string called a "spec". */
#include "config.h"
#include "system.h"
#include <signal.h>
+#if ! defined( SIGCHLD ) && defined( SIGCLD )
+# define SIGCHLD SIGCLD
+#endif
#include "obstack.h"
#include "intl.h"
#include "prefix.h"
@@ -5517,9 +5520,11 @@ main (argc, argv)
if (signal (SIGPIPE, SIG_IGN) != SIG_IGN)
signal (SIGPIPE, fatal_error);
#endif
+#ifdef SIGCHLD
/* We *MUST* set SIGCHLD to SIG_DFL so that the wait4() call will
receive the signal. A different setting is inheritable */
signal (SIGCHLD, SIG_DFL);
+#endif
argbuf_length = 10;
argbuf = (const char **) xmalloc (argbuf_length * sizeof (const char *));
diff --git a/gcc/protoize.c b/gcc/protoize.c
index 6780b002161..aa03edf233f 100644
--- a/gcc/protoize.c
+++ b/gcc/protoize.c
@@ -25,6 +25,9 @@ Boston, MA 02111-1307, USA. */
#include <setjmp.h>
#include <signal.h>
+#if ! defined( SIGCHLD ) && defined( SIGCLD )
+# define SIGCHLD SIGCLD
+#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
@@ -4583,6 +4586,12 @@ main (argc, argv)
#endif
pname = pname ? pname+1 : argv[0];
+#ifdef SIGCHLD
+ /* We *MUST* set SIGCHLD to SIG_DFL so that the wait4() call will
+ receive the signal. A different setting is inheritable */
+ signal (SIGCHLD, SIG_DFL);
+#endif
+
/* LC_CTYPE determines the character set used by the terminal so it has be set
to output messages correctly. */