aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--etc/mtree/BSD.root.dist90
-rw-r--r--libexec/rc/rc.d/Makefile465
-rw-r--r--release/Makefile4
-rwxr-xr-xrelease/packages/generate-set-ucl.lua6
-rw-r--r--sbin/rcorder/rcorder.c8
-rw-r--r--share/man/man7/arch.7124
-rw-r--r--share/mk/bsd.confs.mk8
-rw-r--r--sys/dev/nvme/nvme_private.h6
-rw-r--r--usr.sbin/bsdinstall/bsdinstall.84
9 files changed, 373 insertions, 342 deletions
diff --git a/etc/mtree/BSD.root.dist b/etc/mtree/BSD.root.dist
index 6ba632894ca7..95a3361b3c61 100644
--- a/etc/mtree/BSD.root.dist
+++ b/etc/mtree/BSD.root.dist
@@ -4,8 +4,9 @@
/set type=dir uname=root gname=wheel mode=0755
.
- bin
+ bin tags=package=runtime
..
+/set tags=package=bootloader
boot
defaults
..
@@ -27,7 +28,7 @@
..
kernel
..
- loader.conf.d tags=package=bootloader
+ loader.conf.d
..
lua
..
@@ -38,88 +39,89 @@
zfs
..
..
+/unset tags
dev mode=0555 tags=package=runtime
..
- etc
- X11
+ etc tags=package=runtime
+ X11 tags=package=runtime
..
- authpf
+ authpf tags=package=pf
..
- autofs
+ autofs tags=package=autofs
..
- bluetooth
+ bluetooth tags=package=bluetooth
..
- cron.d
+ cron.d tags=package=cron
..
- defaults
+ defaults tags=package=runtime
..
- devd
+ devd tags=package=devd
..
- dma
+ dma tags=package=dma
..
- gss
+ gss tags=package=runtime
..
- jail.conf.d
+ jail.conf.d tags=package=jail
..
kyua tags=package=tests
..
- mail
+ mail tags=package=runtime
..
- mtree
+ mtree tags=package=mtree
..
- newsyslog.conf.d
+ newsyslog.conf.d tags=package=newsyslog
..
- ntp mode=0700
+ ntp mode=0700 tags=package=ntp
..
- pam.d
+ pam.d tags=package=runtime
..
- periodic
- daily
+ periodic tags=package=periodic
+ daily tags=package=periodic
..
- monthly
+ monthly tags=package=periodic
..
- security
+ security tags=package=periodic
..
- weekly
+ weekly tags=package=periodic
..
..
- pkg
+ pkg tags=package=pkg-bootstrap
..
- ppp
+ ppp tags=package=ppp
..
- profile.d
+ profile.d tags=package=runtime
..
- rc.conf.d
+ rc.conf.d tags=package=rc
..
- rc.d
+ rc.d tags=package=rc
..
- security
+ security tags=package=audit
..
- ssh
+ ssh tags=package=ssh
..
- ssl
+ ssl tags=package=caroot
certs tags=package=caroot
..
untrusted tags=package=caroot
..
..
- sysctl.kld.d
+ sysctl.kld.d tags=package=runtime
..
- syslog.d
+ syslog.d tags=package=syslogd
..
- zfs tags=package=zfs
- compatibility.d
+ zfs tags=package=zfs
+ compatibility.d tags=package=zfs
..
..
..
- lib
- geom
+ lib tags=package=clibs
+ geom tags=package=geom
..
- nvmecontrol
+ nvmecontrol tags=package=nvme-tools
..
..
- libexec
- resolvconf
+ libexec tags=package=clibs
+ resolvconf tags=package=resolvconf
..
..
media tags=package=runtime
@@ -132,14 +134,14 @@
..
rescue tags=package=rescue
..
- root mode=0750
+ root mode=0750 tags=package=runtime
..
- sbin
+ sbin tags=package=runtime
..
tmp mode=01777 tags=package=runtime
..
- usr
+ usr tags=package=runtime
..
- var
+ var tags=package=runtime
..
..
diff --git a/libexec/rc/rc.d/Makefile b/libexec/rc/rc.d/Makefile
index 03f0933533ca..f6d1a34ceb9e 100644
--- a/libexec/rc/rc.d/Makefile
+++ b/libexec/rc/rc.d/Makefile
@@ -4,6 +4,7 @@ CONFDIR= /etc/rc.d
CONFGROUPS= CONFS
CONFSPACKAGE= rc
+# Files which are always installed and go in the -rc package.
CONFS= DAEMON \
FILESYSTEMS \
LOGIN \
@@ -47,8 +48,6 @@ CONFS= DAEMON \
netoptions \
netwait \
noshutdown \
- ${_nscd} \
- ${_opensm} \
os-release \
pwcheck \
quota \
@@ -77,218 +76,258 @@ CONFS= DAEMON \
var_run \
watchdogd
-CONFGROUPS+= DEVD
-DEVD= devd
-DEVDPACKAGE= devd
-
-CONFGROUPS+= DEVMATCH
-DEVMATCH= devmatch
-DEVMATCHPACKAGE= devmatch
-
-CONFGROUPS+= DHCLIENT
-DHCLIENT= dhclient
-DHCLIENTPACKAGE= dhclient
-
-CONFGROUPS+= GEOM
-GEOM= geli \
- geli2 \
- gptboot
-GEOMPACKAGE= geom
-
-CONFGROUPS+= GGATED
-GGATED= ggated
-GGATEDPACKAGE= ggate
-
-CONFGROUPS+= RESOLVCONF
-RESOLVCONF= resolv
-RESOLVCONFPACKAGE= resolvconf
-
-CONFGROUPS+= CRON
-CRON+= cron
-CRONPACKAGE= cron
-
-CONFGROUPS+= CTL
-CTL= ctld
-CTLPACKAGE= ctl
-
-CONFGROUPS+= NFS
-NFS= lockd \
- mountd \
- nfscbd \
- nfsclient \
- nfsd \
- nfsuserd \
- statd
-NFSPACKAGE= nfs
-
-CONFGROUPS+= NEWSYSLOG
-NEWSYSLOG= newsyslog
-NEWSYSLOGPACKAGE= newsyslog
-
-CONFGROUPS+= POWERD
-POWERD= powerd
-POWERDPACKAGE= powerd
-
-CONFGROUPS+= PPPOED
-PPPOED= pppoed
-PPPOEDPACKAGE= ppp
-
-CONFGROUPS+= SYSLOGD
-SYSLOGD= syslogd
-SYSLOGDPACKAGE= syslogd
-
-CONFGROUPS+= RCMDS
-RCMDS= rwho
-RCMDSPACKAGE= rcmds
+# Groups for files which don't go in -rc, or which depend on src.conf knobs.
.if ${MK_ACCT} != "no" || ${MK_UTMPX} != "no"
-CONFGROUPS+= ACCT
-ACCTPACKAGE= acct
+CONFGROUPS+= ACCT
+ACCTPACKAGE= acct
.if ${MK_ACCT} != "no"
-ACCT+= accounting
+ACCT= accounting
.endif
.if ${MK_UTMPX} != "no"
ACCT+= utx
.endif
.endif
-.if ${MK_ACPI} != "no"
-CONFGROUPS+= ACPI
+CONFGROUPS.${MK_ACPI}+= ACPI
+ACPIPACKAGE= acpi
ACPI= power_profile
-ACPIPACKAGE= acpi
-.endif
-.if ${MK_APM} != "no"
-CONFGROUPS+= APM
-APM+= apm
+CONFGROUPS.${MK_APM}+= APM
+APMPACKAGE= apm
+APM= apm
.if ${MACHINE} == "i386"
APM+= apmd
.endif
-APMPACKAGE= apm
-.endif
-.if ${MK_AUDIT} != "no"
-CONFGROUPS+= AUDIT
-AUDIT+= auditd
-AUDIT+= auditdistd
-AUDITPACKAGE= audit
-.endif
+CONFGROUPS.${MK_AUDIT}+= AUDIT
+AUDITPACKAGE= audit
+AUDIT= auditd \
+ auditdistd
-.if ${MK_AUTOFS} != "no"
-CONFGROUPS+= AUTOFS
+CONFGROUPS.${MK_AUTOFS}+= AUTOFS
+AUTOFSPACKAGE= autofs
AUTOFS= automount \
automountd \
autounmountd
-AUTOFSPACKAGE= autofs
-.endif
-.if ${MK_BLACKLIST} != "no"
-CONFGROUPS+= BLOCKLIST
+CONFGROUPS.${MK_BLACKLIST}+= BLOCKLIST
+BLOCKLISTPACKAGE= blocklist
BLOCKLIST= blacklistd
-BLOCKLISTPACKAGE=blocklist
-.endif
-.if ${MK_BLUETOOTH} != "no"
-CONFGROUPS+= BLUETOOTH
-BLUETOOTH+= bluetooth \
+CONFGROUPS.${MK_BLUETOOTH}+= BLUETOOTH
+BLUETOOTHPACKAGE= bluetooth
+BLUETOOTH= bluetooth \
bthidd \
hcsecd \
rfcomm_pppd_server \
sdpd \
ubthidhci
-BLUETOOTHPACKAGE= bluetooth
-.endif
-.if ${MK_BOOTPARAMD} != "no"
-CONFS+= bootparams
-.endif
+CONFGROUPS.${MK_BOOTPARAMD}+= BOOTPARAMD
+BOOTPARAMD= bootparams
-.if ${MK_BSNMP} != "no"
-CONFGROUPS+= BSNMP
-BSNMP+= bsnmpd
-BSNMPPACKAGE= bsnmp
-.endif
+CONFGROUPS.${MK_BSNMP}+= BSNMP
+BSNMPPACKAGE= bsnmp
+BSNMP= bsnmpd
-.if ${MK_CCD} != "no"
-CONFGROUPS+= CCD
+CONFGROUPS.${MK_CCD}+= CCD
+CCDPACKAGE= ccdconfig
CCD= ccd
-CCDPACKAGE= ccdconfig
-.endif
-.if ${MK_CUSE} != "no"
-CONFGROUPS+= VOSS
-VOSS= virtual_oss
-VOSSPACKAGE= sound
-.endif
+CONFGROUPS+= DEVD
+DEVDPACKAGE= devd
+DEVD= devd
+
+CONFGROUPS+= DEVMATCH
+DEVMATCHPACKAGE= devmatch
+DEVMATCH= devmatch
+
+CONFGROUPS+= DHCLIENT
+DHCLIENTPACKAGE= dhclient
+DHCLIENT= dhclient
+
+CONFGROUPS+= CRON
+CRONPACKAGE= cron
+CRON= cron
-.if ${MK_KERBEROS_SUPPORT} != "no"
-CONFGROUPS+= GSSD
+CONFGROUPS+= CTL
+CTLPACKAGE= ctl
+CTL= ctld
+
+CONFGROUPS+= GEOM
+GEOMPACKAGE= geom
+GEOM= geli \
+ geli2 \
+ gptboot
+
+CONFGROUPS+= GGATED
+GGATEDPACKAGE= ggate
+GGATED= ggated
+
+CONFGROUPS.${MK_KERBEROS_SUPPORT}+=GSSD
+GSSDPACKAGE= gssd
GSSD= gssd
-GSSDPACKAGE= gssd
-.endif
-.if ${MK_HAST} != "no"
-CONFGROUPS+= HAST
+CONFGROUPS.${MK_HAST}+= HAST
+HASTPACKAGE= hast
HAST= hastd
-HASTPACKAGE= hast
-.endif
-.if ${MK_INETD} != "no"
-CONFGROUPS+= INETD
+CONFGROUPS.${MK_INETD}+= INETD
+INETDPACKAGE= inetd
INETD= inetd
-INETDPACKAGE= inetd
-.endif
-.if ${MK_IPFILTER} != "no"
-CONFGROUPS+= IPF
+CONFGROUPS.${MK_IPFILTER}+= IPF
+IPFPACKAGE= ipf
IPF= ipfilter \
ipfs \
ipmon \
ipnat \
ippool
-IPFPACKAGE= ipf
-.endif
-.if ${MK_IPFW} != "no"
-CONFGROUPS+= IPFW
-IPFW= ipfw dnctl
+CONFGROUPS.${MK_IPFW}+= IPFW
+IPFWPACKAGE= ipfw
+IPFW= ipfw \
+ dnctl
.if ${MK_NETGRAPH} != "no"
IPFW+= ipfw_netflow
.endif
-IPFWPACKAGE= ipfw
-# natd is only built when ipfw is built
-CONFGROUPS+= NATD
-NATD+= natd
-NATDPACKAGE= natd
-.endif
-
-.if ${MK_ISCSI} != "no"
-CONFGROUPS+= ISCSI
+CONFGROUPS.${MK_ISCSI}+= ISCSI
+ISCSIPACKAGE= iscsi
ISCSI= iscsictl \
iscsid
-ISCSIPACKAGE= iscsi
-.endif
-.if ${MK_JAIL} != "no"
-CONFGROUPS+= JAIL
-JAIL+= jail
-JAILPACKAGE= jail
-.endif
+# natd is only built when ipfw is built
+CONFGROUPS.${MK_IPFW}+= NATD
+NATDPACKAGE= natd
+NATD= natd
+
+CONFGROUPS.${MK_JAIL}+= JAIL
+JAILPACKAGE= jail
+JAIL= jail
+
+CONFGROUPS.${MK_LPR}+= LP
+LPPACKAGE= lp
+LP= lpd
+
+CONFGROUPS+= NEWSYSLOG
+NEWSYSLOGPACKAGE= newsyslog
+NEWSYSLOG= newsyslog
+
+CONFGROUPS+= NFS
+NFSPACKAGE= nfs
+NFS= lockd \
+ mountd \
+ nfscbd \
+ nfsclient \
+ nfsd \
+ nfsuserd \
+ statd
+
+CONFGROUPS.${MK_NIS}+= NIS
+NISPACKAGE= yp
+NIS= ypbind \
+ ypldap \
+ yppasswdd \
+ ypserv \
+ ypset \
+ ypupdated \
+ ypxfrd \
+ nisdomain
-.if ${MK_LEGACY_CONSOLE} != "no"
-CONFGROUPS+= CONSOLE
-CONSOLE+= moused
-CONSOLE+= msconvd
-CONSOLE+= syscons
-CONSOLEPACKAGE= console-tools
-.endif
+CONFGROUPS.${MK_NS_CACHING}+= NSCD
+NSCD= nscd
-.if ${MK_LPR} != "no"
-CONFGROUPS+= LP
-LP+= lpd
-LPPACKAGE= lp
-.endif
+CONFGROUPS.${MK_NTP}+= NTP
+NTPPACKAGE= ntp
+NTP= ntpd \
+ ntpdate
+
+CONFGROUPS.${MK_NUAGEINIT}+= NUAGEINIT
+NUAGEINITPACKAGE= nuageinit
+NUAGEINIT= nuageinit \
+ nuageinit_post_net \
+ nuageinit_user_data_script
+
+CONFGROUPS.${MK_OFED_EXTRA}+= OPENSM
+OPENSM= opensm
+
+CONFGROUPS.${MK_PF}+= PF
+PFPACKAGE= pf
+PF= pf \
+ pflog \
+ pfsync \
+ ftp-proxy
+
+CONFGROUPS+= POWERD
+POWERDPACKAGE= powerd
+POWERD= powerd
+
+CONFGROUPS.${MK_PPP}+= PPP
+PPPPACKAGE= ppp
+PPP= ppp
+
+CONFGROUPS+= PPPOED
+PPPOEDPACKAGE= ppp
+PPPOED= pppoed
+
+CONFGROUPS+= SYSLOGD
+SYSLOGDPACKAGE= syslogd
+SYSLOGD= syslogd
+
+CONFGROUPS+= RCMDS
+RCMDSPACKAGE= rcmds
+RCMDS= rwho
+
+CONFGROUPS+= RESOLVCONF
+RESOLVCONFPACKAGE= resolvconf
+RESOLVCONF= resolv
+
+CONFGROUPS.${MK_SENDMAIL}+= SENDMAIL
+SENDMAILPACKAGE= sendmail
+SENDMAIL= sendmail
+
+CONFGROUPS.${MK_OPENSSH}+= SSH
+SSHPACKAGE= ssh
+SSH= sshd
+
+CONFGROUPS.${MK_UNBOUND}+= UNBOUND
+UNBOUNDPACKAGE= unbound
+UNBOUND= local_unbound
+
+CONFGROUPS.${MK_VI}+= VI
+VIPACKAGE= vi
+VI= virecover
+
+CONFGROUPS.${MK_CUSE}+= VOSS
+VOSSPACKAGE= sound
+VOSS= virtual_oss
+
+CONFGROUPS.${MK_WIRELESS}+= HOSTAPD
+HOSTAPDPACKAGE= hostapd
+HOSTAPD= hostapd
+
+CONFGROUPS.${MK_WIRELESS}+= WPA
+WPAPACKAGE= wpa
+WPA= wpa_supplicant
+
+CONFGROUPS.${MK_ZFS}+= ZFS
+ZFSPACKAGE= zfs
+ZFS= zfs \
+ zfsbe \
+ zfsd \
+ zfskeys \
+ zpool \
+ zpoolreguid \
+ zpoolupgrade \
+ zvol
+
+CONFGROUPS.${MK_LEGACY_CONSOLE}+=SYSCONS
+SYSCONSPACKAGE= console-tools
+SYSCONS= moused \
+ msconvd \
+ syscons
.if ${MK_KERBEROS} != "no"
.if ${MK_MITKRB5} == "no"
@@ -318,58 +357,10 @@ KRB5PACKAGE= kerberos-kdc
.endif # ${MK_MITKRB5}
.endif # ${MK_KERBEROS}
-.if ${MK_NIS} != "no"
-CONFGROUPS+= YP
-YP= ypbind \
- ypldap \
- yppasswdd \
- ypserv \
- ypset \
- ypupdated \
- ypxfrd \
- nisdomain
-YPPACKAGE= yp
-.endif
-
-.if ${MK_NS_CACHING} != "no"
-_nscd= nscd
-.endif
-
-.if ${MK_NTP} != "no"
-CONFGROUPS+= NTP
-NTP+= ntpd \
- ntpdate
-NTPPACKAGE= ntp
-.endif
-
-.if ${MK_OFED_EXTRA} != "no"
-_opensm= opensm
-.endif
-
.if ${MK_OPENSSL} != "no" && ${MK_OPENSSL_KTLS} != "no"
-CONFS+= tlsclntd \
- tlsservd
-.endif
-
-.if ${MK_OPENSSH} != "no"
-CONFGROUPS+= SSH
-SSH= sshd
-SSHPACKAGE= ssh
-.endif
-
-.if ${MK_PF} != "no"
-CONFGROUPS+= PF
-PF= pf \
- pflog \
- pfsync \
- ftp-proxy
-PFPACKAGE= pf
-.endif
-
-.if ${MK_PPP} != "no"
-CONFGROUPS+= PPP
-PPP= ppp
-PPPPACKAGE= ppp
+CONFGROUPS+= KTLS
+KTLS= tlsclntd \
+ tlsservd
.endif
.if ${MK_INET6} != "no" || ${MK_ROUTED} != "no"
@@ -384,57 +375,9 @@ RIP+= routed
.endif
.endif
-.if ${MK_SENDMAIL} != "no"
-CONFGROUPS+= SMRCD
-SMRCD= sendmail
-SMRCDPACKAGE= sendmail
-.endif
-
-.if ${MK_NUAGEINIT} != "no"
-CONFGROUPS+= NIUAGEINIT
-NIUAGEINIT= nuageinit \
- nuageinit_post_net \
- nuageinit_user_data_script
-NIUAGEINITPACKAGE= nuageinit
-.endif
-
-.if ${MK_UNBOUND} != "no"
-CONFGROUPS+= UNBOUND
-UNBOUND+= local_unbound
-UNBOUNDPACKAGE= unbound
-.endif
-
-.if ${MK_VI} != "no"
-CONFGROUPS+= VI
-VI+= virecover
-VIPACKAGE= vi
-.endif
-
-.if ${MK_WIRELESS} != "no"
-CONFGROUPS+= HOSTAPD
-HOSTAPD= hostapd
-HOSTAPDPACKAGE= hostapd
-
-CONFGROUPS+= WPA
-WPA= wpa_supplicant
-WPAPACKAGE= wpa
-.endif
-
-.if ${MK_ZFS} != "no"
-CONFGROUPS+= ZFS
-ZFS+= zfs
-ZFS+= zfsbe
-ZFS+= zfsd
-ZFS+= zfskeys
-ZFS+= zpool
-ZFS+= zpoolreguid
-ZFS+= zpoolupgrade
-ZFS+= zvol
-ZFSPACKAGE= zfs
-.endif
-
-.for fg in ${CONFGROUPS}
+.for fg in ${CONFGROUPS} ${CONFGROUPS.yes}
${fg}MODE?= ${BINMODE}
+${fg}PACKAGE?= rc
.endfor
.include <bsd.prog.mk>
diff --git a/release/Makefile b/release/Makefile
index 12f5114f8b22..13532097d56c 100644
--- a/release/Makefile
+++ b/release/Makefile
@@ -448,9 +448,7 @@ release: real-release vm-release cloudware-release oci-release
release-done:
touch release
-real-release:
- ${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} obj
- ${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} ${RELEASE_TARGETS}
+real-release: obj .WAIT ${RELEASE_TARGETS}
install: release-install vm-install oci-install .WAIT cloud-install
diff --git a/release/packages/generate-set-ucl.lua b/release/packages/generate-set-ucl.lua
index ab8765c8cf2d..9ba7026b75df 100755
--- a/release/packages/generate-set-ucl.lua
+++ b/release/packages/generate-set-ucl.lua
@@ -1,4 +1,10 @@
#!/usr/libexec/flua
+--
+-- Copyright (c) 2024-2025 Baptiste Daroussin <bapt@FreeBSD.org>
+-- Copyright (c) 2025 Lexi Winter <ivy@FreeBSD.org>
+--
+-- SPDX-License-Identifier: BSD-2-Clause
+--
--[[ usage:
generate-set-ucl.lua <template> [<variablename> <variablevalue>]
diff --git a/sbin/rcorder/rcorder.c b/sbin/rcorder/rcorder.c
index 87b0e873c7ae..3d2a67c82a5a 100644
--- a/sbin/rcorder/rcorder.c
+++ b/sbin/rcorder/rcorder.c
@@ -980,9 +980,11 @@ do_file(filenode *fnode, strnodelist *stack_ptr)
fnode->last->next = fnode->next;
}
- if (fnode->issues_count)
- warnx("`%s' was seen in circular dependencies for %d times.",
- fnode->filename, fnode->issues_count);
+ if (fnode->issues_count) {
+ warnx("`%s' was seen in circular dependencies %d time%s.",
+ fnode->filename, fnode->issues_count,
+ fnode->issues_count > 1 ? "s" : "");
+ }
DPRINTF((stderr, "nuking %s\n", fnode->filename));
}
diff --git a/share/man/man7/arch.7 b/share/man/man7/arch.7
index 5de441aed699..668f5aa23155 100644
--- a/share/man/man7/arch.7
+++ b/share/man/man7/arch.7
@@ -48,23 +48,35 @@ and later, unless otherwise noted.
.Fx
uses a flat address space.
Variables of types
-.Vt unsigned long ,
-.Vt uintptr_t ,
+.Vt unsigned long
and
.Vt size_t
-and pointers all have the same representation.
+have the same representation.
.Pp
In order to maximize compatibility with future pointer integrity mechanisms,
manipulations of pointers as integers should be performed via
.Vt uintptr_t
or
.Vt intptr_t
-and no other types.
-In particular,
-.Vt long
+and no other types as these types are the only integer types where the
+C standard guarantees that a pointer may be cast to it and then cast back
+to the original type.
+On CHERI systems,
+.Vt uintptr_t
and
-.Vt ptrdiff_t
-should be avoided.
+.Vt intptr_t
+are defined as
+.Vt __uintcap_t
+and
+.Vt __intcap_t
+which represent capabilities that can be manipulated by integer operations.
+Pointers should not be cast to
+.Vt long ,
+.Vt ptrdiff_t ,
+or
+.Vt size_t
+if they will later be cast back to a pointer that is expected to be
+dereferencable as they remain bare integer types on all architectures.
.Pp
On some architectures, e.g.,
AIM variants of
@@ -85,11 +97,13 @@ release to support each architecture.
.Bl -column -offset indent "Architecture" "Initial Release"
.It Sy Architecture Ta Sy Initial Release
.It aarch64 Ta 11.0
+.It aarch64c Ta 16.0 (planned)
.It amd64 Ta 5.1
.It armv7 Ta 12.0
.It powerpc64 Ta 9.0
.It powerpc64le Ta 13.0
.It riscv64 Ta 12.0
+.It riscv64c Ta 16.0 (planned)
.El
.Pp
Discontinued architectures are shown in the following table.
@@ -123,21 +137,33 @@ architectures use some variant of the ELF (see
.Xr elf 5 )
.Sy Application Binary Interface
(ABI) for the machine processor.
-All supported ABIs can be divided into two groups:
-.Bl -tag -width "Dv ILP32"
+Supported ABIs can be divided into three main groups:
+.Bl -tag -width "Dv L64PC128"
.It Dv ILP32
.Vt int ,
+.Vt intptr_t ,
.Vt long ,
+and
.Vt void *
types machine representations all have 4-byte size.
.It Dv LP64
.Vt int
type machine representation uses 4 bytes,
while
-.Vt long
+.Vt intptr_t ,
+.Vt long ,
and
.Vt void *
are 8 bytes.
+.It Dv L64PC128
+.Vt int
+type machine representation uses 4 bytes.
+.Vt long
+type machine representation uses 8 bytes.
+.Vt intptr_t
+and
+.Vt void *
+are 16 byte capabilities.
.El
.Pp
Some machines support more than one
@@ -169,12 +195,23 @@ Binaries targeting
and earlier are no longer supported by
.Fx .
.Pp
+Architectures with 128-bit capabilities support both a
+.Dq native
+.Dv L64PC128
+execution environment and a
+.Dv LP64
+environment:
+.Bl -column -offset indent "aarch64c" "LP64 counterpart"
+.It Sy L64PC128 Ta Sy LP64 counterpart
+.It Dv aarch64c Ta Dv aarch64
+.It Dv riscv64c Ta Dv riscv64
+.El
+.Pp
On all supported architectures:
.Bl -column -offset indent "long long" "Size"
.It Sy Type Ta Sy Size
.It short Ta 2
.It int Ta 4
-.It long Ta sizeof(void*)
.It long long Ta 8
.It float Ta 4
.It double Ta 8
@@ -188,17 +225,19 @@ The sole exception is that
requires only 4-byte alignment for 64-bit integers.
.Pp
Machine-dependent type sizes:
-.Bl -column -offset indent "Architecture" "void *" "long double" "time_t"
-.It Sy Architecture Ta Sy void * Ta Sy long double Ta Sy time_t
-.It aarch64 Ta 8 Ta 16 Ta 8
-.It amd64 Ta 8 Ta 16 Ta 8
-.It armv7 Ta 4 Ta 8 Ta 8
-.It i386 Ta 4 Ta 12 Ta 4
-.It powerpc Ta 4 Ta 8 Ta 8
-.It powerpcspe Ta 4 Ta 8 Ta 8
-.It powerpc64 Ta 8 Ta 8 Ta 8
-.It powerpc64le Ta 8 Ta 8 Ta 8
-.It riscv64 Ta 8 Ta 16 Ta 8
+.Bl -column -offset indent "Architecture" "long" "void *" "long double" "time_t"
+.It Sy Architecture Ta Sy long Ta Sy void * Ta Sy long double Ta Sy time_t
+.It aarch64 Ta 8 Ta 8 Ta 16 Ta 8
+.It aarch64c Ta 8 Ta 16 Ta 16 Ta 8
+.It amd64 Ta 8 Ta 8 Ta 16 Ta 8
+.It armv7 Ta 4 Ta 4 Ta 8 Ta 8
+.It i386 Ta 4 Ta 4 Ta 12 Ta 4
+.It powerpc Ta 4 Ta 4 Ta 8 Ta 8
+.It powerpcspe Ta 4 Ta 4 Ta 8 Ta 8
+.It powerpc64 Ta 8 Ta 8 Ta 8 Ta 8
+.It powerpc64le Ta 8 Ta 8 Ta 8 Ta 8
+.It riscv64 Ta 8 Ta 8 Ta 16 Ta 8
+.It riscv64c Ta 8 Ta 16 Ta 16 Ta 8
.El
.Pp
.Sy time_t
@@ -207,6 +246,7 @@ is 8 bytes on all supported architectures except i386.
.Bl -column -offset indent "Architecture" "Endianness" "char Signedness"
.It Sy Architecture Ta Sy Endianness Ta Sy char Signedness
.It aarch64 Ta little Ta unsigned
+.It aarch64c Ta little Ta unsigned
.It amd64 Ta little Ta signed
.It armv7 Ta little Ta unsigned
.It i386 Ta little Ta signed
@@ -215,11 +255,13 @@ is 8 bytes on all supported architectures except i386.
.It powerpc64 Ta big Ta unsigned
.It powerpc64le Ta little Ta unsigned
.It riscv64 Ta little Ta signed
+.It riscv64c Ta little Ta signed
.El
.Ss Page Size
.Bl -column -offset indent "Architecture" "Page Sizes"
.It Sy Architecture Ta Sy Page Sizes
.It aarch64 Ta 4K, 64K, 2M, 1G
+.It aarch64c Ta 4K, 64K, 2M, 1G
.It amd64 Ta 4K, 2M, 1G
.It armv7 Ta 4K, 1M
.It i386 Ta 4K, 2M (PAE), 4M
@@ -228,11 +270,13 @@ is 8 bytes on all supported architectures except i386.
.It powerpc64 Ta 4K
.It powerpc64le Ta 4K
.It riscv64 Ta 4K, 2M, 1G
+.It riscv64c Ta 4K, 2M, 1G
.El
.Ss User Address Space Layout
.Bl -column -offset indent "riscv64 (Sv48)" "0x0001000000000000" "NNNU"
.It Sy Architecture Ta Sy Maximum Address Ta Sy Address Space Size
.It aarch64 Ta 0x0001000000000000 Ta 256TiB
+.It aarch64c Ta 0x0001000000000000 Ta 256TiB
.It amd64 (LA48) Ta 0x0000800000000000 Ta 128TiB
.It amd64 (LA57) Ta 0x0100000000000000 Ta 64PiB
.It armv7 Ta 0xbfc00000 Ta 3GiB
@@ -242,7 +286,9 @@ is 8 bytes on all supported architectures except i386.
.It powerpc64 Ta 0x000fffffc0000000 Ta 4PiB
.It powerpc64le Ta 0x000fffffc0000000 Ta 4PiB
.It riscv64 (Sv39) Ta 0x0000004000000000 Ta 256GiB
+.It riscv64c (Sv39) Ta 0x0000004000000000 Ta 256GiB
.It riscv64 (Sv48) Ta 0x0000800000000000 Ta 128TiB
+.It riscv64c (Sv48) Ta 0x0000800000000000 Ta 128TiB
.El
.Pp
The layout of a process' address space can be queried via the
@@ -287,6 +333,7 @@ currently supports Sv39 and Sv48 and defaults to using Sv39.
.Bl -column -offset indent "Architecture" "float, double" "long double"
.It Sy Architecture Ta Sy float, double Ta Sy long double
.It aarch64 Ta hard Ta soft, quad precision
+.It aarch64c Ta hard Ta soft, quad precision
.It amd64 Ta hard Ta hard, 80 bit
.It armv7 Ta hard Ta hard, double precision
.It i386 Ta hard Ta hard, 80 bit
@@ -295,6 +342,7 @@ currently supports Sv39 and Sv48 and defaults to using Sv39.
.It powerpc64 Ta hard Ta hard, double precision
.It powerpc64le Ta hard Ta hard, double precision
.It riscv64 Ta hard Ta hard, quad precision
+.It riscv64c Ta hard Ta hard, quad precision
.El
.Ss Default Tool Chain
.Fx
@@ -321,12 +369,12 @@ when referring to the kernel, interfaces dependent on a specific type of kernel
or similar things like boot sequences.
.Bl -column -offset indent "Dv MACHINE" "Dv MACHINE_CPUARCH" "Dv MACHINE_ARCH"
.It Dv MACHINE Ta Dv MACHINE_CPUARCH Ta Dv MACHINE_ARCH
-.It arm64 Ta aarch64 Ta aarch64
+.It arm64 Ta aarch64 Ta aarch64, aarch64c
.It amd64 Ta amd64 Ta amd64
.It arm Ta arm Ta armv7
.It i386 Ta i386 Ta i386
.It powerpc Ta powerpc Ta powerpc, powerpcspe, powerpc64, powerpc64le
-.It riscv Ta riscv Ta riscv64
+.It riscv Ta riscv Ta riscv64, riscv64c
.El
.Ss Predefined Macros
The compiler provides a number of predefined macros.
@@ -340,17 +388,40 @@ cc -x c -dM -E /dev/null
.Ed
.Pp
Common type size and endianness macros:
-.Bl -column -offset indent "BYTE_ORDER" "Meaning"
+.Bl -column -offset indent "__SIZEOF_POINTER__" "Meaning"
.It Sy Macro Ta Sy Meaning
+.It Dv __SIZEOF_LONG__ Ta size in bytes of long
+.It Dv __SIZEOF_POINTER__ Ta size in bytes of intptr_t and pointers
+.It Dv __SIZEOF_SIZE_T__ Ta size in bytes of size_t
.It Dv __LP64__ Ta 64-bit (8-byte) long and pointer, 32-bit (4-byte) int
.It Dv __ILP32__ Ta 32-bit (4-byte) int, long and pointer
+.It Dv __CHERI__ Ta 128-bit (16-byte) capability pointer, 64-bit (8-byte) long
.It Dv BYTE_ORDER Ta Either Dv BIG_ENDIAN or Dv LITTLE_ENDIAN .
.El
.Pp
+Because systems were historically either
+.Dv __ILP32__
+or
+.Dv __LP64__
+it has been common for programmers to test only one and assume the other
+one in an else branch.
+With the arrival of CHERI architectures, this is no longer the case.
+.Dv __SIZEOF_*__
+macros should be used instead.
+New uses of
+.Dv __ILP32__
+and
+.Dv __LP64__
+should be avoided.
+Compilers for CHERI targets do not define
+.Dv __LP64__
+as their pointers are 128-bit capabilities.
+.Pp
Architecture-specific macros:
.Bl -column -offset indent "Architecture" "Predefined macros"
.It Sy Architecture Ta Sy Predefined macros
.It aarch64 Ta Dv __aarch64__
+.It aarch64c Ta Dv __aarch64__ , Dv __CHERI__
.It amd64 Ta Dv __amd64__ , Dv __x86_64__
.It armv7 Ta Dv __arm__ , Dv __ARM_ARCH >= 7
.It i386 Ta Dv __i386__
@@ -359,6 +430,7 @@ Architecture-specific macros:
.It powerpc64 Ta Dv __powerpc__ , Dv __powerpc64__
.It powerpc64le Ta Dv __powerpc__ , Dv __powerpc64__
.It riscv64 Ta Dv __riscv , Dv __riscv_xlen == 64
+.It riscv64c Ta Dv __riscv , Dv __riscv_xlen == 64 , Dv __CHERI__
.El
.Pp
Compilers may define additional variants of architecture-specific macros.
diff --git a/share/mk/bsd.confs.mk b/share/mk/bsd.confs.mk
index 77b573c7e42c..e953e6d978dc 100644
--- a/share/mk/bsd.confs.mk
+++ b/share/mk/bsd.confs.mk
@@ -22,6 +22,14 @@ buildconfig: ${${group}}
all: buildconfig
. endif
+# Take groups from both CONFGROUPS and CONFGROUPS.yes, to allow syntax like
+# CONFGROUPS.${MK_FOO}=FOO. Sort and uniq the list of groups in case of
+# duplicates.
+.if defined(CONFGROUPS) || defined(CONFGROUPS.yes)
+CONFGROUPS:=${CONFGROUPS} ${CONFGROUPS.yes}
+CONFGROUPS:=${CONFGROUPS:O:u}
+.endif
+
. for group in ${CONFGROUPS}
. if defined(${group}) && !empty(${group})
diff --git a/sys/dev/nvme/nvme_private.h b/sys/dev/nvme/nvme_private.h
index 52f9e12f8f9a..52e9fcbbebcd 100644
--- a/sys/dev/nvme/nvme_private.h
+++ b/sys/dev/nvme/nvme_private.h
@@ -463,13 +463,13 @@ static __inline void
nvme_completion_poll(struct nvme_completion_poll_status *status)
{
int timeout = ticks + 10 * hz;
- sbintime_t delta_t = SBT_1US;
+ sbintime_t delta = SBT_1US;
while (!atomic_load_acq_int(&status->done)) {
if (timeout - ticks < 0)
panic("NVME polled command failed to complete within 10s.");
- pause_sbt("nvme", delta_t, 0, C_PREL(1));
- delta_t = min(SBT_1MS, delta_t * 3 / 2);
+ pause_sbt("nvme", delta, 0, C_PREL(1));
+ delta = min(SBT_1MS, delta + delta / 2);
}
}
diff --git a/usr.sbin/bsdinstall/bsdinstall.8 b/usr.sbin/bsdinstall/bsdinstall.8
index 6175d26b4fd3..ee141e1d4296 100644
--- a/usr.sbin/bsdinstall/bsdinstall.8
+++ b/usr.sbin/bsdinstall/bsdinstall.8
@@ -247,7 +247,7 @@ Extracts the distributions listed in
.Ev DISTRIBUTIONS
into
.Ev BSDINSTALL_CHROOT .
-.It Cm pkgbase Op Fl --jail
+.It Cm pkgbase Op Fl -jail
Fetch and install base system packages to
.Ev BSDINSTALL_CHROOT .
Packages are fetched according to repository configuration in
@@ -256,7 +256,7 @@ if set, or
.Lk pkg.freebsd.org
otherwise.
If the
-.Fl --jail
+.Fl -jail
option is passed, no kernel is installed, and the
.Dq jail
variant of each package set will be selected where applicable.