From 6994f6a8c5a6facb247369a99e98cb2814755c8f Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Wed, 5 Sep 2012 14:51:31 +0200 Subject: [PATCH] Fix binary size for 64bit Every 64-bit binary is effectively 4M too big currently [0]. The GNU linker ld aligns the text section of the binary to the maximum page size. On i386 the default section alignment is fixed typically to 4K. Avoid wasting mainly 4M on x86_64 by telling the linker the max page size to be 4K. [0] http://sourceware.org/ml/binutils/2009-04/msg00099.html --- base/mk/spec-x86_64.mk | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/base/mk/spec-x86_64.mk b/base/mk/spec-x86_64.mk index 6cd035baf..9099190c9 100644 --- a/base/mk/spec-x86_64.mk +++ b/base/mk/spec-x86_64.mk @@ -11,4 +11,14 @@ REP_INC_DIR += include/x86_64 CC_MARCH ?= -m64 +# +# Avoid wasting almost 4 MiB by telling the linker that the max page size is +# 4K. Otherwise, the linker would align the text segment to a 4M boundary, +# effectively adding 4M of zeros to each binary. +# +# See http://sourceware.org/ml/binutils/2009-04/msg00099.html +# +LD_MARCH ?= -melf_x86_64 -z max-page-size=0x1000 + + include $(call select_from_repositories,mk/spec-64bit.mk)