Fix configuration of ptrace on FreeBSD.
authorJostein Kjønigsen <jostein@kjonigsen.net>
Fri, 3 Apr 2015 11:03:26 +0000 (11:03 +0000)
committerJostein Kjønigsen <jostein@kjonigsen.net>
Fri, 3 Apr 2015 14:18:54 +0000 (14:18 +0000)
This closes https://github.com/dotnet/coreclr/issues/625

src/pal/src/configure.cmake

index 50d84b1..697bc5f 100644 (file)
@@ -844,6 +844,9 @@ int main()
 }" FILE_OPS_CHECK_FERROR_OF_PREVIOUS_CALL)
 set(CMAKE_REQUIRED_DEFINITIONS)
 
+set(SYNCHMGR_SUSPENSION_SAFE_CONDITION_SIGNALING 1)
+set(ERROR_FUNC_FOR_GLOB_HAS_FIXED_PARAMS 1)
+
 if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
   set(HAVE_COREFOUNDATION 1)
   set(HAVE__NSGETENVIRON 1)
@@ -854,14 +857,29 @@ if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
   set(PAL_PT_READ_D PT_READ_D)
   set(PAL_PT_WRITE_D PT_WRITE_D)
   set(USE_SIGNALS_FOR_THREAD_SUSPENSION 0)
-  set(SYNCHMGR_SUSPENSION_SAFE_CONDITION_SIGNALING 1)
   set(JA_JP_LOCALE_NAME ja_JP.SJIS)
   set(KO_KR_LOCALE_NAME ko_KR.eucKR)
   set(ZH_TW_LOCALE_NAME zh_TG.BIG5)
-  set(ERROR_FUNC_FOR_GLOB_HAS_FIXED_PARAMS 1)
   set(HAS_FTRUNCATE_LENGTH_ISSUE 1)
   set(UNWIND_CONTEXT_IS_UCONTEXT_T 0)
-else()
+elseif(CMAKE_SYSTEM_NAME STREQUAL FreeBSD)
+  if(NOT HAVE_LIBUNWIND_H)
+    unset(HAVE_LIBUNWIND_H CACHE)
+    message(FATAL_ERROR "Cannot find libunwind. Try installing libunwind8 and libunwind8-dev (or the appropriate packages for your platform)")
+  endif()
+  set(DEADLOCK_WHEN_THREAD_IS_SUSPENDED_WHILE_BLOCKED_ON_MUTEX 0)
+  set(PAL_PTRACE "ptrace((cmd), (pid), (caddr_t)(addr), (data))")
+  set(PAL_PT_ATTACH PT_ATTACH)
+  set(PAL_PT_DETACH PT_DETACH)
+  set(PAL_PT_READ_D PT_READ_D)
+  set(PAL_PT_WRITE_D PT_WRITE_D)
+  set(USE_SIGNALS_FOR_THREAD_SUSPENSION 1)
+  set(JA_JP_LOCALE_NAME ja_JP_LOCALE_NOT_FOUND)
+  set(KO_KR_LOCALE_NAME ko_KR_LOCALE_NOT_FOUND)
+  set(ZH_TW_LOCALE_NAME zh_TW_LOCALE_NOT_FOUND)
+  set(HAS_FTRUNCATE_LENGTH_ISSUE 0)
+  set(UNWIND_CONTEXT_IS_UCONTEXT_T 1)
+else() # Anything else is Linux
   if(NOT HAVE_LIBUNWIND_H)
     unset(HAVE_LIBUNWIND_H CACHE)
     message(FATAL_ERROR "Cannot find libunwind. Try installing libunwind8 and libunwind8-dev (or the appropriate packages for your platform)")
@@ -873,11 +891,9 @@ else()
   set(PAL_PT_READ_D PTRACE_PEEKDATA)
   set(PAL_PT_WRITE_D PTRACE_POKEDATA)
   set(USE_SIGNALS_FOR_THREAD_SUSPENSION 1)
-  set(SYNCHMGR_SUSPENSION_SAFE_CONDITION_SIGNALING 1)
   set(JA_JP_LOCALE_NAME ja_JP_LOCALE_NOT_FOUND)
   set(KO_KR_LOCALE_NAME ko_KR_LOCALE_NOT_FOUND)
   set(ZH_TW_LOCALE_NAME zh_TW_LOCALE_NOT_FOUND)
-  set(ERROR_FUNC_FOR_GLOB_HAS_FIXED_PARAMS 1)
   set(HAS_FTRUNCATE_LENGTH_ISSUE 0)
   set(UNWIND_CONTEXT_IS_UCONTEXT_T 1)
 endif(CMAKE_SYSTEM_NAME STREQUAL Darwin)