Subject: Re: git binary size...

From: Andreas Ericsson <[email-masked]>
Date: Thu, 12 Jan 2006 14:49:36 +0100

Coywolf Qi Hunt wrote:
> 2006/1/12, Linus Torvalds <[email-masked]>:
> 
>>
>>On Wed, 11 Jan 2006, Andreas Ericsson wrote:
>>
>>>strip:
>>>      strip $(PROGRAMS)
>>>
>>>install: strip
>>
>>Well, that ends up shaving some more from the binaries, but at a much
>>bigger cost than just removing "-g".
>>
>>With stripped binaries, you can't really do _anything_. You get a
>>core-file, and you're screwed.
> 
> 
> Are you sure?
> 
> gemini:~> file `which mke2fs`
> /sbin/mke2fs: ELF 32-bit LSB executable, Intel 80386, version 1
> (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs),
> stripped
> 
> gemini:~> file /lib/libext2fs.so.2.4
> /lib/libext2fs.so.2.4: ELF 32-bit LSB shared object, Intel 80386,
> version 1 (SYSV), stripped
> 
> (gdb) bt
> #0  0xb7f16445 in ext2fs_mark_generic_bitmap () from /lib/libext2fs.so.2
> #1  0xb7f110ed in ext2fs_reserve_super_and_bgd () from /lib/libext2fs.so.2
> #2  0xb7f18353 in ext2fs_initialize () from /lib/libext2fs.so.2
> #3  0x0804b461 in ?? ()
> #4  0xbf84b9ad in ?? ()
> #5  0x00000000 in ?? ()
> 
> So with stripped binary, I still get the backtrace to locate the buggy
> function. IMO, Debian packages are build with -g.
> 

No, you don't. The last three stack-frames resolve to no symbol. 
Libraries always contain symbol names. You wouldn't be able to use them 
if they didn't, because the dynamic linker uses those symbols to look up 
the address of the function to call.

> 
> To make git not tight to Linux, but cross platform, consider autoconf.
> 

git is already fairly portable without the autoconf hackery. It's easy 
enough to move some of the conditional stuff out of the Makefile without 
autoconf, but it would still require GNU Make, so there's no real point 
in doing so.

-- 
Andreas Ericsson                   [email-masked]
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231