aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/gcc.c24
2 files changed, 26 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d899430..c95dc28 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2017-08-15 Nathan Sidwell <nathan@acm.org>
+
+ * gcc.c (execute): Emit friendlier message if inferior is killed
+ by an external cause.
+
2017-08-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/81790
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 987eff5..96152de 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -3151,9 +3151,27 @@ execute (void)
}
else
#endif
- internal_error_no_backtrace ("%s (program %s)",
- strsignal (WTERMSIG (status)),
- commands[i].prog);
+ switch (WTERMSIG (status))
+ {
+ case SIGINT:
+ case SIGQUIT:
+ case SIGKILL:
+ case SIGTERM:
+ /* The user (or environment) did something to the
+ inferior. Making this an ICE confuses the user
+ into thinking there's a compiler bug. Much more
+ likely is the user or OOM killer nuked it. */
+ fatal_error (input_location,
+ "%s signal terminated program %s",
+ strsignal (WTERMSIG (status)),
+ commands[i].prog);
+ break;
+ default:
+ /* The inferior failed to catch the signal. */
+ internal_error_no_backtrace ("%s (program %s)",
+ strsignal (WTERMSIG (status)),
+ commands[i].prog);
+ }
}
else if (WIFEXITED (status)
&& WEXITSTATUS (status) >= MIN_FATAL_STATUS)