Date: Fri, 11 Apr 2003 22:37:53 +0200 From: Gianmarco Giovannelli <gmarco@scotty.masternet.it> To: Leo Bicknell <bicknell@ufp.org>, hackers@freebsd.org Subject: Re: gcc iussue or ... ? Message-ID: <5.2.0.9.2.20030411223601.053eaeb8@194.184.65.7> In-Reply-To: <20030411140738.GA40724@ussenterprise.ufp.org> References: <5.2.0.9.2.20030411082040.02604e90@194.184.65.4> <5.2.0.9.2.20030411082040.02604e90@194.184.65.4>
next in thread | previous in thread | raw e-mail | index | archive | help
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... Thanks for your kind reply. Best Regards, Gianmarco Giovannelli , "Unix expert since yesterday" http://www.gufi.org/~gmarco
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5.2.0.9.2.20030411223601.053eaeb8>