From 798bdf70eee560a3ca67a44dbb64397ee709b438 Mon Sep 17 00:00:00 2001 From: Bruce Korb Date: Fri, 16 Mar 2001 00:58:40 +0000 Subject: [PATCH] more rigorous SIGCHLD guarding From-SVN: r40522 --- gcc/ChangeLog | 7 +++++++ gcc/collect2.c | 9 +++++++++ gcc/fixinc/fixincl.c | 9 +++++++++ gcc/gcc.c | 5 +++++ gcc/protoize.c | 9 +++++++++ 5 files changed, 39 insertions(+) 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 + + * 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 * 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 +#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 +#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 +#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 #include +#if ! defined( SIGCHLD ) && defined( SIGCLD ) +# define SIGCHLD SIGCLD +#endif #ifdef HAVE_UNISTD_H #include #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. */ -- 2.30.2