_tests_cxx.cpp | 32 ---
contrib/expat/tests/structdata_cxx.cpp | 32 ---
contrib/expat/xmlwf/xmlfile.c | 2 +-
contrib/expat/xmlwf/xmlwf.c | 2 +-
lib/libexpat/Makefile | 2 +-
lib/libexpat/expat_config.h | 6 +-
lib/libexpat/libbsdxml.3 | 4 +-
49 files changed, 1136 insertions(+), 741 deletions(-)
diff --cc contrib/expat/README.md
index a67548be7fc9,000000000000..619e60b2d16b
mode 100644,000000..100644
--- a/contrib/expat/README.md
+++ b/contrib/expat/README.md
@@@ -1,306 -1,0 +1,300 @@@
+[](https://github.com/libexpat/libexpat/actions/workflows/linux.yml)
+[](https://repology.org/metapackage/expat/versions)
+[](https://sourceforge.net/projects/expat/files/)
+[](https://github.com/libexpat/libexpat/releases)
+[](https://www.bestpractices.dev/projects/10205)
+
+> [!CAUTION]
+>
+> Expat is **understaffed** and without funding.
+> There is a [call for help with details](https://github.com/libexpat/libexpat/blob/master/expat/Changes)
+> at the top of the `Changes` file.
+
+
- # Expat, Release 2.7.5
++# Expat, Release 2.8.0
+
+This is Expat, a C99 library for parsing
+[XML 1.0 Fourth Edition](https://www.w3.org/TR/2006/REC-xml-20060816/), started by
+[James Clark](https://en.wikipedia.org/wiki/James_Clark_%28programmer%29) in 1997.
+Expat is a stream-oriented XML parser. This means that you register
+handlers with the parser before starting the parse. These handlers
+are called when the parser discovers the associated structures in the
+document being parsed. A start tag is an example of the kind of
+structures for which you may register handlers.
+
+Expat supports the following C99 compilers:
+
+- GNU GCC >=4.5 (for use from C) or GNU GCC >=4.8.1 (for use from C++)
+- LLVM Clang >=3.5
+- Microsoft Visual Studio >=17.0/2022
+ (the oldest version supported by the [official GitHub Actions Windows images](https://github.com/actions/runner-images))
+
+Windows users can use the
+[`expat-win32bin-*.*.*.{exe,zip}` download](https://github.com/libexpat/libexpat/releases),
+which includes both pre-compiled libraries and executables, and source code for
+developers.
+
+Expat is [free software](https://www.gnu.org/philosophy/free-sw.en.html).
+You may copy, distribute, and modify it under the terms of the License
+contained in the file
+[`COPYING`](https://github.com/libexpat/libexpat/blob/master/expat/COPYING)
+distributed with this package.
+This license is the same as the MIT/X Consortium license.
+
+
+## Using libexpat in your CMake-Based Project
+
+There are three documented ways of using libexpat with CMake:
+
+### a) `find_package` with Module Mode
+
+This approach leverages CMake's own [module `FindEXPAT`](https://cmake.org/cmake/help/latest/module/FindEXPAT.html).
+
+Notice the *uppercase* `EXPAT` in the following example:
+
+```cmake
+cmake_minimum_required(VERSION 3.10)
+
+project(hello VERSION 1.0.0)
+
+find_package(EXPAT 2.2.8 MODULE REQUIRED)
+
+add_executable(hello
+ hello.c
+)
+
+target_link_libraries(hello PUBLIC EXPAT::EXPAT)
+```
+
+### b) `find_package` with Config Mode
+
+This approach requires files from…
+
+- libexpat >=2.2.8 where packaging uses the CMake build system
+or
+- libexpat >=2.3.0 where packaging uses the GNU Autotools build system
+ on Linux
+or
+- libexpat >=2.4.0 where packaging uses the GNU Autotools build system
+ on macOS or MinGW.
+
+Notice the *lowercase* `expat` in the following example:
+
+```cmake
+cmake_minimum_required(VERSION 3.10)
+
+project(hello VERSION 1.0.0)
+
+find_package(expat 2.2.8 CONFIG REQUIRED char dtd ns)
+
+add_executable(hello
+ hello.c
+)
+
+target_link_libraries(hello PUBLIC expat::expat)
+```
+
+### c) The `FetchContent` module
+
+This approach — as demonstrated below — requires CMake >=3.18 for both the
+[`FetchContent` module](https://cmake.org/cmake/help/latest/module/FetchContent.html)
+and its support for the `SOURCE_SUBDIR` option to be available.
+
+Please note that:
+- Use of the `FetchContent` module with *non-release* SHA1s or `master`
+ of libexpat is neither advised nor considered officially supported.
+- Pinning to a specific commit is great for robust CI.
+- Pinning to a specific commit needs updating every time there is a new
+ release of libexpat — either manually or through automation —,
+ to not miss out on libexpat security updates.
+
+For an example that pulls in libexpat via Git:
+
+```cmake
+cmake_minimum_required(VERSION 3.18)
+
+include(FetchContent)
+
+project(hello VERSION 1.0.0)
+
+FetchContent_Declare(
+ expat
+ GIT_REPOSITORY https://github.com/libexpat/libexpat/
+ GIT_TAG 000000000_GIT_COMMIT_SHA1_HERE_000000000 # i.e. Git tag R_X_Y_Z
+ SOURCE_SUBDIR expat/
+)
+
+FetchContent_MakeAvailable(expat)
+
+add_executable(hello
+ hello.c
+)
+
+target_link_libraries(hello PUBLIC expat)
+```
+
+
+## Building from a Git Clone
+
+If you are building Expat from a check-out from the
+[Git repository](https://github.com/libexpat/libexpat/),
+you need to run a script that generates the configure script using the
+GNU autoconf and libtool tools. To do this, you need to have
+autoconf 2.58 or newer. Run the script like this:
+
+```console
+./buildconf.sh
+```
+
+Once this has been done, follow the same instructions as for building
+from a source distribution.
+
+
+## Building from a Source Distribution
+
+### a) Building with the configure script (i.e. GNU Autotools)
+
+To build Expat from a source distribution, you first run the
+configuration shell script in the top level distribution directory:
+
+```console
+./configure
+```
+
+There are many options which you may provide to configure (which you
+can discover by running configure with the `--help` option). But the
+one of most interest is the one that sets the installation directory.
+By default, the configure script will set things up to install
+libexpat into `/usr/local/lib`, `expat.h` into `/usr/local/include`, and
+`xmlwf` into `/usr/local/bin`. If, for example, you'd prefer to install
+into `/home/me/mystuff/lib`, `/home/me/mystuff/include`, and
+`/home/me/mystuff/bin`, you can tell `configure` about that with:
+
+```console
+./configure --prefix=/home/me/mystuff
+```
+
+Another interesting option is to enable 64-bit integer support for
+line and column numbers and the over-all byte index:
+
+```console
+./configure CPPFLAGS=-DXML_LARGE_SIZE
+```
+
+However, such a modification would be a breaking change to the ABI
+and is therefore not recommended for general use — e.g. as part of
+a Linux distribution — but rather for builds with special requirements.
+
+After running the configure script, the `make` command will build
+things and `make install` will install things into their proper
+location. Have a look at the `Makefile` to learn about additional
+`make` options. Note that you need to have write permission into
+the directories into which things will be installed.
+
+If you are interested in building Expat to provide document
+information in UTF-16 encoding rather than the default UTF-8, follow
+these instructions (after having run `make distclean`).
+Please note that we configure with `--without-xmlwf` as xmlwf does not
+support this mode of compilation (yet):
+
+1. Mass-patch `Makefile.am` files to use `libexpatw.la` for a library name:
+
+ `find . -name Makefile.am -exec sed
+ -e 's,libexpat\.la,libexpatw.la,'
+ -e 's,libexpat_la,libexpatw_la,'
+ -i.bak {} +`
+
+1. Run `automake` to re-write `Makefile.in` files:
+ `automake`
+
+1. For UTF-16 output as unsigned short (and version/error strings as char),
+ run:
+ `./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf`
+ For UTF-16 output as `wchar_t` (incl. version/error strings), run:
+ `./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T
+ --without-xmlwf`
+
Note: The latter requires libc compiled with `-fshort-wchar`, as well.
+
+1. Run `make` (which excludes xmlwf).
+
+1. Run `make install` (again, excludes xmlwf).
+
+Using `DESTDIR` is supported. It works as follows:
+
+```console
+make install DESTDIR=/path/to/image
+```
+
+overrides the in-makefile set `DESTDIR`, because variable-setting priority is
+
+1. commandline
+1. in-makefile
+1. environment
+
+Note: This only applies to the Expat library itself, building UTF-16 versions
+of xmlwf and the tests is currently not supported.
+
+A reference manual is available in the file `doc/reference.html` in this
+distribution.
+
+
+### b) Building with CMake
+
+The CMake build system is still *experimental* and may replace the primary
+build system based on GNU Autotools at some point when it is ready.
+
+
+#### Available Options
+
+For an idea of the available (non-advanced) options for building with CMake:
+
+```console
+# rm -f CMakeCache.txt ; cmake -D_EXPAT_HELP=ON -LH . | grep -B1 ':.*=' | sed 's,^--$,,'
+// Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=
+
+// Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+// Path to a program.
+DOCBOOK_TO_MAN:FILEPATH=/usr/bin/docbook2x-man
+
+// Build man page for xmlwf
+EXPAT_BUILD_DOCS:BOOL=ON
+
+// Build the examples for expat library
+EXPAT_BUILD_EXAMPLES:BOOL=ON
+
+// Build fuzzers for the expat library
+EXPAT_BUILD_FUZZERS:BOOL=OFF
+
+// Build pkg-config file
+EXPAT_BUILD_PKGCONFIG:BOOL=ON
+
+// Build the tests for expat library
+EXPAT_BUILD_TESTS:BOOL=ON
+
+// Build the xmlwf tool for expat library
+EXPAT_BUILD_TOOLS:BOOL=ON
+
+// Character type to use (char|ushort|wchar_t) [default=char]
+EXPAT_CHAR_TYPE:STRING=char
+
+// Install expat files in cmake install target
+EXPAT_ENABLE_INSTALL:BOOL=ON
+
+// Use /MT flag (static CRT) when compiling in MSVC
+EXPAT_MSVC_STATIC_CRT:BOOL=OFF
+
+// Build fuzzers via OSS-Fuzz for the expat library
+EXPAT_OSSFUZZ_BUILD:BOOL=OFF
+
+// Build a shared expat library
+EXPAT_SHARED_LIBS:BOOL=ON
+
+// Define to provide symbol versioning for dependency generation
+EXPAT_SYMBOL_VERSIONING:BOOL=OFF
+
+// Treat all compiler warnings as errors
+EXPAT_WARNINGS_AS_ERRORS:BOOL=OFF
-
- // Make use of getrandom function (ON|OFF|AUTO) [default=AUTO]
- EXPAT_WITH_GETRANDOM:STRING=AUTO
-
- // Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO]
- EXPAT_WITH_SYS_GETRANDOM:STRING=AUTO
+```
diff --cc contrib/expat/lib/random_arc4random.c
index 000000000000,243fbbc82fda..243fbbc82fda
mode 000000,100644..100644
--- a/contrib/expat/lib/random_arc4random.c
+++ b/contrib/expat/lib/random_arc4random.c
diff --cc contrib/expat/lib/random_dev_urandom.c
index 000000000000,e508fe9f3e3c..e508fe9f3e3c
mode 000000,100644..100644
--- a/contrib/expat/lib/random_dev_urandom.c
+++ b/contrib/expat/lib/random_dev_urandom.c
diff --cc contrib/expat/lib/random_getentropy.c
index 000000000000,b4be70ed73c1..b4be70ed73c1
mode 000000,100644..100644
--- a/contrib/expat/lib/random_getentropy.c
+++ b/contrib/expat/lib/random_getentropy.c
diff --cc contrib/expat/lib/random_getrandom.c
index 000000000000,e5724a211cc6..e5724a211cc6
mode 000000,100644..100644
--- a/contrib/expat/lib/random_getrandom.c
+++ b/contrib/expat/lib/random_getrandom.c
diff --cc contrib/expat/lib/random_getrandom.h
index 000000000000,ed4d829cd0d6..ed4d829cd0d6
mode 000000,100644..100644
--- a/contrib/expat/lib/random_getrandom.h
+++ b/contrib/expat/lib/random_getrandom.h
diff --cc contrib/expat/lib/random_rand_s.c
index 000000000000,46156563c91c..46156563c91c
mode 000000,100644..100644
--- a/contrib/expat/lib/random_rand_s.c
+++ b/contrib/expat/lib/random_rand_s.c
diff --cc contrib/expat/lib/random_rand_s.h
index 000000000000,2b487d62a7c5..2b487d62a7c5
mode 000000,100644..100644
--- a/contrib/expat/lib/random_rand_s.h
+++ b/contrib/expat/lib/random_rand_s.h
diff --cc lib/libexpat/Makefile
index 92ba6b671488,000000000000..1c5be3659eba
mode 100644,000000..100644
--- a/lib/libexpat/Makefile
+++ b/lib/libexpat/Makefile
@@@ -1,31 -1,0 +1,31 @@@
+PACKAGE= runtime
+EXPAT= ${SRCTOP}/contrib/expat
+
+LIB= bsdxml
+SHLIBDIR?= /lib
+SHLIB_MAJOR= 4
- SRCS= xmlparse.c xmlrole.c xmltok.c
++SRCS= random_arc4random_buf.c xmlparse.c xmlrole.c xmltok.c
+INCS= bsdxml.h bsdxml_external.h
+MAN= libbsdxml.3
+
+.PATH: ${EXPAT}/lib
+
+CFLAGS+= -I${.CURDIR} -DHAVE_EXPAT_CONFIG_H
+CLEANFILES= bsdxml.h bsdxml_external.h
+
+WARNS?= 2
+
+# OK, so it is not entirely unadulterated: we amend the COPYING to
+# point people to the right place and use FreeBSD-style include guards.
+# We also want to point it at the new bsdxml_external.h rather than the
+# old expat_external.h file.
+bsdxml.h: expat.h
+ sed -e 's/XmlParse_INCLUDED/_BSD_XML_H_/' \
+ -e 's/COPYING/src\/contrib\/expat\/COPYING/' \
+ -e 's/expat_external/bsdxml_external/' ${.ALLSRC} \
+ > ${.TARGET}
+
+bsdxml_external.h: expat_external.h
+ ${CP} ${.ALLSRC} ${.TARGET}
+
+.include
diff --cc lib/libexpat/expat_config.h
index 2ee8a71a7871,000000000000..fcc692224520
mode 100644,000000..100644
--- a/lib/libexpat/expat_config.h
+++ b/lib/libexpat/expat_config.h
@@@ -1,149 -1,0 +1,149 @@@
+/* expat_config.h. Generated from expat_config.h.in by configure. */
+/* expat_config.h.in. Generated from configure.ac by autoheader. */
+
+#ifndef EXPAT_CONFIG_H
+#define EXPAT_CONFIG_H 1
+
+#include
+
+/* Define if building universal (internal helper macro) */
+/* #undef AC_APPLE_UNIVERSAL_BUILD */
+
+/* 1234 = LILENDIAN, 4321 = BIGENDIAN */
+#if BYTE_ORDER == LITTLE_ENDIAN
+#define BYTEORDER 1234
+#else
+#define BYTEORDER 4321
+#endif
+
+/* Define to 1 if you have the `arc4random' function. */
+#define HAVE_ARC4RANDOM 1
+
+/* Define to 1 if you have the `arc4random_buf' function. */
+#define HAVE_ARC4RANDOM_BUF 1
+
+/* define if the compiler supports basic C++11 syntax */
+#define HAVE_CXX11 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the 'getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 if you have the `getrandom' function. */
+#define HAVE_GETRANDOM 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the 'bsd' library (-lbsd). */
+/* #undef HAVE_LIBBSD */
+
+/* Define to 1 if you have a working 'mmap' system call. */
+#define HAVE_MMAP 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STDIO_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have `syscall' and `SYS_getrandom'. */
+#define HAVE_SYSCALL_GETRANDOM 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
+#define LT_OBJDIR ".libs/"
+
+/* Name of package */
+#define PACKAGE "expat"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "https://github.com/libexpat/libexpat/issues"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "expat"
+
+/* Define to the full name and version of this package. */
- #define PACKAGE_STRING "expat 2.7.5"
++#define PACKAGE_STRING "expat 2.8.0"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "expat"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
- #define PACKAGE_VERSION "2.7.5"
++#define PACKAGE_VERSION "2.8.0"
+
+/* Define to 1 if all of the C89 standard headers exist (not just the ones
+ required in a freestanding environment). This macro is provided for
+ backward compatibility; new code need not use it. */
+#define STDC_HEADERS 1
+
+/* Version number of package */
- #define VERSION "2.7.5"
++#define VERSION "2.8.0"
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+/* # undef WORDS_BIGENDIAN */
+# endif
+#endif
+
+/* Define to allow retrieving the byte offsets for attribute names and values.
+ */
+/* #undef XML_ATTR_INFO */
+
+/* Define to specify how much context to retain around the current parse
+ point, 0 to disable. */
+#define XML_CONTEXT_BYTES 1024
+
+/* Define to include code reading entropy from `/dev/urandom'. */
+#define XML_DEV_URANDOM 1
+
+/* Define to make parameter entity parsing functionality available. */
+#define XML_DTD 1
+
+/* Define as 1/0 to enable/disable support for general entities. */
+#define XML_GE 1
+
+/* Define to make XML Namespaces functionality available. */
+#define XML_NS 1
+
+/* Define to empty if 'const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to 'long int' if does not define. */
+/* #undef off_t */
+
+#endif // ndef EXPAT_CONFIG_H
diff --cc lib/libexpat/libbsdxml.3
index 2eea4810ef6c,000000000000..e5fedea71dd1
mode 100644,000000..100644
--- a/lib/libexpat/libbsdxml.3
+++ b/lib/libexpat/libbsdxml.3
@@@ -1,67 -1,0 +1,67 @@@
+.\"-
+.\" Copyright (c) 2002 Poul-Henning Kamp
+.\" 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 AUTHOR 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 AUTHOR 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.
+.\"/
- .Dd April 2, 2026
++.Dd April 27, 2026
+.Dt LIBBSDXML 3
+.Os
+.Sh NAME
+.Nm libbsdxml
+.Nd eXpat XML parser library
+.Sh SYNOPSIS
+.In bsdxml.h
+.Sh DESCRIPTION
+The
+.Nm
- library is a verbatim copy of the eXpat XML library version 2.7.5.
++library is a verbatim copy of the eXpat XML library version 2.8.0.
+.Pp
+The
+.Nm
+library is intended to be used within the
+.Fx
+base system only.
+Use of the
+.Nm
+library for other purposes is not supported and discouraged.
+.Pp
+To avoid version and autoconfiguration issues, the library has been
+renamed to
+.Nm
+rather than retain the original eXpat library and include file names
+to prevent confusion and autoconfiguration issues for 3rd party
+software.
+.Sh SEE ALSO
+For full documentation, please see the eXpat webpage at
+.Pa http://www.libexpat.org/ .
+.Sh AUTHORS
+.An -nosplit
+The original eXpat was written by
+.An James Clark Aq Mt jjc@jclark.com .
+.Pp
+Subsequently eXpat maintenance and development been taken up by a group
+of people under the leadership of
+.An Fred Drake Aq Mt fdrake@acm.com ,
+.An Paul Prescod ,
+and
+.An Clark Cooper .