Skip to content
Snippets Groups Projects
Commit ad6e96d5 authored by Chad Rosier's avatar Chad Rosier
Browse files

If we encounter 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.
rdar://11951540

llvm-svn: 167754
parent ec369d53
No related branches found
No related tags found
No related merge requests found
......@@ -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,
......
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment