From nobody Fri Sep 26 08:47:23 2025 X-Original-To: dev-commits-src-main@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 4cY42z4wP1z67xsp; Fri, 26 Sep 2025 08:47:23 +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 "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cY42z4Dzmz46YH; Fri, 26 Sep 2025 08:47:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1758876443; 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=dE+g7s0FT6vcCjYYnarTzYAb5GBGBhEhcmmNBlrNbqU=; b=drGmg+2/yVomDwzo65cAd18+drK9UXxUcDTltEyHWbuEi37lfXat4IWfIvOowWQuwFHR/m oCuWSdTY4VxdvHPwoCJPdVECx1o3lPYST33huakx1H1oam00Zpaa90VGmrDj6j4+75i0kn ijXr2pM7oik7rqAcZEr1s/036nmHHgzA66YIlqei3PEkC0eKuk+godBo5EEhMghXqXXlj+ AVNf0FUqAQUx9wYIPscgNK+jbFM0qp3JfUBReUz3M1TqhNpHWkqdV1PZzmGbPXbN5N4LES gHd+HI5+UuBcvmCRUL5RyCj/yNoIuEdWKeTK91Sw1uja85HrBNC44B0SlvyPAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1758876443; 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=dE+g7s0FT6vcCjYYnarTzYAb5GBGBhEhcmmNBlrNbqU=; b=KzqARI2kV5zRGFXMKvekxAh0ODo+eWBifrCrX++t/yTpm5XDUlSXPN2yCYV1IjCSuY/Q4k po842MEgPh1usUuJQdrRWiyAJplbw1CotI/60uobwb/p4p9sx5H8xG+ef1B4aBVOEjF+Q2 bnsGOQYME6uVK5txjJS2LQED8wEiUrQSiHvTwZVtol4t+bfSR/6WkqHP18RQ+kSSldStWn uX+c4bEIm2TMzPungDvR3g+qpMhBVQXN+58M5Tcp96LsTh7+O+AdYTNf2b3Mhyvjn/yBgJ 7J22n5ybix8PPOL8WcIn9XiP7zkmZ+gTnw2hxxMW7E6ChuPxXQejweNWKztyIA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1758876443; a=rsa-sha256; cv=none; b=A2xSNH8DH6c1Tjm2xh8nag9xboIJZ6Ps3Up/4q/q+VtBg959GD4ttikluNVa+nayRrmCKg VReWub8IR6Tgy/772MEJlLJ3uPQ2otSfFWfg9XP/EJHHEoeEHZtFh3MzAbUc4WysTrkpIr xoB0VMjTUjo+UnRtdODHIeA7qjN+n+sa2yQ6oQxMD/yK0aGpHxNkFNClNFVXA/0/Erliy1 Q5b9AwP3ycocv6KNhFWelRPwJwT3pTG1uxpgn8EDwKMA3IyllxGN8Gn2jWZA01FqsoVU8p TWHdsW1kRXLUimznB0Ndp4OotP2QYBvNlDVDF3DiqsIcfyHXrKxnVMSl8nIb5Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cY42z3f5vzh7X; Fri, 26 Sep 2025 08:47:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 58Q8lNFY053478; Fri, 26 Sep 2025 08:47:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 58Q8lN8e053475; Fri, 26 Sep 2025 08:47:23 GMT (envelope-from git) Date: Fri, 26 Sep 2025 08:47:23 GMT Message-Id: <202509260847.58Q8lN8e053475@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: e194103bd35d - main - libc: properly forward the compat syscall references to libsys List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: e194103bd35d9e08a5d271d814d6184ec159eadf Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=e194103bd35d9e08a5d271d814d6184ec159eadf commit e194103bd35d9e08a5d271d814d6184ec159eadf Author: Konstantin Belousov AuthorDate: 2025-09-22 23:27:05 +0000 Commit: Konstantin Belousov CommitDate: 2025-09-26 06:51:28 +0000 libc: properly forward the compat syscall references to libsys same as it was done for setgroups@FBSD_1.0. Switch from weakref to symver, since GNU as cannot handle version spec with weakref. Reviewed by: olce Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D52687 --- lib/libc/gen/gen-compat.h | 48 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/lib/libc/gen/gen-compat.h b/lib/libc/gen/gen-compat.h index 74678301af6f..19b9addb4321 100644 --- a/lib/libc/gen/gen-compat.h +++ b/lib/libc/gen/gen-compat.h @@ -40,24 +40,50 @@ struct freebsd11_statfs; struct freebsd11_dirent *freebsd11_readdir(DIR *); int freebsd11_readdir_r(DIR *, struct freebsd11_dirent *, struct freebsd11_dirent **); -int freebsd11_stat(const char *, struct freebsd11_stat *); -int freebsd11_lstat(const char *, struct freebsd11_stat *); -int freebsd11_fstat(int, struct freebsd11_stat *); -int freebsd11_fstatat(int, const char *, struct freebsd11_stat *, int); -int freebsd11_statfs(const char *, struct freebsd11_statfs *); -int freebsd11_getfsstat(struct freebsd11_statfs *, long, int); int freebsd11_getmntinfo(struct freebsd11_statfs **, int); char *freebsd11_devname(__uint32_t dev, __mode_t type); -char *freebsd11_devname_r(__uint32_t dev, __mode_t type, char *buf, int len); +char *freebsd11_devname_r(__uint32_t dev, __mode_t type, char *buf, + int len); -#define F14SG int freebsd14_setgroups(int gidsize, const __gid_t *gidset) +/* + * We want freebsd11_fstat in C source to result in resolution to + * - fstat@FBSD_1.0 for libc.so (but we do not need the _definition_ + * of this fstat, it is provided by libsys.so which we want to use). + * - freebsd11_fstat for libc.a (since if we make it fstat@FBSD_1.0 + * for libc.a, then final linkage into static object ignores version + * and would reference fstat, which is the current syscall, not the + * compat syscall). libc.a provides the freebsd11_fstat implementation. + * Note that freebsd11_fstat from libc.a is not used for anything, but + * we make it correct nonetheless, just in case it would. + * This is arranged by COMPAT_SYSCALL, and libc can just use freebsd11_fstat. + */ #ifdef PIC -static F14SG __attribute__((__weakref__("setgroups@FBSD_1.0"))); +#define COMPAT_SYSCALL(rtype, fun, args, sym, ver) \ + rtype fun args; __sym_compat(sym, fun, ver); #else -F14SG; +#define COMPAT_SYSCALL(rtype, fun, args, sym, ver) \ + rtype fun args; #endif -#undef F14SG + +COMPAT_SYSCALL(int, freebsd11_stat, (const char *, struct freebsd11_stat *), + stat, FBSD_1.0); +COMPAT_SYSCALL(int, freebsd11_lstat, (const char *, struct freebsd11_stat *), + lstat, FBSD_1.0); +COMPAT_SYSCALL(int, freebsd11_fstat, (int, struct freebsd11_stat *), + fstat, FBSD_1.0); +COMPAT_SYSCALL(int, freebsd11_fstatat, (int, const char *, + struct freebsd11_stat *, int), fstatat, FBSD_1.1); + +COMPAT_SYSCALL(int, freebsd11_statfs, (const char *, + struct freebsd11_statfs *), statfs, FBSD_1.0); +COMPAT_SYSCALL(int, freebsd11_getfsstat, (struct freebsd11_statfs *, long, + int), getfsstat, FBSD_1.0); + +COMPAT_SYSCALL(int, freebsd14_setgroups, (int gidsize, const __gid_t *gidset), + setgroups, FBSD_1.0); + +#undef COMPAT_SYSCALL #endif /* _GEN_COMPAT_H_ */