tools/kdd: work around gcc 8.1 bug
authorWei Liu <wei.liu2@citrix.com>
Mon, 6 Aug 2018 10:35:18 +0000 (11:35 +0100)
committerWei Liu <wei.liu2@citrix.com>
Mon, 20 Aug 2018 10:49:46 +0000 (11:49 +0100)
Gcc 8.1 has a bug that causes kdd fail to build. Rewrite the code to
work around that bug.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86827

Signed-off-by: Tim Deegan <tim@xen.org>
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Tested-by: Wei Liu <wei.liu2@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
tools/debugger/kdd/kdd.c

index 5a019a0a0ca21d30a875d2ecc5e2fd13d6d73f9f..fb8c6453557b7e9372a5e4029edf7ad04e0cecef 100644 (file)
@@ -687,11 +687,10 @@ static void kdd_handle_read_ctrl(kdd_state *s)
         }
     } else {
         /* 32-bit control-register space starts at 0x[2]cc, for 84 bytes */
-        uint32_t offset = addr;
-        if (offset > 0x200)
-            offset -= 0x200;
-        offset -= 0xcc;
-        if (offset > sizeof ctrl.c32 || offset + len > sizeof ctrl.c32) {
+        uint32_t offset = addr - 0xcc;
+        if (offset > sizeof ctrl.c32)
+            offset -= 0x2cc;
+        if (offset > sizeof ctrl.c32 || len > sizeof ctrl.c32 - offset) {
             KDD_LOG(s, "Request outside of known control space\n");
             len = 0;
         } else {