aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2013-01-30 13:08:04 -0500
committerNick Mathewson <nickm@torproject.org>2013-01-30 13:08:04 -0500
commit97d0872f59b4ac7a56632966ee041782c1152313 (patch)
tree5a3a1e5c4cc154c7896f47fa089f53648efef72c
parent73f85905aa9cfe6ee4f014f54d5713ab662c207a (diff)
downloadtor-97d0872f59b4ac7a56632966ee041782c1152313.tar
tor-97d0872f59b4ac7a56632966ee041782c1152313.tar.gz
Build donna32 with -fomit-frame-pointer
-rw-r--r--changes/fomit-frame-pointer6
-rw-r--r--configure.ac13
-rw-r--r--src/common/include.am6
3 files changed, 23 insertions, 2 deletions
diff --git a/changes/fomit-frame-pointer b/changes/fomit-frame-pointer
new file mode 100644
index 000000000..67706246a
--- /dev/null
+++ b/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.
diff --git a/configure.ac b/configure.ac
index f047ab902..5468b9626 100644
--- a/configure.ac
+++ b/configure.ac
@@ -583,6 +583,19 @@ if test x$enable_linker_hardening != xno; then
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
diff --git a/src/common/include.am b/src/common/include.am
index 808238dd1..1eb923f97 100644
--- a/src/common/include.am
+++ b/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