Inadvertent cppuhelper ABI breakage in 4.0, 4.1

Stephan Bergmann sbergman at redhat.com
Tue Oct 1 01:31:47 PDT 2013


Just noticed that due to errors in cppuhelper/source/compat.cxx we 
inadvertently become backwards incompatible in the ABI of the cppuhelper 
dynamic library in LibreOffice 4.0 and 4.1.  However, this only affects 
symbols representing deprecated, unused C++ functions that we 
deliberately removed and for which we left aborting stubs in 
cppuhelper/source/compat.cxx (attempting to not deliberately break the ABI);

> $ nm -D --def lo-3.6/core/solver/unxlngx6/lib/libuno_cppuhelpergcc3.so.3 | grep -vw V | cut -d' ' -f2- | LC_ALL=C sort > syms.3.6
> $ nm -D --def lo-4.0/core/solver/unxlngx6/lib/libuno_cppuhelpergcc3.so.3 | grep -vw V | cut -d' ' -f2- | LC_ALL=C sort > syms.4.0
> $ nm -D --def lo-4.1/core/solver/unxlngx6/lib/libuno_cppuhelpergcc3.so.3 | grep -vw V | cut -d' ' -f2- | LC_ALL=C sort > syms.4.1
> $ nm -D --def lo/core/instdir/unxlngx6/ure/lib/libuno_cppuhelpergcc3.so.3 | grep -vw V | cut -d' ' -f2- | LC_ALL=C sort > syms.4.2
> $ diff syms.3.6 syms.4.0 | grep '<'
> < T _ZN4cppu31createStandardClassWithSequenceERKN3com3sun4star3uno9ReferenceINS2_4lang20XMultiServiceFactoryEEERKN3rtl8OUStringERKNS4_INS2_10reflection9XIdlClassEEERKNS3_8SequenceISB_EE
> $ diff syms.3.6 syms.4.1 | grep '<'
> < T _ZN4cppu20createNestedRegistryERKN3rtl8OUStringE
> < T _ZN4cppu20createSimpleRegistryERKN3rtl8OUStringE
> < T _ZN4cppu28createRegistryServiceFactoryERKN3rtl8OUStringES3_hS3_
> < T _ZN4cppu31createStandardClassWithSequenceERKN3com3sun4star3uno9ReferenceINS2_4lang20XMultiServiceFactoryEEERKN3rtl8OUStringERKNS4_INS2_10reflection9XIdlClassEEERKNS3_8SequenceISB_EE
> < T _ZN4cppu33bootstrap_InitialComponentContextERKN3com3sun4star3uno9ReferenceINS2_8registry15XSimpleRegistryEEERKN3rtl8OUStringE
> $ diff syms.3.6 syms.4.2 | grep '<'
> $

In a sense, it is a good thing that apparently nobody else noticed this.  ;)

I fixed that now on master towards LibreOffice 4.2 with 
<http://cgit.freedesktop.org/libreoffice/core/commit/?id=69f1846f4095a9dc607a0e568980d8625d657c94> 
"All the content of cppuhelper/source/compat.cxx must be in namespace 
cppu" and requested backports to libreoffice-4-0 
(<https://gerrit.libreoffice.org/#/c/6098/>) and libreoffice-4-1 
(<https://gerrit.libreoffice.org/#/c/6097/>) branches.

Stephan


More information about the LibreOffice mailing list