<!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 libraries</h1>
  <!--*********************************************************************-->

  <p>The compiler-rt project consists of:
  <ul>
  <li>
    <p><b>builtins</b> - 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 builtins library provides
    optimized implementations of this and other low-level routines, either in
    target-independent C form, or as a heavily-optimized assembly.</p>
    <p>builtins provides full support for the libgcc interfaces on supported
    targets and high performance hand tuned implementations of commonly used
    functions like __floatundidf in assembly that are dramatically faster than
    the libgcc implementations. It should be very easy to bring builtins to
    support a new target by adding the new routines needed by that target.</p>
  </li>
  <li>
    <b>sanitizer runtimes</b> - runtime libraries that are required to run
    the code with sanitizer instrumentation. This includes runtimes for:
    <ul>
    <li><a href="https://clang.llvm.org/docs/AddressSanitizer.html">AddressSanitizer</a></li>
    <li><a href="https://clang.llvm.org/docs/ThreadSanitizer.html">ThreadSanitizer</a></li>
    <li><a href="https://clang.llvm.org/docs/UsersManual.html#opt-fsanitize-undefined">UndefinedBehaviorSanitizer</a></li>
    <li><a href="https://clang.llvm.org/docs/MemorySanitizer.html">MemorySanitizer</a></li>
    <li><a href="https://clang.llvm.org/docs/LeakSanitizer.html">LeakSanitizer</a></li>
    <li><a href="https://clang.llvm.org/docs/DataFlowSanitizer.html">DataFlowSanitizer</a></li>
    </ul>
  </li>
  <li>
    <b>profile</b> - library which is used to collect coverage information.
  </li>
  <li>
    <b>BlocksRuntime</b> - a target-independent implementation of Apple "Blocks"
    runtime interfaces.
  </li>
  </ul>
  </p>

  <p>All of the code in the compiler-rt project is <a
     href="https://llvm.org/docs/DeveloperPolicy.html#copyright-license-and-patents">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="https://clang.llvm.org">Clang</a>
    and <a href="https://llvm.org">LLVM</a> projects as the implementation for
    the runtime compiler support libraries. For more information on using
    compiler-rt with Clang, please see the Clang
    <a href="https://clang.llvm.org/get_started.html">Getting Started</a>
    page.</p>

  <!--=====================================================================-->
  <h2 id="requirements">Platform Support</h2>
  <!--=====================================================================-->

   <p><b>builtins</b> is known to work on the following platforms:</p>
   <ul>
   <li>Machine Architectures: i386, X86-64, SPARC64, ARM, PowerPC, PowerPC 64.</li>
   <li>OS: AuroraUX, DragonFlyBSD, FreeBSD, NetBSD, OpenBSD, Linux, Darwin.</li>
   </ul>

   <p>Most sanitizer runtimes are supported only on Linux x86-64. See tool-specific
   pages in <a href="https://clang.llvm.org/docs/index.html">Clang docs</a> for more
   details.</p>

  <!--=====================================================================-->
  <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> include/ contains headers that can be included in user programs (for example,
         users may directly call certain function from sanitizer runtimes).</li>
    <li> lib/ contains libraries implementations. </li>
    <li> lib/builtins is a generic portable implementation of <b>builtins</b> routines.</li>
    <li> lib/builtins/(arch) has optimized versions of some routines
         for the supported architectures.</li>
    <li> test/ contains test suites for compiler-rt runtimes.</li>
   </ul>

  <!--=====================================================================-->
  <h2>Get it and get involved!</h2>
  <!--=====================================================================-->

  <p>Generally, you need to build LLVM/Clang in order to build compiler-rt. You
    can build it either together with llvm and clang, or separately.

  <p>To build it together, simply add compiler-rt to the -DLLVM_ENABLE_PROJECTS= option to
    cmake.

  <p>To build it separately, first
  <a href="https://llvm.org/docs/CMake.html#quick-start">build LLVM</a>
  separately to get llvm-config binary, and then run:

  <ul>
  <li>cd llvm-project</li>
  <li>mkdir build-compiler-rt</li>
  <li>cd build-compiler-rt</li>
  <li>cmake ../compiler-rt -DLLVM_CONFIG_PATH=/path/to/llvm-config</li>
  <li>make</li>
  </ul>

  <p>Tests for sanitizer runtimes are ported to
  <a href="https://llvm.org/docs/CommandGuide/lit.html">llvm-lit</a> and are
  run by <b>make check-all</b> command in LLVM/Clang/compiler-rt build tree.</p>

  <p>compiler-rt libraries are installed to the system with <b>make install</b>
  command in either LLVM/Clang/compiler-rt or standalone
  compiler-rt build tree.</p>

  <p>compiler-rt doesn't have its own mailing list, if you have questions please
     email the <a
    href="https://lists.llvm.org/mailman/listinfo/llvm-dev">llvm-dev</a> mailing
    list.  Commits to the compiler-rt SVN module are automatically sent to the
    <a
  href="https://lists.llvm.org/mailman/listinfo/llvm-commits">llvm-commits</a>
    mailing list.</p>
</div>
</body>
</html>
