diff options
27 files changed, 770 insertions, 437 deletions
diff --git a/bin/sh/parser.c b/bin/sh/parser.c index 0c1b7a91c257..3e42d41caec4 100644 --- a/bin/sh/parser.c +++ b/bin/sh/parser.c @@ -55,6 +55,8 @@ #include "show.h" #include "eval.h" #include "exec.h" /* to check for special builtins */ +#include "main.h" +#include "jobs.h" #ifndef NO_HISTORY #include "myhistedit.h" #endif @@ -2050,7 +2052,129 @@ getprompt(void *unused __unused) * Format prompt string. */ for (i = 0; (i < PROMPTLEN - 1) && (*fmt != '\0'); i++, fmt++) { - if (*fmt != '\\') { + if (*fmt == '$') { + const char *varname_start, *varname_end, *value; + char varname[256]; + int namelen, braced = 0; + + fmt++; /* Skip the '$' */ + + /* Check for ${VAR} syntax */ + if (*fmt == '{') { + braced = 1; + fmt++; + } + + varname_start = fmt; + + /* Extract variable name */ + if (is_digit(*fmt)) { + /* Positional parameter: $0, $1, etc. */ + fmt++; + varname_end = fmt; + } else if (is_special(*fmt)) { + /* Special parameter: $?, $!, $$, etc. */ + fmt++; + varname_end = fmt; + } else if (is_name(*fmt)) { + /* Regular variable name */ + do + fmt++; + while (is_in_name(*fmt)); + varname_end = fmt; + } else { + /* + * Not a valid variable reference. + * Output literal '$'. + */ + ps[i] = '$'; + if (braced && i < PROMPTLEN - 2) + ps[++i] = '{'; + fmt = varname_start - 1; + continue; + } + + namelen = varname_end - varname_start; + if (namelen == 0 || namelen >= (int)sizeof(varname)) { + /* Invalid or too long, output literal */ + ps[i] = '$'; + fmt = varname_start - 1; + continue; + } + + /* Copy variable name */ + memcpy(varname, varname_start, namelen); + varname[namelen] = '\0'; + + /* Handle closing brace for ${VAR} */ + if (braced) { + if (*fmt == '}') { + fmt++; + } else { + /* Missing closing brace, treat as literal */ + ps[i] = '$'; + if (i < PROMPTLEN - 2) + ps[++i] = '{'; + fmt = varname_start - 1; + continue; + } + } + + /* Look up the variable */ + if (namelen == 1 && is_digit(*varname)) { + /* Positional parameters - check digits FIRST */ + int num = *varname - '0'; + if (num == 0) + value = arg0 ? arg0 : ""; + else if (num > 0 && num <= shellparam.nparam) + value = shellparam.p[num - 1]; + else + value = ""; + } else if (namelen == 1 && is_special(*varname)) { + /* Special parameters */ + char valbuf[20]; + int num; + + switch (*varname) { + case '$': + num = rootpid; + break; + case '?': + num = exitstatus; + break; + case '#': + num = shellparam.nparam; + break; + case '!': + num = backgndpidval(); + break; + default: + num = 0; + break; + } + snprintf(valbuf, sizeof(valbuf), "%d", num); + value = valbuf; + } else { + /* Regular variables */ + value = lookupvar(varname); + if (value == NULL) + value = ""; + } + + /* Copy value to output, respecting buffer size */ + while (*value != '\0' && i < PROMPTLEN - 1) { + ps[i++] = *value++; + } + + /* + * Adjust fmt and i for the loop increment. + * fmt will be incremented by the for loop, + * so position it one before where we want. + */ + fmt--; + i--; + continue; + } else if (*fmt != '\\') { ps[i] = *fmt; continue; } diff --git a/bin/sh/tests/builtins/read11.0 b/bin/sh/tests/builtins/read11.0 index c75ed9c92a83..5bae80318b15 100644 --- a/bin/sh/tests/builtins/read11.0 +++ b/bin/sh/tests/builtins/read11.0 @@ -5,8 +5,8 @@ T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) trap 'rm -rf "$T"' 0 cd $T mkfifo fifo1 -# Open fifo1 for writing and then read block on a dummy fifo -{ mkfifo fifo2; read dummy <fifo2; } >fifo1 & +# Open fifo1 for writing +{ sleep 10; } >fifo1 & # Wait for the child to open fifo1 for writing exec 3<fifo1 v=original_value diff --git a/bin/sh/tests/parser/Makefile b/bin/sh/tests/parser/Makefile index afeb604710e4..c22af5414526 100644 --- a/bin/sh/tests/parser/Makefile +++ b/bin/sh/tests/parser/Makefile @@ -86,6 +86,12 @@ ${PACKAGE}FILES+= only-redir2.0 ${PACKAGE}FILES+= only-redir3.0 ${PACKAGE}FILES+= only-redir4.0 ${PACKAGE}FILES+= pipe-not1.0 +${PACKAGE}FILES+= ps1-expand1.0 +${PACKAGE}FILES+= ps1-expand2.0 +${PACKAGE}FILES+= ps1-expand3.0 +${PACKAGE}FILES+= ps1-expand4.0 +${PACKAGE}FILES+= ps1-expand5.0 +${PACKAGE}FILES+= ps2-expand1.0 ${PACKAGE}FILES+= set-v1.0 set-v1.0.stderr ${PACKAGE}FILES+= var-assign1.0 diff --git a/bin/sh/tests/parser/ps1-expand1.0 b/bin/sh/tests/parser/ps1-expand1.0 new file mode 100644 index 000000000000..351e6437a023 --- /dev/null +++ b/bin/sh/tests/parser/ps1-expand1.0 @@ -0,0 +1,7 @@ +# Test simple variable expansion in PS1 +testvar=abcdef +output=$(testvar=abcdef PS1='$testvar:' ENV=/dev/null ${SH} +m -i </dev/null 2>&1) +case $output in +*abcdef*) exit 0 ;; +*) echo "Expected 'abcdef' in prompt output"; exit 1 ;; +esac diff --git a/bin/sh/tests/parser/ps1-expand2.0 b/bin/sh/tests/parser/ps1-expand2.0 new file mode 100644 index 000000000000..ed31a7c17136 --- /dev/null +++ b/bin/sh/tests/parser/ps1-expand2.0 @@ -0,0 +1,7 @@ +# Test braced variable expansion in PS1 +testvar=xyz123 +output=$(testvar=xyz123 PS1='prefix-${testvar}-suffix:' ENV=/dev/null ${SH} +m -i </dev/null 2>&1) +case $output in +*xyz123*) exit 0 ;; +*) echo "Expected 'xyz123' in prompt output"; exit 1 ;; +esac diff --git a/bin/sh/tests/parser/ps1-expand3.0 b/bin/sh/tests/parser/ps1-expand3.0 new file mode 100644 index 000000000000..0b6270c300ff --- /dev/null +++ b/bin/sh/tests/parser/ps1-expand3.0 @@ -0,0 +1,8 @@ +# Test special parameter $$ (PID) in PS1 +output=$(PS1='pid:$$:' ENV=/dev/null ${SH} +m -i </dev/null 2>&1) +# Check that output contains "pid:" followed by a number (not literal $$) +case $output in +*pid:\$\$:*) echo "PID not expanded, got literal \$\$"; exit 1 ;; +*pid:[0-9]*) exit 0 ;; +*) echo "Expected PID after 'pid:' in output"; exit 1 ;; +esac diff --git a/bin/sh/tests/parser/ps1-expand4.0 b/bin/sh/tests/parser/ps1-expand4.0 new file mode 100644 index 000000000000..623c52707eec --- /dev/null +++ b/bin/sh/tests/parser/ps1-expand4.0 @@ -0,0 +1,8 @@ +# Test special parameter $? (exit status) in PS1 +output=$(PS1='status:$?:' ENV=/dev/null ${SH} +m -i </dev/null 2>&1) +# Should start with exit status 0 +case $output in +*status:\$?:*) echo "Exit status not expanded, got literal \$?"; exit 1 ;; +*status:0:*) exit 0 ;; +*) echo "Expected 'status:0:' in initial prompt"; exit 1 ;; +esac diff --git a/bin/sh/tests/parser/ps1-expand5.0 b/bin/sh/tests/parser/ps1-expand5.0 new file mode 100644 index 000000000000..73fe3ba5a3d5 --- /dev/null +++ b/bin/sh/tests/parser/ps1-expand5.0 @@ -0,0 +1,8 @@ +# Test positional parameter $0 in PS1 +output=$(PS1='shell:$0:' ENV=/dev/null ${SH} +m -i </dev/null 2>&1) +# $0 should contain the shell name/path +case $output in +*shell:\$0:*) echo "Positional parameter not expanded, got literal \$0"; exit 1 ;; +*shell:*sh*:*) exit 0 ;; +*) echo "Expected shell name after 'shell:' in output"; exit 1 ;; +esac diff --git a/bin/sh/tests/parser/ps2-expand1.0 b/bin/sh/tests/parser/ps2-expand1.0 new file mode 100644 index 000000000000..f0a3a77ded1c --- /dev/null +++ b/bin/sh/tests/parser/ps2-expand1.0 @@ -0,0 +1,12 @@ +# Test variable expansion in PS2 (continuation prompt) +testvar=continue +# Send incomplete command (backslash at end) to trigger PS2 +output=$(testvar=continue PS2='$testvar>' ENV=/dev/null ${SH} +m -i <<EOF 2>&1 +echo \\ +done +EOF +) +case $output in +*continue\>*) exit 0 ;; +*) echo "Expected 'continue>' in PS2 output"; exit 1 ;; +esac diff --git a/cddl/contrib/opensolaris/cmd/dtrace/dtrace.1 b/cddl/contrib/opensolaris/cmd/dtrace/dtrace.1 index 456a9e319987..1a9f8029e6de 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/dtrace.1 +++ b/cddl/contrib/opensolaris/cmd/dtrace/dtrace.1 @@ -20,7 +20,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 4, 2025 +.Dd November 6, 2025 .Dt DTRACE 1 .Os .Sh NAME @@ -548,7 +548,7 @@ to disallow the possibility of enabling destructive actions system-wide at any p Any attempts to enable destructive actions will cause .Nm to exit with a runtime error. -.It Fl x Ar arg Op Ns = Ns value +.It Fl x Ar arg Ns Op = Ns Ar value Enable or modify a DTrace runtime option or D compiler option. Boolean options are enabled by specifying their name. Options with values are set by separating the option name and value with an @@ -1299,6 +1299,7 @@ in .Xr dtrace_ip 4 , .Xr dtrace_kinst 4 , .Xr dtrace_lockstat 4 , +.Xr dtrace_pid 4 , .Xr dtrace_proc 4 , .Xr dtrace_profile 4 , .Xr dtrace_sched 4 , diff --git a/lib/libsys/Makefile.sys b/lib/libsys/Makefile.sys index 1d1a4f1136ce..5f149170b974 100644 --- a/lib/libsys/Makefile.sys +++ b/lib/libsys/Makefile.sys @@ -471,7 +471,9 @@ MLINKS+=intro.2 errno.2 MLINKS+=jail.2 jail_attach.2 \ jail.2 jail_get.2 \ jail.2 jail_remove.2 \ - jail.2 jail_set.2 + jail.2 jail_set.2 \ + jail.2 jail_attach_jd.2 \ + jail.2 jail_remove_jd.2 MLINKS+=kldunload.2 kldunloadf.2 MLINKS+=kqueue.2 kevent.2 \ kqueue.2 kqueue1.2 \ diff --git a/release/Makefile b/release/Makefile index a777ded3c429..fc91b31df579 100644 --- a/release/Makefile +++ b/release/Makefile @@ -56,7 +56,7 @@ TARGET_ARCH= ${TARGET} .endif .endif IMAKE= ${MAKE} TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET} \ - -DNO_ROOT -DDB_FROM_SRC + -DNO_ROOT -DWITHOUT_QEMU -DDB_FROM_SRC DISTDIR= dist # Define OSRELEASE by using newvers.sh diff --git a/release/tools/vmimage.subr b/release/tools/vmimage.subr index 8531e9b8f2d6..92f00f9cf7c3 100644 --- a/release/tools/vmimage.subr +++ b/release/tools/vmimage.subr @@ -449,7 +449,11 @@ vm_create_disk() { # Create an ESP espfilename=$(mktemp /tmp/efiboot.XXXXXX) make_esp_file ${espfilename} ${fat32min} ${BOOTFILES}/efi/loader_lua/loader_lua.efi - BOOTPARTS="${BOOTPARTS} -p efi/efiboot0:=${espfilename}" + espsuffix="" + if [ -z "${BOOTPARTS}" ]; then + espsuffix="${BOOTPARTSOFFSET}" + fi + BOOTPARTS="${BOOTPARTS} -p efi/efiboot0:=${espfilename}${espsuffix}" # Add this to fstab mkdir -p ${DESTDIR}/boot/efi diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile index 34edf6ad455d..fe1d285aec96 100644 --- a/share/man/man4/Makefile +++ b/share/man/man4/Makefile @@ -1012,6 +1012,7 @@ _dtrace_provs= dtrace_audit.4 \ dtrace_ip.4 \ dtrace_kinst.4 \ dtrace_lockstat.4 \ + dtrace_pid.4 \ dtrace_proc.4 \ dtrace_profile.4 \ dtrace_sched.4 \ diff --git a/share/man/man4/dtrace_pid.4 b/share/man/man4/dtrace_pid.4 new file mode 100644 index 000000000000..1acbdd097ba8 --- /dev/null +++ b/share/man/man4/dtrace_pid.4 @@ -0,0 +1,99 @@ +.\" +.\" Copyright (c) 2025 Mateusz Piotrowski <0mp@FreeBSD.org> +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.Dd November 6, 2025 +.Dt DTRACE_PID 4 +.Os +.Sh NAME +.Nm dtrace_pid +.Nd a DTrace provider for dynamic userspace tracing based on function boundary instrumentation +.Sh SYNOPSIS +.Nm pid Ns Ar PID Ns Cm \&: Ns Ar module Ns Cm \&: Ns Ar function Ns Cm \&:entry +.\" XXX: For some reason Op renders here in bold, so use literal square +.\" brackets instead. +.Nm pid Ns Ar PID Ns Cm \&: Ns Ar module Ns Cm \&: Ns Ar function Ns Cm \&: Ns No \&[ Ns Ar offset Ns No \&] +.Nm pid Ns Ar PID Ns Cm \&: Ns Ar module Ns Cm \&: Ns Ar function Ns Cm \&:return +.Sh DESCRIPTION +The +.Nm pid +provider implements userspace dynamic tracing +by instrumenting the entry and return of functions in userspace programs. +Refer to +.Xr dtrace_fbt 4 +for more details about function boundary instrumentation. +.Pp +The +.Nm pid +provider provides the following probes: +.Bl -inset +.It Nm pid Ns Ar PID Ns Cm \&: Ns Ar module Ns Cm \&: Ns Ar function Ns Cm \&:entry +instruments the entry of the +.Ar function . +.It Nm pid Ns Ar PID Ns Cm \&: Ns Ar module Ns Cm \&: Ns Ar function Ns Cm \&: Ns Op Ar offset +instruments the instruction within the +.Ar function +located at +.Ar offset +bytes (expressed as a hexadecimal integer). +.It Nm pid Ns Ar PID Ns Cm \&: Ns Ar module Ns Cm \&: Ns Ar function Ns Cm \&:return +instruments the return from the +.Ar function . +.El +.Ss Probe Arguments +The arguments of the entry probe +.Pq Nm pid Ns Ar PID Ns Cm \&: Ns Ar module Ns Cm \&: Ns Ar function Ns Cm \&:entry +are the arguments of the traced function call. +.Bl -column -offset indent "Entry Probe Argument" "Definition" +.It Sy Entry Probe Argument Ta Sy Definition +.It Ft uint64_t Fa arg0 Ta Function's first argument +.It Ft uint64_t Fa arg1 Ta Function's second argument +.It Ft uint64_t Fa arg2 Ta Function's third argument +.It Fa ... Ta ... +.El +.Pp +The offset probes +.Pq Nm pid Ns Ar PID Ns Cm \&: Ns Ar module Ns Cm \&: Ns Ar function Ns Cm \&: Ns Op Ar offset +do not define any arguments. +Use +.Va uregs[] +to inspect the registers. +.Pp +The arguments of the return probe +.Pq Nm pid Ns Ar PID Ns Cm \&: Ns Ar module Ns Cm \&: Ns Ar function Ns Cm \&:return +are the program counter and the function's return value. +.Bl -column -offset indent "Return Probe Argument" "Definition" +.It Sy Return Probe Argument Ta Sy Definition +.It Ft uint64_t Fa arg0 Ta Program counter +.It Ft uint64_t Fa arg1 Ta Function's return value +.El +.Pp +Note that all probe arguments within the +.Nm pid +provider are of type +.Ft uint64_t . +.Sh SEE ALSO +.Xr dtrace 1 , +.Xr dtrace_fbt 4 , +.Xr dtrace_kinst 4 , +.Xr elf 5 , +.Xr d 7 , +.Xr tracing 7 +.Rs +.%A Brendan Gregg +.%A Jim Mauro +.%B DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD +.%I Prentice Hall +.%D 2011 +.%U https://www.brendangregg.com/dtracebook/ +.Re +.Rs +.%B The illumos Dynamic Tracing Guide +.%O Chapter pid Provider +.%D 2008 +.%U https://illumos.org/books/dtrace/chp-pid.html +.Re +.Sh AUTHORS +This manual page was written by +.An Mateusz Piotrowski Aq Mt 0mp@FreeBSD.org . diff --git a/share/man/man4/mpr.4 b/share/man/man4/mpr.4 index 8de46e4f9272..a88b99ae007b 100644 --- a/share/man/man4/mpr.4 +++ b/share/man/man4/mpr.4 @@ -103,8 +103,6 @@ Broadcom Ltd./Avago Tech (LSI) SAS 3808 (8 Port SAS/PCIe) .It Broadcom Ltd./Avago Tech (LSI) SAS 3816 (16 Port SAS/PCIe) .It -Broadcom Ltd./Avago Tech (LSI) SAS 3908 (8 Port SAS/PCIe) -.It Broadcom Ltd./Avago Tech (LSI) SAS 3916 (16 Port SAS/PCIe) .El .Sh CONFIGURATION diff --git a/share/man/man4/safe.4 b/share/man/man4/safe.4 index 89375d058bf7..914b2dd0dd1c 100644 --- a/share/man/man4/safe.4 +++ b/share/man/man4/safe.4 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd November 22, 2024 +.Dd October 31, 2025 .Dt SAFE 4 .Os .Sh NAME @@ -57,6 +57,11 @@ In .Cd hw.safe.rngbufsize .Cd hw.safe.rngmaxalarm .Ed +.Sh DEPRECATION NOTICE +The +.Nm +driver is deprecated and is scheduled for removal in +.Fx 16.0 . .Sh DESCRIPTION The .Nm @@ -128,5 +133,14 @@ packet processing. .Xr random 4 , .Xr crypto 7 , .Xr crypto 9 +.Sh HISTORY +The +.Nm +driver first appeared in +.Fx 5.2 . +It is deprecated in +.Fx 15.0 +and removed in +.Fx 16.0 . .Sh BUGS Public key support is not implemented. diff --git a/share/man/man7/ports.7 b/share/man/man7/ports.7 index 75070ce852fe..24c1eb4b7f51 100644 --- a/share/man/man7/ports.7 +++ b/share/man/man7/ports.7 @@ -25,7 +25,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd September 10, 2025 +.Dd November 6, 2025 .Dt PORTS 7 .Os .Sh NAME @@ -597,6 +597,10 @@ data. The default ports directory. .It Pa /usr/ports/Mk/bsd.port.mk The big Kahuna. +.It Pa /var/db/ports +The directory where the results of configuring +.Va OPTIONS +are stored. .El .Sh EXAMPLES .Bl -tag -width 0n diff --git a/share/misc/bsd-family-tree b/share/misc/bsd-family-tree index 82e9ac45c495..01dfd4cc0cbf 100644 --- a/share/misc/bsd-family-tree +++ b/share/misc/bsd-family-tree @@ -83,410 +83,410 @@ FreeBSD 2.0.5 \ | BSD/OS 2.0.1 | | | | OpenBSD 2.3 | | | | | | BSD/OS 3.0 | FreeBSD 2.1 | | | | - | | | | *--NetBSD 1.1 -. BSD/OS 2.1 - | FreeBSD 2.1.5 | | | \ | - | | | | *--NetBSD 1.2 \ BSD/OS 3.0 - | FreeBSD 2.1.6 | | | \ OpenBSD 2.0 | - | | | | | \ | | - | FreeBSD 2.1.6.1 | | | \ | | - | | | | | \ | | - | FreeBSD 2.1.7 | | | | | | - | | | | | NetBSD 1.2.1 | | - | FreeBSD 2.1.7.1 | | | | | - | | | | | | - | | | | | | - *-FreeBSD 2.2 | | | | | - | \ | | | | | - | FreeBSD 2.2.1 | | | | | - | | | | | | | - | FreeBSD 2.2.2 | | | OpenBSD 2.1 | - | | | | | | | - | FreeBSD 2.2.5 | | | | | - | | | | | OpenBSD 2.2 | - | | | | *--NetBSD 1.3 | | - | FreeBSD 2.2.6 | | | | | | - | | | | | NetBSD 1.3.1 | BSD/OS 3.1 - | | | | | | OpenBSD 2.3 | - | | | | | NetBSD 1.3.2 | | - | FreeBSD 2.2.7 | | | | | | - | | | | | | | BSD/OS 4.0 - | FreeBSD 2.2.8 | | | | | | - | | | | | | | | - | v | | | | OpenBSD 2.4 | - | FreeBSD 2.2.9 | | | | | | - | | | | | | | -FreeBSD 3.0 <--------* | | v | | - | | | NetBSD 1.3.3 | | - *---FreeBSD 3.1 | | | | - | | | | | BSD/OS 4.0.1 - | FreeBSD 3.2----* | .--*--NetBSD 1.4 OpenBSD 2.5 | - | | | | | | | | | - | | | | | | | | | - | | | | | | | | | - | FreeBSD 3.3 | | | | NetBSD 1.4.1 | | - | | | | | | | OpenBSD 2.6 | - | FreeBSD 3.4 | | | | | | | - | | | | | | | | BSD/OS 4.1 -FreeBSD 4.0 | | | | | NetBSD 1.4.2 | | - | | | | | | | | | - | | | | | | | | | - | FreeBSD 3.5 | | | | | OpenBSD 2.7 | - | | | | | | | | | - | FreeBSD 3.5.1 | | | | | | | - | | | | | | | | - *---FreeBSD 4.1 | | | | | | | - | | | | | | | | | - | FreeBSD 4.1.1 | | / | | | | - | | | | / | | | | - | FreeBSD 4.2 Darwin/ | NetBSD 1.4.3 | | - | | Mac OS X | OpenBSD 2.8 BSD/OS 4.2 - | | | | | | - | | | | | | - | | 10.0 *--NetBSD 1.5 | | - | FreeBSD 4.3 | | | | | - | | | | | OpenBSD 2.9 | - | | | | NetBSD 1.5.1 | | - | | | | | | | - | FreeBSD 4.4-. | | NetBSD 1.5.2 | | - | | | Mac OS X | | | | - | | | 10.1 | | OpenBSD 3.0 | - | FreeBSD 4.5 | | | | | | - | | \ | | | | BSD/OS 4.3 - | FreeBSD 4.6 \ | | | OpenBSD 3.1 | - | | \ | | NetBSD 1.5.3 | | - | FreeBSD 4.6.2 Mac OS X | | | - | | 10.2 | | | - | FreeBSD 4.7 | | | | - | | | *--NetBSD 1.6 OpenBSD 3.2 | - | FreeBSD 4.8 | | | | | - | | | | NetBSD 1.6.1 | | - | |--------. | | | OpenBSD 3.3 BSD/OS 5.0 - | | \ | | | | | - | FreeBSD 4.9 | | | | OpenBSD 3.4 BSD/OS 5.1 ISE - | | | | | | | - | | | | | NetBSD 1.6.2 | - | | | | | | | - | | | | | | OpenBSD 3.5 - | | | | | v | - | FreeBSD 4.10 | | | | - | | | | | | - | FreeBSD 4.11 | | | | - | | | | | - | `-|------|-----------------|---------------------. - | | | | \ -FreeBSD 5.0 | | | | - | | | | | -FreeBSD 5.1 | | | DragonFly 1.0 - | \ | | | | - | ----- Mac OS X | | | - | 10.3 | | | -FreeBSD 5.2 | | | | - | | | | | | - | FreeBSD 5.2.1 | | | | - | | | | | - *-------FreeBSD 5.3 | | | | - | | | | OpenBSD 3.6 | - | | | *--NetBSD 2.0 | | - | | | | | | | DragonFly 1.2.0 - | | Mac OS X | | NetBSD 2.0.2 | | - | | 10.4 | | | | | - | FreeBSD 5.4 | | | | | | - | | | | | | OpenBSD 3.7 | - | | | | | NetBSD 2.0.3 | | - | | | | | | | | - *--FreeBSD | | | | v OpenBSD 3.8 | - | 6.0 | | | | | | - | | | | | \ | | - | | | | | NetBSD 2.1 | | - | | | | | | | - | | | | *--NetBSD 3.0 | | - | | | | | | | | DragonFly 1.4.0 - | | | | | | | OpenBSD 3.9 | - | FreeBSD | | | | | | | - | 6.1 | | | | | | | - | | FreeBSD 5.5 | | | | | | - | | | | | NetBSD 3.0.1 | DragonFly 1.6.0 - | | | | | | | | - | | | | | | OpenBSD 4.0 | - | | | | | NetBSD 3.0.2 | | - | | | | NetBSD 3.1 | | - | FreeBSD 6.2 | | | | - | | | | | DragonFly 1.8.0 - | | | | OpenBSD 4.1 | - | | | | | DragonFly 1.10.0 - | | Mac OS X | | | - | | 10.5 | | | - | | | | OpenBSD 4.2 | - | | | *--NetBSD 4.0 | | - | FreeBSD 6.3 | | | | | - | \ | | | | | - *--FreeBSD | | | | | DragonFly 1.12.0 - | 7.0 | | | | | | - | | | | | | OpenBSD 4.3 | - | | | | | NetBSD | DragonFly 2.0.0 - | | FreeBSD | | 4.0.1 OpenBSD 4.4 | - | | 6.4 | | | | - | | | | | | - | FreeBSD 7.1 | | | | - | | | | | DragonFly 2.2.0 - | FreeBSD 7.2 | *--NetBSD OpenBSD 4.5 | - | \ | | 5.0 | | - | \ | | / | \ | | - | | Mac OS X | | | \ | | - | | 10.6 | | | \ | | - | | | | | | NetBSD | DragonFly 2.4.0 - | | | | | | 5.0.1 OpenBSD 4.6 | - | | | | | | | | | - *--FreeBSD | | | | | | | | - | 8.0 | | | | | | | | - | | FreeBSD | | | | NetBSD | | - | | 7.3 | | | | 5.0.2 | DragonFly 2.6.0 - | | | | | | | OpenBSD 4.7 | - | FreeBSD | | | | | | | - | 8.1 | | | | | | | - | | | | | | | | DragonFly 2.8.2 - | | | | | | | OpenBSD 4.8 | - | | | | | | *--NetBSD | | - | FreeBSD FreeBSD | | | 5.1 | | - | 8.2 7.4 | | | | | DragonFly 2.10.1 - | | | | | | OpenBSD 4.9 | - | `-----. Mac OS X | | | | | - | \ 10.7 | | | | | - | | | | | | OpenBSD 5.0 | - *--FreeBSD | | | | | | | - | 9.0 | | | | NetBSD | DragonFly 3.0.1 - | | FreeBSD | | | 5.1.2 | | - | | 8.3 | | | | | | - | | | | | | NetBSD | | - | | | | | | 5.1.3 | | - | | | | | | | | | - | | | | | | NetBSD | | - | | | | | | 5.1.4 | | - | | | | | | OpenBSD 5.1 | - | | | Mac OS X | `--------. | | - | | | 10.8 | | | | - | | | | *--NetBSD | | | - | | | | | 6.0 | | | - | | | | | | | | OpenBSD 5.2 DragonFly 3.2.1 - | FreeBSD | | | | | NetBSD | | - | 9.1 | | | | | 5.2 | | - | | | | | | | | | | - | | | | | | | NetBSD | | - | | | | | | | 5.2.1 | | - | | | | | | | | | | - | | | | | | | NetBSD | | - | | | | | | | 5.2.2 | | - | | | | | | | | | - | | | | | | \ | | - | | | | | | NetBSD | | - | | | | | | 6.0.1 | | - | | | | | | | OpenBSD 5.3 DragonFly 3.4.1 - | | | | | | NetBSD | | - | | | | | | 6.0.2 | | - | | | | | | | | | - | | | | | | NetBSD | | - | | | | | | 6.0.3 | | - | | | | | | | | | - | | | | | | NetBSD | | - | | | | | | 6.0.4 | | - | | | | | | | | | - | | | | | | NetBSD | | - | | | | | | 6.0.5 | | - | | | | | | | | | - | | | | | | NetBSD | | - | | | | | | 6.0.6 | | - | | | | | | | | - | | | | | *--NetBSD | | - | | | | | 6.1 | | - | | FreeBSD | | | | | - | | 8.4 | | NetBSD | | - | | | | | 6.1.1 | | - | | | | | | | - | FreeBSD | | NetBSD | | - | 9.2 | | 6.1.2 | | - | | Mac OS X | | | | - | | 10.9 | | OpenBSD 5.4 | - | `-----. | | | | DragonFly 3.6.0 - | \ | | | | | - *--FreeBSD | | | NetBSD | | - | 10.0 | | | 6.1.3 | | - | | | | | | | | - | | | | | | | DragonFly 3.6.1 - | | | | | | | | - | | | | | | | | - | | | | | | | DragonFly 3.6.2 - | | | | | NetBSD | | - | | | | | 6.1.4 | | - | | | | | | | | - | | | | | | OpenBSD 5.5 | - | | | | | | | | - | | | | | | | DragonFly 3.8.0 - | | | | | | | | - | | | | | | | | - | | | | | | | DragonFly 3.8.1 - | | | | | | | | - | | | | | | | | - | | | | | | | DragonFly 3.6.3 - | | | | | | | | - | | FreeBSD | | | | | - | | 9.3 | | | | | - | | | | NetBSD | DragonFly 3.8.2 - | | | | 6.1.5 | | - | | Mac OS X | | | - | | 10.10 | | | - | | | | OpenBSD 5.6 | - | FreeBSD | | | | - | 10.1 | | | DragonFly 4.0.1 - | | | | | | - | | | | | DragonFly 4.0.2 - | | | | | | - | | | | | DragonFly 4.0.3 - | | | | | | - | | | | | DragonFly 4.0.4 - | | | | | | - | | | | | DragonFly 4.0.5 - | | | | | | - | | | | OpenBSD 5.7 | - | | | | | DragonFly 4.2.0 - | FreeBSD | | | | - | 10.2 | | | | - | | macOS *--NetBSD 7.0 | | - | | 10.11 | | | OpenBSD 5.8 | - | | | | | `--. | DragonFly 4.4.1 - | FreeBSD | | | | OpenBSD 5.9 | - | 10.3 | | | | | | - | | | | | NetBSD | | - | | | | | 7.0.1 | | - | `------. | | | | | DragonFly 4.6.0 - | | | | | | | | - | | | | | | | | - *--FreeBSD | macOS | | | OpenBSD 6.0 | - | 11.0 | 10.12 | | NetBSD | | - | | | | | | 7.0.2 | | - | | | | | | | | - | | | | | *--NetBSD | | - | | | | | | 7.1 | | - | | | | | | | | | - | | | | | | | | | - | | | macOS | | | | DragonFly 4.8.0 - | | | 10.13 | | | OpenBSD 6.1 | - | FreeBSD | | | | | | DragonFly 5.0.0 - | 11.1 FreeBSD | | | | | | - | | 10.4 | | | | OpenBSD 6.2 DragonFly 5.0.1 - | | | | | | | | - | `------. | | | NetBSD | DragonFly 5.0.2 - | | | | | 7.1.1 | | - | | | | | | | | - | | | | | NetBSD | | - | | | | | 7.1.2 `--. | - | | | | | | | - | | | | `-----. OpenBSD 6.3 | - | | | *--NetBSD | | DragonFly 5.2.0 - | | | | 8.0 | | | - | | | | | | | DragonFly 5.2.1 - | | | | | | | | - | | | | | | | DragonFly 5.2.2 - | FreeBSD | | | *--NetBSD | | - | 11.2 | | | 7.2 | | - | | macOS | | | | - | | 10.14 | | OpenBSD 6.4 | - | | | | | | | - | | | | | | DragonFly 5.4.0 - *--FreeBSD | | | | | | - | 12.0 | | | | | DragonFly 5.4.1 - | | | | | | OpenBSD 6.5 | - | | | | | | | | - | | | | | NetBSD | | - | | | | | 8.1 | DragonFly 5.6 - | | | | | | | | - | | | | | | | DragonFly 5.6.1 - | | FreeBSD macOS | | | | - | | 11.3 10.15 | | | | - | FreeBSD | | | | OpenBSD 6.6 | - | 12.1 | macOS | `-------. | | - | | | 10.15.1 | | | DragonFly 5.6.2 - | | | | *--NetBSD | | | - | | | | | 9.0 | | | - | | | | | | | | | - | | | | | | | | DragonFly 5.8 - | | | | | | | | | - | | | | | | | | DragonFly 5.6.3 - | | | | | | NetBSD | | - | | | | | | 8.2 | | - | | | | | | | | DragonFly 5.8.1 - | | | | | | | OpenBSD 6.7 | - | | FreeBSD | | | | | | - | | 11.4 | | | | | | - | | | | | | | DragonFly 5.8.2 - | | | | | | | DragonFly 5.8.3 - | | | | NetBSD | OpenBSD 6.8 | - | FreeBSD macOS | 9.1 | | | - | 12.2 11 | | | | | - | | | | | | | | - | `------. | | | | | | - | | | | | | | | - *--FreeBSD | | | | | | | - | 13.0 | | | NetBSD | OpenBSD 6.9 DragonFly 6.0.0 - | | | | | 9.2 | | | - | | | | | | | | DragonFly 6.0.1 - | | | | | | | | | - | | FreeBSD macOS | | | OpenBSD 7.0 | - | | 12.3 12 | | | | | - | | | | | | | | DragonFly 6.2.1 - | | | | | | | OpenBSD 7.1 | - | FreeBSD | | | | | | | - | 13.1 | | | | | | | - | | | | | | | | DragonFly 6.2.2 - | | | | | NetBSD | | | - | | | macOS | 9.3 | OpenBSD 7.2 | - | | | 13 | | | | | - | | FreeBSD | | | | | | - | | 12.4 | | | | | | - | | | | | | | DragonFly 6.4.0 - | | | | | | OpenBSD 7.3 | - | FreeBSD | | | | | | - | 13.2 | | | | | | - | | | | | | | | - | `------. | | | | | | - | | macOS | | | | | - | | 14 | | | | | - | | | | | | OpenBSD 7.4 | - *--FreeBSD | | | | | | | - | 14.0 | | | | | | | - | | | | | | | | | - | | FreeBSD | | NetBSD | | | - | | 13.3 | | 9.4 | | | - | | | | | | | | - | | | | *--NetBSD | | | - | | | | | 10.0 | | | - | | | | | | | | | - | | | | | | | OpenBSD 7.5 | - | | | | | | NetBSD | | - | | | | | | 8.3 | | - | FreeBSD | | | | | | - | 14.1 | | | | | | - | | | macOS | | | | - | | | 15 | | | | - | | FreeBSD | | | | | - | | 13.4 | | | OpenBSD 7.6 | - | FreeBSD | | | | | | - | 14.2 | | | | | | - | | | | | NetBSD | | - | | | | | 10.1 | | - | | FreeBSD | | | | - | | 13.5 | | | | - | | | | OpenBSD 7.7 | - | | | | | DragonFly 6.4.1 - | | | | | DragonFly 6.4.2 - | FreeBSD | | | | - | 14.3 | | | | - | macOS | | | - | 26 | | | - | | | OpenBSD 7.8 | - | | | | | -FreeBSD 16 -current | NetBSD -current OpenBSD -current DragonFly -current - | | | | | - v v v v v + | | | | *--NetBSD 1.1 ---. BSD/OS 2.1 + | FreeBSD 2.1.5 | | | \ | + | | | | *--NetBSD 1.2 \ BSD/OS 3.0 + | FreeBSD 2.1.6 | | | \ OpenBSD 2.0 | + | | | | | \ | | + | FreeBSD 2.1.6.1 | | | \ | | + | | | | | \ | | + | FreeBSD 2.1.7 | | | | | | + | | | | | NetBSD 1.2.1 | | + | FreeBSD 2.1.7.1 | | | | | + | | | | | | + | | | | | | + *-FreeBSD 2.2 | | | | | + | \ | | | | | + | FreeBSD 2.2.1 | | | | | + | | | | | | | + | FreeBSD 2.2.2 | | | OpenBSD 2.1 | + | | | | | | | + | FreeBSD 2.2.5 | | | | | + | | | | | OpenBSD 2.2 | + | | | | *--NetBSD 1.3 | | + | FreeBSD 2.2.6 | | | | | | + | | | | | NetBSD 1.3.1 | BSD/OS 3.1 + | | | | | | OpenBSD 2.3 | + | | | | | NetBSD 1.3.2 | | + | FreeBSD 2.2.7 | | | | | | + | | | | | | | BSD/OS 4.0 + | FreeBSD 2.2.8 | | | | | | + | | | | | | | | + | v | | | | OpenBSD 2.4 | + | FreeBSD 2.2.9 | | | | | | + | | | | | | | +FreeBSD 3.0 <--------* | | v | | + | | | NetBSD 1.3.3 | | + *---FreeBSD 3.1 | | | | + | | | | | BSD/OS 4.0.1 + | FreeBSD 3.2----* | .--*--NetBSD 1.4 OpenBSD 2.5 | + | | | | | | | | | + | | | | | | | | | + | | | | | | | | | + | FreeBSD 3.3 | | | | NetBSD 1.4.1 | | + | | | | | | | OpenBSD 2.6 | + | FreeBSD 3.4 | | | | | | | + | | | | | | | | BSD/OS 4.1 +FreeBSD 4.0 | | | | | NetBSD 1.4.2 | | + | | | | | | | | | + | | | | | | | | | + | FreeBSD 3.5 | | | | | OpenBSD 2.7 | + | | | | | | | | | + | FreeBSD 3.5.1 | | | | | | | + | | | | | | | | + *---FreeBSD 4.1 | | | | | | | + | | | | | | | | | + | FreeBSD 4.1.1 | | / | | | | + | | | | / | | | | + | FreeBSD 4.2 Darwin/ | NetBSD 1.4.3 | | + | | Mac OS X | OpenBSD 2.8 BSD/OS 4.2 + | | | | | | + | | | | | | + | | 10.0 *--NetBSD 1.5 | | + | FreeBSD 4.3 | | | | | + | | | | | OpenBSD 2.9 | + | | | | NetBSD 1.5.1 | | + | | | | | | | + | FreeBSD 4.4-. | | NetBSD 1.5.2 | | + | | | Mac OS X | | | | + | | | 10.1 | | OpenBSD 3.0 | + | FreeBSD 4.5 | | | | | | + | | \ | | | | BSD/OS 4.3 + | FreeBSD 4.6 \ | | | OpenBSD 3.1 | + | | \ | | NetBSD 1.5.3 | | + | FreeBSD 4.6.2 Mac OS X | | | + | | 10.2 | | | + | FreeBSD 4.7 | | | | + | | | *--NetBSD 1.6 OpenBSD 3.2 | + | FreeBSD 4.8 | | | | | + | | | | NetBSD 1.6.1 | | + | |--------. | | | OpenBSD 3.3 BSD/OS 5.0 + | | \ | | | | | + | FreeBSD 4.9 | | | | OpenBSD 3.4 BSD/OS 5.1 ISE + | | | | | | | + | | | | | NetBSD 1.6.2 | + | | | | | | | + | | | | | | OpenBSD 3.5 + | | | | | v | + | FreeBSD 4.10 | | | | + | | | | | | + | FreeBSD 4.11 | | | | + | | | | | + | `-|------|-------------------|-------------------. + | | | | \ +FreeBSD 5.0 | | | | + | | | | | +FreeBSD 5.1 | | | DragonFly 1.0 + | \ | | | | + | ----- Mac OS X | | | + | 10.3 | | | +FreeBSD 5.2 | | | | + | | | | | | + | FreeBSD 5.2.1 | | | | + | | | | | + *-------FreeBSD 5.3 | | | | + | | | | OpenBSD 3.6 | + | | | *--NetBSD 2.0 | | + | | | | | | | DragonFly 1.2.0 + | | Mac OS X | | NetBSD 2.0.2 | | + | | 10.4 | | | | | + | FreeBSD 5.4 | | | | | | + | | | | | | OpenBSD 3.7 | + | | | | | NetBSD 2.0.3 | | + | | | | | | | | + *--FreeBSD | | | | v OpenBSD 3.8 | + | 6.0 | | | | | | + | | | | | \ | | + | | | | | NetBSD 2.1 | | + | | | | | | | + | | | | *--NetBSD 3.0 | | + | | | | | | | | DragonFly 1.4.0 + | | | | | | | OpenBSD 3.9 | + | FreeBSD | | | | | | | + | 6.1 | | | | | | | + | | FreeBSD 5.5 | | | | | | + | | | | | NetBSD 3.0.1 | DragonFly 1.6.0 + | | | | | | | | + | | | | | | OpenBSD 4.0 | + | | | | | NetBSD 3.0.2 | | + | | | | NetBSD 3.1 | | + | FreeBSD 6.2 | | | | + | | | | | DragonFly 1.8.0 + | | | | OpenBSD 4.1 | + | | | | | DragonFly 1.10.0 + | | Mac OS X | | | + | | 10.5 | | | + | | | | OpenBSD 4.2 | + | | | *--NetBSD 4.0 | | + | FreeBSD 6.3 | | | | | + | \ | | | | | + *--FreeBSD | | | | | DragonFly 1.12.0 + | 7.0 | | | | | | + | | | | | | OpenBSD 4.3 | + | | | | | NetBSD | DragonFly 2.0.0 + | | FreeBSD | | 4.0.1 OpenBSD 4.4 | + | | 6.4 | | | | + | | | | | | + | FreeBSD 7.1 | | | | + | | | | | DragonFly 2.2.0 + | FreeBSD 7.2 | *--NetBSD OpenBSD 4.5 | + | \ | | 5.0 | | + | \ | | / | \ | | + | | Mac OS X | | | \ | | + | | 10.6 | | | \ | | + | | | | | | NetBSD | DragonFly 2.4.0 + | | | | | | 5.0.1 OpenBSD 4.6 | + | | | | | | | | | + *--FreeBSD | | | | | | | | + | 8.0 | | | | | | | | + | | FreeBSD | | | | NetBSD | | + | | 7.3 | | | | 5.0.2 | DragonFly 2.6.0 + | | | | | | | OpenBSD 4.7 | + | FreeBSD | | | | | | | + | 8.1 | | | | | | | + | | | | | | | | DragonFly 2.8.2 + | | | | | | | OpenBSD 4.8 | + | | | | | | *--NetBSD | | + | FreeBSD FreeBSD | | | 5.1 | | + | 8.2 7.4 | | | | | DragonFly 2.10.1 + | | | | | | OpenBSD 4.9 | + | `-----. Mac OS X | | | | | + | \ 10.7 | | | | | + | | | | | | OpenBSD 5.0 | + *--FreeBSD | | | | | | | + | 9.0 | | | | NetBSD | DragonFly 3.0.1 + | | FreeBSD | | | 5.1.2 | | + | | 8.3 | | | | | | + | | | | | | NetBSD | | + | | | | | | 5.1.3 | | + | | | | | | | | | + | | | | | | NetBSD | | + | | | | | | 5.1.4 | | + | | | | | | OpenBSD 5.1 | + | | | Mac OS X | `--------. | | + | | | 10.8 | | | | + | | | | *--NetBSD | | | + | | | | | 6.0 | | | + | | | | | | | | OpenBSD 5.2 DragonFly 3.2.1 + | FreeBSD | | | | | NetBSD | | + | 9.1 | | | | | 5.2 | | + | | | | | | | | | | + | | | | | | | NetBSD | | + | | | | | | | 5.2.1 | | + | | | | | | | | | | + | | | | | | | NetBSD | | + | | | | | | | 5.2.2 | | + | | | | | | | | | + | | | | | | \ | | + | | | | | | NetBSD | | + | | | | | | 6.0.1 | | + | | | | | | | OpenBSD 5.3 DragonFly 3.4.1 + | | | | | | NetBSD | | + | | | | | | 6.0.2 | | + | | | | | | | | | + | | | | | | NetBSD | | + | | | | | | 6.0.3 | | + | | | | | | | | | + | | | | | | NetBSD | | + | | | | | | 6.0.4 | | + | | | | | | | | | + | | | | | | NetBSD | | + | | | | | | 6.0.5 | | + | | | | | | | | | + | | | | | | NetBSD | | + | | | | | | 6.0.6 | | + | | | | | | | | + | | | | | *--NetBSD | | + | | | | | 6.1 | | + | | FreeBSD | | | | | + | | 8.4 | | NetBSD | | + | | | | | 6.1.1 | | + | | | | | | | + | FreeBSD | | NetBSD | | + | 9.2 | | 6.1.2 | | + | | Mac OS X | | | | + | | 10.9 | | OpenBSD 5.4 | + | `-----. | | | | DragonFly 3.6.0 + | \ | | | | | + *--FreeBSD | | | NetBSD | | + | 10.0 | | | 6.1.3 | | + | | | | | | | | + | | | | | | | DragonFly 3.6.1 + | | | | | | | | + | | | | | | | | + | | | | | | | DragonFly 3.6.2 + | | | | | NetBSD | | + | | | | | 6.1.4 | | + | | | | | | | | + | | | | | | OpenBSD 5.5 | + | | | | | | | | + | | | | | | | DragonFly 3.8.0 + | | | | | | | | + | | | | | | | | + | | | | | | | DragonFly 3.8.1 + | | | | | | | | + | | | | | | | | + | | | | | | | DragonFly 3.6.3 + | | | | | | | | + | | FreeBSD | | | | | + | | 9.3 | | | | | + | | | | NetBSD | DragonFly 3.8.2 + | | | | 6.1.5 | | + | | Mac OS X | | | + | | 10.10 | | | + | | | | OpenBSD 5.6 | + | FreeBSD | | | | + | 10.1 | | | DragonFly 4.0.1 + | | | | | | + | | | | | DragonFly 4.0.2 + | | | | | | + | | | | | DragonFly 4.0.3 + | | | | | | + | | | | | DragonFly 4.0.4 + | | | | | | + | | | | | DragonFly 4.0.5 + | | | | | | + | | | | OpenBSD 5.7 | + | | | | | DragonFly 4.2.0 + | FreeBSD | | | | + | 10.2 | | | | + | | macOS *--NetBSD 7.0 | | + | | 10.11 | | | OpenBSD 5.8 | + | | | | | `--. | DragonFly 4.4.1 + | FreeBSD | | | | OpenBSD 5.9 | + | 10.3 | | | | | | + | | | | | NetBSD | | + | | | | | 7.0.1 | | + | `------. | | | | | DragonFly 4.6.0 + | | | | | | | | + | | | | | | | | + *--FreeBSD | macOS | | | OpenBSD 6.0 | + | 11.0 | 10.12 | | NetBSD | | + | | | | | | 7.0.2 | | + | | | | | | | | + | | | | | *--NetBSD | | + | | | | | | 7.1 | | + | | | | | | | | | + | | | | | | | | | + | | | macOS | | | | DragonFly 4.8.0 + | | | 10.13 | | | OpenBSD 6.1 | + | FreeBSD | | | | | | DragonFly 5.0.0 + | 11.1 FreeBSD | | | | | | + | | 10.4 | | | | OpenBSD 6.2 DragonFly 5.0.1 + | | | | | | | | + | `------. | | | NetBSD | DragonFly 5.0.2 + | | | | | 7.1.1 | | + | | | | | | | | + | | | | | NetBSD | | + | | | | | 7.1.2 `--. | + | | | | | | | + | | | | `-----. OpenBSD 6.3 | + | | | *--NetBSD | | DragonFly 5.2.0 + | | | | 8.0 | | | + | | | | | | | DragonFly 5.2.1 + | | | | | | | | + | | | | | | | DragonFly 5.2.2 + | FreeBSD | | | *--NetBSD | | + | 11.2 | | | 7.2 | | + | | macOS | | | | + | | 10.14 | | OpenBSD 6.4 | + | | | | | | | + | | | | | | DragonFly 5.4.0 + *--FreeBSD | | | | | | + | 12.0 | | | | | DragonFly 5.4.1 + | | | | | | OpenBSD 6.5 | + | | | | | | | | + | | | | | NetBSD | | + | | | | | 8.1 | DragonFly 5.6 + | | | | | | | | + | | | | | | | DragonFly 5.6.1 + | | FreeBSD macOS | | | | + | | 11.3 10.15 | | | | + | FreeBSD | | | | OpenBSD 6.6 | + | 12.1 | macOS | `-------. | | + | | | 10.15.1 | | | DragonFly 5.6.2 + | | | | *--NetBSD | | | + | | | | | 9.0 | | | + | | | | | | | | | + | | | | | | | | DragonFly 5.8 + | | | | | | | | | + | | | | | | | | DragonFly 5.6.3 + | | | | | | NetBSD | | + | | | | | | 8.2 | | + | | | | | | | | DragonFly 5.8.1 + | | | | | | | OpenBSD 6.7 | + | | FreeBSD | | | | | | + | | 11.4 | | | | | | + | | | | | | | DragonFly 5.8.2 + | | | | | | | DragonFly 5.8.3 + | | | | NetBSD | OpenBSD 6.8 | + | FreeBSD macOS | 9.1 | | | + | 12.2 11 | | | | | + | | | | | | | | + | `------. | | | | | | + | | | | | | | | + *--FreeBSD | | | | | | | + | 13.0 | | | NetBSD | OpenBSD 6.9 DragonFly 6.0.0 + | | | | | 9.2 | | | + | | | | | | | | DragonFly 6.0.1 + | | | | | | | | | + | | FreeBSD macOS | | | OpenBSD 7.0 | + | | 12.3 12 | | | | | + | | | | | | | | DragonFly 6.2.1 + | | | | | | | OpenBSD 7.1 | + | FreeBSD | | | | | | | + | 13.1 | | | | | | | + | | | | | | | | DragonFly 6.2.2 + | | | | | NetBSD | | | + | | | macOS | 9.3 | OpenBSD 7.2 | + | | | 13 | | | | | + | | FreeBSD | | | | | | + | | 12.4 | | | | | | + | | | | | | | DragonFly 6.4.0 + | | | | | | OpenBSD 7.3 | + | FreeBSD | | | | | | + | 13.2 | | | | | | + | | | | | | | | + | `------. | | | | | | + | | macOS | | | | | + | | 14 | | | | | + | | | | | | OpenBSD 7.4 | + *--FreeBSD | | | | | | | + | 14.0 | | | | | | | + | | | | | | | | | + | | FreeBSD | | NetBSD | | | + | | 13.3 | | 9.4 | | | + | | | | | | | | + | | | | *--NetBSD | | | + | | | | | 10.0 | | | + | | | | | | | | | + | | | | | | | OpenBSD 7.5 | + | | | | | | NetBSD | | + | | | | | | 8.3 | | + | FreeBSD | | | | | | + | 14.1 | | | | | | + | | | macOS | | | | + | | | 15 | | | | + | | FreeBSD | | | | | + | | 13.4 | | | OpenBSD 7.6 | + | FreeBSD | | | | | | + | 14.2 | | | | | | + | | | | | NetBSD | | + | | | | | 10.1 | | + | | FreeBSD | | | | + | | 13.5 | | | | + | | | | OpenBSD 7.7 | + | | | | | DragonFly 6.4.1 + | | | | | DragonFly 6.4.2 + | FreeBSD | | | | + | 14.3 | | | | + | macOS | | | + | 26 | | | + | | | OpenBSD 7.8 | + | | | | | +FreeBSD 16 -current | NetBSD -current OpenBSD -current DragonFly -current + | | | | | + v v v v v Time ---------------- diff --git a/sys/dev/random/fenestrasX/fx_pool.c b/sys/dev/random/fenestrasX/fx_pool.c index b6ffc202769e..59273a0a3f9d 100644 --- a/sys/dev/random/fenestrasX/fx_pool.c +++ b/sys/dev/random/fenestrasX/fx_pool.c @@ -167,10 +167,7 @@ static const struct fxrng_ent_char { [RANDOM_RANDOMDEV] = { .entc_cls = &fxrng_lo_push, }, - [RANDOM_PURE_SAFE] = { - .entc_cls = &fxrng_hi_push, - }, - [RANDOM_PURE_GLXSB] = { + [RANDOM_PURE_TPM] = { .entc_cls = &fxrng_hi_push, }, [RANDOM_PURE_RDRAND] = { @@ -197,9 +194,6 @@ static const struct fxrng_ent_char { [RANDOM_PURE_DARN] = { .entc_cls = &fxrng_hi_pull, }, - [RANDOM_PURE_TPM] = { - .entc_cls = &fxrng_hi_push, - }, [RANDOM_PURE_VMGENID] = { .entc_cls = &fxrng_hi_push, }, @@ -212,6 +206,12 @@ static const struct fxrng_ent_char { [RANDOM_PURE_ARM_TRNG] = { .entc_cls = &fxrng_hi_pull, }, + [RANDOM_PURE_SAFE] = { + .entc_cls = &fxrng_hi_push, + }, + [RANDOM_PURE_GLXSB] = { + .entc_cls = &fxrng_hi_push, + }, }; CTASSERT(nitems(fxrng_ent_char) == ENTROPYSOURCE); diff --git a/sys/dev/random/random_harvestq.c b/sys/dev/random/random_harvestq.c index b591ffd3b544..296721d2c4e9 100644 --- a/sys/dev/random/random_harvestq.c +++ b/sys/dev/random/random_harvestq.c @@ -662,8 +662,7 @@ static const char *random_source_descr[/*ENTROPYSOURCE*/] = { [RANDOM_UMA] = "UMA", [RANDOM_CALLOUT] = "CALLOUT", [RANDOM_RANDOMDEV] = "RANDOMDEV", /* ENVIRONMENTAL_END */ - [RANDOM_PURE_SAFE] = "PURE_SAFE", /* PURE_START */ - [RANDOM_PURE_GLXSB] = "PURE_GLXSB", + [RANDOM_PURE_TPM] = "PURE_TPM", /* PURE_START */ [RANDOM_PURE_RDRAND] = "PURE_RDRAND", [RANDOM_PURE_RDSEED] = "PURE_RDSEED", [RANDOM_PURE_NEHEMIAH] = "PURE_NEHEMIAH", @@ -672,11 +671,12 @@ static const char *random_source_descr[/*ENTROPYSOURCE*/] = { [RANDOM_PURE_BROADCOM] = "PURE_BROADCOM", [RANDOM_PURE_CCP] = "PURE_CCP", [RANDOM_PURE_DARN] = "PURE_DARN", - [RANDOM_PURE_TPM] = "PURE_TPM", [RANDOM_PURE_VMGENID] = "PURE_VMGENID", [RANDOM_PURE_QUALCOMM] = "PURE_QUALCOMM", [RANDOM_PURE_ARMV8] = "PURE_ARMV8", [RANDOM_PURE_ARM_TRNG] = "PURE_ARM_TRNG", + [RANDOM_PURE_SAFE] = "PURE_SAFE", + [RANDOM_PURE_GLXSB] = "PURE_GLXSB", /* "ENTROPYSOURCE" */ }; CTASSERT(nitems(random_source_descr) == ENTROPYSOURCE); diff --git a/sys/dev/safe/safe.c b/sys/dev/safe/safe.c index c512f3fc62c0..21824ba8de8d 100644 --- a/sys/dev/safe/safe.c +++ b/sys/dev/safe/safe.c @@ -424,6 +424,8 @@ safe_attach(device_t dev) #ifdef SAFE_DEBUG safec = sc; /* for use by hw.safe.dump */ #endif + gone_in(16, "%s(4) is deprecated in 15.0 and removed in 16.0\n", + safe_driver.name); return (0); bad4: crypto_unregister_all(sc->sc_cid); diff --git a/sys/kern/kern_jail.c b/sys/kern/kern_jail.c index 523b7e314a10..26a994ef0c32 100644 --- a/sys/kern/kern_jail.c +++ b/sys/kern/kern_jail.c @@ -1065,8 +1065,10 @@ kern_jail_set(struct thread *td, struct uio *optuio, int flags) * than duplicate it under a different name. */ error = vfs_buildopts(optuio, &opts); - if (error) + if (error) { + opts = NULL; goto done_free; + } cuflags = flags & (JAIL_CREATE | JAIL_UPDATE); if (!cuflags) { @@ -2331,7 +2333,8 @@ kern_jail_set(struct thread *td, struct uio *optuio, int flags) (void)kern_close(td, jfd_out); if (g_path != NULL) free(g_path, M_TEMP); - vfs_freeopts(opts); + if (opts != NULL) + vfs_freeopts(opts); prison_free(mypr); return (error); } diff --git a/sys/modules/iwlwifi/Makefile b/sys/modules/iwlwifi/Makefile index 5d4830537a0b..6fe64a611900 100644 --- a/sys/modules/iwlwifi/Makefile +++ b/sys/modules/iwlwifi/Makefile @@ -91,7 +91,7 @@ CFLAGS+= -DCONFIG_IWLWIFI_DEVICE_TRACING=1 #CFLAGS+= -DCONFIG_THERMAL=1 #CFLAGS+= -DCONFIG_EFI=1 -# XXX-BZ how to do this just for pcie/drv.c (and gcc vs. clang)? -CFLAGS += -Wno-override-init -Wno-initializer-overrides +CWARNFLAGS.clang.drv.c+= -Wno-initializer-overrides +CWARNFLAGS.drv.c+= -Wno-override-init ${CWARNFLAGS.${COMPILER_TYPE}.${.IMPSRC:T}} .include <bsd.kmod.mk> diff --git a/sys/netinet/tcp_syncache.c b/sys/netinet/tcp_syncache.c index fa7035771714..6c072e0fec38 100644 --- a/sys/netinet/tcp_syncache.c +++ b/sys/netinet/tcp_syncache.c @@ -535,6 +535,10 @@ syncache_timer(void *xsch) TCPSTAT_INC(tcps_sndtotal); TCPSTAT_INC(tcps_sc_retransmitted); } else { + /* + * Most likely we are memory constrained, so free + * resources. + */ syncache_drop(sc, sch); TCPSTAT_INC(tcps_sc_dropped); } @@ -734,7 +738,7 @@ syncache_unreach(struct in_conninfo *inc, tcp_seq th_seq, uint16_t port) goto done; /* - * If we've rertransmitted 3 times and this is our second error, + * If we've retransmitted 3 times and this is our second error, * we remove the entry. Otherwise, we allow it to continue on. * This prevents us from incorrectly nuking an entry during a * spurious network outage. @@ -1562,6 +1566,10 @@ syncache_add(struct in_conninfo *inc, struct tcpopt *to, struct tcphdr *th, TCPSTAT_INC(tcps_sndacks); TCPSTAT_INC(tcps_sndtotal); } else { + /* + * Most likely we are memory constrained, so free + * resources. + */ syncache_drop(sc, sch); TCPSTAT_INC(tcps_sc_dropped); } @@ -1747,6 +1755,9 @@ syncache_add(struct in_conninfo *inc, struct tcpopt *to, struct tcphdr *th, TCPSTAT_INC(tcps_sndacks); TCPSTAT_INC(tcps_sndtotal); } else { + /* + * Most likely we are memory constrained, so free resources. + */ if (sc != &scs) syncache_free(sc); TCPSTAT_INC(tcps_sc_dropped); diff --git a/sys/sys/random.h b/sys/sys/random.h index 803c07bbdfba..d801b04e5686 100644 --- a/sys/sys/random.h +++ b/sys/sys/random.h @@ -89,8 +89,7 @@ enum random_entropy_source { RANDOM_ENVIRONMENTAL_END = RANDOM_RANDOMDEV, /* Fast hardware random-number sources from here on. */ RANDOM_PURE_START, - RANDOM_PURE_SAFE = RANDOM_PURE_START, - RANDOM_PURE_GLXSB, + RANDOM_PURE_TPM = RANDOM_PURE_START, RANDOM_PURE_RDRAND, RANDOM_PURE_RDSEED, RANDOM_PURE_NEHEMIAH, @@ -99,11 +98,12 @@ enum random_entropy_source { RANDOM_PURE_BROADCOM, RANDOM_PURE_CCP, RANDOM_PURE_DARN, - RANDOM_PURE_TPM, RANDOM_PURE_VMGENID, RANDOM_PURE_QUALCOMM, RANDOM_PURE_ARMV8, RANDOM_PURE_ARM_TRNG, + RANDOM_PURE_SAFE, + RANDOM_PURE_GLXSB, ENTROPYSOURCE }; _Static_assert(ENTROPYSOURCE <= 32, diff --git a/usr.sbin/jail/jail.8 b/usr.sbin/jail/jail.8 index 9aed9b671b9e..3a925bda8174 100644 --- a/usr.sbin/jail/jail.8 +++ b/usr.sbin/jail/jail.8 @@ -1,3 +1,6 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" .\" Copyright (c) 2000, 2003 Robert N. M. Watson .\" Copyright (c) 2008-2012 James Gritton .\" All rights reserved. @@ -23,7 +26,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd October 8, 2025 +.Dd November 6, 2025 .Dt JAIL 8 .Os .Sh NAME @@ -1120,7 +1123,7 @@ process. This manual page documents the configuration steps necessary to support either of these steps, although the configuration steps may need to be refined based on local requirements. -.Ss "Setting up a Jail Directory Tree" +.Ss Setting up a Jail Directory Tree From Source To set up a jail directory tree containing an entire .Fx distribution, the following @@ -1133,8 +1136,19 @@ mkdir -p $D make world DESTDIR=$D make distribution DESTDIR=$D .Ed +.Ss Setting up a Jail Directory Tree from Distribution Files +To set up a jail directory tree containing an entire +.Fx +distribution, the following +.Xr sh 1 +command script can be used: +.Bd -literal -offset indent +D=/here/is/the/jail +mkdir -p $D +tar -xf /usr/freebsd-dist/base.txz -C $D --unlink +.Ed .Pp -In many cases this example would put far more in the jail than needed. +In many cases these examples would put far more in the jail than needed. In the other extreme case a jail might contain only one file: the executable to be run in the jail. .Pp |
