Prechádzať zdrojové kódy

Build donna32 with -fomit-frame-pointer

Nick Mathewson 11 rokov pred
rodič
commit
97d0872f59
3 zmenil súbory, kde vykonal 23 pridanie a 2 odobranie
  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")
 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 Where do you live, libnatpmp?  And how do we call you?
 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=
 endif
 
+src_common_libcurve25519_donna_a_CFLAGS=
+
 if BUILD_CURVE25519_DONNA
 src_common_libcurve25519_donna_a_SOURCES=\
 	src/ext/curve25519_donna/curve25519-donna.c
+src_common_libcurve25519_donna_a_CFLAGS+=\
+	@F_OMIT_FRAME_POINTER@
 noinst_LIBRARIES+=src/common/libcurve25519_donna.a
 LIBDONNA=src/common/libcurve25519_donna.a
 else
@@ -30,8 +34,6 @@ LIBDONNA=
 endif
 endif
 
-src_common_libcurve25519_donna_a_CFLAGS =
-
 if CURVE25519_ENABLED
 libcrypto_extra_source=src/common/crypto_curve25519.c
 endif