<div dir="ltr">Thanks Andy, helpful as always!<div><br></div><div>1 is a possibility, but not ideal for us.</div><div><br></div><div>Could you elaborate a little on 3? I don't really know what a jump stub is, but am guessing it's a kind of "alternative symbol" which would just act as a middle man to invoke the "real" symbol in the static library.</div><div>If that's the case, I can think of a way to implement it for specific symbols, but not for the more general case.</div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><p dir="ltr">--<br> Joshua Gerrard<br> JUCE Software Developer<br></p><p dir="ltr"><font size="2"><i>ROLI’s </i><a href="http://www.telegraph.co.uk/luxury/design/31520/the-seaboard-grand-piano-wins-designs-of-the-year-2014-award.html" target="_blank"><i><font color="#1155cc">award-winning</font></i></a><i> Seaboard GRAND, celebrated as the “</i><a href="http://edition.cnn.com/2013/09/27/tech/innovation/hans-zimmer-seaboard-future-piano/" target="_blank"><i><font color="#1155cc">piano of the future</font></i></a><i>”, is now joined by the </i><a href="https://www.youtube.com/watch?v=fGr7VbDiRNw" target="_blank"><i><font color="#1155cc">Seaboard RISE</font></i></a><i>, “</i><a href="http://www.soundonsound.com/news?NewsID=18726" target="_blank"><i><font color="#1155cc">every bit as slimline and attractive as its bigger brother</font></i></a><i>”. The press is hailing the Seaboard RISE as “</i><a href="http://www.wired.co.uk/news/archive/2015-09/10/seaboard-rise-digital-keyboard-launch-uk-price" target="_blank"><i><font color="#1155cc">innovative</font></i></a><i>”, “</i><a href="http://createdigitalmusic.com/2015/09/new-roli-instrument-wants-make-expressive-control-mainstream/" target="_blank"><i><font color="#1155cc">expressive</font></i></a><i>”, “</i><a href="http://createdigitalmusic.com/2015/09/new-roli-instrument-wants-make-expressive-control-mainstream/" target="_blank"><i><font color="#1155cc">accessible</font></i></a><i>”, and “</i><a href="http://www.slashgear.com/roli-seaboard-rise-is-like-3d-touch-for-musicians-11404216/" target="_blank"><i><font color="#1155cc">a keyboard controller that does to piano keys what 3D touch does to the iPhone</font></i></a><i>”. Now available for preorder at </i><a href="http://www.roli.com/" target="_blank"><i><font color="#1155cc">www.roli.com</font></i></a><i>.</i></font><br><br></p></div></div></div></div></div></div></div></div></div></div>
<br><div class="gmail_quote">On 23 November 2015 at 16:27, Andy Ayers <span dir="ltr"><<a href="mailto:andya@microsoft.com" target="_blank">andya@microsoft.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Microsoft compilers have for quite a while now assumed the code you compile is going to be linked into PE images, which are limited to 4GB. So they assume a small
 memory model and use 32 bit relocations. If at link time it turns out your export is from a DLL the linker will insert a jump stub / dllimport into the image for you which can handle larger distances.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">So you can’t straightforwardly load code from a static CRT library into the Dyld-hosted process, since the latter assumes a large memory model.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Your choices are:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p><u></u><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><span>1.<span style="font:7.0pt "Times New Roman"">     
</span></span></span><u></u><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Dynamically link whatever you’re compiling against the CRT (compile with /MD or /MDd as appropriate)<u></u><u></u></span></p>
<p><u></u><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><span>2.<span style="font:7.0pt "Times New Roman"">     
</span></span></span><u></u><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">I think there has been some work on supporting small memory models in Dyld, you could try that out<u></u><u></u></span></p>
<p><u></u><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><span>3.<span style="font:7.0pt "Times New Roman"">     
</span></span></span><u></u><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Implement a jump stub that is “nearby” the code you’ve compiled that can branch to the target (that is, emulate what the linker does)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><a name="151352bcd30b39ee__MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></a></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> llvm-dev [mailto:<a href="mailto:llvm-dev-bounces@lists.llvm.org" target="_blank">llvm-dev-bounces@lists.llvm.org</a>]
<b>On Behalf Of </b>Joshua Gerrard via llvm-dev<br>
<b>Sent:</b> Monday, November 23, 2015 3:50 AM<br>
<b>To:</b> llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><br>
<b>Subject:</b> [llvm-dev] COFF::IMAGE_REL_AMD64_REL32 relocation overflow when compiling for x86_64<u></u><u></u></span></p><div><div class="h5">
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">Some time ago I posted here regarding a relocation overflow on Windows (among other things), but the issue disappeared and so the thread got left. I've started this new thread because a) I didn't want to necro the old one and b) it felt
 like its own.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">I've now encountered the issue again and am noting down all the information I can get about it whilst it's happening.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">The issues is that I am getting a relocation overflow assertion inside RuntimeDyldCOFFX86_64.h inside the COFF::IMAGE_REL_AMD64_REL32 case.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">However, the other thread left me with the impression that I shouldn't be getting such relocation when I'm compiling for 64 bit. The only reason I can think of for this that I'm not supposed to get 32 bit relocations in the code I'm building
 rather than all the code being loaded.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">The LLVM side of the call stack looks like this:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<blockquote style="margin-left:30.0pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal">_wassert(const wchar_t * expr, const wchar_t * filename, unsigned int lineno) Line 369            C<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">llvm::RuntimeDyldCOFFX86_64::resolveRelocation(const llvm::RelocationEntry & RE, unsigned __int64 Value) Line 81         C++<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">llvm::RuntimeDyldImpl::resolveRelocationList(const llvm::SmallVector<llvm::RelocationEntry,64> & Relocs, unsigned __int64 Value) Line 796            C++<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">llvm::RuntimeDyldImpl::resolveExternalSymbols() Line 849            C++<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">llvm::RuntimeDyldImpl::resolveRelocations() Line 95          C++<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">llvm::RuntimeDyld::resolveRelocations() Line 961    C++<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">llvm::orc::ObjectLinkingLayer<llvm::orc::DoNothingOnNotifyLoaded>::ConcreteLinkedObjectSet<std::shared_ptr<llvm::SectionMemoryManager>,ClangClasses::LLVMExecutionEngine::LinkingResolver * __ptr64>::Finalize() Line 112           C++<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">llvm::orc::ObjectLinkingLayer<llvm::orc::DoNothingOnNotifyLoaded>::findSymbolIn::__l19::<lambda>() Line 246            C++<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">std::_Callable_obj<unsigned __int64 <lambda>(void),0>::_ApplyX<unsigned __int64>() Line 284     C++<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">std::_Func_impl<std::_Callable_obj<unsigned __int64 <lambda>(void),0>,std::allocator<std::_Func_class<unsigned __int64> >,unsigned __int64>::_Do_call() Line 229      C++<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">std::_Func_class<unsigned __int64>::operator()() Line 316   C++<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">llvm::orc::JITSymbol::getAddress() Line 62   C++<u></u><u></u></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">RelType is 4 (IMAGE_REL_AMD64_REL32).<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Value is 139830239098107.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Addend is 0.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">The symbol that is currently being resolved is _fperrraise. I did some researching and it appears that this symbol resides in libcmtd.lib (for me the path is C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\amd64\libcmtd.lib).<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">The relocation type stated in that library (information gathered from dumpbin) is REL32.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">I'm not sure what other information there is for me to gather, could somebody please help me resolve this?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Many thanks in advance!<u></u><u></u></p>
</div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p>--<br>
Joshua Gerrard<br>
JUCE Software Developer<u></u><u></u></p>
<p style="margin-bottom:12.0pt"><i><span style="font-size:10.0pt">ROLI’s </span></i><span style="font-size:10.0pt"><a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fwww.telegraph.co.uk%2fluxury%2fdesign%2f31520%2fthe-seaboard-grand-piano-wins-designs-of-the-year-2014-award.html&data=01%7c01%7candya%40microsoft.com%7cdea4217b5ead441afcf508d2f3fc3084%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=Ykf6luCK%2f2N%2bWIfoJ2xCjeUPQcAvUo70IsWas%2boRido%3d" target="_blank"><i><span style="color:#1155cc">award-winning</span></i></a><i> Seaboard
 GRAND, celebrated as the “</i><a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fedition.cnn.com%2f2013%2f09%2f27%2ftech%2finnovation%2fhans-zimmer-seaboard-future-piano%2f&data=01%7c01%7candya%40microsoft.com%7cdea4217b5ead441afcf508d2f3fc3084%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=F3ZwPreXW3KJcEwCzim4YG%2ftGYGrzT8yCS9lQ7pD4Tw%3d" target="_blank"><i><span style="color:#1155cc">piano
 of the future</span></i></a><i>”, is now joined by the </i><a href="https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fwww.youtube.com%2fwatch%3fv%3dfGr7VbDiRNw&data=01%7c01%7candya%40microsoft.com%7cdea4217b5ead441afcf508d2f3fc3084%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=xaAx43eo5wz73jydxQaa3Lr6%2bvKAp1ui17tqqTELN9M%3d" target="_blank"><i><span style="color:#1155cc">Seaboard
 RISE</span></i></a><i>, “</i><a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fwww.soundonsound.com%2fnews%3fNewsID%3d18726&data=01%7c01%7candya%40microsoft.com%7cdea4217b5ead441afcf508d2f3fc3084%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=J8FxKgDY30hPP68pFtrGMa49OeGyGOitZrPxA5BrH8U%3d" target="_blank"><i><span style="color:#1155cc">every
 bit as slimline and attractive as its bigger brother</span></i></a><i>”. The press is hailing the Seaboard RISE as “</i><a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fwww.wired.co.uk%2fnews%2farchive%2f2015-09%2f10%2fseaboard-rise-digital-keyboard-launch-uk-price&data=01%7c01%7candya%40microsoft.com%7cdea4217b5ead441afcf508d2f3fc3084%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=OKI6eDu1U0AAN4YqwQczE%2fDAxYA3i%2baOL7Vw31v6ueY%3d" target="_blank"><i><span style="color:#1155cc">innovative</span></i></a><i>”,
 “</i><a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fcreatedigitalmusic.com%2f2015%2f09%2fnew-roli-instrument-wants-make-expressive-control-mainstream%2f&data=01%7c01%7candya%40microsoft.com%7cdea4217b5ead441afcf508d2f3fc3084%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=iP67j7MpThqiuuKSX5cVbJDHZFKN8KHnICGWLCulVhw%3d" target="_blank"><i><span style="color:#1155cc">expressive</span></i></a><i>”,
 “</i><a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fcreatedigitalmusic.com%2f2015%2f09%2fnew-roli-instrument-wants-make-expressive-control-mainstream%2f&data=01%7c01%7candya%40microsoft.com%7cdea4217b5ead441afcf508d2f3fc3084%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=iP67j7MpThqiuuKSX5cVbJDHZFKN8KHnICGWLCulVhw%3d" target="_blank"><i><span style="color:#1155cc">accessible</span></i></a><i>”,
 and “</i><a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fwww.slashgear.com%2froli-seaboard-rise-is-like-3d-touch-for-musicians-11404216%2f&data=01%7c01%7candya%40microsoft.com%7cdea4217b5ead441afcf508d2f3fc3084%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=P9hBMgrTEZupSsqBdX081ZpH1h%2bccISnlZ7vnBp%2bScU%3d" target="_blank"><i><span style="color:#1155cc">a
 keyboard controller that does to piano keys what 3D touch does to the iPhone</span></i></a><i>”. Now available for preorder at </i><a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fwww.roli.com%2f&data=01%7c01%7candya%40microsoft.com%7cdea4217b5ead441afcf508d2f3fc3084%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=%2bwHEhValdk0plr5GqFNZVsOS9yNPz9n06qH39rjF2DE%3d" target="_blank"><i><span style="color:#1155cc">www.roli.com</span></i></a><i>.</i></span><u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></div></div>
</div>

</blockquote></div><br></div>