<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><a href="https://reviews.llvm.org/D55046">https://reviews.llvm.org/D55046</a> fixes your reproducer here. Let me know if that works for you.<br></div><div dir="ltr"><br></div><div>Note that I had to rebuild one of your bitcode files to be a regular object file, this is because LTO doesn't want the .eh_frame terminator to live in a bitcode file.</div><div><br></div><div>$ mv ./usr/lib/crtendS.o ./usr/lib/crtendS.o.bak<br></div><div dir="ltr">$ ~/l4/ra/bin/llc -o ./usr/lib/crtendS.o ./usr/lib/crtendS.o.bak -filetype=obj -relocation-model=pic<br></div><div dir="ltr"><br></div><div>Peter</div></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Nov 28, 2018 at 5:35 PM Shawn Webb <<a href="mailto:shawn.webb@hardenedbsd.org">shawn.webb@hardenedbsd.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hey Peter,<br>
<br>
Here you go!<br>
<br>
<a href="https://hardenedbsd.org/~shawn/2018-11-28_reproduce-01.tar" rel="noreferrer" target="_blank">https://hardenedbsd.org/~shawn/2018-11-28_reproduce-01.tar</a><br>
<br>
Thanks,<br>
<br>
-- <br>
Shawn Webb<br>
Cofounder and Security Engineer<br>
HardenedBSD<br>
<br>
Tor-ified Signal: +1 443-546-8752<br>
Tor+XMPP+OTR: lattera@is.a.hacker.sx<br>
GPG Key ID: 0x6A84658F52456EEE<br>
GPG Key Fingerprint: 2ABA B6BD EF6A F486 BE89 3D9E 6A84 658F 5245 6EEE<br>
<br>
On Wed, Nov 28, 2018 at 05:30:57PM -0800, Peter Collingbourne wrote:<br>
> Hi Shawn,<br>
> <br>
> Can you please create a reproducer tarball (using ld.lld --reproduce) so<br>
> that we don't need to install HardenedBSD in order to reproduce?<br>
> <br>
> Peter<br>
> <br>
> On Wed, Nov 28, 2018 at 5:16 PM Shawn Webb via llvm-dev <<br>
> <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
> <br>
> > Hey LLVM folks,<br>
> ><br>
> > I've run into an interesting assertion. In one of HardenedBSD's<br>
> > feature branches, we're working on integration llvm's Cross-DSO CFI<br>
> > implementation. Using Cross-DSO CFI requires building libs with LTO,<br>
> > which causes clang to emit LLVM IR intermediate object files rather<br>
> > than ELF intermediate object files.<br>
> ><br>
> > I've found that with lld, attempting to link LLVM IR intermediate<br>
> > object files hits an assert in lld. I've created a reproduction test<br>
> > case in this tiny little repo: <a href="https://github.com/lattera/ifunc_repro" rel="noreferrer" target="_blank">https://github.com/lattera/ifunc_repro</a><br>
> ><br>
> > The assertion I hit is detailed in the commit message of the initial<br>
> > commit:<br>
> ><br>
> > <a href="https://github.com/lattera/ifunc_repro/commit/0be98f9e81a1c91e80b135da6bb8d073d7a0c6f7" rel="noreferrer" target="_blank">https://github.com/lattera/ifunc_repro/commit/0be98f9e81a1c91e80b135da6bb8d073d7a0c6f7</a><br>
> ><br>
> > HardenedBSD's Cross-DSO CFI feature branch uses clang/llvm/lld 7.0.1.<br>
> > I'm more than happy to test out patches to help address this issue.<br>
> ><br>
> > Please let me know if you have any questions, comments, or concerns.<br>
> ><br>
> > Thanks,<br>
> ><br>
> > --<br>
> > Shawn Webb<br>
> > Cofounder and Security Engineer<br>
> > HardenedBSD<br>
> ><br>
> > Tor-ified Signal: +1 443-546-8752<br>
> > Tor+XMPP+OTR: lattera@is.a.hacker.sx<br>
> > GPG Key ID: 0x6A84658F52456EEE<br>
> > GPG Key Fingerprint: 2ABA B6BD EF6A F486 BE89 3D9E 6A84 658F 5245 6EEE<br>
> > _______________________________________________<br>
> > LLVM Developers mailing list<br>
> > <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
> > <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
> ><br>
> <br>
> <br>
> -- <br>
> -- <br>
> Peter<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">-- <div>Peter</div></div></div>