[compiler-rt] 058f5f6 - Avoid O_CLOEXEC to allow building on older Linux (RHEL5)

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Fri May 29 02:07:10 PDT 2020


Author: Vitaly Buka
Date: 2020-05-29T02:06:53-07:00
New Revision: 058f5f6fd813d1ee1480497394d6fd44e65ec62b

URL: https://github.com/llvm/llvm-project/commit/058f5f6fd813d1ee1480497394d6fd44e65ec62b
DIFF: https://github.com/llvm/llvm-project/commit/058f5f6fd813d1ee1480497394d6fd44e65ec62b.diff

LOG: Avoid O_CLOEXEC to allow building on older Linux (RHEL5)

Summary:
See https://github.com/google/sanitizers/issues/1253.

Small patch to enable compilation on (ancient) Red Hat Enterprise Linux 5.

Reviewers: kcc, vitalybuka

Reviewed By: vitalybuka

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D80648

Added: 
    

Modified: 
    compiler-rt/lib/sanitizer_common/sanitizer_posix.cpp

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/sanitizer_common/sanitizer_posix.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_posix.cpp
index d890a3a31773..e21661b42f8d 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_posix.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_posix.cpp
@@ -347,9 +347,17 @@ int GetNamedMappingFd(const char *name, uptr size, int *flags) {
   CHECK(internal_strlen(name) < sizeof(shmname) - 10);
   internal_snprintf(shmname, sizeof(shmname), "/dev/shm/%zu [%s]",
                     internal_getpid(), name);
+  int o_cloexec = 0;
+#if defined(O_CLOEXEC)
+  o_cloexec = O_CLOEXEC;
+#endif
   int fd = ReserveStandardFds(
-      internal_open(shmname, O_RDWR | O_CREAT | O_TRUNC | O_CLOEXEC, S_IRWXU));
+      internal_open(shmname, O_RDWR | O_CREAT | O_TRUNC | o_cloexec, S_IRWXU));
   CHECK_GE(fd, 0);
+  if (!o_cloexec) {
+    int res = fcntl(fd, F_SETFD, FD_CLOEXEC);
+    CHECK_EQ(0, res);
+  }
   int res = internal_ftruncate(fd, size);
   CHECK_EQ(0, res);
   res = internal_unlink(shmname);


        


More information about the llvm-commits mailing list