summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--nptl/ChangeLog5
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S3
-rw-r--r--nptl/tst-cancel4.c8
-rw-r--r--rt/Makefile1
5 files changed, 17 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 9e1d50addf..8275df1f69 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2003-06-27 Ulrich Drepper <drepper@redhat.com>
+
+ * rt/Makefile (CFLAGS-librt-cancellation.c): Define.
+
2003-06-26 Roland McGrath <roland@frob.com>
* sysdeps/mach/configure.in: Barf rather than define NO_CREATION_TIME.
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 21157bca0d..65cf4efb59 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,8 @@
+2003-06-27 Ulrich Drepper <drepper@redhat.com>
+
+ * tst-cancel4.c (tf_msgrcv): Strengthen test against valid
+ premature returns a bit more.
+
2003-06-26 Ulrich Drepper <drepper@redhat.com>
* sysdeps/pthread/librt-cancellation.c: Move __pthread_unwind
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
index 2eba326fa3..f09be4403d 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
@@ -334,8 +334,9 @@ versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait,
.type __condvar_tw_cleanup3, @function
__condvar_tw_cleanup3:
- leal wakeup_seq(%edx), %ebx # XXX Is this correct? %edx preserved?
+ movl 40(%esp), %ebx
.LSbl5:
+ jmp __condvar_tw_cleanup
.size __condvar_tw_cleanup3, .-__condvar_tw_cleanup3
.type __condvar_tw_cleanup2, @function
__condvar_tw_cleanup2:
diff --git a/nptl/tst-cancel4.c b/nptl/tst-cancel4.c
index 8b0b735ada..a8142d9768 100644
--- a/nptl/tst-cancel4.c
+++ b/nptl/tst-cancel4.c
@@ -1891,6 +1891,8 @@ tf_msgrcv (void *arg)
}
}
+ ssize_t s;
+
pthread_cleanup_push (cl, NULL);
struct
@@ -1906,13 +1908,13 @@ tf_msgrcv (void *arg)
do
{
errno = 0;
- msgrcv (tempmsg, (struct msgbuf *) &m, 10, randnr, 0);
+ s = msgrcv (tempmsg, (struct msgbuf *) &m, 10, randnr, 0);
}
- while (errno == EIDRM);
+ while (errno == EIDRM || errno == EINTR);
pthread_cleanup_pop (0);
- printf ("%s: msgrcv returned\n", __FUNCTION__);
+ printf ("%s: msgrcv returned %zd with errno = %m\n", __FUNCTION__, s);
exit (1);
}
diff --git a/rt/Makefile b/rt/Makefile
index b99949240a..9f49a02e0c 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -51,6 +51,7 @@ include ../Rules
CFLAGS-aio_suspend.c = -fexceptions
CFLAGS-clock_nanosleep.c = -fexceptions -fasynchronous-unwind-tables
+CFLAGS-librt-cancellation.c = -fasynchronous-unwind-tables
# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
# This ensures they will load libc.so for needed symbols if loaded by