From f7f25b0e2f32a3c6eb778a229631a9a5c3979f92 Mon Sep 17 00:00:00 2001 From: bdbai Date: Sun, 11 Jun 2023 22:50:30 +0800 Subject: [PATCH 1/2] Add windows_sys typedef for Win ARM32 --- library/std/src/sys/windows/c/windows_sys.rs | 17 +++++++++++++++++ src/tools/generate-windows-sys/src/arm_shim.rs | 17 +++++++++++++++++ src/tools/generate-windows-sys/src/main.rs | 4 ++++ 3 files changed, 38 insertions(+) create mode 100644 src/tools/generate-windows-sys/src/arm_shim.rs diff --git a/library/std/src/sys/windows/c/windows_sys.rs b/library/std/src/sys/windows/c/windows_sys.rs index 8c8b006a1d3d3..d3ecd70dc382b 100644 --- a/library/std/src/sys/windows/c/windows_sys.rs +++ b/library/std/src/sys/windows/c/windows_sys.rs @@ -4275,3 +4275,20 @@ impl ::core::clone::Clone for XSAVE_FORMAT { *self } } +// Begin of ARM32 shim +cfg_if::cfg_if! { +if #[cfg(target_arch = "arm")] { +#[repr(C)] +pub struct WSADATA { + pub wVersion: u16, + pub wHighVersion: u16, + pub szDescription: [u8; 257], + pub szSystemStatus: [u8; 129], + pub iMaxSockets: u16, + pub iMaxUdpDg: u16, + pub lpVendorInfo: PSTR, +} +pub enum CONTEXT {} +} +} +// End of ARM32 shim diff --git a/src/tools/generate-windows-sys/src/arm_shim.rs b/src/tools/generate-windows-sys/src/arm_shim.rs new file mode 100644 index 0000000000000..d70a214ebd7c6 --- /dev/null +++ b/src/tools/generate-windows-sys/src/arm_shim.rs @@ -0,0 +1,17 @@ +// Begin of ARM32 shim +cfg_if::cfg_if! { +if #[cfg(target_arch = "arm")] { +#[repr(C)] +pub struct WSADATA { + pub wVersion: u16, + pub wHighVersion: u16, + pub szDescription: [u8; 257], + pub szSystemStatus: [u8; 129], + pub iMaxSockets: u16, + pub iMaxUdpDg: u16, + pub lpVendorInfo: PSTR, +} +pub enum CONTEXT {} +} +} +// End of ARM32 shim diff --git a/src/tools/generate-windows-sys/src/main.rs b/src/tools/generate-windows-sys/src/main.rs index 91d981462e816..65e480715ee20 100644 --- a/src/tools/generate-windows-sys/src/main.rs +++ b/src/tools/generate-windows-sys/src/main.rs @@ -11,6 +11,9 @@ const PRELUDE: &str = r#"// This file is autogenerated. // ignore-tidy-filelength "#; +/// This is a shim for the ARM (32-bit) architecture, which is no longer supported by windows-rs. +const ARM_SHIM: &str = include_str!("arm_shim.rs"); + fn main() -> io::Result<()> { let mut path: PathBuf = std::env::args_os().nth(1).expect("a path to the rust repository is required").into(); @@ -32,6 +35,7 @@ fn main() -> io::Result<()> { let mut f = std::fs::File::create(&path)?; f.write_all(PRELUDE.as_bytes())?; f.write_all(bindings.as_bytes())?; + f.write_all(ARM_SHIM.as_bytes())?; Ok(()) } From df08f56b089927fd5552b208d4c0a6cd3b8f12b0 Mon Sep 17 00:00:00 2001 From: bdbai Date: Mon, 12 Jun 2023 22:40:11 +0800 Subject: [PATCH 2/2] Add comment for arm_shim in generate-windows-sys --- library/std/src/sys/windows/c/windows_sys.rs | 3 +++ src/tools/generate-windows-sys/src/arm_shim.rs | 3 +++ 2 files changed, 6 insertions(+) diff --git a/library/std/src/sys/windows/c/windows_sys.rs b/library/std/src/sys/windows/c/windows_sys.rs index d3ecd70dc382b..a4294f336feca 100644 --- a/library/std/src/sys/windows/c/windows_sys.rs +++ b/library/std/src/sys/windows/c/windows_sys.rs @@ -4276,6 +4276,9 @@ impl ::core::clone::Clone for XSAVE_FORMAT { } } // Begin of ARM32 shim +// The raw content of this file should be processed by `generate-windows-sys` +// to be merged with the generated binding. It is not supposed to be used as +// a normal Rust module. cfg_if::cfg_if! { if #[cfg(target_arch = "arm")] { #[repr(C)] diff --git a/src/tools/generate-windows-sys/src/arm_shim.rs b/src/tools/generate-windows-sys/src/arm_shim.rs index d70a214ebd7c6..17c2ccb223cce 100644 --- a/src/tools/generate-windows-sys/src/arm_shim.rs +++ b/src/tools/generate-windows-sys/src/arm_shim.rs @@ -1,4 +1,7 @@ // Begin of ARM32 shim +// The raw content of this file should be processed by `generate-windows-sys` +// to be merged with the generated binding. It is not supposed to be used as +// a normal Rust module. cfg_if::cfg_if! { if #[cfg(target_arch = "arm")] { #[repr(C)]