diff options
| author | sayantn <sayantan.chakraborty@students.iiserpune.ac.in> | 2024-06-23 23:17:01 +0530 |
|---|---|---|
| committer | Amanieu d'Antras <amanieu@gmail.com> | 2024-06-29 19:16:48 +0200 |
| commit | 043f3cc2809462adfc867025b653cda12bb82611 (patch) | |
| tree | 00b1a63cc4092a5521790f561b4eb27a7d7ea9a3 /library/stdarch/crates/stdarch-test | |
| parent | d26d3a7481c469fa1a647979381cab652c1d42d6 (diff) | |
| download | rust-043f3cc2809462adfc867025b653cda12bb82611.tar.gz rust-043f3cc2809462adfc867025b653cda12bb82611.zip | |
Upgraded disassembly to include `windows-gnu` targets
Diffstat (limited to 'library/stdarch/crates/stdarch-test')
| -rw-r--r-- | library/stdarch/crates/stdarch-test/src/disassembly.rs | 52 |
1 files changed, 23 insertions, 29 deletions
diff --git a/library/stdarch/crates/stdarch-test/src/disassembly.rs b/library/stdarch/crates/stdarch-test/src/disassembly.rs index a16bfba9953..206942a4b48 100644 --- a/library/stdarch/crates/stdarch-test/src/disassembly.rs +++ b/library/stdarch/crates/stdarch-test/src/disassembly.rs @@ -39,43 +39,37 @@ fn normalize(mut symbol: &str) -> String { symbol } -#[cfg(windows)] +#[cfg(target_env = "msvc")] pub(crate) fn disassemble_myself() -> HashSet<Function> { let me = env::current_exe().expect("failed to get current exe"); - let disassembly = if cfg!(target_env = "msvc") { - let target = if cfg!(target_arch = "x86_64") { - "x86_64-pc-windows-msvc" - } else if cfg!(target_arch = "x86") { - "i686-pc-windows-msvc" - } else if cfg!(target_arch = "aarch64") { - "aarch64-pc-windows-msvc" - } else { - panic!("disassembly unimplemented") - }; - let mut cmd = cc::windows_registry::find(target, "dumpbin.exe") - .expect("failed to find `dumpbin` tool"); - let output = cmd - .arg("/DISASM:NOBYTES") - .arg(&me) - .output() - .expect("failed to execute dumpbin"); - println!( - "{}\n{}", - output.status, - String::from_utf8_lossy(&output.stderr) - ); - assert!(output.status.success()); - // Windows does not return valid UTF-8 output: - String::from_utf8_lossy(Vec::leak(output.stdout)) + let target = if cfg!(target_arch = "x86_64") { + "x86_64-pc-windows-msvc" + } else if cfg!(target_arch = "x86") { + "i686-pc-windows-msvc" + } else if cfg!(target_arch = "aarch64") { + "aarch64-pc-windows-msvc" } else { panic!("disassembly unimplemented") }; - - parse(&disassembly) + let mut cmd = + cc::windows_registry::find(target, "dumpbin.exe").expect("failed to find `dumpbin` tool"); + let output = cmd + .arg("/DISASM:NOBYTES") + .arg(&me) + .output() + .expect("failed to execute dumpbin"); + println!( + "{}\n{}", + output.status, + String::from_utf8_lossy(&output.stderr) + ); + assert!(output.status.success()); + // Windows does not return valid UTF-8 output: + parse(&String::from_utf8_lossy(Vec::leak(output.stdout))) } -#[cfg(not(windows))] +#[cfg(not(target_env = "msvc"))] pub(crate) fn disassemble_myself() -> HashSet<Function> { let me = env::current_exe().expect("failed to get current exe"); |
