Fix GH-15587: Autotools: fix configure check for aarch64 CRC32 API

On arm32 bit the check succeeds leading to a build error later on:

/home/autobuild/autobuild/instance-3/output-1/build/php-8.3.10/ext/standard/crc32.c:70:12:
 error: 'armv8-a' does not support feature 'nothing'
   70 | #   pragma GCC target ("+nothing+crc")

Co-authored-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
[http://lists.busybox.net/pipermail/buildroot/2024-August/761151.html]
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
This commit is contained in:
Bernd Kuhls 2024-08-25 18:00:29 +02:00 committed by Peter Kokot
parent 4b6575a1f9
commit 5947db6bb8
No known key found for this signature in database
GPG Key ID: A94800907AA79B36
2 changed files with 21 additions and 5 deletions

2
NEWS
View File

@ -9,6 +9,8 @@ PHP NEWS
. Fixed bug GH-15514 (Configure error: genif.sh: syntax error). (Peter Kokot)
. Fixed bug GH-15565 (--disable-ipv6 during compilation produces error
EAI_SYSTEM not found). (nielsdos)
. Fixed bug GH-15587 (CRC32 API build error on arm 32-bit).
(Bernd Kuhls, Thomas Petazzoni)
- DOM:
. Fixed bug GH-15551 (Segmentation fault (access null pointer) in

View File

@ -738,11 +738,25 @@ AC_FUNC_ALLOCA
PHP_TIME_R_TYPE
PHP_CHECK_IN_ADDR_T
AC_CACHE_CHECK([for aarch64 CRC32 API], ac_cv_func___crc32d,
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <arm_acle.h>]],[[__crc32d(0, 0);]])],[ac_cv_func___crc32d=yes],[ac_cv_func___crc32d="no"])])
if test "$ac_cv_func___crc32d" = "yes"; then
AC_DEFINE([HAVE_AARCH64_CRC32], [1], [Define when aarch64 CRC32 API is available.])
fi
AC_CACHE_CHECK([for aarch64 CRC32 API], [ac_cv_func___crc32d],
[AC_LINK_IFELSE([AC_LANG_PROGRAM([
#include <arm_acle.h>
# if defined(__GNUC__)
# if!defined(__clang__)
# pragma GCC push_options
# pragma GCC target ("+nothing+crc")
# elif defined(__APPLE__)
# pragma clang attribute push(__attribute__((target("crc"))), apply_to=function)
# else
# pragma clang attribute push(__attribute__((target("+nothing+crc"))), apply_to=function)
# endif
# endif
], [__crc32d(0, 0);])],
[ac_cv_func___crc32d=yes],
[ac_cv_func___crc32d=no])])
AS_VAR_IF([ac_cv_func___crc32d], [yes],
[AC_DEFINE([HAVE_AARCH64_CRC32], [1],
[Define to 1 when aarch64 CRC32 API is available.])])
dnl Check for asm goto support.
AC_CACHE_CHECK([for asm goto], ac_cv__asm_goto,