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
|
||||
}
|
||||
}
|
||||
// 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
|
||||
"#;
|
||||
|
||||
/// 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(())
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user