From 2c46c2ac9b6c5f1443ca5b56b1cf3be918eab43c Mon Sep 17 00:00:00 2001 From: kosayoda Date: Tue, 14 Feb 2023 14:44:12 -0500 Subject: Add glibc extensions for posix_spawn*. --- libc-test/semver/linux-gnu.txt | 4 ++++ src/unix/linux_like/linux/gnu/mod.rs | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/libc-test/semver/linux-gnu.txt b/libc-test/semver/linux-gnu.txt index 665b085a7e..127eab62fe 100644 --- a/libc-test/semver/linux-gnu.txt +++ b/libc-test/semver/linux-gnu.txt @@ -626,6 +626,10 @@ ntp_adjtime ntp_gettime ntptimeval open_wmemstream +posix_spawn_file_actions_addchdir_np +posix_spawn_file_actions_addfchdir_np +posix_spawn_file_actions_addclosefrom_np +posix_spawn_file_actions_addtcsetpgrp_np preadv2 preadv64 prlimit diff --git a/src/unix/linux_like/linux/gnu/mod.rs b/src/unix/linux_like/linux/gnu/mod.rs index b8b6dedeb7..088135ba91 100644 --- a/src/unix/linux_like/linux/gnu/mod.rs +++ b/src/unix/linux_like/linux/gnu/mod.rs @@ -1377,6 +1377,30 @@ extern "C" { pub fn gnu_get_libc_version() -> *const ::c_char; } +// posix/spawn.h +extern "C" { + // Added in `glibc` 2.29 + pub fn posix_spawn_file_actions_addchdir_np( + actions: *mut ::posix_spawn_file_actions_t, + path: *const ::c_char, + ) -> ::c_int; + // Added in `glibc` 2.29 + pub fn posix_spawn_file_actions_addfchdir_np( + actions: *mut ::posix_spawn_file_actions_t, + fd: ::c_int, + ) -> ::c_int; + // Added in `glibc` 2.34 + pub fn posix_spawn_file_actions_addclosefrom_np( + actions: *mut ::posix_spawn_file_actions_t, + from: ::c_int, + ) -> ::c_int; + // Added in `glibc` 2.35 + pub fn posix_spawn_file_actions_addtcsetpgrp_np( + actions: *mut ::posix_spawn_file_actions_t, + tcfd: ::c_int, + ) -> ::c_int; +} + cfg_if! { if #[cfg(any(target_arch = "x86", target_arch = "arm", -- cgit v1.2.1 From fb7d1c5d677a372c392feda9ee50f77cad6cd20c Mon Sep 17 00:00:00 2001 From: kosayoda Date: Tue, 21 Feb 2023 10:03:41 -0500 Subject: Skip certain tests on sparc64 due to old glibc version. --- libc-test/build.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libc-test/build.rs b/libc-test/build.rs index 27405723c1..4da3c13c44 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -3693,6 +3693,10 @@ fn test_linux(target: &str) { // FIXME: the glibc version used by the Sparc64 build jobs // which use Debian 10.0 is too old. "statx" if sparc64 => true, + // Needs glibc 2.34 or later. + "posix_spawn_file_actions_addclosefrom_np" if gnu && sparc64 => true, + // Needs glibc 2.35 or later. + "posix_spawn_file_actions_addtcsetpgrp_np" if gnu && sparc64 => true, // FIXME: Deprecated since glibc 2.30. Remove fn once upstream does. "sysctl" if gnu => true, -- cgit v1.2.1