2012-03-13 08:10:27 +08:00
|
|
|
<!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">
|
2012-03-14 05:52:55 +08:00
|
|
|
<title>lld: a linker for LLVM</title>
|
2012-03-13 08:10:27 +08:00
|
|
|
<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>
|
|
|
|
<!--=====================================================================-->
|
|
|
|
|
2012-03-17 04:03:05 +08:00
|
|
|
<p><b>End-User Features:</b></p>
|
2012-03-13 08:10:27 +08:00
|
|
|
<ul>
|
2012-03-17 04:03:05 +08:00
|
|
|
<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>
|
2012-03-13 08:10:27 +08:00
|
|
|
<li>Fast link times</li>
|
|
|
|
<li>Minimal memory use</li>
|
|
|
|
<li>Remove clang's reliance on "the system linker"</li>
|
|
|
|
</ul>
|
|
|
|
|
2012-03-17 04:03:05 +08:00
|
|
|
<p><b>Applications:</b></p>
|
2012-03-13 08:10:27 +08:00
|
|
|
<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>
|
2012-03-17 04:03:05 +08:00
|
|
|
|
|
|
|
<p><b>Design and Implementation:</b></p>
|
2012-03-13 08:10:27 +08:00
|
|
|
<ul>
|
|
|
|
<li>Extensive unit tests</li>
|
|
|
|
<li>Internal linker model can be dumped/read to textual format</li>
|
2012-03-17 04:03:05 +08:00
|
|
|
<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>
|
2012-03-13 08:10:27 +08:00
|
|
|
<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
|
2012-03-17 04:03:05 +08:00
|
|
|
installed means that clang has been very conservative adopting features
|
|
|
|
which require a recent linker.</p>
|
|
|
|
|
2012-03-13 08:10:27 +08:00
|
|
|
<p>In the same way that the MC layer of LLVM has removed clang's reliance
|
2012-03-17 04:03:05 +08:00
|
|
|
on the system assembler tool, the lld project will remove clang's reliance
|
|
|
|
on the system linker tool.</p>
|
2012-03-13 08:10:27 +08:00
|
|
|
|
|
|
|
|
|
|
|
<!--=====================================================================-->
|
|
|
|
<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>
|