From: Jim Wilson Date: Tue, 13 Oct 1992 18:24:57 +0000 (-0700) Subject: (main): Only install a signal handler for signals that already have handlers. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=915ee6237119145c18a9bf48e2f20ed18691c644;p=gcc.git (main): Only install a signal handler for signals that already have handlers. (main): Only install a signal handler for signals that already have handlers. (fork_execute): Don't ignore signals before calling do_wait. From-SVN: r2436 --- diff --git a/gcc/collect2.c b/gcc/collect2.c index e53a0787d1c..95f3a68e53b 100644 --- a/gcc/collect2.c +++ b/gcc/collect2.c @@ -493,12 +493,18 @@ main (argc, argv) if (argc < 2) fatal ("no arguments"); - signal (SIGQUIT, handler); - signal (SIGINT, handler); - signal (SIGALRM, handler); - signal (SIGHUP, handler); - signal (SIGSEGV, handler); - signal (SIGBUS, handler); + if (signal (SIGQUIT, SIG_IGN) != SIG_IGN) + signal (SIGQUIT, handler); + if (signal (SIGINT, SIG_IGN) != SIG_IGN) + signal (SIGINT, handler); + if (signal (SIGALRM, SIG_IGN) != SIG_IGN) + signal (SIGALRM, handler); + if (signal (SIGHUP, SIG_IGN) != SIG_IGN) + signal (SIGHUP, handler); + if (signal (SIGSEGV, SIG_IGN) != SIG_IGN) + signal (SIGSEGV, handler); + if (signal (SIGBUS, SIG_IGN) != SIG_IGN) + signal (SIGBUS, handler); /* Try to discover a valid linker/assembler/nm/strip to use. */ len = strlen (argv[0]); @@ -886,8 +892,6 @@ fork_execute (prog, argv) char **argv; { int pid; - void (*int_handler) (); - void (*quit_handler) (); if (vflag || debug) { @@ -914,13 +918,7 @@ fork_execute (prog, argv) fatal_perror ("executing %s", prog); } - int_handler = (void (*) ())signal (SIGINT, SIG_IGN); - quit_handler = (void (*) ())signal (SIGQUIT, SIG_IGN); - do_wait (prog); - - signal (SIGINT, int_handler); - signal (SIGQUIT, quit_handler); }