make check: Make valgrind optional

Message ID 20171122121550.18051-1-mpe@ellerman.id.au
State New
Headers show
Series
  • make check: Make valgrind optional
Related show

Commit Message

Michael Ellerman Nov. 22, 2017, 12:15 p.m.
To (slightly) lower the barrier for contributions, we can make valgrind
optional with just a small amount of plumbing.

This allows make check to run successfully without valgrind.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
---
 Makefile                   |  3 +++
 Makefile.main              |  8 +++++++-
 core/test/run-trace.c      |  2 +-
 hdata/test/hdata_to_dt.c   |  2 +-
 include/skiboot-valgrind.h | 35 +++++++++++++++++++++++++++++++++++
 5 files changed, 47 insertions(+), 3 deletions(-)
 create mode 100644 include/skiboot-valgrind.h

Patch

diff --git a/Makefile b/Makefile
index f88663df2b27..0aafdfbc7d72 100644
--- a/Makefile
+++ b/Makefile
@@ -20,6 +20,9 @@  endif
 #
 DEBUG ?= 0
 
+# Run tests under valgrind?
+USE_VALGRIND ?= 1
+
 #
 # Optional location of embedded linux kernel file
 # This can be a raw vmlinux, stripped vmlinux or
diff --git a/Makefile.main b/Makefile.main
index 5ca1f8d7c9ba..4713f86733e5 100644
--- a/Makefile.main
+++ b/Makefile.main
@@ -43,7 +43,7 @@  HOSTCFLAGS += -DDEBUG -DCCAN_LIST_DEBUG
 
 HOSTGCOVCFLAGS = -fprofile-arcs -ftest-coverage -lgcov -O0 -g -pg
 
-VALGRIND=valgrind -q --show-reachable=yes --error-exitcode=99
+VALGRIND := valgrind -q --show-reachable=yes --error-exitcode=99
 
 # Target options
 
@@ -88,6 +88,12 @@  ifeq ($(SKIBOOT_GCOV),1)
 CFLAGS += -fprofile-arcs -ftest-coverage -DSKIBOOT_GCOV=1
 endif
 
+ifeq ($(USE_VALGRIND),1)
+CFLAGS += -DUSE_VALGRIND=1
+else
+VALGRIND :=
+endif
+
 # Stack protector disabled for now. gcc tends to use the TLS to
 # access the canary (depending on how gcc was built), and this won't
 # work for us.
diff --git a/core/test/run-trace.c b/core/test/run-trace.c
index 980168868680..c319c05a3b92 100644
--- a/core/test/run-trace.c
+++ b/core/test/run-trace.c
@@ -26,7 +26,7 @@ 
 #include <sys/types.h>
 #include <sys/wait.h>
 
-#include <valgrind/valgrind.h>
+#include <skiboot-valgrind.h>
 
 /* Don't include these: PPC-specific */
 #define __CPU_H
diff --git a/hdata/test/hdata_to_dt.c b/hdata/test/hdata_to_dt.c
index f59791480a14..634d7a716dee 100644
--- a/hdata/test/hdata_to_dt.c
+++ b/hdata/test/hdata_to_dt.c
@@ -27,7 +27,7 @@ 
 #include <interrupts.h>
 #include <bitutils.h>
 
-#include <valgrind/memcheck.h>
+#include <skiboot-valgrind.h>
 
 #include "../../libfdt/fdt.c"
 #include "../../libfdt/fdt_ro.c"
diff --git a/include/skiboot-valgrind.h b/include/skiboot-valgrind.h
new file mode 100644
index 000000000000..bdeaa8f64ac3
--- /dev/null
+++ b/include/skiboot-valgrind.h
@@ -0,0 +1,35 @@ 
+/* Copyright 2017 IBM Corp.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __SKIBOOT_VALGRIND_H
+#define __SKIBOOT_VALGRIND_H
+
+#ifdef USE_VALGRIND
+#include <valgrind/valgrind.h>
+#include <valgrind/memcheck.h>
+#else
+
+#define RUNNING_ON_VALGRIND    0
+
+#define VALGRIND_MAKE_MEM_UNDEFINED(p, len)	\
+	do { 					\
+		(void)(p);			\
+		(void)(len);			\
+	} while (0)
+
+#endif
+
+#endif /* __SKIBOOT_VALGRIND_H */