Added checks to avoid bad sanitizer combinations.
Some sanitizers are not compatible with other sanitizers. Added some checks to avoid these combinations at configuration time.
This commit is contained in:
parent
6975d64d6b
commit
f566e2b9ec
@ -33,9 +33,18 @@ set(FLAG_CANDIDATES
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if (SANITIZE_ADDRESS AND (SANITIZE_THREAD OR SANITIZE_MEMORY))
|
||||||
|
message(FATAL_ERROR "AddressSanitizer is not compatible with "
|
||||||
|
"ThreadSanitizer or MemorySanitizer.")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
|
||||||
include(sanitize-helpers)
|
include(sanitize-helpers)
|
||||||
|
|
||||||
sanitizer_check_compiler_flags("${FLAG_CANDIDATES}" "AddressSanitizer" "ASan")
|
if (SANITIZE_ADDRESS)
|
||||||
|
sanitizer_check_compiler_flags("${FLAG_CANDIDATES}" "AddressSanitizer"
|
||||||
|
"ASan")
|
||||||
|
endif ()
|
||||||
|
|
||||||
function (add_sanitize_address TARGET)
|
function (add_sanitize_address TARGET)
|
||||||
if (NOT SANITIZE_ADDRESS)
|
if (NOT SANITIZE_ADDRESS)
|
||||||
|
@ -22,25 +22,6 @@
|
|||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
# SOFTWARE.
|
# SOFTWARE.
|
||||||
|
|
||||||
|
|
||||||
# The following options will enable the desired sanitizers.
|
|
||||||
option(SANITIZE "Enable all available sanitizers for sanitized targets." OFF)
|
|
||||||
|
|
||||||
# If option SANITIZE is enabled, enable all available sanitizers.
|
|
||||||
if (SANITIZE)
|
|
||||||
set(SANITIZE_ADDRESS ON CACHE BOOL
|
|
||||||
"Enable AddressSanitizer for sanitized targets." FORCE)
|
|
||||||
set(SANITIZE_THREAD ON CACHE BOOL
|
|
||||||
"Enable ThreadSanitizer for sanitized targets." FORCE)
|
|
||||||
set(SANITIZE_MEMORY ON CACHE BOOL
|
|
||||||
"Enable MemorySanitizer for sanitized targets." FORCE)
|
|
||||||
set(SANITIZE_UNDEFINED ON CACHE BOOL
|
|
||||||
"Enable UndefinedBehaviorSanitizer for sanitized targets." FORCE)
|
|
||||||
endif (SANITIZE)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
set(FIND_QUIETLY_FLAG "")
|
set(FIND_QUIETLY_FLAG "")
|
||||||
if (DEFINED Sanitizers_FIND_QUIETLY)
|
if (DEFINED Sanitizers_FIND_QUIETLY)
|
||||||
set(FIND_QUIETLY_FLAG "QUIET")
|
set(FIND_QUIETLY_FLAG "QUIET")
|
||||||
|
@ -29,6 +29,13 @@ set(FLAG_CANDIDATES
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# ThreadSanitizer is not compatible with MemorySanitizer.
|
||||||
|
if (SANITIZE_THREAD AND SANITIZE_MEMORY)
|
||||||
|
message(FATAL_ERROR "ThreadSanitizer is not compatible with "
|
||||||
|
"MemorySanitizer.")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
|
||||||
include(sanitize-helpers)
|
include(sanitize-helpers)
|
||||||
|
|
||||||
if (SANITIZE_THREAD)
|
if (SANITIZE_THREAD)
|
||||||
|
@ -32,8 +32,10 @@ set(FLAG_CANDIDATES
|
|||||||
|
|
||||||
include(sanitize-helpers)
|
include(sanitize-helpers)
|
||||||
|
|
||||||
sanitizer_check_compiler_flags("${FLAG_CANDIDATES}" "UndefinedBehaviorSanitizer"
|
if (SANITIZE_UNDEFINED)
|
||||||
"UBSan")
|
sanitizer_check_compiler_flags("${FLAG_CANDIDATES}"
|
||||||
|
"UndefinedBehaviorSanitizer" "UBSan")
|
||||||
|
endif ()
|
||||||
|
|
||||||
function (add_sanitize_undefined TARGET)
|
function (add_sanitize_undefined TARGET)
|
||||||
if (NOT SANITIZE_UNDEFINED)
|
if (NOT SANITIZE_UNDEFINED)
|
||||||
|
Loading…
Reference in New Issue
Block a user