diff --git a/include/errno.h b/include/errno.h
index f1761777c5bd1cdff39b0b42764baac82aee1c12..02b7e0c00f57580b0e132baa1c6679fa4a44a3b2 100644
--- a/include/errno.h
+++ b/include/errno.h
@@ -1 +1 @@
-extern int errno;
+extern __thread int errno;
diff --git a/src/lib.rs b/src/lib.rs
index 90c269714d878e2a52b802b887c726e547ebc201..b3b38a57b8c4c8b2e3d8ec4ec6313c4aca166b25 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -9,6 +9,7 @@ extern crate errno;
 extern crate fcntl;
 extern crate grp;
 extern crate mman;
+extern crate semaphore;
 extern crate stdio;
 extern crate stdlib;
 extern crate string;
diff --git a/tests/.gitignore b/tests/.gitignore
index 759d9904eedd5ad7bfac21e6b377f35a3eaaeff9..dead47ff3579202585046ec2979f6a161fa6702e 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -6,6 +6,7 @@
 /create.out
 /dup
 /dup.out
+/error
 /fchdir
 /fsync
 /ftruncate
diff --git a/tests/Makefile b/tests/Makefile
index 41dc22406118317f923338b4c4f72445c4ee249b..8d87af542c9b85dc10bdf89aa339ab7d36ce5e5c 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -5,6 +5,7 @@ BINS=\
 	chdir \
 	create \
 	dup \
+	error \
 	fchdir \
 	fsync \
 	ftruncate \