From 2b6a801eed386e0b5b45fed671d898e8090cecbb Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 9 Sep 2006 11:21:48 +0000 Subject: [BZ #1006] * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Ensure relocation doesn't clobber any bits outside of the immediate field for R_SPARC_TLS_LE_HIX22, R_SPARC_WDISP30, R_SPARC_HI22 and R_SPARC_H44. --- nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S | 7 +++---- nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S | 6 +++--- nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S | 4 ++-- 3 files changed, 8 insertions(+), 9 deletions(-) (limited to 'nptl/sysdeps/unix') diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S index 692e0dd670..f481a8e43c 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S @@ -406,7 +406,7 @@ __condvar_tw_cleanup: cmpl 20(%esp), %eax jne 3f - /* We increment the woken_seq counter only if it is lower than + /* We increment the wakeup_seq counter only if it is lower than total_seq. If this is not the case the thread was woken and then canceled. In this case we ignore the signal. */ movl total_seq(%ebx), %eax @@ -419,10 +419,9 @@ __condvar_tw_cleanup: 6: addl $1, wakeup_seq(%ebx) adcl $0, wakeup_seq+4(%ebx) + addl $1, cond_futex(%ebx) -7: addl $1, cond_futex(%ebx) - - addl $1, woken_seq(%ebx) +7: addl $1, woken_seq(%ebx) adcl $0, woken_seq+4(%ebx) 3: subl $(1 << clock_bits), cond_nwaiters(%ebx) diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S index 7f93a85732..f16c7d9198 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S @@ -297,7 +297,7 @@ __condvar_w_cleanup: cmpl 12(%esp), %eax jne 3f - /* We increment the woken_seq counter only if it is lower than + /* We increment the wakeup_seq counter only if it is lower than total_seq. If this is not the case the thread was woken and then canceled. In this case we ignore the signal. */ movl total_seq(%ebx), %eax @@ -310,9 +310,9 @@ __condvar_w_cleanup: 6: addl $1, wakeup_seq(%ebx) adcl $0, wakeup_seq+4(%ebx) + addl $1, cond_futex(%ebx) -7: addl $1, cond_futex(%ebx) - addl $1, woken_seq(%ebx) +7: addl $1, woken_seq(%ebx) adcl $0, woken_seq+4(%ebx) 3: subl $(1 << clock_bits), cond_nwaiters(%ebx) diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S index 6b8091b3ee..969e80da2a 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S @@ -67,15 +67,15 @@ __condvar_cleanup: cmpl 4(%r8), %edx jne 3f - /* We increment the woken_seq counter only if it is lower than + /* We increment the wakeup_seq counter only if it is lower than total_seq. If this is not the case the thread was woken and then canceled. In this case we ignore the signal. */ movq total_seq(%rdi), %rax cmpq wakeup_seq(%rdi), %rax jbe 6f incq wakeup_seq(%rdi) -6: incq woken_seq(%rdi) incl cond_futex(%rdi) +6: incq woken_seq(%rdi) 3: subl $(1 << clock_bits), cond_nwaiters(%rdi) -- cgit 1.4.1