Rollup merge of #112527 - bdbai:fix/winarm32, r=ChrisDenton
Add windows_sys type definitions for ARM32 manually
`windows_sys` bindings do not include platform-specific type definitions for ARM 32 architecture, so it breaks `thumbv7a-pc-windows-msvc` and `thumbv7a-uwp-windows-msvc` targets. This PR tries to add them back by manually inserting them together with the generated ones.
`WSADATA` is copied from the generated definition for `x86`. `CONTEXT` is copied from the definition before `windows_sys` is introduced (which is just an empty enum): 4a18324a4d/library/std/src/sys/windows/c.rs (L802)
.
Fixes #112265.
This commit is contained in:
commit
9c4cff424e
@ -4275,3 +4275,23 @@ fn clone(&self) -> Self {
|
|||||||
*self
|
*self
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 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)]
|
||||||
|
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
|
||||||
|
20
src/tools/generate-windows-sys/src/arm_shim.rs
Normal file
20
src/tools/generate-windows-sys/src/arm_shim.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// 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)]
|
||||||
|
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
|
@ -11,6 +11,9 @@
|
|||||||
// ignore-tidy-filelength
|
// 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<()> {
|
fn main() -> io::Result<()> {
|
||||||
let mut path: PathBuf =
|
let mut path: PathBuf =
|
||||||
std::env::args_os().nth(1).expect("a path to the rust repository is required").into();
|
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)?;
|
let mut f = std::fs::File::create(&path)?;
|
||||||
f.write_all(PRELUDE.as_bytes())?;
|
f.write_all(PRELUDE.as_bytes())?;
|
||||||
f.write_all(bindings.as_bytes())?;
|
f.write_all(bindings.as_bytes())?;
|
||||||
|
f.write_all(ARM_SHIM.as_bytes())?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user