LLVM: to catch 'unwind' instruction from calling C++ code

Hi!

I have a little problem using LLVM and will be happy to get a solution. I need to handle in C++ code an uncaught unwind instruction while calling JIT (now I get segfault). I mean something like nonexistent ExecutionEngine::invokeFunction instead of callFunction. Setting llvm::JITExceptionHandling to true and enclosing the JIT-call within try/catch block does not help here, because there is no C++ style exception thrown, but a simple unwind instruction. Thanks in advance.

Hi Semion, the unwind instruction has been removed from LLVM. Also, the JIT
and code generators never supported it: it never unwound the stack, it just
resulted in a nasty crash.

Ciao, Duncan.

oops… so how can unwind stack up to invoke call? Is there an alternative to establish a custom exception handling?

Hi Semion,

oops... so how can unwind stack up to invoke call? Is there an alternative to
establish a custom exception handling?

you can call a library routine, for example __cxa_throw (the C++ throw routine)
or the libgcc library routine _Unwind_RaiseException (which is what __cxa_throw
calls after setting up a C++ specific exception).

Ciao, Duncan.