Index: lib/sanitizer_common/sanitizer_win_defs.h =================================================================== --- lib/sanitizer_common/sanitizer_win_defs.h +++ lib/sanitizer_common/sanitizer_win_defs.h @@ -43,6 +43,8 @@ #define STRINGIFY_(A) #A #define STRINGIFY(A) STRINGIFY_(A) +#if !SANITIZER_GO + // ----------------- A workaround for the absence of weak symbols -------------- // We don't have a direct equivalent of weak symbols when using MSVC, but we can // use the /alternatename directive to tell the linker to default a specific @@ -158,5 +160,15 @@ // return a >= b; // } // + +#else // SANITIZER_GO + +// Go neither needs nor wants weak references. +// The shenanigans above don't work for gcc. +# define WIN_WEAK_EXPORT_DEF(ReturnType, Name, ...) \ + extern "C" ReturnType Name(__VA_ARGS__) + +#endif // SANITIZER_GO + #endif // SANITIZER_WINDOWS #endif // SANITIZER_WIN_DEFS_H Index: lib/tsan/go/build.bat =================================================================== --- lib/tsan/go/build.bat +++ lib/tsan/go/build.bat @@ -31,6 +31,9 @@ ..\..\sanitizer_common\sanitizer_flag_parser.cpp ^ ..\..\sanitizer_common\sanitizer_symbolizer.cpp ^ ..\..\sanitizer_common\sanitizer_termination.cpp ^ + ..\..\sanitizer_common\sanitizer_file.cpp ^ + ..\..\sanitizer_common\sanitizer_symbolizer_report.cpp ^ + ..\rtl\tsan_external.cpp ^ > gotsan.cpp gcc ^ @@ -46,6 +49,8 @@ -fno-exceptions ^ -fno-rtti ^ -DSANITIZER_GO=1 ^ + -DWINVER=0x0600 -D_WIN32_WINNT=0x0600 ^ + -DGetProcessMemoryInfo=K32GetProcessMemoryInfo ^ -Wno-error=attributes ^ -Wno-attributes ^ -Wno-format ^