[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: Re: (1) how to hide helper classes (2) KDE_NO_INLINE missing?
From: "Dr. Juergen Pfennig" <info () j-pfennig ! de>
Date: 2004-03-07 17:11:18
Message-ID: 200403071811.18447.info () j-pfennig ! de
[Download RAW message or body]
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
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic