summaryrefslogtreecommitdiff
path: root/0217-Backport-SME-libgcc-aarch64-Configure-check-for-__ge.patch
diff options
context:
space:
mode:
Diffstat (limited to '0217-Backport-SME-libgcc-aarch64-Configure-check-for-__ge.patch')
-rw-r--r--0217-Backport-SME-libgcc-aarch64-Configure-check-for-__ge.patch117
1 files changed, 117 insertions, 0 deletions
diff --git a/0217-Backport-SME-libgcc-aarch64-Configure-check-for-__ge.patch b/0217-Backport-SME-libgcc-aarch64-Configure-check-for-__ge.patch
new file mode 100644
index 0000000..07c1417
--- /dev/null
+++ b/0217-Backport-SME-libgcc-aarch64-Configure-check-for-__ge.patch
@@ -0,0 +1,117 @@
+From 66d4035958e1dee2d16f9290004921674eb492b3 Mon Sep 17 00:00:00 2001
+From: Szabolcs Nagy <szabolcs.nagy@arm.com>
+Date: Mon, 4 Dec 2023 10:52:52 +0000
+Subject: [PATCH 118/157] [Backport][SME] libgcc: aarch64: Configure check for
+ __getauxval
+
+Reference: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=dbbfb52b0e9c66ee9d05b8fd17c4f44655e48463
+
+Add configure check for the __getauxval ABI symbol, which is always
+available on aarch64 glibc, and may be available on other linux C
+runtimes. For now only enabled on glibc, others have to override it
+
+ target_configargs=libgcc_cv_have___getauxval=yes
+
+This is deliberately obscure as it should be auto detected, ideally
+via a feature test macro in unistd.h (link time detection is not
+possible since the libc may not be installed at libgcc build time),
+but currently there is no such feature test mechanism.
+
+Without __getauxval, libgcc cannot do runtime CPU feature detection
+and has to assume only the build time known features are available.
+
+libgcc/ChangeLog:
+
+ * config.in: Undef HAVE___GETAUXVAL.
+ * configure: Regenerate.
+ * configure.ac: Check for __getauxval.
+---
+ libgcc/config.in | 3 +++
+ libgcc/configure | 26 ++++++++++++++++++++++++++
+ libgcc/configure.ac | 19 +++++++++++++++++++
+ 3 files changed, 48 insertions(+)
+
+diff --git a/libgcc/config.in b/libgcc/config.in
+index 5dd96cdf6..441d4d39b 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 afe02b303..a874ef57e 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 abc398c91..64b45ae14 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(,
+--
+2.33.0
+