Package pcredemo.c as a documentation for pcre-devel
It's also available as pcredemo(3) but plain file is handier.
This commit is contained in:
parent
66fb3f5500
commit
1f75ea5a21
96
pcre-8.37-RC1-Fix-ARM64-SP-alignment-issue-in-JIT.patch
Normal file
96
pcre-8.37-RC1-Fix-ARM64-SP-alignment-issue-in-JIT.patch
Normal file
@ -0,0 +1,96 @@
|
||||
From 4ef0a06d7be50e00918c63c90ad934ba29970c42 Mon Sep 17 00:00:00 2001
|
||||
From: zherczeg <zherczeg@2f5784b3-3f2a-0410-8824-cb99058d5e15>
|
||||
Date: Thu, 23 Apr 2015 13:51:51 +0000
|
||||
Subject: [PATCH] Fix ARM64 SP alignment issue in JIT.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1551 2f5784b3-3f2a-0410-8824-cb99058d5e15
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
|
||||
diff --git a/sljit/sljitNativeARM_64.c b/sljit/sljitNativeARM_64.c
|
||||
index c5251be..b66455f 100644
|
||||
--- a/sljit/sljitNativeARM_64.c
|
||||
+++ b/sljit/sljitNativeARM_64.c
|
||||
@@ -1081,12 +1081,13 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_enter(struct sljit_compiler *compil
|
||||
FAIL_IF(push_inst(compiler, ADDI | RD(SLJIT_SP) | RN(TMP_SP) | (0 << 10)));
|
||||
offs = (local_size - saved_regs_size) << (15 - 3);
|
||||
} else {
|
||||
- compiler->local_size += 2 * sizeof(sljit_sw);
|
||||
- local_size -= saved_regs_size;
|
||||
- saved_regs_size += 2 * sizeof(sljit_sw);
|
||||
- FAIL_IF(push_inst(compiler, STP_PRE | 29 | RT2(TMP_LR)
|
||||
- | RN(TMP_SP) | ((-(saved_regs_size >> 3) & 0x7f) << 15)));
|
||||
- offs = 2 << 15;
|
||||
+ offs = 0 << 15;
|
||||
+ if (saved_regs_size & 0x8) {
|
||||
+ offs = 1 << 15;
|
||||
+ saved_regs_size += sizeof(sljit_sw);
|
||||
+ }
|
||||
+ local_size -= saved_regs_size + SLJIT_LOCALS_OFFSET;
|
||||
+ FAIL_IF(push_inst(compiler, SUBI | RD(TMP_SP) | RN(TMP_SP) | (saved_regs_size << 10)));
|
||||
}
|
||||
|
||||
tmp = saveds < SLJIT_NUMBER_OF_SAVED_REGISTERS ? (SLJIT_S0 + 1 - saveds) : SLJIT_FIRST_SAVED_REG;
|
||||
@@ -1122,6 +1123,8 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_enter(struct sljit_compiler *compil
|
||||
}
|
||||
if (local_size)
|
||||
FAIL_IF(push_inst(compiler, SUBI | RD(TMP_SP) | RN(TMP_SP) | (local_size << 10)));
|
||||
+ FAIL_IF(push_inst(compiler, STP_PRE | 29 | RT2(TMP_LR)
|
||||
+ | RN(TMP_SP) | ((-(16 >> 3) & 0x7f) << 15)));
|
||||
FAIL_IF(push_inst(compiler, ADDI | RD(SLJIT_SP) | RN(TMP_SP) | (0 << 10)));
|
||||
}
|
||||
|
||||
@@ -1145,8 +1148,6 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_set_context(struct sljit_compiler *compi
|
||||
|
||||
local_size += GET_SAVED_REGISTERS_SIZE(scratches, saveds, 0) + SLJIT_LOCALS_OFFSET;
|
||||
local_size = (local_size + 15) & ~0xf;
|
||||
- if (local_size > (63 * sizeof(sljit_sw)))
|
||||
- local_size += 2 * sizeof(sljit_sw);
|
||||
compiler->local_size = local_size;
|
||||
return SLJIT_SUCCESS;
|
||||
}
|
||||
@@ -1167,16 +1168,20 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_return(struct sljit_compiler *compi
|
||||
if (local_size <= (63 * sizeof(sljit_sw)))
|
||||
offs = (local_size - saved_regs_size) << (15 - 3);
|
||||
else {
|
||||
- saved_regs_size += 2 * sizeof(sljit_sw);
|
||||
- local_size -= saved_regs_size;
|
||||
+ FAIL_IF(push_inst(compiler, LDP_PST | 29 | RT2(TMP_LR)
|
||||
+ | RN(TMP_SP) | (((16 >> 3) & 0x7f) << 15)));
|
||||
+ offs = 0 << 15;
|
||||
+ if (saved_regs_size & 0x8) {
|
||||
+ offs = 1 << 15;
|
||||
+ saved_regs_size += sizeof(sljit_sw);
|
||||
+ }
|
||||
+ local_size -= saved_regs_size + SLJIT_LOCALS_OFFSET;
|
||||
if (local_size > 0xfff) {
|
||||
FAIL_IF(push_inst(compiler, ADDI | RD(TMP_SP) | RN(TMP_SP) | ((local_size >> 12) << 10) | (1 << 22)));
|
||||
local_size &= 0xfff;
|
||||
}
|
||||
if (local_size)
|
||||
FAIL_IF(push_inst(compiler, ADDI | RD(TMP_SP) | RN(TMP_SP) | (local_size << 10)));
|
||||
- local_size = saved_regs_size;
|
||||
- offs = 2 << 15;
|
||||
}
|
||||
|
||||
tmp = compiler->saveds < SLJIT_NUMBER_OF_SAVED_REGISTERS ? (SLJIT_S0 + 1 - compiler->saveds) : SLJIT_FIRST_SAVED_REG;
|
||||
@@ -1204,8 +1209,12 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_return(struct sljit_compiler *compi
|
||||
if (prev != -1)
|
||||
FAIL_IF(push_inst(compiler, LDRI | RT(prev) | RN(TMP_SP) | (offs >> 5)));
|
||||
|
||||
- FAIL_IF(push_inst(compiler, LDP_PST | 29 | RT2(TMP_LR)
|
||||
- | RN(TMP_SP) | (((local_size >> 3) & 0x7f) << 15)));
|
||||
+ if (compiler->local_size <= (63 * sizeof(sljit_sw))) {
|
||||
+ FAIL_IF(push_inst(compiler, LDP_PST | 29 | RT2(TMP_LR)
|
||||
+ | RN(TMP_SP) | (((local_size >> 3) & 0x7f) << 15)));
|
||||
+ } else {
|
||||
+ FAIL_IF(push_inst(compiler, ADDI | RD(TMP_SP) | RN(TMP_SP) | (saved_regs_size << 10)));
|
||||
+ }
|
||||
|
||||
FAIL_IF(push_inst(compiler, RET | RN(TMP_LR)));
|
||||
return SLJIT_SUCCESS;
|
||||
--
|
||||
2.1.0
|
||||
|
@ -32,6 +32,8 @@ Patch0: pcre-8.21-multilib.patch
|
||||
Patch1: pcre-8.32-refused_spelling_terminated.patch
|
||||
# Fix static linking, bug #1214494, in upstream after 8.37-RC1
|
||||
Patch2: pcre-8.37-RC1-Fix-static-linking-issue-with-pkg-config.patch
|
||||
# Fix JIT on AArch64, in upstream after 8.37-RC1
|
||||
Patch3: pcre-8.37-RC1-Fix-ARM64-SP-alignment-issue-in-JIT.patch
|
||||
BuildRequires: readline-devel
|
||||
# New libtool to get rid of rpath
|
||||
BuildRequires: autoconf, automake, libtool
|
||||
@ -74,6 +76,7 @@ Utilities demonstrating PCRE capabilities like pcregrep or pcretest.
|
||||
%patch0 -p1 -b .multilib
|
||||
%patch1 -p1 -b .terminated_typos
|
||||
%patch2 -p1 -b .static_linking
|
||||
%patch3 -p1 -b .aarch64_jit
|
||||
# Because of rpath patch
|
||||
libtoolize --copy --force && autoreconf -vif
|
||||
# One contributor's name is non-UTF-8
|
||||
@ -89,7 +92,7 @@ done
|
||||
%global optflags %{optflags} -fno-strict-aliasing
|
||||
%endif
|
||||
%configure \
|
||||
%ifarch aarch64 s390 s390x sparc64 sparcv9
|
||||
%ifarch s390 s390x sparc64 sparcv9
|
||||
--disable-jit \
|
||||
%else
|
||||
--enable-jit \
|
||||
@ -130,7 +133,7 @@ make %{?_smp_mflags} check VERBOSE=yes
|
||||
%{_mandir}/man3/*
|
||||
%{_bindir}/pcre-config
|
||||
%doc doc/*.txt doc/html
|
||||
%doc HACKING
|
||||
%doc HACKING pcredemo.c
|
||||
|
||||
%files static
|
||||
%{_libdir}/*.a
|
||||
@ -146,6 +149,8 @@ make %{?_smp_mflags} check VERBOSE=yes
|
||||
%changelog
|
||||
* Thu Apr 23 2015 Petr Pisar <ppisar@redhat.com> - 8.37-0.2.RC1
|
||||
- Fix static linking (bug #1214494)
|
||||
- Package pcredemo.c as a documentation for pcre-devel
|
||||
- Fix JIT on AArch64
|
||||
|
||||
* Wed Apr 22 2015 Petr Pisar <ppisar@redhat.com> - 8.37-0.1.RC1
|
||||
- 8.37 RC1 bump
|
||||
|
Loading…
Reference in New Issue
Block a user