[LLVMdev] Technical details discussion for SEH

endlessroad1991 at gmail.com endlessroad1991 at gmail.com
Thu Jan 30 20:29:01 PST 2014


Hi Jb,

It's good to see someone step up and take a shot as this again. I dropped
this because it seems to me it wasn't a high priority task for LLVM/Clang.

Implementing SEH is more of LLVM work than Clang work.

For 32-bit SEH, there are prologue/epilogue instruction sequence to emit,
setting try-level ([ebp-4]), recovering EBP ([ebp-18h]), and all these can
only happen in LLVM, not Clang. In my opinion, we should implement these as
LLVM intrinsics, like the gcc ones: see
http://llvm.org/docs/ExceptionHandling.html#exception-handling-intrinsics.
Also, we should emit the tables for each function, which is not a simple
task either.

For 64-bit SEH, things are simpler. There are no more instructions to emit
than no-SEH code. We have only two tasks: emit the table for each function,
and place some code right. If I remember it correctly, __finally block code
should be replicated at 2 places: one in the original function as part of
the normal execution path, and other one separately if anything in __try
block goes south.
As for the table part, I've seen some commits from Kai(as CC'ed in this
email) doing it, you should ask him for details.

Thanks again.

-- 
Best Regards, Tong Shen (沈彤)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140131/61a1ae71/attachment.html>


More information about the llvm-dev mailing list