Merge the DARWIN branch onto the trunk.

I tried using 'svn merge' to do the merge but it did a terrible job and
there were bazillions of conflicts.  So instead I just took the diff between
the branch and trunk  at r10155, applied the diff to the trunk, 'svn add'ed
the added files (no files needed to be 'svn remove'd) and committed.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10156 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/helgrind/hg_intercepts.c b/helgrind/hg_intercepts.c
index 698a082..47cb3af 100644
--- a/helgrind/hg_intercepts.c
+++ b/helgrind/hg_intercepts.c
@@ -195,9 +195,13 @@
 }
 
 // pthread_create
-PTH_FUNC(int, pthreadZucreateZAZa, // pthread_create@*
-              pthread_t *thread, const pthread_attr_t *attr,
-              void *(*start) (void *), void *arg)
+// glibc-2.8.90 has "pthread_create@@GLIBC_2.2.5".
+// Darwin has "pthread_create".
+//
+// DDD: for Darwin, need to have non-"@*"-suffixed versions for all pthread
+// functions that currently have them.
+static int pthread_create_WRK(pthread_t *thread, const pthread_attr_t *attr,
+                              void *(*start) (void *), void *arg)
 {
    int    ret;
    OrigFn fn;
@@ -234,6 +238,16 @@
    }
    return ret;
 }
+PTH_FUNC(int, pthreadZucreate, // pthread_create
+              pthread_t *thread, const pthread_attr_t *attr,
+              void *(*start) (void *), void *arg) {
+   return pthread_create_WRK(thread, attr, start, arg);
+}
+PTH_FUNC(int, pthreadZucreateZAZa, // pthread_create@*
+              pthread_t *thread, const pthread_attr_t *attr,
+              void *(*start) (void *), void *arg) {
+   return pthread_create_WRK(thread, attr, start, arg);
+}
 
 // pthread_join
 PTH_FUNC(int, pthreadZujoin, // pthread_join
@@ -756,6 +770,8 @@
 /*--- pthread_barrier_t functions                              ---*/
 /*----------------------------------------------------------------*/
 
+#if defined(HAVE_PTHREAD_BARRIER_INIT)
+
 /* Handled:   pthread_barrier_init
               pthread_barrier_wait
               pthread_barrier_destroy
@@ -861,6 +877,8 @@
    return ret;
 }
 
+#endif   // defined(HAVE_PTHREAD_BARRIER_INIT)
+
 /*----------------------------------------------------------------*/
 /*--- pthread_rwlock_t functions                               ---*/
 /*----------------------------------------------------------------*/