Rewrite lto-readonly-lib to rmake
This commit is contained in:
parent
594135ea37
commit
03a4259c8b
5 changed files with 48 additions and 49 deletions
|
|
@ -112,7 +112,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
|
||||
|
|
|
|||
|
|
@ -6,34 +6,22 @@
|
|||
use run_make_support::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!(
|
||||
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\"")
|
||||
);
|
||||
rustc()
|
||||
.input("empty.rs")
|
||||
.linker_flavor("ld")
|
||||
.link_arg("a")
|
||||
.link_args("\"b c\"")
|
||||
.link_args("\"d e\"")
|
||||
.link_arg("f")
|
||||
.run_fail()
|
||||
.assert_stderr_contains("\"a\" \"b\" \"c\" \"d\" \"e\" \"f\"");
|
||||
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()
|
||||
.assert_stderr_contains("\"a\" \"b\" \"c\" \"d\" \"e\" \"f\"");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +0,0 @@
|
|||
# ignore-cross-compile
|
||||
include ../tools.mk
|
||||
|
||||
all:
|
||||
$(RUSTC) lib.rs
|
||||
|
||||
# the compiler needs to copy and modify the rlib file when performing
|
||||
# LTO, so we should ensure that it can cope with the original rlib
|
||||
# being read-only.
|
||||
chmod 444 $(TMPDIR)/*.rlib
|
||||
|
||||
$(RUSTC) main.rs -C lto
|
||||
$(call RUN,main)
|
||||
25
tests/run-make/lto-readonly-lib/rmake.rs
Normal file
25
tests/run-make/lto-readonly-lib/rmake.rs
Normal file
|
|
@ -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");
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue