diff options
author | Andreas Schwab <schwab@suse.de> | 2020-04-10 15:34:52 +0200 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-04-11 11:19:50 +0900 |
commit | abe2e7de4d1f2d5861d7c9ab9c7e778f2ee1dcd2 (patch) | |
tree | 2bf6cc2fef8da2a2f67f523abb465289e6df2db6 | |
parent | 6f28ebd585fba1aff1c9591ced08ed11b68ba9e3 (diff) | |
download | ruby-abe2e7de4d1f2d5861d7c9ab9c7e778f2ee1dcd2.tar.gz |
Don't require sub-word atomics
On some architectures (like RISC-V) sub-word atomics are only available
when linking against -latomic, but the configure script doesn't do that,
causing the atomic checks to fail and the resulting ruby binary is
non-functional. Ruby does not use sub-word atomic operations, rb_atomic_t
is defined to unsigned int, so use unsigned int when checking for atomic
operations.
-rw-r--r-- | configure.ac | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac index 7c12b9e5fb..ba86deffbe 100644 --- a/configure.ac +++ b/configure.ac @@ -1498,7 +1498,7 @@ AS_IF([test "$GCC" = yes], [ ]) AC_CACHE_CHECK([for __atomic builtins], [rb_cv_gcc_atomic_builtins], [ - AC_TRY_LINK([unsigned char atomic_var;], + AC_TRY_LINK([unsigned int atomic_var;], [ __atomic_exchange_n(&atomic_var, 0, __ATOMIC_SEQ_CST); __atomic_exchange_n(&atomic_var, 1, __ATOMIC_SEQ_CST); @@ -1513,7 +1513,7 @@ AS_IF([test "$GCC" = yes], [ ]) AC_CACHE_CHECK([for __sync builtins], [rb_cv_gcc_sync_builtins], [ - AC_TRY_LINK([unsigned char atomic_var;], + AC_TRY_LINK([unsigned int atomic_var;], [ __sync_lock_test_and_set(&atomic_var, 0); __sync_lock_test_and_set(&atomic_var, 1); |