From: GNU Libc Maintainers Date: Mon, 29 Oct 2018 20:36:01 +0000 (+0000) Subject: libpthread_version X-Git-Tag: archive/raspbian/2.27-8+rpi1^2~112 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=3d0b606e5ff99f33dd23e52c473b88a9b2dcdd0e;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/libpthread/Versions b/libpthread/Versions index 67c6032e3..9c55bcb25 100644 --- a/libpthread/Versions +++ b/libpthread/Versions @@ -1,5 +1,5 @@ libc { - GLIBC_2.13 { + 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; @@ -20,6 +20,24 @@ libc { GLIBC_2.22 { __register_atfork; } + GLIBC_2.21 { + 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_PRIVATE { __libc_alloca_cutoff; __libc_pthread_init; @@ -136,7 +154,13 @@ libpthread { __pthread_spin_lock; __pthread_spin_trylock; __pthread_spin_unlock; _pthread_spin_lock; } - GLIBC_2.17 { + 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/libpthread/forward.c b/libpthread/forward.c index 0ee84a0ff..bfc06d54c 100644 --- a/libpthread/forward.c +++ b/libpthread/forward.c @@ -24,25 +24,55 @@ #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) \ rettype \ name decl \ +{ \ + if (!__libc_pthread_functions_init) \ + defaction; \ + \ + PTHFCT_CALL (ptr_##name, params); \ +} \ +rettype \ +name##_2_13 decl \ { \ if (!__libc_pthread_functions_init) \ defaction; \ @@ -51,7 +81,11 @@ name decl \ } # 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) @@ -108,7 +142,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, @@ -131,16 +168,21 @@ 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), (state, 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/libpthread/sysdeps/mach/hurd/pt-hurd-cond-timedwait.c b/libpthread/sysdeps/mach/hurd/pt-hurd-cond-timedwait.c index 3d1fe531a..80819b13c 100644 --- a/libpthread/sysdeps/mach/hurd/pt-hurd-cond-timedwait.c +++ b/libpthread/sysdeps/mach/hurd/pt-hurd-cond-timedwait.c @@ -23,6 +23,8 @@ #include +#include + extern int __pthread_hurd_cond_timedwait_internal (pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime); @@ -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/libpthread/sysdeps/mach/hurd/pt-hurd-cond-wait.c b/libpthread/sysdeps/mach/hurd/pt-hurd-cond-wait.c index 5e7c0075e..87d2265d5 100644 --- a/libpthread/sysdeps/mach/hurd/pt-hurd-cond-wait.c +++ b/libpthread/sysdeps/mach/hurd/pt-hurd-cond-wait.c @@ -23,6 +23,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, @@ -37,5 +39,17 @@ __pthread_hurd_cond_wait_np (pthread_cond_t *cond, 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 e8224f0bf..4136c04f8 100644 --- a/sysdeps/mach/hurd/i386/libc.abilist +++ b/sysdeps/mach/hurd/i386/libc.abilist @@ -38,6 +38,39 @@ 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 GLIBC_2.13_DEBIAN_31 A +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 GLIBC_2.14 A GLIBC_2.14 syncfs F GLIBC_2.15 GLIBC_2.15 A diff --git a/sysdeps/mach/hurd/i386/libpthread.abilist b/sysdeps/mach/hurd/i386/libpthread.abilist index e11569f17..e18818d52 100644 --- a/sysdeps/mach/hurd/i386/libpthread.abilist +++ b/sysdeps/mach/hurd/i386/libpthread.abilist @@ -142,6 +142,10 @@ 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 GLIBC_2.13_DEBIAN_38 A +GLIBC_2.13_DEBIAN_38 pthread_hurd_cond_wait_np F +GLIBC_2.13_DEBIAN_39 GLIBC_2.13_DEBIAN_39 A +GLIBC_2.13_DEBIAN_39 pthread_hurd_cond_timedwait_np F GLIBC_2.2.6 GLIBC_2.2.6 A GLIBC_2.2.6 _IO_flockfile F GLIBC_2.2.6 _IO_ftrylockfile F