From ca1f6c0463d75f452eb2e99a417765e856f93afa Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 2 Apr 2014 13:30:55 -0700 Subject: [PATCH] libgomp: Fix default futex vs errno * config/linux/futex.h (futex_wait): Get error value from errno. (futex_wake): Likewise. From-SVN: r209037 --- libgomp/ChangeLog | 5 +++++ libgomp/config/linux/futex.h | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index bc33ea9a37b5..8d3bc356eff9 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,8 @@ +2014-04-02 Richard Henderson + + * config/linux/futex.h (futex_wait): Get error value from errno. + (futex_wake): Likewise. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/libgomp/config/linux/futex.h b/libgomp/config/linux/futex.h index d0136f50ac2e..b1ce2afadd43 100644 --- a/libgomp/config/linux/futex.h +++ b/libgomp/config/linux/futex.h @@ -41,8 +41,8 @@ static inline void futex_wait (int *addr, int val) { - long err = syscall (SYS_futex, addr, gomp_futex_wait, val, NULL); - if (__builtin_expect (err == -ENOSYS, 0)) + int err = syscall (SYS_futex, addr, gomp_futex_wait, val, NULL); + if (__builtin_expect (err < 0 && errno == ENOSYS, 0)) { gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG; gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG; @@ -53,8 +53,8 @@ futex_wait (int *addr, int val) static inline void futex_wake (int *addr, int count) { - long err = syscall (SYS_futex, addr, gomp_futex_wake, count); - if (__builtin_expect (err == -ENOSYS, 0)) + int err = syscall (SYS_futex, addr, gomp_futex_wake, count); + if (__builtin_expect (err < 0 && errno == ENOSYS, 0)) { gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG; gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG; -- 2.47.2