Bugzilla will be upgraded to version 5.0. The upgrade date is tentatively scheduled for 2 December 2018, pending final testing and feedback.
Bug 1217111 - add -pthread to pkg-config
add -pthread to pkg-config
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: pcre (Show other bugs)
7.1
Unspecified Unspecified
unspecified Severity high
: rc
: ---
Assigned To: Petr Pisar
Jan Kepler
http://bugs.exim.org/show_bug.cgi?id=...
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2015-04-29 10:57 EDT by Petr Pisar
Modified: 2015-11-19 00:15 EST (History)
3 users (show)

See Also:
Fixed In Version: pcre-8.32-15.el7
Doc Type: Bug Fix
Doc Text:
Linking an application to the static PCRE library using the libpcre module for pkg-config was failing due to missing pthread symbols. The pkg-config modules for PCRE libraries have been updated to declare private libraries properly, and the "pkg-config --static --libs libpcre" command can now be used to link the static pcre library to an application.
Story Points: ---
Clone Of: 1214494
Environment:
Last Closed: 2015-11-19 00:15:22 EST
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
Upstream fix (1.61 KB, patch)
2015-04-29 10:57 EDT, Petr Pisar
no flags Details | Diff


External Trackers
Tracker ID Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2015:2142 normal SHIPPED_LIVE pcre bug fix update 2015-11-19 03:16:47 EST

  None (edit)
Description Petr Pisar 2015-04-29 10:57:17 EDT
Created attachment 1020220 [details]
Upstream fix

+++ This bug was initially created as a clone of Bug #1214494 +++

+++ This bug was initially created as a clone of Bug #1185266 +++

pcre.pc is incomplete and static builds against pcre are broken

Actual results:

$ pkg-config --static --libs libpcre
-lpcre

$ cat test_pcre.c 
#include <pcre.h>

int main() {
        pcre_jit_free_unused_memory();
        return 0;
}

$ gcc -static test_pcre.c `pkg-config --static --libs libpcre`               
/usr/lib/gcc/x86_64-redhat-linux/5.0.1/../../../../lib64/libpcre.a(libpcre_la-pcre_jit_compile.o): In function `sljit_generate_code':
(.text+0x6b1): undefined reference to `pthread_mutex_lock'
/usr/lib/gcc/x86_64-redhat-linux/5.0.1/../../../../lib64/libpcre.a(libpcre_la-pcre_jit_compile.o): In function `sljit_generate_code':
(.text+0x7a6): undefined reference to `pthread_mutex_unlock'
/usr/lib/gcc/x86_64-redhat-linux/5.0.1/../../../../lib64/libpcre.a(libpcre_la-pcre_jit_compile.o): In function `sljit_generate_code':
(.text+0xb31): undefined reference to `pthread_mutex_unlock'
...


Expected results:

$ pkg-config --static --libs libpcre
-lpcre -pthread 

$ gcc -static test_pcre.c `pkg-config --static --libs libpcre`

$

--- Additional comment from Petr Pisar on 2015-04-23 12:44:02 GMT ---

This patch fixes it.

The `-static' gcc patch forces searching for static libpthread library which is provided by glibc-static. I could add glibc-static to run-time dependencies of pcre-static, however it's not really necessary because one can link against /usr/lib64/libpcre.a directly without the -static option (and pkg-config), and then the glibc-static package is not needed. Also with -static, one needs static libc because of the main program entry point. So the dependency can bee seen as a dependency of the compiled program, not pcre-static. I'm not sure about the dependency.

[...]
----

pcre-static-8.32-14.el7.x86_64 is affected.

You can use this code to compile because the original example uses a symbol not yet provided by this PCRE version:

#include <pcre.h>
int main() {
        pcre_jit_stack *stack;
        stack = pcre_jit_stack_alloc(64, 64);
        pcre_jit_stack_free(stack);
        return 0;
}
Comment 7 errata-xmlrpc 2015-11-19 00:15:22 EST
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2015-2142.html

Note You need to log in before you can comment on or make changes to this bug.