All of lore.kernel.org
 help / color / mirror / Atom feed
* Kernel binary size changes in dependence of the gcc version
@ 2006-06-08 10:13 Thiemo Seufer
  0 siblings, 0 replies; only message in thread
From: Thiemo Seufer @ 2006-06-08 10:13 UTC (permalink / raw)
  To: linux-mips; +Cc: ralf

Hello All,

I wondered how the various gcc versions influence the size of the
kernel binary, and what difference a size-optimised build makes.

The appended overview is for a Broadcom/Sibyte kernel with some
amount of drivers built in, so the absolute numbers aren't that
relevant. The configuration was always the same except for
CONFIG_64BIT and CONFIG_CC_OPTIMIZE_FOR_SIZE.


Thiemo


32 bit:
-------

Kernel 2.6.17-rc5 Sibyte SWARM 32 bit, default compiler options:

   text	   data	    bss	    dec	    hex	filename
3500246	 319636	 172080	3991962	 3ce99a	vmlinux   # gcc-3.3 (3.3.6-13)
3440510	 291012	 172080	3903602	 3b9072 vmlinux   # gcc-3.4 (3.4.6-1)
3482825	 291140	 172080	3946045	 3c363d vmlinux   # gcc-4.0 (4.0.3-3)
3452750	 288164	 172080	3912994	 3bb522 vmlinux   # gcc-4.1 (4.1.0-4)
3455566	 288164	 172080	3915810	 3bc022 vmlinux   # gcc-snapshot (20060530-1)


Kernel 2.6.17-rc5 Sibyte SWARM 32 bit, size optimized build:

   text	   data	    bss	    dec	    hex	filename
3423398	 319636	 172080	3915114	 3bbd6a	vmlinux   # gcc-3.3 (3.3.6-13)
3224502	 291012	 172080	3687594	 3844aa	vmlinux   # gcc-3.4 (3.4.6-1)

Newer gcc versions fail to build the 2.6.17-rc5 32 bit kernel with 
-Os due to unresolved references to libgcc. With a kernel patch
providing libgcc functions, and a 2.6.17-rc6 snapshot:

   text	   data	    bss	    dec	    hex	filename
3415310	 319620	 172080	3907010	 3b9dc2	vmlinux   # gcc-3.3 (3.3.6-13)
3215829	 290996	 172080	3678905	 3822b9	vmlinux   # gcc-3.4 (3.4.6-1)
3175683	 290404	 172080	3638167	 378397	vmlinux   # gcc-4.0 (4.0.3-3)
3184250	 287348	 172080	3643678	 37991e	vmlinux   # gcc-4.1 (4.1.0-4)
3198118	 287348	 172080	3657546	 37cf4a	vmlinux   # gcc-snapshot (20060530-1)


64 bit:
-------

The difference in size from gcc-3.4 to gcc-4.0 for 64 bit kernels is to
a large part caused by the use of -msym32, which is only available
since gcc-4.0.

Kernel 2.6.17-rc5 Sibyte SWARM 64 bit, default compiler options:

   text	   data	    bss	    dec	    hex	filename
4240626	 506688	 258096	5005410	 4c6062	vmlinux   # gcc-3.3 (3.3.6-13)
4183387	 469024	 258096	4910507	 4aedab	vmlinux   # gcc-3.4 (3.4.6-1)
3740658	 469272	 258096	4468026	 442d3a	vmlinux   # gcc-4.0 (4.0.3-3)
3701722	 463904	 258096	4423722	 43802a	vmlinux   # gcc-4.1 (4.1.0-4)
3703474	 463904	 258096	4425474	 438702	vmlinux   # gcc-snapshot (20060530-1)


Kernel 2.6.17-rc5 Sibyte SWARM 64 bit, size optimized build:

   text	   data	    bss	    dec	    hex	filename
4110677	 506688	 258096	4875461	 4a64c5	vmlinux   # gcc-3.3 (3.3.6-13)
3912126	 469024	 258096	4639246	 46ca0e	vmlinux   # gcc-3.4 (3.4.6-1)
3384418	 468248	 258096	4110762	 3eb9aa	vmlinux   # gcc-4.0 (4.0.3-3)
3389841	 462880	 258096	4110817	 3eb9e1	vmlinux   # gcc-4.1 (4.1.0-4)
3401534	 462880	 258096	4122510	 3ee78e	vmlinux   # gcc-snapshot (20060530-1)

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-06-08 10:14 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-06-08 10:13 Kernel binary size changes in dependence of the gcc version Thiemo Seufer

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.