Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package php8 for openSUSE:Factory checked in at 2026-07-14 13:45:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/php8 (Old) and /work/SRC/openSUSE:Factory/.php8.new.1991 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "php8" Tue Jul 14 13:45:17 2026 rev:110 rq:1364992 version:8.5.8 Changes: -------- --- /work/SRC/openSUSE:Factory/php8/php8.changes 2026-06-05 14:56:24.994669794 +0200 +++ /work/SRC/openSUSE:Factory/.php8.new.1991/php8.changes 2026-07-14 13:45:20.665590522 +0200 @@ -1,0 +2,36 @@ +Fri Jul 10 16:11:27 UTC 2026 - Arjen de Korte <[email protected]> + +- fix build with GCC 16 (gh#php/php-src#22206) [boo#1267259] +- added patch + + php-fix-build-gcc16.patch + +------------------------------------------------------------------- +Tue Jul 7 11:47:59 UTC 2026 - Petr Gajdos <[email protected]> + +- use system liburiparser [bsc#1270538] [bsc#1270539] + +------------------------------------------------------------------- +Fri Jul 3 10:17:17 UTC 2026 - Arjen de Korte <[email protected]> + +- version update to 8.5.8 (CVE-2026-14355 [bsc#1270351]) + CLI: + Fixed bug GH-21901 (Stale getopt() optional value). + Date: + Fixed bug GH-18422 (int overflow in php_date_llabs). + DOM: + Fixed bug GH-22077 (UAF in custom XPath function). + Opcache: + Fixed tracing JIT crash when a VM interrupt is handled during an observed user function call. + Fixed bug GH-21746 (Segfault with tracing JIT). + Fixed bug GH-22004 (Assertion failure at ext/opcache/jit/zend_jit_trace.c). + Fixed tailcall VM crash when a VM interrupt is handled from a VM helper. + OpenSSL: + Fix compatibility issues with OpenSSL 4.0. + Standard: + Fixed bug GH-21689 (version_compare() incorrectly handles versions ending with a dot). + URI: + Fixed CVE-2026-44927 (In uriparser before 1.0.2, there is pointer difference truncation to int in various places). (CVE-2026-44927) + Fixed CVE-2026-44928 (In uriparser before 1.0.2, the function family EqualsUri can misclassify two unequal URIs as equal). (CVE-2026-44928) +- Revert changes for building with GCC 16 + +------------------------------------------------------------------- @@ -101,0 +138 @@ + CVE-2026-12184 [bsc#1270712] Old: ---- php-8.5.7.tar.xz php-8.5.7.tar.xz.asc New: ---- php-8.5.8.tar.xz php-8.5.8.tar.xz.asc php-fix-build-gcc16.patch ----------(New B)---------- New:- added patch + php-fix-build-gcc16.patch ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ php8.spec ++++++ --- /var/tmp/diff_new_pack.GOUfJk/_old 2026-07-14 13:45:21.881632088 +0200 +++ /var/tmp/diff_new_pack.GOUfJk/_new 2026-07-14 13:45:21.885632225 +0200 @@ -57,7 +57,7 @@ %bcond_without sodium Name: %{pprefix}%{php_name}%{psuffix} -Version: 8.5.7 +Version: 8.5.8 Release: 0 Summary: Interpreter for the PHP scripting language version 8 License: MIT AND PHP-3.01 @@ -93,6 +93,8 @@ Patch22: php-date-regenerate-lexers.patch # PATCH-FEATURE-UPSTREAM https://github.com/php/php-src/pull/6564 Patch19: php-build-reproducible-phar.patch +# PATCH-FIX-OPENSUSE https://github.com/php/php-src/issues/22206 +Patch20: php-fix-build-gcc16.patch BuildRequires: apache-rpm-macros BuildRequires: autoconf BuildRequires: bison @@ -139,6 +141,9 @@ BuildRequires: pkgconfig(libffi) >= 3.0.11 BuildRequires: pkgconfig(libpcre2-8) >= 10.30 BuildRequires: pkgconfig(libsasl2) +%if 0%{suse_version} >= 1610 +BuildRequires: pkgconfig(liburiparser) +%endif BuildRequires: pkgconfig(libxml-2.0) >= 2.9.0 BuildRequires: pkgconfig(libxslt) >= 1.1.0 BuildRequires: pkgconfig(libzip) >= 0.11 @@ -259,6 +264,9 @@ Requires: pkgconfig(libpcre2-8) >= 10.30 Requires: pkgconfig(libxml-2.0) >= 2.9.0 Requires: pkgconfig(tinfo) +%if 0%{suse_version} >= 1610 +Requires: pkgconfig(liburiparser) +%endif %if %{with argon2} Requires: pkgconfig(libargon2) %endif @@ -1063,6 +1071,7 @@ sapi=$1 shift %configure \ + --disable-gcc-global-regs \ --datadir=%{_datadir}/%{php_name} \ --with-libdir=%{_lib} \ --includedir=%{_includedir} \ @@ -1084,6 +1093,9 @@ --enable-re2c-cgoto \ --with-system-tzdata=%{_datadir}/zoneinfo \ --with-external-libcrypt \ +%if 0%{suse_version} >= 1610 + --with-external-uriparser \ +%endif --with-mhash \ --disable-phpdbg \ %if %{with argon2} ++++++ php-8.5.7.tar.xz -> php-8.5.8.tar.xz ++++++ /work/SRC/openSUSE:Factory/php8/php-8.5.7.tar.xz /work/SRC/openSUSE:Factory/.php8.new.1991/php-8.5.8.tar.xz differ: char 13, line 1 ++++++ php-fix-build-gcc16.patch ++++++ >From 39c678215ce605817937d29c095ec9a880742b0a Mon Sep 17 00:00:00 2001 From: Yuriy Azorsky <[email protected]> Date: Fri, 5 Jun 2026 00:38:48 +0300 Subject: [PATCH] Fix GH-22206: [opcache] avoid musttail in zend_runtime_jit() (GCC 16) --- .github/workflows/opcache-tailcall-vm.yml | 64 +++++++++++++++++++++++ ext/opcache/jit/zend_jit.c | 8 +++ 2 files changed, 72 insertions(+) create mode 100644 .github/workflows/opcache-tailcall-vm.yml diff --git a/.github/workflows/opcache-tailcall-vm.yml b/.github/workflows/opcache-tailcall-vm.yml new file mode 100644 index 000000000000..bec874fce95a --- /dev/null +++ b/.github/workflows/opcache-tailcall-vm.yml @@ -0,0 +1,64 @@ +# Regression guard for the opcache JIT tail-call VM build. +# +# When global register variables are unavailable but musttail is, opcache is +# built with ZEND_VM_KIND_TAILCALL (see Zend/zend_vm_opcodes.h). In that mode +# ZEND_OPCODE_RETURN() expands to a guaranteed tail call (ZEND_MUSTTAIL). A +# function that uses setjmp() (e.g. zend_runtime_jit() via zend_try()) must not +# perform such a tail call; GCC 16 diagnoses this as +# error: cannot tail-call: caller uses setjmp +# and the build fails (php-src issues #21960 and #22206). +# +# This job forces the tail-call VM via --disable-gcc-global-regs and compiles +# opcache, so the otherwise-uncovered TAILCALL path is exercised on every run. +# NOTE: the error is only emitted by compilers that enforce it (GCC >= 16). +# On older GCC / Clang this job still builds the path but will not turn red, +# so point `cc` at a GCC 16+ toolchain to get full regression coverage. +name: opcache tail-call VM build + +on: + pull_request: + paths: + - 'ext/opcache/**' + - 'Zend/zend_vm_opcodes.h' + - 'Zend/zend_vm_execute.h' + - 'Zend/zend_portability.h' + - '.github/workflows/opcache-tailcall-vm.yml' + workflow_dispatch: + +permissions: + contents: read + +jobs: + TAILCALL_VM: + name: LINUX_X64_TAILCALL_VM + runs-on: ubuntu-24.04 + steps: + - name: git checkout + uses: actions/checkout@v4 + - name: apt + run: | + sudo apt-get update + sudo apt-get install -y \ + autoconf bison re2c pkg-config \ + libxml2-dev libsqlite3-dev + - name: System info + run: cc --version + - name: ./buildconf + run: ./buildconf --force + - name: ./configure + # --disable-gcc-global-regs drops HYBRID; with musttail available on + # x86_64 this selects ZEND_VM_KIND_TAILCALL, the path that broke under + # GCC 16. JIT must stay enabled so ext/opcache/jit/zend_jit.c is built. + run: | + ./configure \ + --enable-option-checking=fatal \ + --disable-all \ + --enable-opcache \ + --enable-cli \ + --disable-gcc-global-regs + - name: make + run: make -j$(nproc) + - name: Verify tail-call VM was actually built + run: | + ./sapi/cli/php --ri opcache > /dev/null + ./sapi/cli/php -r 'echo PHP_VERSION, PHP_EOL;' diff --git a/ext/opcache/jit/zend_jit.c b/ext/opcache/jit/zend_jit.c index 5de9c81484ba..9a94532347fa 100644 --- a/ext/opcache/jit/zend_jit.c +++ b/ext/opcache/jit/zend_jit.c @@ -3138,7 +3138,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV zend_runtime_jit(Z return; // ZEND_VM_CONTINUE #else opline = orig_opline; +# if ZEND_VM_KIND == ZEND_VM_KIND_TAILCALL + /* This function uses setjmp() via zend_try(), so a guaranteed tail call + * (ZEND_MUSTTAIL, as used by ZEND_OPCODE_RETURN() in the tail-call VM) is + * not allowed here and is rejected by GCC 16. As this is a cold one-shot + * JIT trigger rather than a hot VM handler, a plain call is fine. */ + return ((zend_vm_opcode_handler_t)opline->handler)(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); +# else ZEND_OPCODE_RETURN(); +# endif #endif }
