diff options
author | Petr Hosek <phosek@chromium.org> | 2019-04-30 17:21:13 +0000 |
---|---|---|
committer | Petr Hosek <phosek@chromium.org> | 2019-04-30 17:21:13 +0000 |
commit | 2ac8e2003401eef2119ec05c9d596756703d5681 (patch) | |
tree | 888b78e6fc40bdd00f78a37e4ccacc34ac5b1bde /cmake/config-ix.cmake | |
parent | 8d158e4bfb63c4792b7135d0625fcc4592dcac7b (diff) |
[compiler-rt] Simple crtbegin.o and crtend.o implementation
Clang relies on existence of certain symbols that are normally
provided by crtbegin.o/crtend.o. However, LLVM does not currently
provide implementation of these files, instead relying on either
libgcc or implementations provided as part of the system.
This change provides an initial implementation of crtbegin.o/crtend.o
that can be used on system that don't provide crtbegin.o/crtend.o as
part of their C library.
Differential Revision: https://reviews.llvm.org/D28791
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@359576 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'cmake/config-ix.cmake')
-rw-r--r-- | cmake/config-ix.cmake | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake index b072c1180..ba195ee16 100644 --- a/cmake/config-ix.cmake +++ b/cmake/config-ix.cmake @@ -229,6 +229,7 @@ set(ALL_SANITIZER_COMMON_SUPPORTED_ARCH ${X86} ${X86_64} ${PPC64} ${ARM32} ${ARM64} ${MIPS32} ${MIPS64} ${S390X}) set(ALL_ASAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${MIPS32} ${MIPS64} ${PPC64} ${S390X}) +set(ALL_CRT_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64}) set(ALL_DFSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64}) set(ALL_FUZZER_SUPPORTED_ARCH ${X86_64} ${ARM64}) @@ -472,6 +473,7 @@ if(APPLE) SANITIZER_COMMON_SUPPORTED_ARCH) else() + filter_available_targets(CRT_SUPPORTED_ARCH ${ALL_CRT_SUPPORTED_ARCH}) # Architectures supported by compiler-rt libraries. filter_available_targets(SANITIZER_COMMON_SUPPORTED_ARCH ${ALL_SANITIZER_COMMON_SUPPORTED_ARCH}) @@ -560,6 +562,12 @@ endif() # TODO: Add builtins support. +if (CRT_SUPPORTED_ARCH AND OS_NAME MATCHES "Linux") + set(COMPILER_RT_HAS_CRT TRUE) +else() + set(COMPILER_RT_HAS_CRT FALSE) +endif() + if (COMPILER_RT_HAS_SANITIZER_COMMON AND DFSAN_SUPPORTED_ARCH AND OS_NAME MATCHES "Linux") set(COMPILER_RT_HAS_DFSAN TRUE) |