[compiler-rt] 2129c4a - Fix Windows bots failure caused by 8c4208d5c1671d1b44eaf87e8f876b7d635f5114

Zequan Wu via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 6 15:03:08 PDT 2021


Author: Zequan Wu
Date: 2021-08-06T15:03:00-07:00
New Revision: 2129c4a861a99407981502ac5a19ac16473277c2

URL: https://github.com/llvm/llvm-project/commit/2129c4a861a99407981502ac5a19ac16473277c2
DIFF: https://github.com/llvm/llvm-project/commit/2129c4a861a99407981502ac5a19ac16473277c2.diff

LOG: Fix Windows bots failure caused by 8c4208d5c1671d1b44eaf87e8f876b7d635f5114

Added: 
    

Modified: 
    compiler-rt/lib/profile/InstrProfilingFile.c

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/profile/InstrProfilingFile.c b/compiler-rt/lib/profile/InstrProfilingFile.c
index a098fda393dd..b99db321b4e6 100644
--- a/compiler-rt/lib/profile/InstrProfilingFile.c
+++ b/compiler-rt/lib/profile/InstrProfilingFile.c
@@ -100,6 +100,7 @@ static const char *FileOpenMode = "a+b";
 static intptr_t INSTR_PROF_PROFILE_COUNTER_BIAS_VAR;
 static void *BiasAddr = NULL;
 static void *BiasDefaultAddr = NULL;
+static int MmapFlags = MAP_FIXED | MAP_SHARED;
 #elif defined(__ELF__) || defined(_WIN32)
 
 #define INSTR_PROF_PROFILE_COUNTER_BIAS_DEFAULT_VAR                            \
@@ -133,6 +134,7 @@ static const char *FileOpenMode = "w+b";
  * used and runtime provides a weak alias so we can check if it's defined. */
 static void *BiasAddr = &INSTR_PROF_PROFILE_COUNTER_BIAS_VAR;
 static void *BiasDefaultAddr = &INSTR_PROF_PROFILE_COUNTER_BIAS_DEFAULT_VAR;
+static int MmapFlags = MAP_SHARED;
 #else
 static const int ContinuousModeSupported = 0;
 static const int UseBiasVar = 0;
@@ -140,6 +142,7 @@ static const char *FileOpenMode = "a+b";
 static intptr_t INSTR_PROF_PROFILE_COUNTER_BIAS_VAR;
 static void *BiasAddr = NULL;
 static void *BiasDefaultAddr = NULL;
+static int MmapFlags = MAP_SHARED;
 #endif
 
 static int isProfileMergeRequested() { return ProfileMergeRequested; }
@@ -518,7 +521,7 @@ static void initializeProfileForContinuousMode(void) {
     return;
 
   FILE *File = NULL;
-  off_t CurrentFileOffset = 0;
+  uint64_t CurrentFileOffset = 0;
   if (doMerging()) {
     /* We are merging profiles. Map the counter section as shared memory into
      * the profile, i.e. into each participating process. An increment in one
@@ -546,19 +549,19 @@ static void initializeProfileForContinuousMode(void) {
       /* The merged profile has a non-zero length. Check that it is compatible
        * with the data in this process. */
       char *ProfileBuffer;
-      if (mmapProfileForMerging(File, ProfileFileSize, &ProfileBuffer) == -1 ||
-          munmap(ProfileBuffer, ProfileFileSize)) {
+      if (mmapProfileForMerging(File, ProfileFileSize, &ProfileBuffer) == -1) {
         lprofUnlockFileHandle(File);
         fclose(File);
         return;
       }
+      (void)munmap(ProfileBuffer, ProfileFileSize);
     }
   } else {
     File = fopen(Filename, FileOpenMode);
     if (!File)
       return;
     /* Check that the offset within the file is page-aligned. */
-    CurrentFileOffset = ftello(File);
+    CurrentFileOffset = ftell(File);
     unsigned PageSize = getpagesize();
     if (CurrentFileOffset % PageSize != 0) {
       PROF_ERR("Continuous counter sync mode is enabled, but raw profile is not"
@@ -582,7 +585,7 @@ static void initializeProfileForContinuousMode(void) {
 
       /* Map the profile. */
       char *Profile = (char *)mmap(NULL, FileSize, PROT_READ | PROT_WRITE,
-                                   MAP_SHARED, Fileno, 0);
+                                   MmapFlags, Fileno, 0);
       if (Profile == MAP_FAILED) {
         PROF_ERR("Unable to mmap profile: %s\n", strerror(errno));
         return;
@@ -629,7 +632,7 @@ static void initializeProfileForContinuousMode(void) {
 
       uint64_t *CounterMmap =
           (uint64_t *)mmap((void *)CountersBegin, PageAlignedCountersLength,
-                           PROT_READ | PROT_WRITE, MAP_FIXED | MAP_SHARED,
+                           PROT_READ | PROT_WRITE, MmapFlags,
                            Fileno, FileOffsetToCounters);
       if (CounterMmap != CountersBegin) {
         PROF_ERR(


        


More information about the llvm-commits mailing list