"compiler-rt" Runtime Library
+"compiler-rt" runtime libraries
-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, +
The compiler-rt project consists of: +
-
+
-
+
builtins - 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.
+ 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. +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.
+
+ - + sanitizer runtimes - runtime libraries that are required to run + the code with sanitizer instrumentation. This includes runtimes for: + + +
- + profile - library which is used to collect coverage information. + +
- + BlocksRuntime - a target-independent implementation of Apple "Blocks" + runtime interfaces. + +
All of the code in the compiler-rt project is dual licensed @@ -34,89 +65,24 @@
Currently compiler-rt is primarily used by the Clang and LLVM 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.
- -For more information on using compiler-rt with Clang, please see the Clang + the runtime compiler support libraries. For more information on using + compiler-rt with Clang, please see the Clang Getting Started page.
- -Goals
- - -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.
- -Where it make sense, the compiler-rt project aims to implement interfaces - that are drop-in compatible with the libgcc interfaces.
- - -Features
- - -The current feature set of compiler-rt is:
- --
-
- Full support for the libgcc interfaces on supported targets. -
- High performance hand tuned implementations of commonly used functions - like __floatundidf in assembly that are dramatically faster than the - libgcc implementations. -
- A target-independent implementation of the Apple "Blocks" runtime - interfaces. -
Platform Support
-Compiler-RT is known to work on the following platforms:
+builtins is known to work on the following platforms:
+-
+
- Machine Architectures: i386, X86-64, SPARC64, ARM, PowerPC, PowerPC 64. +
- OS: AuroraUX, DragonFlyBSD, FreeBSD, NetBSD, Linux, Darwin. +
-
-
- i386 -
- X86-64 -
- SPARC64 -
- ARM -
- PowerPC -
- PowerPC 64 -
OS | -Arch | -
---|---|
AuroraUX | -All - |
DragonFlyBSD | -All - |
FreeBSD | -All - |
NetBSD | -All - |
Linux | -All - |
Darwin | -All - |
Most sanitizer runtimes are supported only on Linux x86-64. See tool-specific + pages in Clang docs for more + details.
Source Structure
@@ -129,37 +95,42 @@ Of course, some architectures have additional functions, so the optimized library may have functions not found in the generic version. --
-
- lib/ Is a generic portable implementations. -
- lib/(arch) has optimized version for the supported architectures. +
- include/ contains headers that can be included in user programs (for example, + users may directly call certain function from sanitizer runtimes). +
- lib/ contains libraries implementations. +
- lib/builtins is a generic portable implementation of builtins routines. +
- lib/builtins/(arch) has optimized versions of some routines + for the supported architectures. +
- test/ contains test suites for compiler-rt runtimes.
- svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
- mkdir build
- cd build -
- cmake ../compiler-rt +
- cmake ../compiler-rt -DLLVM_CONFIG_PATH=/path/to/llvm-config
- make
- ctest -
- make install -
-
+
Get it and get involved!
-To check out the code, use:
- +Generally, you need to build LLVM/Clang in order to build compiler-rt. You can + either follow the Clang's + Getting Started page, or + build LLVM + separately to get llvm-config binary, and then run: +
To run the Compiler-RT Test Suit (recommended):
+Tests for sanitizer runtimes are ported to + llvm-lit and are + run by make check-all command in LLVM/Clang/compiler-rt build tree.
--
-
compiler-rt libraries are installed to the system with make install + command in either LLVM/Clang/compiler-rt or standalone + compiler-rt build tree.
-To Install:
- --
-
compiler-rt doesn't have its own mailing list, if you have questions please email the llvmdev mailing