diff --git a/libcxx/src/atomic.cpp b/libcxx/src/atomic.cpp --- a/libcxx/src/atomic.cpp +++ b/libcxx/src/atomic.cpp @@ -16,7 +16,18 @@ #ifdef __linux__ #include +#if defined(__ve__) +// VE doesn't have linux/futex.h. But, VEOS implements some FUTEX system calls. +// These system calls are good enough for libcxx. Therefore, we define FUTEX +// flags here locally to compile libcxx using FUTEX system calls. +# define FUTEX_WAIT 0 +# define FUTEX_WAKE 1 +# define FUTEX_PRIVATE_FLAG 128 +# define FUTEX_WAIT_PRIVATE (FUTEX_WAIT | FUTEX_PRIVATE_FLAG) +# define FUTEX_WAKE_PRIVATE (FUTEX_WAKE | FUTEX_PRIVATE_FLAG) +#else #include +#endif #include // libc++ uses SYS_futex as a universal syscall name. However, on 32 bit architectures