diff --git a/mkspecs/features/common_pre.prf b/mkspecs/features/common_pre.prf index 5664cf9f6..e00949ee1 100644 --- a/mkspecs/features/common_pre.prf +++ b/mkspecs/features/common_pre.prf @@ -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$@ $<