Skip to content

Commit cc033ff

Browse files
fanquakeclaude
authored andcommitted
Merge bitcoin#28875: build: Pass sanitize flags to instrument libsecp256k1 code
cbea49c build: Pass sanitize flags to instrument `libsecp256k1` code (Hennadii Stepanov) Pull request description: This PR is a revived bitcoin#27991 with an addressed [comment](bitcoin#27991 (comment)). Fixes bitcoin#27990. Might be tested as follows: ``` $ ./autogen.sh && ./configure --enable-fuzz --with-sanitizers=fuzzer CC=clang-13 CXX=clang++-13 $ make clean > /dev/null && make $ objdump --disassemble=secp256k1_xonly_pubkey_serialize src/test/fuzz/fuzz | grep __sanitizer_cov 1953bd0:e8 bb c6 05 ff call 9b0290 <__sanitizer_cov_trace_const_cmp8> 1953d32:e8 69 c4 05 ff call 9b01a0 <__sanitizer_cov_trace_pc_indir> 1953d58:e8 43 c4 05 ff call 9b01a0 <__sanitizer_cov_trace_pc_indir> 1953d82:e8 19 c4 05 ff call 9b01a0 <__sanitizer_cov_trace_pc_indir> ``` ACKs for top commit: fanquake: ACK cbea49c dergoegge: reACK cbea49c Tree-SHA512: 801994e75b711d20eaf0d675f378da07d693f4a7de026efd93860f5f1deabed855a83eca3561725263e4fe605fcc5f91eb73c021ec91c831864e6deb575e3885
1 parent 9a35783 commit cc033ff

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

configure.ac

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,8 @@ if test "$use_sanitizers" != ""; then
422422
dnl fail if a bad argument is passed, e.g. -fsanitize=undfeined
423423
AX_CHECK_COMPILE_FLAG(
424424
[-fsanitize=$use_sanitizers],
425-
[SANITIZER_CXXFLAGS="-fsanitize=$use_sanitizers"],
425+
[SANITIZER_CXXFLAGS="-fsanitize=$use_sanitizers"
426+
SANITIZER_CFLAGS="-fsanitize=$use_sanitizers"],
426427
[AC_MSG_ERROR([compiler did not accept requested flags])])
427428

428429
dnl Some compilers (e.g. GCC) require additional libraries like libasan,
@@ -1919,6 +1920,9 @@ CPPFLAGS_TEMP="$CPPFLAGS"
19191920
unset CPPFLAGS
19201921
CPPFLAGS="$CPPFLAGS_TEMP"
19211922

1923+
if test -n "$use_sanitizers"; then
1924+
export SECP_CFLAGS="$SECP_CFLAGS $SANITIZER_CFLAGS"
1925+
fi
19221926
ac_configure_args="${ac_configure_args} --disable-shared --with-pic --enable-benchmark=no --enable-module-recovery --disable-module-ecdh --disable-openssl-tests"
19231927
AC_CONFIG_SUBDIRS([src/dashbls src/secp256k1])
19241928

@@ -1980,11 +1984,11 @@ echo " target os = $host_os"
19801984
echo " build os = $build_os"
19811985
echo
19821986
echo " CC = $CC"
1983-
echo " CFLAGS = $DEBUG_CFLAGS $PTHREAD_CFLAGS $CFLAGS"
1987+
echo " CFLAGS = $DEBUG_CFLAGS $PTHREAD_CFLAGS $SANITIZER_CFLAGS $CFLAGS"
19841988
echo " CPPFLAGS = $DEBUG_CPPFLAGS $HARDENED_CPPFLAGS $CORE_CPPFLAGS $CPPFLAGS"
19851989
echo " CXX = $CXX"
1986-
echo " CXXFLAGS = $DEBUG_CXXFLAGS $HARDENED_CXXFLAGS $WARN_CXXFLAGS $NOWARN_CXXFLAGS $ERROR_CXXFLAGS $GPROF_CXXFLAGS $CORE_CXXFLAGS $CXXFLAGS"
1987-
echo " LDFLAGS = $PTHREAD_LIBS $HARDENED_LDFLAGS $GPROF_LDFLAGS $CORE_LDFLAGS $LDFLAGS"
1990+
echo " CXXFLAGS = $DEBUG_CXXFLAGS $HARDENED_CXXFLAGS $WARN_CXXFLAGS $NOWARN_CXXFLAGS $ERROR_CXXFLAGS $GPROF_CXXFLAGS $CORE_CXXFLAGS $SANITIZER_CXXFLAGS $CXXFLAGS"
1991+
echo " LDFLAGS = $PTHREAD_LIBS $HARDENED_LDFLAGS $GPROF_LDFLAGS $SANITIZER_LDFLAGS $CORE_LDFLAGS $LDFLAGS"
19881992
echo " AR = $AR"
19891993
echo " ARFLAGS = $ARFLAGS"
19901994
echo

test/sanitizer_suppressions/ubsan

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ implicit-integer-sign-change:secp256k1/
2626
implicit-signed-integer-truncation:*/include/c++/
2727
implicit-signed-integer-truncation:leveldb/
2828
implicit-signed-integer-truncation:secp256k1/
29+
implicit-signed-integer-truncation,implicit-integer-sign-change:secp256k1_modinv64_posdivsteps_62_var
2930
implicit-unsigned-integer-truncation:*/include/c++/
3031
implicit-unsigned-integer-truncation:leveldb/
3132
implicit-unsigned-integer-truncation:secp256k1/

0 commit comments

Comments
 (0)