<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
</head>
<body>
Hi Justice, thanks for reporting your observations. I'm cc'ing Lang
as I believe he is the best to answer this (or correct my notes).<br>
<br>
<blockquote type="cite">When I attempt to call a function like the
tutorial documentation suggest, I get an error similar to the
following:
“JIT session error: Failed to materialize symbols: {
(<main>, { __real@4024000000000000, __real@4010000000000000
}) }”</blockquote>
This seems to be an issue with floating point constants on Windows:
the compiler groups them in a constant-pool section per object file
and marks it as COMDAT, so that duplicates won't cause errors when
the linker merges them. However, ORC/JITLink don't fully support
COMDAT yet. Did you try using different constants or not having
constants at all?<br>
<br>
A similar issue came up recently in the Discord channel and the
magical solution was to switch to LLJIT:<br>
<a class="moz-txt-link-freetext" href="https://discord.com/channels/636084430946959380/687692371038830597/781079145030877205">https://discord.com/channels/636084430946959380/687692371038830597/781079145030877205</a><br>
<br>
<blockquote type="cite">
<p class="MsoNormal">I also noticed that the test config marks
tests for the examples as unsupported if the platform is
windows:</p>
<p class="MsoNormal"><a
href="https://github.com/llvm/llvm-project/blob/main/llvm/test/Examples/lit.local.cfg">https://github.com/llvm/llvm-project/blob/main/llvm/test/Examples/lit.local.cfg</a></p>
<p class="MsoNormal"> </p>
Is there a reason for this? Perhaps this issue of the broken
Kaleidoscope example on Windows could have been caught earlier via
the associated tests?
</blockquote>
That's right. Well, coverage for the examples has been improved in
he past:<br>
<a class="moz-txt-link-freetext" href="https://github.com/llvm/llvm-project/commit/ecfac6cd2ce0421">https://github.com/llvm/llvm-project/commit/ecfac6cd2ce0421</a><br>
<br>
But Windows support lacks behind -- I guess simply because proper
COMDAT support is still not there:<br>
<a class="moz-txt-link-freetext" href="https://github.com/llvm/llvm-project/commit/f4b86cb28e6793">https://github.com/llvm/llvm-project/commit/f4b86cb28e6793</a><br>
<br>
There is no JITLink backend for a native Windows target and I guess
there are reasons why this is not implemented in RuntimeDyLd (the
old ORC linker). So far, no one volunteered to work on it and it
doesn't look like that happens anytime soon. Instead people (like
me) work around this limitation and target ELF or MachO even on
non-native platforms. This is fine as long as you have no native
dependencies, but it's still a hack and it doesn't seem right to
"teach" this in the tutorials.<br>
<br>
So, long story short: Not sure what would be the best way to improve
the situation. Maybe add a note for Windows users in Kaleidoscope?<br>
<br>
Best,<br>
Stefan<br>
<br>
<div class="moz-cite-prefix">On 07/01/2021 02:15, via llvm-dev
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:MWHPR1301MB2175536FAD87BAD17EA97BD89DAF0@MWHPR1301MB2175.namprd13.prod.outlook.com">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered
medium)">
<style>@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face
{font-family:"Yu Gothic";
panose-1:2 11 4 0 0 0 0 0 0 0;}@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}@font-face
{font-family:"\@Yu Gothic";
panose-1:2 11 4 0 0 0 0 0 0 0;}p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}div.WordSection1
{page:WordSection1;}</style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1">
<p class="MsoNormal">Hi all,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I was playing around with the <a
href="https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html"
moz-do-not-send="true">
C++ Kaleidoscope tutorial</a> recently and noticed that once
JIT support is added (Chapter 4) it doesn’t appear to work on
Windows.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">When the application is built in Debug mode
using Visual Studio I can’t even seem to execute simple
statements such as 2+2. I see the error:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">“Assertion failed: I !=
MR.SymbolFlags.end() && "Resolving symbol outside this
responsibility set", file
C:\Dev\llvm-project\llvm\lib\ExecutionEngine\Orc\Core.cpp,
line 2629”<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">However, when I build the application in
Release mode I am able to execute simple arithmetic
statements, but I can’t make any function calls. When I
attempt to call a function like the tutorial documentation
suggest, I get an error similar to the following:<o:p></o:p></p>
<p class="MsoNormal">“JIT session error: Failed to materialize
symbols: { (<main>, { __real@4024000000000000,
__real@4010000000000000 }) }”<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m by no means a JIT expert (hence why I
was doing the tutorial), so I was hoping someone could take a
look and help out or point me in the right direction.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I also noticed that the test config marks
tests for the examples as unsupported if the platform is
windows:<o:p></o:p></p>
<p class="MsoNormal"><a
href="https://github.com/llvm/llvm-project/blob/main/llvm/test/Examples/lit.local.cfg"
moz-do-not-send="true">https://github.com/llvm/llvm-project/blob/main/llvm/test/Examples/lit.local.cfg</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Is there a reason for this? Perhaps this
issue of the broken Kaleidoscope example on Windows could have
been caught earlier via the associated tests?
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks in advance for any help/information
you can provide,<o:p></o:p></p>
<p class="MsoNormal">-Justice<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
</blockquote>
<pre class="moz-signature" cols="72">--
<a class="moz-txt-link-freetext" href="https://flowcrypt.com/pub/stefan.graenitz@gmail.com">https://flowcrypt.com/pub/stefan.graenitz@gmail.com</a></pre>
</body>
</html>