[cfe-commits] r145389 - /cfe/trunk/lib/Driver/Driver.cpp

NAKAMURA Takumi geek4civic at gmail.com
Mon Nov 28 23:47:04 PST 2011


Author: chapuni
Date: Tue Nov 29 01:47:04 2011
New Revision: 145389

URL: http://llvm.org/viewvc/llvm-project?rev=145389&view=rev
Log:
[Win32] Catch exceptions (eg. segfault) on waiting for invoked clang from the driver.

clang/lib/Driver/Driver.cpp: Don't pass through negative exit status, or parent would be confused.

llvm::sys::Program::Wait(): Suppose 0x8000XXXX and 0xC000XXXX as abnormal exit code and pass it as negative value.

Win32 Exception Handler: Exit with ExceptionCode on an unhandle exception.

Modified:
    cfe/trunk/lib/Driver/Driver.cpp

Modified: cfe/trunk/lib/Driver/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=145389&r1=145388&r2=145389&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/Driver.cpp (original)
+++ cfe/trunk/lib/Driver/Driver.cpp Tue Nov 29 01:47:04 2011
@@ -511,8 +511,14 @@
     C.CleanupFileList(C.getResultFiles(), true);
 
     // Failure result files are valid unless we crashed.
-    if (Res < 0)
+    if (Res < 0) {
       C.CleanupFileList(C.getFailureResultFiles(), true);
+#ifdef _WIN32
+      // Exit status should not be negative on Win32,
+      // unless abnormal termination.
+      Res = 1;
+#endif
+    }
   }
 
   // Print extra information about abnormal failures, if possible.





More information about the cfe-commits mailing list