Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 17 additions & 17 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -163,25 +163,9 @@ set(HAVE_EINSPLINE 1) # to be removed
option(QMC_EXP_THREADING "Experimental non openmp threading models" OFF)
mark_as_advanced(QMC_EXP_THREADING)

#--------------------------------------------------------------------
# Sanitizer options
#--------------------------------------------------------------------

# Add optional sanitizers ASAN, UBSAN, MSAN, TYPESAN
set(VALID_SANITIZERS "asan" "ubsan" "tsan" "msan" "typesan")
set(ENABLE_SANITIZER "" CACHE STRING "asan,ubsan,tsan,msan,typesan")
set_property(CACHE ENABLE_SANITIZER PROPERTY STRINGS ${VALID_SANITIZERS})

set(LSAN_OPTIONS "suppressions=${PROJECT_SOURCE_DIR}/config/sanitizers/lsan.supp" CACHE STRING "cached value of environment variable LSAN_OPTIONS used by ctest")

if(ENABLE_SANITIZER)
# Perform sanitizer option check, only works in debug mode
if(NOT ENABLE_SANITIZER IN_LIST VALID_SANITIZERS)
message(FATAL_ERROR "Invalid -DENABLE_SANITIZER=${ENABLE_SANITIZER}, value must be one of ${VALID_SANITIZERS}")
else()
message(STATUS "Enable sanitizer ENABLE_SANITIZER=${ENABLE_SANITIZER}")
endif()
endif()
set(ENABLE_SANITIZER "" CACHE STRING "Valid input: ${VALID_SANITIZERS} or left empty")

#--------------------------------------------------------------------
# INSTALL_NEXUS install Nexus alongside QMCPACK
Expand Down Expand Up @@ -261,6 +245,12 @@ include(TestCxx17Library)
# SETUP SANITIZERS FLAGS
#-----------------------------------------------------------------------
if(ENABLE_SANITIZER)
message(STATUS "Enable sanitizer ENABLE_SANITIZER=${ENABLE_SANITIZER}")
# Perform sanitizer option check
if(NOT ENABLE_SANITIZER IN_LIST VALID_SANITIZERS)
message(FATAL_ERROR "Invalid ENABLE_SANITIZER input, value must be one of ${VALID_SANITIZERS}")
endif()

if(NOT ${COMPILER} MATCHES "GNU" AND NOT ${COMPILER} MATCHES "Clang")
message(FATAL_ERROR "-DENABLE_SANITIZER=${ENABLE_SANITIZER} only works with GNU or Clang compilers")
endif()
Expand All @@ -269,6 +259,16 @@ if(ENABLE_SANITIZER)
set(CMAKE_CXX_FLAGS_SAN
"-fsanitize=address -fno-optimize-sibling-calls -fsanitize-address-use-after-scope -fno-omit-frame-pointer"
CACHE STRING "AddressSanitizer C++ compiler builds." FORCE)
if(NOT DEFINED LSAN_OPTIONS)
if(QMC_MPI)
set(LSAN_OPTIONS "suppressions=${PROJECT_SOURCE_DIR}/config/sanitizers/lsan_mpi.supp")
else()
set(LSAN_OPTIONS "")
endif()
endif()
if(LSAN_OPTIONS)
message(STATUS "Set environment variable LSAN_OPTIONS for CTest: ${LSAN_OPTIONS}")
endif()
elseif("${ENABLE_SANITIZER}" STREQUAL "ubsan")
set(CMAKE_CXX_FLAGS_SAN
"-fsanitize=undefined"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@


leak:opal_free_list_grow_st
leak:calloc
leak:malloc
leak:opal_hash_table_init2
leak:operator new
leak:strdup
leak:calloc
leak:opal_free_list_grow_st
leak:opal_hash_table_init2
leak:ompi*
leak:pmix*
Loading