git: a0691523367a - stable/14 - contrib/atf: upgrade to 0.26

From: Enji Cooper <ngie_at_FreeBSD.org>
Date: Sun, 01 Nov 2026 02:25:26 UTC
The branch stable/14 has been updated by ngie:

URL: https://cgit.FreeBSD.org/src/commit/?id=a0691523367ae1d5d62bc03beb6ac530f376ce7b

commit a0691523367ae1d5d62bc03beb6ac530f376ce7b
Author:     Enji Cooper <ngie@FreeBSD.org>
AuthorDate: 2026-09-22 15:23:32 +0000
Commit:     Enji Cooper <ngie@FreeBSD.org>
CommitDate: 2026-11-01 02:24:21 +0000

    contrib/atf: upgrade to 0.26
    
    This new version gets contrib/atf in line with the published version of
    the package up on [GitHub][github].
    
    Please note that this release is a major update: it contains several
    bugfixes and feature enhancements. Most were already present in the
    FreeBSD src repo, but there were a large number of changes made in
    addition to what was already present.
    
    MFC after:      1 month
    
    Merge commit '9c78088348bcf1059d82a62bb57a0746309d4312'
    
    Conflicts:
            ObsoleteFiles.inc
            contrib/atf/.cirrus.yml
            contrib/atf/Makefile.am
            contrib/atf/Makefile.in
            contrib/atf/aclocal.m4
            contrib/atf/admin/ar-lib
            contrib/atf/admin/check-style-common.awk
            contrib/atf/admin/check-style.sh
            contrib/atf/admin/compile
            contrib/atf/admin/config.guess
            contrib/atf/admin/config.sub
            contrib/atf/admin/depcomp
            contrib/atf/admin/install-sh
            contrib/atf/admin/ltmain.sh
            contrib/atf/admin/missing
            contrib/atf/atf-c++/Makefile.am.inc
            contrib/atf/atf-c++/atf-c++.3
            contrib/atf/atf-c++/atf-c++.pc.in
            contrib/atf/atf-c++/check.cpp
            contrib/atf/atf-c++/check.hpp
            contrib/atf/atf-c++/detail/Makefile.am.inc
            contrib/atf/atf-c++/detail/process_test.cpp
            contrib/atf/atf-c/Makefile.am.inc
            contrib/atf/atf-c/atf-c.3
            contrib/atf/atf-c/atf-c.pc.in
            contrib/atf/atf-c/detail/Makefile.am.inc
            contrib/atf/atf-c/detail/fs.c
            contrib/atf/atf-c/detail/fs_test.c
            contrib/atf/atf-c/detail/process_test.c
            contrib/atf/atf-c/tc.c
            contrib/atf/atf-c/tc.h
            contrib/atf/atf-sh/Makefile.am.inc
            contrib/atf/atf-sh/atf-check.cpp
            contrib/atf/atf-sh/atf-check_test.sh
            contrib/atf/bootstrap/Makefile.am.inc
            contrib/atf/bootstrap/package.m4
            contrib/atf/bootstrap/testsuite
            contrib/atf/config.h
            contrib/atf/configure
            contrib/atf/configure.ac
            contrib/atf/doc/Makefile.am.inc
            contrib/atf/doc/atf-test-case.7
            contrib/atf/m4/developer-mode.m4
            contrib/atf/m4/libtool.m4
            contrib/atf/m4/ltoptions.m4
            contrib/atf/m4/ltsugar.m4
            contrib/atf/m4/ltversion.m4
            contrib/atf/m4/lt~obsolete.m4
            contrib/atf/m4/module-defs.m4
            contrib/atf/test-programs/Makefile.am.inc
            share/doc/atf/Makefile
            share/man/man4/Makefile
            share/man/man7/Makefile
    
    [github]: https://github.com/freebsd/atf
    
    (cherry picked from commit 952231086100bed7130212b5425e44ffd732913b)
---
 ObsoleteFiles.inc                                  |   3 +
 contrib/atf/.cirrus.yml                            |  26 --
 contrib/atf/.gitignore                             |  25 --
 contrib/atf/.travis.yml                            |  25 --
 contrib/atf/FREEBSD-Xlist                          |   2 +-
 contrib/atf/NEWS                                   | 200 ++++++++++----
 contrib/atf/README                                 |  37 ---
 contrib/atf/README.md                              |  43 ++-
 contrib/atf/atf-c++/atf-c++.3                      |   4 +-
 contrib/atf/atf-c++/check.cpp                      |   3 +-
 contrib/atf/atf-c++/check.hpp                      |   3 +-
 contrib/atf/atf-c++/detail/Kyuafile                |   1 -
 contrib/atf/atf-c++/detail/application.cpp         |  16 +-
 contrib/atf/atf-c++/detail/application.hpp         |   1 -
 contrib/atf/atf-c++/detail/auto_array.hpp          | 175 ------------
 contrib/atf/atf-c++/detail/auto_array_test.cpp     | 302 ---------------------
 contrib/atf/atf-c++/detail/fs.cpp                  |   1 -
 contrib/atf/atf-c++/detail/process.cpp             |  22 +-
 contrib/atf/atf-c++/detail/process.hpp             |   3 +-
 contrib/atf/atf-c++/detail/process_test.cpp        |  32 +--
 contrib/atf/atf-c++/detail/test_helpers.hpp        |   4 -
 contrib/atf/atf-c++/detail/text.cpp                |   8 -
 contrib/atf/atf-c++/detail/text.hpp                |   8 -
 contrib/atf/atf-c++/detail/text_test.cpp           |  21 --
 contrib/atf/atf-c++/tests.cpp                      |  48 ++--
 contrib/atf/atf-c++/tests_test.cpp                 |   4 +
 contrib/atf/atf-c/.gitignore                       |   1 -
 contrib/atf/atf-c/atf-c.3                          |  22 +-
 contrib/atf/atf-c/build.c                          |   2 +-
 contrib/atf/atf-c/check.c                          |   1 +
 contrib/atf/atf-c/defs.h.in                        |   1 +
 contrib/atf/atf-c/detail/dynstr.c                  |  35 +--
 contrib/atf/atf-c/detail/dynstr_test.c             |  21 +-
 contrib/atf/atf-c/detail/env.c                     |  41 +--
 contrib/atf/atf-c/detail/fs.c                      |  57 +---
 contrib/atf/atf-c/detail/fs_test.c                 |  11 +-
 contrib/atf/atf-c/detail/list.c                    |   5 +-
 contrib/atf/atf-c/detail/map.c                     |  22 +-
 contrib/atf/atf-c/detail/map_test.c                |   1 +
 contrib/atf/atf-c/detail/process.c                 |  59 ++--
 contrib/atf/atf-c/detail/process.h                 |   3 +-
 contrib/atf/atf-c/detail/process_test.c            |  57 ++--
 contrib/atf/atf-c/detail/sanity_test.c             |   9 +-
 contrib/atf/atf-c/detail/text.c                    |   1 +
 contrib/atf/atf-c/detail/tp_main.c                 |  59 ++--
 contrib/atf/atf-c/error.c                          |  10 +-
 contrib/atf/atf-c/macros.h                         |   8 +-
 contrib/atf/atf-c/tc.c                             |  71 +++--
 contrib/atf/atf-c/tc.h                             |   2 -
 contrib/atf/atf-c/tc_test.c                        |  86 ++++++
 contrib/atf/atf-c/tp.c                             |   3 +-
 contrib/atf/atf-c/tp.h                             |   2 +-
 contrib/atf/atf-c/tp_test.c                        |   1 +
 contrib/atf/atf-c/utils.c                          |  72 +++--
 contrib/atf/atf-c/utils.h                          |   1 +
 contrib/atf/atf-sh/.gitignore                      |   2 -
 contrib/atf/atf-sh/Kyuafile                        |   1 +
 contrib/atf/atf-sh/Kyuafile.in                     |  11 +
 contrib/atf/atf-sh/atf-check.1                     |  42 +--
 contrib/atf/atf-sh/atf-check.cpp                   |  67 +++--
 contrib/atf/atf-sh/atf-check_test.sh               |   4 +-
 contrib/atf/atf-sh/atf-sh.3                        |   2 +-
 contrib/atf/atf-sh/atf-sh.cpp                      |  52 ++--
 contrib/atf/atf-sh/integration_test.sh             |  19 ++
 contrib/atf/atf-sh/kmod_test.sh                    |  55 ++++
 contrib/atf/atf-sh/libatf-sh.subr                  |  40 +++
 contrib/atf/config.h                               | 132 +++++++--
 contrib/atf/doc/.gitignore                         |   1 -
 .../atf/doc/{atf-test-case.4 => atf-test-case.7}   |  14 +-
 contrib/atf/test-programs/srcdir_test.sh           |  10 -
 lib/atf/Makefile.inc                               |   2 +
 libexec/atf/Makefile.inc                           |   2 +
 share/doc/atf/Makefile                             |  12 +-
 share/man/man4/Makefile                            |   6 -
 share/man/man7/Makefile                            |  11 +-
 75 files changed, 950 insertions(+), 1216 deletions(-)

diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc
index 06e7f963e89e..3318e4f09844 100644
--- a/ObsoleteFiles.inc
+++ b/ObsoleteFiles.inc
@@ -64,6 +64,9 @@ OLD_FILES+=usr/share/certs/untrusted/Entrust_Root_Certification_Authority.pem
 OLD_FILES+=usr/bin/lesskey
 OLD_FILES+=usr/share/man/man1/lesskey.1.gz
 
+# 20260921: atf-0.26 release
+OLD_FILES+=usr/share/doc/atf/README
+
 # 20260602: Removed by 0a36787e4c1f on 20210723
 OLD_FILES+=usr/share/locale/hr_HR.ISO8859-2/LC_MESSAGES
 OLD_FILES+=usr/share/locale/nl_BE.ISO8859-1/LC_MESSAGES
diff --git a/contrib/atf/.cirrus.yml b/contrib/atf/.cirrus.yml
deleted file mode 100644
index fd9b6e4a47df..000000000000
--- a/contrib/atf/.cirrus.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-env:
-  CIRRUS_CLONE_DEPTH: 1
-  ARCH: amd64
-
-task:
-  matrix:
-    - name: 13.0-CURRENT
-      freebsd_instance:
-        image_family: freebsd-13-0-snap
-    - name: 12.2-STABLE
-      freebsd_instance:
-        image_family: freebsd-12-2-snap
-    - name: 12.1-RELEASE
-      freebsd_instance:
-        image_family: freebsd-12-1
-  install_script:
-    - sed -i.bak -e 's,pkg+http://pkg.FreeBSD.org/\${ABI}/quarterly,pkg+http://pkg.FreeBSD.org/\${ABI}/latest,' /etc/pkg/FreeBSD.conf
-    - ASSUME_ALWAYS_YES=yes pkg bootstrap -f
-    - pkg install -y autoconf automake libtool kyua
-  script:
-    - env JUNIT_OUTPUT=$(pwd)/test-results.xml ./admin/travis-build.sh
-  always:
-    junit_artifacts:
-      path: "test-results.xml"
-      type: text/xml
-      format: junit
diff --git a/contrib/atf/.gitignore b/contrib/atf/.gitignore
deleted file mode 100644
index 396785ce2052..000000000000
--- a/contrib/atf/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-*.la
-*.lo
-*.o
-*.pc
-*_helper
-*_helpers
-*_test
-.deps
-.dirstamp
-.libs
-
-Makefile
-Makefile.in
-aclocal.m4
-autom4te.cache
-config.h
-config.h.in
-config.h.in~
-config.log
-config.status
-configure
-installcheck.log
-libtool
-stamp-h1
-testsuite.log
diff --git a/contrib/atf/.travis.yml b/contrib/atf/.travis.yml
deleted file mode 100644
index 1949aae54468..000000000000
--- a/contrib/atf/.travis.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-language: cpp
-
-compiler:
-    - gcc
-    - clang
-
-before_install:
-    - ./admin/travis-install-deps.sh
-
-env:
-    - ARCH=amd64 AS_ROOT=no
-    - ARCH=amd64 AS_ROOT=yes
-    - ARCH=i386 AS_ROOT=no
-
-matrix:
-    exclude:
-        - compiler: clang
-          env: ARCH=i386 AS_ROOT=no
-
-script:
-    - ./admin/travis-build.sh
-
-notifications:
-    email:
-        - atf-log@googlegroups.com
diff --git a/contrib/atf/FREEBSD-Xlist b/contrib/atf/FREEBSD-Xlist
index 05ea871eb95c..06fef93a4024 100644
--- a/contrib/atf/FREEBSD-Xlist
+++ b/contrib/atf/FREEBSD-Xlist
@@ -2,7 +2,7 @@
 */Makefile*
 */*.m4
 */*.pc.in
-INSTALL
+INSTALL.md
 Makefile*
 aclocal.m4
 admin/
diff --git a/contrib/atf/NEWS b/contrib/atf/NEWS
index 671ee81ff6ff..e1c9e5f512f5 100644
--- a/contrib/atf/NEWS
+++ b/contrib/atf/NEWS
@@ -1,26 +1,140 @@
-Major changes between releases                  Automated Testing Framework
-===========================================================================
+# Major changes between releases
+
+## Changes in version 0.26
+
+Released on 2026/09/22.
+
+### Developer Workflow Changes
+
+* #189: Automate uploading release assets
+* #190: INSTALL.md: sync content with version from lutok
+* #191: [CI] Minor tweaks
+
+### Feature Enhancements
+
+* #192: Add kmod support on FreeBSD
+
+**Full Changelog**: https://github.com/freebsd/atf/compare/atf-0.25...atf-0.26
+
+## Changes in version 0.25
+
+Released on 2026/09/02.
+
+### Bugfixes
+* #187: Fix the build on NetBSD by renaming a variable added in version 0.24.
+
+### Developer Workflow Changes
+* #185: The version of LLVM used in macOS runners was bumped from 19 to 20
+
+**Full Changelog**: https://github.com/freebsd/atf/compare/atf-0.24...atf-0.25
+
+## Changes in version 0.24
+
+Released on August, 17, 2026
+
+### Major Changes
+* This version of ATF requires C++-20 to build/function.
+* This version of ATF focused heavily on correctness and memory management
+  issues discussed in #77. While most of the issues are believed to be resolved,
+  some issues may still remain.
+* The `atf::text::duplicate(..)` API and tests were removed.
+
+### Feature Enhancements
+* Issue #105: Widen our process status capabilties
+
+### Docs
+* Issue #107: Clarify the semantics of ATF_{CHECK,REQUIRE}_ERRNO()
+* Issue #124: atf-check.1: Add missing -r flag to synopsis
+* Issue #127: atf-c.3: Fix test case addition in ATF_TP_ADD_TCS synopsis example
+
+### Developer Workflow Changes
+* GitHub Actions support was added.
+* Cirrus CI support was removed.
+* FreeBSD vmactions CI support was added.
+* ASAN/LSAN/UBSAN support was added for Linux and macOS.
+* (Initial) runtime code coverage support was added.
+* (Initial) pre-commit support was added.
+
+**Full Changelog**: https://github.com/freebsd/atf/compare/atf-0.23...atf-0.24
+
+## Changes in version 0.23
+
+Released on March, 29, 2025
 
-Changes in version 0.22
-***********************
+* Issue #101: fix release tarballs by using `make dist` instead of
+  alternative ad hoc method.
 
-STILL UNDER DEVELOPMENT; NOT RELEASED YET.
-DON'T FORGET TO BUMP THE -version-info PRE-RELEASE IF NECESSARY!
+* Issue #76: `atf_check`: fix `std::length_error` thrown from `temp_file`.
+
+* #87: Update documentation/build files to point to FreeBSD repo/mailing lists.
+
+* #86: Improve diagnostics when paths cannot be opened
+
+* #85: various build-related changes. Highlights:
+    * Remove leftover references of `auto_array` (bugfix).
+    * Remove the `atf-*-api` manpages (enhancement).
+    * Require -std=C++14 with ATF (enhancement).
+    * Expose `WCOREDUMP(..)` on platforms that support it (bugfix).
+    * Add `__attribute__((nonnull))` support (enhancement).
+    * Restore `AC_PROG_CPP` (bugfix).
+
+### General fixes
+
+* Fix various style issues which were blocking `make dist` from completing
+  cleanly.
+
+* Fix `atf_utils_file_exists` declaration in atf-c(3).
+
+* Fix various memory leaks and logic errors.
+
+* `atf-test-case(4)`: update reference to the "descr" metadata property so it's
+  marked Optional.
+
+* `atf-check.cpp`: remove unnecessary data copy in `temp_file`.
+
+## Changes in version 0.22
+
+Released on November 25th, 2024.
 
 * Issue #23: Fix double-free triggered by atf_map_insert in low memory
   scenarios, caused by an overlook in the atf_list code.
 
-* Issue #29: Fixed various typos and formatting errors in manual pages.
-
 * Issue #31: Added require.progs metadata properties to the tests that
   need a compiler to run.
 
 * Added the atf_check_not_equal function to atf-sh to check for
   unequal values.
 
+* Add `-r timeout` flag to `atf-check`.
+
+* Open results files before executing tests to fix an issue ATF tests that
+  adjust the processes' Capsicum rights as part of the testcase(s)
+  executed.
+
+* Add Cirrus CI integration for FreeBSD CI/CD support.
+
+* Address compilation issues on OpenSolaris distributions.
+
+* Replace `auto_array` with `std::vector` (fixes modern C++ compliance).
+
+* Replace `auto_ptr` with `std::unique_ptr` (fixes modern C++ compliance).
+
+* Update autotools idioms and requirements. The minimum required version of
+  autoconf is now 2.68.
+
+* Modify `ATF_CHECK*` and `ATF_REQUIRE*` macros to avoid double
+  evaluation/allow the gcc toolchain to detect accidental single
+  assignment typos.
+
+* Always define CPP to fix use of ATF_BUILD_CPP when the user did not
+  define CPP when invoking the configure script.
+
+### General fixes
+
+* Fix various typos and formatting errors in manual pages and markdown
+  documents.
 
-Changes in version 0.21
-***********************
+## Changes in version 0.21
 
 Released on October 23rd, 2014.
 
@@ -76,8 +190,7 @@ Released on October 23rd, 2014.
 * Issue #19: Removed stale references to atf-config and atf-run.
 
 
-Changes in version 0.20
-***********************
+## Changes in version 0.20
 
 Experimental version released on February 7th, 2014.
 
@@ -92,8 +205,7 @@ the 'tools' directory for your own consumption.
   that ships with FreeBSD 11.0-CURRENT.
 
 
-Changes in version 0.19
-***********************
+## Changes in version 0.19
 
 Experimental version released on February 7th, 2014.
 
@@ -112,7 +224,7 @@ does not depend on any internal details of atf-c++ any longer.
 * Project hosting moved from Google Code (as a subproject of Kyua) to
   GitHub (as a first-class project).  The main reason for the change is
   the suppression of binary downloads in Google Code on Jan 15th, 2014.
-  See https://github.com/jmmv/atf/
+  See https://github.com/freebsd/atf/
 
 * Removed builtin help from atf-sh(1) and atf-check(1) for simplicity
   reasons.  In other words, their -h option is gone.
@@ -124,8 +236,7 @@ does not depend on any internal details of atf-c++ any longer.
   atf-c++ would break the stale tools.
 
 
-Changes in version 0.18
-***********************
+## Changes in version 0.18
 
 Experimental version released on November 16th, 2013.
 
@@ -142,8 +253,7 @@ Experimental version released on November 16th, 2013.
 * NetBSD PR bin/48285: Fixed atf_check examples in atf-sh-api(3).
 
 
-Changes in version 0.17
-***********************
+## Changes in version 0.17
 
 Experimental version released on February 14th, 2013.
 
@@ -176,8 +286,7 @@ Experimental version released on February 14th, 2013.
   cases from breaking xsltproc later.
 
 
-Changes in version 0.16
-***********************
+## Changes in version 0.16
 
 Experimental version released on July 10th, 2012.
 
@@ -211,8 +320,7 @@ Experimental version released on July 10th, 2012.
   lives in a subcomponent of the Kyua project.
 
 
-Changes in version 0.15
-***********************
+## Changes in version 0.15
 
 Experimental version released on January 16th, 2012.
 
@@ -248,8 +356,7 @@ Experimental version released on January 16th, 2012.
   mangle our report.
 
 
-Changes in version 0.14
-***********************
+## Changes in version 0.14
 
 Experimental version released on June 14th, 2011.
 
@@ -277,8 +384,7 @@ Experimental version released on June 14th, 2011.
   case to run.
 
 
-Changes in version 0.13
-***********************
+## Changes in version 0.13
 
 Experimental version released on March 31st, 2011.
 
@@ -323,8 +429,7 @@ The changes in this release are:
   instead of just listing them as having 0 test cases.
 
 
-Changes in version 0.12
-***********************
+## Changes in version 0.12
 
 Experimental version released on November 7th, 2010.
 
@@ -359,8 +464,7 @@ Experimental version released on November 7th, 2010.
   general, not be blindly run as root in the first place.
 
 
-Changes in version 0.11
-***********************
+## Changes in version 0.11
 
 Experimental version released on October 20th, 2010.
 
@@ -382,8 +486,7 @@ Experimental version released on October 20th, 2010.
 * Fixed the XSTL and CSS stylesheets to support expected failures.
 
 
-Changes in version 0.10
-***********************
+## Changes in version 0.10
 
 Experimental version released on July 2nd, 2010.
 
@@ -410,7 +513,7 @@ Miscellaneous features
   take the expected exception as the first argument and the statement to
   execute as the second argument.
 
-Changes in atf-check
+### Changes in atf-check
 
 * Changed atf-check to support negating the status and output checks by
   prefixing them with not- and added support to specify multiple checkers
@@ -463,8 +566,7 @@ Code simplifications and cleanups
   easier to maintain.
 
 
-Changes in version 0.9
-**********************
+## Changes in version 0.9
 
 Experimental version released on June 3rd, 2010.
 
@@ -491,8 +593,7 @@ Experimental version released on June 3rd, 2010.
   ATF_TEST_CASE_WITHOUT_HEAD.
 
 
-Changes in version 0.8
-**********************
+## Changes in version 0.8
 
 Experimental version released on May 7th, 2010.
 
@@ -541,8 +642,7 @@ Experimental version released on May 7th, 2010.
   name of their own.
 
 
-Changes in version 0.7
-**********************
+## Changes in version 0.7
 
 Experimental version released on December 22nd, 2009.
 
@@ -571,8 +671,7 @@ Experimental version released on December 22nd, 2009.
 * Fixed many memory and object leaks.
 
 
-Changes in version 0.6
-**********************
+## Changes in version 0.6
 
 Experimental version released on January 18th, 2009.
 
@@ -605,8 +704,7 @@ Experimental version released on January 18th, 2009.
   _STREQ_MSG.
 
 
-Changes in version 0.5
-**********************
+## Changes in version 0.5
 
 Experimental version released on May 1st, 2008.
 
@@ -632,8 +730,7 @@ Experimental version released on May 1st, 2008.
   executed multiple times to comply with the user's requests.
 
 
-Changes in version 0.4
-**********************
+## Changes in version 0.4
 
 Experimental version released on February 4th, 2008.
 
@@ -665,8 +762,7 @@ Experimental version released on February 4th, 2008.
   were likely affected too.
 
 
-Changes in version 0.3
-**********************
+## Changes in version 0.3
 
 Experimental version released on November 11th, 2007.
 
@@ -699,8 +795,7 @@ Experimental version released on November 11th, 2007.
   incomplete.
 
 
-Changes in version 0.2
-**********************
+## Changes in version 0.2
 
 Experimental version released on September 20th, 2007.
 
@@ -731,8 +826,7 @@ Experimental version released on September 20th, 2007.
 * Multiple bug fixes and improvements all around.
 
 
-Changes in version 0.1
-**********************
+## Changes in version 0.1
 
 Experimental version released on August 20th, 2007.
 
@@ -741,4 +835,4 @@ Experimental version released on August 20th, 2007.
 
 
 ===========================================================================
-vim: filetype=text:textwidth=75:expandtab:shiftwidth=2:softtabstop=2
+# vim: syntax=markdown:textwidth=75:expandtab:shiftwidth=2:softtabstop=2
diff --git a/contrib/atf/README b/contrib/atf/README
deleted file mode 100644
index d3b03edb9419..000000000000
--- a/contrib/atf/README
+++ /dev/null
@@ -1,37 +0,0 @@
-Introductory information                        Automated Testing Framework
-===========================================================================
-
-
-Introduction
-************
-
-The Automated Testing Framework (ATF) is a collection of libraries to
-implement test programs in a variety of languages.  At the moment, ATF
-offers C, C++ and POSIX shell bindings with which to implement tests.
-These bindings all offer a similar set of functionality and any test
-program written with them exposes a consistent user interface.
-
-ATF-based test programs rely on a separate runtime engine to execute them.
-The runtime engine is in charge of isolating the test programs from the
-rest of the system to ensure that their results are deterministic and that
-they cannot affect the running system.  The runtime engine is also
-responsible for gathering the results of all tests and composing reports.
-The current runtime of choice is Kyua.
-
-
-Other documents
-***************
-
-* AUTHORS: List of authors and contributors for this project.
-
-* COPYING: License information.
-
-* INSTALL: Compilation and installation instructions.  These is not the
-  standard document shipped with many packages, so be sure to read it for
-  things that are specific to ATF's build.
-
-* NEWS: List of major changes between formal, published releases.
-
-
-===========================================================================
-vim: filetype=text:textwidth=75:expandtab:shiftwidth=2:softtabstop=2
diff --git a/contrib/atf/README.md b/contrib/atf/README.md
index d245552f35c9..0513546fc7cc 100644
--- a/contrib/atf/README.md
+++ b/contrib/atf/README.md
@@ -12,36 +12,57 @@ interface** to allow both humans and automation to run the tests.
 
 ATF-based test programs **rely on an execution engine** to be run and
 this execution engine is *not* shipped with ATF.
-**[Kyua](https://github.com/jmmv/kyua/) is the engine of choice.**
+**[Kyua](https://github.com/freebsd/kyua/) is the engine of choice.**
 
 ## Download
 
 Formal releases for source files are available for download from GitHub:
 
-* [atf 0.20](../../releases/tag/atf-0.20), released on February 7th, 2014.
+* [atf 0.25](../../releases/tag/atf-0.25), released on September 2nd, 2026.
 
 ## Installation
 
 You are encouraged to install binary packages for your operating system
 wherever available:
 
-* Fedora 20 and above: install the `atf` package with `yum install atf`.
-
 * FreeBSD 10.0 and above: install the `atf` package with `pkg install atf`.
 
 * NetBSD with pkgsrc: install the `pkgsrc/devel/atf` package.
 
 * OpenBSD: install the `devel/atf` package with `pkg_add atf`.
 
+* Ubuntu: install the `libatf-dev` and `atf-sh` packages with
+  `apt install libatf-dev atf-sh`.
+
 Should you want to build and install ATF from the source tree provided
-here, follow the instructions in the [INSTALL file](INSTALL).
+here, follow the instructions in the [INSTALL file](INSTALL.md).
+
+## More Reading
+
+* AUTHORS: List of authors and contributors for this project.
+
+* COPYING: License information.
+
+* INSTALL.md: Compilation and installation instructions.  These is not the
+  standard document shipped with many packages, so be sure to read it for
+  things that are specific to ATF's build.
+
+* NEWS.md: List of major changes between formal, published releases.
+
+## Other documents
+
+* `AUTHORS`: List of authors and contributors for this project.
+
+* `COPYING`: License information.
+
+* `INSTALL.md`: Compilation and installation instructions.  These is not the
+  standard document shipped with many packages, so be sure to read it for
+  things that are specific to ATF's build.
+
+* `NEWS.md`: List of major changes between formal, published releases.
 
 ## Support
 
 Please use the
-[atf-discuss mailing list](https://groups.google.com/forum/#!forum/atf-discuss)
-for any support inquiries related to `atf-c`, `atf-c++` or `atf-sh`.
-
-If you have any questions on Kyua proper, please use the
-[kyua-discuss mailing list](https://groups.google.com/forum/#!forum/kyua-discuss)
-instead.
+[FreeBSD-testing@FreeBSD.org](mailto:FreeBSD-testing@FreeBSD.org) mailing list
+for any support inquiries related to `atf-c`, `atf-c++`, `atf-sh`, or `kyua`.
diff --git a/contrib/atf/atf-c++/atf-c++.3 b/contrib/atf/atf-c++/atf-c++.3
index bb83e6214622..2254d481efff 100644
--- a/contrib/atf/atf-c++/atf-c++.3
+++ b/contrib/atf/atf-c++/atf-c++.3
@@ -22,7 +22,7 @@
 .\" IN CONTRACT, STRICT LIABILITY, OR TORT (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 May 11, 2025
+.Dd October 13, 2014
 .Dt ATF-C++ 3
 .Os
 .Sh NAME
@@ -285,6 +285,8 @@ additional kernel modules in the test case's body by using the
 .Fn require_kmod
 function, which takes the name of a single module.
 If it is not found, the test case will be automatically skipped.
+This feature is only available on
+.Fx .
 .Ss Requiring programs
 Aside from the
 .Va require.progs
diff --git a/contrib/atf/atf-c++/check.cpp b/contrib/atf/atf-c++/check.cpp
index 5d8580023a15..78da33fa9620 100644
--- a/contrib/atf/atf-c++/check.cpp
+++ b/contrib/atf/atf-c++/check.cpp
@@ -150,5 +150,6 @@ impl::exec(const atf::process::argv_array& argva)
     if (atf_is_error(err))
         throw_atf_error(err);
 
-    return std::unique_ptr< impl::check_result >(new impl::check_result(&result));
+    return std::unique_ptr< impl::check_result >(
+        new impl::check_result(&result));
 }
diff --git a/contrib/atf/atf-c++/check.hpp b/contrib/atf/atf-c++/check.hpp
index 4d7f079d1ac1..bcf9cb647f29 100644
--- a/contrib/atf/atf-c++/check.hpp
+++ b/contrib/atf/atf-c++/check.hpp
@@ -71,7 +71,8 @@ class check_result {
     check_result(const atf_check_result_t* result);
 
     friend check_result test_constructor(const char* const*);
-    friend std::unique_ptr< check_result > exec(const atf::process::argv_array&);
+    friend std::unique_ptr< check_result >
+        exec(const atf::process::argv_array&);
 
 public:
     //!
diff --git a/contrib/atf/atf-c++/detail/Kyuafile b/contrib/atf/atf-c++/detail/Kyuafile
index fc799e64df69..425595cef644 100644
--- a/contrib/atf/atf-c++/detail/Kyuafile
+++ b/contrib/atf/atf-c++/detail/Kyuafile
@@ -3,7 +3,6 @@ syntax("kyuafile", 1)
 test_suite("atf")
 
 atf_test_program{name="application_test"}
-atf_test_program{name="auto_array_test"}
 atf_test_program{name="env_test"}
 atf_test_program{name="exceptions_test"}
 atf_test_program{name="fs_test"}
diff --git a/contrib/atf/atf-c++/detail/application.cpp b/contrib/atf/atf-c++/detail/application.cpp
index 37086eb3ae8c..3eeb8f966cf9 100644
--- a/contrib/atf/atf-c++/detail/application.cpp
+++ b/contrib/atf/atf-c++/detail/application.cpp
@@ -37,6 +37,7 @@ extern "C" {
 #include <cstdio>
 #include <cstdlib>
 #include <cstring>
+#include <filesystem>
 #include <iostream>
 
 extern "C" {
@@ -205,19 +206,8 @@ impl::app::run(int argc, char* const* argv)
     m_argc = argc;
     m_argv = argv;
 
-    m_argv0 = m_argv[0];
-
-    m_prog_name = std::strrchr(m_argv[0], '/');
-    if (m_prog_name == NULL)
-        m_prog_name = m_argv[0];
-    else
-        m_prog_name++;
-
-    // Libtool workaround: if running from within the source tree (binaries
-    // that are not installed yet), skip the "lt-" prefix added to files in
-    // the ".libs" directory to show the real (not temporary) name.
-    if (std::strncmp(m_prog_name, "lt-", 3) == 0)
-        m_prog_name += 3;
+    auto m_prog_filename = std::filesystem::path(m_argv[0]).filename();
+    m_prog_name = m_prog_filename.c_str();
 
     const std::string bug =
         std::string("This is probably a bug in ") + m_prog_name +
diff --git a/contrib/atf/atf-c++/detail/application.hpp b/contrib/atf/atf-c++/detail/application.hpp
index cdb4073ad807..ad068467ac3a 100644
--- a/contrib/atf/atf-c++/detail/application.hpp
+++ b/contrib/atf/atf-c++/detail/application.hpp
@@ -81,7 +81,6 @@ protected:
     int m_argc;
     char* const* m_argv;
 
-    const char* m_argv0;
     const char* m_prog_name;
     std::string m_description;
     std::string m_manpage;
diff --git a/contrib/atf/atf-c++/detail/auto_array.hpp b/contrib/atf/atf-c++/detail/auto_array.hpp
deleted file mode 100644
index b434a5808235..000000000000
--- a/contrib/atf/atf-c++/detail/auto_array.hpp
+++ /dev/null
@@ -1,175 +0,0 @@
-// Copyright (c) 2007 The NetBSD Foundation, Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1. Redistributions of source code must retain the above copyright
-//    notice, this list of conditions and the following disclaimer.
-// 2. Redistributions in binary form must reproduce the above copyright
-//    notice, this list of conditions and the following disclaimer in the
-//    documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
-// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
-// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
-// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#if !defined(ATF_CXX_DETAIL_AUTO_ARRAY_HPP)
-#define ATF_CXX_DETAIL_AUTO_ARRAY_HPP
-
-#include <cstddef>
-
-namespace atf {
-
-// ------------------------------------------------------------------------
-// The "auto_array" class.
-// ------------------------------------------------------------------------
-
-template< class T >
-struct auto_array_ref {
-    T* m_ptr;
-
-    explicit auto_array_ref(T*);
-};
-
-template< class T >
-auto_array_ref< T >::auto_array_ref(T* ptr) :
-    m_ptr(ptr)
-{
-}
-
-template< class T >
-class auto_array {
-    T* m_ptr;
-
-public:
-    auto_array(T* = NULL) throw();
-    auto_array(auto_array< T >&) throw();
-    auto_array(auto_array_ref< T >) throw();
-    ~auto_array(void) throw();
-
-    T* get(void) throw();
-    const T* get(void) const throw();
-    T* release(void) throw();
-    void reset(T* = NULL) throw();
-
-    auto_array< T >& operator=(auto_array< T >&) throw();
-    auto_array< T >& operator=(auto_array_ref< T >) throw();
-
-    T& operator[](int) throw();
-    operator auto_array_ref< T >(void) throw();
-};
-
-template< class T >
-auto_array< T >::auto_array(T* ptr)
-    throw() :
-    m_ptr(ptr)
-{
-}
-
-template< class T >
-auto_array< T >::auto_array(auto_array< T >& ptr)
-    throw() :
-    m_ptr(ptr.release())
-{
-}
-
-template< class T >
-auto_array< T >::auto_array(auto_array_ref< T > ref)
-    throw() :
-    m_ptr(ref.m_ptr)
-{
-}
-
-template< class T >
-auto_array< T >::~auto_array(void)
-    throw()
-{
-    if (m_ptr != NULL)
-        delete [] m_ptr;
-}
*** 3475 LINES SKIPPED ***