diff --git a/.travis.yml b/.travis.yml
index e258303a5337c7ae136386cd7a965f9da8afd0de..75f533078ed52e651529bbbd6d6da017fb26d806 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -55,6 +55,9 @@ matrix:
     - os: linux
       env: TARGET=x86_64-unknown-linux-musl
       rust: stable
+    - os: linux
+      env: TARGET=i686-unknown-linux-musl
+      rust: stable
     - os: linux
       env: TARGET=arm-unknown-linux-gnueabihf
       rust: stable
diff --git a/ci/docker/i686-unknown-linux-musl/Dockerfile b/ci/docker/i686-unknown-linux-musl/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..89d60ff7b59ee7fe939344cede16577634dd14a1
--- /dev/null
+++ b/ci/docker/i686-unknown-linux-musl/Dockerfile
@@ -0,0 +1,13 @@
+FROM ubuntu:16.04
+
+RUN apt-get update
+RUN apt-get install -y --no-install-recommends \
+  gcc make libc6-dev git curl ca-certificates
+RUN curl https://www.musl-libc.org/releases/musl-1.1.14.tar.gz | \
+    tar xzf - && \
+    cd musl-1.1.14 && \
+    CFLAGS=-m32 ./configure --prefix=/musl-i686 --disable-shared --target=i686 && \
+    make install -j4 && \
+    cd .. && \
+    rm -rf musl-1.1.14
+ENV PATH=$PATH:/musl-i686/bin:/rust/bin
diff --git a/libc-test/Cargo.lock b/libc-test/Cargo.lock
index d15562dc1050402c666001bb4ef6446c2e59c9a5..55914754df67b6a789e97696a8c2c6fde51eee4a 100644
--- a/libc-test/Cargo.lock
+++ b/libc-test/Cargo.lock
@@ -16,21 +16,27 @@ name = "ctest"
 version = "0.1.0"
 source = "git+https://github.com/alexcrichton/ctest#a6becb6d7fd23d9863cba86eac31d1ffc4082734"
 dependencies = [
- "gcc 0.3.28 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gcc 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)",
  "syntex_syntax 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gcc"
-version = "0.3.28"
+version = "0.3.35"
+source = "git+https://github.com/alexcrichton/gcc-rs#03e22a4425c011fa8c96681591432456fa70d60c"
+
+[[package]]
+name = "gcc"
+version = "0.3.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
+replace = "gcc 0.3.35 (git+https://github.com/alexcrichton/gcc-rs)"
 
 [[package]]
 name = "kernel32-sys"
 version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
- "winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
  "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
@@ -72,7 +78,7 @@ version = "0.2.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -82,7 +88,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "winapi"
-version = "0.2.6"
+version = "0.2.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
diff --git a/libc-test/Cargo.toml b/libc-test/Cargo.toml
index 9ff476579f6e1abef95236862a8d16094d5408cd..dfcf127c484b0400b76fc15657df2f8ee71a260d 100644
--- a/libc-test/Cargo.toml
+++ b/libc-test/Cargo.toml
@@ -9,3 +9,6 @@ libc = { path = ".." }
 
 [build-dependencies]
 ctest = { git = "https://github.com/alexcrichton/ctest" }
+
+[replace]
+"gcc:0.3.35" = { git = "https://github.com/alexcrichton/gcc-rs" }