@@ -92,45 +92,47 @@ if(APPLE)
92
92
ADDITIONAL_HEADERS ${UBSAN_HEADERS}
93
93
CFLAGS ${UBSAN_CXXFLAGS} )
94
94
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} )
105
103
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 )
119
106
120
- if (NOT APPLE )
121
107
add_compiler_rt_runtime (clang_rt.ubsan
122
- STATIC
108
+ SHARED
123
109
OS ${UBSAN_SUPPORTED_OS}
124
110
ARCHS ${UBSAN_SUPPORTED_ARCH}
125
111
OBJECT_LIBS RTUbsan
126
112
RTUbsan_standalone
127
- RTSanitizerCommonNoHooks
128
- RTSanitizerCommonLibcNoHooks
113
+ RTSanitizerCommon
114
+ RTSanitizerCommonLibc
129
115
RTSanitizerCommonCoverage
130
- RTSanitizerCommonSymbolizerNoHooks
116
+ RTSanitizerCommonSymbolizer
131
117
RTInterception
132
118
LINK_FLAGS ${WEAK_SYMBOL_LINK_FLAGS}
133
119
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 ()
134
136
endif ()
135
137
136
138
else ()
@@ -188,89 +190,91 @@ else()
188
190
DEFS ${UBSAN_COMMON_DEFINITIONS} )
189
191
endif ()
190
192
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
225
203
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
250
208
RTSanitizerCommonLibc
251
209
RTSanitizerCommonCoverage
252
210
RTSanitizerCommonSymbolizer
253
211
RTSanitizerCommonSymbolizerInternal
254
212
RTUbsan
255
- RTUbsan_cxx
256
213
RTUbsan_standalone
257
214
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 ()
275
279
endif ()
276
280
endif ()
0 commit comments