summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2021-06-03 21:01:27 +0200
committerFlorian Weimer <fweimer@redhat.com>2021-06-03 22:07:54 +0200
commitb5346868eee22836bce235cf995db1305567ded6 (patch)
tree73d7f506608a5b8e9a18477eb5b18f9fceccb5ee
parente6c1385ce84c9896e0ad51cd9db326a0191bf160 (diff)
downloadglibc-fw/librt.tar.gz
Linux: Cleanups after librt movefw/librt
librt.so is no longer installed for PTHREAD_IN_LIBC, and tests are not linked against it. GLIBC_PRIVATE symbols that were needed during the transition are removed again.
-rw-r--r--elf/Makefile4
-rw-r--r--nptl/Makefile9
-rw-r--r--rt/Makefile13
-rw-r--r--rt/Versions13
-rw-r--r--rt/aio_misc.c14
-rw-r--r--rt/aio_notify.c8
-rw-r--r--rt/aio_sigqueue.c1
-rw-r--r--sysdeps/generic/aio_misc.h43
-rw-r--r--sysdeps/pthread/Makefile2
-rw-r--r--sysdeps/unix/sysv/linux/Versions6
-rw-r--r--sysdeps/unix/sysv/linux/aio_sigqueue.c1
-rw-r--r--sysdeps/unix/sysv/linux/kernel-posix-timers.h19
-rw-r--r--sysdeps/unix/sysv/linux/timer_create.c3
-rw-r--r--sysdeps/unix/sysv/linux/timer_routines.c10
14 files changed, 37 insertions, 109 deletions
diff --git a/elf/Makefile b/elf/Makefile
index e9788d3d4f..f83e7fe757 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -1181,7 +1181,6 @@ localplt-built-dso := $(addprefix $(common-objpfx),\
libc.so \
elf/ld.so \
math/libm.so \
- rt/librt.so \
dlfcn/libdl.so \
resolv/libresolv.so \
)
@@ -1194,6 +1193,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)
diff --git a/nptl/Makefile b/nptl/Makefile
index f7d7a2c7e2..9346115487 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -532,15 +532,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)
diff --git a/rt/Makefile b/rt/Makefile
index a41bdb5728..dca20f050d 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -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 \
@@ -87,6 +92,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)
@@ -94,5 +100,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)
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
}
librt {
GLIBC_2.1 {
diff --git a/rt/aio_misc.c b/rt/aio_misc.c
index 634456d489..bdee61611c 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)
-
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 */
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
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)
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;
/* 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 */
diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
index e4690a7bc4..a5d0099d9a 100644
--- a/sysdeps/pthread/Makefile
+++ b/sysdeps/pthread/Makefile
@@ -18,11 +18,13 @@
ifeq ($(subdir),rt)
+ifneq ($(pthread-in-libc),yes)
ifeq (yes,$(build-shared))
$(objpfx)tst-timer: $(objpfx)librt.so $(shared-thread-library)
else
$(objpfx)tst-timer: $(objpfx)librt.a $(static-thread-library)
endif
+endif # !$(pthread-in-libc)
endif
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 9202e1faab..c864ad38ca 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -194,12 +194,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;
}
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 5bf528cd69..0e29049ea0 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)
@@ -114,5 +110,4 @@ timerid_to_kernel_timer (timer_t timerid)
/* Used by the compatibility implementation (before timer_t
existed). */
#define OLD_TIMER_MAX 256
-extern timer_t __timer_compat_list[OLD_TIMER_MAX];
-libc_hidden_proto (__timer_compat_list)
+extern timer_t __timer_compat_list[OLD_TIMER_MAX] attribute_hidden;
diff --git a/sysdeps/unix/sysv/linux/timer_create.c b/sysdeps/unix/sysv/linux/timer_create.c
index 1adb8633ea..79362f31aa 100644
--- a/sysdeps/unix/sysv/linux/timer_create.c
+++ b/sysdeps/unix/sysv/linux/timer_create.c
@@ -144,8 +144,7 @@ libc_hidden_ver (___timer_create, __timer_create)
#if __WORDSIZE == 64 && OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
compat_symbol (librt, ___timer_create, timer_create, 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 8d8c1a1e76..ccf83f2cf4 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. */
(void) __pthread_attr_destroy (&attr);
}
-libc_hidden_def (__timer_start_helper_thread)