From eea6502dcb91942785b1d5cb8fea74c41bcc3f32 Mon Sep 17 00:00:00 2001 From: Jerry Wang Date: Mon, 15 Jul 2024 19:52:22 -0400 Subject: [PATCH] Use `llvm-readobj` for `run-make/crate-hash-rustc-version` --- .../run-make/crate-hash-rustc-version/rmake.rs | 18 ++++++++++++++---- 1 file 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.