diff options
-rw-r--r-- | Makefile | 3 | ||||
-rw-r--r-- | Makefile.main | 8 | ||||
-rw-r--r-- | core/test/run-trace.c | 2 | ||||
-rw-r--r-- | hdata/test/hdata_to_dt.c | 2 | ||||
-rw-r--r-- | include/skiboot-valgrind.h | 35 |
5 files changed, 47 insertions, 3 deletions
@@ -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 */ |