From: GNU Libc Maintainers Date: Tue, 4 Feb 2020 19:37:26 +0000 (+0000) Subject: libpthread_version X-Git-Tag: archive/raspbian/2.29-10+rpi1^2~82 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=63c129b88c624292f36da6ab560ed5bfc490b6cb;p=glibc.git libpthread_version This dates when libpthread was moved to glibc and some features were added. 2.13-31/38/39 dates when the global signal disposition call was added. TODO: _DEBIAN_ in versions however pose problem. Remove the _DEBIAN_ version once packages are rebuilt against 2.21. Gbp-Pq: Topic hurd-i386 Gbp-Pq: Name libpthread_version.diff --- diff --git a/htl/Versions b/htl/Versions index c5a616da1..967b17a0c 100644 --- a/htl/Versions +++ b/htl/Versions @@ -1,4 +1,22 @@ libc { + GLIBC_2.13_DEBIAN_31 { + pthread_attr_destroy; pthread_attr_getdetachstate; + pthread_attr_getinheritsched; pthread_attr_getschedparam; + pthread_attr_getschedpolicy; pthread_attr_getscope; pthread_attr_init; + pthread_attr_setdetachstate; pthread_attr_setinheritsched; + pthread_attr_setschedparam; pthread_attr_setschedpolicy; + pthread_attr_setscope; + pthread_condattr_destroy; pthread_condattr_init; + pthread_cond_broadcast; pthread_cond_destroy; + pthread_cond_init; pthread_cond_signal; pthread_cond_wait; + pthread_cond_timedwait; + pthread_equal; + pthread_exit; pthread_getschedparam; pthread_setschedparam; + pthread_mutex_destroy; pthread_mutex_init; + pthread_mutex_lock; pthread_mutex_trylock; pthread_mutex_unlock; + pthread_self; pthread_setcancelstate; pthread_setcanceltype; + __pthread_get_cleanup_stack; + } GLIBC_2.21 { pthread_attr_destroy; pthread_attr_getdetachstate; pthread_attr_getinheritsched; pthread_attr_getschedparam; @@ -137,6 +155,12 @@ libpthread { __pthread_spin_lock; __pthread_spin_trylock; __pthread_spin_unlock; _pthread_spin_lock; } + GLIBC_2.13_DEBIAN_38 { + pthread_hurd_cond_wait_np; + } + GLIBC_2.13_DEBIAN_39 { + pthread_hurd_cond_timedwait_np; + } GLIBC_2.21 { pthread_hurd_cond_wait_np; pthread_hurd_cond_timedwait_np; diff --git a/htl/forward.c b/htl/forward.c index 165dda399..313646e8b 100644 --- a/htl/forward.c +++ b/htl/forward.c @@ -24,20 +24,42 @@ #include #include +#include + /* Pointers to the libc functions. */ struct pthread_functions __libc_pthread_functions attribute_hidden; int __libc_pthread_functions_init attribute_hidden; +#define FORWARD2_NOVERSION(name, rettype, decl, params, defaction) \ +rettype \ +__##name decl \ +{ \ + if (!__libc_pthread_functions_init) \ + defaction; \ + \ + return PTHFCT_CALL (ptr_##name, params); \ +} \ #define FORWARD2(name, rettype, decl, params, defaction) \ + FORWARD2_NOVERSION(name, rettype, decl, params, defaction) \ +versioned_symbol (libc, __##name, name, GLIBC_2_21); \ + +#if SHLIB_COMPAT (libc, GLIBC_2_13, GLIBC_2_21) +# define FORWARD2_NOCOMPAT(name, rettype, decl, params, defaction) \ rettype \ -name decl \ +__##name##_2_13 decl \ { \ if (!__libc_pthread_functions_init) \ defaction; \ \ return PTHFCT_CALL (ptr_##name, params); \ } +# define FORWARD2_COMPAT(name, rettype, decl, params, defaction) \ + FORWARD2_NOCOMPAT(name, rettype, decl, params, defaction) \ +compat_symbol (libc, __##name##_2_13, name, GLIBC_2_13_DEBIAN_31); +#else +# define FORWARD2_COMPAT(name, rettype, decl, params, defaction) +#endif /* Same as FORWARD2, only without return. */ #define FORWARD_NORETURN(name, rettype, decl, params, defaction) \ @@ -48,10 +70,22 @@ name decl \ defaction; \ \ PTHFCT_CALL (ptr_##name, params); \ +} \ +rettype \ +name##_2_13 decl \ +{ \ + if (!__libc_pthread_functions_init) \ + defaction; \ + \ + PTHFCT_CALL (ptr_##name, params); \ } #define FORWARD(name, decl, params, defretval) \ - FORWARD2 (name, int, decl, params, return defretval) + FORWARD2 (name, int, decl, params, return defretval) \ + FORWARD2_COMPAT (name, int, decl, params, return defretval) +#define FORWARD_NOVERSION(name, decl, params, defretval) \ + FORWARD2_NOVERSION (name, int, decl, params, return defretval) \ + FORWARD2_NOCOMPAT (name, int, decl, params, return defretval) FORWARD (pthread_attr_destroy, (pthread_attr_t *attr), (attr), 0) @@ -109,7 +143,10 @@ FORWARD (pthread_equal, (pthread_t thread1, pthread_t thread2), /* Use an alias to avoid warning, as pthread_exit is declared noreturn. */ FORWARD_NORETURN (__pthread_exit, void, (void *retval), (retval), exit (EXIT_SUCCESS)) -strong_alias (__pthread_exit, pthread_exit); +versioned_symbol (libc, __pthread_exit, pthread_exit, GLIBC_2_21); +#if SHLIB_COMPAT (libc, GLIBC_2_13, GLIBC_2_21) +compat_symbol (libc, __pthread_exit_2_13, pthread_exit, GLIBC_2_13_DEBIAN_31); +#endif FORWARD (pthread_getschedparam, @@ -132,17 +169,23 @@ FORWARD (pthread_mutex_unlock, (pthread_mutex_t *mutex), (mutex), 0) FORWARD2 (pthread_self, pthread_t, (void), (), return 0) +FORWARD2_COMPAT (pthread_self, pthread_t, (void), (), return 0) -FORWARD (__pthread_setcancelstate, (int state, int *oldstate), +FORWARD_NOVERSION (__pthread_setcancelstate, (int state, int *oldstate), (state, oldstate), 0) -strong_alias (__pthread_setcancelstate, pthread_setcancelstate); +versioned_symbol (libc, ____pthread_setcancelstate, pthread_setcancelstate, GLIBC_2_21); +#if SHLIB_COMPAT (libc, GLIBC_2_13, GLIBC_2_21) +compat_symbol (libc, ____pthread_setcancelstate_2_13, pthread_setcancelstate, GLIBC_2_13_DEBIAN_31); +#endif FORWARD (pthread_setcanceltype, (int type, int *oldtype), (type, oldtype), 0) struct __pthread_cancelation_handler *dummy_list; FORWARD2 (__pthread_get_cleanup_stack, struct __pthread_cancelation_handler **, (void), (), return &dummy_list); +FORWARD2_COMPAT (__pthread_get_cleanup_stack, struct __pthread_cancelation_handler **, + (void), (), return &dummy_list); /* Fork interaction */ diff --git a/sysdeps/mach/hurd/htl/pt-hurd-cond-timedwait.c b/sysdeps/mach/hurd/htl/pt-hurd-cond-timedwait.c index c6b48047c..550a69c48 100644 --- a/sysdeps/mach/hurd/htl/pt-hurd-cond-timedwait.c +++ b/sysdeps/mach/hurd/htl/pt-hurd-cond-timedwait.c @@ -22,6 +22,8 @@ #include +#include + extern int __pthread_hurd_cond_timedwait_internal (pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec @@ -34,8 +36,18 @@ __pthread_hurd_cond_timedwait_np (pthread_cond_t *cond, { return __pthread_hurd_cond_timedwait_internal (cond, mutex, abstime); } +versioned_symbol (libpthread, __pthread_hurd_cond_timedwait_np, pthread_hurd_cond_timedwait_np, GLIBC_2_21); -strong_alias (__pthread_hurd_cond_timedwait_np, pthread_hurd_cond_timedwait_np); +#if SHLIB_COMPAT (libpthread, GLIBC_2_13, GLIBC_2_21) +int +__pthread_hurd_cond_timedwait_np_2_13 (pthread_cond_t *cond, + pthread_mutex_t *mutex, + const struct timespec *abstime) +{ + return __pthread_hurd_cond_timedwait_internal (cond, mutex, abstime); +} +compat_symbol (libpthread, __pthread_hurd_cond_timedwait_np_2_13, pthread_hurd_cond_timedwait_np, GLIBC_2_13_DEBIAN_39); +#endif int __pthread_hurd_cond_timedwait_internal (pthread_cond_t *cond, diff --git a/sysdeps/mach/hurd/htl/pt-hurd-cond-wait.c b/sysdeps/mach/hurd/htl/pt-hurd-cond-wait.c index 14b80c23b..f8a636c7b 100644 --- a/sysdeps/mach/hurd/htl/pt-hurd-cond-wait.c +++ b/sysdeps/mach/hurd/htl/pt-hurd-cond-wait.c @@ -22,6 +22,8 @@ #include +#include + /* Implemented in pt-hurd-cond-timedwait.c. */ extern int __pthread_hurd_cond_timedwait_internal (pthread_cond_t *cond, pthread_mutex_t *mutex, @@ -36,5 +38,17 @@ __pthread_hurd_cond_wait_np (pthread_cond_t *cond, pthread_mutex_t *mutex) err = __pthread_hurd_cond_timedwait_internal (cond, mutex, NULL); return err == EINTR; } +versioned_symbol (libpthread, __pthread_hurd_cond_wait_np, pthread_hurd_cond_wait_np, GLIBC_2_21); -strong_alias (__pthread_hurd_cond_wait_np, pthread_hurd_cond_wait_np); +#if SHLIB_COMPAT (libpthread, GLIBC_2_13, GLIBC_2_21) +int +__pthread_hurd_cond_wait_np_2_13 (pthread_cond_t *cond, + pthread_mutex_t *mutex) +{ + error_t err; + + err = __pthread_hurd_cond_timedwait_internal (cond, mutex, NULL); + return (err == EINTR); +} +compat_symbol (libpthread, __pthread_hurd_cond_wait_np_2_13, pthread_hurd_cond_wait_np, GLIBC_2_13_DEBIAN_38); +#endif diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist index 0ac6db256..80fbc98bb 100644 --- a/sysdeps/mach/hurd/i386/libc.abilist +++ b/sysdeps/mach/hurd/i386/libc.abilist @@ -34,6 +34,38 @@ GLIBC_2.13_DEBIAN_19 _hurd_sigstate_lock F GLIBC_2.13_DEBIAN_19 _hurd_sigstate_pending F GLIBC_2.13_DEBIAN_19 _hurd_sigstate_set_global_rcv F GLIBC_2.13_DEBIAN_19 _hurd_sigstate_unlock F +GLIBC_2.13_DEBIAN_31 __pthread_get_cleanup_stack F +GLIBC_2.13_DEBIAN_31 pthread_attr_destroy F +GLIBC_2.13_DEBIAN_31 pthread_attr_getdetachstate F +GLIBC_2.13_DEBIAN_31 pthread_attr_getinheritsched F +GLIBC_2.13_DEBIAN_31 pthread_attr_getschedparam F +GLIBC_2.13_DEBIAN_31 pthread_attr_getschedpolicy F +GLIBC_2.13_DEBIAN_31 pthread_attr_getscope F +GLIBC_2.13_DEBIAN_31 pthread_attr_init F +GLIBC_2.13_DEBIAN_31 pthread_attr_setdetachstate F +GLIBC_2.13_DEBIAN_31 pthread_attr_setinheritsched F +GLIBC_2.13_DEBIAN_31 pthread_attr_setschedparam F +GLIBC_2.13_DEBIAN_31 pthread_attr_setschedpolicy F +GLIBC_2.13_DEBIAN_31 pthread_attr_setscope F +GLIBC_2.13_DEBIAN_31 pthread_cond_broadcast F +GLIBC_2.13_DEBIAN_31 pthread_cond_destroy F +GLIBC_2.13_DEBIAN_31 pthread_cond_init F +GLIBC_2.13_DEBIAN_31 pthread_cond_signal F +GLIBC_2.13_DEBIAN_31 pthread_cond_timedwait F +GLIBC_2.13_DEBIAN_31 pthread_cond_wait F +GLIBC_2.13_DEBIAN_31 pthread_condattr_destroy F +GLIBC_2.13_DEBIAN_31 pthread_condattr_init F +GLIBC_2.13_DEBIAN_31 pthread_equal F +GLIBC_2.13_DEBIAN_31 pthread_exit F +GLIBC_2.13_DEBIAN_31 pthread_getschedparam F +GLIBC_2.13_DEBIAN_31 pthread_mutex_destroy F +GLIBC_2.13_DEBIAN_31 pthread_mutex_init F +GLIBC_2.13_DEBIAN_31 pthread_mutex_lock F +GLIBC_2.13_DEBIAN_31 pthread_mutex_unlock F +GLIBC_2.13_DEBIAN_31 pthread_self F +GLIBC_2.13_DEBIAN_31 pthread_setcancelstate F +GLIBC_2.13_DEBIAN_31 pthread_setcanceltype F +GLIBC_2.13_DEBIAN_31 pthread_setschedparam F GLIBC_2.14 syncfs F GLIBC_2.15 __fdelt_chk F GLIBC_2.15 __fdelt_warn F diff --git a/sysdeps/mach/hurd/i386/libpthread.abilist b/sysdeps/mach/hurd/i386/libpthread.abilist index 4c7d06d07..db9729b64 100644 --- a/sysdeps/mach/hurd/i386/libpthread.abilist +++ b/sysdeps/mach/hurd/i386/libpthread.abilist @@ -142,6 +142,8 @@ GLIBC_2.12 sem_timedwait F GLIBC_2.12 sem_trywait F GLIBC_2.12 sem_unlink F GLIBC_2.12 sem_wait F +GLIBC_2.13_DEBIAN_38 pthread_hurd_cond_wait_np F +GLIBC_2.13_DEBIAN_39 pthread_hurd_cond_timedwait_np F GLIBC_2.2.6 _IO_flockfile F GLIBC_2.2.6 _IO_ftrylockfile F GLIBC_2.2.6 _IO_funlockfile F