not: Only consider exit code 3 to be a crash with --crash
authorReid Kleckner <reid@kleckner.net>
Mon, 23 Jun 2014 22:54:33 +0000 (22:54 +0000)
committerReid Kleckner <reid@kleckner.net>
Mon, 23 Jun 2014 22:54:33 +0000 (22:54 +0000)
This fixes Clang's test/Index/comment-xml-schema.c with Cygwin's
xmllint.exe, which uses exit(3) for XML validation failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211550 91177308-0d34-0410-b5e6-96231b3b80d8

utils/not/not.cpp

index af942500186474bb390347ef053c1ed6d5b49e23..a5c7183bd2c9b019c07eadd4f5e5abfe80c31d85 100644 (file)
@@ -33,10 +33,11 @@ int main(int argc, const char **argv) {
   int Result = sys::ExecuteAndWait(Program, argv, nullptr, nullptr, 0, 0,
                                    &ErrMsg);
 #ifdef _WIN32
-  // Handle abort() in msvcrt -- It has exit code as 3.
-  // abort(), aka unreachable, may be handled as crash.
-  // FIXME: Could we move this into Win32/Program.inc?
-  if (Result == 3)
+  // Handle abort() in msvcrt -- It has exit code as 3.  abort(), aka
+  // unreachable, should be recognized as a crash.  However, some binaries use
+  // exit code 3 on non-crash failure paths, so only do this if we expect a
+  // crash.
+  if (ExpectCrash && Result == 3)
     Result = -3;
 #endif
   if (Result < 0) {