summaryrefslogtreecommitdiffstats
path: root/scripts/Makefile.lib
diff options
context:
space:
mode:
authorMarek BehĂșn <marek.behun@nic.cz>2021-05-20 13:24:03 +0200
committerTom Rini <trini@konsulko.com>2021-05-24 14:21:30 -0400
commitc1094987d1dc4701646c5f3aa254e7a92a02d305 (patch)
tree5d2bbcee39b8adff66ac767d8bde1bcb6283dfe7 /scripts/Makefile.lib
parent958f2e57eff72b5156f7b08b9c1415fb7e12833d (diff)
downloadu-boot-c1094987d1dc4701646c5f3aa254e7a92a02d305.tar.gz
u-boot-c1094987d1dc4701646c5f3aa254e7a92a02d305.tar.xz
u-boot-c1094987d1dc4701646c5f3aa254e7a92a02d305.zip
build: support building with Link Time Optimizations
Add plumbing for building U-Boot with Link Time Optimizations. When building with LTO, $(PLATFORM_LIBS) has to be in --whole-archive / --no-whole-archive group, otherwise some functions declared in assembly may not be resolved and linking may fail. Note: clang may throw away linker list symbols it thinks are unused when compiling with LTO. To force these symbols to be included, we refer to them via the __ADDRESSABLE macro in a C file generated from compiled built-in.o files before linking. Signed-off-by: Marek BehĂșn <marek.behun@nic.cz> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'scripts/Makefile.lib')
-rw-r--r--scripts/Makefile.lib3
1 files changed, 3 insertions, 0 deletions
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 78543c6dd1..78bbebe7e9 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -419,6 +419,9 @@ $(obj)/%_efi.so: $(obj)/%.o $(obj)/efi_crt0.o $(obj)/efi_reloc.o $(obj)/efi_free
targets += $(obj)/efi_crt0.o $(obj)/efi_reloc.o $(obj)/efi_freestanding.o
+CFLAGS_REMOVE_efi_reloc.o := $(LTO_CFLAGS)
+CFLAGS_REMOVE_efi_freestanding.o := $(LTO_CFLAGS)
+
# ACPI
# ---------------------------------------------------------------------------
#