From 53901d870b11996533f38da95fcb3b8605c0cf67 Mon Sep 17 00:00:00 2001 From: "Andrii Doroshenko (Xrayez)" Date: Fri, 12 Mar 2021 18:44:06 +0200 Subject: [PATCH] Add `use_asan` option for MSVC to enable AddressSanitizer Exposes AddressSanitizer support in MSVC compiler. Can be installed via individual components in the Visual Studio 2019 Installer. Disabled by default. Compile the engine with `scons use_asan=yes`. --- platform/windows/detect.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/platform/windows/detect.py b/platform/windows/detect.py index f26dea8d35a..0b2145a92b7 100644 --- a/platform/windows/detect.py +++ b/platform/windows/detect.py @@ -72,6 +72,7 @@ def get_opts(): BoolVariable("use_llvm", "Use the LLVM compiler", False), BoolVariable("use_thinlto", "Use ThinLTO", False), BoolVariable("use_static_cpp", "Link MinGW/MSVC C++ runtime libraries statically", True), + BoolVariable("use_asan", "Use address sanitizer (ASAN)", False), ] @@ -306,6 +307,12 @@ def configure_msvc(env, manual_msvc_config): env.Prepend(CPPPATH=[p for p in os.getenv("INCLUDE").split(";")]) env.Append(LIBPATH=[p for p in os.getenv("LIB").split(";")]) + # Sanitizers + if env["use_asan"]: + env.extra_suffix += ".s" + env.Append(LINKFLAGS=["/INFERASANLIBS"]) + env.Append(CCFLAGS=["/fsanitize=address"]) + # Incremental linking fix env["BUILDERS"]["ProgramOriginal"] = env["BUILDERS"]["Program"] env["BUILDERS"]["Program"] = methods.precious_program