This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch, master, updated. glibc-2.11-148-g893549c
- From: drepper at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 16 Jan 2010 02:09:42 -0000
- Subject: GNU C Library master sources branch, master, updated. glibc-2.11-148-g893549c
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 893549c5a06956d2559391a3ffdeb6ded53b65c0 (commit)
from aa732e2b2b3178ed436b6df39180605437897f53 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=893549c5a06956d2559391a3ffdeb6ded53b65c0
commit 893549c5a06956d2559391a3ffdeb6ded53b65c0
Author: Michal Schmidt <mschmidt@redhat.com>
Date: Fri Jan 15 18:09:14 2010 -0800
Fix pthread_cond_*wait with requeue-PI on i386.
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index e4185e0..c81eb03 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,16 @@
+2010-01-15 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
+ Fix unwind info.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
+
+2010-01-15 Michal Schmidt <mschmidt@redhat.com>
+
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
+ Fix pthread_cond_timedwait with requeue-PI.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:
+ Fix pthread_cond_wait with requeue-PI.
+
2010-01-14 Ulrich Drepper <drepper@redhat.com>
* Versions: Add pthread_mutex_consistent, pthread_mutexattr_getrobust,
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 218762a..dee73f0 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
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2004, 2006-2007, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2004,2006-2007,2009,2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -57,7 +57,6 @@ __pthread_cond_timedwait:
pushl %ebx
cfi_adjust_cfa_offset(4)
cfi_rel_offset(%ebx, 0)
- cfi_remember_state
movl 20(%esp), %ebx
movl 28(%esp), %ebp
@@ -99,6 +98,7 @@ __pthread_cond_timedwait:
#define FRAME_SIZE 32
subl $FRAME_SIZE, %esp
cfi_adjust_cfa_offset(FRAME_SIZE)
+ cfi_remember_state
/* Get and store current wakeup_seq value. */
movl wakeup_seq(%ebx), %edi
@@ -326,14 +326,12 @@ __pthread_cond_timedwait:
#endif
jne 10f
-11: xorl %eax, %eax
+11: movl 24+FRAME_SIZE(%esp), %eax
/* With requeue_pi, the mutex lock is held in the kernel. */
movl 24(%esp), %ecx
testl %ecx, %ecx
- jnz 26f
+ jnz 27f
- /* Remove cancellation handler. */
- movl 24+FRAME_SIZE(%esp), %eax
call __pthread_mutex_cond_lock
26: addl $FRAME_SIZE, %esp
cfi_adjust_cfa_offset(-FRAME_SIZE);
@@ -366,8 +364,10 @@ __pthread_cond_timedwait:
cfi_restore_state
27: call __pthread_mutex_cond_lock_adjust
+ xorl %eax, %eax
jmp 26b
+ cfi_adjust_cfa_offset(-FRAME_SIZE);
/* Initial locking failed. */
1:
#if cond_lock == 0
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 b3b8bc4..53970d7 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
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2004, 2006-2007, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2004,2006-2007,2009,2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -57,7 +57,6 @@ __pthread_cond_wait:
pushl %ebx
cfi_adjust_cfa_offset(4)
cfi_rel_offset(%ebx, 0)
- cfi_remember_state
xorl %esi, %esi
movl 20(%esp), %ebx
@@ -95,6 +94,7 @@ __pthread_cond_wait:
#define FRAME_SIZE 20
subl $FRAME_SIZE, %esp
cfi_adjust_cfa_offset(FRAME_SIZE)
+ cfi_remember_state
/* Get and store current wakeup_seq value. */
movl wakeup_seq(%ebx), %edi
@@ -247,12 +247,11 @@ __pthread_cond_wait:
jne 10f
/* With requeue_pi, the mutex lock is held in the kernel. */
-11: xorl %eax, %eax
+11: movl 24+FRAME_SIZE(%esp), %eax
movl 16(%esp), %ecx
testl %ecx, %ecx
- jnz 20f
+ jnz 21f
- movl 24+FRAME_SIZE(%esp), %eax
call __pthread_mutex_cond_lock
20: addl $FRAME_SIZE, %esp
cfi_adjust_cfa_offset(-FRAME_SIZE);
@@ -279,6 +278,7 @@ __pthread_cond_wait:
xorl %eax, %eax
jmp 20b
+ cfi_adjust_cfa_offset(-FRAME_SIZE);
/* Initial locking failed. */
1:
#if cond_lock == 0
-----------------------------------------------------------------------
Summary of changes:
nptl/ChangeLog | 13 +++++++++++++
.../sysv/linux/i386/i486/pthread_cond_timedwait.S | 12 ++++++------
.../unix/sysv/linux/i386/i486/pthread_cond_wait.S | 10 +++++-----
3 files changed, 24 insertions(+), 11 deletions(-)
hooks/post-receive
--
GNU C Library master sources