qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] configure: Split valgrind test into pragma test


From: Blue Swirl
Subject: Re: [Qemu-devel] [PATCH] configure: Split valgrind test into pragma test and valgrind.h test
Date: Tue, 31 Jul 2012 20:20:36 +0000

Thanks, applied.

On Mon, Jul 30, 2012 at 3:13 PM, Peter Maydell <address@hidden> wrote:
> Split the configure test that checks for valgrind into two, one
> part checking whether we have the gcc pragma to disable unused-but-set
> variables, and the other part checking for the existence of valgrind.h.
> The first of these has to be compiled with -Werror and the second
> does not and shouldn't generate any warnings.
>
> This (a) allows us to enable "make errors in configure tests be
> build failures" and (b) enables use of valgrind on systems with
> a gcc which doesn't know about -Wunused-but-set-varibale, like
> Debian squeeze.
>
> Signed-off-by: Peter Maydell <address@hidden>
> ---
> This can be applied now and I think it ought to be sufficient
> that we could then apply the 11-patch configure series I sent
> earlier. If patch 1 in that series still causes trouble after
> this, then I'd suggest committing patches 2-10, to save yet
> more people sending patches to the list for those.
>
>  configure            |   23 +++++++++++++++++++++--
>  coroutine-ucontext.c |    4 ++++
>  2 files changed, 25 insertions(+), 2 deletions(-)
>
> diff --git a/configure b/configure
> index c65b5f6..1d713de 100755
> --- a/configure
> +++ b/configure
> @@ -2873,14 +2873,29 @@ if compile_prog "" "" ; then
>  fi
>
>  ########################################
> +# check whether we can disable the -Wunused-but-set-variable
> +# option with a pragma (this is needed to silence a warning in
> +# some versions of the valgrind VALGRIND_STACK_DEREGISTER macro.)
> +# This test has to be compiled with -Werror as otherwise an
> +# unknown pragma is only a warning.
> +pragma_disable_unused_but_set=no
> +cat > $TMPC << EOF
> +#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
> +int main(void) {
> +    return 0;
> +}
> +EOF
> +if compile_prog "-Werror" "" ; then
> +    pragma_disable_unused_but_set=yes
> +fi
> +
> +########################################
>  # check if we have valgrind/valgrind.h
>
>  valgrind_h=no
>  cat > $TMPC << EOF
>  #include <valgrind/valgrind.h>
> -#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
>  int main(void) {
> -  VALGRIND_STACK_DEREGISTER(0);
>    return 0;
>  }
>  EOF
> @@ -3397,6 +3412,10 @@ if test "$linux_magic_h" = "yes" ; then
>    echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
>  fi
>
> +if test "$pragma_disable_unused_but_set" = "yes" ; then
> +  echo "CONFIG_PRAGMA_DISABLE_UNUSED_BUT_SET=y" >> $config_host_mak
> +fi
> +
>  if test "$valgrind_h" = "yes" ; then
>    echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
>  fi
> diff --git a/coroutine-ucontext.c b/coroutine-ucontext.c
> index e3c450b..784081a 100644
> --- a/coroutine-ucontext.c
> +++ b/coroutine-ucontext.c
> @@ -200,14 +200,18 @@ Coroutine *qemu_coroutine_new(void)
>  }
>
>  #ifdef CONFIG_VALGRIND_H
> +#ifdef CONFIG_PRAGMA_DISABLE_UNUSED_BUT_SET
>  /* Work around an unused variable in the valgrind.h macro... */
>  #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
> +#endif
>  static inline void valgrind_stack_deregister(CoroutineUContext *co)
>  {
>      VALGRIND_STACK_DEREGISTER(co->valgrind_stack_id);
>  }
> +#ifdef CONFIG_PRAGMA_DISABLE_UNUSED_BUT_SET
>  #pragma GCC diagnostic error "-Wunused-but-set-variable"
>  #endif
> +#endif
>
>  void qemu_coroutine_delete(Coroutine *co_)
>  {
> --
> 1.7.9.5
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]