---
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