autotools: Disable eager MSan in ctime_tests
Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
This commit is contained in:
@@ -45,6 +45,18 @@ fi
|
|||||||
AC_MSG_RESULT($has_valgrind)
|
AC_MSG_RESULT($has_valgrind)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([SECP_MSAN_CHECK], [
|
||||||
|
AC_MSG_CHECKING(whether MemorySanitizer is enabled)
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
|
||||||
|
#if defined(__has_feature)
|
||||||
|
# if __has_feature(memory_sanitizer)
|
||||||
|
# error "MemorySanitizer is enabled."
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
]])], [msan_enabled=no], [msan_enabled=yes])
|
||||||
|
AC_MSG_RESULT([$msan_enabled])
|
||||||
|
])
|
||||||
|
|
||||||
dnl SECP_TRY_APPEND_CFLAGS(flags, VAR)
|
dnl SECP_TRY_APPEND_CFLAGS(flags, VAR)
|
||||||
dnl Append flags to VAR if CC accepts them.
|
dnl Append flags to VAR if CC accepts them.
|
||||||
AC_DEFUN([SECP_TRY_APPEND_CFLAGS], [
|
AC_DEFUN([SECP_TRY_APPEND_CFLAGS], [
|
||||||
|
|||||||
21
configure.ac
21
configure.ac
@@ -247,6 +247,20 @@ if test x"$enable_ctime_tests" = x"auto"; then
|
|||||||
enable_ctime_tests=$enable_valgrind
|
enable_ctime_tests=$enable_valgrind
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
print_msan_notice=no
|
||||||
|
if test x"$enable_ctime_tests" = x"yes" && test x"$GCC" = x"yes"; then
|
||||||
|
SECP_MSAN_CHECK
|
||||||
|
# MSan on Clang >=16 reports unitialized memory in function parameters and return values, even if
|
||||||
|
# the uninitalized variable is never actually "used". This is called "eager" checking, and it's
|
||||||
|
# sounds like good idea for normal use of MSan. However, it yields many false positives in the
|
||||||
|
# ctime_tests because many return values depend on secret (i.e., "uninitialized") values, and
|
||||||
|
# we're only interested in detecting branches (which count as "uses") on secret data.
|
||||||
|
if test x"$msan_enabled" = x"yes"; then
|
||||||
|
SECP_TRY_APPEND_CFLAGS([-fno-sanitize-memory-param-retval], SECP_CFLAGS)
|
||||||
|
print_msan_notice=yes
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if test x"$enable_coverage" = x"yes"; then
|
if test x"$enable_coverage" = x"yes"; then
|
||||||
SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DCOVERAGE=1"
|
SECP_CONFIG_DEFINES="$SECP_CONFIG_DEFINES -DCOVERAGE=1"
|
||||||
SECP_CFLAGS="-O0 --coverage $SECP_CFLAGS"
|
SECP_CFLAGS="-O0 --coverage $SECP_CFLAGS"
|
||||||
@@ -492,3 +506,10 @@ echo " CPPFLAGS = $CPPFLAGS"
|
|||||||
echo " SECP_CFLAGS = $SECP_CFLAGS"
|
echo " SECP_CFLAGS = $SECP_CFLAGS"
|
||||||
echo " CFLAGS = $CFLAGS"
|
echo " CFLAGS = $CFLAGS"
|
||||||
echo " LDFLAGS = $LDFLAGS"
|
echo " LDFLAGS = $LDFLAGS"
|
||||||
|
|
||||||
|
if test x"$print_msan_notice" = x"yes"; then
|
||||||
|
echo
|
||||||
|
echo "Note:"
|
||||||
|
echo " MemorySanitizer detected, tried to add -fno-sanitize-memory-param-retval to SECP_CFLAGS"
|
||||||
|
echo " to avoid false positives in ctime_tests. Pass --disable-ctime-tests to avoid this."
|
||||||
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user