aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nptl/ChangeLog5
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S22
2 files changed, 27 insertions, 0 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index d65839fa6b..fdfcf7c580 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,8 @@
+2002-12-25 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Implement
+ correct errno access for case that USE___THREAD is not defined.
+
2002-12-24 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Add missing #endif.
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S
index bfec6fa155..dd7d34e30f 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S
@@ -80,9 +80,15 @@ __new_sem_wait:
4:
#endif
addl $_GLOBAL_OFFSET_TABLE_, %ebx
+#if USE___THREAD
movl %gs:0, %edx
subl errno@gottpoff(%ebx), %edx
movl %eax, (%edx)
+#else
+ movl %eax, %edx
+ call __errno_location@plt
+ movl %edx, (%eax)
+#endif
orl $-1, %eax
popl %esi
popl %ebx
@@ -121,9 +127,14 @@ __new_sem_trywait:
3:
#endif
addl $_GLOBAL_OFFSET_TABLE_, %ecx
+#if USE___THREAD
movl %gs:0, %edx
subl errno@gottpoff(%ecx), %edx
movl $EAGAIN, (%edx)
+#else
+ call __errno_location@plt
+ movl $EAGAIN, (%eax)
+#endif
orl $-1, %eax
ret
.size __new_sem_trywait,.-__new_sem_trywait
@@ -226,9 +237,15 @@ sem_timedwait:
4:
#endif
addl $_GLOBAL_OFFSET_TABLE_, %ebx
+#if USE___THREAD
movl %gs:0, %edx
subl errno@gottpoff(%ebx), %edx
movl %eax, (%edx)
+#else
+ movl %eax, %edx
+ call __errno_location@plt
+ movl %edx, (%eax)
+#endif
addl $8, %esp
orl $-1, %eax
@@ -272,9 +289,14 @@ __new_sem_post:
4:
#endif
addl $_GLOBAL_OFFSET_TABLE_, %ebx
+#if USE___THREAD
movl %gs:0, %edx
subl errno@gottpoff(%ebx), %edx
movl $EINVAL, (%edx)
+#else
+ call __errno_location@plt
+ movl $EAGAIN, (%eax)
+#endif
orl $-1, %eax
popl %ebx