aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2009-03-09 19:10:18 +0100
committerMax Kellermann <max@duempel.org>2009-03-09 19:10:18 +0100
commit940af669b3a703145185c947e31d1d3374bc66da (patch)
tree35e85b3089e4db8a6d4b02b611034f6f99e0207a
parentfd76e29fbaac10158e47fcec44133a038fb23909 (diff)
poison: added valgrind support
If the header valgrind/memcheck.h is available, add VALGRIND_MAKE_MEM_NOACCESS() and VALGRIND_MAKE_MEM_UNDEFINED() support, which enables nice warnings in the valgrind memory checker.
-rw-r--r--configure.ac1
-rw-r--r--src/poison.h14
2 files changed, 15 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index ac5819f3..1358b063 100644
--- a/configure.ac
+++ b/configure.ac
@@ -101,6 +101,7 @@ AC_CHECK_LIB(nsl,gethostbyname,MPD_LIBS="$MPD_LIBS -lnsl",)
AC_CHECK_LIB(m,exp,MPD_LIBS="$MPD_LIBS -lm",)
AC_CHECK_HEADERS(locale.h)
+AC_CHECK_HEADERS(valgrind/memcheck.h)
dnl
diff --git a/src/poison.h b/src/poison.h
index d37ff233..fa924a31 100644
--- a/src/poison.h
+++ b/src/poison.h
@@ -20,6 +20,12 @@
#define MPD_POISON_H
#ifndef NDEBUG
+#include "config.h"
+
+#ifdef HAVE_VALGRIND_MEMCHECK_H
+#include <valgrind/memcheck.h>
+#endif
+
#include <string.h>
#endif
@@ -37,6 +43,10 @@ poison_noaccess(void *p, size_t length)
(void)length;
#else
memset(p, 0x01, length);
+
+#ifdef HAVE_VALGRIND_MEMCHECK_H
+ VALGRIND_MAKE_MEM_NOACCESS(p, length);
+#endif
#endif
}
@@ -54,6 +64,10 @@ poison_undefined(void *p, size_t length)
(void)length;
#else
memset(p, 0x02, length);
+
+#ifdef HAVE_VALGRIND_MEMCHECK_H
+ VALGRIND_MAKE_MEM_UNDEFINED(p, length);
+#endif
#endif
}