This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]