<div dir="rtl"><div dir="ltr">Hi,</div><div dir="ltr"><br></div><div dir="ltr">It looks like <span style="font-family:arial,sans-serif;font-size:12.800000190734863px">RtlAddFunctionTable and </span><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">RtlDeleteFunctionTable</span><span style="font-family:arial,sans-serif;font-size:12.800000190734863px"> </span><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">with SEH / Win64 </span><span style="font-size:12.800000190734863px;font-family:arial,sans-serif">are replacements for </span><span style="font-size:12.800000190734863px;font-family:arial,sans-serif">__register_frame and __deregister_frame with </span><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">Dwarf EH / Win32.</span></div>

<div dir="ltr"><span style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></span></div><div dir="ltr"><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">To make the JIT/MCJIT exceptions work on Win64 it will have to call these functions with the dynamically-generated EH. </span><span style="font-size:12.800000190734863px;font-family:arial,sans-serif">Or </span>use RtlInstallFunctionTableCallback.</div>

<div dir="ltr"><span style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></span></div><div dir="ltr"><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">Yaron</span></div><div dir="ltr">

<span style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></span></div></div><div class="gmail_extra"><br><br><div class="gmail_quote"><div dir="ltr">2013/12/17 Kai Nacke <span dir="ltr"><<a href="mailto:kai@redstar.de" target="_blank">kai@redstar.de</a>></span></div>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Yaron!<div class="im"><br>
<br>
On 17.12.2013 10:34, Yaron Keren wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Kai,<br>
<br>
Thanks for the updated patch.<br>
<br>
Another question, __register_frame and __deregister_frame are used with<br>
JIT and MCJIT to dynamically (de)register generated code.<br>
<br>
Are these functions missing or not required: without these functions,<br>
the gcc unwinder won't have the DWARF data for the dynamic code, so will<br>
exceptions for dynamic-generated code still work? how?<br>
</blockquote>
<br></div>
I have no real knowledge of JIT/MCJIT so this my be wrong. My current understanding is that __register_frame and __deregister_frame are not required on Windows. To get exception handling working, you have to generate the UNWIND_INFO and call RtlAddFunctionTable to register and RtlDeleteFunctionTable to deregister the unwind information.<br>


<br>
Regards,<br>
Kai<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Yaron<br>
<br>
<br>
<br>
2013/12/17 Kai Nacke <<a href="mailto:kai@redstar.de" target="_blank">kai@redstar.de</a> <mailto:<a href="mailto:kai@redstar.de" target="_blank">kai@redstar.de</a>>><div class="im"><br>
<br>
    Hi Yaron!<br>
<br>
    I attach my current patch. This one is also available at<br></div>
    <a href="http://redstar.de/ldc/win64eh___all_20131217.diff" target="_blank">http://redstar.de/ldc/win64eh_<u></u>__all_20131217.diff</a><br>
    <<a href="http://redstar.de/ldc/win64eh_all_20131217.diff" target="_blank">http://redstar.de/ldc/<u></u>win64eh_all_20131217.diff</a>>. It supersedes all<div class="im"><br>
    the referenced source below.<br>
    This patch is required to support SEH in LLVM. (The patch implements<br>
    Dwarf EH on top of SEH like gcc 4.8.)<br>
    I also attach clang.diff. This adds half of SEH support to clang.<br>
    The required changes in the driver are still missing.<br>
<br>
    Regards,<br>
    Kai<br>
<br>
<br>
    On 17.12.2013 09:58, Yaron Keren wrote:<br>
<br>
        Hi Jonathan and Kai,<br>
<br>
        Committed patch in revision 197483.<br>
<br>
        Regarding SEH Win64 in LLVM/clang, between the patches...<br>
<br></div>
        <a href="http://redstar.de/ldc/win64eh___all_20131117.diff" target="_blank">http://redstar.de/ldc/win64eh_<u></u>__all_20131117.diff</a><br>
        <<a href="http://redstar.de/ldc/win64eh_all_20131117.diff" target="_blank">http://redstar.de/ldc/<u></u>win64eh_all_20131117.diff</a>><br>
        <a href="http://lists.cs.uiuc.edu/__pipermail/llvm-commits/Week-__of-Mon-20130909/188032.html" target="_blank">http://lists.cs.uiuc.edu/__<u></u>pipermail/llvm-commits/Week-__<u></u>of-Mon-20130909/188032.html</a><br>


        <<a href="http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130909/188032.html" target="_blank">http://lists.cs.uiuc.edu/<u></u>pipermail/llvm-commits/Week-<u></u>of-Mon-20130909/188032.html</a>><br>


        <a href="http://lists.cs.uiuc.edu/__pipermail/llvm-commits/Week-__of-Mon-20130909/188029.html" target="_blank">http://lists.cs.uiuc.edu/__<u></u>pipermail/llvm-commits/Week-__<u></u>of-Mon-20130909/188029.html</a><div class="im">

<br>
        <<a href="http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130909/188029.html" target="_blank">http://lists.cs.uiuc.edu/<u></u>pipermail/llvm-commits/Week-<u></u>of-Mon-20130909/188029.html</a>><br>


<br>
        what is required -<br>
        to support SEH in LLVM?<br>
        to support SEH in clang?<br>
<br>
        Yaron<br>
<br>
<br>
<br>
        2013/12/17 Yaron Keren <<a href="mailto:yaron.keren@gmail.com" target="_blank">yaron.keren@gmail.com</a><br>
        <mailto:<a href="mailto:yaron.keren@gmail.com" target="_blank">yaron.keren@gmail.com</a>><br></div>
        <mailto:<a href="mailto:yaron.keren@gmail.com" target="_blank">yaron.keren@gmail.com</a> <mailto:<a href="mailto:yaron.keren@gmail.com" target="_blank">yaron.keren@gmail.com</a>><u></u>>__><br>
<br>
<br>
<br>
                Committed revision 197483.<br>
<br>
        <a href="http://llvm-reviews.chandlerc." target="_blank">http://llvm-reviews.chandlerc.</a><u></u>__com/D2378<br>
        <<a href="http://llvm-reviews.chandlerc.com/D2378" target="_blank">http://llvm-reviews.<u></u>chandlerc.com/D2378</a>><br>
<br>
<br>
<br>
<br>
</blockquote>
<br>
<br>
</blockquote></div><br></div>