[llvm] r330251 - [cmake] Improve pthread_[gs]etname_np detection code

Pavel Labath via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 18 06:13:27 PDT 2018


Author: labath
Date: Wed Apr 18 06:13:27 2018
New Revision: 330251

URL: http://llvm.org/viewvc/llvm-project?rev=330251&view=rev
Log:
[cmake] Improve pthread_[gs]etname_np detection code

Summary:
Due to some android peculiarities, in some build configurations
(statically linked executables targeting older releases) we could detect
the presence of these functions (because they are present in libc.a,
where check_library_exists searches), but then fail to build because the
headers did not include the definition.

This attempts to remedy that by upgrading the check_library_exists to
check_symbol_exists, which will check that the function is declared too.

I am hoping that a more thorough check will make the messy #ifdef we
have accumulated in the code obsolete, so I optimistically try to remove
them.

Reviewers: zturner, kparzysz, danalbert

Subscribers: srhines, mgorny, krytarowski, llvm-commits

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

Modified:
    llvm/trunk/cmake/config-ix.cmake
    llvm/trunk/lib/Support/Unix/Threading.inc

Modified: llvm/trunk/cmake/config-ix.cmake
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/config-ix.cmake?rev=330251&r1=330250&r2=330251&view=diff
==============================================================================
--- llvm/trunk/cmake/config-ix.cmake (original)
+++ llvm/trunk/cmake/config-ix.cmake Wed Apr 18 06:13:27 2018
@@ -252,12 +252,15 @@ endif()
 # This check requires _GNU_SOURCE
 check_symbol_exists(sched_getaffinity sched.h HAVE_SCHED_GETAFFINITY)
 check_symbol_exists(CPU_COUNT sched.h HAVE_CPU_COUNT)
-if(HAVE_LIBPTHREAD)
-  check_library_exists(pthread pthread_getname_np "" HAVE_PTHREAD_GETNAME_NP)
-  check_library_exists(pthread pthread_setname_np "" HAVE_PTHREAD_SETNAME_NP)
-elseif(PTHREAD_IN_LIBC)
-  check_library_exists(c pthread_getname_np "" HAVE_PTHREAD_GETNAME_NP)
-  check_library_exists(c pthread_setname_np "" HAVE_PTHREAD_SETNAME_NP)
+if (NOT PURE_WINDOWS)
+  if (LLVM_PTHREAD_LIB)
+    list(APPEND CMAKE_REQUIRED_LIBRARIES ${LLVM_PTHREAD_LIB})
+  endif()
+  check_symbol_exists(pthread_getname_np pthread.h HAVE_PTHREAD_GETNAME_NP)
+  check_symbol_exists(pthread_setname_np pthread.h HAVE_PTHREAD_SETNAME_NP)
+  if (LLVM_PTHREAD_LIB)
+    list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES ${LLVM_PTHREAD_LIB})
+  endif()
 endif()
 
 # available programs checks

Modified: llvm/trunk/lib/Support/Unix/Threading.inc
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Unix/Threading.inc?rev=330251&r1=330250&r2=330251&view=diff
==============================================================================
--- llvm/trunk/lib/Support/Unix/Threading.inc (original)
+++ llvm/trunk/lib/Support/Unix/Threading.inc Wed Apr 18 06:13:27 2018
@@ -204,7 +204,6 @@ void llvm::get_thread_name(SmallVectorIm
 
   Name.append(buf, buf + strlen(buf));
 #elif defined(__linux__)
-#if (defined(__GLIBC__) && defined(_GNU_SOURCE)) || defined(__ANDROID__)
 #if HAVE_PTHREAD_GETNAME_NP
   constexpr uint32_t len = get_max_thread_name_length_impl();
   char Buffer[len] = {'\0'};  // FIXME: working around MSan false positive.
@@ -212,5 +211,4 @@ void llvm::get_thread_name(SmallVectorIm
     Name.append(Buffer, Buffer + strlen(Buffer));
 #endif
 #endif
-#endif
 }




More information about the llvm-commits mailing list