(checked on {i686,x86_64}{-linux,}-gnu)
Samuel Thibault, le dim. 15 mars 2026 19:18:46 +0100, a ecrit:
> ---
> 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
>
--
Samuel
<Y> C'ETAIT PAS UN BUG !
<y> :ppp
<y> c ce qu'on dit ;)
<Y> (j'ai appuye sur ON, ca peut arriver, non ?)
-+- #hp debuggue IRCprime -+-