Skip to content

Commit 345280d

Browse files
committed
Add 'pythondata_software_compiler_rt/data/' from commit '81fb4f00c2cfe13814765968e09931ffa93b5138'
git-subtree-dir: pythondata_software_compiler_rt/data git-subtree-mainline: c1ceb36 git-subtree-split: 81fb4f0
2 parents c1ceb36 + 81fb4f0 commit 345280d

File tree

1,959 files changed

+332799
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,959 files changed

+332799
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"project_id" : "compiler-rt",
3+
"conduit_uri" : "http://reviews.llvm.org/"
4+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
*~
2+
darwin_fat
3+
clang_darwin
4+
multi_arch
5+
*.sw?
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,320 @@
1+
# CMake build for CompilerRT.
2+
#
3+
# This build assumes that CompilerRT is checked out into the
4+
# 'projects/compiler-rt' inside of an LLVM tree.
5+
# Standalone build system for CompilerRT is not yet ready.
6+
#
7+
# An important constraint of the build is that it only produces libraries
8+
# based on the ability of the host toolchain to target various platforms.
9+
10+
# Check if compiler-rt is built as a standalone project.
11+
if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
12+
project(CompilerRT C CXX ASM)
13+
set(COMPILER_RT_STANDALONE_BUILD TRUE)
14+
else()
15+
set(COMPILER_RT_STANDALONE_BUILD FALSE)
16+
endif()
17+
18+
# The CompilerRT build system requires CMake version 2.8.8 or higher in order
19+
# to use its support for building convenience "libraries" as a collection of
20+
# .o files. This is particularly useful in producing larger, more complex
21+
# runtime libraries.
22+
if (NOT MSVC)
23+
cmake_minimum_required(VERSION 2.8.8)
24+
else()
25+
# Version 2.8.12.1 is required to build with Visual Studio 2013.
26+
cmake_minimum_required(VERSION 2.8.12.1)
27+
endif()
28+
29+
# FIXME: It may be removed when we use 2.8.12.
30+
if(CMAKE_VERSION VERSION_LESS 2.8.12)
31+
# Invalidate a couple of keywords.
32+
set(cmake_2_8_12_INTERFACE)
33+
set(cmake_2_8_12_PRIVATE)
34+
else()
35+
# Use ${cmake_2_8_12_KEYWORD} intead of KEYWORD in target_link_libraries().
36+
set(cmake_2_8_12_INTERFACE INTERFACE)
37+
set(cmake_2_8_12_PRIVATE PRIVATE)
38+
if(POLICY CMP0022)
39+
cmake_policy(SET CMP0022 NEW) # automatic when 2.8.12 is required
40+
endif()
41+
endif()
42+
43+
# Top level target used to build all compiler-rt libraries.
44+
add_custom_target(compiler-rt ALL)
45+
46+
option(COMPILER_RT_BUILD_BUILTINS "Build builtins" ON)
47+
mark_as_advanced(COMPILER_RT_BUILD_BUILTINS)
48+
option(COMPILER_RT_BUILD_SANITIZERS "Build sanitizers" ON)
49+
mark_as_advanced(COMPILER_RT_BUILD_SANITIZERS)
50+
51+
if (NOT COMPILER_RT_STANDALONE_BUILD)
52+
# Compute the Clang version from the LLVM version.
53+
# FIXME: We should be able to reuse CLANG_VERSION variable calculated
54+
# in Clang cmake files, instead of copying the rules here.
55+
string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION
56+
${PACKAGE_VERSION})
57+
# Setup the paths where compiler-rt runtimes and headers should be stored.
58+
set(COMPILER_RT_OUTPUT_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION})
59+
set(COMPILER_RT_EXEC_OUTPUT_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
60+
set(COMPILER_RT_INSTALL_PATH lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION})
61+
option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit tests."
62+
${LLVM_INCLUDE_TESTS})
63+
option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered"
64+
${LLVM_ENABLE_WERROR})
65+
# Use just-built Clang to compile/link tests on all platforms, except for
66+
# Windows where we need to use clang-cl instead.
67+
if(NOT MSVC)
68+
set(COMPILER_RT_TEST_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang)
69+
else()
70+
set(COMPILER_RT_TEST_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang.exe)
71+
endif()
72+
else()
73+
# Take output dir and install path from the user.
74+
set(COMPILER_RT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH
75+
"Path where built compiler-rt libraries should be stored.")
76+
set(COMPILER_RT_EXEC_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin CACHE PATH
77+
"Path where built compiler-rt executables should be stored.")
78+
set(COMPILER_RT_INSTALL_PATH ${CMAKE_INSTALL_PREFIX} CACHE PATH
79+
"Path where built compiler-rt libraries should be installed.")
80+
option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit tests." OFF)
81+
option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered" OFF)
82+
# Use a host compiler to compile/link tests.
83+
set(COMPILER_RT_TEST_COMPILER ${CMAKE_C_COMPILER} CACHE PATH "Compiler to use for testing")
84+
85+
if (NOT LLVM_CONFIG_PATH)
86+
find_program(LLVM_CONFIG_PATH "llvm-config"
87+
DOC "Path to llvm-config binary")
88+
if (NOT LLVM_CONFIG_PATH)
89+
message(FATAL_ERROR "llvm-config not found: specify LLVM_CONFIG_PATH")
90+
endif()
91+
endif()
92+
execute_process(
93+
COMMAND ${LLVM_CONFIG_PATH} "--obj-root" "--bindir" "--libdir" "--src-root"
94+
RESULT_VARIABLE HAD_ERROR
95+
OUTPUT_VARIABLE CONFIG_OUTPUT)
96+
if (HAD_ERROR)
97+
message(FATAL_ERROR "llvm-config failed with status ${HAD_ERROR}")
98+
endif()
99+
string(REGEX REPLACE "[ \t]*[\r\n]+[ \t]*" ";" CONFIG_OUTPUT ${CONFIG_OUTPUT})
100+
list(GET CONFIG_OUTPUT 0 LLVM_BINARY_DIR)
101+
list(GET CONFIG_OUTPUT 1 LLVM_TOOLS_BINARY_DIR)
102+
list(GET CONFIG_OUTPUT 2 LLVM_LIBRARY_DIR)
103+
list(GET CONFIG_OUTPUT 3 LLVM_MAIN_SRC_DIR)
104+
105+
# Make use of LLVM CMake modules.
106+
file(TO_CMAKE_PATH ${LLVM_BINARY_DIR} LLVM_BINARY_DIR_CMAKE_STYLE)
107+
set(LLVM_CMAKE_PATH "${LLVM_BINARY_DIR_CMAKE_STYLE}/share/llvm/cmake")
108+
list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_PATH}")
109+
# Get some LLVM variables from LLVMConfig.
110+
include("${LLVM_CMAKE_PATH}/LLVMConfig.cmake")
111+
112+
set(LLVM_LIBRARY_OUTPUT_INTDIR
113+
${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
114+
115+
# Find Python interpreter.
116+
set(Python_ADDITIONAL_VERSIONS 2.7 2.6 2.5)
117+
include(FindPythonInterp)
118+
if(NOT PYTHONINTERP_FOUND)
119+
message(FATAL_ERROR "
120+
Unable to find Python interpreter required testing. Please install Python
121+
or specify the PYTHON_EXECUTABLE CMake variable.")
122+
endif()
123+
124+
# Define default arguments to lit.
125+
set(LIT_ARGS_DEFAULT "-sv")
126+
if (MSVC OR XCODE)
127+
set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT} --no-progress-bar")
128+
endif()
129+
set(LLVM_LIT_ARGS "${LIT_ARGS_DEFAULT}" CACHE STRING "Default options for lit")
130+
endif()
131+
132+
if("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang[+]*$")
133+
set(COMPILER_RT_TEST_COMPILER_ID Clang)
134+
elseif("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang.*.exe$")
135+
set(COMPILER_RT_TEST_COMPILER_ID Clang)
136+
else()
137+
set(COMPILER_RT_TEST_COMPILER_ID GNU)
138+
endif()
139+
140+
set(COMPILER_RT_DEFAULT_TARGET_TRIPLE ${TARGET_TRIPLE} CACHE STRING
141+
"Default triple for which compiler-rt runtimes will be built.")
142+
if(DEFINED COMPILER_RT_TEST_TARGET_TRIPLE)
143+
# Backwards compatibility: this variable used to be called
144+
# COMPILER_RT_TEST_TARGET_TRIPLE.
145+
set(COMPILER_RT_DEFAULT_TARGET_TRIPLE ${COMPILER_RT_TEST_TARGET_TRIPLE})
146+
endif()
147+
148+
string(REPLACE "-" ";" TARGET_TRIPLE_LIST ${COMPILER_RT_DEFAULT_TARGET_TRIPLE})
149+
list(GET TARGET_TRIPLE_LIST 0 COMPILER_RT_DEFAULT_TARGET_ARCH)
150+
list(GET TARGET_TRIPLE_LIST 1 COMPILER_RT_DEFAULT_TARGET_OS)
151+
list(GET TARGET_TRIPLE_LIST 2 COMPILER_RT_DEFAULT_TARGET_ABI)
152+
# Determine if test target triple is specified explicitly, and doesn't match the
153+
# default.
154+
if(NOT COMPILER_RT_DEFAULT_TARGET_TRIPLE STREQUAL TARGET_TRIPLE)
155+
set(COMPILER_RT_HAS_EXPLICIT_DEFAULT_TARGET_TRIPLE TRUE)
156+
else()
157+
set(COMPILER_RT_HAS_EXPLICIT_DEFAULT_TARGET_TRIPLE FALSE)
158+
endif()
159+
160+
if ("${COMPILER_RT_DEFAULT_TARGET_ABI}" STREQUAL "androideabi")
161+
set(ANDROID 1)
162+
endif()
163+
164+
string(TOLOWER ${CMAKE_SYSTEM_NAME} COMPILER_RT_OS_DIR)
165+
set(COMPILER_RT_LIBRARY_OUTPUT_DIR
166+
${COMPILER_RT_OUTPUT_DIR}/lib/${COMPILER_RT_OS_DIR})
167+
set(COMPILER_RT_LIBRARY_INSTALL_DIR
168+
${COMPILER_RT_INSTALL_PATH}/lib/${COMPILER_RT_OS_DIR})
169+
170+
# Add path for custom compiler-rt modules.
171+
set(CMAKE_MODULE_PATH
172+
"${CMAKE_CURRENT_SOURCE_DIR}/cmake"
173+
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules"
174+
${CMAKE_MODULE_PATH}
175+
)
176+
include(CompilerRTUtils)
177+
178+
set(COMPILER_RT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
179+
set(COMPILER_RT_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
180+
181+
# We support running instrumented tests when we're not cross compiling
182+
# and target a UNIX-like system or Windows.
183+
# We can run tests on Android even when we are cross-compiling.
184+
if(("${CMAKE_HOST_SYSTEM}" STREQUAL "${CMAKE_SYSTEM}" AND (UNIX OR WIN32)) OR ANDROID
185+
OR COMPILER_RT_EMULATOR)
186+
option(COMPILER_RT_CAN_EXECUTE_TESTS "Can we execute instrumented tests" ON)
187+
else()
188+
option(COMPILER_RT_CAN_EXECUTE_TESTS "Can we execute instrumented tests" OFF)
189+
endif()
190+
191+
option(COMPILER_RT_DEBUG "Build runtimes with full debug info" OFF)
192+
# COMPILER_RT_DEBUG_PYBOOL is used by lit.common.configured.in.
193+
pythonize_bool(COMPILER_RT_DEBUG)
194+
195+
#================================
196+
# Setup Compiler Flags
197+
#================================
198+
include(CheckIncludeFile)
199+
check_include_file(unwind.h HAVE_UNWIND_H)
200+
201+
include(config-ix)
202+
203+
if(MSVC)
204+
append_string_if(COMPILER_RT_HAS_W3_FLAG /W3 CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
205+
else()
206+
append_string_if(COMPILER_RT_HAS_WALL_FLAG -Wall CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
207+
endif()
208+
if(COMPILER_RT_ENABLE_WERROR)
209+
append_string_if(COMPILER_RT_HAS_WERROR_FLAG -Werror CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
210+
append_string_if(COMPILER_RT_HAS_WX_FLAG /WX CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
211+
endif()
212+
213+
append_string_if(COMPILER_RT_HAS_STD_CXX11_FLAG -std=c++11 CMAKE_CXX_FLAGS)
214+
215+
# Emulate C99 and C++11's __func__ for MSVC prior to 2013 CTP.
216+
if(NOT COMPILER_RT_HAS_FUNC_SYMBOL)
217+
add_definitions(-D__func__=__FUNCTION__)
218+
endif()
219+
220+
# Provide some common commmandline flags for Sanitizer runtimes.
221+
append_list_if(COMPILER_RT_HAS_FPIC_FLAG -fPIC SANITIZER_COMMON_CFLAGS)
222+
append_list_if(COMPILER_RT_HAS_FNO_BUILTIN_FLAG -fno-builtin SANITIZER_COMMON_CFLAGS)
223+
append_list_if(COMPILER_RT_HAS_FNO_EXCEPTIONS_FLAG -fno-exceptions SANITIZER_COMMON_CFLAGS)
224+
append_list_if(COMPILER_RT_HAS_FOMIT_FRAME_POINTER_FLAG -fomit-frame-pointer SANITIZER_COMMON_CFLAGS)
225+
append_list_if(COMPILER_RT_HAS_FUNWIND_TABLES_FLAG -funwind-tables SANITIZER_COMMON_CFLAGS)
226+
append_list_if(COMPILER_RT_HAS_FNO_STACK_PROTECTOR_FLAG -fno-stack-protector SANITIZER_COMMON_CFLAGS)
227+
append_list_if(COMPILER_RT_HAS_FNO_SANITIZE_SAFE_STACK_FLAG -fno-sanitize=safe-stack SANITIZER_COMMON_CFLAGS)
228+
append_list_if(COMPILER_RT_HAS_FVISIBILITY_HIDDEN_FLAG -fvisibility=hidden SANITIZER_COMMON_CFLAGS)
229+
append_list_if(COMPILER_RT_HAS_FNO_FUNCTION_SECTIONS_FLAG -fno-function-sections SANITIZER_COMMON_CFLAGS)
230+
append_list_if(COMPILER_RT_HAS_FNO_LTO_FLAG -fno-lto SANITIZER_COMMON_CFLAGS)
231+
232+
if(MSVC)
233+
# Replace the /M[DT][d] flags with /MT, and strip any definitions of _DEBUG,
234+
# which cause definition mismatches at link time.
235+
# FIXME: In fact, sanitizers should support both /MT and /MD, see PR20214.
236+
if(COMPILER_RT_HAS_MT_FLAG)
237+
foreach(flag_var
238+
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
239+
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
240+
string(REGEX REPLACE "/M[DT]d" "/MT" ${flag_var} "${${flag_var}}")
241+
string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
242+
string(REGEX REPLACE "/D_DEBUG" "" ${flag_var} "${${flag_var}}")
243+
endforeach()
244+
endif()
245+
append_list_if(COMPILER_RT_HAS_Oy_FLAG /Oy- SANITIZER_COMMON_CFLAGS)
246+
append_list_if(COMPILER_RT_HAS_GS_FLAG /GS- SANITIZER_COMMON_CFLAGS)
247+
endif()
248+
249+
append_list_if(COMPILER_RT_DEBUG -DSANITIZER_DEBUG=1 SANITIZER_COMMON_CFLAGS)
250+
251+
# Build with optimization, unless we're in debug mode. If we're using MSVC,
252+
# always respect the optimization flags set by CMAKE_BUILD_TYPE instead.
253+
if(NOT COMPILER_RT_DEBUG AND NOT MSVC)
254+
list(APPEND SANITIZER_COMMON_CFLAGS -O3)
255+
endif()
256+
257+
# Determine if we should restrict stack frame sizes.
258+
# Stack frames on PowerPC and Mips and in debug biuld can be much larger than
259+
# anticipated.
260+
# FIXME: Fix all sanitizers and add -Wframe-larger-than to
261+
# SANITIZER_COMMON_FLAGS
262+
if(COMPILER_RT_HAS_WFRAME_LARGER_THAN_FLAG AND NOT COMPILER_RT_DEBUG
263+
AND NOT ${COMPILER_RT_DEFAULT_TARGET_ARCH} MATCHES "powerpc|mips")
264+
set(SANITIZER_LIMIT_FRAME_SIZE TRUE)
265+
else()
266+
set(SANITIZER_LIMIT_FRAME_SIZE FALSE)
267+
endif()
268+
269+
# Build sanitizer runtimes with debug info.
270+
if(COMPILER_RT_HAS_GLINE_TABLES_ONLY_FLAG AND NOT COMPILER_RT_DEBUG)
271+
list(APPEND SANITIZER_COMMON_CFLAGS -gline-tables-only)
272+
elseif(COMPILER_RT_HAS_G_FLAG)
273+
list(APPEND SANITIZER_COMMON_CFLAGS -g)
274+
elseif(COMPILER_RT_HAS_Zi_FLAG)
275+
list(APPEND SANITIZER_COMMON_CFLAGS /Zi)
276+
endif()
277+
278+
# Turn off several warnings.
279+
append_list_if(COMPILER_RT_HAS_WGNU_FLAG -Wno-gnu SANITIZER_COMMON_CFLAGS)
280+
append_list_if(COMPILER_RT_HAS_WVARIADIC_MACROS_FLAG -Wno-variadic-macros SANITIZER_COMMON_CFLAGS)
281+
append_list_if(COMPILER_RT_HAS_WC99_EXTENSIONS_FLAG -Wno-c99-extensions SANITIZER_COMMON_CFLAGS)
282+
append_list_if(COMPILER_RT_HAS_WNON_VIRTUAL_DTOR_FLAG -Wno-non-virtual-dtor SANITIZER_COMMON_CFLAGS)
283+
append_list_if(COMPILER_RT_HAS_WD4146_FLAG /wd4146 SANITIZER_COMMON_CFLAGS)
284+
append_list_if(COMPILER_RT_HAS_WD4291_FLAG /wd4291 SANITIZER_COMMON_CFLAGS)
285+
append_list_if(COMPILER_RT_HAS_WD4391_FLAG /wd4391 SANITIZER_COMMON_CFLAGS)
286+
append_list_if(COMPILER_RT_HAS_WD4722_FLAG /wd4722 SANITIZER_COMMON_CFLAGS)
287+
append_list_if(COMPILER_RT_HAS_WD4800_FLAG /wd4800 SANITIZER_COMMON_CFLAGS)
288+
289+
if(APPLE AND SANITIZER_MIN_OSX_VERSION VERSION_LESS "10.9")
290+
# Mac OS X prior to 10.9 had problems with exporting symbols from
291+
# libc++/libc++abi.
292+
set(SANITIZER_CAN_USE_CXXABI FALSE)
293+
else()
294+
set(SANITIZER_CAN_USE_CXXABI TRUE)
295+
endif()
296+
pythonize_bool(SANITIZER_CAN_USE_CXXABI)
297+
298+
add_subdirectory(include)
299+
300+
set(COMPILER_RT_LIBCXX_PATH ${LLVM_MAIN_SRC_DIR}/projects/libcxx)
301+
if(EXISTS ${COMPILER_RT_LIBCXX_PATH}/)
302+
set(COMPILER_RT_HAS_LIBCXX_SOURCES TRUE)
303+
else()
304+
set(COMPILER_RT_HAS_LIBCXX_SOURCES FALSE)
305+
endif()
306+
307+
set(COMPILER_RT_LLD_PATH ${LLVM_MAIN_SRC_DIR}/tools/lld)
308+
if(EXISTS ${COMPILER_RT_LLD_PATH}/)
309+
set(COMPILER_RT_HAS_LLD_SOURCES TRUE)
310+
else()
311+
set(COMPILER_RT_HAS_LLD_SOURCES FALSE)
312+
endif()
313+
pythonize_bool(COMPILER_RT_HAS_LLD_SOURCES)
314+
315+
add_subdirectory(lib)
316+
317+
if(COMPILER_RT_INCLUDE_TESTS)
318+
add_subdirectory(unittests)
319+
add_subdirectory(test)
320+
endif()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
This file is a list of the people responsible for ensuring that patches for a
2+
particular part of compiler-rt are reviewed, either by themself or by
3+
someone else. They are also the gatekeepers for their part of compiler-rt, with
4+
the final word on what goes in or not.
5+
6+
The list is sorted by surname and formatted to allow easy grepping and
7+
beautification by scripts. The fields are: name (N), email (E), web-address
8+
(W), PGP key ID and fingerprint (P), description (D), and snail-mail address
9+
(S).
10+
11+
N: Peter Collingbourne
12+
13+
D: DataFlowSanitizer
14+
15+
N: Daniel Dunbar
16+
17+
D: Makefile build
18+
19+
N: Timur Iskhodzhanov
20+
21+
D: AddressSanitizer for Windows
22+
23+
N: Howard Hinnant
24+
25+
D: builtins library
26+
27+
N: Sergey Matveev
28+
29+
D: LeakSanitizer
30+
31+
N: Alexander Potapenko
32+
33+
D: MacOS/iOS port of sanitizers
34+
35+
N: Alexey Samsonov
36+
37+
D: CMake build, test suite
38+
39+
N: Kostya Serebryany
40+
41+
D: AddressSanitizer, sanitizer_common, porting sanitizers to another platforms
42+
43+
N: Richard Smith
44+
45+
D: UndefinedBehaviorSanitizer
46+
47+
N: Evgeniy Stepanov
48+
49+
D: MemorySanitizer, Android port of sanitizers
50+
51+
N: Dmitry Vyukov
52+
53+
D: ThreadSanitizer
54+
55+
N: Bill Wendling
56+
57+
D: Profile runtime library

0 commit comments

Comments
 (0)