[LLVMdev] Catching exceptions passed through a JIT ExecutionEngine

Geoff Reedy geoff at programmer-monk.net
Thu Jul 21 15:03:05 PDT 2011

On Thu, Jul 21, 2011 at 03:56:21PM -0600, Geoff Reedy said
> On Tue, Jul 12, 2011 at 07:25:16PM -0400, Peter Zion said
> > Hi All,
> > 
> > I'm trying to catch an exception that is "passed through" an LLVM ExecutionEngine but I am unable to do so.  Specifically, in C++ code, inside a try/catch block, I call a JITted function, which in turn calls back into my code.  Everything works fine unless an exception is thrown; I would except the outermost try/catch(...) block to catch the exception thrown in my innermost C++ code, but instead I get the abort "terminate called after throwing an instance of 'MyException'".  I am compiling the system with g++ (on Linux and OSX); I haven't tried MSVC++.
> > 
> > Is there something that I need to do to get this behaviour to work?  I admit that I have only a fairly basic understanding of how exception handling is implemented in C++ but from what I've read it seems like the exception should unwind through what is, for all intents and purposes, a simple call stack...
> There was an example program detailing how to do exactly this on the
> wiki. Was the wiki content archived before it was taken down?

Actually, I see that the example code I was thinking of is in
examples/ExceptionDemo/ExceptionDemo.cpp of the LLVM source
distribution. The wiki page, as I recall, had some additional exposition
that's not in the source file.

More information about the llvm-dev mailing list