aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@apple.com>2012-11-12 21:32:24 +0000
committerChad Rosier <mcrosier@apple.com>2012-11-12 21:32:24 +0000
commit5af8de8c7255ca4df52cbb0d5e0d28d67c53524c (patch)
tree5b729585d328ee11c5ee091dedfe31b47e33940b /tools
parent3078353fb56772193b9304510048ac075a2c95b5 (diff)
If we encounter a fatal error, exit with status 70. For BSD systems this is
defined as an internal software error. This notifies the driver to report diagnostics information. rdar://11951540 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167754 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r--tools/driver/cc1_main.cpp6
-rw-r--r--tools/driver/driver.cpp5
2 files changed, 7 insertions, 4 deletions
diff --git a/tools/driver/cc1_main.cpp b/tools/driver/cc1_main.cpp
index 674f2adbbc..9da6723d5f 100644
--- a/tools/driver/cc1_main.cpp
+++ b/tools/driver/cc1_main.cpp
@@ -48,8 +48,10 @@ static void LLVMErrorHandler(void *UserData, const std::string &Message) {
// particular that we remove files registered with RemoveFileOnSignal.
llvm::sys::RunInterruptHandlers();
- // We cannot recover from llvm errors.
- exit(1);
+ // We cannot recover from llvm errors. When reporting a fatal error, exit
+ // with status 70. For BSD systems this is defined as an internal software
+ // error. This notifies the driver to report diagnostics information.
+ exit(70);
}
int cc1_main(const char **ArgBegin, const char **ArgEnd,
diff --git a/tools/driver/driver.cpp b/tools/driver/driver.cpp
index 81979ec726..8233247c90 100644
--- a/tools/driver/driver.cpp
+++ b/tools/driver/driver.cpp
@@ -480,8 +480,9 @@ int main(int argc_, const char **argv_) {
Res = -1;
// If result status is < 0, then the driver command signalled an error.
- // In this case, generate additional diagnostic information if possible.
- if (Res < 0)
+ // If result status is 70, then the driver command reported a fatal error.
+ // In these cases, generate additional diagnostic information if possible.
+ if (Res < 0 || Res == 70)
TheDriver.generateCompilationDiagnostics(*C, FailingCommand);
// If any timers were active but haven't been destroyed yet, print their