------- You are receiving this mail because: -------
You are on the CC list for the bug.
http://bugs.exim.org/show_bug.cgi?id=1275
Summary: pcrecpp library breaks ABI in 7.0 without soname bump
Product: PCRE
Version: 7.0
Platform: Other
OS/Version: Linux
Status: NEW
Severity: bug
Priority: medium
Component: Code
AssignedTo: ph10@???
ReportedBy: ppisar@???
CC: pcre-dev@???
Hello,
I got a report that libpcrecpp library between releases 6.6 and 7.8 are not
binary compatible. If you compile simple C++ application against pcre < 7.0:
#include <pcrecpp.h>
#include <string>
#include <iostream>
using namespace::std;
int main(int argc, char *argv[])
{
pcrecpp::RE re("h.*o");
return 0;
}
and then try to run it against pcre >= 7.0, you get error from dynamic linker:
./test: symbol lookup error: ./test: undefined symbol:
_ZN7pcrecpp2RE4InitEPKcPKNS_10RE_OptionsE
This is because the signature of RE::Init() method has changed from:
void Init(const char *pattern, const RE_Options* options);
to:
void Init(const string& pattern, const RE_Options* options);
This can be verified by checking the libpcrecpp.so.0 symbol table (nm -DC
libpcrecpp.so.0 | grep -F 'pcrecpp::RE::Init').
But checking the soname reveals both libraries have the same soname.
I propose to bump the soname from libpcrecpp.so.0 to libpcrecpp.so.1.
(Some distributors decided to re-introduce old symbol using a wrapper around
the new RE::Init(), like
<
https://bugs.launchpad.net/ubuntu/+source/pcre3/+bug/130428>.)
--
Configure bugmail:
http://bugs.exim.org/userprefs.cgi?tab=email