Skip to content

Commit 879a9a2

Browse files
sipajanus
authored andcommitted
Squashed 'src/secp256k1/' changes from be8d9c262f..0559fc6e41
0559fc6e41 Merge bitcoin-core/secp256k1#988: Make signing table fully static 7dfceceea6 build: Remove #undef hack for ASM in the precomputation programs bb36fe9be0 ci: Test `make precomp` d94a37a20c build: Remove CC_FOR_BUILD stuff ad63bb4c29 build: Prebuild and distribute ecmult_gen table ac49361ed0 prealloc: Get rid of manual memory management for prealloc contexts 6573c08f65 ecmult_gen: Tidy precomputed file and save space 5eba83f17c ecmult_gen: Precompute tables for all values of ECMULT_GEN_PREC_BITS 5d0dbef018 Merge bitcoin-core/secp256k1#942: Verify that secp256k1_ge_set_gej_zinv does not operate on infinity. 486205aa68 Merge bitcoin-core/secp256k1#920: Test all ecmult functions with many j*2^i combinations fdb33dd122 refactor: Make PREC_BITS a parameter of ecmult_gen_build_prec_table 5eb519e1f6 ci: reduce TEST_ITERS in memcheck run e2cf77328a Test ecmult functions for all i*2^j for j=0..255 and odd i=1..255. 61ae37c612 Merge bitcoin-core/secp256k1#1022: build: Windows DLL additions 4f01840b82 Merge bitcoin-core/secp256k1#1027: build: Add a check that Valgrind actually supports a host platform 6ad908aa00 Merge bitcoin-core/secp256k1#1008: bench.c: add `--help` option and ci: move env variables 592661c22f ci: move test environment variable declaration to .cirrus.yml dcbe84b841 bench: add --help option to bench. 099bad945e Comment and check a parameter for inf in secp256k1_ecmult_const. 6c0be857f8 Verify that secp256k1_ge_set_gej_zinv does not operate on infinity. a->x and a->y should not be used if the infinity flag is set. 4900227451 Merge bitcoin-core/secp256k1#1025: build: replace backtick command substitution with $() 7c7ce872a5 build: Add a check that Valgrind actually supports a host platform a4875e30a6 refactor: Move default callbacks to util.h 4c94c55bce doc: Remove obsolete hint for valgrind stack size 5106226991 exhaustive_tests: Fix with ecmult_gen table with custom generator e1a76530db refactor: Make generator a parameter of ecmult_gen_create_prec_table 9ad09f6911 refactor: Rename program that generates static ecmult_gen table 8ae18f1ab3 refactor: Rename file that contains static ecmult_gen table 00d2fa116e ecmult_gen: Make code consistent with comment 3b0c2185ea ecmult_gen: Simplify ecmult_gen context after making table static 2b7c7497ef build: replace backtick command substitution with $() 49f608de47 Merge bitcoin-core/secp256k1#1004: ecmult: fix definition of STRAUSS_SCRATCH_OBJECTS c0cd7de6d4 build: add -no-undefined to libtool LDFLAGS fe32a79d35 build: pass win32-dll to LT_INIT 60bf8890df ecmult: fix definition of STRAUSS_SCRATCH_OBJECTS fecf436d53 Merge bitcoin-core/secp256k1#1019: build: don't append valgrind CPPFLAGS if not installed (macOS) 2e5e4b67df Merge bitcoin-core/secp256k1#1020: doc: remove use of <0xa0> "no break space" 812ff5c747 doc: remove use of 0xa0 "no break space" 214042a170 build: don't append valgrind CPPFLAGS if not installed e43ba02cfc refactor: Decouple table generation and ecmult_gen context 22dc2c0a0d ecmult_gen: Move table creation to new file and force static prec 793ad9016a Merge bitcoin-core/secp256k1#1010: doc: Minor fixes in safegcd_implementation.md dc9b6853b7 doc: Minor fixes in safegcd_implementation.md ea5e8a9c47 Merge bitcoin-core/secp256k1#1012: Fix typos 233297579d Fix typos 7006f1b97f Merge bitcoin-core/secp256k1#1011: ci: Enable -g if we set CFLAGS manually 72de1359e9 ci: Enable -g if we set CFLAGS manually 74c34e727b Merge bitcoin-core/secp256k1#1009: refactor: Use (int)&(int) in boolean context to avoid compiler warning 16d132215c refactor: Use (int)&(int) in boolean context to avoid compiler warning c74a7b7e51 Merge bitcoin-core/secp256k1#1007: doc: Replace apoelstra's GPG key by jonasnick's GPG key 3b157c48ed doc: Suggest keys.openpgp.org as keyserver in SECURITY.md 73a7472cd0 doc: Replace apoelstra's GPG key by jonasnick's GPG key 515a5dbd02 Merge bitcoin-core/secp256k1#991: Merge all "external" benchmarks into a single bench binary af6abcb3d0 Make bench support selecting which benchmarks to run 9f56bdf5b9 Merge bench_schnorrsig into bench 3208557ae1 Merge bench_recover into bench 855e18d8a8 Merge bench_ecdh into bench 2a7be678a6 Combine bench_sign and bench_verify into single bench 8fa41201bd Merge bitcoin-core/secp256k1#1002: Make aux_rnd32==NULL behave identical to 0x0000..00. 5324f8942d Make aux_rnd32==NULL behave identical to 0x0000..00. 21c188b3c5 Merge bitcoin-core/secp256k1#943: VERIFY_CHECK precondition for secp256k1_fe_set_int. 3e7b2ea194 Merge bitcoin-core/secp256k1#999: bench_ecmult: improve clarity of output 23e2f66726 bench: don't return 1 in have_flag() if argc = 1 96b1ad2ea9 bench_ecmult: improve clarity of output 20d791edfb Merge bitcoin-core/secp256k1#989: Shared benchmark format for command line and CSV outputs aa1b889b61 Merge bitcoin-core/secp256k1#996: Fix G.y parity in sage code 044d956305 Fix G.y parity in sage code b4b130678d create csv file from the benchmark output 26a255beb6 Shared benchmark format for command line and CSV outputs 9526874d14 Merge bitcoin-core/secp256k1#810: Avoid overly-wide multiplications in 5x52 field mul/sqr 920a0e5fa6 Merge bitcoin-core/secp256k1#952: Avoid computing out-of-bounds pointer. f34b5cae03 Merge bitcoin-core/secp256k1#983: [RFC] Remove OpenSSL testing support 297ce82091 Merge bitcoin-core/secp256k1#966: Make aux_rand32 arg to secp256k1_schnorrsig_sign const 2888640132 VERIFY_CHECK precondition for secp256k1_fe_set_int. d49011f54c Make _set_fe_int( . , 0 ) set magnitude to 0 bc08599e77 Remove OpenSSL testing support 10f9bd84f4 Merge bitcoin-core/secp256k1#987: Fix unused parameter warnings when building without VERIFY 189f6bcfef Fix unused parameter warnings when building without VERIFY da0092bccc Merge bitcoin-core/secp256k1#986: tests: remove `secp256k1_fe_verify` from tests.c and modify `_fe_from_storage` to call `_fe_verify` d43993724d tests: remove `secp256k1_fe_verify` from tests.c and modify `secp256k1_fe_from_storage` to call `secp256k1_fe_verify` 2a3a97c665 Merge bitcoin-core/secp256k1#976: `secp256k1_schnorrsig_sign_internal` should be static aa5d34a8fe Merge bitcoin-core/secp256k1#783: Make the public API docs more consistent and explicit 72713872a8 Add missing static to secp256k1_schnorrsig_sign_internal db4667d5e0 Make aux_rand32 arg to secp256k1_schnorrsig_sign const 9a5a87e0f1 Merge bitcoin-core/secp256k1#956: Replace ecmult_context with a generated static array. 20abd52c2e Add tests for pre_g tables. 6815761cf5 Remove ecmult_context. f20dcbbad1 Correct typo. 16a3cc07e8 Generate ecmult_static_pre_g.h 8de2d86a06 Bump memory limits in advance of making the ecmult context static. d7ec49a689 Merge bitcoin-core/secp256k1#969: ci: Fixes after Debian release 5d5c74a057 tests: Rewrite code to circument potential bug in clang 3d2f492ceb ci: Install libasan6 (instead of 5) after Debian upgrade adec5a1638 Add missing null check for ctx and input keys in the public API f4edfc7581 Improve consistency for NULL arguments in the public interface 9be7b0f083 Avoid computing out-of-bounds pointer. b53e0cd61f Avoid overly-wide multiplications git-subtree-dir: src/secp256k1 git-subtree-split: 0559fc6e41b65af6e52c32eb9b1286494412a162
1 parent ecab55c commit 879a9a2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+29122
-2715
lines changed

.cirrus.yml

+147-24
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,28 @@
11
env:
2-
MAKEJOBS: "-j4"
3-
TEST_RUNNER_PORT_MIN: "14000" # Must be larger than 12321, which is used for the http cache. See https://cirrus-ci.org/guide/writing-tasks/#http-cache
4-
CCACHE_SIZE: "200M"
5-
CCACHE_DIR: "/tmp/ccache_dir"
6-
CCACHE_NOHASHDIR: "1" # Debug info might contain a stale path if the build dir changes, but this is fine
2+
### compiler options
3+
HOST:
4+
# Specific warnings can be disabled with -Wno-error=foo.
5+
# -pedantic-errors is not equivalent to -Werror=pedantic and thus not implied by -Werror according to the GCC manual.
6+
WERROR_CFLAGS: -Werror -pedantic-errors
7+
MAKEFLAGS: -j2
8+
BUILD: check
9+
### secp256k1 config
10+
STATICPRECOMPUTATION: yes
11+
ECMULTGENPRECISION: auto
12+
ASM: no
13+
WIDEMUL: auto
14+
WITH_VALGRIND: yes
15+
EXTRAFLAGS:
16+
### secp256k1 modules
17+
EXPERIMENTAL: no
18+
ECDH: no
19+
RECOVERY: no
20+
SCHNORRSIG: no
21+
### test options
22+
SECP256K1_TEST_ITERS:
23+
BENCH: yes
24+
SECP256K1_BENCH_ITERS: 2
25+
CTIMETEST: yes
726

827
cirrus_ephemeral_worker_template_env: &CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
928
DANGER_RUN_CI_ON_HOST: "1" # Containers will be discarded after the run, so there is no risk that the ci scripts modify the system
@@ -177,8 +196,21 @@ task:
177196
container:
178197
image: ubuntu:focal
179198
env:
180-
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
181-
FILE_ENV: "./ci/test/00_setup_env_win64.sh"
199+
WRAPPER_CMD: qemu-s390x
200+
SECP256K1_TEST_ITERS: 16
201+
HOST: s390x-linux-gnu
202+
WITH_VALGRIND: no
203+
ECDH: yes
204+
RECOVERY: yes
205+
EXPERIMENTAL: yes
206+
SCHNORRSIG: yes
207+
CTIMETEST: no
208+
<< : *MERGE_BASE
209+
test_script:
210+
# https://sourceware.org/bugzilla/show_bug.cgi?id=27008
211+
- rm /etc/ld.so.cache
212+
- ./ci/cirrus.sh
213+
<< : *CAT_LOGS
182214

183215
task:
184216
name: '32-bit + dash [gui] [CentOS 8]'
@@ -197,8 +229,22 @@ task:
197229
<< : *GLOBAL_TASK_TEMPLATE
198230
<< : *PERSISTENT_WORKER_TEMPLATE
199231
env:
200-
<< : *PERSISTENT_WORKER_TEMPLATE_ENV
201-
FILE_ENV: "./ci/test/00_setup_env_native_qt5.sh"
232+
WRAPPER_CMD: qemu-arm
233+
SECP256K1_TEST_ITERS: 16
234+
HOST: arm-linux-gnueabihf
235+
WITH_VALGRIND: no
236+
ECDH: yes
237+
RECOVERY: yes
238+
EXPERIMENTAL: yes
239+
SCHNORRSIG: yes
240+
CTIMETEST: no
241+
matrix:
242+
- env: {}
243+
- env: {ASM: arm}
244+
<< : *MERGE_BASE
245+
test_script:
246+
- ./ci/cirrus.sh
247+
<< : *CAT_LOGS
202248

203249
task:
204250
name: '[TSan, depends, no gui] [jammy]'
@@ -208,40 +254,106 @@ task:
208254
cpu: 6 # Increase CPU and Memory to avoid timeout
209255
memory: 24G
210256
env:
211-
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
212-
MAKEJOBS: "-j8"
213-
FILE_ENV: "./ci/test/00_setup_env_native_tsan.sh"
257+
WRAPPER_CMD: qemu-aarch64
258+
SECP256K1_TEST_ITERS: 16
259+
HOST: aarch64-linux-gnu
260+
WITH_VALGRIND: no
261+
ECDH: yes
262+
RECOVERY: yes
263+
EXPERIMENTAL: yes
264+
SCHNORRSIG: yes
265+
CTIMETEST: no
266+
<< : *MERGE_BASE
267+
test_script:
268+
- ./ci/cirrus.sh
269+
<< : *CAT_LOGS
214270

215271
task:
216272
name: '[MSan, depends] [focal]'
217273
<< : *GLOBAL_TASK_TEMPLATE
218274
container:
219275
image: ubuntu:focal
220276
env:
221-
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
222-
FILE_ENV: "./ci/test/00_setup_env_native_msan.sh"
277+
WRAPPER_CMD: qemu-ppc64le
278+
SECP256K1_TEST_ITERS: 16
279+
HOST: powerpc64le-linux-gnu
280+
WITH_VALGRIND: no
281+
ECDH: yes
282+
RECOVERY: yes
283+
EXPERIMENTAL: yes
284+
SCHNORRSIG: yes
285+
CTIMETEST: no
286+
<< : *MERGE_BASE
287+
test_script:
288+
- ./ci/cirrus.sh
289+
<< : *CAT_LOGS
223290

224291
task:
225292
name: '[ASan + LSan + UBSan + integer, no depends] [jammy]'
226293
<< : *GLOBAL_TASK_TEMPLATE
227294
container:
228295
image: ubuntu:jammy
229296
env:
230-
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
231-
FILE_ENV: "./ci/test/00_setup_env_native_asan.sh"
297+
WRAPPER_CMD: wine64-stable
298+
SECP256K1_TEST_ITERS: 16
299+
HOST: x86_64-w64-mingw32
300+
WITH_VALGRIND: no
301+
ECDH: yes
302+
RECOVERY: yes
303+
EXPERIMENTAL: yes
304+
SCHNORRSIG: yes
305+
CTIMETEST: no
306+
<< : *MERGE_BASE
307+
test_script:
308+
- ./ci/cirrus.sh
309+
<< : *CAT_LOGS
232310

233311
task:
234312
name: '[fuzzer,address,undefined,integer, no depends] [focal]'
235313
only_if: $CIRRUS_BRANCH == $CIRRUS_DEFAULT_BRANCH || $CIRRUS_BASE_BRANCH == $CIRRUS_DEFAULT_BRANCH
236314
<< : *GLOBAL_TASK_TEMPLATE
237315
container:
238-
image: ubuntu:focal
239-
cpu: 4 # Increase CPU and memory to avoid timeout
240-
memory: 16G
316+
dockerfile: ci/linux-debian.Dockerfile
317+
cpu: 1
318+
memory: 2G
241319
env:
242-
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
243-
MAKEJOBS: "-j8"
244-
FILE_ENV: "./ci/test/00_setup_env_native_fuzz.sh"
320+
ECDH: yes
321+
RECOVERY: yes
322+
EXPERIMENTAL: yes
323+
SCHNORRSIG: yes
324+
CTIMETEST: no
325+
matrix:
326+
- name: "Valgrind (memcheck)"
327+
env:
328+
# The `--error-exitcode` is required to make the test fail if valgrind found errors, otherwise it'll return 0 (https://www.valgrind.org/docs/manual/manual-core.html)
329+
WRAPPER_CMD: "valgrind --error-exitcode=42"
330+
SECP256K1_TEST_ITERS: 2
331+
- name: "UBSan, ASan, LSan"
332+
env:
333+
CFLAGS: "-fsanitize=undefined,address -g"
334+
UBSAN_OPTIONS: "print_stacktrace=1:halt_on_error=1"
335+
ASAN_OPTIONS: "strict_string_checks=1:detect_stack_use_after_return=1:detect_leaks=1"
336+
LSAN_OPTIONS: "use_unaligned=1"
337+
SECP256K1_TEST_ITERS: 32
338+
# Try to cover many configurations with just a tiny matrix.
339+
matrix:
340+
- env:
341+
ASM: auto
342+
STATICPRECOMPUTATION: yes
343+
- env:
344+
ASM: no
345+
STATICPRECOMPUTATION: no
346+
ECMULTGENPRECISION: 2
347+
matrix:
348+
- env:
349+
CC: clang
350+
- env:
351+
HOST: i686-linux-gnu
352+
CC: i686-linux-gnu-gcc
353+
<< : *MERGE_BASE
354+
test_script:
355+
- ./ci/cirrus.sh
356+
<< : *CAT_LOGS
245357

246358
task:
247359
name: '[multiprocess, i686, DEBUG] [focal]'
@@ -305,5 +417,16 @@ task:
305417
container:
306418
image: ubuntu:focal
307419
env:
308-
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
309-
FILE_ENV: "./ci/test/00_setup_env_android.sh"
420+
# ./configure correctly errors out when given CC=g++.
421+
# We hack around this by passing CC=g++ only to make.
422+
CC: gcc
423+
MAKEFLAGS: -j2 CC=g++ CFLAGS=-fpermissive\ -g
424+
WERROR_CFLAGS:
425+
EXPERIMENTAL: yes
426+
ECDH: yes
427+
RECOVERY: yes
428+
SCHNORRSIG: yes
429+
<< : *MERGE_BASE
430+
test_script:
431+
- ./ci/cirrus.sh
432+
<< : *CAT_LOGS

.gitattributes

+2-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
src/clientversion.cpp export-subst
1+
src/ecmult_static_pre_g.h linguist-generated
2+
src/ecmult_gen_static_prec_table.h linguist-generated

.gitignore

+7-24
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,16 @@
1-
2-
3-
*.tar.gz
4-
5-
bench_inv
6-
bench_ecdh
1+
bench
72
bench_ecmult
8-
bench_schnorrsig
9-
bench_sign
10-
bench_verify
11-
bench_recover
123
bench_internal
134
tests
145
exhaustive_tests
15-
gen_context
6+
gen_ecmult_gen_static_prec_table
7+
gen_ecmult_static_pre_g
168
valgrind_ctime_test
179
*.exe
18-
*.pdb
19-
src/BGL
20-
src/BGLd
21-
src/BGL-cli
22-
src/BGL-gui
23-
src/BGL-node
24-
src/BGL-tx
25-
src/BGL-util
26-
src/BGL-wallet
27-
src/test/fuzz/fuzz
28-
src/test/test_BGL
29-
src/qt/test/test_BGL-qt
10+
*.so
11+
*.a
12+
*.csv
13+
!.gitignore
3014

3115
# autoreconf
3216
Makefile.in
@@ -55,7 +39,6 @@ coverage.*.html
5539

5640
src/libsecp256k1-config.h
5741
src/libsecp256k1-config.h.in
58-
src/ecmult_static_context.h
5942
build-aux/config.guess
6043
build-aux/config.sub
6144
build-aux/depcomp

0 commit comments

Comments
 (0)