forked from pool/pcre2
Accepting request 885691 from devel:libraries:c_c++
OBS-URL: https://build.opensuse.org/request/show/885691 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/pcre2?expand=0&rev=20
This commit is contained in:
parent
b8312cc35f
commit
0050c12a9e
44
pcre2-symbol-clash.patch
Normal file
44
pcre2-symbol-clash.patch
Normal file
@ -0,0 +1,44 @@
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: 2021-04-14 11:42:14.750408048
|
||||
|
||||
If libpcre2-posix.so makes it into a process image somehow before
|
||||
libc.so (which is easy: gcc something.c -lpcre2-posix), pcre2's
|
||||
"regcomp" symbol wins a race over libc's "regcomp" symbol. There are
|
||||
likely more situations as well, because libc's "regcomp" is _also_
|
||||
marked as weak. Anyway, because the functions two are not
|
||||
behavior-compatible, problems arise.
|
||||
|
||||
To stay ABI compatible, we could make a new library without regcomp etc.,
|
||||
and edit the .pc file to point to the new library, but that would not
|
||||
capture the case someone uses plain gcc -l without pkg-config.
|
||||
|
||||
Since regcomp is "#defined" to pcre2_regcomp, any programs that were
|
||||
source-compiled are fine. Removing the reg* symbols from the library
|
||||
hence only breaks the case of dlsym(libpcre2-posix, "regcomp"),
|
||||
which, I will argue, is an absolute niche use of the PCRE libraries
|
||||
and something we are willing to break.
|
||||
|
||||
---
|
||||
src/pcre2posix.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
Index: pcre2-10.36/src/pcre2posix.c
|
||||
===================================================================
|
||||
--- pcre2-10.36.orig/src/pcre2posix.c
|
||||
+++ pcre2-10.36/src/pcre2posix.c
|
||||
@@ -185,6 +185,7 @@ This also ensures that the POSIX names a
|
||||
include pcre2posix.h. It is vital to #undef the macro definitions from
|
||||
pcre2posix.h! */
|
||||
|
||||
+#if 0
|
||||
#undef regerror
|
||||
PCRE2POSIX_EXP_DECL size_t regerror(int, const regex_t *, char *, size_t);
|
||||
PCRE2POSIX_EXP_DEFN size_t PCRE2_CALL_CONVENTION
|
||||
@@ -218,6 +219,7 @@ regexec(const regex_t *preg, const char
|
||||
{
|
||||
return pcre2_regexec(preg, string, nmatch, pmatch, eflags);
|
||||
}
|
||||
+#endif
|
||||
|
||||
|
||||
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Apr 14 09:57:53 UTC 2021 - Jan Engelhardt <jengelh@inai.de>
|
||||
|
||||
- Remove regcomp, regexec etc. from libpcre2-posix.
|
||||
(Add pcre2-symbol-clash.patch)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Dec 5 12:41:55 UTC 2020 - Andreas Stieger <andreas.stieger@gmx.de>
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package pcre2
|
||||
#
|
||||
# Copyright (c) 2020 SUSE LLC
|
||||
# Copyright (c) 2021 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -31,6 +31,7 @@ Source3: %{name}.keyring
|
||||
Source4: baselibs.conf
|
||||
#PATCH-FIX-OPENSUSE tchvatal@suse.cz upstream thinks it is good idea to use rpath, taken from RH
|
||||
Patch1: pcre2-10.10-multilib.patch
|
||||
Patch2: pcre2-symbol-clash.patch
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: automake
|
||||
BuildRequires: gcc-c++
|
||||
@ -164,8 +165,7 @@ PCRE2 is a re-working of the original PCRE library to provide an entirely new
|
||||
API.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch1 -p1
|
||||
%autosetup -p1
|
||||
|
||||
%build
|
||||
%define _lto_cflags %{nil}
|
||||
|
Loading…
Reference in New Issue
Block a user