mirror of
https://github.com/rust-lang/rust.git
synced 2025-10-02 18:27:37 +00:00
Use llvm-readobj
for run-make/crate-hash-rustc-version
This commit is contained in:
parent
ec6e07b09d
commit
eea6502dcb
@ -4,17 +4,27 @@
|
||||
//@ ignore-cross-compile
|
||||
//@ only-unix
|
||||
|
||||
use run_make_support::{cmd, diff, dynamic_lib_name, is_darwin, run, run_fail, rustc};
|
||||
use run_make_support::llvm;
|
||||
use run_make_support::{diff, dynamic_lib_name, is_darwin, run, run_fail, rustc};
|
||||
|
||||
fn llvm_readobj() -> llvm::LlvmReadobj {
|
||||
let mut cmd = llvm::llvm_readobj();
|
||||
if is_darwin() {
|
||||
cmd.symbols();
|
||||
} else {
|
||||
cmd.dynamic_table();
|
||||
}
|
||||
cmd
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let flags = ["-Cprefer-dynamic", "-Csymbol-mangling-version=v0"];
|
||||
let nm_flag = if is_darwin() { [].as_slice() } else { ["-D"].as_slice() };
|
||||
|
||||
// a.rs is compiled to a dylib
|
||||
rustc().input("a.rs").crate_type("dylib").args(&flags).run();
|
||||
|
||||
// Store symbols
|
||||
let symbols_before = cmd("nm").args(nm_flag).arg(dynamic_lib_name("a")).run().stdout_utf8();
|
||||
let symbols_before = llvm_readobj().arg(dynamic_lib_name("a")).run().stdout_utf8();
|
||||
|
||||
// b.rs is compiled to a binary
|
||||
rustc()
|
||||
@ -35,7 +45,7 @@ fn main() {
|
||||
.run();
|
||||
|
||||
// After compiling with a different rustc version, store symbols again.
|
||||
let symbols_after = cmd("nm").args(nm_flag).arg(dynamic_lib_name("a")).run().stdout_utf8();
|
||||
let symbols_after = llvm_readobj().arg(dynamic_lib_name("a")).run().stdout_utf8();
|
||||
|
||||
// As a sanity check, test if the symbols changed:
|
||||
// If the symbols are identical, there's been an error.
|
||||
|
Loading…
x
Reference in New Issue
Block a user