some symbols are C++11 ABI only
Originally filed in Fedora as https://bugzilla.redhat.com/show_bug.cgi?id=1639656 .
Description of problem:
Some symbols in libglibmm-2.4.so.1
are C++11 ABI only. This makes VMware Horizon Client for Linux application built against non-Fedora build of glibmm24 fail with unresolved symbols when attempting to run on Fedora 28.
Version-Release number of selected component (if applicable):
glibmm24-2.56.0-1.fc28.x86_64
vmware-horizon-client-4.9.0.9507999-1.x86_64
How reproducible:
Always.
Steps to Reproduce:
- Install the latest VMware Horizon Client for Linux (64bit) https://my.vmware.com/web/vmware/details?downloadGroup=CART19FQ3_LIN64_490&productId=578&rPId=25730
- Remove the bundled /usr/lib/vmware/libglibmm-2.4.so.1
- Run
vmware-view
binary
Actual results:
$ vmware-view
/usr/lib/vmware/view/bin/vmware-view-crtbora: symbol lookup error: /usr/lib/vmware/libcrtbora.so: undefined symbol: _ZN4Glib7ustring5beginEv
Expected results:
Application starts successfully like 4.8.0 did.
Additional info:
$ echo "_ZN4Glib7ustring5beginEv" | c++filt
Glib::ustring::begin()
glibmm24 provides this symbol, but in C++11 ABI version only:
$ objdump -T /usr/lib64/libglibmm-2.4.so.1|grep _ZN4Glib7ustring.begin | awk '{ print $NF; }' | c++filt
Glib::ustring::begin[abi:cxx11]()
Only some symbols seem to have cxx11 ABI marker. For example, for ustring
class:
$ objdump -T /usr/lib64/libglibmm-2.4.so.1 | awk '{ print $NF; }' | c++filt | grep ustring|grep cxx11 |wc -l
42
$ objdump -T /usr/lib64/libglibmm-2.4.so.1 | awk '{ print $NF; }' | c++filt | grep ustring|egrep -v cxx11 |wc -l
347
Can this be "fixed" without recompiling the affected software? It's binary only and I have little hope of convincing VMware to provide a build for Fedora only. The closest they claim to support to Fedora is RHEL7, but they bundle a couple of libraries then.