diff options
| author | Shawn Hoffman <godisgovernment@gmail.com> | 2020-08-18 21:54:08 -0700 |
|---|---|---|
| committer | Shawn Hoffman <godisgovernment@gmail.com> | 2021-01-10 15:11:18 -0800 |
| commit | 49b9deeb03ef92844ce826bf52a4e5baeb7fca9b (patch) | |
| tree | 434ffe3079b5bbe60be5012b3241a539b7aaf495 | |
| parent | 79a234eff728b2aeb68c9848f2e4fe861d4f3b91 (diff) | |
msvc: add asan support (disabled by default)
| -rw-r--r-- | Source/UnitTests/Core/PageFaultTest.cpp | 13 | ||||
| -rw-r--r-- | Source/VSProps/Base.props | 3 | ||||
| -rw-r--r-- | Source/VSProps/Configuration.Base.props | 5 |
3 files changed, 20 insertions, 1 deletions
diff --git a/Source/UnitTests/Core/PageFaultTest.cpp b/Source/UnitTests/Core/PageFaultTest.cpp index 7b6210d7b9..e77fe49fd2 100644 --- a/Source/UnitTests/Core/PageFaultTest.cpp +++ b/Source/UnitTests/Core/PageFaultTest.cpp @@ -49,6 +49,17 @@ public: m_post_unprotect_time; }; +#ifdef _MSC_VER +#define ASAN_DISABLE __declspec(no_sanitize_address) +#else +#define ASAN_DISABLE +#endif + +static void ASAN_DISABLE perform_invalid_access(void* data) +{ + *(volatile int*)data = 5; +} + TEST(PageFault, PageFault) { EMM::InstallExceptionHandler(); @@ -61,7 +72,7 @@ TEST(PageFault, PageFault) pfjit.m_data = data; auto start = std::chrono::high_resolution_clock::now(); - *(volatile int*)data = 5; + perform_invalid_access(data); auto end = std::chrono::high_resolution_clock::now(); #define AS_NS(diff) \ diff --git a/Source/VSProps/Base.props b/Source/VSProps/Base.props index 8b3a3b6d31..79e55ef13d 100644 --- a/Source/VSProps/Base.props +++ b/Source/VSProps/Base.props @@ -133,6 +133,9 @@ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <Optimization>Disabled</Optimization> </ClCompile> + <ClCompile Condition="'$(Configuration)'=='Debug' And '$(EnableASAN)'=='true'"> + <BasicRuntimeChecks>Default</BasicRuntimeChecks> + </ClCompile> <!--ClCompile Release--> <ClCompile Condition="'$(Configuration)'=='Release'"> <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion> diff --git a/Source/VSProps/Configuration.Base.props b/Source/VSProps/Configuration.Base.props index dfbeedf4de..928c6dad77 100644 --- a/Source/VSProps/Configuration.Base.props +++ b/Source/VSProps/Configuration.Base.props @@ -4,6 +4,11 @@ <PlatformToolset>v142</PlatformToolset> <CharacterSet>Unicode</CharacterSet> <PreferredToolArchitecture>x64</PreferredToolArchitecture> + <!-- To use ASAN, just uncomment this. For simplicity, you should run VS/windbg/etc + (including the built executables themselves) after using vcvarsall or similar to setup + environment, as ASAN needs access to libs and executables in the toolchain paths. + --> + <!--<EnableASAN>true</EnableASAN>--> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration"> <UseDebugLibraries>true</UseDebugLibraries> |
