2004-05-16  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Correct some
	unwind info.

	* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:
	Parametrize frame size.  Correct some unwind info.
	* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
This commit is contained in:
Ulrich Drepper 2004-05-17 05:17:12 +00:00
parent f7803f5170
commit 4123718edd
4 changed files with 31 additions and 26 deletions

View File

@ -1,3 +1,12 @@
2004-05-16 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Correct some
unwind info.
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:
Parametrize frame size. Correct some unwind info.
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
2004-05-04 Jakub Jelinek <jakub@redhat.com>
* tst-stack3.c: Note testing functionality beyond POSIX.

View File

@ -83,7 +83,8 @@ __pthread_cond_timedwait:
addl $1, total_seq(%ebx)
adcl $0, total_seq+4(%ebx)
subl $20, %esp
#define FRAME_SIZE 20
subl $FRAME_SIZE, %esp
.Lsubl:
/* Get and store current wakeup_seq value. */
@ -220,9 +221,9 @@ __pthread_cond_timedwait:
jne 10f
/* Remove cancellation handler. */
11: movl 44(%esp), %eax
11: movl 24+FRAME_SIZE(%esp), %eax
call __pthread_mutex_cond_lock
addl $20, %esp
addl $FRAME_SIZE, %esp
.Laddl:
/* We return the result of the mutex_lock operation if it failed. */
@ -257,7 +258,7 @@ __pthread_cond_timedwait:
call __lll_mutex_lock_wait
jmp 2b
/* Unlock in loop requires waekup. */
/* Unlock in loop requires wakeup. */
3:
.LSbl2:
#if cond_lock == 0
@ -278,7 +279,7 @@ __pthread_cond_timedwait:
call __lll_mutex_lock_wait
jmp 6b
/* Unlock after loop requires waekup. */
/* Unlock after loop requires wakeup. */
10:
#if cond_lock == 0
movl %ebx, %eax
@ -341,7 +342,7 @@ versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait,
.type __condvar_tw_cleanup3, @function
__condvar_tw_cleanup3:
movl 40(%esp), %ebx
movl 20+FRAME_SIZE(%esp), %ebx
.LSbl5:
jmp __condvar_tw_cleanup
.size __condvar_tw_cleanup3, .-__condvar_tw_cleanup3
@ -399,7 +400,7 @@ __condvar_tw_cleanup:
movl $0x7fffffff, %edx
ENTER_KERNEL
movl 44(%esp), %eax
movl 24+FRAME_SIZE(%esp), %eax
call __pthread_mutex_cond_lock
movl %esi, (%esp)
@ -525,7 +526,7 @@ __condvar_tw_cleanup:
.byte 2 # DW_CFA_advance_loc1
.byte .Lsubl-.Lpush_ebx
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 40
.uleb128 20+FRAME_SIZE
.byte 3 # DW_CFA_advance_loc2
.2byte .Laddl-.Lsubl
.byte 14 # DW_CFA_def_cfa_offset
@ -551,7 +552,7 @@ __condvar_tw_cleanup:
.uleb128 20
.byte 0x40+.LSbl2-.LSbl1 # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 64
.uleb128 20+FRAME_SIZE
.byte 0x85 # DW_CFA_offset %ebp
.uleb128 2
.byte 0x87 # DW_CFA_offset %edi
@ -562,19 +563,15 @@ __condvar_tw_cleanup:
.uleb128 5
.byte 0x40+.LSbl3-.LSbl2 # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 24
.uleb128 20
#if defined __NR_clock_gettime && !defined __ASSUME_POSIX_TIMERS
.byte 0x40+.LSbl4-.LSbl3 # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 64
.byte 4 # DW_CFA_advance_loc4
.long .LSbl5-.LSbl4
#else
.byte 4 # DW_CFA_advance_loc4
.long .LSbl5-.LSbl3
#endif
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 40
.uleb128 20+FRAME_SIZE
.align 4
.LENDFDE:

View File

@ -80,7 +80,8 @@ __pthread_cond_wait:
addl $1, total_seq(%ebx)
adcl $0, total_seq+4(%ebx)
subl $12, %esp
#define FRAME_SIZE 12
subl $FRAME_SIZE, %esp
.Lsubl:
/* Get and store current wakeup_seq value. */
@ -153,9 +154,9 @@ __pthread_cond_wait:
#endif
jne 10f
11: movl 32(%esp), %eax
11: movl 20+FRAME_SIZE(%esp), %eax
call __pthread_mutex_cond_lock
addl $12, %esp
addl $FRAME_SIZE, %esp
.Laddl:
14: popl %ebx
@ -291,7 +292,7 @@ __condvar_w_cleanup:
movl $0x7fffffff, %edx
ENTER_KERNEL
movl 32(%esp), %eax
movl 20+FRAME_SIZE(%esp), %eax
call __pthread_mutex_cond_lock
movl %esi, (%esp)
@ -403,7 +404,7 @@ __condvar_w_cleanup:
.byte 2 # DW_CFA_advance_loc1
.byte .Lsubl-.Lpush_ebx
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 28
.uleb128 16+FRAME_SIZE
.byte 2 # DW_CFA_advance_loc1
.byte .Laddl-.Lsubl
.byte 14 # DW_CFA_def_cfa_offset
@ -431,13 +432,13 @@ __condvar_w_cleanup:
.uleb128 4
.byte 0x40+.LSbl2-.LSbl1 # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 28
.uleb128 16+FRAME_SIZE
.byte 0x40+.LSbl3-.LSbl2 # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 16
.byte 0x40+.LSbl4-.LSbl3 # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 28
.uleb128 16+FRAME_SIZE
.align 4
.LENDFDE:

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@ -142,8 +142,6 @@ sem_timedwait:
popl %esi
cfi_adjust_cfa_offset(-4)
cfi_restore(6)
cfi_adjust_cfa_offset(-4)
cfi_restore(6)
ret
cfi_adjust_cfa_offset(24)