tests: add a test for ctest_memcheck UndefinedBehaviorSanitizer
This commit is contained in:
parent
816c100ae2
commit
9ba8bf123c
|
@ -151,6 +151,23 @@ set_tests_properties(CTestTestMemcheckDummyAddressSanitizer PROPERTIES
|
||||||
PASS_REGULAR_EXPRESSION
|
PASS_REGULAR_EXPRESSION
|
||||||
".*Memory checking results:.*heap-buffer-overflow - 1.*")
|
".*Memory checking results:.*heap-buffer-overflow - 1.*")
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
# add UndefinedBehaviorSanitizer test
|
||||||
|
set(CTEST_EXTRA_CODE
|
||||||
|
"set(CTEST_MEMORYCHECK_SANITIZER_OPTIONS \"simulate_sanitizer=1\")
|
||||||
|
")
|
||||||
|
|
||||||
|
set(CMAKELISTS_EXTRA_CODE
|
||||||
|
"add_test(NAME TestSan COMMAND \"${CMAKE_COMMAND}\"
|
||||||
|
-P \"${CMAKE_CURRENT_SOURCE_DIR}/testUndefinedBehaviorSanitizer.cmake\")
|
||||||
|
")
|
||||||
|
gen_mc_test_internal(DummyUndefinedBehaviorSanitizer "" -DMEMCHECK_TYPE=UndefinedBehaviorSanitizer)
|
||||||
|
set(CMAKELISTS_EXTRA_CODE )
|
||||||
|
set(CTEST_EXTRA_CODE)
|
||||||
|
set_tests_properties(CTestTestMemcheckDummyUndefinedBehaviorSanitizer PROPERTIES
|
||||||
|
PASS_REGULAR_EXPRESSION
|
||||||
|
".*Memory checking results:.*left shift of negative value -256 - 1.*")
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
|
|
||||||
gen_mc_test(DummyPurify "\${PSEUDO_PURIFY}")
|
gen_mc_test(DummyPurify "\${PSEUDO_PURIFY}")
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
# this file simulates a program that has been built with undefined behavior
|
||||||
|
# sanitizer options
|
||||||
|
|
||||||
|
message("UBSAN_OPTIONS = [$ENV{UBSAN_OPTIONS}]")
|
||||||
|
string(REGEX REPLACE ".*log_path=\"([^\"]*)\".*" "\\1" LOG_FILE "$ENV{UBSAN_OPTIONS}")
|
||||||
|
message("LOG_FILE=[${LOG_FILE}]")
|
||||||
|
|
||||||
|
# if we are not asked to simulate address sanitizer don't do it
|
||||||
|
if(NOT "$ENV{UBSAN_OPTIONS}]" MATCHES "simulate_sanitizer.1")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
# clear the log file
|
||||||
|
file(REMOVE "${LOG_FILE}.2343")
|
||||||
|
|
||||||
|
# create an error like undefined behavior santizer creates;
|
||||||
|
# these names come from ubsan_diag.cc and ubsan_handlers.cc
|
||||||
|
# in llvm
|
||||||
|
|
||||||
|
file(APPEND "${LOG_FILE}.2343"
|
||||||
|
"<unknown>: runtime error: left shift of negative value -256
|
||||||
|
")
|
Loading…
Reference in New Issue