[tor-bugs] #16467 [Tor]: Faster Ed25519 implementation.

Tor Bug Tracker & Wiki blackhole at torproject.org
Sun Jul 5 15:36:41 UTC 2015


#16467: Faster Ed25519 implementation.
-----------------------------+------------------------------------
     Reporter:  yawning      |      Owner:
         Type:  enhancement  |     Status:  needs_review
     Priority:  normal       |  Milestone:  Tor: 0.2.7.x-final
    Component:  Tor          |    Version:  Tor: 0.2.7
   Resolution:               |   Keywords:  performance, tor-relay
Actual Points:               |  Parent ID:  #9663
       Points:               |
-----------------------------+------------------------------------

Comment (by teor):

 I built using this incredibly convoluted set of compiler command-line
 flags with clang-3.7:
 `clang -g -fno-omit-frame-pointer -fasynchronous-unwind-tables -fno-
 optimize-sibling-calls -fno-inline -DPARANOIA -fstack-protector-all
 -fsanitize=undefined -fno-sanitize-recover=all -fsanitize-
 blacklist=contrib/clang/sanitize_blacklist.txt -fno-omit-frame-pointer
 -fasynchronous-unwind-tables -fno-optimize-sibling-calls -fno-inline
 -fsanitize=address -fsanitize-
 blacklist=contrib/clang/sanitize_blacklist.txt -fno-omit-frame-pointer
 -fasynchronous-unwind-tables -fno-optimize-sibling-calls -fno-inline -O0
 -arch x86_64`

 And I ran out of registers:
 {{{
 In file included from src/ext/ed25519/donna/ed25519.c:18:
 In file included from src/ext/ed25519/donna/ed25519-donna.h:101:
 src/ext/ed25519/donna/ed25519-donna-64bit-x86.h:14:3: error: inline
 assembly requires more registers than available
   "movq %0, %%rax                  ;\n"
   ^
 src/ext/ed25519/donna/ed25519-donna-64bit-x86.h:14:3: error: inline
 assembly requires more registers than available
 2 errors generated.
 make[1]: *** [src/ext/ed25519/donna
 /src_ext_ed25519_donna_libed25519_donna_a-ed25519.o] Error 1
 }}}

 But a minimal configure with no extra clang options works fine:
 `./configure --with-openssl-dir=/opt/local --with-libevent-dir=/opt/local`

 This appears to be an issue with the options I'm using taking up
 registers. I bet it's either the sanitizers, or the debugging /
 optimization-disabling options.

 I'll try to work out which. Any pointers in the right direction would be
 appreciated.

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/16467#comment:9>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list