|
@@ -1,17 +1,21 @@
|
|
|
---- php-7.4.24.orig/ext/standard/crc32.c 2021-09-21 13:23:20.000000000 +0200
|
|
|
-+++ php-7.4.24/ext/standard/crc32.c 2021-09-29 10:27:37.144637295 +0200
|
|
|
-@@ -23,7 +23,6 @@
|
|
|
- #if HAVE_AARCH64_CRC32
|
|
|
- # include <arm_acle.h>
|
|
|
- # if defined(__linux__)
|
|
|
--# include <sys/auxv.h>
|
|
|
- # include <asm/hwcap.h>
|
|
|
- # endif
|
|
|
+--- php-7.4.25.orig/ext/standard/crc32.c 2021-10-19 17:18:19.000000000 +0200
|
|
|
++++ php-7.4.25/ext/standard/crc32.c 2021-10-29 14:58:12.777563842 +0200
|
|
|
+@@ -20,56 +20,6 @@
|
|
|
+ #include "basic_functions.h"
|
|
|
+ #include "crc32.h"
|
|
|
|
|
|
-@@ -32,13 +31,6 @@ static inline int has_crc32_insn() {
|
|
|
- static int res = -1;
|
|
|
- if (res != -1)
|
|
|
- return res;
|
|
|
+-#if HAVE_AARCH64_CRC32
|
|
|
+-# include <arm_acle.h>
|
|
|
+-# if defined(__linux__)
|
|
|
+-# include <sys/auxv.h>
|
|
|
+-# include <asm/hwcap.h>
|
|
|
+-# endif
|
|
|
+-
|
|
|
+-static inline int has_crc32_insn() {
|
|
|
+- /* Only go through the runtime detection once. */
|
|
|
+- static int res = -1;
|
|
|
+- if (res != -1)
|
|
|
+- return res;
|
|
|
-# if defined(HWCAP_CRC32)
|
|
|
- res = getauxval(AT_HWCAP) & HWCAP_CRC32;
|
|
|
- return res;
|
|
@@ -19,10 +23,41 @@
|
|
|
- res = getauxval(AT_HWCAP2) & HWCAP2_CRC32;
|
|
|
- return res;
|
|
|
-# else
|
|
|
- res = 0;
|
|
|
- return res;
|
|
|
- # endif
|
|
|
-@@ -85,13 +77,6 @@ PHP_NAMED_FUNCTION(php_if_crc32)
|
|
|
+- res = 0;
|
|
|
+- return res;
|
|
|
+-# endif
|
|
|
+-}
|
|
|
+-
|
|
|
+-# pragma GCC push_options
|
|
|
+-# pragma GCC target ("+nothing+crc")
|
|
|
+-static uint32_t crc32_aarch64(uint32_t crc, char *p, size_t nr) {
|
|
|
+- while (nr >= sizeof(uint64_t)) {
|
|
|
+- crc = __crc32d(crc, *(uint64_t *)p);
|
|
|
+- p += sizeof(uint64_t);
|
|
|
+- nr -= sizeof(uint64_t);
|
|
|
+- }
|
|
|
+- if (nr >= sizeof(int32_t)) {
|
|
|
+- crc = __crc32w(crc, *(uint32_t *)p);
|
|
|
+- p += sizeof(uint32_t);
|
|
|
+- nr -= sizeof(uint32_t);
|
|
|
+- }
|
|
|
+- if (nr >= sizeof(int16_t)) {
|
|
|
+- crc = __crc32h(crc, *(uint16_t *)p);
|
|
|
+- p += sizeof(uint16_t);
|
|
|
+- nr -= sizeof(uint16_t);
|
|
|
+- }
|
|
|
+- if (nr) {
|
|
|
+- crc = __crc32b(crc, *p);
|
|
|
+- }
|
|
|
+- return crc;
|
|
|
+-}
|
|
|
+-# pragma GCC pop_options
|
|
|
+-#endif
|
|
|
+-
|
|
|
+ /* {{{ proto string crc32(string str)
|
|
|
+ Calculate the crc32 polynomial of a string */
|
|
|
+ PHP_NAMED_FUNCTION(php_if_crc32)
|
|
|
+@@ -85,13 +35,6 @@ PHP_NAMED_FUNCTION(php_if_crc32)
|
|
|
|
|
|
crc = crcinit^0xFFFFFFFF;
|
|
|
|