build failure with MinGW GCC 10.2
Hi,
I'm hitting an issue with x86_64-w64-mingw32-gcc (GCC) 10.2.0:
lib/librte_eal/windows/eal_memory.c:30:14: error: redeclaration of ‘enum MEM_EXTENDED_PARAMETER_TYPE’
and others:
redeclaration of enumerator ‘MemExtendedParameterInvalidType’ redeclaration of enumerator ‘MemExtendedParameterAddressRequirements’ redeclaration of enumerator ‘MemExtendedParameterNumaNode’ redeclaration of enumerator ‘MemExtendedParameterPartitionHandle’ redeclaration of enumerator ‘MemExtendedParameterUserPhysicalHandle’ redeclaration of enumerator ‘MemExtendedParameterAttributeFlags’ redeclaration of enumerator ‘MemExtendedParameterMax’ redefinition of ‘struct MEM_EXTENDED_PARAMETER’ "MEM_EXTENDED_PARAMETER_TYPE_BITS" redefined
I see in the code it should be avoided:
/* MinGW-w64 headers lack VirtualAlloc2() in some distributions.
* Provide a copy of definitions and code to load it dynamically.
* Note: definitions are copied verbatim from Microsoft documentation
* and don't follow DPDK code style.
*
* MEM_RESERVE_PLACEHOLDER being defined means VirtualAlloc2() is present too. */
#ifndef MEM_PRESERVE_PLACEHOLDER
Does it mean using this flag is not true anymore in recent MinGW?
Quoted 27 lines · Thomas Monjalon
Hi,
I'm hitting an issue with x86_64-w64-mingw32-gcc (GCC) 10.2.0:
lib/librte_eal/windows/eal_memory.c:30:14: error: redeclaration of ‘enum MEM_EXTENDED_PARAMETER_TYPE’and others:
redeclaration of enumerator ‘MemExtendedParameterInvalidType’ redeclaration of enumerator ‘MemExtendedParameterAddressRequirements’ redeclaration of enumerator ‘MemExtendedParameterNumaNode’ redeclaration of enumerator ‘MemExtendedParameterPartitionHandle’ redeclaration of enumerator ‘MemExtendedParameterUserPhysicalHandle’ redeclaration of enumerator ‘MemExtendedParameterAttributeFlags’ redeclaration of enumerator ‘MemExtendedParameterMax’ redefinition of ‘struct MEM_EXTENDED_PARAMETER’ "MEM_EXTENDED_PARAMETER_TYPE_BITS" redefinedI see in the code it should be avoided:
/* MinGW-w64 headers lack
VirtualAlloc2()in some distributions.
* Provide a copy of definitions and code to load it dynamically.
* Note: definitions are copied verbatim from Microsoft documentation
* and don't follow DPDK code style.
*
*MEM_RESERVE_PLACEHOLDERbeing defined meansVirtualAlloc2()is present too. */
#ifndefMEM_PRESERVE_PLACEHOLDER
Quoted 1 line
Does it mean using this flag is not true anymore in recent MinGW?
I think the #ifndef test is incorrect, maybe MEM_PRESERVE_PLACEHOLDER is not a macro in MinGW headers as it is in Windows SDK.
What's your environment?
I can't reproduce this with the latest MinGW-w64 8.0.0 for Windows from
https://sourceforge.net/projects/mingw-w64/files/, x86_64-win32-seh flavour (GCC 8.1.0), and neither with MinGW-w64 6.0.0 (9.3.0) on NixOS.
01/12/2020 14:52, Dmitry Kozlyuk:
Quoted 30 lines · Thomas Monjalon
Quoted 27 lines
Hi,
I'm hitting an issue with x86_64-w64-mingw32-gcc (GCC) 10.2.0:
lib/librte_eal/windows/eal_memory.c:30:14: error: redeclaration of ‘enum MEM_EXTENDED_PARAMETER_TYPE’and others:
redeclaration of enumerator ‘MemExtendedParameterInvalidType’ redeclaration of enumerator ‘MemExtendedParameterAddressRequirements’ redeclaration of enumerator ‘MemExtendedParameterNumaNode’ redeclaration of enumerator ‘MemExtendedParameterPartitionHandle’ redeclaration of enumerator ‘MemExtendedParameterUserPhysicalHandle’ redeclaration of enumerator ‘MemExtendedParameterAttributeFlags’ redeclaration of enumerator ‘MemExtendedParameterMax’ redefinition of ‘struct MEM_EXTENDED_PARAMETER’ "MEM_EXTENDED_PARAMETER_TYPE_BITS" redefinedI see in the code it should be avoided:
/* MinGW-w64 headers lack
VirtualAlloc2()in some distributions.
* Provide a copy of definitions and code to load it dynamically.
* Note: definitions are copied verbatim from Microsoft documentation
* and don't follow DPDK code style.
*
*MEM_RESERVE_PLACEHOLDERbeing defined meansVirtualAlloc2()is present too. */
#ifndefMEM_PRESERVE_PLACEHOLDERQuoted 1 line
Does it mean using this flag is not true anymore in recent MinGW?
Quoted 8 lines
I think the #ifndef test is incorrect, maybe
MEM_PRESERVE_PLACEHOLDERis not a macro in MinGW headers as it is in Windows SDK.What's your environment?
I can't reproduce this with the latest MinGW-w64 8.0.0 for Windows from
https://sourceforge.net/projects/mingw-w64/files/, x86_64-win32-seh flavour (GCC 8.1.0), and neither with MinGW-w64 6.0.0 (9.3.0) on NixOS.
I am using ArchLinux:
mingw-w64-gcc 10.2.0-2 mingw-w64-headers 8.0.0-1 mingw-w64-crt 8.0.0-1
Quoted 4 lines · Thomas Monjalon
I am using ArchLinux:
mingw-w64-gcc 10.2.0-2 mingw-w64-headers 8.0.0-1 mingw-w64-crt 8.0.0-1
Reproduced, working on the patch, thanks.