Skip to content

Commit

Permalink
rewrite issue-14500 to rmake
Browse files Browse the repository at this point in the history
  • Loading branch information
Oneirical committed May 12, 2024
1 parent 3349155 commit f2de5fb
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 16 deletions.
14 changes: 14 additions & 0 deletions src/tools/run-make-support/src/rustc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,20 @@ impl Rustc {
self
}

/// Pass a codegen option.
pub fn codegen_option(&mut self, option: &str) -> &mut Self {
self.cmd.arg("-C");
self.cmd.arg(option);
self
}

/// Add a directory to the library search path.
pub fn library_search_path<P: AsRef<Path>>(&mut self, path: P) -> &mut Self {
self.cmd.arg("-L");
self.cmd.arg(path.as_ref());
self
}

/// Specify the edition year.
pub fn edition(&mut self, edition: &str) -> &mut Self {
self.cmd.arg("--edition");
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 @@ -99,7 +99,6 @@ run-make/issue-107094/Makefile
run-make/issue-10971-temps-dir/Makefile
run-make/issue-109934-lto-debuginfo/Makefile
run-make/issue-11908/Makefile
run-make/issue-14500/Makefile
run-make/issue-14698/Makefile
run-make/issue-15460/Makefile
run-make/issue-18943/Makefile
Expand Down
15 changes: 0 additions & 15 deletions tests/run-make/issue-14500/Makefile

This file was deleted.

31 changes: 31 additions & 0 deletions tests/run-make/issue-14500/rmake.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// Test to make sure that reachable extern fns are always available in final
// productcs, including when LTO is used.

// In this test, the `foo` crate has a reahable symbol,
// and is a dependency of the `bar` crate. When the `bar` crate
// is compiled with LTO, it shouldn't strip the symbol from `foo`, and that's the
// only way that `foo.c` will successfully compile.
// See https://github.com/rust-lang/rust/issues/14500

//@ ignore-cross-compile

use run_make_support::{cc, extra_c_flags, run, rustc};

fn main() {
let libbar_path = tmp_dir().join("libbar.a");
rustc().input("foo.rs")
.crate_type("rlib")
.run();
rustc().input("bar.rs")
.static_lib("staticlib")
.codegen_option("lto")
.library_search_path(".")
.output(&libbar_path)
.run();
cc().input("foo.c")
.input(libbar_path)
.args(&extra_c_flags())
.out_exe("foo")
.run();
run("foo");
}

0 comments on commit f2de5fb

Please sign in to comment.