From 89e97d13ec8956582acb863480ae74a57527ba24 Mon Sep 17 00:00:00 2001 From: Jan Van Winkel Date: Thu, 22 Aug 2019 22:03:22 +0200 Subject: [PATCH] cmake: toolchain abstraction for address sanitizer Added toolchain abstraction for address sanitizer Signed-off-by: Jan Van Winkel --- arch/posix/CMakeLists.txt | 4 +--- cmake/compiler/clang/target.cmake | 1 + cmake/compiler/clang/target_sanitizers.cmake | 8 ++++++++ cmake/compiler/gcc/target.cmake | 1 + cmake/compiler/gcc/target_sanitizers.cmake | 9 +++++++++ cmake/compiler/host-gcc/target.cmake | 1 + 6 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 cmake/compiler/clang/target_sanitizers.cmake create mode 100644 cmake/compiler/gcc/target_sanitizers.cmake diff --git a/arch/posix/CMakeLists.txt b/arch/posix/CMakeLists.txt index 644ca751069..df88a9df85f 100644 --- a/arch/posix/CMakeLists.txt +++ b/arch/posix/CMakeLists.txt @@ -24,9 +24,7 @@ if (CONFIG_COVERAGE) endif () if (CONFIG_ASAN) - zephyr_compile_options(-fsanitize=address) - zephyr_link_libraries(-lasan) - zephyr_ld_options(-fsanitize=address) + toolchain_cc_asan() endif () zephyr_compile_definitions(_POSIX_C_SOURCE=200809 _XOPEN_SOURCE=600 _XOPEN_SOURCE_EXTENDED) diff --git a/cmake/compiler/clang/target.cmake b/cmake/compiler/clang/target.cmake index feb5595473b..231f1b5c084 100644 --- a/cmake/compiler/clang/target.cmake +++ b/cmake/compiler/clang/target.cmake @@ -86,6 +86,7 @@ include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_warnings.cmake) include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_imacros.cmake) include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_base.cmake) include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_coverage.cmake) +include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_sanitizers.cmake) macro(toolchain_cc_security_fortify) # No op, clang doesn't understand fortify at all diff --git a/cmake/compiler/clang/target_sanitizers.cmake b/cmake/compiler/clang/target_sanitizers.cmake new file mode 100644 index 00000000000..9baa653e3f3 --- /dev/null +++ b/cmake/compiler/clang/target_sanitizers.cmake @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: Apache-2.0 + +macro(toolchain_cc_asan) + +zephyr_compile_options(-fsanitize=address) +zephyr_ld_options(-fsanitize=address) + +endmacro() diff --git a/cmake/compiler/gcc/target.cmake b/cmake/compiler/gcc/target.cmake index 051ad23e61b..ef8e4794666 100644 --- a/cmake/compiler/gcc/target.cmake +++ b/cmake/compiler/gcc/target.cmake @@ -126,3 +126,4 @@ include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_warnings.cmake) include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_imacros.cmake) include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_base.cmake) include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_coverage.cmake) +include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_sanitizers.cmake) diff --git a/cmake/compiler/gcc/target_sanitizers.cmake b/cmake/compiler/gcc/target_sanitizers.cmake new file mode 100644 index 00000000000..c7273547987 --- /dev/null +++ b/cmake/compiler/gcc/target_sanitizers.cmake @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: Apache-2.0 + +macro(toolchain_cc_asan) + +zephyr_compile_options(-fsanitize=address) +zephyr_link_libraries(-lasan) +zephyr_ld_options(-fsanitize=address) + +endmacro() diff --git a/cmake/compiler/host-gcc/target.cmake b/cmake/compiler/host-gcc/target.cmake index 9f3528003bb..6762f67ebe8 100644 --- a/cmake/compiler/host-gcc/target.cmake +++ b/cmake/compiler/host-gcc/target.cmake @@ -77,3 +77,4 @@ include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_warnings.cmake) include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_imacros.cmake) include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_base.cmake) include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_coverage.cmake) +include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_sanitizers.cmake)