diff options
author | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2024-03-13 14:34:14 +0000 |
---|---|---|
committer | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2024-03-14 14:27:56 +0000 |
commit | 73c26018ed0ecd9c807bb363cc2c2ab4aca66a82 (patch) | |
tree | 3ffed8d805467423965228912339a251bceb7f76 | |
parent | 2367bf468ce43801de987dcd54b0f99ba9d62827 (diff) | |
download | glibc-73c26018ed0ecd9c807bb363cc2c2ab4aca66a82.zip glibc-73c26018ed0ecd9c807bb363cc2c2ab4aca66a82.tar.gz glibc-73c26018ed0ecd9c807bb363cc2c2ab4aca66a82.tar.bz2 |
aarch64: fix check for SVE support in assembler
Due to GCC bug 110901 -mcpu can override -march setting when compiling
asm code and thus a compiler targetting a specific cpu can fail the
configure check even when binutils gas supports SVE.
The workaround is that explicit .arch directive overrides both -mcpu
and -march, and since that's what the actual SVE memcpy uses the
configure check should use that too even if the GCC issue is fixed
independently.
Reviewed-by: Florian Weimer <fweimer@redhat.com>
-rwxr-xr-x[-rw-r--r--] | sysdeps/aarch64/configure | 5 | ||||
-rw-r--r-- | sysdeps/aarch64/configure.ac | 5 |
2 files changed, 6 insertions, 4 deletions
diff --git a/sysdeps/aarch64/configure b/sysdeps/aarch64/configure index ca57edc..9606137 100644..100755 --- a/sysdeps/aarch64/configure +++ b/sysdeps/aarch64/configure @@ -325,9 +325,10 @@ then : printf %s "(cached) " >&6 else $as_nop cat > conftest.s <<\EOF - ptrue p0.b + .arch armv8.2-a+sve + ptrue p0.b EOF -if { ac_try='${CC-cc} -c -march=armv8.2-a+sve conftest.s 1>&5' +if { ac_try='${CC-cc} -c conftest.s 1>&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 (eval $ac_try) 2>&5 ac_status=$? diff --git a/sysdeps/aarch64/configure.ac b/sysdeps/aarch64/configure.ac index 27874ec..56d12d6 100644 --- a/sysdeps/aarch64/configure.ac +++ b/sysdeps/aarch64/configure.ac @@ -90,9 +90,10 @@ LIBC_CONFIG_VAR([aarch64-variant-pcs], [$libc_cv_aarch64_variant_pcs]) # Check if asm support armv8.2-a+sve AC_CACHE_CHECK([for SVE support in assembler], [libc_cv_aarch64_sve_asm], [dnl cat > conftest.s <<\EOF - ptrue p0.b + .arch armv8.2-a+sve + ptrue p0.b EOF -if AC_TRY_COMMAND(${CC-cc} -c -march=armv8.2-a+sve conftest.s 1>&AS_MESSAGE_LOG_FD); then +if AC_TRY_COMMAND(${CC-cc} -c conftest.s 1>&AS_MESSAGE_LOG_FD); then libc_cv_aarch64_sve_asm=yes else libc_cv_aarch64_sve_asm=no |