[LLVMdev] C++ Exception Handling Problem

Nyx mcheva at cs.mcgill.ca
Tue Mar 10 09:28:03 PDT 2009


Well that seems to fix the problem. Exceptions are now properly caught by the
C++ code.

Thank you for your help everyone!


Argiris Kirtzidis wrote:
> 
> Hi,
> 
> Nyx wrote:
>> Hello,
>>
>> I'm in the process of creating a JIT and I've run into a problem with
>> exception handling. The situation I'm in is that my program will JIT
>> functions, which will call native C++ functions (part of the run-time
>> support). These native functions can throw exceptions. However, I don't
>> actually want to handle these exceptions in the JITted functions. There
>> are
>> already try/catch blocks in place in the C++ function that calls the
>> JITted
>> functions. 
>>
>> The problem I run into is that when exceptions are thrown, they aren't
>> caught anywhere. My program crashes with an error message: "terminate
>> called
>> after throwing an instance of 'RunError'". Where RunError is the
>> exception
>> type. Hence, the exceptions aren't getting caught where they should be.
>>
>> What I'd like to know is how I can fix this situation, so that if my C++
>> runtime support functions throw an exception, it can unwind the JITted
>> functions properly, and these functions can ensure that the proper native
>> C++ catch block receives the exception. I looked at the LLVM docs, but
>> I'm
>> still puzzled.
>>   
> 
> I'm under the impression that the JIT doesn't handle exceptions by
> default.
> Try including,
> 
> #include "llvm/Target/TargetOptions.h"
> 
> and before creating the JIT do,
> 
> llvm::ExceptionHandling = true;
> 
> I hope this helps.
> 
> -Argiris
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> 
> 

-- 
View this message in context: http://www.nabble.com/C%2B%2B-Exception-Handling-Problem-tp22427938p22438103.html
Sent from the LLVM - Dev mailing list archive at Nabble.com.




More information about the llvm-dev mailing list