From 148629fac1a8920d8b3445b9b7a6f56b1dd2ff95 Mon Sep 17 00:00:00 2001 From: Arseniy Obolenskiy Date: Mon, 23 Jun 2025 14:11:00 +0200 Subject: [PATCH] Add leak sanitizer --- .github/workflows/ubuntu.yml | 3 ++- cmake/configure.cmake | 2 +- cmake/sanitizers.cmake | 5 +++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 1cb83985d..7904b1b3b 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -386,7 +386,8 @@ jobs: run: > cmake -S . -B build -G Ninja -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache - -D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_ADDRESS_SANITIZER=ON -D ENABLE_UB_SANITIZER=ON + -D CMAKE_BUILD_TYPE=RELEASE + -D ENABLE_ADDRESS_SANITIZER=ON -D ENABLE_UB_SANITIZER=ON -D ENABLE_LEAK_SANITIZER=ON -D CMAKE_INSTALL_PREFIX=install env: CC: clang-20 diff --git a/cmake/configure.cmake b/cmake/configure.cmake index f71cdb98e..5a2b92f2e 100644 --- a/cmake/configure.cmake +++ b/cmake/configure.cmake @@ -68,7 +68,7 @@ if( UNIX ) -Wold-style-definition \ -Wmissing-prototypes") - if ("${ENABLE_ADDRESS_SANITIZER}" OR "${ENABLE_UB_SANITIZER}") + if ("${ENABLE_ADDRESS_SANITIZER}" OR "${ENABLE_UB_SANITIZER}" OR "${ENABLE_LEAK_SANITIZER}") set (COMMON_COMPILER_FLAGS "${COMMON_COMPILER_FLAGS} -Wno-cast-align") endif() diff --git a/cmake/sanitizers.cmake b/cmake/sanitizers.cmake index 460d7abd1..c7e8ba133 100644 --- a/cmake/sanitizers.cmake +++ b/cmake/sanitizers.cmake @@ -10,6 +10,11 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU") add_link_options(-fsanitize=undefined -fno-sanitize=signed-integer-overflow) message(STATUS "Enabled UB sanitizer") endif() + if (ENABLE_LEAK_SANITIZER) + add_compile_options(-fsanitize=leak) + add_link_options(-fsanitize=leak) + message(STATUS "Enabled leak sanitizer") + endif() else() message(WARNING "Sanitizers are supported on gcc and clang compilers only!") endif()