From patchwork Sun Mar 15 18:18:46 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Samuel Thibault X-Patchwork-Id: 131758 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 9B5194C31868 for ; Sun, 15 Mar 2026 18:19:29 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9B5194C31868 X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from sonata.ens-lyon.org (sonata.ens-lyon.org [140.77.166.138]) by sourceware.org (Postfix) with ESMTPS id 7B8984C3186B for ; Sun, 15 Mar 2026 18:18:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7B8984C3186B Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=ens-lyon.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=bounce.ens-lyon.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7B8984C3186B Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=140.77.166.138 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1773598730; cv=none; b=e8vAcMzuDsFg5yjSpXDtkkiaPRHVDiXvXQl+WmKRaKRXi7YJkcS7xQSsZ0NSm2R8oKc+G+e/WKSwO/9Gl4SZ87ok5CJHtThJ49plK8IJNdZ87v1+IKJhQrWbSWgIMHLyDsZ+ZZ1GTzGAZLGPK3js3XLHQb2F7BhGxXvyHB4FOng= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1773598730; c=relaxed/simple; bh=jvoORymNd5cj9eatX+WvfUXhl1Wl+MISxP9EFBxpY/8=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=QWauPbcwngAJzUrPZy2RnveKlTEt+3M72abXVKqR+rxF442m8lyGkq9z2IIeuSJ3oJ/FwTy0JE2JbfKzFI4CjTCSQKtq2cA+Ikr4KeLCM9e602i8ZM70wE8LrqtVREGxxjBaWGckcQSylV14J2EGsUO7SVKg3a2qu+W4/EknotM= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7B8984C3186B Received: from localhost (localhost [127.0.0.1]) by sonata.ens-lyon.org (Postfix) with ESMTP id B88C0A0595; Sun, 15 Mar 2026 19:18:47 +0100 (CET) Received: from sonata.ens-lyon.org ([127.0.0.1]) by localhost (sonata.ens-lyon.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ylraH7JaAhsa; Sun, 15 Mar 2026 19:18:47 +0100 (CET) Received: from end (aamiens-653-1-40-48.w83-192.abo.wanadoo.fr [83.192.199.48]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by sonata.ens-lyon.org (Postfix) with ESMTPSA id 71D6AA0551; Sun, 15 Mar 2026 19:18:47 +0100 (CET) Received: from samy by end with local (Exim 4.99.1) (envelope-from ) id 1w1q35-00000003w0V-01Et; Sun, 15 Mar 2026 19:18:47 +0100 From: Samuel Thibault To: libc-alpha@sourceware.org Cc: Samuel Thibault , commit-hurd@gnu.org Subject: [hurd,commited] rt: Move librt symbols to libc on hurd too Date: Sun, 15 Mar 2026 19:18:46 +0100 Message-ID: <20260315181846.937956-1-samuel.thibault@ens-lyon.org> X-Mailer: git-send-email 2.51.0 MIME-Version: 1.0 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_PASS, SPF_PASS, TXREP, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org --- 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 #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 #include +#include +#include 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 #include #include +#include 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 #include +#include 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 #include #include - -#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 +#include #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 #include -#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 #include +#include 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 # include # include +# include 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 +#include 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 #include #include +#include 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 #include +#include 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 # include # include +# include 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 . */ -#if PTHREAD_IN_LIBC -# include -# include +#include +#include +#include -# 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 #include +#include /* 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 #include +#include +#include /* 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 #include +#include +#include /* 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 #include +#include +#include /* 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 #include #include +#include +#include /* 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 #include +#include +#include /* 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 #include +#include +#include /* 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 #include +#include +#include /* 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 #include +#include +#include /* 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 #include +#include +#include /* 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 #include +#include +#include /* 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 #include -#include "posix-timer.h" +#include +#include +#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 #include +#include +#include + #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 #include +#include +#include + #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 #include +#include +#include + #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 #include +#include +#include + #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 +#include +#include #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