diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | nptl/ChangeLog | 5 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S | 3 | ||||
-rw-r--r-- | nptl/tst-cancel4.c | 8 | ||||
-rw-r--r-- | rt/Makefile | 1 |
5 files changed, 17 insertions, 4 deletions
@@ -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 21157bc..65cf4ef 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 2eba326..f09be44 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 8b0b735..a8142d9 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 b999492..9f49a02 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 |