Skip to content

Commit

Permalink
Rewrite lto-readonly-lib to rmake
Browse files Browse the repository at this point in the history
  • Loading branch information
Oneirical committed Jun 9, 2024
1 parent 87ae390 commit e1f381b
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 49 deletions.
9 changes: 8 additions & 1 deletion src/tools/run-make-support/src/command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,14 @@ impl CompletedProcess {

#[track_caller]
pub fn assert_stderr_contains<S: AsRef<str>>(self, needle: S) -> Self {
assert!(self.stderr_utf8().contains(needle.as_ref()));
assert!(
self.stderr_utf8().contains(needle.as_ref()),
format!(
"The stderr {:?} did not contain the string {:?}",
self.stderr_utf8(),
needle.as_ref(),
)
);
self
}

Expand Down
1 change: 0 additions & 1 deletion src/tools/tidy/src/allowed_run_make_makefiles.txt
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,6 @@ run-make/lto-dylib-dep/Makefile
run-make/lto-empty/Makefile
run-make/lto-linkage-used-attr/Makefile
run-make/lto-no-link-whole-rlib/Makefile
run-make/lto-readonly-lib/Makefile
run-make/lto-smoke-c/Makefile
run-make/macos-deployment-target/Makefile
run-make/macos-fat-archive/Makefile
Expand Down
50 changes: 21 additions & 29 deletions tests/run-make/link-args-order/rmake.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,37 +3,29 @@
// checks that linker arguments remain intact and in the order they were originally passed in.
// See https://github.com/rust-lang/rust/pull/70665

use run_make_support::rustc;
use run_make_support::{assert_stderr_contains, rustc};

fn main() {
assert!(
String::from_utf8(
rustc()
.input("empty.rs")
.linker_flavor("ld")
.link_arg("a")
.link_args("\"b c\"")
.link_args("\"d e\"")
.link_arg("f")
.run_fail()
.stderr
)
.unwrap()
.contains("\"a\" \"b\" \"c\" \"d\" \"e\" \"f\"")
assert_stderr_contains(
rustc()
.input("empty.rs")
.linker_flavor("ld")
.link_arg("a")
.link_args("\"b c\"")
.link_args("\"d e\"")
.link_arg("f")
.run_fail(),
"\"a\" \"b\" \"c\" \"d\" \"e\" \"f\"",
);
assert!(
String::from_utf8(
rustc()
.input("empty.rs")
.linker_flavor("ld")
.pre_link_arg("a")
.pre_link_args("\"b c\"")
.pre_link_args("\"d e\"")
.pre_link_arg("f")
.run_fail()
.stderr
)
.unwrap()
.contains("\"a\" \"b\" \"c\" \"d\" \"e\" \"f\"")
assert_stderr_contains(
rustc()
.input("empty.rs")
.linker_flavor("ld")
.pre_link_arg("a")
.pre_link_args("\"b c\"")
.pre_link_args("\"d e\"")
.pre_link_arg("f")
.run_fail(),
"\"a\" \"b\" \"c\" \"d\" \"e\" \"f\"",
);
}
10 changes: 5 additions & 5 deletions tests/run-make/ls-metadata/rmake.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
//@ ignore-cross-compile

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

fn main() {
rustc().input("foo.rs");
rustc().arg("-Zls=root").input(rmake_out_path("foo"));
fs_wrapper::create_file(rmake_out_path("bar"));
rustc().arg("-Zls=root").input(rmake_out_path("bar"));
rustc().input("foo.rs").run();
rustc().arg("-Zls=root").input("foo").run();
fs_wrapper::create_file("bar");
rustc().arg("-Zls=root").input("bar").run();
}
13 changes: 0 additions & 13 deletions tests/run-make/lto-readonly-lib/Makefile

This file was deleted.

25 changes: 25 additions & 0 deletions tests/run-make/lto-readonly-lib/rmake.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// When the compiler is performing link time optimization, it will
// need to copy the original rlib file, set the copy's permissions to read/write,
// and modify that copy - even if the original
// file is read-only. This test creates a read-only rlib, and checks that
// compilation with LTO succeeds.
// See https://github.com/rust-lang/rust/pull/17619

//@ ignore-cross-compile

use run_make_support::fs_wrapper;
use run_make_support::{cwd, run, rustc};

fn main() {
rustc().input("lib.rs").run();
let entries = fs_wrapper::read_dir(cwd());
for entry in entries {
if entry.path().extension().and_then(|s| s.to_str()) == Some("rlib") {
let mut perms = fs_wrapper::metadata(entry.path()).permissions();
perms.set_readonly(true);
fs_wrapper::set_permissions(entry.path(), perms);
}
}
rustc().input("main.rs").arg("-Clto").run();
run("main");
}

0 comments on commit e1f381b

Please sign in to comment.