qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] qga/commands-win32: Fix problem with redundant protype decla


From: Marc-André Lureau
Subject: Re: [PATCH] qga/commands-win32: Fix problem with redundant protype declaration
Date: Tue, 15 Sep 2020 17:55:40 +0400

Hi

On Tue, Sep 15, 2020 at 4:57 PM Philippe Mathieu-Daudé <philmd@redhat.com> wrote:
Cc'ing Marc-André

On 9/15/20 1:47 PM, Thomas Huth wrote:
> When compiling QEMU with MSYS2 on Windows, there is currently the
> following error:
>
> ../qga/commands-win32.c:62:24: error: redundant redeclaration of
>  'CM_Get_DevNode_PropertyW' [-Werror=redundant-decls]
>    62 | CMAPI CONFIGRET WINAPI CM_Get_DevNode_PropertyW(
>       |                        ^~~~~~~~~~~~~~~~~~~~~~~~
> In file included from ../qga/commands-win32.c:26:
> C:/tools/msys64/mingw64/x86_64-w64-mingw32/include/cfgmgr32.h:840:26: note:
>  previous declaration of 'CM_Get_DevNode_PropertyW' was here
>   840 |   CMAPI CONFIGRET WINAPI CM_Get_DevNode_PropertyW(DEVINST dnDevInst,
>    const DEVPROPKEY *PropertyKey, DEVPROPTYPE *PropertyType, PBYTE PropertyBuffer,
>    PULONG PropertyBufferSize, ULONG ulFlags);
>
> Seems like this protype is sometimes available in the cfgmgr32.h
> header, and sometimes not.

This prototype is declared Since Windows Vista, but per
commit 4ac80866476 ("qga: drop < Vista compatibility")
it should be always true... So I'm confused.

Maybe we should build with:

  QEMU_BUILD_BUG_ON(_WIN32_WINNT < 0x0600); /* Vista */

Commit 56cdca1d7a6 ("build-sys: build with Vista API by default")
defines it if missing... Maybe that's where this problem comes
from? (On too old includes we force them as Vista).


It doesn't have much to do with _WIN32_WINNT version, I think

The prototype was quite recently added in mingw-headers by Tomáš:
commit 5ace9333fa948dd4ce73bd262aaf0df39a0cf6ef
Author: Tomáš Golembiovský <tgolembi@redhat.com>
Date:   Fri Oct 18 11:22:22 2019 +0200

    include/cfgmgr32.h: add CM_Get_DevNode_PropertyW

It should be fine to silence the warning as proposed here.

> Let's silence the compiler warning here
> to let the build pass with -Werror, too.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  I can take this through my "testing" tree together with some other
>  MSYS2 patches if there are no objections.
>
>  qga/commands-win32.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/qga/commands-win32.c b/qga/commands-win32.c
> index 48d8bbe649..0c3c05484f 100644
> --- a/qga/commands-win32.c
> +++ b/qga/commands-win32.c
> @@ -57,8 +57,10 @@ DEFINE_DEVPROPKEY(qga_DEVPKEY_Device_DriverDate, 0xa8b865dd, 0x2e3d,
>  DEFINE_DEVPROPKEY(qga_DEVPKEY_Device_DriverVersion, 0xa8b865dd, 0x2e3d,
>      0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 3);
>      /* DEVPROP_TYPE_STRING */
> -/* The following shoud be in cfgmgr32.h, but it isn't */
> +/* The CM_Get_DevNode_PropertyW prototype is only sometimes in cfgmgr32.h */
>  #ifndef CM_Get_DevNode_Property
> +#pragma GCC diagnostic push
> +#pragma GCC diagnostic ignored "-Wredundant-decls"
>  CMAPI CONFIGRET WINAPI CM_Get_DevNode_PropertyW(
>      DEVINST          dnDevInst,
>      CONST DEVPROPKEY * PropertyKey,
> @@ -68,6 +70,7 @@ CMAPI CONFIGRET WINAPI CM_Get_DevNode_PropertyW(
>      ULONG            ulFlags
>  );
>  #define CM_Get_DevNode_Property CM_Get_DevNode_PropertyW
> +#pragma GCC diagnostic pop
>  #endif

>  #ifndef SHTDN_REASON_FLAG_PLANNED
>





--
Marc-André Lureau

reply via email to

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