some sanitizer build fixes and cleanups (#2621)
* cleaned up sanitizer build flags * exprengine.cpp: work around linker error with Clang and UBSAN
This commit is contained in:
parent
3042bbdc3d
commit
04bd2bdb74
|
@ -2,12 +2,13 @@ if(ANALYZE_MEMORY)
|
||||||
add_compile_options(-fsanitize=memory)
|
add_compile_options(-fsanitize=memory)
|
||||||
add_compile_options(-fsanitize-memory-track-origins=2)
|
add_compile_options(-fsanitize-memory-track-origins=2)
|
||||||
add_compile_options(-fno-omit-frame-pointer)
|
add_compile_options(-fno-omit-frame-pointer)
|
||||||
# NOTE: tail call elimination -fno-optimize-sibling-calls
|
add_compile_options(-fno-optimize-sibling-calls)
|
||||||
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=memory")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=memory")
|
||||||
elseif(ANALYZE_ADDRESS)
|
elseif(ANALYZE_ADDRESS)
|
||||||
add_compile_options(-fsanitize=address)
|
add_compile_options(-fsanitize=address)
|
||||||
add_compile_options(-fno-omit-frame-pointer)
|
add_compile_options(-fno-omit-frame-pointer)
|
||||||
|
add_compile_options(-fno-optimize-sibling-calls)
|
||||||
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
|
||||||
elseif(ANALYZE_THREAD)
|
elseif(ANALYZE_THREAD)
|
||||||
|
@ -17,9 +18,9 @@ elseif(ANALYZE_THREAD)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(ANALYZE_UNDEFINED)
|
if(ANALYZE_UNDEFINED)
|
||||||
add_compile_options(-fsanitize=undefined-trap)
|
add_compile_options(-fsanitize=undefined)
|
||||||
add_compile_options(-fsanitize-undefined-trap-on-error)
|
add_compile_options(-fno-sanitize-recover=all)
|
||||||
add_compile_options(-fno-sanitize-recover)
|
add_compile_options(-fno-omit-frame-pointer)
|
||||||
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined")
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -318,6 +318,10 @@ namespace {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __clang__
|
||||||
|
// work around "undefined reference to `__muloti4'" linker error - see https://bugs.llvm.org/show_bug.cgi?id=16404
|
||||||
|
__attribute__((no_sanitize("undefined")))
|
||||||
|
#endif
|
||||||
static ExprEngine::ValuePtr simplifyValue(ExprEngine::ValuePtr origValue)
|
static ExprEngine::ValuePtr simplifyValue(ExprEngine::ValuePtr origValue)
|
||||||
{
|
{
|
||||||
auto b = std::dynamic_pointer_cast<ExprEngine::BinOpResult>(origValue);
|
auto b = std::dynamic_pointer_cast<ExprEngine::BinOpResult>(origValue);
|
||||||
|
|
Loading…
Reference in New Issue