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

Chad Rosier mcrosier at apple.com
Tue Jul 17 10:01:15 PDT 2012


On Jul 16, 2012, at 10:12 PM, NAKAMURA Takumi wrote:

> Chad, excuse me long-delayed reply.

Better late then never.. :)

> 
> I hit the issue you mentioned in test/Driver/crash-report.c.
> Fixed in r160343, I believe.

LGTM, thanks!

> 
> Thanks!
> 
> ...Takumi
> 
> 2011/11/30 Chad Rosier <mcrosier at apple.com>:
>> Hi,
>> Does this prevent the diagnostic information from being generated (e.g., preprocessed source, etc.)?
>> 
>> See the tail end of main() in driver.cpp:
>> 
>>  if (C.get())
>>    Res = TheDriver.ExecuteCompilation(*C, FailingCommand);
>> 
>>  // If result status is < 0, then the driver command signalled an error.
>>  // In this case, generate additional diagnostic information if possible.
>>  if (Res < 0)
>>    TheDriver.generateCompilationDiagnostics(*C, FailingCommand);
>> 
>> Chad
>> 
>> On Nov 28, 2011, at 11:47 PM, NAKAMURA Takumi wrote:
>> 
>>> 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.
>>> 
>>> 
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>> 




More information about the cfe-commits mailing list