(1) how to hide helper classes (2) KDE_NO_INLINE missing?
Dr. Juergen Pfennig
info at j-pfennig.de
Sun Mar 7 17:11:18 GMT 2004
On Sunday 07 March 2004 14:12, Dirk Mueller wrote:
> The other recommended way is to use a linker version script. There are
> plenty of libraries that could make use of it, the most prominent example
> is libkdeprint, since 98% of its symbols are private API, which is not
> properly namespaced and often causes conflicts with symbols with the same
> name in userspace code. a linker version script avoids unnecessary symbols
> (reduces symbol conflicts and helps relocation speed), but it does not
> reduce the calling overhead, since the compiler doesn't know that a symbol
> isn't going to be exported.
Hi Dirk
thanks for the tip, this was exactly what I have been searching for. For the
kio_ftp.so (which is not a very good example for the technique) the figures
are:
93.137 bytes without version script
90.721 bytes using a linker version script
more infos:
70.800 bytes after "strip --strip-unneeded"
40.000 bytes (approx.) in .text, see objdump
Here is my very simple version script (to demonstrate how simple it is):
{
local:
extern "C++" {
FtpSocket::*;
FtpTextReader::*;
Ftp::ftp*
};
};
My conclusion: about 30% of the installed binary data are symbol tables that
are not needed. Programmers might use version scripts but how does this
affect debugging?
Is it bad to use strip? I could do it for kio_ftp and it still works. Could
packagers do this before they package their stuff?
Jürgen
More information about the kde-core-devel
mailing list