From nobody Sun Feb 1 21:41:07 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4f438g6zP3z6Qjj8 for ; Sun, 01 Feb 2026 21:41:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4f438g3MbKz3Fp8 for ; Sun, 01 Feb 2026 21:41:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1769982067; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CIibH/AkfL59re8fZjQM5KhPZ1Yvi80O9y6uRlq4we4=; b=hu2JtykN55vOxFLz53l3ysGGt9VjRwoBYDzHBQLPxPuK8pVH9XOIorlZk0X0BdsxipuN6d UEpIKxxLsGT8/CCxPR0Bz6e2DMPXbSMtzkbZUWapRKcuii+Omk/H0Mo3OLN2dJRG70y21J VM4kb+/XWm1gN4sj+mdImI3y+lYJvH+At9h1TzL8o2ba//R6x0lZXvlQT/4Yd4j6wNr9in mWpiMPpiIxtGGp9Coo6xwauPziKYmNwG+Ku2XcHbTOWVlXe/fj2CGIwp6j8+fsc+jsF8Tj g4JhKrIcSh9VWwKTV1MDKXQjYNoHGRknq0fTRPNro4Vt7dlGOn+bkMNSp9QNOg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1769982067; a=rsa-sha256; cv=none; b=e0z2lWbdxqVEKsLi1Y4Pyaxpm44Lk5+fn46uhFXTyYLCB25U9o5TeVIoe7cApA31XG/fyu bDq0unudIus0VOhFlvoHMreE9XamHTN7jWhuDt/ALwoso341WmwTX8FU91eOgovjUgIy3v +k0tRTEZIR0QH60BlLnJd+1Fl7p0VF5Dt02pUl/YZ+ZtbF96tWcQfZ7w385yhAb9yt9I/P 1fMETu761nQ6evAAxPkULKa5SkxQjJg3HNoJICdR/dLWIrM3CKobKfXn9lFBXwS/Xipn8H xCs1fzi2Zuox+c65A2CbAMH6DO38LkmnFxA/OfVx0XSh3Uh6HRiJ8uOLQLGQ7g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1769982067; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CIibH/AkfL59re8fZjQM5KhPZ1Yvi80O9y6uRlq4we4=; b=M87GbamL/Re6HoamFMipVw3RzcDbI6jqSVkPvcQftXH1zq9cyZFntnxA8abhgnJu1a8YNe +n16w8fNqS5Q/kp1vHBiuPu0oiAKHlZ3jxZPu4NSN0eV5fv4bgq3ZvRJvFVh3ETQeUVQ+n kq7PUxtwRdl26xKfpuLj4u1j33BbJuASFKNFq+krzgpzyuqiuQY5Uy00/BNk+LW4tcUMYK 61Gm79lW5hEKlGdN6fmjwbP3KGfCDWD5i22UptcunZCpJh7RMMqessZB6HQ/vrTUNqUeVe XA6F6aAsrV1C7a72ePD9Ooqt6ZsKOs684uzKGQt3v5l4lTH2KPLLs8CxTXqWRw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4f438g2vt6zyKG for ; Sun, 01 Feb 2026 21:41:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3d223 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 01 Feb 2026 21:41:07 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 6b9e7e922d8b - stable/15 - libc: add posix_spawnattr_{get,set}execfd_np(3) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 6b9e7e922d8b6ddde292815771351c02519574e6 Auto-Submitted: auto-generated Date: Sun, 01 Feb 2026 21:41:07 +0000 Message-Id: <697fc873.3d223.40c51f6a@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=6b9e7e922d8b6ddde292815771351c02519574e6 commit 6b9e7e922d8b6ddde292815771351c02519574e6 Author: Konstantin Belousov AuthorDate: 2026-01-24 22:06:36 +0000 Commit: Konstantin Belousov CommitDate: 2026-02-01 21:38:49 +0000 libc: add posix_spawnattr_{get,set}execfd_np(3) (cherry picked from commit 3f0aea09689f6c10740de78011469355208a19a5) --- include/spawn.h | 7 +++++++ lib/libc/gen/Symbol.map | 5 +++++ lib/libc/gen/posix_spawn.c | 22 +++++++++++++++++++++- 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/include/spawn.h b/include/spawn.h index a93315930954..a8f40e49dce0 100644 --- a/include/spawn.h +++ b/include/spawn.h @@ -123,6 +123,13 @@ int posix_spawnattr_setsigdefault(posix_spawnattr_t * __restrict, const sigset_t * __restrict); int posix_spawnattr_setsigmask(posix_spawnattr_t * __restrict, const sigset_t * __restrict); + +#if __BSD_VISIBLE +int posix_spawnattr_setexecfd_np(posix_spawnattr_t * __restrict, int); +int posix_spawnattr_getexecfd_np(const posix_spawnattr_t * __restrict, + int * __restrict); +#endif + __END_DECLS #endif /* !_SPAWN_H_ */ diff --git a/lib/libc/gen/Symbol.map b/lib/libc/gen/Symbol.map index 494b65bc5cc1..19170768ef7c 100644 --- a/lib/libc/gen/Symbol.map +++ b/lib/libc/gen/Symbol.map @@ -474,6 +474,11 @@ FBSD_1.8 { str2sig; }; +FBSD_1.9 { + posix_spawnattr_getexecfd_np; + posix_spawnattr_setexecfd_np; +}; + FBSDprivate_1.0 { /* needed by thread libraries */ __thr_jtable; diff --git a/lib/libc/gen/posix_spawn.c b/lib/libc/gen/posix_spawn.c index a5b732696b8c..fc327e15bbf0 100644 --- a/lib/libc/gen/posix_spawn.c +++ b/lib/libc/gen/posix_spawn.c @@ -50,6 +50,7 @@ struct __posix_spawnattr { int sa_schedpolicy; sigset_t sa_sigdefault; sigset_t sa_sigmask; + int sa_execfd; }; struct __posix_spawn_file_actions { @@ -260,7 +261,9 @@ _posix_spawn_thr(void *data) _exit(127); } envp = psa->envp != NULL ? psa->envp : environ; - if (psa->use_env_path) + if (psa->sa != NULL && (*(psa->sa))->sa_execfd != -1) + fexecve((*(psa->sa))->sa_execfd, psa->argv, envp); + else if (psa->use_env_path) __libc_execvpe(psa->path, psa->argv, envp); else _execve(psa->path, psa->argv, envp); @@ -578,6 +581,7 @@ posix_spawnattr_init(posix_spawnattr_t *ret) sa = calloc(1, sizeof(struct __posix_spawnattr)); if (sa == NULL) return (errno); + sa->sa_execfd = -1; /* Set defaults as specified by POSIX, cleared above */ *ret = sa; @@ -639,6 +643,14 @@ posix_spawnattr_getsigmask(const posix_spawnattr_t * __restrict sa, return (0); } +int +posix_spawnattr_getexecfd_np(const posix_spawnattr_t * __restrict sa, + int * __restrict fdp) +{ + *fdp = (*sa)->sa_execfd; + return (0); +} + int posix_spawnattr_setflags(posix_spawnattr_t *sa, short flags) { @@ -688,3 +700,11 @@ posix_spawnattr_setsigmask(posix_spawnattr_t * __restrict sa, (*sa)->sa_sigmask = *sigmask; return (0); } + +int +posix_spawnattr_setexecfd_np(posix_spawnattr_t * __restrict sa, + int execfd) +{ + (*sa)->sa_execfd = execfd; + return (0); +}