This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/43601] Enormous increase in DLL object files size in 4.5
- From: "vz-gcc at zeitlins dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sun, 26 Sep 2010 22:09:39 +0000
- Subject: [Bug c++/43601] Enormous increase in DLL object files size in 4.5
- Auto-submitted: auto-generated
- References: <bug-43601-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43601
--- Comment #29 from Vadim Zeitlin <vz-gcc at zeitlins dot org> 2010-09-26 22:09:16 UTC ---
Thanks Cesar for your analysis, I was doing the same thing but you beat me to
it. Anyhow, I can confirm your results, i.e. that the increase in size is first
and foremost due to the inflation of the total number of sections (which is
multiplied roughly by 10) as well as the changes to the .eh_frame and .drectve
sections sizes.
I compared the object files for 4.4, 4.5 and 4.5 when using auto-export, i.e.
not using "__attribute__((dllexport))" on exported classes declarations. The
typical results (the exact numbers are, of course, different for each object
file but the trend is the same) are:
4.4 4.5 4.5-autoexp
------------------------------------------
file size 151K 1.2M 87K
# sections 371 3145 85
.text size 16888 17264 24856
.eh_frame 4004 64424 16
.drectve 8620 113232 0
The difference in number of sections seems to correspond to the fact that 4.5
now generates one section per method of any exported class used by the object
file instead of just one section per class as in 4.4.
Please let me know if I can provide any other information.