From f835d609b76a48fbf8f872d2a21a49fa677c2a0f Mon Sep 17 00:00:00 2001 From: Warner Losh Date: Wed, 15 Aug 2018 20:31:11 +0000 Subject: [PATCH] stand: Use -Oz/-Os for all loader/stand builds. While we're not super size constrained, the x86 BIOS /boot/loader has to be less than about 520k-530k to be reliable. The LUA loader is at this size today. -Oz saves 15-20% on the size, keeping us safely small enough (comparable to where we were with the 4th loader). This will also help with sjg's work on bringing in bearssl, though we may again be looking for space in the LUA loader. Size table for clang 6.0.0: default -O1 -Os -Oz 4th 442368 417792 389120 376832 lua 524288 479232 446464 430080 Tested by: kevans91@ (ubldr on armv7), dhw@ (loader on amdy64) Differential Revision: https://reviews.freebsd.org/D16724 --- stand/defs.mk | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/stand/defs.mk b/stand/defs.mk index 2f8d97ae0f2c..e446fd0f6c94 100644 --- a/stand/defs.mk +++ b/stand/defs.mk @@ -53,7 +53,12 @@ CFLAGS+= -I${SASRC} -D_STANDALONE CFLAGS+= -I${SYSDIR} # Spike the floating point interfaces CFLAGS+= -Ddouble=jagged-little-pill -Dfloat=floaty-mcfloatface - +# Slim down the image. This saves about 15% in size with clang 6 on x86 +# Our most constrained /boot/loader env is BIOS booting on x86, where +# our text + data + BTX have to fit into 640k below the ISA hole. +# Experience has shown that problems arise between ~520k to ~530k. +CFLAGS.clang+= -Oz +CFLAGS.gcc+= -Os # GELI Support, with backward compat hooks (mostly) .if defined(LOADER_NO_GELI_SUPPORT)