tests/run-make: port issue-84395-lto-embed-bitcode to rmake.rs

Co-authored-by: Oneirical <manchot@videotron.ca>
This commit is contained in:
许杰友 Jieyou Xu (Joe) 2024-10-18 17:34:47 +08:00
parent ef743af119
commit e641b6c2bd
3 changed files with 27 additions and 15 deletions

View File

@ -2,7 +2,6 @@ run-make/branch-protection-check-IBT/Makefile
run-make/cat-and-grep-sanity-check/Makefile run-make/cat-and-grep-sanity-check/Makefile
run-make/extern-fn-reachable/Makefile run-make/extern-fn-reachable/Makefile
run-make/incr-add-rust-src-component/Makefile run-make/incr-add-rust-src-component/Makefile
run-make/issue-84395-lto-embed-bitcode/Makefile
run-make/jobserver-error/Makefile run-make/jobserver-error/Makefile
run-make/libs-through-symlinks/Makefile run-make/libs-through-symlinks/Makefile
run-make/split-debuginfo/Makefile run-make/split-debuginfo/Makefile

View File

@ -1,14 +0,0 @@
# needs-force-clang-based-tests
# FIXME(#126180): This test doesn't actually run anywhere, because the only
# CI job that sets RUSTBUILD_FORCE_CLANG_BASED_TESTS runs very few tests.
# This test makes sure the embed bitcode in elf created with
# lto-embed-bitcode=optimized is valid llvm BC module.
include ../tools.mk
all:
$(RUSTC) test.rs --target $(TARGET) -Clink-arg=-fuse-ld=lld -Clinker-plugin-lto -Clinker=$(CLANG) -Clink-arg=-Wl,--plugin-opt=-lto-embed-bitcode=optimized -Zemit-thin-lto=no
$(LLVM_BIN_DIR)/objcopy --dump-section .llvmbc=$(TMPDIR)/test.bc $(TMPDIR)/test
$(LLVM_BIN_DIR)/llvm-dis $(TMPDIR)/test.bc

View File

@ -0,0 +1,27 @@
//! Smoke test to make sure the embed bitcode in elf created with
//! `--plugin-opt=-lto-embed-bitcode=optimized` is valid llvm BC module.
//!
//! See <https://github.com/rust-lang/rust/issues/84395> where passing
//! `-lto-embed-bitcode=optimized` to lld when linking rust code via `linker-plugin-lto` doesn't
//! produce the expected result.
//!
//! See PR <https://github.com/rust-lang/rust/pull/98162> which initially introduced this test.
//@ needs-force-clang-based-tests
use run_make_support::{env_var, llvm_dis, llvm_objcopy, rustc};
fn main() {
rustc()
.input("test.rs")
.arg("-Clink-arg=-fuse-ld=lld")
.arg("-Clinker-plugin-lto")
.arg(format!("-Clinker={}", env_var("CLANG")))
.arg("-Clink-arg=-Wl,--plugin-opt=-lto-embed-bitcode=optimized")
.arg("-Zemit-thin-lto=no")
.run();
llvm_objcopy().dump_section(".llvmbc", "test.bc").arg("test").run();
llvm_dis().arg("test.bc").run();
}