[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] spice: Fix warning reg. 'defined' in macro
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH] spice: Fix warning reg. 'defined' in macro |
Date: |
Mon, 8 Aug 2016 11:10:18 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 |
On 07/08/2016 03:25, Pranith Kumar wrote:
> Clang produces the following warning. The warning is detailed here:
> https://reviews.llvm.org/D15866
>
> /home/pranith/devops/code/qemu/hw/display/qxl.c:507:5: warning: macro
> expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
> #if SPICE_NEEDS_SET_MM_TIME
> ^
> /home/pranith/devops/code/qemu/include/ui/qemu-spice.h:46:5: note: expanded
> from macro 'SPICE_NEEDS_SET_MM_TIME'
> (!defined(SPICE_SERVER_VERSION) || (SPICE_SERVER_VERSION < 0xc06))
> ^
> /home/pranith/devops/code/qemu/hw/display/qxl.c:1074:5: warning: macro
> expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
> #if SPICE_NEEDS_SET_MM_TIME
> ^
> /home/pranith/devops/code/qemu/include/ui/qemu-spice.h:46:5: note: expanded
> from macro 'SPICE_NEEDS_SET_MM_TIME'
> (!defined(SPICE_SERVER_VERSION) || (SPICE_SERVER_VERSION < 0xc06))
> ^
>
> Signed-off-by: Pranith Kumar <address@hidden>
> ---
> include/ui/qemu-spice.h | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/include/ui/qemu-spice.h b/include/ui/qemu-spice.h
> index edad5e7..3979a1e 100644
> --- a/include/ui/qemu-spice.h
> +++ b/include/ui/qemu-spice.h
> @@ -42,8 +42,7 @@ int qemu_spice_set_pw_expire(time_t expires);
> int qemu_spice_migrate_info(const char *hostname, int port, int tls_port,
> const char *subject);
>
> -#define SPICE_NEEDS_SET_MM_TIME \
> - (!defined(SPICE_SERVER_VERSION) || (SPICE_SERVER_VERSION < 0xc06))
> +#define SPICE_NEEDS_SET_MM_TIME (SPICE_SERVER_VERSION < 0xc06)
>
> #if SPICE_SERVER_VERSION >= 0x000c02
> void qemu_spice_register_ports(void);
>
Hmm, no, the patch is not okay because we use -Wundef. The GCC manual says:
If the 'defined' operator appears as a result of a macro expansion,
the C standard says the behavior is undefined. GNU cpp treats it as
a genuine 'defined' operator and evaluates it normally. It will warn
wherever your code uses this feature if you use the command-line
option '-pedantic', since other compilers may handle it differently.
So this is another instance of clang putting warnings in the wrong
category. Please add -Wno-expansion-to-defined instead.
Paolo