diff --git a/astlpc.c b/astlpc.c
index 4014b89..a5a3a82 100644
--- a/astlpc.c
+++ b/astlpc.c
@@ -237,7 +237,8 @@
 		return;
 	}
 
-	if (len > astlpc->binding.pkt_size) {
+	assert(astlpc->binding.pkt_size >= 0);
+	if (len > (uint32_t)astlpc->binding.pkt_size) {
 		mctp_prwarn("invalid RX len 0x%x", len);
 		return;
 	}
diff --git a/bootstrap.sh b/bootstrap.sh
index f154ad9..304aca3 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -14,9 +14,11 @@
 
 case "${BOOTSTRAP_MODE}" in
     dev)
-        FLAGS="-Wformat -Werror=format-security"
-        FLAGS="${FLAGS} -Werror=array-bounds"
-        FLAGS="${FLAGS} -Werror=implicit-function-declaration"
+        FLAGS="-O2 -Wall -Wextra -Wformat-security"
+        FLAGS="${FLAGS} -Wparentheses"
+        FLAGS="${FLAGS} -Wno-type-limits"
+        FLAGS="${FLAGS} -Werror"
+        # FLAGS="${FLAGS} -Wpedantic"
         FLAGS="${FLAGS} -fsanitize=address,leak,undefined"
         FLAGS="${FLAGS} -ggdb"
         ./configure \
diff --git a/core.c b/core.c
index a46a733..95c38aa 100644
--- a/core.c
+++ b/core.c
@@ -67,8 +67,8 @@
 #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
 #endif
 
-static int mctp_message_tx_on_bus(struct mctp *mctp, struct mctp_bus *bus,
-		mctp_eid_t src, mctp_eid_t dest, void *msg, size_t msg_len);
+static int mctp_message_tx_on_bus(struct mctp_bus *bus, mctp_eid_t src,
+				  mctp_eid_t dest, void *msg, size_t msg_len);
 
 struct mctp_pktbuf *mctp_pktbuf_alloc(struct mctp_binding *binding, size_t len)
 {
@@ -240,9 +240,10 @@
 
 void mctp_destroy(struct mctp *mctp)
 {
-	int i;
+	size_t i;
 
 	/* Cleanup message assembly contexts */
+	BUILD_ASSERT(ARRAY_SIZE(mctp->msg_ctxs) < SIZE_MAX);
 	for (i = 0; i < ARRAY_SIZE(mctp->msg_ctxs); i++) {
 		struct mctp_msg_ctx *tmp = &mctp->msg_ctxs[i];
 		if (tmp->buf)
@@ -320,9 +321,8 @@
 		(hdr->command_code <= MCTP_CTRL_CMD_LAST_TRANSPORT));
 }
 
-static bool mctp_ctrl_handle_msg(struct mctp *mctp, struct mctp_bus *bus,
-				 mctp_eid_t src, mctp_eid_t dest, void *buffer,
-				 size_t length)
+static bool mctp_ctrl_handle_msg(struct mctp_bus *bus, mctp_eid_t src,
+				 void *buffer, size_t length)
 {
 	struct mctp_ctrl_msg_hdr *msg_hdr = buffer;
 
@@ -384,8 +384,8 @@
 			 */
 			if (mctp_ctrl_cmd_is_request(msg_hdr)) {
 				bool handled;
-				handled = mctp_ctrl_handle_msg(mctp, bus, src,
-							       dest, buf, len);
+				handled = mctp_ctrl_handle_msg(bus, src, buf,
+							       len);
 				if (handled)
 					return;
 			}
@@ -402,8 +402,7 @@
 			if (dest_bus == bus)
 				continue;
 
-			mctp_message_tx_on_bus(mctp, dest_bus,
-					src, dest, buf, len);
+			mctp_message_tx_on_bus(dest_bus, src, dest, buf, len);
 		}
 
 	}
@@ -551,8 +550,8 @@
 		mctp_send_tx_queue(bus);
 }
 
-static int mctp_message_tx_on_bus(struct mctp *mctp, struct mctp_bus *bus,
-		mctp_eid_t src, mctp_eid_t dest, void *msg, size_t msg_len)
+static int mctp_message_tx_on_bus(struct mctp_bus *bus, mctp_eid_t src,
+				  mctp_eid_t dest, void *msg, size_t msg_len)
 {
 	size_t max_payload_len, payload_len, p;
 	struct mctp_pktbuf *pkt;
@@ -613,5 +612,5 @@
 	struct mctp_bus *bus;
 
 	bus = find_bus_for_eid(mctp, eid);
-	return mctp_message_tx_on_bus(mctp, bus, bus->eid, eid, msg, msg_len);
+	return mctp_message_tx_on_bus(bus, bus->eid, eid, msg, msg_len);
 }
diff --git a/tests/test_astlpc.c b/tests/test_astlpc.c
index c5f9e93..369702e 100644
--- a/tests/test_astlpc.c
+++ b/tests/test_astlpc.c
@@ -122,7 +122,10 @@
 	return 0;
 }
 
-static void rx_message(uint8_t eid, void *data, void *msg, size_t len)
+#define __unused __attribute__((unused))
+
+static void rx_message(uint8_t eid __unused, void *data __unused, void *msg,
+		       size_t len)
 {
 	uint8_t type;
 
diff --git a/tests/test_cmds.c b/tests/test_cmds.c
index 7a05c35..1772734 100644
--- a/tests/test_cmds.c
+++ b/tests/test_cmds.c
@@ -30,8 +30,11 @@
 	};
 };
 
-static void control_message_transport_callback(mctp_eid_t src, void *data,
-					       void *buf, size_t len)
+#define __unused __attribute__((unused))
+
+static void control_message_transport_callback(mctp_eid_t src __unused,
+					       void *data, void *buf,
+					       size_t len __unused)
 {
 	struct callback_data *ctx = data;
 	struct mctp_ctrl_msg_hdr *msg_hdr = buf;
@@ -98,7 +101,7 @@
 	mctp_destroy(endpoint);
 }
 
-int main(int argc, char *argv[])
+int main(void)
 {
 	send_transport_control_message();
 
diff --git a/tests/test_serial.c b/tests/test_serial.c
index eef66d0..12d1476 100644
--- a/tests/test_serial.c
+++ b/tests/test_serial.c
@@ -33,7 +33,8 @@
 	ssize_t rc;
 
 	rc = write(ctx->egress, buf, len);
-	assert(rc == len);
+	assert(rc >= 0);
+	assert((size_t)rc == len);
 
 	return rc;
 }
@@ -42,7 +43,10 @@
 
 static bool seen;
 
-static void rx_message(uint8_t eid, void *data, void *msg, size_t len)
+#define __unused __attribute__((unused))
+
+static void rx_message(uint8_t eid __unused, void *data __unused, void *msg,
+		       size_t len)
 {
 	uint8_t type;
 
diff --git a/utils/mctp-demux-daemon.c b/utils/mctp-demux-daemon.c
index b7500b5..fc5d583 100644
--- a/utils/mctp-demux-daemon.c
+++ b/utils/mctp-demux-daemon.c
@@ -6,6 +6,7 @@
 #include <err.h>
 #include <errno.h>
 #include <getopt.h>
+#include <limits.h>
 #include <poll.h>
 #include <stdbool.h>
 #include <stdio.h>
@@ -334,7 +335,7 @@
 		goto out_close;
 	}
 
-	if (len > ctx->buf_size) {
+	if ((size_t)len > ctx->buf_size) {
 		void *tmp;
 
 		tmp = realloc(ctx->buf, len);
