Add the lld linker report from Ed Maste <emaste@freebsd.org>.

This commit is contained in:
Warren Block 2016-04-13 16:15:00 +00:00
parent 1c513283c4
commit d5208c2ded
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48611

View file

@ -1903,7 +1903,7 @@
community to consider.</p>
<p>Core is also coordinating with the committee headed by Anne
Dickinson who are reviewing the Code of Conduct. A corpus of
Dickison who are reviewing the Code of Conduct. A corpus of
case studies is being assembled, which will be re-examined to
see what impact changes to the Code of Conduct would have
had.</p>
@ -1925,4 +1925,92 @@
on lld and other parts of the toolchain.</p>
</body>
</project>
<project cat='bin'>
<title>Using <tt>lld</tt>, the LLVM Linker, to Link
FreeBSD</title>
<contact>
<person>
<name>
<given>Ed</given>
<common>Maste</common>
</name>
<email>emaste@FreeBSD.org</email>
</person>
<person>
<name>
<given>Davide</given>
<common>Italiano</common>
</name>
<email>davide@FreeBSD.org</email>
</person>
</contact>
<links>
<url href="https://wiki.freebsd.org/LLD">&os; lld wiki page</url>
<url href="http://lists.llvm.org/pipermail/llvm-dev/2016-March/096449.html">Status report on linking FreeBSD/amd64 with lld</url>
</links>
<body>
<p><tt>lld</tt> is the linker in the LLVM family of projects.
It is intended to be a high-performance linker and supports
the ELF, COFF and Mach-O object formats. Where possible,
<tt>lld</tt> maintains command-line and functional
compatibility with existing linkers (GNU BFD <tt>ld</tt> and
<tt>gold</tt>), but <tt>lld</tt>'s authors are not constrained
by strict compatability where it would hamper performance or
desired functionality.</p>
<p>The upstream <tt>lld</tt> project made significant progress
in adding new functionality to <tt>lld</tt>'s ELF support over
the first quarter of 2016. The <tt>lld</tt> ELF linker is
capable of self-hosting on FreeBSD/amd64 and is capable of
linking many test applications.</p>
<p><tt>lld</tt> currently lacks comprehensive linker script
expression evaluation support, and therefore cannot yet be
used to link the FreeBSD kernel. It also lacks versioned
symbol support, and does not implement some options used in
the FreeBSD boot loader components.</p>
<p>I've been running experimental world builds of FreeBSD/amd64
with <tt>lld</tt> installed in place of <tt>ld.bfd</tt> as the
linker. With workarounds for the current gaps in
functionality (using the <tt>WITHOUT_SYMVER</tt> option to
disable symbol versioning use, and linking the loader
components with GNU <tt>ld</tt>), <tt>lld</tt> is now able to
link a working FreeBSD system.</p>
</body>
<sponsor>The &os; Foundation</sponsor>
<help>
<task>
<p>Enable the <tt>lld</tt> option by default in the llvm-devel
(and later llvm) ports for testing.</p>
</task>
<task>
<p>Develop symbol version support and linker script expression
improvements in the upstream lld project.</p>
</task>
<task>
<p>Import a newer lld snapshot into the vendor area, add build
infrastructure and connect it to the world build, installed
as <tt>ld.lld</tt>.</p>
</task>
<task>
<p>Request a ports exp-run with <tt>/usr/bin/ld</tt> a symlink
to <tt>ld.lld</tt>.</p>
</task>
<task>
<p>Extensive testing.</p>
</task>
</help>
</project>
</report>