Added support for using address sanitizer with clang-cl.

This commit is contained in:
Mat Sutcliffe
2018-12-01 17:57:09 +00:00
parent 4c3aba20dd
commit b82ab1e3c2

View File

@@ -186,6 +186,18 @@ msvc:contains(QMAKE_CXXFLAGS, /permissive-): QMAKE_CXXFLAGS *= /FIpermissivework
################################
clang_cl {
# Address Sanitizer
# https://stackoverflow.com/a/48585886/1639256
# http://lists.llvm.org/pipermail/cfe-dev/2016-April/048288.html
contains(QMAKE_CXXFLAGS, -fsanitize=address) {
SANITIZER_LIB_DIR = $$system(clang -print-resource-dir)\lib\windows
equals(WORD_SIZE,32): SANITIZER_LIB_SUFFIX = i386.lib
equals(WORD_SIZE,64): SANITIZER_LIB_SUFFIX = x86_64.lib
LIBS += $$SANITIZER_LIB_DIR\clang_rt.asan_dynamic-$$SANITIZER_LIB_SUFFIX
QMAKE_LFLAGS += -wholearchive:$$SANITIZER_LIB_DIR\clang_rt.asan_dynamic_runtime_thunk-$$SANITIZER_LIB_SUFFIX
QMAKE_LFLAGS += -include:__asan_seh_interceptor
}
# Suppress warnings in Qt headers
QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH:-I$$system_path($$[QT_HOST_PREFIX])=/imsvc $$system_path($$[QT_HOST_PREFIX])) -Fo$obj $src
QMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH:-I$$system_path($$[QT_HOST_PREFIX])=/imsvc $$system_path($$[QT_HOST_PREFIX])) -Fo$@ $<