From a49795d8abcf8bf5d38b6ba4e665559c30eb3e62 Mon Sep 17 00:00:00 2001 From: Vedant Kumar Date: Thu, 31 Oct 2019 16:35:57 -0700 Subject: [PATCH] [profile] Third speculative fix for Windows after D68351 _putenv on Windows takes 1 argument, whereas setenv elsewhere takes 3. Just treat the two platforms differently. http://lab.llvm.org:8011/builders/sanitizer-windows/builds/53547 --- compiler-rt/lib/profile/InstrProfilingFile.c | 11 ++++++++--- compiler-rt/lib/profile/InstrProfilingPort.h | 1 - 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/compiler-rt/lib/profile/InstrProfilingFile.c b/compiler-rt/lib/profile/InstrProfilingFile.c index e2253de..d722b86 100644 --- a/compiler-rt/lib/profile/InstrProfilingFile.c +++ b/compiler-rt/lib/profile/InstrProfilingFile.c @@ -337,6 +337,8 @@ static int writeOrderFile(const char *OutputName) { return RetVal; } +#define LPROF_INIT_ONCE_ENV "__LLVM_PROFILE_RT_INIT_ONCE" + static void truncateCurrentFile(void) { const char *Filename; char *FilenameBuf; @@ -357,11 +359,14 @@ static void truncateCurrentFile(void) { /* Only create the profile directory and truncate an existing profile once. * In continuous mode, this is necessary, as the profile is written-to by the * runtime initializer. */ - const char *lprofInitOnceEnv = "__LLVM_PROFILE_RT_INIT_ONCE"; - int initialized = getenv(lprofInitOnceEnv) != NULL; + int initialized = getenv(LPROF_INIT_ONCE_ENV) != NULL; if (initialized) return; - setenv(lprofInitOnceEnv, lprofInitOnceEnv, 1); +#if defined(_WIN32) + _putenv(LPROF_INIT_ONCE_ENV "=" LPROF_INIT_ONCE_ENV); +#else + setenv(LPROF_INIT_ONCE_ENV, LPROF_INIT_ONCE_ENV, 1); +#endif createProfileDir(Filename); diff --git a/compiler-rt/lib/profile/InstrProfilingPort.h b/compiler-rt/lib/profile/InstrProfilingPort.h index ceafdb9..9462cf1 100644 --- a/compiler-rt/lib/profile/InstrProfilingPort.h +++ b/compiler-rt/lib/profile/InstrProfilingPort.h @@ -105,7 +105,6 @@ static inline size_t getpagesize() { GetNativeSystemInfo(&S); return S.dwPageSize; } -#define setenv _putenv #else /* defined(_WIN32) */ #include #endif /* defined(_WIN32) */ -- 2.7.4