diff --git a/libgcc/config.in b/libgcc/config.in index 5dd96cdf648..441d4d39b95 100644 --- a/libgcc/config.in +++ b/libgcc/config.in @@ -16,6 +16,9 @@ /* Define to 1 if the assembler supports .variant_pcs. */ #undef HAVE_AS_VARIANT_PCS +/* Define to 1 if __getauxval is available. */ +#undef HAVE___GETAUXVAL + /* Define to 1 if the target assembler supports thread-local storage. */ #undef HAVE_CC_TLS diff --git a/libgcc/configure b/libgcc/configure index 82c8558a13d..3671d9b1a1a 100755 --- a/libgcc/configure +++ b/libgcc/configure @@ -5658,6 +5658,32 @@ $as_echo "#define HAVE_AS_VARIANT_PCS 1" >>confdefs.h ;; esac +# Check __getauxval ABI symbol for CPU feature detection. +case ${target} in +aarch64*-linux-*) + # No link check because the libc may not be present. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __getauxval" >&5 +$as_echo_n "checking for __getauxval... " >&6; } +if ${libgcc_cv_have___getauxval+:} false; then : + $as_echo_n "(cached) " >&6 +else + case ${target} in + *-linux-gnu*) + libgcc_cv_have___getauxval=yes + ;; + *) + libgcc_cv_have___getauxval=no + esac +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgcc_cv_have___getauxval" >&5 +$as_echo "$libgcc_cv_have___getauxval" >&6; } + if test x$libgcc_cv_have___getauxval = xyes; then + +$as_echo "#define HAVE___GETAUXVAL 1" >>confdefs.h + + fi +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for init priority support" >&5 $as_echo_n "checking for init priority support... " >&6; } if ${libgcc_cv_init_priority+:} false; then : diff --git a/libgcc/configure.ac b/libgcc/configure.ac index fd0934c9ad0..467f5e63ef2 100644 --- a/libgcc/configure.ac +++ b/libgcc/configure.ac @@ -665,6 +665,25 @@ aarch64*-*-*) esac]) LIBGCC_CHECK_AS_VARIANT_PCS +# Check __getauxval ABI symbol for CPU feature detection. +case ${target} in +aarch64*-linux-*) + # No link check because the libc may not be present. + AC_CACHE_CHECK([for __getauxval], + [libgcc_cv_have___getauxval], + [case ${target} in + *-linux-gnu*) + libgcc_cv_have___getauxval=yes + ;; + *) + libgcc_cv_have___getauxval=no + esac]) + if test x$libgcc_cv_have___getauxval = xyes; then + AC_DEFINE(HAVE___GETAUXVAL, 1, + [Define to 1 if __getauxval is available.]) + fi +esac + dnl Check if as supports RTM instructions. AC_CACHE_CHECK(for init priority support, libgcc_cv_init_priority, [ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,