--- a/tools/misc/miniterm/miniterm.c
+++ b/tools/misc/miniterm/miniterm.c
@@ -157,7 +157,7 @@ int main(int argc, char **argv)
     case 0:
         close(1); /* stdout not needed */
         for ( c = (char)getchar(); c != ENDMINITERM; c = (char)getchar() )
-            write(fd,&c,1);
+            if (write(fd,&c,1)) ;
         tcsetattr(fd,TCSANOW,&oldsertio);
         tcsetattr(0,TCSANOW,&oldstdtio);
         close(fd);
@@ -169,19 +169,19 @@ int main(int argc, char **argv)
         close(fd);
         exit(-1);
     default:
-        write(1, start_str, strlen(start_str));
+        if (write(1, start_str, strlen(start_str))) ;
         close(0); /* stdin not needed */
         sa.sa_handler = child_handler;
         sa.sa_flags = 0;
         sigaction(SIGCHLD,&sa,NULL); /* handle dying child */
         while ( !stop )
         {
-            read(fd,&c,1); /* modem */
+            if (read(fd,&c,1)) ; /* modem */
             c = (char)c;
-            write(1,&c,1); /* stdout */
+            if (write(1,&c,1)) ; /* stdout */
         }
         wait(NULL); /* wait for child to die or it will become a zombie */
-        write(1, end_str, strlen(end_str));
+        if (write(1, end_str, strlen(end_str))) ;
         break;
     }
 
--- a/tools/xenstore/Makefile
+++ b/tools/xenstore/Makefile
@@ -4,7 +4,7 @@ include $(XEN_ROOT)/tools/Rules.mk
 MAJOR = 3.0
 MINOR = 0
 
-CFLAGS += -Werror
+CFLAGS += -Werror -fno-strict-aliasing
 CFLAGS += -I.
 CFLAGS += $(CFLAGS_libxenctrl)
 
--- a/tools/xenstore/xenstored_core.c
+++ b/tools/xenstore/xenstored_core.c
@@ -77,8 +77,8 @@ static void check_store(void);
 
 int quota_nb_entry_per_domain = 1000;
 int quota_nb_watch_per_domain = 128;
-int quota_max_entry_size = 2048; /* 2K */
-int quota_max_transaction = 10;
+unsigned int quota_max_entry_size = 2048; /* 2K */
+unsigned int quota_max_transaction = 10;
 
 TDB_CONTEXT *tdb_context(struct connection *conn)
 {
@@ -130,7 +130,7 @@ void trace(const char *fmt, ...)
 	va_list arglist;
 	char *str;
 	char sbuf[1024];
-	int ret, dummy;
+	int ret, __attribute__((__unused__)) dummy;
 
 	if (tracefd < 0)
 		return;
@@ -200,7 +200,7 @@ void trace_destroy(const void *data, con
 static void trigger_reopen_log(int signal __attribute__((unused)))
 {
 	char c = 'A';
-	int dummy;
+	int __attribute__((__unused__)) dummy;
 	dummy = write(reopen_log_pipe[1], &c, 1);
 }
 
@@ -1791,10 +1791,10 @@ int main(int argc, char *argv[])
 			remove_local = false;
 			break;
 		case 'S':
-			quota_max_entry_size = strtol(optarg, NULL, 10);
+			quota_max_entry_size = strtoul(optarg, NULL, 10);
 			break;
 		case 't':
-			quota_max_transaction = strtol(optarg, NULL, 10);
+			quota_max_transaction = strtoul(optarg, NULL, 10);
 			break;
 		case 'T':
 			tracefile = optarg;
--- a/tools/xenstore/xenstored_domain.c
+++ b/tools/xenstore/xenstored_domain.c
@@ -213,7 +213,7 @@ void handle_event(void)
 {
 	evtchn_port_t port;
 
-	if ((port = xc_evtchn_pending(xce_handle)) == -1)
+	if ((port = xc_evtchn_pending(xce_handle)) == (evtchn_port_t)-1)
 		barf_perror("Failed to read from event fd");
 
 	if (port == virq_port)
@@ -562,7 +562,7 @@ static int dom0_init(void) 
 	struct domain *dom0;
 
 	port = xenbus_evtchn();
-	if (port == -1)
+	if (port == (evtchn_port_t)-1)
 		return -1;
 
 	dom0 = new_domain(NULL, 0, port); 
--- a/tools/xenstore/xenstored_transaction.c
+++ b/tools/xenstore/xenstored_transaction.c
@@ -82,7 +82,7 @@ struct transaction
 	struct list_head changed_domains;
 };
 
-extern int quota_max_transaction;
+extern unsigned int quota_max_transaction;
 static unsigned int generation;
 
 /* Return tdb context to use for this connection. */
--- a/tools/xenstore/xenstore_client.c
+++ b/tools/xenstore/xenstore_client.c
@@ -255,7 +255,7 @@ do_chmod(char *path, struct xs_permissio
 	char **xsval = xs_directory(xsh, xth, path, &xsval_n);
 
 	if (xsval) {
-	    int i;
+	    unsigned int i;
 	    for (i = 0; i < xsval_n; i++) {
 		snprintf(buf, MAX_PATH_LEN, "%s/%s", path, xsval[i]);
 
--- a/tools/libxen/src/xen_common.c
+++ b/tools/libxen/src/xen_common.c
@@ -1057,6 +1057,8 @@ static size_t size_of_member(const abstr
     default:
         assert(false);
     }
+
+    return 0; /* prevents a compiler warning */
 }
 
 
@@ -1568,6 +1570,8 @@ get_val_as_string(const struct abstract_
     default:
         assert(false);
     }
+
+    return NULL; /* prevents a compiler warning */
 }
 
 
--- a/tools/blktap2/drivers/block-remus.c
+++ b/tools/blktap2/drivers/block-remus.c
@@ -1636,7 +1636,7 @@ static int tdremus_open(td_driver_t *dri
 			td_flag_t flags)
 {
 	struct tdremus_state *s = (struct tdremus_state *)driver->data;
-	int rc;
+	int rc = 0;
 
 	RPRINTF("opening %s\n", name);
 
--- a/tools/blktap/lib/blktaplib.h
+++ b/tools/blktap/lib/blktaplib.h
@@ -196,6 +196,7 @@ typedef struct msg_pid {
 } msg_pid_t;
 
 #define READ 0
+#undef WRITE
 #define WRITE 1
 
 /*Control Messages between manager and tapdev*/
--- a/tools/blktap2/include/blktaplib.h
+++ b/tools/blktap2/include/blktaplib.h
@@ -190,6 +190,7 @@ typedef struct msg_lock {
 } msg_lock_t;
 
 #define READ 0
+#undef WRITE
 #define WRITE 1
 
 /*Control Messages between manager and tapdev*/
--- a/tools/blktap/lib/Makefile
+++ b/tools/blktap/lib/Makefile
@@ -28,6 +28,8 @@ OBJS_PIC = $(SRCS:.c=.opic)
 IBINS   :=
 
 LIB      = libblktap.a libblktap.so.$(MAJOR).$(MINOR)
+LIB_SO   = libblktap.so.$(MAJOR).$(MINOR)
+LIB_AR   = libblktap.a
 
 .PHONY: all
 all: $(LIB)
@@ -36,7 +38,8 @@ all: $(LIB)
 install: all
 	$(INSTALL_DIR) $(DESTDIR)$(LIBDIR)
 	$(INSTALL_DIR) $(DESTDIR)$(INCLUDEDIR)
-	$(INSTALL_PROG) $(LIB) $(DESTDIR)$(LIBDIR)
+	$(INSTALL_PROG) $(LIB_SO) $(DESTDIR)$(LIBDIR)
+	$(INSTALL_DATA) $(LIB_AR) $(DESTDIR)$(LIBDIR)
 	ln -sf libblktap.so.$(MAJOR).$(MINOR) $(DESTDIR)$(LIBDIR)/libblktap.so.$(MAJOR)
 	ln -sf libblktap.so.$(MAJOR) $(DESTDIR)$(LIBDIR)/libblktap.so
 	$(INSTALL_DATA) blktaplib.h $(DESTDIR)$(INCLUDEDIR)
--- a/tools/blktap2/vhd/lib/Makefile
+++ b/tools/blktap2/vhd/lib/Makefile
@@ -49,6 +49,8 @@ LIB-OBJS         = $(patsubst %.c,%.o,$(
 LIB-OBJS        += $(LVM-UTIL-OBJ)
 
 LIBVHD           = libvhd.a libvhd.so.$(LIBVHD-MAJOR).$(LIBVHD-MINOR)
+LIBVHD_SO        = libvhd.so.$(LIBVHD-MAJOR).$(LIBVHD-MINOR)
+LIBVHD_AR        = libvhd.a
 
 all: build
 
@@ -63,7 +65,8 @@ libvhd.a: $(LIB-OBJS)
 
 install: all
 	$(INSTALL_DIR) -p $(DESTDIR)$(INST-DIR)
-	$(INSTALL_PROG) $(LIBVHD) $(DESTDIR)$(INST-DIR)
+	$(INSTALL_PROG) $(LIBVHD_SO) $(DESTDIR)$(INST-DIR)
+	$(INSTALL_DATA) $(LIBVHD_AR) $(DESTDIR)$(INST-DIR)
 	ln -sf libvhd.so.$(LIBVHD-MAJOR).$(LIBVHD-MINOR) $(DESTDIR)$(INST-DIR)/libvhd.so.$(LIBVHD-MAJOR)
 	ln -sf libvhd.so.$(LIBVHD-MAJOR) $(DESTDIR)$(INST-DIR)/libvhd.so
 
