eal/windows: fix mingw build

Message ID 20231122163228.986037-1-bruce.richardson@intel.com (mailing list archive)
State Not Applicable, archived
Delegated to: Thomas Monjalon
Headers
Series eal/windows: fix mingw build |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS

Commit Message

Bruce Richardson Nov. 22, 2023, 4:32 p.m. UTC
  When compiling with mingw on Ubuntu 23.10, I get the following compiler
error:

../../lib/eal/windows/eal_memory.c:77: error: "MEM_REPLACE_PLACEHOLDER" redefined [-Werror]
   77 | #define MEM_REPLACE_PLACEHOLDER   0x00004000
      |
In file included from /usr/share/mingw-w64/include/minwindef.h:163,
                 from /usr/share/mingw-w64/include/windef.h:9,
                 from /usr/share/mingw-w64/include/windows.h:69,
                 from ../../lib/eal/windows/include/rte_windows.h:32,
                 from ../../lib/eal/windows/include/rte_os_shim.h:9,
                 from ../../lib/eal/common/eal_internal_cfg.h:14,
                 from ../../lib/eal/windows/eal_memory.c:11:
/usr/share/mingw-w64/include/winnt.h:5710: note: this is the location of the previous definition
 5710 | #define MEM_REPLACE_PLACEHOLDER 0x4000

and a similar error for MEM_RESERVE_PLACEHOLDER. These errors can be
fixed by wrapping the two defines in #ifndef .. #endif blocks.

Fixes: 2a5d547a4a9b ("eal/windows: implement basic memory management")
Cc: dmitry.kozliuk@gmail.com
Cc: stable@dpdk.org

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/eal/windows/eal_memory.c | 5 +++++
 1 file changed, 5 insertions(+)
  

Comments

David Marchand Nov. 22, 2023, 4:36 p.m. UTC | #1
On Wed, Nov 22, 2023 at 5:32 PM Bruce Richardson
<bruce.richardson@intel.com> wrote:
>
> When compiling with mingw on Ubuntu 23.10, I get the following compiler
> error:
>
> ../../lib/eal/windows/eal_memory.c:77: error: "MEM_REPLACE_PLACEHOLDER" redefined [-Werror]
>    77 | #define MEM_REPLACE_PLACEHOLDER   0x00004000
>       |
> In file included from /usr/share/mingw-w64/include/minwindef.h:163,
>                  from /usr/share/mingw-w64/include/windef.h:9,
>                  from /usr/share/mingw-w64/include/windows.h:69,
>                  from ../../lib/eal/windows/include/rte_windows.h:32,
>                  from ../../lib/eal/windows/include/rte_os_shim.h:9,
>                  from ../../lib/eal/common/eal_internal_cfg.h:14,
>                  from ../../lib/eal/windows/eal_memory.c:11:
> /usr/share/mingw-w64/include/winnt.h:5710: note: this is the location of the previous definition
>  5710 | #define MEM_REPLACE_PLACEHOLDER 0x4000
>
> and a similar error for MEM_RESERVE_PLACEHOLDER. These errors can be
> fixed by wrapping the two defines in #ifndef .. #endif blocks.
>
> Fixes: 2a5d547a4a9b ("eal/windows: implement basic memory management")
> Cc: dmitry.kozliuk@gmail.com
> Cc: stable@dpdk.org
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>

Probably a duplicate of
https://patchwork.dpdk.org/project/dpdk/patch/20231114170529.176665-1-getelson@nvidia.com/
  
Bruce Richardson Nov. 22, 2023, 4:41 p.m. UTC | #2
On Wed, Nov 22, 2023 at 05:36:44PM +0100, David Marchand wrote:
> On Wed, Nov 22, 2023 at 5:32 PM Bruce Richardson
> <bruce.richardson@intel.com> wrote:
> >
> > When compiling with mingw on Ubuntu 23.10, I get the following compiler
> > error:
> >
> > ../../lib/eal/windows/eal_memory.c:77: error: "MEM_REPLACE_PLACEHOLDER" redefined [-Werror]
> >    77 | #define MEM_REPLACE_PLACEHOLDER   0x00004000
> >       |
> > In file included from /usr/share/mingw-w64/include/minwindef.h:163,
> >                  from /usr/share/mingw-w64/include/windef.h:9,
> >                  from /usr/share/mingw-w64/include/windows.h:69,
> >                  from ../../lib/eal/windows/include/rte_windows.h:32,
> >                  from ../../lib/eal/windows/include/rte_os_shim.h:9,
> >                  from ../../lib/eal/common/eal_internal_cfg.h:14,
> >                  from ../../lib/eal/windows/eal_memory.c:11:
> > /usr/share/mingw-w64/include/winnt.h:5710: note: this is the location of the previous definition
> >  5710 | #define MEM_REPLACE_PLACEHOLDER 0x4000
> >
> > and a similar error for MEM_RESERVE_PLACEHOLDER. These errors can be
> > fixed by wrapping the two defines in #ifndef .. #endif blocks.
> >
> > Fixes: 2a5d547a4a9b ("eal/windows: implement basic memory management")
> > Cc: dmitry.kozliuk@gmail.com
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> 
> Probably a duplicate of
> https://patchwork.dpdk.org/project/dpdk/patch/20231114170529.176665-1-getelson@nvidia.com/
>

Yep, duplicate. I'll reject my patch in patchwork. Hopefully the patch
above will be merged soon to make this issue go away! :-)

/Bruce
  

Patch

diff --git a/lib/eal/windows/eal_memory.c b/lib/eal/windows/eal_memory.c
index 215d768e2c..64598745de 100644
--- a/lib/eal/windows/eal_memory.c
+++ b/lib/eal/windows/eal_memory.c
@@ -74,8 +74,13 @@  static VirtualAlloc2_type VirtualAlloc2_ptr;
 
 #define MEM_COALESCE_PLACEHOLDERS 0x00000001
 #define MEM_PRESERVE_PLACEHOLDER  0x00000002
+
+#ifndef MEM_REPLACE_PLACEHOLDER
 #define MEM_REPLACE_PLACEHOLDER   0x00004000
+#endif
+#ifndef MEM_RESERVE_PLACEHOLDER
 #define MEM_RESERVE_PLACEHOLDER   0x00040000
+#endif
 
 int
 eal_mem_win32api_init(void)