Mercurial > vanilla
annotate lib/compiler-rt/D28791.diff @ 579:40e182c90640
compression/gzip: rename from lib/gzip
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 08 Jul 2019 20:23:00 +0200 |
parents | 819d906b465d |
children |
rev | line source |
---|---|
350
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 Index: compiler-rt/CMakeLists.txt |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 =================================================================== |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 --- compiler-rt/CMakeLists.txt |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 +++ compiler-rt/CMakeLists.txt |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 @@ -29,6 +29,8 @@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 option(COMPILER_RT_BUILD_BUILTINS "Build builtins" ON) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 mark_as_advanced(COMPILER_RT_BUILD_BUILTINS) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 +option(COMPILER_RT_BUILD_CRT "Build crtbegin.o/crtend.o" ON) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 +mark_as_advanced(COMPILER_RT_BUILD_CRT) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 option(COMPILER_RT_BUILD_SANITIZERS "Build sanitizers" ON) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 mark_as_advanced(COMPILER_RT_BUILD_SANITIZERS) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 option(COMPILER_RT_BUILD_XRAY "Build xray" ON) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 Index: compiler-rt/cmake/Modules/AddCompilerRT.cmake |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 =================================================================== |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 --- compiler-rt/cmake/Modules/AddCompilerRT.cmake |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 +++ compiler-rt/cmake/Modules/AddCompilerRT.cmake |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 @@ -132,7 +132,7 @@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 # Adds static or shared runtime for a list of architectures and operating |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 # systems and puts it in the proper directory in the build and install trees. |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 # add_compiler_rt_runtime(<name> |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 -# {STATIC|SHARED} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 +# {OBJECT|STATIC|SHARED} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 # ARCHS <architectures> |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 # OS <os list> |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 # SOURCES <source files> |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 @@ -144,8 +144,8 @@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 # PARENT_TARGET <convenience parent target> |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 # ADDITIONAL_HEADERS <header files>) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 function(add_compiler_rt_runtime name type) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 - if(NOT type MATCHES "^(STATIC|SHARED)$") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 - message(FATAL_ERROR "type argument must be STATIC or SHARED") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 + if(NOT type MATCHES "^(OBJECT|STATIC|SHARED)$") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 + message(FATAL_ERROR "type argument must be OBJECT, STATIC or SHARED") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 return() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 endif() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 cmake_parse_arguments(LIB |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 @@ -204,7 +204,10 @@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 message(FATAL_ERROR "Architecture ${arch} can't be targeted") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 return() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 endif() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 - if(type STREQUAL "STATIC") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 + if(type STREQUAL "OBJECT") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 + set(libname "${name}-${arch}") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 + set(output_name_${libname} ${libname}${COMPILER_RT_OS_SUFFIX}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 + elseif(type STREQUAL "STATIC") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 set(libname "${name}-${arch}") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 set_output_name(output_name_${libname} ${name} ${arch}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 else() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 @@ -270,12 +273,34 @@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 set(COMPONENT_OPTION COMPONENT ${libname}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 endif() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 - add_library(${libname} ${type} ${sources_${libname}}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 - set_target_compile_flags(${libname} ${extra_cflags_${libname}}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 - set_target_link_flags(${libname} ${extra_link_flags_${libname}}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 - set_property(TARGET ${libname} APPEND PROPERTY |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 - COMPILE_DEFINITIONS ${LIB_DEFS}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 - set_target_output_directories(${libname} ${output_dir_${libname}}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 + if(type STREQUAL "OBJECT") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 + string(TOUPPER ${CMAKE_BUILD_TYPE} config) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 + get_property(cflags SOURCE ${sources_${libname}} PROPERTY COMPILE_FLAGS) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 + separate_arguments(cflags) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 + add_custom_command( |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 + OUTPUT ${output_dir_${libname}}/${libname}.o |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 + COMMAND ${CMAKE_C_COMPILER} ${sources_${libname}} ${cflags} ${extra_cflags_${libname}} -c -o ${output_dir_${libname}}/${libname}.o |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 + DEPENDS ${sources_${libname}} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 + COMMENT "Building C object ${libname}.o") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 + add_custom_target(${libname} DEPENDS ${output_dir_${libname}}/${libname}.o) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 + install(FILES ${output_dir_${libname}}/${libname}.o |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 + DESTINATION ${install_dir_${libname}} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 + ${COMPONENT_OPTION}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 + else() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 + add_library(${libname} ${type} ${sources_${libname}}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 + set_target_compile_flags(${libname} ${extra_cflags_${libname}}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 + set_target_link_flags(${libname} ${extra_link_flags_${libname}}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 + set_property(TARGET ${libname} APPEND PROPERTY |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 + COMPILE_DEFINITIONS ${LIB_DEFS}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 + set_target_output_directories(${libname} ${output_dir_${libname}}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 + install(TARGETS ${libname} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 + ARCHIVE DESTINATION ${install_dir_${libname}} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 + ${COMPONENT_OPTION} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 + LIBRARY DESTINATION ${install_dir_${libname}} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 + ${COMPONENT_OPTION} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 + RUNTIME DESTINATION ${install_dir_${libname}} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 + ${COMPONENT_OPTION}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 + endif() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 set_target_properties(${libname} PROPERTIES |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 OUTPUT_NAME ${output_name_${libname}}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 set_target_properties(${libname} PROPERTIES FOLDER "Compiler-RT Runtime") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 @@ -299,13 +324,6 @@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 ) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 endif() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 endif() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 - install(TARGETS ${libname} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 - ARCHIVE DESTINATION ${install_dir_${libname}} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 - ${COMPONENT_OPTION} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 - LIBRARY DESTINATION ${install_dir_${libname}} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 - ${COMPONENT_OPTION} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 - RUNTIME DESTINATION ${install_dir_${libname}} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 - ${COMPONENT_OPTION}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 # We only want to generate per-library install targets if you aren't using |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 # an IDE because the extra targets get cluttered in IDEs. |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 Index: compiler-rt/cmake/config-ix.cmake |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
106 =================================================================== |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
107 --- compiler-rt/cmake/config-ix.cmake |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
108 +++ compiler-rt/cmake/config-ix.cmake |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
109 @@ -227,6 +227,7 @@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 ${ARM32} ${ARM64} ${MIPS32} ${MIPS64} ${S390X}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
111 set(ALL_ASAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 ${MIPS32} ${MIPS64} ${PPC64} ${S390X}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
113 +set(ALL_CRT_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 set(ALL_DFSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
115 set(ALL_FUZZER_SUPPORTED_ARCH ${X86_64} ${ARM64}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
116 |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 @@ -474,6 +475,7 @@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 SANITIZER_COMMON_SUPPORTED_ARCH) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
119 |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
120 else() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
121 + filter_available_targets(CRT_SUPPORTED_ARCH ${ALL_CRT_SUPPORTED_ARCH}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 # Architectures supported by compiler-rt libraries. |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
123 filter_available_targets(SANITIZER_COMMON_SUPPORTED_ARCH |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
124 ${ALL_SANITIZER_COMMON_SUPPORTED_ARCH}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
125 @@ -563,6 +565,12 @@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
126 |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
127 # TODO: Add builtins support. |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
128 |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
129 +if (CRT_SUPPORTED_ARCH AND OS_NAME MATCHES "Linux") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
130 + set(COMPILER_RT_HAS_CRT TRUE) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
131 +else() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
132 + set(COMPILER_RT_HAS_CRT FALSE) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
133 +endif() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
134 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
135 if (COMPILER_RT_HAS_SANITIZER_COMMON AND DFSAN_SUPPORTED_ARCH AND |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
136 OS_NAME MATCHES "Linux") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
137 set(COMPILER_RT_HAS_DFSAN TRUE) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
138 Index: compiler-rt/lib/CMakeLists.txt |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
139 =================================================================== |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
140 --- compiler-rt/lib/CMakeLists.txt |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
141 +++ compiler-rt/lib/CMakeLists.txt |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
142 @@ -17,6 +17,10 @@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
143 add_subdirectory(builtins) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
144 endif() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
145 |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
146 +if(COMPILER_RT_BUILD_CRT) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
147 + add_subdirectory(crt) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
148 +endif() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
149 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
150 function(compiler_rt_build_runtime runtime) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
151 string(TOUPPER ${runtime} runtime_uppercase) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
152 if(COMPILER_RT_HAS_${runtime_uppercase}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
153 Index: compiler-rt/lib/crt/CMakeLists.txt |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
154 =================================================================== |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
155 --- /dev/null |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
156 +++ compiler-rt/lib/crt/CMakeLists.txt |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
157 @@ -0,0 +1,102 @@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
158 +add_compiler_rt_component(crt) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
159 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
160 +function(check_cxx_section_exists section output) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
161 + cmake_parse_arguments(ARG "" "" "SOURCE;FLAGS" ${ARGN}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
162 + if(NOT ARG_SOURCE) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
163 + set(ARG_SOURCE "int main() { return 0; }\n") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
164 + endif() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
165 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
166 + string(RANDOM TARGET_NAME) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
167 + set(TARGET_NAME "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/cmTC_${TARGET_NAME}.dir") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
168 + file(MAKE_DIRECTORY ${TARGET_NAME}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
169 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
170 + file(WRITE "${TARGET_NAME}/CheckSectionExists.c" "${ARG_SOURCE}\n") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
171 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
172 + string(REGEX MATCHALL "<[A-Za-z0-9_]*>" substitutions |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
173 + ${CMAKE_C_COMPILE_OBJECT}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
174 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
175 + set(try_compile_flags "${ARG_FLAGS}") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
176 + if(CMAKE_C_COMPILER_ID MATCHES Clang AND CMAKE_C_COMPILER_TARGET) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
177 + list(APPEND try_compile_flags "-target ${CMAKE_C_COMPILER_TARGET}") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
178 + endif() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
179 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
180 + string(REPLACE ";" " " extra_flags "${try_compile_flags}") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
181 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
182 + set(test_compile_command "${CMAKE_C_COMPILE_OBJECT}") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
183 + foreach(substitution ${substitutions}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
184 + if(substitution STREQUAL "<CMAKE_C_COMPILER>") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
185 + string(REPLACE "<CMAKE_C_COMPILER>" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
186 + "${CMAKE_C_COMPILER}" test_compile_command ${test_compile_command}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
187 + elseif(substitution STREQUAL "<OBJECT>") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
188 + string(REPLACE "<OBJECT>" "${TARGET_NAME}/CheckSectionExists.o" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
189 + test_compile_command ${test_compile_command}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
190 + elseif(substitution STREQUAL "<SOURCE>") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
191 + string(REPLACE "<SOURCE>" "${TARGET_NAME}/CheckSectionExists.c" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
192 + test_compile_command ${test_compile_command}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
193 + elseif(substitution STREQUAL "<FLAGS>") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
194 + string(REPLACE "<FLAGS>" "${CMAKE_C_FLAGS} ${extra_flags}" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
195 + test_compile_command ${test_compile_command}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
196 + else() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
197 + string(REPLACE "${substitution}" "" test_compile_command |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
198 + ${test_compile_command}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
199 + endif() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
200 + endforeach() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
201 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
202 + string(REPLACE " " ";" test_compile_command "${test_compile_command}") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
203 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
204 + execute_process( |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
205 + COMMAND ${test_compile_command} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
206 + RESULT_VARIABLE TEST_RESULT |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
207 + OUTPUT_VARIABLE TEST_OUTPUT |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
208 + ERROR_VARIABLE TEST_ERROR |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
209 + ) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
210 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
211 + execute_process( |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
212 + COMMAND ${CMAKE_OBJDUMP} -h "${TARGET_NAME}/CheckSectionExists.o" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
213 + RESULT_VARIABLE CHECK_RESULT |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
214 + OUTPUT_VARIABLE CHECK_OUTPUT |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
215 + ERROR_VARIABLE CHECK_ERROR |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
216 + ) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
217 + string(FIND "${CHECK_OUTPUT}" "${section}" SECTION_FOUND) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
218 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
219 + if(NOT SECTION_FOUND EQUAL -1) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
220 + set(${output} TRUE PARENT_SCOPE) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
221 + else() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
222 + set(${output} FALSE PARENT_SCOPE) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
223 + endif() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
224 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
225 + file(REMOVE_RECURSE ${TARGET_NAME}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
226 +endfunction() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
227 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
228 +check_cxx_section_exists(".init_array" COMPILER_RT_HAS_INITFINI_ARRAY |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
229 + SOURCE "__attribute__((constructor)) void f() {}\nint main() { return 0; }\n") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
230 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
231 +append_list_if(COMPILER_RT_HAS_INITFINI_ARRAY -DCRT_HAS_INITFINI_ARRAY CRT_CFLAGS) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
232 +append_list_if(COMPILER_RT_HAS_FPIC_FLAG -fPIC CRT_CFLAGS) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
233 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
234 +foreach(arch ${CRT_SUPPORTED_ARCH}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
235 + add_compiler_rt_runtime(clang_rt.crtbegin |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
236 + OBJECT |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
237 + ARCHS ${arch} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
238 + SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/crtbegin.c |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
239 + CFLAGS ${CRT_CFLAGS} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
240 + PARENT_TARGET crt) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
241 + add_compiler_rt_runtime(clang_rt.crtbegin_shared |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
242 + OBJECT |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
243 + ARCHS ${arch} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
244 + SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/crtbegin.c |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
245 + CFLAGS ${CRT_CFLAGS} -DCRT_SHARED |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
246 + PARENT_TARGET crt) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
247 + add_compiler_rt_runtime(clang_rt.crtend |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
248 + OBJECT |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
249 + ARCHS ${arch} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
250 + SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/crtend.c |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
251 + CFLAGS ${CRT_CFLAGS} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
252 + PARENT_TARGET crt) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
253 + add_compiler_rt_runtime(clang_rt.crtend_shared |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
254 + OBJECT |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
255 + ARCHS ${arch} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
256 + SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/crtend.c |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
257 + CFLAGS ${CRT_CFLAGS} -DCRT_SHARED |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
258 + PARENT_TARGET crt) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
259 +endforeach() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
260 Index: compiler-rt/lib/crt/crtbegin.c |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
261 =================================================================== |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
262 --- /dev/null |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
263 +++ compiler-rt/lib/crt/crtbegin.c |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
264 @@ -0,0 +1,108 @@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
265 +/* ===-- crtbegin.c - Start of constructors and destructors ----------------=== |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
266 + * |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
267 + * The LLVM Compiler Infrastructure |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
268 + * |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
269 + * This file is dual licensed under the MIT and the University of Illinois Open |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
270 + * Source Licenses. See LICENSE.TXT for details. |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
271 + * |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
272 + * ===----------------------------------------------------------------------=== |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
273 + */ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
274 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
275 +#include <stddef.h> |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
276 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
277 +__attribute__((visibility("hidden"))) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
278 +#ifdef CRT_SHARED |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
279 +void *__dso_handle = &__dso_handle; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
280 +#else |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
281 +void *__dso_handle = (void *)0; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
282 +#endif |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
283 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
284 +static long __EH_FRAME_LIST__[] |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
285 + __attribute__((section(".eh_frame"), aligned(sizeof(void *)))) = {}; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
286 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
287 +extern void __register_frame_info(const void *, void *) __attribute__((weak)); |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
288 +extern void *__deregister_frame_info(const void *) __attribute__((weak)); |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
289 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
290 +#ifndef CRT_HAS_INITFINI_ARRAY |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
291 +typedef void (*fp)(void); |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
292 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
293 +static fp __CTOR_LIST__[] |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
294 + __attribute__((section(".ctors"), aligned(sizeof(fp)), used)) = {(fp)-1}; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
295 +extern fp __CTOR_LIST_END__[]; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
296 +#endif |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
297 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
298 +#ifdef CRT_SHARED |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
299 +extern void __cxa_finalize(void *) __attribute__((weak)); |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
300 +#endif |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
301 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
302 +static void __attribute__((used)) __do_init() { |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
303 + static _Bool __initialized; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
304 + if (__builtin_expect(__initialized, 0)) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
305 + return; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
306 + __initialized = 1; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
307 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
308 + static struct { void *p[8]; } __object; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
309 + if (__register_frame_info) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
310 + __register_frame_info(__EH_FRAME_LIST__, &__object); |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
311 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
312 +#ifndef CRT_HAS_INITFINI_ARRAY |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
313 + const size_t n = __CTOR_LIST_END__ - __CTOR_LIST__ - 1; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
314 + for (size_t i = n; i >= 1; i--) __CTOR_LIST__[i](); |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
315 +#endif |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
316 +} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
317 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
318 +#ifdef CRT_HAS_INITFINI_ARRAY |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
319 +__attribute__((section(".init_array"), |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
320 + used)) static void (*__init)(void) = __do_init; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
321 +#else // CRT_HAS_INITFINI_ARRAY |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
322 +#if defined(__i386__) || defined(__x86_64__) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
323 +asm(".pushsection .init,\"ax\",@progbits\n\t" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
324 + "call " __USER_LABEL_PREFIX__ "__do_init\n\t" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
325 + ".popsection"); |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
326 +#elif defined(__arm__) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
327 +asm(".pushsection .init,\"ax\",%progbits\n\t" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
328 + "bl " __USER_LABEL_PREFIX__ "__do_init\n\t" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
329 + ".popsection"); |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
330 +#endif // CRT_HAS_INITFINI_ARRAY |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
331 +#endif |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
332 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
333 +#ifndef CRT_HAS_INITFINI_ARRAY |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
334 +static fp __DTOR_LIST__[] |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
335 + __attribute__((section(".dtors"), aligned(sizeof(fp)), used)) = {(fp)-1}; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
336 +extern fp __DTOR_LIST_END__[]; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
337 +#endif |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
338 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
339 +static void __attribute__((used)) __do_fini() { |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
340 + static _Bool __finalized; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
341 + if (__builtin_expect(__finalized, 0)) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
342 + return; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
343 + __finalized = 1; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
344 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
345 +#ifdef CRT_SHARED |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
346 + if (__cxa_finalize) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
347 + __cxa_finalize(__dso_handle); |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
348 +#endif |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
349 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
350 +#ifndef CRT_HAS_INITFINI_ARRAY |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
351 + if (__deregister_frame_info) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
352 + __deregister_frame_info(__EH_FRAME_LIST__); |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
353 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
354 + const size_t n = __DTOR_LIST_END__ - __DTOR_LIST__ - 1; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
355 + for (size_t i = 1; i < n; i++) __DTOR_LIST__[i](); |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
356 +#endif |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
357 +} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
358 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
359 +#ifdef CRT_HAS_INITFINI_ARRAY |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
360 +__attribute__((section(".fini_array"), |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
361 + used)) static void (*__fini)(void) = __do_fini; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
362 +#else // CRT_HAS_INITFINI_ARRAY |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
363 +#if defined(__i386__) || defined(__x86_64__) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
364 +asm(".pushsection .fini,\"ax\",@progbits\n\t" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
365 + "call " __USER_LABEL_PREFIX__ "__do_fini\n\t" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
366 + ".popsection"); |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
367 +#elif defined(__arm__) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
368 +asm(".pushsection .fini,\"ax\",%progbits\n\t" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
369 + "bl " __USER_LABEL_PREFIX__ "__do_fini\n\t" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
370 + ".popsection"); |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
371 +#endif |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
372 +#endif // CRT_HAS_INIT_FINI_ARRAY |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
373 Index: compiler-rt/lib/crt/crtend.c |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
374 =================================================================== |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
375 --- /dev/null |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
376 +++ compiler-rt/lib/crt/crtend.c |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
377 @@ -0,0 +1,24 @@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
378 +/* ===-- crtend.c - End of constructors and destructors --------------------=== |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
379 + * |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
380 + * The LLVM Compiler Infrastructure |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
381 + * |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
382 + * This file is dual licensed under the MIT and the University of Illinois Open |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
383 + * Source Licenses. See LICENSE.TXT for details. |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
384 + * |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
385 + * ===----------------------------------------------------------------------=== |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
386 + */ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
387 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
388 +#include <stdint.h> |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
389 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
390 +// Put 4-byte zero which is the length field in FDE at the end as a terminator. |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
391 +const int32_t __EH_FRAME_LIST_END__[] |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
392 + __attribute__((section(".eh_frame"), aligned(sizeof(int32_t)), |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
393 + visibility("hidden"), used)) = {0}; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
394 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
395 +#ifndef CRT_HAS_INITFINI_ARRAY |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
396 +typedef void (*fp)(void); |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
397 +fp __CTOR_LIST_END__[] |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
398 + __attribute__((section(".ctors"), visibility("hidden"), used)) = {0}; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
399 +fp __DTOR_LIST_END__[] |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
400 + __attribute__((section(".dtors"), visibility("hidden"), used)) = {0}; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
401 +#endif |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
402 Index: compiler-rt/test/CMakeLists.txt |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
403 =================================================================== |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
404 --- compiler-rt/test/CMakeLists.txt |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
405 +++ compiler-rt/test/CMakeLists.txt |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
406 @@ -73,6 +73,9 @@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
407 if(COMPILER_RT_BUILD_XRAY) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
408 compiler_rt_test_runtime(xray) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
409 endif() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
410 + if(COMPILER_RT_HAS_CRT) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
411 + add_subdirectory(crt) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
412 + endif() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
413 # ShadowCallStack does not yet provide a runtime with compiler-rt, the tests |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
414 # include their own minimal runtime |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
415 add_subdirectory(shadowcallstack) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
416 Index: compiler-rt/test/crt/CMakeLists.txt |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
417 =================================================================== |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
418 --- /dev/null |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
419 +++ compiler-rt/test/crt/CMakeLists.txt |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
420 @@ -0,0 +1,31 @@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
421 +set(CRT_LIT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
422 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
423 +set(CRT_TESTSUITES) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
424 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
425 +set(CRT_TEST_DEPS "") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
426 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
427 +if(NOT COMPILER_RT_STANDALONE_BUILD AND COMPILER_RT_BUILD_CRT AND |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
428 + COMPILER_RT_HAS_CRT) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
429 + list(APPEND CRT_TEST_DEPS crt) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
430 +endif() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
431 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
432 +set(CRT_TEST_ARCH ${CRT_SUPPORTED_ARCH}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
433 +if (COMPILER_RT_BUILD_CRT AND COMPILER_RT_HAS_CRT) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
434 + foreach(arch ${CRT_TEST_ARCH}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
435 + set(CRT_TEST_TARGET_ARCH ${arch}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
436 + string(TOLOWER "-${arch}-${OS_NAME}" CRT_TEST_CONFIG_SUFFIX) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
437 + get_test_cc_for_arch(${arch} CRT_TEST_TARGET_CC CRT_TEST_TARGET_CFLAGS) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
438 + string(TOUPPER ${arch} ARCH_UPPER_CASE) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
439 + set(CONFIG_NAME ${ARCH_UPPER_CASE}${OS_NAME}Config) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
440 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
441 + configure_lit_site_cfg( |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
442 + ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
443 + ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
444 + list(APPEND CRT_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
445 + endforeach() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
446 +endif() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
447 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
448 +add_lit_testsuite(check-crt "Running the CRT tests" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
449 + ${CRT_TESTSUITES} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
450 + DEPENDS ${CRT_TEST_DEPS}) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
451 +set_target_properties(check-crt PROPERTIES FOLDER "Compiler-RT Misc") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
452 Index: compiler-rt/test/crt/dso_handle.cpp |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
453 =================================================================== |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
454 --- /dev/null |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
455 +++ compiler-rt/test/crt/dso_handle.cpp |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
456 @@ -0,0 +1,33 @@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
457 +// RUN: %clangxx -g -DCRT_SHARED -c %s -fPIC -o %tshared.o |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
458 +// RUN: %clangxx -g -c %s -fPIC -o %t.o |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
459 +// RUN: %clangxx -g -shared -o %t.so -nostdlib %crti %shared_crtbegin %tshared.o %libstdcxx -lc -lm -lgcc_s %shared_crtend %crtn |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
460 +// RUN: %clangxx -g -o %t -nostdlib %crt1 %crti %crtbegin %t.o %libstdcxx -lc -lm %libgcc %t.so %crtend %crtn |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
461 +// RUN: %run %t 2>&1 | FileCheck %s |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
462 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
463 +#include <stdio.h> |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
464 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
465 +// CHECK: 1 |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
466 +// CHECK-NEXT: ~A() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
467 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
468 +#ifdef CRT_SHARED |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
469 +bool G; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
470 +void C() { |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
471 + printf("%d\n", G); |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
472 +} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
473 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
474 +struct A { |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
475 + A() { G = true; } |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
476 + ~A() { |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
477 + printf("~A()\n"); |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
478 + } |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
479 +}; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
480 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
481 +A a; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
482 +#else |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
483 +void C(); |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
484 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
485 +int main() { |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
486 + C(); |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
487 + return 0; |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
488 +} |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
489 +#endif |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
490 Index: compiler-rt/test/crt/lit.cfg |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
491 =================================================================== |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
492 --- /dev/null |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
493 +++ compiler-rt/test/crt/lit.cfg |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
494 @@ -0,0 +1,80 @@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
495 +# -*- Python -*- |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
496 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
497 +import os |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
498 +import subprocess |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
499 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
500 +# Setup config name. |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
501 +config.name = 'CRT' + config.name_suffix |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
502 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
503 +# Setup source root. |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
504 +config.test_source_root = os.path.dirname(__file__) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
505 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
506 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
507 +def get_library_path(file): |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
508 + cmd = subprocess.Popen([config.clang.strip(), |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
509 + config.target_cflags.strip(), |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
510 + '-print-file-name=%s' % file], |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
511 + stdout=subprocess.PIPE, |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
512 + env=config.environment) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
513 + if not cmd.stdout: |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
514 + lit_config.fatal("Couldn't find the library path for '%s'" % file) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
515 + dir = cmd.stdout.read().strip() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
516 + if sys.platform in ['win32'] and execute_external: |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
517 + # Don't pass dosish path separator to msys bash.exe. |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
518 + dir = dir.replace('\\', '/') |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
519 + # Ensure the result is an ascii string, across Python2.5+ - Python3. |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
520 + return str(dir.decode('ascii')) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
521 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
522 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
523 +def get_libgcc_file_name(): |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
524 + cmd = subprocess.Popen([config.clang.strip(), |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
525 + config.target_cflags.strip(), |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
526 + '-print-libgcc-file-name'], |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
527 + stdout=subprocess.PIPE, |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
528 + env=config.environment) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
529 + if not cmd.stdout: |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
530 + lit_config.fatal("Couldn't find the library path for '%s'" % file) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
531 + dir = cmd.stdout.read().strip() |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
532 + if sys.platform in ['win32'] and execute_external: |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
533 + # Don't pass dosish path separator to msys bash.exe. |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
534 + dir = dir.replace('\\', '/') |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
535 + # Ensure the result is an ascii string, across Python2.5+ - Python3. |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
536 + return str(dir.decode('ascii')) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
537 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
538 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
539 +def build_invocation(compile_flags): |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
540 + return ' ' + ' '.join([config.clang] + compile_flags) + ' ' |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
541 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
542 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
543 +# Setup substitutions. |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
544 +config.substitutions.append( |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
545 + ('%clang ', build_invocation([config.target_cflags]))) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
546 +config.substitutions.append( |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
547 + ('%clangxx ', |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
548 + build_invocation(config.cxx_mode_flags + [config.target_cflags]))) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
549 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
550 +base_lib = os.path.join( |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
551 + config.compiler_rt_libdir, "clang_rt.%%s-%s.o" % config.target_arch) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
552 +config.substitutions.append(('%crtbegin', base_lib % "crtbegin")) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
553 +config.substitutions.append(('%shared_crtbegin', base_lib % "crtbegin_shared")) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
554 +config.substitutions.append(('%crtend', base_lib % "crtend")) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
555 +config.substitutions.append(('%shared_crtend', base_lib % "crtend_shared")) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
556 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
557 +config.substitutions.append( |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
558 + ('%crt1', get_library_path('crt1.o'))) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
559 +config.substitutions.append( |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
560 + ('%crti', get_library_path('crti.o'))) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
561 +config.substitutions.append( |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
562 + ('%crtn', get_library_path('crtn.o'))) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
563 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
564 +config.substitutions.append( |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
565 + ('%libgcc', get_libgcc_file_name())) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
566 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
567 +config.substitutions.append( |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
568 + ('%libstdcxx', '-l' + config.sanitizer_cxx_lib.lstrip('lib'))) |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
569 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
570 +# Default test suffixes. |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
571 +config.suffixes = ['.c', '.cc', '.cpp'] |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
572 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
573 +if config.host_os not in ['Linux']: |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
574 + config.unsupported = True |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
575 Index: compiler-rt/test/crt/lit.site.cfg.in |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
576 =================================================================== |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
577 --- /dev/null |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
578 +++ compiler-rt/test/crt/lit.site.cfg.in |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
579 @@ -0,0 +1,14 @@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
580 +@LIT_SITE_CFG_IN_HEADER@ |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
581 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
582 +# Tool-specific config options. |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
583 +config.name_suffix = "@CRT_TEST_CONFIG_SUFFIX@" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
584 +config.crt_lit_source_dir = "@CRT_LIT_SOURCE_DIR@" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
585 +config.target_cflags = "@CRT_TEST_TARGET_CFLAGS@" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
586 +config.target_arch = "@CRT_TEST_TARGET_ARCH@" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
587 +config.sanitizer_cxx_lib = "@SANITIZER_TEST_CXX_LIBNAME@" |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
588 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
589 +# Load common config for all compiler-rt lit tests |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
590 +lit_config.load_config(config, "@COMPILER_RT_BINARY_DIR@/test/lit.common.configured") |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
591 + |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
592 +# Load tool-specific config that would do the real work. |
819d906b465d
vanilla: create pure LLVM toolchain
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
593 +lit_config.load_config(config, "@CRT_LIT_SOURCE_DIR@/lit.cfg") |