From 97f9b45bfd36a7db1d0596f8975b9e4927e1dd6b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Fri, 6 Oct 2023 12:29:41 +0200
Subject: [PATCH] Add configure test for valgrind.

---
 ChangeLog             |  5 +++++
 aclocal.m4            | 18 ++++++++++++++++++
 configure.ac          |  3 +++
 testsuite/Makefile.in |  2 +-
 4 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 5cc37901..99661930 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2023-10-06  Niels Möller  <nisse@lysator.liu.se>
 
+	* aclocal.m4 (NETTLE_PROG_VALGRIND): New macro.
+	* configure.ac: Use it.
+	* testsuite/Makefile.in (TS_SH): Include side-channel tests only
+	if we have a working valgrind.
+
 	* misc/c89: New wrapper script to force compiling in c89 mode.
 
 2023-10-04  Niels Möller  <nisse@lysator.liu.se>
diff --git a/aclocal.m4 b/aclocal.m4
index 0d27e183..629db8a7 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -546,3 +546,21 @@ AC_DEFUN([GMP_ASM_POWERPC_R_REGISTERS],
 [AC_MSG_ERROR([neither "mtctr 6" nor "mtctr r6" works])])])])
 ASM_PPC_WANT_R_REGISTERS="$gmp_cv_asm_powerpc_r_registers"
 ])
+
+# Check if valgrind supports the platform we are compiling for.
+AC_DEFUN([NETTLE_PROG_VALGRIND],
+[AC_CACHE_CHECK([if valgrind is working],
+  nettle_cv_prog_valgrind,
+  [AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [
+    if valgrind -q ./conftest$EXEEXT 2>&AS_MESSAGE_LOG_FD; then
+      nettle_cv_prog_valgrind=yes
+    else
+      nettle_cv_prog_valgrind=no
+    fi], [nettle_cv_prog_valgrind=no])])
+  if test "$nettle_cv_prog_valgrind" = yes ; then
+    IF_VALGRIND=''
+  else
+    IF_VALGRIND='#'
+  fi
+  AC_SUBST(IF_VALGRIND)
+])
diff --git a/configure.ac b/configure.ac
index 177b40f3..867767a6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -171,6 +171,9 @@ AC_PROG_LN_S
 GMP_PROG_CC_FOR_BUILD
 GMP_PROG_EXEEXT_FOR_BUILD
 
+# Check if valgrind is working; expected to fail in cross builds.
+NETTLE_PROG_VALGRIND
+
 LSH_DEPENDENCY_TRACKING
 
 if test "x$enable_gcov" = "xyes"; then
diff --git a/testsuite/Makefile.in b/testsuite/Makefile.in
index 475ec97d..0cb896ff 100644
--- a/testsuite/Makefile.in
+++ b/testsuite/Makefile.in
@@ -68,7 +68,7 @@ TS_CXX = @IF_CXX@ $(CXX_SOURCES:.cxx=$(EXEEXT))
 TARGETS = $(TS_C) $(TS_CXX)
 TS_SC = sc-cnd-memcpy-test sc-gcm-test sc-memeql-test \
 	@IF_HOGWEED@ sc-pkcs1-sec-decrypt-test sc-rsa-sec-decrypt-test
-TS_SH = $(TS_SC) symbols-test
+TS_SH = symbols-test @IF_VALGRIND@ $(TS_SC)
 TS_ALL = $(TARGETS) $(TS_SH) @IF_DLOPEN_TEST@ dlopen-test$(EXEEXT)
 
 TS_FAT = $(patsubst %, %$(EXEEXT), aes-test cbc-test \
-- 
GitLab