I have a question about loaded bit code and exception handing.
I have a c++ class that is wrapped in the usual extern "C" way and has an exception handler that catches any c++ exceptions -- it logs an error and returns a NULL pointer; this is kind of conventional C wrapping of c++. If I build a shared library and load an execute the extern function in pure this all works as expected. However if I emit bitcode and load this into pure then the functions all work -- but in this case if an exception is thrown then the "landing pad" handlers are never called and an abort is called and the interpreter of course terminates.
Now I'm not at all clear whether this is a problem with how llvm generates code or how the pure runtime handles exceptions in llvm execution engine. This is tricky business so I am hoping you can steer me in the right direction.
I am using clang 3.4svn on OS 10.9.