diff --git a/pcre2-10.34-Remove-hackings-in-JIT.patch b/pcre2-10.34-Remove-hackings-in-JIT.patch new file mode 100644 index 0000000..3424e73 --- /dev/null +++ b/pcre2-10.34-Remove-hackings-in-JIT.patch @@ -0,0 +1,97 @@ +From 5b90796ca14042e55b046d28c9eee45a5b03bbd4 Mon Sep 17 00:00:00 2001 +From: zherczeg +Date: Thu, 20 Feb 2020 08:57:39 +0000 +Subject: [PATCH] Remove hackings in JIT. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +git-svn-id: svn://vcs.exim.org/pcre2/code/trunk@1222 6239d852-aaf2-0410-a92c-79f79f948069 +Signed-off-by: Petr Písař +--- + src/pcre2_jit_compile.c | 43 +++++++++++++---------------------------- + 1 file changed, 13 insertions(+), 30 deletions(-) + +diff --git a/src/pcre2_jit_compile.c b/src/pcre2_jit_compile.c +index ef29a76..b42b335 100644 +--- a/src/pcre2_jit_compile.c ++++ b/src/pcre2_jit_compile.c +@@ -7316,16 +7316,11 @@ if (needstype || needsscript) + /* Before anything else, we deal with scripts. */ + if (needsscript) + { +-// PH hacking +- OP2(SLJIT_SHL, TMP1, 0, TMP2, 0, SLJIT_IMM, 2); +- OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, 3); +- OP2(SLJIT_ADD, TMP2, 0, TMP2, 0, TMP1, 0); +- +- OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, (sljit_sw)PRIV(ucd_records) + SLJIT_OFFSETOF(ucd_record, script)); +- +- OP1(SLJIT_MOV_U8, TMP1, 0, SLJIT_MEM2(TMP1, TMP2), 0); ++ OP2(SLJIT_SHL, TMP1, 0, TMP2, 0, SLJIT_IMM, 3); ++ OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, 2); ++ OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, TMP2, 0); + +- // OP1(SLJIT_MOV_U8, TMP1, 0, SLJIT_MEM2(TMP1, TMP2), 3); ++ OP1(SLJIT_MOV_U8, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)PRIV(ucd_records) + SLJIT_OFFSETOF(ucd_record, script)); + + ccbegin = cc; + +@@ -7369,28 +7364,19 @@ if (needstype || needsscript) + { + if (!needschar) + { +-// PH hacking +- OP2(SLJIT_SHL, TMP1, 0, TMP2, 0, SLJIT_IMM, 2); +- OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, 3); +- OP2(SLJIT_ADD, TMP2, 0, TMP2, 0, TMP1, 0); +- OP2(SLJIT_ADD, TMP1, 0, TMP2, 0, TMP1, 0); ++ OP2(SLJIT_SHL, TMP1, 0, TMP2, 0, SLJIT_IMM, 3); ++ OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, 2); ++ OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, TMP2, 0); + +- OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, (sljit_sw)PRIV(ucd_records) + SLJIT_OFFSETOF(ucd_record, chartype)); +- +- OP1(SLJIT_MOV_U8, TMP1, 0, SLJIT_MEM2(TMP1, TMP2), 0); +- +-// OP1(SLJIT_MOV_U8, TMP1, 0, SLJIT_MEM2(TMP1, TMP2), 3); ++ OP1(SLJIT_MOV_U8, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)PRIV(ucd_records) + SLJIT_OFFSETOF(ucd_record, chartype)); + } + else + { +-// PH hacking +- OP2(SLJIT_SHL, TMP1, 0, TMP2, 0, SLJIT_IMM, 2); +- ++ OP2(SLJIT_SHL, TMP1, 0, TMP2, 0, SLJIT_IMM, 2); + OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, 3); ++ OP2(SLJIT_ADD, TMP2, 0, TMP2, 0, TMP1, 0); + +- OP2(SLJIT_ADD, TMP2, 0, TMP2, 0, TMP1, 0); +- OP1(SLJIT_MOV, TMP1, 0, RETURN_ADDR, 0); +- ++ OP1(SLJIT_MOV, TMP1, 0, RETURN_ADDR, 0); + OP1(SLJIT_MOV_U8, RETURN_ADDR, 0, SLJIT_MEM1(TMP2), (sljit_sw)PRIV(ucd_records) + SLJIT_OFFSETOF(ucd_record, chartype)); + typereg = RETURN_ADDR; + } +@@ -8769,16 +8755,13 @@ if (common->utf && *cc == OP_REFI) + + CMPTO(SLJIT_EQUAL, TMP1, 0, char1_reg, 0, loop); + +-// PH hacking + OP1(SLJIT_MOV, TMP3, 0, TMP1, 0); + + add_jump(compiler, &common->getucd, JUMP(SLJIT_FAST_CALL)); + +- OP2(SLJIT_SHL, TMP1, 0, TMP2, 0, SLJIT_IMM, 2); +- ++ OP2(SLJIT_SHL, TMP1, 0, TMP2, 0, SLJIT_IMM, 2); + OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, 3); +- +- OP2(SLJIT_ADD, TMP2, 0, TMP2, 0, TMP1, 0); ++ OP2(SLJIT_ADD, TMP2, 0, TMP2, 0, TMP1, 0); + + OP2(SLJIT_ADD, TMP2, 0, TMP2, 0, SLJIT_IMM, (sljit_sw)PRIV(ucd_records)); + +-- +2.21.1 + diff --git a/pcre2.spec b/pcre2.spec index 4c34277..b2b9e17 100644 --- a/pcre2.spec +++ b/pcre2.spec @@ -9,7 +9,7 @@ #%%global rcversion RC1 Name: pcre2 Version: 10.34 -Release: %{?rcversion:0.}8%{?rcversion:.%rcversion}%{?dist} +Release: %{?rcversion:0.}9%{?rcversion:.%rcversion}%{?dist} %global myversion %{version}%{?rcversion:-%rcversion} Summary: Perl-compatible regular expression library # the library: BSD with exceptions @@ -84,6 +84,9 @@ Patch10: pcre2-10.34-Fix-bug-in-UTF-16-checker-returning-wrong-offset-for.pat # Fix compiling a lookbehind when preceded by a DEFINE group, # upstream bug #2531, in upstream after 10.34 Patch11: pcre2-10.34-Fix-bad-lookbehind-compilation-when-preceded-by-a-DE.patch +# Fix a JIT compilation of the Unicode scripts in the extended character classes, +# upstream bug #2432, in upstream after 10.34 +Patch12: pcre2-10.34-Remove-hackings-in-JIT.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: coreutils @@ -185,6 +188,7 @@ Utilities demonstrating PCRE2 capabilities like pcre2grep or pcre2test. %patch9 -p1 %patch10 -p1 %patch11 -p1 +%patch12 -p1 # Because of multilib patch libtoolize --copy --force autoreconf -vif @@ -298,6 +302,10 @@ make %{?_smp_mflags} check VERBOSE=yes %{_mandir}/man1/pcre2test.* %changelog +* Mon Mar 23 2020 Petr Pisar - 10.34-9 +- Fix a JIT compilation of the Unicode scripts in the extended character classes + (upstream bug #2432) + * Mon Mar 16 2020 Petr Pisar - 10.34-8 - Fix computing an offest for the start of the UTF-16 error when a high surrogate is not followed by a valid low surrogate (upstream bug #2527)