Debian is gearing up to moving to gcc3.2 as its compiler on all
architectures, and Jan & I have attempted to build OOo using gcc 3.2. I
have submitted issue #6927 to add support in lbnames.h.
The next problem is a little more complicated. It appears that a gcc bugfix
causes the build to break, due to the way in which runtime type information
is generated.
If RTTI is enabled, the compiler should emit type information for a given
class only if the virtual table can be emitted, i.e. all the declared
virtual functions have also been defined. Given the following test file:
test.cxx -----------------
class test1 {
public:
virtual ~test1();
};
class test2 {
public:
virtual ~test2() {};
};
void x() {
test1 t1;
test2 t2;
}
-----------------------------
Class test1 does not have a definition for its destructor, so no type
information should be emitted. Class test2 does have a definition for its
virtual desstructor, so type information is emitted:
$ g++ -c test.cxx ; nm -C test.o | grep typeinfo
00000000 V typeinfo for test2
00000000 V typeinfo name for test2
However, a compiler bug in g++ < 3.2 was causing RTTI information to be
emitted for such a class. I discussed this on the Debian gcc list, and they
pointed out the lack of a definition for the class:
http://lists.debian.org/debian-gcc/2002/debian-gcc-200208/msg00029.html
The class ucb::ContentProviderImplHelper was declared but not defined during
the compile of xmlhelp/source/cxxhelp/provider/provider.cxx. This happened
to hide the fact that libucphelp1.so is built with RTTI yet
libucbhelper1gcc3.so (which defines ucb::ContentProviderImplHelper) is built
without RTTI.
gcc 3.2 fixes the compiler bug, and now there is no typeinfo generated for
ContentProviderImplHelper, and the build fails:
Checking DLL ../unxlngi4.pro/lib/libucpchelp1.so ...: ERROR:
../unxlngi4.pro/lib/libucpchelp1.so: undefined symbol:
_ZTIN3ucb25ContentProviderImplHelperE
So, at least the library that defines ucb::ContentProviderImplHelper
(libucbhelper1gcc3.so) needs to be compiled with RTTI, or libucpchelp1.so
needs to be compiled without RTTI. For now, I have removed -fno-rtti from
the CXXFLAGS variable in solenv/inc/unxlngi4.mk, which enables RTTI for the
complete build. Now the build is able to continue past xmlhelp, but I
don't know if that is the best way to solve the problem. Is there a reason
not to enable RTTI for the complete build?
Chris
Attachment:
pgpY2j8ZhV6cd.pgp
Description: PGP signature