    GLIBC_PRIVATE {
      __pthread_initialize_minimal;
      __pthread_clock_gettime; __pthread_clock_settime;
+diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
+index 4edc74b1ef..4cf5e50524 100644
+--- a/nptl/pthreadP.h
++++ b/nptl/pthreadP.h
+@@ -19,6 +19,7 @@
+ #ifndef _PTHREADP_H
+ #define _PTHREADP_H	1
+ 
++#include <assert.h>
+ #include <pthread.h>
+ #include <setjmp.h>
+ #include <stdbool.h>
+@@ -599,6 +600,24 @@ extern void __wait_lookup_done (void) attribute_hidden;
+ # define USE_REQUEUE_PI(mut) 0
+ #endif
+ 
++static bool
++prio_inherit_missing (void)
++{
++#ifdef __NR_futex
++  static int tpi_supported;
++  if (__glibc_unlikely (tpi_supported == 0))
++    {
++      int lock = 0;
++      INTERNAL_SYSCALL_DECL (err);
++      int ret = INTERNAL_SYSCALL (futex, err, 4, &lock, FUTEX_UNLOCK_PI, 0, 0);
++      assert (INTERNAL_SYSCALL_ERROR_P (ret, err));
++      tpi_supported = INTERNAL_SYSCALL_ERRNO (ret, err) == ENOSYS ? -1 : 1;
++    }
++  return __glibc_unlikely (tpi_supported < 0);
++#endif
++  return true;
++}
++
+ /* Returns 0 if POL is a valid scheduling policy.  */
+ static inline int
+ check_sched_policy_attr (int pol)
 diff --git a/nptl/pthread_cond_broadcast.c b/nptl/pthread_cond_broadcast.c
 index 552fd42f60..0bf22fc205 100644
 --- a/nptl/pthread_cond_broadcast.c

+GLIBC_2.24 pthread_condattr_getprotocol_np F
+GLIBC_2.24 pthread_condattr_setprotocol_np F
-- 
2.13.1


+	    >> CONDATTR_PROTOCOL_SHIFT)
+     {
+     case PTHREAD_PRIO_INHERIT:
+       if (__glibc_unlikely (prio_inherit_missing ()))
+	  ret = ENOTSUP;
+       else
+	  cond->__data.__nwaiters |= COND_PRIO_INHERIT << COND_PROTOCOL_SHIFT;
+       break;
+
+     case PTHREAD_PRIO_PROTECT:
