[Cryptech-Commits] [sw/stm32] branch master updated: Fix optimization settings in HSM's build of libtfm.

git at cryptech.is git at cryptech.is
Sun Jun 18 01:57:00 UTC 2017


This is an automated email from the git hooks/post-receive script.

sra at hactrn.net pushed a commit to branch master
in repository sw/stm32.

The following commit(s) were added to refs/heads/master by this push:
     new 0d33ff8  Fix optimization settings in HSM's build of libtfm.
0d33ff8 is described below

commit 0d33ff82c8b9436d83e6bf20a12de3d53c8ae591
Author: Rob Austein <sra at hactrn.net>
AuthorDate: Sat Jun 17 21:56:02 2017 -0400

    Fix optimization settings in HSM's build of libtfm.
---
 Makefile                  | 11 ++++++-----
 libraries/libtfm/Makefile | 31 +++++++++++++++++++++++++++----
 2 files changed, 33 insertions(+), 9 deletions(-)

diff --git a/Makefile b/Makefile
index d8c9593..e058edd 100644
--- a/Makefile
+++ b/Makefile
@@ -88,13 +88,14 @@ SIZE=$(PREFIX)size
 
 # The Alpha is a development platform, so set GCC optimization to a
 # level suitable for debugging.  Recent versions of GCC have a special
-# optimization setting -Og for exactly this purpose, so we use it, along
-# with the flag to enable gdb symbols.
+# optimization setting -Og for exactly this purpose, so we use it,
+# along with the flag to enable gdb symbols.  Note that some libraries
+# (in particular, libtfm) may need different optimization settings,
+# which is why this needs to remain a separate makefile variable.
 #
-# If you really want optimization without debugging support, try -O2 or
-# (maybe) -O3.
+# If you really want optimization without debugging support, try -O2
+# or -O3.
 
-#STM32_CFLAGS_OPTIMIZATION ?= -O2
 STM32_CFLAGS_OPTIMIZATION ?= -ggdb -Og
 
 # whew, that's a lot of cflags
diff --git a/libraries/libtfm/Makefile b/libraries/libtfm/Makefile
index 6da552d..ceb8541 100644
--- a/libraries/libtfm/Makefile
+++ b/libraries/libtfm/Makefile
@@ -10,10 +10,33 @@ BITS := 8192
 HDR  := ${LIBTFM_SRC}/tomsfastmath/src/headers/tfm.h
 LIB  := tomsfastmath/libtfm.a
 
-#CFLAGS	+= -DTFM_X86
-#CFLAGS	+= -DTFM_NO_ASM
-
-CFLAGS	+= -fPIC -Wall -W -Wshadow -I${LIBTFM_SRC}/tomsfastmath/src/headers -g3 -DFP_MAX_SIZE="(${BITS}*2+(8*DIGIT_BIT))"
+# See sw/thirdparty/libtfm/Makefile for compilation options.  Note
+# that libtfm platform-specific assembly code has opinions on the
+# optimization level (and appears to be best tested with -O3).
+
+# Using $(subst...) here is a kludge.  A cleaner approach might be for
+# sw/stm32/Makefile to build up the non-variant parts of CFLAGS in a
+# different variable before merging the variant and non-variant parts
+# into CFLAGS, which would give us a clean copy of the non-variant
+# parts to use when constructing our own CFLAGS.  Later.
+
+# The ARM assembly code in libtfm still generates a lot of warnings of the form:
+#
+#   warning: matching constraint does not allow a register [enabled by default]
+#
+# This is just a warning, the resulting library appears to work
+# correctly, and the fix appears to require a nasty intervention in
+# the guts of the libtfm assembly code, so we live with the warning
+# for now, at least until we confirm that it hasn't already been fixed
+# in a newer version of libtfm.
+
+STM32_LIBTFM_CFLAGS_OPTIMIZATION := -O3 -funroll-loops -fomit-frame-pointer
+
+CFLAGS := $(subst ${STM32_CFLAGS_OPTIMIZATION},${STM32_LIBTFM_CFLAGS_OPTIMIZATION},${CFLAGS})
+CFLAGS += -DTFM_ARM -Dasm=__asm__ -Wa,-mimplicit-it=thumb
+CFLAGS += -I${LIBTFM_SRC}/tomsfastmath/src/headers
+CFLAGS += -DFP_MAX_SIZE="(${BITS}*2+(8*DIGIT_BIT))"
+CFLAGS += -Wall -W -Wshadow
 
 TARGETS	:= $(notdir ${HDR} ${LIB})
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Commits mailing list