Browse Source

Build donna32 with -fomit-frame-pointer

Nick Mathewson 11 years ago
parent
commit
97d0872f59
3 changed files with 23 additions and 2 deletions
  1. 6 0
      changes/fomit-frame-pointer
  2. 13 0
      configure.ac
  3. 4 2
      src/common/include.am

+ 6 - 0
changes/fomit-frame-pointer

@@ -0,0 +1,6 @@
+  o Minor features (performance):
+    - If we're using the pure-C 32-bit curve25519_donna implementation
+      of curve25519, build it with the -fomit-frame-pointer option to
+      make it go faster on register-starved hosts. This improves our
+      handshake performance by about 6% on i386 hosts without nacl.
+      Closes ticket 8109.

+ 13 - 0
configure.ac

@@ -582,6 +582,19 @@ if test x$enable_linker_hardening != xno; then
     TOR_CHECK_LDFLAGS(-z relro -z now, "$all_ldflags_for_check", "$all_libs_for_check")
     TOR_CHECK_LDFLAGS(-z relro -z now, "$all_ldflags_for_check", "$all_libs_for_check")
 fi
 fi
 
 
+dnl ------------------------------------------------------
+dnl Now see if we have a -fomit-frame-pointer compiler option.
+
+saved_CFLAGS="$CFLAGS"
+TOR_CHECK_CFLAGS(-fomit-frame-pointer)
+if test "$saved_CFLAGS" != "$CFLAGS"; then
+  F_OMIT_FRAME_POINTER='-fomit-frame-pointer'
+else
+  F_OMIT_FRAME_POINTER=''
+fi
+CFLAGS="$saved_CFLAGS"
+AC_SUBST(F_OMIT_FRAME_POINTER)
+
 dnl ------------------------------------------------------
 dnl ------------------------------------------------------
 dnl Where do you live, libnatpmp?  And how do we call you?
 dnl Where do you live, libnatpmp?  And how do we call you?
 dnl There are no packages for Debian or Redhat as of this patch
 dnl There are no packages for Debian or Redhat as of this patch

+ 4 - 2
src/common/include.am

@@ -14,9 +14,13 @@ else
 libor_extra_source=
 libor_extra_source=
 endif
 endif
 
 
+src_common_libcurve25519_donna_a_CFLAGS=
+
 if BUILD_CURVE25519_DONNA
 if BUILD_CURVE25519_DONNA
 src_common_libcurve25519_donna_a_SOURCES=\
 src_common_libcurve25519_donna_a_SOURCES=\
 	src/ext/curve25519_donna/curve25519-donna.c
 	src/ext/curve25519_donna/curve25519-donna.c
+src_common_libcurve25519_donna_a_CFLAGS+=\
+	@F_OMIT_FRAME_POINTER@
 noinst_LIBRARIES+=src/common/libcurve25519_donna.a
 noinst_LIBRARIES+=src/common/libcurve25519_donna.a
 LIBDONNA=src/common/libcurve25519_donna.a
 LIBDONNA=src/common/libcurve25519_donna.a
 else
 else
@@ -30,8 +34,6 @@ LIBDONNA=
 endif
 endif
 endif
 endif
 
 
-src_common_libcurve25519_donna_a_CFLAGS =
-
 if CURVE25519_ENABLED
 if CURVE25519_ENABLED
 libcrypto_extra_source=src/common/crypto_curve25519.c
 libcrypto_extra_source=src/common/crypto_curve25519.c
 endif
 endif