diff --git a/ci/run.sh b/ci/run.sh
index ff74899cbb8303eebeca03100c01cb2aae285a15..ffcd042186812059dcf89eebe776cb73cca706e6 100755
--- a/ci/run.sh
+++ b/ci/run.sh
@@ -86,5 +86,9 @@ if [ "$TARGET" = "x86_64-unknown-linux-gnux32" ]; then
   opt="--release"
 fi
 
-cargo test $opt --no-default-features --manifest-path libc-test/Cargo.toml --target $TARGET
+# Building with --no-default-features is currently broken on rumprun because we
+# need cfg(target_vendor), which is currently unstable.
+if [ "$TARGET" != "x86_64-rumprun-netbsd" ]; then
+  cargo test $opt --no-default-features --manifest-path libc-test/Cargo.toml --target $TARGET
+fi
 exec cargo test $opt --manifest-path libc-test/Cargo.toml --target $TARGET
diff --git a/src/unix/mod.rs b/src/unix/mod.rs
index 7c5f4e6b4b7d5beccdf9a49ac5b848d7a834202a..5e1b8ee4675c27d9164a459cfb127c4de4ede126 100644
--- a/src/unix/mod.rs
+++ b/src/unix/mod.rs
@@ -306,11 +306,11 @@ cfg_if! {
     } else if #[cfg(target_os = "emscripten")] {
         #[link(name = "c")]
         extern {}
-    } else if #[cfg(all(target_os = "netbsd"))] {
+    } else if #[cfg(all(target_os = "netbsd",
+                        feature = "stdbuild", target_vendor = "rumprun"))] {
         // Since we don't use -nodefaultlibs on Rumprun, libc is always pulled
         // in automatically by the linker. We avoid passing it explicitly, as it
         // causes some versions of binutils to crash with an assertion failure.
-        #[cfg_attr(feature = "stdbuild", cfg(target_vendor = "rumprun"))]
         #[link(name = "m")]
         extern {}
     } else if #[cfg(any(target_os = "macos",