@@ -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
@@ -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.
@@ -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
@@ -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"
new file mode 100644
@@ -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 */
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