mirror of
https://github.com/php/php-src.git
synced 2024-11-27 03:44:07 +08:00
Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2: Fix GH-16168: php 8.1 and earlier crash immediately when compiled with Xcode 16 clang on macOS 15
This commit is contained in:
commit
e4a23e920d
4
NEWS
4
NEWS
@ -5,6 +5,10 @@ PHP NEWS
|
||||
- COM:
|
||||
. Fixed out of bound writes to SafeArray data. (cmb)
|
||||
|
||||
- Core:
|
||||
. Fixed bug GH-16168 (php 8.1 and earlier crash immediately when compiled
|
||||
with Xcode 16 clang on macOS 15). (nielsdos)
|
||||
|
||||
- Curl:
|
||||
. Fixed bug GH-16302 (CurlMultiHandle holds a reference to CurlHandle if
|
||||
curl_multi_add_handle fails). (timwolla)
|
||||
|
@ -402,32 +402,32 @@ ZEND_API bool ZEND_FASTCALL I_REPLACE_SONAME_FNNAME_ZU(NONE,zend_string_equal_va
|
||||
ZEND_API zend_never_inline NOIPA bool ZEND_FASTCALL zend_string_equal_val(const zend_string *s1, const zend_string *s2)
|
||||
{
|
||||
const char *ptr = ZSTR_VAL(s1);
|
||||
size_t delta = (const char*)s2 - (const char*)s1;
|
||||
uintptr_t delta = (uintptr_t) s2 - (uintptr_t) s1;
|
||||
size_t len = ZSTR_LEN(s1);
|
||||
zend_ulong ret;
|
||||
|
||||
__asm__ (
|
||||
".LL0%=:\n\t"
|
||||
"0:\n\t"
|
||||
"movl (%2,%3), %0\n\t"
|
||||
"xorl (%2), %0\n\t"
|
||||
"jne .LL1%=\n\t"
|
||||
"jne 1f\n\t"
|
||||
"addl $0x4, %2\n\t"
|
||||
"subl $0x4, %1\n\t"
|
||||
"ja .LL0%=\n\t"
|
||||
"ja 0b\n\t"
|
||||
"movl $0x1, %0\n\t"
|
||||
"jmp .LL3%=\n\t"
|
||||
".LL1%=:\n\t"
|
||||
"jmp 3f\n\t"
|
||||
"1:\n\t"
|
||||
"cmpl $0x4,%1\n\t"
|
||||
"jb .LL2%=\n\t"
|
||||
"jb 2f\n\t"
|
||||
"xorl %0, %0\n\t"
|
||||
"jmp .LL3%=\n\t"
|
||||
".LL2%=:\n\t"
|
||||
"jmp 3f\n\t"
|
||||
"2:\n\t"
|
||||
"negl %1\n\t"
|
||||
"lea 0x20(,%1,8), %1\n\t"
|
||||
"shll %b1, %0\n\t"
|
||||
"sete %b0\n\t"
|
||||
"movzbl %b0, %0\n\t"
|
||||
".LL3%=:\n"
|
||||
"3:\n"
|
||||
: "=&a"(ret),
|
||||
"+c"(len),
|
||||
"+r"(ptr)
|
||||
@ -440,32 +440,32 @@ ZEND_API zend_never_inline NOIPA bool ZEND_FASTCALL zend_string_equal_val(const
|
||||
ZEND_API zend_never_inline NOIPA bool ZEND_FASTCALL zend_string_equal_val(const zend_string *s1, const zend_string *s2)
|
||||
{
|
||||
const char *ptr = ZSTR_VAL(s1);
|
||||
size_t delta = (const char*)s2 - (const char*)s1;
|
||||
uintptr_t delta = (uintptr_t) s2 - (uintptr_t) s1;
|
||||
size_t len = ZSTR_LEN(s1);
|
||||
zend_ulong ret;
|
||||
|
||||
__asm__ (
|
||||
".LL0%=:\n\t"
|
||||
"0:\n\t"
|
||||
"movq (%2,%3), %0\n\t"
|
||||
"xorq (%2), %0\n\t"
|
||||
"jne .LL1%=\n\t"
|
||||
"jne 1f\n\t"
|
||||
"addq $0x8, %2\n\t"
|
||||
"subq $0x8, %1\n\t"
|
||||
"ja .LL0%=\n\t"
|
||||
"ja 0b\n\t"
|
||||
"movq $0x1, %0\n\t"
|
||||
"jmp .LL3%=\n\t"
|
||||
".LL1%=:\n\t"
|
||||
"jmp 3f\n\t"
|
||||
"1:\n\t"
|
||||
"cmpq $0x8,%1\n\t"
|
||||
"jb .LL2%=\n\t"
|
||||
"jb 2f\n\t"
|
||||
"xorq %0, %0\n\t"
|
||||
"jmp .LL3%=\n\t"
|
||||
".LL2%=:\n\t"
|
||||
"jmp 3f\n\t"
|
||||
"2:\n\t"
|
||||
"negq %1\n\t"
|
||||
"lea 0x40(,%1,8), %1\n\t"
|
||||
"shlq %b1, %0\n\t"
|
||||
"sete %b0\n\t"
|
||||
"movzbq %b0, %0\n\t"
|
||||
".LL3%=:\n"
|
||||
"3:\n"
|
||||
: "=&a"(ret),
|
||||
"+c"(len),
|
||||
"+r"(ptr)
|
||||
|
Loading…
Reference in New Issue
Block a user