Merge pull request #3279 from xmcclure/tarjan-crash-2
[mono.git] / libgc / include / gc_pthread_redirects.h
index 842518cfcc48c2a0657b1cc6581994abf5cd8a44..520a36bf66c961af02a69a329ed48dd08ce0e664 100644 (file)
                                 const pthread_attr_t *attr,
                                 void * (*thread_execp)(void *), void *arg);
   extern int GC_pthread_join(pthread_t wait_for, void **status);
+  extern int GC_pthread_detach(pthread_t thread);
 # define pthread_join GC_pthread_join
 # define pthread_create GC_pthread_create
+# define pthread_detach GC_pthread_detach
 #endif
 
 #if defined(GC_SOLARIS_PTHREADS) || defined(GC_SOLARIS_THREADS)
@@ -44,7 +46,7 @@
 #endif /* SOLARIS_THREADS || SOLARIS_PTHREADS */
 
 
-#if !defined(GC_USE_LD_WRAP) && defined(GC_PTHREADS) && !defined(GC_SOLARIS_PTHREADS)
+#if !defined(GC_USE_LD_WRAP) && (defined(GC_PTHREADS) || defined(GC_DARWIN_THREADS) || defined(GC_MACOSX_THREADS)) && !defined(GC_SOLARIS_PTHREADS)
 /* We treat these similarly. */
 # include <pthread.h>
 # include <signal.h>
 #endif
   int GC_pthread_join(pthread_t thread, void **retval);
   int GC_pthread_detach(pthread_t thread);
+#if defined(__native_client__) || defined(NACL)
+  void GC_pthread_exit(void *status);
+# undef pthread_exit
+# define pthread_exit GC_pthread_exit
+#endif
 
 #if defined(GC_OSF1_THREADS) \
     && defined(_PTHREAD_USE_MANGLED_NAMES_) && !defined(_PTHREAD_USE_PTDNAM_)
 # define pthread_join GC_pthread_join
 # define pthread_detach GC_pthread_detach
 
-#ifndef GC_DARWIN_THREADS
+#ifndef GC_DARWIN_THREADS 
+# ifdef GC_NETBSD_THREADS
+#  undef pthread_sigmask
+# endif
 # define pthread_sigmask GC_pthread_sigmask
 # define dlopen GC_dlopen
 #endif