[profile] Third speculative fix for Windows after D68351
authorVedant Kumar <vsk@apple.com>
Thu, 31 Oct 2019 23:35:57 +0000 (16:35 -0700)
committerVedant Kumar <vsk@apple.com>
Thu, 31 Oct 2019 23:35:58 +0000 (16:35 -0700)
_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
compiler-rt/lib/profile/InstrProfilingPort.h

index e2253de..d722b86 100644 (file)
@@ -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);
 
index ceafdb9..9462cf1 100644 (file)
@@ -105,7 +105,6 @@ static inline size_t getpagesize() {
   GetNativeSystemInfo(&S);
   return S.dwPageSize;
 }
-#define setenv _putenv
 #else /* defined(_WIN32) */
 #include <unistd.h>
 #endif /* defined(_WIN32) */