[6/6] Linux: Cleanups after librt move
Checks
Context |
Check |
Description |
dj/TryBot-apply_patch |
success
|
Patch applied to master at the time it was sent
|
Commit Message
librt.so is no longer installed for PTHREAD_IN_LIBC, and tests
are not linked against it. $(librt) is introduced globally for
shared tests that need to be linked for both PTHREAD_IN_LIBC
and !PTHREAD_IN_LIBC.
GLIBC_PRIVATE symbols that were needed during the transition are
removed again.
---
elf/Makefile | 4 +-
misc/Makefile | 6 ---
nptl/Makefile | 9 ----
rt/Makefile | 13 ++++--
rt/Versions | 13 ------
rt/aio_misc.c | 14 ------
rt/aio_notify.c | 8 ----
rt/aio_sigqueue.c | 1 -
sysdeps/generic/aio_misc.h | 43 ++++++-------------
sysdeps/htl/Makeconfig | 6 +++
sysdeps/nptl/Makeconfig | 1 +
sysdeps/pthread/Makefile | 14 ++----
sysdeps/unix/sysv/linux/Makefile | 13 ------
sysdeps/unix/sysv/linux/Versions | 6 ---
sysdeps/unix/sysv/linux/aio_sigqueue.c | 1 -
sysdeps/unix/sysv/linux/kernel-posix-timers.h | 17 +++-----
sysdeps/unix/sysv/linux/timer_create.c | 3 +-
sysdeps/unix/sysv/linux/timer_routines.c | 10 +----
sysvipc/Makefile | 6 ---
time/Makefile | 6 ---
20 files changed, 44 insertions(+), 150 deletions(-)
Comments
On 6/25/21 7:42 AM, Florian Weimer via Libc-alpha wrote:
> librt.so is no longer installed for PTHREAD_IN_LIBC, and tests
> are not linked against it. $(librt) is introduced globally for
> shared tests that need to be linked for both PTHREAD_IN_LIBC
> and !PTHREAD_IN_LIBC.
>
> GLIBC_PRIVATE symbols that were needed during the transition are
> removed again.
This is harder to review than the other patches because of the ABI
impact, but in general this *looks* correct. I didn't build a final
ABI across all the targets to verify because I expect to do that
as release manager before we cut the final release. Therefore I think
this should go in to complete the librt move, and *then* we'll spend
the next month double and triple checking the ABI.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
> ---
> elf/Makefile | 4 +-
> misc/Makefile | 6 ---
> nptl/Makefile | 9 ----
> rt/Makefile | 13 ++++--
> rt/Versions | 13 ------
> rt/aio_misc.c | 14 ------
> rt/aio_notify.c | 8 ----
> rt/aio_sigqueue.c | 1 -
> sysdeps/generic/aio_misc.h | 43 ++++++-------------
> sysdeps/htl/Makeconfig | 6 +++
> sysdeps/nptl/Makeconfig | 1 +
> sysdeps/pthread/Makefile | 14 ++----
> sysdeps/unix/sysv/linux/Makefile | 13 ------
> sysdeps/unix/sysv/linux/Versions | 6 ---
> sysdeps/unix/sysv/linux/aio_sigqueue.c | 1 -
> sysdeps/unix/sysv/linux/kernel-posix-timers.h | 17 +++-----
> sysdeps/unix/sysv/linux/timer_create.c | 3 +-
> sysdeps/unix/sysv/linux/timer_routines.c | 10 +----
> sysvipc/Makefile | 6 ---
> time/Makefile | 6 ---
> 20 files changed, 44 insertions(+), 150 deletions(-)
>
> diff --git a/elf/Makefile b/elf/Makefile
> index 38d08e03b8..f9dac8dcc9 100644
> --- a/elf/Makefile
> +++ b/elf/Makefile
> @@ -1179,7 +1179,6 @@ localplt-built-dso := $(addprefix $(common-objpfx),\
> libc.so \
> elf/ld.so \
> math/libm.so \
> - rt/librt.so \
OK.
> dlfcn/libdl.so \
> resolv/libresolv.so \
> )
> @@ -1192,6 +1191,9 @@ endif
> ifeq ($(build-crypt),yes)
> localplt-built-dso += $(addprefix $(common-objpfx), crypt/libcrypt.so)
> endif
> +ifneq ($(pthread-in-libc),yes)
> +localplt-built-dso += $(addprefix $(common-objpfx), rt/librt.so)
> +endif
OK.
>
> vpath localplt.data $(+sysdep_dirs)
>
> diff --git a/misc/Makefile b/misc/Makefile
> index 66586bcc7e..ae03e26f1b 100644
> --- a/misc/Makefile
> +++ b/misc/Makefile
> @@ -148,12 +148,6 @@ CFLAGS-brk.op = $(no-stack-protector)
>
> include ../Rules
>
> -ifeq (yes,$(build-shared))
> -librt = $(common-objpfx)rt/librt.so
> -else
> -librt = $(common-objpfx)rt/librt.a
> -endif
> -
OK.
> $(objpfx)libg.a: $(dep-dummy-lib); $(make-dummy-lib)
>
> $(objpfx)tst-tsearch: $(libm)
> diff --git a/nptl/Makefile b/nptl/Makefile
> index c64e4af2f6..9b94bfcd31 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -535,15 +535,6 @@ $(objpfx)tst-tls6.out: tst-tls6.sh $(objpfx)tst-tls5 \
> $(evaluate-test)
> endif
>
> -ifeq (yes,$(build-shared))
> -librt = $(common-objpfx)rt/librt.so
> -else
> -librt = $(common-objpfx)rt/librt.a
> -endif
> -
> -$(objpfx)tst-cancel17: $(librt)
> -$(objpfx)tst-cancelx17: $(librt)
> -
OK.
> LDLIBS-tst-cancel24 = -Wl,--no-as-needed -lstdc++
> LDLIBS-tst-cancel24-static = $(LDLIBS-tst-cancel24)
>
> diff --git a/rt/Makefile b/rt/Makefile
> index f8a47622d0..ef26839efd 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -28,9 +28,7 @@ routines = \
> shm_open \
> shm_unlink \
>
> -librt-routines = \
> - librt-compat \
> -
> +librt-routines = librt-compat
OK.
> librt-shared-only-routines = librt-compat
>
> $(librt-routines-var) += \
> @@ -64,6 +62,13 @@ $(librt-routines-var) += \
> timer_gettime \
> timer_settime \
>
> +ifeq ($(pthread-in-libc),yes)
> +# Pretend that libdl.so is a linker script, so that the symbolic
s/libdl.so/librt.so/g
> +# 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 \
> tst-aio7 tst-aio8 tst-aio9 tst-aio10 \
> @@ -98,6 +103,7 @@ 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)
> @@ -105,5 +111,6 @@ else
> $(addprefix $(objpfx),$(tests)) $(tests-internal): \
> $(objpfx)librt.a $(static-thread-library)
> endif
> +endif # !$(pthread-in-libc)
OK.
>
> tst-mqueue7-ARGS = -- $(host-test-program-cmd)
> diff --git a/rt/Versions b/rt/Versions
> index 7e41beae06..a3dc72cff4 100644
> --- a/rt/Versions
> +++ b/rt/Versions
> @@ -95,19 +95,6 @@ libc {
> shm_open;
> shm_unlink;
> }
> -%if PTHREAD_IN_LIBC
> - GLIBC_PRIVATE {
> - __aio_enqueue_request;
> - __aio_find_req;
> - __aio_find_req_fd;
> - __aio_free_request;
> - __aio_notify;
> - __aio_notify_only;
> - __aio_remove_request;
> - __aio_requests_mutex;
> - __aio_sigqueue;
> - }
> -%endif
OK.
> }
> librt {
> GLIBC_2.1 {
> diff --git a/rt/aio_misc.c b/rt/aio_misc.c
> index 953d6e7613..acbd4f3623 100644
> --- a/rt/aio_misc.c
> +++ b/rt/aio_misc.c
> @@ -735,24 +735,10 @@ add_request_to_runlist (struct requestlist *newrequest)
> }
>
> #if PTHREAD_IN_LIBC
> -libc_hidden_data_def (__aio_requests_mutex)
> -libc_hidden_def (__aio_enqueue_request)
> -libc_hidden_def (__aio_find_req)
> -libc_hidden_def (__aio_find_req_fd)
> -libc_hidden_def (__aio_free_request)
> -libc_hidden_def (__aio_remove_request)
OK.
> -
> versioned_symbol (libc, __aio_init, aio_init, GLIBC_2_34);
> # if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
> compat_symbol (librt, __aio_init, aio_init, GLIBC_2_1);
> # endif
> -
> #else /* !PTHREAD_IN_LIBC */
> -librt_hidden_data_def (__aio_requests_mutex)
> -librt_hidden_def (__aio_enqueue_request)
> -librt_hidden_def (__aio_find_req)
> -librt_hidden_def (__aio_find_req_fd)
> -librt_hidden_def (__aio_free_request)
> -librt_hidden_def (__aio_remove_request)
OK.
> weak_alias (__aio_init, aio_init)
> #endif /* !PTHREAD_IN_LIBC */
> diff --git a/rt/aio_notify.c b/rt/aio_notify.c
> index 432000e34b..0fa84f203c 100644
> --- a/rt/aio_notify.c
> +++ b/rt/aio_notify.c
> @@ -160,11 +160,3 @@ __aio_notify (struct requestlist *req)
> waitlist = next;
> }
> }
> -
> -#if PTHREAD_IN_LIBC
> -libc_hidden_def (__aio_notify)
> -libc_hidden_def (__aio_notify_only)
> -#else
> -librt_hidden_def (__aio_notify)
> -librt_hidden_def (__aio_notify_only)
> -#endif
OK.
> diff --git a/rt/aio_sigqueue.c b/rt/aio_sigqueue.c
> index 0ad95ae04c..84848bacd8 100644
> --- a/rt/aio_sigqueue.c
> +++ b/rt/aio_sigqueue.c
> @@ -28,5 +28,4 @@ __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
> __set_errno (ENOSYS);
> return -1;
> }
> -librt_hidden_def (__aio_sigqueue)
OK.
> stub_warning (__aio_sigqueue)
> diff --git a/sysdeps/generic/aio_misc.h b/sysdeps/generic/aio_misc.h
> index d9bff36e50..4d05b8cdd6 100644
> --- a/sysdeps/generic/aio_misc.h
> +++ b/sysdeps/generic/aio_misc.h
> @@ -87,55 +87,36 @@ struct requestlist
>
>
> /* Lock for global I/O list of requests. */
> -extern pthread_mutex_t __aio_requests_mutex;
> +extern pthread_mutex_t __aio_requests_mutex attribute_hidden;
>
OK.
>
> /* Enqueue request. */
> extern struct requestlist *__aio_enqueue_request (aiocb_union *aiocbp,
> - int operation);
> + int operation)
> + attribute_hidden;
>
> /* Find request entry for given AIO control block. */
> -extern struct requestlist *__aio_find_req (aiocb_union *elem);
> +extern struct requestlist *__aio_find_req (aiocb_union *elem) attribute_hidden;
>
> /* Find request entry for given file descriptor. */
> -extern struct requestlist *__aio_find_req_fd (int fildes);
> +extern struct requestlist *__aio_find_req_fd (int fildes) attribute_hidden;
>
> /* Remove request from the list. */
> extern void __aio_remove_request (struct requestlist *last,
> - struct requestlist *req, int all);
> + struct requestlist *req, int all)
> + attribute_hidden;
>
> /* Release the entry for the request. */
> -extern void __aio_free_request (struct requestlist *req);
> +extern void __aio_free_request (struct requestlist *req) attribute_hidden;
>
> /* Notify initiator of request and tell this everybody listening. */
> -extern void __aio_notify (struct requestlist *req);
> +extern void __aio_notify (struct requestlist *req) attribute_hidden;
>
> /* Notify initiator of request. */
> -extern int __aio_notify_only (struct sigevent *sigev);
> +extern int __aio_notify_only (struct sigevent *sigev) attribute_hidden;
OK. Mark hidden.
>
> /* Send the signal. */
> -extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid);
> -
> -#if PTHREAD_IN_LIBC
> -libc_hidden_proto (__aio_enqueue_request)
> -libc_hidden_proto (__aio_find_req)
> -libc_hidden_proto (__aio_find_req_fd)
> -libc_hidden_proto (__aio_free_request)
> -libc_hidden_proto (__aio_notify)
> -libc_hidden_proto (__aio_notify_only)
> -libc_hidden_proto (__aio_remove_request)
> -libc_hidden_proto (__aio_requests_mutex)
> -libc_hidden_proto (__aio_sigqueue)
> -#else
> -librt_hidden_proto (__aio_enqueue_request)
> -librt_hidden_proto (__aio_find_req)
> -librt_hidden_proto (__aio_find_req_fd)
> -librt_hidden_proto (__aio_free_request)
> -librt_hidden_proto (__aio_notify)
> -librt_hidden_proto (__aio_notify_only)
> -librt_hidden_proto (__aio_remove_request)
> -librt_hidden_proto (__aio_requests_mutex)
> -librt_hidden_proto (__aio_sigqueue)
> -#endif
OK.
> +extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
> + attribute_hidden;
>
> #endif /* aio_misc.h */
> diff --git a/sysdeps/htl/Makeconfig b/sysdeps/htl/Makeconfig
> index e8a8f405b0..b5c5d62b74 100644
> --- a/sysdeps/htl/Makeconfig
> +++ b/sysdeps/htl/Makeconfig
> @@ -7,4 +7,10 @@ shared-thread-library = $(common-objpfx)htl/libpthread.so
> static-thread-library = $(..)htl/libpthread_syms.a $(common-objpfx)htl/libpthread.a
> bounded-thread-library = $(static-thread-library)
>
> +ifeq (yes,$(build-shared))
> +librt = $(common-objpfx)rt/librt.so
> +else
> +librt = $(common-objpfx)rt/librt.a $(static-thread-library)
> +endif
OK.
> +
> rpath-dirs += htl
> diff --git a/sysdeps/nptl/Makeconfig b/sysdeps/nptl/Makeconfig
> index 8a9407925c..613bd7b95b 100644
> --- a/sysdeps/nptl/Makeconfig
> +++ b/sysdeps/nptl/Makeconfig
> @@ -24,6 +24,7 @@ have-thread-library = yes
> # The thread library is integrated.
> shared-thread-library =
> static-thread-library =
> +librt =
OK.
>
> # Some tests need this to load their own test objects, and system
> # libraries used by memusagestat need to link against the empty
> diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
> index fedb785d38..9b862b93c4 100644
> --- a/sysdeps/pthread/Makefile
> +++ b/sysdeps/pthread/Makefile
> @@ -17,13 +17,7 @@
> # <https://www.gnu.org/licenses/>.
>
> ifeq ($(subdir),rt)
> -
> -ifeq (yes,$(build-shared))
> -$(objpfx)tst-timer: $(objpfx)librt.so $(shared-thread-library)
> -else
> -$(objpfx)tst-timer: $(objpfx)librt.a $(static-thread-library)
> -endif
> -
> +$(objpfx)tst-timer: $(librt)
OK.
> endif
>
> ifneq (,$(filter $(subdir),htl nptl))
> @@ -232,12 +226,10 @@ $(objpfx)tst-cleanup0.out: /dev/null $(objpfx)tst-cleanup0
> $(objpfx)tst-cleanup0-cmp.out: $(..)sysdeps/pthread/tst-cleanup0.expect $(objpfx)tst-cleanup0.out
> cmp $^ > $@; \
> $(evaluate-test)
> -
> -$(objpfx)tst-cancel28: $(common-objpfx)rt/librt.so
> -else
> -$(objpfx)tst-cancel28: $(common-objpfx)rt/librt.a
> endif
>
> +$(objpfx)tst-cancel28: $(librt)
OK.
> +
> $(objpfx)tst-fini1: $(shared-thread-library) $(objpfx)tst-fini1mod.so
>
> $(objpfx)tst-fini1mod.so: $(shared-thread-library)
> diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
> index 88d7cd7c1b..faea02bd1b 100644
> --- a/sysdeps/unix/sysv/linux/Makefile
> +++ b/sysdeps/unix/sysv/linux/Makefile
> @@ -137,19 +137,6 @@ tests-time64 += \
>
> CFLAGS-tst-sigcontext-get_pc.c = -fasynchronous-unwind-tables
>
> -ifeq (yes,$(build-shared))
> -librt = $(common-objpfx)rt/librt.so
> -else
> -librt = $(common-objpfx)rt/librt.a
> -endif
> -
> -$(objpfx)tst-ppoll: $(librt)
> -$(objpfx)tst-ppoll-time64: $(librt)
> -$(objpfx)tst-sigtimedwait: $(librt)
> -$(objpfx)tst-sigtimedwait-time64: $(librt)
> -$(objpfx)tst-timerfd: $(librt)
> -$(objpfx)tst-timerfd-time64: $(librt)
> -
OK.
> # Generate the list of SYS_* macros for the system calls (__NR_*
> # macros). The file syscall-names.list contains all possible system
> # call names, and the generated header file produces SYS_* macros for
> diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
> index 578d55e7fd..29ed24591d 100644
> --- a/sysdeps/unix/sysv/linux/Versions
> +++ b/sysdeps/unix/sysv/linux/Versions
> @@ -291,12 +291,6 @@ libc {
> __pread64_nocancel;
> __close_nocancel;
> __sigtimedwait;
> - __timer_active_sigev_thread;
> - __timer_active_sigev_thread_lock;
> - __timer_compat_list;
> - __timer_helper_once;
> - __timer_helper_tid;
> - __timer_start_helper_thread;
OK.
> # functions used by nscd
> __netlink_assert_response;
> }
> diff --git a/sysdeps/unix/sysv/linux/aio_sigqueue.c b/sysdeps/unix/sysv/linux/aio_sigqueue.c
> index bd0da6e763..0b0f347197 100644
> --- a/sysdeps/unix/sysv/linux/aio_sigqueue.c
> +++ b/sysdeps/unix/sysv/linux/aio_sigqueue.c
> @@ -44,4 +44,3 @@ __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
>
> return INLINE_SYSCALL (rt_sigqueueinfo, 3, info.si_pid, sig, &info);
> }
> -libc_hidden_def (__aio_sigqueue)
> diff --git a/sysdeps/unix/sysv/linux/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> index 5799c1eaa3..9109166f29 100644
> --- a/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> +++ b/sysdeps/unix/sysv/linux/kernel-posix-timers.h
> @@ -26,27 +26,23 @@
> extern int __no_posix_timers attribute_hidden;
>
> /* Callback to start helper thread. */
> -extern void __timer_start_helper_thread (void);
> -libc_hidden_proto (__timer_start_helper_thread)
> +extern void __timer_start_helper_thread (void) attribute_hidden;
>
> /* Control variable for helper thread creation. */
> -extern pthread_once_t __timer_helper_once;
> -libc_hidden_proto (__timer_helper_once)
> +extern pthread_once_t __timer_helper_once attribute_hidden;
>
> /* Called from fork so that the new subprocess re-creates the
> notification thread if necessary. */
> void __timer_fork_subprocess (void) attribute_hidden;
>
> /* TID of the helper thread. */
> -extern pid_t __timer_helper_tid;
> -libc_hidden_proto (__timer_helper_tid)
> +extern pid_t __timer_helper_tid attribute_hidden;
>
> /* List of active SIGEV_THREAD timers. */
> -extern struct timer *__timer_active_sigev_thread;
> -libc_hidden_proto (__timer_active_sigev_thread)
> +extern struct timer *__timer_active_sigev_thread attribute_hidden;
> +
> /* Lock for __timer_active_sigev_thread. */
> -extern pthread_mutex_t __timer_active_sigev_thread_lock;
> -libc_hidden_proto (__timer_active_sigev_thread_lock)
> +extern pthread_mutex_t __timer_active_sigev_thread_lock attribute_hidden;
>
> extern __typeof (timer_create) __timer_create;
> libc_hidden_proto (__timer_create)
> @@ -118,5 +114,4 @@ timerid_to_kernel_timer (timer_t timerid)
> #if TIMER_T_WAS_INT_COMPAT
> # define OLD_TIMER_MAX 256
> extern timer_t __timer_compat_list[OLD_TIMER_MAX];
> -libc_hidden_proto (__timer_compat_list)
> #endif
> diff --git a/sysdeps/unix/sysv/linux/timer_create.c b/sysdeps/unix/sysv/linux/timer_create.c
> index 58099e3204..fb904a86e3 100644
> --- a/sysdeps/unix/sysv/linux/timer_create.c
> +++ b/sysdeps/unix/sysv/linux/timer_create.c
> @@ -146,8 +146,7 @@ compat_symbol (librt, ___timer_create, timer_create, GLIBC_2_3_3);
> # endif
>
> # if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
> -timer_t __timer_compat_list[OLD_TIMER_MAX] __attribute__ ((nocommon));
> -libc_hidden_data_def (__timer_compat_list)
> +timer_t __timer_compat_list[OLD_TIMER_MAX];
>
> int
> __timer_create_old (clockid_t clock_id, struct sigevent *evp, int *timerid)
> diff --git a/sysdeps/unix/sysv/linux/timer_routines.c b/sysdeps/unix/sysv/linux/timer_routines.c
> index e0bb169370..30ad32b4fc 100644
> --- a/sysdeps/unix/sysv/linux/timer_routines.c
> +++ b/sysdeps/unix/sysv/linux/timer_routines.c
> @@ -26,13 +26,10 @@
>
>
> /* List of active SIGEV_THREAD timers. */
> -struct timer *__timer_active_sigev_thread __attribute__ ((nocommon));
> -libc_hidden_data_def (__timer_active_sigev_thread)
> +struct timer *__timer_active_sigev_thread;
>
> /* Lock for _timer_active_sigev_thread. */
> -pthread_mutex_t __timer_active_sigev_thread_lock __attribute__ ((nocommon))
> - = PTHREAD_MUTEX_INITIALIZER;
> -libc_hidden_data_def (__timer_active_sigev_thread_lock)
> +pthread_mutex_t __timer_active_sigev_thread_lock = PTHREAD_MUTEX_INITIALIZER;
>
> struct thread_start_data
> {
> @@ -112,12 +109,10 @@ timer_helper_thread (void *arg)
> /* Control variable for helper thread creation. */
> pthread_once_t __timer_helper_once __attribute__ ((nocommon))
> = PTHREAD_ONCE_INIT;
> -libc_hidden_data_def (__timer_helper_once)
>
>
> /* TID of the helper thread. */
> pid_t __timer_helper_tid __attribute__ ((nocommon));
> -libc_hidden_data_def (__timer_helper_tid)
>
>
> /* Reset variables so that after a fork a new helper thread gets started. */
> @@ -159,4 +154,3 @@ __timer_start_helper_thread (void)
> /* No need for the attribute anymore. */
> __pthread_attr_destroy (&attr);
> }
> -libc_hidden_def (__timer_start_helper_thread)
> diff --git a/sysvipc/Makefile b/sysvipc/Makefile
> index d2acb6a70b..5f1995c05f 100644
> --- a/sysvipc/Makefile
> +++ b/sysvipc/Makefile
> @@ -39,11 +39,5 @@ include ../Rules
> CFLAGS-msgrcv.c += -fexceptions -fasynchronous-unwind-tables
> CFLAGS-msgsnd.c += -fexceptions -fasynchronous-unwind-tables
>
> -ifeq (yes,$(build-shared))
> -librt = $(common-objpfx)rt/librt.so
> -else
> -librt = $(common-objpfx)rt/librt.a
> -endif
OK.
> -
> $(objpfx)test-sysvsem: $(librt)
> $(objpfx)test-sysvsem-time64: $(librt)
> diff --git a/time/Makefile b/time/Makefile
> index 0bea84966c..38e3a7f4c7 100644
> --- a/time/Makefile
> +++ b/time/Makefile
> @@ -86,12 +86,6 @@ $(objpfx)tst-strftime2.out: $(gen-locales)
> $(objpfx)tst-strftime3.out: $(gen-locales)
> endif
>
> -ifeq (yes,$(build-shared))
> -librt = $(common-objpfx)rt/librt.so
> -else
> -librt = $(common-objpfx)rt/librt.a
> -endif
OK.
> -
> $(objpfx)tst-clock_nanosleep: $(librt)
> $(objpfx)tst-clock_nanosleep-time64: $(librt)
>
>
@@ -1179,7 +1179,6 @@ localplt-built-dso := $(addprefix $(common-objpfx),\
libc.so \
elf/ld.so \
math/libm.so \
- rt/librt.so \
dlfcn/libdl.so \
resolv/libresolv.so \
)
@@ -1192,6 +1191,9 @@ endif
ifeq ($(build-crypt),yes)
localplt-built-dso += $(addprefix $(common-objpfx), crypt/libcrypt.so)
endif
+ifneq ($(pthread-in-libc),yes)
+localplt-built-dso += $(addprefix $(common-objpfx), rt/librt.so)
+endif
vpath localplt.data $(+sysdep_dirs)
@@ -148,12 +148,6 @@ CFLAGS-brk.op = $(no-stack-protector)
include ../Rules
-ifeq (yes,$(build-shared))
-librt = $(common-objpfx)rt/librt.so
-else
-librt = $(common-objpfx)rt/librt.a
-endif
-
$(objpfx)libg.a: $(dep-dummy-lib); $(make-dummy-lib)
$(objpfx)tst-tsearch: $(libm)
@@ -535,15 +535,6 @@ $(objpfx)tst-tls6.out: tst-tls6.sh $(objpfx)tst-tls5 \
$(evaluate-test)
endif
-ifeq (yes,$(build-shared))
-librt = $(common-objpfx)rt/librt.so
-else
-librt = $(common-objpfx)rt/librt.a
-endif
-
-$(objpfx)tst-cancel17: $(librt)
-$(objpfx)tst-cancelx17: $(librt)
-
LDLIBS-tst-cancel24 = -Wl,--no-as-needed -lstdc++
LDLIBS-tst-cancel24-static = $(LDLIBS-tst-cancel24)
@@ -28,9 +28,7 @@ routines = \
shm_open \
shm_unlink \
-librt-routines = \
- librt-compat \
-
+librt-routines = librt-compat
librt-shared-only-routines = librt-compat
$(librt-routines-var) += \
@@ -64,6 +62,13 @@ $(librt-routines-var) += \
timer_gettime \
timer_settime \
+ifeq ($(pthread-in-libc),yes)
+# Pretend that libdl.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 \
tst-aio7 tst-aio8 tst-aio9 tst-aio10 \
@@ -98,6 +103,7 @@ 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)
@@ -105,5 +111,6 @@ else
$(addprefix $(objpfx),$(tests)) $(tests-internal): \
$(objpfx)librt.a $(static-thread-library)
endif
+endif # !$(pthread-in-libc)
tst-mqueue7-ARGS = -- $(host-test-program-cmd)
@@ -95,19 +95,6 @@ libc {
shm_open;
shm_unlink;
}
-%if PTHREAD_IN_LIBC
- GLIBC_PRIVATE {
- __aio_enqueue_request;
- __aio_find_req;
- __aio_find_req_fd;
- __aio_free_request;
- __aio_notify;
- __aio_notify_only;
- __aio_remove_request;
- __aio_requests_mutex;
- __aio_sigqueue;
- }
-%endif
}
librt {
GLIBC_2.1 {
@@ -735,24 +735,10 @@ add_request_to_runlist (struct requestlist *newrequest)
}
#if PTHREAD_IN_LIBC
-libc_hidden_data_def (__aio_requests_mutex)
-libc_hidden_def (__aio_enqueue_request)
-libc_hidden_def (__aio_find_req)
-libc_hidden_def (__aio_find_req_fd)
-libc_hidden_def (__aio_free_request)
-libc_hidden_def (__aio_remove_request)
-
versioned_symbol (libc, __aio_init, aio_init, GLIBC_2_34);
# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
compat_symbol (librt, __aio_init, aio_init, GLIBC_2_1);
# endif
-
#else /* !PTHREAD_IN_LIBC */
-librt_hidden_data_def (__aio_requests_mutex)
-librt_hidden_def (__aio_enqueue_request)
-librt_hidden_def (__aio_find_req)
-librt_hidden_def (__aio_find_req_fd)
-librt_hidden_def (__aio_free_request)
-librt_hidden_def (__aio_remove_request)
weak_alias (__aio_init, aio_init)
#endif /* !PTHREAD_IN_LIBC */
@@ -160,11 +160,3 @@ __aio_notify (struct requestlist *req)
waitlist = next;
}
}
-
-#if PTHREAD_IN_LIBC
-libc_hidden_def (__aio_notify)
-libc_hidden_def (__aio_notify_only)
-#else
-librt_hidden_def (__aio_notify)
-librt_hidden_def (__aio_notify_only)
-#endif
@@ -28,5 +28,4 @@ __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
__set_errno (ENOSYS);
return -1;
}
-librt_hidden_def (__aio_sigqueue)
stub_warning (__aio_sigqueue)
@@ -87,55 +87,36 @@ struct requestlist
/* Lock for global I/O list of requests. */
-extern pthread_mutex_t __aio_requests_mutex;
+extern pthread_mutex_t __aio_requests_mutex attribute_hidden;
/* Enqueue request. */
extern struct requestlist *__aio_enqueue_request (aiocb_union *aiocbp,
- int operation);
+ int operation)
+ attribute_hidden;
/* Find request entry for given AIO control block. */
-extern struct requestlist *__aio_find_req (aiocb_union *elem);
+extern struct requestlist *__aio_find_req (aiocb_union *elem) attribute_hidden;
/* Find request entry for given file descriptor. */
-extern struct requestlist *__aio_find_req_fd (int fildes);
+extern struct requestlist *__aio_find_req_fd (int fildes) attribute_hidden;
/* Remove request from the list. */
extern void __aio_remove_request (struct requestlist *last,
- struct requestlist *req, int all);
+ struct requestlist *req, int all)
+ attribute_hidden;
/* Release the entry for the request. */
-extern void __aio_free_request (struct requestlist *req);
+extern void __aio_free_request (struct requestlist *req) attribute_hidden;
/* Notify initiator of request and tell this everybody listening. */
-extern void __aio_notify (struct requestlist *req);
+extern void __aio_notify (struct requestlist *req) attribute_hidden;
/* Notify initiator of request. */
-extern int __aio_notify_only (struct sigevent *sigev);
+extern int __aio_notify_only (struct sigevent *sigev) attribute_hidden;
/* Send the signal. */
-extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid);
-
-#if PTHREAD_IN_LIBC
-libc_hidden_proto (__aio_enqueue_request)
-libc_hidden_proto (__aio_find_req)
-libc_hidden_proto (__aio_find_req_fd)
-libc_hidden_proto (__aio_free_request)
-libc_hidden_proto (__aio_notify)
-libc_hidden_proto (__aio_notify_only)
-libc_hidden_proto (__aio_remove_request)
-libc_hidden_proto (__aio_requests_mutex)
-libc_hidden_proto (__aio_sigqueue)
-#else
-librt_hidden_proto (__aio_enqueue_request)
-librt_hidden_proto (__aio_find_req)
-librt_hidden_proto (__aio_find_req_fd)
-librt_hidden_proto (__aio_free_request)
-librt_hidden_proto (__aio_notify)
-librt_hidden_proto (__aio_notify_only)
-librt_hidden_proto (__aio_remove_request)
-librt_hidden_proto (__aio_requests_mutex)
-librt_hidden_proto (__aio_sigqueue)
-#endif
+extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
+ attribute_hidden;
#endif /* aio_misc.h */
@@ -7,4 +7,10 @@ shared-thread-library = $(common-objpfx)htl/libpthread.so
static-thread-library = $(..)htl/libpthread_syms.a $(common-objpfx)htl/libpthread.a
bounded-thread-library = $(static-thread-library)
+ifeq (yes,$(build-shared))
+librt = $(common-objpfx)rt/librt.so
+else
+librt = $(common-objpfx)rt/librt.a $(static-thread-library)
+endif
+
rpath-dirs += htl
@@ -24,6 +24,7 @@ have-thread-library = yes
# The thread library is integrated.
shared-thread-library =
static-thread-library =
+librt =
# Some tests need this to load their own test objects, and system
# libraries used by memusagestat need to link against the empty
@@ -17,13 +17,7 @@
# <https://www.gnu.org/licenses/>.
ifeq ($(subdir),rt)
-
-ifeq (yes,$(build-shared))
-$(objpfx)tst-timer: $(objpfx)librt.so $(shared-thread-library)
-else
-$(objpfx)tst-timer: $(objpfx)librt.a $(static-thread-library)
-endif
-
+$(objpfx)tst-timer: $(librt)
endif
ifneq (,$(filter $(subdir),htl nptl))
@@ -232,12 +226,10 @@ $(objpfx)tst-cleanup0.out: /dev/null $(objpfx)tst-cleanup0
$(objpfx)tst-cleanup0-cmp.out: $(..)sysdeps/pthread/tst-cleanup0.expect $(objpfx)tst-cleanup0.out
cmp $^ > $@; \
$(evaluate-test)
-
-$(objpfx)tst-cancel28: $(common-objpfx)rt/librt.so
-else
-$(objpfx)tst-cancel28: $(common-objpfx)rt/librt.a
endif
+$(objpfx)tst-cancel28: $(librt)
+
$(objpfx)tst-fini1: $(shared-thread-library) $(objpfx)tst-fini1mod.so
$(objpfx)tst-fini1mod.so: $(shared-thread-library)
@@ -137,19 +137,6 @@ tests-time64 += \
CFLAGS-tst-sigcontext-get_pc.c = -fasynchronous-unwind-tables
-ifeq (yes,$(build-shared))
-librt = $(common-objpfx)rt/librt.so
-else
-librt = $(common-objpfx)rt/librt.a
-endif
-
-$(objpfx)tst-ppoll: $(librt)
-$(objpfx)tst-ppoll-time64: $(librt)
-$(objpfx)tst-sigtimedwait: $(librt)
-$(objpfx)tst-sigtimedwait-time64: $(librt)
-$(objpfx)tst-timerfd: $(librt)
-$(objpfx)tst-timerfd-time64: $(librt)
-
# Generate the list of SYS_* macros for the system calls (__NR_*
# macros). The file syscall-names.list contains all possible system
# call names, and the generated header file produces SYS_* macros for
@@ -291,12 +291,6 @@ libc {
__pread64_nocancel;
__close_nocancel;
__sigtimedwait;
- __timer_active_sigev_thread;
- __timer_active_sigev_thread_lock;
- __timer_compat_list;
- __timer_helper_once;
- __timer_helper_tid;
- __timer_start_helper_thread;
# functions used by nscd
__netlink_assert_response;
}
@@ -44,4 +44,3 @@ __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
return INLINE_SYSCALL (rt_sigqueueinfo, 3, info.si_pid, sig, &info);
}
-libc_hidden_def (__aio_sigqueue)
@@ -26,27 +26,23 @@
extern int __no_posix_timers attribute_hidden;
/* Callback to start helper thread. */
-extern void __timer_start_helper_thread (void);
-libc_hidden_proto (__timer_start_helper_thread)
+extern void __timer_start_helper_thread (void) attribute_hidden;
/* Control variable for helper thread creation. */
-extern pthread_once_t __timer_helper_once;
-libc_hidden_proto (__timer_helper_once)
+extern pthread_once_t __timer_helper_once attribute_hidden;
/* Called from fork so that the new subprocess re-creates the
notification thread if necessary. */
void __timer_fork_subprocess (void) attribute_hidden;
/* TID of the helper thread. */
-extern pid_t __timer_helper_tid;
-libc_hidden_proto (__timer_helper_tid)
+extern pid_t __timer_helper_tid attribute_hidden;
/* List of active SIGEV_THREAD timers. */
-extern struct timer *__timer_active_sigev_thread;
-libc_hidden_proto (__timer_active_sigev_thread)
+extern struct timer *__timer_active_sigev_thread attribute_hidden;
+
/* Lock for __timer_active_sigev_thread. */
-extern pthread_mutex_t __timer_active_sigev_thread_lock;
-libc_hidden_proto (__timer_active_sigev_thread_lock)
+extern pthread_mutex_t __timer_active_sigev_thread_lock attribute_hidden;
extern __typeof (timer_create) __timer_create;
libc_hidden_proto (__timer_create)
@@ -118,5 +114,4 @@ timerid_to_kernel_timer (timer_t timerid)
#if TIMER_T_WAS_INT_COMPAT
# define OLD_TIMER_MAX 256
extern timer_t __timer_compat_list[OLD_TIMER_MAX];
-libc_hidden_proto (__timer_compat_list)
#endif
@@ -146,8 +146,7 @@ compat_symbol (librt, ___timer_create, timer_create, GLIBC_2_3_3);
# endif
# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
-timer_t __timer_compat_list[OLD_TIMER_MAX] __attribute__ ((nocommon));
-libc_hidden_data_def (__timer_compat_list)
+timer_t __timer_compat_list[OLD_TIMER_MAX];
int
__timer_create_old (clockid_t clock_id, struct sigevent *evp, int *timerid)
@@ -26,13 +26,10 @@
/* List of active SIGEV_THREAD timers. */
-struct timer *__timer_active_sigev_thread __attribute__ ((nocommon));
-libc_hidden_data_def (__timer_active_sigev_thread)
+struct timer *__timer_active_sigev_thread;
/* Lock for _timer_active_sigev_thread. */
-pthread_mutex_t __timer_active_sigev_thread_lock __attribute__ ((nocommon))
- = PTHREAD_MUTEX_INITIALIZER;
-libc_hidden_data_def (__timer_active_sigev_thread_lock)
+pthread_mutex_t __timer_active_sigev_thread_lock = PTHREAD_MUTEX_INITIALIZER;
struct thread_start_data
{
@@ -112,12 +109,10 @@ timer_helper_thread (void *arg)
/* Control variable for helper thread creation. */
pthread_once_t __timer_helper_once __attribute__ ((nocommon))
= PTHREAD_ONCE_INIT;
-libc_hidden_data_def (__timer_helper_once)
/* TID of the helper thread. */
pid_t __timer_helper_tid __attribute__ ((nocommon));
-libc_hidden_data_def (__timer_helper_tid)
/* Reset variables so that after a fork a new helper thread gets started. */
@@ -159,4 +154,3 @@ __timer_start_helper_thread (void)
/* No need for the attribute anymore. */
__pthread_attr_destroy (&attr);
}
-libc_hidden_def (__timer_start_helper_thread)
@@ -39,11 +39,5 @@ include ../Rules
CFLAGS-msgrcv.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-msgsnd.c += -fexceptions -fasynchronous-unwind-tables
-ifeq (yes,$(build-shared))
-librt = $(common-objpfx)rt/librt.so
-else
-librt = $(common-objpfx)rt/librt.a
-endif
-
$(objpfx)test-sysvsem: $(librt)
$(objpfx)test-sysvsem-time64: $(librt)
@@ -86,12 +86,6 @@ $(objpfx)tst-strftime2.out: $(gen-locales)
$(objpfx)tst-strftime3.out: $(gen-locales)
endif
-ifeq (yes,$(build-shared))
-librt = $(common-objpfx)rt/librt.so
-else
-librt = $(common-objpfx)rt/librt.a
-endif
-
$(objpfx)tst-clock_nanosleep: $(librt)
$(objpfx)tst-clock_nanosleep-time64: $(librt)