GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. # Local configure fragment for sysdeps/aarch64. # Static PIE is supported. AC_DEFINE(SUPPORT_STATIC_PIE) # We check to see if the compiler and flags are # selecting the big endian ABI and if they are then # we set libc_cv_aarch64_be to yes which causes # HAVE_AARCH64_BE to be defined in config.h and # in include/libc-symbols.h and thus available to # shlib-versions to select the appropriate name for # the dynamic linker via %ifdef. AC_CACHE_CHECK([for big endian], [libc_cv_aarch64_be], [AC_EGREP_CPP(yes,[#ifdef __AARCH64EB__ yes #endif ], libc_cv_aarch64_be=yes, libc_cv_aarch64_be=no)]) if test $libc_cv_aarch64_be = yes; then AC_DEFINE(HAVE_AARCH64_BE) LIBC_CONFIG_VAR([default-abi], [lp64_be]) else LIBC_CONFIG_VAR([default-abi], [lp64]) fi # Only consider BTI supported if -mbranch-protection=bti is # on by default in the compiler and the linker produces # binaries with GNU property notes in PT_GNU_PROPERTY segment. AC_CACHE_CHECK([for BTI support], [libc_cv_aarch64_bti], [dnl cat > conftest.c < conftest.c < conftest.S < conftest.s <<\EOF ptrue p0.b EOF if AC_TRY_COMMAND(${CC-cc} -c -march=armv8.2-a+sve conftest.s 1>&AS_MESSAGE_LOG_FD); then libc_cv_aarch64_sve_asm=yes else libc_cv_aarch64_sve_asm=no fi rm -f conftest*]) if test $libc_cv_aarch64_sve_asm = yes; then AC_DEFINE(HAVE_AARCH64_SVE_ASM) fi if test x"$build_mathvec" = xnotset; then build_mathvec=yes fi # Check if compiler supports SVE ACLE. AC_CACHE_CHECK(for availability of SVE ACLE, libc_cv_aarch64_sve_acle, [dnl cat > conftest.c < EOF if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -fsyntax-only -ffreestanding conftest.c]); then libc_cv_aarch64_sve_acle=yes else libc_cv_aarch64_sve_acle=no fi rm conftest.c]) # Check if compiler is sufficient to build mathvec if test $build_mathvec = yes; then fail=no if test $libc_cv_aarch64_variant_pcs = no; then fail=yes AC_MSG_WARN([mathvec is enabled but linker does not support variant PCS.]) fi if test $libc_cv_aarch64_sve_asm = no; then fail=yes AC_MSG_WARN([mathvec is enabled but assembler does not support SVE.]) fi if test $libc_cv_aarch64_sve_acle = no; then fail=yes AC_MSG_WARN([mathvec is enabled but compiler does not have SVE ACLE.]) fi if test $fail = yes; then AC_MSG_ERROR([use a compatible toolchain or configure with --disable-mathvec (this results in incomplete ABI).]) fi else AC_MSG_WARN([mathvec is disabled, this results in incomplete ABI.]) fi