浏览代码

Merge remote-tracking branch 'public/feature8109'

Nick Mathewson 12 年之前
父节点
当前提交
c72d58cbff
共有 3 个文件被更改,包括 23 次插入2 次删除
  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

@@ -583,6 +583,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