aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2009-12-12 11:06:23 -0800
committerUlrich Drepper <drepper@redhat.com>2009-12-12 11:06:23 -0800
commit9554ebf2d4da22591e974d3cf2ed09a2b8dbdbd8 (patch)
treef4cfc015f17f3eba95b96f80161a0f8b121ded86
parent2de59be022b924ef3d21375aca50a10e971942f8 (diff)
downloadglibc-9554ebf2d4da22591e974d3cf2ed09a2b8dbdbd8.zip
glibc-9554ebf2d4da22591e974d3cf2ed09a2b8dbdbd8.tar.gz
glibc-9554ebf2d4da22591e974d3cf2ed09a2b8dbdbd8.tar.bz2
Invalid timeouts in i386 sem_timedwait.
We adjusted nwaiters even though this isn't necessary.
-rw-r--r--nptl/ChangeLog5
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S18
2 files changed, 14 insertions, 9 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 494b590..3d9a60a 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 13a36d6..18013a8 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: