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: Why is .bss so big?


Anthony Green wrote:
I've just had a quick look at some .jar.so files and I don't understand
something.

For instance, if I look at gnu-crypto-2.0.1.jar.so, built with gcj 4.1
in FC rawhide, size tells me that .bss is 55136 bytes.

However, objdump only tells me about 312 symbols in .bss, virtually all
of which are only 4 bytes large.  There are only two symbols larger, and
they're both 8 bytes.

So why is .bss so large?


All uninitialized static variables of fundamental type are in .bss. I think all static references (initialized or not) are there also. Only non-private statics will have exported symbols in the final .so, so if there were a lot of private statics, they would not be shown by objdump.


I would try compiling the jar file with -S -funit-at-a-time and look at the assembly language to see if there are things in .bss that are not static variables. For some simple classes I have been looking at, only static variables end up in .bss.

You could also try examining the .so with readelf -e and see if there are sections other than .bss of type NOBITS that would be reported as .bss by size.


David Daney




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