---
 Makeconfig                             |  8 +--
 include/aio.h                          |  4 --
 include/mqueue.h                       | 15 ------
 include/time.h                         |  8 ---
 rt/Makefile                            | 25 +++-------
 rt/Versions                            | 63 +++++++-----------------
 rt/aio_cancel.c                        | 19 +++----
 rt/aio_error.c                         | 14 ++----
 rt/aio_fsync.c                         | 14 ++----
 rt/aio_misc.c                          | 29 ++---------
 rt/aio_notify.c                        |  7 +--
 rt/aio_read.c                          | 20 +++-----
 rt/aio_read64.c                        |  9 ++--
 rt/aio_return.c                        | 12 ++---
 rt/aio_suspend.c                       | 36 ++++----------
 rt/aio_write.c                         | 20 +++-----
 rt/aio_write64.c                       |  9 ++--
 rt/librt-compat.c                      | 26 +++++-----
 rt/lio_listio-common.c                 | 30 +++++-------
 rt/mq_close.c                          |  8 ++-
 rt/mq_getattr.c                        |  8 ++-
 rt/mq_notify.c                         |  8 ++-
 rt/mq_open.c                           | 13 ++++-
 rt/mq_receive.c                        | 10 +++-
 rt/mq_send.c                           | 10 +++-
 rt/mq_setattr.c                        | 12 +++--
 rt/mq_timedreceive.c                   | 13 +++--
 rt/mq_timedsend.c                      | 11 +++--
 rt/mq_unlink.c                         |  8 ++-
 rt/timer_create.c                      | 20 +++++---
 rt/timer_delete.c                      | 15 ++++--
 rt/timer_getoverr.c                    | 13 +++--
 rt/timer_gettime.c                     | 13 +++--
 rt/timer_settime.c                     | 19 ++++---
 sysdeps/htl/Makefile                   |  2 +-
 sysdeps/htl/pthreadP.h                 |  7 +++
 sysdeps/htl/rt-libc.h                  |  1 +
 sysdeps/htl/timer_routines.c           | 18 ++++---
 sysdeps/mach/hurd/i386/libc.abilist    | 68 ++++++++++++++++++++++++++
 sysdeps/mach/hurd/i386/librt.abilist   | 39 ++-------------
 sysdeps/mach/hurd/x86_64/libc.abilist  | 66 +++++++++++++++++++++++++
 sysdeps/mach/hurd/x86_64/librt.abilist | 34 +------------
 sysdeps/nptl/rt-libc.h                 |  1 +
 43 files changed, 405 insertions(+), 380 deletions(-)
 create mode 100644 sysdeps/htl/rt-libc.h
 create mode 100644 sysdeps/nptl/rt-libc.h

diff --git a/Makeconfig b/Makeconfig
index 67be5ca4da..52c5c08bf1 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -1456,16 +1456,12 @@ endif
 sysd-rules-targets := $(sort $(foreach p,$(sysd-rules-patterns),\
                                         $(firstword $(subst :, ,$p))))
 
-# $(libpthread-routines-var) and $(librt-routines-var) are the make
-# variable to which pthread routines need to be added to land in the
+# $(libanl-routines-var) is the make
+# variable to which libanl routines need to be added to land in the
 # right library.
 ifeq ($(pthread-in-libc),yes)
-libpthread-routines-var = routines
-librt-routines-var = routines
 libanl-routines-var = routines
 else
-libpthread-routines-var = libpthread-routines
-librt-routines-var = librt-routines
 libanl-routines-var = libanl-routines
 endif
 
diff --git a/include/aio.h b/include/aio.h
index 5d67800aff..35f7846d98 100644
--- a/include/aio.h
+++ b/include/aio.h
@@ -15,11 +15,7 @@ extern void __aio_init (const struct aioinit *__init);
 # else
 extern int __aio_suspend_time64 (const struct aiocb *const list[], int nent,
                                  const struct __timespec64 *timeout);
-#  if PTHREAD_IN_LIBC
 libc_hidden_proto (__aio_suspend_time64)
-#  else
-librt_hidden_proto (__aio_suspend_time64)
-#endif
 # endif
 #endif
 
diff --git a/include/mqueue.h b/include/mqueue.h
index 7a2459e603..20580228dd 100644
--- a/include/mqueue.h
+++ b/include/mqueue.h
@@ -4,15 +4,6 @@
 extern __typeof (mq_timedreceive) __mq_timedreceive __nonnull ((2, 5));
 extern __typeof (mq_timedsend) __mq_timedsend __nonnull ((2, 5));
 
-# if IS_IN (librt) && !PTHREAD_IN_LIBC
-hidden_proto (mq_timedsend)
-hidden_proto (__mq_timedsend)
-hidden_proto (mq_setattr)
-hidden_proto (mq_timedreceive)
-hidden_proto (__mq_timedreceive)
-# endif
-
-# if PTHREAD_IN_LIBC
 libc_hidden_proto (mq_setattr)
 libc_hidden_proto (__mq_timedreceive)
 libc_hidden_proto (__mq_timedsend)
@@ -20,7 +11,6 @@ libc_hidden_proto (__mq_timedsend)
 /* Called from fork so that the new subprocess re-creates the
    notification thread if necessary.  */
 void __mq_notify_fork_subprocess (void) attribute_hidden;
-# endif
 
 #include <struct___timespec64.h>
 #if __TIMESIZE == 64
@@ -36,12 +26,7 @@ extern ssize_t __mq_timedreceive_time64 (mqd_t mqdes,
                                          unsigned int *__restrict msg_prio,
                                          const struct __timespec64 *__restrict
                                          abs_timeout);
-#  if PTHREAD_IN_LIBC
 libc_hidden_proto (__mq_timedreceive_time64)
 libc_hidden_proto (__mq_timedsend_time64)
-#  else
-librt_hidden_proto (__mq_timedreceive_time64)
-librt_hidden_proto (__mq_timedsend_time64)
-#  endif
 #endif
 #endif
diff --git a/include/time.h b/include/time.h
index ceede2ea26..08a3215512 100644
--- a/include/time.h
+++ b/include/time.h
@@ -221,11 +221,7 @@ libc_hidden_proto (__futimens64);
 #else
 extern int __timer_gettime64 (timer_t timerid, struct __itimerspec64 *value);
 extern int __timerfd_gettime64 (int fd, struct __itimerspec64 *value);
-# if PTHREAD_IN_LIBC
 libc_hidden_proto (__timer_gettime64)
-# else
-librt_hidden_proto (__timer_gettime64)
-# endif
 libc_hidden_proto (__timerfd_gettime64);
 #endif
 
@@ -239,11 +235,7 @@ extern int __timer_settime64 (timer_t timerid, int flags,
 extern int __timerfd_settime64 (int fd, int flags,
                                 const struct __itimerspec64 *value,
                                 struct __itimerspec64 *ovalue);
-# if PTHREAD_IN_LIBC
 libc_hidden_proto (__timer_settime64)
-#else
-librt_hidden_proto (__timer_settime64)
-#endif
 libc_hidden_proto (__timerfd_settime64);
 #endif
 
diff --git a/rt/Makefile b/rt/Makefile
index d8d5c5d48a..39a3e5620b 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -25,13 +25,6 @@ include ../Makeconfig
 headers        := aio.h mqueue.h bits/mqueue.h bits/mqueue2.h
 
 routines = \
-  shm_open \
-  shm_unlink \
-
-librt-routines = librt-compat
-librt-shared-only-routines = librt-compat
-
-$(librt-routines-var) += \
   aio_cancel \
   aio_error \
   aio_fsync \
@@ -56,18 +49,22 @@ $(librt-routines-var) += \
   mq_timedreceive \
   mq_timedsend \
   mq_unlink \
+  shm_open \
+  shm_unlink \
   timer_create \
   timer_delete \
   timer_getoverr \
   timer_gettime \
   timer_settime \
+  # routines
+
+librt-routines = librt-compat
+librt-shared-only-routines = librt-compat
 
-ifeq ($(pthread-in-libc),yes)
 # Pretend that librt.so is a linker script, so that the symbolic
 # link is not installed.
 install-lib-ldscripts = librt.so
 $(inst_libdir)/librt.so:
-endif
 
 tests := tst-shm tst-timer tst-timer2 \
         tst-aio tst-aio64 tst-aio2 tst-aio3 tst-aio4 tst-aio5 tst-aio6 \
@@ -111,14 +108,4 @@ LDFLAGS-rt.so = -Wl,--enable-new-dtags,-z,nodelete
 
 $(objpfx)librt.so: $(shared-thread-library)
 
-ifneq ($(pthread-in-libc),yes)
-ifeq (yes,$(build-shared))
-$(addprefix $(objpfx),$(tests) $(tests-internal)): \
-       $(objpfx)librt.so $(shared-thread-library)
-else
-$(addprefix $(objpfx),$(tests)) $(tests-internal): \
-       $(objpfx)librt.a $(static-thread-library)
-endif
-endif # !$(pthread-in-libc)
-
 tst-mqueue7-ARGS = -- $(host-test-program-cmd)
diff --git a/rt/Versions b/rt/Versions
index a3dc72cff4..8278ae430b 100644
--- a/rt/Versions
+++ b/rt/Versions
@@ -1,6 +1,5 @@
 libc {
   GLIBC_2.1 {
-%if PTHREAD_IN_LIBC
     aio_init;
     aio_cancel;
     aio_cancel64;
@@ -18,21 +17,17 @@ libc {
     aio_write64;
     lio_listio;
     lio_listio64;
-%endif
   }
   GLIBC_2.2 {
-%if PTHREAD_IN_LIBC
     timer_create;
     timer_delete;
     timer_getoverrun;
     timer_gettime;
     timer_settime;
-%endif
     shm_open;
     shm_unlink;
   }
   GLIBC_2.3.4 {
-%if PTHREAD_IN_LIBC
     mq_close;
     mq_getattr;
     mq_notify;
@@ -43,21 +38,15 @@ libc {
     mq_timedreceive;
     mq_timedsend;
     mq_unlink;
-%endif
   }
   GLIBC_2.4 {
-%if PTHREAD_IN_LIBC
     lio_listio;
     lio_listio64;
-%endif
   }
   GLIBC_2.7 {
-%if PTHREAD_IN_LIBC
    __mq_open_2;
-%endif
   }
   GLIBC_2.34 {
-%if PTHREAD_IN_LIBC
     __mq_open_2;
     aio_cancel64;
     aio_cancel;
@@ -91,16 +80,11 @@ libc {
     timer_getoverrun;
     timer_gettime;
     timer_settime;
-%endif
     shm_open;
     shm_unlink;
   }
-}
-librt {
-  GLIBC_2.1 {
-%if PTHREAD_IN_LIBC
-    __librt_version_placeholder;
-%else
+  GLIBC_2.44 {
+    __mq_open_2;
     aio_cancel;
     aio_cancel64;
     aio_error;
@@ -118,23 +102,6 @@ librt {
     aio_write64;
     lio_listio;
     lio_listio64;
-%endif
-  }
-  GLIBC_2.2 {
-%if PTHREAD_IN_LIBC
-    __librt_version_placeholder;
-%else
-    timer_create;
-    timer_delete;
-    timer_getoverrun;
-    timer_gettime;
-    timer_settime;
-%endif
-  }
-  GLIBC_2.3.4 {
-%if PTHREAD_IN_LIBC
-    __librt_version_placeholder;
-%else
     mq_close;
     mq_getattr;
     mq_notify;
@@ -145,21 +112,27 @@ librt {
     mq_timedreceive;
     mq_timedsend;
     mq_unlink;
-%endif
+    timer_create;
+    timer_delete;
+    timer_getoverrun;
+    timer_gettime;
+    timer_settime;
+  }
+}
+librt {
+  GLIBC_2.1 {
+    __librt_version_placeholder;
+  }
+  GLIBC_2.2 {
+    __librt_version_placeholder;
+  }
+  GLIBC_2.3.4 {
+    __librt_version_placeholder;
   }
   GLIBC_2.4 {
-%if PTHREAD_IN_LIBC
     __librt_version_placeholder;
-%else
-    lio_listio;
-    lio_listio64;
-%endif
   }
   GLIBC_2.7 {
-%if PTHREAD_IN_LIBC
     __librt_version_placeholder;
-%else
-   __mq_open_2;
-%endif
   }
 }
diff --git a/rt/aio_cancel.c b/rt/aio_cancel.c
index 0b94303ade..8cccae702d 100644
--- a/rt/aio_cancel.c
+++ b/rt/aio_cancel.c
@@ -35,6 +35,8 @@
 
 #include <aio_misc.h>
 #include <pthreadP.h>
+#include <shlib-compat.h>
+#include <rt-libc.h>
 
 
 int
@@ -151,16 +153,11 @@ __aio_cancel (int fildes, struct aiocb *aiocbp)
 
   return result;
 }
-#if PTHREAD_IN_LIBC
-# ifndef __aio_cancel
-versioned_symbol (libc, __aio_cancel, aio_cancel, GLIBC_2_34);
-versioned_symbol (libc, __aio_cancel, aio_cancel64, GLIBC_2_34);
-#  if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+#ifndef __aio_cancel
+versioned_symbol (libc, __aio_cancel, aio_cancel, RT_IN_LIBC);
+versioned_symbol (libc, __aio_cancel, aio_cancel64, RT_IN_LIBC);
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, RT_IN_LIBC)
 compat_symbol (librt, __aio_cancel, aio_cancel, GLIBC_2_1);
 compat_symbol (librt, __aio_cancel, aio_cancel64, GLIBC_2_1);
-#  endif
-# endif /* __aio_cancel */
-#else /* !PTHREAD_IN_LIBC */
-strong_alias (__aio_cancel, aio_cancel)
-weak_alias (__aio_cancel, aio_cancel64)
-#endif
+# endif
+#endif /* __aio_cancel */
diff --git a/rt/aio_error.c b/rt/aio_error.c
index 8f93c5f509..a645f4ae37 100644
--- a/rt/aio_error.c
+++ b/rt/aio_error.c
@@ -30,6 +30,7 @@
 #include <aio_misc.h>
 #include <pthreadP.h>
 #include <shlib-compat.h>
+#include <rt-libc.h>
 
 int
 __aio_error (const struct aiocb *aiocbp)
@@ -45,14 +46,9 @@ __aio_error (const struct aiocb *aiocbp)
   return ret;
 }
 
-#if PTHREAD_IN_LIBC
-versioned_symbol (libc, __aio_error, aio_error, GLIBC_2_34);
-versioned_symbol (libc, __aio_error, aio_error64, GLIBC_2_34);
-# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+versioned_symbol (libc, __aio_error, aio_error, RT_IN_LIBC);
+versioned_symbol (libc, __aio_error, aio_error64, RT_IN_LIBC);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, RT_IN_LIBC)
 compat_symbol (librt, __aio_error, aio_error, GLIBC_2_1);
 compat_symbol (librt, __aio_error, aio_error64, GLIBC_2_1);
-# endif
-#else /* !PTHREAD_IN_LIBC */
-strong_alias (__aio_error, aio_error)
-weak_alias (__aio_error, aio_error64)
-#endif /* !PTHREAD_IN_LIBC */
+#endif
diff --git a/rt/aio_fsync.c b/rt/aio_fsync.c
index 946e192e3a..c04e92d154 100644
--- a/rt/aio_fsync.c
+++ b/rt/aio_fsync.c
@@ -31,6 +31,7 @@
 
 #include <aio_misc.h>
 #include <shlib-compat.h>
+#include <rt-libc.h>
 
 int
 __aio_fsync (int op, struct aiocb *aiocbp)
@@ -53,14 +54,9 @@ __aio_fsync (int op, struct aiocb *aiocbp)
          ? -1 : 0);
 }
 
-#if PTHREAD_IN_LIBC
-versioned_symbol (libc, __aio_fsync, aio_fsync, GLIBC_2_34);
-versioned_symbol (libc, __aio_fsync, aio_fsync64, GLIBC_2_34);
-# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+versioned_symbol (libc, __aio_fsync, aio_fsync, RT_IN_LIBC);
+versioned_symbol (libc, __aio_fsync, aio_fsync64, RT_IN_LIBC);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, RT_IN_LIBC)
 compat_symbol (librt, __aio_fsync, aio_fsync, GLIBC_2_1);
 compat_symbol (librt, __aio_fsync, aio_fsync64, GLIBC_2_1);
-# endif
-#else /* !PTHREAD_IN_LIBC */
-strong_alias (__aio_fsync, aio_fsync)
-weak_alias (__aio_fsync, aio_fsync64)
-#endif /* !PTHREAD_IN_LIBC */
+#endif
diff --git a/rt/aio_misc.c b/rt/aio_misc.c
index a4d170fb18..724486e66f 100644
--- a/rt/aio_misc.c
+++ b/rt/aio_misc.c
@@ -27,20 +27,8 @@
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <aio_misc.h>
-
-#if !PTHREAD_IN_LIBC
-/* The available function names differ outside of libc.  (In libc, we
-   need to use hidden aliases to avoid the PLT.)  */
-# define __pread __libc_pread
-# define __pthread_attr_destroy pthread_attr_destroy
-# define __pthread_attr_init pthread_attr_init
-# define __pthread_attr_setdetachstate pthread_attr_setdetachstate
-# define __pthread_cond_signal pthread_cond_signal
-# define __pthread_cond_timedwait pthread_cond_timedwait
-# define __pthread_getschedparam pthread_getschedparam
-# define __pthread_setschedparam pthread_setschedparam
-# define __pwrite __libc_pwrite
-#endif
+#include <shlib-compat.h>
+#include <rt-libc.h>
 
 #ifndef aio_create_helper_thread
 # define aio_create_helper_thread __aio_create_helper_thread
@@ -694,9 +682,6 @@ handle_fildes_io (void *arg)
 
 
 /* Free allocated resources.  */
-#if !PTHREAD_IN_LIBC
-__attribute__ ((__destructor__)) static
-#endif
 void
 __aio_freemem (void)
 {
@@ -737,11 +722,7 @@ add_request_to_runlist (struct requestlist *newrequest)
     }
 }
 
-#if PTHREAD_IN_LIBC
-versioned_symbol (libc, __aio_init, aio_init, GLIBC_2_34);
-# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+versioned_symbol (libc, __aio_init, aio_init, RT_IN_LIBC);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, RT_IN_LIBC)
 compat_symbol (librt, __aio_init, aio_init, GLIBC_2_1);
-# endif
-#else /* !PTHREAD_IN_LIBC */
-weak_alias (__aio_init, aio_init)
-#endif /* !PTHREAD_IN_LIBC */
+#endif
diff --git a/rt/aio_notify.c b/rt/aio_notify.c
index 9209c085e6..966c458f0c 100644
--- a/rt/aio_notify.c
+++ b/rt/aio_notify.c
@@ -23,11 +23,6 @@
 #include <aio_misc.h>
 #include <signal.h>
 
-#if !PTHREAD_IN_LIBC
-# define __pthread_attr_init pthread_attr_init
-# define __pthread_attr_setdetachstate pthread_attr_setdetachstate
-#endif
-
 #ifndef aio_start_notify_thread
 # define aio_start_notify_thread() do { } while (0)
 #endif
@@ -142,7 +137,7 @@ __aio_notify (struct requestlist *req)
          /* Decrement the counter.  */
          --*waitlist->counterp;
 
-         pthread_cond_signal (waitlist->cond);
+         __pthread_cond_signal (waitlist->cond);
 #endif
        }
       else
diff --git a/rt/aio_read.c b/rt/aio_read.c
index 6907987fe7..01f7ee08f9 100644
--- a/rt/aio_read.c
+++ b/rt/aio_read.c
@@ -28,6 +28,7 @@
 
 #include <aio_misc.h>
 #include <shlib-compat.h>
+#include <rt-libc.h>
 
 int
 __aio_read (struct aiocb *aiocbp)
@@ -36,20 +37,13 @@ __aio_read (struct aiocb *aiocbp)
          ? -1 : 0);
 }
 
-#if PTHREAD_IN_LIBC
-versioned_symbol (libc, __aio_read, aio_read, GLIBC_2_34);
-# if __WORDSIZE == 64
-versioned_symbol (libc, __aio_read, aio_read64, GLIBC_2_34);
-# endif
-# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+versioned_symbol (libc, __aio_read, aio_read, RT_IN_LIBC);
+#if __WORDSIZE == 64
+versioned_symbol (libc, __aio_read, aio_read64, RT_IN_LIBC);
+#endif
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, RT_IN_LIBC)
 compat_symbol (librt, __aio_read, aio_read, GLIBC_2_1);
-#  if __WORDSIZE == 64
+# if __WORDSIZE == 64
 compat_symbol (librt, __aio_read, aio_read64, GLIBC_2_1);
-#  endif
 # endif
-#else /* !PTHREAD_IN_LIBC */
-strong_alias (__aio_read, aio_read)
-# if __WORDSIZE == 64
-weak_alias (__aio_read, aio_read64)
 #endif
-#endif  /* !PTHREAD_IN_LIBC */
diff --git a/rt/aio_read64.c b/rt/aio_read64.c
index 17ea059e89..e69ce8f332 100644
--- a/rt/aio_read64.c
+++ b/rt/aio_read64.c
@@ -22,6 +22,7 @@
 # include <aio.h>
 # include <aio_misc.h>
 # include <shlib-compat.h>
+# include <rt-libc.h>
 
 int
 __aio_read64 (struct aiocb64 *aiocbp)
@@ -30,12 +31,8 @@ __aio_read64 (struct aiocb64 *aiocbp)
          ? -1 : 0);
 }
 
-# if PTHREAD_IN_LIBC
-versioned_symbol (libc, __aio_read64, aio_read64, GLIBC_2_34);
-#  if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+versioned_symbol (libc, __aio_read64, aio_read64, RT_IN_LIBC);
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, RT_IN_LIBC)
 compat_symbol (librt, __aio_read64, aio_read64, GLIBC_2_1);
-#  endif
-# else /* !PTHREAD_IN_LIBC */
-strong_alias (__aio_read64, aio_read64)
 # endif
 #endif /* __WORDSIZE != 64 */
diff --git a/rt/aio_return.c b/rt/aio_return.c
index 3f9cd62002..291760d175 100644
--- a/rt/aio_return.c
+++ b/rt/aio_return.c
@@ -28,6 +28,7 @@
 #undef aio_return64
 
 #include <shlib-compat.h>
+#include <rt-libc.h>
 
 ssize_t
 __aio_return (struct aiocb *aiocbp)
@@ -35,14 +36,9 @@ __aio_return (struct aiocb *aiocbp)
   return aiocbp->__return_value;
 }
 
-#if PTHREAD_IN_LIBC
-versioned_symbol (libc, __aio_return, aio_return, GLIBC_2_34);
-versioned_symbol (libc, __aio_return, aio_return64, GLIBC_2_34);
-# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+versioned_symbol (libc, __aio_return, aio_return, RT_IN_LIBC);
+versioned_symbol (libc, __aio_return, aio_return64, RT_IN_LIBC);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, RT_IN_LIBC)
 compat_symbol (librt, __aio_return, aio_return, GLIBC_2_1);
 compat_symbol (librt, __aio_return, aio_return64, GLIBC_2_1);
-# endif
-#else /* !PTHREAD_IN_LIBC */
-strong_alias (__aio_return, aio_return)
-weak_alias (__aio_return, aio_return64)
 #endif
diff --git a/rt/aio_suspend.c b/rt/aio_suspend.c
index 69a9454a55..10eb3dc59d 100644
--- a/rt/aio_suspend.c
+++ b/rt/aio_suspend.c
@@ -37,6 +37,7 @@
 #include <aio_misc.h>
 #include <pthreadP.h>
 #include <shlib-compat.h>
+#include <rt-libc.h>
 
 
 struct clparam
@@ -85,7 +86,7 @@ cleanup (void *arg)
 
 #ifndef DONT_NEED_AIO_MISC_COND
   /* Release the conditional variable.  */
-  (void) pthread_cond_destroy (param->cond);
+  (void) __pthread_cond_destroy (param->cond);
 #endif
 
   /* Release the mutex.  */
@@ -185,11 +186,7 @@ ___aio_suspend_time64 (const struct aiocb *const list[], 
int nent,
          .nent = nent
        };
 
-#if PTHREAD_IN_LIBC
       __libc_cleanup_region_start (1, cleanup, &clparam);
-#else
-      __pthread_cleanup_push (cleanup, &clparam);
-#endif
 
 #ifdef DONT_NEED_AIO_MISC_COND
       result = do_aio_misc_wait (&cntr, timeout == NULL ? NULL : &ts);
@@ -200,11 +197,7 @@ ___aio_suspend_time64 (const struct aiocb *const list[], 
int nent,
                                         timeout == NULL ? NULL : &ts32);
 #endif
 
-#if PTHREAD_IN_LIBC
       __libc_cleanup_region_end (0);
-#else
-      pthread_cleanup_pop (0);
-#endif
     }
 
   /* Now remove the entry in the waiting list for all requests
@@ -228,7 +221,7 @@ ___aio_suspend_time64 (const struct aiocb *const list[], 
int nent,
 
 #ifndef DONT_NEED_AIO_MISC_COND
   /* Release the conditional variable.  */
-  if (__glibc_unlikely (pthread_cond_destroy (&cond) != 0))
+  if (__glibc_unlikely (__pthread_cond_destroy (&cond) != 0))
     /* This must never happen.  */
     abort ();
 #endif
@@ -257,14 +250,10 @@ ___aio_suspend_time64 (const struct aiocb *const list[], 
int nent,
 #if __TIMESIZE == 64
 strong_alias (___aio_suspend_time64, __aio_suspend)
 #else /* __TIMESIZE != 64 */
-# if PTHREAD_IN_LIBC
 libc_hidden_ver (___aio_suspend_time64, __aio_suspend_time64)
-/* The conditional is slightly wrong: PTHREAD_IN_LIBC is a stand-in
-   for whether time64 support is needed.  */
-versioned_symbol (libc, ___aio_suspend_time64, __aio_suspend_time64, 
GLIBC_2_34);
-# else
-librt_hidden_ver (___aio_suspend_time64, __aio_suspend_time64)
-# endif
+#ifndef __PTHREAD_HTL
+versioned_symbol (libc, ___aio_suspend_time64, __aio_suspend_time64, 
RT_IN_LIBC);
+#endif
 
 int
 __aio_suspend (const struct aiocb *const list[], int nent,
@@ -279,14 +268,9 @@ __aio_suspend (const struct aiocb *const list[], int nent,
 }
 #endif /* __TIMESPEC64 != 64 */
 
-#if PTHREAD_IN_LIBC
-versioned_symbol (libc, __aio_suspend, aio_suspend, GLIBC_2_34);
-versioned_symbol (libc, __aio_suspend, aio_suspend64, GLIBC_2_34);
-# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+versioned_symbol (libc, __aio_suspend, aio_suspend, RT_IN_LIBC);
+versioned_symbol (libc, __aio_suspend, aio_suspend64, RT_IN_LIBC);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, RT_IN_LIBC)
 compat_symbol (librt, __aio_suspend, aio_suspend, GLIBC_2_1);
 compat_symbol (librt, __aio_suspend, aio_suspend64, GLIBC_2_1);
-# endif
-#else /* !PTHREAD_IN_LIBC */
-weak_alias (__aio_suspend, aio_suspend)
-weak_alias (__aio_suspend, aio_suspend64)
-#endif /* !PTHREAD_IN_LIBC */
+#endif
diff --git a/rt/aio_write.c b/rt/aio_write.c
index 39be868def..86b8d42dd0 100644
--- a/rt/aio_write.c
+++ b/rt/aio_write.c
@@ -28,6 +28,7 @@
 
 #include <aio_misc.h>
 #include <shlib-compat.h>
+#include <rt-libc.h>
 
 int
 __aio_write (struct aiocb *aiocbp)
@@ -36,20 +37,13 @@ __aio_write (struct aiocb *aiocbp)
          ? -1 : 0);
 }
 
-#if PTHREAD_IN_LIBC
-versioned_symbol (libc, __aio_write, aio_write, GLIBC_2_34);
-# if __WORDSIZE == 64
-versioned_symbol (libc, __aio_write, aio_write64, GLIBC_2_34);
-# endif
-# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+versioned_symbol (libc, __aio_write, aio_write, RT_IN_LIBC);
+#if __WORDSIZE == 64
+versioned_symbol (libc, __aio_write, aio_write64, RT_IN_LIBC);
+#endif
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, RT_IN_LIBC)
 compat_symbol (librt, __aio_write, aio_write, GLIBC_2_1);
-#  if __WORDSIZE == 64
+# if __WORDSIZE == 64
 compat_symbol (librt, __aio_write, aio_write64, GLIBC_2_1);
-#  endif
 # endif
-#else /* !PTHREAD_IN_LIBC */
-strong_alias (__aio_write, aio_write)
-# if __WORDSIZE == 64
-weak_alias (__aio_write, aio_write64)
 #endif
-#endif  /* !PTHREAD_IN_LIBC */
diff --git a/rt/aio_write64.c b/rt/aio_write64.c
index c819779134..3bb9110888 100644
--- a/rt/aio_write64.c
+++ b/rt/aio_write64.c
@@ -22,6 +22,7 @@
 # include <aio.h>
 # include <aio_misc.h>
 # include <shlib-compat.h>
+# include <rt-libc.h>
 
 int
 __aio_write64 (struct aiocb64 *aiocbp)
@@ -30,12 +31,8 @@ __aio_write64 (struct aiocb64 *aiocbp)
          ? -1 : 0);
 }
 
-# if PTHREAD_IN_LIBC
-versioned_symbol (libc, __aio_write64, aio_write64, GLIBC_2_34);
-#  if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+versioned_symbol (libc, __aio_write64, aio_write64, RT_IN_LIBC);
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, RT_IN_LIBC)
 compat_symbol (librt, __aio_write64, aio_write64, GLIBC_2_1);
-#  endif
-# else /* !PTHREAD_IN_LIBC */
-strong_alias (__aio_write64, aio_write64)
 # endif
 #endif /* __WORDSIZE != 64 */
diff --git a/rt/librt-compat.c b/rt/librt-compat.c
index b171a63139..f11c759cb8 100644
--- a/rt/librt-compat.c
+++ b/rt/librt-compat.c
@@ -16,11 +16,11 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#if PTHREAD_IN_LIBC
-# include <shlib-compat.h>
-# include <sys/cdefs.h>
+#include <shlib-compat.h>
+#include <sys/cdefs.h>
+#include <rt-libc.h>
 
-# if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
+#if SHLIB_COMPAT (librt, GLIBC_2_1, RT_IN_LIBC)
 void
 attribute_compat_text_section
 __attribute_used__
@@ -30,26 +30,24 @@ __librt_version_placeholder_1 (void)
 
 compat_symbol (librt, __librt_version_placeholder_1,
                __librt_version_placeholder, GLIBC_2_1);
-# endif
+#endif
 
-# if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_34)
+#if SHLIB_COMPAT (librt, GLIBC_2_2, RT_IN_LIBC)
 compat_symbol (librt, __librt_version_placeholder_1,
                __librt_version_placeholder, GLIBC_2_2);
-# endif
+#endif
 
-# if SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34)
+#if SHLIB_COMPAT (librt, GLIBC_2_3_4, RT_IN_LIBC)
 compat_symbol (librt, __librt_version_placeholder_1,
                __librt_version_placeholder, GLIBC_2_3_4);
-# endif
+#endif
 
-# if SHLIB_COMPAT (librt, GLIBC_2_4, GLIBC_2_34)
+#if SHLIB_COMPAT (librt, GLIBC_2_4, RT_IN_LIBC)
 compat_symbol (librt, __librt_version_placeholder_1,
                __librt_version_placeholder, GLIBC_2_4);
-# endif
+#endif
 
-# if SHLIB_COMPAT (librt, GLIBC_2_7, GLIBC_2_34)
+#if SHLIB_COMPAT (librt, GLIBC_2_7, RT_IN_LIBC)
 compat_symbol (librt, __librt_version_placeholder_1,
                __librt_version_placeholder, GLIBC_2_7);
-# endif
-
 #endif
diff --git a/rt/lio_listio-common.c b/rt/lio_listio-common.c
index 3848c0097e..c5da257591 100644
--- a/rt/lio_listio-common.c
+++ b/rt/lio_listio-common.c
@@ -46,6 +46,7 @@
 #include <aio_misc.h>
 
 #include <shlib-compat.h>
+#include <rt-libc.h>
 
 
 /* We need this special structure to handle asynchronous I/O.  */
@@ -160,16 +161,16 @@ lio_listio_internal (int mode, struct AIOCB *const 
list[], int nent,
       /* Since `pthread_cond_wait'/`pthread_cond_timedwait' are cancellation
         points we must be careful.  We added entries to the waiting lists
         which we must remove.  So defer cancellation for now.  */
-      pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &oldstate);
+      __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &oldstate);
 
       while (total > 0)
-       pthread_cond_wait (&cond, &__aio_requests_mutex);
+       __pthread_cond_wait (&cond, &__aio_requests_mutex);
 
       /* Now it's time to restore the cancellation state.  */
-      pthread_setcancelstate (oldstate, NULL);
+      __pthread_setcancelstate (oldstate, NULL);
 
       /* Release the conditional variable.  */
-      if (pthread_cond_destroy (&cond) != 0)
+      if (__pthread_cond_destroy (&cond) != 0)
        /* This must never happen.  */
        abort ();
 #endif
@@ -265,20 +266,13 @@ LIO_LISTIO_NEW (int mode, struct AIOCB *const list[], int 
nent,
   return lio_listio_internal (mode, list, nent, sig);
 }
 
-#if PTHREAD_IN_LIBC
-versioned_symbol (libc, LIO_LISTIO_NEW, LIO_LISTIO, GLIBC_2_34);
-# if __WORDSIZE == 64
-versioned_symbol (libc, LIO_LISTIO_NEW, lio_listio64, GLIBC_2_34);
-# endif
-# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_4, GLIBC_2_34)
+versioned_symbol (libc, LIO_LISTIO_NEW, LIO_LISTIO, RT_IN_LIBC);
+#if __WORDSIZE == 64
+versioned_symbol (libc, LIO_LISTIO_NEW, lio_listio64, RT_IN_LIBC);
+#endif
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_4, RT_IN_LIBC)
 compat_symbol (librt, LIO_LISTIO_NEW, LIO_LISTIO, GLIBC_2_4);
-#  if __WORDSIZE == 64
-compat_symbol (librt, LIO_LISTIO_NEW, lio_listio64, GLIBC_2_4);
-#  endif
-# endif /* OTHER_SHLIB_COMPAT */
-#else /* !PTHREAD_IN_LIBC */
-versioned_symbol (librt, LIO_LISTIO_NEW, LIO_LISTIO, GLIBC_2_4);
 # if __WORDSIZE == 64
-versioned_symbol (librt, LIO_LISTIO_NEW, lio_listio64, GLIBC_2_4);
+compat_symbol (librt, LIO_LISTIO_NEW, lio_listio64, GLIBC_2_4);
 # endif
-#endif /* !PTHREAD_IN_LIBC */
+#endif /* OTHER_SHLIB_COMPAT */
diff --git a/rt/mq_close.c b/rt/mq_close.c
index 3f5b4c614b..9d50e3212f 100644
--- a/rt/mq_close.c
+++ b/rt/mq_close.c
@@ -17,13 +17,19 @@
 
 #include <errno.h>
 #include <mqueue.h>
+#include <shlib-compat.h>
+#include <rt-libc.h>
 
 /* Removes the association between message queue descriptor MQDES and its
    message queue.  */
 int
-mq_close (mqd_t mqdes)
+__mq_close (mqd_t mqdes)
 {
   __set_errno (ENOSYS);
   return -1;
 }
+versioned_symbol (libc, __mq_close, mq_close, RT_IN_LIBC);
 stub_warning (mq_close)
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, RT_IN_LIBC)
+compat_symbol (librt, __mq_close, mq_close, GLIBC_2_3_4);
+#endif
diff --git a/rt/mq_getattr.c b/rt/mq_getattr.c
index 71d544097c..e2d33a38cd 100644
--- a/rt/mq_getattr.c
+++ b/rt/mq_getattr.c
@@ -17,12 +17,18 @@
 
 #include <errno.h>
 #include <mqueue.h>
+#include <shlib-compat.h>
+#include <rt-libc.h>
 
 /* Query status and attributes of message queue MQDES.  */
 int
-mq_getattr (mqd_t mqdes, struct mq_attr *mqstat)
+__mq_getattr (mqd_t mqdes, struct mq_attr *mqstat)
 {
   __set_errno (ENOSYS);
   return -1;
 }
+versioned_symbol (libc, __mq_getattr, mq_getattr, RT_IN_LIBC);
 stub_warning (mq_getattr)
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, RT_IN_LIBC)
+compat_symbol (librt, __mq_getattr, mq_getattr, GLIBC_2_3_4);
+#endif
diff --git a/rt/mq_notify.c b/rt/mq_notify.c
index de5cd3ff80..6f1274deb2 100644
--- a/rt/mq_notify.c
+++ b/rt/mq_notify.c
@@ -17,13 +17,19 @@
 
 #include <errno.h>
 #include <mqueue.h>
+#include <shlib-compat.h>
+#include <rt-libc.h>
 
 /* Register notification upon message arrival to an empty message queue
    MQDES.  */
 int
-mq_notify (mqd_t mqdes, const struct sigevent *notification)
+__mq_notify (mqd_t mqdes, const struct sigevent *notification)
 {
   __set_errno (ENOSYS);
   return -1;
 }
+versioned_symbol (libc, __mq_notify, mq_notify, RT_IN_LIBC);
 stub_warning (mq_notify)
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, RT_IN_LIBC)
+compat_symbol (librt, __mq_notify, mq_notify, GLIBC_2_3_4);
+#endif
diff --git a/rt/mq_open.c b/rt/mq_open.c
index 3b1fc8e17d..34cef8d6d7 100644
--- a/rt/mq_open.c
+++ b/rt/mq_open.c
@@ -18,6 +18,8 @@
 #include <errno.h>
 #include <mqueue.h>
 #include <stdio.h>
+#include <shlib-compat.h>
+#include <rt-libc.h>
 
 /* Establish connection between a process and a message queue NAME and
    return message queue descriptor or (mqd_t) -1 on error.  OFLAG determines
@@ -32,11 +34,14 @@ __mq_open (const char *name, int oflag, ...)
   __set_errno (ENOSYS);
   return (mqd_t) -1;
 }
-strong_alias (__mq_open, mq_open);
+versioned_symbol (libc, __mq_open, mq_open, RT_IN_LIBC);
 stub_warning (mq_open)
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, RT_IN_LIBC)
+compat_symbol (librt, __mq_open, mq_open, GLIBC_2_3_4);
+#endif
 
 mqd_t
-__mq_open_2 (const char *name, int oflag)
+___mq_open_2 (const char *name, int oflag)
 {
   if (oflag & O_CREAT)
     __fortify_fail ("invalid mq_open call: O_CREAT without mode and attr");
@@ -44,3 +49,7 @@ __mq_open_2 (const char *name, int oflag)
   return __mq_open (name, oflag);
 }
 stub_warning (__mq_open_2)
+versioned_symbol (libc, ___mq_open_2, __mq_open_2, RT_IN_LIBC);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_7, RT_IN_LIBC)
+compat_symbol (librt, ___mq_open_2, __mq_open_2, GLIBC_2_7);
+#endif
diff --git a/rt/mq_receive.c b/rt/mq_receive.c
index e258feb89b..f4ebf3a432 100644
--- a/rt/mq_receive.c
+++ b/rt/mq_receive.c
@@ -17,14 +17,20 @@
 
 #include <errno.h>
 #include <mqueue.h>
+#include <shlib-compat.h>
+#include <rt-libc.h>
 
 /* Receive the oldest from highest priority messages in message queue
    MQDES.  */
 ssize_t
-mq_receive (mqd_t mqdes, char *msg_ptr, size_t msg_len,
-           unsigned int *msg_prio)
+__mq_receive (mqd_t mqdes, char *msg_ptr, size_t msg_len,
+             unsigned int *msg_prio)
 {
   __set_errno (ENOSYS);
   return -1;
 }
+versioned_symbol (libc, __mq_receive, mq_receive, RT_IN_LIBC);
 stub_warning (mq_receive)
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, RT_IN_LIBC)
+compat_symbol (librt, __mq_receive, mq_receive, GLIBC_2_3_4);
+#endif
diff --git a/rt/mq_send.c b/rt/mq_send.c
index fbe53762ae..50ead894b3 100644
--- a/rt/mq_send.c
+++ b/rt/mq_send.c
@@ -17,13 +17,19 @@
 
 #include <errno.h>
 #include <mqueue.h>
+#include <shlib-compat.h>
+#include <rt-libc.h>
 
 /* Add message pointed by MSG_PTR to message queue MQDES.  */
 int
-mq_send (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
-        unsigned int msg_prio)
+__mq_send (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
+          unsigned int msg_prio)
 {
   __set_errno (ENOSYS);
   return -1;
 }
+versioned_symbol (libc, __mq_send, mq_send, RT_IN_LIBC);
 stub_warning (mq_send)
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, RT_IN_LIBC)
+compat_symbol (librt, __mq_send, mq_send, GLIBC_2_3_4);
+#endif
diff --git a/rt/mq_setattr.c b/rt/mq_setattr.c
index dfad7ab891..ad23c04cf0 100644
--- a/rt/mq_setattr.c
+++ b/rt/mq_setattr.c
@@ -17,15 +17,21 @@
 
 #include <errno.h>
 #include <mqueue.h>
+#include <shlib-compat.h>
+#include <rt-libc.h>
 
 /* Set attributes associated with message queue MQDES and if OMQSTAT is
    not NULL also query its old attributes.  */
 int
-mq_setattr (mqd_t mqdes, const struct mq_attr *__restrict mqstat,
-           struct mq_attr *__restrict omqstat)
+__mq_setattr (mqd_t mqdes, const struct mq_attr *__restrict mqstat,
+             struct mq_attr *__restrict omqstat)
 {
   __set_errno (ENOSYS);
   return -1;
 }
-hidden_def (mq_setattr)
+versioned_symbol (libc, __mq_setattr, mq_setattr, RT_IN_LIBC);
+libc_hidden_ver (__mq_setattr, mq_setattr)
 stub_warning (mq_setattr)
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, RT_IN_LIBC)
+compat_symbol (librt, __mq_setattr, mq_setattr, GLIBC_2_3_4);
+#endif
diff --git a/rt/mq_timedreceive.c b/rt/mq_timedreceive.c
index 3655d4b46b..1987d22de5 100644
--- a/rt/mq_timedreceive.c
+++ b/rt/mq_timedreceive.c
@@ -17,18 +17,23 @@
 
 #include <errno.h>
 #include <mqueue.h>
+#include <shlib-compat.h>
+#include <rt-libc.h>
 
 /* Receive the oldest from highest priority messages in message queue
    MQDES, stop waiting if ABS_TIMEOUT expires.  */
 ssize_t
 __mq_timedreceive (mqd_t mqdes, char *__restrict msg_ptr, size_t msg_len,
-                unsigned int *__restrict msg_prio,
-                const struct timespec *__restrict abs_timeout)
+                  unsigned int *__restrict msg_prio,
+                  const struct timespec *__restrict abs_timeout)
 {
   __set_errno (ENOSYS);
   return -1;
 }
 hidden_def (__mq_timedreceive)
-weak_alias (__mq_timedreceive, mq_timedreceive)
-hidden_weak (mq_timedreceive)
+versioned_symbol (libc, __mq_timedreceive, mq_timedreceive, RT_IN_LIBC);
+libc_hidden_ver (__mq_timedreceive, mq_timedreceive)
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, RT_IN_LIBC)
+compat_symbol (librt, __mq_timedreceive, mq_timedreceive, GLIBC_2_3_4);
+#endif
 stub_warning (mq_timedreceive)
diff --git a/rt/mq_timedsend.c b/rt/mq_timedsend.c
index 1ef30038ba..7c46f76d1c 100644
--- a/rt/mq_timedsend.c
+++ b/rt/mq_timedsend.c
@@ -17,17 +17,22 @@
 
 #include <errno.h>
 #include <mqueue.h>
+#include <shlib-compat.h>
+#include <rt-libc.h>
 
 /* Add message pointed by MSG_PTR to message queue MQDES, stop blocking
    on full message queue if ABS_TIMEOUT expires.  */
 int
 __mq_timedsend (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
-             unsigned int msg_prio, const struct timespec *abs_timeout)
+               unsigned int msg_prio, const struct timespec *abs_timeout)
 {
   __set_errno (ENOSYS);
   return -1;
 }
 hidden_def (__mq_timedsend)
-weak_alias (__mq_timedsend, mq_timedsend)
-hidden_weak (mq_timedsend)
+versioned_symbol (libc, __mq_timedsend, mq_timedsend, RT_IN_LIBC);
+libc_hidden_ver (__mq_timedsend, mq_timedsend)
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, RT_IN_LIBC)
+compat_symbol (librt, __mq_timedsend, mq_timedsend, GLIBC_2_3_4);
+#endif
 stub_warning (mq_timedsend)
diff --git a/rt/mq_unlink.c b/rt/mq_unlink.c
index c1f06cec6e..120e54352f 100644
--- a/rt/mq_unlink.c
+++ b/rt/mq_unlink.c
@@ -17,12 +17,18 @@
 
 #include <errno.h>
 #include <mqueue.h>
+#include <shlib-compat.h>
+#include <rt-libc.h>
 
 /* Remove message queue named NAME.  */
 int
-mq_unlink (const char *name)
+__mq_unlink (const char *name)
 {
   __set_errno (ENOSYS);
   return -1;
 }
+versioned_symbol (libc, __mq_unlink, mq_unlink, RT_IN_LIBC);
 stub_warning (mq_unlink)
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, RT_IN_LIBC)
+compat_symbol (librt, __mq_unlink, mq_unlink, GLIBC_2_3_4);
+#endif
diff --git a/rt/timer_create.c b/rt/timer_create.c
index 4f03dcb867..33767db142 100644
--- a/rt/timer_create.c
+++ b/rt/timer_create.c
@@ -21,12 +21,14 @@
 #include <time.h>
 #include <unistd.h>
 
-#include "posix-timer.h"
+#include <shlib-compat.h>
+#include <rt-libc.h>
 
+#include "posix-timer.h"
 
 /* Create new per-process timer using CLOCK.  */
 int
-timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
+__timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
 {
   int retval = -1;
   struct timer_node *newtimer = NULL;
@@ -53,7 +55,7 @@ timer_create (clockid_t clock_id, struct sigevent *evp, 
timer_t *timerid)
       return -1;
     }
 
-  pthread_once (&__timer_init_once_control, __timer_init_once);
+  __pthread_once (&__timer_init_once_control, __timer_init_once);
 
   if (__timer_init_failed)
     {
@@ -61,7 +63,7 @@ timer_create (clockid_t clock_id, struct sigevent *evp, 
timer_t *timerid)
       return -1;
     }
 
-  pthread_mutex_lock (&__timer_mutex);
+  __pthread_mutex_lock (&__timer_mutex);
 
   newtimer = __timer_alloc ();
   if (__glibc_unlikely (newtimer == NULL))
@@ -106,10 +108,10 @@ timer_create (clockid_t clock_id, struct sigevent *evp, 
timer_t *timerid)
       if (evp->sigev_notify_attributes)
        newtimer->attr = *(pthread_attr_t *) evp->sigev_notify_attributes;
       else
-       pthread_attr_init (&newtimer->attr);
+       __pthread_attr_init (&newtimer->attr);
 
       /* Ensure thread attributes call for detached thread.  */
-      pthread_attr_setdetachstate (&newtimer->attr, PTHREAD_CREATE_DETACHED);
+      __pthread_attr_setdetachstate (&newtimer->attr, PTHREAD_CREATE_DETACHED);
 
       /* Try to find existing thread having the right attributes.  */
       thread = __timer_thread_find_matching (&newtimer->attr, clock_id);
@@ -159,7 +161,11 @@ timer_create (clockid_t clock_id, struct sigevent *evp, 
timer_t *timerid)
        }
     }
 
-  pthread_mutex_unlock (&__timer_mutex);
+  __pthread_mutex_unlock (&__timer_mutex);
 
   return retval;
 }
+versioned_symbol (libc, __timer_create, timer_create, RT_IN_LIBC);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, RT_IN_LIBC)
+compat_symbol (librt, __timer_create, timer_create, GLIBC_2_2);
+#endif
diff --git a/rt/timer_delete.c b/rt/timer_delete.c
index dfd9e849f6..f6c08e62f9 100644
--- a/rt/timer_delete.c
+++ b/rt/timer_delete.c
@@ -20,17 +20,20 @@
 #include <pthread.h>
 #include <time.h>
 
+#include <shlib-compat.h>
+#include <rt-libc.h>
+
 #include "posix-timer.h"
 
 
 /* Delete timer TIMERID.  */
 int
-timer_delete (timer_t timerid)
+__timer_delete (timer_t timerid)
 {
   struct timer_node *timer;
   int retval = -1;
 
-  pthread_mutex_lock (&__timer_mutex);
+  __pthread_mutex_lock (&__timer_mutex);
 
   timer = timer_id2ptr (timerid);
   if (! timer_valid (timer))
@@ -49,7 +52,7 @@ timer_delete (timer_t timerid)
 
          /* If timer is currently being serviced, wait for it to finish.  */
          while (thread->current_timer == timer)
-           pthread_cond_wait (&thread->cond, &__timer_mutex);
+           __pthread_cond_wait (&thread->cond, &__timer_mutex);
 
          pthread_cleanup_pop (0);
         }
@@ -61,7 +64,11 @@ timer_delete (timer_t timerid)
       retval = 0;
     }
 
-  pthread_mutex_unlock (&__timer_mutex);
+  __pthread_mutex_unlock (&__timer_mutex);
 
   return retval;
 }
+versioned_symbol (libc, __timer_delete, timer_delete, RT_IN_LIBC);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, RT_IN_LIBC)
+compat_symbol (librt, __timer_delete, timer_delete, GLIBC_2_2);
+#endif
diff --git a/rt/timer_getoverr.c b/rt/timer_getoverr.c
index 3971edce3b..ef2f280336 100644
--- a/rt/timer_getoverr.c
+++ b/rt/timer_getoverr.c
@@ -19,24 +19,31 @@
 #include <pthread.h>
 #include <time.h>
 
+#include <shlib-compat.h>
+#include <rt-libc.h>
+
 #include "posix-timer.h"
 
 
 /* Get expiration overrun for timer TIMERID.  */
 int
-timer_getoverrun (timer_t timerid)
+__timer_getoverrun (timer_t timerid)
 {
   struct timer_node *timer;
   int retval = -1;
 
-  pthread_mutex_lock (&__timer_mutex);
+  __pthread_mutex_lock (&__timer_mutex);
 
   if (! timer_valid (timer = timer_id2ptr (timerid)))
     __set_errno (EINVAL);
   else
     retval = timer->overrun_count;
 
-  pthread_mutex_unlock (&__timer_mutex);
+  __pthread_mutex_unlock (&__timer_mutex);
 
   return retval;
 }
+versioned_symbol (libc, __timer_getoverrun, timer_getoverrun, RT_IN_LIBC);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, RT_IN_LIBC)
+compat_symbol (librt, __timer_getoverrun, timer_getoverrun, GLIBC_2_2);
+#endif
diff --git a/rt/timer_gettime.c b/rt/timer_gettime.c
index 2bf47605bc..1aa17b8d54 100644
--- a/rt/timer_gettime.c
+++ b/rt/timer_gettime.c
@@ -19,19 +19,22 @@
 #include <pthread.h>
 #include <time.h>
 
+#include <shlib-compat.h>
+#include <rt-libc.h>
+
 #include "posix-timer.h"
 
 
 /* Get current value of timer TIMERID and store it in VALUE.  */
 int
-timer_gettime (timer_t timerid, struct itimerspec *value)
+__timer_gettime (timer_t timerid, struct itimerspec *value)
 {
   struct timer_node *timer;
   struct timespec now, expiry;
   int retval = -1, armed = 0, valid;
   clock_t clock = 0;
 
-  pthread_mutex_lock (&__timer_mutex);
+  __pthread_mutex_lock (&__timer_mutex);
 
   timer = timer_id2ptr (timerid);
   valid = timer_valid (timer);
@@ -43,7 +46,7 @@ timer_gettime (timer_t timerid, struct itimerspec *value)
     value->it_interval = timer->value.it_interval;
   }
 
-  pthread_mutex_unlock (&__timer_mutex);
+  __pthread_mutex_unlock (&__timer_mutex);
 
   if (valid)
     {
@@ -71,3 +74,7 @@ timer_gettime (timer_t timerid, struct itimerspec *value)
 
   return retval;
 }
+versioned_symbol (libc, __timer_gettime, timer_gettime, RT_IN_LIBC);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, RT_IN_LIBC)
+compat_symbol (librt, __timer_gettime, timer_gettime, GLIBC_2_2);
+#endif
diff --git a/rt/timer_settime.c b/rt/timer_settime.c
index 9c9c846543..bd34a87ade 100644
--- a/rt/timer_settime.c
+++ b/rt/timer_settime.c
@@ -19,13 +19,16 @@
 #include <pthread.h>
 #include <time.h>
 
+#include <shlib-compat.h>
+#include <rt-libc.h>
+
 #include "posix-timer.h"
 
 
 /* Set timer TIMERID to VALUE, returning old value in OVLAUE.  */
 int
-timer_settime (timer_t timerid, int flags, const struct itimerspec *value,
-              struct itimerspec *ovalue)
+__timer_settime (timer_t timerid, int flags, const struct itimerspec *value,
+                struct itimerspec *ovalue)
 {
   struct timer_node *timer;
   struct thread_node *thread = NULL;
@@ -56,7 +59,7 @@ timer_settime (timer_t timerid, int flags, const struct 
itimerspec *value,
       have_now = 1;
     }
 
-  pthread_mutex_lock (&__timer_mutex);
+  __pthread_mutex_lock (&__timer_mutex);
   timer_addref (timer);
 
   /* One final check of timer validity; this one is possible only
@@ -76,10 +79,10 @@ timer_settime (timer_t timerid, int flags, const struct 
itimerspec *value,
        {
          if (! have_now)
            {
-             pthread_mutex_unlock (&__timer_mutex);
+             __pthread_mutex_unlock (&__timer_mutex);
              __clock_gettime (timer->clock, &now);
              have_now = 1;
-             pthread_mutex_lock (&__timer_mutex);
+             __pthread_mutex_lock (&__timer_mutex);
              timer_addref (timer);
            }
 
@@ -120,7 +123,7 @@ timer_settime (timer_t timerid, int flags, const struct 
itimerspec *value,
 
 unlock_bail:
   timer_delref (timer);
-  pthread_mutex_unlock (&__timer_mutex);
+  __pthread_mutex_unlock (&__timer_mutex);
 
 bail:
   if (thread != NULL && need_wakeup)
@@ -128,3 +131,7 @@ bail:
 
   return retval;
 }
+versioned_symbol (libc, __timer_settime, timer_settime, RT_IN_LIBC);
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, RT_IN_LIBC)
+compat_symbol (librt, __timer_settime, timer_settime, GLIBC_2_2);
+#endif
diff --git a/sysdeps/htl/Makefile b/sysdeps/htl/Makefile
index 12bb54ebf4..624d1be7b6 100644
--- a/sysdeps/htl/Makefile
+++ b/sysdeps/htl/Makefile
@@ -1,5 +1,5 @@
 ifeq ($(subdir),rt)
-librt-sysdep_routines += timer_routines
+sysdep_routines += timer_routines
 endif
 
 ifeq ($(subdir),posix)
diff --git a/sysdeps/htl/pthreadP.h b/sysdeps/htl/pthreadP.h
index 9ffd518b19..d6e669abf8 100644
--- a/sysdeps/htl/pthreadP.h
+++ b/sysdeps/htl/pthreadP.h
@@ -200,8 +200,11 @@ int __pthread_key_delete (pthread_key_t key);
 libc_hidden_proto (__pthread_key_delete)
 int __pthread_once (pthread_once_t *once_control, void (*init_routine) (void));
 
+int __pthread_attr_destroy (pthread_attr_t *attr);
 int __pthread_getattr_np (pthread_t, pthread_attr_t *);
 libc_hidden_proto (__pthread_getattr_np)
+int __pthread_attr_setdetachstate (pthread_attr_t *attr,
+                                  int detachstate);
 int __pthread_attr_getstackaddr (const pthread_attr_t *__restrict __attr,
                                 void **__restrict __stackaddr);
 libc_hidden_proto (__pthread_attr_getstackaddr)
@@ -221,6 +224,10 @@ void __pthread_testcancel (void);
 libc_hidden_proto (__pthread_testcancel)
 int __pthread_attr_init (pthread_attr_t *attr);
 int __pthread_condattr_init (pthread_condattr_t *attr);
+int __pthread_getschedparam (pthread_t thread_id, int *policy,
+                            struct sched_param *param);
+int __pthread_setschedparam (pthread_t thread_id, int policy,
+                            const struct sched_param *param);
 int __pthread_setconcurrency (int __new_level);
 libc_hidden_proto (__pthread_setconcurrency)
 int __pthread_getconcurrency (void);
diff --git a/sysdeps/htl/rt-libc.h b/sysdeps/htl/rt-libc.h
new file mode 100644
index 0000000000..436055a8e8
--- /dev/null
+++ b/sysdeps/htl/rt-libc.h
@@ -0,0 +1 @@
+#define RT_IN_LIBC GLIBC_2_44
diff --git a/sysdeps/htl/timer_routines.c b/sysdeps/htl/timer_routines.c
index 2f46fa8168..808253dd94 100644
--- a/sysdeps/htl/timer_routines.c
+++ b/sysdeps/htl/timer_routines.c
@@ -29,6 +29,8 @@
 
 #include "posix-timer.h"
 #include <timer_routines.h>
+#include <register-atfork.h>
+#include <dso_handle.h>
 
 #ifndef DELAYTIMER_MAX
 # define DELAYTIMER_MAX INT_MAX
@@ -145,15 +147,15 @@ thread_init (struct thread_node *thread, const 
pthread_attr_t *attr, clockid_t c
     thread->attr = *attr;
   else
     {
-      pthread_attr_init (&thread->attr);
-      pthread_attr_setdetachstate (&thread->attr, PTHREAD_CREATE_DETACHED);
+      __pthread_attr_init (&thread->attr);
+      __pthread_attr_setdetachstate (&thread->attr, PTHREAD_CREATE_DETACHED);
     }
 
   thread->exists = 0;
   INIT_LIST_HEAD (&thread->timer_queue);
   __pthread_cond_init (&thread->cond, 0);
   thread->current_timer = 0;
-  thread->captured = pthread_self ();
+  thread->captured = __pthread_self ();
   thread->clock_id = clock_id;
 }
 
@@ -202,7 +204,7 @@ void
 __timer_init_once (void)
 {
   init_module ();
-  pthread_atfork (0, 0, reinit_after_fork);
+  __register_atfork (0, 0, reinit_after_fork, __dso_handle);
 }
 
 
@@ -317,9 +319,9 @@ thread_expire_timer (struct thread_node *self, struct 
timer_node *timer)
        INLINE_SYSCALL (rt_sigqueueinfo, 3, info.si_pid, info.si_signo, &info);
       }
 #else
-      if (pthread_kill (self->captured, timer->event.sigev_signo) != 0)
+      if (__pthread_kill (self->captured, timer->event.sigev_signo) != 0)
        {
-         if (pthread_kill (self->id, timer->event.sigev_signo) != 0)
+         if (__pthread_kill (self->id, timer->event.sigev_signo) != 0)
            abort ();
         }
 #endif
@@ -470,8 +472,8 @@ __timer_thread_start (struct thread_node *thread)
   sigfillset (&set);
   __pthread_sigmask (SIG_SETMASK, &set, &oset);
 
-  if (pthread_create (&thread->id, &thread->attr,
-                     (void *(*) (void *)) thread_func, thread) != 0)
+  if (__pthread_create (&thread->id, &thread->attr,
+                       (void *(*) (void *)) thread_func, thread) != 0)
     {
       thread->exists = 0;
       retval = -1;
diff --git a/sysdeps/mach/hurd/i386/libc.abilist 
b/sysdeps/mach/hurd/i386/libc.abilist
index 08dcd85cd9..5641e986c1 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -756,6 +756,21 @@ GLIBC_2.2.6 addmntent F
 GLIBC_2.2.6 addseverity F
 GLIBC_2.2.6 adjtime F
 GLIBC_2.2.6 advance F
+GLIBC_2.2.6 aio_cancel F
+GLIBC_2.2.6 aio_cancel64 F
+GLIBC_2.2.6 aio_error F
+GLIBC_2.2.6 aio_error64 F
+GLIBC_2.2.6 aio_fsync F
+GLIBC_2.2.6 aio_fsync64 F
+GLIBC_2.2.6 aio_init F
+GLIBC_2.2.6 aio_read F
+GLIBC_2.2.6 aio_read64 F
+GLIBC_2.2.6 aio_return F
+GLIBC_2.2.6 aio_return64 F
+GLIBC_2.2.6 aio_suspend F
+GLIBC_2.2.6 aio_suspend64 F
+GLIBC_2.2.6 aio_write F
+GLIBC_2.2.6 aio_write64 F
 GLIBC_2.2.6 alarm F
 GLIBC_2.2.6 alphasort F
 GLIBC_2.2.6 alphasort64 F
@@ -1340,6 +1355,8 @@ GLIBC_2.2.6 ldexpl F
 GLIBC_2.2.6 ldiv F
 GLIBC_2.2.6 lfind F
 GLIBC_2.2.6 link F
+GLIBC_2.2.6 lio_listio F
+GLIBC_2.2.6 lio_listio64 F
 GLIBC_2.2.6 listen F
 GLIBC_2.2.6 llabs F
 GLIBC_2.2.6 lldiv F
@@ -1882,6 +1899,11 @@ GLIBC_2.2.6 thread_switch F
 GLIBC_2.2.6 time F
 GLIBC_2.2.6 timegm F
 GLIBC_2.2.6 timelocal F
+GLIBC_2.2.6 timer_create F
+GLIBC_2.2.6 timer_delete F
+GLIBC_2.2.6 timer_getoverrun F
+GLIBC_2.2.6 timer_gettime F
+GLIBC_2.2.6 timer_settime F
 GLIBC_2.2.6 times F
 GLIBC_2.2.6 timezone D 0x4
 GLIBC_2.2.6 tmpfile F
@@ -2327,6 +2349,16 @@ GLIBC_2.3.4 __xpg_strerror_r F
 GLIBC_2.3.4 dlmopen F
 GLIBC_2.3.4 getipv4sourcefilter F
 GLIBC_2.3.4 getsourcefilter F
+GLIBC_2.3.4 mq_close F
+GLIBC_2.3.4 mq_getattr F
+GLIBC_2.3.4 mq_notify F
+GLIBC_2.3.4 mq_open F
+GLIBC_2.3.4 mq_receive F
+GLIBC_2.3.4 mq_send F
+GLIBC_2.3.4 mq_setattr F
+GLIBC_2.3.4 mq_timedreceive F
+GLIBC_2.3.4 mq_timedsend F
+GLIBC_2.3.4 mq_unlink F
 GLIBC_2.3.4 regexec F
 GLIBC_2.3.4 setipv4sourcefilter F
 GLIBC_2.3.4 setsourcefilter F
@@ -2617,6 +2649,8 @@ GLIBC_2.4 fchownat F
 GLIBC_2.4 fdopendir F
 GLIBC_2.4 futimesat F
 GLIBC_2.4 linkat F
+GLIBC_2.4 lio_listio F
+GLIBC_2.4 lio_listio64 F
 GLIBC_2.4 mkdirat F
 GLIBC_2.4 mkfifoat F
 GLIBC_2.4 open_wmemstream F
@@ -2760,6 +2794,39 @@ GLIBC_2.43 tss_delete F
 GLIBC_2.43 tss_get F
 GLIBC_2.43 tss_set F
 GLIBC_2.43 umaxabs F
+GLIBC_2.44 __mq_open_2 F
+GLIBC_2.44 aio_cancel F
+GLIBC_2.44 aio_cancel64 F
+GLIBC_2.44 aio_error F
+GLIBC_2.44 aio_error64 F
+GLIBC_2.44 aio_fsync F
+GLIBC_2.44 aio_fsync64 F
+GLIBC_2.44 aio_init F
+GLIBC_2.44 aio_read F
+GLIBC_2.44 aio_read64 F
+GLIBC_2.44 aio_return F
+GLIBC_2.44 aio_return64 F
+GLIBC_2.44 aio_suspend F
+GLIBC_2.44 aio_suspend64 F
+GLIBC_2.44 aio_write F
+GLIBC_2.44 aio_write64 F
+GLIBC_2.44 lio_listio F
+GLIBC_2.44 lio_listio64 F
+GLIBC_2.44 mq_close F
+GLIBC_2.44 mq_getattr F
+GLIBC_2.44 mq_notify F
+GLIBC_2.44 mq_open F
+GLIBC_2.44 mq_receive F
+GLIBC_2.44 mq_send F
+GLIBC_2.44 mq_setattr F
+GLIBC_2.44 mq_timedreceive F
+GLIBC_2.44 mq_timedsend F
+GLIBC_2.44 mq_unlink F
+GLIBC_2.44 timer_create F
+GLIBC_2.44 timer_delete F
+GLIBC_2.44 timer_getoverrun F
+GLIBC_2.44 timer_gettime F
+GLIBC_2.44 timer_settime F
 GLIBC_2.5 __readlinkat_chk F
 GLIBC_2.5 inet6_opt_append F
 GLIBC_2.5 inet6_opt_find F
@@ -2792,6 +2859,7 @@ GLIBC_2.7 __isoc99_vsscanf F
 GLIBC_2.7 __isoc99_vswscanf F
 GLIBC_2.7 __isoc99_vwscanf F
 GLIBC_2.7 __isoc99_wscanf F
+GLIBC_2.7 __mq_open_2 F
 GLIBC_2.7 __open64_2 F
 GLIBC_2.7 __open_2 F
 GLIBC_2.7 __openat64_2 F
diff --git a/sysdeps/mach/hurd/i386/librt.abilist 
b/sysdeps/mach/hurd/i386/librt.abilist
index 022e10b897..5cd8c1366c 100644
--- a/sysdeps/mach/hurd/i386/librt.abilist
+++ b/sysdeps/mach/hurd/i386/librt.abilist
@@ -1,35 +1,4 @@
-GLIBC_2.2.6 aio_cancel F
-GLIBC_2.2.6 aio_cancel64 F
-GLIBC_2.2.6 aio_error F
-GLIBC_2.2.6 aio_error64 F
-GLIBC_2.2.6 aio_fsync F
-GLIBC_2.2.6 aio_fsync64 F
-GLIBC_2.2.6 aio_init F
-GLIBC_2.2.6 aio_read F
-GLIBC_2.2.6 aio_read64 F
-GLIBC_2.2.6 aio_return F
-GLIBC_2.2.6 aio_return64 F
-GLIBC_2.2.6 aio_suspend F
-GLIBC_2.2.6 aio_suspend64 F
-GLIBC_2.2.6 aio_write F
-GLIBC_2.2.6 aio_write64 F
-GLIBC_2.2.6 lio_listio F
-GLIBC_2.2.6 lio_listio64 F
-GLIBC_2.2.6 timer_create F
-GLIBC_2.2.6 timer_delete F
-GLIBC_2.2.6 timer_getoverrun F
-GLIBC_2.2.6 timer_gettime F
-GLIBC_2.2.6 timer_settime F
-GLIBC_2.3.4 mq_close F
-GLIBC_2.3.4 mq_getattr F
-GLIBC_2.3.4 mq_notify F
-GLIBC_2.3.4 mq_open F
-GLIBC_2.3.4 mq_receive F
-GLIBC_2.3.4 mq_send F
-GLIBC_2.3.4 mq_setattr F
-GLIBC_2.3.4 mq_timedreceive F
-GLIBC_2.3.4 mq_timedsend F
-GLIBC_2.3.4 mq_unlink F
-GLIBC_2.4 lio_listio F
-GLIBC_2.4 lio_listio64 F
-GLIBC_2.7 __mq_open_2 F
+GLIBC_2.2.6 __librt_version_placeholder F
+GLIBC_2.3.4 __librt_version_placeholder F
+GLIBC_2.4 __librt_version_placeholder F
+GLIBC_2.7 __librt_version_placeholder F
diff --git a/sysdeps/mach/hurd/x86_64/libc.abilist 
b/sysdeps/mach/hurd/x86_64/libc.abilist
index c17d5399e4..761e399dc9 100644
--- a/sysdeps/mach/hurd/x86_64/libc.abilist
+++ b/sysdeps/mach/hurd/x86_64/libc.abilist
@@ -364,6 +364,7 @@ GLIBC_2.38 __mig_put_reply_port F
 GLIBC_2.38 __mig_strncpy F
 GLIBC_2.38 __mmap F
 GLIBC_2.38 __monstartup F
+GLIBC_2.38 __mq_open_2 F
 GLIBC_2.38 __nanosleep F
 GLIBC_2.38 __newlocale F
 GLIBC_2.38 __nl_langinfo_l F
@@ -634,6 +635,21 @@ GLIBC_2.38 acct F
 GLIBC_2.38 addmntent F
 GLIBC_2.38 addseverity F
 GLIBC_2.38 adjtime F
+GLIBC_2.38 aio_cancel F
+GLIBC_2.38 aio_cancel64 F
+GLIBC_2.38 aio_error F
+GLIBC_2.38 aio_error64 F
+GLIBC_2.38 aio_fsync F
+GLIBC_2.38 aio_fsync64 F
+GLIBC_2.38 aio_init F
+GLIBC_2.38 aio_read F
+GLIBC_2.38 aio_read64 F
+GLIBC_2.38 aio_return F
+GLIBC_2.38 aio_return64 F
+GLIBC_2.38 aio_suspend F
+GLIBC_2.38 aio_suspend64 F
+GLIBC_2.38 aio_write F
+GLIBC_2.38 aio_write64 F
 GLIBC_2.38 alarm F
 GLIBC_2.38 aligned_alloc F
 GLIBC_2.38 alphasort F
@@ -1293,6 +1309,8 @@ GLIBC_2.38 lfind F
 GLIBC_2.38 lgetxattr F
 GLIBC_2.38 link F
 GLIBC_2.38 linkat F
+GLIBC_2.38 lio_listio F
+GLIBC_2.38 lio_listio64 F
 GLIBC_2.38 listen F
 GLIBC_2.38 listxattr F
 GLIBC_2.38 llabs F
@@ -1411,6 +1429,16 @@ GLIBC_2.38 moncontrol F
 GLIBC_2.38 monstartup F
 GLIBC_2.38 mprobe F
 GLIBC_2.38 mprotect F
+GLIBC_2.38 mq_close F
+GLIBC_2.38 mq_getattr F
+GLIBC_2.38 mq_notify F
+GLIBC_2.38 mq_open F
+GLIBC_2.38 mq_receive F
+GLIBC_2.38 mq_send F
+GLIBC_2.38 mq_setattr F
+GLIBC_2.38 mq_timedreceive F
+GLIBC_2.38 mq_timedsend F
+GLIBC_2.38 mq_unlink F
 GLIBC_2.38 mrand48 F
 GLIBC_2.38 mrand48_r F
 GLIBC_2.38 mremap F
@@ -2059,6 +2087,11 @@ GLIBC_2.38 thread_switch F
 GLIBC_2.38 time F
 GLIBC_2.38 timegm F
 GLIBC_2.38 timelocal F
+GLIBC_2.38 timer_create F
+GLIBC_2.38 timer_delete F
+GLIBC_2.38 timer_getoverrun F
+GLIBC_2.38 timer_gettime F
+GLIBC_2.38 timer_settime F
 GLIBC_2.38 times F
 GLIBC_2.38 timespec_get F
 GLIBC_2.38 timespec_getres F
@@ -2437,6 +2470,39 @@ GLIBC_2.43 tss_delete F
 GLIBC_2.43 tss_get F
 GLIBC_2.43 tss_set F
 GLIBC_2.43 umaxabs F
+GLIBC_2.44 __mq_open_2 F
+GLIBC_2.44 aio_cancel F
+GLIBC_2.44 aio_cancel64 F
+GLIBC_2.44 aio_error F
+GLIBC_2.44 aio_error64 F
+GLIBC_2.44 aio_fsync F
+GLIBC_2.44 aio_fsync64 F
+GLIBC_2.44 aio_init F
+GLIBC_2.44 aio_read F
+GLIBC_2.44 aio_read64 F
+GLIBC_2.44 aio_return F
+GLIBC_2.44 aio_return64 F
+GLIBC_2.44 aio_suspend F
+GLIBC_2.44 aio_suspend64 F
+GLIBC_2.44 aio_write F
+GLIBC_2.44 aio_write64 F
+GLIBC_2.44 lio_listio F
+GLIBC_2.44 lio_listio64 F
+GLIBC_2.44 mq_close F
+GLIBC_2.44 mq_getattr F
+GLIBC_2.44 mq_notify F
+GLIBC_2.44 mq_open F
+GLIBC_2.44 mq_receive F
+GLIBC_2.44 mq_send F
+GLIBC_2.44 mq_setattr F
+GLIBC_2.44 mq_timedreceive F
+GLIBC_2.44 mq_timedsend F
+GLIBC_2.44 mq_unlink F
+GLIBC_2.44 timer_create F
+GLIBC_2.44 timer_delete F
+GLIBC_2.44 timer_getoverrun F
+GLIBC_2.44 timer_gettime F
+GLIBC_2.44 timer_settime F
 HURD_CTHREADS_0.3 __mutex_init F
 HURD_CTHREADS_0.3 __mutex_lock F
 HURD_CTHREADS_0.3 __mutex_trylock F
diff --git a/sysdeps/mach/hurd/x86_64/librt.abilist 
b/sysdeps/mach/hurd/x86_64/librt.abilist
index fa148abbac..f3235332ee 100644
--- a/sysdeps/mach/hurd/x86_64/librt.abilist
+++ b/sysdeps/mach/hurd/x86_64/librt.abilist
@@ -1,33 +1 @@
-GLIBC_2.38 __mq_open_2 F
-GLIBC_2.38 aio_cancel F
-GLIBC_2.38 aio_cancel64 F
-GLIBC_2.38 aio_error F
-GLIBC_2.38 aio_error64 F
-GLIBC_2.38 aio_fsync F
-GLIBC_2.38 aio_fsync64 F
-GLIBC_2.38 aio_init F
-GLIBC_2.38 aio_read F
-GLIBC_2.38 aio_read64 F
-GLIBC_2.38 aio_return F
-GLIBC_2.38 aio_return64 F
-GLIBC_2.38 aio_suspend F
-GLIBC_2.38 aio_suspend64 F
-GLIBC_2.38 aio_write F
-GLIBC_2.38 aio_write64 F
-GLIBC_2.38 lio_listio F
-GLIBC_2.38 lio_listio64 F
-GLIBC_2.38 mq_close F
-GLIBC_2.38 mq_getattr F
-GLIBC_2.38 mq_notify F
-GLIBC_2.38 mq_open F
-GLIBC_2.38 mq_receive F
-GLIBC_2.38 mq_send F
-GLIBC_2.38 mq_setattr F
-GLIBC_2.38 mq_timedreceive F
-GLIBC_2.38 mq_timedsend F
-GLIBC_2.38 mq_unlink F
-GLIBC_2.38 timer_create F
-GLIBC_2.38 timer_delete F
-GLIBC_2.38 timer_getoverrun F
-GLIBC_2.38 timer_gettime F
-GLIBC_2.38 timer_settime F
+GLIBC_2.38 __librt_version_placeholder F
diff --git a/sysdeps/nptl/rt-libc.h b/sysdeps/nptl/rt-libc.h
new file mode 100644
index 0000000000..12c6fa1743
--- /dev/null
+++ b/sysdeps/nptl/rt-libc.h
@@ -0,0 +1 @@
+#define RT_IN_LIBC GLIBC_2_34
-- 
2.51.0


Reply via email to