]> granicus.if.org Git - clang/commitdiff
If we encounter a fatal error, exit with status 70. For BSD systems this is
authorChad Rosier <mcrosier@apple.com>
Mon, 12 Nov 2012 21:32:24 +0000 (21:32 +0000)
committerChad Rosier <mcrosier@apple.com>
Mon, 12 Nov 2012 21:32:24 +0000 (21:32 +0000)
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

tools/driver/cc1_main.cpp
tools/driver/driver.cpp

index 674f2adbbc4ee838c6fd147940b67a5fca16072f..9da6723d5fc5adbc034eb70eb885849acad16cc9 100644 (file)
@@ -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,
index 81979ec72684707c2e14b7fdf59b413c828705dc..8233247c90cff803173fa302dff8f8e4c33e1825 100644 (file)
@@ -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