Following change is very similar to what I did in: https://gcc.gnu.org/ml/gcc-patches/2016-01/msg02103.html
It's more logical to encapsulate valgrind annotation magic within a ENABLE_VALGRIND_ANNOTATIONS macro rather than ENABLE_VALGRIND_CHECKING. libcpp/ChangeLog: 2016-05-18 Martin Liska <mli...@suse.cz> * config.in: Regenerated. * configure: Likewise. * configure.ac: Handle --enable-valgrind-annotations. * lex.c (new_buff): Use ENABLE_VALGRIND_ANNOTATIONS instead of ENABLE_VALGRIND_CHECKING. (_cpp_free_buff): Likewise. --- libcpp/config.in | 3 +++ libcpp/configure | 22 ++++++++++++++++++++++ libcpp/configure.ac | 15 +++++++++++++++ libcpp/lex.c | 4 ++-- 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/libcpp/config.in b/libcpp/config.in index e02ac5e..3bbffe7 100644 --- a/libcpp/config.in +++ b/libcpp/config.in @@ -21,6 +21,9 @@ language is requested. */ #undef ENABLE_NLS +/* Define to get calls to the valgrind runtime enabled. */ +#undef ENABLE_VALGRIND_ANNOTATIONS + /* Define if you want to workaround valgrind (a memory checker) warnings about possible memory leaks because of libcpp use of interior pointers. */ #undef ENABLE_VALGRIND_CHECKING diff --git a/libcpp/configure b/libcpp/configure index 0342f16..b6f129c 100755 --- a/libcpp/configure +++ b/libcpp/configure @@ -703,6 +703,7 @@ enable_maintainer_mode enable_checking enable_canonical_system_headers enable_host_shared +enable_valgrind_annotations ' ac_precious_vars='build_alias host_alias @@ -1343,6 +1344,8 @@ Optional Features: --enable-canonical-system-headers enable or disable system headers canonicalization --enable-host-shared build host code as shared libraries + --enable-valgrind-annotations + enable valgrind runtime interaction Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -7355,6 +7358,25 @@ fi +# Check whether --enable-valgrind-annotations was given. +if test "${enable_valgrind_annotations+set}" = set; then : + enableval=$enable_valgrind_annotations; +else + enable_valgrind_annotations=no +fi + +if test x$enable_valgrind_annotations != xno \ + || test x$ac_valgrind_checking != x; then + if (test $have_valgrind_h = no \ + && test $gcc_cv_header_memcheck_h = no \ + && test $gcc_cv_header_valgrind_memcheck_h = no); then + as_fn_error "*** Can't find valgrind/memcheck.h, memcheck.h or valgrind.h" "$LINENO" 5 + fi + +$as_echo "#define ENABLE_VALGRIND_ANNOTATIONS 1" >>confdefs.h + +fi + # Output. ac_config_headers="$ac_config_headers config.h:config.in" diff --git a/libcpp/configure.ac b/libcpp/configure.ac index 0005c58..3077ee0 100644 --- a/libcpp/configure.ac +++ b/libcpp/configure.ac @@ -200,6 +200,21 @@ AC_ARG_ENABLE(host-shared, [PICFLAG=-fPIC], [PICFLAG=]) AC_SUBST(PICFLAG) +AC_ARG_ENABLE(valgrind-annotations, +[AS_HELP_STRING([--enable-valgrind-annotations], + [enable valgrind runtime interaction])], [], +[enable_valgrind_annotations=no]) +if test x$enable_valgrind_annotations != xno \ + || test x$ac_valgrind_checking != x; then + if (test $have_valgrind_h = no \ + && test $gcc_cv_header_memcheck_h = no \ + && test $gcc_cv_header_valgrind_memcheck_h = no); then + AC_MSG_ERROR([*** Can't find valgrind/memcheck.h, memcheck.h or valgrind.h]) + fi + AC_DEFINE(ENABLE_VALGRIND_ANNOTATIONS, 1, +[Define to get calls to the valgrind runtime enabled.]) +fi + # Output. AC_CONFIG_HEADERS(config.h:config.in, [echo timestamp > stamp-h1]) diff --git a/libcpp/lex.c b/libcpp/lex.c index e5a0397..236418d 100644 --- a/libcpp/lex.c +++ b/libcpp/lex.c @@ -3147,7 +3147,7 @@ new_buff (size_t len) len = MIN_BUFF_SIZE; len = CPP_ALIGN (len); -#ifdef ENABLE_VALGRIND_CHECKING +#ifdef ENABLE_VALGRIND_ANNOTATIONS /* Valgrind warns about uses of interior pointers, so put _cpp_buff struct first. */ size_t slen = CPP_ALIGN2 (sizeof (_cpp_buff), 2 * DEFAULT_ALIGNMENT); @@ -3244,7 +3244,7 @@ _cpp_free_buff (_cpp_buff *buff) for (; buff; buff = next) { next = buff->next; -#ifdef ENABLE_VALGRIND_CHECKING +#ifdef ENABLE_VALGRIND_ANNOTATIONS free (buff); #else free (buff->base); -- 2.8.2