diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-04-13 08:36:19 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-04-13 08:36:19 +0000 |
commit | ad2be8527ac0f19f129fc4519d823cbe48239c78 (patch) | |
tree | 2e5a5862015657296877d4ca5e34a92551865b54 /nptl/sysdeps/unix/sysv/linux/x86_64 | |
parent | 08c765fa6e664c584659a476dadfc926d6c74254 (diff) | |
download | glibc-ad2be8527ac0f19f129fc4519d823cbe48239c78.tar.gz glibc-ad2be8527ac0f19f129fc4519d823cbe48239c78.tar.xz glibc-ad2be8527ac0f19f129fc4519d823cbe48239c78.zip |
Update.
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Add unwind info. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/x86_64')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S | 90 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S | 70 |
2 files changed, 160 insertions, 0 deletions
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 7a75e0d7d2..79d8a2aebe 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 @@ -44,10 +44,15 @@ .type __pthread_cond_timedwait, @function .align 16 __pthread_cond_timedwait: +.LSTARTCODE: pushq %r12 +.Lpush_r12: pushq %r13 +.Lpush_r13: pushq %r14 +.Lpush_r14: subq $80, %rsp +.Lsubq: /* Stack frame: rsp + 80 @@ -228,14 +233,19 @@ __pthread_cond_timedwait: cmoveq %r14, %rax 18: addq $80, %rsp +.Laddq: popq %r14 +.Lpop_r14: popq %r13 +.Lpop_r13: popq %r12 +.Lpop_r12: retq /* Initial locking failed. */ 1: +.LSbl1: #if cond_lock != 0 addq $cond_lock, %rdi #endif @@ -311,6 +321,86 @@ __pthread_cond_timedwait: js 13b jmp 21b #endif +.LENDCODE: .size __pthread_cond_timedwait, .-__pthread_cond_timedwait versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait, GLIBC_2_3_2) + + + .section .eh_frame,"a",@progbits +.LSTARTFRAME: + .long L(ENDCIE)-L(STARTCIE) # Length of the CIE. +.LSTARTCIE: + .long 0 # CIE ID. + .byte 1 # Version number. +#ifdef SHARED + .string "zR" # NUL-terminated augmentation string. +#else + .ascii "\0" # NUL-terminated augmentation string. +#endif + .uleb128 1 # Code alignment factor. + .sleb128 -8 # Data alignment factor. + .byte 16 # Return address register column. +#ifdef SHARED + .uleb128 1 # Augmentation value length. + .byte 0x1b # Encoding: DW_EH_PE_pcrel + # + DW_EH_PE_sdata4. +#endif + .byte 0x0c # DW_CFA_def_cfa + .uleb128 7 + .uleb128 8 + .byte 0x90 # DW_CFA_offset, column 0x8 + .uleb128 1 + .align 8 +.LENDCIE: + + .long .LENDFDE-.LSTARTFDE # Length of the FDE. +.LSTARTFDE: + .long .LSTARTFDE-.LSTARTFRAME # CIE pointer. +#ifdef SHARED + .long .LSTARTCODE-. # PC-relative start address of the code +#else + .long .LSTARTCODE # Start address of the code. +#endif + .long .LENDCODE-.LSTARTCODE # Length of the code. +#ifdef SHARED + .uleb128 0 # No augmentation data. +#endif + .byte 4 # DW_CFA_advance_loc4 + .long .Lpush_r12-.LSTARTCODE + .byte 14 # DW_CFA_def_cfa_offset + .uleb128 16 + .byte 4 # DW_CFA_advance_loc4 + .long .Lpush_r13-.Lpush_r12 + .byte 14 # DW_CFA_def_cfa_offset + .uleb128 24 + .byte 4 # DW_CFA_advance_loc4 + .long .Lpush_r14-.Lpush_r13 + .byte 14 # DW_CFA_def_cfa_offset + .uleb128 32 + .byte 4 # DW_CFA_advance_loc4 + .long .Lsubq-.Lpush_r14 + .byte 14 # DW_CFA_def_cfa_offset + .uleb128 112 + .byte 4 # DW_CFA_advance_loc4 + .long .Laddq-.Lsubq + .byte 14 # DW_CFA_def_cfa_offset + .uleb128 32 + .byte 4 # DW_CFA_advance_loc4 + .long .Lpop_r14-.Laddq + .byte 14 # DW_CFA_def_cfa_offset + .uleb128 24 + .byte 4 # DW_CFA_advance_loc4 + .long .Lpop_r13-.Lpop_r14 + .byte 14 # DW_CFA_def_cfa_offset + .uleb128 16 + .byte 4 # DW_CFA_advance_loc4 + .long .Lpop_r12-.Lpop_r13 + .byte 14 # DW_CFA_def_cfa_offset + .uleb128 8 + .byte 4 # DW_CFA_advance_loc4 + .long .LSbl1-.Lpop_r12 + .byte 14 # DW_CFA_def_cfa_offset + .uleb128 112 + .align 8 +.LENDFDE: diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S index 652ddca772..a7fcc8c8fc 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S @@ -100,8 +100,11 @@ __condvar_cleanup: .type __pthread_cond_wait, @function .align 16 __pthread_cond_wait: +.LSTARTCODE: pushq %r12 +.Lpush_r12: subq $64, %rsp +.Lsubq: /* Stack frame: rsp + 64 @@ -220,14 +223,17 @@ __pthread_cond_wait: movq 16(%rsp), %rdi callq __pthread_mutex_lock_internal 14: addq $64, %rsp +.Laddq: popq %r12 +.Lpop_r12: /* We return the result of the mutex_lock operation. */ retq /* Initial locking failed. */ 1: +.LSbl1: #if cond_lock != 0 addq $cond_lock, %rdi #endif @@ -279,6 +285,70 @@ __pthread_cond_wait: 13: movq %r10, %rax jmp 14b +.LENDCODE: .size __pthread_cond_wait, .-__pthread_cond_wait versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait, GLIBC_2_3_2) + + + .section .eh_frame,"a",@progbits +.LSTARTFRAME: + .long L(ENDCIE)-L(STARTCIE) # Length of the CIE. +.LSTARTCIE: + .long 0 # CIE ID. + .byte 1 # Version number. +#ifdef SHARED + .string "zR" # NUL-terminated augmentation string. +#else + .ascii "\0" # NUL-terminated augmentation string. +#endif + .uleb128 1 # Code alignment factor. + .sleb128 -8 # Data alignment factor. + .byte 16 # Return address register column. +#ifdef SHARED + .uleb128 1 # Augmentation value length. + .byte 0x1b # Encoding: DW_EH_PE_pcrel + # + DW_EH_PE_sdata4. +#endif + .byte 0x0c # DW_CFA_def_cfa + .uleb128 7 + .uleb128 8 + .byte 0x90 # DW_CFA_offset, column 0x8 + .uleb128 1 + .align 8 +.LENDCIE: + + .long .LENDFDE-.LSTARTFDE # Length of the FDE. +.LSTARTFDE: + .long .LSTARTFDE-.LSTARTFRAME # CIE pointer. +#ifdef SHARED + .long .LSTARTCODE-. # PC-relative start address of the code +#else + .long .LSTARTCODE # Start address of the code. +#endif + .long .LENDCODE-.LSTARTCODE # Length of the code. +#ifdef SHARED + .uleb128 0 # No augmentation data. +#endif + .byte 4 # DW_CFA_advance_loc4 + .long .Lpush_r12-.LSTARTCODE + .byte 14 # DW_CFA_def_cfa_offset + .uleb128 16 + .byte 4 # DW_CFA_advance_loc4 + .long .Lsubq-.Lpush_r12 + .byte 14 # DW_CFA_def_cfa_offset + .uleb128 80 + .byte 4 # DW_CFA_advance_loc4 + .long .Laddq-.Lsubq + .byte 14 # DW_CFA_def_cfa_offset + .uleb128 16 + .byte 4 # DW_CFA_advance_loc4 + .long .Lpop_r12-.Laddq + .byte 14 # DW_CFA_def_cfa_offset + .uleb128 8 + .byte 4 # DW_CFA_advance_loc4 + .long .LSbl1-.Lpop_r12 + .byte 14 # DW_CFA_def_cfa_offset + .uleb128 80 + .align 8 +.LENDFDE: |