Home | History | Annotate | Download | only in www
      1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
      2           "http://www.w3.org/TR/html4/strict.dtd">
      3 <!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
      4 <html>
      5 <head>
      6   <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
      7   <title>"compiler-rt" Runtime Library</title>
      8   <link type="text/css" rel="stylesheet" href="menu.css">
      9   <link type="text/css" rel="stylesheet" href="content.css">
     10 </head>
     11 
     12 <body>
     13 <!--#include virtual="menu.html.incl"-->
     14 <div id="content">
     15   <!--*********************************************************************-->
     16   <h1>"compiler-rt" Runtime Library</h1>
     17   <!--*********************************************************************-->
     18   
     19   <p>The compiler-rt project is a simple library that provides an implementation
     20      of the low-level target-specific hooks required by code generation and
     21      other runtime components.  For example, when compiling for a 32-bit target,
     22     converting a double to a 64-bit unsigned integer is compiling into a runtime
     23     call to the "__fixunsdfdi" function.  The compiler-rt library provides
     24     optimized implementations of this and other low-level routines.</p>
     25 
     26   <p>All of the code in the compiler-rt project is <a 
     27      href="http://llvm.org/docs/DeveloperPolicy.html#license">dual licensed</a>
     28      under the MIT license and the UIUC License (a BSD-like license).</p>
     29 
     30   <!--=====================================================================-->
     31   <h2 id="users">Clients</h2>
     32   <!--=====================================================================-->
     33 
     34   <p>Currently compiler-rt is primarily used by
     35     the <a href="http://clang.llvm.org">Clang</a>
     36     and <a href="http://llvm.org">LLVM</a> projects as the implementation for
     37     the runtime compiler support libraries. The library currently provides both
     38     the low-level target-specific hooks required by code generation, as well as
     39     additional modules for supporting the runtime requirements of features like
     40     code coverage, profiling, or address sanitizer (ASAN) instrumentation.</p>
     41 
     42   <p>For more information on using compiler-rt with Clang, please see the Clang
     43     <a href="http://clang.llvm.org/get_started.html">Getting Started</a>
     44     page.</p>
     45   
     46   <!--=====================================================================-->
     47   <h2 id="goals">Goals</h2>
     48   <!--=====================================================================-->
     49   
     50   <p>Different targets require different routines.  The compiler-rt project aims
     51      to implement these routines in both target-independent C form as well as
     52      providing heavily optimized assembly versions of the routines in some
     53      cases.  It should be very easy to bring compiler-rt to support a new
     54      target by adding the new routines needed by that target.</p>
     55      
     56   <p>Where it make sense, the compiler-rt project aims to implement interfaces
     57      that are drop-in compatible with the libgcc interfaces.</p>
     58 
     59   <!--=====================================================================-->
     60   <h2 id="features">Features</h2>
     61   <!--=====================================================================-->
     62 
     63    <p>The current feature set of compiler-rt is:</p>
     64 
     65    <ul>
     66     <li>Full support for the libgcc interfaces on supported targets.</li>
     67     <li>High performance hand tuned implementations of commonly used functions
     68         like __floatundidf in assembly that are dramatically faster than the
     69         libgcc implementations.</li>
     70     <li>A target-independent implementation of the Apple "Blocks" runtime
     71         interfaces.</li>
     72    </ul>
     73 
     74   <!--=====================================================================-->
     75   <h2 id="requirements">Platform Support</h2>
     76   <!--=====================================================================-->
     77 
     78    <p>Compiler-RT is known to work on the following platforms:</p>
     79 
     80    <li>Machine Architectures:
     81     <ul>
     82      <li>i386</li>
     83      <li>X86-64</li>
     84      <li>SPARC64</li>
     85      <li>ARM</li>
     86      <li>PowerPC</li>
     87      <li>PowerPC 64</li>
     88     </ul></li>
     89 
     90    <table cellpadding="3" summary="Known Compiler-RT platforms">
     91    <tr>
     92      <th>OS</th>
     93      <th>Arch</th>
     94    </tr>
     95    <tr>
     96      <td>AuroraUX</td>
     97      <td>All<sup>
     98    </tr>
     99    <tr>
    100      <td>DragonFlyBSD</td>
    101      <td>All<sup>
    102    </tr>
    103    <tr>
    104      <td>FreeBSD</td>
    105      <td>All<sup>
    106    </tr>
    107    <tr>
    108      <td>NetBSD</td>
    109      <td>All<sup>
    110    </tr>
    111    <tr>
    112      <td>Linux</td>
    113      <td>All<sup>
    114    </tr>
    115    <tr>
    116      <td>Darwin</td>
    117      <td>All<sup>
    118    </tr>
    119    </table>
    120 
    121   <!--=====================================================================-->
    122   <h2 id="dir-structure">Source Structure</h2>
    123   <!--=====================================================================-->
    124 
    125    <p>A short explanation of the directory structure of compiler-rt:</p>
    126 
    127    <p>For testing it is possible to build a generic library and an optimized library.
    128        The optimized library is formed by overlaying the optimized versions onto the generic library.
    129        Of course, some architectures have additional functions,
    130        so the optimized library may have functions not found in the generic version.</p>
    131 
    132    <ul>   
    133     <li> lib/ Is a generic portable implementations.</li>
    134     <li> lib/(arch) has optimized version for the supported architectures.</li>
    135    </ul>
    136     
    137   <!--=====================================================================-->
    138   <h2>Get it and get involved!</h2>
    139   <!--=====================================================================-->
    140   
    141   <p>To check out the code, use:</p>
    142   
    143   <ul>
    144   <li>svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt</li>
    145   <li>mkdir build</li>
    146   <li>cd build</li>
    147   <li>cmake ../compiler-rt</li>
    148   <li>make</li>
    149   </ul>
    150 
    151   <p>To run the Compiler-RT Test Suit (recommended):</p>
    152 
    153   <ul>
    154   <li>ctest</li>
    155   </ul>
    156 
    157   <p>To Install:</p>
    158 
    159   <ul>
    160   <li>make install</li>
    161   </ul>
    162   
    163   <p>compiler-rt doesn't have its own mailing list, if you have questions please
    164      email the <a
    165     href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">llvmdev</a> mailing
    166     list.  Commits to the compiler-rt SVN module are automatically sent to the
    167     <a 
    168   href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits</a>
    169     mailing list.</p>
    170 </div>
    171 </body>
    172 </html>
    173