diff options
author | Ulrich Drepper <drepper@redhat.com> | 2009-12-12 11:06:23 -0800 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2009-12-12 11:06:23 -0800 |
commit | 9554ebf2d4da22591e974d3cf2ed09a2b8dbdbd8 (patch) | |
tree | f4cfc015f17f3eba95b96f80161a0f8b121ded86 | |
parent | 2de59be022b924ef3d21375aca50a10e971942f8 (diff) | |
download | glibc-9554ebf2d4da22591e974d3cf2ed09a2b8dbdbd8.tar.gz glibc-9554ebf2d4da22591e974d3cf2ed09a2b8dbdbd8.tar.xz glibc-9554ebf2d4da22591e974d3cf2ed09a2b8dbdbd8.zip |
Invalid timeouts in i386 sem_timedwait.
We adjusted nwaiters even though this isn't necessary.
-rw-r--r-- | nptl/ChangeLog | 5 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S | 18 |
2 files changed, 14 insertions, 9 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 494b5904fb..3d9a60afc5 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,8 @@ +2009-12-12 Ulrich Drepper <drepper@redhat.com> + + * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait): + Don't update nwaiters after invalid timeout is recognized. + 2009-11-27 Thomas Schwinge <thomas@codesourcery.com> * sysdeps/unix/sysv/linux/sh/pt-initfini.c (_init): Don't call diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S index 13a36d64cc..18013a8df4 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2004, 2005, 2007, 2009 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. @@ -131,10 +131,10 @@ sem_timedwait: xorl %eax, %eax -10: LOCK + LOCK decl NWAITERS(%ebx) - addl $12, %esp +10: addl $12, %esp .Ladd_esp: popl %ebx .Lpop_ebx: @@ -268,19 +268,19 @@ sem_wait_cleanup: .byte 14 # DW_CFA_def_cfa_offset .uleb128 8 .byte 0x86 # DW_CFA_offset %esi - .uleb128 2 + .uleb128 2 .byte 4 # DW_CFA_advance_loc4 .long .Lpush_edi-.Lpush_esi .byte 14 # DW_CFA_def_cfa_offset .uleb128 12 .byte 0x87 # DW_CFA_offset %edi - .uleb128 3 + .uleb128 3 .byte 4 # DW_CFA_advance_loc4 .long .Lpush_ebx-.Lpush_edi .byte 14 # DW_CFA_def_cfa_offset .uleb128 16 .byte 0x83 # DW_CFA_offset %ebx - .uleb128 4 + .uleb128 4 .byte 4 # DW_CFA_advance_loc4 .long .Lsub_esp-.Lpush_ebx .byte 14 # DW_CFA_def_cfa_offset @@ -309,11 +309,11 @@ sem_wait_cleanup: .byte 14 # DW_CFA_def_cfa_offset .uleb128 28 .byte 0x86 # DW_CFA_offset %esi - .uleb128 2 + .uleb128 2 .byte 0x87 # DW_CFA_offset %edi - .uleb128 3 + .uleb128 3 .byte 0x83 # DW_CFA_offset %ebx - .uleb128 4 + .uleb128 4 .align 4 .LENDFDE: |