From 71c24112f164f525840442f7f22fe491095c53c1 Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Mon, 23 Jun 2014 22:54:33 +0000 Subject: [PATCH] not: Only consider exit code 3 to be a crash with --crash 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 | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/utils/not/not.cpp b/utils/not/not.cpp index af942500186..a5c7183bd2c 100644 --- a/utils/not/not.cpp +++ b/utils/not/not.cpp @@ -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) { -- 2.34.1