Jacob Garber has uploaded this change for review.

View Change

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 125K to 122K.

Change-Id: I6feacdb911b52b946869bff369e03dcf72897c9f
Signed-off-by: Jacob Garber <jgarber1@ualberta.ca>
---
M payloads/coreinfo/Kconfig
M payloads/coreinfo/Makefile
2 files changed, 12 insertions(+), 1 deletion(-)

git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/38293/1
diff --git a/payloads/coreinfo/Kconfig b/payloads/coreinfo/Kconfig
index fd4c1b4..5fb17bb 100644
--- a/payloads/coreinfo/Kconfig
+++ b/payloads/coreinfo/Kconfig
@@ -56,6 +56,13 @@
help
The version number of this payload.

+config LTO
+ bool "Use link time optimization"
+ default n
+ help
+ Compile with link time optimization. This can often decrease the
+ final binary size, but may increase compilation time.
+
endmenu

menu "Modules"
diff --git a/payloads/coreinfo/Makefile b/payloads/coreinfo/Makefile
index 34c45d9..6452c00 100644
--- a/payloads/coreinfo/Makefile
+++ b/payloads/coreinfo/Makefile
@@ -90,9 +90,13 @@
include $(src)/.config
real-all: $(TARGET)

+ifeq ($(CONFIG_LTO),y)
+CFLAGS += -flto=$(CPUS) -fuse-linker-plugin -fno-fat-lto-objects
+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 $@

To view, visit change 38293. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I6feacdb911b52b946869bff369e03dcf72897c9f
Gerrit-Change-Number: 38293
Gerrit-PatchSet: 1
Gerrit-Owner: Jacob Garber <jgarber1@ualberta.ca>
Gerrit-MessageType: newchange