<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Interesting. Was this the reason you were getting the recursive compilation error in JIT::runJITOnFunctionUnlocked(...) (isAlreadyCodeGenerating)?<div>Do you have the time to try your test with 2.7? </div><div><br></div><div>Garrison</div><div><br><div><div><div>On Jan 22, 2010, at 17:37, James Williams wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">I've worked around this issue in my test case by simply calling my personality function on program to ensure it's JIT'ed before any unwind happens.<br><br>-- James<br><br><div class="gmail_quote">2010/1/22 Garrison Venn <span dir="ltr"><<a href="mailto:gvenn.cfe.dev@gmail.com">gvenn.cfe.dev@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div style="word-wrap: break-word;"><div><div>No, there is no magic. :-)</div></div><div><br>
</div><div>To me though, the tools are magic, because I have no clue what they are doing without looking at them and using them.</div><div>As their function is not germane to my current endeavors, I hope to learn about them from this list, and most likely from </div>
<div>your postings. I know it is a common approach, but to me I think bitcode generation to JIT runtime is a a cool feature of</div><div>LLVM.</div><div><br></div><div>Garrison</div><div><br></div><div><div class="im">On Jan 22, 2010, at 12:08, James Williams wrote:<br>
</div><blockquote type="cite"><br><br><div class="gmail_quote"><div class="im">2010/1/22 Garrison Venn <span dir="ltr"><<a href="mailto:gvenn.cfe.dev@gmail.com" target="_blank">gvenn.cfe.dev@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div style="word-wrap: break-word;"><div>Hi James,</div><div><br></div>Note that the wiki example is a manual JIT example that works directly with the C++ APIs. As you know, no LLVM tools are used, <div>just LLVM libraries. I say this to point out, that in the example, the exception mechanism is under the complete control of the </div>

<div>developer moded by the LLVM libraries. In my mind a different example/different doc. would be needed to explain how</div><div>a bit code driven JIT exception mechanism works. Sure the semantics and syntax of the unwind mechanism would be the</div>

<div>same, but how/where the dwarf is emitted could be different. I do know that different classes are used to emit dwarf code</div><div>for non-JIT projects vs what classes are used in the wiki JIT example. I know you understand this already,  but I just wanted to </div>

<div>make it clear for the readers of this list.</div></div></blockquote><div><br>In principle though what I'm trying to do ought to work though - I don't see anything fundamentally different about my bitcode test that lli loads from a file versus what the wiki JIT exception example generates at runtime. Both should result in similar IR in memory driving the JIT to generate the required unwind information from inkove instructions and the llvm.eh intrinsics - there's no other magic going on in the JIT example (is there?)<br>

<br>Anyway, I now have LLVM trunk from svn compiled with debug information, which makes it easier to see what's going on. Assuming I get to the bottom of it I'll post an update here.<br><br>-- James<br></div></div>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div style="word-wrap: break-word;"><div><br></div><font color="#888888"><div>Garrison</div></font><div><br></div><div><div class="im">PS: I would find if extremely useful, if you would post your results once you've figured out the issues.</div>
<div>
<div></div><div><br><div><br></div><div><div><div class="im"><div>On Jan 22, 2010, at 10:31, James Williams wrote:</div><br></div><blockquote type="cite"><br><br><div class="gmail_quote"><div class="im">2010/1/22 James Williams <span dir="ltr"><<a href="mailto:junk@giantblob.com" target="_blank">junk@giantblob.com</a>></span><br>

</div><div><br><div class="im">Sorry - t's only just sunk in that the JIT must use a completely different mechanism to load the eh tables versus having  as + ld and the ELF loader do it and that posting the assembler when I was seeing the JIT fail was probably unhelpful. I apologise for the confusion.<br>


<br>-- James<br></div></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="gmail_quote"><div><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">




<br>
Ciao,<br><font color="#888888">
<br>
Duncan.<br>
<br>
</font></blockquote></div><br>
</blockquote></div><br>
</blockquote></div><br></div></div></div></div></div></blockquote></div><br>
</blockquote></div><br></div></blockquote></div><br>
</blockquote></div><br></div></div></body></html>