llvm-project/lld/www/index.html

103 lines
3.7 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>lld: a linker for LLVM</title>
<link type="text/css" rel="stylesheet" href="menu.css">
<link type="text/css" rel="stylesheet" href="content.css">
</head>
<body>
<div id="menu">
<div>
<a href="http://llvm.org/">LLVM Home</a>
</div>
<div class="submenu">
<label>lld Info</label>
<a href="./index.html">About</a>
<a href="linker_design.html">Design</a>
</div>
<div class="submenu">
<label>Quick Links</label>
<a href="http://lists.cs.uiuc.edu/pipermail/llvm-commits/">commits</a>
<a href="http://llvm.org/bugs/">Bug Reports</a>
<a href="http://llvm.org/svn/llvm-project/lld/trunk/">Browse SVN</a>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/">Browse ViewVC</a>
</div>
</div>
<div id="content">
<!--*********************************************************************-->
<h1>lld: a linker for LLVM</h1>
<!--*********************************************************************-->
<p>lld is a new set of modular code for creating linker tools.</p>
<!--=====================================================================-->
<h2 id="goals">Features and Goals</h2>
<!--=====================================================================-->
<p><b>End-User Features:</b></p>
<ul>
<li>Compatible with existing linker options</li>
<li>Reads standard Object Files (e.g. ELF, mach-o, PE/COFF)</li>
<li>Writes standard Executable Files (e.g. ELF, mach-o, PE)</li>
<li>Fast link times</li>
<li>Minimal memory use</li>
<li>Remove clang's reliance on "the system linker"</li>
</ul>
<p><b>Applications:</b></p>
<ul>
<li>Use the LLVM 'BSD' License</li>
<li>Modular design</li>
<li>Support cross linking</li>
<li>Easy to add new CPU support</li>
<li>Can be built as static tool or library</li>
</ul>
<p><b>Design and Implementation:</b></p>
<ul>
<li>Extensive unit tests</li>
<li>Internal linker model can be dumped/read to textual format</li>
<li>Internal linker model can be dumped/read to new native format</li>
<li>Native format designed to be fast to read and write</li>
<li>Additional linking features can be plugged in as "passes"</li>
<li>OS specific and CPU specific code factored out</li>
</ul>
<!--=====================================================================-->
<h2 id="why">Why a new linker?</h2>
<!--=====================================================================-->
<p>The fact that clang relies on whatever linker tool you happen to have
installed means that clang has been very conservative adopting features
which require a recent linker.</p>
<p>In the same way that the MC layer of LLVM has removed clang's reliance
on the system assembler tool, the lld project will remove clang's reliance
on the system linker tool.</p>
<!--=====================================================================-->
<h2 id="status">Current Status</h2>
<!--=====================================================================-->
<p>lld is in its very early stages of development.</p>
<!--=====================================================================-->
<h2>Design Documents</h2>
<!--=====================================================================-->
<ul>
<li><a href="linker_design.html">Design of lld</a></li>
</ul>
</div>
</body>
</html>