[compiler-rt] r355236 - [sanitizers] Don't use Windows Trace Logging on MinGW

Martin Storsjö via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 1 21:51:11 PST 2019


Thanks for fixing, and sorry for the breakage! The fix is right, it was a 
plain copy/paste mistake.

// Martin

On Fri, 1 Mar 2019, Volodymyr Sapsai wrote:

> Martin, I’ve made a small fix in r355244. See inline for more details
>
>> On Mar 1, 2019, at 14:30, Martin Storsjo via llvm-commits <llvm-commits at lists.llvm.org> wrote:
>>
>> Author: mstorsjo
>> Date: Fri Mar  1 14:30:14 2019
>> New Revision: 355236
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=355236&view=rev
>> Log:
>> [sanitizers] Don't use Windows Trace Logging on MinGW
>>
>> mingw-w64 currently is lacking the headers for this feature.
>>
>> Make the include lowercase at the same time. We consistently
>> use lowercase for windows header includes, as windows itself is
>> case insensitive, the SDK headers (in general, not necessarily
>> considering this particular header) aren't consistent among themselves
>> about what the proper canonical capitalization for headers are,
>> and MinGW uses all lowercase names for the headers (as it is often
>> used on case sensitive filesystems).
>>
>> In case mingw-w64 later gets this header, we can revert this
>> (but keep the include lowercased).
>>
>> Differential Revision: https://reviews.llvm.org/D58765
>>
>> Modified:
>>    compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
>>    compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc
>>
>> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
>> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h?rev=355236&r1=355235&r2=355236&view=diff
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h Fri Mar  1 14:30:14 2019
>> @@ -804,7 +804,13 @@ enum AndroidApiLevel {
>>
>> void WriteToSyslog(const char *buffer);
>>
>> -#if SANITIZER_MAC || SANITIZER_WINDOWS
>> +#if defined(SANITIZER_WINDOWS) && defined(_MSC_VER)
>> +#define SANITIZER_WIN_TRACE 1
>> +#else
>> +#define SANITIZER_WIN_TRACE 0
>> +#endif
>> +
>> +#if SANITIZER_LINUX || SANITIZER_WIN_TRACE
> I think changing SANITIZER_MAC to SANITIZER_LINUX was a mistake and was copy-pasted from the part of the file below. But I can be wrong and maybe we need #if SANITIZER_MAC || SANITIZER_LINUX || SANITIZER_WIN_TRACE
>
>> void LogFullErrorReport(const char *buffer);
>> #else
>> INLINE void LogFullErrorReport(const char *buffer) {}
>> @@ -818,7 +824,7 @@ INLINE void WriteOneLineToSyslog(const c
>> INLINE void LogMessageOnPrintf(const char *str) {}
>> #endif
>>
>> -#if SANITIZER_LINUX || SANITIZER_WINDOWS
>> +#if SANITIZER_LINUX || SANITIZER_WIN_TRACE
>> // Initialize Android logging. Any writes before this are silently lost.
>> void AndroidLogInit();
>> void SetAbortMessage(const char *);
>>
>> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc
>> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc?rev=355236&r1=355235&r2=355236&view=diff
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc Fri Mar  1 14:30:14 2019
>> @@ -20,7 +20,6 @@
>> #include <io.h>
>> #include <psapi.h>
>> #include <stdlib.h>
>> -#include <TraceLoggingProvider.h>
>>
>> #include "sanitizer_common.h"
>> #include "sanitizer_file.h"
>> @@ -32,6 +31,8 @@
>> #if defined(PSAPI_VERSION) && PSAPI_VERSION == 1
>> #pragma comment(lib, "psapi")
>> #endif
>> +#if SANITIZER_WIN_TRACE
>> +#include <traceloggingprovider.h>
>> //  Windows trace logging provider init
>> #pragma comment(lib, "advapi32.lib")
>> TRACELOGGING_DECLARE_PROVIDER(g_asan_provider);
>> @@ -39,6 +40,9 @@ TRACELOGGING_DECLARE_PROVIDER(g_asan_pro
>> TRACELOGGING_DEFINE_PROVIDER(g_asan_provider, "AddressSanitizerLoggingProvider",
>>                              (0x6c6c766d, 0x3846, 0x4e6a, 0xa4, 0xfb, 0x5b,
>>                               0x53, 0x0b, 0xd0, 0xf3, 0xfa));
>> +#else
>> +#define TraceLoggingUnregister(x)
>> +#endif
>>
>> // A macro to tell the compiler that this part of the code cannot be reached,
>> // if the compiler supports this feature. Since we're using this in
>> @@ -1080,6 +1084,7 @@ u32 GetNumberOfCPUs() {
>>   return sysinfo.dwNumberOfProcessors;
>> }
>>
>> +#if SANITIZER_WIN_TRACE
>> // TODO(mcgov): Rename this project-wide to PlatformLogInit
>> void AndroidLogInit(void) {
>>   HRESULT hr = TraceLoggingRegister(g_asan_provider);
>> @@ -1103,6 +1108,7 @@ void LogFullErrorReport(const char *buff
>>                       TraceLoggingValue(buffer, "AsanReportContents"));
>>   }
>> }
>> +#endif // SANITIZER_WIN_TRACE
>>
>> }  // namespace __sanitizer
>>
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>


More information about the llvm-commits mailing list