summaryrefslogtreecommitdiff
path: root/Kbuild
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 /Kbuild
parent958f2e57eff72b5156f7b08b9c1415fb7e12833d (diff)
downloadu-boot-c1094987d1dc4701646c5f3aa254e7a92a02d305.tar.gz
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 'Kbuild')
-rw-r--r--Kbuild2
1 files changed, 2 insertions, 0 deletions
diff --git a/Kbuild b/Kbuild
index 1eac091594..bf52e54051 100644
--- a/Kbuild
+++ b/Kbuild
@@ -10,6 +10,8 @@ generic-offsets-file := include/generated/generic-asm-offsets.h
always := $(generic-offsets-file)
targets := lib/asm-offsets.s
+CFLAGS_REMOVE_asm-offsets.o := $(LTO_CFLAGS)
+
$(obj)/$(generic-offsets-file): $(obj)/lib/asm-offsets.s FORCE
$(call filechk,offsets,__GENERIC_ASM_OFFSETS_H__)