<div dir="ltr"><br><div class="gmail_quote"><div>On Sat, Mar 18, 2017 at 6:07 PM Sean Silva via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="m_-566115991480566980gmail_msg"><div class="gmail_extra m_-566115991480566980gmail_msg"><div class="gmail_quote m_-566115991480566980gmail_msg">On Thu, Mar 16, 2017 at 11:26 AM, Ed Maste via llvm-dev <span class="m_-566115991480566980gmail_msg"><<a href="mailto:llvm-dev@lists.llvm.org" class="m_-566115991480566980gmail_msg" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br class="m_-566115991480566980gmail_msg"><blockquote class="gmail_quote m_-566115991480566980gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="m_-566115991480566980m_-4955104660127975910gmail- m_-566115991480566980gmail_msg">On 15 March 2017 at 16:34, Carsten Mattner <<a href="mailto:carstenmattner@gmail.com" class="m_-566115991480566980gmail_msg" target="_blank">carstenmattner@gmail.com</a>> wrote:<br class="m_-566115991480566980gmail_msg">
><br class="m_-566115991480566980gmail_msg">
> If FreeBSD's libtool is patched to be aware of the base ld=lld,<br class="m_-566115991480566980gmail_msg">
> would this still be true?<br class="m_-566115991480566980gmail_msg">
<br class="m_-566115991480566980gmail_msg">
</span>Yes, for the same reason Joerg points out in another reply in this<br class="m_-566115991480566980gmail_msg">
thread - some software packages are going to include in their<br class="m_-566115991480566980gmail_msg">
configure scripts parts of whatever libtool version existed on the<br class="m_-566115991480566980gmail_msg">
machine used by a developer to produce a release.<br class="m_-566115991480566980gmail_msg"></blockquote><div class="m_-566115991480566980gmail_msg"><br class="m_-566115991480566980gmail_msg"></div><div class="m_-566115991480566980gmail_msg"><br class="m_-566115991480566980gmail_msg"></div></div></div></div><div class="m_-566115991480566980gmail_msg"><div class="gmail_extra m_-566115991480566980gmail_msg"><div class="gmail_quote m_-566115991480566980gmail_msg"><div class="m_-566115991480566980gmail_msg">It looks like we've picked up Phoronix's attention:</div><div class="m_-566115991480566980gmail_msg"><a href="http://www.phoronix.com/scan.php?page=article&item=lld4-linux-tests&num=3" class="m_-566115991480566980gmail_msg" target="_blank">http://www.phoronix.com/scan.<wbr>php?page=article&item=lld4-<wbr>linux-tests&num=3</a><br class="m_-566115991480566980gmail_msg"></div><div class="m_-566115991480566980gmail_msg">Note that they did this test in the most brutal possible way (replacing /usr/bin/ld with LLD).</div><div class="m_-566115991480566980gmail_msg"><br class="m_-566115991480566980gmail_msg"></div><div class="m_-566115991480566980gmail_msg">It seems that they found that a few packages failed to build with LLD.</div><div class="m_-566115991480566980gmail_msg"><br class="m_-566115991480566980gmail_msg"></div><div class="m_-566115991480566980gmail_msg">I tried reproducing the libjpeg-turbo one and it seems likely to be due to differences in configure. This is the diff: <a href="https://reviews.llvm.org/P7977" class="m_-566115991480566980gmail_msg" target="_blank">https://reviews.llvm.org/P7977</a></div><div class="m_-566115991480566980gmail_msg"><br class="m_-566115991480566980gmail_msg"></div><div class="m_-566115991480566980gmail_msg">I can't repro the libjpeg-turbo failure configuring with a plain -fuse-ld=lld (using clang as CC, and with /usr/bin/ld as ld.bfd). It seems that the configure scripts actually call directly into /usr/bin/ld for this check or something similarly nasty (which is pretty suspect, since it defeats whatever linker feature is being tested when it invokes the linker "for real" through CC `).</div><div class="m_-566115991480566980gmail_msg"><br class="m_-566115991480566980gmail_msg"></div><div class="m_-566115991480566980gmail_msg">Adding "not GNU" into the version string seems to allow libjpeg-turbo to build (though it still detects shared libraries aren't available, and adding `: supported targets: elf` in --help seems to get shared libraries back). With those two hacks (patch attached), I see the following configure diff which seems benign: <a href="https://reviews.llvm.org/P7978" class="m_-566115991480566980gmail_msg" target="_blank">https://reviews.llvm.org/P7978</a></div><div class="m_-566115991480566980gmail_msg">See the thread "lld status on the freebsd ports" where Rafael shared his findings from the freebsd ports, inclusing these hacks.</div><div class="m_-566115991480566980gmail_msg"><br class="m_-566115991480566980gmail_msg"></div><div class="m_-566115991480566980gmail_msg">I think we should seriously consider adding these hacks (possibly in a way that more clearly highlights to users why we had to put them in, such as "the following lines are for libtool < vX.Y:"). Realistically, even if we land a fix in upstream libtool today, we are unlikely to be able to really rely on that in the wild for perhaps 5 years. I don't think our users should have to wait that long for LLD to "Just Work" for them. We want LLD to have as little "fine print" as possible<div class="gmail_default" style="font-family:monospace,monospace;display:inline">​.</div></div></div></div></div></blockquote><div><br></div><div class="gmail_default" style="font-family:monospace,monospace">​perhaps​ its better to provide fixes to these applications to not look for tool specific strings. If you put such knobs into tools then you have to live with it for life of the tool. musl libc had similar problems where it exposed assumptions about libc specific implementation, musl's adherence to not mimic the behavior ended up in cleaning up many of the packages and making them more portable. </div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace">Problems you are describing seems to be also in similar realm, I would rather suggest to provide fixes for the packages instead of fixing lld.</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="m_-566115991480566980gmail_msg"><div class="gmail_extra m_-566115991480566980gmail_msg"><div class="gmail_quote m_-566115991480566980gmail_msg"><div class="m_-566115991480566980gmail_msg"><div class="gmail_default" style="font-family:monospace,monospace;display:inline">​</div><span style="font-family:monospace,monospace">​</span></div></div></div></div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="m_-566115991480566980gmail_msg"><div class="gmail_extra m_-566115991480566980gmail_msg"><div class="gmail_quote m_-566115991480566980gmail_msg"><div class="m_-566115991480566980gmail_msg"></div><div class="m_-566115991480566980gmail_msg"><br class="m_-566115991480566980gmail_msg"></div><div class="m_-566115991480566980gmail_msg"><br class="m_-566115991480566980gmail_msg"></div><div class="m_-566115991480566980gmail_msg">It looks like "stockfish" and "TTSIOD" also failed to link as well. Stockfish seems to fail because by default when compiling with GCC the makefile uses -flto and LLD doesn't understand the GCC IR files. I think the COFF linker handles this by shelling out to the system linker in the case of MSVC LTO, and ELF should probably do the same.</div><div class="m_-566115991480566980gmail_msg">I haven't looked into TTSIOD.</div><div class="m_-566115991480566980gmail_msg"><br class="m_-566115991480566980gmail_msg"></div><div class="m_-566115991480566980gmail_msg"><div class="m_-566115991480566980gmail_msg">This seems to have caused some bad publicity: <a href="https://www.reddit.com/r/programming/comments/601kn9/trying_out_llvm_40s_lld_linker/" class="m_-566115991480566980gmail_msg" target="_blank">https://www.reddit.<wbr>com/r/programming/comments/<wbr>601kn9/trying_out_llvm_40s_<wbr>lld_linker/</a></div></div><div class="m_-566115991480566980gmail_msg">One user even comes away with this impression: "As you can see in the link, LLD is unable to link several projects. It's far from production ready."</div><div class="m_-566115991480566980gmail_msg">(and I cannot blame them; LLD should "Just Work" with almost all major open-source software packages, and failing 3, including a very common one like libjpeg-turbo which is used by firefox and chromium, doesn't reflect well)</div><div class="m_-566115991480566980gmail_msg">One user experiencing a segfault appears to have been kind enough to send us a bug report: <a href="https://bugs.llvm.org/show_bug.cgi?id=32341" class="m_-566115991480566980gmail_msg" target="_blank">https://bugs.llvm.org/<wbr>show_bug.cgi?id=32341</a></div><div class="m_-566115991480566980gmail_msg"><br class="m_-566115991480566980gmail_msg"></div><div class="m_-566115991480566980gmail_msg">-- Sean Silva</div></div></div></div><div class="m_-566115991480566980gmail_msg"><div class="gmail_extra m_-566115991480566980gmail_msg"><div class="gmail_quote m_-566115991480566980gmail_msg"><div class="m_-566115991480566980gmail_msg"><br class="m_-566115991480566980gmail_msg"></div><div class="m_-566115991480566980gmail_msg"><br class="m_-566115991480566980gmail_msg"></div><div class="m_-566115991480566980gmail_msg"> </div><blockquote class="gmail_quote m_-566115991480566980gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div class="m_-566115991480566980m_-4955104660127975910gmail-HOEnZb m_-566115991480566980gmail_msg"><div class="m_-566115991480566980m_-4955104660127975910gmail-h5 m_-566115991480566980gmail_msg">______________________________<wbr>_________________<br class="m_-566115991480566980gmail_msg">
LLVM Developers mailing list<br class="m_-566115991480566980gmail_msg">
<a href="mailto:llvm-dev@lists.llvm.org" class="m_-566115991480566980gmail_msg" target="_blank">llvm-dev@lists.llvm.org</a><br class="m_-566115991480566980gmail_msg">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" class="m_-566115991480566980gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br class="m_-566115991480566980gmail_msg">
</div></div></blockquote></div></div></div>
______________________________<wbr>_________________<br class="m_-566115991480566980gmail_msg">
LLVM Developers mailing list<br class="m_-566115991480566980gmail_msg">
<a href="mailto:llvm-dev@lists.llvm.org" class="m_-566115991480566980gmail_msg" target="_blank">llvm-dev@lists.llvm.org</a><br class="m_-566115991480566980gmail_msg">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" class="m_-566115991480566980gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br class="m_-566115991480566980gmail_msg">
</blockquote></div></div>