This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: trimming libgcj symbol exports


Anthony Green wrote:

Has anybody looked at using ld version scripts to trim down the number
of symbols we export from libgcj.so?

I suspect the attached version script can trim on the order of 15,000
symbols from the .so.  Unfortunately it causes ld to segv on my FC4
machine.

The idea here is to trim out symbols from boehm-gc, libffi, internal
gnu.* packages, zlib, etc. There are a lot of them!



I havn't tried ld scripts, but removing the public symbols should reduce the (stripped) binary size considerably and would probably speed up loading due to less time spent in the dynamic linker. I would suspect that symbols exported by boehm-gc, libffi, etc would be pretty insignificant compared to those generated by GCJ for compiled Java code, however.


With the BC-ABI, we don't actually need the vast majority of the public symbols that GCJ defines for Java code. But unfortunately, because g++ does not support BC-ABI calls from CNI (implementing this looks like quite a bit of work), we have not been able to get rid of them yet.

However, it now occurs to me that we could switch off the public symbols by default for -findirect-dispatch, and add an -fcni option that attempts to retain public symbols/CNI compatibility. Then again, CNI is somewhat broken against the BC-ABI anyway, so perhaps we shouldn't even bother with the -fcni option.

Bryce


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]