Fix nptl/tst-cancel17 and nptl/tst-cancelx17 with recent gcc.
authorDavid S. Miller <davem@davemloft.net>
Wed, 24 Aug 2011 06:24:01 +0000 (23:24 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 24 Aug 2011 06:24:01 +0000 (23:24 -0700)
ChangeLog
sysdeps/pthread/aio_suspend.c

index f14b70a..5399dcf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,10 @@
        %sp not %fp in calculations.
        (_JMPBUF_UNWINDS_ADJ): Likewise.
 
+       * sysdeps/pthread/aio_suspend.c (do_aio_misc_wait): New function.
+       (aio_suspend): Call it to force an exception region around the
+       AIO_MISC_WAIT() invocation.
+
 2011-08-23  Andreas Schwab  <schwab@redhat.com>
 
        * sysdeps/i386/i686/multiarch/strspn.S (ENTRY): Add missing
index b85b16d..99f3a80 100644 (file)
@@ -92,6 +92,18 @@ cleanup (void *arg)
   pthread_mutex_unlock (&__aio_requests_mutex);
 }
 
+#ifdef DONT_NEED_AIO_MISC_COND
+static int
+__attribute__ ((noinline))
+do_aio_misc_wait(int *cntr, const struct timespec *timeout)
+{
+       int result = 0;
+
+       AIO_MISC_WAIT(result, *cntr, timeout, 1);
+
+       return result;
+}
+#endif
 
 int
 aio_suspend (list, nent, timeout)
@@ -169,7 +181,7 @@ aio_suspend (list, nent, timeout)
       pthread_cleanup_push (cleanup, &clparam);
 
 #ifdef DONT_NEED_AIO_MISC_COND
-      AIO_MISC_WAIT (result, cntr, timeout, 1);
+      result = do_aio_misc_wait(&cntr, timeout);
 #else
       if (timeout == NULL)
        result = pthread_cond_wait (&cond, &__aio_requests_mutex);