1 # FP_ARMV8_OUTLINE_ATOMICS
4 # Note [ARM outline atomics and the RTS linker]
5 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6 # Sets HAVE_ARM_OUTLINE_ATOMICS depending upon whether the target compiler
7 # provides ARMv8's outline atomics symbols. In this case we ensure that the
8 # runtime system linker's symbol table includes these symbols since code generated
9 # by the C compiler may include references to them.
11 # This is surprisingly tricky as not all implementations provide all symbols.
14 # - some compilers don't include 128-bit atomics
15 # - some (misconfigured?) toolchains don't define certain _sync operations
16 # (see https://bugs.gentoo.org/868018)
18 # For this reason we do not link directly against the symbols provided by
19 # compiler-rt/libgcc. Instead, we provide our own wrappers (defined in
20 # rts/ARMOutlineAtomicsSymbols.h), which should compile to equivalent code.
21 # This is all horrible.
24 AC_DEFUN([FP_ARM_OUTLINE_ATOMICS], [
26 [__aarch64_ldadd1_acq],
27 [AC_DEFINE([HAVE_ARM_OUTLINE_ATOMICS], [1], [Does the toolchain use ARMv8 outline atomics])]