From ad70bff65138ead1f34b10636f45114eecd76bf0 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Fri, 5 Apr 2024 01:49:57 +0400 Subject: [PATCH] Implement DESKTOP_APP_ASAN on Linux --- external/glib/generate_gir.cmake | 2 ++ options_linux.cmake | 13 +++++++++++++ variables.cmake | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/external/glib/generate_gir.cmake b/external/glib/generate_gir.cmake index 643d049..87f6aee 100644 --- a/external/glib/generate_gir.cmake +++ b/external/glib/generate_gir.cmake @@ -19,6 +19,8 @@ function(generate_gir target_name namespace deps src_target_name) BYPRODUCTS ${gen_file} COMMAND + env + $<$:LDFLAGS=-fsanitize=address> ${DESKTOP_APP_GIRSCANNER} --quiet -n diff --git a/options_linux.cmake b/options_linux.cmake index 5496622..cd49f8c 100644 --- a/options_linux.cmake +++ b/options_linux.cmake @@ -122,6 +122,19 @@ if (DESKTOP_APP_USE_ALLOCATION_TRACER) ) endif() +if (DESKTOP_APP_ASAN) + target_compile_options(common_options INTERFACE -fsanitize=address) + target_link_options(common_options INTERFACE -fsanitize=address) + + if (NOT DESKTOP_APP_USE_PACKAGED) + if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + target_link_options(common_options INTERFACE -static-libasan) + elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + target_link_options(common_options INTERFACE -static-libsan) + endif() + endif() +endif() + target_link_libraries(common_options INTERFACE ${CMAKE_DL_LIBS} diff --git a/variables.cmake b/variables.cmake index 42614fb..595f1d8 100644 --- a/variables.cmake +++ b/variables.cmake @@ -32,7 +32,7 @@ option(DESKTOP_APP_ASAN "Enable address sanitizer" OFF) cmake_dependent_option(DESKTOP_APP_USE_ENCHANT "Use Enchant instead of bundled Hunspell." OFF LINUX OFF) cmake_dependent_option(DESKTOP_APP_USE_CLD3 "Disable system text language recognition and use bundled cld3 only." OFF APPLE ON) cmake_dependent_option(DESKTOP_APP_NO_PDB "Disable PDB file generation." OFF WIN32 OFF) -cmake_dependent_option(DESKTOP_APP_DISABLE_SCUDO "Disable scudo, use system malloc." OFF LINUX OFF) +cmake_dependent_option(DESKTOP_APP_DISABLE_SCUDO "Disable scudo, use system malloc." OFF "LINUX; NOT DESKTOP_APP_ASAN" ON) if (APPLE AND NOT DEFINED DESKTOP_APP_MAC_ARCH) if (DEFINED CMAKE_OSX_ARCHITECTURES)