diff --git a/libc-test/build.rs b/libc-test/build.rs index d2a92d2fa974..fbd88af31828 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -5227,6 +5227,17 @@ fn test_linux(target: &str) { ("file_handle", "f_handle") if musl || uclibc => true, // FIXME(ctest): ctest does not translate the rust code which computes the padding size ("pthread_cond_t", "__padding") if l4re => true, + ( + "statx", + "stx_subvol" + | "stx_atomic_write_unit_min" + | "stx_atomic_write_unit_max" + | "stx_atomic_write_segments_max" + | "stx_dio_read_offset_align" + | "stx_atomic_write_unit_max_opt" + | "__statx_pad2" + | "__statx_pad3", + ) if gnu && versions.glibc.unwrap() < (2, 43) => true, _ => false, } }); diff --git a/src/unix/linux_like/mod.rs b/src/unix/linux_like/mod.rs index 98de83b11e70..f37daf13f1f7 100644 --- a/src/unix/linux_like/mod.rs +++ b/src/unix/linux_like/mod.rs @@ -292,6 +292,25 @@ cfg_if! { pub stx_mnt_id: crate::__u64, pub stx_dio_mem_align: crate::__u32, pub stx_dio_offset_align: crate::__u32, + // The following fields are not available on Android as of + // 2026-06. + #[cfg(target_os = "linux")] + pub stx_subvol: crate::__u64, + #[cfg(target_os = "linux")] + pub stx_atomic_write_unit_min: crate::__u32, + #[cfg(target_os = "linux")] + pub stx_atomic_write_unit_max: crate::__u32, + #[cfg(target_os = "linux")] + pub stx_atomic_write_segments_max: crate::__u32, + #[cfg(target_os = "linux")] + pub stx_dio_read_offset_align: crate::__u32, + #[cfg(target_os = "linux")] + pub stx_atomic_write_unit_max_opt: crate::__u32, + #[cfg(target_os = "linux")] + __statx_pad2: Padding<[crate::__u32; 1]>, + #[cfg(target_os = "linux")] + __statx_pad3: Padding<[crate::__u64; 8]>, + #[cfg(not(target_os = "linux"))] __statx_pad3: Padding<[crate::__u64; 12]>, }