aboutsummaryrefslogtreecommitdiff
path: root/gcc/collect2.c
diff options
context:
space:
mode:
authorAndrew Pinski <apinski@marvell.com>2021-08-30 22:43:16 +0000
committerAndrew Pinski <apinski@marvell.com>2021-08-31 06:28:27 +0000
commit2dc6782a06eeffd9dc6b84fe93b8fcd2ce4960c7 (patch)
tree0eefa07639eef1dfde32f69b24d7c9c07d4ce857 /gcc/collect2.c
parente4d86078881bb7bb57bc6e68c22211707d2b3dc7 (diff)
downloadgcc-2dc6782a06eeffd9dc6b84fe93b8fcd2ce4960c7.zip
gcc-2dc6782a06eeffd9dc6b84fe93b8fcd2ce4960c7.tar.gz
gcc-2dc6782a06eeffd9dc6b84fe93b8fcd2ce4960c7.tar.bz2
Fix PR driver/79181 (and others), not deleting some /tmp/cc* files for LTO.
So the main issue here is that some signals are not setup unlike collect2. So this merges the setting up of the signal handlers to one function in collect-utils and has collect2 and lto-wrapper call that function. OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions. gcc/ChangeLog: PR driver/79181 * collect-utils.c (setup_signals): New declaration. * collect-utils.h (setup_signals): New function. * collect2.c (handler): Delete. (main): Instead of manually setting up the signals, just call setup_signals. * lto-wrapper.c (main): Likewise.
Diffstat (limited to 'gcc/collect2.c')
-rw-r--r--gcc/collect2.c36
1 files changed, 1 insertions, 35 deletions
diff --git a/gcc/collect2.c b/gcc/collect2.c
index 07092c2..cf04a58 100644
--- a/gcc/collect2.c
+++ b/gcc/collect2.c
@@ -301,7 +301,6 @@ const char tool_name[] = "collect2";
static symkind is_ctor_dtor (const char *);
-static void handler (int);
static void maybe_unlink_list (char **);
static void add_to_list (struct head *, const char *);
static int extract_init_priority (const char *);
@@ -408,14 +407,6 @@ collect_atexit (void)
tool_cleanup (false);
}
-static void
-handler (int signo)
-{
- tool_cleanup (true);
-
- signal (signo, SIG_DFL);
- raise (signo);
-}
/* Notify user of a non-error, without translating the format string. */
void
notice_translated (const char *cmsgid, ...)
@@ -907,11 +898,7 @@ main (int argc, char **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
+ setup_signals ();
/* Unlock the stdio streams. */
unlock_std_streams ();
@@ -1051,27 +1038,6 @@ main (int argc, char **argv)
if (argc < 2)
fatal_error (input_location, "no arguments");
-#ifdef SIGQUIT
- if (signal (SIGQUIT, SIG_IGN) != SIG_IGN)
- signal (SIGQUIT, handler);
-#endif
- if (signal (SIGINT, SIG_IGN) != SIG_IGN)
- signal (SIGINT, handler);
-#ifdef SIGALRM
- if (signal (SIGALRM, SIG_IGN) != SIG_IGN)
- signal (SIGALRM, handler);
-#endif
-#ifdef SIGHUP
- if (signal (SIGHUP, SIG_IGN) != SIG_IGN)
- signal (SIGHUP, handler);
-#endif
- if (signal (SIGSEGV, SIG_IGN) != SIG_IGN)
- signal (SIGSEGV, handler);
-#ifdef SIGBUS
- if (signal (SIGBUS, SIG_IGN) != SIG_IGN)
- signal (SIGBUS, handler);
-#endif
-
/* Extract COMPILER_PATH and PATH into our prefix list. */
prefix_from_env ("COMPILER_PATH", &cpath);
prefix_from_env ("PATH", &path);