gitlab-ci: Set GIT_SUBMODULE_FORCE_HTTPS
[ghc.git] / m4 / fp_armv8_outline_atomics.m4
blob248ce6d233c8f5a6ddf7eb69d9dd5a8c29b9b1c3
1 # FP_ARMV8_OUTLINE_ATOMICS
2 # ----------
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.
12 # For instance:
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], [
25     AC_CHECK_FUNC(
26         [__aarch64_ldadd1_acq],
27         [AC_DEFINE([HAVE_ARM_OUTLINE_ATOMICS], [1], [Does the toolchain use ARMv8 outline atomics])]
28     )