Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 8 Oct 2002 01:00:02 -0700 (PDT)
From:      Bruce Evans <bde@zeta.org.au>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: bin/43810: 'echo' is too big
Message-ID:  <200210080800.g988023c018716@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/43810; it has been noted by GNATS.

From: Bruce Evans <bde@zeta.org.au>
To: Tim Kientzle <kientzle@acm.org>
Cc: freebsd-gnats-submit@FreeBSD.ORG
Subject: Re: bin/43810: 'echo' is too big
Date: Tue, 8 Oct 2002 18:04:44 +1000 (EST)

 On Mon, 7 Oct 2002, Tim Kientzle wrote:
 
 > >Description:
 > Compiled, statically linked, and stripped, 'echo' is
 > over 40k!!  A few space-conscious edits reduce that
 > to just over 5k.
 
 I don't approve of hacking on individual utilities to work around
 bloated libraries, but note that sync(1) is enormously bloated in
 -current and this can be "fixed" by writing it in assembler:
 
 %%%
 /* sync.S */
 
 #include <sys/syscall.h>
 
 	.globl	_start
 _start:
 	movl	$SYS_sync,%eax
 	int	$0x80
 	movl	$SYS_exit,%eax
 	int	$0x80
 %%%
 
 Note that this is fully bug for bug compatibile with sync.c: it has the
 same error checking (none).
 
 sync(1) has been bloated from about 6k (?) in RELENG_4 to 16K in -current.
 This compares unfavourably with the 14 bytes for the above version.  Fixing
 the main causes of sync's bloat in libc only reduced it to 3K (still 224
 times larger than the above).  Most of 13K library debloating for sync only
 helps for rare programs that don't use malloc() or sys_errlist[].  Even
 "main() {}" now uses malloc() because atexit() uses it unconditionally and
 crt1 uses atexit() unconditionally (to do nothing for "main() {}").  This
 is recent bloat.  sys_errlist[] is always used for stupider reasons
 (because syscalls reference errno, and sys_errlist[] in in the same
 file as errno).  This bloat came with elf.  errno is in crt0 for aout.
 
 Bruce
 

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200210080800.g988023c018716>