Date: Fri, 11 Apr 2003 23:04:38 -0600 (MDT) From: "M. Warner Losh" <imp@bsdimp.com> To: gmarco@scotty.masternet.it Cc: hackers@freebsd.org Subject: Re: gcc iussue or ... ? Message-ID: <20030411.230438.53067150.imp@bsdimp.com> In-Reply-To: <5.2.0.9.2.20030411223601.053eaeb8@194.184.65.7> References: <5.2.0.9.2.20030411082040.02604e90@194.184.65.4> <20030411140738.GA40724@ussenterprise.ufp.org> <5.2.0.9.2.20030411223601.053eaeb8@194.184.65.7>
next in thread | previous in thread | raw e-mail | index | archive | help
In message: <5.2.0.9.2.20030411223601.053eaeb8@194.184.65.7> Gianmarco Giovannelli <gmarco@scotty.masternet.it> writes: : At 11/04/2003, Leo Bicknell wrote: : >In a message written on Fri, Apr 11, 2003 at 08:41:37AM +0200, Gianmarco : >Giovannelli wrote: : > > The problem is that if I compile it under FreeBSD it is a binary of 19M, : > > while on linux (debian 3.0), same Makefile, is only 2MB. FreeBSD 5.0 and : > > OpenBSD 3.1 produce the (about) 19M file. : > : >Well, the problem location is fairly obvious: : > : >% ls -lags | sort -nr | more : >19416 -rwxr-xr-x 1 bicknell wheel 19854956 Apr 11 09:49 lonewolf* : >16912 -rw-r--r-- 1 bicknell wheel 17286792 Apr 11 09:42 globals.o : > 368 -rw-r--r-- 1 bicknell wheel 365140 Apr 11 09:46 npcinfo.o : > 304 -rw-r--r-- 1 bicknell wheel 301100 Apr 11 09:47 targeting.o : > 272 -rw-r--r-- 1 bicknell wheel 267648 Apr 11 09:48 virtues.o : >[etc] : > : >A quick nm --size-sort globals.o | tail shows: : > : >00009b80 D ownsp : >00009b80 D spawnsp : >000138a0 D location : >00111020 D region : >002180a0 D buffer : >002190a0 D PacketFetcher : >01061710 D PacketSender : >01061778 D cwrap : >010617f0 D w_anim : >01061850 D wp_version : > : >buffer, for instance appears to be 129 * 17000 = 2193000, a 2M : >buffer, and nm shows 2195616 bytes. : > : >I can't track down quickly why the others are so big, but I suspect you : >may be making them bigger than you expected. It could also be that : >FreeBSD puts some types of globals in the executable to load, where as : >Linux puts them in some zero filled pages or something, I don't know : >enough to know for sure. Either way, you probably want to make the : >data smaller, or dynamically allocate it to make sure you don't run : >into this on any platform. : : The problem is that both the system start from _equals_ conditions (gcc : version, Makefiles and so on). : I'd like to understand way they generate different (and very different) exe : file... Since you haven't given us the output of the make build, we can't tell that for sure. Equal makefiles might give slightly different results. Also, the items in 'D', why are they in data section rather than bss section. That's likely a large part of the problem. Can you share the definition of buffer? Warner
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030411.230438.53067150.imp>