diff --git a/qt-QTBUG-111935-fix-V4-jit.patch b/qt-QTBUG-111935-fix-V4-jit.patch new file mode 100644 index 0000000..96ad2c1 --- /dev/null +++ b/qt-QTBUG-111935-fix-V4-jit.patch @@ -0,0 +1,44 @@ +From e2bdde18d9758efdc6a0d7d106aad56995df1271 Mon Sep 17 00:00:00 2001 +From: Ulf Hermann +Date: Wed, 15 Mar 2023 08:59:43 +0100 +Subject: [PATCH] JIT: Add missing {STORE|LOAD}_ACC() to CreateCallContext + +We cannot assume anything about the accumulator register after calling +PushCallContext::call(). Also add a note about not needing to re-load +the accumulator on ThrowException. + +Pick-to: 6.5 6.2 5.15 +Fixes: QTBUG-111935 +Change-Id: I7196585e1d2697c215f4fe87d8d7ac9b98b622a3 +--- + src/qml/jit/qv4baselinejit.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/qml/jit/qv4baselinejit.cpp b/src/qml/jit/qv4baselinejit.cpp +index 14e183adb8..1d65169dce 100644 +--- a/src/qml/jit/qv4baselinejit.cpp ++++ b/src/qml/jit/qv4baselinejit.cpp +@@ -506,6 +506,8 @@ void BaselineJIT::generate_ThrowException() + as->passEngineAsArg(0); + BASELINEJIT_GENERATE_RUNTIME_CALL(ThrowException, CallResultDestination::Ignore); + as->gotoCatchException(); ++ ++ // LOAD_ACC(); <- not needed here since it would be unreachable. + } + + void BaselineJIT::generate_GetException() { as->getException(); } +@@ -513,9 +515,11 @@ void BaselineJIT::generate_SetException() { as->setException(); } + + void BaselineJIT::generate_CreateCallContext() + { ++ STORE_ACC(); + as->prepareCallWithArgCount(1); + as->passCppFrameAsArg(0); + BASELINEJIT_GENERATE_RUNTIME_CALL(PushCallContext, CallResultDestination::Ignore); ++ LOAD_ACC(); + } + + void BaselineJIT::generate_PushCatchContext(int index, int name) { as->pushCatchContext(index, name); } +-- +2.39.2 + diff --git a/qt5-qtdeclarative.spec b/qt5-qtdeclarative.spec index 913233b..2e9baee 100644 --- a/qt5-qtdeclarative.spec +++ b/qt5-qtdeclarative.spec @@ -12,7 +12,7 @@ Summary: Qt5 - QtDeclarative component Name: qt5-%{qt_module} Version: 5.15.8 -Release: 3%{?dist} +Release: 4%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details License: LGPL-3.0-only OR GPL-3.0-only WITH Qt-GPL-exception-1.0 @@ -55,6 +55,9 @@ Patch21: 0021-Make-QaccessibleQuickWidget-private-API.patch Patch100: %{name}-gcc11.patch # https://pagure.io/fedora-kde/SIG/issue/82 Patch101: qtdeclarative-5.15.0-FixMaxXMaxYExtent.patch +# From: https://codereview.qt-project.org/c/qt/qtdeclarative/+/466808 +# Cf. https://bugzilla.redhat.com/show_bug.cgi?id=2177696 +Patch102: qt-QTBUG-111935-fix-V4-jit.patch # filter qml provides %global __provides_exclude_from ^%{_qt5_archdatadir}/qml/.*\\.so$ @@ -232,6 +235,9 @@ make check -k -C tests ||: %changelog +* Wed Mar 15 2023 Neal Gompa - 5.15.8-4 +- Backport fix for crashes in V4 JIT (#2177696) + * Tue Jan 31 2023 Jan Grulich - 5.15.8-3 - migrated to SPDX license