summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--board/cr50/build.mk11
1 files changed, 10 insertions, 1 deletions
diff --git a/board/cr50/build.mk b/board/cr50/build.mk
index 0c2b9778e7..b75d867421 100644
--- a/board/cr50/build.mk
+++ b/board/cr50/build.mk
@@ -135,10 +135,19 @@ RW_BD_OUT=$(out)/RW/$(BDIR)
FIPS_MODULE=dcrypto/fips_module.o
FIPS_LD_SCRIPT=$(BDIR)/dcrypto/fips_module.ld
RW_FIPS_OBJS=$(patsubst %.o, $(RW_BD_OUT)/%.o, $(fips-y))
+$(RW_FIPS_OBJS): CFLAGS += -frandom-seed=0 -fno-fat-lto-objects
+
+# Note, since FIPS object files are compiled with lto, actual compilation
+# and code optimization take place during link time.
+# Consider -ffile-prefix-map=old_path=new_path if needed
+FIPS_CFLAGS = $(CFLAGS) -frandom-seed=0 -flto=1 -flto-partition=1to1 -fipa-pta\
+ -fvisibility=hidden -fipa-cp-clone -fweb -ftree-partial-pre\
+ -flive-range-shrinkage -fgcse-after-reload -fgcse-sm -fgcse-las -fivopts\
+ -fpredictive-commoning -freorder-blocks-algorithm=stc
$(RW_BD_OUT)/$(FIPS_MODULE): $(RW_FIPS_OBJS)
@echo " LD $(notdir $@)"
- $(Q)$(CC) $(CFLAGS) --static -Wl,--relocatable\
+ $(Q)$(CC) $(FIPS_CFLAGS) --static -Wl,--relocatable\
-Wl,-T $(FIPS_LD_SCRIPT) -Wl,-Map=$@.map -o $@ $^
$(Q)$(OBJDUMP) -th $@ > $@.sym