about summary refs log tree commit diff
path: root/library/stdarch/crates/stdarch-test
diff options
context:
space:
mode:
authorsayantn <sayantan.chakraborty@students.iiserpune.ac.in>2024-06-23 23:17:01 +0530
committerAmanieu d'Antras <amanieu@gmail.com>2024-06-29 19:16:48 +0200
commit043f3cc2809462adfc867025b653cda12bb82611 (patch)
tree00b1a63cc4092a5521790f561b4eb27a7d7ea9a3 /library/stdarch/crates/stdarch-test
parentd26d3a7481c469fa1a647979381cab652c1d42d6 (diff)
downloadrust-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.rs52
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");