From 427cc73b1eab4b4512fbaf623f9a120c6afdf09f Mon Sep 17 00:00:00 2001 From: Michael Ellerman Date: Wed, 22 Nov 2017 23:15:50 +1100 Subject: 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 Signed-off-by: Stewart Smith --- 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 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 #include -#include +#include /* 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 #include -#include +#include #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 +#include +#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 */ -- cgit v1.1