>From 75022d6e7464eb0122d25faaa8447773492bf1c1 Mon Sep 17 00:00:00 2001
From: Vladimir Bespalov <vlad.botanic@gmail.com>
Date: Fri, 2 Feb 2018 04:11:26 -0800
Subject: [PATCH] winedbg: fix compilation warning - enum value scope

when compiled with clang the following warning message is produced:

../../../programs/winedbg/gdbproxy.c:1586:27: warning: comparison of
constant -1 with expression of type 'enum be_xpoint_type' is always
true [-Wtautological-constant-out-of-range-compare]
             if (xpt->type != -1 && xpt_addr >= addr && xpt_addr < addr
+ blk_len)
                 ~~~~~~~~~ ^  ~~
../../../programs/winedbg/gdbproxy.c:2236:23: warning: comparison of
constant -1 with expression of type 'enum be_xpoint_type' is always
false [-Wtautological-constant-out-of-range-compare]
         if (xpt->type == -1)
             ~~~~~~~~~ ^  ~~
2 warnings generated.

The changeset adds explicit enum member with value (-1) to make sure
underlying type would have this value allowed.

Signed-off-by: Vlad Bespalov <vlad.botanic@gmail.com>
---
 programs/winedbg/be_cpu.h   | 2 +-
 programs/winedbg/gdbproxy.c | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/programs/winedbg/be_cpu.h b/programs/winedbg/be_cpu.h
index 889f638ec0..d62b5177a3 100644
--- a/programs/winedbg/be_cpu.h
+++ b/programs/winedbg/be_cpu.h
@@ -20,7 +20,7 @@
 
 enum be_cpu_addr {be_cpu_addr_pc, be_cpu_addr_stack, be_cpu_addr_frame};
 enum be_xpoint_type {be_xpoint_break, be_xpoint_watch_exec, be_xpoint_watch_read,
-                     be_xpoint_watch_write};
+                     be_xpoint_watch_write, be_xpoint_free=-1};
 struct backend_cpu
 {
     const DWORD         machine;
diff --git a/programs/winedbg/gdbproxy.c b/programs/winedbg/gdbproxy.c
index 7b9a4768ac..5fa48830e2 100644
--- a/programs/winedbg/gdbproxy.c
+++ b/programs/winedbg/gdbproxy.c
@@ -74,7 +74,7 @@
 
 struct gdb_ctx_Xpoint
 {
-    enum be_xpoint_type         type;   /* -1 means free */
+    enum be_xpoint_type         type;   /* (-1) == be_xpoint_free means free */
     void*                       addr;
     unsigned long               val;
 };
@@ -1583,7 +1583,7 @@ static BOOL read_memory(struct gdb_context *gdbctx, char *addr, char *buffer, SI
         {
             char *xpt_addr = xpt->addr;
 
-            if (xpt->type != -1 && xpt_addr >= addr && xpt_addr < addr + blk_len)
+            if (xpt->type != be_xpoint_free && xpt_addr >= addr && xpt_addr < addr + blk_len)
                 buffer[xpt_addr - addr] = xpt->val;
         }
     }
@@ -2192,7 +2192,7 @@ static enum packet_return packet_remove_breakpoint(struct gdb_context* gdbctx)
                                       gdbctx->process->process_io, &gdbctx->context,
                                       t, xpt->addr, xpt->val, len))
             {
-                xpt->type = -1;
+                xpt->type = be_xpoint_free;
                 return packet_ok;
             }
             break;
@@ -2233,7 +2233,7 @@ static enum packet_return packet_set_breakpoint(struct gdb_context* gdbctx)
     /* really set the Xpoint */
     for (xpt = &gdbctx->Xpoints[NUM_XPOINT - 1]; xpt >= gdbctx->Xpoints; xpt--)
     {
-        if (xpt->type == -1)
+        if (xpt->type == be_xpoint_free)
         {
             if (be_cpu->insert_Xpoint(gdbctx->process->handle,
                                       gdbctx->process->process_io, &gdbctx->context, 
-- 
2.16.1

