diff options
author | Reid Kleckner <reid@kleckner.net> | 2014-07-07 20:23:27 +0000 |
---|---|---|
committer | Reid Kleckner <reid@kleckner.net> | 2014-07-07 20:23:27 +0000 |
commit | 3b5c639f485ad8aa1101a38b58c9f44abae21a19 (patch) | |
tree | f750c8ea73e9d5c428aea1caabb855f1890a47ef /clang/tools/driver/driver.cpp | |
parent | 49eafe909b2b206785fccd36e032b54d801bd1dc (diff) | |
download | bcm5719-llvm-3b5c639f485ad8aa1101a38b58c9f44abae21a19.tar.gz bcm5719-llvm-3b5c639f485ad8aa1101a38b58c9f44abae21a19.zip |
Driver: Produce crash diagnostics more often on Windows
Assertion failures call abort(), which return an exit code of 3 on
Windows. The 'not' utility has the same check.
Unfortunately, the crash-report.c test requires a shell, so it does not
run for me locally, so I can only test this manually.
There's still more work to be done here: we should generate a batch
script instead of a shell script on Windows.
llvm-svn: 212481
Diffstat (limited to 'clang/tools/driver/driver.cpp')
-rw-r--r-- | clang/tools/driver/driver.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/clang/tools/driver/driver.cpp b/clang/tools/driver/driver.cpp index 8993a092e07..9f93837c2c7 100644 --- a/clang/tools/driver/driver.cpp +++ b/clang/tools/driver/driver.cpp @@ -433,8 +433,13 @@ int main(int argc_, const char **argv_) { // If result status is < 0, then the driver command signalled an error. // If result status is 70, then the driver command reported a fatal error. - // In these cases, generate additional diagnostic information if possible. - if (CommandRes < 0 || CommandRes == 70) { + // On Windows, abort will return an exit code of 3. In these cases, + // generate additional diagnostic information if possible. + bool DiagnoseCrash = CommandRes < 0 || CommandRes == 70; +#ifdef LLVM_ON_WIN32 + DiagnoseCrash |= CommandRes == 3; +#endif + if (DiagnoseCrash) { TheDriver.generateCompilationDiagnostics(*C, FailingCommand); break; } |