Add test for S_OBJNAME and update test for LF_BUILDINFO cl and cmd for
pdb files.
This commit is contained in:
parent
38e3a5771c
commit
713828d4f4
@ -54,6 +54,12 @@ pub fn llvm_dwarfdump() -> LlvmDwarfdump {
|
|||||||
LlvmDwarfdump::new()
|
LlvmDwarfdump::new()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Construct a new `llvm-pdbutil` invocation. This assumes that `llvm-pdbutil` is available
|
||||||
|
/// at `$LLVM_BIN_DIR/llvm-pdbutil`.
|
||||||
|
pub fn llvm_pdbutil() -> LlvmPdbutil {
|
||||||
|
LlvmPdbutil::new()
|
||||||
|
}
|
||||||
|
|
||||||
/// A `llvm-readobj` invocation builder.
|
/// A `llvm-readobj` invocation builder.
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
#[must_use]
|
#[must_use]
|
||||||
|
4
tests/run-make/pdb-buildinfo-cl-cmd/filecheck.txt
Normal file
4
tests/run-make/pdb-buildinfo-cl-cmd/filecheck.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
CHECK: LF_BUILDINFO
|
||||||
|
CHECK: rustc.exe
|
||||||
|
CHECK: main.rs
|
||||||
|
CHECK: "-g" "--crate-name" "my_crate_name" "--crate-type" "bin" "-Cmetadata=dc9ef878b0a48666"
|
@ -7,7 +7,7 @@
|
|||||||
//@ only-windows-msvc
|
//@ only-windows-msvc
|
||||||
// Reason: pdb files are unique to this architecture
|
// Reason: pdb files are unique to this architecture
|
||||||
|
|
||||||
use run_make_support::{assert_contains, bstr, env_var, rfs, rustc};
|
use run_make_support::{llvm, rustc};
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
rustc()
|
rustc()
|
||||||
@ -17,23 +17,9 @@ fn main() {
|
|||||||
.crate_type("bin")
|
.crate_type("bin")
|
||||||
.metadata("dc9ef878b0a48666")
|
.metadata("dc9ef878b0a48666")
|
||||||
.run();
|
.run();
|
||||||
let tests = [
|
|
||||||
&env_var("RUSTC"),
|
|
||||||
r#""main.rs""#,
|
|
||||||
r#""-g""#,
|
|
||||||
r#""--crate-name""#,
|
|
||||||
r#""my_crate_name""#,
|
|
||||||
r#""--crate-type""#,
|
|
||||||
r#""bin""#,
|
|
||||||
r#""-Cmetadata=dc9ef878b0a48666""#,
|
|
||||||
];
|
|
||||||
for test in tests {
|
|
||||||
assert_pdb_contains(test);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn assert_pdb_contains(needle: &str) {
|
let pdbutil_result =
|
||||||
let needle = needle.as_bytes();
|
llvm::llvm_pdbutil().arg("dump").arg("-ids").input("my_crate_name.pdb").run();
|
||||||
use bstr::ByteSlice;
|
|
||||||
assert!(&rfs::read("my_crate_name.pdb").find(needle).is_some());
|
llvm::llvm_filecheck().patterns("filecheck.txt").stdin_buf(pdbutil_result.stdout_utf8()).run();
|
||||||
}
|
}
|
||||||
|
1
tests/run-make/pdb-sobjname/main.rs
Normal file
1
tests/run-make/pdb-sobjname/main.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
fn main() {}
|
20
tests/run-make/pdb-sobjname/rmake.rs
Normal file
20
tests/run-make/pdb-sobjname/rmake.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// Check if the pdb file contains an S_OBJNAME entry with the name of the .o file
|
||||||
|
|
||||||
|
// This is because it used to be missing in #96475.
|
||||||
|
// See https://github.com/rust-lang/rust/pull/115704
|
||||||
|
|
||||||
|
//@ only-windows-msvc
|
||||||
|
// Reason: pdb files are unique to this architecture
|
||||||
|
|
||||||
|
use run_make_support::{llvm, rustc};
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
rustc().input("main.rs").arg("-g").crate_name("my_great_crate_name").crate_type("bin").run();
|
||||||
|
|
||||||
|
let pdbutil_result = llvm::llvm_pdbutil()
|
||||||
|
.arg("dump")
|
||||||
|
.arg("-symbols")
|
||||||
|
.input("my_great_crate_name.pdb")
|
||||||
|
.run()
|
||||||
|
.assert_stdout_contains_regex("S_OBJNAME.+my_great_crate_name.*\\.o");
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user