forked from OSchip/llvm-project
173 lines
6.1 KiB
HTML
173 lines
6.1 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>"compiler-rt" Runtime Library</title>
|
|
<link type="text/css" rel="stylesheet" href="menu.css">
|
|
<link type="text/css" rel="stylesheet" href="content.css">
|
|
</head>
|
|
|
|
<body>
|
|
<!--#include virtual="menu.html.incl"-->
|
|
<div id="content">
|
|
<!--*********************************************************************-->
|
|
<h1>"compiler-rt" Runtime Library</h1>
|
|
<!--*********************************************************************-->
|
|
|
|
<p>The compiler-rt project is a simple library that provides an implementation
|
|
of the low-level target-specific hooks required by code generation and
|
|
other runtime components. For example, when compiling for a 32-bit target,
|
|
converting a double to a 64-bit unsigned integer is compiling into a runtime
|
|
call to the "__fixunsdfdi" function. The compiler-rt library provides
|
|
optimized implementations of this and other low-level routines.</p>
|
|
|
|
<p>All of the code in the compiler-rt project is <a
|
|
href="http://llvm.org/docs/DeveloperPolicy.html#license">dual licensed</a>
|
|
under the MIT license and the UIUC License (a BSD-like license).</p>
|
|
|
|
<!--=====================================================================-->
|
|
<h2 id="users">Clients</h2>
|
|
<!--=====================================================================-->
|
|
|
|
<p>Currently compiler-rt is primarily used by
|
|
the <a href="http://clang.llvm.org">Clang</a>
|
|
and <a href="http://llvm.org">LLVM</a> projects as the implementation for
|
|
the runtime compiler support libraries. The library currently provides both
|
|
the low-level target-specific hooks required by code generation, as well as
|
|
additional modules for supporting the runtime requirements of features like
|
|
code coverage, profiling, or address sanitizer (ASAN) instrumentation.</p>
|
|
|
|
<p>For more information on using compiler-rt with Clang, please see the Clang
|
|
<a href="http://clang.llvm.org/get_started.html">Getting Started</a>
|
|
page.</p>
|
|
|
|
<!--=====================================================================-->
|
|
<h2 id="goals">Goals</h2>
|
|
<!--=====================================================================-->
|
|
|
|
<p>Different targets require different routines. The compiler-rt project aims
|
|
to implement these routines in both target-independent C form as well as
|
|
providing heavily optimized assembly versions of the routines in some
|
|
cases. It should be very easy to bring compiler-rt to support a new
|
|
target by adding the new routines needed by that target.</p>
|
|
|
|
<p>Where it make sense, the compiler-rt project aims to implement interfaces
|
|
that are drop-in compatible with the libgcc interfaces.</p>
|
|
|
|
<!--=====================================================================-->
|
|
<h2 id="features">Features</h2>
|
|
<!--=====================================================================-->
|
|
|
|
<p>The current feature set of compiler-rt is:</p>
|
|
|
|
<ul>
|
|
<li>Full support for the libgcc interfaces on supported targets.</li>
|
|
<li>High performance hand tuned implementations of commonly used functions
|
|
like __floatundidf in assembly that are dramatically faster than the
|
|
libgcc implementations.</li>
|
|
<li>A target-independent implementation of the Apple "Blocks" runtime
|
|
interfaces.</li>
|
|
</ul>
|
|
|
|
<!--=====================================================================-->
|
|
<h2 id="requirements">Platform Support</h2>
|
|
<!--=====================================================================-->
|
|
|
|
<p>Compiler-RT is known to work on the following platforms:</p>
|
|
|
|
<li>Machine Architectures:
|
|
<ul>
|
|
<li>i386</li>
|
|
<li>X86-64</li>
|
|
<li>SPARC64</li>
|
|
<li>ARM</li>
|
|
<li>PowerPC</li>
|
|
<li>PowerPC 64</li>
|
|
</ul></li>
|
|
|
|
<table cellpadding="3" summary="Known Compiler-RT platforms">
|
|
<tr>
|
|
<th>OS</th>
|
|
<th>Arch</th>
|
|
</tr>
|
|
<tr>
|
|
<td>AuroraUX</td>
|
|
<td>All<sup>
|
|
</tr>
|
|
<tr>
|
|
<td>DragonFlyBSD</td>
|
|
<td>All<sup>
|
|
</tr>
|
|
<tr>
|
|
<td>FreeBSD</td>
|
|
<td>All<sup>
|
|
</tr>
|
|
<tr>
|
|
<td>NetBSD</td>
|
|
<td>All<sup>
|
|
</tr>
|
|
<tr>
|
|
<td>Linux</td>
|
|
<td>All<sup>
|
|
</tr>
|
|
<tr>
|
|
<td>Darwin</td>
|
|
<td>All<sup>
|
|
</tr>
|
|
</table>
|
|
|
|
<!--=====================================================================-->
|
|
<h2 id="dir-structure">Source Structure</h2>
|
|
<!--=====================================================================-->
|
|
|
|
<p>A short explanation of the directory structure of compiler-rt:</p>
|
|
|
|
<p>For testing it is possible to build a generic library and an optimized library.
|
|
The optimized library is formed by overlaying the optimized versions onto the generic library.
|
|
Of course, some architectures have additional functions,
|
|
so the optimized library may have functions not found in the generic version.</p>
|
|
|
|
<ul>
|
|
<li> lib/ Is a generic portable implementations.</li>
|
|
<li> lib/(arch) has optimized version for the supported architectures.</li>
|
|
</ul>
|
|
|
|
<!--=====================================================================-->
|
|
<h2>Get it and get involved!</h2>
|
|
<!--=====================================================================-->
|
|
|
|
<p>To check out the code, use:</p>
|
|
|
|
<ul>
|
|
<li>svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt</li>
|
|
<li>mkdir build</li>
|
|
<li>cd build</li>
|
|
<li>cmake ../compiler-rt</li>
|
|
<li>make</li>
|
|
</ul>
|
|
|
|
<p>To run the Compiler-RT Test Suit (recommended):</p>
|
|
|
|
<ul>
|
|
<li>ctest</li>
|
|
</ul>
|
|
|
|
<p>To Install:</p>
|
|
|
|
<ul>
|
|
<li>make install</li>
|
|
</ul>
|
|
|
|
<p>compiler-rt doesn't have its own mailing list, if you have questions please
|
|
email the <a
|
|
href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">llvmdev</a> mailing
|
|
list. Commits to the compiler-rt SVN module are automatically sent to the
|
|
<a
|
|
href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits</a>
|
|
mailing list.</p>
|
|
</div>
|
|
</body>
|
|
</html>
|