[Skiboot] [PATCH] make check: Make valgrind optional
Michael Ellerman
mpe at ellerman.id.au
Wed Nov 22 23:15:50 AEDT 2017
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 at 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
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 */
--
2.14.3
More information about the Skiboot
mailing list