]> granicus.if.org Git - llvm/commitdiff
[libFuzzer] Changing thread_local to __thread in libFuzzer
authorKuba Mracek <mracek@apple.com>
Fri, 21 Apr 2017 17:39:50 +0000 (17:39 +0000)
committerKuba Mracek <mracek@apple.com>
Fri, 21 Apr 2017 17:39:50 +0000 (17:39 +0000)
Old Apple compilers do not support thread_local keyword. This patch adds -Dthread_local=__thread when the compiler doesn't support thread_local.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301007 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Fuzzer/CMakeLists.txt

index 59cef04cdece1eb653bb9d446aa9c227fcd478b7..d44c12de3e16913a940ec1be65427d8faf59f8da 100644 (file)
@@ -1,3 +1,16 @@
+include(CheckCXXSourceCompiles)
+
+CHECK_CXX_SOURCE_COMPILES("
+    static thread_local int blah;
+    int main() {
+      return 0;
+    }
+    " HAS_THREAD_LOCAL)
+
+if( NOT HAS_THREAD_LOCAL )
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Dthread_local=__thread")
+endif()
+
 set(LIBFUZZER_FLAGS_BASE "${CMAKE_CXX_FLAGS}")
 # Disable the coverage and sanitizer instrumentation for the fuzzer itself.
 set(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE} -fno-sanitize-coverage=trace-pc-guard,edge,trace-cmp,indirect-calls,8bit-counters -Werror")