diff options
| author | Florian Weimer <fweimer@redhat.com> | 2021-06-25 10:30:36 +0200 |
|---|---|---|
| committer | Florian Weimer <fweimer@redhat.com> | 2021-06-25 12:19:58 +0200 |
| commit | 3fe3f8076e4e0d3f5cd27f85dc0aa76b2f625917 (patch) | |
| tree | 405706ac72d5629cf38ae5845e755665382b29f6 | |
| parent | 3353a5a4cfcdc6ef58e1ec036bd3f47ebcc16f3c (diff) | |
| download | glibc-3fe3f8076e4e0d3f5cd27f85dc0aa76b2f625917.tar.xz glibc-3fe3f8076e4e0d3f5cd27f85dc0aa76b2f625917.zip | |
Linux: Move lio_listio, lio_listio64 from librt to libc
The symbols were moved using scripts/move-symbol-to-libc.py.
Placeholder symbols are needed on some architectures, to keep the
GLIBC_2.1 and GLIBC_2.4 symbol versions around.
Reviewed-by: Adhemerva Zanella <adhemerval.zanella@linaro.org>
66 files changed, 248 insertions, 105 deletions
diff --git a/rt/Makefile b/rt/Makefile index 3d930d1d26..5a5e45bfd2 100644 --- a/rt/Makefile +++ b/rt/Makefile @@ -30,8 +30,6 @@ routines = \ librt-routines = \ librt-compat \ - lio_listio \ - lio_listio64 \ mq_close \ mq_getattr \ mq_notify \ @@ -63,6 +61,8 @@ $(librt-routines-var) += \ aio_suspend \ aio_write \ aio_write64 \ + lio_listio \ + lio_listio64 \ tests := tst-shm tst-timer tst-timer2 \ tst-aio tst-aio64 tst-aio2 tst-aio3 tst-aio4 tst-aio5 tst-aio6 \ diff --git a/rt/Versions b/rt/Versions index f2b4ced257..0565707456 100644 --- a/rt/Versions +++ b/rt/Versions @@ -16,12 +16,20 @@ libc { aio_suspend64; aio_write; aio_write64; + lio_listio; + lio_listio64; %endif } GLIBC_2.2 { shm_open; shm_unlink; } + GLIBC_2.4 { +%if PTHREAD_IN_LIBC + lio_listio; + lio_listio64; +%endif + } GLIBC_2.34 { %if PTHREAD_IN_LIBC aio_cancel; @@ -39,6 +47,8 @@ libc { aio_suspend64; aio_write; aio_write64; + lio_listio; + lio_listio64; %endif shm_open; shm_unlink; @@ -59,7 +69,9 @@ libc { } librt { GLIBC_2.1 { -%if !PTHREAD_IN_LIBC +%if PTHREAD_IN_LIBC + __librt_version_placeholder; +%else aio_cancel; aio_cancel64; aio_error; @@ -75,9 +87,9 @@ librt { aio_suspend64; aio_write; aio_write64; -%endif lio_listio; lio_listio64; +%endif } GLIBC_2.2 { timer_create; @@ -99,8 +111,12 @@ librt { mq_unlink; } GLIBC_2.4 { +%if PTHREAD_IN_LIBC + __librt_version_placeholder; +%else lio_listio; lio_listio64; +%endif } GLIBC_2.7 { __mq_open_2; diff --git a/rt/librt-compat.c b/rt/librt-compat.c index 7e5f1db940..23c87b0f3e 100644 --- a/rt/librt-compat.c +++ b/rt/librt-compat.c @@ -26,4 +26,16 @@ __attribute_used__ __librt_version_placeholder_1 (void) { } + +# if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_2) +compat_symbol (librt, __librt_version_placeholder_1, + __librt_version_placeholder, GLIBC_2_1); +# endif + +# if SHLIB_COMPAT (librt, GLIBC_2_4, GLIBC_2_34) \ + && ABI_librt_GLIBC_2_4 != ABI_librt_GLIBC_2_1 +compat_symbol (librt, __librt_version_placeholder_1, + __librt_version_placeholder, GLIBC_2_4); +# endif + #endif diff --git a/rt/lio_listio-common.c b/rt/lio_listio-common.c index 3e087aa063..aa4ee5f465 100644 --- a/rt/lio_listio-common.c +++ b/rt/lio_listio-common.c @@ -42,6 +42,7 @@ #include <errno.h> #include <stdlib.h> #include <unistd.h> +#include <pthreadP.h> #include <aio_misc.h> @@ -87,7 +88,7 @@ lio_listio_internal (int mode, struct AIOCB *const list[], int nent, } /* Request the mutex. */ - pthread_mutex_lock (&__aio_requests_mutex); + __pthread_mutex_lock (&__aio_requests_mutex); /* Now we can enqueue all requests. Since we already acquired the mutex the enqueue function need not do this. */ @@ -120,7 +121,7 @@ lio_listio_internal (int mode, struct AIOCB *const list[], int nent, /* Release the mutex. We do this before raising a signal since the signal handler might do a `siglongjmp' and then the mutex is locked forever. */ - pthread_mutex_unlock (&__aio_requests_mutex); + __pthread_mutex_unlock (&__aio_requests_mutex); if (LIO_MODE (mode) == LIO_NOWAIT) __aio_notify_only (sig); @@ -223,13 +224,13 @@ lio_listio_internal (int mode, struct AIOCB *const list[], int nent, } /* Release the mutex. */ - pthread_mutex_unlock (&__aio_requests_mutex); + __pthread_mutex_unlock (&__aio_requests_mutex); return result; } -#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4) |
