diff options
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S | 8 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S | 11 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S | 6 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/internaltypes.h | 11 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/jmp-unwind.c | 16 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S | 6 |
6 files changed, 41 insertions, 17 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S index 5afe53d484..83a4fb330b 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S @@ -136,7 +136,7 @@ __pthread_cond_wait: movl %ebx, 8(%esp) movl %eax, 4(%esp) movl %edx, (%esp) - call _GI_pthread_cleanup_push + call __pthread_cleanup_push /* Get and store current wakeup_seq value. */ movl wakeup_seq(%ebx), %edi @@ -209,7 +209,7 @@ __pthread_cond_wait: 11: leal 12(%esp), %edx movl $0, 4(%esp) movl %edx, (%esp) - call _GI_pthread_cleanup_pop + call __pthread_cleanup_pop movl 48(%esp), %eax movl %eax, (%esp) @@ -316,7 +316,7 @@ __pthread_cond_timedwait: movl %ebx, 8(%esp) movl %eax, 4(%esp) movl %edx, (%esp) - call _GI_pthread_cleanup_push + call __pthread_cleanup_push /* Get and store current wakeup_seq value. */ movl wakeup_seq(%ebx), %edi @@ -425,7 +425,7 @@ __pthread_cond_timedwait: 11: leal 20(%esp), %edx movl $0, 4(%esp) movl %edx, (%esp) - call _GI_pthread_cleanup_pop + call __pthread_cleanup_pop movl 60(%esp), %ecx movl %ecx, (%esp) diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S index 72df31b40b..cc2885ebc9 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* 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. @@ -164,6 +164,9 @@ __pthread_rwlock_rdlock: .globl pthread_rwlock_rdlock pthread_rwlock_rdlock = __pthread_rwlock_rdlock + .globl __pthread_rwlock_rdlock_internal +__pthread_rwlock_rdlock_internal = __pthread_rwlock_rdlock + .globl pthread_rwlock_timedrdlock .type pthread_rwlock_timedrdlock,@function @@ -425,6 +428,9 @@ __pthread_rwlock_wrlock: .globl pthread_rwlock_wrlock pthread_rwlock_wrlock = __pthread_rwlock_wrlock + .globl __pthread_rwlock_wrlock_internal +__pthread_rwlock_wrlock_internal = __pthread_rwlock_wrlock + .globl pthread_rwlock_timedwrlock .type pthread_rwlock_timedwrlock,@function @@ -643,3 +649,6 @@ __pthread_rwlock_unlock: .globl pthread_rwlock_unlock pthread_rwlock_unlock = __pthread_rwlock_unlock + + .globl __pthread_rwlock_unlock_internal +__pthread_rwlock_unlock_internal = __pthread_rwlock_unlock diff --git a/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S b/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S index f35ae27a33..fce1529e54 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* 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. @@ -103,7 +103,7 @@ __pthread_once: pushl %ebx pushl %eax pushl %edx - call _GI_pthread_cleanup_push /* Note: no @PLT. */ + call __pthread_cleanup_push /* Note: no @PLT. */ movl 44(%esp), %eax call *%eax @@ -113,7 +113,7 @@ __pthread_once: of the stack. Otherwise the first parameter would have to be reloaded. */ movl $0, 4(%esp) - call _GI_pthread_cleanup_pop /* Note: no @PLT. */ + call __pthread_cleanup_pop /* Note: no @PLT. */ addl $28, %esp diff --git a/nptl/sysdeps/unix/sysv/linux/internaltypes.h b/nptl/sysdeps/unix/sysv/linux/internaltypes.h index 24ead1b5ce..9ae35eff9a 100644 --- a/nptl/sysdeps/unix/sysv/linux/internaltypes.h +++ b/nptl/sysdeps/unix/sysv/linux/internaltypes.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* 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. @@ -20,6 +20,8 @@ #ifndef _INTERNALTYPES_H #define _INTERNALTYPES_H 1 +#include <stdint.h> + struct pthread_attr { @@ -127,4 +129,11 @@ struct sem unsigned int count; }; + +/* Compatibility type for old conditional variable interfaces. */ +typedef struct +{ + pthread_cond_t *cond; +} pthread_cond_2_0_t; + #endif /* internaltypes.h */ diff --git a/nptl/sysdeps/unix/sysv/linux/jmp-unwind.c b/nptl/sysdeps/unix/sysv/linux/jmp-unwind.c index 0fd3c9aa58..f0a290ae4b 100644 --- a/nptl/sysdeps/unix/sysv/linux/jmp-unwind.c +++ b/nptl/sysdeps/unix/sysv/linux/jmp-unwind.c @@ -1,5 +1,5 @@ -/* _longjmp_unwind -- Clean up stack frames unwound by longjmp. Linux version. - Copyright (C) 1995, 1997, 2002 Free Software Foundation, Inc. +/* Clean up stack frames unwound by longjmp. Linux version. + Copyright (C) 1995, 1997, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -19,7 +19,7 @@ #include <setjmp.h> #include <stddef.h> - +#include <pthread-functions.h> extern void __pthread_cleanup_upto (jmp_buf env, char *targetframe); #pragma weak __pthread_cleanup_upto @@ -28,6 +28,12 @@ extern void __pthread_cleanup_upto (jmp_buf env, char *targetframe); void _longjmp_unwind (jmp_buf env, int val) { - if (__pthread_cleanup_upto != NULL) - __pthread_cleanup_upto (env, __builtin_frame_address (0)); +#ifdef SHARED +# define fptr __libc_pthread_functions.ptr___pthread_cleanup_upto +#else +# define fptr __pthread_cleanup_upto +#endif + + if (fptr != NULL) + fptr (env, __builtin_frame_address (0)); } 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 422412901c..3871c0e1a2 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* 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. @@ -86,7 +86,7 @@ __pthread_once: leaq clear_once_control(%rip), %rsi movq %rdi, %rdx movq %rsp, %rdi - call _GI_pthread_cleanup_push /* Note: no @PLT. */ + call __pthread_cleanup_push /* Note: no @PLT. */ movq 48(%rsp), %rax call *%rax @@ -96,7 +96,7 @@ __pthread_once: of the stack. Otherwise the first parameter would have to be reloaded. */ xorq %rdi, %rdi - call _GI_pthread_cleanup_pop /* Note: no @PLT. */ + call __pthread_cleanup_pop /* Note: no @PLT. */ addq $32, %rsp |