(main): Only install a signal handler for signals that already have handlers.
authorJim Wilson <wilson@gcc.gnu.org>
Tue, 13 Oct 1992 18:24:57 +0000 (11:24 -0700)
committerJim Wilson <wilson@gcc.gnu.org>
Tue, 13 Oct 1992 18:24:57 +0000 (11:24 -0700)
(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

gcc/collect2.c

index e53a0787d1cb996b274ad6bb40e7599f4f9f2a4a..95f3a68e53b2902f9e5c4ee09d9e56a5fe057f3e 100644 (file)
@@ -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);
 }
 
 \f