--enable-valgrind-annotations is intended to define macro USE_VG_ANNOTATIONS but configure.ac is missing the needed AC_DEFINE. USE_VG_ANNOTATIONS also guards an `#include <helgrind.h>` statement which should instead be `#include <valgrind/helgrind.h>`.
Fix this by adding an AC_DEFINE for USE_VG_ANNOTATIONS and using `#include <valgrind/helgrind.h>`. Also move this #include and the stub ANNOTATE_* macros from libdw/libdw_alloc.c to lib/locks.h so they can be used outside of libdw_alloc.c. A stub for VALGRIND_HG_DISABLE_CHECKING has been added as well. The --with-valgrind include directory is now passed to CPPFLAGS instead of CFLAGS since valgrind/helgrind.h may be included in C++ source files as well. CPPFLAGS is now printed in the configure summary as well. Signed-off-by: Aaron Merey <[email protected]> --- configure.ac | 9 ++++++--- lib/locks.h | 8 ++++++++ libdw/libdw_alloc.c | 6 ------ 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/configure.ac b/configure.ac index b0d1b48d..f6436ba7 100644 --- a/configure.ac +++ b/configure.ac @@ -426,13 +426,13 @@ AC_ARG_WITH([valgrind], AS_HELP_STRING([--with-valgrind],[include directory for Valgrind headers]), [with_valgrind_headers=$withval], [with_valgrind_headers=no]) if test "x$with_valgrind_headers" != xno; then - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -I$with_valgrind_headers" + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I$with_valgrind_headers" AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ #include <valgrind/valgrind.h> int main() { return 0; } ]])], [ HAVE_VALGRIND_HEADERS="yes" - CFLAGS="$save_CFLAGS -I$with_valgrind_headers" ], + CPPFLAGS="$save_CPPFLAGS -I$with_valgrind_headers" ], [ AC_MSG_ERROR([invalid valgrind include directory: $with_valgrind_headers]) ]) fi @@ -454,6 +454,8 @@ if test "$use_vg_annotations" = yes; then ]])], [ AC_MSG_RESULT([yes]) ], [ AC_MSG_ERROR([valgrind annotations requested but no headers are available]) ]) fi + AC_DEFINE([USE_VG_ANNOTATIONS], [1], + [Defined if valgrind annotations are enabled.]) fi AM_CONDITIONAL(USE_VG_ANNOTATIONS, test "$use_vg_annotations" = yes) @@ -1093,6 +1095,7 @@ AC_MSG_NOTICE([ CFLAGS=${CFLAGS} CXXFLAGS=${CXXFLAGS} + CPPFLAGS=${CPPFLAGS} RECOMMENDED FEATURES (should all be yes) gzip support : ${with_zlib} diff --git a/lib/locks.h b/lib/locks.h index 9c17eca7..9b303092 100644 --- a/lib/locks.h +++ b/lib/locks.h @@ -29,6 +29,14 @@ #ifndef LOCKS_H #define LOCKS_H 1 +#if USE_VG_ANNOTATIONS == 1 +# include <valgrind/helgrind.h> +#else +# define ANNOTATE_HAPPENS_BEFORE(X) +# define ANNOTATE_HAPPENS_AFTER(X) +# define VALGRIND_HG_DISABLE_CHECKING(X, Y) +#endif + #ifdef USE_LOCKS # include <pthread.h> # include <assert.h> diff --git a/libdw/libdw_alloc.c b/libdw/libdw_alloc.c index 86c59908..d147d93d 100644 --- a/libdw/libdw_alloc.c +++ b/libdw/libdw_alloc.c @@ -36,12 +36,6 @@ #include "libdwP.h" #include "system.h" #include <stdatomic.h> -#if USE_VG_ANNOTATIONS == 1 -#include <helgrind.h> -#else -#define ANNOTATE_HAPPENS_BEFORE(X) -#define ANNOTATE_HAPPENS_AFTER(X) -#endif #define THREAD_ID_UNSET ((size_t) -1) static __thread size_t thread_id = THREAD_ID_UNSET; -- 2.55.0
