aboutsummaryrefslogtreecommitdiff
path: root/cmake/Modules/SanitizerUtils.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/Modules/SanitizerUtils.cmake')
-rw-r--r--cmake/Modules/SanitizerUtils.cmake31
1 files changed, 28 insertions, 3 deletions
diff --git a/cmake/Modules/SanitizerUtils.cmake b/cmake/Modules/SanitizerUtils.cmake
index 1ebc7030a57b..c040b42122ce 100644
--- a/cmake/Modules/SanitizerUtils.cmake
+++ b/cmake/Modules/SanitizerUtils.cmake
@@ -1,5 +1,3 @@
-include(LLVMParseArguments)
-
set(SANITIZER_GEN_DYNAMIC_LIST
${COMPILER_RT_SOURCE_DIR}/lib/sanitizer_common/scripts/gen_dynamic_list.py)
@@ -13,9 +11,13 @@ set(SANITIZER_LINT_SCRIPT
# add_sanitizer_rt_symbols(<name> <files with extra symbols to export>)
macro(add_sanitizer_rt_symbols name)
set(stamp ${CMAKE_CURRENT_BINARY_DIR}/${name}.syms-stamp)
+ set(extra_args)
+ foreach(arg ${ARGN})
+ list(APPEND extra_args "--extra" ${arg})
+ endforeach()
add_custom_command(OUTPUT ${stamp}
COMMAND ${PYTHON_EXECUTABLE}
- ${SANITIZER_GEN_DYNAMIC_LIST} $<TARGET_FILE:${name}> ${ARGN}
+ ${SANITIZER_GEN_DYNAMIC_LIST} ${extra_args} $<TARGET_FILE:${name}>
> $<TARGET_FILE:${name}>.syms
COMMAND ${CMAKE_COMMAND} -E touch ${stamp}
DEPENDS ${name} ${SANITIZER_GEN_DYNAMIC_LIST} ${ARGN}
@@ -44,6 +46,29 @@ macro(add_sanitizer_rt_symbols name)
endif()
endmacro()
+macro(add_sanitizer_rt_version_list name)
+ set(vers ${CMAKE_CURRENT_BINARY_DIR}/${name}.vers)
+ cmake_parse_arguments(ARG "" "" "LIBS;EXTRA" ${ARGN})
+ set(args)
+ foreach(arg ${ARG_EXTRA})
+ list(APPEND args "--extra" ${arg})
+ endforeach()
+ foreach(arg ${ARG_LIBS})
+ list(APPEND args "$<TARGET_FILE:${arg}>")
+ endforeach()
+ add_custom_command(OUTPUT ${vers}
+ COMMAND ${PYTHON_EXECUTABLE}
+ ${SANITIZER_GEN_DYNAMIC_LIST} --version-list ${args}
+ > ${vers}
+ DEPENDS ${SANITIZER_GEN_DYNAMIC_LIST} ${ARG_EXTRA} ${ARG_LIBS}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMENT "Generating version list for ${name}"
+ VERBATIM)
+
+ add_custom_target(${name}-version-list ALL
+ DEPENDS ${vers})
+endmacro()
+
# Add target to check code style for sanitizer runtimes.
if(UNIX)
add_custom_target(SanitizerLintCheck