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

Duncan Sands baldrick at free.fr
Mon Nov 7 03:28:57 PST 2011


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.

>
>     2011/11/7 Duncan Sands <baldrick at free.fr <mailto:baldrick at free.fr>>
>
>         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.
>
>          > 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.
>          >
>          >
>          >
>          > _______________________________________________
>          > LLVM Developers mailing list
>          > LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> http://llvm.cs.uiuc.edu
>          > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>         _______________________________________________
>         LLVM Developers mailing list
>         LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> http://llvm.cs.uiuc.edu
>         http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
>




More information about the llvm-dev mailing list