about summary refs log tree commit diff
path: root/absl/base/internal
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2017-10-17T20·29-0400
committerjueminyang <jueminyang@google.com>2017-10-17T20·42-0400
commitd8ac7afc105255e451b0a560f7d7fe30a26898cf (patch)
tree93d6ef670b4f41ca8fb9f7ec8ed6e220bea774d8 /absl/base/internal
parent0a86ee86ef19bc54afcc779fcf3e069a09e3f3e5 (diff)
Changes imported from Abseil "staging" branch:
  - 1434dc58cc24e004531a09bcf1491773d9bf789e Copybara clang-format by Juemin Yang <jueminyang@google.com>
  - 6296f0f69b23d406a275b7ce2669ea3b18149bb7 Internal change for git pull request #31 by Juemin Yang <jueminyang@google.com>
  - 539940d88cfdf172b4b916d44225cc42839eeee7 Add internal-only ABSL_INTERNAL_HAVE_TSAN_INTERFACE macro. by Daniel Katz <katzdm@google.com>
  - bf85dda4ffdb4dd15084fb8b8db00281481dee90 Add missing pthread.h include to low_level_alloc.cc. by Derek Mauro <dmauro@google.com>

GitOrigin-RevId: 1434dc58cc24e004531a09bcf1491773d9bf789e
Change-Id: I68d6957b0cac32020e4e34dca3243f2f270a4b9c
Diffstat (limited to 'absl/base/internal')
-rw-r--r--absl/base/internal/low_level_alloc.cc1
-rw-r--r--absl/base/internal/tsan_mutex_interface.h17
2 files changed, 17 insertions, 1 deletions
diff --git a/absl/base/internal/low_level_alloc.cc b/absl/base/internal/low_level_alloc.cc
index 08f89ea9ee54..8e2f9c98798b 100644
--- a/absl/base/internal/low_level_alloc.cc
+++ b/absl/base/internal/low_level_alloc.cc
@@ -30,6 +30,7 @@
 #ifndef ABSL_LOW_LEVEL_ALLOC_MISSING
 
 #ifndef _WIN32
+#include <pthread.h>
 #include <signal.h>
 #include <sys/mman.h>
 #include <unistd.h>
diff --git a/absl/base/internal/tsan_mutex_interface.h b/absl/base/internal/tsan_mutex_interface.h
index a1303e67c8f5..6bb4faedb879 100644
--- a/absl/base/internal/tsan_mutex_interface.h
+++ b/absl/base/internal/tsan_mutex_interface.h
@@ -19,7 +19,22 @@
 #ifndef ABSL_BASE_INTERNAL_TSAN_MUTEX_INTERFACE_H_
 #define ABSL_BASE_INTERNAL_TSAN_MUTEX_INTERFACE_H_
 
-#ifdef THREAD_SANITIZER
+// ABSL_INTERNAL_HAVE_TSAN_INTERFACE
+// Macro intended only for internal use.
+//
+// Checks whether LLVM Thread Sanitizer interfaces are available.
+// First made available in LLVM 5.0 (Sep 2017).
+#ifdef ABSL_INTERNAL_HAVE_TSAN_INTERFACE
+#error "ABSL_INTERNAL_HAVE_TSAN_INTERFACE cannot be directly set."
+#endif
+
+#if defined(THREAD_SANITIZER) && defined(__has_include)
+#if __has_include(<sanitizer/tsan_interface.h>)
+#define ABSL_INTERNAL_HAVE_TSAN_INTERFACE 1
+#endif
+#endif
+
+#ifdef ABSL_INTERNAL_HAVE_TSAN_INTERFACE
 #include <sanitizer/tsan_interface.h>
 
 #define ABSL_TSAN_MUTEX_CREATE __tsan_mutex_create