boringssl/crypto
Adam Langley 3f38d80b2f Add CFI information to the x86-64 X25519 asm.
This change serves to check that all our consumers can process assembly
with CFI directives in it.

For the first change I picked a file that's not perlasm to keep things
slightly simplier, but that might have been a mistake:

DJB's tooling always aligns the stack to 32 bytes and it's not possible
to express this in DWARF format (without using a register to store the
old stack pointer).

Since none of the functions here appear to care about that alignment, I
removed it from each of them. I also trimmed the set of saved registers
where possible and used the redzone for functions that didn't need much
stack.

Overall, this appears to have slightly improved the performance (by
about 0.7%):

Before:

Did 46000 Curve25519 base-point multiplication operations in 3023288us (15215.2 ops/sec)
Did 46000 Curve25519 arbitrary point multiplication operations in 3017315us (15245.3 ops/sec)
Did 46000 Curve25519 base-point multiplication operations in 3015346us (15255.3 ops/sec)
Did 46000 Curve25519 arbitrary point multiplication operations in 3018609us (15238.8 ops/sec)
Did 46000 Curve25519 base-point multiplication operations in 3019004us (15236.8 ops/sec)
Did 46000 Curve25519 arbitrary point multiplication operations in 3013135us (15266.5 ops/sec)

After:

Did 46000 Curve25519 base-point multiplication operations in 3007659us (15294.3 ops/sec)
Did 47000 Curve25519 arbitrary point multiplication operations in 3054202us (15388.6 ops/sec)
Did 46000 Curve25519 base-point multiplication operations in 3008714us (15288.9 ops/sec)
Did 46000 Curve25519 arbitrary point multiplication operations in 3004740us (15309.1 ops/sec)
Did 46000 Curve25519 base-point multiplication operations in 3009140us (15286.8 ops/sec)
Did 47000 Curve25519 arbitrary point multiplication operations in 3057518us (15371.9 ops/sec)

Change-Id: I31df11c45b2ea0bf44dde861d52c27f848331691
Reviewed-on: https://boringssl-review.googlesource.com/13200
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
Reviewed-by: David Benjamin <davidben@google.com>
Reviewed-by: Adam Langley <agl@google.com>
Commit-Queue: Adam Langley <agl@google.com>
2017-01-31 17:55:19 +00:00
..
aes Test invalid inputs for AES_unwrap_key. 2017-01-04 04:37:46 +00:00
asn1 Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
base64 Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
bio Remove buffer BIOs. 2017-01-26 23:09:10 +00:00
bn bn/asm/x86_64-mont5.pl: fix carry bug in bn_sqr8x_internal. 2017-01-26 18:29:44 +00:00
buf Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
bytestring Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
chacha Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
cipher chacha20_poly1305_x86_64.pl: Use NASM-compatible syntax for |ldea|. 2017-01-27 23:17:13 +00:00
cmac Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
conf Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
curve25519 Add CFI information to the x86-64 X25519 asm. 2017-01-31 17:55:19 +00:00
des Fix up macros. 2016-10-18 18:28:23 +00:00
dh Do a cursory conversion of a few tests to GTest. 2017-01-21 00:17:05 +00:00
digest Decouple EVP_get_digestbyobj from the giant OID table. 2017-01-10 23:45:00 +00:00
dsa Do a cursory conversion of a few tests to GTest. 2017-01-21 00:17:05 +00:00
ec Remove specialized assembly language |ecp_nistz256_from_mont|. 2017-01-13 17:27:13 +00:00
ecdh Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
ecdsa Don't use BN_mod_inverse for inverses mod p in RSA keygen. 2017-01-04 13:56:11 +00:00
engine Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
err Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
evp Push to error queue in |EVP_PKEY_CTX_ctrl| for wrong keytype. 2017-01-30 19:16:05 +00:00
hkdf Convert hkdf_test to C++. 2017-01-04 01:40:44 +00:00
hmac Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
lhash Remove lh_new's default hash and comparator. 2017-01-04 01:44:10 +00:00
md4 Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
md5 Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
modes Enable stitched x86-64 AES-NI AES-GCM implementation. 2017-01-16 16:54:13 +00:00
obj Reimplement objects.pl in Go. 2016-12-21 22:14:13 +00:00
pem Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
perlasm perlasm/x86_64-xlate.pl: refine sign extension in ea package. 2016-12-14 17:36:29 +00:00
pkcs8 Parse PKCS#12 files more accurately. 2017-01-12 16:56:05 +00:00
poly1305 Delete unused Poly1305 assembly. 2017-01-21 00:17:30 +00:00
pool Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
rand Fix crypto/rand/urandom header guards for Fuchsia. 2017-01-14 01:03:01 +00:00
rc4 Simplify RC4 code and remove assembly. 2016-08-30 15:32:31 +00:00
rsa Remove BN_FLG_CONSTTIME. 2017-01-12 02:00:44 +00:00
sha Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
stack Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
test Do a cursory conversion of a few tests to GTest. 2017-01-21 00:17:05 +00:00
x509 X509_parse_from_buffer: reject massive certificates. 2017-01-27 16:21:16 +00:00
x509v3 Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
CMakeLists.txt Do a cursory conversion of a few tests to GTest. 2017-01-21 00:17:05 +00:00
constant_time_test.cc Convert constant_time_test and refcount_test to C++. 2017-01-04 01:36:49 +00:00
cpu-aarch64-linux.c
cpu-arm-linux.c Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
cpu-arm.c
cpu-intel.c Wrap MSVC-only warning pragmas in a macro. 2016-06-09 21:29:36 +00:00
cpu-ppc64le.c Add PPC64LE assembly for AES-GCM. 2016-09-27 18:43:20 +00:00
crypto.c Add PPC64LE assembly for AES-GCM. 2016-09-27 18:43:20 +00:00
ex_data.c Use C99 for size_t loops. 2016-09-12 19:44:24 +00:00
internal.h Fix comment on OPENSSL_memcmp, etc. 2016-12-21 21:47:24 +00:00
mem.c Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
refcount_c11.c
refcount_lock.c Split unlock functions into read/write variants. 2016-05-31 21:09:29 +00:00
refcount_test.cc Convert constant_time_test and refcount_test to C++. 2017-01-04 01:36:49 +00:00
thread_none.c Split unlock functions into read/write variants. 2016-05-31 21:09:29 +00:00
thread_pthread.c Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
thread_test.c Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
thread_win.c Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +00:00
thread.c Remove a bunch of unnecessary includes. 2016-06-28 20:31:14 +00:00
time_support.c