Skip to content

Commit

Permalink
Auto merge of rust-lang#126644 - Oneirical:testla-coil, r=<try>
Browse files Browse the repository at this point in the history
Rewrite `extern-flag-rename-transitive`. `debugger-visualizer-dep-info`, `metadata-flag-frobs-symbols`, `extern-overrides-distribution` and `forced-unwind-terminate-pof` `run-make` tests to rmake

Part of rust-lang#121876 and the associated [Google Summer of Code project](https://blog.rust-lang.org/2024/05/01/gsoc-2024-selected-projects.html).

try-job: dist-x86_64-apple
  • Loading branch information
bors committed Jun 19, 2024
2 parents 3186d17 + 2eab81a commit a8c593c
Show file tree
Hide file tree
Showing 12 changed files with 82 additions and 47 deletions.
6 changes: 6 additions & 0 deletions src/tools/run-make-support/src/rustc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,12 @@ impl Rustc {
self
}

/// Incorporate a hashed string to mangled symbols.
pub fn metadata(&mut self, meta: &str) -> &mut Self {
self.cmd.arg(format!("-Cmetadata={meta}"));
self
}

/// Add a suffix in each output filename.
pub fn extra_filename(&mut self, suffix: &str) -> &mut Self {
self.cmd.arg(format!("-Cextra-filename={suffix}"));
Expand Down
5 changes: 0 additions & 5 deletions src/tools/tidy/src/allowed_run_make_makefiles.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ run-make/cross-lang-lto-pgo-smoketest/Makefile
run-make/cross-lang-lto-upstream-rlibs/Makefile
run-make/cross-lang-lto/Makefile
run-make/debug-assertions/Makefile
run-make/debugger-visualizer-dep-info/Makefile
run-make/dep-info-doesnt-run-much/Makefile
run-make/dep-info-spaces/Makefile
run-make/dep-info/Makefile
Expand All @@ -39,7 +38,6 @@ run-make/export-executable-symbols/Makefile
run-make/extern-diff-internal-name/Makefile
run-make/extern-flag-disambiguates/Makefile
run-make/extern-flag-pathless/Makefile
run-make/extern-flag-rename-transitive/Makefile
run-make/extern-fn-explicit-align/Makefile
run-make/extern-fn-generic/Makefile
run-make/extern-fn-mangle/Makefile
Expand All @@ -50,10 +48,8 @@ run-make/extern-fn-with-packed-struct/Makefile
run-make/extern-fn-with-union/Makefile
run-make/extern-multiple-copies/Makefile
run-make/extern-multiple-copies2/Makefile
run-make/extern-overrides-distribution/Makefile
run-make/extra-filename-with-temp-outputs/Makefile
run-make/fmt-write-bloat/Makefile
run-make/forced-unwind-terminate-pof/Makefile
run-make/foreign-double-unwind/Makefile
run-make/foreign-exceptions/Makefile
run-make/foreign-rust-exceptions/Makefile
Expand Down Expand Up @@ -119,7 +115,6 @@ run-make/macos-fat-archive/Makefile
run-make/manual-link/Makefile
run-make/many-crates-but-no-match/Makefile
run-make/metadata-dep-info/Makefile
run-make/metadata-flag-frobs-symbols/Makefile
run-make/min-global-align/Makefile
run-make/mingw-export-call-convention/Makefile
run-make/mismatching-target-triples/Makefile
Expand Down
9 changes: 0 additions & 9 deletions tests/run-make/debugger-visualizer-dep-info/Makefile

This file was deleted.

11 changes: 11 additions & 0 deletions tests/run-make/debugger-visualizer-dep-info/rmake.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// This test checks that files referenced via #[debugger_visualizer] are
// included in `--emit dep-info` output.
// See https://github.com/rust-lang/rust/pull/111641

use run_make_support::{invalid_utf8_contains, rustc};

fn main() {
rustc().emit("dep-info").input("main.rs").run();
invalid_utf8_contains("main.d", "foo.py");
invalid_utf8_contains("main.d", "my_visualizers/bar.natvis");
}
7 changes: 0 additions & 7 deletions tests/run-make/extern-flag-rename-transitive/Makefile

This file was deleted.

14 changes: 14 additions & 0 deletions tests/run-make/extern-flag-rename-transitive/rmake.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// In this test, baz.rs is looking for an extern crate "a" which
// does not exist, and can only run through the --extern rustc flag
// defining that the "a" crate is in fact just "foo". This test
// checks that the --extern flag takes precedence over the extern
// crate statement in the code.
// See https://github.com/rust-lang/rust/pull/52723

use run_make_support::{rust_lib_name, rustc};

fn main() {
rustc().input("foo.rs").run();
rustc().input("bar.rs").run();
rustc().input("baz.rs").extern_("a", rust_lib_name("foo")).run();
}
6 changes: 0 additions & 6 deletions tests/run-make/extern-overrides-distribution/Makefile

This file was deleted.

14 changes: 14 additions & 0 deletions tests/run-make/extern-overrides-distribution/rmake.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// The --extern flag should override any "crate_type" declarations in the
// Rust files themselves. In this test, libc is compiled as "lib", but
// main.rs will only run with an rlib, which checks if the --extern flag
// is successfully overriding the default behaviour.
// See https://github.com/rust-lang/rust/pull/21782

//@ ignore-cross-compile

use run_make_support::{rust_lib_name, rustc};

fn main() {
rustc().input("libc.rs").metadata("foo").run();
rustc().input("main.rs").extern_("libc", rust_lib_name("libc")).run();
}
9 changes: 0 additions & 9 deletions tests/run-make/forced-unwind-terminate-pof/Makefile

This file was deleted.

16 changes: 16 additions & 0 deletions tests/run-make/forced-unwind-terminate-pof/rmake.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// During a forced unwind, crossing the non-Plain Old Frame
// would define the forced unwind as undefined behaviour, and
// immediately abort the unwinding process. This test checks
// that the forced unwinding takes precedence.
// See https://github.com/rust-lang/rust/issues/101469

//@ ignore-cross-compile
//@ ignore-windows
//Reason: pthread (POSIX threads) is not available on Windows

use run_make_support::{run, rustc};

fn main() {
rustc().input("foo.rs").run();
run("foo").assert_stdout_not_contains("cannot unwind");
}
11 changes: 0 additions & 11 deletions tests/run-make/metadata-flag-frobs-symbols/Makefile

This file was deleted.

21 changes: 21 additions & 0 deletions tests/run-make/metadata-flag-frobs-symbols/rmake.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// In this test, foo.rs is compiled twice with different hashes tied to its
// symbols thanks to the metadata flag. bar.rs then ensures that the memory locations
// of foo's symbols are different even though they came from the same original source code.
// This checks that the metadata flag is doing its job.
// See https://github.com/rust-lang/rust/issues/14471

//@ ignore-cross-compile

use run_make_support::{run, rust_lib_name, rustc};

fn main() {
rustc().input("foo.rs").metadata("a").extra_filename("-a").run();
rustc().input("foo.rs").metadata("b").extra_filename("-b").run();
rustc()
.input("bar.rs")
.extern_("foo1", rust_lib_name("foo-a"))
.extern_("foo2", rust_lib_name("foo-b"))
.print("link-args")
.run();
run("bar");
}

0 comments on commit a8c593c

Please sign in to comment.