aboutsummaryrefslogtreecommitdiff
path: root/nptl
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2021-04-22 15:18:12 +0200
committerFlorian Weimer <fweimer@redhat.com>2021-04-23 17:06:44 +0200
commitce4b3b7befc1010a4be0294d28984d0af47b7bc2 (patch)
tree3a098b52827d0ba5ae835bafe65485dfe2b702ec /nptl
parentc7b1cd4ad100d01f3202a44ec3b84b87bea5ef19 (diff)
downloadglibc-ce4b3b7befc1010a4be0294d28984d0af47b7bc2.zip
glibc-ce4b3b7befc1010a4be0294d28984d0af47b7bc2.tar.gz
glibc-ce4b3b7befc1010a4be0294d28984d0af47b7bc2.tar.bz2
nptl: Move pthread_spin_init, Move pthread_spin_unlock into libc
For some architectures, the two functions are aliased, so these symbols need to be moved at the same time. The symbols were moved using scripts/move-symbol-to-libc.py.
Diffstat (limited to 'nptl')
-rw-r--r--nptl/Makefile4
-rw-r--r--nptl/Versions6
-rw-r--r--nptl/pthread_spin_init.c8
-rw-r--r--nptl/pthread_spin_unlock.c10
4 files changed, 22 insertions, 6 deletions
diff --git a/nptl/Makefile b/nptl/Makefile
index 7b36d85..dd7fa95 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -130,6 +130,8 @@ routines = \
pthread_setspecific \
pthread_sigmask \
pthread_spin_destroy \
+ pthread_spin_init \
+ pthread_spin_unlock \
tpp \
unwind \
@@ -195,10 +197,8 @@ libpthread-routines = \
pthread_setname \
pthread_setschedprio \
pthread_sigqueue \
- pthread_spin_init \
pthread_spin_lock \
pthread_spin_trylock \
- pthread_spin_unlock \
pthread_testcancel \
pthread_timedjoin \
pthread_tryjoin \
diff --git a/nptl/Versions b/nptl/Versions
index 22fd51e..8ec1d4bb 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -80,6 +80,8 @@ libc {
pthread_mutexattr_getpshared;
pthread_mutexattr_setpshared;
pthread_spin_destroy;
+ pthread_spin_init;
+ pthread_spin_unlock;
}
GLIBC_2.2.3 {
pthread_getattr_np;
@@ -181,6 +183,8 @@ libc {
pthread_rwlock_wrlock;
pthread_setspecific;
pthread_spin_destroy;
+ pthread_spin_init;
+ pthread_spin_unlock;
}
GLIBC_PRIVATE {
__futex_abstimed_wait64;
@@ -312,10 +316,8 @@ libpthread {
pthread_getcpuclockid;
pthread_rwlock_timedrdlock;
pthread_rwlock_timedwrlock;
- pthread_spin_init;
pthread_spin_lock;
pthread_spin_trylock;
- pthread_spin_unlock;
pthread_yield;
sem_timedwait;
}
diff --git a/nptl/pthread_spin_init.c b/nptl/pthread_spin_init.c
index 470a6fa..c6a5147 100644
--- a/nptl/pthread_spin_init.c
+++ b/nptl/pthread_spin_init.c
@@ -18,11 +18,17 @@
<https://www.gnu.org/licenses/>. */
#include "pthreadP.h"
+#include <shlib-compat.h>
int
-pthread_spin_init (pthread_spinlock_t *lock, int pshared)
+__pthread_spin_init (pthread_spinlock_t *lock, int pshared)
{
/* Relaxed MO is fine because this is an initializing store. */
atomic_store_relaxed (lock, 0);
return 0;
}
+versioned_symbol (libc, __pthread_spin_init, pthread_spin_init, GLIBC_2_34);
+
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_2, GLIBC_2_34)
+compat_symbol (libpthread, __pthread_spin_init, pthread_spin_init, GLIBC_2_2);
+#endif
diff --git a/nptl/pthread_spin_unlock.c b/nptl/pthread_spin_unlock.c
index 9de75cb..15921f7 100644
--- a/nptl/pthread_spin_unlock.c
+++ b/nptl/pthread_spin_unlock.c
@@ -19,9 +19,10 @@
#include "pthreadP.h"
#include <atomic.h>
+#include <shlib-compat.h>
int
-pthread_spin_unlock (pthread_spinlock_t *lock)
+__pthread_spin_unlock (pthread_spinlock_t *lock)
{
/* The atomic_store_release synchronizes-with the atomic_exchange_acquire
or atomic_compare_exchange_weak_acquire in pthread_spin_lock /
@@ -29,3 +30,10 @@ pthread_spin_unlock (pthread_spinlock_t *lock)
atomic_store_release (lock, 0);
return 0;
}
+versioned_symbol (libc, __pthread_spin_unlock, pthread_spin_unlock,
+ GLIBC_2_34);
+
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_2, GLIBC_2_34)
+compat_symbol (libpthread, __pthread_spin_unlock, pthread_spin_unlock,
+ GLIBC_2_2);
+#endif