Unable to catch Win64 exceptions that occur in the mcjit(ted) code

Hi all,

In my MSVC-compiled project I am using MCJIT to run some generated code. I faced that in case of Win64 (‘x86_64-pc-win32-elf’) __try/__except block doesn’t work - the stack can not be unwound.
I have found that the only way to fix it is implementing my own registerEHFrames function of the Memory Manager (but I’m not sure this helps).

Maybe someone had a success solving the same problem?
What would be the best approach to catch exceptions from dynamically generated code on Win64?

Thank you in advance

Best regard

Alexey

Hi Aliaksei,

Exceptions on Win64 are not supported yet.
Kai Nacke is working on the implementation.

Yaron

2014/1/17 Aliaksei Zasenka <listhex@gmail.com>

Hi Yaron, Kai and all,

Thanks for your answer. What is the current status of the issue?

You wrote

Kai Nacke implemented a patch for mingw32 / Win64 / SEH exceptions for the LDC compiler on top of LLVM

Does it mean that Kai is working only on gcc-mingw Win64/SEH support? Is it planned to implement something like the RtlAddFunctionTable-based registrar for dynamically loaded code?

May be I can help fixing it?

Aliaksei

This is the discussion thread for the patch:

http://comments.gmane.org/gmane.comp.compilers.llvm.cvs/166382

I will forward you the latest message not in the archives yet.

Yaron