From: Chad Rosier Date: Mon, 12 Nov 2012 21:32:24 +0000 (+0000) Subject: If we encounter a fatal error, exit with status 70. For BSD systems this is X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5af8de8c7255ca4df52cbb0d5e0d28d67c53524c;p=clang 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 --- 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