소스 검색

Build donna32 with -fomit-frame-pointer

Nick Mathewson 12 년 전
부모
커밋
97d0872f59
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

@@ -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