Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate target-cpu-native, target-specs and target-without-atomic-cas run-make tests to rmake #127325

Merged
merged 3 commits into from
Jul 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions src/tools/tidy/src/allowed_run_make_makefiles.txt
Original file line number Diff line number Diff line change
Expand Up @@ -162,9 +162,6 @@ run-make/symbol-mangling-hashed/Makefile
run-make/symbol-visibility/Makefile
run-make/symbols-include-type-name/Makefile
run-make/sysroot-crates-are-unstable/Makefile
run-make/target-cpu-native/Makefile
run-make/target-specs/Makefile
run-make/target-without-atomic-cas/Makefile
run-make/test-benches/Makefile
run-make/test-harness/Makefile
run-make/thumb-none-cortex-m/Makefile
Expand Down
20 changes: 0 additions & 20 deletions tests/run-make/target-cpu-native/Makefile

This file was deleted.

14 changes: 14 additions & 0 deletions tests/run-make/target-cpu-native/rmake.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// target-cpu is a codegen flag that generates code for the processor of the host machine
// running the compilation. This test is a sanity test that this flag does not cause any
// warnings when used, and that binaries produced by it can also be successfully executed.
// See https://github.com/rust-lang/rust/pull/23238

use run_make_support::{run, rustc};

fn main() {
let out = rustc().input("foo.rs").arg("-Ctarget-cpu=native").run().stderr_utf8();
run("foo");
// There should be zero warnings emitted - the bug would cause "unknown CPU `native`"
// to be printed out.
assert!(out.is_empty());
}
12 changes: 0 additions & 12 deletions tests/run-make/target-specs/Makefile

This file was deleted.

71 changes: 71 additions & 0 deletions tests/run-make/target-specs/rmake.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
// Target-specific compilation in rustc used to have case-by-case peculiarities in 2014,
// with the compiler having redundant target types and unspecific names. An overarching rework
// in #16156 changed the way the target flag functions, and this test attempts compilation
// with the target flag's bundle of new features to check that compilation either succeeds while
// using them correctly, or fails with the right error message when using them improperly.
// See https://github.com/rust-lang/rust/pull/16156

use run_make_support::{diff, fs_wrapper, rustc};

fn main() {
rustc().input("foo.rs").target("my-awesome-platform.json").crate_type("lib").emit("asm").run();
assert!(!fs_wrapper::read_to_string("foo.s").contains("morestack"));
rustc()
.input("foo.rs")
.target("my-invalid-platform.json")
.run_fail()
.assert_stderr_contains("Error loading target specification");
rustc()
.input("foo.rs")
.target("my-incomplete-platform.json")
.run_fail()
.assert_stderr_contains("Field llvm-target");
rustc()
.env("RUST_TARGET_PATH", ".")
.input("foo.rs")
.target("my-awesome-platform")
.crate_type("lib")
.emit("asm")
.run();
rustc()
.env("RUST_TARGET_PATH", ".")
.input("foo.rs")
.target("my-x86_64-unknown-linux-gnu-platform")
.crate_type("lib")
.emit("asm")
.run();
let test_platform = rustc()
.arg("-Zunstable-options")
.target("my-awesome-platform.json")
.print("target-spec-json")
.run()
.stdout_utf8();
fs_wrapper::create_file("test-platform.json");
fs_wrapper::write("test-platform.json", test_platform.as_bytes());
let test_platform_2 = rustc()
.arg("-Zunstable-options")
.target("test-platform.json")
.print("target-spec-json")
.run()
.stdout_utf8();
diff()
.expected_file("test-platform.json")
.actual_text("test-platform-2", test_platform_2)
.run();
rustc()
.input("foo.rs")
.target("definitely-not-builtin-target")
.run_fail()
.assert_stderr_contains("may not set is_builtin");
rustc()
.input("foo.rs")
.target("endianness-mismatch")
.run_fail()
.assert_stderr_contains(r#""data-layout" claims architecture is little-endian"#);
rustc()
.input("foo.rs")
.target("mismatching-data-layout")
.crate_type("lib")
.run_fail()
.assert_stderr_contains("data-layout for target");
}
5 changes: 0 additions & 5 deletions tests/run-make/target-without-atomic-cas/Makefile

This file was deleted.

16 changes: 16 additions & 0 deletions tests/run-make/target-without-atomic-cas/rmake.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// ARM Cortex-M are a class of processors supported by the rust compiler. However,
// they cannot support any atomic features, such as Arc. This test simply prints
// the configuration details of one Cortex target, and checks that the compiler
// does not falsely list atomic support.
// See https://github.com/rust-lang/rust/pull/36874

use run_make_support::rustc;

// The target used below doesn't support atomic CAS operations. Verify that's the case
fn main() {
rustc()
.print("cfg")
.target("thumbv6m-none-eabi")
.run()
.assert_stdout_not_contains(r#"target_has_atomic="ptr""#);
}
Loading