aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Ellerman <mpe@ellerman.id.au>2017-11-22 23:15:50 +1100
committerStewart Smith <stewart@linux.vnet.ibm.com>2017-12-18 17:58:32 -0600
commit427cc73b1eab4b4512fbaf623f9a120c6afdf09f (patch)
tree0b4b535bbf49601e222c7972858c96b5d1b44d43
parent8e88ab0e66a201a1d786e7e95c98314bf4e806e7 (diff)
downloadskiboot-427cc73b1eab4b4512fbaf623f9a120c6afdf09f.zip
skiboot-427cc73b1eab4b4512fbaf623f9a120c6afdf09f.tar.gz
skiboot-427cc73b1eab4b4512fbaf623f9a120c6afdf09f.tar.bz2
make check: Make valgrind optional
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> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
-rw-r--r--Makefile3
-rw-r--r--Makefile.main8
-rw-r--r--core/test/run-trace.c2
-rw-r--r--hdata/test/hdata_to_dt.c2
-rw-r--r--include/skiboot-valgrind.h35
5 files changed, 47 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index 6a7bab5..3b962a1 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 73c9196..c8f0a3b 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
@@ -84,6 +84,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 9801688..c319c05 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 f597914..634d7a7 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 0000000..bdeaa8f
--- /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 */