aboutsummaryrefslogtreecommitdiff
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 23:13:08 -0800
commit62616842ec4bec156ae8d75a345f7a553cb3c277 (patch)
tree8142eaa1d91256874c83e24401c17dbfbcef70d9
parent424bea69fb3bcad456162da4a87ff6b558baaa8a (diff)
downloadglibc-62616842ec4bec156ae8d75a345f7a553cb3c277.tar
glibc-62616842ec4bec156ae8d75a345f7a553cb3c277.tar.gz
glibc-62616842ec4bec156ae8d75a345f7a553cb3c277.tar.bz2
glibc-62616842ec4bec156ae8d75a345f7a553cb3c277.zip
Minimal 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)