summaryrefslogtreecommitdiffstats
path: root/payloads/coreinfo
diff options
context:
space:
mode:
authorJacob Garber <jgarber1@ualberta.ca>2019-10-02 18:55:23 -0600
committerStefan Reinauer <stefan.reinauer@coreboot.org>2020-11-02 22:10:23 +0000
commit5e6c30bc421757a11ec6f7c1f730bf36c7de1b57 (patch)
treee27ae86da5d144cacfd2c95ad8576ac320183346 /payloads/coreinfo
parent04540f1549a6fea5227ac9538edb8b2643c4d719 (diff)
downloadcoreboot-5e6c30bc421757a11ec6f7c1f730bf36c7de1b57.tar.gz
coreboot-5e6c30bc421757a11ec6f7c1f730bf36c7de1b57.tar.bz2
coreboot-5e6c30bc421757a11ec6f7c1f730bf36c7de1b57.zip
coreinfo: Add support for link time optimization
This introduces a Kconfig option for compiling coreinfo with LTO. This option can be used independently of LTO in libpayload, though will benefit most if that is enabled as well. If both are enabled, the final size of coreinfo.elf is reduced from 95 KiB to 92 KiB. Tested in QEMU and on Thinkpad T500. Change-Id: I6feacdb911b52b946869bff369e03dcf72897c9f Signed-off-by: Jacob Garber <jgarber1@ualberta.ca> Reviewed-on: https://review.coreboot.org/c/coreboot/+/38293 Reviewed-by: Michael Niewöhner <foss@mniewoehner.de> Reviewed-by: Martin Roth <martinroth@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'payloads/coreinfo')
-rw-r--r--payloads/coreinfo/Kconfig9
-rw-r--r--payloads/coreinfo/Makefile6
2 files changed, 14 insertions, 1 deletions
diff --git a/payloads/coreinfo/Kconfig b/payloads/coreinfo/Kconfig
index eafb8793638f..2c1f91c8746c 100644
--- a/payloads/coreinfo/Kconfig
+++ b/payloads/coreinfo/Kconfig
@@ -42,6 +42,15 @@ config PAYLOAD_INFO_VERSION
help
The version number of this payload.
+config LTO
+ bool "Use link time optimization (LTO)"
+ default n
+ help
+ Compile with link time optimization. This can often decrease the
+ final binary size, but may increase compilation time. This option
+ is most effective when LTO is also enabled in libpayload, which
+ is done separately.
+
endmenu
menu "Modules"
diff --git a/payloads/coreinfo/Makefile b/payloads/coreinfo/Makefile
index d842b469c401..cd58f392dde9 100644
--- a/payloads/coreinfo/Makefile
+++ b/payloads/coreinfo/Makefile
@@ -76,9 +76,13 @@ ifneq ($(strip $(HAVE_DOTCONFIG)),)
include $(src)/.config
real-all: $(TARGET)
+ifeq ($(CONFIG_LTO),y)
+CFLAGS += -flto
+endif
+
$(TARGET): $(src)/.config $(coreinfo_obj)/config.h $(OBJS) libpayload
printf " LPCC $(subst $(CURDIR)/,,$(@)) (LINK)\n"
- $(LPCC) -o $@ $(OBJS)
+ $(LPCC) $(CFLAGS) -o $@ $(OBJS)
$(OBJCOPY) --only-keep-debug $@ $(TARGET).debug
$(OBJCOPY) --strip-debug $@
$(OBJCOPY) --add-gnu-debuglink=$(TARGET).debug $@