diff --git a/libc-test/semver/linux-gnu.txt b/libc-test/semver/linux-gnu.txt index 9001de4c4ff3..28b087e4e491 100644 --- a/libc-test/semver/linux-gnu.txt +++ b/libc-test/semver/linux-gnu.txt @@ -448,6 +448,7 @@ STA_PPSTIME STA_PPSWANDER STA_RONLY STA_UNSYNC +SUN_LEN ST_RELATIME SYSFS_MAGIC TCA_CHAIN diff --git a/libc-test/semver/linux-musl.txt b/libc-test/semver/linux-musl.txt index d8e4918facb1..39e09746ec91 100644 --- a/libc-test/semver/linux-musl.txt +++ b/libc-test/semver/linux-musl.txt @@ -36,6 +36,7 @@ RWF_DSYNC RWF_HIPRI RWF_NOWAIT RWF_SYNC +SUN_LEN USER_PROCESS _CS_V6_ENV _CS_V7_ENV diff --git a/src/unix/linux_like/linux/mod.rs b/src/unix/linux_like/linux/mod.rs index 37b1e673b2e2..645a1640d1b4 100644 --- a/src/unix/linux_like/linux/mod.rs +++ b/src/unix/linux_like/linux/mod.rs @@ -6053,6 +6053,17 @@ f! { pub fn ELF64_R_INFO(sym: Elf64_Xword, t: Elf64_Xword) -> Elf64_Xword { sym << 32 + t } + + #[cfg(target_env = "gnu")] + pub fn SUN_LEN(s: crate::sockaddr_un) -> usize { + core::mem::offset_of!(crate::sockaddr_un, sun_path) + + unsafe { crate::strlen(s.sun_path.as_ptr()) } + } + + #[cfg(target_env = "musl")] + pub fn SUN_LEN(s: crate::sockaddr_un) -> usize { + 2 * (unsafe { crate::strlen(s.sun_path.as_ptr()) }) + } } safe_f! {