about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2018-01-03 17:00:24 +0000
committerbors <bors@rust-lang.org>2018-01-03 17:00:24 +0000
commitd96cc6e2865ff2cc77f061ae97e58aae50f5a1e9 (patch)
tree7b82c1383f43ed10226029582841835212f24f22
parent8d1a30289ea13c433a92e31627f8533350835328 (diff)
parent3ca407e24bcc2b668de1f56e453903701849f79f (diff)
downloadrust-d96cc6e2865ff2cc77f061ae97e58aae50f5a1e9.tar.gz
rust-d96cc6e2865ff2cc77f061ae97e58aae50f5a1e9.zip
Auto merge of #47127 - EdSchouten:cloudabi-tests, r=kennytm
First cut at getting some part of the test suite working for CloudABI

I am currently working on creating a Docker container for automated CI for CloudABI. Here are some of the trivial changes that need to land to make tests pass.
-rw-r--r--src/libtest/lib.rs8
-rw-r--r--src/test/codegen/dllimports/main.rs7
-rw-r--r--src/test/codegen/panic-abort-windows.rs5
-rw-r--r--src/test/compile-fail/E0277.rs2
-rw-r--r--src/test/compile-fail/cdylib-deps-must-be-static.rs1
-rw-r--r--src/test/compile-fail/issue-13352.rs2
-rw-r--r--src/test/compile-fail/issue-37665.rs1
-rw-r--r--src/test/compile-fail/panic-runtime/abort-link-to-unwind-dylib.rs1
-rw-r--r--src/test/parse-fail/mod_file_not_exist_windows.rs7
-rw-r--r--src/test/run-fail/mir_dynamic_drops_1.rs3
-rw-r--r--src/test/run-fail/mir_dynamic_drops_2.rs2
-rw-r--r--src/test/run-fail/mir_dynamic_drops_3.rs2
-rw-r--r--src/test/run-fail/mir_trans_no_landing_pads.rs2
-rw-r--r--src/test/run-fail/mir_trans_no_landing_pads_diverging.rs2
-rw-r--r--src/test/run-fail/tls-exit-status.rs1
-rw-r--r--src/test/run-pass-valgrind/exit-flushes.rs3
-rw-r--r--src/test/run-pass/abort-on-c-abi.rs1
-rw-r--r--src/test/run-pass/atomic-print.rs1
-rw-r--r--src/test/run-pass/backtrace-debuginfo.rs1
-rw-r--r--src/test/run-pass/backtrace.rs1
-rw-r--r--src/test/run-pass/cfg-family.rs1
-rw-r--r--src/test/run-pass/cfg-target-family.rs1
-rw-r--r--src/test/run-pass/cleanup-shortcircuit.rs1
-rw-r--r--src/test/run-pass/command-before-exec.rs1
-rw-r--r--src/test/run-pass/command-exec.rs1
-rw-r--r--src/test/run-pass/core-run-destroy.rs1
-rw-r--r--src/test/run-pass/env-args-reverse-iterator.rs1
-rw-r--r--src/test/run-pass/env-funky-keys.rs1
-rw-r--r--src/test/run-pass/env-home-dir.rs1
-rw-r--r--src/test/run-pass/env-vars.rs1
-rw-r--r--src/test/run-pass/exec-env.rs1
-rw-r--r--src/test/run-pass/fds-are-cloexec.rs1
-rw-r--r--src/test/run-pass/intrinsic-alignment.rs11
-rw-r--r--src/test/run-pass/issue-10626.rs1
-rw-r--r--src/test/run-pass/issue-12133-3.rs3
-rw-r--r--src/test/run-pass/issue-13304.rs1
-rw-r--r--src/test/run-pass/issue-14456.rs1
-rw-r--r--src/test/run-pass/issue-14940.rs1
-rw-r--r--src/test/run-pass/issue-16272.rs1
-rw-r--r--src/test/run-pass/issue-17121.rs1
-rw-r--r--src/test/run-pass/issue-20091.rs1
-rw-r--r--src/test/run-pass/issue-20644.rs1
-rw-r--r--src/test/run-pass/issue-20797.rs2
-rw-r--r--src/test/run-pass/issue-2214.rs2
-rw-r--r--src/test/run-pass/issue-22577.rs1
-rw-r--r--src/test/run-pass/issue-23036.rs2
-rw-r--r--src/test/run-pass/issue-23649-2.rs2
-rw-r--r--src/test/run-pass/issue-24313.rs1
-rw-r--r--src/test/run-pass/issue-27859.rs1
-rw-r--r--src/test/run-pass/issue-30490.rs1
-rw-r--r--src/test/run-pass/issue-33770.rs1
-rw-r--r--src/test/run-pass/issue-4541.rs2
-rw-r--r--src/test/run-pass/issue-4542.rs1
-rw-r--r--src/test/run-pass/issue-45731.rs4
-rw-r--r--src/test/run-pass/multi-panic.rs1
-rw-r--r--src/test/run-pass/no-stdio.rs3
-rw-r--r--src/test/run-pass/out-of-stack.rs1
-rw-r--r--src/test/run-pass/panic-runtime/abort-link-to-unwinding-crates.rs1
-rw-r--r--src/test/run-pass/panic-runtime/abort.rs1
-rw-r--r--src/test/run-pass/panic-runtime/lto-abort.rs1
-rw-r--r--src/test/run-pass/panic-runtime/lto-unwind.rs1
-rw-r--r--src/test/run-pass/paths-containing-nul.rs1
-rw-r--r--src/test/run-pass/print-stdout-eprint-stderr.rs1
-rw-r--r--src/test/run-pass/process-envs.rs1
-rw-r--r--src/test/run-pass/process-exit.rs1
-rw-r--r--src/test/run-pass/process-remove-from-env.rs1
-rw-r--r--src/test/run-pass/process-sigpipe.rs1
-rw-r--r--src/test/run-pass/process-spawn-with-unicode-params.rs1
-rw-r--r--src/test/run-pass/process-status-inherits-stdin.rs1
-rw-r--r--src/test/run-pass/rec-align-u64.rs11
-rw-r--r--src/test/run-pass/rfc-1014.rs1
-rw-r--r--src/test/run-pass/running-with-no-runtime.rs1
-rw-r--r--src/test/run-pass/segfault-no-out-of-stack.rs1
-rw-r--r--src/test/run-pass/signal-alternate-stack-cleanup.rs3
-rw-r--r--src/test/run-pass/signal-exit-status.rs3
-rw-r--r--src/test/run-pass/sigpipe-should-be-ignored.rs1
-rw-r--r--src/test/run-pass/sse2.rs2
-rw-r--r--src/test/run-pass/stack-probes-lto.rs1
-rw-r--r--src/test/run-pass/stack-probes.rs1
-rw-r--r--src/test/run-pass/stdio-is-blocking.rs1
-rw-r--r--src/test/run-pass/sync-send-in-std.rs1
-rw-r--r--src/test/run-pass/tcp-stress.rs3
-rw-r--r--src/test/run-pass/try-operator.rs2
-rw-r--r--src/test/run-pass/try-wait.rs1
-rw-r--r--src/test/run-pass/wait-forked-but-failed-child.rs1
-rw-r--r--src/test/run-pass/weird-exit-code.rs12
-rw-r--r--src/test/run-pass/x86stdcall.rs15
-rw-r--r--src/test/ui/issue-46576.rs2
-rw-r--r--src/test/ui/issue-46576.stderr8
-rw-r--r--src/test/ui/lint/use_suggestion_json.rs1
-rw-r--r--src/test/ui/lint/use_suggestion_json.stderr116
-rw-r--r--src/test/ui/mismatched_types/recovered-block.rs2
-rw-r--r--src/test/ui/mismatched_types/recovered-block.stderr10
-rw-r--r--src/test/ui/resolve/token-error-correct-3.rs2
-rw-r--r--src/test/ui/resolve/token-error-correct-3.stderr26
-rw-r--r--src/test/ui/resolve/use_suggestion_placement.rs2
-rw-r--r--src/test/ui/resolve/use_suggestion_placement.stderr20
-rw-r--r--src/test/ui/span/issue-33884.rs2
-rw-r--r--src/test/ui/span/issue-33884.stderr4
-rw-r--r--src/test/ui/suggestions/try-operator-on-main.rs2
-rw-r--r--src/test/ui/suggestions/try-operator-on-main.stderr16
-rw-r--r--src/tools/compiletest/src/runtest.rs5
102 files changed, 253 insertions, 150 deletions
diff --git a/src/libtest/lib.rs b/src/libtest/lib.rs
index 839f697b39c..76557982a02 100644
--- a/src/libtest/lib.rs
+++ b/src/libtest/lib.rs
@@ -977,15 +977,13 @@ fn use_color(opts: &TestOpts) -> bool {
     }
 }
 
-#[cfg(target_os = "redox")]
+#[cfg(any(target_os = "cloudabi",
+          target_os = "redox",
+          all(target_arch = "wasm32", not(target_os = "emscripten"))))]
 fn stdout_isatty() -> bool {
     // FIXME: Implement isatty on Redox
     false
 }
-#[cfg(all(target_arch = "wasm32", not(target_os = "emscripten")))]
-fn stdout_isatty() -> bool {
-    false
-}
 #[cfg(unix)]
 fn stdout_isatty() -> bool {
     unsafe { libc::isatty(libc::STDOUT_FILENO) != 0 }
diff --git a/src/test/codegen/dllimports/main.rs b/src/test/codegen/dllimports/main.rs
index 64f516aa272..d0fafbdd044 100644
--- a/src/test/codegen/dllimports/main.rs
+++ b/src/test/codegen/dllimports/main.rs
@@ -9,19 +9,20 @@
 // except according to those terms.
 
 // This test is for *-windows-msvc only.
-// ignore-gnu
 // ignore-android
 // ignore-bitrig
-// ignore-macos
+// ignore-cloudabi
 // ignore-dragonfly
+// ignore-emscripten
 // ignore-freebsd
+// ignore-gnu
 // ignore-haiku
 // ignore-ios
 // ignore-linux
+// ignore-macos
 // ignore-netbsd
 // ignore-openbsd
 // ignore-solaris
-// ignore-emscripten
 
 // aux-build:dummy.rs
 // aux-build:wrapper.rs
diff --git a/src/test/codegen/panic-abort-windows.rs b/src/test/codegen/panic-abort-windows.rs
index 15688bdc2a1..f1affcc1248 100644
--- a/src/test/codegen/panic-abort-windows.rs
+++ b/src/test/codegen/panic-abort-windows.rs
@@ -13,16 +13,17 @@
 // This test is for *-windows-msvc only.
 // ignore-android
 // ignore-bitrig
-// ignore-macos
+// ignore-cloudabi
 // ignore-dragonfly
+// ignore-emscripten
 // ignore-freebsd
 // ignore-haiku
 // ignore-ios
 // ignore-linux
+// ignore-macos
 // ignore-netbsd
 // ignore-openbsd
 // ignore-solaris
-// ignore-emscripten
 
 // compile-flags: -C no-prepopulate-passes -C panic=abort -O
 
diff --git a/src/test/compile-fail/E0277.rs b/src/test/compile-fail/E0277.rs
index 784f7465d43..b29e4357015 100644
--- a/src/test/compile-fail/E0277.rs
+++ b/src/test/compile-fail/E0277.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no std::path
+
 use std::path::Path;
 
 trait Foo {
diff --git a/src/test/compile-fail/cdylib-deps-must-be-static.rs b/src/test/compile-fail/cdylib-deps-must-be-static.rs
index bf7189c21fb..0a06e01cab0 100644
--- a/src/test/compile-fail/cdylib-deps-must-be-static.rs
+++ b/src/test/compile-fail/cdylib-deps-must-be-static.rs
@@ -11,6 +11,7 @@
 // error-pattern: crate `cdylib_dep` required to be available in rlib format, but was not found
 // aux-build:cdylib-dep.rs
 // ignore-musl
+// ignore-cloudabi
 // ignore-emscripten
 
 #![crate_type = "cdylib"]
diff --git a/src/test/compile-fail/issue-13352.rs b/src/test/compile-fail/issue-13352.rs
index 0c446f5fe47..e9d76c758cd 100644
--- a/src/test/compile-fail/issue-13352.rs
+++ b/src/test/compile-fail/issue-13352.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no std::process
+
 fn foo(_: Box<FnMut()>) {}
 
 fn main() {
diff --git a/src/test/compile-fail/issue-37665.rs b/src/test/compile-fail/issue-37665.rs
index f86f570d25d..98e62965235 100644
--- a/src/test/compile-fail/issue-37665.rs
+++ b/src/test/compile-fail/issue-37665.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 // compile-flags: -Z unstable-options --unpretty=mir
+// ignore-cloudabi no std::path
 
 use std::path::MAIN_SEPARATOR;
 
diff --git a/src/test/compile-fail/panic-runtime/abort-link-to-unwind-dylib.rs b/src/test/compile-fail/panic-runtime/abort-link-to-unwind-dylib.rs
index 1fd60b15a72..f392ccd7676 100644
--- a/src/test/compile-fail/panic-runtime/abort-link-to-unwind-dylib.rs
+++ b/src/test/compile-fail/panic-runtime/abort-link-to-unwind-dylib.rs
@@ -10,6 +10,7 @@
 
 // compile-flags:-C panic=abort -C prefer-dynamic
 // ignore-musl - no dylibs here
+// ignore-cloudabi
 // ignore-emscripten
 // error-pattern:`panic_unwind` is not compiled with this crate's panic strategy
 
diff --git a/src/test/parse-fail/mod_file_not_exist_windows.rs b/src/test/parse-fail/mod_file_not_exist_windows.rs
index c58603b4398..5cf821749e9 100644
--- a/src/test/parse-fail/mod_file_not_exist_windows.rs
+++ b/src/test/parse-fail/mod_file_not_exist_windows.rs
@@ -8,19 +8,20 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-// ignore-gnu
 // ignore-android
 // ignore-bitrig
-// ignore-macos
+// ignore-cloudabi
 // ignore-dragonfly
+// ignore-emscripten
 // ignore-freebsd
+// ignore-gnu
 // ignore-haiku
 // ignore-ios
 // ignore-linux
+// ignore-macos
 // ignore-netbsd
 // ignore-openbsd
 // ignore-solaris
-// ignore-emscripten
 
 // compile-flags: -Z parse-only
 
diff --git a/src/test/run-fail/mir_dynamic_drops_1.rs b/src/test/run-fail/mir_dynamic_drops_1.rs
index 69f934272b7..856fc50a0f8 100644
--- a/src/test/run-fail/mir_dynamic_drops_1.rs
+++ b/src/test/run-fail/mir_dynamic_drops_1.rs
@@ -7,9 +7,10 @@
 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
+
 // error-pattern:drop 1
 // error-pattern:drop 2
-
+// ignore-cloudabi no std::process
 
 /// Structure which will not allow to be dropped twice.
 struct Droppable<'a>(&'a mut bool, u32);
diff --git a/src/test/run-fail/mir_dynamic_drops_2.rs b/src/test/run-fail/mir_dynamic_drops_2.rs
index d2fe50401ab..964562322bd 100644
--- a/src/test/run-fail/mir_dynamic_drops_2.rs
+++ b/src/test/run-fail/mir_dynamic_drops_2.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 // error-pattern:drop 1
-
+// ignore-cloudabi no std::process
 
 /// Structure which will not allow to be dropped twice.
 struct Droppable<'a>(&'a mut bool, u32);
diff --git a/src/test/run-fail/mir_dynamic_drops_3.rs b/src/test/run-fail/mir_dynamic_drops_3.rs
index ecc35ee9b24..4c070314555 100644
--- a/src/test/run-fail/mir_dynamic_drops_3.rs
+++ b/src/test/run-fail/mir_dynamic_drops_3.rs
@@ -12,7 +12,7 @@
 // error-pattern:drop 3
 // error-pattern:drop 2
 // error-pattern:drop 1
-
+// ignore-cloudabi no std::process
 
 /// Structure which will not allow to be dropped twice.
 struct Droppable<'a>(&'a mut bool, u32);
diff --git a/src/test/run-fail/mir_trans_no_landing_pads.rs b/src/test/run-fail/mir_trans_no_landing_pads.rs
index bafb78fc213..aded2739b10 100644
--- a/src/test/run-fail/mir_trans_no_landing_pads.rs
+++ b/src/test/run-fail/mir_trans_no_landing_pads.rs
@@ -10,6 +10,8 @@
 
 // compile-flags: -Z no-landing-pads -C codegen-units=1
 // error-pattern:converging_fn called
+// ignore-cloudabi no std::process
+
 use std::io::{self, Write};
 
 struct Droppable;
diff --git a/src/test/run-fail/mir_trans_no_landing_pads_diverging.rs b/src/test/run-fail/mir_trans_no_landing_pads_diverging.rs
index 998ee7470bb..d3a8613bbc4 100644
--- a/src/test/run-fail/mir_trans_no_landing_pads_diverging.rs
+++ b/src/test/run-fail/mir_trans_no_landing_pads_diverging.rs
@@ -10,6 +10,8 @@
 
 // compile-flags: -Z no-landing-pads -C codegen-units=1
 // error-pattern:diverging_fn called
+// ignore-cloudabi no std::process
+
 use std::io::{self, Write};
 
 struct Droppable;
diff --git a/src/test/run-fail/tls-exit-status.rs b/src/test/run-fail/tls-exit-status.rs
index be619e3a82c..d9b81c5d4b6 100644
--- a/src/test/run-fail/tls-exit-status.rs
+++ b/src/test/run-fail/tls-exit-status.rs
@@ -10,6 +10,7 @@
 
 // error-pattern:nonzero
 // exec-env:RUST_NEWRT=1
+// ignore-cloudabi no std::env
 
 use std::env;
 
diff --git a/src/test/run-pass-valgrind/exit-flushes.rs b/src/test/run-pass-valgrind/exit-flushes.rs
index b72d2659967..bb0d5644d38 100644
--- a/src/test/run-pass-valgrind/exit-flushes.rs
+++ b/src/test/run-pass-valgrind/exit-flushes.rs
@@ -9,9 +9,10 @@
 // except according to those terms.
 
 // no-prefer-dynamic
+// ignore-cloudabi
+// ignore-emscripten
 // ignore-macos this needs valgrind 3.11 or higher; see
 // https://github.com/rust-lang/rust/pull/30365#issuecomment-165763679
-// ignore-emscripten
 
 use std::env;
 use std::process::{exit, Command};
diff --git a/src/test/run-pass/abort-on-c-abi.rs b/src/test/run-pass/abort-on-c-abi.rs
index 63fd934b0d0..17661c0b120 100644
--- a/src/test/run-pass/abort-on-c-abi.rs
+++ b/src/test/run-pass/abort-on-c-abi.rs
@@ -11,6 +11,7 @@
 // Since we mark some ABIs as "nounwind" to LLVM, we must make sure that
 // we never unwind through them.
 
+// ignore-cloudabi no env and process
 // ignore-emscripten no processes
 
 use std::{env, panic};
diff --git a/src/test/run-pass/atomic-print.rs b/src/test/run-pass/atomic-print.rs
index ebc9f801931..914b89dfb4d 100644
--- a/src/test/run-pass/atomic-print.rs
+++ b/src/test/run-pass/atomic-print.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no process support
 // ignore-emscripten no threads support
 
 use std::{env, fmt, process, sync, thread};
diff --git a/src/test/run-pass/backtrace-debuginfo.rs b/src/test/run-pass/backtrace-debuginfo.rs
index f9233026a1e..2f1c5c0574a 100644
--- a/src/test/run-pass/backtrace-debuginfo.rs
+++ b/src/test/run-pass/backtrace-debuginfo.rs
@@ -17,6 +17,7 @@
 
 // compile-flags:-g -Cllvm-args=-enable-tail-merge=0
 // ignore-pretty issue #37195
+// ignore-cloudabi spawning processes is not supported
 // ignore-emscripten spawning processes is not supported
 
 use std::env;
diff --git a/src/test/run-pass/backtrace.rs b/src/test/run-pass/backtrace.rs
index b3a9e8928be..3e1ae730e4a 100644
--- a/src/test/run-pass/backtrace.rs
+++ b/src/test/run-pass/backtrace.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 // ignore-android FIXME #17520
+// ignore-cloudabi spawning processes is not supported
 // ignore-emscripten spawning processes is not supported
 // ignore-openbsd no support for libbacktrace without filename
 // compile-flags:-g
diff --git a/src/test/run-pass/cfg-family.rs b/src/test/run-pass/cfg-family.rs
index 1797ad1019c..e45e35b370d 100644
--- a/src/test/run-pass/cfg-family.rs
+++ b/src/test/run-pass/cfg-family.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 // pretty-expanded FIXME #23616
+// ignore-cloudabi no target_family
 // ignore-wasm32-bare no target_family
 
 #[cfg(windows)]
diff --git a/src/test/run-pass/cfg-target-family.rs b/src/test/run-pass/cfg-target-family.rs
index 0b8574e1174..7c279e43e0e 100644
--- a/src/test/run-pass/cfg-target-family.rs
+++ b/src/test/run-pass/cfg-target-family.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no target_family
 // ignore-wasm32-bare no target_family
 
 // pretty-expanded FIXME #23616
diff --git a/src/test/run-pass/cleanup-shortcircuit.rs b/src/test/run-pass/cleanup-shortcircuit.rs
index 6744d7d413d..2460fa92925 100644
--- a/src/test/run-pass/cleanup-shortcircuit.rs
+++ b/src/test/run-pass/cleanup-shortcircuit.rs
@@ -11,6 +11,7 @@
 // Test that cleanups for the RHS of shortcircuiting operators work.
 
 // pretty-expanded FIXME #23616
+// ignore-cloudabi no std::env support
 
 use std::env;
 
diff --git a/src/test/run-pass/command-before-exec.rs b/src/test/run-pass/command-before-exec.rs
index 9e782cca218..9599f65da4e 100644
--- a/src/test/run-pass/command-before-exec.rs
+++ b/src/test/run-pass/command-before-exec.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 // ignore-windows - this is a unix-specific test
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 #![feature(process_exec, libc)]
diff --git a/src/test/run-pass/command-exec.rs b/src/test/run-pass/command-exec.rs
index e378f55dffa..d6d0c2b36f6 100644
--- a/src/test/run-pass/command-exec.rs
+++ b/src/test/run-pass/command-exec.rs
@@ -10,6 +10,7 @@
 
 // ignore-windows - this is a unix-specific test
 // ignore-pretty issue #37199
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 #![feature(process_exec)]
diff --git a/src/test/run-pass/core-run-destroy.rs b/src/test/run-pass/core-run-destroy.rs
index 863f3cf30e9..13118c48d6e 100644
--- a/src/test/run-pass/core-run-destroy.rs
+++ b/src/test/run-pass/core-run-destroy.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 // compile-flags:--test
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 // NB: These tests kill child processes. Valgrind sees these children as leaking
diff --git a/src/test/run-pass/env-args-reverse-iterator.rs b/src/test/run-pass/env-args-reverse-iterator.rs
index dddf1ae0546..0645c65d0d6 100644
--- a/src/test/run-pass/env-args-reverse-iterator.rs
+++ b/src/test/run-pass/env-args-reverse-iterator.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 use std::env::args;
diff --git a/src/test/run-pass/env-funky-keys.rs b/src/test/run-pass/env-funky-keys.rs
index 86ffaf1e24f..12e1cbe97d8 100644
--- a/src/test/run-pass/env-funky-keys.rs
+++ b/src/test/run-pass/env-funky-keys.rs
@@ -12,6 +12,7 @@
 
 // ignore-android
 // ignore-windows
+// ignore-cloudabi no execve
 // ignore-emscripten no execve
 // no-prefer-dynamic
 
diff --git a/src/test/run-pass/env-home-dir.rs b/src/test/run-pass/env-home-dir.rs
index 3693e86ba24..22e440c6ffa 100644
--- a/src/test/run-pass/env-home-dir.rs
+++ b/src/test/run-pass/env-home-dir.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no environment variables present
 // ignore-emscripten env vars don't work?
 
 #![feature(path)]
diff --git a/src/test/run-pass/env-vars.rs b/src/test/run-pass/env-vars.rs
index af44a6567e4..d7b4c81fc7f 100644
--- a/src/test/run-pass/env-vars.rs
+++ b/src/test/run-pass/env-vars.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no env vars
 // ignore-wasm32-bare no env vars
 
 use std::env::*;
diff --git a/src/test/run-pass/exec-env.rs b/src/test/run-pass/exec-env.rs
index a96d189afaa..b2d2e70f83b 100644
--- a/src/test/run-pass/exec-env.rs
+++ b/src/test/run-pass/exec-env.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 // exec-env:TEST_EXEC_ENV=22
+// ignore-cloudabi no env vars
 // ignore-emscripten FIXME: issue #31622
 
 use std::env;
diff --git a/src/test/run-pass/fds-are-cloexec.rs b/src/test/run-pass/fds-are-cloexec.rs
index f55876115c0..a5ae0ae9f31 100644
--- a/src/test/run-pass/fds-are-cloexec.rs
+++ b/src/test/run-pass/fds-are-cloexec.rs
@@ -10,6 +10,7 @@
 
 // ignore-windows
 // ignore-android
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 // ignore-haiku
 
diff --git a/src/test/run-pass/intrinsic-alignment.rs b/src/test/run-pass/intrinsic-alignment.rs
index 99edd2550c0..c7aa78e768f 100644
--- a/src/test/run-pass/intrinsic-alignment.rs
+++ b/src/test/run-pass/intrinsic-alignment.rs
@@ -19,14 +19,15 @@ mod rusti {
     }
 }
 
-#[cfg(any(target_os = "linux",
-          target_os = "macos",
-          target_os = "freebsd",
+#[cfg(any(target_os = "cloudabi",
           target_os = "dragonfly",
+          target_os = "emscripten",
+          target_os = "freebsd",
+          target_os = "linux",
+          target_os = "macos",
           target_os = "netbsd",
           target_os = "openbsd",
-          target_os = "solaris",
-          target_os = "emscripten"))]
+          target_os = "solaris"))]
 mod m {
     #[main]
     #[cfg(target_arch = "x86")]
diff --git a/src/test/run-pass/issue-10626.rs b/src/test/run-pass/issue-10626.rs
index e9d37817ee2..9262fc342f7 100644
--- a/src/test/run-pass/issue-10626.rs
+++ b/src/test/run-pass/issue-10626.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 // Make sure that if a process doesn't have its stdio/stderr descriptors set up
diff --git a/src/test/run-pass/issue-12133-3.rs b/src/test/run-pass/issue-12133-3.rs
index 8f455c2fe4e..2b36c94d2e2 100644
--- a/src/test/run-pass/issue-12133-3.rs
+++ b/src/test/run-pass/issue-12133-3.rs
@@ -11,8 +11,9 @@
 // aux-build:issue-12133-rlib.rs
 // aux-build:issue-12133-dylib.rs
 // aux-build:issue-12133-dylib2.rs
-// ignore-musl
+// ignore-cloudabi no dylib support
 // ignore-emscripten no dylib support
+// ignore-musl
 
 // pretty-expanded FIXME #23616
 
diff --git a/src/test/run-pass/issue-13304.rs b/src/test/run-pass/issue-13304.rs
index 9214d6b04bd..264db106491 100644
--- a/src/test/run-pass/issue-13304.rs
+++ b/src/test/run-pass/issue-13304.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 #![feature(io, process_capture)]
diff --git a/src/test/run-pass/issue-14456.rs b/src/test/run-pass/issue-14456.rs
index 2edb45cc1c4..c4745a6e1f1 100644
--- a/src/test/run-pass/issue-14456.rs
+++ b/src/test/run-pass/issue-14456.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 #![feature(io, process_capture)]
diff --git a/src/test/run-pass/issue-14940.rs b/src/test/run-pass/issue-14940.rs
index 588fa63cfdf..c0741820119 100644
--- a/src/test/run-pass/issue-14940.rs
+++ b/src/test/run-pass/issue-14940.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 use std::env;
diff --git a/src/test/run-pass/issue-16272.rs b/src/test/run-pass/issue-16272.rs
index cd02cbf3dad..f8d6e43c730 100644
--- a/src/test/run-pass/issue-16272.rs
+++ b/src/test/run-pass/issue-16272.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 use std::process::Command;
diff --git a/src/test/run-pass/issue-17121.rs b/src/test/run-pass/issue-17121.rs
index dcbcc2d44b5..6eb813025ec 100644
--- a/src/test/run-pass/issue-17121.rs
+++ b/src/test/run-pass/issue-17121.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 // pretty-expanded FIXME #23616
+// ignore-cloudabi no std::fs
 
 use std::fs::File;
 use std::io::{self, BufReader, Read};
diff --git a/src/test/run-pass/issue-20091.rs b/src/test/run-pass/issue-20091.rs
index c8ba5dbd84c..f84cfd232f2 100644
--- a/src/test/run-pass/issue-20091.rs
+++ b/src/test/run-pass/issue-20091.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 #![feature(std_misc, os)]
diff --git a/src/test/run-pass/issue-20644.rs b/src/test/run-pass/issue-20644.rs
index 72ccd82a21e..7cacc2e1146 100644
--- a/src/test/run-pass/issue-20644.rs
+++ b/src/test/run-pass/issue-20644.rs
@@ -12,6 +12,7 @@
 // had to do with trans ignoring binders.
 
 // pretty-expanded FIXME #23616
+// ignore-cloudabi no std::fs
 
 #![feature(os)]
 
diff --git a/src/test/run-pass/issue-20797.rs b/src/test/run-pass/issue-20797.rs
index e45582dc2d3..3a4be580fc3 100644
--- a/src/test/run-pass/issue-20797.rs
+++ b/src/test/run-pass/issue-20797.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no std::fs
+
 // Regression test for #20797.
 
 use std::default::Default;
diff --git a/src/test/run-pass/issue-2214.rs b/src/test/run-pass/issue-2214.rs
index 7b7ecc91484..a87af59ee79 100644
--- a/src/test/run-pass/issue-2214.rs
+++ b/src/test/run-pass/issue-2214.rs
@@ -34,7 +34,7 @@ mod m {
 
     #[link_name = "m"]
     extern {
-        #[cfg(unix)]
+        #[cfg(any(unix, target_os = "cloudabi"))]
         #[link_name="lgamma_r"]
         pub fn lgamma(n: c_double, sign: &mut c_int) -> c_double;
         #[cfg(windows)]
diff --git a/src/test/run-pass/issue-22577.rs b/src/test/run-pass/issue-22577.rs
index 96e77c05ca2..ec4be812f9a 100644
--- a/src/test/run-pass/issue-22577.rs
+++ b/src/test/run-pass/issue-22577.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 // pretty-expanded FIXME #23616
+// ignore-cloudabi no std::fs
 
 #![feature(fs, net)]
 
diff --git a/src/test/run-pass/issue-23036.rs b/src/test/run-pass/issue-23036.rs
index 0ed4126e6cd..c3c9ede5ada 100644
--- a/src/test/run-pass/issue-23036.rs
+++ b/src/test/run-pass/issue-23036.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no std::path
+
 use std::collections::HashMap;
 use std::path::Path;
 
diff --git a/src/test/run-pass/issue-23649-2.rs b/src/test/run-pass/issue-23649-2.rs
index 018c0690f8b..c48ae414cc3 100644
--- a/src/test/run-pass/issue-23649-2.rs
+++ b/src/test/run-pass/issue-23649-2.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no std::path
+
 use std::collections::HashMap;
 use std::path::{Path, PathBuf};
 
diff --git a/src/test/run-pass/issue-24313.rs b/src/test/run-pass/issue-24313.rs
index ad385ee78e0..2e7d2e490b3 100644
--- a/src/test/run-pass/issue-24313.rs
+++ b/src/test/run-pass/issue-24313.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no threads
 
 use std::thread;
diff --git a/src/test/run-pass/issue-27859.rs b/src/test/run-pass/issue-27859.rs
index 56036caca15..d184724cf6f 100644
--- a/src/test/run-pass/issue-27859.rs
+++ b/src/test/run-pass/issue-27859.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no std::env
 // ignore-wasm32 issue 42629
 
 #[inline(never)]
diff --git a/src/test/run-pass/issue-30490.rs b/src/test/run-pass/issue-30490.rs
index 4296107dd45..633bd53864d 100644
--- a/src/test/run-pass/issue-30490.rs
+++ b/src/test/run-pass/issue-30490.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 // Previously libstd would set stdio descriptors of a child process
diff --git a/src/test/run-pass/issue-33770.rs b/src/test/run-pass/issue-33770.rs
index 38062700707..7fad2b3e4a2 100644
--- a/src/test/run-pass/issue-33770.rs
+++ b/src/test/run-pass/issue-33770.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 use std::process::{Command, Stdio};
diff --git a/src/test/run-pass/issue-4541.rs b/src/test/run-pass/issue-4541.rs
index 1f090d8b622..68f6945cd9c 100644
--- a/src/test/run-pass/issue-4541.rs
+++ b/src/test/run-pass/issue-4541.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no std::env
+
 fn parse_args() -> String {
     let args: Vec<_> = ::std::env::args().collect();
     let mut n = 0;
diff --git a/src/test/run-pass/issue-4542.rs b/src/test/run-pass/issue-4542.rs
index 23e8f5b0bda..59837e4bd53 100644
--- a/src/test/run-pass/issue-4542.rs
+++ b/src/test/run-pass/issue-4542.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 // pretty-expanded FIXME #23616
+// ignore-cloudabi no std::env
 
 use std::env;
 
diff --git a/src/test/run-pass/issue-45731.rs b/src/test/run-pass/issue-45731.rs
index ec35035dab4..e2c04c964d7 100644
--- a/src/test/run-pass/issue-45731.rs
+++ b/src/test/run-pass/issue-45731.rs
@@ -10,11 +10,11 @@
 
 // compile-flags:--test -g
 
-use std::{env, panic, fs};
-
 #[cfg(target_os = "macos")]
 #[test]
 fn simple_test() {
+    use std::{env, panic, fs};
+
     // Find our dSYM and replace the DWARF binary with an empty file
     let mut dsym_path = env::current_exe().unwrap();
     let executable_name = dsym_path.file_name().unwrap().to_str().unwrap().to_string();
diff --git a/src/test/run-pass/multi-panic.rs b/src/test/run-pass/multi-panic.rs
index c15b40d4dda..2e6e10935fa 100644
--- a/src/test/run-pass/multi-panic.rs
+++ b/src/test/run-pass/multi-panic.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 fn check_for_no_backtrace(test: std::process::Output) {
diff --git a/src/test/run-pass/no-stdio.rs b/src/test/run-pass/no-stdio.rs
index 7b6b711315a..d3424176960 100644
--- a/src/test/run-pass/no-stdio.rs
+++ b/src/test/run-pass/no-stdio.rs
@@ -8,8 +8,9 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-// ignore-emscripten no processes
 // ignore-android
+// ignore-cloudabi no processes
+// ignore-emscripten no processes
 
 #![feature(libc)]
 
diff --git a/src/test/run-pass/out-of-stack.rs b/src/test/run-pass/out-of-stack.rs
index 485335a2d80..6ed07fb2f7d 100644
--- a/src/test/run-pass/out-of-stack.rs
+++ b/src/test/run-pass/out-of-stack.rs
@@ -10,6 +10,7 @@
 
 // ignore-android: FIXME (#20004)
 // ignore-musl
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 #![feature(asm)]
diff --git a/src/test/run-pass/panic-runtime/abort-link-to-unwinding-crates.rs b/src/test/run-pass/panic-runtime/abort-link-to-unwinding-crates.rs
index d1fdc8afa65..6917c2db3b4 100644
--- a/src/test/run-pass/panic-runtime/abort-link-to-unwinding-crates.rs
+++ b/src/test/run-pass/panic-runtime/abort-link-to-unwinding-crates.rs
@@ -11,6 +11,7 @@
 // compile-flags:-C panic=abort
 // aux-build:exit-success-if-unwind.rs
 // no-prefer-dynamic
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 extern crate exit_success_if_unwind;
diff --git a/src/test/run-pass/panic-runtime/abort.rs b/src/test/run-pass/panic-runtime/abort.rs
index bb541b29d7c..3a3b86aec02 100644
--- a/src/test/run-pass/panic-runtime/abort.rs
+++ b/src/test/run-pass/panic-runtime/abort.rs
@@ -10,6 +10,7 @@
 
 // compile-flags:-C panic=abort
 // no-prefer-dynamic
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 use std::process::Command;
diff --git a/src/test/run-pass/panic-runtime/lto-abort.rs b/src/test/run-pass/panic-runtime/lto-abort.rs
index 59e9474aab2..54e02fb6975 100644
--- a/src/test/run-pass/panic-runtime/lto-abort.rs
+++ b/src/test/run-pass/panic-runtime/lto-abort.rs
@@ -10,6 +10,7 @@
 
 // compile-flags:-C lto -C panic=abort
 // no-prefer-dynamic
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 use std::process::Command;
diff --git a/src/test/run-pass/panic-runtime/lto-unwind.rs b/src/test/run-pass/panic-runtime/lto-unwind.rs
index 6d28b8d12f6..52f10688f14 100644
--- a/src/test/run-pass/panic-runtime/lto-unwind.rs
+++ b/src/test/run-pass/panic-runtime/lto-unwind.rs
@@ -10,6 +10,7 @@
 
 // compile-flags:-C lto -C panic=unwind
 // no-prefer-dynamic
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 use std::process::Command;
diff --git a/src/test/run-pass/paths-containing-nul.rs b/src/test/run-pass/paths-containing-nul.rs
index 9f39146e238..e0fe1ea72df 100644
--- a/src/test/run-pass/paths-containing-nul.rs
+++ b/src/test/run-pass/paths-containing-nul.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no files or I/O
 // ignore-wasm32-bare no files or I/O
 
 use std::fs;
diff --git a/src/test/run-pass/print-stdout-eprint-stderr.rs b/src/test/run-pass/print-stdout-eprint-stderr.rs
index 0a0f30aba72..9e36089cc23 100644
--- a/src/test/run-pass/print-stdout-eprint-stderr.rs
+++ b/src/test/run-pass/print-stdout-eprint-stderr.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi spawning processes is not supported
 // ignore-emscripten spawning processes is not supported
 
 use std::{env, process};
diff --git a/src/test/run-pass/process-envs.rs b/src/test/run-pass/process-envs.rs
index 1622517198a..e399bc20d52 100644
--- a/src/test/run-pass/process-envs.rs
+++ b/src/test/run-pass/process-envs.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 use std::process::Command;
diff --git a/src/test/run-pass/process-exit.rs b/src/test/run-pass/process-exit.rs
index 5abc06b75e1..44ef4a9df71 100644
--- a/src/test/run-pass/process-exit.rs
+++ b/src/test/run-pass/process-exit.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 use std::env;
diff --git a/src/test/run-pass/process-remove-from-env.rs b/src/test/run-pass/process-remove-from-env.rs
index 7a9b431d570..9011ffcf45a 100644
--- a/src/test/run-pass/process-remove-from-env.rs
+++ b/src/test/run-pass/process-remove-from-env.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 use std::process::Command;
diff --git a/src/test/run-pass/process-sigpipe.rs b/src/test/run-pass/process-sigpipe.rs
index ebc7f134610..a436e48ea53 100644
--- a/src/test/run-pass/process-sigpipe.rs
+++ b/src/test/run-pass/process-sigpipe.rs
@@ -18,6 +18,7 @@
 // (instead of running forever), and that it does not print an error
 // message about a broken pipe.
 
+// ignore-cloudabi no subprocesses support
 // ignore-emscripten no threads support
 
 use std::process;
diff --git a/src/test/run-pass/process-spawn-with-unicode-params.rs b/src/test/run-pass/process-spawn-with-unicode-params.rs
index 7b854207263..1e22f17986c 100644
--- a/src/test/run-pass/process-spawn-with-unicode-params.rs
+++ b/src/test/run-pass/process-spawn-with-unicode-params.rs
@@ -16,6 +16,7 @@
 // non-ASCII characters.  The child process ensures all the strings are
 // intact.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 use std::io::prelude::*;
diff --git a/src/test/run-pass/process-status-inherits-stdin.rs b/src/test/run-pass/process-status-inherits-stdin.rs
index 5ea48a4ff33..fdf5cf5ad92 100644
--- a/src/test/run-pass/process-status-inherits-stdin.rs
+++ b/src/test/run-pass/process-status-inherits-stdin.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 use std::env;
diff --git a/src/test/run-pass/rec-align-u64.rs b/src/test/run-pass/rec-align-u64.rs
index d051e05b5f9..3ff8961166d 100644
--- a/src/test/run-pass/rec-align-u64.rs
+++ b/src/test/run-pass/rec-align-u64.rs
@@ -38,14 +38,15 @@ struct Outer {
 }
 
 
-#[cfg(any(target_os = "linux",
-          target_os = "macos",
-          target_os = "freebsd",
+#[cfg(any(target_os = "cloudabi",
           target_os = "dragonfly",
+          target_os = "emscripten",
+          target_os = "freebsd",
+          target_os = "linux",
+          target_os = "macos",
           target_os = "netbsd",
           target_os = "openbsd",
-          target_os = "solaris",
-          target_os = "emscripten"))]
+          target_os = "solaris"))]
 mod m {
     #[cfg(target_arch = "x86")]
     pub mod m {
diff --git a/src/test/run-pass/rfc-1014.rs b/src/test/run-pass/rfc-1014.rs
index 950c2e0c4df..61487b6953d 100644
--- a/src/test/run-pass/rfc-1014.rs
+++ b/src/test/run-pass/rfc-1014.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi stdout does not map to file descriptor 1 by default
 // ignore-wasm32-bare no libc
 
 #![feature(libc)]
diff --git a/src/test/run-pass/running-with-no-runtime.rs b/src/test/run-pass/running-with-no-runtime.rs
index 6f696c1c9ce..a0b83ba4c24 100644
--- a/src/test/run-pass/running-with-no-runtime.rs
+++ b/src/test/run-pass/running-with-no-runtime.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi spawning processes is not supported
 // ignore-emscripten spawning processes is not supported
 
 #![feature(start)]
diff --git a/src/test/run-pass/segfault-no-out-of-stack.rs b/src/test/run-pass/segfault-no-out-of-stack.rs
index 0f98cfe27f6..307ead4b74f 100644
--- a/src/test/run-pass/segfault-no-out-of-stack.rs
+++ b/src/test/run-pass/segfault-no-out-of-stack.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi can't run commands
 // ignore-emscripten can't run commands
 
 #![feature(libc)]
diff --git a/src/test/run-pass/signal-alternate-stack-cleanup.rs b/src/test/run-pass/signal-alternate-stack-cleanup.rs
index 73ccd28a3e9..508fbe80ca4 100644
--- a/src/test/run-pass/signal-alternate-stack-cleanup.rs
+++ b/src/test/run-pass/signal-alternate-stack-cleanup.rs
@@ -12,8 +12,9 @@
 // main thread exit while still being in use by signal handlers. This test
 // triggers this situation by sending signal from atexit handler.
 //
-// ignore-windows
+// ignore-cloudabi no signal handling support
 // ignore-wasm32-bare no libc
+// ignore-windows
 
 #![feature(libc)]
 extern crate libc;
diff --git a/src/test/run-pass/signal-exit-status.rs b/src/test/run-pass/signal-exit-status.rs
index 0f6832acec8..76171a4cc46 100644
--- a/src/test/run-pass/signal-exit-status.rs
+++ b/src/test/run-pass/signal-exit-status.rs
@@ -8,8 +8,9 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-// ignore-windows
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
+// ignore-windows
 
 use std::env;
 use std::process::Command;
diff --git a/src/test/run-pass/sigpipe-should-be-ignored.rs b/src/test/run-pass/sigpipe-should-be-ignored.rs
index 465feb4b779..f5e2239538f 100644
--- a/src/test/run-pass/sigpipe-should-be-ignored.rs
+++ b/src/test/run-pass/sigpipe-should-be-ignored.rs
@@ -11,6 +11,7 @@
 // Be sure that when a SIGPIPE would have been received that the entire process
 // doesn't die in a ball of fire, but rather it's gracefully handled.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 use std::env;
diff --git a/src/test/run-pass/sse2.rs b/src/test/run-pass/sse2.rs
index c27f83011cb..c2414e5ff5d 100644
--- a/src/test/run-pass/sse2.rs
+++ b/src/test/run-pass/sse2.rs
@@ -7,7 +7,9 @@
 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
+
 // min-llvm-version 4.0
+// ignore-cloudabi no std::env
 
 #![feature(cfg_target_feature)]
 
diff --git a/src/test/run-pass/stack-probes-lto.rs b/src/test/run-pass/stack-probes-lto.rs
index 78a1019578e..22555c8d6a7 100644
--- a/src/test/run-pass/stack-probes-lto.rs
+++ b/src/test/run-pass/stack-probes-lto.rs
@@ -11,6 +11,7 @@
 // ignore-arm
 // ignore-aarch64
 // ignore-wasm
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 // ignore-musl FIXME #31506
 // ignore-pretty
diff --git a/src/test/run-pass/stack-probes.rs b/src/test/run-pass/stack-probes.rs
index bb9471e1b48..248ad701926 100644
--- a/src/test/run-pass/stack-probes.rs
+++ b/src/test/run-pass/stack-probes.rs
@@ -11,6 +11,7 @@
 // ignore-arm
 // ignore-aarch64
 // ignore-wasm
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 // ignore-musl FIXME #31506
 // no-system-llvm
diff --git a/src/test/run-pass/stdio-is-blocking.rs b/src/test/run-pass/stdio-is-blocking.rs
index cce1077202c..8d4ee146284 100644
--- a/src/test/run-pass/stdio-is-blocking.rs
+++ b/src/test/run-pass/stdio-is-blocking.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 use std::env;
diff --git a/src/test/run-pass/sync-send-in-std.rs b/src/test/run-pass/sync-send-in-std.rs
index 4dadfdf9c75..f03387957bc 100644
--- a/src/test/run-pass/sync-send-in-std.rs
+++ b/src/test/run-pass/sync-send-in-std.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi networking not available
 // ignore-wasm32-bare networking not available
 
 #![feature(lookup_host)]
diff --git a/src/test/run-pass/tcp-stress.rs b/src/test/run-pass/tcp-stress.rs
index 0ba019c591c..30da1e523fc 100644
--- a/src/test/run-pass/tcp-stress.rs
+++ b/src/test/run-pass/tcp-stress.rs
@@ -10,9 +10,10 @@
 
 // ignore-android needs extra network permissions
 // ignore-bitrig system ulimit (Too many open files)
+// ignore-cloudabi no global network namespace access
+// ignore-emscripten no threads or sockets support
 // ignore-netbsd system ulimit (Too many open files)
 // ignore-openbsd system ulimit (Too many open files)
-// ignore-emscripten no threads or sockets support
 
 use std::io::prelude::*;
 use std::net::{TcpListener, TcpStream};
diff --git a/src/test/run-pass/try-operator.rs b/src/test/run-pass/try-operator.rs
index 29de6364bf1..d615c5f1034 100644
--- a/src/test/run-pass/try-operator.rs
+++ b/src/test/run-pass/try-operator.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no std::fs
+
 use std::fs::File;
 use std::io::{Read, self};
 use std::num::ParseIntError;
diff --git a/src/test/run-pass/try-wait.rs b/src/test/run-pass/try-wait.rs
index 0ee2cb9238c..b8c0d80c5a6 100644
--- a/src/test/run-pass/try-wait.rs
+++ b/src/test/run-pass/try-wait.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 #![feature(process_try_wait)]
diff --git a/src/test/run-pass/wait-forked-but-failed-child.rs b/src/test/run-pass/wait-forked-but-failed-child.rs
index 744f2989bcf..dc47108e183 100644
--- a/src/test/run-pass/wait-forked-but-failed-child.rs
+++ b/src/test/run-pass/wait-forked-but-failed-child.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no processes
 // ignore-emscripten no processes
 
 #![feature(libc)]
diff --git a/src/test/run-pass/weird-exit-code.rs b/src/test/run-pass/weird-exit-code.rs
index 27c7f9bef15..cdd6a9b5331 100644
--- a/src/test/run-pass/weird-exit-code.rs
+++ b/src/test/run-pass/weird-exit-code.rs
@@ -17,13 +17,10 @@
 // Note that this is disabled on unix as processes exiting with 259 will have
 // their exit status truncated to 3 (only the lower 8 bits are used).
 
-use std::process::{self, Command};
-use std::env;
-
+#[cfg(windows)]
 fn main() {
-    if !cfg!(windows) {
-        return
-    }
+    use std::process::{self, Command};
+    use std::env;
 
     if env::args().len() == 1 {
         let status = Command::new(env::current_exe().unwrap())
@@ -35,3 +32,6 @@ fn main() {
         process::exit(259);
     }
 }
+
+#[cfg(not(windows))]
+fn main() {}
diff --git a/src/test/run-pass/x86stdcall.rs b/src/test/run-pass/x86stdcall.rs
index e2e64ddfa31..69ac68d2583 100644
--- a/src/test/run-pass/x86stdcall.rs
+++ b/src/test/run-pass/x86stdcall.rs
@@ -32,14 +32,15 @@ pub fn main() {
     }
 }
 
-#[cfg(any(target_os = "macos",
-          target_os = "linux",
-          target_os = "freebsd",
-          target_os = "dragonfly",
+#[cfg(any(target_os = "android",
           target_os = "bitrig",
+          target_os = "cloudabi",
+          target_os = "dragonfly",
+          target_os = "emscripten",
+          target_os = "freebsd",
+          target_os = "linux",
+          target_os = "macos",
           target_os = "netbsd",
           target_os = "openbsd",
-          target_os = "android",
-          target_os = "solaris",
-          target_os = "emscripten"))]
+          target_os = "solaris"))]
 pub fn main() { }
diff --git a/src/test/ui/issue-46576.rs b/src/test/ui/issue-46576.rs
index 80f15eb4cac..636a1e9a064 100644
--- a/src/test/ui/issue-46576.rs
+++ b/src/test/ui/issue-46576.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no std::fs support
+
 #![allow(dead_code)]
 #![deny(unused_imports)]
 
diff --git a/src/test/ui/issue-46576.stderr b/src/test/ui/issue-46576.stderr
index d73da19ebdd..e0be6b4fdc2 100644
--- a/src/test/ui/issue-46576.stderr
+++ b/src/test/ui/issue-46576.stderr
@@ -1,13 +1,13 @@
 error: unused import: `BufRead`
-  --> $DIR/issue-46576.rs:15:15
+  --> $DIR/issue-46576.rs:17:15
    |
-15 | use std::io::{BufRead, BufReader, Read};
+17 | use std::io::{BufRead, BufReader, Read};
    |               ^^^^^^^
    |
 note: lint level defined here
-  --> $DIR/issue-46576.rs:12:9
+  --> $DIR/issue-46576.rs:14:9
    |
-12 | #![deny(unused_imports)]
+14 | #![deny(unused_imports)]
    |         ^^^^^^^^^^^^^^
 
 error: aborting due to previous error
diff --git a/src/test/ui/lint/use_suggestion_json.rs b/src/test/ui/lint/use_suggestion_json.rs
index 27232c4fec4..c097a8f1342 100644
--- a/src/test/ui/lint/use_suggestion_json.rs
+++ b/src/test/ui/lint/use_suggestion_json.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi
 // compile-flags: --error-format pretty-json -Zunstable-options
 
 // The output for humans should just highlight the whole span without showing
diff --git a/src/test/ui/lint/use_suggestion_json.stderr b/src/test/ui/lint/use_suggestion_json.stderr
index 846d7df445d..86c2ad4c0e7 100644
--- a/src/test/ui/lint/use_suggestion_json.stderr
+++ b/src/test/ui/lint/use_suggestion_json.stderr
@@ -73,10 +73,10 @@ mod foo {
   "spans": [
     {
       "file_name": "$DIR/use_suggestion_json.rs",
-      "byte_start": 888,
-      "byte_end": 892,
-      "line_start": 20,
-      "line_end": 20,
+      "byte_start": 907,
+      "byte_end": 911,
+      "line_start": 21,
+      "line_end": 21,
       "column_start": 12,
       "column_end": 16,
       "is_primary": true,
@@ -100,10 +100,10 @@ mod foo {
       "spans": [
         {
           "file_name": "$DIR/use_suggestion_json.rs",
-          "byte_start": 865,
-          "byte_end": 865,
-          "line_start": 19,
-          "line_end": 19,
+          "byte_start": 884,
+          "byte_end": 884,
+          "line_start": 20,
+          "line_end": 20,
           "column_start": 1,
           "column_end": 1,
           "is_primary": true,
@@ -122,10 +122,10 @@ mod foo {
         },
         {
           "file_name": "$DIR/use_suggestion_json.rs",
-          "byte_start": 865,
-          "byte_end": 865,
-          "line_start": 19,
-          "line_end": 19,
+          "byte_start": 884,
+          "byte_end": 884,
+          "line_start": 20,
+          "line_end": 20,
           "column_start": 1,
           "column_end": 1,
           "is_primary": true,
@@ -144,10 +144,10 @@ mod foo {
         },
         {
           "file_name": "$DIR/use_suggestion_json.rs",
-          "byte_start": 865,
-          "byte_end": 865,
-          "line_start": 19,
-          "line_end": 19,
+          "byte_start": 884,
+          "byte_end": 884,
+          "line_start": 20,
+          "line_end": 20,
           "column_start": 1,
           "column_end": 1,
           "is_primary": true,
@@ -166,10 +166,10 @@ mod foo {
         },
         {
           "file_name": "$DIR/use_suggestion_json.rs",
-          "byte_start": 865,
-          "byte_end": 865,
-          "line_start": 19,
-          "line_end": 19,
+          "byte_start": 884,
+          "byte_end": 884,
+          "line_start": 20,
+          "line_end": 20,
           "column_start": 1,
           "column_end": 1,
           "is_primary": true,
@@ -188,10 +188,10 @@ mod foo {
         },
         {
           "file_name": "$DIR/use_suggestion_json.rs",
-          "byte_start": 865,
-          "byte_end": 865,
-          "line_start": 19,
-          "line_end": 19,
+          "byte_start": 884,
+          "byte_end": 884,
+          "line_start": 20,
+          "line_end": 20,
           "column_start": 1,
           "column_end": 1,
           "is_primary": true,
@@ -210,10 +210,10 @@ mod foo {
         },
         {
           "file_name": "$DIR/use_suggestion_json.rs",
-          "byte_start": 865,
-          "byte_end": 865,
-          "line_start": 19,
-          "line_end": 19,
+          "byte_start": 884,
+          "byte_end": 884,
+          "line_start": 20,
+          "line_end": 20,
           "column_start": 1,
           "column_end": 1,
           "is_primary": true,
@@ -232,10 +232,10 @@ mod foo {
         },
         {
           "file_name": "$DIR/use_suggestion_json.rs",
-          "byte_start": 865,
-          "byte_end": 865,
-          "line_start": 19,
-          "line_end": 19,
+          "byte_start": 884,
+          "byte_end": 884,
+          "line_start": 20,
+          "line_end": 20,
           "column_start": 1,
           "column_end": 1,
           "is_primary": true,
@@ -254,10 +254,10 @@ mod foo {
         },
         {
           "file_name": "$DIR/use_suggestion_json.rs",
-          "byte_start": 865,
-          "byte_end": 865,
-          "line_start": 19,
-          "line_end": 19,
+          "byte_start": 884,
+          "byte_end": 884,
+          "line_start": 20,
+          "line_end": 20,
           "column_start": 1,
           "column_end": 1,
           "is_primary": true,
@@ -276,10 +276,10 @@ mod foo {
         },
         {
           "file_name": "$DIR/use_suggestion_json.rs",
-          "byte_start": 865,
-          "byte_end": 865,
-          "line_start": 19,
-          "line_end": 19,
+          "byte_start": 884,
+          "byte_end": 884,
+          "line_start": 20,
+          "line_end": 20,
           "column_start": 1,
           "column_end": 1,
           "is_primary": true,
@@ -298,10 +298,10 @@ mod foo {
         },
         {
           "file_name": "$DIR/use_suggestion_json.rs",
-          "byte_start": 865,
-          "byte_end": 865,
-          "line_start": 19,
-          "line_end": 19,
+          "byte_start": 884,
+          "byte_end": 884,
+          "line_start": 20,
+          "line_end": 20,
           "column_start": 1,
           "column_end": 1,
           "is_primary": true,
@@ -320,10 +320,10 @@ mod foo {
         },
         {
           "file_name": "$DIR/use_suggestion_json.rs",
-          "byte_start": 865,
-          "byte_end": 865,
-          "line_start": 19,
-          "line_end": 19,
+          "byte_start": 884,
+          "byte_end": 884,
+          "line_start": 20,
+          "line_end": 20,
           "column_start": 1,
           "column_end": 1,
           "is_primary": true,
@@ -342,10 +342,10 @@ mod foo {
         },
         {
           "file_name": "$DIR/use_suggestion_json.rs",
-          "byte_start": 865,
-          "byte_end": 865,
-          "line_start": 19,
-          "line_end": 19,
+          "byte_start": 884,
+          "byte_end": 884,
+          "line_start": 20,
+          "line_end": 20,
           "column_start": 1,
           "column_end": 1,
           "is_primary": true,
@@ -368,19 +368,19 @@ mod foo {
     }
   ],
   "rendered": "error[E0412]: cannot find type `Iter` in this scope
-  --> $DIR/use_suggestion_json.rs:20:12
+  --> $DIR/use_suggestion_json.rs:21:12
    |
-20 |     let x: Iter;
+21 |     let x: Iter;
    |            ^^^^ not found in this scope
 help: possible candidates are found in other modules, you can import them into scope
    |
-19 | use std::collections::binary_heap::Iter;
+20 | use std::collections::binary_heap::Iter;
    |
-19 | use std::collections::btree_map::Iter;
+20 | use std::collections::btree_map::Iter;
    |
-19 | use std::collections::btree_set::Iter;
+20 | use std::collections::btree_set::Iter;
    |
-19 | use std::collections::hash_map::Iter;
+20 | use std::collections::hash_map::Iter;
    |
 and 8 other candidates
 
diff --git a/src/test/ui/mismatched_types/recovered-block.rs b/src/test/ui/mismatched_types/recovered-block.rs
index f3e3579f2bc..8166254e8a6 100644
--- a/src/test/ui/mismatched_types/recovered-block.rs
+++ b/src/test/ui/mismatched_types/recovered-block.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no std::env support
+
 use std::env;
 
 pub struct Foo {
diff --git a/src/test/ui/mismatched_types/recovered-block.stderr b/src/test/ui/mismatched_types/recovered-block.stderr
index dcaf2812f59..23c1a5b8c24 100644
--- a/src/test/ui/mismatched_types/recovered-block.stderr
+++ b/src/test/ui/mismatched_types/recovered-block.stderr
@@ -1,17 +1,17 @@
 error: missing `struct` for struct definition
-  --> $DIR/recovered-block.rs:21:8
+  --> $DIR/recovered-block.rs:23:8
    |
-21 |     pub Foo { text }
+23 |     pub Foo { text }
    |        ^
 help: add `struct` here to parse `Foo` as a public struct
    |
-21 |     pub struct Foo { text }
+23 |     pub struct Foo { text }
    |         ^^^^^^
 
 error: expected one of `(` or `<`, found `{`
-  --> $DIR/recovered-block.rs:27:9
+  --> $DIR/recovered-block.rs:29:9
    |
-27 |     Foo { text: "".to_string() }
+29 |     Foo { text: "".to_string() }
    |         ^ expected one of `(` or `<` here
 
 error: aborting due to 2 previous errors
diff --git a/src/test/ui/resolve/token-error-correct-3.rs b/src/test/ui/resolve/token-error-correct-3.rs
index 6d216178a75..8881b965f94 100644
--- a/src/test/ui/resolve/token-error-correct-3.rs
+++ b/src/test/ui/resolve/token-error-correct-3.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no std::fs support
+
 // Test that we do some basic error correcton in the tokeniser (and don't spew
 // too many bogus errors).
 
diff --git a/src/test/ui/resolve/token-error-correct-3.stderr b/src/test/ui/resolve/token-error-correct-3.stderr
index f2281a24e23..33cf1d87817 100644
--- a/src/test/ui/resolve/token-error-correct-3.stderr
+++ b/src/test/ui/resolve/token-error-correct-3.stderr
@@ -1,40 +1,40 @@
 error: incorrect close delimiter: `}`
-  --> $DIR/token-error-correct-3.rs:28:9
+  --> $DIR/token-error-correct-3.rs:30:9
    |
-28 |         } else { //~ ERROR: incorrect close delimiter: `}`
+30 |         } else { //~ ERROR: incorrect close delimiter: `}`
    |         ^
    |
 note: unclosed delimiter
-  --> $DIR/token-error-correct-3.rs:22:21
+  --> $DIR/token-error-correct-3.rs:24:21
    |
-22 |             callback(path.as_ref(); //~ ERROR expected one of
+24 |             callback(path.as_ref(); //~ ERROR expected one of
    |                     ^
 
 error: expected one of `,`, `.`, `?`, or an operator, found `;`
-  --> $DIR/token-error-correct-3.rs:22:35
+  --> $DIR/token-error-correct-3.rs:24:35
    |
-22 |             callback(path.as_ref(); //~ ERROR expected one of
+24 |             callback(path.as_ref(); //~ ERROR expected one of
    |                                   ^ expected one of `,`, `.`, `?`, or an operator here
 
 error: expected one of `.`, `;`, `?`, `}`, or an operator, found `)`
-  --> $DIR/token-error-correct-3.rs:28:9
+  --> $DIR/token-error-correct-3.rs:30:9
    |
-23 |             fs::create_dir_all(path.as_ref()).map(|()| true) //~ ERROR: mismatched types
+25 |             fs::create_dir_all(path.as_ref()).map(|()| true) //~ ERROR: mismatched types
    |                                                             - expected one of `.`, `;`, `?`, `}`, or an operator here
 ...
-28 |         } else { //~ ERROR: incorrect close delimiter: `}`
+30 |         } else { //~ ERROR: incorrect close delimiter: `}`
    |         ^ unexpected token
 
 error[E0425]: cannot find function `is_directory` in this scope
-  --> $DIR/token-error-correct-3.rs:21:13
+  --> $DIR/token-error-correct-3.rs:23:13
    |
-21 |         if !is_directory(path.as_ref()) { //~ ERROR: cannot find function `is_directory`
+23 |         if !is_directory(path.as_ref()) { //~ ERROR: cannot find function `is_directory`
    |             ^^^^^^^^^^^^ not found in this scope
 
 error[E0308]: mismatched types
-  --> $DIR/token-error-correct-3.rs:23:13
+  --> $DIR/token-error-correct-3.rs:25:13
    |
-23 |             fs::create_dir_all(path.as_ref()).map(|()| true) //~ ERROR: mismatched types
+25 |             fs::create_dir_all(path.as_ref()).map(|()| true) //~ ERROR: mismatched types
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- help: try adding a semicolon: `;`
    |             |
    |             expected (), found enum `std::result::Result`
diff --git a/src/test/ui/resolve/use_suggestion_placement.rs b/src/test/ui/resolve/use_suggestion_placement.rs
index 87f38df0442..835c42e4553 100644
--- a/src/test/ui/resolve/use_suggestion_placement.rs
+++ b/src/test/ui/resolve/use_suggestion_placement.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no std::path support
+
 macro_rules! y {
     () => {}
 }
diff --git a/src/test/ui/resolve/use_suggestion_placement.stderr b/src/test/ui/resolve/use_suggestion_placement.stderr
index 1cc2d06ab68..3607aa5e9ab 100644
--- a/src/test/ui/resolve/use_suggestion_placement.stderr
+++ b/src/test/ui/resolve/use_suggestion_placement.stderr
@@ -1,33 +1,33 @@
 error[E0412]: cannot find type `Path` in this scope
-  --> $DIR/use_suggestion_placement.rs:25:16
+  --> $DIR/use_suggestion_placement.rs:27:16
    |
-25 |     type Bar = Path; //~ ERROR cannot find
+27 |     type Bar = Path; //~ ERROR cannot find
    |                ^^^^ not found in this scope
 help: possible candidate is found in another module, you can import it into scope
    |
-21 |     use std::path::Path;
+23 |     use std::path::Path;
    |
 
 error[E0425]: cannot find value `A` in this scope
-  --> $DIR/use_suggestion_placement.rs:30:13
+  --> $DIR/use_suggestion_placement.rs:32:13
    |
-30 |     let _ = A; //~ ERROR cannot find
+32 |     let _ = A; //~ ERROR cannot find
    |             ^ not found in this scope
 help: possible candidate is found in another module, you can import it into scope
    |
-11 | use m::A;
+13 | use m::A;
    |
 
 error[E0412]: cannot find type `HashMap` in this scope
-  --> $DIR/use_suggestion_placement.rs:35:23
+  --> $DIR/use_suggestion_placement.rs:37:23
    |
-35 |     type Dict<K, V> = HashMap<K, V>; //~ ERROR cannot find
+37 |     type Dict<K, V> = HashMap<K, V>; //~ ERROR cannot find
    |                       ^^^^^^^ not found in this scope
 help: possible candidates are found in other modules, you can import them into scope
    |
-11 | use std::collections::HashMap;
+13 | use std::collections::HashMap;
    |
-11 | use std::collections::hash_map::HashMap;
+13 | use std::collections::hash_map::HashMap;
    |
 
 error: aborting due to 3 previous errors
diff --git a/src/test/ui/span/issue-33884.rs b/src/test/ui/span/issue-33884.rs
index 93aa502ee15..d0f23caa538 100644
--- a/src/test/ui/span/issue-33884.rs
+++ b/src/test/ui/span/issue-33884.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no std::net support
+
 use std::net::TcpListener;
 use std::net::TcpStream;
 use std::io::{self, Read, Write};
diff --git a/src/test/ui/span/issue-33884.stderr b/src/test/ui/span/issue-33884.stderr
index cf5190bba0c..5a9c2051a71 100644
--- a/src/test/ui/span/issue-33884.stderr
+++ b/src/test/ui/span/issue-33884.stderr
@@ -1,7 +1,7 @@
 error[E0308]: mismatched types
-  --> $DIR/issue-33884.rs:16:22
+  --> $DIR/issue-33884.rs:18:22
    |
-16 |     stream.write_fmt(format!("message received"))
+18 |     stream.write_fmt(format!("message received"))
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `std::fmt::Arguments`, found struct `std::string::String`
    |
    = note: expected type `std::fmt::Arguments<'_>`
diff --git a/src/test/ui/suggestions/try-operator-on-main.rs b/src/test/ui/suggestions/try-operator-on-main.rs
index e9d285941b7..e52ef45c2ec 100644
--- a/src/test/ui/suggestions/try-operator-on-main.rs
+++ b/src/test/ui/suggestions/try-operator-on-main.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-cloudabi no std::fs support
+
 #![feature(try_trait)]
 
 use std::ops::Try;
diff --git a/src/test/ui/suggestions/try-operator-on-main.stderr b/src/test/ui/suggestions/try-operator-on-main.stderr
index 8b17e06065b..beb627bda6b 100644
--- a/src/test/ui/suggestions/try-operator-on-main.stderr
+++ b/src/test/ui/suggestions/try-operator-on-main.stderr
@@ -1,7 +1,7 @@
 error[E0277]: the `?` operator can only be used in a function that returns `Result` (or another type that implements `std::ops::Try`)
-  --> $DIR/try-operator-on-main.rs:17:5
+  --> $DIR/try-operator-on-main.rs:19:5
    |
-17 |     std::fs::File::open("foo")?; //~ ERROR the `?` operator can only
+19 |     std::fs::File::open("foo")?; //~ ERROR the `?` operator can only
    |     ---------------------------
    |     |
    |     cannot use the `?` operator in a function that returns `()`
@@ -11,9 +11,9 @@ error[E0277]: the `?` operator can only be used in a function that returns `Resu
    = note: required by `std::ops::Try::from_error`
 
 error[E0277]: the `?` operator can only be applied to values that implement `std::ops::Try`
-  --> $DIR/try-operator-on-main.rs:20:5
+  --> $DIR/try-operator-on-main.rs:22:5
    |
-20 |     ()?; //~ ERROR the `?` operator can only
+22 |     ()?; //~ ERROR the `?` operator can only
    |     ---
    |     |
    |     the `?` operator cannot be applied to type `()`
@@ -23,17 +23,17 @@ error[E0277]: the `?` operator can only be applied to values that implement `std
    = note: required by `std::ops::Try::into_result`
 
 error[E0277]: the trait bound `(): std::ops::Try` is not satisfied
-  --> $DIR/try-operator-on-main.rs:23:5
+  --> $DIR/try-operator-on-main.rs:25:5
    |
-23 |     try_trait_generic::<()>(); //~ ERROR the trait bound
+25 |     try_trait_generic::<()>(); //~ ERROR the trait bound
    |     ^^^^^^^^^^^^^^^^^^^^^^^ the trait `std::ops::Try` is not implemented for `()`
    |
    = note: required by `try_trait_generic`
 
 error[E0277]: the `?` operator can only be applied to values that implement `std::ops::Try`
-  --> $DIR/try-operator-on-main.rs:30:5
+  --> $DIR/try-operator-on-main.rs:32:5
    |
-30 |     ()?; //~ ERROR the `?` operator can only
+32 |     ()?; //~ ERROR the `?` operator can only
    |     ---
    |     |
    |     the `?` operator cannot be applied to type `()`
diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs
index aceb472ca63..1b87576ba0b 100644
--- a/src/tools/compiletest/src/runtest.rs
+++ b/src/tools/compiletest/src/runtest.rs
@@ -1368,9 +1368,10 @@ impl<'test> TestCx<'test> {
 
             let crate_type = if aux_props.no_prefer_dynamic {
                 None
-            } else if (self.config.target.contains("musl") && !aux_props.force_host)
-                || self.config.target.contains("wasm32")
+            } else if self.config.target.contains("cloudabi")
                 || self.config.target.contains("emscripten")
+                || (self.config.target.contains("musl") && !aux_props.force_host)
+                || self.config.target.contains("wasm32")
             {
                 // We primarily compile all auxiliary libraries as dynamic libraries
                 // to avoid code size bloat and large binaries as much as possible