From 93983c7d00331efed613d212c5236f9ee7c0a310 Mon Sep 17 00:00:00 2001 From: Nikita Shulga Date: Mon, 23 Mar 2020 14:48:42 -0700 Subject: [PATCH] Add `USE_TSAN` option (#35197) Summary: Sometimes it is important to run code with thread sanitizer. Pull Request resolved: https://github.com/pytorch/pytorch/pull/35197 Test Plan: CI Differential Revision: D20605005 Pulled By: malfet fbshipit-source-id: bcd1a5191b5f859e12b6df6737c980099b1edc36 --- CMakeLists.txt | 1 + cmake/MiscCheck.cmake | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d65067f357..784f027de9a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -136,6 +136,7 @@ cmake_dependent_option( "BUILD_TEST" OFF) option(COLORIZE_OUTPUT "Colorize output during compilation" ON) option(USE_ASAN "Use Address Sanitizer" OFF) +option(USE_TSAN "Use Thread Sanitizer" OFF) option(USE_CUDA "Use CUDA" ON) option(USE_ROCM "Use ROCm" ON) option(CAFFE2_STATIC_LINK_CUDA "Statically link CUDA libraries" OFF) diff --git a/cmake/MiscCheck.cmake b/cmake/MiscCheck.cmake index 3ff7539d3a8..4bb1431d597 100644 --- a/cmake/MiscCheck.cmake +++ b/cmake/MiscCheck.cmake @@ -323,6 +323,15 @@ if (USE_ASAN) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CAFFE2_ASAN_FLAG}") endif() +if (USE_TSAN) + set(CAFFE2_TSAN_FLAG "-fsanitize=thread -fPIE -pie") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CAFFE2_TSAN_FLAG}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CAFFE2_TSAN_FLAG}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CAFFE2_TSAN_FLAG}") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CAFFE2_TSAN_FLAG}") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CAFFE2_TSAN_FLAG}") +endif() + # ---[ Create CAFFE2_BUILD_SHARED_LIBS for macros.h.in usage. set(CAFFE2_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})