Skip to content

Commit 56ac717

Browse files
vitalybukaaaryanshukla
authored andcommitted
Undo lsan part of llvm#98240 (llvm#98409)
Undo lsan, ubsan from llvm#98240 and 388c55a There are parts which do not check COMPILER_RT_HAS_*.
1 parent 8d54b2d commit 56ac717

File tree

3 files changed

+148
-139
lines changed

3 files changed

+148
-139
lines changed

compiler-rt/lib/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,10 @@ endif()
3838
if(COMPILER_RT_BUILD_SANITIZERS)
3939
if(COMPILER_RT_HAS_SANITIZER_COMMON)
4040
add_subdirectory(stats)
41-
compiler_rt_build_runtime(lsan)
42-
compiler_rt_build_runtime(ubsan)
41+
# Contains RTLSanCommon used even without COMPILER_RT_HAS_LSAN.
42+
add_subdirectory(lsan)
43+
# Contains RTUbsan used even without COMPILER_RT_HAS_UBSAN.
44+
add_subdirectory(lsan)
4345
endif()
4446

4547
foreach(sanitizer ${COMPILER_RT_SANITIZERS_TO_BUILD})

compiler-rt/lib/lsan/CMakeLists.txt

Lines changed: 36 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -36,51 +36,54 @@ set(LSAN_HEADERS
3636

3737
set(LSAN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR})
3838

39+
# Used by asan/hwasan even without COMPILER_RT_HAS_LSAN.
3940
add_compiler_rt_object_libraries(RTLSanCommon
4041
OS ${SANITIZER_COMMON_SUPPORTED_OS}
4142
ARCHS ${LSAN_COMMON_SUPPORTED_ARCH}
4243
SOURCES ${LSAN_COMMON_SOURCES}
4344
ADDITIONAL_HEADERS ${LSAN_HEADERS}
4445
CFLAGS ${LSAN_CFLAGS})
4546

46-
add_compiler_rt_component(lsan)
47-
if(APPLE)
48-
set(LSAN_LINK_LIBS ${SANITIZER_COMMON_LINK_LIBS})
47+
if(COMPILER_RT_HAS_LSAN)
48+
add_compiler_rt_component(lsan)
49+
if(APPLE)
50+
set(LSAN_LINK_LIBS ${SANITIZER_COMMON_LINK_LIBS})
4951

50-
add_weak_symbols("lsan" WEAK_SYMBOL_LINK_FLAGS)
51-
add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS)
52+
add_weak_symbols("lsan" WEAK_SYMBOL_LINK_FLAGS)
53+
add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS)
5254

53-
add_compiler_rt_runtime(clang_rt.lsan
54-
SHARED
55-
OS ${LSAN_SUPPORTED_OS}
56-
ARCHS ${LSAN_SUPPORTED_ARCH}
57-
SOURCES ${LSAN_SOURCES}
58-
ADDITIONAL_HEADERS ${LSAN_HEADERS}
59-
OBJECT_LIBS RTLSanCommon
60-
RTInterception
61-
RTSanitizerCommon
62-
RTSanitizerCommonLibc
63-
RTSanitizerCommonCoverage
64-
RTSanitizerCommonSymbolizer
65-
CFLAGS ${LSAN_CFLAGS}
66-
LINK_FLAGS ${SANITIZER_COMMON_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}
67-
LINK_LIBS ${LSAN_LINK_LIBS}
68-
PARENT_TARGET lsan)
69-
else()
70-
foreach(arch ${LSAN_SUPPORTED_ARCH})
7155
add_compiler_rt_runtime(clang_rt.lsan
72-
STATIC
73-
ARCHS ${arch}
56+
SHARED
57+
OS ${LSAN_SUPPORTED_OS}
58+
ARCHS ${LSAN_SUPPORTED_ARCH}
7459
SOURCES ${LSAN_SOURCES}
75-
$<TARGET_OBJECTS:RTInterception.${arch}>
76-
$<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
77-
$<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>
78-
$<TARGET_OBJECTS:RTSanitizerCommonCoverage.${arch}>
79-
$<TARGET_OBJECTS:RTSanitizerCommonSymbolizer.${arch}>
80-
$<TARGET_OBJECTS:RTSanitizerCommonSymbolizerInternal.${arch}>
81-
$<TARGET_OBJECTS:RTLSanCommon.${arch}>
8260
ADDITIONAL_HEADERS ${LSAN_HEADERS}
61+
OBJECT_LIBS RTLSanCommon
62+
RTInterception
63+
RTSanitizerCommon
64+
RTSanitizerCommonLibc
65+
RTSanitizerCommonCoverage
66+
RTSanitizerCommonSymbolizer
8367
CFLAGS ${LSAN_CFLAGS}
68+
LINK_FLAGS ${SANITIZER_COMMON_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}
69+
LINK_LIBS ${LSAN_LINK_LIBS}
8470
PARENT_TARGET lsan)
85-
endforeach()
71+
else()
72+
foreach(arch ${LSAN_SUPPORTED_ARCH})
73+
add_compiler_rt_runtime(clang_rt.lsan
74+
STATIC
75+
ARCHS ${arch}
76+
SOURCES ${LSAN_SOURCES}
77+
$<TARGET_OBJECTS:RTInterception.${arch}>
78+
$<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
79+
$<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>
80+
$<TARGET_OBJECTS:RTSanitizerCommonCoverage.${arch}>
81+
$<TARGET_OBJECTS:RTSanitizerCommonSymbolizer.${arch}>
82+
$<TARGET_OBJECTS:RTSanitizerCommonSymbolizerInternal.${arch}>
83+
$<TARGET_OBJECTS:RTLSanCommon.${arch}>
84+
ADDITIONAL_HEADERS ${LSAN_HEADERS}
85+
CFLAGS ${LSAN_CFLAGS}
86+
PARENT_TARGET lsan)
87+
endforeach()
88+
endif()
8689
endif()

compiler-rt/lib/ubsan/CMakeLists.txt

Lines changed: 108 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -92,45 +92,47 @@ if(APPLE)
9292
ADDITIONAL_HEADERS ${UBSAN_HEADERS}
9393
CFLAGS ${UBSAN_CXXFLAGS})
9494

95-
# Initializer of standalone UBSan runtime.
96-
add_compiler_rt_object_libraries(RTUbsan_standalone
97-
OS ${UBSAN_SUPPORTED_OS}
98-
ARCHS ${UBSAN_SUPPORTED_ARCH}
99-
SOURCES ${UBSAN_STANDALONE_SOURCES}
100-
ADDITIONAL_HEADERS ${UBSAN_HEADERS}
101-
CFLAGS ${UBSAN_STANDALONE_CFLAGS})
102-
103-
add_weak_symbols("ubsan" WEAK_SYMBOL_LINK_FLAGS)
104-
add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS)
95+
if(COMPILER_RT_HAS_UBSAN)
96+
# Initializer of standalone UBSan runtime.
97+
add_compiler_rt_object_libraries(RTUbsan_standalone
98+
OS ${UBSAN_SUPPORTED_OS}
99+
ARCHS ${UBSAN_SUPPORTED_ARCH}
100+
SOURCES ${UBSAN_STANDALONE_SOURCES}
101+
ADDITIONAL_HEADERS ${UBSAN_HEADERS}
102+
CFLAGS ${UBSAN_STANDALONE_CFLAGS})
105103

106-
add_compiler_rt_runtime(clang_rt.ubsan
107-
SHARED
108-
OS ${UBSAN_SUPPORTED_OS}
109-
ARCHS ${UBSAN_SUPPORTED_ARCH}
110-
OBJECT_LIBS RTUbsan
111-
RTUbsan_standalone
112-
RTSanitizerCommon
113-
RTSanitizerCommonLibc
114-
RTSanitizerCommonCoverage
115-
RTSanitizerCommonSymbolizer
116-
RTInterception
117-
LINK_FLAGS ${WEAK_SYMBOL_LINK_FLAGS}
118-
PARENT_TARGET ubsan)
104+
add_weak_symbols("ubsan" WEAK_SYMBOL_LINK_FLAGS)
105+
add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS)
119106

120-
if (NOT APPLE)
121107
add_compiler_rt_runtime(clang_rt.ubsan
122-
STATIC
108+
SHARED
123109
OS ${UBSAN_SUPPORTED_OS}
124110
ARCHS ${UBSAN_SUPPORTED_ARCH}
125111
OBJECT_LIBS RTUbsan
126112
RTUbsan_standalone
127-
RTSanitizerCommonNoHooks
128-
RTSanitizerCommonLibcNoHooks
113+
RTSanitizerCommon
114+
RTSanitizerCommonLibc
129115
RTSanitizerCommonCoverage
130-
RTSanitizerCommonSymbolizerNoHooks
116+
RTSanitizerCommonSymbolizer
131117
RTInterception
132118
LINK_FLAGS ${WEAK_SYMBOL_LINK_FLAGS}
133119
PARENT_TARGET ubsan)
120+
121+
if (NOT APPLE)
122+
add_compiler_rt_runtime(clang_rt.ubsan
123+
STATIC
124+
OS ${UBSAN_SUPPORTED_OS}
125+
ARCHS ${UBSAN_SUPPORTED_ARCH}
126+
OBJECT_LIBS RTUbsan
127+
RTUbsan_standalone
128+
RTSanitizerCommonNoHooks
129+
RTSanitizerCommonLibcNoHooks
130+
RTSanitizerCommonCoverage
131+
RTSanitizerCommonSymbolizerNoHooks
132+
RTInterception
133+
LINK_FLAGS ${WEAK_SYMBOL_LINK_FLAGS}
134+
PARENT_TARGET ubsan)
135+
endif()
134136
endif()
135137

136138
else()
@@ -188,89 +190,91 @@ else()
188190
DEFS ${UBSAN_COMMON_DEFINITIONS})
189191
endif()
190192

191-
add_compiler_rt_object_libraries(RTUbsan_standalone
192-
ARCHS ${UBSAN_SUPPORTED_ARCH}
193-
SOURCES ${UBSAN_STANDALONE_SOURCES}
194-
ADDITIONAL_HEADERS ${UBSAN_HEADERS}
195-
CFLAGS ${UBSAN_STANDALONE_CFLAGS})
196-
197-
# Standalone UBSan runtimes.
198-
add_compiler_rt_runtime(clang_rt.ubsan_standalone
199-
STATIC
200-
ARCHS ${UBSAN_SUPPORTED_ARCH}
201-
SOURCES
202-
ubsan_init_standalone_preinit.cpp
203-
ADDITIONAL_HEADERS ${UBSAN_HEADERS}
204-
OBJECT_LIBS RTSanitizerCommon
205-
RTSanitizerCommonLibc
206-
RTSanitizerCommonCoverage
207-
RTSanitizerCommonSymbolizer
208-
RTSanitizerCommonSymbolizerInternal
209-
RTUbsan
210-
RTUbsan_standalone
211-
RTInterception
212-
CFLAGS ${UBSAN_CFLAGS}
213-
PARENT_TARGET ubsan)
214-
215-
add_compiler_rt_runtime(clang_rt.ubsan_standalone_cxx
216-
STATIC
217-
ARCHS ${UBSAN_SUPPORTED_ARCH}
218-
OBJECT_LIBS RTUbsan_cxx
219-
CFLAGS ${UBSAN_CXXFLAGS}
220-
PARENT_TARGET ubsan)
221-
222-
if (COMPILER_RT_HAS_VERSION_SCRIPT)
223-
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp "")
224-
add_compiler_rt_object_libraries(RTUbsan_dynamic_version_script_dummy
193+
if(COMPILER_RT_HAS_UBSAN)
194+
add_compiler_rt_object_libraries(RTUbsan_standalone
195+
ARCHS ${UBSAN_SUPPORTED_ARCH}
196+
SOURCES ${UBSAN_STANDALONE_SOURCES}
197+
ADDITIONAL_HEADERS ${UBSAN_HEADERS}
198+
CFLAGS ${UBSAN_STANDALONE_CFLAGS})
199+
200+
# Standalone UBSan runtimes.
201+
add_compiler_rt_runtime(clang_rt.ubsan_standalone
202+
STATIC
225203
ARCHS ${UBSAN_SUPPORTED_ARCH}
226-
SOURCES ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp
227-
CFLAGS ${UBSAN_CFLAGS})
228-
229-
foreach(arch ${UBSAN_SUPPORTED_ARCH})
230-
add_sanitizer_rt_version_list(clang_rt.ubsan_standalone-dynamic-${arch}
231-
LIBS clang_rt.ubsan_standalone-${arch}
232-
clang_rt.ubsan_standalone_cxx-${arch}
233-
EXTRA ubsan.syms.extra)
234-
set(VERSION_SCRIPT_FLAG
235-
-Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/clang_rt.ubsan_standalone-dynamic-${arch}.vers)
236-
# The Solaris 11.4 linker supports a subset of GNU ld version scripts,
237-
# but requires a special option to enable it.
238-
if (COMPILER_RT_HAS_GNU_VERSION_SCRIPT_COMPAT)
239-
list(APPEND VERSION_SCRIPT_FLAG -Wl,-z,gnu-version-script-compat)
240-
endif()
241-
set_property(SOURCE
242-
${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp
243-
APPEND PROPERTY
244-
OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/clang_rt.ubsan_standalone-dynamic-${arch}.vers)
245-
246-
add_compiler_rt_runtime(clang_rt.ubsan_standalone
247-
SHARED
248-
ARCHS ${arch}
249-
OBJECT_LIBS RTSanitizerCommon
204+
SOURCES
205+
ubsan_init_standalone_preinit.cpp
206+
ADDITIONAL_HEADERS ${UBSAN_HEADERS}
207+
OBJECT_LIBS RTSanitizerCommon
250208
RTSanitizerCommonLibc
251209
RTSanitizerCommonCoverage
252210
RTSanitizerCommonSymbolizer
253211
RTSanitizerCommonSymbolizerInternal
254212
RTUbsan
255-
RTUbsan_cxx
256213
RTUbsan_standalone
257214
RTInterception
258-
RTUbsan_dynamic_version_script_dummy
259-
CFLAGS ${UBSAN_CFLAGS}
260-
LINK_FLAGS ${UBSAN_LINK_FLAGS} ${VERSION_SCRIPT_FLAG}
261-
LINK_LIBS ${UBSAN_DYNAMIC_LIBS}
262-
PARENT_TARGET ubsan)
263-
endforeach()
264-
265-
set(ARCHS_FOR_SYMBOLS ${UBSAN_SUPPORTED_ARCH})
266-
list(REMOVE_ITEM ARCHS_FOR_SYMBOLS i386)
267-
add_sanitizer_rt_symbols(clang_rt.ubsan_standalone
268-
ARCHS ${ARCHS_FOR_SYMBOLS}
269-
PARENT_TARGET ubsan
270-
EXTRA ubsan.syms.extra)
271-
add_sanitizer_rt_symbols(clang_rt.ubsan_standalone_cxx
272-
ARCHS ${ARCHS_FOR_SYMBOLS}
273-
PARENT_TARGET ubsan
274-
EXTRA ubsan.syms.extra)
215+
CFLAGS ${UBSAN_CFLAGS}
216+
PARENT_TARGET ubsan)
217+
218+
add_compiler_rt_runtime(clang_rt.ubsan_standalone_cxx
219+
STATIC
220+
ARCHS ${UBSAN_SUPPORTED_ARCH}
221+
OBJECT_LIBS RTUbsan_cxx
222+
CFLAGS ${UBSAN_CXXFLAGS}
223+
PARENT_TARGET ubsan)
224+
225+
if (COMPILER_RT_HAS_VERSION_SCRIPT)
226+
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp "")
227+
add_compiler_rt_object_libraries(RTUbsan_dynamic_version_script_dummy
228+
ARCHS ${UBSAN_SUPPORTED_ARCH}
229+
SOURCES ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp
230+
CFLAGS ${UBSAN_CFLAGS})
231+
232+
foreach(arch ${UBSAN_SUPPORTED_ARCH})
233+
add_sanitizer_rt_version_list(clang_rt.ubsan_standalone-dynamic-${arch}
234+
LIBS clang_rt.ubsan_standalone-${arch}
235+
clang_rt.ubsan_standalone_cxx-${arch}
236+
EXTRA ubsan.syms.extra)
237+
set(VERSION_SCRIPT_FLAG
238+
-Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/clang_rt.ubsan_standalone-dynamic-${arch}.vers)
239+
# The Solaris 11.4 linker supports a subset of GNU ld version scripts,
240+
# but requires a special option to enable it.
241+
if (COMPILER_RT_HAS_GNU_VERSION_SCRIPT_COMPAT)
242+
list(APPEND VERSION_SCRIPT_FLAG -Wl,-z,gnu-version-script-compat)
243+
endif()
244+
set_property(SOURCE
245+
${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp
246+
APPEND PROPERTY
247+
OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/clang_rt.ubsan_standalone-dynamic-${arch}.vers)
248+
249+
add_compiler_rt_runtime(clang_rt.ubsan_standalone
250+
SHARED
251+
ARCHS ${arch}
252+
OBJECT_LIBS RTSanitizerCommon
253+
RTSanitizerCommonLibc
254+
RTSanitizerCommonCoverage
255+
RTSanitizerCommonSymbolizer
256+
RTSanitizerCommonSymbolizerInternal
257+
RTUbsan
258+
RTUbsan_cxx
259+
RTUbsan_standalone
260+
RTInterception
261+
RTUbsan_dynamic_version_script_dummy
262+
CFLAGS ${UBSAN_CFLAGS}
263+
LINK_FLAGS ${UBSAN_LINK_FLAGS} ${VERSION_SCRIPT_FLAG}
264+
LINK_LIBS ${UBSAN_DYNAMIC_LIBS}
265+
PARENT_TARGET ubsan)
266+
endforeach()
267+
268+
set(ARCHS_FOR_SYMBOLS ${UBSAN_SUPPORTED_ARCH})
269+
list(REMOVE_ITEM ARCHS_FOR_SYMBOLS i386)
270+
add_sanitizer_rt_symbols(clang_rt.ubsan_standalone
271+
ARCHS ${ARCHS_FOR_SYMBOLS}
272+
PARENT_TARGET ubsan
273+
EXTRA ubsan.syms.extra)
274+
add_sanitizer_rt_symbols(clang_rt.ubsan_standalone_cxx
275+
ARCHS ${ARCHS_FOR_SYMBOLS}
276+
PARENT_TARGET ubsan
277+
EXTRA ubsan.syms.extra)
278+
endif()
275279
endif()
276280
endif()

0 commit comments

Comments
 (0)