Skip to content

Commit c256c81

Browse files
committed
Use objdump on Macos x86_64 as well.
1 parent 4f1d230 commit c256c81

File tree

1 file changed

+7
-32
lines changed

1 file changed

+7
-32
lines changed

crates/stdarch-test/src/disassembly.rs

+7-32
Original file line numberDiff line numberDiff line change
@@ -67,43 +67,18 @@ pub(crate) fn disassemble_myself() -> HashSet<Function> {
6767
String::from_utf8_lossy(Vec::leak(output.stdout))
6868
} else if cfg!(target_os = "windows") {
6969
panic!("disassembly unimplemented")
70-
} else if cfg!(target_os = "macos") && cfg!(target_arch = "aarch64") {
71-
// use LLVM objdump because it is not possible to enable TME support with otool
72-
let objdump = env::var("OBJDUMP").unwrap_or_else(|_| "objdump".to_string());
73-
let output = Command::new(objdump.clone())
74-
.arg("--disassemble")
75-
.arg("--no-show-raw-insn")
76-
.arg("--mattr=+crc,+crypto,+tme")
77-
.arg(&me)
78-
.output()
79-
.unwrap_or_else(|_| panic!("failed to execute objdump. OBJDUMP={}", objdump));
80-
println!(
81-
"{}\n{}",
82-
output.status,
83-
String::from_utf8_lossy(&output.stderr)
84-
);
85-
assert!(output.status.success());
86-
87-
String::from_utf8_lossy(Vec::leak(output.stdout))
88-
} else if cfg!(target_os = "macos") {
89-
let output = Command::new("otool")
90-
.arg("-vt")
91-
.arg(&me)
92-
.output()
93-
.expect("failed to execute otool");
94-
println!(
95-
"{}\n{}",
96-
output.status,
97-
String::from_utf8_lossy(&output.stderr)
98-
);
99-
assert!(output.status.success());
100-
101-
String::from_utf8_lossy(Vec::leak(output.stdout))
10270
} else {
10371
let objdump = env::var("OBJDUMP").unwrap_or_else(|_| "objdump".to_string());
72+
let add_args = if cfg!(target_os = "macos") && cfg!(target_arch = "aarch64") {
73+
// Target features need to be enabled for LLVM objdump on Macos ARM64
74+
vec!["--mattr=+crc,+crypto,+tme"]
75+
} else {
76+
vec![]
77+
};
10478
let output = Command::new(objdump.clone())
10579
.arg("--disassemble")
10680
.arg("--no-show-raw-insn")
81+
.args(add_args)
10782
.arg(&me)
10883
.output()
10984
.unwrap_or_else(|_| panic!("failed to execute objdump. OBJDUMP={}", objdump));

0 commit comments

Comments
 (0)