-
Notifications
You must be signed in to change notification settings - Fork 268
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge bitcoin/bitcoin#21573: Update libsecp256k1 subtree to latest ma…
…ster 5c7ee1b libsecp256k1 no longer has --with-bignum= configure option (Pieter Wuille) bdca9bc Squashed 'src/secp256k1/' changes from 3967d96bf1..efad3506a8 (Pieter Wuille) cabb566 Disable certain false positive warnings for libsecp256k1 msvc build (Pieter Wuille) Pull request description: This updates our src/secp256k1 subtree to the latest upstream master. The changes include: * The introduction of safegcd-based modular inverses, reducing ECDSA signing time by 25%-30% and ECDSA verification time by 15%-17%. * [Original paper](https://gcd.cr.yp.to/papers.html) by Daniel J. Bernstein and Bo-Yin Yang * [Implementation](bitcoin-core/secp256k1#767) by Peter Dettman; [final](bitcoin-core/secp256k1#831) version * [Explanation](https://github.com/bitcoin-core/secp256k1/blob/master/doc/safegcd_implementation.md) of the algorithm using Python snippets * [Analysis](https://github.com/sipa/safegcd-bounds) of the maximum number of iterations the algorithm needs * [Formal proof in Coq](https://medium.com/blockstream/a-formal-proof-of-safegcd-bounds-695e1735a348) by Russell O'Connor, for a high-level equivalent algorithm * Removal of libgmp as an (optional) dependency (which wasn't used in the Bitcoin Core build) * CI changes (Travis -> Cirrus) * Build system improvements ACKs for top commit: laanwj: Tested ACK 5c7ee1b Tree-SHA512: ad8ac3746264d279556a4aa7efdde3733e114fdba8856dd53218588521f04d83950366f5c1ea8fd56329b4c7fe08eedf8e206f8f26dbe3f0f81852e138655431
- Loading branch information
Showing
96 changed files
with
4,871 additions
and
2,461 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,198 @@ | ||
env: | ||
WIDEMUL: auto | ||
STATICPRECOMPUTATION: yes | ||
ECMULTGENPRECISION: auto | ||
ASM: no | ||
BUILD: check | ||
WITH_VALGRIND: yes | ||
RUN_VALGRIND: no | ||
EXTRAFLAGS: | ||
HOST: | ||
ECDH: no | ||
RECOVERY: no | ||
SCHNORRSIG: no | ||
EXPERIMENTAL: no | ||
CTIMETEST: yes | ||
BENCH: yes | ||
ITERS: 2 | ||
MAKEFLAGS: -j2 | ||
|
||
cat_logs_snippet: &CAT_LOGS | ||
always: | ||
cat_tests_log_script: | ||
- cat tests.log || true | ||
cat_exhaustive_tests_log_script: | ||
- cat exhaustive_tests.log || true | ||
cat_valgrind_ctime_test_log_script: | ||
- cat valgrind_ctime_test.log || true | ||
cat_bench_log_script: | ||
- cat bench.log || true | ||
on_failure: | ||
cat_config_log_script: | ||
- cat config.log || true | ||
cat_test_env_script: | ||
- cat test_env.log || true | ||
cat_ci_env_script: | ||
- env | ||
|
||
merge_base_script_snippet: &MERGE_BASE | ||
merge_base_script: | ||
- if [ "$CIRRUS_PR" = "" ]; then exit 0; fi | ||
- git fetch $CIRRUS_REPO_CLONE_URL $CIRRUS_BASE_BRANCH | ||
- git config --global user.email "[email protected]" | ||
- git config --global user.name "ci" | ||
- git merge FETCH_HEAD # Merge base to detect silent merge conflicts | ||
|
||
task: | ||
name: "x86_64: Linux (Debian stable)" | ||
container: | ||
dockerfile: ci/linux-debian.Dockerfile | ||
# Reduce number of CPUs to be able to do more builds in parallel. | ||
cpu: 1 | ||
# More than enough for our scripts. | ||
memory: 1G | ||
matrix: &ENV_MATRIX | ||
- env: {WIDEMUL: int64, RECOVERY: yes} | ||
- env: {WIDEMUL: int64, ECDH: yes, EXPERIMENTAL: yes, SCHNORRSIG: yes} | ||
- env: {WIDEMUL: int128} | ||
- env: {WIDEMUL: int128, RECOVERY: yes, EXPERIMENTAL: yes, SCHNORRSIG: yes} | ||
- env: {WIDEMUL: int128, ECDH: yes, EXPERIMENTAL: yes, SCHNORRSIG: yes} | ||
- env: {WIDEMUL: int128, ASM: x86_64} | ||
- env: { RECOVERY: yes, EXPERIMENTAL: yes, SCHNORRSIG: yes} | ||
- env: { STATICPRECOMPUTATION: no} | ||
- env: {BUILD: distcheck, WITH_VALGRIND: no, CTIMETEST: no, BENCH: no} | ||
- env: {CPPFLAGS: -DDETERMINISTIC} | ||
- env: {CFLAGS: -O0, CTIMETEST: no} | ||
- env: | ||
CFLAGS: "-fsanitize=undefined -fno-omit-frame-pointer" | ||
LDFLAGS: "-fsanitize=undefined -fno-omit-frame-pointer" | ||
UBSAN_OPTIONS: "print_stacktrace=1:halt_on_error=1" | ||
ASM: x86_64 | ||
ECDH: yes | ||
RECOVERY: yes | ||
EXPERIMENTAL: yes | ||
SCHNORRSIG: yes | ||
CTIMETEST: no | ||
- env: { ECMULTGENPRECISION: 2 } | ||
- env: { ECMULTGENPRECISION: 8 } | ||
- env: | ||
RUN_VALGRIND: yes | ||
ASM: x86_64 | ||
ECDH: yes | ||
RECOVERY: yes | ||
EXPERIMENTAL: yes | ||
SCHNORRSIG: yes | ||
EXTRAFLAGS: "--disable-openssl-tests" | ||
BUILD: | ||
matrix: | ||
- env: | ||
CC: gcc | ||
- env: | ||
CC: clang | ||
<< : *MERGE_BASE | ||
test_script: | ||
- ./ci/cirrus.sh | ||
<< : *CAT_LOGS | ||
|
||
task: | ||
name: "i686: Linux (Debian stable)" | ||
container: | ||
dockerfile: ci/linux-debian.Dockerfile | ||
cpu: 1 | ||
memory: 1G | ||
env: | ||
HOST: i686-linux-gnu | ||
ECDH: yes | ||
RECOVERY: yes | ||
EXPERIMENTAL: yes | ||
SCHNORRSIG: yes | ||
matrix: | ||
- env: | ||
CC: i686-linux-gnu-gcc | ||
- env: | ||
CC: clang --target=i686-pc-linux-gnu -isystem /usr/i686-linux-gnu/include | ||
test_script: | ||
- ./ci/cirrus.sh | ||
<< : *CAT_LOGS | ||
|
||
task: | ||
name: "x86_64: macOS Catalina" | ||
macos_instance: | ||
image: catalina-base | ||
env: | ||
HOMEBREW_NO_AUTO_UPDATE: 1 | ||
HOMEBREW_NO_INSTALL_CLEANUP: 1 | ||
# Cirrus gives us a fixed number of 12 virtual CPUs. Not that we even have that many jobs at the moment... | ||
MAKEFLAGS: -j13 | ||
matrix: | ||
<< : *ENV_MATRIX | ||
matrix: | ||
- env: | ||
CC: gcc-9 | ||
- env: | ||
CC: clang | ||
# Update Command Line Tools | ||
# Uncomment this if the Command Line Tools on the CirrusCI macOS image are too old to brew valgrind. | ||
# See https://apple.stackexchange.com/a/195963 for the implementation. | ||
## update_clt_script: | ||
## - system_profiler SPSoftwareDataType | ||
## - touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress | ||
## - |- | ||
## PROD=$(softwareupdate -l | grep "*.*Command Line" | tail -n 1 | awk -F"*" '{print $2}' | sed -e 's/^ *//' | sed 's/Label: //g' | tr -d '\n') | ||
## # For debugging | ||
## - softwareupdate -l && echo "PROD: $PROD" | ||
## - softwareupdate -i "$PROD" --verbose | ||
## - rm /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress | ||
## | ||
brew_valgrind_pre_script: | ||
- brew config | ||
- brew tap --shallow LouisBrunner/valgrind | ||
# Fetch valgrind source but don't build it yet. | ||
- brew fetch --HEAD LouisBrunner/valgrind/valgrind | ||
brew_valgrind_cache: | ||
# This is $(brew --cellar valgrind) but command substition does not work here. | ||
folder: /usr/local/Cellar/valgrind | ||
# Rebuild cache if ... | ||
fingerprint_script: | ||
# ... macOS version changes: | ||
- sw_vers | ||
# ... brew changes: | ||
- brew config | ||
# ... valgrind changes: | ||
- git -C "$(brew --cache)/valgrind--git" rev-parse HEAD | ||
populate_script: | ||
# If there's no hit in the cache, build and install valgrind. | ||
- brew install --HEAD LouisBrunner/valgrind/valgrind | ||
brew_valgrind_post_script: | ||
# If we have restored valgrind from the cache, tell brew to create symlink to the PATH. | ||
# If we haven't restored from cached (and just run brew install), this is a no-op. | ||
- brew link valgrind | ||
brew_script: | ||
- brew install automake libtool gcc@9 | ||
<< : *MERGE_BASE | ||
test_script: | ||
- ./ci/cirrus.sh | ||
<< : *CAT_LOGS | ||
|
||
task: | ||
name: "s390x (big-endian): Linux (Debian stable, QEMU)" | ||
container: | ||
dockerfile: ci/linux-debian.Dockerfile | ||
cpu: 1 | ||
memory: 1G | ||
env: | ||
QEMU_CMD: qemu-s390x | ||
HOST: s390x-linux-gnu | ||
BUILD: | ||
WITH_VALGRIND: no | ||
ECDH: yes | ||
RECOVERY: yes | ||
EXPERIMENTAL: yes | ||
SCHNORRSIG: yes | ||
CTIMETEST: no | ||
<< : *MERGE_BASE | ||
test_script: | ||
# https://sourceware.org/bugzilla/show_bug.cgi?id=27008 | ||
- rm /etc/ld.so.cache | ||
- ./ci/cirrus.sh | ||
<< : *CAT_LOGS |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.