diff --git a/backend.h b/backend.h
index 2433c91..59a6201 100644
--- a/backend.h
+++ b/backend.h
@@ -8,6 +8,7 @@
 #include <assert.h>
 #include <errno.h>
 #include <stdbool.h>
+#include <stddef.h>
 #include <stdint.h>
 #include <mtd/mtd-abi.h>
 
@@ -269,13 +270,13 @@
 #else
 static inline struct backend backend_get_vpnor(void)
 {
-	struct backend be = { 0 };
+	struct backend be = { NULL, NULL, 0, 0, 0 };
 
 	return be;
 }
 
-static inline int backend_probe_vpnor(struct backend *master,
-				      const struct vpnor_partition_paths *paths)
+static inline int backend_probe_vpnor(struct backend *master __attribute__((unused)),
+				      const struct vpnor_partition_paths *paths __attribute__((unused)))
 {
 	return -ENOTSUP;
 }
diff --git a/control.c b/control.c
index 4f472f1..b49d25e 100644
--- a/control.c
+++ b/control.c
@@ -11,7 +11,7 @@
 #include "protocol.h"
 #include "windows.h"
 
-int control_ping(struct mbox_context *context)
+int control_ping(struct mbox_context *context __attribute__((unused)))
 {
 	return 0;
 }
diff --git a/control_dbus.c b/control_dbus.c
index 4fb9e33..f463d69 100644
--- a/control_dbus.c
+++ b/control_dbus.c
@@ -13,7 +13,7 @@
 typedef int (*control_action)(struct mbox_context *context);
 
 static int control_dbus_directive(sd_bus_message *m, void *userdata,
-					sd_bus_error *ret_error,
+					sd_bus_error *ret_error __attribute__((unused)),
 					control_action action)
 {
 	struct mbox_context *context;
@@ -22,7 +22,7 @@
 
 	if (!action) {
 		MSG_ERR("No action provided\n");
-		return -EINVAL; 
+		return -EINVAL;
 	}
 
 	context = (struct mbox_context *) userdata;
@@ -79,7 +79,7 @@
 }
 
 static int control_dbus_resume(sd_bus_message *m, void *userdata,
-				     sd_bus_error *ret_error)
+			       sd_bus_error *ret_error __attribute__((unused)))
 {
 	struct mbox_context *context;
 	sd_bus_message *n;
@@ -112,7 +112,7 @@
 }
 
 static int control_dbus_set_backend(sd_bus_message *m, void *userdata,
-				    sd_bus_error *ret_error)
+				    sd_bus_error *ret_error __attribute__((unused)))
 {
 	struct mbox_context *context;
 	struct backend backend;
@@ -197,10 +197,12 @@
 	return rc;
 }
 
-static int control_dbus_get_u8(sd_bus *bus, const char *path,
-			       const char *interface, const char *property,
+static int control_dbus_get_u8(sd_bus *bus __attribute__((unused)),
+			       const char *path,
+			       const char *interface __attribute__((unused)),
+			       const char *property,
 			       sd_bus_message *reply, void *userdata,
-			       sd_bus_error *ret_error)
+			       sd_bus_error *ret_error __attribute__((unused)))
 {
 	struct mbox_context *context = userdata;
 	uint8_t value;
diff --git a/control_legacy.c b/control_legacy.c
index 2a3461d..c76d1c8 100644
--- a/control_legacy.c
+++ b/control_legacy.c
@@ -41,8 +41,8 @@
  * Resp: NONE
  */
 static int control_legacy_ping(struct mbox_context *context,
-			   struct mbox_dbus_msg *req,
-			   struct mbox_dbus_msg *resp)
+			   struct mbox_dbus_msg *req __attribute__((unused)),
+			   struct mbox_dbus_msg *resp __attribute__((unused)))
 {
 	return control_ping(context);
 }
@@ -55,7 +55,7 @@
  * Resp[0]: Status Code
  */
 static int control_legacy_daemon_state(struct mbox_context *context,
-					  struct mbox_dbus_msg *req,
+					  struct mbox_dbus_msg *req __attribute__((unused)),
 					  struct mbox_dbus_msg *resp)
 {
 	resp->num_args = DAEMON_STATE_NUM_ARGS;
@@ -73,9 +73,10 @@
  * Resp[0]: LPC Bus State Code
  */
 static int control_legacy_lpc_state(struct mbox_context *context,
-				       struct mbox_dbus_msg *req,
+				       struct mbox_dbus_msg *req __attribute__((unused)),
 				       struct mbox_dbus_msg *resp)
 {
+
 	resp->num_args = LPC_STATE_NUM_ARGS;
 	resp->args = calloc(resp->num_args, sizeof(*resp->args));
 	resp->args[0] = control_lpc_state(context);
@@ -92,8 +93,8 @@
  * Resp: NONE
  */
 static int control_legacy_reset(struct mbox_context *context,
-				   struct mbox_dbus_msg *req,
-				   struct mbox_dbus_msg *resp)
+				   struct mbox_dbus_msg *req __attribute__((unused)),
+				   struct mbox_dbus_msg *resp __attribute__((unused)))
 {
 	int rc;
 
@@ -117,8 +118,8 @@
  * Resp: NONE
  */
 static int control_legacy_kill(struct mbox_context *context,
-				  struct mbox_dbus_msg *req,
-				  struct mbox_dbus_msg *resp)
+				  struct mbox_dbus_msg *req __attribute__((unused)),
+				  struct mbox_dbus_msg *resp __attribute__((unused)))
 {
 	return control_kill(context);
 }
@@ -134,8 +135,8 @@
  * Resp: NONE
  */
 static int control_legacy_modified(struct mbox_context *context,
-				      struct mbox_dbus_msg *req,
-				      struct mbox_dbus_msg *resp)
+				      struct mbox_dbus_msg *req __attribute__((unused)),
+				      struct mbox_dbus_msg *resp __attribute__((unused)))
 {
 	return control_modified(context);
 }
@@ -150,8 +151,8 @@
  * Resp: NONE
  */
 static int control_legacy_suspend(struct mbox_context *context,
-				     struct mbox_dbus_msg *req,
-				     struct mbox_dbus_msg *resp)
+				     struct mbox_dbus_msg *req __attribute__((unused)),
+				     struct mbox_dbus_msg *resp __attribute__((unused)))
 {
 	int rc;
 
@@ -173,7 +174,7 @@
  */
 static int control_legacy_resume(struct mbox_context *context,
 				    struct mbox_dbus_msg *req,
-				    struct mbox_dbus_msg *resp)
+				    struct mbox_dbus_msg *resp __attribute__((unused)))
 {
 	int rc;
 
@@ -205,12 +206,13 @@
 };
 
 static int method_cmd(sd_bus_message *m, void *userdata,
-		      sd_bus_error *ret_error)
+		      sd_bus_error *ret_error __attribute__((unused)))
 {
 	struct mbox_dbus_msg req = { 0 }, resp = { 0 };
 	struct mbox_context *context;
 	sd_bus_message *n;
-	int rc, i;
+	int rc;
+	size_t i;
 
 	context = (struct mbox_context *) userdata;
 	if (!context) {
@@ -238,7 +240,7 @@
 	}
 	MSG_DBG("DBUS num_args: %u\n", (unsigned) req.num_args);
 	for (i = 0; i < req.num_args; i++) {
-		MSG_DBG("DBUS arg[%d]: %u\n", i, req.args[i]);
+		MSG_DBG("DBUS arg[%zd]: %u\n", i, req.args[i]);
 	}
 
 	/* Handle the command */
@@ -274,7 +276,7 @@
 	MSG_DBG("DBUS response: %u\n", resp.cmd);
 	MSG_DBG("DBUS num_args: %u\n", (unsigned) resp.num_args);
 	for (i = 0; i < resp.num_args; i++) {
-		MSG_DBG("DBUS arg[%d]: %u\n", i, resp.args[i]);
+		MSG_DBG("DBUS arg[%zd]: %u\n", i, resp.args[i]);
 	}
 
 	rc = sd_bus_send(NULL, n, NULL); /* Send response */
diff --git a/file/backend.c b/file/backend.c
index 865a434..d678c9e 100644
--- a/file/backend.c
+++ b/file/backend.c
@@ -35,6 +35,9 @@
 
 #define FILE_ERASE_SIZE (4 * 1024)
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpointer-arith"
+
 struct file_data {
 	int fd;
 };
@@ -281,3 +284,5 @@
 
 	return backend_init(master, &with, (void *)path);
 }
+
+#pragma GCC diagnostic pop
diff --git a/mboxd.c b/mboxd.c
index 059261b..04b2cb6 100644
--- a/mboxd.c
+++ b/mboxd.c
@@ -255,7 +255,8 @@
 			case '\0':
 				break;
 			case 'M':
-				context->backend.flash_size <<= 10;
+				context->backend.flash_size <<= 20;
+				break;
 			case 'K':
 				context->backend.flash_size <<= 10;
 				break;
diff --git a/mtd/backend.c b/mtd/backend.c
index 921c041..da43072 100644
--- a/mtd/backend.c
+++ b/mtd/backend.c
@@ -31,6 +31,9 @@
 #include "mboxd.h"
 #include "mtd/backend.h"
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpointer-arith"
+
 static int mtd_dev_init(struct backend *backend, void *data)
 {
 	const char *path = data;
@@ -121,8 +124,10 @@
 
 /* Flash Functions */
 
-int flash_validate(struct mbox_context *context, uint32_t offset,
-		   uint32_t size, bool ro)
+int flash_validate(struct mbox_context *context __attribute__((unused)),
+		   uint32_t offset __attribute__((unused)),
+		   uint32_t size __attribute__((unused)),
+		   bool ro __attribute__((unused)))
 {
 	/* Default behaviour is all accesses are valid */
 	return 0;
@@ -333,7 +338,7 @@
  * Return:      A value from enum backend_reset_mode, otherwise a negative
  *		error code
  */
-static int mtd_reset(struct backend *backend,
+static int mtd_reset(struct backend *backend __attribute__((unused)),
 		     void *buf __attribute__((unused)),
 		     uint32_t count __attribute__((unused)))
 {
@@ -370,3 +375,5 @@
 
 	return backend_init(master, &with, (void *)path);
 }
+
+#pragma GCC diagnostic pop
diff --git a/protocol.c b/protocol.c
index ab1c332..4efa83a 100644
--- a/protocol.c
+++ b/protocol.c
@@ -14,6 +14,9 @@
 #include "protocol.h"
 #include "windows.h"
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpointer-arith"
+#pragma GCC diagnostic ignored "-Wunused-result"
 
 #define BLOCK_SIZE_SHIFT_V1		12 /* 4K */
 
@@ -368,8 +371,9 @@
 
 static int generic_flush(struct mbox_context *context)
 {
-	int rc, i, offset, count;
+	int rc, offset, count;
 	uint8_t prev;
+	size_t i;
 
 	offset = 0;
 	count = 0;
@@ -617,8 +621,8 @@
 	return 0;
 }
 
-static int protocol_v2_flush(struct mbox_context *context,
-			     struct protocol_flush *io)
+static int protocol_v2_flush(struct mbox_context *context __attribute__((unused)),
+			     struct protocol_flush *io __attribute__((unused)))
 {
 	if (!(context->current && context->current_is_write)) {
 		MSG_ERR("Tried to call flush without open write window\n");
@@ -705,7 +709,7 @@
 	return 0;
 }
 
-void protocol_free(struct mbox_context *context)
+void protocol_free(struct mbox_context *context __attribute__((unused)))
 {
 	return;
 }
@@ -759,3 +763,5 @@
 
 	return 0;
 }
+
+#pragma GCC diagnostic pop
diff --git a/test/close_window_v2.c b/test/close_window_v2.c
index 9b646f6..a077a00 100644
--- a/test/close_window_v2.c
+++ b/test/close_window_v2.c
@@ -105,4 +105,4 @@
 	short_lifetime(ctx);
 
 	return 0;
-};
+}
diff --git a/test/create_oversize_window.c b/test/create_oversize_window.c
index 2c842cb..cae128d 100644
--- a/test/create_oversize_window.c
+++ b/test/create_oversize_window.c
@@ -54,4 +54,4 @@
 	assert(rc == 0);
 
 	return rc;
-};
+}
diff --git a/test/create_read_window_v2.c b/test/create_read_window_v2.c
index 4e8d1d2..5bc11e8 100644
--- a/test/create_read_window_v2.c
+++ b/test/create_read_window_v2.c
@@ -59,4 +59,4 @@
 	assert(rc == 0);
 
 	return rc;
-};
+}
diff --git a/test/create_write_window_v2.c b/test/create_write_window_v2.c
index b0e246e..ac51b41 100644
--- a/test/create_write_window_v2.c
+++ b/test/create_write_window_v2.c
@@ -58,4 +58,4 @@
 	assert(rc == 0);
 
 	return rc;
-};
+}
diff --git a/test/create_zero_size_window.c b/test/create_zero_size_window.c
index 3e936d0..b3e8035 100644
--- a/test/create_zero_size_window.c
+++ b/test/create_zero_size_window.c
@@ -54,4 +54,4 @@
 	assert(rc == 0);
 
 	return rc;
-};
+}
diff --git a/test/flash_erase.c b/test/flash_erase.c
index fe80f3b..127bf8c 100644
--- a/test/flash_erase.c
+++ b/test/flash_erase.c
@@ -41,7 +41,7 @@
 #define MEM_SIZE 3
 #define ERASE_SIZE 1
 
-int ioctl(int fd, unsigned long request, ...)
+int ioctl(int fd __attribute__((unused)), unsigned long request, ...)
 {
 	va_list ap;
 	struct erase_info_user *provided, *alloced;
diff --git a/test/flash_write.c b/test/flash_write.c
index c5f998c..d330981 100644
--- a/test/flash_write.c
+++ b/test/flash_write.c
@@ -37,7 +37,7 @@
 #define MEM_SIZE 3
 #define ERASE_SIZE 1
 
-int ioctl(int fd, unsigned long request, ...)
+int ioctl(int fd __attribute__((unused)), unsigned long request, ...)
 {
 	va_list ap;
 
@@ -59,7 +59,7 @@
 {
 	struct mbox_context _context, *context = &_context;
 	struct backend *backend = &context->backend;
-	char src[MEM_SIZE];
+	uint8_t src[MEM_SIZE];
 	uint8_t *map;
 	int rc;
 
diff --git a/test/get_flash_info_v2.c b/test/get_flash_info_v2.c
index 36ef8ac..ec0adea 100644
--- a/test/get_flash_info_v2.c
+++ b/test/get_flash_info_v2.c
@@ -49,4 +49,4 @@
 	assert(rc == 0);
 
 	return rc;
-};
+}
diff --git a/test/implicit_flush.c b/test/implicit_flush.c
index f186d19..41f27c5 100644
--- a/test/implicit_flush.c
+++ b/test/implicit_flush.c
@@ -148,4 +148,4 @@
 	flush_on_create(ctx);
 
 	return 0;
-};
+}
diff --git a/test/mark_read_dirty.c b/test/mark_read_dirty.c
index 766e3dc..75100af 100644
--- a/test/mark_read_dirty.c
+++ b/test/mark_read_dirty.c
@@ -61,4 +61,4 @@
 	assert(rc == 0);
 
 	return rc;
-};
+}
diff --git a/test/mark_write_dirty_v2.c b/test/mark_write_dirty_v2.c
index 0c929fe..91965a8 100644
--- a/test/mark_write_dirty_v2.c
+++ b/test/mark_write_dirty_v2.c
@@ -63,4 +63,4 @@
 	assert(rc == 0);
 
 	return rc;
-};
+}
diff --git a/test/mark_write_erased_v2.c b/test/mark_write_erased_v2.c
index 95cff4b..4a17138 100644
--- a/test/mark_write_erased_v2.c
+++ b/test/mark_write_erased_v2.c
@@ -88,4 +88,4 @@
 	assert(rc == 0);
 
 	return rc;
-};
+}
diff --git a/test/mbox.c b/test/mbox.c
index c224b84..ebd5071 100644
--- a/test/mbox.c
+++ b/test/mbox.c
@@ -28,7 +28,7 @@
 void dump_buf(const void *buf, size_t len)
 {
 	const uint8_t *buf8 = buf;
-	int i;
+	size_t i;
 
 	for (i = 0; i < len; i += STEP) {
 		int delta;
@@ -38,7 +38,7 @@
 		delta = len - i;
 		max = delta > STEP ? STEP : delta;
 
-		printf("0x%08x:\t", i);
+		printf("0x%08zx:\t", i);
 		for (j = 0; j < max; j++)
 			printf("0x%02x, ", buf8[i + j]);
 
@@ -75,7 +75,7 @@
 	printf("%s:%d: details.st_size: %ld, RESPONSE_OFFSET + len: %ld\n",
 	       __func__, __LINE__, details.st_size, RESPONSE_OFFSET + len);
 	assert(map != MAP_FAILED);
-	assert(details.st_size >= (RESPONSE_OFFSET + len));
+	assert(details.st_size >= (__off_t)(RESPONSE_OFFSET + len));
 
 	rc = memcmp(expected, &map[RESPONSE_OFFSET], len);
 
diff --git a/test/read_window_cycle.c b/test/read_window_cycle.c
index 8220c63..deef2cf 100644
--- a/test/read_window_cycle.c
+++ b/test/read_window_cycle.c
@@ -71,4 +71,4 @@
 	}
 
 	return !(rc == 1);
-};
+}
diff --git a/test/read_window_mark_write_erased.c b/test/read_window_mark_write_erased.c
index 498ac62..f79d993 100644
--- a/test/read_window_mark_write_erased.c
+++ b/test/read_window_mark_write_erased.c
@@ -63,4 +63,4 @@
 	assert(rc == 0);
 
 	return rc;
-};
+}
diff --git a/test/read_window_write_flush.c b/test/read_window_write_flush.c
index 0f1cace..4420976 100644
--- a/test/read_window_write_flush.c
+++ b/test/read_window_write_flush.c
@@ -62,4 +62,4 @@
 	assert(rc == 0);
 
 	return rc;
-};
+}
diff --git a/test/system.c b/test/system.c
index 24fbcdc..babf11d 100644
--- a/test/system.c
+++ b/test/system.c
@@ -11,8 +11,7 @@
 
 #include "linux/aspeed-lpc-ctrl.h"
 
-static struct aspeed_lpc_ctrl_mapping ctrl = {
-};
+static struct aspeed_lpc_ctrl_mapping ctrl = { .size = 0 };
 
 static struct mtd_info_user mtd = {
 	.type = MTD_NORFLASH,
diff --git a/test/tmpf.c b/test/tmpf.c
index 483231b..6832f7c 100644
--- a/test/tmpf.c
+++ b/test/tmpf.c
@@ -30,6 +30,5 @@
 	if (tmpf->fd)
 		close(tmpf->fd);
 
-	if (tmpf->path)
-		unlink(tmpf->path);
+	unlink(tmpf->path);
 }
diff --git a/test/write_flush_v2.c b/test/write_flush_v2.c
index b53550d..898b595 100644
--- a/test/write_flush_v2.c
+++ b/test/write_flush_v2.c
@@ -143,4 +143,4 @@
 	assert(rc == 0);
 
 	return rc;
-};
+}
diff --git a/transport_dbus.c b/transport_dbus.c
index 18cd0d0..0135d58 100644
--- a/transport_dbus.c
+++ b/transport_dbus.c
@@ -71,7 +71,7 @@
 };
 
 static int transport_dbus_reset(sd_bus_message *m, void *userdata,
-				     sd_bus_error *ret_error)
+				sd_bus_error *ret_error __attribute__((unused)))
 {
 	struct mbox_context *context = userdata;
 	sd_bus_message *n;
@@ -99,7 +99,7 @@
 }
 
 static int transport_dbus_get_info(sd_bus_message *m, void *userdata,
-					sd_bus_error *ret_error)
+				   sd_bus_error *ret_error __attribute__((unused)))
 {
 	struct mbox_context *context = userdata;
 	struct protocol_get_info io;
@@ -154,7 +154,7 @@
 }
 
 static int transport_dbus_get_flash_info(sd_bus_message *m, void *userdata,
-					 sd_bus_error *ret_error)
+					 sd_bus_error *ret_error __attribute__((unused)))
 {
 	struct mbox_context *context = userdata;
 	struct protocol_get_flash_info io;
@@ -193,7 +193,7 @@
 static int transport_dbus_create_window(struct mbox_context *context,
 					bool ro,
 					sd_bus_message *m,
-					sd_bus_error *ret_error)
+					sd_bus_error *ret_error __attribute__((unused)))
 {
 	struct protocol_create_window io;
 	sd_bus_message *n;
@@ -253,7 +253,7 @@
 }
 
 static int transport_dbus_close_window(sd_bus_message *m, void *userdata,
-				sd_bus_error *ret_error)
+				       sd_bus_error *ret_error __attribute__((unused)))
 {
 	struct mbox_context *context = userdata;
 	struct protocol_close io;
@@ -289,7 +289,7 @@
 }
 
 static int transport_dbus_mark_dirty(sd_bus_message *m, void *userdata,
-				     sd_bus_error *ret_error)
+				     sd_bus_error *ret_error __attribute__((unused)))
 {
 	struct mbox_context *context = userdata;
 	struct protocol_mark_dirty io;
@@ -324,7 +324,7 @@
 }
 
 static int transport_dbus_write_flush(sd_bus_message *m, void *userdata,
-				      sd_bus_error *ret_error)
+				      sd_bus_error *ret_error __attribute__((unused)))
 {
 	struct mbox_context *context = userdata;
 	sd_bus_message *n;
@@ -352,7 +352,7 @@
 }
 
 static int transport_dbus_ack(sd_bus_message *m, void *userdata,
-			      sd_bus_error *ret_error)
+			      sd_bus_error *ret_error __attribute__((unused)))
 {
 	struct mbox_context *context = userdata;
 	struct protocol_ack io;
@@ -387,7 +387,7 @@
 }
 
 static int transport_dbus_erase(sd_bus_message *m, void *userdata,
-				sd_bus_error *ret_error)
+				sd_bus_error *ret_error __attribute__((unused)))
 {
 	struct mbox_context *context = userdata;
 	struct protocol_erase io;
@@ -421,13 +421,13 @@
 	return rc;
 }
 
-static int transport_dbus_get_property(sd_bus *bus,
+static int transport_dbus_get_property(sd_bus *bus __attribute__((unused)),
 				       const char *path,
 				       const char *interface,
 				       const char *property,
 				       sd_bus_message *reply,
 				       void *userdata,
-				       sd_bus_error *ret_error)
+				       sd_bus_error *ret_error __attribute__((unused)))
 {
 	struct mbox_context *context = userdata;
 	bool value;
diff --git a/transport_mbox.c b/transport_mbox.c
index 2759fa5..92d6358 100644
--- a/transport_mbox.c
+++ b/transport_mbox.c
@@ -30,6 +30,9 @@
 #include "windows.h"
 #include "lpc.h"
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpointer-arith"
+
 struct errno_map {
 	int rc;
 	int mbox_errno;
@@ -128,7 +131,8 @@
 }
 
 static int transport_mbox_update_events(struct mbox_context *context,
-					uint8_t events, uint8_t mask)
+					uint8_t events __attribute__((unused)),
+					uint8_t mask)
 {
 	return transport_mbox_flush_events(context, context->bmc_events & mask);
 }
@@ -147,7 +151,8 @@
  * using a virtual pnor.
  */
 static int mbox_handle_reset(struct mbox_context *context,
-			     union mbox_regs *req, struct mbox_msg *resp)
+			     union mbox_regs *req __attribute__((unused)),
+			     struct mbox_msg *resp __attribute__((unused)))
 {
 	return context->protocol->reset(context);
 }
@@ -218,7 +223,8 @@
  * RESP[2:3]: Erase Size (number of blocks)
  */
 static int mbox_handle_flash_info(struct mbox_context *context,
-				  union mbox_regs *req, struct mbox_msg *resp)
+				  union mbox_regs *req __attribute__((unused)),
+				  struct mbox_msg *resp)
 {
 	struct protocol_get_flash_info io;
 	int rc;
@@ -357,7 +363,8 @@
  * ARGS[2:3]: Number to mark dirty (number of blocks)
  */
 static int mbox_handle_dirty_window(struct mbox_context *context,
-				    union mbox_regs *req, struct mbox_msg *resp)
+				    union mbox_regs *req,
+				    struct mbox_msg *resp __attribute__((unused)))
 {
 	struct protocol_mark_dirty io;
 
@@ -386,7 +393,8 @@
  * ARGS[2:3]: Number to erase (number of blocks)
  */
 static int mbox_handle_erase_window(struct mbox_context *context,
-				    union mbox_regs *req, struct mbox_msg *resp)
+				    union mbox_regs *req,
+				    struct mbox_msg *resp __attribute__((unused)))
 {
 	struct protocol_erase io;
 
@@ -419,7 +427,8 @@
  * NONE
  */
 static int mbox_handle_flush_window(struct mbox_context *context,
-				    union mbox_regs *req, struct mbox_msg *resp)
+				    union mbox_regs *req,
+				    struct mbox_msg *resp __attribute__((unused)))
 {
 	struct protocol_flush io = { 0 };
 
@@ -443,7 +452,8 @@
  * ARGS[0]: FLAGS
  */
 static int mbox_handle_close_window(struct mbox_context *context,
-				    union mbox_regs *req, struct mbox_msg *resp)
+				    union mbox_regs *req,
+				    struct mbox_msg *resp __attribute__((unused)))
 {
 	struct protocol_close io = { 0 };
 
@@ -461,7 +471,7 @@
  * ARGS[0]: Bitmap of bits to ack (by clearing)
  */
 static int mbox_handle_ack(struct mbox_context *context, union mbox_regs *req,
-			   struct mbox_msg *resp)
+			   struct mbox_msg *resp __attribute__((unused)))
 {
 	struct protocol_ack io;
 
@@ -581,7 +591,7 @@
 	}
 	MSG_INFO("Writing MBOX response: %u\n", resp.response);
 	len = write(context->fds[MBOX_FD].fd, &resp, sizeof(resp));
-	if (len < sizeof(resp)) {
+	if (len < (ssize_t)sizeof(resp)) {
 		MSG_ERR("Didn't write the full response\n");
 		rc = -errno;
 	}
@@ -610,7 +620,7 @@
 	if (rc < 0) {
 		MSG_ERR("Couldn't read: %s\n", strerror(errno));
 		return -errno;
-	} else if (rc < sizeof(msg->raw)) {
+	} else if (rc < (ssize_t)sizeof(msg->raw)) {
 		MSG_ERR("Short read: %d expecting %zu\n", rc, sizeof(msg->raw));
 		return -1;
 	}
@@ -685,3 +695,5 @@
 {
 	close(context->fds[MBOX_FD].fd);
 }
+
+#pragma GCC diagnostic pop
diff --git a/vpnor/backend.cpp b/vpnor/backend.cpp
index b155cf3..606acee 100644
--- a/vpnor/backend.cpp
+++ b/vpnor/backend.cpp
@@ -519,7 +519,7 @@
 
 struct backend backend_get_vpnor(void)
 {
-    struct backend be = {0};
+    struct backend be = {nullptr, nullptr, 0, 0, 0};
 
     be.ops = &vpnor_ops;
 
diff --git a/vpnor/backend.h b/vpnor/backend.h
index 0102238..949e5c1 100644
--- a/vpnor/backend.h
+++ b/vpnor/backend.h
@@ -3,6 +3,7 @@
 #pragma once
 
 #include <limits.h>
+#include <string.h>
 
 struct mbox_context;
 struct vpnor_partition_table;
diff --git a/vpnor/test/dump_flash.cpp b/vpnor/test/dump_flash.cpp
index 2d5dc5d..1c2e865 100644
--- a/vpnor/test/dump_flash.cpp
+++ b/vpnor/test/dump_flash.cpp
@@ -18,8 +18,8 @@
 
 struct test_context
 {
-    uint8_t seq;
-    struct mbox_context* ctx;
+    uint8_t seq = 0;
+    struct mbox_context* ctx = nullptr;
 };
 
 // Configure the system and the paritions such that we eventually request a
@@ -60,7 +60,7 @@
 {
     namespace test = openpower::virtual_pnor::test;
 
-    struct test_context _tctx = {0}, *tctx = &_tctx;
+    test_context _tctx{}, *tctx = &_tctx;
     size_t len;
     size_t pos;
     int rc;
diff --git a/windows.c b/windows.c
index a62b50c..dfb86db 100644
--- a/windows.c
+++ b/windows.c
@@ -31,6 +31,9 @@
 #include "windows.h"
 #include "backend.h"
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpointer-arith"
+
 /* Initialisation Functions */
 
 /*
@@ -56,7 +59,7 @@
 static int init_window_mem(struct mbox_context *context)
 {
 	void *mem_location = context->mem;
-	int i;
+	size_t i;
 
 	/*
 	 * Carve up the reserved memory region and allocate it to each of the
@@ -67,7 +70,7 @@
 	 */
 	for (i = 0; i < context->windows.num; i++) {
 		uint32_t size = context->windows.window[i].size;
-		MSG_DBG("Window %d @ %p for size 0x%.8x\n", i,
+		MSG_DBG("Window %zd @ %p for size 0x%.8x\n", i,
 			mem_location, size);
 		context->windows.window[i].mem = mem_location;
 		mem_location += size;
@@ -90,7 +93,7 @@
  */
 int windows_init(struct mbox_context *context)
 {
-	int i;
+	size_t i;
 
 	/* Check if window size and number set - otherwise set to default */
 	if (!context->windows.default_size) {
@@ -126,7 +129,7 @@
  */
 void windows_free(struct mbox_context *context)
 {
-	int i;
+	size_t i;
 
 	/* Check window cache has actually been allocated */
 	if (context->windows.window) {
@@ -339,7 +342,7 @@
 void windows_alloc_dirty_bytemap(struct mbox_context *context)
 {
 	struct window_context *cur;
-	int i;
+	size_t i;
 
 	for (i = 0; i < context->windows.num; i++) {
 		cur = &context->windows.window[i];
@@ -427,7 +430,7 @@
 bool windows_reset_all(struct mbox_context *context)
 {
 	bool closed = context->current;
-	int i;
+	size_t i;
 
 	MSG_DBG("Resetting all windows\n");
 
@@ -456,7 +459,7 @@
 {
 	struct window_context *oldest = NULL, *cur;
 	uint32_t min_age = context->windows.max_age + 1;
-	int i;
+	size_t i;
 
 	for (i = 0; i < context->windows.num; i++) {
 		cur = &context->windows.window[i];
@@ -480,7 +483,7 @@
 {
 	struct window_context *largest = NULL, *cur;
 	uint32_t max_size = 0;
-	int i;
+	size_t i;
 
 	for (i = 0; i < context->windows.num; i++) {
 		cur = &context->windows.window[i];
@@ -512,7 +515,7 @@
 				      uint32_t offset, bool exact)
 {
 	struct window_context *cur;
-	int i;
+	size_t i;
 
 	MSG_DBG("Searching for window which contains 0x%.8x %s\n",
 		offset, exact ? "exactly" : "");
@@ -662,3 +665,5 @@
 
 	return 0;
 }
+
+#pragma GCC diagnostic pop
