diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-08-22 12:56:13 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-08-22 12:56:13 +0200 |
commit | 0a0b420d866f070d4b1208bb3c4451398797c6ef (patch) | |
tree | d9dc111ef03125e8f0f1ce6fa6c2ec9af3588787 | |
parent | f4297aa3c634f321e2159be54835d4b2272874f4 (diff) |
Build: Support ASAN on msvc
-rw-r--r-- | cmake/compiler/msvc/settings.cmake | 13 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_debug.cpp | 4 |
2 files changed, 15 insertions, 2 deletions
diff --git a/cmake/compiler/msvc/settings.cmake b/cmake/compiler/msvc/settings.cmake index fc1b8122af5..36930733bb2 100644 --- a/cmake/compiler/msvc/settings.cmake +++ b/cmake/compiler/msvc/settings.cmake @@ -159,6 +159,19 @@ target_compile_options(trinity-compile-option-interface /we4263 /we4264) +if(ASAN) + target_compile_definitions(trinity-compile-option-interface + INTERFACE + -D_DISABLE_STRING_ANNOTATION + -D_DISABLE_VECTOR_ANNOTATION) + + target_compile_options(trinity-compile-option-interface + INTERFACE + /fsanitize=address) + + message(STATUS "MSVC: Enabled Address Sanitizer ASan") +endif() + # Disable incremental linking in debug builds. # To prevent linking getting stuck (which might be fixed in a later VS version). macro(DisableIncrementalLinking variable) diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index a1ea6538dd2..a73c8329993 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -1634,7 +1634,7 @@ public: uint8 stack_array[10] = {}; int size = 10; - handler->PSendSysMessage("Triggered an array out of bounds read at address %p, value %u", stack_array + size, stack_array[size]); + handler->PSendSysMessage("Triggered an array out of bounds read at address %p, value %u", static_cast<void*>(stack_array + size), stack_array[size]); #endif return true; } @@ -1643,7 +1643,7 @@ public: { #ifdef ASAN uint8* leak = new uint8(); - handler->PSendSysMessage("Leaked 1 uint8 object at address %p", leak); + handler->PSendSysMessage("Leaked 1 uint8 object at address %p", static_cast<void*>(leak)); #endif return true; } |