aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-03-13 01:51:12 +0000
committerUlrich Drepper <drepper@redhat.com>2003-03-13 01:51:12 +0000
commit7588880f50f551cb60a99e2dd2068fdc170e5435 (patch)
tree9d1a5e21e3289c84973ff351b40172c08f2d4967
parent959c5bbfeee074dbd3dcef98acd41b2e53d14cec (diff)
downloadglibc-7588880f50f551cb60a99e2dd2068fdc170e5435.zip
glibc-7588880f50f551cb60a99e2dd2068fdc170e5435.tar.gz
glibc-7588880f50f551cb60a99e2dd2068fdc170e5435.tar.bz2
Update.
* sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Add libc_multiple_threads. * sysdeps/unix/sysv/linux/libc_pthread_init.c: Move definition of __libc_multiple_threads to... * sysdeps/unix/sysv/linux/libc_multiple_threads.c: ...here. New file. * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Remove unnecessary versioning. * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/pthread_once.S (__pthread_once_internal): Define. * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Use shlib-compat.h macros instead of .symver directly. * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise.
-rw-r--r--nptl/ChangeLog19
-rw-r--r--nptl/sysdeps/unix/sysv/linux/Makefile3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c26
-rw-r--r--nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/sem_post.S14
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/sem_trywait.S15
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S14
8 files changed, 65 insertions, 32 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 4313df0..5031d3a 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,5 +1,24 @@
2003-03-12 Ulrich Drepper <drepper@redhat.com>
+ * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Add
+ libc_multiple_threads.
+ * sysdeps/unix/sysv/linux/libc_pthread_init.c: Move definition of
+ __libc_multiple_threads to...
+ * sysdeps/unix/sysv/linux/libc_multiple_threads.c: ...here. New file.
+
+ * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Remove unnecessary
+ versioning.
+ * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
+
+ * sysdeps/unix/sysv/linux/x86_64/pthread_once.S
+ (__pthread_once_internal): Define.
+
+ * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Use shlib-compat.h
+ macros instead of .symver directly.
+ * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Likewise.
+ * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise.
+
* sysdeps/x86_64/tls.h [__ASSEMBLER__]: Include tcb-offsets.h.
* sysdeps/x86_64/tcb-offsets.sym: New file.
* sysdeps/x86_64/Makefile: New file.
diff --git a/nptl/sysdeps/unix/sysv/linux/Makefile b/nptl/sysdeps/unix/sysv/linux/Makefile
index d25135a..5701887 100644
--- a/nptl/sysdeps/unix/sysv/linux/Makefile
+++ b/nptl/sysdeps/unix/sysv/linux/Makefile
@@ -18,7 +18,8 @@
# 02111-1307 USA. */
ifeq ($(subdir),nptl)
-sysdep_routines += register-atfork unregister-atfork libc_pthread_init
+sysdep_routines += register-atfork unregister-atfork libc_pthread_init \
+ libc_multiple_threads
libpthread-sysdep_routines += pt-fork
diff --git a/nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c b/nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c
new file mode 100644
index 0000000..a96f174
--- /dev/null
+++ b/nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <pthreadP.h>
+
+#ifndef NOT_IN_libc
+# ifndef TLS_MULTIPLE_THREADS_IN_TCB
+int __libc_multiple_threads attribute_hidden;
+# endif
+#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c b/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c
index f8c79a2..3891501 100644
--- a/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c
+++ b/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c
@@ -33,7 +33,7 @@ struct fork_handler __pthread_child_handler attribute_hidden;
#ifdef TLS_MULTIPLE_THREADS_IN_TCB
void
#else
-int __libc_multiple_threads attribute_hidden;
+extern int __libc_multiple_threads attribute_hidden;
int *
#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S
index 97a21d0..c01da52 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S
@@ -118,6 +118,10 @@ __pthread_once:
.size __pthread_once,.-__pthread_once
+
+ .globl __pthread_once_internal
+__pthread_once_internal = __pthread_once
+
.globl pthread_once
pthread_once = __pthread_once
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/sem_post.S b/nptl/sysdeps/unix/sysv/linux/x86_64/sem_post.S
index 43e73e2..21ec6fd 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/sem_post.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/sem_post.S
@@ -33,10 +33,10 @@
.text
- .globl __new_sem_post
- .type __new_sem_post,@function
+ .globl sem_post
+ .type sem_post,@function
.align 16
-__new_sem_post:
+sem_post:
movl $1, %edx
LOCK
xaddl %edx, (%rdi)
@@ -63,10 +63,4 @@ __new_sem_post:
orl $-1, %eax
retq
- .size __new_sem_post,.-__new_sem_post
- .symver __new_sem_post, sem_post@@GLIBC_2.1
-#if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)
- .global __old_sem_post
-__old_sem_post = __new_sem_post
- .symver __old_sem_post, sem_post@GLIBC_2.0
-#endif
+ .size sem_post,.-sem_post
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/sem_trywait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/sem_trywait.S
index 8c93dca..5f0f3d5 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/sem_trywait.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/sem_trywait.S
@@ -33,10 +33,10 @@
.text
- .globl __new_sem_trywait
- .type __new_sem_trywait,@function
+ .globl sem_trywait
+ .type sem_trywait,@function
.align 16
-__new_sem_trywait:
+sem_trywait:
movl (%rdi), %eax
2: testl %eax, %eax
jz 1f
@@ -59,10 +59,5 @@ __new_sem_trywait:
#endif
orl $-1, %eax
retq
- .size __new_sem_trywait,.-__new_sem_trywait
- .symver __new_sem_trywait, sem_trywait@@GLIBC_2.1
-#if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)
- .global __old_sem_trywait
-__old_sem_trywait = __new_sem_trywait
- .symver __old_sem_trywait, sem_trywait@GLIBC_2.0
-#endif
+ .size sem_trywait,.-sem_trywait
+ versioned_symbol(libpthread, __new_sem_trywait, sem_trywait, GLIBC_2_1)
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S
index 2d13a95..877ee4c 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S
@@ -32,10 +32,10 @@
.text
- .globl __new_sem_wait
- .type __new_sem_wait,@function
+ .globl sem_wait
+ .type sem_wait,@function
.align 16
-__new_sem_wait:
+sem_wait:
3: movl (%rdi), %eax
2: testl %eax, %eax
je 1f
@@ -69,10 +69,4 @@ __new_sem_wait:
#endif
orl $-1, %eax
retq
- .size __new_sem_wait,.-__new_sem_wait
- .symver __new_sem_wait, sem_wait@@GLIBC_2.1
-#if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)
- .global __old_sem_wait
-__old_sem_wait = __new_sem_wait
- .symver __old_sem_wait, sem_wait@GLIBC_2.0
-#endif
+ .size sem_wait,.-sem_wait