[Top][All Lists]
[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
>