[LLVMdev] C++ Exception Handling Problem
Argiris Kirtzidis
akyrtzi at gmail.com
Tue Mar 10 08:37:45 PDT 2009
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
More information about the llvm-dev
mailing list