From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <37fc4a190bab010e45ea64a0823cbb29@terzarima.net> To: 9fans@cse.psu.edu Subject: Re: [9fans] Install from CD fails From: Charles Forsyth Date: Wed, 19 Apr 2006 14:21:10 +0100 In-Reply-To: <20ec6e34bce3bc6eea70143d80cc3c38@hamnavoe.com> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Topicbox-Message-UUID: 3f2d861a-ead1-11e9-9d60-3106f5b1d025 > If I was looking for ways to reduce space I would probably > start with vlrt.c and pool.c the quick linker changes i did this morning discard various commonly unused functions in vlrt.c, and sometimes in pool.c. it saves 12% on text and data for something simple like cat.c but as one might expect it saves less and less as a percentage of bigger things like plan 9 and inferno kernels (eg 1.4% or so). i haven't tabulated savings overall. a few represent obsolete things that could simply be removed, but in quite a few cases (eg, atexit and canlock below) the relevant source files have several functions (often to use internal functions and data marked static) and in any given load some of them aren't used (eg, rc4skip and rc4back in rc4.c). on the other hand, partly because of the simple-minded implementation, it adds a bit to the linking time when used, notably on the kernels. here's the list for cat.c atexit unused atexitdont unused canlock unused atoi unused _d2v unused _f2v unused _v2d unused _v2f unused vneg unused _divv unused _modv unused _rshav unused _rshlv unused _lshv unused _andv unused _orv unused _xorv unused _vpp unused _vmm unused _ppv unused _mmv unused _p2v unused _sl2v unused _ul2v unused _si2v unused _ui2v unused _sh2v unused _uh2v unused _sc2v unused _uc2v unused _v2sc unused _v2uc unused _v2sh unused _v2uh unused _v2sl unused _v2ul unused _v2si unused _v2ui unused _testv unused _eqv unused _nev unused _ltv unused _lev unused _gtv unused _gev unused _lov unused _lsv unused _hiv unused _hsv unused runenlen unused fmtfdflush unused fmtinstall unused _mulv unused _addv unused toupper unused modf unused muldiv unused $0.0 unused (data) but that amounts to only 2844 bytes overall of the original 23110. by the time you get to the kernels, you're talking real savings of, ooh, 30k out of 1.7mbytes (text+data+bss). it's slightly more helpful with inferno than plan 9, because the kernel includes more library code, and sometimes that includes functions that could be called to dump data structures when debugging but aren't referenced normally.