+2018-02-17 Bruno Haible <bruno@clisp.org>
+
+ lock: Fix test-once1 crash on FreeBSD11.
+ * lib/glthread/lock.h: On FreeBSD, test the weak value of the symbol
+ 'pthread_create', not 'pthread_cancel'.
+
2018-02-17 Bruno Haible <bruno@clisp.org>
lock: Add test of gl_once.
# endif
# if !PTHREAD_IN_USE_DETECTION_HARD
-# pragma weak pthread_cancel
-# define pthread_in_use() (pthread_cancel != NULL)
+ /* On most platforms, pthread_cancel or pthread_kill can be used to
+ determine whether libpthread is in use.
+ On newer versions of FreeBSD, however, this is no longer possible,
+ because pthread_cancel and pthread_kill got added to libc. Therefore
+ use pthread_create to test whether libpthread is in use. */
+# if defined __FreeBSD__ || defined __DragonFly__ /* FreeBSD */
+# pragma weak pthread_create
+# define pthread_in_use() (pthread_create != NULL)
+# else /* glibc, NetBSD, OpenBSD, IRIX, OSF/1, Solaris */
+# pragma weak pthread_cancel
+# define pthread_in_use() (pthread_cancel != NULL)
+# endif
# endif
# else