about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--tests/run-make/crate-hash-rustc-version/rmake.rs18
1 files changed, 14 insertions, 4 deletions
diff --git a/tests/run-make/crate-hash-rustc-version/rmake.rs b/tests/run-make/crate-hash-rustc-version/rmake.rs
index 6418deb126b..97b3dd3931e 100644
--- a/tests/run-make/crate-hash-rustc-version/rmake.rs
+++ b/tests/run-make/crate-hash-rustc-version/rmake.rs
@@ -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.