Minimal unwind section size reduction.
authorUlrich Drepper <drepper@redhat.com>
Wed, 18 Nov 2009 06:55:55 +0000 (22:55 -0800)
committerUlrich Drepper <drepper@redhat.com>
Wed, 18 Nov 2009 07:13:08 +0000 (23:13 -0800)
nptl/ChangeLog
nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S

index ae345a3..4f04c97 100644 (file)
@@ -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.
index 86bdac1..be14fc8 100644 (file)
@@ -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)