about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2009-11-17 22:55:55 -0800
committerUlrich Drepper <drepper@redhat.com>2009-11-17 22:55:55 -0800
commitb5f2ab824cb53a1bf6cf434f5a960be40f3ba63a (patch)
tree8142eaa1d91256874c83e24401c17dbfbcef70d9
parent424bea69fb3bcad456162da4a87ff6b558baaa8a (diff)
downloadglibc-b5f2ab824cb53a1bf6cf434f5a960be40f3ba63a.tar.gz
glibc-b5f2ab824cb53a1bf6cf434f5a960be40f3ba63a.tar.xz
glibc-b5f2ab824cb53a1bf6cf434f5a960be40f3ba63a.zip
Minial unwind section size reduction.
-rw-r--r--nptl/ChangeLog3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S31
2 files changed, 17 insertions, 17 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index ae345a3574..4f04c97e8f 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,5 +1,8 @@
 2009-11-17  Ulrich Drepper  <drepper@redhat.com>
 
+	* sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Minimally
+	reduce size of unwind info.
+
 	* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Convert to use
 	cfi directives.
 	* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
index 86bdac1b1b..be14fc897e 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
@@ -69,6 +69,7 @@ __pthread_cond_timedwait:
 #endif
 	subq	$FRAME_SIZE, %rsp
 	cfi_adjust_cfa_offset(FRAME_SIZE)
+	cfi_remember_state
 
 	cmpq	$1000000000, 8(%rdx)
 	movl	$EINVAL, %eax
@@ -77,19 +78,19 @@ __pthread_cond_timedwait:
 	/* Stack frame:
 
 	   rsp + 48
-	            +--------------------------+
+		    +--------------------------+
 	   rsp + 32 | timeout value            |
-	            +--------------------------+
+		    +--------------------------+
 	   rsp + 24 | old wake_seq value       |
-	            +--------------------------+
+		    +--------------------------+
 	   rsp + 16 | mutex pointer            |
-	            +--------------------------+
+		    +--------------------------+
 	   rsp +  8 | condvar pointer          |
-	            +--------------------------+
+		    +--------------------------+
 	   rsp +  4 | old broadcast_seq value  |
-	            +--------------------------+
+		    +--------------------------+
 	   rsp +  0 | old cancellation mode    |
-	            +--------------------------+
+		    +--------------------------+
 	*/
 
 	cmpq	$-1, dep_mutex(%rdi)
@@ -317,11 +318,7 @@ __pthread_cond_timedwait:
 
 	retq
 
-	cfi_adjust_cfa_offset(4 * 8 + FRAME_SIZE)
-	cfi_rel_offset(%r12, FRAME_SIZE + 24)
-	cfi_rel_offset(%r13, FRAME_SIZE + 16)
-	cfi_rel_offset(%r14, FRAME_SIZE + 8)
-	cfi_rel_offset(%r15, FRAME_SIZE)
+	cfi_restore_state
 
 64:	callq	__pthread_mutex_cond_lock_adjust
 	movq	%r14, %rax
@@ -650,15 +647,15 @@ __condvar_cleanup2:
 	   rsp + 48 | %r14                     |
 		    +--------------------------+
 	   rsp + 24 | unused                   |
-	            +--------------------------+
+		    +--------------------------+
 	   rsp + 16 | mutex pointer            |
-	            +--------------------------+
+		    +--------------------------+
 	   rsp +  8 | condvar pointer          |
-	            +--------------------------+
+		    +--------------------------+
 	   rsp +  4 | old broadcast_seq value  |
-	            +--------------------------+
+		    +--------------------------+
 	   rsp +  0 | old cancellation mode    |
-	            +--------------------------+
+		    +--------------------------+
 	*/
 
 	movq	%rax, 24(%rsp)