Skip to content

Commit

Permalink
bitcoin-core: add workaround for libsecp256k1 related build failure
Browse files Browse the repository at this point in the history
See guidovranken/cryptofuzz#55. A function was removed from libsecp256k1, causing the crypto-fuzz build to fail:
```bash
clang++ -O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=address -fsanitize-address-use-after-scope -fsanitize=fuzzer-no-link -stdlib=libc++ -DCRYPTOFUZZ_NO_OPENSSL -I /src/boost_1_74_0/ -DCRYPTOFUZZ_SECP256K1 -DCRYPTOFUZZ_TREZOR_FIRMWARE -DCRYPTOFUZZ_BOTAN -DCRYPTOFUZZ_BOTAN_IS_ORACLE -DCRYPTOFUZZ_BITCOIN -Wall -Wextra -std=c++17 -I include/ -I . -I fuzzing-headers/include -DFUZZING_HEADERS_NO_IMPL driver.o executor.o util.o entry.o tests.o operation.o datasource.o repository.o options.o components.o wycheproof.o crypto.o expmod.o mutator.o z3.o numbers.o mutatorpool.o ecc_diff_fuzzer_importer.o ecc_diff_fuzzer_exporter.o botan_importer.o openssl_importer.o builtin_tests_importer.o bignum_fuzzer_importer.o modules/botan/module.a modules/secp256k1/module.a modules/trezor/module.a modules/bitcoin/module.a -fsanitize=fuzzer third_party/cpu_features/build/libcpu_features.a  -o cryptofuzz
/usr/bin/ld: /usr/bin/ld: DWARF error: invalid or unhandled FORM value: 0x25
modules/secp256k1/module.a(secp256k1_api.o): in function `cryptofuzz_secp256k1_fe_equal_var':
secp256k1_api.c:(.text.cryptofuzz_secp256k1_fe_equal_var[cryptofuzz_secp256k1_fe_equal_var]+0x27): undefined reference to `secp256k1_fe_equal_var'
/usr/bin/ld: secp256k1_api.c:(.text.cryptofuzz_secp256k1_fe_equal_var[cryptofuzz_secp256k1_fe_equal_var]+0x39): undefined reference to `secp256k1_fe_equal_var'
clang-15: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:59: cryptofuzz] Error 1
ERROR:__main__:Building fuzzers failed.
```

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=61605.
  • Loading branch information
fanquake committed Aug 21, 2023
1 parent 0abb82b commit 331f5cb
Showing 1 changed file with 40 additions and 0 deletions.
40 changes: 40 additions & 0 deletions projects/bitcoin-core/build_cryptofuzz.sh
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,46 @@ export BOTAN_INCLUDE_PATH="$SRC/botan/build/include"

# Build Cryptofuzz
cd $SRC/cryptofuzz
( # Temporary workaround for build failure: https://github.com/guidovranken/cryptofuzz/pull/55
echo 'RnJvbSAwZjQ2MmRlZWNmMDE1MDM4MmU4MTVmNmViN2ZiMDhjYWYzNTcxY2ZjIE1vbiBTZXAgMTcgMDA6MD
A6MDAgMjAwMQpGcm9tOiBmYW5xdWFrZSA8ZmFucXVha2VAZ21haWwuY29tPgpEYXRlOiBNb24sIDIxIEF1ZyAyMD
IzIDEwOjE0OjQ1ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gbGlic2VjcDI1NmsxOiByZW1vdmUgc2VjcDI1NmsxX2
ZlX2VxdWFsX3ZhcgoKVGhpcyB3YXMgcmVtb3ZlZCB1cHN0cmVhbSwKaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW
4tY29yZS9zZWNwMjU2azEvcHVsbC8xMDYyLCBhbmQgaXMgY2F1c2luZwpidWlsZCBmYWlsdXJlcyBkb3duc3RyZW
FtLgotLS0KIG1vZHVsZXMvc2VjcDI1NmsxL21vZHVsZS5jcHAgICAgICB8IDggKy0tLS0tLS0KIG1vZHVsZXMvc2
VjcDI1NmsxL3NlY3AyNTZrMV9hcGkuYyB8IDQgLS0tLQogbW9kdWxlcy9zZWNwMjU2azEvc2VjcDI1NmsxX2FwaS
5oIHwgMSAtCiAzIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS
1naXQgYS9tb2R1bGVzL3NlY3AyNTZrMS9tb2R1bGUuY3BwIGIvbW9kdWxlcy9zZWNwMjU2azEvbW9kdWxlLmNwcA
ppbmRleCBhNTI2MTBlLi5kYmFmMmM5IDEwMDY0NAotLS0gYS9tb2R1bGVzL3NlY3AyNTZrMS9tb2R1bGUuY3BwCi
srKyBiL21vZHVsZXMvc2VjcDI1NmsxL21vZHVsZS5jcHAKQEAgLTE1MzEsMTMgKzE1MzEsNyBAQCBlbmQ6CiAgIC
AgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICAgIENGX0NBTENPUCgiSXNFcShBLEIpIik6Ci
AgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBib29sIHZhciA9IGZhbHNlOwotICAgICAgIC
AgICAgICAgICAgICB0cnkgeyB2YXIgPSBkcy5HZXQ8Ym9vbD4oKTsgfSBjYXRjaCAoIC4uLiApIHsgfQotCi0gIC
AgICAgICAgICAgICAgICAgIGNvbnN0IGludCByID0KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciA9PSBmYW
xzZSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3J5cHRvZnV6el9zZWNwMjU2azFfZmVfZXF1YWwoYS
wgYikgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyeXB0b2Z1enpfc2VjcDI1NmsxX2ZlX2VxdWFsX3
ZhcihhLCBiKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IHIgPSBjcnlwdG9mdXp6X3NlY3AyNTZrMV
9mZV9lcXVhbChhLCBiKTsKIAogICAgICAgICAgICAgICAgICAgICBDRl9OT1JFVChjcnlwdG9mdXp6X3NlY3AyNT
ZrMV9mZV9zZXRfaW50KHJlcywgcikpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL21vZHVsZXMvc2
VjcDI1NmsxL3NlY3AyNTZrMV9hcGkuYyBiL21vZHVsZXMvc2VjcDI1NmsxL3NlY3AyNTZrMV9hcGkuYwppbmRleC
A1ZWExZmQ2Li44YThjMjk4IDEwMDY0NAotLS0gYS9tb2R1bGVzL3NlY3AyNTZrMS9zZWNwMjU2azFfYXBpLmMKKy
srIGIvbW9kdWxlcy9zZWNwMjU2azEvc2VjcDI1NmsxX2FwaS5jCkBAIC0xNDUsMTAgKzE0NSw2IEBAIGludCBjcn
lwdG9mdXp6X3NlY3AyNTZrMV9mZV9lcXVhbChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKSB7CiAgICAgcm
V0dXJuIHNlY3AyNTZrMV9mZV9lcXVhbChhLCBiKTsKIH0KIAotaW50IGNyeXB0b2Z1enpfc2VjcDI1NmsxX2ZlX2
VxdWFsX3Zhcihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKSB7Ci0gICAgcmV0dXJuIHNlY3AyNTZrMV9mZV
9lcXVhbF92YXIoYSwgYik7Ci19Ci0KIGludCBjcnlwdG9mdXp6X3NlY3AyNTZrMV9mZV9jbXBfdmFyKGNvbnN0IH
ZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpIHsKICAgICByZXR1cm4gc2VjcDI1NmsxX2ZlX2NtcF92YXIoYSwgYik7Ci
B9CmRpZmYgLS1naXQgYS9tb2R1bGVzL3NlY3AyNTZrMS9zZWNwMjU2azFfYXBpLmggYi9tb2R1bGVzL3NlY3AyNT
ZrMS9zZWNwMjU2azFfYXBpLmgKaW5kZXggMjI4YjE4ZC4uODI3ZTBiMCAxMDA2NDQKLS0tIGEvbW9kdWxlcy9zZW
NwMjU2azEvc2VjcDI1NmsxX2FwaS5oCisrKyBiL21vZHVsZXMvc2VjcDI1NmsxL3NlY3AyNTZrMV9hcGkuaApAQC
AtNDAsNyArNDAsNiBAQCBpbnQgY3J5cHRvZnV6el9zZWNwMjU2azFfZmVfaXNfb2RkKGNvbnN0IHZvaWQgKmEpOw
ogaW50IGNyeXB0b2Z1enpfc2VjcDI1NmsxX2ZlX2lzX3plcm8oY29uc3Qgdm9pZCAqYSk7CiB2b2lkIGNyeXB0b2
Z1enpfc2VjcDI1NmsxX2ZlX2NsZWFyKHZvaWQgKnIpOwogaW50IGNyeXB0b2Z1enpfc2VjcDI1NmsxX2ZlX2VxdW
FsKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpOwotaW50IGNyeXB0b2Z1enpfc2VjcDI1NmsxX2ZlX2VxdW
FsX3Zhcihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKTsKIGludCBjcnlwdG9mdXp6X3NlY3AyNTZrMV9mZV
9jbXBfdmFyKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpOwogdm9pZCBjcnlwdG9mdXp6X3NlY3AyNTZrMV
9mZV9jbW92KHZvaWQgKnIsIGNvbnN0IHZvaWQgKmEsIGNvbnN0IGludCBmbGFnKTsKIHNpemVfdCBjcnlwdG9mdX
p6X3NlY3AyNTZrMV9mZV9zdG9yYWdlX3NpemUodm9pZCk7Ci0tIAoyLjQxLjAKCg=='|base64 --decode | patch -p 1 ; git diff ) || true
python gen_repository.py
rm extra_options.h
echo -n '"' >>extra_options.h
Expand Down

0 comments on commit 331f5cb

Please sign in to comment.