| <!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> |