aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rwxr-xr-xtools/LibraryReport/LibraryReport.tcl1
-rw-r--r--tools/README1
-rw-r--r--tools/boot/TEST-NOTES22
-rwxr-xr-xtools/boot/ci-qemu-test.sh22
-rw-r--r--tools/boot/full-test.readme37
-rw-r--r--tools/boot/full-test.sh622
-rwxr-xr-xtools/boot/install-boot.sh32
-rwxr-xr-xtools/boot/lua-img.sh1
-rwxr-xr-xtools/boot/lua-lint.sh1
-rwxr-xr-xtools/boot/lua-test.sh1
-rwxr-xr-xtools/boot/rootgen.sh435
-rw-r--r--tools/boot/smbios/Makefile10
-rw-r--r--tools/boot/smbios/main.c96
-rw-r--r--tools/boot/smbios/stand.h18
-rwxr-xr-xtools/boot/universe.sh42
-rw-r--r--tools/bsdbox/Makefile5
-rw-r--r--tools/bsdbox/Makefile.base1
-rw-r--r--tools/bsdbox/Makefile.depend1
-rw-r--r--tools/bsdbox/Makefile.fs1
-rw-r--r--tools/bsdbox/Makefile.hostapd1
-rw-r--r--tools/bsdbox/Makefile.kld1
-rw-r--r--tools/bsdbox/Makefile.login1
-rw-r--r--tools/bsdbox/Makefile.net1
-rw-r--r--tools/bsdbox/Makefile.telnetd14
-rw-r--r--tools/bsdbox/Makefile.textproc1
-rw-r--r--tools/bsdbox/README1
-rw-r--r--tools/build/Makefile114
-rw-r--r--tools/build/Makefile.depend1
-rwxr-xr-xtools/build/beinstall.sh3
-rw-r--r--tools/build/bootstrap-m4/Makefile1
-rw-r--r--tools/build/bootstrap-m4/inittokenizer.c2
-rwxr-xr-xtools/build/check-links.sh1
-rwxr-xr-xtools/build/checkstyle9.pl2696
-rw-r--r--tools/build/cross-build/Makefile1
-rw-r--r--tools/build/cross-build/capsicum_stubs.c2
-rw-r--r--tools/build/cross-build/date.sh1
-rw-r--r--tools/build/cross-build/fake_chflags/Makefile1
-rw-r--r--tools/build/cross-build/fake_chflags/chflags1
-rw-r--r--tools/build/cross-build/fake_sysctl.c2
-rw-r--r--tools/build/cross-build/fgetln_fallback.c2
-rw-r--r--tools/build/cross-build/hostname.sh1
-rw-r--r--tools/build/cross-build/include/common/db.h2
-rw-r--r--tools/build/cross-build/include/common/getopt.h2
-rw-r--r--tools/build/cross-build/include/common/grp.h2
-rw-r--r--tools/build/cross-build/include/common/libcasper.h2
-rw-r--r--tools/build/cross-build/include/common/libelf.h2
-rw-r--r--tools/build/cross-build/include/common/libutil.h2
-rw-r--r--tools/build/cross-build/include/common/machine/endian.h2
-rw-r--r--tools/build/cross-build/include/common/netconfig.h2
-rw-r--r--tools/build/cross-build/include/common/netdb.h2
-rw-r--r--tools/build/cross-build/include/common/osreldate.h2
-rw-r--r--tools/build/cross-build/include/common/pwd.h6
-rw-r--r--tools/build/cross-build/include/common/string.h2
-rw-r--r--tools/build/cross-build/include/common/sys/_iovec.h2
-rw-r--r--tools/build/cross-build/include/common/sys/_null.h2
-rw-r--r--tools/build/cross-build/include/common/sys/_types.h2
-rw-r--r--tools/build/cross-build/include/common/sys/cdefs.h18
-rw-r--r--tools/build/cross-build/include/common/sys/ctype.h2
-rw-r--r--tools/build/cross-build/include/common/sys/limits.h2
-rw-r--r--tools/build/cross-build/include/common/sys/mman.h2
-rw-r--r--tools/build/cross-build/include/common/sys/param.h2
-rw-r--r--tools/build/cross-build/include/common/sys/stdint.h2
-rw-r--r--tools/build/cross-build/include/common/sys/sysctl.h2
-rw-r--r--tools/build/cross-build/include/common/sys/types.h6
-rw-r--r--tools/build/cross-build/include/common/unistd.h7
-rw-r--r--tools/build/cross-build/include/linux/__unused_workaround_end.h2
-rw-r--r--tools/build/cross-build/include/linux/__unused_workaround_start.h2
-rw-r--r--tools/build/cross-build/include/linux/__used_workaround_end.h2
-rw-r--r--tools/build/cross-build/include/linux/__used_workaround_start.h2
-rw-r--r--tools/build/cross-build/include/linux/ctype.h2
-rw-r--r--tools/build/cross-build/include/linux/endian.h2
-rw-r--r--tools/build/cross-build/include/linux/errno.h2
-rw-r--r--tools/build/cross-build/include/linux/fcntl.h2
-rw-r--r--tools/build/cross-build/include/linux/libutil.h3
-rw-r--r--tools/build/cross-build/include/linux/limits.h2
-rw-r--r--tools/build/cross-build/include/linux/nbtool_config.h2
-rw-r--r--tools/build/cross-build/include/linux/netdb.h2
-rw-r--r--tools/build/cross-build/include/linux/regex.h2
-rw-r--r--tools/build/cross-build/include/linux/resolv.h2
-rw-r--r--tools/build/cross-build/include/linux/signal.h2
-rw-r--r--tools/build/cross-build/include/linux/spawn.h2
-rw-r--r--tools/build/cross-build/include/linux/stdio.h2
-rw-r--r--tools/build/cross-build/include/linux/stdlib.h2
-rw-r--r--tools/build/cross-build/include/linux/string.h5
-rw-r--r--tools/build/cross-build/include/linux/strings.h38
-rw-r--r--tools/build/cross-build/include/linux/sys/disk.h2
-rw-r--r--tools/build/cross-build/include/linux/sys/endian.h2
-rw-r--r--tools/build/cross-build/include/linux/sys/filio.h2
-rw-r--r--tools/build/cross-build/include/linux/sys/ioccom.h2
-rw-r--r--tools/build/cross-build/include/linux/sys/mount.h2
-rw-r--r--tools/build/cross-build/include/linux/sys/param.h2
-rw-r--r--tools/build/cross-build/include/linux/sys/stat.h2
-rw-r--r--tools/build/cross-build/include/linux/sys/time.h2
-rw-r--r--tools/build/cross-build/include/linux/sys/ttycom.h2
-rw-r--r--tools/build/cross-build/include/linux/sys/types.h2
-rw-r--r--tools/build/cross-build/include/linux/sys/ucred.h2
-rw-r--r--tools/build/cross-build/include/linux/sys/wait.h47
-rw-r--r--tools/build/cross-build/include/linux/time.h2
-rw-r--r--tools/build/cross-build/include/linux/unistd.h12
-rw-r--r--tools/build/cross-build/include/linux/wctype.h2
-rw-r--r--tools/build/cross-build/include/mac/libutil.h2
-rw-r--r--tools/build/cross-build/include/mac/nbtool_config.h2
-rw-r--r--tools/build/cross-build/include/mac/signal.h2
-rw-r--r--tools/build/cross-build/include/mac/stdlib.h3
-rw-r--r--tools/build/cross-build/include/mac/string.h2
-rw-r--r--tools/build/cross-build/include/mac/sys/_types.h2
-rw-r--r--tools/build/cross-build/include/mac/sys/endian.h2
-rw-r--r--tools/build/cross-build/include/mac/sys/linker_set.h140
-rw-r--r--tools/build/cross-build/include/mac/sys/stat.h2
-rw-r--r--tools/build/cross-build/include/mac/sys/time.h2
-rw-r--r--tools/build/cross-build/include/mac/unistd.h2
-rw-r--r--tools/build/cross-build/mkimg/Makefile1
-rw-r--r--tools/build/cross-build/mkimg/Makefile.depend1
-rw-r--r--tools/build/cross-build/progname.c2
-rw-r--r--tools/build/cross-build/secure_getenv.c16
-rwxr-xr-xtools/build/depend-cleanup.sh183
-rw-r--r--tools/build/dummy.c1
-rw-r--r--tools/build/fcntl.h2
-rwxr-xr-xtools/build/freebsd-yeet.pl147
-rw-r--r--tools/build/fspacectl.c2
-rw-r--r--tools/build/futimens.c2
-rw-r--r--tools/build/libc-bootstrap/libc_private.h2
-rw-r--r--tools/build/libc-bootstrap/namespace.h2
-rw-r--r--tools/build/libc-bootstrap/un-namespace.h2
-rwxr-xr-xtools/build/make.py105
-rw-r--r--tools/build/make_check/Makefile21
-rw-r--r--tools/build/make_check/check.mk1
-rw-r--r--tools/build/make_check/regress.t1
-rw-r--r--tools/build/make_check/shell_test.sh1
-rw-r--r--tools/build/mk/Makefile.boot15
-rw-r--r--tools/build/mk/Makefile.boot.pre1
-rw-r--r--tools/build/mk/OptionalObsoleteFiles.inc2440
-rw-r--r--tools/build/mk/bsd.lib.mk1
-rw-r--r--tools/build/mk/bsd.prog.mk1
-rw-r--r--tools/build/options/INIT_ALL21
-rw-r--r--tools/build/options/LIBC_MALLOC13
-rw-r--r--tools/build/options/WITHOUT_ACCT1
-rw-r--r--tools/build/options/WITHOUT_ACPI1
-rw-r--r--tools/build/options/WITHOUT_APM1
-rw-r--r--tools/build/options/WITHOUT_ASSERT_DEBUG1
-rw-r--r--tools/build/options/WITHOUT_AT1
-rw-r--r--tools/build/options/WITHOUT_ATM3
-rw-r--r--tools/build/options/WITHOUT_AUDIT1
-rw-r--r--tools/build/options/WITHOUT_AUTHPF1
-rw-r--r--tools/build/options/WITHOUT_AUTOFS1
-rw-r--r--tools/build/options/WITHOUT_AUTO_OBJ1
-rw-r--r--tools/build/options/WITHOUT_BHYVE3
-rw-r--r--tools/build/options/WITHOUT_BIND_NOW1
-rw-r--r--tools/build/options/WITHOUT_BLACKLIST1
-rw-r--r--tools/build/options/WITHOUT_BLACKLIST_SUPPORT1
-rw-r--r--tools/build/options/WITHOUT_BLUETOOTH1
-rw-r--r--tools/build/options/WITHOUT_BOOT1
-rw-r--r--tools/build/options/WITHOUT_BOOTPARAMD1
-rw-r--r--tools/build/options/WITHOUT_BOOTPD1
-rw-r--r--tools/build/options/WITHOUT_BSDINSTALL1
-rw-r--r--tools/build/options/WITHOUT_BSD_CPIO1
-rw-r--r--tools/build/options/WITHOUT_BSNMP1
-rw-r--r--tools/build/options/WITHOUT_BZIP21
-rw-r--r--tools/build/options/WITHOUT_BZIP2_SUPPORT1
-rw-r--r--tools/build/options/WITHOUT_CALENDAR1
-rw-r--r--tools/build/options/WITHOUT_CAPSICUM3
-rw-r--r--tools/build/options/WITHOUT_CAROOT1
-rw-r--r--tools/build/options/WITHOUT_CASPER3
-rw-r--r--tools/build/options/WITHOUT_CCD1
-rw-r--r--tools/build/options/WITHOUT_CDDL1
-rw-r--r--tools/build/options/WITHOUT_CLANG1
-rw-r--r--tools/build/options/WITHOUT_CLANG_BOOTSTRAP1
-rw-r--r--tools/build/options/WITHOUT_CLANG_FULL1
-rw-r--r--tools/build/options/WITHOUT_CLANG_IS_CC6
-rw-r--r--tools/build/options/WITHOUT_CLEAN1
-rw-r--r--tools/build/options/WITHOUT_CPP1
-rw-r--r--tools/build/options/WITHOUT_CROSS_COMPILER1
-rw-r--r--tools/build/options/WITHOUT_CRYPT1
-rw-r--r--tools/build/options/WITHOUT_CUSE1
-rw-r--r--tools/build/options/WITHOUT_CXGBETOOL1
-rw-r--r--tools/build/options/WITHOUT_CXX8
-rw-r--r--tools/build/options/WITHOUT_DEBUG_FILES1
-rw-r--r--tools/build/options/WITHOUT_DIALOG1
-rw-r--r--tools/build/options/WITHOUT_DICT1
-rw-r--r--tools/build/options/WITHOUT_DMAGENT1
-rw-r--r--tools/build/options/WITHOUT_DOCCOMPRESS1
-rw-r--r--tools/build/options/WITHOUT_DTRACE1
-rw-r--r--tools/build/options/WITHOUT_DYNAMICROOT1
-rw-r--r--tools/build/options/WITHOUT_EE1
-rw-r--r--tools/build/options/WITHOUT_EFI1
-rw-r--r--tools/build/options/WITHOUT_ELFTOOLCHAIN_BOOTSTRAP1
-rw-r--r--tools/build/options/WITHOUT_EXAMPLES1
-rw-r--r--tools/build/options/WITHOUT_FDT1
-rw-r--r--tools/build/options/WITHOUT_FILE1
-rw-r--r--tools/build/options/WITHOUT_FINGER1
-rw-r--r--tools/build/options/WITHOUT_FLOPPY1
-rw-r--r--tools/build/options/WITHOUT_FORMAT_EXTENSIONS1
-rw-r--r--tools/build/options/WITHOUT_FORTH1
-rw-r--r--tools/build/options/WITHOUT_FP_LIBC1
-rw-r--r--tools/build/options/WITHOUT_FREEBSD_UPDATE1
-rw-r--r--tools/build/options/WITHOUT_FTP1
-rw-r--r--tools/build/options/WITHOUT_GAMES1
-rw-r--r--tools/build/options/WITHOUT_GCC1
-rw-r--r--tools/build/options/WITHOUT_GCC_BOOTSTRAP1
-rw-r--r--tools/build/options/WITHOUT_GCOV1
-rw-r--r--tools/build/options/WITHOUT_GDB1
-rw-r--r--tools/build/options/WITHOUT_GH_BC1
-rw-r--r--tools/build/options/WITHOUT_GNU_DIFF1
-rw-r--r--tools/build/options/WITHOUT_GOOGLETEST1
-rw-r--r--tools/build/options/WITHOUT_GPIO1
-rw-r--r--tools/build/options/WITHOUT_GSSAPI1
-rw-r--r--tools/build/options/WITHOUT_HAST1
-rw-r--r--tools/build/options/WITHOUT_HTML1
-rw-r--r--tools/build/options/WITHOUT_HYPERV1
-rw-r--r--tools/build/options/WITHOUT_ICONV1
-rw-r--r--tools/build/options/WITHOUT_INCLUDES1
-rw-r--r--tools/build/options/WITHOUT_INET1
-rw-r--r--tools/build/options/WITHOUT_INET61
-rw-r--r--tools/build/options/WITHOUT_INET6_SUPPORT1
-rw-r--r--tools/build/options/WITHOUT_INETD1
-rw-r--r--tools/build/options/WITHOUT_INET_SUPPORT1
-rw-r--r--tools/build/options/WITHOUT_INFO1
-rw-r--r--tools/build/options/WITHOUT_INSTALLLIB1
-rw-r--r--tools/build/options/WITHOUT_IPFILTER1
-rw-r--r--tools/build/options/WITHOUT_IPFW1
-rw-r--r--tools/build/options/WITHOUT_IPSEC_SUPPORT1
-rw-r--r--tools/build/options/WITHOUT_ISCSI1
-rw-r--r--tools/build/options/WITHOUT_JAIL1
-rw-r--r--tools/build/options/WITHOUT_KDUMP1
-rw-r--r--tools/build/options/WITHOUT_KERBEROS1
-rw-r--r--tools/build/options/WITHOUT_KERBEROS_SUPPORT4
-rw-r--r--tools/build/options/WITHOUT_KERNEL_RETPOLINE1
-rw-r--r--tools/build/options/WITHOUT_KERNEL_SYMBOLS4
-rw-r--r--tools/build/options/WITHOUT_KVM1
-rw-r--r--tools/build/options/WITHOUT_KVM_SUPPORT1
-rw-r--r--tools/build/options/WITHOUT_LDNS1
-rw-r--r--tools/build/options/WITHOUT_LDNS_UTILS1
-rw-r--r--tools/build/options/WITHOUT_LEGACY_CONSOLE1
-rw-r--r--tools/build/options/WITHOUT_LIB321
-rw-r--r--tools/build/options/WITHOUT_LLD1
-rw-r--r--tools/build/options/WITHOUT_LLDB1
-rw-r--r--tools/build/options/WITHOUT_LLD_BOOTSTRAP1
-rw-r--r--tools/build/options/WITHOUT_LLD_IS_LD7
-rw-r--r--tools/build/options/WITHOUT_LLVM_ASSERTIONS1
-rw-r--r--tools/build/options/WITHOUT_LLVM_COV1
-rw-r--r--tools/build/options/WITHOUT_LLVM_CXXFILT1
-rw-r--r--tools/build/options/WITHOUT_LLVM_TARGET_AARCH641
-rw-r--r--tools/build/options/WITHOUT_LLVM_TARGET_ALL1
-rw-r--r--tools/build/options/WITHOUT_LLVM_TARGET_ARM1
-rw-r--r--tools/build/options/WITHOUT_LLVM_TARGET_MIPS1
-rw-r--r--tools/build/options/WITHOUT_LLVM_TARGET_POWERPC1
-rw-r--r--tools/build/options/WITHOUT_LLVM_TARGET_RISCV1
-rw-r--r--tools/build/options/WITHOUT_LLVM_TARGET_SPARC1
-rw-r--r--tools/build/options/WITHOUT_LLVM_TARGET_X861
-rw-r--r--tools/build/options/WITHOUT_LOADER_GELI1
-rw-r--r--tools/build/options/WITHOUT_LOADER_KBOOT1
-rw-r--r--tools/build/options/WITHOUT_LOADER_LUA1
-rw-r--r--tools/build/options/WITHOUT_LOADER_OFW1
-rw-r--r--tools/build/options/WITHOUT_LOADER_UBOOT1
-rw-r--r--tools/build/options/WITHOUT_LOADER_ZFS1
-rw-r--r--tools/build/options/WITHOUT_LOCALES1
-rw-r--r--tools/build/options/WITHOUT_LOCATE1
-rw-r--r--tools/build/options/WITHOUT_LPR1
-rw-r--r--tools/build/options/WITHOUT_LS_COLORS1
-rw-r--r--tools/build/options/WITHOUT_MACHDEP_OPTIMIZATIONS1
-rw-r--r--tools/build/options/WITHOUT_MAIL1
-rw-r--r--tools/build/options/WITHOUT_MAILWRAPPER1
-rw-r--r--tools/build/options/WITHOUT_MAKE1
-rw-r--r--tools/build/options/WITHOUT_MAKE_CHECK_USE_SANDBOX1
-rw-r--r--tools/build/options/WITHOUT_MALLOC_PRODUCTION1
-rw-r--r--tools/build/options/WITHOUT_MAN1
-rw-r--r--tools/build/options/WITHOUT_MANCOMPRESS1
-rw-r--r--tools/build/options/WITHOUT_MANSPLITPKG1
-rw-r--r--tools/build/options/WITHOUT_MAN_UTILS1
-rw-r--r--tools/build/options/WITHOUT_MLX5TOOL1
-rw-r--r--tools/build/options/WITHOUT_MODULE_DRM1
-rw-r--r--tools/build/options/WITHOUT_MODULE_DRM21
-rw-r--r--tools/build/options/WITHOUT_NAND2
-rw-r--r--tools/build/options/WITHOUT_NCP1
-rw-r--r--tools/build/options/WITHOUT_NETCAT1
-rw-r--r--tools/build/options/WITHOUT_NETGRAPH1
-rw-r--r--tools/build/options/WITHOUT_NETGRAPH_SUPPORT1
-rw-r--r--tools/build/options/WITHOUT_NETLINK3
-rw-r--r--tools/build/options/WITHOUT_NETLINK_SUPPORT4
-rw-r--r--tools/build/options/WITHOUT_NIS1
-rw-r--r--tools/build/options/WITHOUT_NLS1
-rw-r--r--tools/build/options/WITHOUT_NLS_CATALOGS1
-rw-r--r--tools/build/options/WITHOUT_NS_CACHING1
-rw-r--r--tools/build/options/WITHOUT_NTP1
-rw-r--r--tools/build/options/WITHOUT_NUAGEINIT1
-rw-r--r--tools/build/options/WITHOUT_NVME1
-rw-r--r--tools/build/options/WITHOUT_OFED5
-rw-r--r--tools/build/options/WITHOUT_OPENMP1
-rw-r--r--tools/build/options/WITHOUT_OPENSSH1
-rw-r--r--tools/build/options/WITHOUT_OPENSSL1
-rw-r--r--tools/build/options/WITHOUT_PAM1
-rw-r--r--tools/build/options/WITHOUT_PAM_SUPPORT1
-rw-r--r--tools/build/options/WITHOUT_PF1
-rw-r--r--tools/build/options/WITHOUT_PIE1
-rw-r--r--tools/build/options/WITHOUT_PKGBOOTSTRAP1
-rw-r--r--tools/build/options/WITHOUT_PMC1
-rw-r--r--tools/build/options/WITHOUT_PORTSNAP4
-rw-r--r--tools/build/options/WITHOUT_PPP1
-rw-r--r--tools/build/options/WITHOUT_PROFILE1
-rw-r--r--tools/build/options/WITHOUT_PTHREADS_ASSERTIONS1
-rw-r--r--tools/build/options/WITHOUT_QUOTAS1
-rw-r--r--tools/build/options/WITHOUT_RADIUS_SUPPORT1
-rw-r--r--tools/build/options/WITHOUT_RBOOTD1
-rw-r--r--tools/build/options/WITHOUT_RELRO4
-rw-r--r--tools/build/options/WITHOUT_REPRODUCIBLE_BUILD1
-rw-r--r--tools/build/options/WITHOUT_RESCUE1
-rw-r--r--tools/build/options/WITHOUT_RETPOLINE1
-rw-r--r--tools/build/options/WITHOUT_ROUTED1
-rw-r--r--tools/build/options/WITHOUT_SCTP_SUPPORT4
-rw-r--r--tools/build/options/WITHOUT_SENDMAIL1
-rw-r--r--tools/build/options/WITHOUT_SERVICESDB1
-rw-r--r--tools/build/options/WITHOUT_SETUID_LOGIN1
-rw-r--r--tools/build/options/WITHOUT_SHAREDOCS1
-rw-r--r--tools/build/options/WITHOUT_SHARED_TOOLCHAIN6
-rw-r--r--tools/build/options/WITHOUT_SOURCELESS1
-rw-r--r--tools/build/options/WITHOUT_SOURCELESS_HOST1
-rw-r--r--tools/build/options/WITHOUT_SOURCELESS_UCODE1
-rw-r--r--tools/build/options/WITHOUT_SPLIT_KERNEL_DEBUG3
-rw-r--r--tools/build/options/WITHOUT_SSP3
-rw-r--r--tools/build/options/WITHOUT_STATS1
-rw-r--r--tools/build/options/WITHOUT_SYSCONS1
-rw-r--r--tools/build/options/WITHOUT_SYSTEM_COMPILER1
-rw-r--r--tools/build/options/WITHOUT_SYSTEM_LINKER1
-rw-r--r--tools/build/options/WITHOUT_TALK1
-rw-r--r--tools/build/options/WITHOUT_TCP_WRAPPERS1
-rw-r--r--tools/build/options/WITHOUT_TCSH1
-rw-r--r--tools/build/options/WITHOUT_TELNET1
-rw-r--r--tools/build/options/WITHOUT_TESTS1
-rw-r--r--tools/build/options/WITHOUT_TESTS_SUPPORT1
-rw-r--r--tools/build/options/WITHOUT_TEXTPROC1
-rw-r--r--tools/build/options/WITHOUT_TFTP1
-rw-r--r--tools/build/options/WITHOUT_TOOLCHAIN3
-rw-r--r--tools/build/options/WITHOUT_UNBOUND1
-rw-r--r--tools/build/options/WITHOUT_UNDEFINED_VERSION2
-rw-r--r--tools/build/options/WITHOUT_UNIFIED_OBJDIR6
-rw-r--r--tools/build/options/WITHOUT_USB1
-rw-r--r--tools/build/options/WITHOUT_USB_GADGET_EXAMPLES1
-rw-r--r--tools/build/options/WITHOUT_UTMPX1
-rw-r--r--tools/build/options/WITHOUT_VI1
-rw-r--r--tools/build/options/WITHOUT_VT1
-rw-r--r--tools/build/options/WITHOUT_WARNS1
-rw-r--r--tools/build/options/WITHOUT_WERROR1
-rw-r--r--tools/build/options/WITHOUT_WIRELESS1
-rw-r--r--tools/build/options/WITHOUT_WIRELESS_SUPPORT1
-rw-r--r--tools/build/options/WITHOUT_WPA_SUPPLICANT_EAPOL1
-rw-r--r--tools/build/options/WITHOUT_ZFS10
-rw-r--r--tools/build/options/WITHOUT_ZONEINFO1
-rw-r--r--tools/build/options/WITH_ASAN4
-rw-r--r--tools/build/options/WITH_AUTO_OBJ1
-rw-r--r--tools/build/options/WITH_BEARSSL3
-rw-r--r--tools/build/options/WITH_BHYVE_SNAPSHOT1
-rw-r--r--tools/build/options/WITH_BIND_NOW8
-rw-r--r--tools/build/options/WITH_CCACHE_BUILD1
-rw-r--r--tools/build/options/WITH_CLANG1
-rw-r--r--tools/build/options/WITH_CLANG_BOOTSTRAP1
-rw-r--r--tools/build/options/WITH_CLANG_EXTRAS1
-rw-r--r--tools/build/options/WITH_CLANG_FORMAT1
-rw-r--r--tools/build/options/WITH_CLANG_FULL1
-rw-r--r--tools/build/options/WITH_CLANG_IS_CC6
-rw-r--r--tools/build/options/WITH_CTF1
-rw-r--r--tools/build/options/WITH_CXGBETOOL1
-rw-r--r--tools/build/options/WITH_CXX5
-rw-r--r--tools/build/options/WITH_DEBUG_FILES1
-rw-r--r--tools/build/options/WITH_DETECT_TZ_CHANGES1
-rw-r--r--tools/build/options/WITH_DIALOG6
-rw-r--r--tools/build/options/WITH_DIRDEPS_BUILD12
-rw-r--r--tools/build/options/WITH_DIRDEPS_CACHE1
-rw-r--r--tools/build/options/WITH_DISK_IMAGE_TOOLS_BOOTSTRAP6
-rw-r--r--tools/build/options/WITH_DTRACE_ASAN4
-rw-r--r--tools/build/options/WITH_DTRACE_TESTS1
-rw-r--r--tools/build/options/WITH_EFI1
-rw-r--r--tools/build/options/WITH_EXPERIMENTAL1
-rw-r--r--tools/build/options/WITH_EXTRA_TCP_STACKS2
-rw-r--r--tools/build/options/WITH_FDT1
-rw-r--r--tools/build/options/WITH_GCC1
-rw-r--r--tools/build/options/WITH_GCC_BOOTSTRAP1
-rw-r--r--tools/build/options/WITH_GCOV1
-rw-r--r--tools/build/options/WITH_GDB1
-rw-r--r--tools/build/options/WITH_GH_BC1
-rw-r--r--tools/build/options/WITH_GNU_DIFF1
-rw-r--r--tools/build/options/WITH_GOOGLETEST1
-rw-r--r--tools/build/options/WITH_HESIOD1
-rw-r--r--tools/build/options/WITH_HYPERV1
-rw-r--r--tools/build/options/WITH_INIT_ALL_PATTERN5
-rw-r--r--tools/build/options/WITH_INIT_ALL_ZERO4
-rw-r--r--tools/build/options/WITH_INSTALL_AS_USER1
-rw-r--r--tools/build/options/WITH_KERNEL_BIN8
-rw-r--r--tools/build/options/WITH_KERNEL_RETPOLINE1
-rw-r--r--tools/build/options/WITH_LIB323
-rw-r--r--tools/build/options/WITH_LIBSOFT1
-rw-r--r--tools/build/options/WITH_LLD1
-rw-r--r--tools/build/options/WITH_LLDB1
-rw-r--r--tools/build/options/WITH_LLD_BOOTSTRAP1
-rw-r--r--tools/build/options/WITH_LLD_IS_LD2
-rw-r--r--tools/build/options/WITH_LLVM_ASSERTIONS1
-rw-r--r--tools/build/options/WITH_LLVM_BINUTILS20
-rw-r--r--tools/build/options/WITH_LLVM_COV1
-rw-r--r--tools/build/options/WITH_LLVM_CXXFILT1
-rw-r--r--tools/build/options/WITH_LLVM_FULL_DEBUGINFO2
-rw-r--r--tools/build/options/WITH_LLVM_TARGET_AARCH641
-rw-r--r--tools/build/options/WITH_LLVM_TARGET_ALL1
-rw-r--r--tools/build/options/WITH_LLVM_TARGET_ARM1
-rw-r--r--tools/build/options/WITH_LLVM_TARGET_BPF1
-rw-r--r--tools/build/options/WITH_LLVM_TARGET_MIPS1
-rw-r--r--tools/build/options/WITH_LLVM_TARGET_POWERPC1
-rw-r--r--tools/build/options/WITH_LLVM_TARGET_RISCV1
-rw-r--r--tools/build/options/WITH_LLVM_TARGET_SPARC1
-rw-r--r--tools/build/options/WITH_LLVM_TARGET_X861
-rw-r--r--tools/build/options/WITH_LOADER_BIOS_TEXTONLY3
-rw-r--r--tools/build/options/WITH_LOADER_EFI_SECUREBOOT2
-rw-r--r--tools/build/options/WITH_LOADER_FIREWIRE3
-rw-r--r--tools/build/options/WITH_LOADER_GELI1
-rw-r--r--tools/build/options/WITH_LOADER_KBOOT1
-rw-r--r--tools/build/options/WITH_LOADER_LUA1
-rw-r--r--tools/build/options/WITH_LOADER_OFW1
-rw-r--r--tools/build/options/WITH_LOADER_UBOOT1
-rw-r--r--tools/build/options/WITH_LOADER_VERBOSE1
-rw-r--r--tools/build/options/WITH_LOADER_VERIEXEC1
-rw-r--r--tools/build/options/WITH_LOADER_VERIEXEC_PASS_MANIFEST1
-rw-r--r--tools/build/options/WITH_LOADER_VERIEXEC_VECTX7
-rw-r--r--tools/build/options/WITH_MALLOC_PRODUCTION1
-rw-r--r--tools/build/options/WITH_MANSPLITPKG1
-rw-r--r--tools/build/options/WITH_META_ERROR_TARGET13
-rw-r--r--tools/build/options/WITH_META_MODE1
-rw-r--r--tools/build/options/WITH_MLX5TOOL1
-rw-r--r--tools/build/options/WITH_MODULE_DRM1
-rw-r--r--tools/build/options/WITH_MODULE_DRM21
-rw-r--r--tools/build/options/WITH_NAND2
-rw-r--r--tools/build/options/WITH_NETLINK3
-rw-r--r--tools/build/options/WITH_NETLINK_SUPPORT4
-rw-r--r--tools/build/options/WITH_NVME1
-rw-r--r--tools/build/options/WITH_OFED3
-rw-r--r--tools/build/options/WITH_OFED_EXTRA1
-rw-r--r--tools/build/options/WITH_OPENLDAP1
-rw-r--r--tools/build/options/WITH_OPENMP1
-rw-r--r--tools/build/options/WITH_PIE1
-rw-r--r--tools/build/options/WITH_PROFILE5
-rw-r--r--tools/build/options/WITH_RATELIMIT1
-rw-r--r--tools/build/options/WITH_RELRO5
-rw-r--r--tools/build/options/WITH_REPRODUCIBLE_BUILD1
-rw-r--r--tools/build/options/WITH_RETPOLINE1
-rw-r--r--tools/build/options/WITH_RPCBIND_WARMSTART_SUPPORT1
-rw-r--r--tools/build/options/WITH_SENDMAIL1
-rw-r--r--tools/build/options/WITH_SHARED_TOOLCHAIN6
-rw-r--r--tools/build/options/WITH_SORT_THREADS1
-rw-r--r--tools/build/options/WITH_SSP3
-rw-r--r--tools/build/options/WITH_STAGING1
-rw-r--r--tools/build/options/WITH_STAGING_MAN1
-rw-r--r--tools/build/options/WITH_STAGING_PROG1
-rw-r--r--tools/build/options/WITH_STALE_STAGED1
-rw-r--r--tools/build/options/WITH_STATS1
-rw-r--r--tools/build/options/WITH_SYSROOT1
-rw-r--r--tools/build/options/WITH_SYSTEM_COMPILER1
-rw-r--r--tools/build/options/WITH_SYSTEM_LINKER1
-rw-r--r--tools/build/options/WITH_TCP_WRAPPERS1
-rw-r--r--tools/build/options/WITH_TOOLCHAIN2
-rw-r--r--tools/build/options/WITH_UBSAN4
-rw-r--r--tools/build/options/WITH_UNIFIED_OBJDIR6
-rw-r--r--tools/build/options/WITH_USB_GADGET_EXAMPLES1
-rw-r--r--tools/build/options/WITH_VERIEXEC1
-rw-r--r--tools/build/options/WITH_ZFS3
-rw-r--r--tools/build/options/WITH_ZONEINFO_LEAPSECONDS_SUPPORT1
-rw-r--r--tools/build/options/WITH_ZONEINFO_OLD_TIMEZONES_SUPPORT1
-rwxr-xr-xtools/build/options/makeman127
-rw-r--r--tools/build/stat.h2
-rw-r--r--tools/build/stdlib.h2
-rw-r--r--tools/build/strings.h2
-rw-r--r--tools/build/test-includes/Makefile58
-rw-r--r--tools/build/test-includes/badfiles.inc326
-rw-r--r--tools/build/utimensat.c2
-rw-r--r--tools/bus_space/C/Makefile1
-rw-r--r--tools/bus_space/C/lang.c3
-rw-r--r--tools/bus_space/C/libbus.h2
-rw-r--r--tools/bus_space/Makefile1
-rw-r--r--tools/bus_space/Makefile.inc1
-rw-r--r--tools/bus_space/Python/Makefile1
-rw-r--r--tools/bus_space/Python/lang.c2
-rw-r--r--tools/bus_space/bus.c2
-rw-r--r--tools/bus_space/bus.h2
-rw-r--r--tools/bus_space/busdma.c2
-rw-r--r--tools/bus_space/busdma.h2
-rw-r--r--tools/bus_space/examples/am79c900_diag.py1
-rw-r--r--tools/debugscripts/README1
-rw-r--r--tools/debugscripts/dot.gdbinit1
-rw-r--r--tools/debugscripts/gdbinit.i3861
-rw-r--r--tools/debugscripts/gdbinit.kernel1
-rw-r--r--tools/debugscripts/netstat-anr.gdb1
-rw-r--r--tools/diag/README1
-rw-r--r--tools/diag/dumpvfscache/Makefile1
-rw-r--r--tools/diag/dumpvfscache/dumpvfscache.c1
-rw-r--r--tools/diag/localeck/Makefile1
-rw-r--r--tools/diag/localeck/docheck.sh1
-rw-r--r--tools/diag/localeck/localeck.c2
-rw-r--r--tools/diag/prtblknos/Makefile1
-rw-r--r--tools/diag/prtblknos/README1
-rw-r--r--tools/diag/prtblknos/main.c12
-rw-r--r--tools/diag/prtblknos/prtblknos.c32
-rwxr-xr-xtools/ifnet/convert_ifapi.sh (renamed from tools/ifnet/convert_drvapi.sh)247
-rw-r--r--tools/install.sh1
-rw-r--r--tools/kerneldoc/Doxyfile1
-rw-r--r--tools/kerneldoc/Makefile1
-rw-r--r--tools/kerneldoc/subsys/Dependencies1
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-cam2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-crypto2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_aac2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_aacraid2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_acpi_support2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_acpica2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_adb2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_adlink2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ae2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_age2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_agp2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ahci2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_aic7xxx2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_al_eth2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_alc2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ale2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_alpm2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_altera2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_amd_ecc_inject2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_amdgpio2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_amdpm2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_amdsbwd2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_amdsmb2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_amdsmn2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_amdtemp2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_amr21
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_an2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_arcmsr2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_asmc2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ata2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ath2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_atkbdc2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_axgbe2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_bce2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_beri2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_bfe2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_bge2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_bhnd2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_bnxt2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_bvm2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_bwi2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_bwn2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_bxe2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_cadence2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_cardbus2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_cas2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ce2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_cesa2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_cfe2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_cfi2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_chromebook_platform2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ciss2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_coretemp2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_cp2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_cpuctl2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_cpufreq2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_cxgb2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_cxgbe2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_cyapa2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_dc2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_dcons2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_dme21
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_dpaa2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_dpms2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_dwc2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_e10002
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_efidev2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ena2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_esp21
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_et2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_etherswitch2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_evdev2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_exca2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_extres2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_fb2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_fdc2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_fdt2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ffec2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_filemon2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_firewire2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_flash2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_fxp2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_gem2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_glxiic2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_glxsb2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_gpio2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_gxemul21
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_hdmi2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_hifn2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_hpt27xx2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_hptiop2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_hptmv2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_hptnr2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_hptrr2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_hwpmc2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_hyperv2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ic2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ice2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ichiic2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ichsmb2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ichwd2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ida2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_iicbus2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_iir21
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_imcsmb2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_intel2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_intpm2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_io2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ioat2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ipmi2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ips2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ipw2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_isci2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_iscsi2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_iscsi_initiator21
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_iser2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_isl2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ismt2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_isp2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ispfw2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_iwi2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_iwm2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_iwn2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ixgbe2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ixl2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_jedec_dimm2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_jme2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_kbd2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_kbdmux2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ksyms2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_le2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_led2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_lge2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_liquidio2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_malo2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mbox2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_md2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mdio2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mem2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mfi2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mge2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mii2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mlx2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mlx42
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mlx52
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mly21
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mmc2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mmcnull2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mn2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mpr2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mps2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mpt2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mrsas2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_msk2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mthca2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mvs2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mwl2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_mxge2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_my2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_nctgpio2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_neta2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_netfpga10g2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_netmap2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_nfe2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_nfsmb2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_nge2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_nmdm2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ntb2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_null2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_nvd2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_nvdimm2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_nvme2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_nvram2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_nvram2env21
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_oce2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ocs_fc2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ofw2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_otus2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ow2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_pbio2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_pccard2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_pccbb2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_pcf2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_pci2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_pms2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_powermac_nvram2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ppbus2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ppc2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_proto2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_psci2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_pst2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_pty2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_puc2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_pwm2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_qlnx2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_qlxgb2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_qlxgbe2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_qlxge2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_quicc2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ral2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_random2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_rccgpio2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_re2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_rl2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_rndtest2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_rt21
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_rtwn2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_safe2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_sbni2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_scc2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_sdhci2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_sec2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_sfxge2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_sge2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_siis2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_sis2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_sk2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_smartpqi2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_smbus2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_smc2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_snp2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_sound2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_speaker2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_spibus2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ste2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_stge2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_sym2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_syscons2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_tcp_log2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_tdfx2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_terasic2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_ti2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_tpm2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_tsec2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_twa21
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_twe2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_tws2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_uart2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_usb2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_veriexec2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_vge2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_viapm2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_viawd2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_videomode2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_virtio2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_vkbd2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_vmware2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_vnic2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_vr2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_vt2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_vte2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_watchdog2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_wbwd2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_wpi2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_wtap2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_xdma2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_xen2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_xilinx2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-dev_xl2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-geom2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-kern2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-libkern2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-linux2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-net802112
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-netgraph2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-netinet2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-netinet62
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-netipsec2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-opencrypto2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-vm2
-rw-r--r--tools/kerneldoc/subsys/Doxyfile-xen2
-rw-r--r--tools/kerneldoc/subsys/Makefile1
-rw-r--r--tools/kerneldoc/subsys/README1
-rw-r--r--tools/kerneldoc/subsys/common-Doxyfile2
-rw-r--r--tools/kerneldoc/subsys/notreviewed.dox1
-rw-r--r--tools/lua/template.lua1
-rw-r--r--tools/make_libdeps.sh1
-rw-r--r--tools/pkgbase/README.md2
-rw-r--r--tools/pkgbase/metalog_reader.lua44
-rw-r--r--tools/regression/README1
-rw-r--r--tools/regression/TODO1
-rw-r--r--tools/regression/aio/aiop/Makefile1
-rw-r--r--tools/regression/aio/aiop/aiop.c3
-rw-r--r--tools/regression/atm/Funcs.sh53
-rw-r--r--tools/regression/atm/README14
-rw-r--r--tools/regression/atm/RunTest.sh45
-rw-r--r--tools/regression/atm/proto_cc/RunTest.sh10
-rw-r--r--tools/regression/atm/proto_sscfu/RunTest.sh11
-rw-r--r--tools/regression/atm/proto_sscop/RunTest.sh10
-rw-r--r--tools/regression/atm/proto_uni/RunTest.sh12
-rw-r--r--tools/regression/audit/audit_pipe_ioctl/Makefile1
-rw-r--r--tools/regression/audit/audit_pipe_ioctl/audit_pipe_ioctl.c2
-rw-r--r--tools/regression/bpf/Makefile1
-rw-r--r--tools/regression/bpf/bpf_filter/Makefile1
-rw-r--r--tools/regression/bpf/bpf_filter/bpf_test.c2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0001.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0002.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0003.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0004.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0005.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0006.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0007.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0008.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0009.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0010.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0011.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0012.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0013.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0014.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0015.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0016.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0017.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0018.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0019.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0020.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0021.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0022.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0023.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0024.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0025.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0026.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0027.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0028.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0029.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0030.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0031.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0032.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0033.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0034.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0035.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0036.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0037.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0038.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0039.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0040.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0041.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0042.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0043.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0044.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0045.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0046.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0047.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0048.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0049.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0050.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0051.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0052.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0053.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0054.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0055.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0056.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0057.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0058.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0059.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0060.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0061.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0062.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0063.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0064.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0065.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0066.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0067.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0068.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0069.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0070.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0071.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0072.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0073.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0074.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0075.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0076.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0077.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0078.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0079.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0080.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0081.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0082.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0083.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0084.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0085.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0086.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0087.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0088.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0089.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0090.h2
-rw-r--r--tools/regression/bpf/bpf_filter/tests/test0091.h2
-rw-r--r--tools/regression/capsicum/syscalls/Makefile1
-rw-r--r--tools/regression/capsicum/syscalls/cap_fcntls_limit.c3
-rw-r--r--tools/regression/capsicum/syscalls/cap_getmode.c3
-rw-r--r--tools/regression/capsicum/syscalls/cap_ioctls_limit.c3
-rw-r--r--tools/regression/capsicum/syscalls/misc.c3
-rw-r--r--tools/regression/capsicum/syscalls/misc.h2
-rw-r--r--tools/regression/ccd/layout/Makefile1
-rw-r--r--tools/regression/ccd/layout/a.c1
-rw-r--r--tools/regression/ccd/layout/b.c1
-rw-r--r--tools/regression/ccd/layout/ccd.sh1
-rw-r--r--tools/regression/ccd/layout/ccd0.sh1
-rw-r--r--tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_01
-rw-r--r--tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_41
-rw-r--r--tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_01
-rw-r--r--tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_21
-rw-r--r--tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_41
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_01
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_41
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_01
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_21
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_41
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_01
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_41
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_01
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_21
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_41
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_01
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_21
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_41
-rw-r--r--tools/regression/compat32/aarch64/Makefile4
-rw-r--r--tools/regression/compat32/aarch64/swp_test_impl.S410
-rw-r--r--tools/regression/doat/Makefile1
-rw-r--r--tools/regression/doat/README1
-rw-r--r--tools/regression/doat/doat.c2
-rw-r--r--tools/regression/environ/Makefile1
-rw-r--r--tools/regression/environ/Makefile.envctl1
-rw-r--r--tools/regression/environ/Makefile.retention1
-rw-r--r--tools/regression/environ/Makefile.timings1
-rw-r--r--tools/regression/environ/envctl.c3
-rw-r--r--tools/regression/environ/envtest.t1
-rw-r--r--tools/regression/environ/retention.c3
-rw-r--r--tools/regression/environ/timings.c3
-rw-r--r--tools/regression/ethernet/ethermulti/Makefile1
-rw-r--r--tools/regression/ethernet/ethermulti/ethermulti.c3
-rw-r--r--tools/regression/fsx/Makefile1
-rw-r--r--tools/regression/fsx/fsx.c27
-rw-r--r--tools/regression/gaithrstress/Makefile1
-rw-r--r--tools/regression/gaithrstress/gaithrstress.c2
-rw-r--r--tools/regression/geom/ConfCmp/ConfCmp.c2
-rw-r--r--tools/regression/geom/ConfCmp/Makefile1
-rw-r--r--tools/regression/geom/Data/disk.beast.da0.xml1
-rw-r--r--tools/regression/geom/Data/disk.critter.ad0.xml1
-rw-r--r--tools/regression/geom/Data/disk.empty.flp.xml1
-rw-r--r--tools/regression/geom/Data/disk.far.ad0.xml1
-rw-r--r--tools/regression/geom/Data/disk.flat.da1.xml1
-rw-r--r--tools/regression/geom/Data/disk.kern.flp.xml1
-rw-r--r--tools/regression/geom/Data/disk.msdos.ext.xml1
-rw-r--r--tools/regression/geom/Data/disk.msdos.flp.xml1
-rw-r--r--tools/regression/geom/Data/disk.typo.ad0.xml1
-rw-r--r--tools/regression/geom/MdLoad/Makefile1
-rw-r--r--tools/regression/geom/MdLoad/MdLoad.c2
-rw-r--r--tools/regression/geom/Ref/disk.apple.xml1
-rw-r--r--tools/regression/geom/Ref/disk.beast.da0.xml1
-rw-r--r--tools/regression/geom/Ref/disk.critter.ad0.xml1
-rw-r--r--tools/regression/geom/Ref/disk.empty.flp.xml1
-rw-r--r--tools/regression/geom/Ref/disk.far.ad0.xml1
-rw-r--r--tools/regression/geom/Ref/disk.flat.da1.xml1
-rw-r--r--tools/regression/geom/Ref/disk.kern.flp.xml1
-rw-r--r--tools/regression/geom/Ref/disk.msdos.ext.xml1
-rw-r--r--tools/regression/geom/Ref/disk.msdos.flp.xml1
-rw-r--r--tools/regression/geom/Ref/disk.typo.ad0.xml1
-rw-r--r--tools/regression/geom/RunTest.sh1
-rw-r--r--tools/regression/geom/RunTest.t1
-rw-r--r--tools/regression/geom_gpt/Makefile1
-rw-r--r--tools/regression/geom_gpt/gctl_test.t1
-rw-r--r--tools/regression/geom_gpt/gctl_test_helper.c3
-rw-r--r--tools/regression/include/stdatomic/Makefile1
-rw-r--r--tools/regression/include/stdatomic/Makefile.depend1
-rw-r--r--tools/regression/include/stdatomic/logic.c2
-rw-r--r--tools/regression/include/tgmath/Makefile1
-rw-r--r--tools/regression/include/tgmath/tgmath.c2
-rw-r--r--tools/regression/include/tgmath/tgmath.t1
-rwxr-xr-xtools/regression/ipfw/fwd/vimage-fwd.sh1
-rw-r--r--tools/regression/ipsec/ipsec.t1
-rw-r--r--tools/regression/ipsec/ipsec6.t1
-rw-r--r--tools/regression/iscsi/iscsi-test.sh1
-rw-r--r--tools/regression/kgssapi/Makefile1
-rw-r--r--tools/regression/kgssapi/gsstest.c2
-rw-r--r--tools/regression/kthread/kld/Makefile1
-rw-r--r--tools/regression/kthread/kld/kthrdlk.c3
-rw-r--r--tools/regression/lib/libc/regex/Makefile1
-rw-r--r--tools/regression/mlock/Makefile1
-rw-r--r--tools/regression/mlock/mlock.c2
-rw-r--r--tools/regression/msdosfs/msdosfstest-2.sh1
-rw-r--r--tools/regression/msdosfs/msdosfstest-3.sh1
-rw-r--r--tools/regression/msdosfs/msdosfstest-4.sh1
-rw-r--r--tools/regression/msdosfs/msdosfstest-5.sh1
-rw-r--r--tools/regression/msdosfs/msdosfstest-6.sh1
-rw-r--r--tools/regression/msdosfs/msdosfstest.sh1
-rw-r--r--tools/regression/net/if_tap/test-tap.sh1
-rw-r--r--tools/regression/net80211/ccmp/Makefile1
-rw-r--r--tools/regression/net80211/ccmp/test_ccmp.c2
-rw-r--r--tools/regression/net80211/tkip/Makefile1
-rw-r--r--tools/regression/net80211/tkip/test_tkip.c2
-rw-r--r--tools/regression/net80211/wep/Makefile1
-rw-r--r--tools/regression/net80211/wep/test_wep.c2
-rw-r--r--tools/regression/netinet/arphold/Makefile1
-rw-r--r--tools/regression/netinet/arphold/arphold.c2
-rw-r--r--tools/regression/netinet/arphold/arphold.t1
-rw-r--r--tools/regression/netinet/ip_id_period/ip_id_period.py1
-rw-r--r--tools/regression/netinet/ipbroadcast/Makefile1
-rw-r--r--tools/regression/netinet/ipbroadcast/ipbroadcast.c3
-rw-r--r--tools/regression/netinet/ipdivert/Makefile1
-rw-r--r--tools/regression/netinet/ipdivert/ipdivert.c4
-rw-r--r--tools/regression/netinet/ipmulticast/Makefile1
-rw-r--r--tools/regression/netinet/ipmulticast/ipmulticast.c3
-rw-r--r--tools/regression/netinet/ipsockopt/Makefile1
-rw-r--r--tools/regression/netinet/ipsockopt/ipsockopt.c2
-rw-r--r--tools/regression/netinet/ipsockopt/ipsockopt.t1
-rw-r--r--tools/regression/netinet/msocket/Makefile1
-rw-r--r--tools/regression/netinet/msocket/msocket.c2
-rw-r--r--tools/regression/netinet/msocket_ifnet_remove/Makefile1
-rw-r--r--tools/regression/netinet/msocket_ifnet_remove/msocket_ifnet_remove.c2
-rw-r--r--tools/regression/netinet/rawconnect/Makefile1
-rw-r--r--tools/regression/netinet/rawconnect/rawconnect.c2
-rw-r--r--tools/regression/netinet/rawconnect/rawconnect.t1
-rw-r--r--tools/regression/netinet/tcpconnect/Makefile1
-rw-r--r--tools/regression/netinet/tcpconnect/README.tcp-md51
-rw-r--r--tools/regression/netinet/tcpconnect/tcpconnect.c2
-rw-r--r--tools/regression/netinet/tcpdrop/Makefile1
-rw-r--r--tools/regression/netinet/tcpdrop/tcpdrop.c2
-rw-r--r--tools/regression/netinet/tcpfullwindowrst/Makefile1
-rw-r--r--tools/regression/netinet/tcpfullwindowrst/tcpfullwindowrst.t1
-rw-r--r--tools/regression/netinet/tcpfullwindowrst/tcpfullwindowrsttest.c2
-rw-r--r--tools/regression/netinet/tcpsockclosebeforeaccept/Makefile1
-rw-r--r--tools/regression/netinet/tcpsockclosebeforeaccept/tcpsockclosebeforeaccept.c2
-rw-r--r--tools/regression/netinet/tcpsocktimewait/Makefile1
-rw-r--r--tools/regression/netinet/tcpsocktimewait/tcpsocktimewait.c2
-rw-r--r--tools/regression/netinet/tcpstream/Makefile1
-rw-r--r--tools/regression/netinet/tcpstream/README2
-rw-r--r--tools/regression/netinet/tcpstream/tcpstream.c4
-rw-r--r--tools/regression/netinet/udpconnectjail/Makefile1
-rw-r--r--tools/regression/netinet/udpconnectjail/udpconnectjail.c2
-rw-r--r--tools/regression/netinet/udpzerobyte/Makefile1
-rw-r--r--tools/regression/netinet/udpzerobyte/udpzerobyte.c2
-rw-r--r--tools/regression/netinet6/icmp6_filter/Makefile1
-rw-r--r--tools/regression/netinet6/icmp6_filter/icmp6_filter.c2
-rw-r--r--tools/regression/netinet6/inet6_rth/Makefile1
-rw-r--r--tools/regression/netinet6/inet6_rth/inet6_rth-segments.c3
-rw-r--r--tools/regression/netinet6/inet6_rth/test_subr.c3
-rw-r--r--tools/regression/netinet6/inet6_rth/test_subr.h2
-rw-r--r--tools/regression/netinet6/ip6_sockets/Makefile1
-rw-r--r--tools/regression/netinet6/ip6_sockets/ip6_sockets.c2
-rw-r--r--tools/regression/nfsmmap/Makefile1
-rw-r--r--tools/regression/nfsmmap/README1
-rw-r--r--tools/regression/nfsmmap/test1/Makefile1
-rw-r--r--tools/regression/nfsmmap/test2/Makefile1
-rw-r--r--tools/regression/p1003_1b/Makefile1
-rw-r--r--tools/regression/p1003_1b/README1
-rw-r--r--tools/regression/p1003_1b/fifo.c2
-rw-r--r--tools/regression/p1003_1b/main.c1
-rw-r--r--tools/regression/p1003_1b/memlock.c2
-rw-r--r--tools/regression/p1003_1b/p26.c2
-rw-r--r--tools/regression/p1003_1b/prutil.c1
-rw-r--r--tools/regression/p1003_1b/prutil.h1
-rw-r--r--tools/regression/p1003_1b/sched.c1
-rw-r--r--tools/regression/p1003_1b/yield.c1
-rw-r--r--tools/regression/poll/Makefile1
-rw-r--r--tools/regression/poll/Readme1
-rw-r--r--tools/regression/poll/pipepoll.c1
-rw-r--r--tools/regression/poll/pipeselect.c1
-rw-r--r--tools/regression/poll/sockpoll.c1
-rw-r--r--tools/regression/posixsem/Makefile1
-rw-r--r--tools/regression/posixsem/posixsem.c3
-rw-r--r--tools/regression/posixsem/posixsem.t1
-rw-r--r--tools/regression/posixsem/test.c2
-rw-r--r--tools/regression/posixsem/test.h2
-rw-r--r--tools/regression/posixsem2/Makefile1
-rw-r--r--tools/regression/posixsem2/semtest.c1
-rw-r--r--tools/regression/priv/Makefile1
-rw-r--r--tools/regression/priv/main.c2
-rw-r--r--tools/regression/priv/main.h2
-rw-r--r--tools/regression/priv/priv_acct.c2
-rw-r--r--tools/regression/priv/priv_adjtime.c2
-rw-r--r--tools/regression/priv/priv_audit_control.c2
-rw-r--r--tools/regression/priv/priv_audit_getaudit.c2
-rw-r--r--tools/regression/priv/priv_audit_setaudit.c2
-rw-r--r--tools/regression/priv/priv_audit_submit.c2
-rw-r--r--tools/regression/priv/priv_clock_settime.c2
-rw-r--r--tools/regression/priv/priv_cred.c2
-rw-r--r--tools/regression/priv/priv_io.c2
-rw-r--r--tools/regression/priv/priv_kenv_set.c2
-rw-r--r--tools/regression/priv/priv_kenv_unset.c2
-rw-r--r--tools/regression/priv/priv_msgbuf.c2
-rw-r--r--tools/regression/priv/priv_netinet_ipsec.c2
-rw-r--r--tools/regression/priv/priv_netinet_raw.c2
-rw-r--r--tools/regression/priv/priv_proc_setlogin.c2
-rw-r--r--tools/regression/priv/priv_proc_setrlimit.c2
-rw-r--r--tools/regression/priv/priv_sched_rtprio.c2
-rw-r--r--tools/regression/priv/priv_sched_setpriority.c2
-rw-r--r--tools/regression/priv/priv_settimeofday.c2
-rw-r--r--tools/regression/priv/priv_sysctl_write.c2
-rw-r--r--tools/regression/priv/priv_vfs_chflags.c2
-rw-r--r--tools/regression/priv/priv_vfs_chmod.c2
-rw-r--r--tools/regression/priv/priv_vfs_chown.c2
-rw-r--r--tools/regression/priv/priv_vfs_chroot.c2
-rw-r--r--tools/regression/priv/priv_vfs_clearsugid.c2
-rw-r--r--tools/regression/priv/priv_vfs_extattr_system.c2
-rw-r--r--tools/regression/priv/priv_vfs_fhopen.c2
-rw-r--r--tools/regression/priv/priv_vfs_fhstat.c2
-rw-r--r--tools/regression/priv/priv_vfs_fhstatfs.c2
-rw-r--r--tools/regression/priv/priv_vfs_generation.c2
-rw-r--r--tools/regression/priv/priv_vfs_getfh.c2
-rw-r--r--tools/regression/priv/priv_vfs_read_write.c2
-rw-r--r--tools/regression/priv/priv_vfs_setgid.c2
-rw-r--r--tools/regression/priv/priv_vfs_stickyfile.c2
-rw-r--r--tools/regression/priv/priv_vfs_utimes.c2
-rw-r--r--tools/regression/priv/priv_vm_madv_protect.c2
-rw-r--r--tools/regression/priv/priv_vm_mlock.c2
-rw-r--r--tools/regression/priv/priv_vm_munlock.c2
-rw-r--r--tools/regression/pthread/cv_cancel1/Makefile1
-rw-r--r--tools/regression/pthread/cv_cancel1/cv_cancel1.c17
-rw-r--r--tools/regression/pthread/mutex_isowned_np/Makefile1
-rw-r--r--tools/regression/pthread/mutex_isowned_np/mutex_isowned_np.c6
-rw-r--r--tools/regression/pthread/unwind/Makefile1
-rw-r--r--tools/regression/pthread/unwind/Test.cpp7
-rw-r--r--tools/regression/pthread/unwind/catch_pthread_exit.cpp7
-rw-r--r--tools/regression/pthread/unwind/cond_wait_cancel.cpp9
-rw-r--r--tools/regression/pthread/unwind/cond_wait_cancel2.cpp13
-rw-r--r--tools/regression/pthread/unwind/main_thread_exit.cpp1
-rw-r--r--tools/regression/pthread/unwind/sem_wait_cancel.cpp7
-rw-r--r--tools/regression/pthread/unwind/thread_normal_exit.cpp5
-rw-r--r--tools/regression/redzone9/Makefile1
-rw-r--r--tools/regression/redzone9/README1
-rw-r--r--tools/regression/redzone9/redzone.c3
-rw-r--r--tools/regression/redzone9/test.sh1
-rw-r--r--tools/regression/rpcsec_gss/Makefile1
-rw-r--r--tools/regression/rpcsec_gss/rpctest.c2
-rw-r--r--tools/regression/security/access/Makefile1
-rw-r--r--tools/regression/security/access/testaccess.c2
-rw-r--r--tools/regression/security/cap_test/Makefile1
-rw-r--r--tools/regression/security/cap_test/cap_test.c4
-rw-r--r--tools/regression/security/cap_test/cap_test.h2
-rw-r--r--tools/regression/security/cap_test/cap_test.t1
-rw-r--r--tools/regression/security/cap_test/cap_test_capabilities.c3
-rw-r--r--tools/regression/security/cap_test/cap_test_capmode.c5
-rw-r--r--tools/regression/security/cap_test/cap_test_fcntl.c3
-rw-r--r--tools/regression/security/cap_test/cap_test_pdfork.c5
-rw-r--r--tools/regression/security/cap_test/cap_test_pdkill.c5
-rw-r--r--tools/regression/security/cap_test/cap_test_relative.c5
-rw-r--r--tools/regression/security/cap_test/cap_test_sysctl.c5
-rw-r--r--tools/regression/security/open_to_operation/Makefile1
-rw-r--r--tools/regression/security/open_to_operation/open_to_operation.c3
-rw-r--r--tools/regression/security/proc_to_proc/Makefile1
-rw-r--r--tools/regression/security/proc_to_proc/README1
-rw-r--r--tools/regression/security/proc_to_proc/scenario.c2
-rw-r--r--tools/regression/security/proc_to_proc/scenario.h2
-rw-r--r--tools/regression/security/proc_to_proc/testuid.c2
-rw-r--r--tools/regression/sigqueue/Makefile1
-rw-r--r--tools/regression/sigqueue/sigqtest1/Makefile1
-rw-r--r--tools/regression/sigqueue/sigqtest1/sigqtest1.c1
-rw-r--r--tools/regression/sigqueue/sigqtest2/Makefile1
-rw-r--r--tools/regression/sigqueue/sigqtest2/sigqtest2.c1
-rw-r--r--tools/regression/sockets/accept_fd_leak/Makefile1
-rw-r--r--tools/regression/sockets/accept_fd_leak/accept_fd_leak.c2
-rw-r--r--tools/regression/sockets/accept_fd_leak/accept_fd_leak.t1
-rw-r--r--tools/regression/sockets/accf_data_attach/Makefile1
-rw-r--r--tools/regression/sockets/accf_data_attach/accf_data_attach.c2
-rw-r--r--tools/regression/sockets/accf_data_attach/accf_data_attach.t1
-rw-r--r--tools/regression/sockets/fstat/Makefile1
-rw-r--r--tools/regression/sockets/fstat/fstat.c2
-rw-r--r--tools/regression/sockets/kqueue/Makefile1
-rw-r--r--tools/regression/sockets/kqueue/kqueue.c2
-rw-r--r--tools/regression/sockets/kqueue/kqueue.t1
-rw-r--r--tools/regression/sockets/listen_backlog/Makefile1
-rw-r--r--tools/regression/sockets/listen_backlog/listen_backlog.c10
-rw-r--r--tools/regression/sockets/listen_kqueue/Makefile1
-rw-r--r--tools/regression/sockets/listen_kqueue/listen_kqueue.c2
-rw-r--r--tools/regression/sockets/listenclose/Makefile1
-rw-r--r--tools/regression/sockets/listenclose/listenclose.c2
-rw-r--r--tools/regression/sockets/pr_atomic/Makefile1
-rw-r--r--tools/regression/sockets/pr_atomic/pr_atomic.c2
-rw-r--r--tools/regression/sockets/reconnect/Makefile1
-rw-r--r--tools/regression/sockets/reconnect/reconnect.c2
-rw-r--r--tools/regression/sockets/rtsocket/Makefile1
-rw-r--r--tools/regression/sockets/rtsocket/rtsocket.c2
-rw-r--r--tools/regression/sockets/sblock/Makefile1
-rw-r--r--tools/regression/sockets/sblock/sblock.c2
-rw-r--r--tools/regression/sockets/sendfile/Makefile1
-rw-r--r--tools/regression/sockets/sendfile/sendfile.c2
-rw-r--r--tools/regression/sockets/shutdown/Makefile1
-rw-r--r--tools/regression/sockets/shutdown/shutdown.c2
-rw-r--r--tools/regression/sockets/sigpipe/Makefile1
-rw-r--r--tools/regression/sockets/sigpipe/sigpipe.c2
-rw-r--r--tools/regression/sockets/so_setfib/Makefile1
-rw-r--r--tools/regression/sockets/so_setfib/so_setfib.c2
-rw-r--r--tools/regression/sockets/udp_pingpong/Makefile1
-rw-r--r--tools/regression/sockets/udp_pingpong/udp_pingpong.c3
-rw-r--r--tools/regression/sockets/unix_bindconnect/Makefile1
-rw-r--r--tools/regression/sockets/unix_bindconnect/unix_bindconnect.c2
-rw-r--r--tools/regression/sockets/unix_close_race/Makefile1
-rw-r--r--tools/regression/sockets/unix_close_race/unix_close_race.c2
-rw-r--r--tools/regression/sockets/unix_cmsg/Makefile1
-rw-r--r--tools/regression/sockets/unix_cmsg/README1
-rw-r--r--tools/regression/sockets/unix_cmsg/t_cmsg_len.c3
-rw-r--r--tools/regression/sockets/unix_cmsg/t_cmsg_len.h2
-rw-r--r--tools/regression/sockets/unix_cmsg/t_cmsgcred.c3
-rw-r--r--tools/regression/sockets/unix_cmsg/t_cmsgcred.h2
-rw-r--r--tools/regression/sockets/unix_cmsg/t_cmsgcred_sockcred.c3
-rw-r--r--tools/regression/sockets/unix_cmsg/t_cmsgcred_sockcred.h2
-rw-r--r--tools/regression/sockets/unix_cmsg/t_generic.c3
-rw-r--r--tools/regression/sockets/unix_cmsg/t_generic.h2
-rw-r--r--tools/regression/sockets/unix_cmsg/t_peercred.c3
-rw-r--r--tools/regression/sockets/unix_cmsg/t_peercred.h2
-rw-r--r--tools/regression/sockets/unix_cmsg/t_sockcred.c3
-rw-r--r--tools/regression/sockets/unix_cmsg/t_sockcred.h2
-rw-r--r--tools/regression/sockets/unix_cmsg/t_xxxtime.c.in2
-rw-r--r--tools/regression/sockets/unix_cmsg/t_xxxtime.h.in2
-rw-r--r--tools/regression/sockets/unix_cmsg/uc_check_time.c2
-rw-r--r--tools/regression/sockets/unix_cmsg/uc_check_time.h2
-rw-r--r--tools/regression/sockets/unix_cmsg/uc_common.c2
-rw-r--r--tools/regression/sockets/unix_cmsg/uc_common.h2
-rw-r--r--tools/regression/sockets/unix_cmsg/unix_cmsg.c3
-rw-r--r--tools/regression/sockets/unix_cmsg/unix_cmsg.t1
-rw-r--r--tools/regression/sockets/unix_gc/Makefile1
-rw-r--r--tools/regression/sockets/unix_gc/unix_gc.c2
-rw-r--r--tools/regression/sockets/unix_sendtorace/Makefile1
-rw-r--r--tools/regression/sockets/unix_sendtorace/unix_sendtorace.c2
-rw-r--r--tools/regression/sockets/unix_socket/Makefile1
-rw-r--r--tools/regression/sockets/unix_socket/unix_socket.c2
-rw-r--r--tools/regression/sockets/unix_sorflush/Makefile1
-rw-r--r--tools/regression/sockets/unix_sorflush/unix_sorflush.c2
-rw-r--r--tools/regression/sockets/zerosend/Makefile1
-rw-r--r--tools/regression/sockets/zerosend/zerosend.c2
-rw-r--r--tools/regression/sysvmsg/Makefile1
-rw-r--r--tools/regression/sysvmsg/README1
-rw-r--r--tools/regression/sysvmsg/msgtest.c1
-rw-r--r--tools/regression/sysvsem/Makefile1
-rw-r--r--tools/regression/sysvsem/README1
-rw-r--r--tools/regression/sysvsem/semtest.c1
-rw-r--r--tools/regression/sysvshm/Makefile1
-rw-r--r--tools/regression/sysvshm/README1
-rw-r--r--tools/regression/sysvshm/shmtest.c3
-rw-r--r--tools/regression/tls/Makefile1
-rw-r--r--tools/regression/tls/libxx/Makefile1
-rw-r--r--tools/regression/tls/libxx/xx.c1
-rw-r--r--tools/regression/tls/libyy/Makefile1
-rw-r--r--tools/regression/tls/libyy/yy.c1
-rw-r--r--tools/regression/tls/ttls1/Makefile1
-rw-r--r--tools/regression/tls/ttls1/ttls1.c1
-rw-r--r--tools/regression/tls/ttls2/Makefile1
-rw-r--r--tools/regression/tls/ttls2/ttls2.c1
-rw-r--r--tools/regression/tls/ttls3/Makefile1
-rw-r--r--tools/regression/tls/ttls3/elftls.S2
-rw-r--r--tools/regression/tls/ttls3/tls-test-lib.c2
-rw-r--r--tools/regression/tls/ttls3/tls-test.c2
-rw-r--r--tools/regression/tls/ttls4/Makefile1
-rw-r--r--tools/regression/tls/ttls4/ttls4.c2
-rw-r--r--tools/regression/tmpfs/Makefile1
-rw-r--r--tools/regression/tmpfs/h_funcs.subr1
-rw-r--r--tools/regression/tmpfs/h_tools.c2
-rw-r--r--tools/regression/tmpfs/t_create1
-rw-r--r--tools/regression/tmpfs/t_dots1
-rw-r--r--tools/regression/tmpfs/t_exec1
-rw-r--r--tools/regression/tmpfs/t_link1
-rw-r--r--tools/regression/tmpfs/t_mkdir1
-rw-r--r--tools/regression/tmpfs/t_mount1
-rw-r--r--tools/regression/tmpfs/t_pipes1
-rw-r--r--tools/regression/tmpfs/t_read_write1
-rw-r--r--tools/regression/tmpfs/t_readdir1
-rw-r--r--tools/regression/tmpfs/t_remove1
-rw-r--r--tools/regression/tmpfs/t_rename1
-rw-r--r--tools/regression/tmpfs/t_rmdir1
-rw-r--r--tools/regression/tmpfs/t_setattr1
-rw-r--r--tools/regression/tmpfs/t_sizes1
-rw-r--r--tools/regression/tmpfs/t_sockets1
-rw-r--r--tools/regression/tmpfs/t_statvfs1
-rw-r--r--tools/regression/tmpfs/t_symlink1
-rw-r--r--tools/regression/tmpfs/t_times1
-rw-r--r--tools/regression/tmpfs/t_trail_slash1
-rw-r--r--tools/regression/tmpfs/t_truncate1
-rw-r--r--tools/regression/tmpfs/t_vnd1
-rw-r--r--tools/regression/tmpfs/t_vnode_leak1
-rw-r--r--tools/regression/ufs/uprintf/Makefile1
-rw-r--r--tools/regression/ufs/uprintf/ufs_uprintf.c2
-rwxr-xr-xtools/regression/usb/usb_enum.t1
-rw-r--r--tools/regression/usr.bin/cc/Makefile1
-rw-r--r--tools/regression/usr.bin/cc/float.c2
-rw-r--r--tools/regression/usr.bin/cc/float.t1
-rw-r--r--tools/regression/usr.bin/env/Makefile1
-rw-r--r--tools/regression/usr.bin/env/regress-env.rgdata1
-rw-r--r--tools/regression/usr.bin/env/regress-sb.rb1
-rw-r--r--tools/regression/zfs/LICENSE1
-rwxr-xr-xtools/regression/zfs/misc.sh1
-rw-r--r--tools/regression/zfs/zpool/add/cache.t1
-rw-r--r--tools/regression/zfs/zpool/add/disks.t1
-rw-r--r--tools/regression/zfs/zpool/add/doesnt_exist.t1
-rw-r--r--tools/regression/zfs/zpool/add/files.t1
-rw-r--r--tools/regression/zfs/zpool/add/log.t1
-rw-r--r--tools/regression/zfs/zpool/add/mirror.t1
-rw-r--r--tools/regression/zfs/zpool/add/option-f_inuse.t1
-rw-r--r--tools/regression/zfs/zpool/add/option-f_replication_level_mismatch_0.t1
-rw-r--r--tools/regression/zfs/zpool/add/option-f_replication_level_mismatch_1.t1
-rw-r--r--tools/regression/zfs/zpool/add/option-f_size_mismatch.t1
-rw-r--r--tools/regression/zfs/zpool/add/option-f_type_mismatch.t1
-rw-r--r--tools/regression/zfs/zpool/add/option-n.t1
-rw-r--r--tools/regression/zfs/zpool/add/raidz1.t1
-rw-r--r--tools/regression/zfs/zpool/add/raidz2.t1
-rw-r--r--tools/regression/zfs/zpool/add/spare.t1
-rw-r--r--tools/regression/zfs/zpool/attach/log.t1
-rw-r--r--tools/regression/zfs/zpool/attach/mirror.t1
-rw-r--r--tools/regression/zfs/zpool/attach/option-f_inuse.t1
-rw-r--r--tools/regression/zfs/zpool/create/already_exists.t1
-rw-r--r--tools/regression/zfs/zpool/create/automount.t1
-rw-r--r--tools/regression/zfs/zpool/create/cache.t1
-rw-r--r--tools/regression/zfs/zpool/create/disks.t1
-rw-r--r--tools/regression/zfs/zpool/create/files.t1
-rw-r--r--tools/regression/zfs/zpool/create/log.t1
-rw-r--r--tools/regression/zfs/zpool/create/mirror.t1
-rw-r--r--tools/regression/zfs/zpool/create/option-R.t1
-rw-r--r--tools/regression/zfs/zpool/create/option-f_inuse.t1
-rw-r--r--tools/regression/zfs/zpool/create/option-f_replication_level_mismatch_0.t1
-rw-r--r--tools/regression/zfs/zpool/create/option-f_replication_level_mismatch_1.t1
-rw-r--r--tools/regression/zfs/zpool/create/option-f_size_mismatch.t1
-rw-r--r--tools/regression/zfs/zpool/create/option-f_type_mismatch.t1
-rw-r--r--tools/regression/zfs/zpool/create/option-m.t1
-rw-r--r--tools/regression/zfs/zpool/create/option-n.t1
-rw-r--r--tools/regression/zfs/zpool/create/option-o.t1
-rw-r--r--tools/regression/zfs/zpool/create/raidz1.t1
-rw-r--r--tools/regression/zfs/zpool/create/raidz2.t1
-rw-r--r--tools/regression/zfs/zpool/create/spare.t1
-rw-r--r--tools/regression/zfs/zpool/offline/io.t1
-rw-r--r--tools/regression/zfs/zpool/offline/log.t1
-rw-r--r--tools/regression/zfs/zpool/offline/mirror.t1
-rw-r--r--tools/regression/zfs/zpool/offline/option-t.t1
-rw-r--r--tools/regression/zfs/zpool/offline/raidz1.t1
-rw-r--r--tools/regression/zfs/zpool/offline/raidz2.t1
-rw-r--r--tools/regression/zfs/zpool/remove/cache.t1
-rw-r--r--tools/regression/zfs/zpool/remove/spare.t1
-rw-r--r--tools/regression/zfs/zpool/replace/cache.t1
-rw-r--r--tools/regression/zfs/zpool/replace/disk.t1
-rw-r--r--tools/regression/zfs/zpool/replace/log.t1
-rw-r--r--tools/regression/zfs/zpool/replace/mirror.t1
-rw-r--r--tools/regression/zfs/zpool/replace/raidz1.t1
-rw-r--r--tools/regression/zfs/zpool/replace/raidz2.t1
-rw-r--r--tools/regression/zfs/zpool/replace/spare.t1
-rwxr-xr-xtools/sched/make_ktr.sh1
-rwxr-xr-xtools/sched/schedgraph.d2
-rw-r--r--tools/sched/schedgraph.py43
-rw-r--r--tools/test/README1
-rw-r--r--tools/test/auxinfo/Makefile1
-rw-r--r--tools/test/auxinfo/auxinfo.c2
-rw-r--r--tools/test/bsnmp/Makefile1
-rw-r--r--tools/test/callout_free/Makefile1
-rw-r--r--tools/test/callout_free/callout_free.c2
-rw-r--r--tools/test/devrandom/hammer.random1
-rw-r--r--tools/test/devrandom/hammer.urandom1
-rw-r--r--tools/test/devrandom/stat.16bit1
-rw-r--r--tools/test/devrandom/stat.8bit1
-rw-r--r--tools/test/gpioevents/Makefile3
-rw-r--r--tools/test/gpioevents/gpioevents.c57
-rwxr-xr-xtools/test/hwpmc/pmctest.py1
-rw-r--r--tools/test/iconv/Makefile1
-rw-r--r--tools/test/iconv/const-gnuism.c3
-rw-r--r--tools/test/iconv/gnu/Makefile1
-rw-r--r--tools/test/iconv/gnu/gnu.c2
-rw-r--r--tools/test/iconv/posix/Makefile1
-rw-r--r--tools/test/iconv/posix/posix.c19
-rw-r--r--tools/test/iconv/ref/ARMSCII-81
-rw-r--r--tools/test/iconv/ref/ARMSCII-8-rev1
-rw-r--r--tools/test/iconv/ref/ASCII1
-rw-r--r--tools/test/iconv/ref/ASCII-rev1
-rw-r--r--tools/test/iconv/ref/ATARIST1
-rw-r--r--tools/test/iconv/ref/ATARIST-rev1
-rw-r--r--tools/test/iconv/ref/BIG51
-rw-r--r--tools/test/iconv/ref/BIG5-20031
-rw-r--r--tools/test/iconv/ref/BIG5-2003-rev1
-rw-r--r--tools/test/iconv/ref/BIG5-HKSCS1
-rw-r--r--tools/test/iconv/ref/BIG5-HKSCS-rev1
-rw-r--r--tools/test/iconv/ref/BIG5-rev1
-rw-r--r--tools/test/iconv/ref/BIG5HKSCS1
-rw-r--r--tools/test/iconv/ref/BIG5HKSCS-rev1
-rw-r--r--tools/test/iconv/ref/C991
-rw-r--r--tools/test/iconv/ref/C99-rev1
-rw-r--r--tools/test/iconv/ref/CP10461
-rw-r--r--tools/test/iconv/ref/CP1046-rev1
-rw-r--r--tools/test/iconv/ref/CP11241
-rw-r--r--tools/test/iconv/ref/CP1124-rev1
-rw-r--r--tools/test/iconv/ref/CP11251
-rw-r--r--tools/test/iconv/ref/CP1125-rev1
-rw-r--r--tools/test/iconv/ref/CP11291
-rw-r--r--tools/test/iconv/ref/CP1129-rev1
-rw-r--r--tools/test/iconv/ref/CP11311
-rw-r--r--tools/test/iconv/ref/CP1131-rev1
-rw-r--r--tools/test/iconv/ref/CP11331
-rw-r--r--tools/test/iconv/ref/CP1133-rev1
-rw-r--r--tools/test/iconv/ref/CP11611
-rw-r--r--tools/test/iconv/ref/CP1161-rev1
-rw-r--r--tools/test/iconv/ref/CP11621
-rw-r--r--tools/test/iconv/ref/CP1162-rev1
-rw-r--r--tools/test/iconv/ref/CP11631
-rw-r--r--tools/test/iconv/ref/CP1163-rev1
-rw-r--r--tools/test/iconv/ref/CP12501
-rw-r--r--tools/test/iconv/ref/CP1250-rev1
-rw-r--r--tools/test/iconv/ref/CP12511
-rw-r--r--tools/test/iconv/ref/CP1251-rev1
-rw-r--r--tools/test/iconv/ref/CP12521
-rw-r--r--tools/test/iconv/ref/CP1252-rev1
-rw-r--r--tools/test/iconv/ref/CP12531
-rw-r--r--tools/test/iconv/ref/CP1253-rev1
-rw-r--r--tools/test/iconv/ref/CP12541
-rw-r--r--tools/test/iconv/ref/CP1254-rev1
-rw-r--r--tools/test/iconv/ref/CP12551
-rw-r--r--tools/test/iconv/ref/CP1255-rev1
-rw-r--r--tools/test/iconv/ref/CP12561
-rw-r--r--tools/test/iconv/ref/CP1256-rev1
-rw-r--r--tools/test/iconv/ref/CP12571
-rw-r--r--tools/test/iconv/ref/CP1257-rev1
-rw-r--r--tools/test/iconv/ref/CP12581
-rw-r--r--tools/test/iconv/ref/CP1258-rev1
-rw-r--r--tools/test/iconv/ref/CP4371
-rw-r--r--tools/test/iconv/ref/CP437-rev1
-rw-r--r--tools/test/iconv/ref/CP7371
-rw-r--r--tools/test/iconv/ref/CP737-rev1
-rw-r--r--tools/test/iconv/ref/CP7751
-rw-r--r--tools/test/iconv/ref/CP775-rev1
-rw-r--r--tools/test/iconv/ref/CP8501
-rw-r--r--tools/test/iconv/ref/CP850-rev1
-rw-r--r--tools/test/iconv/ref/CP8521
-rw-r--r--tools/test/iconv/ref/CP852-rev1
-rw-r--r--tools/test/iconv/ref/CP8531
-rw-r--r--tools/test/iconv/ref/CP853-rev1
-rw-r--r--tools/test/iconv/ref/CP8551
-rw-r--r--tools/test/iconv/ref/CP855-rev1
-rw-r--r--tools/test/iconv/ref/CP8561
-rw-r--r--tools/test/iconv/ref/CP856-rev1
-rw-r--r--tools/test/iconv/ref/CP8571
-rw-r--r--tools/test/iconv/ref/CP857-rev1
-rw-r--r--tools/test/iconv/ref/CP8581
-rw-r--r--tools/test/iconv/ref/CP858-rev1
-rw-r--r--tools/test/iconv/ref/CP8601
-rw-r--r--tools/test/iconv/ref/CP860-rev1
-rw-r--r--tools/test/iconv/ref/CP8611
-rw-r--r--tools/test/iconv/ref/CP861-rev1
-rw-r--r--tools/test/iconv/ref/CP8621
-rw-r--r--tools/test/iconv/ref/CP862-rev1
-rw-r--r--tools/test/iconv/ref/CP8631
-rw-r--r--tools/test/iconv/ref/CP863-rev1
-rw-r--r--tools/test/iconv/ref/CP8641
-rw-r--r--tools/test/iconv/ref/CP864-rev1
-rw-r--r--tools/test/iconv/ref/CP8651
-rw-r--r--tools/test/iconv/ref/CP865-rev1
-rw-r--r--tools/test/iconv/ref/CP8661
-rw-r--r--tools/test/iconv/ref/CP866-rev1
-rw-r--r--tools/test/iconv/ref/CP8691
-rw-r--r--tools/test/iconv/ref/CP869-rev1
-rw-r--r--tools/test/iconv/ref/CP8741
-rw-r--r--tools/test/iconv/ref/CP874-rev1
-rw-r--r--tools/test/iconv/ref/CP9221
-rw-r--r--tools/test/iconv/ref/CP922-rev1
-rw-r--r--tools/test/iconv/ref/CP9321
-rw-r--r--tools/test/iconv/ref/CP932-rev1
-rw-r--r--tools/test/iconv/ref/CP9361
-rw-r--r--tools/test/iconv/ref/CP936-rev1
-rw-r--r--tools/test/iconv/ref/CP9431
-rw-r--r--tools/test/iconv/ref/CP943-rev1
-rw-r--r--tools/test/iconv/ref/CP9491
-rw-r--r--tools/test/iconv/ref/CP949-rev1
-rw-r--r--tools/test/iconv/ref/CP9501
-rw-r--r--tools/test/iconv/ref/CP950-rev1
-rw-r--r--tools/test/iconv/ref/DEC-HANYU1
-rw-r--r--tools/test/iconv/ref/DEC-HANYU-rev1
-rw-r--r--tools/test/iconv/ref/EUC-CN1
-rw-r--r--tools/test/iconv/ref/EUC-CN-rev1
-rw-r--r--tools/test/iconv/ref/EUC-JIS-20041
-rw-r--r--tools/test/iconv/ref/EUC-JIS-2004-rev1
-rw-r--r--tools/test/iconv/ref/EUC-JP1
-rw-r--r--tools/test/iconv/ref/EUC-JP-rev1
-rw-r--r--tools/test/iconv/ref/EUC-KR1
-rw-r--r--tools/test/iconv/ref/EUC-KR-rev1
-rw-r--r--tools/test/iconv/ref/EUC-TW1
-rw-r--r--tools/test/iconv/ref/EUC-TW-rev1
-rw-r--r--tools/test/iconv/ref/GB180301
-rw-r--r--tools/test/iconv/ref/GB18030-rev1
-rw-r--r--tools/test/iconv/ref/GB23121
-rw-r--r--tools/test/iconv/ref/GB2312-rev1
-rw-r--r--tools/test/iconv/ref/GBK1
-rw-r--r--tools/test/iconv/ref/GBK-rev1
-rw-r--r--tools/test/iconv/ref/GEORGIAN-ACADEMY1
-rw-r--r--tools/test/iconv/ref/GEORGIAN-ACADEMY-rev1
-rw-r--r--tools/test/iconv/ref/GEORGIAN-PS1
-rw-r--r--tools/test/iconv/ref/GEORGIAN-PS-rev1
-rw-r--r--tools/test/iconv/ref/HP-ROMAN81
-rw-r--r--tools/test/iconv/ref/HP-ROMAN8-rev1
-rw-r--r--tools/test/iconv/ref/HZ1
-rw-r--r--tools/test/iconv/ref/HZ-rev1
-rw-r--r--tools/test/iconv/ref/ISO-2022-CN1
-rw-r--r--tools/test/iconv/ref/ISO-2022-CN-EXT1
-rw-r--r--tools/test/iconv/ref/ISO-2022-CN-EXT-rev1
-rw-r--r--tools/test/iconv/ref/ISO-2022-CN-rev1
-rw-r--r--tools/test/iconv/ref/ISO-2022-JP1
-rw-r--r--tools/test/iconv/ref/ISO-2022-JP-11
-rw-r--r--tools/test/iconv/ref/ISO-2022-JP-1-rev1
-rw-r--r--tools/test/iconv/ref/ISO-2022-JP-21
-rw-r--r--tools/test/iconv/ref/ISO-2022-JP-2-rev1
-rw-r--r--tools/test/iconv/ref/ISO-2022-JP-20041
-rw-r--r--tools/test/iconv/ref/ISO-2022-JP-2004-rev1
-rw-r--r--tools/test/iconv/ref/ISO-2022-JP-rev1
-rw-r--r--tools/test/iconv/ref/ISO-2022-KR1
-rw-r--r--tools/test/iconv/ref/ISO-2022-KR-rev1
-rw-r--r--tools/test/iconv/ref/ISO-IR-141
-rw-r--r--tools/test/iconv/ref/ISO-IR-14-rev1
-rw-r--r--tools/test/iconv/ref/ISO-IR-1651
-rw-r--r--tools/test/iconv/ref/ISO-IR-165-rev1
-rw-r--r--tools/test/iconv/ref/ISO-IR-571
-rw-r--r--tools/test/iconv/ref/ISO-IR-57-rev1
-rw-r--r--tools/test/iconv/ref/ISO8859-11
-rw-r--r--tools/test/iconv/ref/ISO8859-1-rev1
-rw-r--r--tools/test/iconv/ref/ISO8859-101
-rw-r--r--tools/test/iconv/ref/ISO8859-10-rev1
-rw-r--r--tools/test/iconv/ref/ISO8859-111
-rw-r--r--tools/test/iconv/ref/ISO8859-11-rev1
-rw-r--r--tools/test/iconv/ref/ISO8859-131
-rw-r--r--tools/test/iconv/ref/ISO8859-13-rev1
-rw-r--r--tools/test/iconv/ref/ISO8859-141
-rw-r--r--tools/test/iconv/ref/ISO8859-14-rev1
-rw-r--r--tools/test/iconv/ref/ISO8859-151
-rw-r--r--tools/test/iconv/ref/ISO8859-15-rev1
-rw-r--r--tools/test/iconv/ref/ISO8859-161
-rw-r--r--tools/test/iconv/ref/ISO8859-16-rev1
-rw-r--r--tools/test/iconv/ref/ISO8859-21
-rw-r--r--tools/test/iconv/ref/ISO8859-2-rev1
-rw-r--r--tools/test/iconv/ref/ISO8859-31
-rw-r--r--tools/test/iconv/ref/ISO8859-3-rev1
-rw-r--r--tools/test/iconv/ref/ISO8859-41
-rw-r--r--tools/test/iconv/ref/ISO8859-4-rev1
-rw-r--r--tools/test/iconv/ref/ISO8859-51
-rw-r--r--tools/test/iconv/ref/ISO8859-5-rev1
-rw-r--r--tools/test/iconv/ref/ISO8859-61
-rw-r--r--tools/test/iconv/ref/ISO8859-6-rev1
-rw-r--r--tools/test/iconv/ref/ISO8859-71
-rw-r--r--tools/test/iconv/ref/ISO8859-7-rev1
-rw-r--r--tools/test/iconv/ref/ISO8859-81
-rw-r--r--tools/test/iconv/ref/ISO8859-8-rev1
-rw-r--r--tools/test/iconv/ref/ISO8859-91
-rw-r--r--tools/test/iconv/ref/ISO8859-9-rev1
-rw-r--r--tools/test/iconv/ref/JAVA1
-rw-r--r--tools/test/iconv/ref/JAVA-rev1
-rw-r--r--tools/test/iconv/ref/JIS_X02011
-rw-r--r--tools/test/iconv/ref/JIS_X0201-rev1
-rw-r--r--tools/test/iconv/ref/JIS_X0208-19901
-rw-r--r--tools/test/iconv/ref/JIS_X0208-1990-rev1
-rw-r--r--tools/test/iconv/ref/JOHAB1
-rw-r--r--tools/test/iconv/ref/JOHAB-rev1
-rw-r--r--tools/test/iconv/ref/KOI8-R1
-rw-r--r--tools/test/iconv/ref/KOI8-R-rev1
-rw-r--r--tools/test/iconv/ref/KOI8-RU1
-rw-r--r--tools/test/iconv/ref/KOI8-RU-rev1
-rw-r--r--tools/test/iconv/ref/KOI8-T1
-rw-r--r--tools/test/iconv/ref/KOI8-T-rev1
-rw-r--r--tools/test/iconv/ref/KOI8-U1
-rw-r--r--tools/test/iconv/ref/KOI8-U-rev1
-rw-r--r--tools/test/iconv/ref/KZ-10481
-rw-r--r--tools/test/iconv/ref/KZ-1048-rev1
-rw-r--r--tools/test/iconv/ref/MACARABIC1
-rw-r--r--tools/test/iconv/ref/MACARABIC-rev1
-rw-r--r--tools/test/iconv/ref/MACCENTRALEUROPE1
-rw-r--r--tools/test/iconv/ref/MACCENTRALEUROPE-rev1
-rw-r--r--tools/test/iconv/ref/MACCROATIAN1
-rw-r--r--tools/test/iconv/ref/MACCROATIAN-rev1
-rw-r--r--tools/test/iconv/ref/MACCYRILLIC1
-rw-r--r--tools/test/iconv/ref/MACCYRILLIC-rev1
-rw-r--r--tools/test/iconv/ref/MACGREEK1
-rw-r--r--tools/test/iconv/ref/MACGREEK-rev1
-rw-r--r--tools/test/iconv/ref/MACHEBREW1
-rw-r--r--tools/test/iconv/ref/MACHEBREW-rev1
-rw-r--r--tools/test/iconv/ref/MACICELAND1
-rw-r--r--tools/test/iconv/ref/MACICELAND-rev1
-rw-r--r--tools/test/iconv/ref/MACROMAN1
-rw-r--r--tools/test/iconv/ref/MACROMAN-rev1
-rw-r--r--tools/test/iconv/ref/MACROMANIA1
-rw-r--r--tools/test/iconv/ref/MACROMANIA-rev1
-rw-r--r--tools/test/iconv/ref/MACTHAI1
-rw-r--r--tools/test/iconv/ref/MACTHAI-rev1
-rw-r--r--tools/test/iconv/ref/MACTURKISH1
-rw-r--r--tools/test/iconv/ref/MACTURKISH-rev1
-rw-r--r--tools/test/iconv/ref/MACUKRAINE1
-rw-r--r--tools/test/iconv/ref/MACUKRAINE-rev1
-rw-r--r--tools/test/iconv/ref/MULELAO-11
-rw-r--r--tools/test/iconv/ref/MULELAO-1-rev1
-rw-r--r--tools/test/iconv/ref/NEXTSTEP1
-rw-r--r--tools/test/iconv/ref/NEXTSTEP-rev1
-rw-r--r--tools/test/iconv/ref/PT1541
-rw-r--r--tools/test/iconv/ref/PT154-rev1
-rw-r--r--tools/test/iconv/ref/RISCOS-LATIN11
-rw-r--r--tools/test/iconv/ref/RISCOS-LATIN1-rev1
-rw-r--r--tools/test/iconv/ref/SHIFT_JIS1
-rw-r--r--tools/test/iconv/ref/SHIFT_JIS-rev1
-rw-r--r--tools/test/iconv/ref/TCVN5712-11
-rw-r--r--tools/test/iconv/ref/TCVN5712-1-rev1
-rw-r--r--tools/test/iconv/ref/TDS5651
-rw-r--r--tools/test/iconv/ref/TDS565-rev1
-rw-r--r--tools/test/iconv/ref/UTF-16BE1
-rw-r--r--tools/test/iconv/ref/UTF-16BE-rev1
-rw-r--r--tools/test/iconv/ref/UTF-16LE1
-rw-r--r--tools/test/iconv/ref/UTF-16LE-rev1
-rw-r--r--tools/test/iconv/ref/UTF-32BE1
-rw-r--r--tools/test/iconv/ref/UTF-32BE-rev1
-rw-r--r--tools/test/iconv/ref/UTF-32LE1
-rw-r--r--tools/test/iconv/ref/UTF-32LE-rev1
-rw-r--r--tools/test/iconv/ref/UTF-71
-rw-r--r--tools/test/iconv/ref/UTF-7-rev1
-rw-r--r--tools/test/iconv/ref/UTF-81
-rw-r--r--tools/test/iconv/ref/UTF-8-rev1
-rw-r--r--tools/test/iconv/ref/VISCII1
-rw-r--r--tools/test/iconv/ref/VISCII-rev1
-rw-r--r--tools/test/iconv/refgen/Makefile1
-rw-r--r--tools/test/iconv/tablegen/Makefile1
-rwxr-xr-xtools/test/iconv/tablegen/cmp.sh1
-rw-r--r--tools/test/iconv/tablegen/tablegen.c4
-rw-r--r--tools/test/malloc/Makefile1
-rw-r--r--tools/test/malloc/main.c1
-rw-r--r--tools/test/net/Makefile1
-rw-r--r--tools/test/net/connect.c2
-rw-r--r--tools/test/net/listen.c2
-rw-r--r--tools/test/netfibs/Makefile1
-rw-r--r--tools/test/netfibs/README1
-rwxr-xr-xtools/test/netfibs/forwarding.sh1
-rwxr-xr-xtools/test/netfibs/initiator.sh1
-rw-r--r--tools/test/netfibs/reflect.c2
-rwxr-xr-xtools/test/netfibs/reflector.sh1
-rw-r--r--tools/test/popss/popss.c3
-rw-r--r--tools/test/ppsapi/Makefile1
-rw-r--r--tools/test/ppsapi/README1
-rw-r--r--tools/test/ppsapi/ppsapitest.c2
-rw-r--r--tools/test/pthread_vfork/pthread_vfork_test.c3
-rw-r--r--tools/test/ptrace/Makefile1
-rw-r--r--tools/test/ptrace/scescx.c37
-rwxr-xr-xtools/test/sort/bigtest/kcmd2
-rw-r--r--tools/test/sort/regression/Makefile1
-rwxr-xr-xtools/test/sort/regression/cmp.sh1
-rw-r--r--tools/test/stress2/default.cfg2
-rw-r--r--tools/test/stress2/lib/resources.c2
-rwxr-xr-xtools/test/stress2/misc/1st.sh2
-rwxr-xr-xtools/test/stress2/misc/advlock.sh5
-rwxr-xr-xtools/test/stress2/misc/aesni.sh2
-rw-r--r--tools/test/stress2/misc/all.debug.inc3
-rw-r--r--tools/test/stress2/misc/all.exclude74
-rwxr-xr-xtools/test/stress2/misc/all.sh16
-rwxr-xr-xtools/test/stress2/misc/arp.sh2
-rwxr-xr-xtools/test/stress2/misc/aslr.sh2
-rwxr-xr-xtools/test/stress2/misc/audit2.sh7
-rwxr-xr-xtools/test/stress2/misc/avx_sig.sh16
-rwxr-xr-xtools/test/stress2/misc/backingstore.sh32
-rwxr-xr-xtools/test/stress2/misc/backingstore2.sh30
-rwxr-xr-xtools/test/stress2/misc/backingstore3.sh32
-rwxr-xr-xtools/test/stress2/misc/badcode.sh7
-rwxr-xr-xtools/test/stress2/misc/badcode2.sh2
-rwxr-xr-xtools/test/stress2/misc/badcode3.sh9
-rwxr-xr-xtools/test/stress2/misc/bench.sh5
-rwxr-xr-xtools/test/stress2/misc/beneath.sh2
-rwxr-xr-xtools/test/stress2/misc/beneath2.sh7
-rwxr-xr-xtools/test/stress2/misc/beneath3.sh7
-rwxr-xr-xtools/test/stress2/misc/beneath4.sh2
-rwxr-xr-xtools/test/stress2/misc/bio.sh5
-rwxr-xr-xtools/test/stress2/misc/buildkernel.sh2
-rwxr-xr-xtools/test/stress2/misc/buildworld.sh5
-rwxr-xr-xtools/test/stress2/misc/buildworld3.sh7
-rwxr-xr-xtools/test/stress2/misc/buildworld4.sh7
-rwxr-xr-xtools/test/stress2/misc/burnin.sh5
-rwxr-xr-xtools/test/stress2/misc/callout_reset_on.sh2
-rwxr-xr-xtools/test/stress2/misc/callout_reset_on2.sh2
-rwxr-xr-xtools/test/stress2/misc/chain.sh2
-rwxr-xr-xtools/test/stress2/misc/chroot.sh2
-rwxr-xr-xtools/test/stress2/misc/cmp.sh7
-rwxr-xr-xtools/test/stress2/misc/compare.sh2
-rwxr-xr-xtools/test/stress2/misc/contigmalloc3.sh3
-rwxr-xr-xtools/test/stress2/misc/core2.sh5
-rwxr-xr-xtools/test/stress2/misc/core3.sh7
-rwxr-xr-xtools/test/stress2/misc/core4.sh9
-rwxr-xr-xtools/test/stress2/misc/core5.sh9
-rwxr-xr-xtools/test/stress2/misc/cpuset.sh2
-rwxr-xr-xtools/test/stress2/misc/creat.sh83
-rwxr-xr-xtools/test/stress2/misc/crossmp.sh5
-rwxr-xr-xtools/test/stress2/misc/crossmp10.sh5
-rwxr-xr-xtools/test/stress2/misc/crossmp11.sh5
-rwxr-xr-xtools/test/stress2/misc/crossmp3.sh9
-rwxr-xr-xtools/test/stress2/misc/crossmp4.sh5
-rwxr-xr-xtools/test/stress2/misc/crossmp5.sh5
-rwxr-xr-xtools/test/stress2/misc/crossmp8.sh5
-rwxr-xr-xtools/test/stress2/misc/crossmp9.sh5
-rwxr-xr-xtools/test/stress2/misc/dangling.sh5
-rwxr-xr-xtools/test/stress2/misc/datagram.sh6
-rwxr-xr-xtools/test/stress2/misc/datagram2.sh2
-rwxr-xr-xtools/test/stress2/misc/datagram3.sh2
-rwxr-xr-xtools/test/stress2/misc/datamove.sh2
-rwxr-xr-xtools/test/stress2/misc/datamove2.sh2
-rwxr-xr-xtools/test/stress2/misc/datamove3.sh4
-rwxr-xr-xtools/test/stress2/misc/datamove5.sh5
-rwxr-xr-xtools/test/stress2/misc/devfd.sh5
-rwxr-xr-xtools/test/stress2/misc/devfs4.sh5
-rwxr-xr-xtools/test/stress2/misc/devfs5.sh2
-rwxr-xr-xtools/test/stress2/misc/dfull.sh7
-rwxr-xr-xtools/test/stress2/misc/dtrace.sh5
-rwxr-xr-xtools/test/stress2/misc/dtrace_fault.sh2
-rwxr-xr-xtools/test/stress2/misc/dup.sh2
-rwxr-xr-xtools/test/stress2/misc/elf.sh9
-rwxr-xr-xtools/test/stress2/misc/execpath.sh104
-rwxr-xr-xtools/test/stress2/misc/exlock.sh5
-rwxr-xr-xtools/test/stress2/misc/exlock2.sh17
-rwxr-xr-xtools/test/stress2/misc/ext2fs2.sh7
-rwxr-xr-xtools/test/stress2/misc/ext3fs.sh2
-rwxr-xr-xtools/test/stress2/misc/ext4fs.sh2
-rwxr-xr-xtools/test/stress2/misc/extattr.sh13
-rwxr-xr-xtools/test/stress2/misc/extattr2.sh17
-rwxr-xr-xtools/test/stress2/misc/extattr3.sh2
-rwxr-xr-xtools/test/stress2/misc/extattr_set_fd.sh5
-rwxr-xr-xtools/test/stress2/misc/extattrctl.sh13
-rwxr-xr-xtools/test/stress2/misc/fcntl.sh19
-rwxr-xr-xtools/test/stress2/misc/fcntl2.sh4
-rwxr-xr-xtools/test/stress2/misc/fcntl3.sh2
-rwxr-xr-xtools/test/stress2/misc/fexecve.sh2
-rwxr-xr-xtools/test/stress2/misc/ffs_blkfree.sh13
-rwxr-xr-xtools/test/stress2/misc/ffs_sync.sh5
-rwxr-xr-xtools/test/stress2/misc/ffs_syncvnode.sh5
-rwxr-xr-xtools/test/stress2/misc/ffs_syncvnode2.sh5
-rwxr-xr-xtools/test/stress2/misc/fifo.sh12
-rwxr-xr-xtools/test/stress2/misc/fifo2.sh20
-rwxr-xr-xtools/test/stress2/misc/fifo3.sh5
-rwxr-xr-xtools/test/stress2/misc/fifo4.sh2
-rwxr-xr-xtools/test/stress2/misc/flock.sh5
-rwxr-xr-xtools/test/stress2/misc/flock_open_close.sh12
-rwxr-xr-xtools/test/stress2/misc/force.sh2
-rwxr-xr-xtools/test/stress2/misc/force10.sh92
-rwxr-xr-xtools/test/stress2/misc/force11.sh100
-rwxr-xr-xtools/test/stress2/misc/force12.sh83
-rwxr-xr-xtools/test/stress2/misc/force13.sh129
-rwxr-xr-xtools/test/stress2/misc/force14.sh119
-rwxr-xr-xtools/test/stress2/misc/force15.sh113
-rwxr-xr-xtools/test/stress2/misc/force2.sh2
-rwxr-xr-xtools/test/stress2/misc/force3.sh2
-rwxr-xr-xtools/test/stress2/misc/force4.sh4
-rwxr-xr-xtools/test/stress2/misc/force5.sh2
-rwxr-xr-xtools/test/stress2/misc/force6.sh2
-rwxr-xr-xtools/test/stress2/misc/force7.sh5
-rwxr-xr-xtools/test/stress2/misc/force8.sh2
-rwxr-xr-xtools/test/stress2/misc/force9.sh27
-rwxr-xr-xtools/test/stress2/misc/fork2.sh134
-rwxr-xr-xtools/test/stress2/misc/forkbomb.sh10
-rwxr-xr-xtools/test/stress2/misc/fragments.sh5
-rwxr-xr-xtools/test/stress2/misc/fs.sh9
-rwxr-xr-xtools/test/stress2/misc/fsck.sh95
-rwxr-xr-xtools/test/stress2/misc/fsck10.sh171
-rwxr-xr-xtools/test/stress2/misc/fsck11.sh170
-rwxr-xr-xtools/test/stress2/misc/fsck12.sh175
-rwxr-xr-xtools/test/stress2/misc/fsck13.sh152
-rwxr-xr-xtools/test/stress2/misc/fsck14.sh119
-rwxr-xr-xtools/test/stress2/misc/fsck2.sh2
-rwxr-xr-xtools/test/stress2/misc/fsck3.sh2
-rwxr-xr-xtools/test/stress2/misc/fsck4.sh2
-rwxr-xr-xtools/test/stress2/misc/fsck5.sh2
-rwxr-xr-xtools/test/stress2/misc/fsck6.sh2
-rwxr-xr-xtools/test/stress2/misc/fsck7.sh65
-rwxr-xr-xtools/test/stress2/misc/fsck8.sh179
-rwxr-xr-xtools/test/stress2/misc/fsck9.sh168
-rwxr-xr-xtools/test/stress2/misc/fsgs.sh2
-rwxr-xr-xtools/test/stress2/misc/fstat.sh2
-rwxr-xr-xtools/test/stress2/misc/fsync2.sh2
-rwxr-xr-xtools/test/stress2/misc/fsync3.sh156
-rwxr-xr-xtools/test/stress2/misc/fsync4.sh146
-rwxr-xr-xtools/test/stress2/misc/ftruncate2.sh5
-rwxr-xr-xtools/test/stress2/misc/fts.sh5
-rwxr-xr-xtools/test/stress2/misc/fts2.sh5
-rwxr-xr-xtools/test/stress2/misc/fts3.sh5
-rwxr-xr-xtools/test/stress2/misc/full.sh7
-rwxr-xr-xtools/test/stress2/misc/fullpath.sh2
-rwxr-xr-xtools/test/stress2/misc/fuzz.sh13
-rwxr-xr-xtools/test/stress2/misc/geomleak2.sh2
-rwxr-xr-xtools/test/stress2/misc/getrandom.sh7
-rwxr-xr-xtools/test/stress2/misc/getrandom2.sh2
-rwxr-xr-xtools/test/stress2/misc/gjournal.sh5
-rwxr-xr-xtools/test/stress2/misc/gnop10.sh62
-rwxr-xr-xtools/test/stress2/misc/gnop11.sh2
-rwxr-xr-xtools/test/stress2/misc/gnop12.sh114
-rwxr-xr-xtools/test/stress2/misc/gnop13.sh138
-rwxr-xr-xtools/test/stress2/misc/gnop4.sh13
-rwxr-xr-xtools/test/stress2/misc/gnop6.sh2
-rwxr-xr-xtools/test/stress2/misc/gnop7.sh2
-rwxr-xr-xtools/test/stress2/misc/gnop8.sh2
-rwxr-xr-xtools/test/stress2/misc/gnop9.sh2
-rwxr-xr-xtools/test/stress2/misc/gpt.sh2
-rwxr-xr-xtools/test/stress2/misc/graid1_11.sh103
-rwxr-xr-xtools/test/stress2/misc/growfs2.sh65
-rwxr-xr-xtools/test/stress2/misc/gunion.sh87
-rwxr-xr-xtools/test/stress2/misc/gunion2.sh108
-rwxr-xr-xtools/test/stress2/misc/holdcnt0.sh7
-rwxr-xr-xtools/test/stress2/misc/holdcnt04.sh7
-rwxr-xr-xtools/test/stress2/misc/holdcnt05.sh2
-rwxr-xr-xtools/test/stress2/misc/ifconfig.sh4
-rwxr-xr-xtools/test/stress2/misc/ifconfig2.sh4
-rwxr-xr-xtools/test/stress2/misc/indir.sh2
-rwxr-xr-xtools/test/stress2/misc/indir_trunc.sh2
-rwxr-xr-xtools/test/stress2/misc/isofs3.sh7
-rwxr-xr-xtools/test/stress2/misc/jexec.sh2
-rwxr-xr-xtools/test/stress2/misc/jumbo.sh2
-rwxr-xr-xtools/test/stress2/misc/kern_umtx_inf_loop.sh1
-rwxr-xr-xtools/test/stress2/misc/kevent10.sh2
-rwxr-xr-xtools/test/stress2/misc/kevent11.sh5
-rwxr-xr-xtools/test/stress2/misc/kevent12.sh2
-rwxr-xr-xtools/test/stress2/misc/kevent13.sh2
-rwxr-xr-xtools/test/stress2/misc/kevent14.sh2
-rwxr-xr-xtools/test/stress2/misc/kevent15.sh2
-rwxr-xr-xtools/test/stress2/misc/kevent16.sh92
-rwxr-xr-xtools/test/stress2/misc/kevent6.sh5
-rwxr-xr-xtools/test/stress2/misc/kevent7.sh9
-rwxr-xr-xtools/test/stress2/misc/kevent8.sh5
-rwxr-xr-xtools/test/stress2/misc/killpg2.sh197
-rwxr-xr-xtools/test/stress2/misc/killpg3.sh192
-rwxr-xr-xtools/test/stress2/misc/killpg4.sh114
-rwxr-xr-xtools/test/stress2/misc/kinfo3.sh4
-rwxr-xr-xtools/test/stress2/misc/kpti.sh2
-rwxr-xr-xtools/test/stress2/misc/largepage.sh4
-rwxr-xr-xtools/test/stress2/misc/laundry.sh5
-rwxr-xr-xtools/test/stress2/misc/ldt.sh1
-rwxr-xr-xtools/test/stress2/misc/linger.sh7
-rwxr-xr-xtools/test/stress2/misc/linger2.sh5
-rwxr-xr-xtools/test/stress2/misc/linger3.sh7
-rwxr-xr-xtools/test/stress2/misc/linger4.sh7
-rwxr-xr-xtools/test/stress2/misc/link.sh7
-rwxr-xr-xtools/test/stress2/misc/link2.sh7
-rwxr-xr-xtools/test/stress2/misc/linux.sh2
-rwxr-xr-xtools/test/stress2/misc/lockf3.sh5
-rwxr-xr-xtools/test/stress2/misc/lockf4.sh5
-rwxr-xr-xtools/test/stress2/misc/lstat.sh9
-rwxr-xr-xtools/test/stress2/misc/mac_chkexec.sh9
-rwxr-xr-xtools/test/stress2/misc/mapwrite.sh189
-rwxr-xr-xtools/test/stress2/misc/marcus.sh7
-rwxr-xr-xtools/test/stress2/misc/marcus2.sh7
-rwxr-xr-xtools/test/stress2/misc/marcus5.sh7
-rwxr-xr-xtools/test/stress2/misc/marcus6.sh9
-rwxr-xr-xtools/test/stress2/misc/marcus7.sh9
-rwxr-xr-xtools/test/stress2/misc/md.sh7
-rwxr-xr-xtools/test/stress2/misc/md3.sh5
-rwxr-xr-xtools/test/stress2/misc/md9.sh5
-rwxr-xr-xtools/test/stress2/misc/mdconfig3.sh2
-rwxr-xr-xtools/test/stress2/misc/mdconfig4.sh3
-rwxr-xr-xtools/test/stress2/misc/mdconfig5.sh55
-rwxr-xr-xtools/test/stress2/misc/memguard.sh5
-rwxr-xr-xtools/test/stress2/misc/memguard2.sh5
-rwxr-xr-xtools/test/stress2/misc/memguard3.sh7
-rwxr-xr-xtools/test/stress2/misc/memguard4.sh5
-rwxr-xr-xtools/test/stress2/misc/midi.sh2
-rwxr-xr-xtools/test/stress2/misc/midi2.sh2
-rwxr-xr-xtools/test/stress2/misc/mincore.sh2
-rwxr-xr-xtools/test/stress2/misc/minherit.sh2
-rwxr-xr-xtools/test/stress2/misc/mkdir.sh80
-rwxr-xr-xtools/test/stress2/misc/mkfifo.sh5
-rwxr-xr-xtools/test/stress2/misc/mkfifo2c.sh5
-rwxr-xr-xtools/test/stress2/misc/mkfifo2d.sh5
-rwxr-xr-xtools/test/stress2/misc/mkfifo8.sh2
-rwxr-xr-xtools/test/stress2/misc/mknod.sh5
-rwxr-xr-xtools/test/stress2/misc/mlockall5.sh5
-rwxr-xr-xtools/test/stress2/misc/mlockall6.sh19
-rwxr-xr-xtools/test/stress2/misc/mmap10.sh21
-rwxr-xr-xtools/test/stress2/misc/mmap18.sh13
-rwxr-xr-xtools/test/stress2/misc/mmap22.sh4
-rwxr-xr-xtools/test/stress2/misc/mmap24.sh5
-rwxr-xr-xtools/test/stress2/misc/mmap27.sh2
-rwxr-xr-xtools/test/stress2/misc/mmap28.sh2
-rwxr-xr-xtools/test/stress2/misc/mmap29.sh5
-rwxr-xr-xtools/test/stress2/misc/mmap32.sh5
-rwxr-xr-xtools/test/stress2/misc/mmap33.sh9
-rwxr-xr-xtools/test/stress2/misc/mmap34.sh2
-rwxr-xr-xtools/test/stress2/misc/mmap35.sh2
-rwxr-xr-xtools/test/stress2/misc/mmap36.sh2
-rwxr-xr-xtools/test/stress2/misc/mmap37.sh2
-rwxr-xr-xtools/test/stress2/misc/mmap38.sh2
-rwxr-xr-xtools/test/stress2/misc/mmap39.sh4
-rwxr-xr-xtools/test/stress2/misc/mmap4.sh5
-rwxr-xr-xtools/test/stress2/misc/mmap40.sh2
-rwxr-xr-xtools/test/stress2/misc/mmap41.sh160
-rwxr-xr-xtools/test/stress2/misc/mmap42.sh101
-rwxr-xr-xtools/test/stress2/misc/mmap43.sh182
-rwxr-xr-xtools/test/stress2/misc/mmap44.sh255
-rwxr-xr-xtools/test/stress2/misc/mmap7.sh4
-rwxr-xr-xtools/test/stress2/misc/mount.sh7
-rwxr-xr-xtools/test/stress2/misc/mount2.sh5
-rwxr-xr-x[-rw-r--r--]tools/test/stress2/misc/mount7.sh (renamed from tools/tools/nanobsd/embedded/qemu-mips.cfg)45
-rwxr-xr-xtools/test/stress2/misc/mountro.sh5
-rwxr-xr-xtools/test/stress2/misc/mountro2.sh5
-rwxr-xr-xtools/test/stress2/misc/mountro3.sh9
-rwxr-xr-xtools/test/stress2/misc/mountro4.sh6
-rwxr-xr-xtools/test/stress2/misc/mountro5.sh2
-rwxr-xr-xtools/test/stress2/misc/mountro6.sh2
-rwxr-xr-xtools/test/stress2/misc/mountu.sh10
-rwxr-xr-xtools/test/stress2/misc/mprotect.sh6
-rwxr-xr-xtools/test/stress2/misc/mprotect2.sh2
-rwxr-xr-xtools/test/stress2/misc/msdos.sh4
-rwxr-xr-xtools/test/stress2/misc/msdos10.sh4
-rwxr-xr-xtools/test/stress2/misc/msdos11.sh6
-rwxr-xr-xtools/test/stress2/misc/msdos12.sh6
-rwxr-xr-xtools/test/stress2/misc/msdos13.sh6
-rwxr-xr-xtools/test/stress2/misc/msdos14.sh6
-rwxr-xr-xtools/test/stress2/misc/msdos15.sh90
-rwxr-xr-xtools/test/stress2/misc/msdos16.sh87
-rwxr-xr-xtools/test/stress2/misc/msdos18.sh250
-rwxr-xr-xtools/test/stress2/misc/msdos2.sh7
-rwxr-xr-xtools/test/stress2/misc/msdos3.sh4
-rwxr-xr-xtools/test/stress2/misc/msdos4.sh4
-rwxr-xr-xtools/test/stress2/misc/msdos5.sh4
-rwxr-xr-xtools/test/stress2/misc/msdos6.sh4
-rwxr-xr-xtools/test/stress2/misc/msdos7.sh4
-rwxr-xr-xtools/test/stress2/misc/msdos8.sh4
-rwxr-xr-xtools/test/stress2/misc/msdos9.sh4
-rwxr-xr-xtools/test/stress2/misc/namecache2.sh9
-rwxr-xr-xtools/test/stress2/misc/nbufkv.sh22
-rwxr-xr-xtools/test/stress2/misc/newfs.sh35
-rwxr-xr-xtools/test/stress2/misc/newfs2.sh11
-rwxr-xr-xtools/test/stress2/misc/newfs3.sh11
-rwxr-xr-xtools/test/stress2/misc/newfs4.sh11
-rwxr-xr-xtools/test/stress2/misc/newfs5.sh11
-rwxr-xr-xtools/test/stress2/misc/newfs6.sh64
-rwxr-xr-x[-rw-r--r--]tools/test/stress2/misc/newfs7.sh (renamed from tools/tools/nanobsd/embedded/qemu-mips64.cfg)39
-rwxr-xr-xtools/test/stress2/misc/nfs10.sh5
-rwxr-xr-xtools/test/stress2/misc/nfs11.sh5
-rwxr-xr-xtools/test/stress2/misc/nfs17.sh2
-rwxr-xr-xtools/test/stress2/misc/nfs18.sh6
-rwxr-xr-xtools/test/stress2/misc/nfs2.sh4
-rwxr-xr-xtools/test/stress2/misc/nfs5.sh5
-rwxr-xr-xtools/test/stress2/misc/nfs6.sh7
-rwxr-xr-xtools/test/stress2/misc/nfs_halfpage.sh2
-rwxr-xr-xtools/test/stress2/misc/nfs_halfpage2.sh2
-rwxr-xr-xtools/test/stress2/misc/nlink.sh96
-rwxr-xr-xtools/test/stress2/misc/nlink2.sh71
-rwxr-xr-xtools/test/stress2/misc/nlink3.sh106
-rwxr-xr-xtools/test/stress2/misc/nlink4.sh105
-rwxr-xr-xtools/test/stress2/misc/nlink5.sh123
-rwxr-xr-xtools/test/stress2/misc/nullfs10.sh5
-rwxr-xr-xtools/test/stress2/misc/nullfs11.sh5
-rwxr-xr-xtools/test/stress2/misc/nullfs12.sh5
-rwxr-xr-xtools/test/stress2/misc/nullfs13.sh5
-rwxr-xr-xtools/test/stress2/misc/nullfs14.sh5
-rwxr-xr-xtools/test/stress2/misc/nullfs15.sh5
-rwxr-xr-xtools/test/stress2/misc/nullfs18.sh5
-rwxr-xr-xtools/test/stress2/misc/nullfs19.sh5
-rwxr-xr-xtools/test/stress2/misc/nullfs20.sh5
-rwxr-xr-xtools/test/stress2/misc/nullfs21.sh5
-rwxr-xr-xtools/test/stress2/misc/nullfs22.sh7
-rwxr-xr-xtools/test/stress2/misc/nullfs25.sh7
-rwxr-xr-xtools/test/stress2/misc/nullfs26.sh2
-rwxr-xr-xtools/test/stress2/misc/nullfs27.sh7
-rwxr-xr-xtools/test/stress2/misc/nullfs28.sh81
-rwxr-xr-xtools/test/stress2/misc/nullfs29.sh77
-rwxr-xr-xtools/test/stress2/misc/nullfs30.sh112
-rwxr-xr-xtools/test/stress2/misc/nullfs7.sh5
-rwxr-xr-xtools/test/stress2/misc/nullfs9.sh5
-rwxr-xr-xtools/test/stress2/misc/numa.sh2
-rwxr-xr-xtools/test/stress2/misc/open2.sh2
-rwxr-xr-xtools/test/stress2/misc/overcommit.sh8
-rwxr-xr-xtools/test/stress2/misc/overcommit2.sh5
-rwxr-xr-xtools/test/stress2/misc/overflow3.sh2
-rwxr-xr-xtools/test/stress2/misc/overlap.sh5
-rwxr-xr-xtools/test/stress2/misc/pageout.sh15
-rwxr-xr-xtools/test/stress2/misc/parallelmount.sh5
-rwxr-xr-xtools/test/stress2/misc/parallelmount2.sh9
-rwxr-xr-xtools/test/stress2/misc/pcatch.sh5
-rwxr-xr-xtools/test/stress2/misc/perf.sh2
-rwxr-xr-xtools/test/stress2/misc/pfl.sh10
-rwxr-xr-xtools/test/stress2/misc/pfl2.sh10
-rwxr-xr-xtools/test/stress2/misc/pfl4.sh10
-rwxr-xr-xtools/test/stress2/misc/ping.sh2
-rwxr-xr-xtools/test/stress2/misc/pipe3.sh2
-rwxr-xr-xtools/test/stress2/misc/pipe_enomem.sh2
-rwxr-xr-xtools/test/stress2/misc/pkru.sh2
-rwxr-xr-xtools/test/stress2/misc/pmc6.sh2
-rwxr-xr-xtools/test/stress2/misc/poll2.sh6
-rwxr-xr-xtools/test/stress2/misc/pread.sh5
-rwxr-xr-xtools/test/stress2/misc/proccontrol.sh2
-rwxr-xr-xtools/test/stress2/misc/procfs4.sh7
-rwxr-xr-xtools/test/stress2/misc/procfs6.sh2
-rwxr-xr-xtools/test/stress2/misc/procstat.sh2
-rwxr-xr-xtools/test/stress2/misc/procstat2.sh2
-rwxr-xr-xtools/test/stress2/misc/ptrace10.sh2
-rwxr-xr-xtools/test/stress2/misc/ptrace11.sh2
-rwxr-xr-xtools/test/stress2/misc/ptrace12.sh2
-rwxr-xr-xtools/test/stress2/misc/ptrace9.sh2
-rwxr-xr-xtools/test/stress2/misc/pts2.sh4
-rwxr-xr-xtools/test/stress2/misc/pts3.sh2
-rwxr-xr-xtools/test/stress2/misc/quota1.sh7
-rwxr-xr-xtools/test/stress2/misc/quota10.sh7
-rwxr-xr-xtools/test/stress2/misc/quota11.sh7
-rwxr-xr-xtools/test/stress2/misc/quota12.sh9
-rwxr-xr-xtools/test/stress2/misc/quota2.sh7
-rwxr-xr-xtools/test/stress2/misc/quota3.sh7
-rwxr-xr-xtools/test/stress2/misc/quota4.sh9
-rwxr-xr-xtools/test/stress2/misc/quota5.sh2
-rwxr-xr-xtools/test/stress2/misc/quota6.sh7
-rwxr-xr-xtools/test/stress2/misc/quota7.sh7
-rwxr-xr-xtools/test/stress2/misc/quota8.sh9
-rwxr-xr-xtools/test/stress2/misc/quota9.sh5
-rwxr-xr-xtools/test/stress2/misc/r335171.sh2
-rwxr-xr-xtools/test/stress2/misc/radix.sh8
-rwxr-xr-xtools/test/stress2/misc/random.sh2
-rwxr-xr-xtools/test/stress2/misc/rdgsbase.sh2
-rwxr-xr-xtools/test/stress2/misc/readdir.sh10
-rwxr-xr-xtools/test/stress2/misc/reaper.sh108
-rwxr-xr-xtools/test/stress2/misc/reaper2.sh131
-rwxr-xr-xtools/test/stress2/misc/reaper3.sh154
-rwxr-xr-xtools/test/stress2/misc/reaper4.sh153
-rwxr-xr-xtools/test/stress2/misc/reaper5.sh (renamed from tools/test/stress2/misc/vmstat2.sh)23
-rwxr-xr-xtools/test/stress2/misc/recursiveflushes.sh5
-rwxr-xr-xtools/test/stress2/misc/rename10.sh7
-rwxr-xr-xtools/test/stress2/misc/rename11.sh9
-rwxr-xr-xtools/test/stress2/misc/rename12.sh7
-rwxr-xr-xtools/test/stress2/misc/rename13.sh5
-rwxr-xr-xtools/test/stress2/misc/rename14.sh5
-rwxr-xr-xtools/test/stress2/misc/rename15.sh2
-rwxr-xr-xtools/test/stress2/misc/rename5.sh9
-rwxr-xr-xtools/test/stress2/misc/rename6.sh7
-rwxr-xr-xtools/test/stress2/misc/rename7.sh9
-rwxr-xr-xtools/test/stress2/misc/rename8.sh9
-rwxr-xr-xtools/test/stress2/misc/rename9.sh7
-rwxr-xr-xtools/test/stress2/misc/rot.sh5
-rwxr-xr-xtools/test/stress2/misc/routetbl.sh5
-rwxr-xr-xtools/test/stress2/misc/rw.sh5
-rwxr-xr-xtools/test/stress2/misc/sched.sh5
-rwxr-xr-xtools/test/stress2/misc/seekhole.sh77
-rwxr-xr-xtools/test/stress2/misc/segnp.sh2
-rwxr-xr-xtools/test/stress2/misc/segregs.sh2
-rwxr-xr-xtools/test/stress2/misc/sem_post.sh2
-rwxr-xr-xtools/test/stress2/misc/sem_timedwait.sh2
-rwxr-xr-xtools/test/stress2/misc/sem_wait.sh2
-rwxr-xr-xtools/test/stress2/misc/sendfile.sh4
-rwxr-xr-xtools/test/stress2/misc/sendfile10.sh7
-rwxr-xr-xtools/test/stress2/misc/sendfile11.sh4
-rwxr-xr-xtools/test/stress2/misc/sendfile12.sh4
-rwxr-xr-xtools/test/stress2/misc/sendfile13.sh18
-rwxr-xr-xtools/test/stress2/misc/sendfile14.sh16
-rwxr-xr-xtools/test/stress2/misc/sendfile15.sh7
-rwxr-xr-xtools/test/stress2/misc/sendfile16.sh5
-rwxr-xr-xtools/test/stress2/misc/sendfile17.sh7
-rwxr-xr-xtools/test/stress2/misc/sendfile18.sh2
-rwxr-xr-xtools/test/stress2/misc/sendfile19.sh2
-rwxr-xr-xtools/test/stress2/misc/sendfile2.sh2
-rwxr-xr-xtools/test/stress2/misc/sendfile20.sh2
-rwxr-xr-xtools/test/stress2/misc/sendfile21.sh5
-rwxr-xr-xtools/test/stress2/misc/sendfile22.sh5
-rwxr-xr-xtools/test/stress2/misc/sendfile23.sh3
-rwxr-xr-xtools/test/stress2/misc/sendfile24.sh6
-rwxr-xr-xtools/test/stress2/misc/sendfile25.sh6
-rwxr-xr-xtools/test/stress2/misc/sendfile26.sh2
-rwxr-xr-xtools/test/stress2/misc/sendfile3.sh4
-rwxr-xr-xtools/test/stress2/misc/sendfile5.sh5
-rwxr-xr-xtools/test/stress2/misc/sendfile6.sh5
-rwxr-xr-xtools/test/stress2/misc/sendfile8.sh9
-rwxr-xr-xtools/test/stress2/misc/sendfile9.sh9
-rwxr-xr-xtools/test/stress2/misc/setrlimit.sh193
-rwxr-xr-xtools/test/stress2/misc/setrlimit2.sh118
-rwxr-xr-xtools/test/stress2/misc/setsockopt.sh2
-rwxr-xr-xtools/test/stress2/misc/setsockopt2.sh7
-rwxr-xr-xtools/test/stress2/misc/setuid.sh5
-rwxr-xr-xtools/test/stress2/misc/shm2.sh5
-rwxr-xr-xtools/test/stress2/misc/shm3.sh74
-rwxr-xr-xtools/test/stress2/misc/shm_super.sh3
-rwxr-xr-xtools/test/stress2/misc/sigfastblock.sh2
-rwxr-xr-xtools/test/stress2/misc/sigfastblock2.sh2
-rwxr-xr-xtools/test/stress2/misc/signal2.sh53
-rwxr-xr-xtools/test/stress2/misc/sigreturn2.sh69
-rwxr-xr-xtools/test/stress2/misc/sigreturn3.sh182
-rwxr-xr-xtools/test/stress2/misc/sigreturn4.sh208
-rwxr-xr-xtools/test/stress2/misc/sigstop2.sh2
-rwxr-xr-xtools/test/stress2/misc/sigxcpu.sh5
-rwxr-xr-xtools/test/stress2/misc/smrstress.sh2
-rwxr-xr-xtools/test/stress2/misc/smrstress2.sh2
-rwxr-xr-xtools/test/stress2/misc/snap10.sh5
-rwxr-xr-xtools/test/stress2/misc/snap11.sh7
-rwxr-xr-xtools/test/stress2/misc/snap12.sh9
-rwxr-xr-xtools/test/stress2/misc/snap13.sh70
-rwxr-xr-xtools/test/stress2/misc/snap8.sh11
-rwxr-xr-xtools/test/stress2/misc/snap9.sh5
-rwxr-xr-xtools/test/stress2/misc/socketpair4.sh3
-rwxr-xr-xtools/test/stress2/misc/sort2.sh2
-rwxr-xr-xtools/test/stress2/misc/sparse.sh5
-rwxr-xr-xtools/test/stress2/misc/spin.sh5
-rwxr-xr-xtools/test/stress2/misc/split.sh2
-rwxr-xr-xtools/test/stress2/misc/su.sh2
-rwxr-xr-xtools/test/stress2/misc/suj.sh7
-rwxr-xr-xtools/test/stress2/misc/suj11.sh13
-rwxr-xr-xtools/test/stress2/misc/suj12.sh3
-rwxr-xr-xtools/test/stress2/misc/suj13.sh7
-rwxr-xr-xtools/test/stress2/misc/suj14.sh5
-rwxr-xr-xtools/test/stress2/misc/suj15.sh9
-rwxr-xr-xtools/test/stress2/misc/suj16.sh7
-rwxr-xr-xtools/test/stress2/misc/suj17.sh9
-rwxr-xr-xtools/test/stress2/misc/suj18.sh5
-rwxr-xr-xtools/test/stress2/misc/suj19.sh5
-rwxr-xr-xtools/test/stress2/misc/suj2.sh5
-rwxr-xr-xtools/test/stress2/misc/suj20.sh5
-rwxr-xr-xtools/test/stress2/misc/suj21.sh5
-rwxr-xr-xtools/test/stress2/misc/suj22.sh13
-rwxr-xr-xtools/test/stress2/misc/suj23.sh5
-rwxr-xr-xtools/test/stress2/misc/suj24.sh5
-rwxr-xr-xtools/test/stress2/misc/suj25.sh5
-rwxr-xr-xtools/test/stress2/misc/suj26.sh7
-rwxr-xr-xtools/test/stress2/misc/suj27.sh7
-rwxr-xr-xtools/test/stress2/misc/suj28.sh5
-rwxr-xr-xtools/test/stress2/misc/suj29.sh15
-rwxr-xr-xtools/test/stress2/misc/suj30.sh7
-rwxr-xr-xtools/test/stress2/misc/suj31.sh11
-rwxr-xr-xtools/test/stress2/misc/suj32.sh11
-rwxr-xr-xtools/test/stress2/misc/suj33.sh9
-rwxr-xr-xtools/test/stress2/misc/suj34.sh5
-rwxr-xr-xtools/test/stress2/misc/suj36.sh84
-rwxr-xr-xtools/test/stress2/misc/suj4.sh7
-rwxr-xr-xtools/test/stress2/misc/suj5.sh8
-rwxr-xr-xtools/test/stress2/misc/suj6.sh5
-rwxr-xr-xtools/test/stress2/misc/suj7.sh9
-rwxr-xr-xtools/test/stress2/misc/suj8.sh11
-rwxr-xr-xtools/test/stress2/misc/suj9.sh5
-rwxr-xr-xtools/test/stress2/misc/swap2.sh5
-rwxr-xr-xtools/test/stress2/misc/swap5.sh2
-rwxr-xr-xtools/test/stress2/misc/swap6.sh4
-rwxr-xr-xtools/test/stress2/misc/swapoff.sh5
-rwxr-xr-xtools/test/stress2/misc/swapoff2.sh5
-rwxr-xr-xtools/test/stress2/misc/swapoff3.sh2
-rwxr-xr-xtools/test/stress2/misc/swapoff4.sh2
-rwxr-xr-xtools/test/stress2/misc/swapoff5.sh2
-rwxr-xr-xtools/test/stress2/misc/symlink3.sh7
-rwxr-xr-xtools/test/stress2/misc/symlink4.sh5
-rwxr-xr-xtools/test/stress2/misc/symlink5.sh2
-rwxr-xr-xtools/test/stress2/misc/syscall4.sh11
-rwxr-xr-xtools/test/stress2/misc/systrace.sh2
-rwxr-xr-xtools/test/stress2/misc/systrace2.sh2
-rwxr-xr-xtools/test/stress2/misc/syzkaller11.sh2
-rwxr-xr-xtools/test/stress2/misc/syzkaller12.sh2
-rwxr-xr-xtools/test/stress2/misc/syzkaller14.sh2
-rwxr-xr-xtools/test/stress2/misc/syzkaller15.sh2
-rwxr-xr-xtools/test/stress2/misc/syzkaller16.sh5
-rwxr-xr-xtools/test/stress2/misc/syzkaller17.sh3
-rwxr-xr-xtools/test/stress2/misc/syzkaller18.sh3
-rwxr-xr-xtools/test/stress2/misc/syzkaller19.sh5
-rwxr-xr-xtools/test/stress2/misc/syzkaller24.sh2
-rwxr-xr-xtools/test/stress2/misc/syzkaller25.sh2
-rwxr-xr-xtools/test/stress2/misc/syzkaller26.sh2
-rwxr-xr-xtools/test/stress2/misc/syzkaller27.sh2
-rwxr-xr-xtools/test/stress2/misc/syzkaller28.sh4
-rwxr-xr-xtools/test/stress2/misc/syzkaller29.sh7
-rwxr-xr-xtools/test/stress2/misc/syzkaller30.sh5
-rwxr-xr-xtools/test/stress2/misc/syzkaller31.sh4
-rwxr-xr-xtools/test/stress2/misc/syzkaller32.sh4
-rwxr-xr-xtools/test/stress2/misc/syzkaller33.sh4
-rwxr-xr-xtools/test/stress2/misc/syzkaller34.sh4
-rwxr-xr-xtools/test/stress2/misc/syzkaller35.sh2
-rwxr-xr-xtools/test/stress2/misc/syzkaller36.sh2
-rwxr-xr-xtools/test/stress2/misc/syzkaller37.sh2
-rwxr-xr-xtools/test/stress2/misc/syzkaller38.sh2
-rwxr-xr-xtools/test/stress2/misc/syzkaller39.sh2
-rwxr-xr-xtools/test/stress2/misc/syzkaller4.sh2
-rwxr-xr-xtools/test/stress2/misc/syzkaller40.sh2
-rwxr-xr-xtools/test/stress2/misc/syzkaller41.sh2
-rwxr-xr-xtools/test/stress2/misc/syzkaller42.sh4
-rwxr-xr-xtools/test/stress2/misc/syzkaller43.sh4
-rwxr-xr-xtools/test/stress2/misc/syzkaller46.sh118
-rwxr-xr-xtools/test/stress2/misc/syzkaller47.sh404
-rwxr-xr-xtools/test/stress2/misc/syzkaller48.sh85
-rwxr-xr-xtools/test/stress2/misc/syzkaller49.sh299
-rwxr-xr-xtools/test/stress2/misc/syzkaller50.sh169
-rwxr-xr-xtools/test/stress2/misc/syzkaller51.sh195
-rwxr-xr-xtools/test/stress2/misc/syzkaller52.sh458
-rwxr-xr-xtools/test/stress2/misc/syzkaller53.sh172
-rwxr-xr-xtools/test/stress2/misc/syzkaller54.sh324
-rwxr-xr-xtools/test/stress2/misc/syzkaller55.sh197
-rwxr-xr-xtools/test/stress2/misc/syzkaller56.sh298
-rwxr-xr-xtools/test/stress2/misc/syzkaller57.sh267
-rwxr-xr-xtools/test/stress2/misc/syzkaller58.sh290
-rwxr-xr-xtools/test/stress2/misc/syzkaller59.sh154
-rwxr-xr-xtools/test/stress2/misc/syzkaller60.sh103
-rwxr-xr-xtools/test/stress2/misc/syzkaller61.sh319
-rwxr-xr-xtools/test/stress2/misc/syzkaller62.sh83
-rwxr-xr-xtools/test/stress2/misc/syzkaller63.sh75
-rwxr-xr-xtools/test/stress2/misc/syzkaller64.sh328
-rwxr-xr-xtools/test/stress2/misc/syzkaller65.sh82
-rwxr-xr-xtools/test/stress2/misc/syzkaller66.sh156
-rwxr-xr-xtools/test/stress2/misc/syzkaller67.sh99
-rwxr-xr-xtools/test/stress2/misc/syzkaller68.sh235
-rwxr-xr-xtools/test/stress2/misc/syzkaller69.sh494
-rwxr-xr-xtools/test/stress2/misc/syzkaller7.sh2
-rwxr-xr-xtools/test/stress2/misc/syzkaller70.sh302
-rwxr-xr-xtools/test/stress2/misc/tcp3.sh4
-rwxr-xr-xtools/test/stress2/misc/tcp4.sh6
-rwxr-xr-xtools/test/stress2/misc/timeout.sh2
-rwxr-xr-xtools/test/stress2/misc/tmpfs19.sh2
-rwxr-xr-xtools/test/stress2/misc/tmpfs20.sh2
-rwxr-xr-xtools/test/stress2/misc/tmpfs21.sh2
-rwxr-xr-xtools/test/stress2/misc/tmpfs22.sh2
-rwxr-xr-xtools/test/stress2/misc/tmpfs23.sh2
-rwxr-xr-xtools/test/stress2/misc/tmpfs24.sh72
-rwxr-xr-xtools/test/stress2/misc/tmpfs25.sh86
-rwxr-xr-xtools/test/stress2/misc/trim.sh9
-rwxr-xr-xtools/test/stress2/misc/trim2.sh9
-rwxr-xr-xtools/test/stress2/misc/trim3.sh9
-rwxr-xr-xtools/test/stress2/misc/trim4.sh9
-rwxr-xr-xtools/test/stress2/misc/trim5.sh5
-rwxr-xr-xtools/test/stress2/misc/trim8.sh2
-rwxr-xr-xtools/test/stress2/misc/truncate3.sh7
-rwxr-xr-xtools/test/stress2/misc/truncate4.sh7
-rwxr-xr-xtools/test/stress2/misc/truncate5.sh9
-rwxr-xr-xtools/test/stress2/misc/truncate7.sh9
-rwxr-xr-xtools/test/stress2/misc/truncate8.sh10
-rwxr-xr-xtools/test/stress2/misc/truncate9.sh7
-rwxr-xr-xtools/test/stress2/misc/truss2.sh2
-rwxr-xr-xtools/test/stress2/misc/tvnlru.sh13
-rwxr-xr-xtools/test/stress2/misc/udp2.sh2
-rwxr-xr-xtools/test/stress2/misc/ufsbench.sh7
-rwxr-xr-xtools/test/stress2/misc/umount.sh7
-rwxr-xr-xtools/test/stress2/misc/umount2.sh5
-rwxr-xr-xtools/test/stress2/misc/umount3.sh9
-rwxr-xr-xtools/test/stress2/misc/umount4.sh2
-rwxr-xr-xtools/test/stress2/misc/umountf.sh7
-rwxr-xr-xtools/test/stress2/misc/umountf11.sh2
-rwxr-xr-xtools/test/stress2/misc/umountf12.sh2
-rwxr-xr-xtools/test/stress2/misc/umountf2.sh7
-rwxr-xr-xtools/test/stress2/misc/umountf3.sh5
-rwxr-xr-xtools/test/stress2/misc/umountf4.sh5
-rwxr-xr-xtools/test/stress2/misc/umountf5.sh7
-rwxr-xr-xtools/test/stress2/misc/umountf6.sh5
-rwxr-xr-xtools/test/stress2/misc/umountf7.sh5
-rwxr-xr-xtools/test/stress2/misc/union.sh22
-rwxr-xr-xtools/test/stress2/misc/unionfs10.sh87
-rwxr-xr-xtools/test/stress2/misc/unionfs11.sh87
-rwxr-xr-xtools/test/stress2/misc/unionfs12.sh88
-rwxr-xr-xtools/test/stress2/misc/unionfs13.sh75
-rwxr-xr-xtools/test/stress2/misc/unionfs14.sh94
-rwxr-xr-xtools/test/stress2/misc/unionfs15.sh86
-rwxr-xr-xtools/test/stress2/misc/unionfs16.sh65
-rwxr-xr-xtools/test/stress2/misc/unionfs17.sh73
-rwxr-xr-xtools/test/stress2/misc/unionfs18.sh73
-rwxr-xr-xtools/test/stress2/misc/unionfs3.sh5
-rwxr-xr-xtools/test/stress2/misc/unionfs4.sh9
-rwxr-xr-xtools/test/stress2/misc/unionfs5.sh18
-rwxr-xr-xtools/test/stress2/misc/unionfs6.sh104
-rwxr-xr-xtools/test/stress2/misc/unionfs7.sh110
-rwxr-xr-xtools/test/stress2/misc/unionfs8.sh124
-rwxr-xr-xtools/test/stress2/misc/unionfs9.sh100
-rwxr-xr-xtools/test/stress2/misc/unix_socket.sh2
-rwxr-xr-xtools/test/stress2/misc/unix_socket_detach.sh2
-rwxr-xr-xtools/test/stress2/misc/vm_fault.sh113
-rwxr-xr-xtools/test/stress2/misc/vm_map.sh4
-rwxr-xr-xtools/test/stress2/misc/vunref.sh7
-rwxr-xr-xtools/test/stress2/misc/vunref2.sh9
-rwxr-xr-xtools/test/stress2/misc/write2.sh (renamed from tools/test/stress2/misc/md4.sh)30
-rwxr-xr-xtools/test/stress2/misc/zfs10.sh2
-rwxr-xr-xtools/test/stress2/misc/zfs11.sh2
-rwxr-xr-xtools/test/stress2/misc/zfs12.sh2
-rwxr-xr-xtools/test/stress2/misc/zfs13.sh2
-rwxr-xr-xtools/test/stress2/misc/zfs14.sh90
-rwxr-xr-xtools/test/stress2/misc/zfs8.sh2
-rwxr-xr-xtools/test/stress2/misc/zfs9.sh2
-rwxr-xr-xtools/test/stress2/misc/zz-combo01.sh2
-rwxr-xr-xtools/test/stress2/misc/zz-combo02.sh2
-rwxr-xr-xtools/test/stress2/misc/zz-combo03.sh2
-rwxr-xr-xtools/test/stress2/misc/zz-combo04.sh2
-rwxr-xr-xtools/test/stress2/misc/zzbuildworld.sh2
-rw-r--r--tools/test/stress2/testcases/socket/socket.c4
-rw-r--r--tools/test/stress2/testcases/swap/swap.c6
-rw-r--r--tools/test/stress2/testcases/tcp/tcp.c4
-rw-r--r--tools/test/stress2/tools/bench.c8
-rwxr-xr-xtools/test/stress2/tools/fail.sh2
-rwxr-xr-xtools/test/stress2/tools/fast.sh2
-rw-r--r--tools/test/stress2/tools/flip.c44
-rw-r--r--tools/test/stress2/tools/lsholes.c61
-rwxr-xr-xtools/test/stress2/tools/ministat.sh2
-rwxr-xr-xtools/test/stress2/tools/ps.sh2
-rw-r--r--tools/test/stress2/tools/serial.c44
-rw-r--r--tools/test/stress2/tools/swap.c2
-rwxr-xr-xtools/test/stress2/tools/vmstat.sh31
-rw-r--r--tools/test/stress2/tools/zapsb.c75
-rw-r--r--tools/test/testfloat/README.txt50
-rw-r--r--tools/test/testfloat/fail.c46
-rw-r--r--tools/test/testfloat/fail.h29
-rw-r--r--tools/test/testfloat/random.c63
-rw-r--r--tools/test/testfloat/random.h32
-rw-r--r--tools/test/testfloat/slowfloat-32.c1183
-rw-r--r--tools/test/testfloat/slowfloat-64.c2109
-rw-r--r--tools/test/testfloat/slowfloat.c35
-rw-r--r--tools/test/testfloat/slowfloat.h167
-rw-r--r--tools/test/testfloat/systemBugs.txt323
-rw-r--r--tools/test/testfloat/systflags.h33
-rw-r--r--tools/test/testfloat/systfloat.c553
-rw-r--r--tools/test/testfloat/systmodes.h42
-rw-r--r--tools/test/testfloat/testCases.c3682
-rw-r--r--tools/test/testfloat/testCases.h69
-rw-r--r--tools/test/testfloat/testFunction.c1149
-rw-r--r--tools/test/testfloat/testFunction.h135
-rw-r--r--tools/test/testfloat/testLoops.c2713
-rw-r--r--tools/test/testfloat/testLoops.h143
-rw-r--r--tools/test/testfloat/testfloat-history.txt57
-rw-r--r--tools/test/testfloat/testfloat-source.txt444
-rw-r--r--tools/test/testfloat/testfloat.c299
-rw-r--r--tools/test/testfloat/testfloat.txt771
-rw-r--r--tools/test/testfloat/testsoftfloat.c1044
-rw-r--r--tools/test/testfloat/writeHex.c183
-rw-r--r--tools/test/testfloat/writeHex.h42
-rw-r--r--tools/test/upsdl/Makefile1
-rw-r--r--tools/test/upsdl/upsdl.c2
-rw-r--r--tools/test/vm86/Makefile1
-rw-r--r--tools/test/vm86/vm86_test.c3
-rw-r--r--tools/test/vm86/vm86_test_asm.s4
-rw-r--r--tools/test/xregs_sig/Makefile11
-rw-r--r--tools/test/xregs_sig/c2x2c_aarch64.S64
-rw-r--r--tools/test/xregs_sig/c2x2c_amd64.S140
-rw-r--r--tools/test/xregs_sig/xregs_sig.c262
-rwxr-xr-xtools/tinder.sh1
-rw-r--r--tools/tools/README6
-rw-r--r--tools/tools/aac/Makefile1
-rw-r--r--tools/tools/aac/aac_checkq.c3
-rw-r--r--tools/tools/ansify/Makefile1
-rw-r--r--tools/tools/ansify/ansify.pl3
-rw-r--r--tools/tools/ath/Makefile1
-rw-r--r--tools/tools/ath/Makefile.inc1
-rw-r--r--tools/tools/ath/arcode/Makefile1
-rw-r--r--tools/tools/ath/arcode/arcode.c2
-rw-r--r--tools/tools/ath/ath_ee_9287_print/9287.c2
-rw-r--r--tools/tools/ath/ath_ee_9287_print/9287.h1
-rw-r--r--tools/tools/ath/ath_ee_9287_print/Makefile1
-rw-r--r--tools/tools/ath/ath_ee_9287_print/eeprom.c2
-rw-r--r--tools/tools/ath/ath_ee_9287_print/eeprom.h1
-rw-r--r--tools/tools/ath/ath_ee_9287_print/main.c2
-rw-r--r--tools/tools/ath/ath_ee_9300_print/Makefile1
-rw-r--r--tools/tools/ath/ath_ee_9300_print/Makefile.depend1
-rw-r--r--tools/tools/ath/ath_ee_9300_print/main.c2
-rw-r--r--tools/tools/ath/ath_ee_v14_print/Makefile1
-rw-r--r--tools/tools/ath/ath_ee_v14_print/ath_ee_v14_print.c2
-rw-r--r--tools/tools/ath/ath_ee_v4k_print/Makefile1
-rw-r--r--tools/tools/ath/ath_ee_v4k_print/eeprom.c2
-rw-r--r--tools/tools/ath/ath_ee_v4k_print/eeprom.h1
-rw-r--r--tools/tools/ath/ath_ee_v4k_print/main.c2
-rw-r--r--tools/tools/ath/ath_ee_v4k_print/v4k.c2
-rw-r--r--tools/tools/ath/ath_ee_v4k_print/v4k.h1
-rw-r--r--tools/tools/ath/ath_prom_read/Makefile1
-rw-r--r--tools/tools/ath/ath_prom_read/ath_prom_read.c2
-rw-r--r--tools/tools/ath/athaggrstats/Makefile1
-rw-r--r--tools/tools/ath/athaggrstats/athaggrstats.c2
-rw-r--r--tools/tools/ath/athaggrstats/athaggrstats.h2
-rw-r--r--tools/tools/ath/athaggrstats/main.c2
-rw-r--r--tools/tools/ath/athalq/Makefile1
-rw-r--r--tools/tools/ath/athalq/ar5210_ds.c2
-rw-r--r--tools/tools/ath/athalq/ar5210_ds.h2
-rw-r--r--tools/tools/ath/athalq/ar5211_ds.c2
-rw-r--r--tools/tools/ath/athalq/ar5211_ds.h2
-rw-r--r--tools/tools/ath/athalq/ar5212_ds.c2
-rw-r--r--tools/tools/ath/athalq/ar5212_ds.h2
-rw-r--r--tools/tools/ath/athalq/ar5416_ds.c2
-rw-r--r--tools/tools/ath/athalq/ar5416_ds.h2
-rw-r--r--tools/tools/ath/athalq/ar5416_ds_tdma.c2
-rw-r--r--tools/tools/ath/athalq/ar9300_ds.c2
-rw-r--r--tools/tools/ath/athalq/ar9300_ds.h2
-rw-r--r--tools/tools/ath/athalq/main.c2
-rw-r--r--tools/tools/ath/athalq/tdma.c2
-rw-r--r--tools/tools/ath/athalq/tdma.h2
-rwxr-xr-xtools/tools/ath/athalq/txdiff.pl2
-rw-r--r--tools/tools/ath/athani/Makefile1
-rw-r--r--tools/tools/ath/athani/main.c2
-rw-r--r--tools/tools/ath/athctrl.sh1
-rw-r--r--tools/tools/ath/athdebug/Makefile1
-rw-r--r--tools/tools/ath/athdebug/athdebug.c2
-rw-r--r--tools/tools/ath/athdecode/Makefile1
-rw-r--r--tools/tools/ath/athdecode/main.c2
-rw-r--r--tools/tools/ath/athkey/Makefile1
-rw-r--r--tools/tools/ath/athkey/athkey.c2
-rw-r--r--tools/tools/ath/athpoke/Makefile1
-rw-r--r--tools/tools/ath/athpoke/athpoke.c2
-rw-r--r--tools/tools/ath/athpow/Makefile1
-rw-r--r--tools/tools/ath/athpow/athpow.c2
-rw-r--r--tools/tools/ath/athprom/Makefile1
-rw-r--r--tools/tools/ath/athprom/athprom.c2
-rw-r--r--tools/tools/ath/athprom/eeprom-141
-rw-r--r--tools/tools/ath/athprom/eeprom-31
-rw-r--r--tools/tools/ath/athprom/eeprom-41
-rw-r--r--tools/tools/ath/athprom/eeprom-51
-rw-r--r--tools/tools/ath/athradar/Makefile1
-rw-r--r--tools/tools/ath/athradar/athradar.c2
-rw-r--r--tools/tools/ath/athratestats/Makefile1
-rw-r--r--tools/tools/ath/athratestats/main.c2
-rw-r--r--tools/tools/ath/athrd/Makefile1
-rw-r--r--tools/tools/ath/athrd/athrd.12
-rw-r--r--tools/tools/ath/athrd/athrd.c2
-rwxr-xr-xtools/tools/ath/athrd/run.sh1
-rw-r--r--tools/tools/ath/athregs/Makefile1
-rw-r--r--tools/tools/ath/athregs/dumpregs.c2
-rw-r--r--tools/tools/ath/athspectral/Makefile1
-rw-r--r--tools/tools/ath/athspectral/athspectral.c2
-rw-r--r--tools/tools/ath/athstats/Makefile1
-rw-r--r--tools/tools/ath/athstats/athstats.c2
-rw-r--r--tools/tools/ath/athstats/athstats.h2
-rw-r--r--tools/tools/ath/athstats/main.c2
-rw-r--r--tools/tools/ath/athsurvey/Makefile1
-rw-r--r--tools/tools/ath/athsurvey/athsurvey.c2
-rw-r--r--tools/tools/ath/common/ah_osdep.h2
-rw-r--r--tools/tools/ath/common/ctrl.c2
-rw-r--r--tools/tools/ath/common/ctrl.h2
-rw-r--r--tools/tools/ath/common/diag.h2
-rw-r--r--tools/tools/ath/common/dumpregs.h2
-rw-r--r--tools/tools/ath/common/dumpregs_5210.c2
-rw-r--r--tools/tools/ath/common/dumpregs_5211.c2
-rw-r--r--tools/tools/ath/common/dumpregs_5212.c2
-rw-r--r--tools/tools/ath/common/dumpregs_5416.c2
-rw-r--r--tools/tools/atsectl/Makefile11
-rw-r--r--tools/tools/atsectl/atsectl.c327
-rw-r--r--tools/tools/bhyve/Makefile8
-rw-r--r--tools/tools/bhyve/fwctl_fetch.c143
-rw-r--r--tools/tools/bootparttest/Makefile1
-rw-r--r--tools/tools/bootparttest/bootparttest.c3
-rw-r--r--tools/tools/bootparttest/stub.c2
-rw-r--r--tools/tools/build_option_survey/listallopts.sh1
-rw-r--r--tools/tools/build_option_survey/mkhtml.sh1
-rw-r--r--tools/tools/build_option_survey/option_survey.sh1
-rw-r--r--tools/tools/build_option_survey/reduce.sh1
-rwxr-xr-xtools/tools/cd2dvd/cd2dvd.sh1
-rw-r--r--tools/tools/cfi/Makefile1
-rw-r--r--tools/tools/cfi/cfi.c2
-rw-r--r--tools/tools/commitsdb/make_commit_db2
-rw-r--r--tools/tools/commitsdb/query_commit_db2
-rw-r--r--tools/tools/crypto/Makefile1
-rw-r--r--tools/tools/crypto/README1
-rw-r--r--tools/tools/crypto/cryptocheck.c73
-rwxr-xr-xtools/tools/crypto/cryptorun.sh1
-rw-r--r--tools/tools/crypto/cryptostats.c2
-rw-r--r--tools/tools/crypto/cryptotest.c2
-rw-r--r--tools/tools/crypto/hifnstats.c2
-rw-r--r--tools/tools/crypto/ipsecstats.c2
-rw-r--r--tools/tools/crypto/safestats.c2
-rw-r--r--tools/tools/cxgbtool/Makefile1
-rw-r--r--tools/tools/cxgbtool/cxgbtool.c2
-rw-r--r--tools/tools/cxgbtool/reg_defs.c1
-rw-r--r--tools/tools/cxgbtool/reg_defs_t3.c1
-rw-r--r--tools/tools/cxgbtool/reg_defs_t3b.c1
-rw-r--r--tools/tools/cxgbtool/reg_defs_t3c.c1
-rw-r--r--tools/tools/cxgbtool/version.h1
-rw-r--r--tools/tools/decioctl/Makefile1
-rw-r--r--tools/tools/decioctl/decioctl.c2
-rw-r--r--tools/tools/dmardump/Makefile1
-rw-r--r--tools/tools/dmardump/dmardump.c3
-rw-r--r--tools/tools/drm/README1
-rwxr-xr-xtools/tools/drm/gen-drm_pciids5
-rw-r--r--tools/tools/drm/radeon/README1
-rw-r--r--tools/tools/drm/radeon/firmwares/README1
-rwxr-xr-xtools/tools/drm/radeon/firmwares/encode-firmwares1
-rw-r--r--tools/tools/drm/radeon/mkregtable/Makefile1
-rw-r--r--tools/tools/drm/radeon/mkregtable/Makefile.depend1
-rw-r--r--tools/tools/drm/radeon/mkregtable/README1
-rw-r--r--tools/tools/drm/radeon/mkregtable/mkregtable.c8
-rw-r--r--tools/tools/editing/freebsd.vim2
-rw-r--r--tools/tools/epfe/epfe.pl38
-rw-r--r--tools/tools/ether_reflect/Makefile1
-rw-r--r--tools/tools/ether_reflect/ether_reflect.18
-rw-r--r--tools/tools/ether_reflect/ether_reflect.c2
-rwxr-xr-xtools/tools/fetchbench/fetchbench1
-rw-r--r--tools/tools/find-sb/Makefile1
-rw-r--r--tools/tools/find-sb/README1
-rw-r--r--tools/tools/find-sb/find-sb.c2
-rw-r--r--tools/tools/find-sb/mini_ufs.h2
-rw-r--r--tools/tools/fixwhite/Makefile1
-rw-r--r--tools/tools/fixwhite/fixwhite.12
-rw-r--r--tools/tools/fixwhite/fixwhite.c2
-rw-r--r--tools/tools/gdb_regofs/Makefile1
-rw-r--r--tools/tools/genericize/Makefile1
-rwxr-xr-xtools/tools/genericize/genericize.pl3
-rw-r--r--tools/tools/gensnmpdef/Makefile1
-rw-r--r--tools/tools/git/HOWTO7
-rwxr-xr-xtools/tools/git/arcgit5
-rw-r--r--tools/tools/git/git-arc.169
-rw-r--r--tools/tools/git/git-arc.sh297
-rwxr-xr-xtools/tools/git/hooks/prepare-commit-msg2
-rw-r--r--tools/tools/git/mfc-candidates.sh179
-rw-r--r--tools/tools/hcomp/Makefile1
-rw-r--r--tools/tools/hcomp/hcomp.pl3
-rw-r--r--tools/tools/html-mv/html-mv59
-rw-r--r--tools/tools/ifinfo/Makefile1
-rw-r--r--tools/tools/ifinfo/ifinfo.c2
-rw-r--r--tools/tools/ifinfo/ifinfo.h2
-rw-r--r--tools/tools/ifpifa/Makefile1
-rw-r--r--tools/tools/ifpifa/ifpifa.c5
-rw-r--r--tools/tools/indent_wrapper/Makefile1
-rw-r--r--tools/tools/indent_wrapper/indent_wrapper.c2
-rw-r--r--tools/tools/intel-ucode-split/Makefile1
-rw-r--r--tools/tools/intel-ucode-split/intel-ucode-split.c4
-rw-r--r--tools/tools/ioat/Makefile1
-rw-r--r--tools/tools/ioat/ioatcontrol.82
-rw-r--r--tools/tools/ioat/ioatcontrol.c2
-rw-r--r--tools/tools/ipw/Makefile1
-rw-r--r--tools/tools/ipw/ipwstats.c3
-rwxr-xr-xtools/tools/iso/check-iso3166.pl1
-rwxr-xr-xtools/tools/iso/check-iso639.pl1
-rw-r--r--tools/tools/iwi/Makefile1
-rw-r--r--tools/tools/iwi/iwistats.c4
-rw-r--r--tools/tools/iwn/Makefile1
-rw-r--r--tools/tools/iwn/iwnstats/Makefile1
-rw-r--r--tools/tools/iwn/iwnstats/iwn_ioctl.c2
-rw-r--r--tools/tools/iwn/iwnstats/iwn_ioctl.h2
-rw-r--r--tools/tools/iwn/iwnstats/iwnstats.h2
-rw-r--r--tools/tools/iwn/iwnstats/main.c2
-rwxr-xr-xtools/tools/kdrv/KernelDriver1
-rw-r--r--tools/tools/kdrv/sample.drvinfo1
-rw-r--r--tools/tools/kernelcruft/kernelcruft.sh1
-rw-r--r--tools/tools/kerninclude/kerninclude.sh1
-rw-r--r--tools/tools/kernxref/kernxref.sh1
-rw-r--r--tools/tools/kttcp/Makefile1
-rw-r--r--tools/tools/kttcp/README1
-rw-r--r--tools/tools/kttcp/kttcp.c1
-rw-r--r--tools/tools/kttcp/sys/Makefile1
-rw-r--r--tools/tools/kttcp/sys/kttcp.c1
-rw-r--r--tools/tools/kttcp/sys/kttcpio.h1
-rw-r--r--tools/tools/locale/Makefile23
-rw-r--r--tools/tools/locale/README6
-rw-r--r--tools/tools/locale/etc/charmaps.xml1
-rw-r--r--tools/tools/locale/etc/charmaps/ARMSCII-8.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/Big5.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/CP1131.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/CP1251.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/CP866.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/GB18030.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/GB2312.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/GBK.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/ISCII-DEV.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/ISO8859-1.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/ISO8859-13.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/ISO8859-15.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/ISO8859-2.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/ISO8859-4.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/ISO8859-5.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/ISO8859-7.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/ISO8859-9.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/KOI8-R.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/KOI8-U.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/PT154.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/SJIS.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/US-ASCII.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/charmaps.txt1
-rw-r--r--tools/tools/locale/etc/charmaps/eucCN.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/eucJP.TXT1
-rw-r--r--tools/tools/locale/etc/charmaps/eucKR.TXT1
-rw-r--r--tools/tools/locale/etc/final-maps/map.UTF-85354
-rw-r--r--tools/tools/locale/etc/final-maps/widths.txt9993
-rw-r--r--tools/tools/locale/tools/charmaps.pm3
-rwxr-xr-xtools/tools/locale/tools/cldr2def.pl4
-rwxr-xr-xtools/tools/locale/tools/convert_map.pl1
-rw-r--r--tools/tools/locale/tools/extract-colldef.awk3
-rwxr-xr-xtools/tools/locale/tools/finalize3
-rw-r--r--tools/tools/locale/tools/getwidths.c2
-rwxr-xr-xtools/tools/locale/tools/mkwidths.pl3
-rwxr-xr-xtools/tools/locale/tools/utf8-rollup.pl3
-rw-r--r--tools/tools/makeroot/Makefile1
-rw-r--r--tools/tools/makeroot/Makefile.depend1
-rw-r--r--tools/tools/makeroot/makeroot.82
-rwxr-xr-xtools/tools/makeroot/makeroot.sh1
-rw-r--r--tools/tools/man/README2
-rwxr-xr-xtools/tools/man/checkmlinks.sh1
-rw-r--r--tools/tools/mcgrab/Makefile1
-rw-r--r--tools/tools/mcgrab/mcgrab.12
-rw-r--r--tools/tools/mcgrab/mcgrab.cc2
-rw-r--r--tools/tools/mctest/Makefile1
-rw-r--r--tools/tools/mctest/mctest.12
-rw-r--r--tools/tools/mctest/mctest.cc2
-rw-r--r--tools/tools/mctest/mctest.h1
-rw-r--r--tools/tools/mctest/mctest_run.sh1
-rw-r--r--tools/tools/mfi/Makefile1
-rw-r--r--tools/tools/mfi/mfi_checkq.c3
-rw-r--r--tools/tools/mfi/runmegacli.sh2
-rwxr-xr-xtools/tools/mid/mid-build46
-rwxr-xr-xtools/tools/mid/mid-index83
-rwxr-xr-xtools/tools/mid/mid-master33
-rwxr-xr-xtools/tools/mid/mid-master-index21
-rw-r--r--tools/tools/mtxstat/mtxratio.sh1
-rw-r--r--tools/tools/mtxstat/mtxstat.pl3
-rw-r--r--tools/tools/mwl/Makefile1
-rw-r--r--tools/tools/mwl/mwldebug/Makefile1
-rw-r--r--tools/tools/mwl/mwldebug/mwldebug.c2
-rw-r--r--tools/tools/mwl/mwlstats/Makefile1
-rw-r--r--tools/tools/mwl/mwlstats/main.c2
-rw-r--r--tools/tools/mwl/mwlstats/mwlstats.c2
-rw-r--r--tools/tools/mwl/mwlstats/mwlstats.h2
-rw-r--r--tools/tools/nanobsd/Files/root/change_password1
-rw-r--r--tools/tools/nanobsd/Files/root/save_cfg1
-rw-r--r--tools/tools/nanobsd/Files/root/save_sshkeys1
-rw-r--r--tools/tools/nanobsd/Files/root/update1
-rw-r--r--tools/tools/nanobsd/Files/root/updatep11
-rw-r--r--tools/tools/nanobsd/Files/root/updatep21
-rw-r--r--tools/tools/nanobsd/FlashDevice.sub1
-rwxr-xr-xtools/tools/nanobsd/defaults.sh5
-rw-r--r--tools/tools/nanobsd/dhcpd/README1
-rw-r--r--tools/tools/nanobsd/dhcpd/common3
-rw-r--r--tools/tools/nanobsd/dhcpd/os-base1
-rw-r--r--tools/tools/nanobsd/embedded/README5
-rw-r--r--tools/tools/nanobsd/embedded/beaglebone.cfg1
-rw-r--r--tools/tools/nanobsd/embedded/common28
-rw-r--r--tools/tools/nanobsd/embedded/i386.cfg1
-rw-r--r--tools/tools/nanobsd/embedded/pandaboard.cfg1
-rw-r--r--tools/tools/nanobsd/embedded/qemu-amd64-uefi-bios.cfg1
-rw-r--r--tools/tools/nanobsd/embedded/qemu-amd64-uefi.cfg1
-rw-r--r--tools/tools/nanobsd/embedded/qemu-amd64.cfg1
-rw-r--r--tools/tools/nanobsd/embedded/qemu-armv7.cfg1
-rw-r--r--tools/tools/nanobsd/embedded/qemu-i386.cfg1
-rw-r--r--tools/tools/nanobsd/embedded/qemu-powerpc.cfg1
-rw-r--r--tools/tools/nanobsd/embedded/qemu-powerpc64.cfg1
-rw-r--r--tools/tools/nanobsd/embedded/rpi.cfg1
-rw-r--r--tools/tools/nanobsd/embedded/rpi2.cfg1
-rw-r--r--tools/tools/nanobsd/embedded/rpi3.cfg1
-rw-r--r--tools/tools/nanobsd/fill_pkg.sh1
-rw-r--r--tools/tools/nanobsd/legacy.sh1
-rwxr-xr-xtools/tools/nanobsd/mtree-dedup.awk1
-rwxr-xr-xtools/tools/nanobsd/nanobsd.sh1
-rw-r--r--tools/tools/nanobsd/pcengines/ALIX_DSK1
-rw-r--r--tools/tools/nanobsd/pcengines/ALIX_NFS1
-rw-r--r--tools/tools/nanobsd/pcengines/Files/etc/rc.conf1
-rw-r--r--tools/tools/nanobsd/pcengines/Files/etc/ttys517
-rw-r--r--tools/tools/nanobsd/pcengines/Files/root/.cshrc1
-rw-r--r--tools/tools/nanobsd/pcengines/Files/root/.k5login1
-rw-r--r--tools/tools/nanobsd/pcengines/Files/root/.login1
-rw-r--r--tools/tools/nanobsd/pcengines/Files/root/change_password1
-rw-r--r--tools/tools/nanobsd/pcengines/Files/root/save_cfg1
-rw-r--r--tools/tools/nanobsd/pcengines/Files/root/save_sshkeys1
-rw-r--r--tools/tools/nanobsd/pcengines/Files/root/updatep11
-rw-r--r--tools/tools/nanobsd/pcengines/Files/root/updatep21
-rw-r--r--tools/tools/nanobsd/pcengines/alix_dsk.conf1
-rw-r--r--tools/tools/nanobsd/pcengines/alix_nfs.conf1
-rwxr-xr-xtools/tools/nanobsd/pcengines/build.sh1
-rw-r--r--tools/tools/nanobsd/pcengines/common.conf1
-rwxr-xr-xtools/tools/nanobsd/pcengines/test.sh1
-rw-r--r--tools/tools/nanobsd/rescue/Files/etc/ssh/ssh_config46
-rw-r--r--tools/tools/nanobsd/rescue/Files/etc/ssh/sshd_config117
-rw-r--r--tools/tools/nanobsd/rescue/Files/etc/ttys525
-rw-r--r--tools/tools/nanobsd/rescue/Files/root/.cshrc1
-rwxr-xr-xtools/tools/nanobsd/rescue/Files/root/GPT4ZFS_Create.sh1
-rw-r--r--tools/tools/nanobsd/rescue/Files/root/ZFS_Create.txt1
-rw-r--r--tools/tools/nanobsd/rescue/R3214
-rw-r--r--tools/tools/nanobsd/rescue/R641
-rwxr-xr-xtools/tools/nanobsd/rescue/build.sh9
-rw-r--r--tools/tools/nanobsd/rescue/common12
-rwxr-xr-xtools/tools/nanobsd/rescue/merge.sh28
-rw-r--r--tools/tools/nanobsd/rescue/rescue_amd64.conf1
-rw-r--r--tools/tools/nanobsd/rescue/rescue_i386.conf10
-rw-r--r--tools/tools/ncpus/Makefile1
-rw-r--r--tools/tools/ncpus/acpi.c2
-rw-r--r--tools/tools/ncpus/acpidump.h2
-rw-r--r--tools/tools/ncpus/biosmptable.c3
-rw-r--r--tools/tools/ncpus/ncpus.c1
-rw-r--r--tools/tools/net80211/Makefile1
-rw-r--r--tools/tools/net80211/README1
-rw-r--r--tools/tools/net80211/mlme_assoc/Makefile7
-rw-r--r--tools/tools/net80211/mlme_assoc/README51
-rw-r--r--tools/tools/net80211/mlme_assoc/mlme_assoc.c200
-rw-r--r--tools/tools/net80211/scripts/config1
-rw-r--r--tools/tools/net80211/scripts/mesh/common1
-rw-r--r--tools/tools/net80211/scripts/mesh/config.mesh1
-rw-r--r--tools/tools/net80211/scripts/mesh/setup.simple1
-rw-r--r--tools/tools/net80211/scripts/mesh/topology.line1
-rw-r--r--tools/tools/net80211/scripts/mesh/topology.ring1
-rw-r--r--tools/tools/net80211/scripts/mesh/topology.star1
-rw-r--r--tools/tools/net80211/scripts/mesh/topology.tree1
-rw-r--r--tools/tools/net80211/scripts/setup.dfs1
-rw-r--r--tools/tools/net80211/scripts/setup.fixed1
-rw-r--r--tools/tools/net80211/scripts/setup.local1
-rw-r--r--tools/tools/net80211/scripts/setup.mixed1
-rw-r--r--tools/tools/net80211/scripts/setup.simple1
-rw-r--r--tools/tools/net80211/scripts/setup.simple21
-rw-r--r--tools/tools/net80211/scripts/setup.sta1
-rw-r--r--tools/tools/net80211/scripts/setup.tdma-master1
-rw-r--r--tools/tools/net80211/scripts/setup.tdma-slave1
-rw-r--r--tools/tools/net80211/scripts/setup.tsn1
-rw-r--r--tools/tools/net80211/scripts/setup.updown1
-rw-r--r--tools/tools/net80211/scripts/setup.updown.wpa1
-rw-r--r--tools/tools/net80211/scripts/setup.wds1
-rw-r--r--tools/tools/net80211/scripts/setup.wdsmain1
-rw-r--r--tools/tools/net80211/scripts/setup.wdsrelay1
-rw-r--r--tools/tools/net80211/scripts/setup.wep1
-rw-r--r--tools/tools/net80211/scripts/setup.wpa1
-rw-r--r--tools/tools/net80211/scripts/setup.wpa1.aes1
-rw-r--r--tools/tools/net80211/scripts/setup.wpa1.tkip1
-rw-r--r--tools/tools/net80211/scripts/setup.wpa21
-rw-r--r--tools/tools/net80211/scripts/setup.wpa2.tkip1
-rw-r--r--tools/tools/net80211/stumbler/Makefile1
-rw-r--r--tools/tools/net80211/stumbler/stumbler.c2
-rw-r--r--tools/tools/net80211/w00t/Makefile1
-rw-r--r--tools/tools/net80211/w00t/Makefile.inc1
-rw-r--r--tools/tools/net80211/w00t/README1
-rw-r--r--tools/tools/net80211/w00t/ap/Makefile1
-rw-r--r--tools/tools/net80211/w00t/ap/ap.c2
-rw-r--r--tools/tools/net80211/w00t/assoc/Makefile1
-rw-r--r--tools/tools/net80211/w00t/assoc/assoc.c2
-rw-r--r--tools/tools/net80211/w00t/expand/Makefile1
-rw-r--r--tools/tools/net80211/w00t/expand/expand.c2
-rw-r--r--tools/tools/net80211/w00t/libw00t/Makefile1
-rw-r--r--tools/tools/net80211/w00t/libw00t/w00t.c2
-rw-r--r--tools/tools/net80211/w00t/libw00t/w00t.h2
-rw-r--r--tools/tools/net80211/w00t/prga/Makefile1
-rw-r--r--tools/tools/net80211/w00t/prga/prga.c2
-rw-r--r--tools/tools/net80211/w00t/redir/Makefile1
-rw-r--r--tools/tools/net80211/w00t/redir/buddy.c2
-rw-r--r--tools/tools/net80211/w00t/redir/redir.c2
-rw-r--r--tools/tools/net80211/wesside/Makefile1
-rw-r--r--tools/tools/net80211/wesside/README1
-rw-r--r--tools/tools/net80211/wesside/dics/Makefile1
-rw-r--r--tools/tools/net80211/wesside/dics/dics.c2
-rw-r--r--tools/tools/net80211/wesside/udps/Makefile1
-rw-r--r--tools/tools/net80211/wesside/udps/udps.c2
-rw-r--r--tools/tools/net80211/wesside/wesside/Makefile1
-rw-r--r--tools/tools/net80211/wesside/wesside/aircrack-ptw-lib.c2
-rw-r--r--tools/tools/net80211/wesside/wesside/aircrack-ptw-lib.h2
-rw-r--r--tools/tools/net80211/wesside/wesside/wesside.c2
-rw-r--r--tools/tools/net80211/wlaninject/Makefile1
-rw-r--r--tools/tools/net80211/wlaninject/README1
-rw-r--r--tools/tools/net80211/wlaninject/wlaninject.c2
-rw-r--r--tools/tools/net80211/wlanstats/Makefile1
-rw-r--r--tools/tools/net80211/wlanstats/main.c10
-rw-r--r--tools/tools/net80211/wlanstats/wlanstats.c2
-rw-r--r--tools/tools/net80211/wlanstats/wlanstats.h2
-rw-r--r--tools/tools/net80211/wlantxtime/Makefile1
-rw-r--r--tools/tools/net80211/wlantxtime/wlantxtime.c2
-rw-r--r--tools/tools/net80211/wlanwatch/Makefile1
-rw-r--r--tools/tools/net80211/wlanwatch/wlanwatch.c5
-rw-r--r--tools/tools/net80211/wlanwds/Makefile1
-rw-r--r--tools/tools/net80211/wlanwds/wlanwds.c2
-rw-r--r--tools/tools/netmap/Makefile1
-rw-r--r--tools/tools/netmap/README1
-rw-r--r--tools/tools/netmap/bridge.82
-rw-r--r--tools/tools/netmap/bridge.c4
-rw-r--r--tools/tools/netmap/ctrs.h1
-rw-r--r--tools/tools/netmap/lb.82
-rw-r--r--tools/tools/netmap/lb.c6
-rw-r--r--tools/tools/netmap/nmreplay.82
-rw-r--r--tools/tools/netmap/nmreplay.c7
-rw-r--r--tools/tools/netmap/pkt-gen.89
-rw-r--r--tools/tools/netmap/pkt-gen.c141
-rw-r--r--tools/tools/netmap/pkt_hash.c1
-rw-r--r--tools/tools/netmap/pkt_hash.h1
-rw-r--r--tools/tools/netrate/Makefile1
-rw-r--r--tools/tools/netrate/Makefile.inc1
-rw-r--r--tools/tools/netrate/README2
-rw-r--r--tools/tools/netrate/http/Makefile1
-rw-r--r--tools/tools/netrate/http/http.c2
-rw-r--r--tools/tools/netrate/httpd/Makefile1
-rw-r--r--tools/tools/netrate/httpd/httpd.c2
-rw-r--r--tools/tools/netrate/juggle/Makefile1
-rw-r--r--tools/tools/netrate/juggle/juggle.c2
-rw-r--r--tools/tools/netrate/netblast/Makefile1
-rw-r--r--tools/tools/netrate/netblast/netblast.c2
-rw-r--r--tools/tools/netrate/netreceive/Makefile1
-rw-r--r--tools/tools/netrate/netreceive/netreceive.c2
-rw-r--r--tools/tools/netrate/netsend/Makefile1
-rw-r--r--tools/tools/netrate/netsend/netsend.c2
-rw-r--r--tools/tools/netrate/tcpconnect/Makefile1
-rw-r--r--tools/tools/netrate/tcpconnect/tcpconnect.c2
-rw-r--r--tools/tools/netrate/tcpp/Makefile1
-rw-r--r--tools/tools/netrate/tcpp/README3
-rw-r--r--tools/tools/netrate/tcpp/parallelism.csh1
-rwxr-xr-xtools/tools/netrate/tcpp/runit.pl1
-rw-r--r--tools/tools/netrate/tcpp/tcpp.c2
-rw-r--r--tools/tools/netrate/tcpp/tcpp.h2
-rw-r--r--tools/tools/netrate/tcpp/tcpp_client.c2
-rw-r--r--tools/tools/netrate/tcpp/tcpp_server.c4
-rw-r--r--tools/tools/netrate/tcpp/tcpp_util.c2
-rw-r--r--tools/tools/netrate/tcpreceive/Makefile1
-rw-r--r--tools/tools/netrate/tcpreceive/tcpreceive.c2
-rw-r--r--tools/tools/notescheck/Makefile1
-rw-r--r--tools/tools/notescheck/notescheck.py1
-rw-r--r--tools/tools/npe/Makefile1
-rw-r--r--tools/tools/npe/npestats/Makefile1
-rw-r--r--tools/tools/npe/npestats/main.c2
-rw-r--r--tools/tools/npe/npestats/npestats.c2
-rw-r--r--tools/tools/npe/npestats/npestats.h2
-rw-r--r--tools/tools/pciroms/Makefile1
-rw-r--r--tools/tools/pciroms/pciroms.c3
-rwxr-xr-xtools/tools/perforce/awkdiff42
-rwxr-xr-xtools/tools/perforce/p4diffbranch19
-rw-r--r--tools/tools/pirtool/Makefile1
-rw-r--r--tools/tools/pirtool/pirtable.h2
-rw-r--r--tools/tools/pirtool/pirtool.c2
-rw-r--r--tools/tools/portsinfo/portsinfo.sh84
-rw-r--r--tools/tools/qrndtest/Makefile1
-rw-r--r--tools/tools/qrndtest/r.c2
-rw-r--r--tools/tools/release/chk_dokern.sh_and_drivers.conf1
-rwxr-xr-xtools/tools/scsi-defects/scsi-defects.pl1
-rw-r--r--tools/tools/shlib-compat/Makefile.sysfake1
-rwxr-xr-xtools/tools/shlib-compat/makesyscalls-fake.sh3
-rwxr-xr-xtools/tools/shlib-compat/shlib-compat-dirs.sh1
-rwxr-xr-xtools/tools/shlib-compat/shlib-compat.py1
-rw-r--r--tools/tools/shlib-compat/test/Makefile1
-rw-r--r--tools/tools/shlib-compat/test/Makefile.inc1
-rw-r--r--tools/tools/shlib-compat/test/Versions.def1
-rw-r--r--tools/tools/shlib-compat/test/libtest1/Makefile1
-rw-r--r--tools/tools/shlib-compat/test/libtest1/Symbol.map1
-rw-r--r--tools/tools/shlib-compat/test/libtest1/test.c1
-rw-r--r--tools/tools/shlib-compat/test/libtest2/Makefile1
-rw-r--r--tools/tools/shlib-compat/test/libtest2/Symbol.map1
-rw-r--r--tools/tools/shlib-compat/test/libtest2/test.c1
-rw-r--r--tools/tools/shlib-compat/test/libtest3/Makefile1
-rw-r--r--tools/tools/shlib-compat/test/libtest3/Symbol.map1
-rw-r--r--tools/tools/shlib-compat/test/libtest3/test.c1
-rw-r--r--tools/tools/shlib-compat/test/libtestsys/Makefile1
-rw-r--r--tools/tools/shlib-compat/test/libtestsys/Symbol.map1
-rw-r--r--tools/tools/shlib-compat/test/regress.m41
-rwxr-xr-xtools/tools/shlib-compat/test/regress.sh1
-rw-r--r--tools/tools/shlib-compat/test/regress.t1
-rw-r--r--tools/tools/sortbench/Makefile1
-rw-r--r--tools/tools/sortbench/README1
-rwxr-xr-xtools/tools/sortbench/bench.py2
-rw-r--r--tools/tools/sortbench/sort_bench.c2
-rw-r--r--tools/tools/switch_tls/Makefile1
-rw-r--r--tools/tools/switch_tls/switch_tls.c5
-rw-r--r--tools/tools/sysbuild/README1
-rw-r--r--tools/tools/sysbuild/sysbuild.sh1
-rw-r--r--tools/tools/syscall_timing/Makefile1
-rw-r--r--tools/tools/syscall_timing/syscall_timing.c2
-rw-r--r--tools/tools/sysdoc/Makefile1
-rw-r--r--tools/tools/sysdoc/sysctl.sh1
-rw-r--r--tools/tools/sysdoc/sysdoc.sh1
-rw-r--r--tools/tools/sysdoc/tunables.mdoc48
-rwxr-xr-xtools/tools/termcap/termcap.pl1
-rw-r--r--tools/tools/tinybsd/CHANGES43
-rw-r--r--tools/tools/tinybsd/README259
-rw-r--r--tools/tools/tinybsd/conf/bridge/TINYBSD155
-rw-r--r--tools/tools/tinybsd/conf/bridge/etc/fstab2
-rw-r--r--tools/tools/tinybsd/conf/bridge/etc/rc.conf17
-rw-r--r--tools/tools/tinybsd/conf/bridge/etc/sysctl.conf5
-rw-r--r--tools/tools/tinybsd/conf/bridge/tinybsd.basefiles236
-rw-r--r--tools/tools/tinybsd/conf/bridge/tinybsd.ports9
-rw-r--r--tools/tools/tinybsd/conf/default/TINYBSD170
-rw-r--r--tools/tools/tinybsd/conf/default/etc/fstab2
-rw-r--r--tools/tools/tinybsd/conf/default/etc/rc.conf12
-rw-r--r--tools/tools/tinybsd/conf/default/tinybsd.basefiles247
-rw-r--r--tools/tools/tinybsd/conf/default/tinybsd.ports9
-rw-r--r--tools/tools/tinybsd/conf/firewall/TINYBSD168
-rw-r--r--tools/tools/tinybsd/conf/firewall/etc/authpf/authpf.rules1
-rw-r--r--tools/tools/tinybsd/conf/firewall/etc/fstab2
-rw-r--r--tools/tools/tinybsd/conf/firewall/etc/natd.conf1
-rw-r--r--tools/tools/tinybsd/conf/firewall/etc/pf.conf78
-rw-r--r--tools/tools/tinybsd/conf/firewall/etc/pf.os549
-rw-r--r--tools/tools/tinybsd/conf/firewall/etc/rc.conf41
-rw-r--r--tools/tools/tinybsd/conf/firewall/etc/rc.firewall302
-rw-r--r--tools/tools/tinybsd/conf/firewall/etc/sysctl.conf5
-rw-r--r--tools/tools/tinybsd/conf/firewall/tinybsd.basefiles240
-rw-r--r--tools/tools/tinybsd/conf/firewall/tinybsd.ports9
-rw-r--r--tools/tools/tinybsd/conf/minimal/TINYBSD77
-rw-r--r--tools/tools/tinybsd/conf/minimal/etc/fstab2
-rw-r--r--tools/tools/tinybsd/conf/minimal/etc/rc.conf12
-rw-r--r--tools/tools/tinybsd/conf/minimal/tinybsd.basefiles167
-rw-r--r--tools/tools/tinybsd/conf/minimal/tinybsd.ports9
-rw-r--r--tools/tools/tinybsd/conf/vpn/TINYBSD153
-rw-r--r--tools/tools/tinybsd/conf/vpn/etc/fstab2
-rw-r--r--tools/tools/tinybsd/conf/vpn/etc/rc.conf22
-rw-r--r--tools/tools/tinybsd/conf/vpn/etc/setkey.conf1
-rw-r--r--tools/tools/tinybsd/conf/vpn/tinybsd.basefiles222
-rw-r--r--tools/tools/tinybsd/conf/vpn/tinybsd.ports9
-rw-r--r--tools/tools/tinybsd/conf/wireless/TINYBSD167
-rw-r--r--tools/tools/tinybsd/conf/wireless/etc/authpf/authpf.rules1
-rw-r--r--tools/tools/tinybsd/conf/wireless/etc/fstab2
-rw-r--r--tools/tools/tinybsd/conf/wireless/etc/natd.conf1
-rw-r--r--tools/tools/tinybsd/conf/wireless/etc/pf.conf78
-rw-r--r--tools/tools/tinybsd/conf/wireless/etc/pf.os549
-rw-r--r--tools/tools/tinybsd/conf/wireless/etc/rc.conf32
-rw-r--r--tools/tools/tinybsd/conf/wireless/etc/rc.firewall302
-rw-r--r--tools/tools/tinybsd/conf/wireless/tinybsd.basefiles232
-rw-r--r--tools/tools/tinybsd/conf/wireless/tinybsd.ports9
-rw-r--r--tools/tools/tinybsd/conf/wrap/TINYBSD138
-rw-r--r--tools/tools/tinybsd/conf/wrap/etc/fstab2
-rw-r--r--tools/tools/tinybsd/conf/wrap/etc/rc.conf12
-rw-r--r--tools/tools/tinybsd/conf/wrap/etc/ttys308
-rw-r--r--tools/tools/tinybsd/conf/wrap/tinybsd.basefiles232
-rw-r--r--tools/tools/tinybsd/conf/wrap/tinybsd.ports9
-rwxr-xr-xtools/tools/tinybsd/tinybsd526
-rw-r--r--tools/tools/tionxcl/Makefile1
-rw-r--r--tools/tools/tionxcl/tionxcl.c2
-rw-r--r--tools/tools/track/Makefile1
-rw-r--r--tools/tools/track/track.sh3
-rw-r--r--tools/tools/tscdrift/Makefile1
-rw-r--r--tools/tools/tscdrift/tscdrift.c4
-rw-r--r--tools/tools/umastat/Makefile1
-rw-r--r--tools/tools/umastat/umastat.c2
-rw-r--r--tools/tools/usb/print-usb-if-vids.sh1
-rw-r--r--tools/tools/usbtest/Makefile1
-rw-r--r--tools/tools/usbtest/Makefile.depend1
-rw-r--r--tools/tools/usbtest/usb_control_ep_test.c45
-rw-r--r--tools/tools/usbtest/usb_modem_test.c15
-rw-r--r--tools/tools/usbtest/usb_msc_test.c44
-rw-r--r--tools/tools/usbtest/usb_msc_test.h1
-rw-r--r--tools/tools/usbtest/usbtest.c40
-rw-r--r--tools/tools/usbtest/usbtest.h34
-rw-r--r--tools/tools/vhba/Makefile1
-rw-r--r--tools/tools/vhba/README1
-rw-r--r--tools/tools/vhba/faulty/Makefile1
-rw-r--r--tools/tools/vhba/faulty/vhba_faulty.c1
-rw-r--r--tools/tools/vhba/lots/Makefile1
-rw-r--r--tools/tools/vhba/lots/vhba_lots.c1
-rw-r--r--tools/tools/vhba/medium/Makefile1
-rw-r--r--tools/tools/vhba/medium/vhba_medium.c1
-rw-r--r--tools/tools/vhba/mptest/Makefile1
-rw-r--r--tools/tools/vhba/mptest/vhba_mptest.c1
-rw-r--r--tools/tools/vhba/opt_cam.h1
-rw-r--r--tools/tools/vhba/rptluns/Makefile1
-rw-r--r--tools/tools/vhba/rptluns/vhba_rptluns.c1
-rw-r--r--tools/tools/vhba/simple/Makefile1
-rw-r--r--tools/tools/vhba/simple/vhba_simple.c1
-rw-r--r--tools/tools/vhba/vhba.c1
-rw-r--r--tools/tools/vhba/vhba.h3
-rw-r--r--tools/tools/vimage/Makefile1
-rw-r--r--tools/tools/vimage/vimage.84
-rw-r--r--tools/tools/vimage/vimage.c2
-rw-r--r--tools/tools/vop_table/vop_table.pl1
-rw-r--r--tools/tools/vop_table/vop_table.tcl1
-rw-r--r--tools/tools/vt/fontcvt/terminus.sh1
-rw-r--r--tools/tools/vt/keymaps/KBDFILES.map1
-rw-r--r--tools/tools/vt/keymaps/LANG.map1
-rwxr-xr-xtools/tools/vt/keymaps/convert-INDEX.pl1
-rwxr-xr-xtools/tools/vt/keymaps/convert-keymap.pl1
-rwxr-xr-xtools/tools/vt/keymaps/convert-keymaps.pl1
-rw-r--r--tools/tools/vt/mkkfont/Makefile1
-rw-r--r--tools/tools/vt/mkkfont/mkkfont.c2
-rw-r--r--tools/tools/whereintheworld/Makefile1
-rw-r--r--tools/tools/whereintheworld/whereintheworld.pl1
-rw-r--r--tools/tools/wtap/Makefile1
-rw-r--r--tools/tools/wtap/vis_map/Makefile1
-rw-r--r--tools/tools/wtap/vis_map/vis_map.c2
-rw-r--r--tools/tools/wtap/wtap/Makefile1
-rw-r--r--tools/tools/wtap/wtap/wtap.c2
-rw-r--r--tools/tools/zfsboottest/Makefile1
-rw-r--r--tools/tools/zfsboottest/zfsboottest.c1
-rwxr-xr-xtools/tools/zfsboottest/zfsboottest.sh1
-rw-r--r--tools/uma/smrstress/Makefile1
-rw-r--r--tools/uma/smrstress/smrstress.c5
2918 files changed, 40541 insertions, 30864 deletions
diff --git a/tools/LibraryReport/LibraryReport.tcl b/tools/LibraryReport/LibraryReport.tcl
index fbf63896c71d..b1678d027f07 100755
--- a/tools/LibraryReport/LibraryReport.tcl
+++ b/tools/LibraryReport/LibraryReport.tcl
@@ -50,7 +50,6 @@ exec tclsh $0 $*
#
################################################################################
#
-# $FreeBSD$
#
#########################################################################################
diff --git a/tools/README b/tools/README
index 99ec8e9241f7..ab0470df049a 100644
--- a/tools/README
+++ b/tools/README
@@ -1,4 +1,3 @@
-$FreeBSD$
This directory tree contains tools used for the maintenance and
testing of FreeBSD. There is no toplevel Makefile structure since
diff --git a/tools/boot/TEST-NOTES b/tools/boot/TEST-NOTES
new file mode 100644
index 000000000000..9c1debca5376
--- /dev/null
+++ b/tools/boot/TEST-NOTES
@@ -0,0 +1,22 @@
+New test script
+
+o Assumes univerese has run.
+o Will create a test tree somewhere outside of the source tree
+ o trees has the different trees we use to create images
+ o trees/${ARCH}/$PART have each architecture's tree images
+ for the different partitions we need.
+ o bios has cached BIOSes needed for tests
+ o images has the images to test
+ o tests has the test scripts
+ o linux has cached copies off kernels for the kboot tests
+o Assumes qemu port installed
+ o will use firmware from there
+o Will use 3 linux kernels, amd64 and aarch64 built with CONFIG_EFI_STUB
+o Will test
+ o armv7 UEFI+uboot booting on MBR and GPT
+ o aarch64 Will test UEFI+ACPI on MBR/GPT, UEFI+ACPI+kboot, DTB+kboot
+ o amd64 <big matrix here>
+ o i386 legacy + {gpt,mbr} and cdrom boot (also the isoboot unified?)
+ o powerpc <who knows> but kboot+dtb
+ o riscv UEFI+ACPI with GPT and serial console
+
diff --git a/tools/boot/ci-qemu-test.sh b/tools/boot/ci-qemu-test.sh
index e6481c794af5..faa360db1a2c 100755
--- a/tools/boot/ci-qemu-test.sh
+++ b/tools/boot/ci-qemu-test.sh
@@ -8,7 +8,6 @@
# rootgen.sh and related scripts generate much more extensive tests for many
# combinations of boot env (ufs, zfs, geli, etc).
#
-# $FreeBSD$
set -e
@@ -21,7 +20,7 @@ die()
tempdir_cleanup()
{
trap - EXIT SIGINT SIGHUP SIGTERM SIGQUIT
- rm -rf ${ROOTDIR}
+ rm -rf ${WORKDIR}
}
tempdir_setup()
@@ -85,7 +84,7 @@ amd64)
if [ ! -r "${OVMF}" ]; then
die "Cannot read UEFI firmware file ${OVMF}"
fi
- QEMU="qemu-system-x86_64 -drive if=pflash,format=raw,readonly,file=${OVMF}"
+ QEMU="qemu-system-x86_64 -drive if=pflash,format=raw,readonly=on,file=${OVMF}"
EFIBOOT=BOOTx64.EFI
ROOTDEV=ada0s1
;;
@@ -99,18 +98,31 @@ arm64)
esac
# Create a temp dir to hold the boot image.
-ROOTDIR=$(mktemp -d -t ci-qemu-test-fat-root)
+WORKDIR=$(mktemp -d -t ci-qemu-test-fat-root)
+ROOTDIR=${WORKDIR}/stage-root
trap tempdir_cleanup EXIT SIGINT SIGHUP SIGTERM SIGQUIT
# Populate the boot image in a temp dir.
( cd ${SRCTOP} && tempdir_setup )
+# Using QEMU's virtual FAT support is much faster than creating a disk image,
+# but only supports about 500MB. Fall back to creating a disk image if the
+# staged root is too large.
+hda="fat:${ROOTDIR}"
+rootsize=$(du -skA ${ROOTDIR} | sed 's/[[:space:]].*$//')
+if [ $rootsize -gt 512000 ]; then
+ echo "Root size ${rootsize}K too large for QEMU virtual FAT" >&2
+ makefs -t msdos -s 1g $WORKDIR/image.fat $ROOTDIR
+ mkimg -s mbr -p efi:=$WORKDIR/image.fat -o $WORKDIR/image.mbr
+ hda="$WORKDIR/image.mbr"
+fi
+
# And, boot in QEMU.
: ${BOOTLOG:=${TMPDIR:-/tmp}/ci-qemu-test-boot.log}
timeout 300 \
$QEMU -m 256M -nodefaults \
-serial stdio -vga none -nographic -monitor none \
- -snapshot -hda fat:${ROOTDIR} 2>&1 | tee ${BOOTLOG}
+ -snapshot -hda $hda 2>&1 | tee ${BOOTLOG}
# Check whether we succesfully booted...
if grep -q 'Hello world.' ${BOOTLOG}; then
diff --git a/tools/boot/full-test.readme b/tools/boot/full-test.readme
new file mode 100644
index 000000000000..db1f12c7024b
--- /dev/null
+++ b/tools/boot/full-test.readme
@@ -0,0 +1,37 @@
+First, you will need a few things.
+
+(1) a small cache of binaries. You'll need to put these into
+ ~/stand-test-root/cache. You can find the tarball at
+ freefall.freebsd.org:~imp/cache.tar. You can just extract this in ~. These are
+ the linux kernels I'm testing with.
+
+(2) The latest qemu-system-aarch64 (I think ports/pkg version of emulators/qemu
+ is recent enough). If not, I know the latest master of qemu project works.
+
+(3) A recent enough universe that the building of stand will work for all the
+ architectures that I build. You can hack the ARCHES line near the top of
+ tools/boot/full-test.sh if need be, but you'll need at least amd64, arm64 and
+ maybe riscv (I don't have a good way to filter arches in this script yet, since
+ it's at an early state of development.
+
+(4) Build the kernel for at least arm64 and use it as an 'override'. I do this
+ by sudo -E make installkernel
+ DESTDIR=$HOME/stand-test-root/override/arm64-aarch64 TARGET=arm64 after
+ building the kernel. The script is designed to use kernels and binaries from
+ the latest CDs to do the testing, but has a way to override the kernel and
+ since we need to fix arm64...
+
+(5) You'll need to build the images. If you've done 1-5 correctly (and I've not
+ missed anything), then "cd <mumble>/src; sh tools/boot/full-test.sh" will create
+ all the images and scripts to run qemu. There should be no errors, though
+ warnings about zfs.ko etc missing from powerpc is fine (and ignored by the
+ script already).
+
+(6) There will be a script to recreate this created in
+ $HOME/stand-test-root/scripts/arm64-aarch64/linuxboot-test.sh. Just run it with
+ 'sh'. And extra args are passed to qemu, so '-s -S' for gdb and
+ '-d trace:gicv3\* -D /tmp/gic.log' for verbose gic tracing (spaces are important).
+
+There's also a linuxboot-test-raw.sh which boots w/o EDK2+Linux.efi but loads
+the kernel directly. and freebsd-test.sh which uses EDK2+loader.efi to boot FreeBSD
+w/o kboot at all.
diff --git a/tools/boot/full-test.sh b/tools/boot/full-test.sh
new file mode 100644
index 000000000000..89d2ac3b7277
--- /dev/null
+++ b/tools/boot/full-test.sh
@@ -0,0 +1,622 @@
+#!/bin/sh
+
+# STAND_ROOT is the root of a tree:
+# cache - Cached binaries that we have downloaded
+# trees - binary trees that we use to make image
+# trees/${ARCH}/$thing
+# images - bootable images that we use to test
+# images/${ARCH}/$thing
+# bios - cached bios images (as well as 'vars' files when we start testing
+# different booting scenarios in the precense / absence of variables).
+# scripts - generated scripts that uses images to run the tests.
+#
+# Strategy:
+# Download FreeBSD release isos, Linux kernels (for the kboot tests) and
+# other misc things. We use these to generate dozens of test images that we
+# use qemu-system-XXXX to boot. They all boot the same thing at the moment:
+# an /etc/rc script that prints the boot method, echos success and then
+# halts.
+
+# What version of FreeBSD to we snag the ISOs from to extract the binaries
+# we are testing
+FREEBSD_VERSION=13.1
+# eg https://download.freebsd.org/releases/amd64/amd64/ISO-IMAGES/13.1/FreeBSD-13.1-RELEASE-amd64-bootonly.iso.xz
+URLBASE="https://download.freebsd.org/releases"
+: ${STAND_ROOT:="${HOME}/stand-test-root"}
+CACHE=${STAND_ROOT}/cache
+TREES=${STAND_ROOT}/trees
+IMAGES=${STAND_ROOT}/images
+BIOS=${STAND_ROOT}/bios
+SCRIPTS=${STAND_ROOT}/scripts
+OVERRIDE=${STAND_ROOT}/override
+
+# hack -- I have extra junk in my qemu, but it's not needed to recreate things
+if [ $(whoami) = imp ]; then
+ qemu_bin=/home/imp/git/qemu/00-build
+else
+ qemu_bin=/usr/local/bin
+fi
+
+# All the architectures under test
+# Note: we can't yet do armv7 because we don't have a good iso for it and would
+# need root to extract the files.
+ARCHES="amd64:amd64 i386:i386 powerpc:powerpc powerpc:powerpc64 powerpc:powerpc64le powerpc:powerpcspe arm64:aarch64 riscv:riscv64"
+
+# The smallest FAT32 filesystem is 33292 KB
+espsize=33292
+
+SRCTOP=$(make -v SRCTOP)
+
+mkdir -p ${CACHE} ${TREES} ${IMAGES} ${BIOS}
+
+die()
+{
+ echo Fatal Error: $*
+ exit 1
+}
+
+ma_combo()
+{
+ local m=$1
+ local ma=$2
+ local ma_combo="${m}"
+
+ [ "${m}" != "${ma}" ] && ma_combo="${m}-${ma}"
+ echo ${ma_combo}
+}
+
+fetch_one()
+{
+ local m=$1
+ local ma=$2
+ local v=$3
+ local flavor=$4
+ local ma_combo=$(ma_combo $m $ma)
+ local file="FreeBSD-${v}-RELEASE-${ma_combo}-${flavor}"
+ local url="${URLBASE}/${m}/${ma}/ISO-IMAGES/${v}/${file}.xz"
+
+ mkdir -p ${CACHE}
+ [ -r ${CACHE}/${file} ] && echo "Using cached ${file}" && return
+ cd ${CACHE}
+ echo "Fetching ${url}"
+ fetch ${url} || die "Can't fetch ${file} from ${url}"
+ xz -d ${file}.xz || die "Can't uncompress ${file}.xz"
+ cd ..
+}
+
+update_freebsd_img_cache()
+{
+ local a m ma
+
+ for a in $ARCHES; do
+ m=${a%%:*}
+ ma=${a##*:}
+ fetch_one $m $ma ${FREEBSD_VERSION} bootonly.iso
+ done
+
+ fetch_one arm armv7 ${FREEBSD_VERSION} GENERICSD.img
+}
+
+make_minimal_freebsd_tree()
+{
+ local m=$1
+ local ma=$2
+ local v=$3
+ local flavor=$4
+ local file d
+ local ma_combo="${m}"
+ [ "${m}" != "${ma}" ] && ma_combo="${m}-${ma}"
+
+ file="FreeBSD-${v}-RELEASE-${ma_combo}-${flavor}"
+ dir=${TREES}/${ma_combo}/freebsd
+ rm -rf ${dir}
+
+ # Make a super simple userland. It has just enough to print a santiy value,
+ # then say test succeeded, and then halt the system. We assume that /bin/sh
+ # has all the library prereqs for the rest...
+ mkdir -p ${dir}
+ # Make required dirs
+ for d in boot/kernel boot/defaults boot/lua boot/loader.conf.d \
+ sbin bin lib libexec etc dev; do
+ mkdir -p ${dir}/${d}
+ done
+ # Pretend we don't have a separate /usr
+ ln -s . ${dir}/usr
+ # snag the binaries for my simple /etc/rc file
+ tar -C ${dir} -xf ${CACHE}/$file sbin/reboot sbin/halt sbin/init bin/sh sbin/sysctl \
+ lib/libncursesw.so.9 lib/libc.so.7 lib/libedit.so.8 libexec/ld-elf.so.1
+
+ # My simple etc/rc
+ cat > ${dir}/etc/rc <<EOF
+#!/bin/sh
+
+sysctl machdep.bootmethod
+echo "RC COMMAND RUNNING -- SUCCESS!!!!!"
+halt -p
+EOF
+ chmod +x ${dir}/etc/rc
+
+ # Check to see if we have overrides here... So we can insert our own kernel
+ # instead of the one from the release.
+ echo "CHECKING ${OVERRIDE}/${ma_combo}/boot"
+ if [ -d ${OVERRIDE}/${ma_combo}/boot ]; then
+ o=${OVERRIDE}/${ma_combo}
+ for i in \
+ boot/device.hints \
+ boot/kernel/kernel \
+ boot/kernel/acl_nfs4.ko \
+ boot/kernel/cryptodev.ko \
+ boot/kernel/zfs.ko \
+ boot/kernel/geom_eli.ko; do
+ [ -r $o/$i ] && echo Copying override $i && cp $o/$i ${dir}/$i
+ done
+ else
+ # Copy the kernel (but not the boot loader, we'll add the one to test later)
+ # This will take care of both UFS and ZFS boots as well as geli
+ # Note: It's OK for device.hints to be missing. It's mostly for legacy platforms.
+ tar -C ${dir} -xf ${CACHE}/$file \
+ boot/device.hints \
+ boot/kernel/kernel \
+ boot/kernel/acl_nfs4.ko \
+ boot/kernel/cryptodev.ko \
+ boot/kernel/zfs.ko \
+ boot/kernel/geom_eli.ko || true
+ # XXX WHAT TO DO ABOUT LINKER HINTS -- PUNT FOR NOW
+ # XXX also, ZFS not supported on 32-bit powerpc platforms
+ fi
+
+ # Setup some common settings for serial console, etc
+ echo -h -D -S115200 > ${dir}/boot.config
+ cat > ${dir}/boot/loader.conf <<EOF
+comconsole_speed=115200
+autoboot_delay=2
+zfs_load="YES"
+boot_verbose=yes
+kern.cfg.order="acpi,fdt"
+EOF
+}
+
+make_freebsd_minimal_trees()
+{
+ for a in $ARCHES; do
+ m=${a%%:*}
+ ma=${a##*:}
+ make_minimal_freebsd_tree $m $ma ${FREEBSD_VERSION} bootonly.iso
+ done
+ # Note: armv7 isn't done yet as its the odd-man out -- we need to extract things
+ # in a special way, so punt for the moment
+}
+
+make_freebsd_test_trees()
+{
+ for a in $ARCHES; do
+ m=${a%%:*}
+ ma=${a##*:}
+ ma_combo="${m}"
+ [ "${m}" != "${ma}" ] && ma_combo="${m}-${ma}"
+ dir=${TREES}/${ma_combo}/test-stand
+ mkdir -p ${dir}
+ mtree -deUW -f ${SRCTOP}/etc/mtree/BSD.root.dist -p ${dir}
+ echo "Creating tree for ${m}:${ma}"
+ cd ${SRCTOP}/stand
+ # Indirection needed because our build system is too complex
+# SHELL="make clean" make buildenv TARGET=${m} TARGET_ARCH=${ma}
+ SHELL="make -j 100 all" make buildenv TARGET=${m} TARGET_ARCH=${ma}
+ SHELL="make install DESTDIR=${dir} MK_MAN=no MK_INSTALL_AS_USER=yes WITHOUT_DEBUG_FILES=yes" \
+ make buildenv TARGET=${m} TARGET_ARCH=${ma}
+ rm -rf ${dir}/bin ${dir}/[ac-z]* # Don't care about anything here
+ done
+}
+
+make_linux_initrds()
+{
+ # At the moment, we have just two
+ for a in amd64:amd64 arm64:aarch64; do
+ m=${a%%:*}
+ ma=${a##*:}
+ ma_combo="${m}"
+ [ "${m}" != "${ma}" ] && ma_combo="${m}-${ma}"
+ dir=${TREES}/${ma_combo}/linuxboot
+ dir2=${TREES}/${ma_combo}/test-stand
+ dir3=${TREES}/${ma_combo}/freebsd
+ initrd=${TREES}/${ma_combo}/initrd.img
+ rm -rf ${dir}
+ mkdir -p ${dir}
+ cp ${dir2}/boot/loader.kboot ${dir}/init
+ # Copy the boot loader
+ tar -c -f - -C ${dir2} boot | tar -xf - -C ${dir}
+ # Copy the boot kernel
+ tar -c -f - -C ${dir3} boot | tar -xf - -C ${dir}
+ (cd ${dir} ; find . | LC_ALL=C sort | cpio -o -H newc | gzip > ${initrd})
+ done
+}
+
+make_linux_esps()
+{
+ # At the moment, we have just two
+ for a in amd64:amd64 arm64:aarch64; do
+ m=${a%%:*}
+ ma=${a##*:}
+ ma_combo="${m}"
+ [ "${m}" != "${ma}" ] && ma_combo="${m}-${ma}"
+ dir=${TREES}/${ma_combo}/linuxboot-esp
+ initrd=${TREES}/${ma_combo}/initrd.img
+ mkdir -p ${dir}
+ case ${ma} in
+ amd64) bin=x64 cons="console=ttyS0,115200" ;;
+ aarch64) bin=aa64 ;;
+ esac
+ mkdir -p ${dir}/efi/boot
+ cp ${CACHE}/linux/linux${bin}.efi ${dir}
+ cp ${CACHE}/linux/shell${bin}.efi ${dir}/efi/boot/boot${bin}.efi
+ cat > ${dir}/startup.nsh <<EOF
+# Run linux
+# Tell it to run with out special initrd that then boot FreeBSD
+
+\linux${bin} ${cons} initrd=\initrd.img
+EOF
+ cp $initrd ${dir}
+ done
+}
+
+make_linuxboot_images()
+{
+ # ESP variant: In this variant, amd64 and arm64 are both created more or
+ # less the same way. Both are EFI + ACPI implementations
+ for a in amd64:amd64 arm64:aarch64; do
+ m=${a%%:*}
+ ma=${a##*:}
+ ma_combo="${m}"
+ [ "${m}" != "${ma}" ] && ma_combo="${m}-${ma}"
+ src=${TREES}/${ma_combo}/linuxboot-esp
+ dir=${TREES}/${ma_combo}/freebsd
+ dir2=${TREES}/${ma_combo}/test-stand
+ esp=${IMAGES}/${ma_combo}/linuxboot-${ma_combo}.esp
+ ufs=${IMAGES}/${ma_combo}/linuxboot-${ma_combo}.ufs
+ zfs=${IMAGES}/${ma_combo}/linuxboot-${ma_combo}.zfs
+ img=${IMAGES}/${ma_combo}/linuxboot-${ma_combo}.img
+ img2=${IMAGES}/${ma_combo}/linuxboot-${ma_combo}-zfs.img
+ pool="linuxboot"
+ mkdir -p ${IMAGES}/${ma_combo}
+ makefs -t msdos -o fat_type=32 -o sectors_per_cluster=1 \
+ -o volume_label=EFISYS -s80m ${esp} ${src}
+ makefs -t ffs -B little -s 200m -o label=root ${ufs} ${dir} ${dir2}
+ mkimg -s gpt -p efi:=${esp} -p freebsd-ufs:=${ufs} -o ${img}
+ makefs -t zfs -s 200m \
+ -o poolname=${pool} -o bootfs=${pool} -o rootpath=/ \
+ ${zfs} ${dir} ${dir2}
+ mkimg -s gpt \
+ -p efi:=${esp} \
+ -p freebsd-zfs:=${zfs} -o ${img2}
+ rm -f ${esp} # Don't need to keep this around
+ done
+
+ # The raw variant, currently used only on arm64. It boots with the raw interface of qemu
+ # for testing purposes. This means it makes a good test for the DTB variation, but not ACPI
+ # since qemu doesn't currently provide that...
+ for a in arm64:aarch64; do
+ m=${a%%:*}
+ ma=${a##*:}
+ ma_combo="${m}"
+ [ "${m}" != "${ma}" ] && ma_combo="${m}-${ma}"
+ linux="${CACHE}/linux/vmlinux-${m}*"
+ initrd=${TREES}/${ma_combo}/initrd.img
+ img=${IMAGES}/${ma_combo}/linuxboot-${ma_combo}-raw
+ cp ${linux} ${img}.kernel
+ cp ${initrd} ${img}.initrd
+ done
+}
+
+make_linuxboot_scripts()
+{
+ # At the moment, we have just two -- and the images we've built so far are just
+ # the hostfs boot. The boot off anything more complex isn't here.
+ for a in amd64:amd64 arm64:aarch64; do
+ m=${a%%:*}
+ ma=${a##*:}
+ ma_combo="${m}"
+ [ "${m}" != "${ma}" ] && ma_combo="${m}-${ma}"
+
+ # First off, update the edk firmware
+ bios_code=${BIOS}/edk2-${ma_combo}-code.fd
+ bios_vars=${BIOS}/edk2-${ma_combo}-vars.fd
+ case ${ma} in
+ amd64)
+ if [ ${bios_code} -ot /usr/local/share/qemu/edk2-x86_64-code.fd ]; then
+ cp /usr/local/share/qemu/edk2-x86_64-code.fd ${bios_code}
+ # vars file works on both 32 and 64 bit x86
+ cp /usr/local/share/qemu/edk2-i386-vars.fd ${bios_vars}
+ fi
+ ;;
+ aarch64)
+ if [ ${bios_code} -ot /usr/local/share/qemu/edk2-aarch64-code.fd ]; then
+ # aarch64 vars starts as an empty file
+ dd if=/dev/zero of=${bios_code} bs=1M count=64
+ dd if=/dev/zero of=${bios_vars} bs=1M count=64
+ dd if=/usr/local/share/qemu/edk2-aarch64-code.fd of=${bios_code} conv=notrunc
+ fi
+ ;;
+ esac
+
+ # Now make me a script
+ img=${IMAGES}/${ma_combo}/linuxboot-${ma_combo}.img
+ img2=${IMAGES}/${ma_combo}/linuxboot-${ma_combo}-raw
+ img3=${IMAGES}/${ma_combo}/linuxboot-${ma_combo}-zfs.img
+ out=${SCRIPTS}/${ma_combo}/linuxboot-test.sh
+ out2=${SCRIPTS}/${ma_combo}/linuxboot-test-raw.sh
+ out3=${SCRIPTS}/${ma_combo}/linuxboot-test-zfs.sh
+ cd=${CACHE}/FreeBSD-13.1-RELEASE-arm64-aarch64-bootonly.iso
+ mkdir -p ${SCRIPTS}/${ma_combo}
+ case ${ma} in
+ amd64)
+ cat > ${out} <<EOF
+${qemu_bin}/qemu-system-x86_64 -nographic -m 512M \\
+ -drive file=${img},if=none,id=drive0,cache=writeback,format=raw \\
+ -device virtio-blk,drive=drive0,bootindex=0 \\
+ -drive file=${bios_code},format=raw,if=pflash \\
+ -drive file=${bios_vars},format=raw,if=pflash \\
+ -monitor telnet::4444,server,nowait \\
+ -serial stdio \$*
+EOF
+ ;;
+ aarch64)
+ # ESP version
+ raw=${IMAGES}/${ma_combo}/freebsd-arm64-aarch64.img
+ cat > ${out} <<EOF
+${qemu_bin}/qemu-system-aarch64 -nographic -machine virt,gic-version=3 -m 512M -smp 4 \\
+ -cpu cortex-a57 \\
+ -drive file=${img},if=none,id=drive0,cache=writeback \\
+ -device virtio-blk,drive=drive0,bootindex=0 \\
+ -drive file=${raw},if=none,id=drive1,cache=writeback \\
+ -device nvme,serial=fboot,drive=drive1,bootindex=1 \\
+ -drive file=${bios_code},format=raw,if=pflash \\
+ -drive file=${bios_vars},format=raw,if=pflash \\
+ -monitor telnet::4444,server,nowait \\
+ -serial stdio \$*
+EOF
+ # RAW version
+ # Note: We have to use cortex-a57 for raw mode because the
+ # kernel we use has issues with max.
+ cat > ${out2} <<EOF
+${qemu_bin}/qemu-system-aarch64 -m 1024 -cpu cortex-a57 -M virt \\
+ -kernel ${img2}.kernel -initrd ${img2}.initrd \\
+ -append "console=ttyAMA0" \\
+ -drive file=${cd},if=none,id=drive0,cache=writeback,format=raw \\
+ -device virtio-blk,drive=drive0,bootindex=0 \\
+ -nographic -monitor telnet::4444,server,nowait \\
+ -serial stdio \$*
+EOF
+ # ZFS version
+ # Note: We have to use cortex-a57 for raw mode because the
+ # kernel we use has issues with max.
+ cat > ${out3} <<EOF
+${qemu_bin}/qemu-system-aarch64 -nographic -machine virt,gic-version=3 -m 512M -smp 4 \\
+ -cpu cortex-a57 \\
+ -drive file=${img3},if=none,id=drive0,cache=writeback \\
+ -device virtio-blk,drive=drive0,bootindex=0 \\
+ -drive file=${bios_code},format=raw,if=pflash \\
+ -drive file=${bios_vars},format=raw,if=pflash \\
+ -monitor telnet::4444,server,nowait \\
+ -serial stdio \$*
+EOF
+ ;;
+ esac
+ done
+}
+
+make_freebsd_esps()
+{
+ # At the moment, we have just three (armv7 could also be here too, but we're not doing that)
+ for a in amd64:amd64 arm64:aarch64 riscv:riscv64; do
+ m=${a%%:*}
+ ma=${a##*:}
+ ma_combo="${m}"
+ [ "${m}" != "${ma}" ] && ma_combo="${m}-${ma}"
+ dir=${TREES}/${ma_combo}/freebsd-esp
+ dir2=${TREES}/${ma_combo}/test-stand
+ rm -rf ${dir}
+ mkdir -p ${dir}
+ case ${ma} in
+ amd64) bin=x64 ;;
+ aarch64) bin=aa64 ;;
+ esac
+ mkdir -p ${dir}/efi/boot
+ cp ${dir2}/boot/loader.efi ${dir}/efi/boot/boot${bin}.efi
+ done
+}
+
+make_freebsd_images()
+{
+ # ESP variant: In this variant, riscv, amd64 and arm64 are created more or
+ # less the same way. UEFI + ACPI implementations
+ for a in amd64:amd64 arm64:aarch64 riscv:riscv64; do
+ m=${a%%:*}
+ ma=${a##*:}
+ ma_combo="${m}"
+ [ "${m}" != "${ma}" ] && ma_combo="${m}-${ma}"
+ src=${TREES}/${ma_combo}/freebsd-esp
+ dir=${TREES}/${ma_combo}/freebsd
+ dir2=${TREES}/${ma_combo}/test-stand
+ esp=${IMAGES}/${ma_combo}/freebsd-${ma_combo}.esp
+ ufs=${IMAGES}/${ma_combo}/freebsd-${ma_combo}.ufs
+ img=${IMAGES}/${ma_combo}/freebsd-${ma_combo}.img
+ mkdir -p ${IMAGES}/${ma_combo}
+ mkdir -p ${dir2}/etc
+ cat > ${dir2}/etc/fstab <<EOF
+/dev/ufs/root / ufs rw 1 1
+EOF
+ makefs -t msdos -o fat_type=32 -o sectors_per_cluster=1 \
+ -o volume_label=EFISYS -s100m ${esp} ${src}
+ makefs -t ffs -B little -s 200m -o label=root ${ufs} ${dir} ${dir2}
+ mkimg -s gpt -p efi:=${esp} -p freebsd-ufs:=${ufs} -o ${img}
+ # rm -f ${esp} ${ufs} # Don't need to keep this around
+ done
+
+ set -x
+
+ # BIOS i386
+ a=i386:i386
+ m=${a%%:*}
+ ma=${a##*:}
+ ma_combo="${m}"
+ [ "${m}" != "${ma}" ] && ma_combo="${m}-${ma}"
+ dir=${TREES}/${ma_combo}/freebsd
+ dir2=${TREES}/${ma_combo}/test-stand
+ ufs=${IMAGES}/${ma_combo}/freebsd-${ma_combo}.ufs
+ img=${IMAGES}/${ma_combo}/freebsd-${ma_combo}.img
+ mkdir -p ${IMAGES}/${ma_combo}
+ mkdir -p ${dir2}/etc
+ cat > ${dir2}/etc/fstab <<EOF
+/dev/ufs/root / ufs rw 1 1
+EOF
+ makefs -t ffs -B little -s 200m \
+ -o label=root,version=2,bsize=32768,fsize=4096,density=16384 \
+ ${ufs} ${dir} ${dir2}
+ mkimg -s gpt -b ${dir2}/boot/pmbr \
+ -p freebsd-boot:=${dir2}/boot/gptboot \
+ -p freebsd-ufs:=${ufs} \
+ -o ${img}
+ rm -f ${src}/etc/fstab
+
+ # PowerPC for 32-bit mac
+ a=powerpc:powerpc
+ m=${a%%:*}
+ ma=${a##*:}
+ ma_combo="${m}"
+ [ "${m}" != "${ma}" ] && ma_combo="${m}-${ma}"
+ dir=${TREES}/${ma_combo}/freebsd
+ dir2=${TREES}/${ma_combo}/test-stand
+ ufs=${IMAGES}/${ma_combo}/freebsd-${ma_combo}.ufs
+ img=${IMAGES}/${ma_combo}/freebsd-${ma_combo}.img
+ mkdir -p ${IMAGES}/${ma_combo}
+ mkdir -p ${dir2}/etc
+ cat > ${dir2}/etc/fstab <<EOF
+/dev/ufs/root / ufs rw 1 1
+EOF
+ makefs -t ffs -B big -s 200m \
+ -o label=root,version=2,bsize=32768,fsize=4096,density=16384 \
+ ${ufs} ${dir} ${dir2}
+ mkimg -a 1 -s apm \
+ -p freebsd-boot:=${dir2}/boot/boot1.hfs \
+ -p freebsd-ufs:=${ufs} \
+ -o ${img}
+
+ set +x
+}
+
+make_freebsd_scripts()
+{
+ # At the moment, we have just two
+ for a in amd64:amd64 arm64:aarch64; do
+ m=${a%%:*}
+ ma=${a##*:}
+ ma_combo="${m}"
+ [ "${m}" != "${ma}" ] && ma_combo="${m}-${ma}"
+
+ # First off, update the edk firmware
+ bios_code=${BIOS}/edk2-${ma_combo}-code.fd
+ bios_vars=${BIOS}/edk2-${ma_combo}-vars.fd
+ case ${ma} in
+ amd64)
+ if [ ${bios_code} -ot /usr/local/share/qemu/edk2-x86_64-code.fd ]; then
+ cp /usr/local/share/qemu/edk2-x86_64-code.fd ${bios_code}
+ # vars file works on both 32 and 64 bit x86
+ cp /usr/local/share/qemu/edk2-i386-vars.fd ${bios_vars}
+ fi
+ ;;
+ aarch64)
+ if [ ${bios_code} -ot /usr/local/share/qemu/edk2-aarch64-code.fd ]; then
+ # aarch64 vars starts as an empty file
+ dd if=/dev/zero of=${bios_code} bs=1M count=64
+ dd if=/dev/zero of=${bios_vars} bs=1M count=64
+ dd if=/usr/local/share/qemu/edk2-aarch64-code.fd of=${bios_code} conv=notrunc
+ fi
+ ;;
+ esac
+
+ # Now make me a script
+ img=${IMAGES}/${ma_combo}/freebsd-${ma_combo}.img
+ out=${SCRIPTS}/${ma_combo}/freebsd-test.sh
+ mkdir -p ${SCRIPTS}/${ma_combo}
+ case ${ma} in
+ amd64)
+ cat > ${out} <<EOF
+${qemu_bin}/qemu-system-x86_64 -nographic -m 512M \\
+ -drive file=${img},if=none,id=drive0,cache=writeback,format=raw \\
+ -device virtio-blk,drive=drive0,bootindex=0 \\
+ -drive file=${bios_code},format=raw,if=pflash \\
+ -drive file=${bios_vars},format=raw,if=pflash \\
+ -monitor telnet::4444,server,nowait \\
+ -serial stdio \$*
+EOF
+ ;;
+ aarch64)
+ # ESP version
+ raw=${IMAGES}/${ma_combo}/nvme-test-empty.raw
+ cat > ${out} <<EOF
+${qemu_bin}/qemu-system-aarch64 -nographic -machine virt,gic-version=3 -m 512M \\
+ -cpu cortex-a57 -drive file=${img},if=none,id=drive0,cache=writeback -smp 4 \\
+ -device virtio-blk,drive=drive0,bootindex=0 \\
+ -drive file=${bios_code},format=raw,if=pflash \\
+ -drive file=${bios_vars},format=raw,if=pflash \\
+ -drive file=${raw},if=none,id=drive1,cache=writeback,format=raw \\
+ -device nvme,serial=deadbeef,drive=drive1 \\
+ -monitor telnet::4444,server,nowait \\
+ -serial stdio \$*
+EOF
+ ;;
+ esac
+ done
+
+ set -x
+ a=powerpc:powerpc
+ m=${a%%:*}
+ ma=${a##*:}
+ ma_combo="${m}"
+ [ "${m}" != "${ma}" ] && ma_combo="${m}-${ma}"
+ img=${IMAGES}/${ma_combo}/freebsd-${ma_combo}.img
+ out=${SCRIPTS}/${ma_combo}/freebsd-test.sh
+ mkdir -p ${SCRIPTS}/${ma_combo}
+ cat > ${out} <<EOF
+${qemu_bin}/qemu-system-ppc -m 1g -M mac99,via=pmu \\
+ -vga none -nographic \\
+ -drive file=${img},if=virtio \\
+ -prom-env "boot-device=/pci@f2000000/scsi/disk@0:,\\\\\\:tbxi" \\
+ -monitor telnet::4444,server,nowait \\
+ -serial stdio \$*
+EOF
+
+ set -x
+ a=i386:i386
+ m=${a%%:*}
+ ma=${a##*:}
+ ma_combo="${m}"
+ [ "${m}" != "${ma}" ] && ma_combo="${m}-${ma}"
+ img=${IMAGES}/${ma_combo}/freebsd-${ma_combo}.img
+ out=${SCRIPTS}/${ma_combo}/freebsd-test.sh
+ mkdir -p ${SCRIPTS}/${ma_combo}
+ cat > ${out} <<EOF
+${qemu_bin}/qemu-system-i386 -m 1g \\
+ -vga none -nographic \\
+ -drive file=${img},format=raw \\
+ -nographic \\
+ -monitor telnet::4444,server,nowait \\
+ -serial stdio \$*
+EOF
+}
+
+# The smallest FAT32 filesystem is 33292 KB
+espsize=33292
+
+set -e
+echo "src/stand test in ${STAND_ROOT}"
+update_freebsd_img_cache
+make_freebsd_minimal_trees
+make_freebsd_test_trees
+make_linux_initrds
+make_linux_esps
+make_freebsd_esps
+make_freebsd_images
+make_freebsd_scripts
+make_linuxboot_images
+make_linuxboot_scripts
diff --git a/tools/boot/install-boot.sh b/tools/boot/install-boot.sh
index ce6e363a3067..332756582137 100755
--- a/tools/boot/install-boot.sh
+++ b/tools/boot/install-boot.sh
@@ -1,7 +1,5 @@
#!/bin/sh
-# $FreeBSD$
-
#
# Installs/updates the necessary boot blocks for the desired boot environment
#
@@ -24,7 +22,7 @@ doit() {
eval $*
}
-find-part() {
+find_part() {
dev=$1
part=$2
@@ -190,9 +188,9 @@ make_esp_mbr() {
dev=$1
dst=$2
- s=$(find-part $dev "!239")
+ s=$(find_part $dev "!239")
if [ -z "$s" ] ; then
- s=$(find-part $dev "efi")
+ s=$(find_part $dev "efi")
if [ -z "$s" ] ; then
die "No ESP slice found"
fi
@@ -204,7 +202,7 @@ make_esp_gpt() {
dev=$1
dst=$2
- idx=$(find-part $dev "efi")
+ idx=$(find_part $dev "efi")
if [ -z "$idx" ] ; then
die "No ESP partition found"
fi
@@ -215,7 +213,7 @@ boot_nogeli_gpt_ufs_legacy() {
dev=$1
dst=$2
- idx=$(find-part $dev "freebsd-boot")
+ idx=$(find_part $dev "freebsd-boot")
if [ -z "$idx" ] ; then
die "No freebsd-boot partition found"
fi
@@ -235,7 +233,7 @@ boot_nogeli_gpt_zfs_legacy() {
dev=$1
dst=$2
- idx=$(find-part $dev "freebsd-boot")
+ idx=$(find_part $dev "freebsd-boot")
if [ -z "$idx" ] ; then
die "No freebsd-boot partition found"
fi
@@ -256,7 +254,7 @@ boot_nogeli_mbr_ufs_legacy() {
dst=$2
doit gpart bootcode -b ${mbr0} ${dev}
- s=$(find-part $dev "freebsd")
+ s=$(find_part $dev "freebsd")
if [ -z "$s" ] ; then
die "No freebsd slice found"
fi
@@ -277,11 +275,11 @@ boot_nogeli_mbr_zfs_legacy() {
dst=$2
# search to find the BSD slice
- s=$(find-part $dev "freebsd")
+ s=$(find_part $dev "freebsd")
if [ -z "$s" ] ; then
die "No BSD slice found"
fi
- idx=$(find-part ${dev}s${s} "freebsd-zfs")
+ idx=$(find_part ${dev}s${s} "freebsd-zfs")
if [ -z "$idx" ] ; then
die "No freebsd-zfs slice found"
fi
@@ -353,15 +351,6 @@ boot_geli_mbr_zfs_both() {
exit 1
}
-boot_nogeli_vtoc8_ufs_ofw() {
- dev=$1
- dst=$2
-
- # For non-native builds, ensure that geom_part(4) supports VTOC8.
- kldload geom_part_vtoc8.ko
- doit gpart bootcode -p ${vtoc8} ${dev}
-}
-
usage() {
printf 'Usage: %s -b bios [-d destdir] -f fs [-g geli] [-h] [-o optargs] -s scheme <bootdev>\n' "$0"
printf 'Options:\n'
@@ -431,9 +420,6 @@ gptzfs2=${srcroot}/boot/gptzfsboot
mbr0=${srcroot}/boot/mbr
mbr2=${srcroot}/boot/boot
-# VTOC8
-vtoc8=${srcroot}/boot/boot1
-
# sanity check here
# Check if we've been given arguments. If not, this script is probably being
diff --git a/tools/boot/lua-img.sh b/tools/boot/lua-img.sh
index 85e4cfc304d9..c0c1d0a41ac7 100755
--- a/tools/boot/lua-img.sh
+++ b/tools/boot/lua-img.sh
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
# Quick script to build a suitable /boot dir somewhere in the tree for testing.
# dir may be passed in, will default to /tmp/loadertest if not specified
diff --git a/tools/boot/lua-lint.sh b/tools/boot/lua-lint.sh
index c6bc89da3330..d771be090c6e 100755
--- a/tools/boot/lua-lint.sh
+++ b/tools/boot/lua-lint.sh
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
# Run linter on the lua scripts in stand/lua. luacheck, available in ports as
# devel/lua-luacheck, must be installed as a dependency of this script.
diff --git a/tools/boot/lua-test.sh b/tools/boot/lua-test.sh
index 3ce5fa6bd54a..8b6bfd9d66c8 100755
--- a/tools/boot/lua-test.sh
+++ b/tools/boot/lua-test.sh
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
# Will image the test directory (default /tmp/loadertest) if it doesn't exist
diff --git a/tools/boot/rootgen.sh b/tools/boot/rootgen.sh
index b61fff647b5c..d87eb481e2c1 100755
--- a/tools/boot/rootgen.sh
+++ b/tools/boot/rootgen.sh
@@ -1,29 +1,23 @@
#!/bin/sh
-# $FreeBSD$
-
passphrase=passphrase
iterations=50000
# The smallest FAT32 filesystem is 33292 KB
espsize=33292
-dev=vtbd0
#
# Builds all the bat-shit crazy combinations we support booting from,
# at least for amd64. It assume you have a ~sane kernel in /boot/kernel
# and copies that into the ~150MB root images we create (we create the du
-# size of the kernel + 20MB
+# size of the kernel + 20MB).
#
-# Sad panda sez: this runs as root, but could be userland if someone
-# creates userland geli and zfs tools.
+# Sad panda sez: this runs as root, but could be any user if someone
+# creates userland geli.
#
# This assumes an external program install-boot.sh which will install
# the appropriate boot files in the appropriate locations.
#
-# These images assume ${dev} will be the root image. We should likely
-# use labels, but we don't.
-#
# Assumes you've already rebuilt... maybe bad? Also maybe bad: the env
# vars should likely be conditionally set to allow better automation.
#
@@ -38,14 +32,20 @@ cpsys() {
(cd $src ; tar cf - .) | (cd $dst; tar xf -)
}
+ufs_fstab() {
+ dir=$1
+
+ cat > ${dir}/etc/fstab <<EOF
+/dev/ufs/root / ufs rw 1 1
+EOF
+}
+
mk_nogeli_gpt_ufs_legacy() {
src=$1
img=$2
- cat > ${src}/etc/fstab <<EOF
-/dev/${dev}p2 / ufs rw 1 1
-EOF
- makefs -t ffs -B little -s 200m ${img}.p2 ${src}
+ ufs_fstab ${src}
+ makefs -t ffs -B little -s 200m -o label=root ${img}.p2 ${src}
mkimg -s gpt -b ${src}/boot/pmbr \
-p freebsd-boot:=${src}/boot/gptboot \
-p freebsd-ufs:=${img}.p2 -o ${img}
@@ -56,11 +56,9 @@ mk_nogeli_gpt_ufs_uefi() {
src=$1
img=$2
- cat > ${src}/etc/fstab <<EOF
-/dev/${dev}p2 / ufs rw 1 1
-EOF
+ ufs_fstab ${src}
make_esp_file ${img}.p1 ${espsize} ${src}/boot/loader.efi
- makefs -t ffs -B little -s 200m ${img}.p2 ${src}
+ makefs -t ffs -B little -s 200m -o label=root ${img}.p2 ${src}
mkimg -s gpt \
-p efi:=${img}.p1 \
-p freebsd-ufs:=${img}.p2 -o ${img}
@@ -71,11 +69,9 @@ mk_nogeli_gpt_ufs_both() {
src=$1
img=$2
- cat > ${src}/etc/fstab <<EOF
-/dev/${dev}p3 / ufs rw 1 1
-EOF
+ ufs_fstab ${src}
make_esp_file ${img}.p1 ${espsize} ${src}/boot/loader.efi
- makefs -t ffs -B little -s 200m ${img}.p3 ${src}
+ makefs -t ffs -B little -s 200m -o label=root ${img}.p3 ${src}
# p1 is boot for uefi, p2 is boot for gpt, p3 is /
mkimg -b ${src}/boot/pmbr -s gpt \
-p efi:=${img}.p1 \
@@ -85,6 +81,23 @@ EOF
rm -f ${src}/etc/fstab
}
+# XXX should not assume host == target
+zfs_extra()
+{
+ src=$1
+ dst=$2
+
+ mkdir -p $dst
+ mkdir -p $dst/boot/kernel
+ cat > ${dst}/boot/loader.conf.local <<EOF
+cryptodev_load=YES
+zfs_load=YES
+EOF
+ cp /boot/kernel/acl_nfs4.ko ${dst}/boot/kernel/acl_nfs4.ko
+ cp /boot/kernel/cryptodev.ko ${dst}/boot/kernel/cryptodev.ko
+ cp /boot/kernel/zfs.ko ${dst}/boot/kernel/zfs.ko
+}
+
mk_nogeli_gpt_zfs_legacy() {
src=$1
img=$2
@@ -94,34 +107,17 @@ mk_nogeli_gpt_zfs_legacy() {
fs=$6
bios=$7
pool=nogeli-gpt-zfs-legacy
+ dst=$img.extra
- dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
- md=$(mdconfig -f ${img})
- gpart create -s gpt ${md}
- gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
- gpart add -t freebsd-zfs -l root $md
- # install-boot will make this bootable
- zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2
- zpool set bootfs=${pool} ${pool}
- zfs create -po mountpoint=/ ${pool}/ROOT/default
- # NB: The online guides go nuts customizing /var and other mountpoints here, no need
- cpsys ${src} ${mntpt}
- # need to make a couple of tweaks
- cat >> ${mntpt}/boot/loader.conf <<EOF
-cryptodev_load=YES
-zfs_load=YES
-EOF
- cp /boot/kernel/acl_nfs4.ko ${mntpt}/boot/kernel/acl_nfs4.ko
- cp /boot/kernel/cryptodev.ko ${mntpt}/boot/kernel/cryptodev.ko
- cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
- # end tweaks
- zfs umount -f ${pool}/ROOT/default
- zfs set mountpoint=none ${pool}/ROOT/default
- zpool set bootfs=${pool}/ROOT/default ${pool}
- zpool set autoexpand=on ${pool}
- zpool export ${pool}
- ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
- mdconfig -d -u ${md}
+ zfs_extra $src $dst
+ makefs -t zfs -s 200m \
+ -o poolname=${pool} -o bootfs=${pool} -o rootpath=/ \
+ ${img}.p2 ${src} ${dst}
+ mkimg -b ${src}/boot/pmbr -s gpt \
+ -p freebsd-boot:=/boot/gptzfsboot \
+ -p freebsd-zfs:=${img}.p2 \
+ -o ${img}
+ rm -rf ${dst}
}
mk_nogeli_gpt_zfs_uefi() {
@@ -133,34 +129,18 @@ mk_nogeli_gpt_zfs_uefi() {
fs=$6
bios=$7
pool=nogeli-gpt-zfs-uefi
+ dst=$img.extra
- dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
- md=$(mdconfig -f ${img})
- gpart create -s gpt ${md}
- gpart add -t efi -s ${espsize}k -a 4k ${md}
- gpart add -t freebsd-zfs -l root $md
- # install-boot will make this bootable
- zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2
- zpool set bootfs=${pool} ${pool}
- zfs create -po mountpoint=/ ${pool}/ROOT/default
- # NB: The online guides go nuts customizing /var and other mountpoints here, no need
- cpsys ${src} ${mntpt}
- # need to make a couple of tweaks
- cat >> ${mntpt}/boot/loader.conf <<EOF
-cryptodev_load=YES
-zfs_load=YES
-EOF
- cp /boot/kernel/acl_nfs4.ko ${mntpt}/boot/kernel/acl_nfs4.ko
- cp /boot/kernel/cryptodev.ko ${mntpt}/boot/kernel/cryptodev.ko
- cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
- # end tweaks
- zfs umount -f ${pool}/ROOT/default
- zfs set mountpoint=none ${pool}/ROOT/default
- zpool set bootfs=${pool}/ROOT/default ${pool}
- zpool set autoexpand=on ${pool}
- zpool export ${pool}
- ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
- mdconfig -d -u ${md}
+ zfs_extra $src $dst
+ make_esp_file ${img}.p1 ${espsize} ${src}/boot/loader.efi
+ makefs -t zfs -s 200m \
+ -o poolname=${pool} -o bootfs=${pool} -o rootpath=/ \
+ ${img}.p2 ${src} ${dst}
+ mkimg -b ${src}/boot/pmbr -s gpt \
+ -p efi:=${img}.p1 \
+ -p freebsd-zfs:=${img}.p2 \
+ -o ${img}
+ rm -rf ${dst}
}
mk_nogeli_gpt_zfs_both() {
@@ -172,45 +152,27 @@ mk_nogeli_gpt_zfs_both() {
fs=$6
bios=$7
pool=nogeli-gpt-zfs-both
+ dst=$img.extra
- dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
- md=$(mdconfig -f ${img})
- gpart create -s gpt ${md}
- gpart add -t efi -s ${espsize}k -a 4k ${md}
- gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
- gpart add -t freebsd-zfs -l root $md
- # install-boot will make this bootable
- zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3
- zpool set bootfs=${pool} ${pool}
- zfs create -po mountpoint=/ ${pool}/ROOT/default
- # NB: The online guides go nuts customizing /var and other mountpoints here, no need
- cpsys ${src} ${mntpt}
- # need to make a couple of tweaks
- cat >> ${mntpt}/boot/loader.conf <<EOF
-cryptodev_load=YES
-zfs_load=YES
-EOF
- cp /boot/kernel/acl_nfs4.ko ${mntpt}/boot/kernel/acl_nfs4.ko
- cp /boot/kernel/cryptodev.ko ${mntpt}/boot/kernel/cryptodev.ko
- cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
- # end tweaks
- zfs umount -f ${pool}/ROOT/default
- zfs set mountpoint=none ${pool}/ROOT/default
- zpool set bootfs=${pool}/ROOT/default ${pool}
- zpool set autoexpand=on ${pool}
- zpool export ${pool}
- ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
- mdconfig -d -u ${md}
+ zfs_extra $src $dst
+ make_esp_file ${img}.p2 ${espsize} ${src}/boot/loader.efi
+ makefs -t zfs -s 200m \
+ -o poolname=${pool} -o bootfs=${pool} -o rootpath=/ \
+ ${img}.p3 ${src} ${dst}
+ mkimg -b ${src}/boot/pmbr -s gpt \
+ -p freebsd-boot:=/boot/gptzfsboot \
+ -p efi:=${img}.p2 \
+ -p freebsd-zfs:=${img}.p3 \
+ -o ${img}
+ rm -rf ${dst}
}
mk_nogeli_mbr_ufs_legacy() {
src=$1
img=$2
- cat > ${src}/etc/fstab <<EOF
-/dev/${dev}s1a / ufs rw 1 1
-EOF
- makefs -t ffs -B little -s 200m ${img}.s1a ${src}
+ ufs_fstab ${src}
+ makefs -t ffs -B little -s 200m -o label=root ${img}.s1a ${src}
mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s1a -o ${img}.s1
mkimg -a 1 -s mbr -b ${src}/boot/boot0sio -p freebsd:=${img}.s1 -o ${img}
rm -f ${src}/etc/fstab
@@ -220,11 +182,9 @@ mk_nogeli_mbr_ufs_uefi() {
src=$1
img=$2
- cat > ${src}/etc/fstab <<EOF
-/dev/${dev}s2a / ufs rw 1 1
-EOF
+ ufs_fstab ${src}
make_esp_file ${img}.s1 ${espsize} ${src}/boot/loader.efi
- makefs -t ffs -B little -s 200m ${img}.s2a ${src}
+ makefs -t ffs -B little -s 200m -o label=root ${img}.s2a ${src}
mkimg -s bsd -p freebsd-ufs:=${img}.s2a -o ${img}.s2
mkimg -a 1 -s mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img}
rm -f ${src}/etc/fstab
@@ -234,11 +194,9 @@ mk_nogeli_mbr_ufs_both() {
src=$1
img=$2
- cat > ${src}/etc/fstab <<EOF
-/dev/${dev}s2a / ufs rw 1 1
-EOF
+ ufs_fstab ${src}
make_esp_file ${img}.s1 ${espsize} ${src}/boot/loader.efi
- makefs -t ffs -B little -s 200m ${img}.s2a ${src}
+ makefs -t ffs -B little -s 200m -o label=root ${img}.s2a ${src}
mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s2a -o ${img}.s2
mkimg -a 2 -s mbr -b ${src}/boot/mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img}
rm -f ${src}/etc/fstab
@@ -254,35 +212,21 @@ mk_nogeli_mbr_zfs_legacy() {
bios=$7
pool=nogeli-mbr-zfs-legacy
- dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
- md=$(mdconfig -f ${img})
- gpart create -s mbr ${md}
- gpart add -t freebsd ${md}
- gpart set -a active -i 1 ${md}
- gpart create -s bsd ${md}s1
- gpart add -t freebsd-zfs ${md}s1
- # install-boot will make this bootable
- zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s1a
- zpool set bootfs=${pool} ${pool}
- zfs create -po mountpoint=/ ${pool}/ROOT/default
- # NB: The online guides go nuts customizing /var and other mountpoints here, no need
- cpsys ${src} ${mntpt}
- # need to make a couple of tweaks
- cat >> ${mntpt}/boot/loader.conf <<EOF
-cryptodev_load=YES
-zfs_load=YES
-EOF
- cp /boot/kernel/acl_nfs4.ko ${mntpt}/boot/kernel/acl_nfs4.ko
- cp /boot/kernel/cryptodev.ko ${mntpt}/boot/kernel/cryptodev.ko
- cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
- # end tweaks
- zfs umount -f ${pool}/ROOT/default
- zfs set mountpoint=none ${pool}/ROOT/default
- zpool set bootfs=${pool}/ROOT/default ${pool}
- zpool set autoexpand=on ${pool}
- zpool export ${pool}
- ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
- mdconfig -d -u ${md}
+ zfs_extra $src $dst
+ makefs -t zfs -s 200m \
+ -o poolname=${pool} -o bootfs=${pool} -o rootpath=/ \
+ ${img}.s1a ${src} ${dst}
+ # The old boot1/boot2 boot split is also used by zfs. We need to extract zfsboot1
+ # from this image. Since there's no room in the mbr format for the rest of the loader,
+ # it will load the zfsboot loader from the reserved for bootloader area of the ZFS volume
+ # being booted, hence the need to dd it into the raw img later.
+ # Please note: zfsboot only works with partition 'a' which must be the root
+ # partition / zfs volume
+ dd if=${src}/boot/zfsboot of=${dst}/zfsboot1 count=1
+ mkimg -s bsd -b ${dst}zfsboot1 -p freebsd-zfs:=${img}.s1a -o ${img}.s1
+ dd if=${src}/boot/zfsboot of=${img}.s1a skip=1 seek=1024
+ mkimg -a 1 -s mbr -b ${src}/boot/mbr -p freebsd:=${img}.s1 -o ${img}
+ rm -rf ${dst}
}
mk_nogeli_mbr_zfs_uefi() {
@@ -295,36 +239,14 @@ mk_nogeli_mbr_zfs_uefi() {
bios=$7
pool=nogeli-mbr-zfs-uefi
- dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
- md=$(mdconfig -f ${img})
- gpart create -s mbr ${md}
- gpart add -t efi -s ${espsize}k ${md}
- gpart add -t freebsd ${md}
- gpart set -a active -i 2 ${md}
- gpart create -s bsd ${md}s2
- gpart add -t freebsd-zfs ${md}s2
- # install-boot will make this bootable
- zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a
- zpool set bootfs=${pool} ${pool}
- zfs create -po mountpoint=/ ${pool}/ROOT/default
- # NB: The online guides go nuts customizing /var and other mountpoints here, no need
- cpsys ${src} ${mntpt}
- # need to make a couple of tweaks
- cat >> ${mntpt}/boot/loader.conf <<EOF
-cryptodev_load=YES
-zfs_load=YES
-EOF
- cp /boot/kernel/acl_nfs4.ko ${mntpt}/boot/kernel/acl_nfs4.ko
- cp /boot/kernel/cryptodev.ko ${mntpt}/boot/kernel/cryptodev.ko
- cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
- # end tweaks
- zfs umount -f ${pool}/ROOT/default
- zfs set mountpoint=none ${pool}/ROOT/default
- zpool set bootfs=${pool}/ROOT/default ${pool}
- zpool set autoexpand=on ${pool}
- zpool export ${pool}
- ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
- mdconfig -d -u ${md}
+ zfs_extra $src $dst
+ make_esp_file ${img}.s1 ${espsize} ${src}/boot/loader.efi
+ makefs -t zfs -s 200m \
+ -o poolname=${pool} -o bootfs=${pool} -o rootpath=/ \
+ ${img}.s2a ${src} ${dst}
+ mkimg -s bsd -b ${dst}zfsboot1 -p freebsd-zfs:=${img}.s2a -o ${img}.s2
+ mkimg -a 1 -s mbr -b ${src}/boot/mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img}
+ rm -rf ${dst}
}
mk_nogeli_mbr_zfs_both() {
@@ -337,36 +259,21 @@ mk_nogeli_mbr_zfs_both() {
bios=$7
pool=nogeli-mbr-zfs-both
- dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
- md=$(mdconfig -f ${img})
- gpart create -s mbr ${md}
- gpart add -t efi -s ${espsize}k ${md}
- gpart add -t freebsd ${md}
- gpart set -a active -i 2 ${md}
- gpart create -s bsd ${md}s2
- gpart add -t freebsd-zfs ${md}s2
- # install-boot will make this bootable
- zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a
- zpool set bootfs=${pool} ${pool}
- zfs create -po mountpoint=/ ${pool}/ROOT/default
- # NB: The online guides go nuts customizing /var and other mountpoints here, no need
- cpsys ${src} ${mntpt}
- # need to make a couple of tweaks
- cat >> ${mntpt}/boot/loader.conf <<EOF
-cryptodev_load=YES
-zfs_load=YES
-EOF
- cp /boot/kernel/acl_nfs4.ko ${mntpt}/boot/kernel/acl_nfs4.ko
- cp /boot/kernel/cryptodev.ko ${mntpt}/boot/kernel/cryptodev.ko
- cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
- # end tweaks
- zfs umount -f ${pool}/ROOT/default
- zfs set mountpoint=none ${pool}/ROOT/default
- zpool set bootfs=${pool}/ROOT/default ${pool}
- zpool set autoexpand=on ${pool}
- zpool export ${pool}
- ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
- mdconfig -d -u ${md}
+ zfs_extra $src $dst
+ make_esp_file ${img}.s1 ${espsize} ${src}/boot/loader.efi
+ makefs -t zfs -s 200m \
+ -o poolname=${pool} -o bootfs=${pool} -o rootpath=/ \
+ ${img}.s2a ${src} ${dst}
+ # The old boot1/boot2 boot split is also used by zfs. We need to extract zfsboot1
+ # from this image. Since there's no room in the mbr format for the rest of the loader,
+ # it will load the zfsboot loader from the reserved for bootloader area of the ZFS volume
+ # being booted, hence the need to dd it into the raw img later.
+ # Please note: zfsboot only works with partition 'a' which must be the root
+ # partition / zfs volume
+ dd if=${src}/boot/zfsboot of=${dst}/zfsboot1 count=1
+ mkimg -s bsd -b ${dst}zfsboot1 -p freebsd-zfs:=${img}.s2a -o ${img}.s2
+ dd if=${src}/boot/zfsboot of=${img}.s1a skip=1 seek=1024
+ mkimg -a 1 -s mbr -b ${src}/boot/mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img}
}
mk_geli_gpt_ufs_legacy() {
@@ -386,16 +293,14 @@ mk_geli_gpt_ufs_legacy() {
# install-boot will make this bootable
echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2
echo ${passphrase} | geli attach -j - ${md}p2
- newfs /dev/${md}p2.eli
+ newfs -L root /dev/${md}p2.eli
mount /dev/${md}p2.eli ${mntpt}
cpsys ${src} ${mntpt}
# need to make a couple of tweaks
cat > ${mntpt}/boot/loader.conf <<EOF
geom_eli_load=YES
EOF
- cat > ${mntpt}/etc/fstab <<EOF
-/dev/${dev}p2.eli / ufs rw 1 1
-EOF
+ ufs_fstab ${mntpt}
cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
# end tweaks
@@ -422,16 +327,14 @@ mk_geli_gpt_ufs_uefi() {
# install-boot will make this bootable
echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2
echo ${passphrase} | geli attach -j - ${md}p2
- newfs /dev/${md}p2.eli
+ newfs -L root /dev/${md}p2.eli
mount /dev/${md}p2.eli ${mntpt}
cpsys ${src} ${mntpt}
# need to make a couple of tweaks
cat > ${mntpt}/boot/loader.conf <<EOF
geom_eli_load=YES
EOF
- cat > ${mntpt}/etc/fstab <<EOF
-/dev/${dev}p2.eli / ufs rw 1 1
-EOF
+ ufs_fstab ${mntpt}
cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
# end tweaks
@@ -459,16 +362,14 @@ mk_geli_gpt_ufs_both() {
# install-boot will make this bootable
echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p3
echo ${passphrase} | geli attach -j - ${md}p3
- newfs /dev/${md}p3.eli
+ newfs -L root /dev/${md}p3.eli
mount /dev/${md}p3.eli ${mntpt}
cpsys ${src} ${mntpt}
# need to make a couple of tweaks
cat > ${mntpt}/boot/loader.conf <<EOF
geom_eli_load=YES
EOF
- cat > ${mntpt}/etc/fstab <<EOF
-/dev/${dev}p3.eli / ufs rw 1 1
-EOF
+ ufs_fstab ${mntpt}
cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
# end tweaks
@@ -645,30 +546,7 @@ mk_geli_mbr_zfs_both() {
# u-boot
# powerpc
-mk_sparc64_nogeli_vtoc8_ufs_ofw() {
- src=$1
- img=$2
- mntpt=$3
- geli=$4
- scheme=$5
- fs=$6
- bios=$7
-
- cat > ${src}/etc/fstab <<EOF
-/dev/${dev}a / ufs rw 1 1
-EOF
- makefs -t ffs -B big -s 200m ${img} ${src}
- md=$(mdconfig -f ${img})
- # For non-native builds, ensure that geom_part(4) supports VTOC8.
- kldload geom_part_vtoc8.ko
- gpart create -s VTOC8 ${md}
- gpart add -t freebsd-ufs ${md}
- ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
- mdconfig -d -u ${md}
- rm -f ${src}/etc/fstab
-}
-
-qser="-serial telnet::4444,server -nographic"
+qser="-monitor telnet::4444,server,nowait -serial stdio -nographic"
# https://wiki.freebsd.org/QemuRecipes
# aarch64
@@ -687,13 +565,22 @@ qemu_aarch64_uefi()
# -netdev user,id=net0
}
+log_for()
+{
+ dir=$(dirname $1)
+ fn=$(basename $1 .sh)
+ echo $dir/$fn.log
+}
+
# Amd64 qemu
qemu_amd64_legacy()
{
img=$1
sh=$2
+ log=$(log_for $2)
- echo "qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser}" > $sh
+ echo "echo -n $(basename $sh .sh):' '" > $sh
+ echo "(qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser} | tee $log 2>&1 | grep -q SUCCESS) && echo legacy pass || echo legacy fail" >> $sh
chmod 755 $sh
}
@@ -701,8 +588,10 @@ qemu_amd64_uefi()
{
img=$1
sh=$2
+ log=$(log_for $2)
- echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" > $sh
+ echo "echo -n $(basename $sh .sh):' '" > $sh
+ echo "(qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser} | tee $log 2>&1 | grep -q SUCCESS) && echo uefi pass || echo uefi fail" >> $sh
chmod 755 $sh
}
@@ -710,9 +599,12 @@ qemu_amd64_both()
{
img=$1
sh=$2
+ log=$(log_for $2)
- echo "qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser}" > $sh
- echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" >> $sh
+ echo "echo -n $(basename $sh .sh):' '" > $sh
+ echo "(qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser} | tee $log 2>&1 | grep -q SUCCESS) && echo legacy pass || echo legacy fail" >> $sh
+ echo "echo -n $(basename $sh .sh):' '" >> $sh
+ echo "(qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser} | tee -a $log 2>&1 | grep -q SUCCESS) && echo uefi pass || echo uefi fail" >> $sh
chmod 755 $sh
}
@@ -761,6 +653,8 @@ make_one_image()
# Create sparse file and mount newly created filesystem(s) on it
img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img
sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh
+ echo "$sh" >> ${IMGDIR}/all.sh
+ echo date >> ${IMGDIR}/all.sh
echo "vvvvvvvvvvvvvv Creating $img vvvvvvvvvvvvvvv"
rm -f ${img}*
eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios}
@@ -769,16 +663,10 @@ make_one_image()
echo "^^^^^^^^^^^^^^ Created $img ^^^^^^^^^^^^^^^"
}
-# mips
-# qemu-system-mips -kernel /path/to/rootfs/boot/kernel/kernel -nographic -hda /path/to/disk.img -m 2048
-
# Powerpc -- doesn't work but maybe it would enough for testing -- needs details
# powerpc64
# qemu-system-ppc64 -drive file=/path/to/disk.img,format=raw
-# sparc64
-# qemu-system-sparc64 -drive file=/path/to/disk.img,format=raw
-
# Misc variables
SRCTOP=$(make -v SRCTOP)
cd ${SRCTOP}/stand
@@ -796,6 +684,7 @@ cp /boot/kernel/kernel ${DESTDIR}/boot/kernel
echo -h -D -S115200 > ${DESTDIR}/boot.config
cat > ${DESTDIR}/boot/loader.conf <<EOF
comconsole_speed=115200
+autoboot_delay=0
EOF
# XXX
cp /boot/device.hints ${DESTDIR}/boot/device.hints
@@ -822,15 +711,20 @@ EOF
# If we were given exactly 5 args, go make that one image.
+rm -f ${IMGDIR}/all.sh
+echo date > ${IMGDIR}/all.sh
+chmod +x ${IMGDIR}/all.sh
+
if [ $# -eq 5 ]; then
make_one_image $*
+ echo ${IMGDIR}/all.sh
exit
fi
# OK. Let the games begin
for arch in amd64; do
- for geli in nogeli geli; do
+ for geli in nogeli; do # geli
for scheme in gpt mbr; do
for fs in ufs zfs; do
for bios in legacy uefi both; do
@@ -840,6 +734,8 @@ for arch in amd64; do
done
done
done
+ # We should also do a cd image for amd64 here
+echo ${IMGDIR}/all.sh
rmdir ${MNTPT}
@@ -852,39 +748,42 @@ for arch in i386; do
for scheme in gpt mbr; do
for fs in ufs zfs; do
for bios in legacy; do
+ # The legacy boot is shared with amd64 so those routines could
+ # likely be used here.
make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}
done
done
done
done
done
+ # We should also do a cd image for i386 here
for arch in arm aarch64; do
+ geli=nogeli # I don't think geli boot works / is supported on arm
for scheme in gpt mbr; do
- fs=ufs
- for bios in uboot efi; do
- make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}
- done
+ for fs in ufs zfs; do
+ bios=efi # Note: arm has some uboot support with ufs, what to do?
+ make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}
+ done
done
done
-for arch in powerpc powerpc64; do
- for scheme in ppc-wtf; do
- fs=ufs
+# It's not clear that the nested looping paradigm is best for powerpc
+# due to its diversity.
+for arch in powerpc powerpc64 powerpc64le; do
+ geli=nogeli
+ for scheme in apm gpt; do
+ fs=ufs # zfs + gpt might be supported?
for bios in ofw uboot chrp; do
make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}
done
done
done
-for arch in sparc64; do
- for geli in nogeli; do
- for scheme in vtoc8; do
- for fs in ufs; do
- for bios in ofw; do
- make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}
- done
- done
- done
- done
+for arch in riscv; do
+ geli=nogeli
+ fs=ufs # Generic ZFS booting support with efi?
+ scheme=gpt
+ bios=efi
+ make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}
done
diff --git a/tools/boot/smbios/Makefile b/tools/boot/smbios/Makefile
new file mode 100644
index 000000000000..042b3aaee274
--- /dev/null
+++ b/tools/boot/smbios/Makefile
@@ -0,0 +1,10 @@
+
+PROG= smbios
+MAN=
+.PATH: ${SRCTOP}/stand/libsa
+SRCS= main.c
+CFLAGS+= -I${.CURDIR} -I${SRCTOP}/stand/libsa
+
+.include <bsd.prog.mk>
+
+CFLAGS+= -Wno-cast-align
diff --git a/tools/boot/smbios/main.c b/tools/boot/smbios/main.c
new file mode 100644
index 000000000000..60263d2ea8d9
--- /dev/null
+++ b/tools/boot/smbios/main.c
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2023 Warner Losh
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+/*
+ * Test program for smbios support in the boot loader. This program will mmap
+ * physical memory, and print the smbios table at the passed in PA. This is
+ * intended to test the code and debug problems in a debugger friendly
+ * environment.
+ */
+
+#include <sys/param.h>
+#define setenv my_setenv
+
+#define SMBIOS_SERIAL_NUMBERS 1
+#define SMBIOS_LITTLE_ENDIAN_UUID 1
+
+#include <arpa/inet.h>
+
+#include "smbios.h"
+#include "smbios.c"
+
+#include <sys/mman.h>
+
+#define MAX_MAP 10
+#define PAGE (64<<10)
+
+static struct mapping
+{
+ uintptr_t pa;
+ caddr_t va;
+} map[MAX_MAP];
+static int fd;
+static int nmap;
+
+caddr_t ptov(uintptr_t pa)
+{
+ caddr_t va;
+ uintptr_t pa2;
+ struct mapping *m = map;
+
+ pa2 = rounddown(pa, PAGE);
+ for (int i = 0; i < nmap; i++, m++) {
+ if (m->pa == pa2) {
+ return (m->va + pa - m->pa);
+ }
+ }
+ if (nmap == MAX_MAP)
+ errx(1, "Too many maps");
+ va = mmap(0, PAGE, PROT_READ, MAP_SHARED, fd, pa2);
+ if (va == MAP_FAILED)
+ err(1, "mmap offset %#lx", (long)pa2);
+ m = &map[nmap++];
+ m->pa = pa2;
+ m->va = va;
+ return (m->va + pa - m->pa);
+}
+
+static void
+cleanup(void)
+{
+ for (int i = 0; i < nmap; i++) {
+ munmap(map[i].va, PAGE);
+ }
+}
+
+int
+my_setenv(const char *name, const char *value, int overwrite __unused)
+{
+ printf("%s=%s\n", name, value);
+ return 0;
+}
+
+static void
+usage(void)
+{
+ errx(1, "smbios address");
+}
+
+int
+main(int argc, char **argv)
+{
+ uintptr_t addr;
+
+ if (argc != 2)
+ usage();
+ addr = strtoull(argv[1], NULL, 0);
+ /* For mmap later */
+ fd = open("/dev/mem", O_RDONLY);
+ if (fd < 0)
+ err(1, "Opening /dev/mem");
+ smbios_detect(ptov(addr));
+ cleanup();
+}
diff --git a/tools/boot/smbios/stand.h b/tools/boot/smbios/stand.h
new file mode 100644
index 000000000000..d754189fad13
--- /dev/null
+++ b/tools/boot/smbios/stand.h
@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2023 Warner Losh
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <sys/types.h>
+
+#include <err.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+caddr_t ptov(uintptr_t pa);
diff --git a/tools/boot/universe.sh b/tools/boot/universe.sh
index a23678100705..3e033ce26ae2 100755
--- a/tools/boot/universe.sh
+++ b/tools/boot/universe.sh
@@ -1,15 +1,9 @@
#!/bin/sh
-# $FreeBSD$
-
#
-# Full list of all arches, but we only build a subset. All different mips add any
-# value, and there's a few others we just don't support.
+# Full list of all arches we don't build.
#
-# mips/mipsel mips/mips mips/mips64el mips/mips64 mips/mipsn32 \
-# mips/mipselhf mips/mipshf mips/mips64elhf mips/mips64hf \
-# powerpc/powerpc powerpc/powerpc64 powerpc/powerpcspe \
-# riscv/riscv64 riscv/riscv64sf
+# powerpc/powerpcspe arm/armv6
#
# This script is expected to be run in stand (though you could run it anywhere
# in the tree). It does a full clean build. For stand you can do all the archs in
@@ -45,7 +39,7 @@ dobuild()
echo "Fail (cleanup)"
continue
fi
- if ! make buildenv TARGET_ARCH=$ta BUILDENV_SHELL="make ${opt} -j 20 all" \
+ if ! make buildenv TARGET_ARCH=$ta BUILDENV_SHELL="make ${opt} -j 40 all" \
>> $lf 2>&1; then
echo "Fail (build)"
continue
@@ -58,6 +52,7 @@ cd $top/stand
# Build without forth
for i in \
+ arm64/aarch64 \
amd64/amd64 \
i386/i386 \
; do
@@ -67,6 +62,7 @@ done
# Build without GELI
for i in \
+ arm64/aarch64 \
amd64/amd64 \
i386/i386 \
; do
@@ -74,46 +70,36 @@ for i in \
dobuild $ta _.boot.${ta}.no_geli.log "WITHOUT_LOADER_GEIL=yes"
done
-# Default build for a goodly selection of architectures
+# Default build for a almost all architectures
for i in \
amd64/amd64 \
arm/armv7 \
arm64/aarch64 \
i386/i386 \
- mips/mips mips/mips64 \
- powerpc/powerpc powerpc/powerpc64 \
+ powerpc/powerpc \
+ powerpc/powerpc64 \
+ powerpc/powerpc64le \
+ riscv/riscv64 \
; do
ta=${i##*/}
dobuild $ta _.boot.${ta}.log ""
done
-# Default build for a goodly selection of architectures with Lua
-for i in \
- amd64/amd64 \
- arm/armv7 \
- arm64/aarch64 \
- i386/i386 \
- mips/mips mips/mips64 \
- powerpc/powerpc powerpc/powerpc64 \
- ; do
- ta=${i##*/}
- dobuild $ta _.boot.${ta}.lua.log "MK_LOADER_LUA=yes MK_FORTH=no"
-done
-
# Build w/o ZFS
for i in \
+ arm64/aarch64 \
amd64/amd64 \
i386/i386 \
; do
ta=${i##*/}
- dobuild $ta _.boot.${ta}.no_zfs.log "MK_ZFS=no"
+ dobuild $ta _.boot.${ta}.no_zfs.log "MK_LOADER_ZFS=no"
done
-# Build with firewire
+# Build w/ LOADER_BIOS_TEXTONLY
for i in \
amd64/amd64 \
i386/i386 \
; do
ta=${i##*/}
- dobuild $ta _.boot.${ta}.firewire.log "MK_LOADER_FIREWIRE=yes"
+ dobuild $ta _.boot.${ta}.no_zfs.log "MK_LOADER_BIOS_TEXTONLY=yes"
done
diff --git a/tools/bsdbox/Makefile b/tools/bsdbox/Makefile
index ce40eb8b75a2..008b66647077 100644
--- a/tools/bsdbox/Makefile
+++ b/tools/bsdbox/Makefile
@@ -1,5 +1,3 @@
-#$FreeBSD$
-# @(#)Makefile 8.1 (Berkeley) 6/2/93
MAN=
@@ -100,9 +98,6 @@ CRUNCH_LIBS+= -lm
#.include "Makefile.textproc"
.include "Makefile.login"
.include "Makefile.kld"
-# telnet/telnetd are too broken to include as a crunchgen'ed binary,
-# thanks to some of the horrible layering violations going on.
-# .include "Makefile.telnetd"
.include "Makefile.fs"
CRUNCH_LIBS+= -lcrypto -lssl -lz
diff --git a/tools/bsdbox/Makefile.base b/tools/bsdbox/Makefile.base
index f2ffc2e49f70..49f31b421098 100644
--- a/tools/bsdbox/Makefile.base
+++ b/tools/bsdbox/Makefile.base
@@ -2,7 +2,6 @@
# This builds a variety of "base" tools, useful for an embedded
# system.
#
-# $FreeBSD$
#
CRUNCH_PROGS_sbin+= dmesg sysctl init reboot
CRUNCH_PROGS_bin+= ls cat dd df cp hostname kill mkdir sleep ps
diff --git a/tools/bsdbox/Makefile.depend b/tools/bsdbox/Makefile.depend
index 5c55689d1148..4d727dd6d58f 100644
--- a/tools/bsdbox/Makefile.depend
+++ b/tools/bsdbox/Makefile.depend
@@ -1,4 +1,3 @@
-# $FreeBSD$
# Autogenerated - do NOT edit!
DIRDEPS = \
diff --git a/tools/bsdbox/Makefile.fs b/tools/bsdbox/Makefile.fs
index 5f6833723c91..fbf660d2aa34 100644
--- a/tools/bsdbox/Makefile.fs
+++ b/tools/bsdbox/Makefile.fs
@@ -1,7 +1,6 @@
#
# Filesystem related tools
#
-# $FreeBSD$
# mfs
CRUNCH_PROGS_sbin+= mdmfs mdconfig newfs
diff --git a/tools/bsdbox/Makefile.hostapd b/tools/bsdbox/Makefile.hostapd
index 631643188bf1..8c5d86d86704 100644
--- a/tools/bsdbox/Makefile.hostapd
+++ b/tools/bsdbox/Makefile.hostapd
@@ -1,7 +1,6 @@
#
# Build hostap/wpa_supplicant and supporting utilities.
#
-# $FreeBSD$
#
.include <src.opts.mk>
CRUNCH_PROGS_usr.sbin+= hostapd hostapd_cli
diff --git a/tools/bsdbox/Makefile.kld b/tools/bsdbox/Makefile.kld
index 96be779faeeb..ebf67527d0c2 100644
--- a/tools/bsdbox/Makefile.kld
+++ b/tools/bsdbox/Makefile.kld
@@ -1,6 +1,5 @@
#
# This builds the kld related programs.
#
-# $FreeBSD$
#
CRUNCH_PROGS_sbin+= kldload kldunload kldstat
diff --git a/tools/bsdbox/Makefile.login b/tools/bsdbox/Makefile.login
index a4574ec0abc4..e7e0305c165d 100644
--- a/tools/bsdbox/Makefile.login
+++ b/tools/bsdbox/Makefile.login
@@ -1,7 +1,6 @@
#
# This builds login and friends.
#
-# $FreeBSD$
#
CRUNCH_PROGS_libexec+= getty
diff --git a/tools/bsdbox/Makefile.net b/tools/bsdbox/Makefile.net
index ed39decd4ac7..960bc8a25335 100644
--- a/tools/bsdbox/Makefile.net
+++ b/tools/bsdbox/Makefile.net
@@ -1,7 +1,6 @@
#
# This builds network tools.
#
-# $FreeBSD$
#
CRUNCH_PROGS_sbin+= route ping
diff --git a/tools/bsdbox/Makefile.telnetd b/tools/bsdbox/Makefile.telnetd
deleted file mode 100644
index 5a77176fd3ac..000000000000
--- a/tools/bsdbox/Makefile.telnetd
+++ /dev/null
@@ -1,14 +0,0 @@
-# Build telnetd
-# Question - why is telnetds objects ending up in the srcdir? -adrian
-
-# This won't work yet - because telnetd relies on libtelnet.a which includes
-# kerberos support by default; building telnetd without kerberos support
-# requires the cross-build world to be built the same.
-# -adrian
-
-# $FreeBSD$
-
-CRUNCH_PROGS_libexec+= telnetd
-CRUNCH_PROGS_usr.bin+= telnet
-CRUNCH_LIBS+= -lkrb5 -lhx509 -lasn1 -lcom_err -lroken -ltelnetd
-# CRUNCH_BUILDOPTS_telnetd= MK_KERBEROS_SUPPORT=no
diff --git a/tools/bsdbox/Makefile.textproc b/tools/bsdbox/Makefile.textproc
index a913d4605975..1e24fe4f34d1 100644
--- a/tools/bsdbox/Makefile.textproc
+++ b/tools/bsdbox/Makefile.textproc
@@ -2,7 +2,6 @@
# This builds a variety of text processing tools that
# may be useful on an embedded device.
#
-# $FreeBSD$
#
# Sed
diff --git a/tools/bsdbox/README b/tools/bsdbox/README
index 2f63652d9799..de5bd4617639 100644
--- a/tools/bsdbox/README
+++ b/tools/bsdbox/README
@@ -1,4 +1,3 @@
-$FreeBSD$
This is a very cut down implementation of a "busybox" style binary
for FreeBSD.
diff --git a/tools/build/Makefile b/tools/build/Makefile
index ec9b11398ae9..e60c8694d56d 100644
--- a/tools/build/Makefile
+++ b/tools/build/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.PATH: ${.CURDIR}/../../include
@@ -34,7 +33,7 @@ _MACOS_SDK_DIR=${_XCODE_ROOT}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sd
.endif
HOST_INCLUDE_ROOT=${_MACOS_SDK_DIR}/usr/include
.if !exists(${HOST_INCLUDE_ROOT}/stdio.h)
-.error "You must install the macOS SDK (try xcode-select --install)"
+.error You must install the macOS SDK (try xcode-select --install)
.endif
.else
HOST_INCLUDE_ROOT=/usr/include
@@ -68,13 +67,17 @@ INCS+= stdlib.h
SRCS+= reallocarray.c
.endif
+.if exists(${HOST_INCLUDE_ROOT}/sys/stat.h)
_WITH_UTIMENS!= grep -c utimensat ${HOST_INCLUDE_ROOT}/sys/stat.h || true
+.else
+_WITH_UTIMENS= 0
+.endif
.if ${_WITH_UTIMENS} == 0
SYSINCS+= stat.h
SRCS+= futimens.c utimensat.c
.endif
-_WITH_EXPLICIT_BZERO!= grep -c explicit_bzero ${HOST_INCLUDE_ROOT}/strings.h || true
+_WITH_EXPLICIT_BZERO!= cat ${HOST_INCLUDE_ROOT}/strings.h ${HOST_INCLUDE_ROOT}/string.h | grep -c explicit_bzero || true
.if ${_WITH_EXPLICIT_BZERO} == 0
# .PATH: ${SRCTOP}/sys/libkern
# Adding sys/libkern to .PATH breaks building the cross-build compat library
@@ -121,7 +124,13 @@ CHACHA20INCSDIR= ${INCLUDEDIR}/crypto/chacha20
CHACHA20INCS+= ${SRCTOP}/sys/crypto/chacha20/_chacha.h \
${SRCTOP}/sys/crypto/chacha20/chacha.h
+.if ${MACHINE} == "host"
+_host_arch= ${_HOST_ARCH}
+.elif ${MACHINE} == "host32"
+_host_arch= ${_HOST_ARCH32}
+.else
_host_arch=${MACHINE}
+.endif
.if ${_host_arch} == "x86_64"
# bmake on Linux/mac often prints that instead of amd64
_host_arch=amd64
@@ -150,9 +159,18 @@ INCS+= ${SRCTOP}/include/nlist.h
SYSINCS+= ${SRCTOP}/sys/sys/imgact_aout.h
SYSINCS+= ${SRCTOP}/sys/sys/nlist_aout.h
+# macOS's bitstring lacks FreeBSD-specific additions used by makefs's ZFS code
+# and Linux doesn't have it at all. Older FreeBSD versions lack recent
+# additions.
+INCS+= ${SRCTOP}/include/bitstring.h
+SYSINCS+= ${SRCTOP}/sys/sys/bitstring.h
.if ${.MAKE.OS} != "FreeBSD"
.PATH: ${.CURDIR}/cross-build
+
+# Needed by our sys/types.h wrapper
+SYSINCS+= ${SRCTOP}/sys/sys/bitcount.h
+
# dbopen() behaves differently on Linux and FreeBSD so we ensure that we
# bootstrap the FreeBSD db code. The cross-build headers #define dbopen() to
# __freebsd_dbopen() so that we don't ever use the host version
@@ -178,9 +196,17 @@ SRCS+= strtonum.c merge.c heapsort.c reallocf.c
SRCS+= rpmatch.c
.if ${.MAKE.OS} == "Linux"
-# On Linux, glibc does not provide strlcpy,strlcat or strmode.
+# On Linux, glibc does not provide strmode. It only provides strlcpy
+# and strlcat from glibc 2.38.
.PATH: ${LIBC_SRCTOP}/string
-SRCS+= strlcpy.c strlcat.c strmode.c
+SRCS+= strmode.c
+# Assume if strlcpy exists so does strlcat
+_WITH_EXPLICIT_STRLCPY!= cat ${HOST_INCLUDE_ROOT}/strings.h ${HOST_INCLUDE_ROOT}/string.h | grep -c strlcpy || true
+.if ${_WITH_EXPLICIT_STRLCPY} == 0
+SRCS+= strlcpy.c strlcat.c
+.endif
+# On Linux, glibc provides ffs* but not fls*
+SRCS+= fls.c flsl.c flsll.c
# Compile the fgetln/fgetwln/closefrom fallback code from libbsd:
SRCS+= fgetln_fallback.c fgetwln_fallback.c closefrom.c
CFLAGS.closefrom.c+= -DSTDC_HEADERS -DHAVE_SYS_DIR_H -DHAVE_DIRENT_H \
@@ -189,7 +215,18 @@ CFLAGS.closefrom.c+= -DSTDC_HEADERS -DHAVE_SYS_DIR_H -DHAVE_DIRENT_H \
SRCS+= progname.c
# Stub implementations of fflagstostr/strtofflags
SRCS+= fflags.c
-.endif
+
+# macOS has a standalone cross-build implementation, but Linux can use the same
+# ELF one as FreeBSD
+SYSINCS+= ${SRCTOP}/sys/sys/linker_set.h
+
+.endif # ${MAKE.OS} == "Linux"
+
+.if ${.MAKE.OS} == "Darwin"
+# Standalone implementation of secure_getenv(), not available on MacOS.
+SRCS+= secure_getenv.c
+.endif # ${MAKE.OS} == "Darwin"
+
# Provide the same arc4random implementation on Linux/macOS
CFLAGS.arc4random.c+= -I${SRCTOP}/sys/crypto/chacha20 -D__isthreaded=1
SRCS+= arc4random.c arc4random_uniform.c
@@ -212,7 +249,7 @@ subr_capability.c: ${SRCTOP}/sys/kern/subr_capability.c
cp ${.ALLSRC} ${.TARGET}
SRCS+= subr_capability.c
CLEANFILES+= subr_capability.c
-.endif
+.endif # ${MAKE.OS} != "FreeBSD"
CASPERINC+= ${SRCTOP}/lib/libcasper/services/cap_fileargs/cap_fileargs.h
CASPERINC+= ${SRCTOP}/lib/libcasper/services/cap_net/cap_net.h
@@ -240,7 +277,7 @@ DISKINCS+= ${SRCTOP}/sys/sys/disk/bsd.h
# Needed to build config (since it uses libnv)
SYSINCS+= ${SRCTOP}/sys/sys/nv.h ${SRCTOP}/sys/sys/cnv.h \
- ${SRCTOP}/sys/sys/dnv.h
+ ${SRCTOP}/sys/sys/dnv.h ${SRCTOP}/sys/sys/nv_namespace.h
# Needed when bootstrapping ldd (since it uses DF_1_PIE)
SYSINCS+= ${SRCTOP}/sys/sys/elf32.h
@@ -263,6 +300,11 @@ SYSINCS+= ${SRCTOP}/sys/sys/fnv_hash.h
# opensolaris compatibility
INCS+= ${SRCTOP}/include/elf.h
SYSINCS+= ${SRCTOP}/sys/sys/elf.h
+SYSINCS+= ${SRCTOP}/sys/sys/ctf.h
+# for kbdcontrol:
+SYSINCS+= ${SRCTOP}/sys/sys/kbio.h
+# for kldxref:
+SYSINCS+= ${SRCTOP}/sys/sys/module.h
# We want to run the build with only ${WORLDTMP} in $PATH to ensure we don't
# accidentally run tools that are incompatible but happen to be in $PATH.
@@ -285,28 +327,55 @@ _host_tools_to_symlink= basename bzip2 bunzip2 chmod chown cmp comm cp date dd \
_make_abs!= which "${MAKE}"
_host_abs_tools_to_symlink= ${_make_abs}:make ${_make_abs}:bmake
+_LINK_HOST_TOOL= ln -sfn
+
.if ${.MAKE.OS} == "FreeBSD"
# When building on FreeBSD we always copy the host tools instead of linking
# into WORLDTMP to avoid issues with incompatible libraries (see r364030).
# Note: we could create links if we don't intend to update the current machine.
-_COPY_HOST_TOOL=cp -pf
+_COPY_HOST_TOOL= cp -pf
.else
# However, this is not necessary on Linux/macOS. Additionally, copying the host
# tools to another directory with cp -p results in freezes on macOS Big Sur for
# some unknown reason. It can also break building inside docker containers if
# there are ACLs on shared volumes.
-_COPY_HOST_TOOL=ln -sfn
-_make_abs!= which "${MAKE}"
-_host_abs_tools_to_symlink+= ${_make_abs}:make ${_make_abs}:bmake
+_COPY_HOST_TOOL= ${_LINK_HOST_TOOL}
+
.if ${.MAKE.OS} == "Darwin"
# /usr/bin/cpp may invoke xcrun:
-_host_tools_to_symlink+=xcrun
+_host_tools_to_symlink+= xcrun
.endif # ${.MAKE.OS} == "Darwin"
-# On Ubuntu /bin/sh is dash which is totally useless. Let's just link bash
-# as the build sh since that will work fine.
+
+# On Ubuntu /bin/sh is dash which is totally useless, and the same for modern
+# macOS. Let's just link bash as the build sh since that will work fine.
_host_abs_tools_to_symlink+= /bin/bash:sh
-_host_tools_to_symlink:=${_host_tools_to_symlink:Nsh}
+_host_tools_to_symlink:= ${_host_tools_to_symlink:Nsh}
+.endif
+
+# We also need to symlink any non-absolute toolchain commands. Clang finds its
+# resource directory relative to itself, so CC/CXX/CPP cannot be copied, and
+# there should be no concerns about installing over the current system since we
+# don't use the toolchain during install, so that's not an issue. However,
+# before Clang 13 there was no symlink detection for FreeBSD so that was broken
+# in the same way as copying (https://reviews.llvm.org/D103346), thus create a
+# wrapper script for each to work around this and behave like a symlink.
+# Remove this hack and just use a symlink once Clang 13 can be assumed.
+# For consistency, we use the same strategy for LD.
+.include <bsd.compiler.mk>
+.if ${.MAKE.OS} == "FreeBSD" && ${COMPILER_TYPE} == "clang" && \
+ ${COMPILER_VERSION} < 130000
+_WRAP_HOST_TOOL= sh -c "printf '\#!/bin/sh\nexec \"\%s\" \"\$$@\"\n' \"\$$0\" > \"\$$1\" && chmod +x \"\$$1\""
+.else
+_WRAP_HOST_TOOL= ${_LINK_HOST_TOOL}
+.endif
+.for var in CC CXX CPP LD
+.for X in $${_empty_var_} X
+.if !empty(${X}${var}) && !${${X}${var}:[1]:M/*} && \
+ !${_toolchain_tools_to_symlink:U:M${${X}${var}:[1]}}
+_toolchain_tools_to_symlink+= ${${X}${var}:[1]}
.endif
+.endfor
+.endfor
host-symlinks:
@echo "Linking host tools into ${DESTDIR}/bin"
@@ -323,7 +392,7 @@ host-symlinks:
@source_path="${_tool:S/:/ /:[1]}"; \
target_path="${DESTDIR}/bin/${_tool:S/:/ /:[2]}"; \
if [ ! -e "$${source_path}" ] ; then \
- echo "Host tool '${src_path}' is missing"; false; \
+ echo "Host tool '$${source_path}' is missing"; false; \
fi; \
rm -f "$${target_path}"; \
${_COPY_HOST_TOOL} "$${source_path}" "$${target_path}"
@@ -332,18 +401,27 @@ host-symlinks:
rm -f ${DESTDIR}/usr/libexec/flua
${_COPY_HOST_TOOL} /usr/libexec/flua ${DESTDIR}/usr/libexec/flua
.endif
+.for _tool in ${_toolchain_tools_to_symlink}
+ @export PATH=$${PATH}:/usr/local/bin; \
+ source_path=`which ${_tool} || echo /dev/null/no/such`; \
+ if [ ! -e "$${source_path}" ] ; then \
+ echo "Cannot find host tool '${_tool}' in PATH ($$PATH)." >&2; false; \
+ fi; \
+ rm -f "${DESTDIR}/bin/${_tool}"; \
+ ${_WRAP_HOST_TOOL} "$${source_path}" "${DESTDIR}/bin/${_tool}"
+.endfor
# Create all the directories that are needed during the legacy, bootstrap-tools
# and cross-tools stages. We do this here using mkdir since mtree may not exist
# yet (this happens if we are crossbuilding from Linux/Mac).
INSTALLDIR_LIST= \
bin \
- lib/casper \
lib/geom \
usr/include/casper \
usr/include/private/ucl \
usr/include/private/zstd \
usr/lib \
+ usr/libdata/pkgconfig \
usr/libexec
installdirs:
diff --git a/tools/build/Makefile.depend b/tools/build/Makefile.depend
index f80275d86ab1..11aba52f82cf 100644
--- a/tools/build/Makefile.depend
+++ b/tools/build/Makefile.depend
@@ -1,4 +1,3 @@
-# $FreeBSD$
# Autogenerated - do NOT edit!
DIRDEPS = \
diff --git a/tools/build/beinstall.sh b/tools/build/beinstall.sh
index 46c65d87e61a..766a3a03739f 100755
--- a/tools/build/beinstall.sh
+++ b/tools/build/beinstall.sh
@@ -24,7 +24,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
##
# Install a boot environment using the current FreeBSD source tree.
@@ -181,7 +180,7 @@ MERGEMASTER_CMD="${srcdir}/usr.sbin/mergemaster/mergemaster.sh"
# May be a worktree, in which case .git is a file, not a directory.
if [ -e .git ] ; then
- commit_time=$(git show --format='%ct' 2>/dev/null | head -1)
+ commit_time=$(git show -s --format='%ct' 2>/dev/null)
[ $? -ne 0 ] && errx "Can't lookup git commit timestamp"
commit_ts=$(date -r ${commit_time} '+%Y%m%d.%H%M%S')
elif [ -d .svn ] ; then
diff --git a/tools/build/bootstrap-m4/Makefile b/tools/build/bootstrap-m4/Makefile
index d65dece3fd15..c0b82b307d5d 100644
--- a/tools/build/bootstrap-m4/Makefile
+++ b/tools/build/bootstrap-m4/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
# Build a bootstrap version of m4 (needed in order to build libelf and lex)
.PATH: ${SRCTOP}/usr.bin/m4 ${.CURDIR}
diff --git a/tools/build/bootstrap-m4/inittokenizer.c b/tools/build/bootstrap-m4/inittokenizer.c
index a014012ad756..f64eddaf953b 100644
--- a/tools/build/bootstrap-m4/inittokenizer.c
+++ b/tools/build/bootstrap-m4/inittokenizer.c
@@ -482,8 +482,6 @@ char *yytext;
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $FreeBSD$
*/
#include "parser.h"
#include <assert.h>
diff --git a/tools/build/check-links.sh b/tools/build/check-links.sh
index 7dc96fa5f082..a4d18e00f5f3 100755
--- a/tools/build/check-links.sh
+++ b/tools/build/check-links.sh
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
libkey() {
libkey="lib_symbols_$1"
diff --git a/tools/build/checkstyle9.pl b/tools/build/checkstyle9.pl
new file mode 100755
index 000000000000..df9ec2bbd7c1
--- /dev/null
+++ b/tools/build/checkstyle9.pl
@@ -0,0 +1,2696 @@
+#!/usr/bin/env perl
+# (c) 2001, Dave Jones. (the file handling bit)
+# (c) 2005, Joel Schopp <jschopp@austin.ibm.com> (the ugly bit)
+# (c) 2007,2008, Andy Whitcroft <apw@uk.ibm.com> (new conditions, test suite)
+# (c) 2008-2010 Andy Whitcroft <apw@canonical.com>
+# Licensed under the terms of the GNU GPL License version 2
+
+use strict;
+use warnings;
+use Term::ANSIColor qw(:constants);
+
+my $P = $0;
+$P =~ s@.*/@@g;
+
+our $SrcFile = qr{\.(?:h|c|cpp|s|S|pl|py|sh)$};
+
+my $V = '0.31';
+
+use Getopt::Long qw(:config no_auto_abbrev);
+
+my $quiet = 0;
+my $tree = 1;
+my $chk_signoff = 1;
+my $chk_patch = undef;
+my $chk_branch = undef;
+my $tst_only;
+my $emacs = 0;
+my $github = 0;
+my $terse = 0;
+my $file = undef;
+my $color = "auto";
+my $no_warnings = 0;
+my $summary = 1;
+my $mailback = 0;
+my $summary_file = 0;
+my $root;
+my %debug;
+my $help = 0;
+
+sub help {
+ my ($exitcode) = @_;
+
+ print << "EOM";
+Usage:
+
+ $P [OPTION]... [FILE]...
+ $P [OPTION]... [GIT-REV-LIST]
+
+Version: $V
+
+Options:
+ -q, --quiet quiet
+ --patch treat FILE as patchfile
+ --branch treat args as GIT revision list
+ --emacs emacs compile window format
+ --terse one line per report
+ -f, --file treat FILE as regular source file
+ --strict fail if only warnings are found
+ --no-summary suppress the per-file summary
+ --mailback only produce a report in case of warnings/errors
+ --summary-file include the filename in summary
+ --debug KEY=[0|1] turn on/off debugging of KEY, where KEY is one of
+ 'values', 'possible', 'type', and 'attr' (default
+ is all off)
+ --test-only=WORD report only warnings/errors containing WORD
+ literally
+ --color[=WHEN] Use colors 'always', 'never', or only when output
+ is a terminal ('auto'). Default is 'auto'.
+ -h, --help, --version display this help and exit
+
+When FILE is - read standard input.
+EOM
+
+ exit($exitcode);
+}
+
+# Use at your own risk
+print "\n", MAGENTA, "WARNING:", RESET, " This code is highly experimental ... likely isn't a great style(9) match yet\n\n";
+
+# Perl's Getopt::Long allows options to take optional arguments after a space.
+# Prevent --color by itself from consuming other arguments
+foreach (@ARGV) {
+ if ($_ eq "--color" || $_ eq "-color") {
+ $_ = "--color=$color";
+ }
+}
+
+GetOptions(
+ 'q|quiet+' => \$quiet,
+ 'tree!' => \$tree,
+ 'signoff!' => \$chk_signoff,
+ 'patch!' => \$chk_patch,
+ 'branch!' => \$chk_branch,
+ 'emacs!' => \$emacs,
+ 'github!' => \$github,
+ 'terse!' => \$terse,
+ 'f|file!' => \$file,
+ 'strict!' => \$no_warnings,
+ 'root=s' => \$root,
+ 'summary!' => \$summary,
+ 'mailback!' => \$mailback,
+ 'summary-file!' => \$summary_file,
+
+ 'debug=s' => \%debug,
+ 'test-only=s' => \$tst_only,
+ 'color=s' => \$color,
+ 'no-color' => sub { $color = 'never'; },
+ 'h|help' => \$help,
+ 'version' => \$help
+) or help(1);
+
+help(0) if ($help);
+
+my $exit = 0;
+
+if ($#ARGV < 0) {
+ print "$P: no input files\n";
+ exit(1);
+}
+
+if (!defined $chk_branch && !defined $chk_patch && !defined $file) {
+ $chk_branch = $ARGV[0] =~ /.\.\./ ? 1 : 0;
+ $file = $ARGV[0] =~ /$SrcFile/ ? 1 : 0;
+ $chk_patch = $chk_branch || $file ? 0 : 1;
+} elsif (!defined $chk_branch && !defined $chk_patch) {
+ if ($file) {
+ $chk_branch = $chk_patch = 0;
+ } else {
+ $chk_branch = $ARGV[0] =~ /.\.\./ ? 1 : 0;
+ $chk_patch = $chk_branch ? 0 : 1;
+ }
+} elsif (!defined $chk_branch && !defined $file) {
+ if ($chk_patch) {
+ $chk_branch = $file = 0;
+ } else {
+ $chk_branch = $ARGV[0] =~ /.\.\./ ? 1 : 0;
+ $file = $chk_branch ? 0 : 1;
+ }
+} elsif (!defined $chk_patch && !defined $file) {
+ if ($chk_branch) {
+ $chk_patch = $file = 0;
+ } else {
+ $file = $ARGV[0] =~ /$SrcFile/ ? 1 : 0;
+ $chk_patch = $file ? 0 : 1;
+ }
+} elsif (!defined $chk_branch) {
+ $chk_branch = $chk_patch || $file ? 0 : 1;
+} elsif (!defined $chk_patch) {
+ $chk_patch = $chk_branch || $file ? 0 : 1;
+} elsif (!defined $file) {
+ $file = $chk_patch || $chk_branch ? 0 : 1;
+}
+
+if (($chk_patch && $chk_branch) ||
+ ($chk_patch && $file) ||
+ ($chk_branch && $file)) {
+ die "Only one of --file, --branch, --patch is permitted\n";
+}
+if (!$chk_patch && !$chk_branch && !$file) {
+ die "One of --file, --branch, --patch is required\n";
+}
+
+if ($color =~ /^always$/i) {
+ $color = 1;
+} elsif ($color =~ /^never$/i) {
+ $color = 0;
+} elsif ($color =~ /^auto$/i) {
+ $color = (-t STDOUT);
+} else {
+ die "Invalid color mode: $color\n";
+}
+
+my $dbg_values = 0;
+my $dbg_possible = 0;
+my $dbg_adv_dcs = 0;
+my $dbg_adv_checking = 0;
+my $dbg_adv_apw = 0;
+for my $key (keys %debug) {
+ ## no critic
+ eval "\${dbg_$key} = '$debug{$key}';";
+ die "$@" if ($@);
+}
+
+my $rpt_cleaners = 0;
+
+if ($terse) {
+ $emacs = 1;
+ $quiet++;
+}
+
+my $emitted_corrupt = 0;
+
+our $Ident = qr{
+ [A-Za-z_][A-Za-z\d_]*
+ (?:\s*\#\#\s*[A-Za-z_][A-Za-z\d_]*)*
+ }x;
+our $Storage = qr{extern|static|asmlinkage};
+our $Sparse = qr{
+ __force
+ }x;
+
+# Notes to $Attribute:
+our $Attribute = qr{
+ const|
+ volatile|
+ QEMU_NORETURN|
+ QEMU_WARN_UNUSED_RESULT|
+ QEMU_SENTINEL|
+ QEMU_PACKED|
+ GCC_FMT_ATTR
+ }x;
+our $Modifier;
+our $Inline = qr{inline};
+our $Member = qr{->$Ident|\.$Ident|\[[^]]*\]};
+our $Lval = qr{$Ident(?:$Member)*};
+
+our $Constant = qr{(?:[0-9]+|0x[0-9a-fA-F]+)[UL]*};
+our $Assignment = qr{(?:\*\=|/=|%=|\+=|-=|<<=|>>=|&=|\^=|\|=|=)};
+our $Compare = qr{<=|>=|==|!=|<|>};
+our $Operators = qr{
+ <=|>=|==|!=|
+ =>|->|<<|>>|<|>|!|~|
+ &&|\|\||,|\^|\+\+|--|&|\||\+|-|\*|\/|%
+ }x;
+
+our $NonptrType;
+our $Type;
+our $Declare;
+
+our $NON_ASCII_UTF8 = qr{
+ [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
+ | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
+ | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
+ | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
+ | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
+ | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
+ | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
+}x;
+
+our $UTF8 = qr{
+ [\x09\x0A\x0D\x20-\x7E] # ASCII
+ | $NON_ASCII_UTF8
+}x;
+
+# some readers default to ISO-8859-1 when showing email source. detect
+# when UTF-8 is incorrectly interpreted as ISO-8859-1 and reencoded back.
+# False positives are possible but very unlikely.
+our $UTF8_MOJIBAKE = qr{
+ \xC3[\x82-\x9F] \xC2[\x80-\xBF] # c2-df 80-bf
+ | \xC3\xA0 \xC2[\xA0-\xBF] \xC2[\x80-\xBF] # e0 a0-bf 80-bf
+ | \xC3[\xA1-\xAC\xAE\xAF] (?: \xC2[\x80-\xBF]){2} # e1-ec/ee/ef 80-bf 80-bf
+ | \xC3\xAD \xC2[\x80-\x9F] \xC2[\x80-\xBF] # ed 80-9f 80-bf
+ | \xC3\xB0 \xC2[\x90-\xBF] (?: \xC2[\x80-\xBF]){2} # f0 90-bf 80-bf 80-bf
+ | \xC3[\xB1-\xB3] (?: \xC2[\x80-\xBF]){3} # f1-f3 80-bf 80-bf 80-bf
+ | \xC3\xB4 \xC2[\x80-\x8F] (?: \xC2[\x80-\xBF]){2} # f4 80-b8 80-bf 80-bf
+}x;
+
+# There are still some false positives, but this catches most
+# common cases.
+our $typeTypedefs = qr{(?x:
+ (?![KMGTPE]iB) # IEC binary prefix (do not match)
+ [A-Z][A-Z\d_]*[a-z][A-Za-z\d_]* # camelcase
+ | [A-Z][A-Z\d_]*AIOCB # all uppercase
+ | [A-Z][A-Z\d_]*CPU # all uppercase
+ | QEMUBH # all uppercase
+)};
+
+our @typeList = (
+ qr{void},
+ qr{(?:unsigned\s+)?char},
+ qr{(?:unsigned\s+)?short},
+ qr{(?:unsigned\s+)?int},
+ qr{(?:unsigned\s+)?long},
+ qr{(?:unsigned\s+)?long\s+int},
+ qr{(?:unsigned\s+)?long\s+long},
+ qr{(?:unsigned\s+)?long\s+long\s+int},
+ qr{unsigned},
+ qr{float},
+ qr{double},
+ qr{bool},
+ qr{struct\s+$Ident},
+ qr{union\s+$Ident},
+ qr{enum\s+$Ident},
+ qr{${Ident}_t},
+ qr{${Ident}_handler},
+ qr{${Ident}_handler_fn},
+ qr{target_(?:u)?long},
+ qr{hwaddr},
+);
+
+# This can be modified by sub possible. Since it can be empty, be careful
+# about regexes that always match, because they can cause infinite loops.
+our @modifierList = (
+);
+
+sub build_types {
+ my $all = "(?x: \n" . join("|\n ", @typeList) . "\n)";
+ if (@modifierList > 0) {
+ my $mods = "(?x: \n" . join("|\n ", @modifierList) . "\n)";
+ $Modifier = qr{(?:$Attribute|$Sparse|$mods)};
+ } else {
+ $Modifier = qr{(?:$Attribute|$Sparse)};
+ }
+ $NonptrType = qr{
+ (?:$Modifier\s+|const\s+)*
+ (?:
+ (?:typeof|__typeof__)\s*\(\s*\**\s*$Ident\s*\)|
+ (?:$typeTypedefs\b)|
+ (?:${all}\b)
+ )
+ (?:\s+$Modifier|\s+const)*
+ }x;
+ $Type = qr{
+ $NonptrType
+ (?:[\s\*]+\s*const|[\s\*]+|(?:\s*\[\s*\])+)?
+ (?:\s+$Inline|\s+$Modifier)*
+ }x;
+ $Declare = qr{(?:$Storage\s+)?$Type};
+}
+build_types();
+
+$chk_signoff = 0 if ($file);
+
+my @rawlines = ();
+my @lines = ();
+my $vname;
+if ($chk_branch) {
+ my @patches;
+ my %git_commits = ();
+ my $HASH;
+ open($HASH, "-|", "git", "log", "--reverse", "--no-merges", "--format=%H %s", $ARGV[0]) ||
+ die "$P: git log --reverse --no-merges --format='%H %s' $ARGV[0] failed - $!\n";
+
+ for my $line (<$HASH>) {
+ $line =~ /^([0-9a-fA-F]{40,40}) (.*)$/;
+ next if (!defined($1) || !defined($2));
+ my $sha1 = $1;
+ my $subject = $2;
+ push(@patches, $sha1);
+ $git_commits{$sha1} = $subject;
+ }
+
+ close $HASH;
+
+ die "$P: no revisions returned for revlist '$ARGV[0]'\n"
+ unless @patches;
+
+ my $i = 1;
+ my $num_patches = @patches;
+ for my $hash (@patches) {
+ my $FILE;
+ open($FILE, '-|', "git", "show", "--patch-with-stat", $hash) ||
+ die "$P: git show $hash - $!\n";
+ while (<$FILE>) {
+ chomp;
+ push(@rawlines, $_);
+ }
+ close($FILE);
+ $vname = substr($hash, 0, 12) . ' (' . $git_commits{$hash} . ')';
+ if ($num_patches > 1 && $quiet == 0) {
+ my $prefix = "$i/$num_patches";
+ $prefix = BLUE . BOLD . $prefix . RESET if $color;
+ print "$prefix Checking commit $vname\n";
+ $vname = "Patch $i/$num_patches";
+ } else {
+ $vname = "Commit " . $vname;
+ }
+ if (!process($hash)) {
+ $exit = 1;
+ print "\n" if ($num_patches > 1 && $quiet == 0);
+ }
+ @rawlines = ();
+ @lines = ();
+ $i++;
+ }
+} else {
+ for my $filename (@ARGV) {
+ my $FILE;
+ if ($file) {
+ open($FILE, '-|', "diff -u /dev/null $filename") ||
+ die "$P: $filename: diff failed - $!\n";
+ } elsif ($filename eq '-') {
+ open($FILE, '<&STDIN');
+ } else {
+ open($FILE, '<', "$filename") ||
+ die "$P: $filename: open failed - $!\n";
+ }
+ if ($filename eq '-') {
+ $vname = 'Your patch';
+ } else {
+ $vname = $filename;
+ }
+ print "Checking $filename...\n" if @ARGV > 1 && $quiet == 0;
+ while (<$FILE>) {
+ chomp;
+ push(@rawlines, $_);
+ }
+ close($FILE);
+ if (!process($filename)) {
+ $exit = 1;
+ }
+ @rawlines = ();
+ @lines = ();
+ }
+}
+
+exit($exit);
+
+sub top_of_kernel_tree {
+ my ($root) = @_;
+
+ my @tree_check = (
+ "Makefile.inc1", "README.md", "sys",
+ "usr.sbin"
+ );
+
+ foreach my $check (@tree_check) {
+ if (! -e $root . '/' . $check) {
+ return 0;
+ }
+ }
+ return 1;
+}
+
+sub expand_tabs {
+ my ($str) = @_;
+
+ my $res = '';
+ my $n = 0;
+ for my $c (split(//, $str)) {
+ if ($c eq "\t") {
+ $res .= ' ';
+ $n++;
+ for (; ($n % 8) != 0; $n++) {
+ $res .= ' ';
+ }
+ next;
+ }
+ $res .= $c;
+ $n++;
+ }
+
+ return $res;
+}
+sub copy_spacing {
+ (my $res = shift) =~ tr/\t/ /c;
+ return $res;
+}
+
+sub line_stats {
+ my ($line) = @_;
+
+ # Drop the diff line leader and expand tabs
+ $line =~ s/^.//;
+ $line = expand_tabs($line);
+
+ # Pick the indent from the front of the line.
+ my ($white) = ($line =~ /^(\s*)/);
+
+ return (length($line), length($white));
+}
+
+my $sanitise_quote = '';
+
+sub sanitise_line_reset {
+ my ($in_comment) = @_;
+
+ if ($in_comment) {
+ $sanitise_quote = '*/';
+ } else {
+ $sanitise_quote = '';
+ }
+}
+sub sanitise_line {
+ my ($line) = @_;
+
+ my $res = '';
+ my $l = '';
+
+ my $qlen = 0;
+ my $off = 0;
+ my $c;
+
+ # Always copy over the diff marker.
+ $res = substr($line, 0, 1);
+
+ for ($off = 1; $off < length($line); $off++) {
+ $c = substr($line, $off, 1);
+
+ # Comments we are wacking completely including the begin
+ # and end, all to $;.
+ if ($sanitise_quote eq '' && substr($line, $off, 2) eq '/*') {
+ $sanitise_quote = '*/';
+
+ substr($res, $off, 2, "$;$;");
+ $off++;
+ next;
+ }
+ if ($sanitise_quote eq '*/' && substr($line, $off, 2) eq '*/') {
+ $sanitise_quote = '';
+ substr($res, $off, 2, "$;$;");
+ $off++;
+ next;
+ }
+ if ($sanitise_quote eq '' && substr($line, $off, 2) eq '//') {
+ $sanitise_quote = '//';
+
+ substr($res, $off, 2, $sanitise_quote);
+ $off++;
+ next;
+ }
+
+ # A \ in a string means ignore the next character.
+ if (($sanitise_quote eq "'" || $sanitise_quote eq '"') &&
+ $c eq "\\") {
+ substr($res, $off, 2, 'XX');
+ $off++;
+ next;
+ }
+ # Regular quotes.
+ if ($c eq "'" || $c eq '"') {
+ if ($sanitise_quote eq '') {
+ $sanitise_quote = $c;
+
+ substr($res, $off, 1, $c);
+ next;
+ } elsif ($sanitise_quote eq $c) {
+ $sanitise_quote = '';
+ }
+ }
+
+ #print "c<$c> SQ<$sanitise_quote>\n";
+ if ($off != 0 && $sanitise_quote eq '*/' && $c ne "\t") {
+ substr($res, $off, 1, $;);
+ } elsif ($off != 0 && $sanitise_quote eq '//' && $c ne "\t") {
+ substr($res, $off, 1, $;);
+ } elsif ($off != 0 && $sanitise_quote && $c ne "\t") {
+ substr($res, $off, 1, 'X');
+ } else {
+ substr($res, $off, 1, $c);
+ }
+ }
+
+ if ($sanitise_quote eq '//') {
+ $sanitise_quote = '';
+ }
+
+ # The pathname on a #include may be surrounded by '<' and '>'.
+ if ($res =~ /^.\s*\#\s*include\s+\<(.*)\>/) {
+ my $clean = 'X' x length($1);
+ $res =~ s@\<.*\>@<$clean>@;
+
+ # The whole of a #error is a string.
+ } elsif ($res =~ /^.\s*\#\s*(?:error|warning)\s+(.*)\b/) {
+ my $clean = 'X' x length($1);
+ $res =~ s@(\#\s*(?:error|warning)\s+).*@$1$clean@;
+ }
+
+ return $res;
+}
+
+sub ctx_statement_block {
+ my ($linenr, $remain, $off) = @_;
+ my $line = $linenr - 1;
+ my $blk = '';
+ my $soff = $off;
+ my $coff = $off - 1;
+ my $coff_set = 0;
+
+ my $loff = 0;
+
+ my $type = '';
+ my $level = 0;
+ my @stack = ();
+ my $p;
+ my $c;
+ my $len = 0;
+
+ my $remainder;
+ while (1) {
+ @stack = (['', 0]) if ($#stack == -1);
+
+ #warn "CSB: blk<$blk> remain<$remain>\n";
+ # If we are about to drop off the end, pull in more
+ # context.
+ if ($off >= $len) {
+ for (; $remain > 0; $line++) {
+ last if (!defined $lines[$line]);
+ next if ($lines[$line] =~ /^-/);
+ $remain--;
+ $loff = $len;
+ $blk .= $lines[$line] . "\n";
+ $len = length($blk);
+ $line++;
+ last;
+ }
+ # Bail if there is no further context.
+ #warn "CSB: blk<$blk> off<$off> len<$len>\n";
+ if ($off >= $len) {
+ last;
+ }
+ }
+ $p = $c;
+ $c = substr($blk, $off, 1);
+ $remainder = substr($blk, $off);
+
+ #warn "CSB: c<$c> type<$type> level<$level> remainder<$remainder> coff_set<$coff_set>\n";
+
+ # Handle nested #if/#else.
+ if ($remainder =~ /^#\s*(?:ifndef|ifdef|if)\s/) {
+ push(@stack, [ $type, $level ]);
+ } elsif ($remainder =~ /^#\s*(?:else|elif)\b/) {
+ ($type, $level) = @{$stack[$#stack - 1]};
+ } elsif ($remainder =~ /^#\s*endif\b/) {
+ ($type, $level) = @{pop(@stack)};
+ }
+
+ # Statement ends at the ';' or a close '}' at the
+ # outermost level.
+ if ($level == 0 && $c eq ';') {
+ last;
+ }
+
+ # An else is really a conditional as long as its not else if
+ if ($level == 0 && $coff_set == 0 &&
+ (!defined($p) || $p =~ /(?:\s|\}|\+)/) &&
+ $remainder =~ /^(else)(?:\s|{)/ &&
+ $remainder !~ /^else\s+if\b/) {
+ $coff = $off + length($1) - 1;
+ $coff_set = 1;
+ #warn "CSB: mark coff<$coff> soff<$soff> 1<$1>\n";
+ #warn "[" . substr($blk, $soff, $coff - $soff + 1) . "]\n";
+ }
+
+ if (($type eq '' || $type eq '(') && $c eq '(') {
+ $level++;
+ $type = '(';
+ }
+ if ($type eq '(' && $c eq ')') {
+ $level--;
+ $type = ($level != 0)? '(' : '';
+
+ if ($level == 0 && $coff < $soff) {
+ $coff = $off;
+ $coff_set = 1;
+ #warn "CSB: mark coff<$coff>\n";
+ }
+ }
+ if (($type eq '' || $type eq '{') && $c eq '{') {
+ $level++;
+ $type = '{';
+ }
+ if ($type eq '{' && $c eq '}') {
+ $level--;
+ $type = ($level != 0)? '{' : '';
+
+ if ($level == 0) {
+ if (substr($blk, $off + 1, 1) eq ';') {
+ $off++;
+ }
+ last;
+ }
+ }
+ $off++;
+ }
+ # We are truly at the end, so shuffle to the next line.
+ if ($off == $len) {
+ $loff = $len + 1;
+ $line++;
+ $remain--;
+ }
+
+ my $statement = substr($blk, $soff, $off - $soff + 1);
+ my $condition = substr($blk, $soff, $coff - $soff + 1);
+
+ #warn "STATEMENT<$statement>\n";
+ #warn "CONDITION<$condition>\n";
+
+ #print "coff<$coff> soff<$off> loff<$loff>\n";
+
+ return ($statement, $condition,
+ $line, $remain + 1, $off - $loff + 1, $level);
+}
+
+sub statement_lines {
+ my ($stmt) = @_;
+
+ # Strip the diff line prefixes and rip blank lines at start and end.
+ $stmt =~ s/(^|\n)./$1/g;
+ $stmt =~ s/^\s*//;
+ $stmt =~ s/\s*$//;
+
+ my @stmt_lines = ($stmt =~ /\n/g);
+
+ return $#stmt_lines + 2;
+}
+
+sub statement_rawlines {
+ my ($stmt) = @_;
+
+ my @stmt_lines = ($stmt =~ /\n/g);
+
+ return $#stmt_lines + 2;
+}
+
+sub statement_block_size {
+ my ($stmt) = @_;
+
+ $stmt =~ s/(^|\n)./$1/g;
+ $stmt =~ s/^\s*\{//;
+ $stmt =~ s/}\s*$//;
+ $stmt =~ s/^\s*//;
+ $stmt =~ s/\s*$//;
+
+ my @stmt_lines = ($stmt =~ /\n/g);
+ my @stmt_statements = ($stmt =~ /;/g);
+
+ my $stmt_lines = $#stmt_lines + 2;
+ my $stmt_statements = $#stmt_statements + 1;
+
+ if ($stmt_lines > $stmt_statements) {
+ return $stmt_lines;
+ } else {
+ return $stmt_statements;
+ }
+}
+
+sub ctx_statement_full {
+ my ($linenr, $remain, $off) = @_;
+ my ($statement, $condition, $level);
+
+ my (@chunks);
+
+ # Grab the first conditional/block pair.
+ ($statement, $condition, $linenr, $remain, $off, $level) =
+ ctx_statement_block($linenr, $remain, $off);
+ #print "F: c<$condition> s<$statement> remain<$remain>\n";
+ push(@chunks, [ $condition, $statement ]);
+ if (!($remain > 0 && $condition =~ /^\s*(?:\n[+-])?\s*(?:if|else|do)\b/s)) {
+ return ($level, $linenr, @chunks);
+ }
+
+ # Pull in the following conditional/block pairs and see if they
+ # could continue the statement.
+ for (;;) {
+ ($statement, $condition, $linenr, $remain, $off, $level) =
+ ctx_statement_block($linenr, $remain, $off);
+ #print "C: c<$condition> s<$statement> remain<$remain>\n";
+ last if (!($remain > 0 && $condition =~ /^(?:\s*\n[+-])*\s*(?:else|do)\b/s));
+ #print "C: push\n";
+ push(@chunks, [ $condition, $statement ]);
+ }
+
+ return ($level, $linenr, @chunks);
+}
+
+sub ctx_block_get {
+ my ($linenr, $remain, $outer, $open, $close, $off) = @_;
+ my $line;
+ my $start = $linenr - 1;
+ my $blk = '';
+ my @o;
+ my @c;
+ my @res = ();
+
+ my $level = 0;
+ my @stack = ($level);
+ for ($line = $start; $remain > 0; $line++) {
+ next if ($rawlines[$line] =~ /^-/);
+ $remain--;
+
+ $blk .= $rawlines[$line];
+
+ # Handle nested #if/#else.
+ if ($lines[$line] =~ /^.\s*#\s*(?:ifndef|ifdef|if)\s/) {
+ push(@stack, $level);
+ } elsif ($lines[$line] =~ /^.\s*#\s*(?:else|elif)\b/) {
+ $level = $stack[$#stack - 1];
+ } elsif ($lines[$line] =~ /^.\s*#\s*endif\b/) {
+ $level = pop(@stack);
+ }
+
+ foreach my $c (split(//, $lines[$line])) {
+ ##print "C<$c>L<$level><$open$close>O<$off>\n";
+ if ($off > 0) {
+ $off--;
+ next;
+ }
+
+ if ($c eq $close && $level > 0) {
+ $level--;
+ last if ($level == 0);
+ } elsif ($c eq $open) {
+ $level++;
+ }
+ }
+
+ if (!$outer || $level <= 1) {
+ push(@res, $rawlines[$line]);
+ }
+
+ last if ($level == 0);
+ }
+
+ return ($level, @res);
+}
+sub ctx_block_outer {
+ my ($linenr, $remain) = @_;
+
+ my ($level, @r) = ctx_block_get($linenr, $remain, 1, '{', '}', 0);
+ return @r;
+}
+sub ctx_block {
+ my ($linenr, $remain) = @_;
+
+ my ($level, @r) = ctx_block_get($linenr, $remain, 0, '{', '}', 0);
+ return @r;
+}
+sub ctx_statement {
+ my ($linenr, $remain, $off) = @_;
+
+ my ($level, @r) = ctx_block_get($linenr, $remain, 0, '(', ')', $off);
+ return @r;
+}
+sub ctx_block_level {
+ my ($linenr, $remain) = @_;
+
+ return ctx_block_get($linenr, $remain, 0, '{', '}', 0);
+}
+sub ctx_statement_level {
+ my ($linenr, $remain, $off) = @_;
+
+ return ctx_block_get($linenr, $remain, 0, '(', ')', $off);
+}
+
+sub ctx_locate_comment {
+ my ($first_line, $end_line) = @_;
+
+ # Catch a comment on the end of the line itself.
+ my ($current_comment) = ($rawlines[$end_line - 1] =~ m@.*(/\*.*\*/)\s*(?:\\\s*)?$@);
+ return $current_comment if (defined $current_comment);
+
+ # Look through the context and try and figure out if there is a
+ # comment.
+ my $in_comment = 0;
+ $current_comment = '';
+ for (my $linenr = $first_line; $linenr < $end_line; $linenr++) {
+ my $line = $rawlines[$linenr - 1];
+ #warn " $line\n";
+ if ($linenr == $first_line and $line =~ m@^.\s*\*@) {
+ $in_comment = 1;
+ }
+ if ($line =~ m@/\*@) {
+ $in_comment = 1;
+ }
+ if (!$in_comment && $current_comment ne '') {
+ $current_comment = '';
+ }
+ $current_comment .= $line . "\n" if ($in_comment);
+ if ($line =~ m@\*/@) {
+ $in_comment = 0;
+ }
+ }
+
+ chomp($current_comment);
+ return($current_comment);
+}
+sub ctx_has_comment {
+ my ($first_line, $end_line) = @_;
+ my $cmt = ctx_locate_comment($first_line, $end_line);
+
+ ##print "LINE: $rawlines[$end_line - 1 ]\n";
+ ##print "CMMT: $cmt\n";
+
+ return ($cmt ne '');
+}
+
+sub raw_line {
+ my ($linenr, $cnt) = @_;
+
+ my $offset = $linenr - 1;
+ $cnt++;
+
+ my $line;
+ while ($cnt) {
+ $line = $rawlines[$offset++];
+ next if (defined($line) && $line =~ /^-/);
+ $cnt--;
+ }
+
+ return $line;
+}
+
+sub cat_vet {
+ my ($vet) = @_;
+ my ($res, $coded);
+
+ $res = '';
+ while ($vet =~ /([^[:cntrl:]]*)([[:cntrl:]]|$)/g) {
+ $res .= $1;
+ if ($2 ne '') {
+ $coded = sprintf("^%c", unpack('C', $2) + 64);
+ $res .= $coded;
+ }
+ }
+ $res =~ s/$/\$/;
+
+ return $res;
+}
+
+my $av_preprocessor = 0;
+my $av_pending;
+my @av_paren_type;
+my $av_pend_colon;
+
+sub annotate_reset {
+ $av_preprocessor = 0;
+ $av_pending = '_';
+ @av_paren_type = ('E');
+ $av_pend_colon = 'O';
+}
+
+sub annotate_values {
+ my ($stream, $type) = @_;
+
+ my $res;
+ my $var = '_' x length($stream);
+ my $cur = $stream;
+
+ print "$stream\n" if ($dbg_values > 1);
+
+ while (length($cur)) {
+ @av_paren_type = ('E') if ($#av_paren_type < 0);
+ print " <" . join('', @av_paren_type) .
+ "> <$type> <$av_pending>" if ($dbg_values > 1);
+ if ($cur =~ /^(\s+)/o) {
+ print "WS($1)\n" if ($dbg_values > 1);
+ if ($1 =~ /\n/ && $av_preprocessor) {
+ $type = pop(@av_paren_type);
+ $av_preprocessor = 0;
+ }
+
+ } elsif ($cur =~ /^(\(\s*$Type\s*)\)/ && $av_pending eq '_') {
+ print "CAST($1)\n" if ($dbg_values > 1);
+ push(@av_paren_type, $type);
+ $type = 'C';
+
+ } elsif ($cur =~ /^($Type)\s*(?:$Ident|,|\)|\(|\s*$)/) {
+ print "DECLARE($1)\n" if ($dbg_values > 1);
+ $type = 'T';
+
+ } elsif ($cur =~ /^($Modifier)\s*/) {
+ print "MODIFIER($1)\n" if ($dbg_values > 1);
+ $type = 'T';
+
+ } elsif ($cur =~ /^(\#\s*define\s*$Ident)(\(?)/o) {
+ print "DEFINE($1,$2)\n" if ($dbg_values > 1);
+ $av_preprocessor = 1;
+ push(@av_paren_type, $type);
+ if ($2 ne '') {
+ $av_pending = 'N';
+ }
+ $type = 'E';
+
+ } elsif ($cur =~ /^(\#\s*(?:undef\s*$Ident|include\b))/o) {
+ print "UNDEF($1)\n" if ($dbg_values > 1);
+ $av_preprocessor = 1;
+ push(@av_paren_type, $type);
+
+ } elsif ($cur =~ /^(\#\s*(?:ifdef|ifndef|if))/o) {
+ print "PRE_START($1)\n" if ($dbg_values > 1);
+ $av_preprocessor = 1;
+
+ push(@av_paren_type, $type);
+ push(@av_paren_type, $type);
+ $type = 'E';
+
+ } elsif ($cur =~ /^(\#\s*(?:else|elif))/o) {
+ print "PRE_RESTART($1)\n" if ($dbg_values > 1);
+ $av_preprocessor = 1;
+
+ push(@av_paren_type, $av_paren_type[$#av_paren_type]);
+
+ $type = 'E';
+
+ } elsif ($cur =~ /^(\#\s*(?:endif))/o) {
+ print "PRE_END($1)\n" if ($dbg_values > 1);
+
+ $av_preprocessor = 1;
+
+ # Assume all arms of the conditional end as this
+ # one does, and continue as if the #endif was not here.
+ pop(@av_paren_type);
+ push(@av_paren_type, $type);
+ $type = 'E';
+
+ } elsif ($cur =~ /^(\\\n)/o) {
+ print "PRECONT($1)\n" if ($dbg_values > 1);
+
+ } elsif ($cur =~ /^(__attribute__)\s*\(?/o) {
+ print "ATTR($1)\n" if ($dbg_values > 1);
+ $av_pending = $type;
+ $type = 'N';
+
+ } elsif ($cur =~ /^(sizeof)\s*(\()?/o) {
+ print "SIZEOF($1)\n" if ($dbg_values > 1);
+ if (defined $2) {
+ $av_pending = 'V';
+ }
+ $type = 'N';
+
+ } elsif ($cur =~ /^(if|while|for)\b/o) {
+ print "COND($1)\n" if ($dbg_values > 1);
+ $av_pending = 'E';
+ $type = 'N';
+
+ } elsif ($cur =~/^(case)/o) {
+ print "CASE($1)\n" if ($dbg_values > 1);
+ $av_pend_colon = 'C';
+ $type = 'N';
+
+ } elsif ($cur =~/^(return|else|goto|typeof|__typeof__)\b/o) {
+ print "KEYWORD($1)\n" if ($dbg_values > 1);
+ $type = 'N';
+
+ } elsif ($cur =~ /^(\()/o) {
+ print "PAREN('$1')\n" if ($dbg_values > 1);
+ push(@av_paren_type, $av_pending);
+ $av_pending = '_';
+ $type = 'N';
+
+ } elsif ($cur =~ /^(\))/o) {
+ my $new_type = pop(@av_paren_type);
+ if ($new_type ne '_') {
+ $type = $new_type;
+ print "PAREN('$1') -> $type\n"
+ if ($dbg_values > 1);
+ } else {
+ print "PAREN('$1')\n" if ($dbg_values > 1);
+ }
+
+ } elsif ($cur =~ /^($Ident)\s*\(/o) {
+ print "FUNC($1)\n" if ($dbg_values > 1);
+ $type = 'V';
+ $av_pending = 'V';
+
+ } elsif ($cur =~ /^($Ident\s*):(?:\s*\d+\s*(,|=|;))?/) {
+ if (defined $2 && $type eq 'C' || $type eq 'T') {
+ $av_pend_colon = 'B';
+ } elsif ($type eq 'E') {
+ $av_pend_colon = 'L';
+ }
+ print "IDENT_COLON($1,$type>$av_pend_colon)\n" if ($dbg_values > 1);
+ $type = 'V';
+
+ } elsif ($cur =~ /^($Ident|$Constant)/o) {
+ print "IDENT($1)\n" if ($dbg_values > 1);
+ $type = 'V';
+
+ } elsif ($cur =~ /^($Assignment)/o) {
+ print "ASSIGN($1)\n" if ($dbg_values > 1);
+ $type = 'N';
+
+ } elsif ($cur =~/^(;|{|})/) {
+ print "END($1)\n" if ($dbg_values > 1);
+ $type = 'E';
+ $av_pend_colon = 'O';
+
+ } elsif ($cur =~/^(,)/) {
+ print "COMMA($1)\n" if ($dbg_values > 1);
+ $type = 'C';
+
+ } elsif ($cur =~ /^(\?)/o) {
+ print "QUESTION($1)\n" if ($dbg_values > 1);
+ $type = 'N';
+
+ } elsif ($cur =~ /^(:)/o) {
+ print "COLON($1,$av_pend_colon)\n" if ($dbg_values > 1);
+
+ substr($var, length($res), 1, $av_pend_colon);
+ if ($av_pend_colon eq 'C' || $av_pend_colon eq 'L') {
+ $type = 'E';
+ } else {
+ $type = 'N';
+ }
+ $av_pend_colon = 'O';
+
+ } elsif ($cur =~ /^(\[)/o) {
+ print "CLOSE($1)\n" if ($dbg_values > 1);
+ $type = 'N';
+
+ } elsif ($cur =~ /^(-(?![->])|\+(?!\+)|\*|\&\&|\&)/o) {
+ my $variant;
+
+ print "OPV($1)\n" if ($dbg_values > 1);
+ if ($type eq 'V') {
+ $variant = 'B';
+ } else {
+ $variant = 'U';
+ }
+
+ substr($var, length($res), 1, $variant);
+ $type = 'N';
+
+ } elsif ($cur =~ /^($Operators)/o) {
+ print "OP($1)\n" if ($dbg_values > 1);
+ if ($1 ne '++' && $1 ne '--') {
+ $type = 'N';
+ }
+
+ } elsif ($cur =~ /(^.)/o) {
+ print "C($1)\n" if ($dbg_values > 1);
+ }
+ if (defined $1) {
+ $cur = substr($cur, length($1));
+ $res .= $type x length($1);
+ }
+ }
+
+ return ($res, $var);
+}
+
+sub possible {
+ my ($possible, $line) = @_;
+ my $notPermitted = qr{(?:
+ ^(?:
+ $Modifier|
+ $Storage|
+ $Type|
+ DEFINE_\S+
+ )$|
+ ^(?:
+ goto|
+ return|
+ case|
+ else|
+ asm|__asm__|
+ do
+ )(?:\s|$)|
+ ^(?:typedef|struct|enum)\b|
+ ^\#
+ )}x;
+ warn "CHECK<$possible> ($line)\n" if ($dbg_possible > 2);
+ if ($possible !~ $notPermitted) {
+ # Check for modifiers.
+ $possible =~ s/\s*$Storage\s*//g;
+ $possible =~ s/\s*$Sparse\s*//g;
+ if ($possible =~ /^\s*$/) {
+
+ } elsif ($possible =~ /\s/) {
+ $possible =~ s/\s*(?:$Type|\#\#)\s*//g;
+ for my $modifier (split(' ', $possible)) {
+ if ($modifier !~ $notPermitted) {
+ warn "MODIFIER: $modifier ($possible) ($line)\n" if ($dbg_possible);
+ push(@modifierList, $modifier);
+ }
+ }
+
+ } else {
+ warn "POSSIBLE: $possible ($line)\n" if ($dbg_possible);
+ push(@typeList, $possible);
+ }
+ build_types();
+ } else {
+ warn "NOTPOSS: $possible ($line)\n" if ($dbg_possible > 1);
+ }
+}
+
+my $prefix = '';
+
+sub report {
+ my ($level, $msg) = @_;
+ if (defined $tst_only && $msg !~ /\Q$tst_only\E/) {
+ return 0;
+ }
+
+ my $output = '';
+ my $do_color = $color && !$github;
+ $output .= BOLD if $do_color;
+ $output .= "::error " if $github && $level eq 'ERROR';
+ $output .= "::warning " if $github && $level eq 'WARNING';
+ $output .= $prefix;
+ $output .= RED if $do_color && $level eq 'ERROR';
+ $output .= MAGENTA if $do_color && $level eq 'WARNING';
+ $output .= $level . ':' if !$github;
+ $output .= RESET if $do_color;
+ $output .= ' ' if (!$github);
+ $output .= $msg . "\n";
+
+ $output = (split('\n', $output))[0] . "\n" if ($terse);
+
+ push(our @report, $output);
+
+ return 1;
+}
+sub report_dump {
+ our @report;
+}
+sub ERROR {
+ if (report("ERROR", $_[0])) {
+ our $clean = 0;
+ our $cnt_error++;
+ }
+}
+sub WARN {
+ if (report("WARNING", $_[0])) {
+ our $clean = 0;
+ our $cnt_warn++;
+ }
+}
+
+# According to tests/qtest/bios-tables-test.c: do not
+# change expected file in the same commit with adding test
+sub checkfilename {
+ my ($name, $acpi_testexpected, $acpi_nontestexpected) = @_;
+
+ # Note: shell script that rebuilds the expected files is in the same
+ # directory as files themselves.
+ # Note: allowed diff list can be changed both when changing expected
+ # files and when changing tests.
+ if ($name =~ m#^tests/data/acpi/# and not $name =~ m#^\.sh$#) {
+ $$acpi_testexpected = $name;
+ } elsif ($name !~ m#^tests/qtest/bios-tables-test-allowed-diff.h$#) {
+ $$acpi_nontestexpected = $name;
+ }
+ if (defined $$acpi_testexpected and defined $$acpi_nontestexpected) {
+ ERROR("Do not add expected files together with tests, " .
+ "follow instructions in " .
+ "tests/qtest/bios-tables-test.c: both " .
+ $$acpi_testexpected . " and " .
+ $$acpi_nontestexpected . " found\n");
+ }
+}
+
+sub process {
+ my $filename = shift;
+
+ my $linenr=0;
+ my $prevline="";
+ my $prevrawline="";
+ my $stashline="";
+ my $stashrawline="";
+
+ my $length;
+ my $indent;
+ my $previndent=0;
+ my $stashindent=0;
+
+ our $clean = 1;
+ my $signoff = 0;
+ my $is_patch = 0;
+
+ my $in_header_lines = $file ? 0 : 1;
+ my $in_commit_log = 0; #Scanning lines before patch
+ my $non_utf8_charset = 0;
+
+ our @report = ();
+ our $cnt_lines = 0;
+ our $cnt_error = 0;
+ our $cnt_warn = 0;
+ our $cnt_chk = 0;
+
+ # Trace the real file/line as we go.
+ my $realfile = '';
+ my $realline = 0;
+ my $realcnt = 0;
+ my $here = '';
+ my $in_comment = 0;
+ my $comment_edge = 0;
+ my $first_line = 0;
+ my $p1_prefix = '';
+
+ my $prev_values = 'E';
+
+ # suppression flags
+ my %suppress_ifbraces;
+ my %suppress_whiletrailers;
+ my %suppress_export;
+
+ my $acpi_testexpected;
+ my $acpi_nontestexpected;
+
+ # Pre-scan the patch sanitizing the lines.
+
+ sanitise_line_reset();
+ my $line;
+ foreach my $rawline (@rawlines) {
+ $linenr++;
+ $line = $rawline;
+
+ if ($rawline=~/^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@/) {
+ $realline=$1-1;
+ if (defined $2) {
+ $realcnt=$3+1;
+ } else {
+ $realcnt=1+1;
+ }
+ $in_comment = 0;
+
+ # Guestimate if this is a continuing comment. Run
+ # the context looking for a comment "edge". If this
+ # edge is a close comment then we must be in a comment
+ # at context start.
+ my $edge;
+ my $cnt = $realcnt;
+ for (my $ln = $linenr + 1; $cnt > 0; $ln++) {
+ next if (defined $rawlines[$ln - 1] &&
+ $rawlines[$ln - 1] =~ /^-/);
+ $cnt--;
+ #print "RAW<$rawlines[$ln - 1]>\n";
+ last if (!defined $rawlines[$ln - 1]);
+ if ($rawlines[$ln - 1] =~ m@(/\*|\*/)@ &&
+ $rawlines[$ln - 1] !~ m@"[^"]*(?:/\*|\*/)[^"]*"@) {
+ ($edge) = $1;
+ last;
+ }
+ }
+ if (defined $edge && $edge eq '*/') {
+ $in_comment = 1;
+ }
+
+ # Guestimate if this is a continuing comment. If this
+ # is the start of a diff block and this line starts
+ # ' *' then it is very likely a comment.
+ if (!defined $edge &&
+ $rawlines[$linenr] =~ m@^.\s*(?:\*\*+| \*)(?:\s|$)@)
+ {
+ $in_comment = 1;
+ }
+
+ ##print "COMMENT:$in_comment edge<$edge> $rawline\n";
+ sanitise_line_reset($in_comment);
+
+ } elsif ($realcnt && $rawline =~ /^(?:\+| |$)/) {
+ # Standardise the strings and chars within the input to
+ # simplify matching -- only bother with positive lines.
+ $line = sanitise_line($rawline);
+ }
+ push(@lines, $line);
+
+ if ($realcnt > 1) {
+ $realcnt-- if ($line =~ /^(?:\+| |$)/);
+ } else {
+ $realcnt = 0;
+ }
+
+ #print "==>$rawline\n";
+ #print "-->$line\n";
+ }
+
+ $prefix = '';
+
+ $realcnt = 0;
+ $linenr = 0;
+ foreach my $line (@lines) {
+ $linenr++;
+
+ my $rawline = $rawlines[$linenr - 1];
+
+#extract the line range in the file after the patch is applied
+ if ($line=~/^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@/) {
+ $is_patch = 1;
+ $first_line = $linenr + 1;
+ $realline=$1-1;
+ if (defined $2) {
+ $realcnt=$3+1;
+ } else {
+ $realcnt=1+1;
+ }
+ annotate_reset();
+ $prev_values = 'E';
+
+ %suppress_ifbraces = ();
+ %suppress_whiletrailers = ();
+ %suppress_export = ();
+ next;
+
+# track the line number as we move through the hunk, note that
+# new versions of GNU diff omit the leading space on completely
+# blank context lines so we need to count that too.
+ } elsif ($line =~ /^( |\+|$)/) {
+ $realline++;
+ $realcnt-- if ($realcnt != 0);
+
+ # Measure the line length and indent.
+ ($length, $indent) = line_stats($rawline);
+
+ # Track the previous line.
+ ($prevline, $stashline) = ($stashline, $line);
+ ($previndent, $stashindent) = ($stashindent, $indent);
+ ($prevrawline, $stashrawline) = ($stashrawline, $rawline);
+
+ #warn "line<$line>\n";
+
+ } elsif ($realcnt == 1) {
+ $realcnt--;
+ }
+
+ my $hunk_line = ($realcnt != 0);
+
+#make up the handle for any error we report on this line
+ $prefix = "$filename:$realline: " if ($emacs && $file);
+ $prefix = "$filename:$linenr: " if ($emacs && !$file);
+ $prefix = "file=$filename,line=$realline:\:" if ($github && $file);
+ $prefix = "file=$realfile,line=$realline:\:" if ($github && !$file);
+
+ $here = "#$linenr: " if (!$file);
+ $here = "#$realline: " if ($file);
+
+ # extract the filename as it passes
+ if ($line =~ /^diff --git.*?(\S+)$/) {
+ $realfile = $1;
+ $realfile =~ s@^([^/]*)/@@ if (!$file);
+ checkfilename($realfile, \$acpi_testexpected, \$acpi_nontestexpected);
+ } elsif ($line =~ /^\+\+\+\s+(\S+)/) {
+ $realfile = $1;
+ $realfile =~ s@^([^/]*)/@@ if (!$file);
+ checkfilename($realfile, \$acpi_testexpected, \$acpi_nontestexpected);
+
+ $p1_prefix = $1;
+ if (!$file && $tree && $p1_prefix ne '' && defined $root &&
+ -e "$root/$p1_prefix") {
+ WARN("patch prefix '$p1_prefix' exists, appears to be a -p0 patch\n");
+ }
+
+ next;
+ }
+
+ $here .= "FILE: $realfile:$realline:" if ($realcnt != 0);
+
+ my $hereline = "$here\n$rawline\n";
+ my $herecurr = "$here\n$rawline\n";
+ my $hereprev = "$here\n$prevrawline\n$rawline\n";
+
+ $cnt_lines++ if ($realcnt != 0);
+
+# Check for incorrect file permissions
+ if ($line =~ /^new (file )?mode.*[7531]\d{0,2}$/) {
+ my $permhere = $here . "FILE: $realfile\n";
+ if ($realfile =~ /(\bMakefile(?:\.objs)?|\.c|\.cc|\.cpp|\.h|\.mak|\.[sS])$/) {
+ ERROR("do not set execute permissions for source files\n" . $permhere);
+ }
+ }
+
+# Accept git diff extended headers as valid patches
+ if ($line =~ /^(?:rename|copy) (?:from|to) [\w\/\.\-]+\s*$/) {
+ $is_patch = 1;
+ }
+
+# Filter out bad email addresses.
+ if ($line =~ /^(Author|From): .*noreply.*/) {
+ ERROR("Real email adress is needed\n" . $herecurr);
+ }
+
+#check the patch for a signoff:
+ if ($line =~ /^\s*signed-off-by:/i) {
+ # This is a signoff, if ugly, so do not double report.
+ $in_commit_log = 0;
+
+ if (!($line =~ /^\s*Signed-off-by:/)) {
+ ERROR("The correct form is \"Signed-off-by\"\n" .
+ $herecurr);
+ }
+ if ($line =~ /^\s*signed-off-by:\S/i) {
+ ERROR("space required after Signed-off-by:\n" .
+ $herecurr);
+ }
+ }
+
+# Check for wrappage within a valid hunk of the file
+ if ($realcnt != 0 && $line !~ m{^(?:\+|-| |\\ No newline|$)}) {
+ ERROR("patch seems to be corrupt (line wrapped?)\n" .
+ $herecurr) if (!$emitted_corrupt++);
+ }
+
+# UTF-8 regex found at http://www.w3.org/International/questions/qa-forms-utf-8.en.php
+ if (($realfile =~ /^$/ || $line =~ /^\+/) &&
+ $rawline !~ m/^$UTF8*$/) {
+ my ($utf8_prefix) = ($rawline =~ /^($UTF8*)/);
+
+ my $blank = copy_spacing($rawline);
+ my $ptr = substr($blank, 0, length($utf8_prefix)) . "^";
+ my $hereptr = "$hereline$ptr\n";
+
+ ERROR("Invalid UTF-8, patch and commit message should be encoded in UTF-8\n" . $hereptr);
+ }
+
+ if ($rawline =~ m/$UTF8_MOJIBAKE/) {
+ ERROR("Doubly-encoded UTF-8\n" . $herecurr);
+ }
+# Check if it's the start of a commit log
+# (not a header line and we haven't seen the patch filename)
+ if ($in_header_lines && $realfile =~ /^$/ &&
+ !($rawline =~ /^\s+\S/ ||
+ $rawline =~ /^(commit\b|from\b|[\w-]+:).*$/i)) {
+ $in_header_lines = 0;
+ $in_commit_log = 1;
+ }
+
+# Check if there is UTF-8 in a commit log when a mail header has explicitly
+# declined it, i.e defined some charset where it is missing.
+ if ($in_header_lines &&
+ $rawline =~ /^Content-Type:.+charset="(.+)".*$/ &&
+ $1 !~ /utf-8/i) {
+ $non_utf8_charset = 1;
+ }
+
+ if ($in_commit_log && $non_utf8_charset && $realfile =~ /^$/ &&
+ $rawline =~ /$NON_ASCII_UTF8/) {
+ WARN("8-bit UTF-8 used in possible commit log\n" . $herecurr);
+ }
+
+# ignore non-hunk lines and lines being removed
+ next if (!$hunk_line || $line =~ /^-/);
+
+#trailing whitespace
+ if ($line =~ /^\+.*\015/) {
+ my $herevet = "$here\n" . cat_vet($rawline) . "\n";
+ ERROR("DOS line endings\n" . $herevet);
+
+ } elsif ($realfile =~ /^docs\/.+\.txt/ ||
+ $realfile =~ /^docs\/.+\.md/) {
+ if ($rawline =~ /^\+\s+$/ && $rawline !~ /^\+ {4}$/) {
+ # TODO: properly check we're in a code block
+ # (surrounding text is 4-column aligned)
+ my $herevet = "$here\n" . cat_vet($rawline) . "\n";
+ ERROR("code blocks in documentation should have " .
+ "empty lines with exactly 4 columns of " .
+ "whitespace\n" . $herevet);
+ }
+ } elsif ($rawline =~ /^\+.*\S\s+$/ || $rawline =~ /^\+\s+$/) {
+ my $herevet = "$here\n" . cat_vet($rawline) . "\n";
+ ERROR("trailing whitespace\n" . $herevet);
+ $rpt_cleaners = 1;
+ }
+
+# check we are in a valid source file if not then ignore this hunk
+ next if ($realfile !~ /$SrcFile/);
+
+#120 column limit; exempt URLs, if no other words on line
+ if ($line =~ /^\+/ &&
+ !($line =~ /^\+\s*"[^"]*"\s*(?:\s*|,|\)\s*;)\s*$/) &&
+ !($rawline =~ /^[^[:alnum:]]*https?:\S*$/) &&
+ $length > 80 &&
+ $realfile !~ /\/tests\//)
+ {
+ if ($length > 120) {
+ ERROR("line over 120 characters\n" . $herecurr);
+ } else {
+ WARN("line over 80 characters\n" . $herecurr);
+ }
+ }
+
+# check for spaces before a quoted newline
+ if ($rawline =~ /^.*\".*\s\\n/) {
+ ERROR("unnecessary whitespace before a quoted newline\n" . $herecurr);
+ }
+
+# check for adding lines without a newline.
+ if ($line =~ /^\+/ && defined $lines[$linenr] && $lines[$linenr] =~ /^\\ No newline at end of file/) {
+ ERROR("adding a line without newline at end of file\n" . $herecurr);
+ }
+
+# check for RCS/CVS revision markers
+ if ($rawline =~ /^\+.*\$(FreeBSD|Revision|Log|Id)(?:\$|\b)/) {
+ ERROR("CVS style keyword markers, these will _not_ be updated\n". $herecurr);
+ }
+
+# check we are in a valid C source file if not then ignore this hunk
+ next if ($realfile !~ /\.(h|c|cpp)$/);
+
+# Block comment styles
+
+ # Block comments use /* on a line of its own
+ if ($rawline !~ m@^\+.*/\*.*\*/[ \t)}]*$@ && #inline /*...*/
+ $rawline =~ m@^\+.*/\*[*-]?+[ \t]*[^ \t]@) { # /* or /** or /*- non-blank
+ WARN("Block comments use a leading /* on a separate line\n" . $herecurr);
+ }
+
+# Block comments use * on subsequent lines
+ if ($prevline =~ /$;[ \t]*$/ && #ends in comment
+ $prevrawline =~ /^\+.*?\/\*/ && #starting /*
+ $prevrawline !~ /\*\/[ \t]*$/ && #no trailing */
+ $rawline =~ /^\+/ && #line is new
+ $rawline !~ /^\+[ \t]*\*/) { #no leading *
+ WARN("Block comments use * on subsequent lines\n" . $hereprev);
+ }
+
+# Block comments use */ on trailing lines
+ if ($rawline !~ m@^\+[ \t]*\*/[ \t]*$@ && #trailing */
+ $rawline !~ m@^\+.*/\*.*\*/[ \t]*$@ && #inline /*...*/
+ $rawline !~ m@^\+.*\*{2,}/[ \t]*$@ && #trailing **/
+ $rawline =~ m@^\+[ \t]*.+\*\/[ \t]*$@) { #non blank */
+ WARN("Block comments use a trailing */ on a separate line\n" . $herecurr);
+ }
+
+# Block comment * alignment
+ if ($prevline =~ /$;[ \t]*$/ && #ends in comment
+ $line =~ /^\+[ \t]*$;/ && #leading comment
+ $rawline =~ /^\+[ \t]*\*/ && #leading *
+ (($prevrawline =~ /^\+.*?\/\*/ && #leading /*
+ $prevrawline !~ /\*\/[ \t]*$/) || #no trailing */
+ $prevrawline =~ /^\+[ \t]*\*/)) { #leading *
+ my $oldindent;
+ $prevrawline =~ m@^\+([ \t]*/?)\*@;
+ if (defined($1)) {
+ $oldindent = expand_tabs($1);
+ } else {
+ $prevrawline =~ m@^\+(.*/?)\*@;
+ $oldindent = expand_tabs($1);
+ }
+ $rawline =~ m@^\+([ \t]*)\*@;
+ my $newindent = $1;
+ $newindent = expand_tabs($newindent);
+ if (length($oldindent) ne length($newindent)) {
+ WARN("Block comments should align the * on each line\n" . $hereprev);
+ }
+ }
+
+# Check for potential 'bare' types
+ my ($stat, $cond, $line_nr_next, $remain_next, $off_next,
+ $realline_next);
+ if ($realcnt && $line =~ /.\s*\S/) {
+ ($stat, $cond, $line_nr_next, $remain_next, $off_next) =
+ ctx_statement_block($linenr, $realcnt, 0);
+ $stat =~ s/\n./\n /g;
+ $cond =~ s/\n./\n /g;
+
+ # Find the real next line.
+ $realline_next = $line_nr_next;
+ if (defined $realline_next &&
+ (!defined $lines[$realline_next - 1] ||
+ substr($lines[$realline_next - 1], $off_next) =~ /^\s*$/)) {
+ $realline_next++;
+ }
+
+ my $s = $stat;
+ $s =~ s/{.*$//s;
+
+ # Ignore goto labels.
+ if ($s =~ /$Ident:\*$/s) {
+
+ # Ignore functions being called
+ } elsif ($s =~ /^.\s*$Ident\s*\(/s) {
+
+ } elsif ($s =~ /^.\s*else\b/s) {
+
+ # declarations always start with types
+ } elsif ($prev_values eq 'E' && $s =~ /^.\s*(?:$Storage\s+)?(?:$Inline\s+)?(?:const\s+)?((?:\s*$Ident)+?)\b(?:\s+$Sparse)?\s*\**\s*(?:$Ident|\(\*[^\)]*\))(?:\s*$Modifier)?\s*(?:;|=|,|\()/s) {
+ my $type = $1;
+ $type =~ s/\s+/ /g;
+ possible($type, "A:" . $s);
+
+ # definitions in global scope can only start with types
+ } elsif ($s =~ /^.(?:$Storage\s+)?(?:$Inline\s+)?(?:const\s+)?($Ident)\b\s*(?!:)/s) {
+ possible($1, "B:" . $s);
+ }
+
+ # any (foo ... *) is a pointer cast, and foo is a type
+ while ($s =~ /\(($Ident)(?:\s+$Sparse)*[\s\*]+\s*\)/sg) {
+ possible($1, "C:" . $s);
+ }
+
+ # Check for any sort of function declaration.
+ # int foo(something bar, other baz);
+ # void (*store_gdt)(x86_descr_ptr *);
+ if ($prev_values eq 'E' && $s =~ /^(.(?:typedef\s*)?(?:(?:$Storage|$Inline)\s*)*\s*$Type\s*(?:\b$Ident|\(\*\s*$Ident\))\s*)\(/s) {
+ my ($name_len) = length($1);
+
+ my $ctx = $s;
+ substr($ctx, 0, $name_len + 1, '');
+ $ctx =~ s/\)[^\)]*$//;
+
+ for my $arg (split(/\s*,\s*/, $ctx)) {
+ if ($arg =~ /^(?:const\s+)?($Ident)(?:\s+$Sparse)*\s*\**\s*(:?\b$Ident)?$/s || $arg =~ /^($Ident)$/s) {
+
+ possible($1, "D:" . $s);
+ }
+ }
+ }
+
+ }
+
+#
+# Checks which may be anchored in the context.
+#
+
+# Check for switch () and associated case and default
+# statements should be at the same indent.
+ if ($line=~/\bswitch\s*\(.*\)/) {
+ my $err = '';
+ my $sep = '';
+ my @ctx = ctx_block_outer($linenr, $realcnt);
+ shift(@ctx);
+ for my $ctx (@ctx) {
+ my ($clen, $cindent) = line_stats($ctx);
+ if ($ctx =~ /^\+\s*(case\s+|default:)/ &&
+ $indent != $cindent) {
+ $err .= "$sep$ctx\n";
+ $sep = '';
+ } else {
+ $sep = "[...]\n";
+ }
+ }
+ if ($err ne '') {
+ ERROR("switch and case should be at the same indent\n$hereline$err");
+ }
+ }
+
+# if/while/etc brace do not go on next line, unless defining a do while loop,
+# or if that brace on the next line is for something else
+ if ($line =~ /(.*)\b((?:if|while|for|switch)\s*\(|do\b|else\b)/ && $line !~ /^.\s*\#/) {
+ my $pre_ctx = "$1$2";
+
+ my ($level, @ctx) = ctx_statement_level($linenr, $realcnt, 0);
+ my $ctx_cnt = $realcnt - $#ctx - 1;
+ my $ctx = join("\n", @ctx);
+
+ my $ctx_ln = $linenr;
+ my $ctx_skip = $realcnt;
+
+ while ($ctx_skip > $ctx_cnt || ($ctx_skip == $ctx_cnt &&
+ defined $lines[$ctx_ln - 1] &&
+ $lines[$ctx_ln - 1] =~ /^-/)) {
+ ##print "SKIP<$ctx_skip> CNT<$ctx_cnt>\n";
+ $ctx_skip-- if (!defined $lines[$ctx_ln - 1] || $lines[$ctx_ln - 1] !~ /^-/);
+ $ctx_ln++;
+ }
+
+ #print "realcnt<$realcnt> ctx_cnt<$ctx_cnt>\n";
+ #print "pre<$pre_ctx>\nline<$line>\nctx<$ctx>\nnext<$lines[$ctx_ln - 1]>\n";
+
+ # The length of the "previous line" is checked against 80 because it
+ # includes the + at the beginning of the line (if the actual line has
+ # 79 or 80 characters, it is no longer possible to add a space and an
+ # opening brace there)
+ if ($#ctx == 0 && $ctx !~ /{\s*/ &&
+ defined($lines[$ctx_ln - 1]) && $lines[$ctx_ln - 1] =~ /^\+\s*\{/ &&
+ defined($lines[$ctx_ln - 2]) && length($lines[$ctx_ln - 2]) < 80) {
+ ERROR("that open brace { should be on the previous line\n" .
+ "$here\n$ctx\n$rawlines[$ctx_ln - 1]\n");
+ }
+ if ($level == 0 && $pre_ctx !~ /}\s*while\s*\($/ &&
+ $ctx =~ /\)\s*\;\s*$/ &&
+ defined $lines[$ctx_ln - 1])
+ {
+ my ($nlength, $nindent) = line_stats($lines[$ctx_ln - 1]);
+ if ($nindent > $indent) {
+ ERROR("trailing semicolon indicates no statements, indent implies otherwise\n" .
+ "$here\n$ctx\n$rawlines[$ctx_ln - 1]\n");
+ }
+ }
+ }
+
+# 'do ... while (0/false)' only makes sense in macros, without trailing ';'
+ if ($line =~ /while\s*\((0|false)\);/) {
+ ERROR("suspicious ; after while (0)\n" . $herecurr);
+ }
+
+# Check superfluous trailing ';'
+ if ($line =~ /;;$/) {
+ ERROR("superfluous trailing semicolon\n" . $herecurr);
+ }
+
+# Check relative indent for conditionals and blocks.
+ if ($line =~ /\b(?:(?:if|while|for)\s*\(|do\b)/ && $line !~ /^.\s*#/ && $line !~ /\}\s*while\s*/) {
+ my ($s, $c) = ($stat, $cond);
+
+ substr($s, 0, length($c), '');
+
+ # Make sure we remove the line prefixes as we have
+ # none on the first line, and are going to re-add them
+ # where necessary.
+ $s =~ s/\n./\n/gs;
+
+ # Find out how long the conditional actually is.
+ my @newlines = ($c =~ /\n/gs);
+ my $cond_lines = 1 + $#newlines;
+
+ # We want to check the first line inside the block
+ # starting at the end of the conditional, so remove:
+ # 1) any blank line termination
+ # 2) any opening brace { on end of the line
+ # 3) any do (...) {
+ my $continuation = 0;
+ my $check = 0;
+ $s =~ s/^.*\bdo\b//;
+ $s =~ s/^\s*\{//;
+ if ($s =~ s/^\s*\\//) {
+ $continuation = 1;
+ }
+ if ($s =~ s/^\s*?\n//) {
+ $check = 1;
+ $cond_lines++;
+ }
+
+ # Also ignore a loop construct at the end of a
+ # preprocessor statement.
+ if (($prevline =~ /^.\s*#\s*define\s/ ||
+ $prevline =~ /\\\s*$/) && $continuation == 0) {
+ $check = 0;
+ }
+
+ my $cond_ptr = -1;
+ $continuation = 0;
+ while ($cond_ptr != $cond_lines) {
+ $cond_ptr = $cond_lines;
+
+ # If we see an #else/#elif then the code
+ # is not linear.
+ if ($s =~ /^\s*\#\s*(?:else|elif)/) {
+ $check = 0;
+ }
+
+ # Ignore:
+ # 1) blank lines, they should be at 0,
+ # 2) preprocessor lines, and
+ # 3) labels.
+ if ($continuation ||
+ $s =~ /^\s*?\n/ ||
+ $s =~ /^\s*#\s*?/ ||
+ $s =~ /^\s*$Ident\s*:/) {
+ $continuation = ($s =~ /^.*?\\\n/) ? 1 : 0;
+ if ($s =~ s/^.*?\n//) {
+ $cond_lines++;
+ }
+ }
+ }
+
+ my (undef, $sindent) = line_stats("+" . $s);
+ my $stat_real = raw_line($linenr, $cond_lines);
+
+ # Check if either of these lines are modified, else
+ # this is not this patch's fault.
+ if (!defined($stat_real) ||
+ $stat !~ /^\+/ && $stat_real !~ /^\+/) {
+ $check = 0;
+ }
+ if (defined($stat_real) && $cond_lines > 1) {
+ $stat_real = "[...]\n$stat_real";
+ }
+
+ #print "line<$line> prevline<$prevline> indent<$indent> sindent<$sindent> check<$check> continuation<$continuation> s<$s> cond_lines<$cond_lines> stat_real<$stat_real> stat<$stat>\n";
+
+ if ($check && (($sindent % 4) != 0 ||
+ ($sindent <= $indent && $s ne ''))) {
+ ERROR("suspect code indent for conditional statements ($indent, $sindent)\n" . $herecurr . "$stat_real\n");
+ }
+ }
+
+ # Track the 'values' across context and added lines.
+ my $opline = $line; $opline =~ s/^./ /;
+ my ($curr_values, $curr_vars) =
+ annotate_values($opline . "\n", $prev_values);
+ $curr_values = $prev_values . $curr_values;
+ if ($dbg_values) {
+ my $outline = $opline; $outline =~ s/\t/ /g;
+ print "$linenr > .$outline\n";
+ print "$linenr > $curr_values\n";
+ print "$linenr > $curr_vars\n";
+ }
+ $prev_values = substr($curr_values, -1);
+
+#ignore lines not being added
+ if ($line=~/^[^\+]/) {next;}
+
+# check for initialisation to aggregates open brace on the next line
+ if ($line =~ /^.\s*\{/ &&
+ $prevline =~ /(?:^|[^=])=\s*$/) {
+ ERROR("that open brace { should be on the previous line\n" . $hereprev);
+ }
+
+#
+# Checks which are anchored on the added line.
+#
+
+# check for malformed paths in #include statements (uses RAW line)
+ if ($rawline =~ m{^.\s*\#\s*include\s+[<"](.*)[">]}) {
+ my $path = $1;
+ if ($path =~ m{//}) {
+ ERROR("malformed #include filename\n" .
+ $herecurr);
+ }
+ }
+
+# Remove C99 comments.
+ $line =~ s@//.*@@;
+ $opline =~ s@//.*@@;
+
+# * goes on variable not on type
+ # (char*[ const])
+ if ($line =~ m{\($NonptrType(\s*(?:$Modifier\b\s*|\*\s*)+)\)}) {
+ my ($from, $to) = ($1, $1);
+
+ # Should start with a space.
+ $to =~ s/^(\S)/ $1/;
+ # Should not end with a space.
+ $to =~ s/\s+$//;
+ # '*'s should not have spaces between.
+ while ($to =~ s/\*\s+\*/\*\*/) {
+ }
+
+ #print "from<$from> to<$to>\n";
+ if ($from ne $to) {
+ ERROR("\"(foo$from)\" should be \"(foo$to)\"\n" . $herecurr);
+ }
+ } elsif ($line =~ m{\b$NonptrType(\s*(?:$Modifier\b\s*|\*\s*)+)($Ident)}) {
+ my ($from, $to, $ident) = ($1, $1, $2);
+
+ # Should start with a space.
+ $to =~ s/^(\S)/ $1/;
+ # Should not end with a space.
+ $to =~ s/\s+$//;
+ # '*'s should not have spaces between.
+ while ($to =~ s/\*\s+\*/\*\*/) {
+ }
+ # Modifiers should have spaces.
+ $to =~ s/(\b$Modifier$)/$1 /;
+
+ #print "from<$from> to<$to> ident<$ident>\n";
+ if ($from ne $to && $ident !~ /^$Modifier$/) {
+ ERROR("\"foo${from}bar\" should be \"foo${to}bar\"\n" . $herecurr);
+ }
+ }
+
+# function brace can't be on same line, except for #defines of do while,
+# or if closed on same line
+ if (($line=~/$Type\s*$Ident\(.*\).*\s\{/) and
+ !($line=~/\#\s*define.*do\s\{/) and !($line=~/}/)) {
+ ERROR("open brace '{' following function declarations go on the next line\n" . $herecurr);
+ }
+
+# missing space after union, struct or enum definition
+ if ($line =~ /^.\s*(?:typedef\s+)?(enum|union|struct)(?:\s+$Ident)?(?:\s+$Ident)?[=\{]/) {
+ ERROR("missing space after $1 definition\n" . $herecurr);
+ }
+
+# check for spacing round square brackets; allowed:
+# 1. with a type on the left -- int [] a;
+# 2. at the beginning of a line for slice initialisers -- [0...10] = 5,
+# 3. inside a curly brace -- = { [0...10] = 5 }
+# 4. after a comma -- [1] = 5, [2] = 6
+# 5. in a macro definition -- #define abc(x) [x] = y
+ while ($line =~ /(.*?\s)\[/g) {
+ my ($where, $prefix) = ($-[1], $1);
+ if ($prefix !~ /$Type\s+$/ &&
+ ($where != 0 || $prefix !~ /^.\s+$/) &&
+ $prefix !~ /\#\s*define[^(]*\([^)]*\)\s+$/ &&
+ $prefix !~ /[,{:]\s+$/) {
+ ERROR("space prohibited before open square bracket '['\n" . $herecurr);
+ }
+ }
+
+# check for spaces between functions and their parentheses.
+ while ($line =~ /($Ident)\s+\(/g) {
+ my $name = $1;
+ my $ctx_before = substr($line, 0, $-[1]);
+ my $ctx = "$ctx_before$name";
+
+ # Ignore those directives where spaces _are_ permitted.
+ if ($name =~ /^(?:
+ if|for|while|switch|return|case|
+ volatile|__volatile__|coroutine_fn|
+ __attribute__|format|__extension__|
+ asm|__asm__)$/x)
+ {
+
+ # Ignore 'catch (...)' in C++
+ } elsif ($name =~ /^catch$/ && $realfile =~ /(\.cpp|\.h)$/) {
+
+ # cpp #define statements have non-optional spaces, ie
+ # if there is a space between the name and the open
+ # parenthesis it is simply not a parameter group.
+ } elsif ($ctx_before =~ /^.\s*\#\s*define\s*$/) {
+
+ # cpp #elif statement condition may start with a (
+ } elsif ($ctx =~ /^.\s*\#\s*elif\s*$/) {
+
+ # If this whole things ends with a type its most
+ # likely a typedef for a function.
+ } elsif ($ctx =~ /$Type$/) {
+
+ } else {
+ ERROR("space prohibited between function name and open parenthesis '('\n" . $herecurr);
+ }
+ }
+# Check operator spacing.
+ if (!($line=~/\#\s*include/)) {
+ my $ops = qr{
+ <<=|>>=|<=|>=|==|!=|
+ \+=|-=|\*=|\/=|%=|\^=|\|=|&=|
+ =>|->|<<|>>|<|>|=|!|~|
+ &&|\|\||,|\^|\+\+|--|&|\||\+|-|\*|\/|%|
+ \?|::|:
+ }x;
+ my @elements = split(/($ops|;)/, $opline);
+ my $off = 0;
+
+ my $blank = copy_spacing($opline);
+
+ for (my $n = 0; $n < $#elements; $n += 2) {
+ $off += length($elements[$n]);
+
+ # Pick up the preceding and succeeding characters.
+ my $ca = substr($opline, 0, $off);
+ my $cc = '';
+ if (length($opline) >= ($off + length($elements[$n + 1]))) {
+ $cc = substr($opline, $off + length($elements[$n + 1]));
+ }
+ my $cb = "$ca$;$cc";
+
+ my $a = '';
+ $a = 'V' if ($elements[$n] ne '');
+ $a = 'W' if ($elements[$n] =~ /\s$/);
+ $a = 'C' if ($elements[$n] =~ /$;$/);
+ $a = 'B' if ($elements[$n] =~ /(\[|\()$/);
+ $a = 'O' if ($elements[$n] eq '');
+ $a = 'E' if ($ca =~ /^\s*$/);
+
+ my $op = $elements[$n + 1];
+
+ my $c = '';
+ if (defined $elements[$n + 2]) {
+ $c = 'V' if ($elements[$n + 2] ne '');
+ $c = 'W' if ($elements[$n + 2] =~ /^\s/);
+ $c = 'C' if ($elements[$n + 2] =~ /^$;/);
+ $c = 'B' if ($elements[$n + 2] =~ /^(\)|\]|;)/);
+ $c = 'O' if ($elements[$n + 2] eq '');
+ $c = 'E' if ($elements[$n + 2] =~ /^\s*\\$/);
+ } else {
+ $c = 'E';
+ }
+
+ my $ctx = "${a}x${c}";
+
+ my $at = "(ctx:$ctx)";
+
+ my $ptr = substr($blank, 0, $off) . "^";
+ my $hereptr = "$hereline$ptr\n";
+
+ # Pull out the value of this operator.
+ my $op_type = substr($curr_values, $off + 1, 1);
+
+ # Get the full operator variant.
+ my $opv = $op . substr($curr_vars, $off, 1);
+
+ # Ignore operators passed as parameters.
+ if ($op_type ne 'V' &&
+ $ca =~ /\s$/ && $cc =~ /^\s*,/) {
+
+# # Ignore comments
+# } elsif ($op =~ /^$;+$/) {
+
+ # ; should have either the end of line or a space or \ after it
+ } elsif ($op eq ';') {
+ if ($ctx !~ /.x[WEBC]/ &&
+ $cc !~ /^\\/ && $cc !~ /^;/) {
+ ERROR("space required after that '$op' $at\n" . $hereptr);
+ }
+
+ # // is a comment
+ } elsif ($op eq '//') {
+
+ # Ignore : used in class declaration in C++
+ } elsif ($opv eq ':B' && $ctx =~ /Wx[WE]/ &&
+ $line =~ /class/ && $realfile =~ /(\.cpp|\.h)$/) {
+
+ # No spaces for:
+ # ->
+ # : when part of a bitfield
+ } elsif ($op eq '->' || $opv eq ':B') {
+ if ($ctx =~ /Wx.|.xW/) {
+ ERROR("spaces prohibited around that '$op' $at\n" . $hereptr);
+ }
+
+ # , must have a space on the right.
+ # not required when having a single },{ on one line
+ } elsif ($op eq ',') {
+ if ($ctx !~ /.x[WEC]/ && $cc !~ /^}/ &&
+ ($elements[$n] . $elements[$n + 2]) !~ " *}\\{") {
+ ERROR("space required after that '$op' $at\n" . $hereptr);
+ }
+
+ # '*' as part of a type definition -- reported already.
+ } elsif ($opv eq '*_') {
+ #warn "'*' is part of type\n";
+
+ # unary operators should have a space before and
+ # none after. May be left adjacent to another
+ # unary operator, or a cast
+ } elsif ($op eq '!' || $op eq '~' ||
+ $opv eq '*U' || $opv eq '-U' ||
+ $opv eq '&U' || $opv eq '&&U') {
+ if ($op eq '~' && $ca =~ /::$/ && $realfile =~ /(\.cpp|\.h)$/) {
+ # '~' used as a name of Destructor
+
+ } elsif ($ctx !~ /[WEBC]x./ && $ca !~ /(?:\)|!|~|\*|-|\&|\||\+\+|\-\-|\{)$/) {
+ ERROR("space required before that '$op' $at\n" . $hereptr);
+ }
+ if ($op eq '*' && $cc =~/\s*$Modifier\b/) {
+ # A unary '*' may be const
+
+ } elsif ($ctx =~ /.xW/) {
+ ERROR("space prohibited after that '$op' $at\n" . $hereptr);
+ }
+
+ # unary ++ and unary -- are allowed no space on one side.
+ } elsif ($op eq '++' or $op eq '--') {
+ if ($ctx !~ /[WEOBC]x[^W]/ && $ctx !~ /[^W]x[WOBEC]/) {
+ ERROR("space required one side of that '$op' $at\n" . $hereptr);
+ }
+ if ($ctx =~ /Wx[BE]/ ||
+ ($ctx =~ /Wx./ && $cc =~ /^;/)) {
+ ERROR("space prohibited before that '$op' $at\n" . $hereptr);
+ }
+ if ($ctx =~ /ExW/) {
+ ERROR("space prohibited after that '$op' $at\n" . $hereptr);
+ }
+
+ # A colon needs no spaces before when it is
+ # terminating a case value or a label.
+ } elsif ($opv eq ':C' || $opv eq ':L') {
+ if ($ctx =~ /Wx./) {
+ ERROR("space prohibited before that '$op' $at\n" . $hereptr);
+ }
+
+ # All the others need spaces both sides.
+ } elsif ($ctx !~ /[EWC]x[CWE]/) {
+ my $ok = 0;
+
+ if ($realfile =~ /\.cpp|\.h$/) {
+ # Ignore template arguments <...> in C++
+ if (($op eq '<' || $op eq '>') && $line =~ /<.*>/) {
+ $ok = 1;
+ }
+
+ # Ignore :: in C++
+ if ($op eq '::') {
+ $ok = 1;
+ }
+ }
+
+ # Ignore email addresses <foo@bar>
+ if (($op eq '<' &&
+ $cc =~ /^\S+\@\S+>/) ||
+ ($op eq '>' &&
+ $ca =~ /<\S+\@\S+$/))
+ {
+ $ok = 1;
+ }
+
+ # Ignore ?:
+ if (($opv eq ':O' && $ca =~ /\?$/) ||
+ ($op eq '?' && $cc =~ /^:/)) {
+ $ok = 1;
+ }
+
+ if ($ok == 0) {
+ ERROR("spaces required around that '$op' $at\n" . $hereptr);
+ }
+ }
+ $off += length($elements[$n + 1]);
+ }
+ }
+
+#need space before brace following if, while, etc
+ if (($line =~ /\(.*\)\{/ && $line !~ /\($Type\)\{/) ||
+ $line =~ /do\{/) {
+ ERROR("space required before the open brace '{'\n" . $herecurr);
+ }
+
+# closing brace should have a space following it when it has anything
+# on the line
+ if ($line =~ /}(?!(?:,|;|\)))\S/) {
+ ERROR("space required after that close brace '}'\n" . $herecurr);
+ }
+
+# check spacing on square brackets
+ if ($line =~ /\[\s/ && $line !~ /\[\s*$/) {
+ ERROR("space prohibited after that open square bracket '['\n" . $herecurr);
+ }
+ if ($line =~ /\s\]/) {
+ ERROR("space prohibited before that close square bracket ']'\n" . $herecurr);
+ }
+
+# check spacing on parentheses
+ if ($line =~ /\(\s/ && $line !~ /\(\s*(?:\\)?$/ &&
+ $line !~ /for\s*\(\s+;/) {
+ ERROR("space prohibited after that open parenthesis '('\n" . $herecurr);
+ }
+ if ($line =~ /(\s+)\)/ && $line !~ /^.\s*\)/ &&
+ $line !~ /for\s*\(.*;\s+\)/ &&
+ $line !~ /:\s+\)/) {
+ ERROR("space prohibited before that close parenthesis ')'\n" . $herecurr);
+ }
+
+ if ($line =~ /^.\s*(Q(?:S?LIST|SIMPLEQ|TAILQ)_HEAD)\s*\(\s*[^,]/ &&
+ $line !~ /^.typedef/) {
+ ERROR("named $1 should be typedefed separately\n" . $herecurr);
+ }
+
+# Return needs parens
+ if ($line =~ /^.\s*return [^(]/) {
+ ERROR("parentheses required on return\n" . $herecurr);
+ }
+
+# Need a space before open parenthesis after if, while etc
+ if ($line=~/\b(if|while|for|switch|return)\(/) {
+ ERROR("space required before the open parenthesis '('\n" . $herecurr);
+ }
+
+# Check for illegal assignment in if conditional -- and check for trailing
+# statements after the conditional.
+ if ($line =~ /do\s*(?!{)/) {
+ my ($stat_next) = ctx_statement_block($line_nr_next,
+ $remain_next, $off_next);
+ $stat_next =~ s/\n./\n /g;
+ ##print "stat<$stat> stat_next<$stat_next>\n";
+
+ if ($stat_next =~ /^\s*while\b/) {
+ # If the statement carries leading newlines,
+ # then count those as offsets.
+ my ($whitespace) =
+ ($stat_next =~ /^((?:\s*\n[+-])*\s*)/s);
+ my $offset =
+ statement_rawlines($whitespace) - 1;
+
+ $suppress_whiletrailers{$line_nr_next +
+ $offset} = 1;
+ }
+ }
+ if (!defined $suppress_whiletrailers{$linenr} &&
+ $line =~ /\b(?:if|while|for)\s*\(/ && $line !~ /^.\s*#/) {
+ my ($s, $c) = ($stat, $cond);
+
+# if ($c =~ /\bif\s*\(.*[^<>!=]=[^=].*/s) {
+# ERROR("do not use assignment in if condition\n" . $herecurr);
+# }
+
+ # Find out what is on the end of the line after the
+ # conditional.
+ substr($s, 0, length($c), '');
+ $s =~ s/\n.*//g;
+ $s =~ s/$;//g; # Remove any comments
+ if (length($c) && $s !~ /^\s*{?\s*\\*\s*$/ &&
+ $c !~ /}\s*while\s*/)
+ {
+ # Find out how long the conditional actually is.
+ my @newlines = ($c =~ /\n/gs);
+ my $cond_lines = 1 + $#newlines;
+ my $stat_real = '';
+
+ $stat_real = raw_line($linenr, $cond_lines)
+ . "\n" if ($cond_lines);
+ if (defined($stat_real) && $cond_lines > 1) {
+ $stat_real = "[...]\n$stat_real";
+ }
+
+ ERROR("trailing statements should be on next line\n" . $herecurr . $stat_real);
+ }
+ }
+
+# Check for bitwise tests written as boolean
+ if ($line =~ /
+ (?:
+ (?:\[|\(|\&\&|\|\|)
+ \s*0[xX][0-9]+\s*
+ (?:\&\&|\|\|)
+ |
+ (?:\&\&|\|\|)
+ \s*0[xX][0-9]+\s*
+ (?:\&\&|\|\||\)|\])
+ )/x)
+ {
+ ERROR("boolean test with hexadecimal, perhaps just 1 \& or \|?\n" . $herecurr);
+ }
+
+# if and else should not have general statements after it
+ if ($line =~ /^.\s*(?:}\s*)?else\b(.*)/) {
+ my $s = $1;
+ $s =~ s/$;//g; # Remove any comments
+ if ($s !~ /^\s*(?:\sif|(?:{|)\s*\\?\s*$)/) {
+ ERROR("trailing statements should be on next line\n" . $herecurr);
+ }
+ }
+# if should not continue a brace
+ if ($line =~ /}\s*if\b/) {
+ ERROR("trailing statements should be on next line\n" .
+ $herecurr);
+ }
+# case and default should not have general statements after them
+ if ($line =~ /^.\s*(?:case\s*.*|default\s*):/g &&
+ $line !~ /\G(?:
+ (?:\s*$;*)(?:\s*{)?(?:\s*$;*)(?:\s*\\)?\s*$|
+ \s*return\s+
+ )/xg)
+ {
+ ERROR("trailing statements should be on next line\n" . $herecurr);
+ }
+
+ # Check for }<nl>else {, these must be at the same
+ # indent level to be relevant to each other.
+ if ($prevline=~/}\s*$/ and $line=~/^.\s*else\s*/ and
+ $previndent == $indent) {
+ ERROR("else should follow close brace '}'\n" . $hereprev);
+ }
+
+ if ($prevline=~/}\s*$/ and $line=~/^.\s*while\s*/ and
+ $previndent == $indent) {
+ my ($s, $c) = ctx_statement_block($linenr, $realcnt, 0);
+
+ # Find out what is on the end of the line after the
+ # conditional.
+ substr($s, 0, length($c), '');
+ $s =~ s/\n.*//g;
+
+ if ($s =~ /^\s*;/) {
+ ERROR("while should follow close brace '}'\n" . $hereprev);
+ }
+ }
+
+#no spaces allowed after \ in define
+ if ($line=~/\#\s*define.*\\\s$/) {
+ ERROR("Whitespace after \\ makes next lines useless\n" . $herecurr);
+ }
+
+# multi-statement macros should be enclosed in a do while loop, grab the
+# first statement and ensure its the whole macro if its not enclosed
+# in a known good container
+ if ($realfile !~ m@/vmlinux.lds.h$@ &&
+ $line =~ /^.\s*\#\s*define\s*$Ident(\()?/) {
+ my $ln = $linenr;
+ my $cnt = $realcnt;
+ my ($off, $dstat, $dcond, $rest);
+ my $ctx = '';
+
+ my $args = defined($1);
+
+ # Find the end of the macro and limit our statement
+ # search to that.
+ while ($cnt > 0 && defined $lines[$ln - 1] &&
+ $lines[$ln - 1] =~ /^(?:-|..*\\$)/)
+ {
+ $ctx .= $rawlines[$ln - 1] . "\n";
+ $cnt-- if ($lines[$ln - 1] !~ /^-/);
+ $ln++;
+ }
+ $ctx .= $rawlines[$ln - 1];
+
+ ($dstat, $dcond, $ln, $cnt, $off) =
+ ctx_statement_block($linenr, $ln - $linenr + 1, 0);
+ #print "dstat<$dstat> dcond<$dcond> cnt<$cnt> off<$off>\n";
+ #print "LINE<$lines[$ln-1]> len<" . length($lines[$ln-1]) . "\n";
+
+ # Extract the remainder of the define (if any) and
+ # rip off surrounding spaces, and trailing \'s.
+ $rest = '';
+ while ($off != 0 || ($cnt > 0 && $rest =~ /\\\s*$/)) {
+ #print "ADDING cnt<$cnt> $off <" . substr($lines[$ln - 1], $off) . "> rest<$rest>\n";
+ if ($off != 0 || $lines[$ln - 1] !~ /^-/) {
+ $rest .= substr($lines[$ln - 1], $off) . "\n";
+ $cnt--;
+ }
+ $ln++;
+ $off = 0;
+ }
+ $rest =~ s/\\\n.//g;
+ $rest =~ s/^\s*//s;
+ $rest =~ s/\s*$//s;
+
+ # Clean up the original statement.
+ if ($args) {
+ substr($dstat, 0, length($dcond), '');
+ } else {
+ $dstat =~ s/^.\s*\#\s*define\s+$Ident\s*//;
+ }
+ $dstat =~ s/$;//g;
+ $dstat =~ s/\\\n.//g;
+ $dstat =~ s/^\s*//s;
+ $dstat =~ s/\s*$//s;
+
+ # Flatten any parentheses and braces
+ while ($dstat =~ s/\([^\(\)]*\)/1/ ||
+ $dstat =~ s/\{[^\{\}]*\}/1/ ||
+ $dstat =~ s/\[[^\{\}]*\]/1/)
+ {
+ }
+
+ my $exceptions = qr{
+ $Declare|
+ module_param_named|
+ MODULE_PARAM_DESC|
+ DECLARE_PER_CPU|
+ DEFINE_PER_CPU|
+ __typeof__\(|
+ union|
+ struct|
+ \.$Ident\s*=\s*|
+ ^\"|\"$
+ }x;
+ #print "REST<$rest> dstat<$dstat> ctx<$ctx>\n";
+ if ($rest ne '' && $rest ne ',') {
+ if ($rest !~ /while\s*\(/ &&
+ $dstat !~ /$exceptions/)
+ {
+ ERROR("Macros with multiple statements should be enclosed in a do - while loop\n" . "$here\n$ctx\n");
+ }
+
+ } elsif ($ctx !~ /;/) {
+ if ($dstat ne '' &&
+ $dstat !~ /^(?:$Ident|-?$Constant)$/ &&
+ $dstat !~ /$exceptions/ &&
+ $dstat !~ /^\.$Ident\s*=/ &&
+ $dstat =~ /$Operators/)
+ {
+ ERROR("Macros with complex values should be enclosed in parenthesis\n" . "$here\n$ctx\n");
+ }
+ }
+ }
+
+# check for missing bracing around if etc
+ if ($line =~ /(^.*)\b(?:if|while|for)\b/ &&
+ $line !~ /\#\s*if/) {
+ my $allowed = 0;
+
+ # Check the pre-context.
+ if ($line =~ /(\}.*?)$/) {
+ my $pre = $1;
+
+ if ($line !~ /else/) {
+ print "APW: ALLOWED: pre<$pre> line<$line>\n"
+ if $dbg_adv_apw;
+ $allowed = 1;
+ }
+ }
+ my ($level, $endln, @chunks) =
+ ctx_statement_full($linenr, $realcnt, 1);
+ if ($dbg_adv_apw) {
+ print "APW: chunks<$#chunks> linenr<$linenr> endln<$endln> level<$level>\n";
+ print "APW: <<$chunks[1][0]>><<$chunks[1][1]>>\n"
+ if $#chunks >= 1;
+ }
+ if ($#chunks >= 0 && $level == 0) {
+ my $seen = 0;
+ my $herectx = $here . "\n";
+ my $ln = $linenr - 1;
+ for my $chunk (@chunks) {
+ my ($cond, $block) = @{$chunk};
+
+ # If the condition carries leading newlines, then count those as offsets.
+ my ($whitespace) = ($cond =~ /^((?:\s*\n[+-])*\s*)/s);
+ my $offset = statement_rawlines($whitespace) - 1;
+
+ #print "COND<$cond> whitespace<$whitespace> offset<$offset>\n";
+
+ # We have looked at and allowed this specific line.
+ $suppress_ifbraces{$ln + $offset} = 1;
+
+ $herectx .= "$rawlines[$ln + $offset]\n[...]\n";
+ $ln += statement_rawlines($block) - 1;
+
+ substr($block, 0, length($cond), '');
+
+ my $spaced_block = $block;
+ $spaced_block =~ s/\n\+/ /g;
+
+ $seen++ if ($spaced_block =~ /^\s*\{/);
+
+ print "APW: cond<$cond> block<$block> allowed<$allowed>\n"
+ if $dbg_adv_apw;
+ if (statement_lines($cond) > 1) {
+ print "APW: ALLOWED: cond<$cond>\n"
+ if $dbg_adv_apw;
+ $allowed = 1;
+ }
+ if ($block =~/\b(?:if|for|while)\b/) {
+ print "APW: ALLOWED: block<$block>\n"
+ if $dbg_adv_apw;
+ $allowed = 1;
+ }
+ if (statement_block_size($block) > 1) {
+ print "APW: ALLOWED: lines block<$block>\n"
+ if $dbg_adv_apw;
+ $allowed = 1;
+ }
+ }
+ $allowed=1; # disable for now.
+ if ($seen != ($#chunks + 1) && !$allowed) {
+ ERROR("braces {} are necessary for all arms of this statement\n" . $herectx);
+ }
+ }
+ }
+ if (!defined $suppress_ifbraces{$linenr - 1} &&
+ $line =~ /\b(if|while|for|else)\b/ &&
+ $line !~ /\#\s*if/ &&
+ $line !~ /\#\s*else/) {
+ my $allowed = 0;
+
+ # Check the pre-context.
+ if (substr($line, 0, $-[0]) =~ /(\}\s*)$/) {
+ my $pre = $1;
+
+ if ($line !~ /else/) {
+ print "APW: ALLOWED: pre<$pre> line<$line>\n"
+ if $dbg_adv_apw;
+ $allowed = 1;
+ }
+ }
+
+ my ($level, $endln, @chunks) =
+ ctx_statement_full($linenr, $realcnt, $-[0]);
+
+ # Check the condition.
+ my ($cond, $block) = @{$chunks[0]};
+ print "CHECKING<$linenr> cond<$cond> block<$block>\n"
+ if $dbg_adv_checking;
+ if (defined $cond) {
+ substr($block, 0, length($cond), '');
+ }
+ if (statement_lines($cond) > 1) {
+ print "APW: ALLOWED: cond<$cond>\n"
+ if $dbg_adv_apw;
+ $allowed = 1;
+ }
+ if ($block =~/\b(?:if|for|while)\b/) {
+ print "APW: ALLOWED: block<$block>\n"
+ if $dbg_adv_apw;
+ $allowed = 1;
+ }
+ if (statement_block_size($block) > 1) {
+ print "APW: ALLOWED: lines block<$block>\n"
+ if $dbg_adv_apw;
+ $allowed = 1;
+ }
+ # Check the post-context.
+ if (defined $chunks[1]) {
+ my ($cond, $block) = @{$chunks[1]};
+ if (defined $cond) {
+ substr($block, 0, length($cond), '');
+ }
+ if ($block =~ /^\s*\{/) {
+ print "APW: ALLOWED: chunk-1 block<$block>\n"
+ if $dbg_adv_apw;
+ $allowed = 1;
+ }
+ }
+ print "DCS: level=$level block<$block> allowed=$allowed\n"
+ if $dbg_adv_dcs;
+ if ($level == 0 && $block !~ /^\s*\{/ && !$allowed) {
+ my $herectx = $here . "\n";;
+ my $cnt = statement_rawlines($block);
+
+ for (my $n = 0; $n < $cnt; $n++) {
+ $herectx .= raw_line($linenr, $n) . "\n";;
+ }
+
+ WARN("braces {} are encouraged even for single statement blocks\n" . $herectx);
+ }
+ }
+
+# warn about #if 0
+ if ($line =~ /^.\s*\#\s*if\s+0\b/) {
+ ERROR("if this code is redundant consider removing it\n" .
+ $herecurr);
+ }
+
+# Check that the storage class is at the beginning of a declaration
+ if ($line =~ /\b$Storage\b/ && $line !~ /^.\s*$Storage\b/) {
+ ERROR("storage class should be at the beginning of the declaration\n" . $herecurr)
+ }
+
+# check the location of the inline attribute, that it is between
+# storage class and type.
+ if ($line =~ /\b$Type\s+$Inline\b/ ||
+ $line =~ /\b$Inline\s+$Storage\b/) {
+ ERROR("inline keyword should sit between storage class and type\n" . $herecurr);
+ }
+
+# check for sizeof(&)
+ if ($line =~ /\bsizeof\s*\(\s*\&/) {
+ ERROR("sizeof(& should be avoided\n" . $herecurr);
+ }
+
+# check for new externs in .c files.
+ if ($realfile =~ /\.c$/ && defined $stat &&
+ $stat =~ /^.\s*(?:extern\s+)?$Type\s+($Ident)(\s*)\(/s)
+ {
+ my $function_name = $1;
+ my $paren_space = $2;
+
+ my $s = $stat;
+ if (defined $cond) {
+ substr($s, 0, length($cond), '');
+ }
+ if ($s =~ /^\s*;/ &&
+ $function_name ne 'uninitialized_var')
+ {
+ ERROR("externs should be avoided in .c files\n" . $herecurr);
+ }
+
+ if ($paren_space =~ /\n/) {
+ ERROR("arguments for function declarations should follow identifier\n" . $herecurr);
+ }
+
+ } elsif ($realfile =~ /\.c$/ && defined $stat &&
+ $stat =~ /^.\s*extern\s+/)
+ {
+ ERROR("externs should be avoided in .c files\n" . $herecurr);
+ }
+
+# check for gcc specific __FUNCTION__
+ if ($line =~ /__FUNCTION__/) {
+ ERROR("__func__ should be used instead of gcc specific __FUNCTION__\n" . $herecurr);
+ }
+
+# recommend sigaction over signal for portability, when establishing a handler
+ if ($line =~ /\bsignal\s*\(/ && !($line =~ /SIG_(?:IGN|DFL)/)) {
+ ERROR("use sigaction to establish signal handlers; signal is not portable\n" . $herecurr);
+ }
+
+# format strings checks
+ my $string;
+ while ($line =~ /(?:^|")([X\t]*)(?:"|$)/g) {
+ $string = substr($rawline, $-[1], $+[1] - $-[1]);
+ $string =~ s/%%/__/g;
+ # check for %L{u,d,i} in strings
+ if ($string =~ /(?<!%)%L[udi]/) {
+ ERROR("\%Ld/%Lu are not-standard C, use %lld/%llu\n" . $herecurr);
+ }
+ }
+
+ # Continue checking for error messages that contains newlines. This
+ # check handles cases where string literals are spread over multiple lines.
+ # Example:
+ # error_report("Error msg line #1"
+ # "Error msg line #2\n");
+ my $quoted_newline_regex = qr{\+\s*\".*\\n.*\"};
+ my $continued_str_literal = qr{\+\s*\".*\"};
+
+ if ($rawline =~ /$quoted_newline_regex/) {
+ # Backtrack to first line that does not contain only a quoted literal
+ # and assume that it is the start of the statement.
+ my $i = $linenr - 2;
+
+ while (($i >= 0) & $rawlines[$i] =~ /$continued_str_literal/) {
+ $i--;
+ }
+ }
+
+ }
+
+ # If we have no input at all, then there is nothing to report on
+ # so just keep quiet.
+ if ($#rawlines == -1) {
+ return 1;
+ }
+
+ # In mailback mode only produce a report in the negative, for
+ # things that appear to be patches.
+ if ($mailback && ($clean == 1 || !$is_patch)) {
+ return 1;
+ }
+
+ # This is not a patch, and we are are in 'no-patch' mode so
+ # just keep quiet.
+ if (!$chk_patch && !$is_patch) {
+ return 1;
+ }
+
+ if (!$is_patch && $filename !~ /cover-letter\.patch$/) {
+ ERROR("Does not appear to be a unified-diff format patch\n");
+ }
+
+ print report_dump();
+ if ($summary && !($clean == 1 && $quiet == 1)) {
+ print "$filename " if ($summary_file);
+ print "total: $cnt_error errors, $cnt_warn warnings, " .
+ "$cnt_lines lines checked\n";
+ print "\n" if ($quiet == 0);
+ }
+
+ if ($quiet == 0) {
+ # If there were whitespace errors which cleanpatch can fix
+ # then suggest that.
+# if ($rpt_cleaners) {
+# print "NOTE: whitespace errors detected, you may wish to use scripts/cleanpatch or\n";
+# print " scripts/cleanfile\n\n";
+# }
+ }
+
+ if ($clean == 1 && $quiet == 0) {
+ print "$vname has no obvious style problems and is ready for submission.\n"
+ }
+
+ return ($no_warnings ? $clean : $cnt_error == 0);
+}
diff --git a/tools/build/cross-build/Makefile b/tools/build/cross-build/Makefile
index 69c1e9c49844..72d78d7b6588 100644
--- a/tools/build/cross-build/Makefile
+++ b/tools/build/cross-build/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
NO_OBJ=
SCRIPTS= date.sh hostname.sh
diff --git a/tools/build/cross-build/capsicum_stubs.c b/tools/build/cross-build/capsicum_stubs.c
index 227ef3496b09..75eff8534fc4 100644
--- a/tools/build/cross-build/capsicum_stubs.c
+++ b/tools/build/cross-build/capsicum_stubs.c
@@ -33,8 +33,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
#include <sys/types.h>
#include <sys/capsicum.h>
diff --git a/tools/build/cross-build/date.sh b/tools/build/cross-build/date.sh
index f697a7f0cd54..4e8cd150147a 100644
--- a/tools/build/cross-build/date.sh
+++ b/tools/build/cross-build/date.sh
@@ -1,6 +1,5 @@
#!/bin/sh
#
-# $FreeBSD$
#
exec /bin/date -r0 "$@"
diff --git a/tools/build/cross-build/fake_chflags/Makefile b/tools/build/cross-build/fake_chflags/Makefile
index c4559be0e778..75c251a2b272 100644
--- a/tools/build/cross-build/fake_chflags/Makefile
+++ b/tools/build/cross-build/fake_chflags/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
NO_OBJ=
SCRIPTS= chflags
diff --git a/tools/build/cross-build/fake_chflags/chflags b/tools/build/cross-build/fake_chflags/chflags
index cd9becba5112..7baa4712636f 100644
--- a/tools/build/cross-build/fake_chflags/chflags
+++ b/tools/build/cross-build/fake_chflags/chflags
@@ -34,7 +34,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
# chflags doesn't exist on Linux, just skip the calls for now
# TODO: we could also create a wrapper that calls `chattr +i` for `chflags schg`, etc
diff --git a/tools/build/cross-build/fake_sysctl.c b/tools/build/cross-build/fake_sysctl.c
index 289fb83652f6..4f1b271f3858 100644
--- a/tools/build/cross-build/fake_sysctl.c
+++ b/tools/build/cross-build/fake_sysctl.c
@@ -35,8 +35,6 @@
*/
/* This file contains wrappers for sysctls used during build/install */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/sysctl.h>
#include <err.h>
diff --git a/tools/build/cross-build/fgetln_fallback.c b/tools/build/cross-build/fgetln_fallback.c
index 9bd202c125da..000cd38ce596 100644
--- a/tools/build/cross-build/fgetln_fallback.c
+++ b/tools/build/cross-build/fgetln_fallback.c
@@ -26,7 +26,7 @@
*/
#include <stdio.h>
-#include <sys/cdefs.h>
+
#include <sys/types.h>
#include <string.h>
diff --git a/tools/build/cross-build/hostname.sh b/tools/build/cross-build/hostname.sh
index 855741beca85..24aaeb8e2a29 100644
--- a/tools/build/cross-build/hostname.sh
+++ b/tools/build/cross-build/hostname.sh
@@ -1,6 +1,5 @@
#!/bin/sh
#
-# $FreeBSD$
#
echo dummy
diff --git a/tools/build/cross-build/include/common/db.h b/tools/build/cross-build/include/common/db.h
index 8e429abc792f..ac00000cda6e 100644
--- a/tools/build/cross-build/include/common/db.h
+++ b/tools/build/cross-build/include/common/db.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/common/getopt.h b/tools/build/cross-build/include/common/getopt.h
index 621011d69c1c..9db08597351e 100644
--- a/tools/build/cross-build/include/common/getopt.h
+++ b/tools/build/cross-build/include/common/getopt.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/common/grp.h b/tools/build/cross-build/include/common/grp.h
index 750e1e9a49f6..b666209d928b 100644
--- a/tools/build/cross-build/include/common/grp.h
+++ b/tools/build/cross-build/include/common/grp.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/common/libcasper.h b/tools/build/cross-build/include/common/libcasper.h
index dd5afa9a0573..b41b212d3085 100644
--- a/tools/build/cross-build/include/common/libcasper.h
+++ b/tools/build/cross-build/include/common/libcasper.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/common/libelf.h b/tools/build/cross-build/include/common/libelf.h
index 5bbd34777648..be77a08eb3e2 100644
--- a/tools/build/cross-build/include/common/libelf.h
+++ b/tools/build/cross-build/include/common/libelf.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
/* Needed to get opensolaris stuff to compile */
diff --git a/tools/build/cross-build/include/common/libutil.h b/tools/build/cross-build/include/common/libutil.h
index 5e4e0422d3b2..15afd2fbca15 100644
--- a/tools/build/cross-build/include/common/libutil.h
+++ b/tools/build/cross-build/include/common/libutil.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/common/machine/endian.h b/tools/build/cross-build/include/common/machine/endian.h
index d70b60ca39f7..8a05f636d1f7 100644
--- a/tools/build/cross-build/include/common/machine/endian.h
+++ b/tools/build/cross-build/include/common/machine/endian.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#if __has_include_next(<machine/endian.h>)
#include_next <machine/endian.h>
diff --git a/tools/build/cross-build/include/common/netconfig.h b/tools/build/cross-build/include/common/netconfig.h
index 95f3bb94d2f4..c592b4076bb6 100644
--- a/tools/build/cross-build/include/common/netconfig.h
+++ b/tools/build/cross-build/include/common/netconfig.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/common/netdb.h b/tools/build/cross-build/include/common/netdb.h
index 350174ebde9b..b2cf0b6fb305 100644
--- a/tools/build/cross-build/include/common/netdb.h
+++ b/tools/build/cross-build/include/common/netdb.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include_next <netdb.h>
diff --git a/tools/build/cross-build/include/common/osreldate.h b/tools/build/cross-build/include/common/osreldate.h
index 801cc5e41210..714351e9cb59 100644
--- a/tools/build/cross-build/include/common/osreldate.h
+++ b/tools/build/cross-build/include/common/osreldate.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/common/pwd.h b/tools/build/cross-build/include/common/pwd.h
index 14abc7fcadf0..a34955a63780 100644
--- a/tools/build/cross-build/include/common/pwd.h
+++ b/tools/build/cross-build/include/common/pwd.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
@@ -41,6 +39,10 @@
#define user_from_uid __nbcompat_user_from_uid
+#ifndef _PASSWORD_EFMT1
+#define _PASSWORD_EFMT1 '_' /* extended encryption format */
+#endif
+
int pwcache_userdb(int (*a_setpassent)(int), void (*a_endpwent)(void),
struct passwd *(*a_getpwnam)(const char *),
struct passwd *(*a_getpwuid)(uid_t));
diff --git a/tools/build/cross-build/include/common/string.h b/tools/build/cross-build/include/common/string.h
index 8a33f4d4ff19..56909e9bca0a 100644
--- a/tools/build/cross-build/include/common/string.h
+++ b/tools/build/cross-build/include/common/string.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/common/sys/_iovec.h b/tools/build/cross-build/include/common/sys/_iovec.h
index 89f09c7c7d27..35b290bd3dbf 100644
--- a/tools/build/cross-build/include/common/sys/_iovec.h
+++ b/tools/build/cross-build/include/common/sys/_iovec.h
@@ -32,7 +32,5 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/common/sys/_null.h b/tools/build/cross-build/include/common/sys/_null.h
index 5b65c8c3ebf8..8be996a8fbde 100644
--- a/tools/build/cross-build/include/common/sys/_null.h
+++ b/tools/build/cross-build/include/common/sys/_null.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/common/sys/_types.h b/tools/build/cross-build/include/common/sys/_types.h
index 129eaf52357d..650edc8080d0 100644
--- a/tools/build/cross-build/include/common/sys/_types.h
+++ b/tools/build/cross-build/include/common/sys/_types.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/common/sys/cdefs.h b/tools/build/cross-build/include/common/sys/cdefs.h
index 6d62333bcffe..3f9b7866141f 100644
--- a/tools/build/cross-build/include/common/sys/cdefs.h
+++ b/tools/build/cross-build/include/common/sys/cdefs.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
/* musl libc does not provide a sys/cdefs.h header */
@@ -109,6 +107,9 @@
#define __predict_false(exp) __builtin_expect((exp), 0)
#endif
+#ifndef __weak_symbol
+#define __weak_symbol __attribute__((__weak__))
+#endif
#ifndef __weak_reference
#ifdef __ELF__
#define __weak_reference(sym, alias) \
@@ -120,6 +121,12 @@
#endif
#endif
+#ifndef __WEAK
+#ifdef __ELF__
+#define __WEAK(sym) __asm__(".weak " __XSTRING(sym))
+#endif
+#endif
+
/* Some files built as part of the bootstrap libegacy use these macros, but
* since we aren't actually building libc.so, we can defined them to be empty */
#ifndef __sym_compat
@@ -248,6 +255,13 @@
#define __DEQUALIFY(type, var) ((type)(__uintptr_t)(const volatile void *)(var))
#endif
+#ifndef __nosanitizeaddress
+#if __has_attribute(no_sanitize) && defined(__clang__)
+#define __nosanitizeaddress __attribute__((no_sanitize("address")))
+#else
+#define __nosanitizeaddress
+#endif
+#endif
/* Expose all declarations when using FreeBSD headers */
#define __POSIX_VISIBLE 200809
diff --git a/tools/build/cross-build/include/common/sys/ctype.h b/tools/build/cross-build/include/common/sys/ctype.h
index 68a4f9807ca7..ed218e19ffc7 100644
--- a/tools/build/cross-build/include/common/sys/ctype.h
+++ b/tools/build/cross-build/include/common/sys/ctype.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include <ctype.h>
diff --git a/tools/build/cross-build/include/common/sys/limits.h b/tools/build/cross-build/include/common/sys/limits.h
index 01fbe99c863a..04c422ed426f 100644
--- a/tools/build/cross-build/include/common/sys/limits.h
+++ b/tools/build/cross-build/include/common/sys/limits.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <limits.h>
#if __has_include_next(<sys/limits.h>)
diff --git a/tools/build/cross-build/include/common/sys/mman.h b/tools/build/cross-build/include/common/sys/mman.h
index f3ce83fd1df8..de8657aff304 100644
--- a/tools/build/cross-build/include/common/sys/mman.h
+++ b/tools/build/cross-build/include/common/sys/mman.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/common/sys/param.h b/tools/build/cross-build/include/common/sys/param.h
index f672b1067d46..c09cd9865a93 100644
--- a/tools/build/cross-build/include/common/sys/param.h
+++ b/tools/build/cross-build/include/common/sys/param.h
@@ -35,8 +35,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/common/sys/stdint.h b/tools/build/cross-build/include/common/sys/stdint.h
index 98f7010b308d..a97052244343 100644
--- a/tools/build/cross-build/include/common/sys/stdint.h
+++ b/tools/build/cross-build/include/common/sys/stdint.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#if defined(__has_include_next) && __has_include_next(<sys/stdint.h>)
diff --git a/tools/build/cross-build/include/common/sys/sysctl.h b/tools/build/cross-build/include/common/sys/sysctl.h
index 6d6f5438c557..3d7ecc7a5b02 100644
--- a/tools/build/cross-build/include/common/sys/sysctl.h
+++ b/tools/build/cross-build/include/common/sys/sysctl.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/common/sys/types.h b/tools/build/cross-build/include/common/sys/types.h
index 044ca6bed4f8..18b607ed82d2 100644
--- a/tools/build/cross-build/include/common/sys/types.h
+++ b/tools/build/cross-build/include/common/sys/types.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include_next <sys/types.h>
@@ -68,4 +66,8 @@ typedef unsigned long cap_ioctl_t;
struct cap_rights;
typedef struct cap_rights cap_rights_t;
+
+/* Needed for bitstring */
+#include <sys/bitcount.h>
+
#endif
diff --git a/tools/build/cross-build/include/common/unistd.h b/tools/build/cross-build/include/common/unistd.h
index 593dd700f140..19efc57005bd 100644
--- a/tools/build/cross-build/include/common/unistd.h
+++ b/tools/build/cross-build/include/common/unistd.h
@@ -32,13 +32,16 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include_next <unistd.h>
#include <getopt.h>
+struct crypt_data {
+ int initialized; /* For compatibility with glibc. */
+ char __buf[256]; /* Buffer returned by crypt_r(). */
+};
+
static inline int
check_utility_compat(const char *utility __unused)
{
diff --git a/tools/build/cross-build/include/linux/__unused_workaround_end.h b/tools/build/cross-build/include/linux/__unused_workaround_end.h
index eaf3d3a8f836..728e25ead9b0 100644
--- a/tools/build/cross-build/include/linux/__unused_workaround_end.h
+++ b/tools/build/cross-build/include/linux/__unused_workaround_end.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
/* Used to workaround system headers with struct members called __unused */
#ifdef __unused_undefd
diff --git a/tools/build/cross-build/include/linux/__unused_workaround_start.h b/tools/build/cross-build/include/linux/__unused_workaround_start.h
index 2f0ab003ad24..e01d5fc9971d 100644
--- a/tools/build/cross-build/include/linux/__unused_workaround_start.h
+++ b/tools/build/cross-build/include/linux/__unused_workaround_start.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
/* Used to workaround system headers with struct members called __unused */
#ifdef __unused
diff --git a/tools/build/cross-build/include/linux/__used_workaround_end.h b/tools/build/cross-build/include/linux/__used_workaround_end.h
index 99cc6c16ac26..d38c5711a30d 100644
--- a/tools/build/cross-build/include/linux/__used_workaround_end.h
+++ b/tools/build/cross-build/include/linux/__used_workaround_end.h
@@ -33,8 +33,6 @@
* 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.
- *
- * $FreeBSD$
*/
/* Used to workaround system headers with struct members called __used */
#ifdef __used_undefd
diff --git a/tools/build/cross-build/include/linux/__used_workaround_start.h b/tools/build/cross-build/include/linux/__used_workaround_start.h
index ee290ce30169..c81e9c67248e 100644
--- a/tools/build/cross-build/include/linux/__used_workaround_start.h
+++ b/tools/build/cross-build/include/linux/__used_workaround_start.h
@@ -33,8 +33,6 @@
* 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.
- *
- * $FreeBSD$
*/
/* Used to workaround system headers with struct members called __used */
#ifdef __used
diff --git a/tools/build/cross-build/include/linux/ctype.h b/tools/build/cross-build/include/linux/ctype.h
index fbd30580d1a9..afacebfbad91 100644
--- a/tools/build/cross-build/include/linux/ctype.h
+++ b/tools/build/cross-build/include/linux/ctype.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include_next <ctype.h>
diff --git a/tools/build/cross-build/include/linux/endian.h b/tools/build/cross-build/include/linux/endian.h
index 92adf095636a..f4fc6855b398 100644
--- a/tools/build/cross-build/include/linux/endian.h
+++ b/tools/build/cross-build/include/linux/endian.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include_next <endian.h>
diff --git a/tools/build/cross-build/include/linux/errno.h b/tools/build/cross-build/include/linux/errno.h
index 37f166aebabf..b05c6bb02aae 100644
--- a/tools/build/cross-build/include/linux/errno.h
+++ b/tools/build/cross-build/include/linux/errno.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include_next <errno.h>
diff --git a/tools/build/cross-build/include/linux/fcntl.h b/tools/build/cross-build/include/linux/fcntl.h
index 4fa169d4ed4c..aafcfe43a325 100644
--- a/tools/build/cross-build/include/linux/fcntl.h
+++ b/tools/build/cross-build/include/linux/fcntl.h
@@ -35,8 +35,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/linux/libutil.h b/tools/build/cross-build/include/linux/libutil.h
index 7a448babb9a8..8f9ca406edc1 100644
--- a/tools/build/cross-build/include/linux/libutil.h
+++ b/tools/build/cross-build/include/linux/libutil.h
@@ -32,12 +32,9 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
-#include <sys/cdefs.h>
#include <sys/types.h>
#include <sys/socket.h>
diff --git a/tools/build/cross-build/include/linux/limits.h b/tools/build/cross-build/include/linux/limits.h
index 833b49b49348..5eca34b1120c 100644
--- a/tools/build/cross-build/include/linux/limits.h
+++ b/tools/build/cross-build/include/linux/limits.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#if __has_include_next(<limits.h>)
#include_next <limits.h>
diff --git a/tools/build/cross-build/include/linux/nbtool_config.h b/tools/build/cross-build/include/linux/nbtool_config.h
index a3c39308a62f..d99b39739a48 100644
--- a/tools/build/cross-build/include/linux/nbtool_config.h
+++ b/tools/build/cross-build/include/linux/nbtool_config.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/linux/netdb.h b/tools/build/cross-build/include/linux/netdb.h
index e1832cca3efa..2680b4736982 100644
--- a/tools/build/cross-build/include/linux/netdb.h
+++ b/tools/build/cross-build/include/linux/netdb.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/linux/regex.h b/tools/build/cross-build/include/linux/regex.h
index a27053750c3e..858e26386653 100644
--- a/tools/build/cross-build/include/linux/regex.h
+++ b/tools/build/cross-build/include/linux/regex.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include_next <regex.h>
diff --git a/tools/build/cross-build/include/linux/resolv.h b/tools/build/cross-build/include/linux/resolv.h
index 99652b78825b..4d075a05ffa5 100644
--- a/tools/build/cross-build/include/linux/resolv.h
+++ b/tools/build/cross-build/include/linux/resolv.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include_next <resolv.h>
diff --git a/tools/build/cross-build/include/linux/signal.h b/tools/build/cross-build/include/linux/signal.h
index 5d4cdcd19fab..177c7f6169f0 100644
--- a/tools/build/cross-build/include/linux/signal.h
+++ b/tools/build/cross-build/include/linux/signal.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/linux/spawn.h b/tools/build/cross-build/include/linux/spawn.h
index 873add3275af..a9b9f8de97a0 100644
--- a/tools/build/cross-build/include/linux/spawn.h
+++ b/tools/build/cross-build/include/linux/spawn.h
@@ -36,8 +36,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/linux/stdio.h b/tools/build/cross-build/include/linux/stdio.h
index c5aa893b320c..202b65508aeb 100644
--- a/tools/build/cross-build/include/linux/stdio.h
+++ b/tools/build/cross-build/include/linux/stdio.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
/* No #pragam once since glibc can include this multiple times */
diff --git a/tools/build/cross-build/include/linux/stdlib.h b/tools/build/cross-build/include/linux/stdlib.h
index 1e559ce1158c..66ac46239a41 100644
--- a/tools/build/cross-build/include/linux/stdlib.h
+++ b/tools/build/cross-build/include/linux/stdlib.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include <sys/cdefs.h>
diff --git a/tools/build/cross-build/include/linux/string.h b/tools/build/cross-build/include/linux/string.h
index 1d173974a5bd..8fac9e0fe083 100644
--- a/tools/build/cross-build/include/linux/string.h
+++ b/tools/build/cross-build/include/linux/string.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
@@ -49,8 +47,11 @@
#include <sys/cdefs.h>
__BEGIN_DECLS
+#if !defined(__GLIBC__) || \
+ (defined(__GLIBC__) && (!__GLIBC_PREREQ(2, 38) || !defined(_GNU_SOURCE)))
size_t strlcpy(char *dst, const char *src, size_t siz);
size_t strlcat(char *dst, const char *src, size_t siz);
+#endif
char *strnstr(const char *str, const char *find, size_t str_len);
void strmode(mode_t mode, char *str);
diff --git a/tools/build/cross-build/include/linux/strings.h b/tools/build/cross-build/include/linux/strings.h
new file mode 100644
index 000000000000..36e451f277eb
--- /dev/null
+++ b/tools/build/cross-build/include/linux/strings.h
@@ -0,0 +1,38 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright 2022 Jessica Clarke <jrtc27@FreeBSD.org>
+ *
+ * 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.
+ */
+#pragma once
+#include <sys/cdefs.h>
+
+#include_next <strings.h>
+
+__BEGIN_DECLS
+
+int fls(int) __pure2;
+int flsl(long) __pure2;
+int flsll(long long) __pure2;
+
+__END_DECLS
diff --git a/tools/build/cross-build/include/linux/sys/disk.h b/tools/build/cross-build/include/linux/sys/disk.h
index d4dc46768756..b0cd0ef16609 100644
--- a/tools/build/cross-build/include/linux/sys/disk.h
+++ b/tools/build/cross-build/include/linux/sys/disk.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include <sys/mount.h>
diff --git a/tools/build/cross-build/include/linux/sys/endian.h b/tools/build/cross-build/include/linux/sys/endian.h
index 0c068a4793d5..085b3616c742 100644
--- a/tools/build/cross-build/include/linux/sys/endian.h
+++ b/tools/build/cross-build/include/linux/sys/endian.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/linux/sys/filio.h b/tools/build/cross-build/include/linux/sys/filio.h
index 9433875ca5ec..7f9ffb8f92a2 100644
--- a/tools/build/cross-build/include/linux/sys/filio.h
+++ b/tools/build/cross-build/include/linux/sys/filio.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/linux/sys/ioccom.h b/tools/build/cross-build/include/linux/sys/ioccom.h
index a70e20312940..021377abe471 100644
--- a/tools/build/cross-build/include/linux/sys/ioccom.h
+++ b/tools/build/cross-build/include/linux/sys/ioccom.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include <sys/ioctl.h>
diff --git a/tools/build/cross-build/include/linux/sys/mount.h b/tools/build/cross-build/include/linux/sys/mount.h
index be66e8ca5b62..edd8e29da91a 100644
--- a/tools/build/cross-build/include/linux/sys/mount.h
+++ b/tools/build/cross-build/include/linux/sys/mount.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include_next <sys/mount.h>
diff --git a/tools/build/cross-build/include/linux/sys/param.h b/tools/build/cross-build/include/linux/sys/param.h
index 305d2767ae7e..33679d39ed49 100644
--- a/tools/build/cross-build/include/linux/sys/param.h
+++ b/tools/build/cross-build/include/linux/sys/param.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include_next <sys/param.h>
diff --git a/tools/build/cross-build/include/linux/sys/stat.h b/tools/build/cross-build/include/linux/sys/stat.h
index 72c6bb950ce9..fa40b7e747b6 100644
--- a/tools/build/cross-build/include/linux/sys/stat.h
+++ b/tools/build/cross-build/include/linux/sys/stat.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
/*
diff --git a/tools/build/cross-build/include/linux/sys/time.h b/tools/build/cross-build/include/linux/sys/time.h
index 1c86bb9ba85d..d78dd401545a 100644
--- a/tools/build/cross-build/include/linux/sys/time.h
+++ b/tools/build/cross-build/include/linux/sys/time.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/linux/sys/ttycom.h b/tools/build/cross-build/include/linux/sys/ttycom.h
index 8a1f7cf7c3d6..8f2cbf121e42 100644
--- a/tools/build/cross-build/include/linux/sys/ttycom.h
+++ b/tools/build/cross-build/include/linux/sys/ttycom.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/linux/sys/types.h b/tools/build/cross-build/include/linux/sys/types.h
index b3bb61c1f1fd..770b3057f8a8 100644
--- a/tools/build/cross-build/include/linux/sys/types.h
+++ b/tools/build/cross-build/include/linux/sys/types.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/linux/sys/ucred.h b/tools/build/cross-build/include/linux/sys/ucred.h
index 89f09c7c7d27..35b290bd3dbf 100644
--- a/tools/build/cross-build/include/linux/sys/ucred.h
+++ b/tools/build/cross-build/include/linux/sys/ucred.h
@@ -32,7 +32,5 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/linux/sys/wait.h b/tools/build/cross-build/include/linux/sys/wait.h
new file mode 100644
index 000000000000..ca17bfae9b8a
--- /dev/null
+++ b/tools/build/cross-build/include/linux/sys/wait.h
@@ -0,0 +1,47 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright 2021 Jessica Clarke <jrtc27@FreeBSD.org>
+ *
+ * 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.
+ */
+
+#pragma once
+
+/*
+ * glibc's sys/wait.h and stdlib.h both define various wait-related constants,
+ * depending on __USE_XOPEN(2K8) and if the other header has been included.
+ * Since they each probe the other's include guard to determine that, there is
+ * a window between a header defining its include guard and checking for the
+ * other's within which, if the other is included for the first time, they both
+ * believe the other has already defined the relevant macros etc, and so
+ * neither ends up doing so. This was not previously hit, and is still not hit
+ * when using glibc normally (though seems extremely fragile). However, as of
+ * glibc 2.34, signal.h, included by sys/wait, includes a new bits/sigstksz,
+ * which in turn includes unistd.h (when _SC_SIGSTKSZ_SOURCE is defined, which
+ * is implied by _GNU_SOURCE), which we wrap and include stdlib.h from,
+ * creating the exact aforementioned situation that breaks. Thus, forcefully
+ * include stdlib.h first whenever sys/wait.h is as a workaround, since that
+ * way round still works.
+ */
+#include <stdlib.h>
+#include_next <sys/wait.h>
diff --git a/tools/build/cross-build/include/linux/time.h b/tools/build/cross-build/include/linux/time.h
index 189f1f266916..bc3c4c81021b 100644
--- a/tools/build/cross-build/include/linux/time.h
+++ b/tools/build/cross-build/include/linux/time.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
/* We can't use #pragma once here since at least the version of time.h
* shipped with glibc must be included more than once with different
diff --git a/tools/build/cross-build/include/linux/unistd.h b/tools/build/cross-build/include/linux/unistd.h
index f518df2ac9ae..ce179724e17b 100644
--- a/tools/build/cross-build/include/linux/unistd.h
+++ b/tools/build/cross-build/include/linux/unistd.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
@@ -41,17 +39,9 @@
/* Ensure that unistd.h pulls in getopt */
#define __USE_POSIX2
#endif
-/*
- * Before version 2.25, glibc's unistd.h would define the POSIX subset of
- * getopt.h by defining __need_getopt, including getopt.h (which would
- * disable the header guard) and then undefining it so later including
- * getopt.h explicitly would define the extensions. However, we wrap getopt,
- * and so the wrapper's #pragma once breaks that. Thus getopt.h must be
- * included before the real unistd.h to ensure we get all the extensions.
- */
-#include <getopt.h>
#include_next <unistd.h>
#include <fcntl.h>
+#include <getopt.h>
#include <stdlib.h>
#include <string.h>
#include <sys/syscall.h>
diff --git a/tools/build/cross-build/include/linux/wctype.h b/tools/build/cross-build/include/linux/wctype.h
index 8c4a44d8bbe3..044a34fbd16b 100644
--- a/tools/build/cross-build/include/linux/wctype.h
+++ b/tools/build/cross-build/include/linux/wctype.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include_next <wctype.h>
diff --git a/tools/build/cross-build/include/mac/libutil.h b/tools/build/cross-build/include/mac/libutil.h
index 5812e58ed39f..2f654986a06f 100644
--- a/tools/build/cross-build/include/mac/libutil.h
+++ b/tools/build/cross-build/include/mac/libutil.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/mac/nbtool_config.h b/tools/build/cross-build/include/mac/nbtool_config.h
index cb1bf1a0b655..db5903b9adf3 100644
--- a/tools/build/cross-build/include/mac/nbtool_config.h
+++ b/tools/build/cross-build/include/mac/nbtool_config.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/mac/signal.h b/tools/build/cross-build/include/mac/signal.h
index cdcaab75f326..9c2ccca21da2 100644
--- a/tools/build/cross-build/include/mac/signal.h
+++ b/tools/build/cross-build/include/mac/signal.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include_next <signal.h>
diff --git a/tools/build/cross-build/include/mac/stdlib.h b/tools/build/cross-build/include/mac/stdlib.h
index 314ae0d1dca6..7e84039d29ad 100644
--- a/tools/build/cross-build/include/mac/stdlib.h
+++ b/tools/build/cross-build/include/mac/stdlib.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include_next <stdlib.h>
@@ -42,6 +40,7 @@ __BEGIN_DECLS
int rpmatch(const char *response);
+char *secure_getenv(const char *name);
long long strtonum(const char *numstr, long long minval, long long maxval,
const char **errstrp);
diff --git a/tools/build/cross-build/include/mac/string.h b/tools/build/cross-build/include/mac/string.h
index 3f9ec4935a37..d7db0d3023a4 100644
--- a/tools/build/cross-build/include/mac/string.h
+++ b/tools/build/cross-build/include/mac/string.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/mac/sys/_types.h b/tools/build/cross-build/include/mac/sys/_types.h
index fd14a7836792..5ca37580b85a 100644
--- a/tools/build/cross-build/include/mac/sys/_types.h
+++ b/tools/build/cross-build/include/mac/sys/_types.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include_next <sys/_types.h>
diff --git a/tools/build/cross-build/include/mac/sys/endian.h b/tools/build/cross-build/include/mac/sys/endian.h
index f64a6d47beaf..64f548e6dc50 100644
--- a/tools/build/cross-build/include/mac/sys/endian.h
+++ b/tools/build/cross-build/include/mac/sys/endian.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/include/mac/sys/linker_set.h b/tools/build/cross-build/include/mac/sys/linker_set.h
new file mode 100644
index 000000000000..c0b81747c78b
--- /dev/null
+++ b/tools/build/cross-build/include/mac/sys/linker_set.h
@@ -0,0 +1,140 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 1999 John D. Polstra
+ * Copyright (c) 1999,2001 Peter Wemm <peter@FreeBSD.org>
+ * All rights reserved.
+ * Copyright (c) 2023 Jessica Clarke <jrtc27@FreeBSD.org>
+ *
+ * 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.
+ */
+
+#ifndef _SYS_LINKER_SET_H_
+#define _SYS_LINKER_SET_H_
+
+#include <mach-o/dyld.h>
+#include <mach-o/getsect.h>
+
+/*
+ * The following macros are used to declare global sets of objects, which
+ * are collected by the linker into a `linker_set' as defined below.
+ * For Mach-O, this is done by constructing a separate section for each set.
+ */
+
+#define __MAKE_SET_CONST const
+
+/*
+ * Private macros, not to be used outside this header file.
+ */
+
+/*
+ * The userspace address sanitizer inserts redzones around global variables,
+ * violating the assumption that linker set elements are packed.
+ */
+#define __NOASAN __nosanitizeaddress
+
+#define __MAKE_SET_QV(set, sym, qv) \
+ static void const * qv \
+ __NOASAN \
+ __set_##set##_sym_##sym __section("__DATA,set_" #set) \
+ __used = &(sym)
+#define __MAKE_SET(set, sym) __MAKE_SET_QV(set, sym, __MAKE_SET_CONST)
+
+static inline __pure2 uint8_t *
+__set_getsectiondata(const char *segname, const char *sectname,
+ unsigned long *size)
+{
+ uint32_t image_count, image_index;
+ const struct mach_header *mh;
+ uint8_t *ret;
+
+ image_count = _dyld_image_count();
+ for (image_index = 0; image_index < image_count; ++image_index) {
+ mh = _dyld_get_image_header(image_index);
+ if (mh == NULL)
+ continue;
+
+ ret = getsectiondata((const struct mach_header_64 *)mh,
+ segname, sectname, size);
+ if (ret != NULL)
+ return (ret);
+ }
+
+ return (NULL);
+}
+
+#define __SET_RANGE(set) ({ \
+ unsigned long __set_size; \
+ char *__set_data; \
+ __set_data = __set_getsectiondata("__DATA", \
+ "set_" #set, &__set_size); \
+ (struct { \
+ __CONCAT(__typeof_set_,set) **begin; \
+ __CONCAT(__typeof_set_,set) **limit; \
+ }){ \
+ .begin = (__CONCAT(__typeof_set_,set) **)__set_data, \
+ .limit = (__CONCAT(__typeof_set_,set) **)(__set_data + \
+ __set_size) \
+ }; \
+})
+
+/*
+ * Public macros.
+ */
+#define TEXT_SET(set, sym) __MAKE_SET(set, sym)
+#define DATA_SET(set, sym) __MAKE_SET(set, sym)
+#define DATA_WSET(set, sym) __MAKE_SET_QV(set, sym, )
+#define BSS_SET(set, sym) __MAKE_SET(set, sym)
+#define ABS_SET(set, sym) __MAKE_SET(set, sym)
+#define SET_ENTRY(set, sym) __MAKE_SET(set, sym)
+
+/*
+ * Initialize before referring to a given linker set.
+ */
+#define SET_DECLARE(set, ptype) \
+ typedef ptype __CONCAT(__typeof_set_,set)
+
+#define SET_BEGIN(set) \
+ (__SET_RANGE(set).begin)
+#define SET_LIMIT(set) \
+ (__SET_RANGE(set).limit)
+
+/*
+ * Iterate over all the elements of a set.
+ *
+ * Sets always contain addresses of things, and "pvar" points to words
+ * containing those addresses. Thus is must be declared as "type **pvar",
+ * and the address of each set item is obtained inside the loop by "*pvar".
+ */
+#define SET_FOREACH(pvar, set) \
+ for (pvar = SET_BEGIN(set); pvar < SET_LIMIT(set); pvar++)
+
+#define SET_ITEM(set, i) \
+ ((SET_BEGIN(set))[i])
+
+/*
+ * Provide a count of the items in a set.
+ */
+#define SET_COUNT(set) \
+ (SET_LIMIT(set) - SET_BEGIN(set))
+
+#endif /* _SYS_LINKER_SET_H_ */
diff --git a/tools/build/cross-build/include/mac/sys/stat.h b/tools/build/cross-build/include/mac/sys/stat.h
index 0ff5ac929d06..95a9d0ce4764 100644
--- a/tools/build/cross-build/include/mac/sys/stat.h
+++ b/tools/build/cross-build/include/mac/sys/stat.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include_next <sys/stat.h>
diff --git a/tools/build/cross-build/include/mac/sys/time.h b/tools/build/cross-build/include/mac/sys/time.h
index 094764b8888c..6a0526c552e1 100644
--- a/tools/build/cross-build/include/mac/sys/time.h
+++ b/tools/build/cross-build/include/mac/sys/time.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
#include_next <sys/time.h>
diff --git a/tools/build/cross-build/include/mac/unistd.h b/tools/build/cross-build/include/mac/unistd.h
index 3a4010e0d013..8af6af93821e 100644
--- a/tools/build/cross-build/include/mac/unistd.h
+++ b/tools/build/cross-build/include/mac/unistd.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/cross-build/mkimg/Makefile b/tools/build/cross-build/mkimg/Makefile
index 932f6150f118..405d579fb633 100644
--- a/tools/build/cross-build/mkimg/Makefile
+++ b/tools/build/cross-build/mkimg/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
# allow building mkimg as a host tool.
diff --git a/tools/build/cross-build/mkimg/Makefile.depend b/tools/build/cross-build/mkimg/Makefile.depend
index f80275d86ab1..11aba52f82cf 100644
--- a/tools/build/cross-build/mkimg/Makefile.depend
+++ b/tools/build/cross-build/mkimg/Makefile.depend
@@ -1,4 +1,3 @@
-# $FreeBSD$
# Autogenerated - do NOT edit!
DIRDEPS = \
diff --git a/tools/build/cross-build/progname.c b/tools/build/cross-build/progname.c
index 645227df48d7..81467627f164 100644
--- a/tools/build/cross-build/progname.c
+++ b/tools/build/cross-build/progname.c
@@ -34,8 +34,6 @@
* SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <stdlib.h>
#ifdef __GLIBC__
diff --git a/tools/build/cross-build/secure_getenv.c b/tools/build/cross-build/secure_getenv.c
new file mode 100644
index 000000000000..466035f31a40
--- /dev/null
+++ b/tools/build/cross-build/secure_getenv.c
@@ -0,0 +1,16 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2023 Mark Johnston <markj@FreeBSD.org>
+ */
+
+#include <stdlib.h>
+#include <unistd.h>
+
+char *
+secure_getenv(const char *name)
+{
+ if (issetugid() != 0)
+ return (NULL);
+ return (getenv(name));
+}
diff --git a/tools/build/depend-cleanup.sh b/tools/build/depend-cleanup.sh
index ae393c2451f0..71988e526369 100755
--- a/tools/build/depend-cleanup.sh
+++ b/tools/build/depend-cleanup.sh
@@ -1,6 +1,5 @@
#!/bin/sh
#
-# $FreeBSD$
#
# Our current make(1)-based approach to dependency tracking cannot cope with
# certain source tree changes, including:
@@ -17,23 +16,90 @@
# anyone would try a NO_CLEAN build against an object tree from before the
# related change. One year should be sufficient.
+set -e
+set -u
+
+warn()
+{
+ echo "$(basename "$0"):" "$@" >&2
+}
+
+err()
+{
+ warn "$@"
+ exit 1
+}
+
+usage()
+{
+ echo "usage: $(basename $0) [-v] [-n] objtop" >&2
+}
+
+VERBOSE=
+PRETEND=
+while getopts vn o; do
+ case "$o" in
+ v)
+ VERBOSE=1
+ ;;
+ n)
+ PRETEND=1
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+ esac
+done
+shift $((OPTIND-1))
+
+if [ $# -ne 1 ]; then
+ usage
+ exit 1
+fi
+
OBJTOP=$1
+shift
if [ ! -d "$OBJTOP" ]; then
- echo "usage: $(basename $0) objtop" >&2
- exit 1
+ err "$OBJTOP: Not a directory"
+fi
+
+if [ -z "${MACHINE+set}" ]; then
+ err "MACHINE not set"
fi
+if [ -z "${MACHINE_ARCH+set}" ]; then
+ err "MACHINE_ARCH not set"
+fi
+
+if [ -z "${ALL_libcompats+set}" ]; then
+ err "ALL_libcompats not set"
+fi
+
+run()
+{
+ if [ "$VERBOSE" ]; then
+ echo "$@"
+ fi
+ if ! [ "$PRETEND" ]; then
+ "$@"
+ fi
+}
+
# $1 directory
# $2 source filename w/o extension
# $3 source extension
clean_dep()
{
- if [ -e "$OBJTOP"/$1/.depend.$2.pico ] && \
- egrep -qw "$2\.$3" "$OBJTOP"/$1/.depend.$2.pico; then \
- echo "Removing stale dependencies for $2.$3"; \
- rm -f "$OBJTOP"/$1/.depend.$2.* \
- "$OBJTOP"/obj-lib32/$1/.depend.$2.*
- fi
+ for libcompat in "" $ALL_libcompats; do
+ dirprfx=${libcompat:+obj-lib${libcompat}/}
+ if egrep -qw "$2\.$3" "$OBJTOP"/$dirprfx$1/.depend.$2.*o 2>/dev/null; then
+ echo "Removing stale ${libcompat:+lib${libcompat} }dependencies and objects for $2.$3"
+ run rm -f \
+ "$OBJTOP"/$dirprfx$1/.depend.$2.* \
+ "$OBJTOP"/$dirprfx$1/$2.*o
+ fi
+ done
}
# Date Rev Description
@@ -47,14 +113,17 @@ if [ -e "$OBJTOP"/cddl/lib/libzfs/.depend.libzfs_changelist.o ] && \
egrep -qw "cddl/contrib/opensolaris/lib/libzfs/common/libzfs_changelist.c" \
"$OBJTOP"/cddl/lib/libzfs/.depend.libzfs_changelist.o; then
echo "Removing old ZFS tree"
- rm -rf "$OBJTOP"/cddl "$OBJTOP"/obj-lib32/cddl
+ for libcompat in "" $ALL_libcompats; do
+ dirprfx=${libcompat:+obj-lib${libcompat}/}
+ run rm -rf "$OBJTOP"/${dirprfx}cddl
+ done
fi
# 20200916 WARNS bumped, need bootstrapped crunchgen stubs
if [ -e "$OBJTOP"/rescue/rescue/rescue.c ] && \
! grep -q 'crunched_stub_t' "$OBJTOP"/rescue/rescue/rescue.c; then
echo "Removing old rescue(8) tree"
- rm -rf "$OBJTOP"/rescue/rescue
+ run rm -rf "$OBJTOP"/rescue/rescue
fi
# 20210105 fda7daf06301 pfctl gained its own version of pf_ruleset.c
@@ -62,14 +131,100 @@ if [ -e "$OBJTOP"/sbin/pfctl/.depend.pf_ruleset.o ] && \
egrep -qw "sys/netpfil/pf/pf_ruleset.c" \
"$OBJTOP"/sbin/pfctl/.depend.pf_ruleset.o; then
echo "Removing old pf_ruleset dependecy file"
- rm -rf "$OBJTOP"/sbin/pfctl/.depend.pf_ruleset.o
+ run rm -rf "$OBJTOP"/sbin/pfctl/.depend.pf_ruleset.o
fi
# 20210108 821aa63a0940 non-widechar version of ncurses removed
if [ -e "$OBJTOP"/lib/ncurses/ncursesw ]; then
echo "Removing stale ncurses objects"
- rm -rf "$OBJTOP"/lib/ncurses "$OBJTOP"/obj-lib32/lib/ncurses
+ for libcompat in "" $ALL_libcompats; do
+ dirprfx=${libcompat:+obj-lib${libcompat}/}
+ run rm -rf "$OBJTOP"/${dirprfx}lib/ncurses
+ done
fi
# 20210608 f20893853e8e move from atomic.S to atomic.c
-clean_dep cddl/lib/libspl atomic S
+clean_dep cddl/lib/libspl atomic S
+# 20211207 cbdec8db18b5 switch to libthr-friendly pdfork
+clean_dep lib/libc pdfork S
+
+# 20211230 5e6a2d6eb220 libc++.so.1 path changed in ldscript
+if [ -e "$OBJTOP"/lib/libc++/libc++.ld ] && \
+ fgrep -q "/usr/lib/libc++.so" "$OBJTOP"/lib/libc++/libc++.ld; then
+ echo "Removing old libc++ linker script"
+ run rm -f "$OBJTOP"/lib/libc++/libc++.ld
+fi
+
+# 20220326 fbc002cb72d2 move from bcmp.c to bcmp.S
+if [ "$MACHINE_ARCH" = "amd64" ]; then
+ clean_dep lib/libc bcmp c
+fi
+
+# 20220524 68fe988a40ca kqueue_test binary replaced shell script
+if stat "$OBJTOP"/tests/sys/kqueue/libkqueue/*kqtest* \
+ "$OBJTOP"/tests/sys/kqueue/libkqueue/.depend.kqtest* >/dev/null 2>&1; then
+ echo "Removing old kqtest"
+ run rm -f "$OBJTOP"/tests/sys/kqueue/libkqueue/.depend.* \
+ "$OBJTOP"/tests/sys/kqueue/libkqueue/*
+fi
+
+# 20221115 42d10b1b56f2 move from rs.c to rs.cc
+clean_dep usr.bin/rs rs c
+
+# 20230110 bc42155199b5 usr.sbin/zic/zic -> usr.sbin/zic
+if [ -d "$OBJTOP"/usr.sbin/zic/zic ] ; then
+ echo "Removing old zic directory"
+ run rm -rf "$OBJTOP"/usr.sbin/zic/zic
+fi
+
+# 20230208 29c5f8bf9a01 move from mkmakefile.c to mkmakefile.cc
+clean_dep usr.sbin/config mkmakefile c
+# 20230209 83d7ed8af3d9 convert to main.cc and mkoptions.cc
+clean_dep usr.sbin/config main c
+clean_dep usr.sbin/config mkoptions c
+
+# 20230401 54579376c05e kqueue1 from syscall to C wrapper
+clean_dep lib/libc kqueue1 S
+
+# 20230623 b077aed33b7b OpenSSL 3.0 update
+if [ -f "$OBJTOP"/secure/lib/libcrypto/aria.o ]; then
+ echo "Removing old OpenSSL 1.1.1 tree"
+ for libcompat in "" $ALL_libcompats; do
+ dirprfx=${libcompat:+obj-lib${libcompat}/}
+ run rm -rf "$OBJTOP"/${dirprfx}secure/lib/libcrypto \
+ "$OBJTOP"/${dirprfx}secure/lib/libssl
+ done
+fi
+
+# 20230714 ee8b0c436d72 replace ffs/fls implementations with clang builtins
+clean_dep lib/libc ffs S
+clean_dep lib/libc ffsl S
+clean_dep lib/libc ffsll S
+clean_dep lib/libc fls S
+clean_dep lib/libc flsl S
+clean_dep lib/libc flsll S
+
+# 20230815 28f6c2f29280 GoogleTest update
+if [ -e "$OBJTOP"/tests/sys/fs/fusefs/mockfs.o ] && \
+ grep -q '_ZN7testing8internal18g_linked_ptr_mutexE' "$OBJTOP"/tests/sys/fs/fusefs/mockfs.o; then
+ echo "Removing stale fusefs GoogleTest objects"
+ run rm -rf "$OBJTOP"/tests/sys/fs/fusefs
+fi
+
+# 20231031 0527c9bdc718 Remove forward compat ino64 stuff
+clean_dep lib/libc fstat c
+clean_dep lib/libc fstatat c
+clean_dep lib/libc fstatfs c
+clean_dep lib/libc getdirentries c
+clean_dep lib/libc getfsstat c
+clean_dep lib/libc statfs c
+
+# 20240308 e6ffc7669a56 Remove pointless MD syscall(2)
+# 20240308 0ee0ae237324 Remove pointless MD syscall(2)
+# 20240308 7b3836c28188 Remove pointless MD syscall(2)
+if [ ${MACHINE} != i386 -a -f "$OBJTOP"/lib/libsys/.depend.syscall.o ] && \
+ grep -q -e 'libsys/[^ /]*/syscall.S' "$OBJTOP"/lib/libsys/.depend.syscall.*; then
+ echo "Removing stale <arch>/syscall.S depends"
+ clean_dep lib/libsys syscall S
+ clean_dep lib/libc syscall S
+fi
diff --git a/tools/build/dummy.c b/tools/build/dummy.c
index b656a0305a97..8aff747b3f7e 100644
--- a/tools/build/dummy.c
+++ b/tools/build/dummy.c
@@ -1,5 +1,4 @@
/*
- * $FreeBSD$
*
* Empty file to keep linker happy.
*/
diff --git a/tools/build/fcntl.h b/tools/build/fcntl.h
index 3f88a4bf73d3..6aaf3eef2804 100644
--- a/tools/build/fcntl.h
+++ b/tools/build/fcntl.h
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#ifndef _LEGACY_SYS_FCNTL_H_
diff --git a/tools/build/freebsd-yeet.pl b/tools/build/freebsd-yeet.pl
new file mode 100755
index 000000000000..33466a5c1094
--- /dev/null
+++ b/tools/build/freebsd-yeet.pl
@@ -0,0 +1,147 @@
+#!/usr/local/bin/perl
+#
+# Remove almost all of the $ FreeBSD $ tags in the tree.
+#
+# Copyright (c) 2023, Warner Losh
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Needs p5-File-Lib package
+# Caveat Emptor
+#
+use strict;
+use warnings;
+use File::Find;
+
+sub skip_list
+{
+ my $fn = $_[0];
+
+ if ($fn =~ m=^./contrib/=) {
+ return 1;
+ }
+ if ($fn =~ m=^./sys/contrib/=) {
+ return 1;
+ }
+ if ($fn =~ m=^./cddl/contrib/=) {
+ return 1;
+ }
+ if ($fn =~ m=^./crypto/=) {
+ return 1;
+ }
+ if ($fn =~ m=^./.git/=) {
+ return 1;
+ }
+ if ($fn =~ m=~$=) {
+ return 1;
+ }
+ return 0;
+}
+
+my $pretty;
+my $pattern;
+my $repl;
+my $count;
+my $syshash;
+my $hash;
+
+sub do_one
+{
+ $pretty = $_[0];
+ $pattern = $_[1];
+ $repl = "";
+ $repl = $_[2];
+ $syshash = $_[3];
+ $hash = $_[4];
+ $count = 0;
+
+ sub findfiles
+ {
+ return unless -f;
+ my $fn="$File::Find::name";
+ return if skip_list($fn);
+ open my $fh, '<', $_ or die "Can't open $fn: $!\n";
+ local $/;
+ my $file = <$fh>;
+ close $fh;
+ my $len = length($file);
+
+ $file =~ s=$pattern=$repl=gm;
+ my $len2 = length($file);
+ return if $len2 == $len;
+ print "$pretty: $fn\n";
+ open my $fhw, '>', $_ or die "Can't write $fn: $!\n";
+ print $fhw $file;
+ close $fhw;
+ $count++;
+ }
+
+ $count = 0;
+ find({ wanted => \&findfiles, }, './sys');
+ if ($count > 0) {
+ print "Changed $pretty\n";
+ system("git commit -a -m'sys: Remove \$FreeBSD\$: $pretty\n\nRemove /$pattern/\n\nSimilar commit in current:\n(cherry picked from commit $syshash)'");
+ }
+ $count = 0;
+ find({ wanted => \&findfiles, }, '.');
+ if ($count > 0) {
+ print "Changed $pretty\n";
+ system("git commit -a -m'Remove \$FreeBSD\$: $pretty\n\nRemove /$pattern/\n\nSimilar commit in main:\n(cherry picked from commit $hash)'");
+ }
+}
+
+# These are the commits to head
+# 9524e274b548 Remove $FreeBSD$: one-line xdr pattern
+# 26a58599a09a Remove $FreeBSD$: one-line forth tag
+# 401ab69cff8f Remove $FreeBSD$: one-line ps tag
+# 6ef644f5889a Remove $FreeBSD$: one-line lua tag
+# 9636a14538f5 Remove $FreeBSD$: two-line lua tag
+# 8c99d94c900f sys: Remove $FreeBSD$: two-line lua tag
+# ae992a336e8d Remove $FreeBSD$: one-line catalog
+# 2063df147163 sys: Remove $FreeBSD$: one-line catalog
+# 05248206f720 Remove $FreeBSD$: one-line bare tag
+# 78d146160dc5 sys: Remove $FreeBSD$: one-line bare tag
+# b2c76c41be32 Remove $FreeBSD$: one-line nroff pattern
+# fa9896e082a1 Remove $FreeBSD$: two-line nroff pattern
+# 9e7892125655 sys: Remove $FreeBSD$: two-line nroff pattern
+# d0b2dbfa0ecf Remove $FreeBSD$: one-line sh pattern
+# 031beb4e239b sys: Remove $FreeBSD$: one-line sh pattern
+# b1cfcffa89e6 Remove $FreeBSD$: one-line .S pattern
+# d4bf8003ee42 sys: Remove $FreeBSD$: one-line .S pattern
+# c8573564095b Remove $FreeBSD$: alt one-line .c pattern
+# da5432eda807 Remove $FreeBSD$: alt two-line .c pattern
+# 1d386b48a555 Remove $FreeBSD$: one-line .c pattern
+# 685dc743dc3b sys: Remove $FreeBSD$: one-line .c pattern
+# e5d258c9e599 Remove $FreeBSD$: two-line .c pattern
+# dfc016587a1e sys: Remove $FreeBSD$: two-line .c pattern
+# 2a63c3be1582 Remove $FreeBSD$: one-line .c comment pattern
+# 71625ec9ad2a sys: Remove $FreeBSD$: one-line .c comment pattern
+# 42b388439bd3 Remove $FreeBSD$: one-line .h pattern
+# 2ff63af9b88c sys: Remove $FreeBSD$: one-line .h pattern
+# b3e7694832e8 Remove $FreeBSD$: two-line .h pattern
+# 95ee2897e98f sys: Remove $FreeBSD$: two-line .h pattern
+# d54a7d337331 Remove $FreeBSD$: one-line m4 tag
+# 82a265ad9bad sys: Remove $FreeBSD$: sound driver version
+
+# Note: Do two line before one line
+# commit message pattern replacement or '' sys hash src hash
+do_one("sound driver version", 'SND_DECLARE_FILE\("\$FreeBSD\$"\);', 'SND_DECLARE_FILE("");', '', '82a265ad9bad');
+do_one("one-line m4 tag", '^dnl\s*\$FreeBSD\$.*$\n', '', '', 'd54a7d337331');
+do_one("two-line .h pattern", '^\s*\*\n \*\s+\$FreeBSD\$$\n', '', '95ee2897e98f', 'b3e7694832e8');
+do_one("one-line .h pattern", '^\s*\*+\s*\$FreeBSD\$.*$\n', '', '2ff63af9b88c', '42b388439bd3');
+do_one("one-line .c comment pattern", '^/[*/]\s*\$FreeBSD\$.*\n', '', '71625ec9ad2a', '2a63c3be1582');
+do_one("two-line .c pattern", '^#include\s+<sys/cdefs.h>.*$\n\s+__FBSDID\("\$FreeBSD\$"\);\n','', 'dfc016587a1e', 'e5d258c9e599');
+do_one("one-line .c pattern", '^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n', '', '685dc743dc3b', '1d386b48a555');
+do_one("alt two-line .c pattern", '^\s*__RCSID\("\$FreeBSD\$"\);\n\n', '', '', 'da5432eda807');
+do_one("alt one-line .c pattern", '^\s*__RCSID\("\$FreeBSD\$"\);\n', '', '', 'c8573564095b');
+do_one("one-line .S pattern", '^\s\.(asciz|ident)\s+\"\$FreeBSD\$\".*\n', '', 'd4bf8003ee42', 'b1cfcffa89e6');
+do_one("one-line sh pattern", '^\s*#[#!]?\s*\$FreeBSD\$.*$\n', '', '031beb4e239b', 'd0b2dbfa0ecf');
+do_one("two-line nroff pattern", '^\.\\\\"\n\.\\\\"\s*\$FreeBSD\$$\n', '', '9e7892125655', 'fa9896e082a1');
+do_one("one-line nroff pattern", '^\.\\\\"\s*\$FreeBSD\$$\n', '', '', 'b2c76c41be32');
+do_one("one-line bare tag", '^\s*\$FreeBSD\$$\n', '', '78d146160dc5', '05248206f720');
+do_one("one-line catalog", '^\s*\$\s*\$FreeBSD\$$\n', '', '2063df147163', 'ae992a336e8d');
+do_one("two-line lua tag", '^--\n--\s*\$FreeBSD\$.*$\n', '', '8c99d94c900f', '9636a14538f5');
+do_one("one-line lua tag", '^--\s*\$FreeBSD\$.*$\n', '', '', '6ef644f5889a');
+do_one("one-line ps tag", '^%\s*RCSID:\s*\$FreeBSD\$.*$\n', '', '', '401ab69cff8f');
+do_one("one-line forth tag", '^\\\\[\s*]*\$FreeBSD\$.*$\n', '', '', '26a58599a09a');
+do_one("one-line xdr pattern", '^\s*%\s*__FBSDID\("\$FreeBSD\$"\);?\s*\n', '', '', '9524e274b548');
+exit;
diff --git a/tools/build/fspacectl.c b/tools/build/fspacectl.c
index 13abca23a318..478539a8798c 100644
--- a/tools/build/fspacectl.c
+++ b/tools/build/fspacectl.c
@@ -27,8 +27,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <errno.h>
#include <fcntl.h>
diff --git a/tools/build/futimens.c b/tools/build/futimens.c
index 7d1cae701e97..d00f94d342ae 100644
--- a/tools/build/futimens.c
+++ b/tools/build/futimens.c
@@ -25,8 +25,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/stat.h>
#include <errno.h>
diff --git a/tools/build/libc-bootstrap/libc_private.h b/tools/build/libc-bootstrap/libc_private.h
index febee84ac24e..5b8e20d930d1 100644
--- a/tools/build/libc-bootstrap/libc_private.h
+++ b/tools/build/libc-bootstrap/libc_private.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/libc-bootstrap/namespace.h b/tools/build/libc-bootstrap/namespace.h
index 2c242f88072d..e453d1f0a796 100644
--- a/tools/build/libc-bootstrap/namespace.h
+++ b/tools/build/libc-bootstrap/namespace.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/libc-bootstrap/un-namespace.h b/tools/build/libc-bootstrap/un-namespace.h
index f08ab41ea543..4972077cb45b 100644
--- a/tools/build/libc-bootstrap/un-namespace.h
+++ b/tools/build/libc-bootstrap/un-namespace.h
@@ -32,8 +32,6 @@
* 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.
- *
- * $FreeBSD$
*/
#pragma once
diff --git a/tools/build/make.py b/tools/build/make.py
index 799ea89b74b3..73788a8896c7 100755
--- a/tools/build/make.py
+++ b/tools/build/make.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# PYTHON_ARGCOMPLETE_OKAY
# -
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Alex Richardson <arichardson@FreeBSD.org>
#
@@ -26,7 +26,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
# This script makes it easier to build on non-FreeBSD systems by bootstrapping
@@ -49,43 +48,96 @@ import sys
from pathlib import Path
+# List of targets that are independent of TARGET/TARGET_ARCH and thus do not
+# need them to be set. Keep in the same order as Makefile documents them (if
+# they are documented).
+mach_indep_targets = [
+ "cleanuniverse",
+ "universe",
+ "universe-toolchain",
+ "tinderbox",
+ "worlds",
+ "kernels",
+ "kernel-toolchains",
+ "targets",
+ "toolchains",
+ "makeman",
+ "sysent",
+]
+
+
def run(cmd, **kwargs):
cmd = list(map(str, cmd)) # convert all Path objects to str
debug("Running", cmd)
subprocess.check_call(cmd, **kwargs)
+# Always bootstraps in order to control bmake's config to ensure compatibility
def bootstrap_bmake(source_root, objdir_prefix):
bmake_source_dir = source_root / "contrib/bmake"
bmake_build_dir = objdir_prefix / "bmake-build"
bmake_install_dir = objdir_prefix / "bmake-install"
bmake_binary = bmake_install_dir / "bin/bmake"
+ bmake_config = bmake_install_dir / ".make-py-config"
+
+ bmake_source_version = subprocess.run([
+ "sh", "-c", ". \"$0\"/VERSION; echo $_MAKE_VERSION", bmake_source_dir],
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.strip()
+ try:
+ bmake_source_version = int(bmake_source_version)
+ except ValueError:
+ sys.exit("Invalid source bmake version '" + bmake_source_version + "'")
+
+ bmake_installed_version = 0
+ if bmake_binary.exists():
+ bmake_installed_version = subprocess.run([
+ bmake_binary, "-r", "-f", "/dev/null", "-V", "MAKE_VERSION"],
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.strip()
+ try:
+ bmake_installed_version = int(bmake_installed_version.strip())
+ except ValueError:
+ print("Invalid installed bmake version '" +
+ bmake_installed_version + "', treating as not present")
+
+ configure_args = [
+ "--with-default-sys-path=.../share/mk:" +
+ str(bmake_install_dir / "share/mk"),
+ "--with-machine=amd64", # TODO? "--with-machine-arch=amd64",
+ "--without-filemon", "--prefix=" + str(bmake_install_dir)]
- if (bmake_install_dir / "bin/bmake").exists():
+ configure_args_str = ' '.join([shlex.quote(x) for x in configure_args])
+ if bmake_config.exists():
+ last_configure_args_str = bmake_config.read_text()
+ else:
+ last_configure_args_str = ""
+
+ debug("Source bmake version: " + str(bmake_source_version))
+ debug("Installed bmake version: " + str(bmake_installed_version))
+ debug("Configure args: " + configure_args_str)
+ debug("Last configure args: " + last_configure_args_str)
+
+ if bmake_installed_version == bmake_source_version and \
+ configure_args_str == last_configure_args_str:
return bmake_binary
+
print("Bootstrapping bmake...")
- # TODO: check if the host system bmake is new enough and use that instead
- if not bmake_build_dir.exists():
- os.makedirs(str(bmake_build_dir))
+ if bmake_build_dir.exists():
+ shutil.rmtree(str(bmake_build_dir))
+ if bmake_install_dir.exists():
+ shutil.rmtree(str(bmake_install_dir))
+
+ os.makedirs(str(bmake_build_dir))
+
env = os.environ.copy()
global new_env_vars
env.update(new_env_vars)
- if sys.platform.startswith("linux"):
- # Work around the deleted file bmake/missing/sys/cdefs.h
- # TODO: bmake should keep the compat sys/cdefs.h
- env["CFLAGS"] = "-I{src}/tools/build/cross-build/include/common " \
- "-I{src}/tools/build/cross-build/include/linux " \
- "-D_GNU_SOURCE=1".format(src=source_root)
- configure_args = [
- "--with-default-sys-path=" + str(bmake_install_dir / "share/mk"),
- "--with-machine=amd64", # TODO? "--with-machine-arch=amd64",
- "--without-filemon", "--prefix=" + str(bmake_install_dir)]
run(["sh", bmake_source_dir / "boot-strap"] + configure_args,
cwd=str(bmake_build_dir), env=env)
-
run(["sh", bmake_source_dir / "boot-strap", "op=install"] + configure_args,
cwd=str(bmake_build_dir))
+ bmake_config.write_text(configure_args_str)
+
print("Finished bootstrapping bmake...")
return bmake_binary
@@ -119,6 +171,7 @@ def check_required_make_env_var(varname, binary_name, bindir):
if parsed_args.debug:
run([guess, "--version"])
+
def check_xtool_make_env_var(varname, binary_name):
# Avoid calling brew --prefix on macOS if all variables are already set:
if os.getenv(varname):
@@ -129,12 +182,14 @@ def check_xtool_make_env_var(varname, binary_name):
return check_required_make_env_var(varname, binary_name,
parsed_args.cross_bindir)
+
def default_cross_toolchain():
# default to homebrew-installed clang on MacOS if available
if sys.platform.startswith("darwin"):
if shutil.which("brew"):
- llvm_dir = subprocess.run(["brew", "--prefix", "llvm"],
- capture_output=True).stdout.strip()
+ llvm_dir = subprocess.run([
+ "brew", "--prefix", "llvm"],
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.strip()
debug("Inferred LLVM dir as", llvm_dir)
try:
if llvm_dir and Path(llvm_dir.decode("utf-8"), "bin").exists():
@@ -195,7 +250,7 @@ if __name__ == "__main__":
new_env_vars = {}
if not sys.platform.startswith("freebsd"):
if not is_make_var_set("TARGET") or not is_make_var_set("TARGET_ARCH"):
- if "universe" not in sys.argv and "tinderbox" not in sys.argv:
+ if not set(sys.argv).intersection(set(mach_indep_targets)):
sys.exit("TARGET= and TARGET_ARCH= must be set explicitly "
"when building on non-FreeBSD")
if not parsed_args.bootstrap_toolchain:
@@ -256,7 +311,7 @@ if __name__ == "__main__":
and not is_make_var_set("WITHOUT_CLEAN")):
# Avoid accidentally deleting all of the build tree and wasting lots of
# time cleaning directories instead of just doing a rm -rf ${.OBJDIR}
- want_clean = input("You did not set -DWITHOUT_CLEAN/--clean/--no-clean."
+ want_clean = input("You did not set -DWITHOUT_CLEAN/--(no-)clean."
" Did you really mean to do a clean build? y/[N] ")
if not want_clean.lower().startswith("y"):
bmake_args.append("-DWITHOUT_CLEAN")
@@ -267,5 +322,13 @@ if __name__ == "__main__":
shlex.quote(s) for s in [str(bmake_binary)] + bmake_args)
debug("Running `env ", env_cmd_str, " ", make_cmd_str, "`", sep="")
os.environ.update(new_env_vars)
+
+ # Fedora defines bash function wrapper for some shell commands and this
+ # makes 'which <command>' return the function's source code instead of
+ # the binary path. Undefine it to restore the original behavior.
+ os.unsetenv("BASH_FUNC_which%%")
+ os.unsetenv("BASH_FUNC_ml%%")
+ os.unsetenv("BASH_FUNC_module%%")
+
os.chdir(str(source_root))
os.execv(str(bmake_binary), [str(bmake_binary)] + bmake_args)
diff --git a/tools/build/make_check/Makefile b/tools/build/make_check/Makefile
index c9273c3efd85..d9efa7e4f8ab 100644
--- a/tools/build/make_check/Makefile
+++ b/tools/build/make_check/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.MAKE.MODE= normal
@@ -59,10 +58,6 @@ all:
@echo "ok 14 shell # Test shell detected no regression."
@${SMAKE} shell_1 || ${SMAKE} failure
@echo "ok 15 shell_1 # Test shell_1 detected no regression."
-.if !defined(.PARSEDIR)
- @${SMAKE} shell_2 || ${SMAKE} failure
- @echo "ok 16 shell_2 # Test shell_2 detected no regression."
-.endif
.if make(C_check)
C_check:
@@ -102,7 +97,6 @@ notdef:
.endif
.if make(modifiers)
-.if defined(.PARSEDIR)
# check if bmake can expand plain variables
.MAKE.EXPAND_VARIABLES= yes
x!= ${SMAKE} -V .CURDIR:H
@@ -110,21 +104,6 @@ modifiers:
.if ${.CURDIR:H} != "$x"
@false
.endif
-.else
-# See if make(1) supports the C modifier.
-modifiers: dollarV
- @if ${SMAKE} -V .CURDIR:C/.// 2>&1 >/dev/null | \
- grep -q "Unknown modifier 'C'"; then \
- false; \
- fi
-
-# check that make -V '${VAR}' works
-V_expn != V_OK=ok ${SMAKE} -r -f /dev/null -V '$${V_OK}'
-dollarV:
-.if ${V_expn} == ""
- @false
-.endif
-.endif
.endif
.if make(arith_expr)
diff --git a/tools/build/make_check/check.mk b/tools/build/make_check/check.mk
index f2d666d5ca43..2eac5edf403e 100644
--- a/tools/build/make_check/check.mk
+++ b/tools/build/make_check/check.mk
@@ -1,4 +1,3 @@
-# $FreeBSD$
all:
${MK} ${MK_ARG}
diff --git a/tools/build/make_check/regress.t b/tools/build/make_check/regress.t
index e37f3328bdf6..711559ed6e69 100644
--- a/tools/build/make_check/regress.t
+++ b/tools/build/make_check/regress.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
cd `dirname $0`
make all
diff --git a/tools/build/make_check/shell_test.sh b/tools/build/make_check/shell_test.sh
index 46169eb6efc2..4363618a2f36 100644
--- a/tools/build/make_check/shell_test.sh
+++ b/tools/build/make_check/shell_test.sh
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
echo $@
if ! test -t 0 ; then
cat
diff --git a/tools/build/mk/Makefile.boot b/tools/build/mk/Makefile.boot
index 7ebbf726e7f2..9f63a7499592 100644
--- a/tools/build/mk/Makefile.boot
+++ b/tools/build/mk/Makefile.boot
@@ -1,4 +1,3 @@
-# $FreeBSD$
CFLAGS+= -I${WORLDTMP}/legacy/usr/include
DPADD+= ${WORLDTMP}/legacy/usr/lib/libegacy.a
@@ -16,28 +15,27 @@ NM:= /usr/bin/nm
# Avoid stale dependecy warnings:
LIBC:=
-LIBZ:=
LIBM:=
LIBUTIL:=
LIBCPLUSPLUS:=
LIBARCHIVE:=
LIBPTHREAD:=
LIBMD:=${WORLDTMP}/legacy/usr/lib/libmd.a
-LIBNV:=${WORLDTMP}/legacy/usr/lib/libmd.a
+LIBNV:=${WORLDTMP}/legacy/usr/lib/libnv.a
LIBSBUF:=${WORLDTMP}/legacy/usr/lib/libsbuf.a
LIBY:=${WORLDTMP}/legacy/usr/lib/liby.a
LIBL:=${WORLDTMP}/legacy/usr/lib/libl.a
LIBROKEN:=${WORLDTMP}/legacy/usr/lib/libroken.a
LIBDWARF:=${WORLDTMP}/legacy/usr/lib/libdwarf.a
LIBELF:=${WORLDTMP}/legacy/usr/lib/libelf.a
+LIBZ:=${WORLDTMP}/legacy/usr/lib/libz.a
# Add various -Werror flags to catch missing function declarations
CFLAGS+= -Werror=implicit-function-declaration -Werror=implicit-int \
-Werror=return-type -Wundef
CFLAGS+= -DHAVE_NBTOOL_CONFIG_H=1
-CFLAGS+= -I${SRCTOP}/tools/build/cross-build/include/common
# This is needed for code that compiles for pre-C11 C standards
-CWARNFLAGS+= -Wno-typedef-redefinition
+CWARNFLAGS.clang+=-Wno-typedef-redefinition
# bsd.sys.mk explicitly turns on -Wsystem-headers, but that's extremely
# noisy when building on Linux.
CWARNFLAGS+= -Wno-system-headers
@@ -65,10 +63,15 @@ RANLIBFLAGS:=
# MacOS ships /usr/lib/libarchive.dylib but doesn't provide the headers
CFLAGS+= -idirafter ${SRCTOP}/contrib/libarchive/libarchive
.else
-.error "Unsupported build OS: ${.MAKE.OS}"
+.error Unsupported build OS: ${.MAKE.OS}
.endif
.endif # ${.MAKE.OS} != "FreeBSD"
+.if ${.MAKE.OS} != "FreeBSD"
+# Add the common compatibility headers after the OS-specific ones.
+CFLAGS+= -I${SRCTOP}/tools/build/cross-build/include/common
+.endif
+
# we do not want to capture dependencies referring to the above
UPDATE_DEPENDFILE= no
diff --git a/tools/build/mk/Makefile.boot.pre b/tools/build/mk/Makefile.boot.pre
index 4113c934fbc0..afad8d17b922 100644
--- a/tools/build/mk/Makefile.boot.pre
+++ b/tools/build/mk/Makefile.boot.pre
@@ -1,4 +1,3 @@
-# $FreeBSD$
# Various MK_* options need to be set before including bsd.prog.mk/bsd.lib.mk
.if ${.MAKE.OS} != "FreeBSD"
diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc
index 141f691ba83e..8898a405ea49 100644
--- a/tools/build/mk/OptionalObsoleteFiles.inc
+++ b/tools/build/mk/OptionalObsoleteFiles.inc
@@ -1,8 +1,9 @@
#
-# $FreeBSD$
#
-# This file add support for the WITHOUT_* and WITH_* knobs in src.conf(5) to
-# the check-old and delete-old* targets.
+# This file adds support for the WITHOUT_* and WITH_* knobs in src.conf(5) to
+# the check-old* and delete-old* targets.
+#
+# Blocks should be in sort(1) order by primary option.
#
.if ${MK_ACCT} == no
@@ -80,50 +81,6 @@ OLD_FILES+=usr/share/man/man1/batch.1.gz
OLD_FILES+=usr/share/man/man8/atrun.8.gz
.endif
-.if ${MK_ATM} == no
-OLD_FILES+=usr/bin/sscop
-OLD_FILES+=usr/include/netnatm/addr.h
-OLD_FILES+=usr/include/netnatm/api/atmapi.h
-OLD_FILES+=usr/include/netnatm/api/ccatm.h
-OLD_FILES+=usr/include/netnatm/api/unisap.h
-OLD_DIRS+=usr/include/netnatm/api
-OLD_FILES+=usr/include/netnatm/msg/uni_config.h
-OLD_FILES+=usr/include/netnatm/msg/uni_hdr.h
-OLD_FILES+=usr/include/netnatm/msg/uni_ie.h
-OLD_FILES+=usr/include/netnatm/msg/uni_msg.h
-OLD_FILES+=usr/include/netnatm/msg/unimsglib.h
-OLD_FILES+=usr/include/netnatm/msg/uniprint.h
-OLD_FILES+=usr/include/netnatm/msg/unistruct.h
-OLD_DIRS+=usr/include/netnatm/msg
-OLD_FILES+=usr/include/netnatm/saal/sscfu.h
-OLD_FILES+=usr/include/netnatm/saal/sscfudef.h
-OLD_FILES+=usr/include/netnatm/saal/sscop.h
-OLD_FILES+=usr/include/netnatm/saal/sscopdef.h
-OLD_DIRS+=usr/include/netnatm/saal
-OLD_FILES+=usr/include/netnatm/sig/uni.h
-OLD_FILES+=usr/include/netnatm/sig/unidef.h
-OLD_FILES+=usr/include/netnatm/sig/unisig.h
-OLD_DIRS+=usr/include/netnatm/sig
-OLD_FILES+=usr/include/netnatm/unimsg.h
-OLD_FILES+=usr/lib/libngatm.a
-OLD_FILES+=usr/lib/libngatm.so
-OLD_LIBS+=usr/lib/libngatm.so.4
-OLD_FILES+=usr/lib/libngatm_p.a
-.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
-OLD_FILES+=usr/lib32/libngatm.a
-OLD_FILES+=usr/lib32/libngatm.so
-OLD_LIBS+=usr/lib32/libngatm.so.4
-OLD_FILES+=usr/lib32/libngatm_p.a
-.endif
-OLD_FILES+=usr/share/man/man1/sscop.1.gz
-OLD_FILES+=usr/share/man/man3/libngatm.3.gz
-OLD_FILES+=usr/share/man/man3/uniaddr.3.gz
-OLD_FILES+=usr/share/man/man3/unifunc.3.gz
-OLD_FILES+=usr/share/man/man3/unimsg.3.gz
-OLD_FILES+=usr/share/man/man3/unisap.3.gz
-OLD_FILES+=usr/share/man/man3/unistruct.3.gz
-.endif
-
.if ${MK_AUDIT} == no
OLD_FILES+=etc/rc.d/auditd
OLD_FILES+=etc/rc.d/auditdistd
@@ -170,6 +127,7 @@ OLD_FILES+=etc/autofs/special_media
OLD_FILES+=etc/autofs/special_noauto
OLD_FILES+=etc/autofs/special_null
OLD_FILES+=etc/auto_master
+OLD_FILES+=etc/devd/autofs.conf
OLD_FILES+=etc/rc.d/automount
OLD_FILES+=etc/rc.d/automountd
OLD_FILES+=etc/rc.d/autounmountd
@@ -184,6 +142,15 @@ OLD_FILES+=usr/share/man/man8/autounmountd.8.gz
OLD_DIRS+=etc/autofs
.endif
+.if ${MK_BEARSSL} == no
+OLD_FILES+=usr/lib/libbearssl.a
+OLD_FILES+=usr/lib/libbearssl.so
+OLD_LIBS+=usr/lib/libbearssl.so.5
+OLD_FILES+=usr/lib/libsecureboot.a
+OLD_FILES+=usr/lib/libsecureboot.so
+OLD_LIBS+=usr/lib/libsecureboot.so.5
+.endif
+
.if ${MK_BHYVE} == no
OLD_FILES+=usr/lib/libvmmapi.a
OLD_FILES+=usr/lib/libvmmapi.so
@@ -198,13 +165,6 @@ OLD_FILES+=usr/share/man/man8/bhyveload.8.gz
OLD_DIRS+=usr/share/examples/bhyve
.endif
-.if !defined(WITH_PORT_BASE_BINUTILS)
-.if ${MK_LLD_IS_LD} == no
-OLD_FILES+=usr/bin/ld
-OLD_FILES+=usr/share/man/man1/ld.1.gz
-.endif
-.endif
-
.if ${MK_BLACKLIST} == no
OLD_FILES+=etc/blacklistd.conf
OLD_FILES+=etc/rc.d/blacklistd
@@ -266,16 +226,6 @@ OLD_FILES+=usr/lib/libsdp.a
OLD_FILES+=usr/lib/libsdp.so
OLD_LIBS+=usr/lib/libsdp.so.4
OLD_FILES+=usr/lib/libsdp_p.a
-.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
-OLD_FILES+=usr/lib32/libbluetooth.a
-OLD_FILES+=usr/lib32/libbluetooth.so
-OLD_LIBS+=usr/lib32/libbluetooth.so.4
-OLD_FILES+=usr/lib32/libbluetooth_p.a
-OLD_FILES+=usr/lib32/libsdp.a
-OLD_FILES+=usr/lib32/libsdp.so
-OLD_LIBS+=usr/lib32/libsdp.so.4
-OLD_FILES+=usr/lib32/libsdp_p.a
-.endif
OLD_FILES+=usr/sbin/ath3kfw
OLD_FILES+=usr/sbin/bcmfw
OLD_FILES+=usr/sbin/bluetooth-config
@@ -448,13 +398,6 @@ OLD_FILES+=usr/sbin/bootptest
OLD_FILES+=usr/share/man/man8/bootptest.8.gz
.endif
-.if ${MK_BSD_CPIO} == no
-OLD_FILES+=usr/bin/bsdcpio
-OLD_FILES+=usr/bin/cpio
-OLD_FILES+=usr/share/man/man1/bsdcpio.1.gz
-OLD_FILES+=usr/share/man/man1/cpio.1.gz
-.endif
-
.if ${MK_BSDINSTALL} == no
OLD_FILES+=usr/libexec/bsdinstall/adduser
OLD_FILES+=usr/libexec/bsdinstall/auto
@@ -466,6 +409,7 @@ OLD_FILES+=usr/libexec/bsdinstall/distextract
OLD_FILES+=usr/libexec/bsdinstall/distfetch
OLD_FILES+=usr/libexec/bsdinstall/docsinstall
OLD_FILES+=usr/libexec/bsdinstall/entropy
+OLD_FILES+=usr/libexec/bsdinstall/fetchmissingdists
OLD_FILES+=usr/libexec/bsdinstall/hardening
OLD_FILES+=usr/libexec/bsdinstall/hostname
OLD_FILES+=usr/libexec/bsdinstall/jail
@@ -477,9 +421,11 @@ OLD_FILES+=usr/libexec/bsdinstall/netconfig_ipv4
OLD_FILES+=usr/libexec/bsdinstall/netconfig_ipv6
OLD_FILES+=usr/libexec/bsdinstall/partedit
OLD_FILES+=usr/libexec/bsdinstall/rootpass
+OLD_FILES+=usr/libexec/bsdinstall/runconsoles
OLD_FILES+=usr/libexec/bsdinstall/script
OLD_FILES+=usr/libexec/bsdinstall/scriptedpart
OLD_FILES+=usr/libexec/bsdinstall/services
+OLD_FILES+=usr/libexec/bsdinstall/startbsdinstall
OLD_FILES+=usr/libexec/bsdinstall/time
OLD_FILES+=usr/libexec/bsdinstall/umount
OLD_FILES+=usr/libexec/bsdinstall/wlanconfig
@@ -490,6 +436,13 @@ OLD_FILES+=usr/share/man/man8/sade.8.gz
OLD_DIRS+=usr/libexec/bsdinstall
.endif
+.if ${MK_BSD_CPIO} == no
+OLD_FILES+=usr/bin/bsdcpio
+OLD_FILES+=usr/bin/cpio
+OLD_FILES+=usr/share/man/man1/bsdcpio.1.gz
+OLD_FILES+=usr/share/man/man1/cpio.1.gz
+.endif
+
.if ${MK_BSNMP} == no
OLD_FILES+=etc/snmpd.config
OLD_FILES+=etc/rc.d/bsnmpd
@@ -534,10 +487,6 @@ OLD_FILES+=usr/lib/snmp_vacm.so
OLD_LIBS+=usr/lib/snmp_vacm.so.6
OLD_FILES+=usr/lib/snmp_wlan.so
OLD_LIBS+=usr/lib/snmp_wlan.so.6
-OLD_FILES+=usr/lib32/libbsnmp.a
-OLD_FILES+=usr/lib32/libbsnmp.so
-OLD_LIBS+=usr/lib32/libbsnmp.so.6
-OLD_FILES+=usr/lib32/libbsnmp_p.a
OLD_FILES+=usr/sbin/bsnmpd
OLD_FILES+=usr/sbin/gensnmptree
OLD_FILES+=usr/share/examples/etc/snmpd.config
@@ -904,14 +853,15 @@ OLD_DIRS+=usr/tests/usr.bin/calendar
.if ${MK_CASPER} == no
OLD_LIBS+=lib/libcasper.so.1
-OLD_LIBS+=lib/casper/libcap_dns.so.2
-OLD_LIBS+=lib/casper/libcap_fileargs.so.1
-OLD_LIBS+=lib/casper/libcap_grp.so.1
-OLD_LIBS+=lib/casper/libcap_net.so.1
-OLD_LIBS+=lib/casper/libcap_pwd.so.1
-OLD_LIBS+=lib/casper/libcap_sysctl.so.1
-OLD_LIBS+=lib/casper/libcap_sysctl.so.2
-OLD_LIBS+=lib/casper/libcap_syslog.so.1
+OLD_LIBS+=lib/libcap_dns.so.2
+OLD_LIBS+=lib/libcap_fileargs.so.1
+OLD_LIBS+=lib/libcap_grp.so.1
+OLD_LIBS+=lib/libcap_net.so.1
+OLD_LIBS+=lib/libcap_netdb.so.1
+OLD_LIBS+=lib/libcap_pwd.so.1
+OLD_LIBS+=lib/libcap_sysctl.so.1
+OLD_LIBS+=lib/libcap_sysctl.so.2
+OLD_LIBS+=lib/libcap_syslog.so.1
.endif
.if ${MK_CCD} == no
@@ -922,303 +872,6 @@ OLD_FILES+=usr/share/man/man4/ccd.4.gz
OLD_FILES+=usr/share/man/man8/ccdconfig.8.gz
.endif
-.if ${MK_CDDL} == no
-OLD_LIBS+=lib/libavl.so.2
-OLD_LIBS+=lib/libctf.so.2
-OLD_LIBS+=lib/libdtrace.so.2
-OLD_LIBS+=lib/libnvpair.so.2
-OLD_LIBS+=lib/libumem.so.2
-OLD_LIBS+=lib/libuutil.so.2
-OLD_FILES+=usr/bin/ctfconvert
-OLD_FILES+=usr/bin/ctfdump
-OLD_FILES+=usr/bin/ctfmerge
-OLD_FILES+=usr/lib/dtrace/drti.o
-OLD_FILES+=usr/lib/dtrace/errno.d
-OLD_FILES+=usr/lib/dtrace/io.d
-OLD_FILES+=usr/lib/dtrace/ip.d
-OLD_FILES+=usr/lib/dtrace/mbuf.d
-OLD_FILES+=usr/lib/dtrace/psinfo.d
-.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386"
-OLD_FILES+=usr/lib/dtrace/regs_x86.d
-.endif
-OLD_FILES+=usr/lib/dtrace/sctp.d
-OLD_FILES+=usr/lib/dtrace/siftr.d
-OLD_FILES+=usr/lib/dtrace/signal.d
-OLD_FILES+=usr/lib/dtrace/socket.d
-OLD_FILES+=usr/lib/dtrace/tcp.d
-OLD_FILES+=usr/lib/dtrace/udp.d
-OLD_FILES+=usr/lib/dtrace/udplite.d
-OLD_FILES+=usr/lib/dtrace/unistd.d
-OLD_FILES+=usr/lib/libavl.a
-OLD_FILES+=usr/lib/libavl.so
-OLD_FILES+=usr/lib/libavl_p.a
-OLD_FILES+=usr/lib/libctf.a
-OLD_FILES+=usr/lib/libctf.so
-OLD_FILES+=usr/lib/libctf_p.a
-OLD_FILES+=usr/lib/libdtrace.a
-OLD_FILES+=usr/lib/libdtrace.so
-OLD_FILES+=usr/lib/libdtrace_p.a
-OLD_FILES+=usr/lib/libnvpair.a
-OLD_FILES+=usr/lib/libnvpair.so
-OLD_FILES+=usr/lib/libnvpair_p.a
-OLD_FILES+=usr/lib/libumem.a
-OLD_FILES+=usr/lib/libumem.so
-OLD_FILES+=usr/lib/libumem_p.a
-OLD_FILES+=usr/lib/libuutil.a
-OLD_FILES+=usr/lib/libuutil.so
-OLD_FILES+=usr/lib/libuutil_p.a
-.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
-OLD_FILES+=usr/lib32/dtrace/drti.o
-OLD_FILES+=usr/lib32/libavl.a
-OLD_FILES+=usr/lib32/libavl.so
-OLD_LIBS+=usr/lib32/libavl.so.2
-OLD_FILES+=usr/lib32/libavl_p.a
-OLD_FILES+=usr/lib32/libctf.a
-OLD_FILES+=usr/lib32/libctf.so
-OLD_LIBS+=usr/lib32/libctf.so.2
-OLD_FILES+=usr/lib32/libctf_p.a
-OLD_FILES+=usr/lib32/libdtrace.a
-OLD_FILES+=usr/lib32/libdtrace.so
-OLD_LIBS+=usr/lib32/libdtrace.so.2
-OLD_FILES+=usr/lib32/libdtrace_p.a
-OLD_FILES+=usr/lib32/libnvpair.a
-OLD_FILES+=usr/lib32/libnvpair.so
-OLD_LIBS+=usr/lib32/libnvpair.so.2
-OLD_FILES+=usr/lib32/libnvpair_p.a
-OLD_FILES+=usr/lib32/libumem.a
-OLD_FILES+=usr/lib32/libumem.so
-OLD_LIBS+=usr/lib32/libumem.so.2
-OLD_FILES+=usr/lib32/libumem_p.a
-OLD_FILES+=usr/lib32/libuutil.a
-OLD_FILES+=usr/lib32/libuutil.so
-OLD_LIBS+=usr/lib32/libuutil.so.2
-OLD_FILES+=usr/lib32/libuutil_p.a
-.endif
-OLD_LIBS+=lib/libdtrace.so.2
-OLD_FILES+=usr/libexec/dwatch/chmod
-OLD_FILES+=usr/libexec/dwatch/errno
-OLD_FILES+=usr/libexec/dwatch/fchmodat
-OLD_FILES+=usr/libexec/dwatch/io
-OLD_FILES+=usr/libexec/dwatch/io-done
-OLD_FILES+=usr/libexec/dwatch/io-start
-OLD_FILES+=usr/libexec/dwatch/ip
-OLD_FILES+=usr/libexec/dwatch/ip-receive
-OLD_FILES+=usr/libexec/dwatch/ip-send
-OLD_FILES+=usr/libexec/dwatch/kill
-OLD_FILES+=usr/libexec/dwatch/lchmod
-OLD_FILES+=usr/libexec/dwatch/nanosleep
-OLD_FILES+=usr/libexec/dwatch/open
-OLD_FILES+=usr/libexec/dwatch/openat
-OLD_FILES+=usr/libexec/dwatch/proc
-OLD_FILES+=usr/libexec/dwatch/proc-create
-OLD_FILES+=usr/libexec/dwatch/proc-exec
-OLD_FILES+=usr/libexec/dwatch/proc-exec-failure
-OLD_FILES+=usr/libexec/dwatch/proc-exec-success
-OLD_FILES+=usr/libexec/dwatch/proc-exit
-OLD_FILES+=usr/libexec/dwatch/proc-signal
-OLD_FILES+=usr/libexec/dwatch/proc-signal-clear
-OLD_FILES+=usr/libexec/dwatch/proc-signal-discard
-OLD_FILES+=usr/libexec/dwatch/proc-signal-send
-OLD_FILES+=usr/libexec/dwatch/proc-status
-OLD_FILES+=usr/libexec/dwatch/read
-OLD_FILES+=usr/libexec/dwatch/recv
-OLD_FILES+=usr/libexec/dwatch/recvfrom
-OLD_FILES+=usr/libexec/dwatch/recvmsg
-OLD_FILES+=usr/libexec/dwatch/rw
-OLD_FILES+=usr/libexec/dwatch/sched
-OLD_FILES+=usr/libexec/dwatch/sched-change-pri
-OLD_FILES+=usr/libexec/dwatch/sched-cpu
-OLD_FILES+=usr/libexec/dwatch/sched-dequeue
-OLD_FILES+=usr/libexec/dwatch/sched-enqueue
-OLD_FILES+=usr/libexec/dwatch/sched-exec
-OLD_FILES+=usr/libexec/dwatch/sched-lend-pri
-OLD_FILES+=usr/libexec/dwatch/sched-load-change
-OLD_FILES+=usr/libexec/dwatch/sched-off-cpu
-OLD_FILES+=usr/libexec/dwatch/sched-on-cpu
-OLD_FILES+=usr/libexec/dwatch/sched-preempt
-OLD_FILES+=usr/libexec/dwatch/sched-pri
-OLD_FILES+=usr/libexec/dwatch/sched-queue
-OLD_FILES+=usr/libexec/dwatch/sched-remain-cpu
-OLD_FILES+=usr/libexec/dwatch/sched-sleep
-OLD_FILES+=usr/libexec/dwatch/sched-surrender
-OLD_FILES+=usr/libexec/dwatch/sched-tick
-OLD_FILES+=usr/libexec/dwatch/sched-wakeup
-OLD_FILES+=usr/libexec/dwatch/send
-OLD_FILES+=usr/libexec/dwatch/sendmsg
-OLD_FILES+=usr/libexec/dwatch/sendrecv
-OLD_FILES+=usr/libexec/dwatch/sendto
-OLD_FILES+=usr/libexec/dwatch/systop
-OLD_FILES+=usr/libexec/dwatch/tcp
-OLD_FILES+=usr/libexec/dwatch/tcp-accept
-OLD_FILES+=usr/libexec/dwatch/tcp-accept-established
-OLD_FILES+=usr/libexec/dwatch/tcp-accept-refused
-OLD_FILES+=usr/libexec/dwatch/tcp-connect
-OLD_FILES+=usr/libexec/dwatch/tcp-connect-established
-OLD_FILES+=usr/libexec/dwatch/tcp-connect-refused
-OLD_FILES+=usr/libexec/dwatch/tcp-connect-request
-OLD_FILES+=usr/libexec/dwatch/tcp-established
-OLD_FILES+=usr/libexec/dwatch/tcp-init
-OLD_FILES+=usr/libexec/dwatch/tcp-io
-OLD_FILES+=usr/libexec/dwatch/tcp-receive
-OLD_FILES+=usr/libexec/dwatch/tcp-refused
-OLD_FILES+=usr/libexec/dwatch/tcp-send
-OLD_FILES+=usr/libexec/dwatch/tcp-state-change
-OLD_FILES+=usr/libexec/dwatch/tcp-status
-OLD_FILES+=usr/libexec/dwatch/udp
-OLD_FILES+=usr/libexec/dwatch/udp-receive
-OLD_FILES+=usr/libexec/dwatch/udp-send
-OLD_FILES+=usr/libexec/dwatch/udplite
-OLD_FILES+=usr/libexec/dwatch/udplite-receive
-OLD_FILES+=usr/libexec/dwatch/udplite-send
-OLD_FILES+=usr/libexec/dwatch/vop_create
-OLD_FILES+=usr/libexec/dwatch/vop_lookup
-OLD_FILES+=usr/libexec/dwatch/vop_mkdir
-OLD_FILES+=usr/libexec/dwatch/vop_mknod
-OLD_FILES+=usr/libexec/dwatch/vop_readdir
-OLD_FILES+=usr/libexec/dwatch/vop_remove
-OLD_FILES+=usr/libexec/dwatch/vop_rename
-OLD_FILES+=usr/libexec/dwatch/vop_rmdir
-OLD_FILES+=usr/libexec/dwatch/vop_symlink
-OLD_FILES+=usr/libexec/dwatch/write
-OLD_FILES+=usr/sbin/dtrace
-OLD_FILES+=usr/sbin/dwatch
-OLD_FILES+=usr/sbin/lockstat
-OLD_FILES+=usr/sbin/plockstat
-OLD_FILES+=usr/share/man/man1/dtrace.1.gz
-OLD_FILES+=usr/share/man/man1/dtruss.1.gz
-OLD_FILES+=usr/share/man/man1/lockstat.1.gz
-OLD_FILES+=usr/share/man/man1/plockstat.1.gz
-OLD_FILES+=usr/share/dtrace/blocking
-OLD_FILES+=usr/share/dtrace/disklatency
-OLD_FILES+=usr/share/dtrace/disklatencycmd
-OLD_FILES+=usr/share/dtrace/hotopen
-OLD_FILES+=usr/share/dtrace/nfsattrstats
-OLD_FILES+=usr/share/dtrace/nfsclienttime
-OLD_FILES+=usr/share/dtrace/siftr
-OLD_FILES+=usr/share/dtrace/toolkit/execsnoop
-OLD_FILES+=usr/share/dtrace/toolkit/hotkernel
-OLD_FILES+=usr/share/dtrace/toolkit/hotuser
-OLD_FILES+=usr/share/dtrace/toolkit/opensnoop
-OLD_FILES+=usr/share/dtrace/toolkit/procsystime
-OLD_FILES+=usr/share/dtrace/tcpconn
-OLD_FILES+=usr/share/dtrace/tcpdebug
-OLD_FILES+=usr/share/dtrace/tcpstate
-OLD_FILES+=usr/share/dtrace/tcptrack
-OLD_FILES+=usr/share/dtrace/udptrack
-OLD_FILES+=usr/share/man/man1/dtrace.1.gz
-OLD_DIRS+=usr/lib/dtrace
-OLD_DIRS+=usr/lib32/dtrace
-OLD_DIRS+=usr/libexec/dwatch
-OLD_DIRS+=usr/share/dtrace/toolkit
-OLD_DIRS+=usr/share/dtrace
-.endif
-
-.if ${MK_ZFS} == no
-OLD_FILES+=boot/gptzfsboot
-OLD_FILES+=boot/zfsboot
-OLD_FILES+=boot/zfsloader
-OLD_FILES+=etc/rc.d/zfs
-OLD_FILES+=etc/rc.d/zfsd
-OLD_FILES+=etc/rc.d/zfsbe
-OLD_FILES+=etc/rc.d/zvol
-OLD_FILES+=etc/devd/zfs.conf
-OLD_FILES+=etc/periodic/daily/404.status-zfs
-OLD_FILES+=etc/periodic/daily/800.scrub-zfs
-OLD_FILES+=etc/zfs/exports
-OLD_DIRS+=etc/zfs
-OLD_LIBS+=lib/libzfs.so.2
-OLD_LIBS+=lib/libzfs.so.3
-OLD_LIBS+=lib/libzfs_core.so.2
-OLD_LIBS+=lib/libzpool.so.2
-OLD_FILES+=rescue/zdb
-OLD_FILES+=rescue/zfs
-OLD_FILES+=rescue/zpool
-OLD_FILES+=sbin/bectl
-OLD_FILES+=sbin/zfs
-OLD_FILES+=sbin/zpool
-OLD_FILES+=sbin/zfsbootcfg
-OLD_FILES+=usr/bin/zinject
-OLD_FILES+=usr/bin/zstreamdump
-OLD_FILES+=usr/bin/ztest
-OLD_FILES+=usr/lib/libbe.a
-OLD_FILES+=usr/lib/libbe_p.a
-OLD_FILES+=usr/lib/libbe.so
-OLD_LIBS+=lib/libbe.so.1
-OLD_FILES+=usr/lib/libzfs.a
-OLD_LIBS+=usr/lib/libzfs.so
-OLD_FILES+=usr/lib/libzfs_core.a
-OLD_LIBS+=usr/lib/libzfs_core.so
-OLD_LIBS+=usr/lib/libzfs_core_p.a
-OLD_FILES+=usr/lib/libzfs_p.a
-OLD_FILES+=usr/lib/libzpool.a
-OLD_FILES+=usr/lib/libzpool.so
-OLD_LIBS+=usr/lib/libzpool.so.2
-.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
-OLD_FILES+=usr/lib32/libzfs.a
-OLD_FILES+=usr/lib32/libzfs.so
-OLD_LIBS+=usr/lib32/libzfs.so.2
-OLD_LIBS+=usr/lib32/libzfs.so.3
-OLD_FILES+=usr/lib32/libzfs_core.a
-OLD_FILES+=usr/lib32/libzfs_core.so
-OLD_LIBS+=usr/lib32/libzfs_core.so.2
-OLD_FILES+=usr/lib32/libzfs_core_p.a
-OLD_FILES+=usr/lib32/libzfs_p.a
-OLD_FILES+=usr/lib32/libzpool.a
-OLD_FILES+=usr/lib32/libzpool.so
-OLD_LIBS+=usr/lib32/libzpool.so.2
-.endif
-OLD_FILES+=usr/sbin/zfsd
-OLD_FILES+=usr/sbin/zhack
-OLD_FILES+=usr/sbin/zdb
-OLD_FILES+=usr/share/man/man3/be_activate.3.gz
-OLD_FILES+=usr/share/man/man3/be_active_name.3.gz
-OLD_FILES+=usr/share/man/man3/be_active_path.3.gz
-OLD_FILES+=usr/share/man/man3/be_create_depth.3.gz
-OLD_FILES+=usr/share/man/man3/be_create_from_existing_snap.3.gz
-OLD_FILES+=usr/share/man/man3/be_create_from_existing.3.gz
-OLD_FILES+=usr/share/man/man3/be_create.3.gz
-OLD_FILES+=usr/share/man/man3/be_deactivate.3.gz
-OLD_FILES+=usr/share/man/man3/be_destroy.3.gz
-OLD_FILES+=usr/share/man/man3/be_exists.3.gz
-OLD_FILES+=usr/share/man/man3/be_export.3.gz
-OLD_FILES+=usr/share/man/man3/be_get_bootenv_props.3.gz
-OLD_FILES+=usr/share/man/man3/be_get_dataset_props.3.gz
-OLD_FILES+=usr/share/man/man3/be_get_dataset_snapshots.3.gz
-OLD_FILES+=usr/share/man/man3/be_import.3.gz
-OLD_FILES+=usr/share/man/man3/be_is_auto_snapshot_name.3.gz
-OLD_FILES+=usr/share/man/man3/be_mount.3.gz
-OLD_FILES+=usr/share/man/man3/be_mounted_at.3.gz
-OLD_FILES+=usr/share/man/man3/be_nextboot_name.3.gz
-OLD_FILES+=usr/share/man/man3/be_nextboot_path.3.gz
-OLD_FILES+=usr/share/man/man3/be_nicenum.3.gz
-OLD_FILES+=usr/share/man/man3/be_prop_list_alloc.3.gz
-OLD_FILES+=usr/share/man/man3/be_prop_list_free.3.gz
-OLD_FILES+=usr/share/man/man3/be_rename.3.gz
-OLD_FILES+=usr/share/man/man3/be_root_concat.3.gz
-OLD_FILES+=usr/share/man/man3/be_root_path.3.gz
-OLD_FILES+=usr/share/man/man3/be_snapshot.3.gz
-OLD_FILES+=usr/share/man/man3/be_unmount.3.gz
-OLD_FILES+=usr/share/man/man3/be_validate_name.3.gz
-OLD_FILES+=usr/share/man/man3/be_validate_snap.3.gz
-OLD_FILES+=usr/share/man/man3/libbe_close.3.gz
-OLD_FILES+=usr/share/man/man3/libbe_errno.3.gz
-OLD_FILES+=usr/share/man/man3/libbe_error_description.3.gz
-OLD_FILES+=usr/share/man/man3/libbe_init.3.gz
-OLD_FILES+=usr/share/man/man3/libbe_print_on_error.3.gz
-OLD_FILES+=usr/share/man/man3/libbe.3.gz
-OLD_FILES+=usr/share/man/man5/zpool-features.5.gz
-OLD_FILES+=usr/share/man/man8/bectl.8.gz
-OLD_FILES+=usr/share/man/man8/gptzfsboot.8.gz
-OLD_FILES+=usr/share/man/man8/zdb.8.gz
-OLD_FILES+=usr/share/man/man8/zfs-program.8.gz
-OLD_FILES+=usr/share/man/man8/zfs.8.gz
-OLD_FILES+=usr/share/man/man8/zfsboot.8.gz
-OLD_FILES+=usr/share/man/man8/zfsbootcfg.8.gz
-OLD_FILES+=usr/share/man/man8/zfsd.8.gz
-OLD_FILES+=usr/share/man/man8/zfsloader.8.gz
-OLD_FILES+=usr/share/man/man8/zpool.8.gz
-.endif
-
.if ${MK_CLANG} == no && ${MK_LLVM_BINUTILS} == no
OLD_FILES+=usr/bin/llvm-addr2line
OLD_FILES+=usr/bin/llvm-ar
@@ -1231,6 +884,7 @@ OLD_FILES+=usr/bin/llvm-readobj
OLD_FILES+=usr/bin/llvm-size
OLD_FILES+=usr/bin/llvm-strings
OLD_FILES+=usr/bin/llvm-symbolizer
+OLD_FILES+=usr/bin/objdump
OLD_FILES+=usr/share/man/man1/llvm-addr2line.1.gz
OLD_FILES+=usr/share/man/man1/llvm-ar.1.gz
OLD_FILES+=usr/share/man/man1/llvm-nm.1.gz
@@ -1241,301 +895,424 @@ OLD_FILES+=usr/share/man/man1/llvm-readobj.1.gz
OLD_FILES+=usr/share/man/man1/llvm-size.1.gz
OLD_FILES+=usr/share/man/man1/llvm-strings.1.gz
OLD_FILES+=usr/share/man/man1/llvm-symbolizer.1.gz
+OLD_FILES+=usr/share/man/man1/objdump.1.gz
.endif
.if ${MK_CLANG} == no
OLD_FILES+=usr/bin/clang
OLD_FILES+=usr/bin/clang++
OLD_FILES+=usr/bin/clang-cpp
-OLD_FILES+=usr/lib/clang/12.0.1/include/cuda_wrappers/algorithm
-OLD_FILES+=usr/lib/clang/12.0.1/include/cuda_wrappers/complex
-OLD_FILES+=usr/lib/clang/12.0.1/include/cuda_wrappers/new
-OLD_DIRS+=usr/lib/clang/12.0.1/include/cuda_wrappers
-OLD_FILES+=usr/lib/clang/12.0.1/include/fuzzer/FuzzedDataProvider.h
-OLD_DIRS+=usr/lib/clang/12.0.1/include/fuzzer
-OLD_FILES+=usr/lib/clang/12.0.1/include/openmp_wrappers/__clang_openmp_device_functions.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/openmp_wrappers/cmath
-OLD_FILES+=usr/lib/clang/12.0.1/include/openmp_wrappers/complex
-OLD_FILES+=usr/lib/clang/12.0.1/include/openmp_wrappers/complex.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/openmp_wrappers/complex_cmath.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/openmp_wrappers/math.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/openmp_wrappers/new
-OLD_DIRS+=usr/lib/clang/12.0.1/include/openmp_wrappers
-OLD_FILES+=usr/lib/clang/12.0.1/include/ppc_wrappers/emmintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/ppc_wrappers/mm_malloc.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/ppc_wrappers/mmintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/ppc_wrappers/pmmintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/ppc_wrappers/smmintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/ppc_wrappers/tmmintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/ppc_wrappers/xmmintrin.h
-OLD_DIRS+=usr/lib/clang/12.0.1/include/ppc_wrappers
-OLD_FILES+=usr/lib/clang/12.0.1/include/profile/InstrProfData.inc
-OLD_DIRS+=usr/lib/clang/12.0.1/include/profile
-OLD_FILES+=usr/lib/clang/12.0.1/include/sanitizer/allocator_interface.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/sanitizer/asan_interface.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/sanitizer/common_interface_defs.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/sanitizer/coverage_interface.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/sanitizer/dfsan_interface.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/sanitizer/hwasan_interface.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/sanitizer/linux_syscall_hooks.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/sanitizer/lsan_interface.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/sanitizer/msan_interface.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/sanitizer/netbsd_syscall_hooks.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/sanitizer/scudo_interface.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/sanitizer/tsan_interface.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/sanitizer/tsan_interface_atomic.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/sanitizer/ubsan_interface.h
-OLD_DIRS+=usr/lib/clang/12.0.1/include/sanitizer
-OLD_FILES+=usr/lib/clang/12.0.1/include/xray/xray_interface.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/xray/xray_log_interface.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/xray/xray_records.h
-OLD_DIRS+=usr/lib/clang/12.0.1/include/xray
-OLD_FILES+=usr/lib/clang/12.0.1/include/__clang_cuda_builtin_vars.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/__clang_cuda_cmath.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/__clang_cuda_complex_builtins.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/__clang_cuda_device_functions.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/__clang_cuda_intrinsics.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/__clang_cuda_libdevice_declares.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/__clang_cuda_math.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/__clang_cuda_math_forward_declares.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/__clang_cuda_runtime_wrapper.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/__clang_hip_cmath.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/__clang_hip_libdevice_declares.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/__clang_hip_math.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/__clang_hip_runtime_wrapper.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/__stddef_max_align_t.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/__wmmintrin_aes.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/__wmmintrin_pclmul.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/adxintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/altivec.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/ammintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/amxintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/arm64intr.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/arm_acle.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/arm_bf16.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/arm_cde.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/arm_cmse.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/arm_fp16.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/arm_mve.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/arm_neon.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/arm_sve.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/armintr.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx2intrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512bf16intrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512bitalgintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512bwintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512cdintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512dqintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512erintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512fintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512ifmaintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512ifmavlintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512pfintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512vbmi2intrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512vbmiintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512vbmivlintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512vlbf16intrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512vlbitalgintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512vlbwintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512vlcdintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512vldqintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512vlintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512vlvbmi2intrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512vlvnniintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512vlvp2intersectintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512vnniintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512vp2intersectintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512vpopcntdqintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avx512vpopcntdqvlintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avxintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/avxvnniintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/bmi2intrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/bmiintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/cet.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/cetintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/cldemoteintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/clflushoptintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/clwbintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/clzerointrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/cpuid.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/emmintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/enqcmdintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/f16cintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/float.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/fma4intrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/fmaintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/fxsrintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/gfniintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/hresetintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/htmintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/htmxlintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/ia32intrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/immintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/intrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/inttypes.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/invpcidintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/iso646.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/keylockerintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/limits.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/lwpintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/lzcntintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/mm3dnow.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/mm_malloc.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/mmintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/module.modulemap
-OLD_FILES+=usr/lib/clang/12.0.1/include/movdirintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/msa.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/mwaitxintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/nmmintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/omp-tools.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/omp.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/ompt.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/opencl-c-base.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/opencl-c.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/pconfigintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/pkuintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/pmmintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/popcntintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/prfchwintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/ptwriteintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/rdseedintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/rtmintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/s390intrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/serializeintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/sgxintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/shaintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/smmintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/stdalign.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/stdarg.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/stdatomic.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/stdbool.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/stddef.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/stdint.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/stdnoreturn.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/tbmintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/tgmath.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/tmmintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/tsxldtrkintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/uintrintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/unwind.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/vadefs.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/vaesintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/varargs.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/vecintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/vpclmulqdqintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/waitpkgintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/wasm_simd128.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/wbnoinvdintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/wmmintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/x86gprintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/x86intrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/xmmintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/xopintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/xsavecintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/xsaveintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/xsaveoptintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/xsavesintrin.h
-OLD_FILES+=usr/lib/clang/12.0.1/include/xtestintrin.h
-OLD_DIRS+=usr/lib/clang/12.0.1/include
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan-aarch64.so
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan-arm.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan-arm.so
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan-armhf.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan-armhf.so
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan-i386.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan-i386.so
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan-preinit-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan-preinit-arm.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan-preinit-armhf.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan-preinit-i386.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan-x86_64.so
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan_cxx-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan_cxx-arm.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan_cxx-armhf.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan_cxx-i386.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.cfi-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.cfi-arm.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.cfi-armhf.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.cfi-i386.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.cfi-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.cfi_diag-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.cfi_diag-arm.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.cfi_diag-armhf.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.cfi_diag-i386.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.cfi_diag-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.dd-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.dd-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.fuzzer-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.fuzzer-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.fuzzer_no_main-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.fuzzer_no_main-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.msan-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.msan-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.msan_cxx-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.msan_cxx-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.profile-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.profile-arm.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.profile-armhf.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.profile-i386.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.profile-powerpc.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.profile-powerpc64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.profile-powerpc64le.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.profile-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.safestack-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.safestack-i386.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.safestack-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.stats-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.stats-arm.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.stats-armhf.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.stats-i386.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.stats-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.stats_client-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.stats_client-arm.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.stats_client-armhf.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.stats_client-i386.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.stats_client-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.tsan-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.tsan-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.tsan_cxx-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.tsan_cxx-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.ubsan_minimal-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.ubsan_minimal-arm.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.ubsan_minimal-armhf.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.ubsan_minimal-i386.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.ubsan_minimal-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.ubsan_standalone-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.ubsan_standalone-arm.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.ubsan_standalone-armhf.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-arm.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-armhf.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.xray-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.xray-arm.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.xray-armhf.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.xray-basic-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.xray-basic-arm.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.xray-basic-armhf.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.xray-basic-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.xray-fdr-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.xray-fdr-arm.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.xray-fdr-armhf.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.xray-fdr-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.xray-profiling-aarch64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.xray-profiling-arm.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.xray-profiling-armhf.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.xray-profiling-x86_64.a
-OLD_FILES+=usr/lib/clang/12.0.1/lib/freebsd/libclang_rt.xray-x86_64.a
-OLD_DIRS+=usr/lib/clang/12.0.1/lib/freebsd
-OLD_DIRS+=usr/lib/clang/12.0.1/lib
-OLD_DIRS+=usr/lib/clang/12.0.1
+OLD_FILES+=usr/lib/clang/18/include/__clang_cuda_builtin_vars.h
+OLD_FILES+=usr/lib/clang/18/include/__clang_cuda_cmath.h
+OLD_FILES+=usr/lib/clang/18/include/__clang_cuda_complex_builtins.h
+OLD_FILES+=usr/lib/clang/18/include/__clang_cuda_device_functions.h
+OLD_FILES+=usr/lib/clang/18/include/__clang_cuda_intrinsics.h
+OLD_FILES+=usr/lib/clang/18/include/__clang_cuda_libdevice_declares.h
+OLD_FILES+=usr/lib/clang/18/include/__clang_cuda_math.h
+OLD_FILES+=usr/lib/clang/18/include/__clang_cuda_math_forward_declares.h
+OLD_FILES+=usr/lib/clang/18/include/__clang_cuda_runtime_wrapper.h
+OLD_FILES+=usr/lib/clang/18/include/__clang_cuda_texture_intrinsics.h
+OLD_FILES+=usr/lib/clang/18/include/__clang_hip_cmath.h
+OLD_FILES+=usr/lib/clang/18/include/__clang_hip_libdevice_declares.h
+OLD_FILES+=usr/lib/clang/18/include/__clang_hip_math.h
+OLD_FILES+=usr/lib/clang/18/include/__clang_hip_runtime_wrapper.h
+OLD_FILES+=usr/lib/clang/18/include/__clang_hip_stdlib.h
+OLD_FILES+=usr/lib/clang/18/include/__stdarg___gnuc_va_list.h
+OLD_FILES+=usr/lib/clang/18/include/__stdarg___va_copy.h
+OLD_FILES+=usr/lib/clang/18/include/__stdarg_va_arg.h
+OLD_FILES+=usr/lib/clang/18/include/__stdarg_va_copy.h
+OLD_FILES+=usr/lib/clang/18/include/__stdarg_va_list.h
+OLD_FILES+=usr/lib/clang/18/include/__stddef_max_align_t.h
+OLD_FILES+=usr/lib/clang/18/include/__stddef_null.h
+OLD_FILES+=usr/lib/clang/18/include/__stddef_nullptr_t.h
+OLD_FILES+=usr/lib/clang/18/include/__stddef_offsetof.h
+OLD_FILES+=usr/lib/clang/18/include/__stddef_ptrdiff_t.h
+OLD_FILES+=usr/lib/clang/18/include/__stddef_rsize_t.h
+OLD_FILES+=usr/lib/clang/18/include/__stddef_size_t.h
+OLD_FILES+=usr/lib/clang/18/include/__stddef_unreachable.h
+OLD_FILES+=usr/lib/clang/18/include/__stddef_wchar_t.h
+OLD_FILES+=usr/lib/clang/18/include/__stddef_wint_t.h
+OLD_FILES+=usr/lib/clang/18/include/__wmmintrin_aes.h
+OLD_FILES+=usr/lib/clang/18/include/__wmmintrin_pclmul.h
+OLD_FILES+=usr/lib/clang/18/include/adcintrin.h
+OLD_FILES+=usr/lib/clang/18/include/adxintrin.h
+OLD_FILES+=usr/lib/clang/18/include/altivec.h
+OLD_FILES+=usr/lib/clang/18/include/ammintrin.h
+OLD_FILES+=usr/lib/clang/18/include/amxcomplexintrin.h
+OLD_FILES+=usr/lib/clang/18/include/amxfp16intrin.h
+OLD_FILES+=usr/lib/clang/18/include/amxintrin.h
+OLD_FILES+=usr/lib/clang/18/include/arm64intr.h
+OLD_FILES+=usr/lib/clang/18/include/arm_acle.h
+OLD_FILES+=usr/lib/clang/18/include/arm_bf16.h
+OLD_FILES+=usr/lib/clang/18/include/arm_cde.h
+OLD_FILES+=usr/lib/clang/18/include/arm_cmse.h
+OLD_FILES+=usr/lib/clang/18/include/arm_fp16.h
+OLD_FILES+=usr/lib/clang/18/include/arm_mve.h
+OLD_FILES+=usr/lib/clang/18/include/arm_neon.h
+OLD_FILES+=usr/lib/clang/18/include/arm_neon_sve_bridge.h
+OLD_FILES+=usr/lib/clang/18/include/arm_sme_draft_spec_subject_to_change.h
+OLD_FILES+=usr/lib/clang/18/include/arm_sve.h
+OLD_FILES+=usr/lib/clang/18/include/arm_vector_types.h
+OLD_FILES+=usr/lib/clang/18/include/armintr.h
+OLD_FILES+=usr/lib/clang/18/include/avx2intrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512bf16intrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512bitalgintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512bwintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512cdintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512dqintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512erintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512fintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512fp16intrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512ifmaintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512ifmavlintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512pfintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512vbmi2intrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512vbmiintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512vbmivlintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512vlbf16intrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512vlbitalgintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512vlbwintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512vlcdintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512vldqintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512vlfp16intrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512vlintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512vlvbmi2intrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512vlvnniintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512vlvp2intersectintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512vnniintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512vp2intersectintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512vpopcntdqintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avx512vpopcntdqvlintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avxifmaintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avxintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avxneconvertintrin.h
+OLD_FILES+=usr/lib/clang/18/include/avxvnniint16intrin.h
+OLD_FILES+=usr/lib/clang/18/include/avxvnniint8intrin.h
+OLD_FILES+=usr/lib/clang/18/include/avxvnniintrin.h
+OLD_FILES+=usr/lib/clang/18/include/bmi2intrin.h
+OLD_FILES+=usr/lib/clang/18/include/bmiintrin.h
+OLD_FILES+=usr/lib/clang/18/include/builtins.h
+OLD_FILES+=usr/lib/clang/18/include/cet.h
+OLD_FILES+=usr/lib/clang/18/include/cetintrin.h
+OLD_FILES+=usr/lib/clang/18/include/cldemoteintrin.h
+OLD_FILES+=usr/lib/clang/18/include/clflushoptintrin.h
+OLD_FILES+=usr/lib/clang/18/include/clwbintrin.h
+OLD_FILES+=usr/lib/clang/18/include/clzerointrin.h
+OLD_FILES+=usr/lib/clang/18/include/cmpccxaddintrin.h
+OLD_FILES+=usr/lib/clang/18/include/cpuid.h
+OLD_FILES+=usr/lib/clang/18/include/crc32intrin.h
+OLD_FILES+=usr/lib/clang/18/include/cuda_wrappers/algorithm
+OLD_FILES+=usr/lib/clang/18/include/cuda_wrappers/bits/basic_string.h
+OLD_FILES+=usr/lib/clang/18/include/cuda_wrappers/bits/basic_string.tcc
+OLD_FILES+=usr/lib/clang/18/include/cuda_wrappers/bits/shared_ptr_base.h
+OLD_DIRS+=usr/lib/clang/18/include/cuda_wrappers/bits
+OLD_FILES+=usr/lib/clang/18/include/cuda_wrappers/cmath
+OLD_FILES+=usr/lib/clang/18/include/cuda_wrappers/complex
+OLD_FILES+=usr/lib/clang/18/include/cuda_wrappers/new
+OLD_DIRS+=usr/lib/clang/18/include/cuda_wrappers
+OLD_FILES+=usr/lib/clang/18/include/emmintrin.h
+OLD_FILES+=usr/lib/clang/18/include/enqcmdintrin.h
+OLD_FILES+=usr/lib/clang/18/include/f16cintrin.h
+OLD_FILES+=usr/lib/clang/18/include/float.h
+OLD_FILES+=usr/lib/clang/18/include/fma4intrin.h
+OLD_FILES+=usr/lib/clang/18/include/fmaintrin.h
+OLD_FILES+=usr/lib/clang/18/include/fuzzer/FuzzedDataProvider.h
+OLD_DIRS+=usr/lib/clang/18/include/fuzzer
+OLD_FILES+=usr/lib/clang/18/include/fxsrintrin.h
+OLD_FILES+=usr/lib/clang/18/include/gfniintrin.h
+OLD_FILES+=usr/lib/clang/18/include/hexagon_circ_brev_intrinsics.h
+OLD_FILES+=usr/lib/clang/18/include/hexagon_protos.h
+OLD_FILES+=usr/lib/clang/18/include/hexagon_types.h
+OLD_FILES+=usr/lib/clang/18/include/hlsl/hlsl_basic_types.h
+OLD_FILES+=usr/lib/clang/18/include/hlsl/hlsl_intrinsics.h
+OLD_DIRS+=usr/lib/clang/18/include/hlsl
+OLD_FILES+=usr/lib/clang/18/include/hlsl.h
+OLD_FILES+=usr/lib/clang/18/include/hresetintrin.h
+OLD_FILES+=usr/lib/clang/18/include/htmintrin.h
+OLD_FILES+=usr/lib/clang/18/include/htmxlintrin.h
+OLD_FILES+=usr/lib/clang/18/include/hvx_hexagon_protos.h
+OLD_FILES+=usr/lib/clang/18/include/ia32intrin.h
+OLD_FILES+=usr/lib/clang/18/include/immintrin.h
+OLD_FILES+=usr/lib/clang/18/include/intrin.h
+OLD_FILES+=usr/lib/clang/18/include/inttypes.h
+OLD_FILES+=usr/lib/clang/18/include/invpcidintrin.h
+OLD_FILES+=usr/lib/clang/18/include/iso646.h
+OLD_FILES+=usr/lib/clang/18/include/keylockerintrin.h
+OLD_FILES+=usr/lib/clang/18/include/larchintrin.h
+OLD_FILES+=usr/lib/clang/18/include/lasxintrin.h
+OLD_FILES+=usr/lib/clang/18/include/limits.h
+OLD_FILES+=usr/lib/clang/18/include/lsxintrin.h
+OLD_FILES+=usr/lib/clang/18/include/lwpintrin.h
+OLD_FILES+=usr/lib/clang/18/include/lzcntintrin.h
+OLD_FILES+=usr/lib/clang/18/include/mm3dnow.h
+OLD_FILES+=usr/lib/clang/18/include/mm_malloc.h
+OLD_FILES+=usr/lib/clang/18/include/mmintrin.h
+OLD_FILES+=usr/lib/clang/18/include/module.modulemap
+OLD_FILES+=usr/lib/clang/18/include/movdirintrin.h
+OLD_FILES+=usr/lib/clang/18/include/msa.h
+OLD_FILES+=usr/lib/clang/18/include/mwaitxintrin.h
+OLD_FILES+=usr/lib/clang/18/include/nmmintrin.h
+OLD_FILES+=usr/lib/clang/18/include/omp-tools.h
+OLD_FILES+=usr/lib/clang/18/include/omp.h
+OLD_FILES+=usr/lib/clang/18/include/ompt.h
+OLD_FILES+=usr/lib/clang/18/include/opencl-c-base.h
+OLD_FILES+=usr/lib/clang/18/include/opencl-c.h
+OLD_FILES+=usr/lib/clang/18/include/openmp_wrappers/__clang_openmp_device_functions.h
+OLD_FILES+=usr/lib/clang/18/include/openmp_wrappers/cmath
+OLD_FILES+=usr/lib/clang/18/include/openmp_wrappers/complex
+OLD_FILES+=usr/lib/clang/18/include/openmp_wrappers/complex.h
+OLD_FILES+=usr/lib/clang/18/include/openmp_wrappers/complex_cmath.h
+OLD_FILES+=usr/lib/clang/18/include/openmp_wrappers/math.h
+OLD_FILES+=usr/lib/clang/18/include/openmp_wrappers/new
+OLD_DIRS+=usr/lib/clang/18/include/openmp_wrappers
+OLD_FILES+=usr/lib/clang/18/include/orc_rt/c_api.h
+OLD_DIRS+=usr/lib/clang/18/include/orc_rt
+OLD_FILES+=usr/lib/clang/18/include/pconfigintrin.h
+OLD_FILES+=usr/lib/clang/18/include/pkuintrin.h
+OLD_FILES+=usr/lib/clang/18/include/pmmintrin.h
+OLD_FILES+=usr/lib/clang/18/include/popcntintrin.h
+OLD_FILES+=usr/lib/clang/18/include/ppc_wrappers/bmi2intrin.h
+OLD_FILES+=usr/lib/clang/18/include/ppc_wrappers/bmiintrin.h
+OLD_FILES+=usr/lib/clang/18/include/ppc_wrappers/emmintrin.h
+OLD_FILES+=usr/lib/clang/18/include/ppc_wrappers/immintrin.h
+OLD_FILES+=usr/lib/clang/18/include/ppc_wrappers/mm_malloc.h
+OLD_FILES+=usr/lib/clang/18/include/ppc_wrappers/mmintrin.h
+OLD_FILES+=usr/lib/clang/18/include/ppc_wrappers/nmmintrin.h
+OLD_FILES+=usr/lib/clang/18/include/ppc_wrappers/pmmintrin.h
+OLD_FILES+=usr/lib/clang/18/include/ppc_wrappers/smmintrin.h
+OLD_FILES+=usr/lib/clang/18/include/ppc_wrappers/tmmintrin.h
+OLD_FILES+=usr/lib/clang/18/include/ppc_wrappers/x86gprintrin.h
+OLD_FILES+=usr/lib/clang/18/include/ppc_wrappers/x86intrin.h
+OLD_FILES+=usr/lib/clang/18/include/ppc_wrappers/xmmintrin.h
+OLD_DIRS+=usr/lib/clang/18/include/ppc_wrappers
+OLD_FILES+=usr/lib/clang/18/include/prfchiintrin.h
+OLD_FILES+=usr/lib/clang/18/include/prfchwintrin.h
+OLD_FILES+=usr/lib/clang/18/include/profile/InstrProfData.inc
+OLD_FILES+=usr/lib/clang/18/include/profile/MemProfData.inc
+OLD_DIRS+=usr/lib/clang/18/include/profile
+OLD_FILES+=usr/lib/clang/18/include/ptwriteintrin.h
+OLD_FILES+=usr/lib/clang/18/include/raointintrin.h
+OLD_FILES+=usr/lib/clang/18/include/rdpruintrin.h
+OLD_FILES+=usr/lib/clang/18/include/rdseedintrin.h
+OLD_FILES+=usr/lib/clang/18/include/riscv_bitmanip.h
+OLD_FILES+=usr/lib/clang/18/include/riscv_crypto.h
+OLD_FILES+=usr/lib/clang/18/include/riscv_ntlh.h
+OLD_FILES+=usr/lib/clang/18/include/riscv_vector.h
+OLD_FILES+=usr/lib/clang/18/include/rtmintrin.h
+OLD_FILES+=usr/lib/clang/18/include/s390intrin.h
+OLD_FILES+=usr/lib/clang/18/include/sanitizer/allocator_interface.h
+OLD_FILES+=usr/lib/clang/18/include/sanitizer/asan_interface.h
+OLD_FILES+=usr/lib/clang/18/include/sanitizer/common_interface_defs.h
+OLD_FILES+=usr/lib/clang/18/include/sanitizer/coverage_interface.h
+OLD_FILES+=usr/lib/clang/18/include/sanitizer/dfsan_interface.h
+OLD_FILES+=usr/lib/clang/18/include/sanitizer/hwasan_interface.h
+OLD_FILES+=usr/lib/clang/18/include/sanitizer/linux_syscall_hooks.h
+OLD_FILES+=usr/lib/clang/18/include/sanitizer/lsan_interface.h
+OLD_FILES+=usr/lib/clang/18/include/sanitizer/memprof_interface.h
+OLD_FILES+=usr/lib/clang/18/include/sanitizer/msan_interface.h
+OLD_FILES+=usr/lib/clang/18/include/sanitizer/netbsd_syscall_hooks.h
+OLD_FILES+=usr/lib/clang/18/include/sanitizer/scudo_interface.h
+OLD_FILES+=usr/lib/clang/18/include/sanitizer/tsan_interface.h
+OLD_FILES+=usr/lib/clang/18/include/sanitizer/tsan_interface_atomic.h
+OLD_FILES+=usr/lib/clang/18/include/sanitizer/ubsan_interface.h
+OLD_DIRS+=usr/lib/clang/18/include/sanitizer
+OLD_FILES+=usr/lib/clang/18/include/serializeintrin.h
+OLD_FILES+=usr/lib/clang/18/include/sgxintrin.h
+OLD_FILES+=usr/lib/clang/18/include/sha512intrin.h
+OLD_FILES+=usr/lib/clang/18/include/shaintrin.h
+OLD_FILES+=usr/lib/clang/18/include/sifive_vector.h
+OLD_FILES+=usr/lib/clang/18/include/sm3intrin.h
+OLD_FILES+=usr/lib/clang/18/include/sm4intrin.h
+OLD_FILES+=usr/lib/clang/18/include/smmintrin.h
+OLD_FILES+=usr/lib/clang/18/include/stdalign.h
+OLD_FILES+=usr/lib/clang/18/include/stdarg.h
+OLD_FILES+=usr/lib/clang/18/include/stdatomic.h
+OLD_FILES+=usr/lib/clang/18/include/stdbool.h
+OLD_FILES+=usr/lib/clang/18/include/stdckdint.h
+OLD_FILES+=usr/lib/clang/18/include/stddef.h
+OLD_FILES+=usr/lib/clang/18/include/stdint.h
+OLD_FILES+=usr/lib/clang/18/include/stdnoreturn.h
+OLD_FILES+=usr/lib/clang/18/include/tbmintrin.h
+OLD_FILES+=usr/lib/clang/18/include/tgmath.h
+OLD_FILES+=usr/lib/clang/18/include/tmmintrin.h
+OLD_FILES+=usr/lib/clang/18/include/tsxldtrkintrin.h
+OLD_FILES+=usr/lib/clang/18/include/uintrintrin.h
+OLD_FILES+=usr/lib/clang/18/include/unwind.h
+OLD_FILES+=usr/lib/clang/18/include/usermsrintrin.h
+OLD_FILES+=usr/lib/clang/18/include/vadefs.h
+OLD_FILES+=usr/lib/clang/18/include/vaesintrin.h
+OLD_FILES+=usr/lib/clang/18/include/varargs.h
+OLD_FILES+=usr/lib/clang/18/include/vecintrin.h
+OLD_FILES+=usr/lib/clang/18/include/velintrin.h
+OLD_FILES+=usr/lib/clang/18/include/velintrin_approx.h
+OLD_FILES+=usr/lib/clang/18/include/velintrin_gen.h
+OLD_FILES+=usr/lib/clang/18/include/vpclmulqdqintrin.h
+OLD_FILES+=usr/lib/clang/18/include/waitpkgintrin.h
+OLD_FILES+=usr/lib/clang/18/include/wasm_simd128.h
+OLD_FILES+=usr/lib/clang/18/include/wbnoinvdintrin.h
+OLD_FILES+=usr/lib/clang/18/include/wmmintrin.h
+OLD_FILES+=usr/lib/clang/18/include/x86gprintrin.h
+OLD_FILES+=usr/lib/clang/18/include/x86intrin.h
+OLD_FILES+=usr/lib/clang/18/include/xmmintrin.h
+OLD_FILES+=usr/lib/clang/18/include/xopintrin.h
+OLD_FILES+=usr/lib/clang/18/include/xray/xray_interface.h
+OLD_FILES+=usr/lib/clang/18/include/xray/xray_log_interface.h
+OLD_FILES+=usr/lib/clang/18/include/xray/xray_records.h
+OLD_DIRS+=usr/lib/clang/18/include/xray
+OLD_FILES+=usr/lib/clang/18/include/xsavecintrin.h
+OLD_FILES+=usr/lib/clang/18/include/xsaveintrin.h
+OLD_FILES+=usr/lib/clang/18/include/xsaveoptintrin.h
+OLD_FILES+=usr/lib/clang/18/include/xsavesintrin.h
+OLD_FILES+=usr/lib/clang/18/include/xtestintrin.h
+OLD_DIRS+=usr/lib/clang/18/include
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-aarch64.so
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-arm.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-arm.so
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-armhf.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-armhf.so
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-i386.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-i386.so
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-powerpc64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-powerpc64.so
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-powerpc64le.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-powerpc64le.so
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-preinit-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-preinit-arm.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-preinit-armhf.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-preinit-i386.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-preinit-powerpc64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-preinit-powerpc64le.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-preinit-riscv64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-riscv64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-riscv64.so
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan-x86_64.so
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan_cxx-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan_cxx-arm.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan_cxx-armhf.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan_cxx-i386.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan_cxx-powerpc64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan_cxx-powerpc64le.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan_cxx-riscv64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan_static-i386.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan_static-powerpc64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan_static-powerpc64le.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.asan_static-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.cfi-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.cfi-arm.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.cfi-armhf.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.cfi-i386.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.cfi-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.cfi_diag-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.cfi_diag-arm.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.cfi_diag-armhf.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.cfi_diag-i386.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.cfi_diag-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.dd-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.dd-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.fuzzer-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.fuzzer-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.fuzzer_interceptors-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.fuzzer_no_main-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.fuzzer_no_main-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.msan-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.msan-powerpc64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.msan-powerpc64le.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.msan-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.msan_cxx-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.msan_cxx-powerpc64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.msan_cxx-powerpc64le.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.msan_cxx-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.profile-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.profile-arm.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.profile-armhf.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.profile-i386.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.profile-powerpc.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.profile-powerpc64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.profile-powerpc64le.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.profile-riscv64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.profile-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.safestack-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.safestack-i386.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.safestack-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.stats-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.stats-arm.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.stats-armhf.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.stats-i386.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.stats-powerpc64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.stats-powerpc64le.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.stats-riscv64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.stats-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.stats_client-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.stats_client-arm.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.stats_client-armhf.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.stats_client-i386.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.stats_client-powerpc64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.stats_client-powerpc64le.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.stats_client-riscv64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.stats_client-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.tsan-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.tsan-powerpc64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.tsan-powerpc64le.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.tsan-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.tsan_cxx-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.tsan_cxx-powerpc64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.tsan_cxx-powerpc64le.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.tsan_cxx-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_minimal-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_minimal-arm.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_minimal-armhf.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_minimal-i386.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_minimal-powerpc64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_minimal-powerpc64le.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_minimal-riscv64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_minimal-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_standalone-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_standalone-arm.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_standalone-armhf.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_standalone-powerpc64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_standalone-powerpc64le.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_standalone-riscv64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_standalone_cxx-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_standalone_cxx-arm.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_standalone_cxx-armhf.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_standalone_cxx-powerpc64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_standalone_cxx-powerpc64le.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_standalone_cxx-riscv64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-arm.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-armhf.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-basic-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-basic-arm.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-basic-armhf.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-basic-powerpc64le.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-basic-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-fdr-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-fdr-arm.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-fdr-armhf.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-fdr-powerpc64le.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-fdr-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-powerpc64le.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-profiling-aarch64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-profiling-arm.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-profiling-armhf.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-profiling-powerpc64le.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-profiling-x86_64.a
+OLD_FILES+=usr/lib/clang/18/lib/freebsd/libclang_rt.xray-x86_64.a
+OLD_DIRS+=usr/lib/clang/18/lib/freebsd
+OLD_DIRS+=usr/lib/clang/18/lib
+OLD_FILES+=usr/lib/clang/18/share/asan_ignorelist.txt
+OLD_FILES+=usr/lib/clang/18/share/cfi_ignorelist.txt
+OLD_FILES+=usr/lib/clang/18/share/msan_ignorelist.txt
+OLD_DIRS+=usr/lib/clang/18/share
+OLD_DIRS+=usr/lib/clang/18
OLD_DIRS+=usr/lib/clang
OLD_FILES+=usr/share/doc/llvm/clang/LICENSE.TXT
OLD_DIRS+=usr/share/doc/llvm/clang
@@ -1634,14 +1411,6 @@ OLD_FILES+=usr/share/man/man3/cuse_wait_and_process.3.gz
OLD_DIRS+=usr/include/fs/cuse
.endif
-# devd(8) not listed here on purpose
-.if ${MK_CXX} == no
-OLD_FILES+=usr/bin/CC
-OLD_FILES+=usr/bin/c++
-OLD_FILES+=usr/bin/g++
-OLD_FILES+=usr/libexec/cc1plus
-.endif
-
.if ${MK_DEBUG_FILES} == no
.if exists(${DESTDIR}/usr/lib/debug)
DEBUG_DIRS!=find ${DESTDIR}/usr/lib/debug -mindepth 1 \
@@ -1663,52 +1432,16 @@ OLD_FILES+=usr/bin/dialog
OLD_FILES+=usr/bin/dpv
OLD_FILES+=usr/lib/libdialog.a
OLD_FILES+=usr/lib/libdialog.so
-OLD_FILES+=usr/lib/libdialog.so.8
+OLD_LIBS+=usr/lib/libdialog.so.10
OLD_FILES+=usr/lib/libdialog_p.a
OLD_FILES+=usr/lib/libdpv.a
OLD_FILES+=usr/lib/libdpv.so
-OLD_FILES+=usr/lib/libdpv.so.1
+OLD_LIBS+=usr/lib/libdpv.so.3
OLD_FILES+=usr/lib/libdpv_p.a
-OLD_FILES+=usr/sbin/bsdconfig
OLD_FILES+=usr/share/man/man1/dialog.1.gz
OLD_FILES+=usr/share/man/man1/dpv.1.gz
OLD_FILES+=usr/share/man/man3/dialog.3.gz
OLD_FILES+=usr/share/man/man3/dpv.3.gz
-OLD_FILES+=usr/share/man/man8/bsdconfig.8.gz
-OLD_DIRS+=usr/share/bsdconfig
-OLD_DIRS+=usr/share/bsdconfig/media
-OLD_DIRS+=usr/share/bsdconfig/networking
-OLD_DIRS+=usr/share/bsdconfig/packages
-OLD_DIRS+=usr/share/bsdconfig/password
-OLD_DIRS+=usr/share/bsdconfig/startup
-OLD_DIRS+=usr/share/bsdconfig/timezone
-OLD_DIRS+=usr/share/bsdconfig/usermgmt
-.endif
-
-.if ${MK_EFI} == no
-OLD_FILES+=usr/sbin/efibootmgr
-OLD_FILES+=usr/sbin/efidp
-OLD_FILES+=usr/sbin/efivar
-OLD_FILES+=usr/sbin/uefisign
-OLD_FILES+=usr/share/examples/uefisign/uefikeys
-.endif
-
-.if ${MK_FTP} == no
-OLD_FILES+=etc/ftpusers
-OLD_FILES+=etc/newsyslog.conf.d/ftp.conf
-OLD_FILES+=etc/pam.d/ftp
-OLD_FILES+=etc/pam.d/ftpd
-OLD_FILES+=etc/rc.d/ftpd
-OLD_FILES+=etc/syslog.d/ftp.conf
-OLD_FILES+=usr/bin/ftp
-OLD_FILES+=usr/bin/gate-ftp
-OLD_FILES+=usr/bin/pftp
-OLD_FILES+=usr/libexec/ftpd
-OLD_FILES+=usr/share/man/man1/ftp.1.gz
-OLD_FILES+=usr/share/man/man1/gate-ftp.1.gz
-OLD_FILES+=usr/share/man/man1/pftp.1.gz
-OLD_FILES+=usr/share/man/man5/ftpchroot.5.gz
-OLD_FILES+=usr/share/man/man8/ftpd.8.gz
.endif
.if ${MK_DICT} == no
@@ -1727,7 +1460,160 @@ OLD_DIRS+=etc/dma
OLD_FILES+=usr/libexec/dma
OLD_FILES+=usr/libexec/dma-mbox-create
OLD_FILES+=usr/share/man/man8/dma.8.gz
+OLD_FILES+=usr/share/examples/dma/auth.conf
OLD_FILES+=usr/share/examples/dma/mailer.conf
+OLD_DIRS+=usr/share/examples/dma
+.endif
+
+.if ${MK_DTRACE} == no
+OLD_LIBS+=lib/libctf.so.2
+OLD_LIBS+=lib/libdtrace.so.2
+OLD_FILES+=usr/bin/ctfconvert
+OLD_FILES+=usr/bin/ctfdump
+OLD_FILES+=usr/bin/ctfmerge
+OLD_FILES+=usr/lib/dtrace/drti.o
+OLD_FILES+=usr/lib/dtrace/errno.d
+OLD_FILES+=usr/lib/dtrace/io.d
+OLD_FILES+=usr/lib/dtrace/ip.d
+OLD_FILES+=usr/lib/dtrace/ipfw.d
+OLD_FILES+=usr/lib/dtrace/mbuf.d
+OLD_FILES+=usr/lib/dtrace/psinfo.d
+.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386"
+OLD_FILES+=usr/lib/dtrace/regs_x86.d
+.endif
+OLD_FILES+=usr/lib/dtrace/sctp.d
+OLD_FILES+=usr/lib/dtrace/siftr.d
+OLD_FILES+=usr/lib/dtrace/signal.d
+OLD_FILES+=usr/lib/dtrace/socket.d
+OLD_FILES+=usr/lib/dtrace/tcp.d
+OLD_FILES+=usr/lib/dtrace/udp.d
+OLD_FILES+=usr/lib/dtrace/udplite.d
+OLD_FILES+=usr/lib/dtrace/unistd.d
+OLD_FILES+=usr/lib/libctf.a
+OLD_FILES+=usr/lib/libctf.so
+OLD_FILES+=usr/lib/libctf_p.a
+OLD_FILES+=usr/lib/libdtrace.a
+OLD_FILES+=usr/lib/libdtrace.so
+OLD_FILES+=usr/lib/libdtrace_p.a
+OLD_LIBS+=lib/libdtrace.so.2
+OLD_FILES+=usr/libexec/dwatch/chmod
+OLD_FILES+=usr/libexec/dwatch/errno
+OLD_FILES+=usr/libexec/dwatch/fchmodat
+OLD_FILES+=usr/libexec/dwatch/io
+OLD_FILES+=usr/libexec/dwatch/io-done
+OLD_FILES+=usr/libexec/dwatch/io-start
+OLD_FILES+=usr/libexec/dwatch/ip
+OLD_FILES+=usr/libexec/dwatch/ip-receive
+OLD_FILES+=usr/libexec/dwatch/ip-send
+OLD_FILES+=usr/libexec/dwatch/kill
+OLD_FILES+=usr/libexec/dwatch/lchmod
+OLD_FILES+=usr/libexec/dwatch/nanosleep
+OLD_FILES+=usr/libexec/dwatch/open
+OLD_FILES+=usr/libexec/dwatch/openat
+OLD_FILES+=usr/libexec/dwatch/proc
+OLD_FILES+=usr/libexec/dwatch/proc-create
+OLD_FILES+=usr/libexec/dwatch/proc-exec
+OLD_FILES+=usr/libexec/dwatch/proc-exec-failure
+OLD_FILES+=usr/libexec/dwatch/proc-exec-success
+OLD_FILES+=usr/libexec/dwatch/proc-exit
+OLD_FILES+=usr/libexec/dwatch/proc-signal
+OLD_FILES+=usr/libexec/dwatch/proc-signal-clear
+OLD_FILES+=usr/libexec/dwatch/proc-signal-discard
+OLD_FILES+=usr/libexec/dwatch/proc-signal-send
+OLD_FILES+=usr/libexec/dwatch/proc-status
+OLD_FILES+=usr/libexec/dwatch/read
+OLD_FILES+=usr/libexec/dwatch/recv
+OLD_FILES+=usr/libexec/dwatch/recvfrom
+OLD_FILES+=usr/libexec/dwatch/recvmsg
+OLD_FILES+=usr/libexec/dwatch/rw
+OLD_FILES+=usr/libexec/dwatch/sched
+OLD_FILES+=usr/libexec/dwatch/sched-change-pri
+OLD_FILES+=usr/libexec/dwatch/sched-cpu
+OLD_FILES+=usr/libexec/dwatch/sched-dequeue
+OLD_FILES+=usr/libexec/dwatch/sched-enqueue
+OLD_FILES+=usr/libexec/dwatch/sched-exec
+OLD_FILES+=usr/libexec/dwatch/sched-lend-pri
+OLD_FILES+=usr/libexec/dwatch/sched-load-change
+OLD_FILES+=usr/libexec/dwatch/sched-off-cpu
+OLD_FILES+=usr/libexec/dwatch/sched-on-cpu
+OLD_FILES+=usr/libexec/dwatch/sched-preempt
+OLD_FILES+=usr/libexec/dwatch/sched-pri
+OLD_FILES+=usr/libexec/dwatch/sched-queue
+OLD_FILES+=usr/libexec/dwatch/sched-remain-cpu
+OLD_FILES+=usr/libexec/dwatch/sched-sleep
+OLD_FILES+=usr/libexec/dwatch/sched-surrender
+OLD_FILES+=usr/libexec/dwatch/sched-tick
+OLD_FILES+=usr/libexec/dwatch/sched-wakeup
+OLD_FILES+=usr/libexec/dwatch/send
+OLD_FILES+=usr/libexec/dwatch/sendmsg
+OLD_FILES+=usr/libexec/dwatch/sendrecv
+OLD_FILES+=usr/libexec/dwatch/sendto
+OLD_FILES+=usr/libexec/dwatch/systop
+OLD_FILES+=usr/libexec/dwatch/tcp
+OLD_FILES+=usr/libexec/dwatch/tcp-accept
+OLD_FILES+=usr/libexec/dwatch/tcp-accept-established
+OLD_FILES+=usr/libexec/dwatch/tcp-accept-refused
+OLD_FILES+=usr/libexec/dwatch/tcp-connect
+OLD_FILES+=usr/libexec/dwatch/tcp-connect-established
+OLD_FILES+=usr/libexec/dwatch/tcp-connect-refused
+OLD_FILES+=usr/libexec/dwatch/tcp-connect-request
+OLD_FILES+=usr/libexec/dwatch/tcp-established
+OLD_FILES+=usr/libexec/dwatch/tcp-init
+OLD_FILES+=usr/libexec/dwatch/tcp-io
+OLD_FILES+=usr/libexec/dwatch/tcp-receive
+OLD_FILES+=usr/libexec/dwatch/tcp-refused
+OLD_FILES+=usr/libexec/dwatch/tcp-send
+OLD_FILES+=usr/libexec/dwatch/tcp-state-change
+OLD_FILES+=usr/libexec/dwatch/tcp-status
+OLD_FILES+=usr/libexec/dwatch/udp
+OLD_FILES+=usr/libexec/dwatch/udp-receive
+OLD_FILES+=usr/libexec/dwatch/udp-send
+OLD_FILES+=usr/libexec/dwatch/udplite
+OLD_FILES+=usr/libexec/dwatch/udplite-receive
+OLD_FILES+=usr/libexec/dwatch/udplite-send
+OLD_FILES+=usr/libexec/dwatch/vop_create
+OLD_FILES+=usr/libexec/dwatch/vop_lookup
+OLD_FILES+=usr/libexec/dwatch/vop_mkdir
+OLD_FILES+=usr/libexec/dwatch/vop_mknod
+OLD_FILES+=usr/libexec/dwatch/vop_readdir
+OLD_FILES+=usr/libexec/dwatch/vop_remove
+OLD_FILES+=usr/libexec/dwatch/vop_rename
+OLD_FILES+=usr/libexec/dwatch/vop_rmdir
+OLD_FILES+=usr/libexec/dwatch/vop_symlink
+OLD_FILES+=usr/libexec/dwatch/write
+OLD_FILES+=usr/sbin/dtrace
+OLD_FILES+=usr/sbin/dwatch
+OLD_FILES+=usr/sbin/lockstat
+OLD_FILES+=usr/sbin/plockstat
+OLD_FILES+=usr/share/man/man1/dtrace.1.gz
+OLD_FILES+=usr/share/man/man1/dtruss.1.gz
+OLD_FILES+=usr/share/man/man1/lockstat.1.gz
+OLD_FILES+=usr/share/man/man1/plockstat.1.gz
+OLD_FILES+=usr/share/dtrace/blocking
+OLD_FILES+=usr/share/dtrace/disklatency
+OLD_FILES+=usr/share/dtrace/disklatencycmd
+OLD_FILES+=usr/share/dtrace/hotopen
+OLD_FILES+=usr/share/dtrace/nfsattrstats
+OLD_FILES+=usr/share/dtrace/nfsclienttime
+OLD_FILES+=usr/share/dtrace/siftr
+OLD_FILES+=usr/share/dtrace/toolkit/execsnoop
+OLD_FILES+=usr/share/dtrace/toolkit/hotkernel
+OLD_FILES+=usr/share/dtrace/toolkit/hotuser
+OLD_FILES+=usr/share/dtrace/toolkit/opensnoop
+OLD_FILES+=usr/share/dtrace/toolkit/procsystime
+OLD_FILES+=usr/share/dtrace/tcpconn
+OLD_FILES+=usr/share/dtrace/tcpdebug
+OLD_FILES+=usr/share/dtrace/tcpstate
+OLD_FILES+=usr/share/dtrace/tcptrack
+OLD_FILES+=usr/share/dtrace/udptrack
+OLD_FILES+=usr/share/man/man1/dtrace.1.gz
+OLD_DIRS+=usr/lib/dtrace
+. for libcompat in ${_ALL_libcompats}
+OLD_DIRS+=usr/lib${libcompat}/dtrace
+. endfor
+OLD_DIRS+=usr/libexec/dwatch
+OLD_DIRS+=usr/share/dtrace/toolkit
+OLD_DIRS+=usr/share/dtrace
.endif
.if ${MK_EE} == no
@@ -1747,6 +1633,14 @@ OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/ee.cat
OLD_FILES+=usr/share/nls/uk_UA.KOI8-U/ee.cat
.endif
+.if ${MK_EFI} == no
+OLD_FILES+=usr/sbin/efibootmgr
+OLD_FILES+=usr/sbin/efidp
+OLD_FILES+=usr/sbin/efivar
+OLD_FILES+=usr/sbin/uefisign
+OLD_FILES+=usr/share/examples/uefisign/uefikeys
+.endif
+
.if ${MK_EXAMPLES} == no
OLD_FILES+=usr/share/examples/BSD_daemon/FreeBSD.pfa
OLD_FILES+=usr/share/examples/BSD_daemon/README
@@ -1786,12 +1680,12 @@ OLD_FILES+=usr/share/examples/etc/login.access
OLD_FILES+=usr/share/examples/etc/make.conf
OLD_FILES+=usr/share/examples/etc/rc.bsdextended
OLD_FILES+=usr/share/examples/etc/rc.firewall
-OLD_FILES+=usr/share/examples/etc/rc.sendmail
OLD_FILES+=usr/share/examples/etc/termcap.small
OLD_FILES+=usr/share/examples/etc/wpa_supplicant.conf
OLD_FILES+=usr/share/examples/find_interface/Makefile
OLD_FILES+=usr/share/examples/find_interface/README
OLD_FILES+=usr/share/examples/find_interface/find_interface.c
+OLD_FILES+=usr/share/examples/flua/libjail.lua
OLD_FILES+=usr/share/examples/hast/ucarp.sh
OLD_FILES+=usr/share/examples/hast/ucarp_down.sh
OLD_FILES+=usr/share/examples/hast/ucarp_up.sh
@@ -1871,6 +1765,8 @@ OLD_FILES+=usr/share/examples/kld/syscall/module/Makefile
OLD_FILES+=usr/share/examples/kld/syscall/module/syscall.c
OLD_FILES+=usr/share/examples/kld/syscall/test/Makefile
OLD_FILES+=usr/share/examples/kld/syscall/test/call.c
+OLD_FILES+=usr/share/examples/kyua/Kyuafile.top
+OLD_FILES+=usr/share/examples/kyua/kyua.conf
OLD_FILES+=usr/share/examples/libusb20/Makefile
OLD_FILES+=usr/share/examples/libusb20/README
OLD_FILES+=usr/share/examples/libusb20/bulk.c
@@ -1942,6 +1838,7 @@ OLD_FILES+=usr/share/examples/scsi_target/scsi_cmds.c
OLD_FILES+=usr/share/examples/scsi_target/scsi_target.8
OLD_FILES+=usr/share/examples/scsi_target/scsi_target.c
OLD_FILES+=usr/share/examples/scsi_target/scsi_target.h
+OLD_FILES+=usr/share/examples/sendmail/mailer.conf
OLD_FILES+=usr/share/examples/ses/Makefile
OLD_FILES+=usr/share/examples/ses/Makefile.inc
OLD_FILES+=usr/share/examples/ses/getencstat/Makefile
@@ -1968,6 +1865,11 @@ OLD_FILES+=usr/share/examples/smbfs/print/lj6l
OLD_FILES+=usr/share/examples/smbfs/print/ljspool
OLD_FILES+=usr/share/examples/smbfs/print/printcap.sample
OLD_FILES+=usr/share/examples/smbfs/print/tolj
+OLD_FILES+=usr/share/examples/sound/basic.c
+OLD_FILES+=usr/share/examples/sound/ossmidi.h
+OLD_FILES+=usr/share/examples/sound/ossinit.h
+OLD_FILES+=usr/share/examples/sound/README
+OLD_FILES+=usr/share/examples/sound/midi.c
OLD_FILES+=usr/share/examples/sunrpc/Makefile
OLD_FILES+=usr/share/examples/sunrpc/dir/Makefile
OLD_FILES+=usr/share/examples/sunrpc/dir/dir.x
@@ -2001,6 +1903,7 @@ OLD_DIRS+=usr/share/examples/dwatch
OLD_DIRS+=usr/share/examples/etc
OLD_DIRS+=usr/share/examples/etc/defaults
OLD_DIRS+=usr/share/examples/find_interface
+OLD_DIRS+=usr/share/examples/flua
OLD_DIRS+=usr/share/examples/hast
OLD_DIRS+=usr/share/examples/ibcs2
OLD_DIRS+=usr/share/examples/hostapd
@@ -2020,6 +1923,7 @@ OLD_DIRS+=usr/share/examples/kld/khelp
OLD_DIRS+=usr/share/examples/kld/syscall
OLD_DIRS+=usr/share/examples/kld/syscall/module
OLD_DIRS+=usr/share/examples/kld/syscall/test
+OLD_DIRS+=usr/share/examples/kyua
OLD_DIRS+=usr/share/examples/libusb20
OLD_DIRS+=usr/share/examples/libvgl
OLD_DIRS+=usr/share/examples/mdoc
@@ -2030,6 +1934,7 @@ OLD_DIRS+=usr/share/examples/ppi
OLD_DIRS+=usr/share/examples/ppp
OLD_DIRS+=usr/share/examples/printing
OLD_DIRS+=usr/share/examples/scsi_target
+OLD_DIRS+=usr/share/examples/sendmail
OLD_DIRS+=usr/share/examples/ses
OLD_DIRS+=usr/share/examples/ses/getencstat
OLD_DIRS+=usr/share/examples/ses/sesd
@@ -2038,6 +1943,7 @@ OLD_DIRS+=usr/share/examples/ses/setobjstat
OLD_DIRS+=usr/share/examples/ses/srcs
OLD_DIRS+=usr/share/examples/smbfs
OLD_DIRS+=usr/share/examples/smbfs/print
+OLD_DIRS+=usr/share/examples/sound
OLD_DIRS+=usr/share/examples/sunrpc
OLD_DIRS+=usr/share/examples/sunrpc/dir
OLD_DIRS+=usr/share/examples/sunrpc/msg
@@ -2047,6 +1953,11 @@ OLD_DIRS+=usr/share/examples/uefisign
OLD_DIRS+=usr/share/examples/ypldap
.endif
+.if ${MK_FDT} == no
+OLD_FILES+=usr/sbin/ofwdump
+OLD_FILES+=usr/share/man/man8/ofwdump.8.gz
+.endif
+
.if ${MK_FINGER} == no
OLD_FILES+=usr/bin/finger
OLD_FILES+=usr/share/man/man1/finger.1.gz
@@ -2086,11 +1997,29 @@ OLD_FILES+=usr/share/man/man5/freebsd-update.conf.5.gz
OLD_FILES+=usr/share/man/man8/freebsd-update.8.gz
.endif
-.if ${MK_FREEBSD_UPDATE} == no && ${MK_PORTSNAP} == no
+.if ${MK_FREEBSD_UPDATE} == no
OLD_FILES+=usr/libexec/phttpget
OLD_FILES+=usr/share/man/man8/phttpget.8.gz
.endif
+.if ${MK_FTP} == no
+OLD_FILES+=etc/ftpusers
+OLD_FILES+=etc/newsyslog.conf.d/ftp.conf
+OLD_FILES+=etc/pam.d/ftp
+OLD_FILES+=etc/pam.d/ftpd
+OLD_FILES+=etc/rc.d/ftpd
+OLD_FILES+=etc/syslog.d/ftp.conf
+OLD_FILES+=usr/bin/ftp
+OLD_FILES+=usr/bin/gate-ftp
+OLD_FILES+=usr/bin/pftp
+OLD_FILES+=usr/libexec/ftpd
+OLD_FILES+=usr/share/man/man1/ftp.1.gz
+OLD_FILES+=usr/share/man/man1/gate-ftp.1.gz
+OLD_FILES+=usr/share/man/man1/pftp.1.gz
+OLD_FILES+=usr/share/man/man5/ftpchroot.5.gz
+OLD_FILES+=usr/share/man/man8/ftpd.8.gz
+.endif
+
.if ${MK_GAMES} == no
OLD_FILES+=usr/bin/caesar
OLD_FILES+=usr/bin/factor
@@ -2136,18 +2065,6 @@ OLD_FILES+=usr/share/man/man8/strfile.8.gz
OLD_FILES+=usr/share/man/man8/unstr.8.gz
.endif
-.if ${MK_LLVM_COV} == no && !defined(WITH_PORT_BASE_GCC)
-OLD_FILES+=usr/bin/gcov
-OLD_FILES+=usr/share/man/man1/gcov.1.gz
-.endif
-
-.if ${MK_LLVM_COV} == no
-OLD_FILES+=usr/bin/llvm-cov
-OLD_FILES+=usr/bin/llvm-profdata
-OLD_FILES+=usr/share/man/man1/llvm-cov.1.gz
-OLD_FILES+=usr/share/man/man1/llvm-profdata.1.gz
-.endif
-
.if ${MK_GH_BC} == no
OLD_FILES+=usr/share/misc/bc.library
OLD_FILES+=usr/tests/usr.bin/dc/Kyuafile
@@ -2156,104 +2073,97 @@ OLD_FILES+=usr/tests/usr.bin/dc/inout
OLD_DIRS+=usr/tests/usr.bin/dc
.endif
+.if ${MK_GNU_DIFF} == no
+OLD_FILES+=usr/bin/diff3
+OLD_FILES+=usr/share/man/man1/diff3.1.gz
+.endif
+
.if ${MK_GOOGLETEST} == no
-OLD_FILES+=usr/include/gmock/gmock-actions.h
-OLD_FILES+=usr/include/gmock/gmock-cardinalities.h
-OLD_FILES+=usr/include/gmock/gmock-generated-actions.h
-OLD_FILES+=usr/include/gmock/gmock-generated-function-mockers.h
-OLD_FILES+=usr/include/gmock/gmock-generated-matchers.h
-OLD_FILES+=usr/include/gmock/gmock-generated-nice-strict.h
-OLD_FILES+=usr/include/gmock/gmock-matchers.h
-OLD_FILES+=usr/include/gmock/gmock-more-actions.h
-OLD_FILES+=usr/include/gmock/gmock-more-matchers.h
-OLD_FILES+=usr/include/gmock/gmock-spec-builders.h
-OLD_FILES+=usr/include/gmock/gmock.h
-OLD_FILES+=usr/include/gmock/internal/custom/gmock-generated-actions.h
-OLD_FILES+=usr/include/gmock/internal/custom/gmock-matchers.h
-OLD_FILES+=usr/include/gmock/internal/custom/gmock-port.h
-OLD_FILES+=usr/include/gmock/internal/gmock-generated-internal-utils.h
-OLD_FILES+=usr/include/gmock/internal/gmock-internal-utils.h
-OLD_FILES+=usr/include/gmock/internal/gmock-port.h
-OLD_DIRS+=usr/include/gmock
-OLD_FILES+=usr/include/gtest/gtest_pred_impl.h
-OLD_FILES+=usr/include/gtest/gtest_prod.h
-OLD_FILES+=usr/include/gtest/gtest-death-test.h
-OLD_FILES+=usr/include/gtest/gtest-message.h
-OLD_FILES+=usr/include/gtest/gtest-param-test.h
-OLD_FILES+=usr/include/gtest/gtest-printers.h
-OLD_FILES+=usr/include/gtest/gtest-spi.h
-OLD_FILES+=usr/include/gtest/gtest-test-part.h
-OLD_FILES+=usr/include/gtest/gtest-typed-test.h
-OLD_FILES+=usr/include/gtest/gtest.h
-OLD_FILES+=usr/include/gtest/internal/custom/gtest-port.h
-OLD_FILES+=usr/include/gtest/internal/custom/gtest-printers.h
-OLD_FILES+=usr/include/gtest/internal/custom/gtest.h
-OLD_FILES+=usr/include/gtest/internal/gtest-death-test-internal.h
-OLD_FILES+=usr/include/gtest/internal/gtest-filepath.h
-OLD_FILES+=usr/include/gtest/internal/gtest-internal.h
-OLD_FILES+=usr/include/gtest/internal/gtest-linked_ptr.h
-OLD_FILES+=usr/include/gtest/internal/gtest-param-util-generated.h
-OLD_FILES+=usr/include/gtest/internal/gtest-param-util.h
-OLD_FILES+=usr/include/gtest/internal/gtest-port-arch.h
-OLD_FILES+=usr/include/gtest/internal/gtest-port.h
-OLD_FILES+=usr/include/gtest/internal/gtest-string.h
-OLD_FILES+=usr/include/gtest/internal/gtest-tuple.h
-OLD_FILES+=usr/include/gtest/internal/gtest-type-util.h
-OLD_DIRS+=usr/include/gtest
-OLD_FILES+=usr/lib/libprivategmock_main.a
-OLD_FILES+=usr/lib/libprivategmock_main.so
-OLD_LIBS+=usr/lib/libprivategmock_main.so.0
-OLD_FILES+=usr/lib/libprivategmock_main_p.a
+OLD_FILES+=usr/include/private/gmock/gmock-actions.h
+OLD_FILES+=usr/include/private/gmock/gmock-cardinalities.h
+OLD_FILES+=usr/include/private/gmock/gmock-function-mocker.h
+OLD_FILES+=usr/include/private/gmock/gmock-matchers.h
+OLD_FILES+=usr/include/private/gmock/gmock-more-actions.h
+OLD_FILES+=usr/include/private/gmock/gmock-more-matchers.h
+OLD_FILES+=usr/include/private/gmock/gmock-nice-strict.h
+OLD_FILES+=usr/include/private/gmock/gmock-spec-builders.h
+OLD_FILES+=usr/include/private/gmock/gmock.h
+OLD_FILES+=usr/include/private/gmock/internal/custom/gmock-generated-actions.h
+OLD_FILES+=usr/include/private/gmock/internal/custom/gmock-matchers.h
+OLD_FILES+=usr/include/private/gmock/internal/custom/gmock-port.h
+OLD_FILES+=usr/include/private/gmock/internal/gmock-internal-utils.h
+OLD_FILES+=usr/include/private/gmock/internal/gmock-port.h
+OLD_FILES+=usr/include/private/gmock/internal/gmock-pp.h
+OLD_FILES+=usr/include/private/gtest/gtest-assertion-result.h
+OLD_FILES+=usr/include/private/gtest/gtest-death-test.h
+OLD_FILES+=usr/include/private/gtest/gtest-matchers.h
+OLD_FILES+=usr/include/private/gtest/gtest-message.h
+OLD_FILES+=usr/include/private/gtest/gtest-param-test.h
+OLD_FILES+=usr/include/private/gtest/gtest-printers.h
+OLD_FILES+=usr/include/private/gtest/gtest-spi.h
+OLD_FILES+=usr/include/private/gtest/gtest-test-part.h
+OLD_FILES+=usr/include/private/gtest/gtest-typed-test.h
+OLD_FILES+=usr/include/private/gtest/gtest.h
+OLD_FILES+=usr/include/private/gtest/gtest_pred_impl.h
+OLD_FILES+=usr/include/private/gtest/gtest_prod.h
+OLD_FILES+=usr/include/private/gtest/internal/custom/gtest-port.h
+OLD_FILES+=usr/include/private/gtest/internal/custom/gtest-printers.h
+OLD_FILES+=usr/include/private/gtest/internal/custom/gtest.h
+OLD_FILES+=usr/include/private/gtest/internal/gtest-death-test-internal.h
+OLD_FILES+=usr/include/private/gtest/internal/gtest-filepath.h
+OLD_FILES+=usr/include/private/gtest/internal/gtest-internal.h
+OLD_FILES+=usr/include/private/gtest/internal/gtest-param-util.h
+OLD_FILES+=usr/include/private/gtest/internal/gtest-port-arch.h
+OLD_FILES+=usr/include/private/gtest/internal/gtest-port.h
+OLD_FILES+=usr/include/private/gtest/internal/gtest-string.h
+OLD_FILES+=usr/include/private/gtest/internal/gtest-type-util.h
OLD_FILES+=usr/lib/libprivategmock.a
-OLD_FILES+=usr/lib/libprivategmock.so
-OLD_LIBS+=usr/lib/libprivategmock.so.0
OLD_FILES+=usr/lib/libprivategmock_p.a
-OLD_FILES+=usr/lib/libprivategtest_main.a
-OLD_FILES+=usr/lib/libprivategtest_main.so
-OLD_LIBS+=usr/lib/libprivategtest_main.so.0
-OLD_FILES+=usr/lib/libprivategtest_main_p.a
+OLD_LIBS+=usr/lib/libprivategmock.so
+OLD_LIBS+=usr/lib/libprivategmock.so.0
+OLD_FILES+=usr/lib/libprivategmock_main.a
+OLD_FILES+=usr/lib/libprivategmock_main_p.a
+OLD_LIBS+=usr/lib/libprivategmock_main.so
+OLD_LIBS+=usr/lib/libprivategmock_main.so.0
OLD_FILES+=usr/lib/libprivategtest.a
-OLD_FILES+=usr/lib/libprivategtest.so
-OLD_LIBS+=usr/lib/libprivategtest.so.0
OLD_FILES+=usr/lib/libprivategtest_p.a
-OLD_FILES+=usr/tests/lib/googletest/gmock/gmock_stress_test
+OLD_LIBS+=usr/lib/libprivategtest.so
+OLD_LIBS+=usr/lib/libprivategtest.so.0
+OLD_FILES+=usr/lib/libprivategtest_main.a
+OLD_FILES+=usr/lib/libprivategtest_main_p.a
+OLD_LIBS+=usr/lib/libprivategtest_main.so
+OLD_LIBS+=usr/lib/libprivategtest_main.so.0
+OLD_FILES+=usr/tests/lib/googletest/Kyuafile
OLD_FILES+=usr/tests/lib/googletest/gmock/Kyuafile
-OLD_DIRS+=usr/tests/lib/googletest/gmock
-OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock_ex_test
-OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock_link_test
-OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock_test
+OLD_FILES+=usr/tests/lib/googletest/gmock/gmock_stress_test
+OLD_FILES+=usr/tests/lib/googletest/gmock_main/Kyuafile
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-actions_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-cardinalities_test
-OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-ex_test
-OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-generated-actions_test
-OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-generated-function-mockers_test
-OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-generated-internal-utils_test
-OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-generated-matchers_test
+OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-function-mocker_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-internal-utils_test
-OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-matchers_test
+OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-matchers-arithmetic_test
+OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-matchers-comparisons_test
+OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-matchers-containers_test
+OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-matchers-misc_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-more-actions_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-nice-strict_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-port_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-spec-builders_test
-OLD_FILES+=usr/tests/lib/googletest/gmock_main/Kyuafile
-OLD_DIRS+=usr/tests/lib/googletest/gmock_main
+OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock_ex_test
+OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock_link_test
+OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock_test
+OLD_FILES+=usr/tests/lib/googletest/gtest/Kyuafile
OLD_FILES+=usr/tests/lib/googletest/gtest/googletest-param-test-test
-OLD_FILES+=usr/tests/lib/googletest/gtest/gtest_all_test
+OLD_FILES+=usr/tests/lib/googletest/gtest/gtest-unittest-api_test
OLD_FILES+=usr/tests/lib/googletest/gtest/gtest_environment_test
OLD_FILES+=usr/tests/lib/googletest/gtest/gtest_no_test_unittest
OLD_FILES+=usr/tests/lib/googletest/gtest/gtest_premature_exit_test
OLD_FILES+=usr/tests/lib/googletest/gtest/gtest_repeat_test
OLD_FILES+=usr/tests/lib/googletest/gtest/gtest_stress_test
OLD_FILES+=usr/tests/lib/googletest/gtest/gtest_throw_on_failure_ex_test
-OLD_FILES+=usr/tests/lib/googletest/gtest/gtest-death-test_ex_catch_test
-OLD_FILES+=usr/tests/lib/googletest/gtest/gtest-death-test_ex_nocatch_test
-OLD_FILES+=usr/tests/lib/googletest/gtest/gtest-unittest-api_test
-OLD_FILES+=usr/tests/lib/googletest/gtest/Kyuafile
-OLD_DIRS+=usr/tests/lib/googletest/gtest
OLD_FILES+=usr/tests/lib/googletest/gtest_main/Kyuafile
OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-death-test-test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-filepath-test
-OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-linked-ptr-test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-listener-test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-message-test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-options-test
@@ -2261,7 +2171,6 @@ OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-port-test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-printers-test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-test-part-test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest-typed-test_test
-OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_help_test_
OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_main_unittest
OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_pred_impl_unittest
OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_prod_test
@@ -2269,14 +2178,9 @@ OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_skip_in_environment_setup_t
OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_skip_test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_sole_header_test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_unittest
-OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_xml_outfile1_test_
-OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_xml_outfile2_test_
-OLD_DIRS+=usr/tests/lib/googletest/gtest_main
-OLD_FILES+=usr/tests/lib/googletest/Kyuafile
-OLD_DIRS+=usr/tests/lib/googletest/
OLD_FILES+=usr/tests/share/examples/tests/googletest/Kyuafile
-OLD_FILES+=usr/tests/share/examples/tests/googletest/sample1_unittest
OLD_FILES+=usr/tests/share/examples/tests/googletest/sample10_unittest
+OLD_FILES+=usr/tests/share/examples/tests/googletest/sample1_unittest
OLD_FILES+=usr/tests/share/examples/tests/googletest/sample2_unittest
OLD_FILES+=usr/tests/share/examples/tests/googletest/sample3_unittest
OLD_FILES+=usr/tests/share/examples/tests/googletest/sample4_unittest
@@ -2284,6 +2188,17 @@ OLD_FILES+=usr/tests/share/examples/tests/googletest/sample5_unittest
OLD_FILES+=usr/tests/share/examples/tests/googletest/sample6_unittest
OLD_FILES+=usr/tests/share/examples/tests/googletest/sample7_unittest
OLD_FILES+=usr/tests/share/examples/tests/googletest/sample8_unittest
+OLD_DIRS+=usr/include/private/gmock/
+OLD_DIRS+=usr/include/private/gmock/internal
+OLD_DIRS+=usr/include/private/gmock/internal/custom
+OLD_DIRS+=usr/include/private/gtest/
+OLD_DIRS+=usr/include/private/gtest/internal
+OLD_DIRS+=usr/include/private/gtest/internal/custom
+OLD_DIRS+=usr/tests/lib/googletest
+OLD_DIRS+=usr/tests/lib/googletest/gmock
+OLD_DIRS+=usr/tests/lib/googletest/gmock_main
+OLD_DIRS+=usr/tests/lib/googletest/gtest
+OLD_DIRS+=usr/tests/lib/googletest/gtest_main
OLD_DIRS+=usr/tests/share/examples/tests/googletest
.endif
@@ -2293,10 +2208,6 @@ OLD_FILES+=usr/lib/libgpio.a
OLD_FILES+=usr/lib/libgpio.so
OLD_LIBS+=usr/lib/libgpio.so.0
OLD_FILES+=usr/lib/libgpio_p.a
-OLD_FILES+=usr/lib32/libgpio.a
-OLD_FILES+=usr/lib32/libgpio.so
-OLD_LIBS+=usr/lib32/libgpio.so.0
-OLD_FILES+=usr/lib32/libgpio_p.a
OLD_FILES+=usr/sbin/gpioctl
OLD_FILES+=usr/share/man/man3/gpio.3.gz
OLD_FILES+=usr/share/man/man3/gpio_close.3.gz
@@ -2322,11 +2233,6 @@ OLD_FILES+=usr/share/man/man3/gpio_pin_tristate.3.gz
OLD_FILES+=usr/share/man/man8/gpioctl.8.gz
.endif
-.if ${MK_GNU_DIFF} == no
-OLD_FILES+=usr/bin/diff3
-OLD_FILES+=usr/share/man/man1/diff3.1.gz
-.endif
-
.if ${MK_GSSAPI} == no
OLD_FILES+=usr/include/gssapi/gssapi.h
OLD_DIRS+=usr/include/gssapi
@@ -2338,15 +2244,6 @@ OLD_FILES+=usr/lib/libgssapi_p.a
OLD_FILES+=usr/lib/librpcsec_gss.a
OLD_FILES+=usr/lib/librpcsec_gss.so
OLD_LIBS+=usr/lib/librpcsec_gss.so.1
-.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
-OLD_FILES+=usr/lib32/libgssapi.a
-OLD_FILES+=usr/lib32/libgssapi.so
-OLD_LIBS+=usr/lib32/libgssapi.so.10
-OLD_FILES+=usr/lib32/libgssapi_p.a
-OLD_FILES+=usr/lib32/librpcsec_gss.a
-OLD_FILES+=usr/lib32/librpcsec_gss.so
-OLD_LIBS+=usr/lib32/librpcsec_gss.so.1
-.endif
OLD_FILES+=usr/sbin/gssd
OLD_FILES+=usr/share/man/man3/gss_accept_sec_context.3.gz
OLD_FILES+=usr/share/man/man3/gss_acquire_cred.3.gz
@@ -2510,12 +2407,68 @@ OLD_FILES+=usr/share/doc/ntp/release.html
OLD_FILES+=usr/share/doc/ntp/tickadj.html
.endif
+.if ${MK_HYPERV} == no
+OLD_FILES+=etc/devd/hyperv.conf
+OLD_FILES+=usr/libexec/hyperv/hv_set_ifconfig
+OLD_FILES+=usr/libexec/hyperv/hv_get_dns_info
+OLD_FILES+=usr/libexec/hyperv/hv_get_dhcp_info
+OLD_FILES+=usr/sbin/hv_kvp_daemon
+OLD_FILES+=usr/sbin/hv_vss_daemon
+OLD_FILES+=usr/share/man/man8/hv_kvp_daemon.8.gz
+.endif
+
.if ${MK_ICONV} == no
OLD_FILES+=usr/bin/iconv
OLD_FILES+=usr/bin/mkcsmapper
OLD_FILES+=usr/bin/mkesdb
OLD_FILES+=usr/include/_libiconv_compat.h
OLD_FILES+=usr/include/iconv.h
+OLD_LIBS+=usr/lib/i18n/libBIG5.so.5
+OLD_FILES+=usr/lib/i18n/libBIG5.so
+OLD_LIBS+=usr/lib/i18n/libDECHanyu.so.5
+OLD_FILES+=usr/lib/i18n/libDECHanyu.so
+OLD_LIBS+=usr/lib/i18n/libEUC.so.5
+OLD_FILES+=usr/lib/i18n/libEUC.so
+OLD_LIBS+=usr/lib/i18n/libEUCTW.so.5
+OLD_FILES+=usr/lib/i18n/libEUCTW.so
+OLD_LIBS+=usr/lib/i18n/libGBK2K.so.5
+OLD_FILES+=usr/lib/i18n/libGBK2K.so
+OLD_LIBS+=usr/lib/i18n/libHZ.so.5
+OLD_FILES+=usr/lib/i18n/libHZ.so
+OLD_LIBS+=usr/lib/i18n/libISO2022.so.5
+OLD_FILES+=usr/lib/i18n/libISO2022.so
+OLD_LIBS+=usr/lib/i18n/libJOHAB.so.5
+OLD_FILES+=usr/lib/i18n/libJOHAB.so
+OLD_LIBS+=usr/lib/i18n/libMSKanji.so.5
+OLD_FILES+=usr/lib/i18n/libMSKanji.so
+OLD_LIBS+=usr/lib/i18n/libUES.so.5
+OLD_FILES+=usr/lib/i18n/libUES.so
+OLD_LIBS+=usr/lib/i18n/libUTF1632.so.5
+OLD_FILES+=usr/lib/i18n/libUTF1632.so
+OLD_LIBS+=usr/lib/i18n/libUTF7.so.5
+OLD_FILES+=usr/lib/i18n/libUTF7.so
+OLD_LIBS+=usr/lib/i18n/libUTF8.so.5
+OLD_FILES+=usr/lib/i18n/libUTF8.so
+OLD_LIBS+=usr/lib/i18n/libVIQR.so.5
+OLD_FILES+=usr/lib/i18n/libVIQR.so
+OLD_LIBS+=usr/lib/i18n/libZW.so.5
+OLD_FILES+=usr/lib/i18n/libZW.so
+OLD_LIBS+=usr/lib/i18n/libiconv_none.so.5
+OLD_FILES+=usr/lib/i18n/libiconv_none.so
+OLD_LIBS+=usr/lib/i18n/libiconv_std.so.5
+OLD_FILES+=usr/lib/i18n/libiconv_std.so
+OLD_LIBS+=usr/lib/i18n/libmapper_646.so.5
+OLD_FILES+=usr/lib/i18n/libmapper_646.so
+OLD_LIBS+=usr/lib/i18n/libmapper_none.so.5
+OLD_FILES+=usr/lib/i18n/libmapper_none.so
+OLD_LIBS+=usr/lib/i18n/libmapper_parallel.so.5
+OLD_FILES+=usr/lib/i18n/libmapper_parallel.so
+OLD_LIBS+=usr/lib/i18n/libmapper_serial.so.5
+OLD_FILES+=usr/lib/i18n/libmapper_serial.so
+OLD_LIBS+=usr/lib/i18n/libmapper_std.so.5
+OLD_FILES+=usr/lib/i18n/libmapper_std.so
+OLD_LIBS+=usr/lib/i18n/libmapper_zone.so.5
+OLD_FILES+=usr/lib/i18n/libmapper_zone.so
OLD_FILES+=usr/share/man/man1/iconv.1.gz
OLD_FILES+=usr/share/man/man1/mkcsmapper.1.gz
OLD_FILES+=usr/share/man/man1/mkesdb.1.gz
@@ -2529,6 +2482,7 @@ OLD_FILES+=usr/share/man/man3/iconv_open.3.gz
OLD_FILES+=usr/share/man/man3/iconv_open_into.3.gz
OLD_FILES+=usr/share/man/man3/iconvctl.3.gz
OLD_FILES+=usr/share/man/man3/iconvlist.3.gz
+OLD_DIRS+=usr/lib/i18n
OLD_DIRS+=usr/share/i18n
OLD_DIRS+=usr/share/i18n/esdb
OLD_DIRS+=usr/share/i18n/esdb/ISO-2022
@@ -2567,6 +2521,11 @@ OLD_DIRS+=usr/share/i18n/csmapper/KS
OLD_DIRS+=usr/share/i18n/csmapper/GB
.endif
+.if ${MK_INET} == no && ${MK_INET6} == no
+OLD_FILES+=sbin/ping
+OLD_FILES+=usr/share/man/man8/ping.8.gz
+.endif
+
.if ${MK_INET6} == no
OLD_FILES+=sbin/ping6
OLD_FILES+=sbin/rtsol
@@ -2717,13 +2676,10 @@ OLD_FILES+=etc/rc.d/iscsictl
OLD_FILES+=etc/rc.d/iscsid
OLD_FILES+=rescue/iscsictl
OLD_FILES+=rescue/iscsid
-OLD_FILES+=sbin/iscontrol
OLD_FILES+=usr/bin/iscsictl
OLD_FILES+=usr/sbin/iscsid
OLD_FILES+=usr/share/man/man4/iscsi.4.gz
-OLD_FILES+=usr/share/man/man4/iscsi_initiator.4.gz
OLD_FILES+=usr/share/man/man5/iscsi.conf.5.gz
-OLD_FILES+=usr/share/man/man8/iscontrol.8.gz
OLD_FILES+=usr/share/man/man8/iscsictl.8.gz
OLD_FILES+=usr/share/man/man8/iscsid.8.gz
.endif
@@ -2914,84 +2870,6 @@ OLD_FILES+=usr/lib/libprivateheimipcs.a
OLD_FILES+=usr/lib/libprivateheimipcs.so
OLD_LIBS+=usr/lib/libprivateheimipcs.so.11
OLD_FILES+=usr/lib/libprivateheimipcs_p.a
-.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
-OLD_FILES+=usr/lib32/libasn1.a
-OLD_FILES+=usr/lib32/libasn1.so
-OLD_LIBS+=usr/lib32/libasn1.so.11
-OLD_FILES+=usr/lib32/libasn1_p.a
-OLD_FILES+=usr/lib32/libgssapi_krb5.a
-OLD_FILES+=usr/lib32/libgssapi_krb5.so
-OLD_LIBS+=usr/lib32/libgssapi_krb5.so.10
-OLD_FILES+=usr/lib32/libgssapi_krb5_p.a
-OLD_FILES+=usr/lib32/libgssapi_ntlm.a
-OLD_FILES+=usr/lib32/libgssapi_ntlm.so
-OLD_LIBS+=usr/lib32/libgssapi_ntlm.so.10
-OLD_FILES+=usr/lib32/libgssapi_ntlm_p.a
-OLD_FILES+=usr/lib32/libgssapi_spnego.a
-OLD_FILES+=usr/lib32/libgssapi_spnego.so
-OLD_LIBS+=usr/lib32/libgssapi_spnego.so.10
-OLD_FILES+=usr/lib32/libgssapi_spnego_p.a
-OLD_FILES+=usr/lib32/libhdb.a
-OLD_FILES+=usr/lib32/libhdb.so
-OLD_LIBS+=usr/lib32/libhdb.so.11
-OLD_FILES+=usr/lib32/libhdb_p.a
-OLD_FILES+=usr/lib32/libheimbase.a
-OLD_FILES+=usr/lib32/libheimbase.so
-OLD_LIBS+=usr/lib32/libheimbase.so.11
-OLD_FILES+=usr/lib32/libheimbase_p.a
-OLD_FILES+=usr/lib32/libheimntlm.a
-OLD_FILES+=usr/lib32/libheimntlm.so
-OLD_LIBS+=usr/lib32/libheimntlm.so.11
-OLD_FILES+=usr/lib32/libheimntlm_p.a
-OLD_FILES+=usr/lib32/libheimsqlite.a
-OLD_FILES+=usr/lib32/libheimsqlite.so
-OLD_LIBS+=usr/lib32/libheimsqlite.so.11
-OLD_FILES+=usr/lib32/libheimsqlite_p.a
-OLD_FILES+=usr/lib32/libhx509.a
-OLD_FILES+=usr/lib32/libhx509.so
-OLD_LIBS+=usr/lib32/libhx509.so.11
-OLD_FILES+=usr/lib32/libhx509_p.a
-OLD_FILES+=usr/lib32/libkadm5clnt.a
-OLD_FILES+=usr/lib32/libkadm5clnt.so
-OLD_LIBS+=usr/lib32/libkadm5clnt.so.11
-OLD_FILES+=usr/lib32/libkadm5clnt_p.a
-OLD_FILES+=usr/lib32/libkadm5srv.a
-OLD_FILES+=usr/lib32/libkadm5srv.so
-OLD_LIBS+=usr/lib32/libkadm5srv.so.11
-OLD_FILES+=usr/lib32/libkadm5srv_p.a
-OLD_FILES+=usr/lib32/libkafs5.a
-OLD_FILES+=usr/lib32/libkafs5.so
-OLD_LIBS+=usr/lib32/libkafs5.so.11
-OLD_FILES+=usr/lib32/libkafs5_p.a
-OLD_FILES+=usr/lib32/libkdc.a
-OLD_FILES+=usr/lib32/libkdc.so
-OLD_LIBS+=usr/lib32/libkdc.so.11
-OLD_FILES+=usr/lib32/libkdc_p.a
-OLD_FILES+=usr/lib32/libkrb5.a
-OLD_FILES+=usr/lib32/libkrb5.so
-OLD_LIBS+=usr/lib32/libkrb5.so.11
-OLD_FILES+=usr/lib32/libkrb5_p.a
-OLD_FILES+=usr/lib32/libroken.a
-OLD_FILES+=usr/lib32/libroken.so
-OLD_LIBS+=usr/lib32/libroken.so.11
-OLD_FILES+=usr/lib32/libroken_p.a
-OLD_FILES+=usr/lib32/libwind.a
-OLD_FILES+=usr/lib32/libwind.so
-OLD_LIBS+=usr/lib32/libwind.so.11
-OLD_FILES+=usr/lib32/libwind_p.a
-OLD_FILES+=usr/lib32/pam_krb5.so
-OLD_LIBS+=usr/lib32/pam_krb5.so.6
-OLD_FILES+=usr/lib32/pam_ksu.so
-OLD_LIBS+=usr/lib32/pam_ksu.so.6
-OLD_FILES+=usr/lib32/libprivateheimipcc.a
-OLD_FILES+=usr/lib32/libprivateheimipcc.so
-OLD_LIBS+=usr/lib32/libprivateheimipcc.so.11
-OLD_FILES+=usr/lib32/libprivateheimipcc_p.a
-OLD_FILES+=usr/lib32/libprivateheimipcs.a
-OLD_FILES+=usr/lib32/libprivateheimipcs.so
-OLD_LIBS+=usr/lib32/libprivateheimipcs.so.11
-OLD_FILES+=usr/lib32/libprivateheimipcs_p.a
-.endif
OLD_FILES+=usr/libexec/digest-service
OLD_FILES+=usr/libexec/hprop
OLD_FILES+=usr/libexec/hpropd
@@ -3733,10 +3611,6 @@ OLD_FILES+=usr/lib/libcom_err.a
OLD_FILES+=usr/lib/libcom_err.so
OLD_LIBS+=usr/lib/libcom_err.so.5
OLD_FILES+=usr/lib/libcom_err_p.a
-OLD_FILES+=usr/lib32/libcom_err.a
-OLD_FILES+=usr/lib32/libcom_err.so
-OLD_LIBS+=usr/lib32/libcom_err.so.5
-OLD_FILES+=usr/lib32/libcom_err_p.a
OLD_FILES+=usr/share/man/man1/compile_et.1.gz
OLD_FILES+=usr/share/man/man3/com_err.3.gz
.endif
@@ -3746,12 +3620,6 @@ OLD_FILES+=usr/lib/libprivateldns.a
OLD_FILES+=usr/lib/libprivateldns.so
OLD_LIBS+=usr/lib/libprivateldns.so.5
OLD_FILES+=usr/lib/libprivateldns_p.a
-.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
-OLD_FILES+=usr/lib32/libprivateldns.a
-OLD_FILES+=usr/lib32/libprivateldns.so
-OLD_LIBS+=usr/lib32/libprivateldns.so.5
-OLD_FILES+=usr/lib32/libprivateldns_p.a
-.endif
.endif
.if ${MK_LDNS_UTILS} == no
@@ -3778,371 +3646,36 @@ OLD_FILES+=usr/share/man/man5/keymap.5.gz
OLD_FILES+=usr/share/man/man8/moused.8.gz
.endif
-.if ${MK_LIB32} == no
-OLD_FILES+=etc/mtree/BSD.lib32.dist
-OLD_FILES+=libexec/ld-elf32.so.1
-. if exists(${DESTDIR}/usr/lib32)
-LIB32_DIRS!=find ${DESTDIR}/usr/lib32 -type d \
+.for LIBCOMPAT libcompat in ${_ALL_LIBCOMPATS_libcompats}
+. if ${MK_LIB${LIBCOMPAT}} == no
+OLD_FILES+=etc/mtree/BSD.lib${libcompat}.dist
+OLD_FILES+=libexec/ld-elf${libcompat}.so.1
+. if exists(${DESTDIR}/usr/lib${libcompat})
+LIB${LIBCOMPAT}_DIRS!=find ${DESTDIR}/usr/lib${libcompat} -type d \
| sed -e 's,^${DESTDIR}/,,'; echo
-LIB32_FILES!=find ${DESTDIR}/usr/lib32 \! -type d \
+LIB${LIBCOMPAT}_FILES!=find ${DESTDIR}/usr/lib${libcompat} \! -type d \
\! -name "lib*.so*" | sed -e 's,^${DESTDIR}/,,'; echo
-LIB32_LIBS!=find ${DESTDIR}/usr/lib32 \! -type d \
+LIB${LIBCOMPAT}_LIBS!=find ${DESTDIR}/usr/lib${libcompat} \! -type d \
-name "lib*.so*" | sed -e 's,^${DESTDIR}/,,'; echo
-OLD_DIRS+=${LIB32_DIRS}
-OLD_FILES+=${LIB32_FILES}
-OLD_LIBS+=${LIB32_LIBS}
-. endif
-. if ${MK_DEBUG_FILES} == no
-. if exists(${DESTDIR}/usr/lib/debug/usr/lib32)
-DEBUG_LIB32_DIRS!=find ${DESTDIR}/usr/lib/debug/usr/lib32 -type d \
+OLD_DIRS+=${LIB${LIBCOMPAT}_DIRS}
+OLD_FILES+=${LIB${LIBCOMPAT}_FILES}
+OLD_LIBS+=${LIB${LIBCOMPAT}_LIBS}
+. endif
+. if ${MK_DEBUG_FILES} == no
+. if exists(${DESTDIR}/usr/lib/debug/usr/lib${libcompat})
+DEBUG_LIB${LIBCOMPAT}_DIRS!=find ${DESTDIR}/usr/lib/debug/usr/lib${libcompat} -type d \
| sed -e 's,^${DESTDIR}/,,'; echo
-DEBUG_LIB32_FILES!=find ${DESTDIR}/usr/lib/debug/usr/lib32 \! -type d \
+DEBUG_LIB${LIBCOMPAT}_FILES!=find ${DESTDIR}/usr/lib/debug/usr/lib${libcompat} \! -type d \
\! -name "lib*.so*" | sed -e 's,^${DESTDIR}/,,'; echo
-DEBUG_LIB32_LIBS!=find ${DESTDIR}/usr/lib/debug/usr/lib32 \! -type d \
+DEBUG_LIB${LIBCOMPAT}_LIBS!=find ${DESTDIR}/usr/lib/debug/usr/lib${libcompat} \! -type d \
-name "lib*.so*" | sed -e 's,^${DESTDIR}/,,'; echo
-OLD_DIRS+=${DEBUG_LIB32_DIRS}
-OLD_FILES+=${DEBUG_LIB32_FILES}
-OLD_LIBS+=${DEBUG_LIB32_LIBS}
+OLD_DIRS+=${DEBUG_LIB${LIBCOMPAT}_DIRS}
+OLD_FILES+=${DEBUG_LIB${LIBCOMPAT}_FILES}
+OLD_LIBS+=${DEBUG_LIB${LIBCOMPAT}_LIBS}
+. endif
. endif
-. endif
-.endif
-
-.if ${MK_CXX} == no
-OLD_LIBS+=lib/libcxxrt.so.1
-OLD_FILES+=usr/lib/libc++.a
-OLD_FILES+=usr/lib/libc++_p.a
-OLD_FILES+=usr/lib/libc++experimental.a
-OLD_FILES+=usr/lib/libc++fs.a
-OLD_FILES+=usr/lib/libc++.so
-OLD_LIBS+=usr/lib/libc++.so.1
-OLD_FILES+=usr/lib/libcxxrt.a
-OLD_FILES+=usr/lib/libcxxrt.so
-OLD_FILES+=usr/lib/libcxxrt_p.a
-OLD_FILES+=usr/include/c++/v1/__availability
-OLD_FILES+=usr/include/c++/v1/__bit_reference
-OLD_FILES+=usr/include/c++/v1/__bits
-OLD_FILES+=usr/include/c++/v1/__bsd_locale_defaults.h
-OLD_FILES+=usr/include/c++/v1/__bsd_locale_fallbacks.h
-OLD_FILES+=usr/include/c++/v1/__config
-OLD_FILES+=usr/include/c++/v1/__debug
-OLD_FILES+=usr/include/c++/v1/__errc
-OLD_FILES+=usr/include/c++/v1/__functional_03
-OLD_FILES+=usr/include/c++/v1/__functional_base
-OLD_FILES+=usr/include/c++/v1/__functional_base_03
-OLD_FILES+=usr/include/c++/v1/__hash_table
-OLD_FILES+=usr/include/c++/v1/__libcpp_version
-OLD_FILES+=usr/include/c++/v1/__locale
-OLD_FILES+=usr/include/c++/v1/__memory/allocator_traits.h
-OLD_FILES+=usr/include/c++/v1/__memory/base.h
-OLD_FILES+=usr/include/c++/v1/__memory/pointer_traits.h
-OLD_FILES+=usr/include/c++/v1/__memory/utilities.h
-OLD_DIRS+=usr/include/c++/v1/__memory
-OLD_FILES+=usr/include/c++/v1/__mutex_base
-OLD_FILES+=usr/include/c++/v1/__node_handle
-OLD_FILES+=usr/include/c++/v1/__nullptr
-OLD_FILES+=usr/include/c++/v1/__split_buffer
-OLD_FILES+=usr/include/c++/v1/__sso_allocator
-OLD_FILES+=usr/include/c++/v1/__std_stream
-OLD_FILES+=usr/include/c++/v1/__string
-OLD_FILES+=usr/include/c++/v1/__threading_support
-OLD_FILES+=usr/include/c++/v1/__tree
-OLD_FILES+=usr/include/c++/v1/__tuple
-OLD_FILES+=usr/include/c++/v1/__undef_macros
-OLD_FILES+=usr/include/c++/v1/algorithm
-OLD_FILES+=usr/include/c++/v1/any
-OLD_FILES+=usr/include/c++/v1/array
-OLD_FILES+=usr/include/c++/v1/atomic
-OLD_FILES+=usr/include/c++/v1/barrier
-OLD_FILES+=usr/include/c++/v1/bit
-OLD_FILES+=usr/include/c++/v1/bitset
-OLD_FILES+=usr/include/c++/v1/cassert
-OLD_FILES+=usr/include/c++/v1/ccomplex
-OLD_FILES+=usr/include/c++/v1/cctype
-OLD_FILES+=usr/include/c++/v1/cerrno
-OLD_FILES+=usr/include/c++/v1/cfenv
-OLD_FILES+=usr/include/c++/v1/cfloat
-OLD_FILES+=usr/include/c++/v1/charconv
-OLD_FILES+=usr/include/c++/v1/chrono
-OLD_FILES+=usr/include/c++/v1/cinttypes
-OLD_FILES+=usr/include/c++/v1/ciso646
-OLD_FILES+=usr/include/c++/v1/climits
-OLD_FILES+=usr/include/c++/v1/clocale
-OLD_FILES+=usr/include/c++/v1/cmath
-OLD_FILES+=usr/include/c++/v1/codecvt
-OLD_FILES+=usr/include/c++/v1/compare
-OLD_FILES+=usr/include/c++/v1/complex
-OLD_FILES+=usr/include/c++/v1/complex.h
-OLD_FILES+=usr/include/c++/v1/concepts
-OLD_FILES+=usr/include/c++/v1/condition_variable
-OLD_FILES+=usr/include/c++/v1/csetjmp
-OLD_FILES+=usr/include/c++/v1/csignal
-OLD_FILES+=usr/include/c++/v1/cstdarg
-OLD_FILES+=usr/include/c++/v1/cstdbool
-OLD_FILES+=usr/include/c++/v1/cstddef
-OLD_FILES+=usr/include/c++/v1/cstdint
-OLD_FILES+=usr/include/c++/v1/cstdio
-OLD_FILES+=usr/include/c++/v1/cstdlib
-OLD_FILES+=usr/include/c++/v1/cstring
-OLD_FILES+=usr/include/c++/v1/ctgmath
-OLD_FILES+=usr/include/c++/v1/ctime
-OLD_FILES+=usr/include/c++/v1/ctype.h
-OLD_FILES+=usr/include/c++/v1/cwchar
-OLD_FILES+=usr/include/c++/v1/cwctype
-OLD_FILES+=usr/include/c++/v1/cxxabi.h
-OLD_FILES+=usr/include/c++/v1/deque
-OLD_FILES+=usr/include/c++/v1/errno.h
-OLD_FILES+=usr/include/c++/v1/exception
-OLD_FILES+=usr/include/c++/v1/execution
-OLD_FILES+=usr/include/c++/v1/experimental/__config
-OLD_FILES+=usr/include/c++/v1/experimental/__memory
-OLD_FILES+=usr/include/c++/v1/experimental/algorithm
-OLD_FILES+=usr/include/c++/v1/experimental/coroutine
-OLD_FILES+=usr/include/c++/v1/experimental/deque
-OLD_FILES+=usr/include/c++/v1/experimental/filesystem
-OLD_FILES+=usr/include/c++/v1/experimental/forward_list
-OLD_FILES+=usr/include/c++/v1/experimental/functional
-OLD_FILES+=usr/include/c++/v1/experimental/iterator
-OLD_FILES+=usr/include/c++/v1/experimental/list
-OLD_FILES+=usr/include/c++/v1/experimental/map
-OLD_FILES+=usr/include/c++/v1/experimental/memory_resource
-OLD_FILES+=usr/include/c++/v1/experimental/propagate_const
-OLD_FILES+=usr/include/c++/v1/experimental/regex
-OLD_FILES+=usr/include/c++/v1/experimental/set
-OLD_FILES+=usr/include/c++/v1/experimental/simd
-OLD_FILES+=usr/include/c++/v1/experimental/string
-OLD_FILES+=usr/include/c++/v1/experimental/type_traits
-OLD_FILES+=usr/include/c++/v1/experimental/unordered_map
-OLD_FILES+=usr/include/c++/v1/experimental/unordered_set
-OLD_FILES+=usr/include/c++/v1/experimental/utility
-OLD_FILES+=usr/include/c++/v1/experimental/vector
-OLD_DIRS+=usr/include/c++/v1/experimental
-OLD_FILES+=usr/include/c++/v1/ext/__hash
-OLD_FILES+=usr/include/c++/v1/ext/hash_map
-OLD_FILES+=usr/include/c++/v1/ext/hash_set
-OLD_DIRS+=usr/include/c++/v1/ext
-OLD_FILES+=usr/include/c++/v1/fenv.h
-OLD_FILES+=usr/include/c++/v1/filesystem
-OLD_FILES+=usr/include/c++/v1/float.h
-OLD_FILES+=usr/include/c++/v1/forward_list
-OLD_FILES+=usr/include/c++/v1/fstream
-OLD_FILES+=usr/include/c++/v1/functional
-OLD_FILES+=usr/include/c++/v1/future
-OLD_FILES+=usr/include/c++/v1/initializer_list
-OLD_FILES+=usr/include/c++/v1/inttypes.h
-OLD_FILES+=usr/include/c++/v1/iomanip
-OLD_FILES+=usr/include/c++/v1/ios
-OLD_FILES+=usr/include/c++/v1/iosfwd
-OLD_FILES+=usr/include/c++/v1/iostream
-OLD_FILES+=usr/include/c++/v1/istream
-OLD_FILES+=usr/include/c++/v1/iterator
-OLD_FILES+=usr/include/c++/v1/latch
-OLD_FILES+=usr/include/c++/v1/limits
-OLD_FILES+=usr/include/c++/v1/limits.h
-OLD_FILES+=usr/include/c++/v1/list
-OLD_FILES+=usr/include/c++/v1/locale
-OLD_FILES+=usr/include/c++/v1/locale.h
-OLD_FILES+=usr/include/c++/v1/map
-OLD_FILES+=usr/include/c++/v1/math.h
-OLD_FILES+=usr/include/c++/v1/memory
-OLD_FILES+=usr/include/c++/v1/mutex
-OLD_FILES+=usr/include/c++/v1/new
-OLD_FILES+=usr/include/c++/v1/numbers
-OLD_FILES+=usr/include/c++/v1/numeric
-OLD_FILES+=usr/include/c++/v1/optional
-OLD_FILES+=usr/include/c++/v1/ostream
-OLD_FILES+=usr/include/c++/v1/queue
-OLD_FILES+=usr/include/c++/v1/random
-OLD_FILES+=usr/include/c++/v1/ratio
-OLD_FILES+=usr/include/c++/v1/regex
-OLD_FILES+=usr/include/c++/v1/scoped_allocator
-OLD_FILES+=usr/include/c++/v1/semaphore
-OLD_FILES+=usr/include/c++/v1/set
-OLD_FILES+=usr/include/c++/v1/setjmp.h
-OLD_FILES+=usr/include/c++/v1/shared_mutex
-OLD_FILES+=usr/include/c++/v1/span
-OLD_FILES+=usr/include/c++/v1/sstream
-OLD_FILES+=usr/include/c++/v1/stack
-OLD_FILES+=usr/include/c++/v1/stdbool.h
-OLD_FILES+=usr/include/c++/v1/stddef.h
-OLD_FILES+=usr/include/c++/v1/stdexcept
-OLD_FILES+=usr/include/c++/v1/stdint.h
-OLD_FILES+=usr/include/c++/v1/stdio.h
-OLD_FILES+=usr/include/c++/v1/stdlib.h
-OLD_FILES+=usr/include/c++/v1/streambuf
-OLD_FILES+=usr/include/c++/v1/string
-OLD_FILES+=usr/include/c++/v1/string.h
-OLD_FILES+=usr/include/c++/v1/string_view
-OLD_FILES+=usr/include/c++/v1/strstream
-OLD_FILES+=usr/include/c++/v1/system_error
-OLD_FILES+=usr/include/c++/v1/tgmath.h
-OLD_FILES+=usr/include/c++/v1/thread
-OLD_FILES+=usr/include/c++/v1/tr1/__availability
-OLD_FILES+=usr/include/c++/v1/tr1/__bit_reference
-OLD_FILES+=usr/include/c++/v1/tr1/__bits
-OLD_FILES+=usr/include/c++/v1/tr1/__bsd_locale_defaults.h
-OLD_FILES+=usr/include/c++/v1/tr1/__bsd_locale_fallbacks.h
-OLD_FILES+=usr/include/c++/v1/tr1/__config
-OLD_FILES+=usr/include/c++/v1/tr1/__debug
-OLD_FILES+=usr/include/c++/v1/tr1/__errc
-OLD_FILES+=usr/include/c++/v1/tr1/__functional_03
-OLD_FILES+=usr/include/c++/v1/tr1/__functional_base
-OLD_FILES+=usr/include/c++/v1/tr1/__functional_base_03
-OLD_FILES+=usr/include/c++/v1/tr1/__hash_table
-OLD_FILES+=usr/include/c++/v1/tr1/__libcpp_version
-OLD_FILES+=usr/include/c++/v1/tr1/__locale
-OLD_FILES+=usr/include/c++/v1/tr1/__mutex_base
-OLD_FILES+=usr/include/c++/v1/tr1/__node_handle
-OLD_FILES+=usr/include/c++/v1/tr1/__nullptr
-OLD_FILES+=usr/include/c++/v1/tr1/__split_buffer
-OLD_FILES+=usr/include/c++/v1/tr1/__sso_allocator
-OLD_FILES+=usr/include/c++/v1/tr1/__std_stream
-OLD_FILES+=usr/include/c++/v1/tr1/__string
-OLD_FILES+=usr/include/c++/v1/tr1/__threading_support
-OLD_FILES+=usr/include/c++/v1/tr1/__tree
-OLD_FILES+=usr/include/c++/v1/tr1/__tuple
-OLD_FILES+=usr/include/c++/v1/tr1/__undef_macros
-OLD_FILES+=usr/include/c++/v1/tr1/algorithm
-OLD_FILES+=usr/include/c++/v1/tr1/any
-OLD_FILES+=usr/include/c++/v1/tr1/array
-OLD_FILES+=usr/include/c++/v1/tr1/atomic
-OLD_FILES+=usr/include/c++/v1/tr1/barrier
-OLD_FILES+=usr/include/c++/v1/tr1/bit
-OLD_FILES+=usr/include/c++/v1/tr1/bitset
-OLD_FILES+=usr/include/c++/v1/tr1/cassert
-OLD_FILES+=usr/include/c++/v1/tr1/ccomplex
-OLD_FILES+=usr/include/c++/v1/tr1/cctype
-OLD_FILES+=usr/include/c++/v1/tr1/cerrno
-OLD_FILES+=usr/include/c++/v1/tr1/cfenv
-OLD_FILES+=usr/include/c++/v1/tr1/cfloat
-OLD_FILES+=usr/include/c++/v1/tr1/charconv
-OLD_FILES+=usr/include/c++/v1/tr1/chrono
-OLD_FILES+=usr/include/c++/v1/tr1/cinttypes
-OLD_FILES+=usr/include/c++/v1/tr1/ciso646
-OLD_FILES+=usr/include/c++/v1/tr1/climits
-OLD_FILES+=usr/include/c++/v1/tr1/clocale
-OLD_FILES+=usr/include/c++/v1/tr1/cmath
-OLD_FILES+=usr/include/c++/v1/tr1/codecvt
-OLD_FILES+=usr/include/c++/v1/tr1/compare
-OLD_FILES+=usr/include/c++/v1/tr1/complex
-OLD_FILES+=usr/include/c++/v1/tr1/complex.h
-OLD_FILES+=usr/include/c++/v1/tr1/concepts
-OLD_FILES+=usr/include/c++/v1/tr1/condition_variable
-OLD_FILES+=usr/include/c++/v1/tr1/csetjmp
-OLD_FILES+=usr/include/c++/v1/tr1/csignal
-OLD_FILES+=usr/include/c++/v1/tr1/cstdarg
-OLD_FILES+=usr/include/c++/v1/tr1/cstdbool
-OLD_FILES+=usr/include/c++/v1/tr1/cstddef
-OLD_FILES+=usr/include/c++/v1/tr1/cstdint
-OLD_FILES+=usr/include/c++/v1/tr1/cstdio
-OLD_FILES+=usr/include/c++/v1/tr1/cstdlib
-OLD_FILES+=usr/include/c++/v1/tr1/cstring
-OLD_FILES+=usr/include/c++/v1/tr1/ctgmath
-OLD_FILES+=usr/include/c++/v1/tr1/ctime
-OLD_FILES+=usr/include/c++/v1/tr1/ctype.h
-OLD_FILES+=usr/include/c++/v1/tr1/cwchar
-OLD_FILES+=usr/include/c++/v1/tr1/cwctype
-OLD_FILES+=usr/include/c++/v1/tr1/deque
-OLD_FILES+=usr/include/c++/v1/tr1/errno.h
-OLD_FILES+=usr/include/c++/v1/tr1/exception
-OLD_FILES+=usr/include/c++/v1/tr1/execution
-OLD_FILES+=usr/include/c++/v1/tr1/fenv.h
-OLD_FILES+=usr/include/c++/v1/tr1/filesystem
-OLD_FILES+=usr/include/c++/v1/tr1/float.h
-OLD_FILES+=usr/include/c++/v1/tr1/forward_list
-OLD_FILES+=usr/include/c++/v1/tr1/fstream
-OLD_FILES+=usr/include/c++/v1/tr1/functional
-OLD_FILES+=usr/include/c++/v1/tr1/future
-OLD_FILES+=usr/include/c++/v1/tr1/initializer_list
-OLD_FILES+=usr/include/c++/v1/tr1/inttypes.h
-OLD_FILES+=usr/include/c++/v1/tr1/iomanip
-OLD_FILES+=usr/include/c++/v1/tr1/ios
-OLD_FILES+=usr/include/c++/v1/tr1/iosfwd
-OLD_FILES+=usr/include/c++/v1/tr1/iostream
-OLD_FILES+=usr/include/c++/v1/tr1/istream
-OLD_FILES+=usr/include/c++/v1/tr1/iterator
-OLD_FILES+=usr/include/c++/v1/tr1/latch
-OLD_FILES+=usr/include/c++/v1/tr1/limits
-OLD_FILES+=usr/include/c++/v1/tr1/limits.h
-OLD_FILES+=usr/include/c++/v1/tr1/list
-OLD_FILES+=usr/include/c++/v1/tr1/locale
-OLD_FILES+=usr/include/c++/v1/tr1/locale.h
-OLD_FILES+=usr/include/c++/v1/tr1/map
-OLD_FILES+=usr/include/c++/v1/tr1/math.h
-OLD_FILES+=usr/include/c++/v1/tr1/memory
-OLD_FILES+=usr/include/c++/v1/tr1/mutex
-OLD_FILES+=usr/include/c++/v1/tr1/new
-OLD_FILES+=usr/include/c++/v1/tr1/numbers
-OLD_FILES+=usr/include/c++/v1/tr1/numeric
-OLD_FILES+=usr/include/c++/v1/tr1/optional
-OLD_FILES+=usr/include/c++/v1/tr1/ostream
-OLD_FILES+=usr/include/c++/v1/tr1/queue
-OLD_FILES+=usr/include/c++/v1/tr1/random
-OLD_FILES+=usr/include/c++/v1/tr1/ratio
-OLD_FILES+=usr/include/c++/v1/tr1/regex
-OLD_FILES+=usr/include/c++/v1/tr1/scoped_allocator
-OLD_FILES+=usr/include/c++/v1/tr1/semaphore
-OLD_FILES+=usr/include/c++/v1/tr1/set
-OLD_FILES+=usr/include/c++/v1/tr1/setjmp.h
-OLD_FILES+=usr/include/c++/v1/tr1/shared_mutex
-OLD_FILES+=usr/include/c++/v1/tr1/span
-OLD_FILES+=usr/include/c++/v1/tr1/sstream
-OLD_FILES+=usr/include/c++/v1/tr1/stack
-OLD_FILES+=usr/include/c++/v1/tr1/stdbool.h
-OLD_FILES+=usr/include/c++/v1/tr1/stddef.h
-OLD_FILES+=usr/include/c++/v1/tr1/stdexcept
-OLD_FILES+=usr/include/c++/v1/tr1/stdint.h
-OLD_FILES+=usr/include/c++/v1/tr1/stdio.h
-OLD_FILES+=usr/include/c++/v1/tr1/stdlib.h
-OLD_FILES+=usr/include/c++/v1/tr1/streambuf
-OLD_FILES+=usr/include/c++/v1/tr1/string
-OLD_FILES+=usr/include/c++/v1/tr1/string.h
-OLD_FILES+=usr/include/c++/v1/tr1/string_view
-OLD_FILES+=usr/include/c++/v1/tr1/strstream
-OLD_FILES+=usr/include/c++/v1/tr1/system_error
-OLD_FILES+=usr/include/c++/v1/tr1/tgmath.h
-OLD_FILES+=usr/include/c++/v1/tr1/thread
-OLD_FILES+=usr/include/c++/v1/tr1/tuple
-OLD_FILES+=usr/include/c++/v1/tr1/type_traits
-OLD_FILES+=usr/include/c++/v1/tr1/typeindex
-OLD_FILES+=usr/include/c++/v1/tr1/typeinfo
-OLD_FILES+=usr/include/c++/v1/tr1/unordered_map
-OLD_FILES+=usr/include/c++/v1/tr1/unordered_set
-OLD_FILES+=usr/include/c++/v1/tr1/utility
-OLD_FILES+=usr/include/c++/v1/tr1/valarray
-OLD_FILES+=usr/include/c++/v1/tr1/variant
-OLD_FILES+=usr/include/c++/v1/tr1/vector
-OLD_FILES+=usr/include/c++/v1/tr1/version
-OLD_FILES+=usr/include/c++/v1/tr1/wchar.h
-OLD_FILES+=usr/include/c++/v1/tr1/wctype.h
-OLD_DIRS+=usr/include/c++/v1/tr1
-OLD_FILES+=usr/include/c++/v1/tuple
-OLD_FILES+=usr/include/c++/v1/type_traits
-OLD_FILES+=usr/include/c++/v1/typeindex
-OLD_FILES+=usr/include/c++/v1/typeinfo
-OLD_FILES+=usr/include/c++/v1/unordered_map
-OLD_FILES+=usr/include/c++/v1/unordered_set
-OLD_FILES+=usr/include/c++/v1/unwind-arm.h
-OLD_FILES+=usr/include/c++/v1/unwind-itanium.h
-OLD_FILES+=usr/include/c++/v1/unwind.h
-OLD_FILES+=usr/include/c++/v1/utility
-OLD_FILES+=usr/include/c++/v1/valarray
-OLD_FILES+=usr/include/c++/v1/variant
-OLD_FILES+=usr/include/c++/v1/vector
-OLD_FILES+=usr/include/c++/v1/version
-OLD_FILES+=usr/include/c++/v1/wchar.h
-OLD_FILES+=usr/include/c++/v1/wctype.h
-OLD_DIRS+=usr/include/c++/v1
-OLD_FILES+=usr/lib32/libc++.a
-OLD_FILES+=usr/lib32/libc++.so
-OLD_LIBS+=usr/lib32/libc++.so.1
-OLD_FILES+=usr/lib32/libc++_p.a
-OLD_FILES+=usr/lib32/libc++experimental.a
-OLD_FILES+=usr/lib32/libc++fs.a
-OLD_FILES+=usr/lib32/libcxxrt.a
-OLD_FILES+=usr/lib32/libcxxrt.so
-OLD_LIBS+=usr/lib32/libcxxrt.so.1
-OLD_FILES+=usr/lib32/libcxxrt_p.a
.endif
+.endfor # LIBCOMPAT libcompat
.if ${MK_LLD} == no
OLD_FILES+=usr/bin/ld.lld
@@ -4155,6 +3688,15 @@ OLD_FILES+=usr/share/man/man1/lldb-server.1.gz
OLD_FILES+=usr/share/man/man1/lldb.1.gz
.endif
+.if ${MK_LLVM_COV} == no
+OLD_FILES+=usr/bin/gcov
+OLD_FILES+=usr/bin/llvm-cov
+OLD_FILES+=usr/bin/llvm-profdata
+OLD_FILES+=usr/share/man/man1/gcov.1.gz
+OLD_FILES+=usr/share/man/man1/llvm-cov.1.gz
+OLD_FILES+=usr/share/man/man1/llvm-profdata.1.gz
+.endif
+
.if ${MK_LOCALES} == no
OLD_DIRS+=usr/share/locale/af_ZA.ISO8859-15
OLD_FILES+=usr/share/locale/af_ZA.ISO8859-15/LC_COLLATE
@@ -5552,7 +5094,6 @@ OLD_FILES+=etc/mail.rc
OLD_FILES+=etc/mail/aliases
OLD_FILES+=etc/mail/mailer.conf
OLD_FILES+=etc/periodic/daily/130.clean-msgs
-OLD_FILES+=etc/rc.d/othermta
OLD_FILES+=usr/bin/Mail
OLD_FILES+=usr/bin/biff
OLD_FILES+=usr/bin/from
@@ -5986,10 +5527,6 @@ OLD_FILES+=usr/lib/libnetgraph.a
OLD_FILES+=usr/lib/libnetgraph.so
OLD_LIBS+=usr/lib/libnetgraph.so.4
OLD_FILES+=usr/lib/libnetgraph_p.a
-OLD_FILES+=usr/lib32/libnetgraph.a
-OLD_FILES+=usr/lib32/libnetgraph.so
-OLD_LIBS+=usr/lib32/libnetgraph.so.4
-OLD_FILES+=usr/lib32/libnetgraph_p.a
OLD_FILES+=usr/libexec/pppoed
OLD_FILES+=usr/sbin/flowctl
OLD_FILES+=usr/sbin/lmcconfig
@@ -6030,6 +5567,11 @@ OLD_FILES+=usr/share/snmp/defs/netgraph_tree.def
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-NETGRAPH.txt
.endif
+.if ${MK_NETLINK} == no
+OLD_FILES+=usr.bin/genl
+OLD_FILES+=usr/share/man/man1/genl.1.gz
+.endif
+
.if ${MK_NIS} == no
OLD_FILES+=etc/rc.d/ypbind
OLD_FILES+=etc/rc.d/ypldap
@@ -6050,12 +5592,6 @@ OLD_FILES+=usr/lib/libypclnt.a
OLD_FILES+=usr/lib/libypclnt.so
OLD_LIBS+=usr/lib/libypclnt.so.4
OLD_FILES+=usr/lib/libypclnt_p.a
-.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
-OLD_FILES+=usr/lib32/libypclnt.a
-OLD_FILES+=usr/lib32/libypclnt.so
-OLD_LIBS+=usr/lib32/libypclnt.so.4
-OLD_FILES+=usr/lib32/libypclnt_p.a
-.endif
OLD_FILES+=usr/libexec/mknetid
OLD_FILES+=usr/libexec/yppwupdate
OLD_FILES+=usr/libexec/ypxfr
@@ -6177,7 +5713,6 @@ OLD_DIRS+=usr/share/nls/en_US.ISO8859-15
OLD_FILES+=usr/share/nls/en_US.ISO8859-15/ee.cat
OLD_DIRS+=usr/share/nls/en_US.UTF-8
OLD_DIRS+=usr/share/nls/es_ES.UTF-8
-OLD_FILES+=usr/share/nls/es_ES.ISO8859-1/grep.cat
OLD_FILES+=usr/share/nls/es_ES.ISO8859-1/libc.cat
OLD_FILES+=usr/share/nls/es_ES.ISO8859-1/tcsh.cat
OLD_DIRS+=usr/share/nls/es_ES.ISO8859-1
@@ -6229,16 +5764,13 @@ OLD_FILES+=usr/share/nls/fr_FR.ISO8859-15/tcsh.cat
OLD_DIRS+=usr/share/nls/fr_FR.UTF-8
OLD_FILES+=usr/share/nls/fr_FR.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/gl_ES.ISO8859-1
-OLD_FILES+=usr/share/nls/gl_ES.ISO8859-1/grep.cat
OLD_FILES+=usr/share/nls/gl_ES.ISO8859-1/libc.cat
OLD_DIRS+=usr/share/nls/he_IL.UTF-8
OLD_DIRS+=usr/share/nls/hi_IN.ISCII-DEV
OLD_DIRS+=usr/share/nls/hr_HR.ISO8859-2
OLD_DIRS+=usr/share/nls/hu_HU.ISO8859-2
OLD_FILES+=usr/share/nls/hu_HU.ISO8859-2/ee.cat
-OLD_FILES+=usr/share/nls/hu_HU.ISO8859-2/grep.cat
OLD_FILES+=usr/share/nls/hu_HU.ISO8859-2/libc.cat
-OLD_FILES+=usr/share/nls/hu_HU.ISO8859-2/sort.cat
OLD_DIRS+=usr/share/nls/hr_HR.UTF-8
OLD_DIRS+=usr/share/nls/hu_HU.UTF-8
OLD_DIRS+=usr/share/nls/hy_AM.ARMSCII-8
@@ -6260,14 +5792,11 @@ OLD_FILES+=usr/share/nls/it_IT.ISO8859-15/tcsh.cat
OLD_DIRS+=usr/share/nls/it_IT.UTF-8
OLD_FILES+=usr/share/nls/it_IT.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/ja_JP.SJIS
-OLD_FILES+=usr/share/nls/ja_JP.SJIS/grep.cat
OLD_FILES+=usr/share/nls/ja_JP.SJIS/tcsh.cat
OLD_DIRS+=usr/share/nls/ja_JP.UTF-8
-OLD_FILES+=usr/share/nls/ja_JP.UTF-8/grep.cat
OLD_FILES+=usr/share/nls/ja_JP.UTF-8/libc.cat
OLD_FILES+=usr/share/nls/ja_JP.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/ja_JP.eucJP
-OLD_FILES+=usr/share/nls/ja_JP.eucJP/grep.cat
OLD_FILES+=usr/share/nls/ja_JP.eucJP/libc.cat
OLD_FILES+=usr/share/nls/ja_JP.eucJP/tcsh.cat
OLD_DIRS+=usr/share/nls/kk_KZ.PT154
@@ -6302,7 +5831,6 @@ OLD_DIRS+=usr/share/nls/pt_BR.ISO8859-1
OLD_DIRS+=usr/share/nls/pt_BR.UTF-8
OLD_DIRS+=usr/share/nls/pt_PT.ISO8859-1
OLD_FILES+=usr/share/nls/pt_BR.ISO8859-1/ee.cat
-OLD_FILES+=usr/share/nls/pt_BR.ISO8859-1/grep.cat
OLD_FILES+=usr/share/nls/pt_BR.ISO8859-1/libc.cat
OLD_FILES+=usr/share/nls/pt_PT.ISO8859-1/ee.cat
OLD_DIRS+=usr/share/nls/pt_PT.ISO8859-15
@@ -6317,7 +5845,6 @@ OLD_DIRS+=usr/share/nls/ru_RU.ISO8859-5
OLD_FILES+=usr/share/nls/ru_RU.ISO8859-5/tcsh.cat
OLD_DIRS+=usr/share/nls/ru_RU.KOI8-R
OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/ee.cat
-OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/grep.cat
OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/libc.cat
OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/tcsh.cat
OLD_DIRS+=usr/share/nls/ru_RU.UTF-8
@@ -6342,7 +5869,6 @@ OLD_DIRS+=usr/share/nls/uk_UA.KOI8-U
OLD_FILES+=usr/share/nls/uk_UA.KOI8-U/ee.cat
OLD_FILES+=usr/share/nls/uk_UA.KOI8-U/tcsh.cat
OLD_DIRS+=usr/share/nls/uk_UA.UTF-8
-OLD_FILES+=usr/share/nls/uk_UA.UTF-8/grep.cat
OLD_FILES+=usr/share/nls/uk_UA.UTF-8/libc.cat
OLD_FILES+=usr/share/nls/uk_UA.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/zh_CN.GB18030
@@ -6351,7 +5877,6 @@ OLD_DIRS+=usr/share/nls/zh_CN.GBK
OLD_DIRS+=usr/share/nls/zh_CN.GB2312
OLD_FILES+=usr/share/nls/zh_CN.GB2312/libc.cat
OLD_DIRS+=usr/share/nls/zh_CN.UTF-8
-OLD_FILES+=usr/share/nls/zh_CN.UTF-8/grep.cat
OLD_FILES+=usr/share/nls/zh_CN.UTF-8/libc.cat
OLD_DIRS+=usr/share/nls/zh_CN.eucCN
OLD_DIRS+=usr/share/nls/zh_HK.UTF-8
@@ -6894,44 +6419,6 @@ OLD_LIBS+=usr/lib/libosmvendor.so.4
OLD_FILES+=usr/lib/librdmacm.a
OLD_FILES+=usr/lib/librdmacm.so
OLD_LIBS+=usr/lib/librdmacm.so.1
-.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
-OLD_FILES+=usr/lib32/libcxgb4.a
-OLD_FILES+=usr/lib32/libcxgb4.so
-OLD_LIBS+=usr/lib32/libcxgb4.so.1
-OLD_FILES+=usr/lib32/libibcm.a
-OLD_FILES+=usr/lib32/libibcm.so
-OLD_LIBS+=usr/lib32/libibcm.so.1
-OLD_FILES+=usr/lib32/libibmad.a
-OLD_FILES+=usr/lib32/libibmad.so
-OLD_LIBS+=usr/lib32/libibmad.so.5
-OLD_FILES+=usr/lib32/libibnetdisc.a
-OLD_FILES+=usr/lib32/libibnetdisc.so
-OLD_LIBS+=usr/lib32/libibnetdisc.so.5
-OLD_FILES+=usr/lib32/libibumad.a
-OLD_FILES+=usr/lib32/libibumad.so
-OLD_LIBS+=usr/lib32/libibumad.so.1
-OLD_FILES+=usr/lib32/libibverbs.a
-OLD_FILES+=usr/lib32/libibverbs.so
-OLD_LIBS+=usr/lib32/libibverbs.so.1
-OLD_FILES+=usr/lib32/libmlx4.a
-OLD_FILES+=usr/lib32/libmlx4.so
-OLD_LIBS+=usr/lib32/libmlx4.so.1
-OLD_FILES+=usr/lib32/libmlx5.a
-OLD_FILES+=usr/lib32/libmlx5.so
-OLD_LIBS+=usr/lib32/libmlx5.so.1
-OLD_FILES+=usr/lib32/libopensm.a
-OLD_FILES+=usr/lib32/libopensm.so
-OLD_LIBS+=usr/lib32/libopensm.so.5
-OLD_FILES+=usr/lib32/libosmcomp.a
-OLD_FILES+=usr/lib32/libosmcomp.so
-OLD_LIBS+=usr/lib32/libosmcomp.so.3
-OLD_FILES+=usr/lib32/libosmvendor.a
-OLD_FILES+=usr/lib32/libosmvendor.so
-OLD_LIBS+=usr/lib32/libosmvendor.so.4
-OLD_FILES+=usr/lib32/librdmacm.a
-OLD_FILES+=usr/lib32/librdmacm.so
-OLD_LIBS+=usr/lib32/librdmacm.so.1
-.endif
OLD_FILES+=usr/share/man/man1/ibv_asyncwatch.1.gz
OLD_FILES+=usr/share/man/man1/ibv_devices.1.gz
OLD_FILES+=usr/share/man/man1/ibv_devinfo.1.gz
@@ -7100,10 +6587,8 @@ OLD_FILES+=usr/share/man/man8/vendstat.8.gz
.if ${MK_OPENMP} == no
OLD_FILES+=usr/include/omp.h
-OLD_LIBS+=usr/lib/libgomp.so
-OLD_LIBS+=usr/lib32/libgomp.so
+OLD_FILES+=usr/lib/libgomp.so
OLD_LIBS+=usr/lib/libomp.so
-OLD_LIBS+=usr/lib32/libomp.so
.endif
.if ${MK_OPENSSH} == no
@@ -7124,23 +6609,19 @@ OLD_FILES+=usr/bin/ssh-keyscan
OLD_FILES+=usr/lib/libprivatecbor.a
OLD_FILES+=usr/lib/libprivatecbor.so
OLD_LIBS+=usr/lib/libprivatecbor.so.5
+OLD_FILES+=/usr/lib/libprivatefido2.a
+OLD_FILES+=/usr/lib/libprivatefido2.so
+OLD_LIBS+=/usr/lib/libprivatefido2.so.5
OLD_FILES+=usr/lib/pam_ssh.so
OLD_LIBS+=usr/lib/pam_ssh.so.6
OLD_FILES+=usr/lib/libprivatessh.a
OLD_FILES+=usr/lib/libprivatessh.so
OLD_LIBS+=usr/lib/libprivatessh.so.5
OLD_FILES+=usr/lib/libprivatessh_p.a
-.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
-OLD_FILES+=usr/lib32/pam_ssh.so
-OLD_LIBS+=usr/lib32/pam_ssh.so.6
-OLD_FILES+=usr/lib32/libprivatessh.a
-OLD_FILES+=usr/lib32/libprivatessh.so
-OLD_LIBS+=usr/lib32/libprivatessh.so.5
-OLD_FILES+=usr/lib32/libprivatessh_p.a
-.endif
OLD_FILES+=usr/libexec/sftp-server
OLD_FILES+=usr/libexec/ssh-keysign
OLD_FILES+=usr/libexec/ssh-pkcs11-helper
+OLD_FILES+=usr/libexec/ssh-sk-helper
OLD_FILES+=usr/sbin/sshd
OLD_FILES+=usr/share/man/man1/scp.1.gz
OLD_FILES+=usr/share/man/man1/sftp.1.gz
@@ -7157,6 +6638,7 @@ OLD_FILES+=usr/share/man/man8/pam_ssh.8.gz
OLD_FILES+=usr/share/man/man8/sftp-server.8.gz
OLD_FILES+=usr/share/man/man8/ssh-keysign.8.gz
OLD_FILES+=usr/share/man/man8/ssh-pkcs11-helper.8.gz
+OLD_FILES+=usr/share/man/man8/ssh-sk-helper.8.gz
OLD_FILES+=usr/share/man/man8/sshd.8.gz
.endif
@@ -7284,15 +6766,12 @@ OLD_FILES+=usr/lib/libpmc.a
OLD_FILES+=usr/lib/libpmc.so
OLD_LIBS+=usr/lib/libpmc.so.5
OLD_FILES+=usr/lib/libpmc_p.a
-OLD_FILES+=usr/lib32/libpmc.a
-OLD_FILES+=usr/lib32/libpmc.so
-OLD_LIBS+=usr/lib32/libpmc.so.5
-OLD_FILES+=usr/lib32/libpmc_p.a
OLD_FILES+=usr/sbin/pmc
OLD_FILES+=usr/sbin/pmcannotate
OLD_FILES+=usr/sbin/pmccontrol
OLD_FILES+=usr/sbin/pmcstat
OLD_FILES+=usr/share/man/man3/pmc.3.gz
+OLD_FILES+=usr/share/man/man3/pmc.amd.3.gz
OLD_FILES+=usr/share/man/man3/pmc.atom.3.gz
OLD_FILES+=usr/share/man/man3/pmc.atomsilvermont.3.gz
OLD_FILES+=usr/share/man/man3/pmc.core.3.gz
@@ -7305,13 +6784,7 @@ OLD_FILES+=usr/share/man/man3/pmc.haswellxeon.3.gz
OLD_FILES+=usr/share/man/man3/pmc.iaf.3.gz
OLD_FILES+=usr/share/man/man3/pmc.ivybridge.3.gz
OLD_FILES+=usr/share/man/man3/pmc.ivybridgexeon.3.gz
-OLD_FILES+=usr/share/man/man3/pmc.k7.3.gz
OLD_FILES+=usr/share/man/man3/pmc.k8.3.gz
-OLD_FILES+=usr/share/man/man3/pmc.mips24k.3.gz
-OLD_FILES+=usr/share/man/man3/pmc.octeon.3.gz
-OLD_FILES+=usr/share/man/man3/pmc.p4.3.gz
-OLD_FILES+=usr/share/man/man3/pmc.p5.3.gz
-OLD_FILES+=usr/share/man/man3/pmc.p6.3.gz
OLD_FILES+=usr/share/man/man3/pmc.sandybridge.3.gz
OLD_FILES+=usr/share/man/man3/pmc.sandybridgeuc.3.gz
OLD_FILES+=usr/share/man/man3/pmc.sandybridgexeon.3.gz
@@ -7364,14 +6837,6 @@ OLD_FILES+=usr/share/man/man8/pmcstat.8.gz
OLD_FILES+=usr/share/man/man8/pmcstudy.8.gz
.endif
-.if ${MK_PORTSNAP} == no
-OLD_FILES+=etc/portsnap.conf
-OLD_FILES+=usr/libexec/make_index
-OLD_FILES+=usr/sbin/portsnap
-OLD_FILES+=usr/share/examples/etc/portsnap.conf
-OLD_FILES+=usr/share/man/man8/portsnap.8.gz
-.endif
-
.if ${MK_PPP} == no
OLD_FILES+=etc/newsyslog.conf.d/ppp.conf
OLD_FILES+=etc/ppp/ppp.conf
@@ -7385,6 +6850,7 @@ OLD_FILES+=usr/share/man/man8/pppctl.8.gz
.if ${MK_PROFILE} == no
OLD_FILES+=usr/lib/lib80211_p.a
+OLD_FILES+=usr/lib/lib9p_p.a
OLD_FILES+=usr/lib/libBlocksRuntime_p.a
OLD_FILES+=usr/lib/libalias_dummy_p.a
OLD_FILES+=usr/lib/libalias_ftp_p.a
@@ -7451,6 +6917,8 @@ OLD_FILES+=usr/lib/libheimntlm_p.a
OLD_FILES+=usr/lib/libheimsqlite_p.a
OLD_FILES+=usr/lib/libhistory_p.a
OLD_FILES+=usr/lib/libhx509_p.a
+OLD_FILES+=usr/lib/libicp_p.a
+OLD_FILES+=usr/lib/libicp_rescue_p.a
OLD_FILES+=usr/lib/libipsec_p.a
OLD_FILES+=usr/lib/libipt_p.a
OLD_FILES+=usr/lib/libjail_p.a
@@ -7476,7 +6944,8 @@ OLD_FILES+=usr/lib/libmt_p.a
OLD_FILES+=usr/lib/libncurses_p.a
OLD_FILES+=usr/lib/libncursesw_p.a
OLD_FILES+=usr/lib/libnetgraph_p.a
-OLD_FILES+=usr/lib/libngatm_p.a
+OLD_FILES+=usr/lib/libnetmap_p.a
+OLD_FILES+=usr/lib/libnss_tacplus_p.a
OLD_FILES+=usr/lib/libnv_p.a
OLD_FILES+=usr/lib/libnvpair_p.a
OLD_FILES+=usr/lib/libopencsd_p.a
@@ -7487,9 +6956,19 @@ OLD_FILES+=usr/lib/libpathconv_p.a
OLD_FILES+=usr/lib/libpcap_p.a
OLD_FILES+=usr/lib/libpjdlog_p.a
OLD_FILES+=usr/lib/libpmc_p.a
+OLD_FILES+=usr/lib/libprivateatf-c++_p.a
+OLD_FILES+=usr/lib/libprivateatf-c_p.a
+OLD_FILES+=usr/lib/libprivateauditd_p.a
OLD_FILES+=usr/lib/libprivatebsdstat_p.a
+OLD_FILES+=usr/lib/libprivatecbor_p.a
OLD_FILES+=usr/lib/libprivatedevdctl_p.a
OLD_FILES+=usr/lib/libprivateevent_p.a
+OLD_FILES+=usr/lib/libprivateevent1_p.a
+OLD_FILES+=usr/lib/libprivatefido2_p.a
+OLD_FILES+=usr/lib/libprivategmock_main_p.a
+OLD_FILES+=usr/lib/libprivategmock_p.a
+OLD_FILES+=usr/lib/libprivategtest_main_p.a
+OLD_FILES+=usr/lib/libprivategtest_p.a
OLD_FILES+=usr/lib/libprivateheimipcc_p.a
OLD_FILES+=usr/lib/libprivateheimipcs_p.a
OLD_FILES+=usr/lib/libprivateifconfig_p.a
@@ -7512,7 +6991,9 @@ OLD_FILES+=usr/lib/librtld_db_p.a
OLD_FILES+=usr/lib/libsbuf_p.a
OLD_FILES+=usr/lib/libsdp_p.a
OLD_FILES+=usr/lib/libsmb_p.a
+OLD_FILES+=usr/lib/libspl_p.a
OLD_FILES+=usr/lib/libssl_p.a
+OLD_FILES+=usr/lib/libstats_p.a
OLD_FILES+=usr/lib/libstdbuf_p.a
OLD_FILES+=usr/lib/libstdc++_p.a
OLD_FILES+=usr/lib/libstdthreads_p.a
@@ -7527,6 +7008,7 @@ OLD_FILES+=usr/lib/libthr_p.a
OLD_FILES+=usr/lib/libthread_db_p.a
OLD_FILES+=usr/lib/libtinfo_p.a
OLD_FILES+=usr/lib/libtinfow_p.a
+OLD_FILES+=usr/lib/libtpool_p.a
OLD_FILES+=usr/lib/libufs_p.a
OLD_FILES+=usr/lib/libugidfw_p.a
OLD_FILES+=usr/lib/libulog_p.a
@@ -7546,8 +7028,8 @@ OLD_FILES+=usr/lib/libypclnt_p.a
OLD_FILES+=usr/lib/libz_p.a
OLD_FILES+=usr/lib/libzfs_core_p.a
OLD_FILES+=usr/lib/libzfs_p.a
-OLD_FILES+=usr/lib/libprivateldns_p.a
-OLD_FILES+=usr/lib/libprivatessh_p.a
+OLD_FILES+=usr/lib/libzfsbootenv_p.a
+OLD_FILES+=usr/lib/libzutil_p.a
.endif
.if ${MK_QUOTAS} == no
@@ -7572,12 +7054,6 @@ OLD_LIBS+=usr/lib/libradius.so.4
OLD_FILES+=usr/lib/libradius_p.a
OLD_FILES+=usr/lib/pam_radius.so
OLD_LIBS+=usr/lib/pam_radius.so.6
-OLD_FILES+=usr/lib32/libradius.a
-OLD_FILES+=usr/lib32/libradius.so
-OLD_LIBS+=usr/lib32/libradius.so.4
-OLD_FILES+=usr/lib32/libradius_p.a
-OLD_FILES+=usr/lib32/pam_radius.so
-OLD_LIBS+=usr/lib32/pam_radius.so.6
OLD_FILES+=usr/include/radlib.h
OLD_FILES+=usr/include/radlib_vs.h
OLD_FILES+=usr/share/man/man3/libradius.3.gz
@@ -7651,7 +7127,9 @@ OLD_FILES+=etc/periodic/daily/440.status-mailq
OLD_FILES+=etc/periodic/daily/460.status-mail-rejects
OLD_FILES+=etc/periodic/daily/500.queuerun
OLD_FILES+=etc/rc.d/sendmail
+.if ${MK_MAILWRAPPER} == no
OLD_FILES+=bin/rmail
+.endif
OLD_FILES+=usr/bin/vacation
OLD_FILES+=usr/include/libmilter/mfapi.h
OLD_FILES+=usr/include/libmilter/mfdef.h
@@ -7660,12 +7138,6 @@ OLD_FILES+=usr/lib/libmilter.a
OLD_FILES+=usr/lib/libmilter.so
OLD_LIBS+=usr/lib/libmilter.so.5
OLD_FILES+=usr/lib/libmilter_p.a
-.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
-OLD_FILES+=usr/lib32/libmilter.a
-OLD_FILES+=usr/lib32/libmilter.so
-OLD_LIBS+=usr/lib32/libmilter.so.5
-OLD_FILES+=usr/lib32/libmilter_p.a
-.endif
OLD_FILES+=usr/libexec/mail.local
OLD_FILES+=usr/libexec/sendmail/sendmail
OLD_FILES+=usr/libexec/smrsh
@@ -7675,6 +7147,8 @@ OLD_FILES+=usr/sbin/makemap
OLD_FILES+=usr/sbin/praliases
OLD_FILES+=usr/share/doc/smm/08.sendmailop/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/08.sendmailop
+OLD_FILES+=usr/share/examples/sendmail/mailer.conf
+OLD_DIRS+=usr/share/examples/sendmail
OLD_FILES+=usr/share/man/man1/mailq.1.gz
OLD_FILES+=usr/share/man/man1/newaliases.1.gz
OLD_FILES+=usr/share/man/man1/vacation.1.gz
@@ -7740,18 +7214,23 @@ OLD_FILES+=usr/share/sendmail/cf/feature/access_db.m4
OLD_FILES+=usr/share/sendmail/cf/feature/allmasquerade.m4
OLD_FILES+=usr/share/sendmail/cf/feature/always_add_domain.m4
OLD_FILES+=usr/share/sendmail/cf/feature/authinfo.m4
+OLD_FILES+=usr/share/sendmail/cf/feature/blocklist_recipients.m4
OLD_FILES+=usr/share/sendmail/cf/feature/badmx.m4
OLD_FILES+=usr/share/sendmail/cf/feature/bcc.m4
OLD_FILES+=usr/share/sendmail/cf/feature/bestmx_is_local.m4
OLD_FILES+=usr/share/sendmail/cf/feature/bitdomain.m4
OLD_FILES+=usr/share/sendmail/cf/feature/blacklist_recipients.m4
OLD_FILES+=usr/share/sendmail/cf/feature/block_bad_helo.m4
+OLD_FILES+=usr/share/sendmail/cf/feature/check_other.m4
+OLD_FILES+=usr/share/sendmail/cf/feature/check_cert_altnames.m4
+OLD_FILES+=usr/share/sendmail/cf/feature/check_other.m4
OLD_FILES+=usr/share/sendmail/cf/feature/compat_check.m4
OLD_FILES+=usr/share/sendmail/cf/feature/conncontrol.m4
OLD_FILES+=usr/share/sendmail/cf/feature/delay_checks.m4
OLD_FILES+=usr/share/sendmail/cf/feature/dnsbl.m4
OLD_FILES+=usr/share/sendmail/cf/feature/domaintable.m4
OLD_FILES+=usr/share/sendmail/cf/feature/enhdnsbl.m4
+OLD_FILES+=usr/share/sendmail/cf/feature/fips3.m4
OLD_FILES+=usr/share/sendmail/cf/feature/generics_entire_domain.m4
OLD_FILES+=usr/share/sendmail/cf/feature/genericstable.m4
OLD_FILES+=usr/share/sendmail/cf/feature/greet_pause.m4
@@ -7788,6 +7267,8 @@ OLD_FILES+=usr/share/sendmail/cf/feature/relay_mail_from.m4
OLD_FILES+=usr/share/sendmail/cf/feature/require_rdns.m4
OLD_FILES+=usr/share/sendmail/cf/feature/smrsh.m4
OLD_FILES+=usr/share/sendmail/cf/feature/stickyhost.m4
+OLD_FILES+=usr/share/sendmail/cf/feature/sts.m4
+OLD_FILES+=usr/share/sendmail/cf/feature/tls_failures.m4
OLD_FILES+=usr/share/sendmail/cf/feature/tls_session_features.m4
OLD_FILES+=usr/share/sendmail/cf/feature/use_client_ptr.m4
OLD_FILES+=usr/share/sendmail/cf/feature/use_ct_file.m4
@@ -7891,6 +7372,27 @@ OLD_DIRS+=var/spool/clientmqueue
OLD_FILES+=var/db/services.db
.endif
+.if ${MK_NUAGEINIT} == no
+OLD_FILES+=etc/rc.d/nuageinit
+OLD_FILES+=usr/libexec/nuageinit
+OLD_FILES+=usr/share/flua/nuage.lua
+OLD_FILES+=usr/share/flua/yaml.lua
+OLD_FILES+=usr/tests
+OLD_FILES+=usr/tests/libexec/nuageinit/utils
+OLD_FILES+=usr/tests/libexec/nuageinit/nuage
+OLD_FILES+=usr/tests/libexec/nuageinit/warn.lua
+OLD_FILES+=usr/tests/libexec/nuageinit/dirname.lua
+OLD_FILES+=usr/tests/libexec/nuageinit/err.lua
+OLD_FILES+=usr/tests/libexec/nuageinit/adduser.lua
+OLD_FILES+=usr/tests/libexec/nuageinit/addsshkeys.lua
+OLD_FILES+=usr/tests/libexec/nuageinit/Kyuafile
+OLD_FILES+=usr/tests/libexec/nuageinit/ktrace.out
+OLD_FILES+=usr/tests/libexec/nuageinit/addgroup.lua
+OLD_FILES+=usr/tests/libexec/nuageinit/sethostname.lua
+OLD_FILES+=usr/tests/libexec/nuageinit/nuageinit
+OLD_FILES+=usr/tests/libexec/nuageinit/addsshkey.lua
+.endif
+
.if ${MK_SHAREDOCS} == no
OLD_FILES+=usr/share/doc/pjdfstest/README
OLD_DIRS+=usr/share/doc/pjdfstest
@@ -7984,6 +7486,7 @@ OLD_FILES+=usr/share/syscons/keymaps/by.cp1131.kbd
OLD_FILES+=usr/share/syscons/keymaps/by.cp1251.kbd
OLD_FILES+=usr/share/syscons/keymaps/by.iso5.kbd
OLD_FILES+=usr/share/syscons/keymaps/ce.iso2.kbd
+OLD_FILES+=usr/share/syscons/keymaps/colemak-dh.iso15.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/colemak.iso15.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/cs.latin2.qwertz.kbd
OLD_FILES+=usr/share/syscons/keymaps/cz.iso2.kbd
@@ -8068,6 +7571,7 @@ OLD_FILES+=usr/share/syscons/keymaps/us.dvorakx.kbd
OLD_FILES+=usr/share/syscons/keymaps/us.emacs.kbd
OLD_FILES+=usr/share/syscons/keymaps/us.iso.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/us.iso.kbd
+OLD_FILES+=usr/share/syscons/keymaps/us.iso.macbook.kbd
OLD_FILES+=usr/share/syscons/keymaps/us.pc-ctrl.kbd
OLD_FILES+=usr/share/syscons/keymaps/us.unix.kbd
OLD_FILES+=usr/share/syscons/scrnmaps/armscii8-2haik8.scm
@@ -8160,41 +7664,25 @@ OLD_FILES+=usr/share/nls/uk_UA.UTF-8/tcsh.cat
.endif
.if ${MK_TELNET} == no
-OLD_FILES+=etc/pam.d/telnetd
OLD_FILES+=usr/bin/telnet
-OLD_FILES+=usr/libexec/telnetd
OLD_FILES+=usr/share/man/man1/telnet.1.gz
-OLD_FILES+=usr/share/man/man8/telnetd.8.gz
.endif
.if ${MK_TESTS} == yes
OLD_FILES+=usr/bin/atf-sh
OLD_FILES+=usr/include/atf-c++/config.hpp
OLD_FILES+=usr/include/atf-c/config.h
-OLD_LIBS+=usr/lib/libatf-c++.a
-OLD_LIBS+=usr/lib/libatf-c++.so
+OLD_FILES+=usr/lib/libatf-c++.a
+OLD_FILES+=usr/lib/libatf-c++.so
OLD_LIBS+=usr/lib/libatf-c++.so.1
OLD_LIBS+=usr/lib/libatf-c++.so.2
-OLD_LIBS+=usr/lib/libatf-c++_p.a
-OLD_LIBS+=usr/lib/libatf-c.a
-OLD_LIBS+=usr/lib/libatf-c.so
+OLD_FILES+=usr/lib/libatf-c++_p.a
+OLD_FILES+=usr/lib/libatf-c.a
+OLD_FILES+=usr/lib/libatf-c.so
OLD_LIBS+=usr/lib/libatf-c.so.1
-OLD_LIBS+=usr/lib/libatf-c_p.a
+OLD_FILES+=usr/lib/libatf-c_p.a
OLD_LIBS+=usr/lib/libprivateatf-c.so.0
OLD_LIBS+=usr/lib/libprivateatf-c++.so.1
-.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
-OLD_LIBS+=usr/lib32/libatf-c++.a
-OLD_LIBS+=usr/lib32/libatf-c++.so
-OLD_LIBS+=usr/lib32/libatf-c++.so.1
-OLD_LIBS+=usr/lib32/libatf-c++.so.2
-OLD_LIBS+=usr/lib32/libatf-c++_p.a
-OLD_LIBS+=usr/lib32/libatf-c.a
-OLD_LIBS+=usr/lib32/libatf-c.so
-OLD_LIBS+=usr/lib32/libatf-c.so.1
-OLD_LIBS+=usr/lib32/libatf-c_p.a
-OLD_LIBS+=usr/lib32/libprivateatf-c.so.0
-OLD_LIBS+=usr/lib32/libprivateatf-c++.so.1
-.endif
OLD_FILES+=usr/libdata/pkgconfig/atf-c++.pc
OLD_FILES+=usr/libdata/pkgconfig/atf-c.pc
OLD_FILES+=usr/libdata/pkgconfig/atf-sh.pc
@@ -8721,7 +8209,6 @@ OLD_FILES+=usr/include/atf-c/macros.h
OLD_FILES+=usr/include/atf-c/tc.h
OLD_FILES+=usr/include/atf-c/tp.h
OLD_FILES+=usr/include/atf-c/utils.h
-OLD_FILES+=usr/lib/debug/usr/bin/kyua.debug
OLD_LIBS+=usr/lib/libprivateatf-c++.so.2
OLD_LIBS+=usr/lib/libprivateatf-c.so.1
OLD_FILES+=usr/share/examples/kyua/kyua.conf
@@ -8820,6 +8307,7 @@ OLD_FILES+=usr/share/man/man8/tftpd.8.gz
.endif
.if ${MK_TOOLCHAIN} == no
+OLD_FILES+=usr/bin/CC
OLD_FILES+=usr/bin/addr2line
OLD_FILES+=usr/bin/as
OLD_FILES+=usr/bin/byacc
@@ -8901,6 +8389,12 @@ OLD_FILES+=usr/share/man/man3/elftc_set_timestamps.3.gz
OLD_FILES+=usr/share/man/man3/elftc_timestamp.3.gz
OLD_FILES+=usr/share/man/man3/elftc_string_table_create.3.gz
OLD_FILES+=usr/share/man/man3/elftc_version.3.gz
+# usr.bin/lorder
+OLD_FILES+=usr/bin/lorder
+OLD_FILES+=usr/tests/usr.bin/lorder/Kyuafile
+OLD_FILES+=usr/tests/usr.bin/lorder/lorder_test
+OLD_DIRS+=usr/tests/usr.bin/lorder
+# usr.bin/yacc
OLD_FILES+=usr/tests/usr.bin/yacc/Kyuafile
OLD_FILES+=usr/tests/usr.bin/yacc/btyacc_calc1.y
OLD_FILES+=usr/tests/usr.bin/yacc/btyacc_demo.y
@@ -9219,17 +8713,11 @@ OLD_FILES+=usr/lib/libprivateunbound.a
OLD_FILES+=usr/lib/libprivateunbound.so
OLD_LIBS+=usr/lib/libprivateunbound.so.5
OLD_FILES+=usr/lib/libprivateunbound_p.a
-.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
-OLD_FILES+=usr/lib32/libprivateunbound.a
-OLD_FILES+=usr/lib32/libprivateunbound.so
-OLD_LIBS+=usr/lib32/libprivateunbound.so.5
-OLD_FILES+=usr/lib32/libprivateunbound_p.a
OLD_FILES+=usr/share/man/man5/local-unbound.conf.5.gz
OLD_FILES+=usr/share/man/man8/local-unbound-anchor.8.gz
OLD_FILES+=usr/share/man/man8/local-unbound-checkconf.8.gz
OLD_FILES+=usr/share/man/man8/local-unbound-control.8.gz
OLD_FILES+=usr/share/man/man8/local-unbound.8.gz
-.endif
OLD_FILES+=usr/sbin/local-unbound-setup
OLD_FILES+=usr/sbin/local-unbound
OLD_FILES+=usr/sbin/local-unbound-anchor
@@ -9257,14 +8745,6 @@ OLD_FILES+=usr/lib/libusbhid.a
OLD_FILES+=usr/lib/libusbhid.so
OLD_LIBS+=usr/lib/libusbhid.so.4
OLD_FILES+=usr/lib/libusbhid_p.a
-OLD_FILES+=usr/lib32/libusb.a
-OLD_FILES+=usr/lib32/libusb.so
-OLD_LIBS+=usr/lib32/libusb.so.3
-OLD_FILES+=usr/lib32/libusb_p.a
-OLD_FILES+=usr/lib32/libusbhid.a
-OLD_FILES+=usr/lib32/libusbhid.so
-OLD_LIBS+=usr/lib32/libusbhid.so.4
-OLD_FILES+=usr/lib32/libusbhid_p.a
OLD_FILES+=usr/libdata/pkgconfig/libusb-0.1.pc
OLD_FILES+=usr/libdata/pkgconfig/libusb-1.0.pc
OLD_FILES+=usr/libdata/pkgconfig/libusb-2.0.pc
@@ -9618,6 +9098,14 @@ OLD_FILES+=usr/share/man/man8/lastlogin.8.gz
OLD_FILES+=usr/share/man/man8/utx.8.gz
.endif
+.if ${MK_VERIEXEC} == no
+OLD_FILES+=sbin/veriexec
+OLD_FILES+=usr/share/man/man8/veriexec.8.gz
+OLD_FILES+=usr/lib/libveriexec.a
+OLD_FILES+=usr/lib/libveriexec.so
+OLD_LIBS+=usr/lib/libveriexec.so.5
+.endif
+
.if ${MK_VI} == no
OLD_FILES+=etc/rc.d/virecover
OLD_FILES+=rescue/ex
@@ -9680,14 +9168,113 @@ OLD_FILES+=usr/share/snmp/defs/wlan_tree.def
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-WIRELESS-MIB.txt
.endif
-.if ${MK_HYPERV} == no
-OLD_FILES+=etc/devd/hyperv.conf
-OLD_FILES+=usr/libexec/hyperv/hv_set_ifconfig
-OLD_FILES+=usr/libexec/hyperv/hv_get_dns_info
-OLD_FILES+=usr/libexec/hyperv/hv_get_dhcp_info
-OLD_FILES+=usr/sbin/hv_kvp_daemon
-OLD_FILES+=usr/sbin/hv_vss_daemon
-OLD_FILES+=usr/share/man/man8/hv_kvp_daemon.8.gz
+.if ${MK_ZFS} == no
+OLD_FILES+=boot/gptzfsboot
+OLD_FILES+=boot/zfsboot
+OLD_FILES+=boot/zfsloader
+OLD_FILES+=etc/rc.d/zfs
+OLD_FILES+=etc/rc.d/zfsbe
+OLD_FILES+=etc/rc.d/zfsd
+OLD_FILES+=etc/rc.d/zfskeys
+OLD_FILES+=etc/rc.d/zvol
+OLD_FILES+=etc/devd/zfs.conf
+OLD_FILES+=etc/periodic/daily/404.status-zfs
+OLD_FILES+=etc/periodic/daily/800.scrub-zfs
+OLD_FILES+=etc/zfs/exports
+OLD_DIRS+=etc/zfs
+OLD_LIBS+=lib/libavl.so.2
+OLD_LIBS+=lib/libnvpair.so.2
+OLD_LIBS+=lib/libumem.so.2
+OLD_LIBS+=lib/libuutil.so.2
+OLD_LIBS+=lib/libzfs.so.2
+OLD_LIBS+=lib/libzfs.so.3
+OLD_LIBS+=lib/libzfs_core.so.2
+OLD_LIBS+=lib/libzpool.so.2
+OLD_FILES+=rescue/zdb
+OLD_FILES+=rescue/zfs
+OLD_FILES+=rescue/zpool
+OLD_FILES+=sbin/bectl
+OLD_FILES+=sbin/zfs
+OLD_FILES+=sbin/zpool
+OLD_FILES+=sbin/zfsbootcfg
+OLD_FILES+=usr/bin/zinject
+OLD_FILES+=usr/bin/zstreamdump
+OLD_FILES+=usr/bin/ztest
+OLD_FILES+=usr/lib/libbe.a
+OLD_FILES+=usr/lib/libbe_p.a
+OLD_FILES+=usr/lib/libbe.so
+OLD_LIBS+=lib/libbe.so.1
+OLD_FILES+=usr/lib/libavl.a
+OLD_FILES+=usr/lib/libavl.so
+OLD_FILES+=usr/lib/libavl_p.a
+OLD_FILES+=usr/lib/libnvpair.a
+OLD_FILES+=usr/lib/libnvpair.so
+OLD_FILES+=usr/lib/libnvpair_p.a
+OLD_FILES+=usr/lib/libumem.a
+OLD_FILES+=usr/lib/libumem.so
+OLD_FILES+=usr/lib/libumem_p.a
+OLD_FILES+=usr/lib/libuutil.a
+OLD_FILES+=usr/lib/libuutil.so
+OLD_FILES+=usr/lib/libuutil_p.a
+OLD_FILES+=usr/lib/libzfs.a
+OLD_FILES+=usr/lib/libzfs.so
+OLD_FILES+=usr/lib/libzfs_core.a
+OLD_FILES+=usr/lib/libzfs_core.so
+OLD_FILES+=usr/lib/libzfs_core_p.a
+OLD_FILES+=usr/lib/libzfs_p.a
+OLD_FILES+=usr/lib/libzpool.a
+OLD_FILES+=usr/lib/libzpool.so
+OLD_LIBS+=usr/lib/libzpool.so.2
+OLD_FILES+=usr/sbin/zfsd
+OLD_FILES+=usr/sbin/zhack
+OLD_FILES+=usr/sbin/zdb
+OLD_FILES+=usr/share/man/man3/be_activate.3.gz
+OLD_FILES+=usr/share/man/man3/be_active_name.3.gz
+OLD_FILES+=usr/share/man/man3/be_active_path.3.gz
+OLD_FILES+=usr/share/man/man3/be_create_depth.3.gz
+OLD_FILES+=usr/share/man/man3/be_create_from_existing_snap.3.gz
+OLD_FILES+=usr/share/man/man3/be_create_from_existing.3.gz
+OLD_FILES+=usr/share/man/man3/be_create.3.gz
+OLD_FILES+=usr/share/man/man3/be_deactivate.3.gz
+OLD_FILES+=usr/share/man/man3/be_destroy.3.gz
+OLD_FILES+=usr/share/man/man3/be_exists.3.gz
+OLD_FILES+=usr/share/man/man3/be_export.3.gz
+OLD_FILES+=usr/share/man/man3/be_get_bootenv_props.3.gz
+OLD_FILES+=usr/share/man/man3/be_get_dataset_props.3.gz
+OLD_FILES+=usr/share/man/man3/be_get_dataset_snapshots.3.gz
+OLD_FILES+=usr/share/man/man3/be_import.3.gz
+OLD_FILES+=usr/share/man/man3/be_is_auto_snapshot_name.3.gz
+OLD_FILES+=usr/share/man/man3/be_mount.3.gz
+OLD_FILES+=usr/share/man/man3/be_mounted_at.3.gz
+OLD_FILES+=usr/share/man/man3/be_nextboot_name.3.gz
+OLD_FILES+=usr/share/man/man3/be_nextboot_path.3.gz
+OLD_FILES+=usr/share/man/man3/be_nicenum.3.gz
+OLD_FILES+=usr/share/man/man3/be_prop_list_alloc.3.gz
+OLD_FILES+=usr/share/man/man3/be_prop_list_free.3.gz
+OLD_FILES+=usr/share/man/man3/be_rename.3.gz
+OLD_FILES+=usr/share/man/man3/be_root_concat.3.gz
+OLD_FILES+=usr/share/man/man3/be_root_path.3.gz
+OLD_FILES+=usr/share/man/man3/be_snapshot.3.gz
+OLD_FILES+=usr/share/man/man3/be_unmount.3.gz
+OLD_FILES+=usr/share/man/man3/be_validate_name.3.gz
+OLD_FILES+=usr/share/man/man3/be_validate_snap.3.gz
+OLD_FILES+=usr/share/man/man3/libbe_close.3.gz
+OLD_FILES+=usr/share/man/man3/libbe_errno.3.gz
+OLD_FILES+=usr/share/man/man3/libbe_error_description.3.gz
+OLD_FILES+=usr/share/man/man3/libbe_init.3.gz
+OLD_FILES+=usr/share/man/man3/libbe_print_on_error.3.gz
+OLD_FILES+=usr/share/man/man3/libbe.3.gz
+OLD_FILES+=usr/share/man/man5/zpool-features.5.gz
+OLD_FILES+=usr/share/man/man8/bectl.8.gz
+OLD_FILES+=usr/share/man/man8/gptzfsboot.8.gz
+OLD_FILES+=usr/share/man/man8/zdb.8.gz
+OLD_FILES+=usr/share/man/man8/zfs-program.8.gz
+OLD_FILES+=usr/share/man/man8/zfs.8.gz
+OLD_FILES+=usr/share/man/man8/zfsboot.8.gz
+OLD_FILES+=usr/share/man/man8/zfsbootcfg.8.gz
+OLD_FILES+=usr/share/man/man8/zfsd.8.gz
+OLD_FILES+=usr/share/man/man8/zfsloader.8.gz
+OLD_FILES+=usr/share/man/man8/zpool.8.gz
.endif
.if ${MK_ZONEINFO} == no
@@ -9780,6 +9367,7 @@ OLD_FILES+=usr/share/zoneinfo/America/Cayenne
OLD_FILES+=usr/share/zoneinfo/America/Cayman
OLD_FILES+=usr/share/zoneinfo/America/Chicago
OLD_FILES+=usr/share/zoneinfo/America/Chihuahua
+OLD_FILES+=usr/share/zoneinfo/America/Ciudad_Juarez
OLD_FILES+=usr/share/zoneinfo/America/Costa_Rica
OLD_FILES+=usr/share/zoneinfo/America/Creston
OLD_FILES+=usr/share/zoneinfo/America/Cuiaba
diff --git a/tools/build/mk/bsd.lib.mk b/tools/build/mk/bsd.lib.mk
index 6f717d812696..335f1d424358 100644
--- a/tools/build/mk/bsd.lib.mk
+++ b/tools/build/mk/bsd.lib.mk
@@ -1,4 +1,3 @@
-# $FreeBSD$
.include "Makefile.boot.pre"
# Don't build shared libraries during bootstrap
diff --git a/tools/build/mk/bsd.prog.mk b/tools/build/mk/bsd.prog.mk
index 3eb5c904e2ef..a4775a66e764 100644
--- a/tools/build/mk/bsd.prog.mk
+++ b/tools/build/mk/bsd.prog.mk
@@ -1,4 +1,3 @@
-# $FreeBSD$
.include "Makefile.boot.pre"
.include "../../../share/mk/bsd.prog.mk"
diff --git a/tools/build/options/INIT_ALL b/tools/build/options/INIT_ALL
new file mode 100644
index 000000000000..3ca70337b8f1
--- /dev/null
+++ b/tools/build/options/INIT_ALL
@@ -0,0 +1,21 @@
+Control default initialization of stack variables in C and C++ code.
+Options other than
+.Li none
+require the Clang compiler or GCC 12.0 or later.
+The default value is
+.Li none .
+Valid values are:
+.Bl -tag -width indent
+.It Li none
+Do not initialize stack variables (standard C/C++ behavior).
+.It Li pattern
+Build the base system or kernel with stack variables initialized to
+.Pq compiler defined
+debugging patterns on function entry.
+.It Li zero
+Build the base system or kernel with stack variables initialized
+to zero on function entry.
+This value is converted to
+.Li none
+for amd64 kernel builds due to incompatability with ifunc memset.
+.El
diff --git a/tools/build/options/LIBC_MALLOC b/tools/build/options/LIBC_MALLOC
new file mode 100644
index 000000000000..5a72f7730fc7
--- /dev/null
+++ b/tools/build/options/LIBC_MALLOC
@@ -0,0 +1,13 @@
+Specify the
+.Xr malloc 3
+implementation used by libc.
+The default value is
+.Li jemalloc .
+Valid values are:
+.Bl -tag -width indent
+.It Li jemalloc
+.El
+.Pp
+Other implementations are expected in the future in both
+.Fx
+and downstream consumers.
diff --git a/tools/build/options/WITHOUT_ACCT b/tools/build/options/WITHOUT_ACCT
index b885bc113692..a31683007f95 100644
--- a/tools/build/options/WITHOUT_ACCT
+++ b/tools/build/options/WITHOUT_ACCT
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build process accounting tools such as
.Xr accton 8
and
diff --git a/tools/build/options/WITHOUT_ACPI b/tools/build/options/WITHOUT_ACPI
index 76c304a1b1a8..a44daa30867d 100644
--- a/tools/build/options/WITHOUT_ACPI
+++ b/tools/build/options/WITHOUT_ACPI
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr acpiconf 8 ,
.Xr acpidump 8
diff --git a/tools/build/options/WITHOUT_APM b/tools/build/options/WITHOUT_APM
index cb1334e1e654..b8658381964b 100644
--- a/tools/build/options/WITHOUT_APM
+++ b/tools/build/options/WITHOUT_APM
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr apm 8 ,
.Xr apmd 8
diff --git a/tools/build/options/WITHOUT_ASSERT_DEBUG b/tools/build/options/WITHOUT_ASSERT_DEBUG
index 66103683229a..e2dca19c49d2 100644
--- a/tools/build/options/WITHOUT_ASSERT_DEBUG
+++ b/tools/build/options/WITHOUT_ASSERT_DEBUG
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Compile programs and libraries without the
.Xr assert 3
checks.
diff --git a/tools/build/options/WITHOUT_AT b/tools/build/options/WITHOUT_AT
index 849f6b1e5468..ed4d7c2cfaea 100644
--- a/tools/build/options/WITHOUT_AT
+++ b/tools/build/options/WITHOUT_AT
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr at 1
and related utilities.
diff --git a/tools/build/options/WITHOUT_ATM b/tools/build/options/WITHOUT_ATM
deleted file mode 100644
index 345663fb3ccd..000000000000
--- a/tools/build/options/WITHOUT_ATM
+++ /dev/null
@@ -1,3 +0,0 @@
-.\" $FreeBSD$
-Do not build
-programs and libraries related to ATM networking.
diff --git a/tools/build/options/WITHOUT_AUDIT b/tools/build/options/WITHOUT_AUDIT
index 479bf77655e1..8adc89172200 100644
--- a/tools/build/options/WITHOUT_AUDIT
+++ b/tools/build/options/WITHOUT_AUDIT
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build audit support into system programs.
diff --git a/tools/build/options/WITHOUT_AUTHPF b/tools/build/options/WITHOUT_AUTHPF
index 55e6a726b4ff..1d708b84e16c 100644
--- a/tools/build/options/WITHOUT_AUTHPF
+++ b/tools/build/options/WITHOUT_AUTHPF
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build
.Xr authpf 8 .
diff --git a/tools/build/options/WITHOUT_AUTOFS b/tools/build/options/WITHOUT_AUTOFS
index 0d8f2450cccc..fa8ff52d13e3 100644
--- a/tools/build/options/WITHOUT_AUTOFS
+++ b/tools/build/options/WITHOUT_AUTOFS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr autofs 5
related programs, libraries, and kernel modules.
diff --git a/tools/build/options/WITHOUT_AUTO_OBJ b/tools/build/options/WITHOUT_AUTO_OBJ
index 69dd6c387bdb..60c4826bee30 100644
--- a/tools/build/options/WITHOUT_AUTO_OBJ
+++ b/tools/build/options/WITHOUT_AUTO_OBJ
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Disable automatic creation of objdirs.
This is enabled by default if the wanted OBJDIR is writable by the current user.
diff --git a/tools/build/options/WITHOUT_BHYVE b/tools/build/options/WITHOUT_BHYVE
index 52cef5d142e3..5d523bc58b0a 100644
--- a/tools/build/options/WITHOUT_BHYVE
+++ b/tools/build/options/WITHOUT_BHYVE
@@ -1,6 +1,5 @@
-.\" $FreeBSD$
Do not build or install
.Xr bhyve 8 ,
associated utilities, and examples.
.Pp
-This option only affects amd64/amd64.
+This option only affects amd64/amd64 and arm64/aarch64.
diff --git a/tools/build/options/WITHOUT_BIND_NOW b/tools/build/options/WITHOUT_BIND_NOW
index f35a7653aa3b..7c0e7a94015f 100644
--- a/tools/build/options/WITHOUT_BIND_NOW
+++ b/tools/build/options/WITHOUT_BIND_NOW
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build all binaries with the
.Dv DF_BIND_NOW
flag set.
diff --git a/tools/build/options/WITHOUT_BLACKLIST b/tools/build/options/WITHOUT_BLACKLIST
index 39ccd585aaa2..c54c83f27553 100644
--- a/tools/build/options/WITHOUT_BLACKLIST
+++ b/tools/build/options/WITHOUT_BLACKLIST
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Set this if you do not want to build
.Xr blacklistd 8
and
diff --git a/tools/build/options/WITHOUT_BLACKLIST_SUPPORT b/tools/build/options/WITHOUT_BLACKLIST_SUPPORT
index 2bb7542699e9..2bf22ea42ab6 100644
--- a/tools/build/options/WITHOUT_BLACKLIST_SUPPORT
+++ b/tools/build/options/WITHOUT_BLACKLIST_SUPPORT
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build some programs without
.Xr libblacklist 3
support, like
diff --git a/tools/build/options/WITHOUT_BLUETOOTH b/tools/build/options/WITHOUT_BLUETOOTH
index 0b8b2b5aa74c..71c2d840a3b7 100644
--- a/tools/build/options/WITHOUT_BLUETOOTH
+++ b/tools/build/options/WITHOUT_BLUETOOTH
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build Bluetooth related kernel modules, programs and libraries.
diff --git a/tools/build/options/WITHOUT_BOOT b/tools/build/options/WITHOUT_BOOT
index dae312bf45b1..b17ca3d23b73 100644
--- a/tools/build/options/WITHOUT_BOOT
+++ b/tools/build/options/WITHOUT_BOOT
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build the boot blocks and loader.
diff --git a/tools/build/options/WITHOUT_BOOTPARAMD b/tools/build/options/WITHOUT_BOOTPARAMD
index 3363479d2018..ec871797e46a 100644
--- a/tools/build/options/WITHOUT_BOOTPARAMD
+++ b/tools/build/options/WITHOUT_BOOTPARAMD
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build or install
.Xr bootparamd 8 .
diff --git a/tools/build/options/WITHOUT_BOOTPD b/tools/build/options/WITHOUT_BOOTPD
index cc4ef91da9ee..ec21d48bde0a 100644
--- a/tools/build/options/WITHOUT_BOOTPD
+++ b/tools/build/options/WITHOUT_BOOTPD
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build or install
.Xr bootpd 8 .
diff --git a/tools/build/options/WITHOUT_BSDINSTALL b/tools/build/options/WITHOUT_BSDINSTALL
index 77d82a9749bc..22d1905d8e7f 100644
--- a/tools/build/options/WITHOUT_BSDINSTALL
+++ b/tools/build/options/WITHOUT_BSDINSTALL
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr bsdinstall 8 ,
.Xr sade 8 ,
diff --git a/tools/build/options/WITHOUT_BSD_CPIO b/tools/build/options/WITHOUT_BSD_CPIO
index 207b7f898b2e..5aecc3abd433 100644
--- a/tools/build/options/WITHOUT_BSD_CPIO
+++ b/tools/build/options/WITHOUT_BSD_CPIO
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build the BSD licensed version of cpio based on
.Xr libarchive 3 .
diff --git a/tools/build/options/WITHOUT_BSNMP b/tools/build/options/WITHOUT_BSNMP
index 2836cc58bff1..cc07336f34da 100644
--- a/tools/build/options/WITHOUT_BSNMP
+++ b/tools/build/options/WITHOUT_BSNMP
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build or install
.Xr bsnmpd 1
and related libraries and data files.
diff --git a/tools/build/options/WITHOUT_BZIP2 b/tools/build/options/WITHOUT_BZIP2
index 6f7c29f8e00f..0ec4f7638a44 100644
--- a/tools/build/options/WITHOUT_BZIP2
+++ b/tools/build/options/WITHOUT_BZIP2
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build contributed bzip2 software as a part of the base system.
.Bf -symbolic
The option has no effect yet.
diff --git a/tools/build/options/WITHOUT_BZIP2_SUPPORT b/tools/build/options/WITHOUT_BZIP2_SUPPORT
index ca0e80d44e29..0cc8c81fadff 100644
--- a/tools/build/options/WITHOUT_BZIP2_SUPPORT
+++ b/tools/build/options/WITHOUT_BZIP2_SUPPORT
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build some programs without optional bzip2 support.
diff --git a/tools/build/options/WITHOUT_CALENDAR b/tools/build/options/WITHOUT_CALENDAR
index aa87b2fa1c09..d361f63d6f22 100644
--- a/tools/build/options/WITHOUT_CALENDAR
+++ b/tools/build/options/WITHOUT_CALENDAR
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build
.Xr calendar 1 .
diff --git a/tools/build/options/WITHOUT_CAPSICUM b/tools/build/options/WITHOUT_CAPSICUM
index 9d0eb89e491d..19d821f6c981 100644
--- a/tools/build/options/WITHOUT_CAPSICUM
+++ b/tools/build/options/WITHOUT_CAPSICUM
@@ -1,2 +1 @@
-.\" $FreeBSD$
-Do not build Capsicum support into system programs.
+This option has no effect.
diff --git a/tools/build/options/WITHOUT_CAROOT b/tools/build/options/WITHOUT_CAROOT
index 07394ae5a7a5..1009c042dc75 100644
--- a/tools/build/options/WITHOUT_CAROOT
+++ b/tools/build/options/WITHOUT_CAROOT
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not add the trusted certificates from the Mozilla NSS bundle to
base.
diff --git a/tools/build/options/WITHOUT_CASPER b/tools/build/options/WITHOUT_CASPER
index 32bfa960d7d5..19d821f6c981 100644
--- a/tools/build/options/WITHOUT_CASPER
+++ b/tools/build/options/WITHOUT_CASPER
@@ -1,2 +1 @@
-.\" $FreeBSD$
-Do not build Casper program and related libraries.
+This option has no effect.
diff --git a/tools/build/options/WITHOUT_CCD b/tools/build/options/WITHOUT_CCD
index c6c47e61c1e6..224735ce9f06 100644
--- a/tools/build/options/WITHOUT_CCD
+++ b/tools/build/options/WITHOUT_CCD
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr geom_ccd 4
and related utilities.
diff --git a/tools/build/options/WITHOUT_CDDL b/tools/build/options/WITHOUT_CDDL
index a2210308ab67..b7e4bd620540 100644
--- a/tools/build/options/WITHOUT_CDDL
+++ b/tools/build/options/WITHOUT_CDDL
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build code licensed under Sun's CDDL.
diff --git a/tools/build/options/WITHOUT_CLANG b/tools/build/options/WITHOUT_CLANG
index 27bfc4da5a53..d830934022be 100644
--- a/tools/build/options/WITHOUT_CLANG
+++ b/tools/build/options/WITHOUT_CLANG
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build the Clang C/C++ compiler during the regular phase of the build.
diff --git a/tools/build/options/WITHOUT_CLANG_BOOTSTRAP b/tools/build/options/WITHOUT_CLANG_BOOTSTRAP
index ca65c02133cc..023d4e704899 100644
--- a/tools/build/options/WITHOUT_CLANG_BOOTSTRAP
+++ b/tools/build/options/WITHOUT_CLANG_BOOTSTRAP
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build the Clang C/C++ compiler during the bootstrap phase of
the build.
To be able to build the system, either gcc or clang bootstrap must be
diff --git a/tools/build/options/WITHOUT_CLANG_FULL b/tools/build/options/WITHOUT_CLANG_FULL
index d519983e9c91..56e3feb36665 100644
--- a/tools/build/options/WITHOUT_CLANG_FULL
+++ b/tools/build/options/WITHOUT_CLANG_FULL
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Avoid building the ARCMigrate, Rewriter and StaticAnalyzer components of
the Clang C/C++ compiler.
diff --git a/tools/build/options/WITHOUT_CLANG_IS_CC b/tools/build/options/WITHOUT_CLANG_IS_CC
deleted file mode 100644
index 85d80ad476a5..000000000000
--- a/tools/build/options/WITHOUT_CLANG_IS_CC
+++ /dev/null
@@ -1,6 +0,0 @@
-.\" $FreeBSD$
-Do not install links to the Clang C/C++ compiler as
-.Pa /usr/bin/cc ,
-.Pa /usr/bin/c++
-and
-.Pa /usr/bin/cpp .
diff --git a/tools/build/options/WITHOUT_CLEAN b/tools/build/options/WITHOUT_CLEAN
index b55caa4b4bfd..f064cd82af8f 100644
--- a/tools/build/options/WITHOUT_CLEAN
+++ b/tools/build/options/WITHOUT_CLEAN
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not clean before building world and/or kernel.
diff --git a/tools/build/options/WITHOUT_CPP b/tools/build/options/WITHOUT_CPP
index 8b9d064d2889..9eeb4b3211c4 100644
--- a/tools/build/options/WITHOUT_CPP
+++ b/tools/build/options/WITHOUT_CPP
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build
.Xr cpp 1 .
diff --git a/tools/build/options/WITHOUT_CROSS_COMPILER b/tools/build/options/WITHOUT_CROSS_COMPILER
index 6c690d6cf96b..6a382263f292 100644
--- a/tools/build/options/WITHOUT_CROSS_COMPILER
+++ b/tools/build/options/WITHOUT_CROSS_COMPILER
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build any cross compiler in the cross-tools stage of buildworld.
When compiling a different version of
.Fx
diff --git a/tools/build/options/WITHOUT_CRYPT b/tools/build/options/WITHOUT_CRYPT
index 9b0e2a5dfe0e..decc6fdc25e5 100644
--- a/tools/build/options/WITHOUT_CRYPT
+++ b/tools/build/options/WITHOUT_CRYPT
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build any crypto code.
diff --git a/tools/build/options/WITHOUT_CUSE b/tools/build/options/WITHOUT_CUSE
index 2e498797fe52..5ab9a4dda2cf 100644
--- a/tools/build/options/WITHOUT_CUSE
+++ b/tools/build/options/WITHOUT_CUSE
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build CUSE-related programs and libraries.
diff --git a/tools/build/options/WITHOUT_CXGBETOOL b/tools/build/options/WITHOUT_CXGBETOOL
index 75142882d5b3..9b434f5f5132 100644
--- a/tools/build/options/WITHOUT_CXGBETOOL
+++ b/tools/build/options/WITHOUT_CXGBETOOL
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build
.Xr cxgbetool 8
diff --git a/tools/build/options/WITHOUT_CXX b/tools/build/options/WITHOUT_CXX
deleted file mode 100644
index 6847ba0fc83f..000000000000
--- a/tools/build/options/WITHOUT_CXX
+++ /dev/null
@@ -1,8 +0,0 @@
-.\" $FreeBSD$
-Do not build
-.Xr c++ 1
-and related libraries.
-It will also prevent building of
-.Xr gperf 1
-and
-.Xr devd 8 .
diff --git a/tools/build/options/WITHOUT_DEBUG_FILES b/tools/build/options/WITHOUT_DEBUG_FILES
index f9169afccf2a..710e629528eb 100644
--- a/tools/build/options/WITHOUT_DEBUG_FILES
+++ b/tools/build/options/WITHOUT_DEBUG_FILES
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Avoid building or installing standalone debug files for each
executable binary and shared library.
diff --git a/tools/build/options/WITHOUT_DIALOG b/tools/build/options/WITHOUT_DIALOG
index 792b2bede32a..92b744b10d2a 100644
--- a/tools/build/options/WITHOUT_DIALOG
+++ b/tools/build/options/WITHOUT_DIALOG
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr dialog 1 ,
.Xr dialog 3 ,
diff --git a/tools/build/options/WITHOUT_DICT b/tools/build/options/WITHOUT_DICT
index 86a8523122e8..ea5c8a973348 100644
--- a/tools/build/options/WITHOUT_DICT
+++ b/tools/build/options/WITHOUT_DICT
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build the Webster dictionary files.
diff --git a/tools/build/options/WITHOUT_DMAGENT b/tools/build/options/WITHOUT_DMAGENT
index 3195ce07ecc3..223dd0340f4c 100644
--- a/tools/build/options/WITHOUT_DMAGENT
+++ b/tools/build/options/WITHOUT_DMAGENT
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build dma Mail Transport Agent.
diff --git a/tools/build/options/WITHOUT_DOCCOMPRESS b/tools/build/options/WITHOUT_DOCCOMPRESS
index c1db65c598c2..71a9ead56119 100644
--- a/tools/build/options/WITHOUT_DOCCOMPRESS
+++ b/tools/build/options/WITHOUT_DOCCOMPRESS
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not install compressed system documentation.
Only the uncompressed version will be installed.
diff --git a/tools/build/options/WITHOUT_DTRACE b/tools/build/options/WITHOUT_DTRACE
new file mode 100644
index 000000000000..2109b294ea66
--- /dev/null
+++ b/tools/build/options/WITHOUT_DTRACE
@@ -0,0 +1 @@
+Do not build DTrace framework kernel modules, libraries, and user commands.
diff --git a/tools/build/options/WITHOUT_DYNAMICROOT b/tools/build/options/WITHOUT_DYNAMICROOT
index b10f0f2bb269..52d4f522ba94 100644
--- a/tools/build/options/WITHOUT_DYNAMICROOT
+++ b/tools/build/options/WITHOUT_DYNAMICROOT
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Set this if you do not want to link
.Pa /bin
and
diff --git a/tools/build/options/WITHOUT_EE b/tools/build/options/WITHOUT_EE
index 4295cd6ddbc2..b3f78e92a396 100644
--- a/tools/build/options/WITHOUT_EE
+++ b/tools/build/options/WITHOUT_EE
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build and install
.Xr edit 1 ,
.Xr ee 1 ,
diff --git a/tools/build/options/WITHOUT_EFI b/tools/build/options/WITHOUT_EFI
index 3d080eb6448f..45c8319a6fff 100644
--- a/tools/build/options/WITHOUT_EFI
+++ b/tools/build/options/WITHOUT_EFI
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Set not to build
.Xr efivar 3
and
diff --git a/tools/build/options/WITHOUT_ELFTOOLCHAIN_BOOTSTRAP b/tools/build/options/WITHOUT_ELFTOOLCHAIN_BOOTSTRAP
index 45c92aea4b90..e717c0a3b7cf 100644
--- a/tools/build/options/WITHOUT_ELFTOOLCHAIN_BOOTSTRAP
+++ b/tools/build/options/WITHOUT_ELFTOOLCHAIN_BOOTSTRAP
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build ELF Tool Chain tools
(addr2line, nm, size, strings and strip)
as part of the bootstrap process.
diff --git a/tools/build/options/WITHOUT_EXAMPLES b/tools/build/options/WITHOUT_EXAMPLES
index 88fb243eafac..d4d004a70854 100644
--- a/tools/build/options/WITHOUT_EXAMPLES
+++ b/tools/build/options/WITHOUT_EXAMPLES
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Avoid installing examples to
.Pa /usr/share/examples/ .
diff --git a/tools/build/options/WITHOUT_FDT b/tools/build/options/WITHOUT_FDT
index bf22c5012413..2136cb39b816 100644
--- a/tools/build/options/WITHOUT_FDT
+++ b/tools/build/options/WITHOUT_FDT
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build Flattened Device Tree support as part of the base system.
This includes the device tree compiler (dtc) and libfdt support library.
diff --git a/tools/build/options/WITHOUT_FILE b/tools/build/options/WITHOUT_FILE
index 67859bd6ded1..f97b844304f9 100644
--- a/tools/build/options/WITHOUT_FILE
+++ b/tools/build/options/WITHOUT_FILE
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr file 1
and related programs.
diff --git a/tools/build/options/WITHOUT_FINGER b/tools/build/options/WITHOUT_FINGER
index d42161245478..23de0e346ae8 100644
--- a/tools/build/options/WITHOUT_FINGER
+++ b/tools/build/options/WITHOUT_FINGER
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build or install
.Xr finger 1
and
diff --git a/tools/build/options/WITHOUT_FLOPPY b/tools/build/options/WITHOUT_FLOPPY
index 324081f993f1..1988d598f2f2 100644
--- a/tools/build/options/WITHOUT_FLOPPY
+++ b/tools/build/options/WITHOUT_FLOPPY
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build or install programs
for operating floppy disk driver.
diff --git a/tools/build/options/WITHOUT_FORMAT_EXTENSIONS b/tools/build/options/WITHOUT_FORMAT_EXTENSIONS
index 05ae981f7b9c..f3c127fb34d7 100644
--- a/tools/build/options/WITHOUT_FORMAT_EXTENSIONS
+++ b/tools/build/options/WITHOUT_FORMAT_EXTENSIONS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not enable
.Fl fformat-extensions
when compiling the kernel.
diff --git a/tools/build/options/WITHOUT_FORTH b/tools/build/options/WITHOUT_FORTH
index dd3de7d18e91..8d35969a0377 100644
--- a/tools/build/options/WITHOUT_FORTH
+++ b/tools/build/options/WITHOUT_FORTH
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build bootloaders without Forth support.
diff --git a/tools/build/options/WITHOUT_FP_LIBC b/tools/build/options/WITHOUT_FP_LIBC
index a2975088c6cf..c92a9f82fcaf 100644
--- a/tools/build/options/WITHOUT_FP_LIBC
+++ b/tools/build/options/WITHOUT_FP_LIBC
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build
.Nm libc
without floating-point support.
diff --git a/tools/build/options/WITHOUT_FREEBSD_UPDATE b/tools/build/options/WITHOUT_FREEBSD_UPDATE
index 61638b7f35ac..6565d1fdfd7f 100644
--- a/tools/build/options/WITHOUT_FREEBSD_UPDATE
+++ b/tools/build/options/WITHOUT_FREEBSD_UPDATE
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build
.Xr freebsd-update 8 .
diff --git a/tools/build/options/WITHOUT_FTP b/tools/build/options/WITHOUT_FTP
index e037640b59f0..2e55ccc46ef6 100644
--- a/tools/build/options/WITHOUT_FTP
+++ b/tools/build/options/WITHOUT_FTP
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build or install
.Xr ftp 1
and
diff --git a/tools/build/options/WITHOUT_GAMES b/tools/build/options/WITHOUT_GAMES
index 7102c377e07c..18db1f66d7ba 100644
--- a/tools/build/options/WITHOUT_GAMES
+++ b/tools/build/options/WITHOUT_GAMES
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build games.
diff --git a/tools/build/options/WITHOUT_GCC b/tools/build/options/WITHOUT_GCC
index 927765bfdc69..b380b606ddaf 100644
--- a/tools/build/options/WITHOUT_GCC
+++ b/tools/build/options/WITHOUT_GCC
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build and install gcc and g++ as part of the normal build process.
diff --git a/tools/build/options/WITHOUT_GCC_BOOTSTRAP b/tools/build/options/WITHOUT_GCC_BOOTSTRAP
index 88820cf67e05..6d4dccde0850 100644
--- a/tools/build/options/WITHOUT_GCC_BOOTSTRAP
+++ b/tools/build/options/WITHOUT_GCC_BOOTSTRAP
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build gcc and g++ as part of the bootstrap process.
diff --git a/tools/build/options/WITHOUT_GCOV b/tools/build/options/WITHOUT_GCOV
index 0857788db2ff..bad9fdfb0aa5 100644
--- a/tools/build/options/WITHOUT_GCOV
+++ b/tools/build/options/WITHOUT_GCOV
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build the
.Xr gcov 1
tool.
diff --git a/tools/build/options/WITHOUT_GDB b/tools/build/options/WITHOUT_GDB
index 1d99903fb3fc..3dd68198af96 100644
--- a/tools/build/options/WITHOUT_GDB
+++ b/tools/build/options/WITHOUT_GDB
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build
.Xr gdb 1 .
diff --git a/tools/build/options/WITHOUT_GH_BC b/tools/build/options/WITHOUT_GH_BC
index a1f2c070831e..2618257ec71d 100644
--- a/tools/build/options/WITHOUT_GH_BC
+++ b/tools/build/options/WITHOUT_GH_BC
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Install the traditional FreeBSD
.Xr bc 1
and
diff --git a/tools/build/options/WITHOUT_GNU_DIFF b/tools/build/options/WITHOUT_GNU_DIFF
index a929b9686da9..889e878668f6 100644
--- a/tools/build/options/WITHOUT_GNU_DIFF
+++ b/tools/build/options/WITHOUT_GNU_DIFF
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build GNU
.Xr diff3 1 .
diff --git a/tools/build/options/WITHOUT_GOOGLETEST b/tools/build/options/WITHOUT_GOOGLETEST
index fca54e882561..58bcdb93a3e4 100644
--- a/tools/build/options/WITHOUT_GOOGLETEST
+++ b/tools/build/options/WITHOUT_GOOGLETEST
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Neither build nor install
.Lb libgmock ,
.Lb libgtest ,
diff --git a/tools/build/options/WITHOUT_GPIO b/tools/build/options/WITHOUT_GPIO
index 70b3673bb5db..aa35adf2e739 100644
--- a/tools/build/options/WITHOUT_GPIO
+++ b/tools/build/options/WITHOUT_GPIO
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr gpioctl 8
as part of the base system.
diff --git a/tools/build/options/WITHOUT_GSSAPI b/tools/build/options/WITHOUT_GSSAPI
index 1f325a64d249..3b208b6edecd 100644
--- a/tools/build/options/WITHOUT_GSSAPI
+++ b/tools/build/options/WITHOUT_GSSAPI
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build libgssapi.
diff --git a/tools/build/options/WITHOUT_HAST b/tools/build/options/WITHOUT_HAST
index 975f56331ab1..50f59f0df129 100644
--- a/tools/build/options/WITHOUT_HAST
+++ b/tools/build/options/WITHOUT_HAST
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr hastd 8
and related utilities.
diff --git a/tools/build/options/WITHOUT_HTML b/tools/build/options/WITHOUT_HTML
index 04c1174f136f..9cb59261c8ab 100644
--- a/tools/build/options/WITHOUT_HTML
+++ b/tools/build/options/WITHOUT_HTML
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build HTML docs.
diff --git a/tools/build/options/WITHOUT_HYPERV b/tools/build/options/WITHOUT_HYPERV
index c717a4e943f8..bac59fa56466 100644
--- a/tools/build/options/WITHOUT_HYPERV
+++ b/tools/build/options/WITHOUT_HYPERV
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build or install HyperV utilities.
diff --git a/tools/build/options/WITHOUT_ICONV b/tools/build/options/WITHOUT_ICONV
index 3c887a415153..28be34d99987 100644
--- a/tools/build/options/WITHOUT_ICONV
+++ b/tools/build/options/WITHOUT_ICONV
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build iconv as part of libc.
diff --git a/tools/build/options/WITHOUT_INCLUDES b/tools/build/options/WITHOUT_INCLUDES
index da210a4f76f3..41545361ff05 100644
--- a/tools/build/options/WITHOUT_INCLUDES
+++ b/tools/build/options/WITHOUT_INCLUDES
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not install header files.
This option used to be spelled
.Va NO_INCS .
diff --git a/tools/build/options/WITHOUT_INET b/tools/build/options/WITHOUT_INET
index 79e493258017..b9f5781d1dee 100644
--- a/tools/build/options/WITHOUT_INET
+++ b/tools/build/options/WITHOUT_INET
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build programs and libraries related to IPv4 networking.
diff --git a/tools/build/options/WITHOUT_INET6 b/tools/build/options/WITHOUT_INET6
index a28a85691090..f41df46fe007 100644
--- a/tools/build/options/WITHOUT_INET6
+++ b/tools/build/options/WITHOUT_INET6
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build
programs and libraries related to IPv6 networking.
diff --git a/tools/build/options/WITHOUT_INET6_SUPPORT b/tools/build/options/WITHOUT_INET6_SUPPORT
index e41e3d5baf1c..537ae5b59ddf 100644
--- a/tools/build/options/WITHOUT_INET6_SUPPORT
+++ b/tools/build/options/WITHOUT_INET6_SUPPORT
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build libraries, programs, and kernel modules without IPv6 support.
diff --git a/tools/build/options/WITHOUT_INETD b/tools/build/options/WITHOUT_INETD
index 4d47f6e17c7a..94341c140b33 100644
--- a/tools/build/options/WITHOUT_INETD
+++ b/tools/build/options/WITHOUT_INETD
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build
.Xr inetd 8 .
diff --git a/tools/build/options/WITHOUT_INET_SUPPORT b/tools/build/options/WITHOUT_INET_SUPPORT
index e5c0ded7d56b..167c3defd5d8 100644
--- a/tools/build/options/WITHOUT_INET_SUPPORT
+++ b/tools/build/options/WITHOUT_INET_SUPPORT
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build libraries, programs, and kernel modules without IPv4 support.
diff --git a/tools/build/options/WITHOUT_INFO b/tools/build/options/WITHOUT_INFO
index 6900ca9cb315..d91aa1382580 100644
--- a/tools/build/options/WITHOUT_INFO
+++ b/tools/build/options/WITHOUT_INFO
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not make or install
.Xr info 5
files.
diff --git a/tools/build/options/WITHOUT_INSTALLLIB b/tools/build/options/WITHOUT_INSTALLLIB
index f499e9ddd837..dae81fb39868 100644
--- a/tools/build/options/WITHOUT_INSTALLLIB
+++ b/tools/build/options/WITHOUT_INSTALLLIB
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Set this to not install optional libraries.
For example, when creating a
.Xr nanobsd 8
diff --git a/tools/build/options/WITHOUT_IPFILTER b/tools/build/options/WITHOUT_IPFILTER
index 4bdb201944fc..f1940348f6aa 100644
--- a/tools/build/options/WITHOUT_IPFILTER
+++ b/tools/build/options/WITHOUT_IPFILTER
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build IP Filter package.
diff --git a/tools/build/options/WITHOUT_IPFW b/tools/build/options/WITHOUT_IPFW
index 591973e57e12..45be98765c00 100644
--- a/tools/build/options/WITHOUT_IPFW
+++ b/tools/build/options/WITHOUT_IPFW
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build IPFW tools.
diff --git a/tools/build/options/WITHOUT_IPSEC_SUPPORT b/tools/build/options/WITHOUT_IPSEC_SUPPORT
index 03ab11bda522..09f6152528c4 100644
--- a/tools/build/options/WITHOUT_IPSEC_SUPPORT
+++ b/tools/build/options/WITHOUT_IPSEC_SUPPORT
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build the kernel with
.Xr ipsec 4
support.
diff --git a/tools/build/options/WITHOUT_ISCSI b/tools/build/options/WITHOUT_ISCSI
index 6d6e76b53891..6c3264098a9a 100644
--- a/tools/build/options/WITHOUT_ISCSI
+++ b/tools/build/options/WITHOUT_ISCSI
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr iscsid 8
and related utilities.
diff --git a/tools/build/options/WITHOUT_JAIL b/tools/build/options/WITHOUT_JAIL
index d47f0e944532..8e19446635ac 100644
--- a/tools/build/options/WITHOUT_JAIL
+++ b/tools/build/options/WITHOUT_JAIL
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build tools for the support of jails; e.g.,
.Xr jail 8 .
diff --git a/tools/build/options/WITHOUT_KDUMP b/tools/build/options/WITHOUT_KDUMP
index 763a89fd28f2..939dc07d7505 100644
--- a/tools/build/options/WITHOUT_KDUMP
+++ b/tools/build/options/WITHOUT_KDUMP
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr kdump 1
and
diff --git a/tools/build/options/WITHOUT_KERBEROS b/tools/build/options/WITHOUT_KERBEROS
index fab303b81aac..98e1ffe3721d 100644
--- a/tools/build/options/WITHOUT_KERBEROS
+++ b/tools/build/options/WITHOUT_KERBEROS
@@ -1,2 +1 @@
-.\" $FreeBSD$
Set this to not build Kerberos 5 (KTH Heimdal).
diff --git a/tools/build/options/WITHOUT_KERBEROS_SUPPORT b/tools/build/options/WITHOUT_KERBEROS_SUPPORT
index 1a50b28678bc..36193f2c90c9 100644
--- a/tools/build/options/WITHOUT_KERBEROS_SUPPORT
+++ b/tools/build/options/WITHOUT_KERBEROS_SUPPORT
@@ -1,7 +1,5 @@
-.\" $FreeBSD$
Build some programs without Kerberos support, like
.Xr ssh 1 ,
.Xr telnet 1 ,
-.Xr sshd 8 ,
and
-.Xr telnetd 8 .
+.Xr sshd 8 .
diff --git a/tools/build/options/WITHOUT_KERNEL_RETPOLINE b/tools/build/options/WITHOUT_KERNEL_RETPOLINE
index 83dd6edfbeac..71b739616313 100644
--- a/tools/build/options/WITHOUT_KERNEL_RETPOLINE
+++ b/tools/build/options/WITHOUT_KERNEL_RETPOLINE
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Disable the "retpoline" mitigation for CVE-2017-5715 in the kernel
build.
diff --git a/tools/build/options/WITHOUT_KERNEL_SYMBOLS b/tools/build/options/WITHOUT_KERNEL_SYMBOLS
index 33fa2c4f1c97..2cb77260b86a 100644
--- a/tools/build/options/WITHOUT_KERNEL_SYMBOLS
+++ b/tools/build/options/WITHOUT_KERNEL_SYMBOLS
@@ -1,2 +1,2 @@
-.\" $FreeBSD$
-Do not install kernel debug symbol files.
+Do not install standalone kernel debug symbol files.
+This option has no effect at build time.
diff --git a/tools/build/options/WITHOUT_KVM b/tools/build/options/WITHOUT_KVM
index 1700731ec421..a886999b4db1 100644
--- a/tools/build/options/WITHOUT_KVM
+++ b/tools/build/options/WITHOUT_KVM
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build the
.Nm libkvm
library as a part of the base system.
diff --git a/tools/build/options/WITHOUT_KVM_SUPPORT b/tools/build/options/WITHOUT_KVM_SUPPORT
index b2da6c5a3e0a..319d3ee09b39 100644
--- a/tools/build/options/WITHOUT_KVM_SUPPORT
+++ b/tools/build/options/WITHOUT_KVM_SUPPORT
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build some programs without optional
.Nm libkvm
support.
diff --git a/tools/build/options/WITHOUT_LDNS b/tools/build/options/WITHOUT_LDNS
index 446d3e82e91d..ec3846faf6d8 100644
--- a/tools/build/options/WITHOUT_LDNS
+++ b/tools/build/options/WITHOUT_LDNS
@@ -1,2 +1 @@
-.\" $FreeBSD$
Setting this variable will prevent the LDNS library from being built.
diff --git a/tools/build/options/WITHOUT_LDNS_UTILS b/tools/build/options/WITHOUT_LDNS_UTILS
index f061f01db4ae..1e06528fa0f8 100644
--- a/tools/build/options/WITHOUT_LDNS_UTILS
+++ b/tools/build/options/WITHOUT_LDNS_UTILS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Setting this variable will prevent building the LDNS utilities
.Xr drill 1
and
diff --git a/tools/build/options/WITHOUT_LEGACY_CONSOLE b/tools/build/options/WITHOUT_LEGACY_CONSOLE
index 69f5eb5b8f40..32a853ce08d8 100644
--- a/tools/build/options/WITHOUT_LEGACY_CONSOLE
+++ b/tools/build/options/WITHOUT_LEGACY_CONSOLE
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build programs that support a legacy PC console; e.g.,
.Xr kbdcontrol 1
and
diff --git a/tools/build/options/WITHOUT_LIB32 b/tools/build/options/WITHOUT_LIB32
index 62a1046c976f..3d9a4133f461 100644
--- a/tools/build/options/WITHOUT_LIB32
+++ b/tools/build/options/WITHOUT_LIB32
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
On 64-bit platforms, do not build 32-bit library set and a
.Nm ld-elf32.so.1
runtime linker.
diff --git a/tools/build/options/WITHOUT_LLD b/tools/build/options/WITHOUT_LLD
index 519eca7572c2..bd070495d3df 100644
--- a/tools/build/options/WITHOUT_LLD
+++ b/tools/build/options/WITHOUT_LLD
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build LLVM's lld linker.
diff --git a/tools/build/options/WITHOUT_LLDB b/tools/build/options/WITHOUT_LLDB
index db9b98aaf93a..06c9bb05ae7d 100644
--- a/tools/build/options/WITHOUT_LLDB
+++ b/tools/build/options/WITHOUT_LLDB
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build the LLDB debugger.
diff --git a/tools/build/options/WITHOUT_LLD_BOOTSTRAP b/tools/build/options/WITHOUT_LLD_BOOTSTRAP
index 0995ef549de4..7bf808709237 100644
--- a/tools/build/options/WITHOUT_LLD_BOOTSTRAP
+++ b/tools/build/options/WITHOUT_LLD_BOOTSTRAP
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build the LLD linker during the bootstrap phase of
the build.
To be able to build the system an alternate linker must be provided via XLD.
diff --git a/tools/build/options/WITHOUT_LLD_IS_LD b/tools/build/options/WITHOUT_LLD_IS_LD
deleted file mode 100644
index 8ca789dfdc45..000000000000
--- a/tools/build/options/WITHOUT_LLD_IS_LD
+++ /dev/null
@@ -1,7 +0,0 @@
-.\" $FreeBSD$
-Do not install a
-.Pa /usr/bin/ld symlink
-to
-.Pa ld.lld .
-The system will not have a usable tool chain unless a linker is provided
-some other way.
diff --git a/tools/build/options/WITHOUT_LLVM_ASSERTIONS b/tools/build/options/WITHOUT_LLVM_ASSERTIONS
index b4f07b0bb1f2..12d54b8ba3a4 100644
--- a/tools/build/options/WITHOUT_LLVM_ASSERTIONS
+++ b/tools/build/options/WITHOUT_LLVM_ASSERTIONS
@@ -1,2 +1 @@
-.\" $FreeBSD$
Disable debugging assertions in LLVM.
diff --git a/tools/build/options/WITHOUT_LLVM_COV b/tools/build/options/WITHOUT_LLVM_COV
index 84ca9e8a5a0d..d95e76ddf659 100644
--- a/tools/build/options/WITHOUT_LLVM_COV
+++ b/tools/build/options/WITHOUT_LLVM_COV
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build the
.Xr llvm-cov 1
tool.
diff --git a/tools/build/options/WITHOUT_LLVM_CXXFILT b/tools/build/options/WITHOUT_LLVM_CXXFILT
index e729f6c4c8e0..e7d263f01f2a 100644
--- a/tools/build/options/WITHOUT_LLVM_CXXFILT
+++ b/tools/build/options/WITHOUT_LLVM_CXXFILT
@@ -1,2 +1 @@
-.\" $FreeBSD$
Install ELF Tool Chain's cxxfilt as c++filt, instead of LLVM's llvm-cxxfilt.
diff --git a/tools/build/options/WITHOUT_LLVM_TARGET_AARCH64 b/tools/build/options/WITHOUT_LLVM_TARGET_AARCH64
index 4306b30dd37b..7133fbaeb8ab 100644
--- a/tools/build/options/WITHOUT_LLVM_TARGET_AARCH64
+++ b/tools/build/options/WITHOUT_LLVM_TARGET_AARCH64
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build LLVM target support for AArch64.
The
.Va LLVM_TARGET_ALL
diff --git a/tools/build/options/WITHOUT_LLVM_TARGET_ALL b/tools/build/options/WITHOUT_LLVM_TARGET_ALL
index 0b399aac209e..d6cd1bfbddbe 100644
--- a/tools/build/options/WITHOUT_LLVM_TARGET_ALL
+++ b/tools/build/options/WITHOUT_LLVM_TARGET_ALL
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Only build the required LLVM target support.
This option is preferred to specific target support options.
diff --git a/tools/build/options/WITHOUT_LLVM_TARGET_ARM b/tools/build/options/WITHOUT_LLVM_TARGET_ARM
index f89d26ae3940..cb6fa2226e01 100644
--- a/tools/build/options/WITHOUT_LLVM_TARGET_ARM
+++ b/tools/build/options/WITHOUT_LLVM_TARGET_ARM
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build LLVM target support for ARM.
The
.Va LLVM_TARGET_ALL
diff --git a/tools/build/options/WITHOUT_LLVM_TARGET_MIPS b/tools/build/options/WITHOUT_LLVM_TARGET_MIPS
index baa15094f01c..2b8218b2c8c4 100644
--- a/tools/build/options/WITHOUT_LLVM_TARGET_MIPS
+++ b/tools/build/options/WITHOUT_LLVM_TARGET_MIPS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build LLVM target support for MIPS.
The
.Va LLVM_TARGET_ALL
diff --git a/tools/build/options/WITHOUT_LLVM_TARGET_POWERPC b/tools/build/options/WITHOUT_LLVM_TARGET_POWERPC
index e44801c94ba2..c0c98a6e07d5 100644
--- a/tools/build/options/WITHOUT_LLVM_TARGET_POWERPC
+++ b/tools/build/options/WITHOUT_LLVM_TARGET_POWERPC
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build LLVM target support for PowerPC.
The
.Va LLVM_TARGET_ALL
diff --git a/tools/build/options/WITHOUT_LLVM_TARGET_RISCV b/tools/build/options/WITHOUT_LLVM_TARGET_RISCV
index 408a87195016..7d724c94a663 100644
--- a/tools/build/options/WITHOUT_LLVM_TARGET_RISCV
+++ b/tools/build/options/WITHOUT_LLVM_TARGET_RISCV
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build LLVM target support for RISC-V.
The
.Va LLVM_TARGET_ALL
diff --git a/tools/build/options/WITHOUT_LLVM_TARGET_SPARC b/tools/build/options/WITHOUT_LLVM_TARGET_SPARC
index dda7019210d1..4da802ad0312 100644
--- a/tools/build/options/WITHOUT_LLVM_TARGET_SPARC
+++ b/tools/build/options/WITHOUT_LLVM_TARGET_SPARC
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build LLVM target support for SPARC.
The
.Va LLVM_TARGET_ALL
diff --git a/tools/build/options/WITHOUT_LLVM_TARGET_X86 b/tools/build/options/WITHOUT_LLVM_TARGET_X86
index 447b28736a45..4d4deae50dc8 100644
--- a/tools/build/options/WITHOUT_LLVM_TARGET_X86
+++ b/tools/build/options/WITHOUT_LLVM_TARGET_X86
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build LLVM target support for X86.
The
.Va LLVM_TARGET_ALL
diff --git a/tools/build/options/WITHOUT_LOADER_GELI b/tools/build/options/WITHOUT_LOADER_GELI
index 114bea6bfe0d..1c95120afe56 100644
--- a/tools/build/options/WITHOUT_LOADER_GELI
+++ b/tools/build/options/WITHOUT_LOADER_GELI
@@ -1,2 +1 @@
-.\" $FreeBSD$
Disable inclusion of GELI crypto support in the boot chain binaries.
diff --git a/tools/build/options/WITHOUT_LOADER_KBOOT b/tools/build/options/WITHOUT_LOADER_KBOOT
new file mode 100644
index 000000000000..075c5ffe86dc
--- /dev/null
+++ b/tools/build/options/WITHOUT_LOADER_KBOOT
@@ -0,0 +1 @@
+Do not build kboot, a linuxboot environment loader
diff --git a/tools/build/options/WITHOUT_LOADER_LUA b/tools/build/options/WITHOUT_LOADER_LUA
index 217cb24d0761..4514025eb209 100644
--- a/tools/build/options/WITHOUT_LOADER_LUA
+++ b/tools/build/options/WITHOUT_LOADER_LUA
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build LUA bindings for the boot loader.
diff --git a/tools/build/options/WITHOUT_LOADER_OFW b/tools/build/options/WITHOUT_LOADER_OFW
index d28ddcb73e81..fa2f5e58998a 100644
--- a/tools/build/options/WITHOUT_LOADER_OFW
+++ b/tools/build/options/WITHOUT_LOADER_OFW
@@ -1,2 +1 @@
-.\" $FreeBSD$
Disable building of openfirmware bootloader components.
diff --git a/tools/build/options/WITHOUT_LOADER_UBOOT b/tools/build/options/WITHOUT_LOADER_UBOOT
index 7f6a3bb49962..d2920b9fbdd3 100644
--- a/tools/build/options/WITHOUT_LOADER_UBOOT
+++ b/tools/build/options/WITHOUT_LOADER_UBOOT
@@ -1,2 +1 @@
-.\" $FreeBSD$
Disable building of ubldr.
diff --git a/tools/build/options/WITHOUT_LOADER_ZFS b/tools/build/options/WITHOUT_LOADER_ZFS
index 78d1f1ae6e75..01e9f7b55f4a 100644
--- a/tools/build/options/WITHOUT_LOADER_ZFS
+++ b/tools/build/options/WITHOUT_LOADER_ZFS
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build ZFS file system boot loader support.
diff --git a/tools/build/options/WITHOUT_LOCALES b/tools/build/options/WITHOUT_LOCALES
index aa035b783d96..74750ad8d0d0 100644
--- a/tools/build/options/WITHOUT_LOCALES
+++ b/tools/build/options/WITHOUT_LOCALES
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build localization files; see
.Xr locale 1 .
diff --git a/tools/build/options/WITHOUT_LOCATE b/tools/build/options/WITHOUT_LOCATE
index 016666f24033..be292d83a9a5 100644
--- a/tools/build/options/WITHOUT_LOCATE
+++ b/tools/build/options/WITHOUT_LOCATE
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr locate 1
and related programs.
diff --git a/tools/build/options/WITHOUT_LPR b/tools/build/options/WITHOUT_LPR
index 8bf1a265b176..24145dbe34a1 100644
--- a/tools/build/options/WITHOUT_LPR
+++ b/tools/build/options/WITHOUT_LPR
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr lpr 1
and related programs.
diff --git a/tools/build/options/WITHOUT_LS_COLORS b/tools/build/options/WITHOUT_LS_COLORS
index 479f55f2235b..0d4a910ac4ef 100644
--- a/tools/build/options/WITHOUT_LS_COLORS
+++ b/tools/build/options/WITHOUT_LS_COLORS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build
.Xr ls 1
without support for colors to distinguish file types.
diff --git a/tools/build/options/WITHOUT_MACHDEP_OPTIMIZATIONS b/tools/build/options/WITHOUT_MACHDEP_OPTIMIZATIONS
new file mode 100644
index 000000000000..1c596c998504
--- /dev/null
+++ b/tools/build/options/WITHOUT_MACHDEP_OPTIMIZATIONS
@@ -0,0 +1 @@
+Prefer machine-independent non-assembler code in libc and libm.
diff --git a/tools/build/options/WITHOUT_MAIL b/tools/build/options/WITHOUT_MAIL
index c10acb64f792..774a45ba8113 100644
--- a/tools/build/options/WITHOUT_MAIL
+++ b/tools/build/options/WITHOUT_MAIL
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build any mail support (MUA or MTA).
diff --git a/tools/build/options/WITHOUT_MAILWRAPPER b/tools/build/options/WITHOUT_MAILWRAPPER
index ce8fa0e395ed..29bd1fdf0693 100644
--- a/tools/build/options/WITHOUT_MAILWRAPPER
+++ b/tools/build/options/WITHOUT_MAILWRAPPER
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build the
.Xr mailwrapper 8
MTA selector.
diff --git a/tools/build/options/WITHOUT_MAKE b/tools/build/options/WITHOUT_MAKE
index 3de8ad73d28c..263f4e5b756c 100644
--- a/tools/build/options/WITHOUT_MAKE
+++ b/tools/build/options/WITHOUT_MAKE
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not install
.Xr make 1
and related support files.
diff --git a/tools/build/options/WITHOUT_MAKE_CHECK_USE_SANDBOX b/tools/build/options/WITHOUT_MAKE_CHECK_USE_SANDBOX
index 0d9d06a69931..477f08fe8b2f 100644
--- a/tools/build/options/WITHOUT_MAKE_CHECK_USE_SANDBOX
+++ b/tools/build/options/WITHOUT_MAKE_CHECK_USE_SANDBOX
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not execute
.Dq Li "make check"
in limited sandbox mode.
diff --git a/tools/build/options/WITHOUT_MALLOC_PRODUCTION b/tools/build/options/WITHOUT_MALLOC_PRODUCTION
index 25ea84b59c3c..57b8ab574f93 100644
--- a/tools/build/options/WITHOUT_MALLOC_PRODUCTION
+++ b/tools/build/options/WITHOUT_MALLOC_PRODUCTION
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Enable assertions and statistics gathering in
.Xr malloc 3 .
It also defaults the A and J runtime options to on.
diff --git a/tools/build/options/WITHOUT_MAN b/tools/build/options/WITHOUT_MAN
index 1379508c2627..85548df0e28a 100644
--- a/tools/build/options/WITHOUT_MAN
+++ b/tools/build/options/WITHOUT_MAN
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build manual pages.
diff --git a/tools/build/options/WITHOUT_MANCOMPRESS b/tools/build/options/WITHOUT_MANCOMPRESS
index af1e318116b4..20251d589f68 100644
--- a/tools/build/options/WITHOUT_MANCOMPRESS
+++ b/tools/build/options/WITHOUT_MANCOMPRESS
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not install compressed man pages.
Only the uncompressed versions will be installed.
diff --git a/tools/build/options/WITHOUT_MANSPLITPKG b/tools/build/options/WITHOUT_MANSPLITPKG
new file mode 100644
index 000000000000..a9913308d411
--- /dev/null
+++ b/tools/build/options/WITHOUT_MANSPLITPKG
@@ -0,0 +1 @@
+Do not split man pages into their own packages during make package.
diff --git a/tools/build/options/WITHOUT_MAN_UTILS b/tools/build/options/WITHOUT_MAN_UTILS
index c80206c830c8..3ae2af3377c7 100644
--- a/tools/build/options/WITHOUT_MAN_UTILS
+++ b/tools/build/options/WITHOUT_MAN_UTILS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build utilities for manual pages,
.Xr apropos 1 ,
.Xr makewhatis 1 ,
diff --git a/tools/build/options/WITHOUT_MLX5TOOL b/tools/build/options/WITHOUT_MLX5TOOL
index 267c32f6029d..fbb76736bb5a 100644
--- a/tools/build/options/WITHOUT_MLX5TOOL
+++ b/tools/build/options/WITHOUT_MLX5TOOL
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build
.Xr mlx5tool 8
diff --git a/tools/build/options/WITHOUT_MODULE_DRM b/tools/build/options/WITHOUT_MODULE_DRM
index f588566edb45..ac354ec8a130 100644
--- a/tools/build/options/WITHOUT_MODULE_DRM
+++ b/tools/build/options/WITHOUT_MODULE_DRM
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Disable creation of old drm video modules.
diff --git a/tools/build/options/WITHOUT_MODULE_DRM2 b/tools/build/options/WITHOUT_MODULE_DRM2
index 44d401d87619..43291115ada8 100644
--- a/tools/build/options/WITHOUT_MODULE_DRM2
+++ b/tools/build/options/WITHOUT_MODULE_DRM2
@@ -1,2 +1 @@
-.\" $FreeBSD$
Disable creation of old drm2 video modules.
diff --git a/tools/build/options/WITHOUT_NAND b/tools/build/options/WITHOUT_NAND
deleted file mode 100644
index a11d1901b261..000000000000
--- a/tools/build/options/WITHOUT_NAND
+++ /dev/null
@@ -1,2 +0,0 @@
-.\" $FreeBSD$
-Do not build the NAND Flash components.
diff --git a/tools/build/options/WITHOUT_NCP b/tools/build/options/WITHOUT_NCP
index 82c891304612..c381de4e00c0 100644
--- a/tools/build/options/WITHOUT_NCP
+++ b/tools/build/options/WITHOUT_NCP
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build programs, libraries, and kernel modules
related to NetWare Core protocol.
diff --git a/tools/build/options/WITHOUT_NETCAT b/tools/build/options/WITHOUT_NETCAT
index c89abf1522b7..e68b2ac61e38 100644
--- a/tools/build/options/WITHOUT_NETCAT
+++ b/tools/build/options/WITHOUT_NETCAT
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr nc 1
utility.
diff --git a/tools/build/options/WITHOUT_NETGRAPH b/tools/build/options/WITHOUT_NETGRAPH
index 27488f45ddc9..fefcbcfb82c2 100644
--- a/tools/build/options/WITHOUT_NETGRAPH
+++ b/tools/build/options/WITHOUT_NETGRAPH
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build applications to support
.Xr netgraph 4 .
diff --git a/tools/build/options/WITHOUT_NETGRAPH_SUPPORT b/tools/build/options/WITHOUT_NETGRAPH_SUPPORT
index 15d409e5493a..a51da58cac52 100644
--- a/tools/build/options/WITHOUT_NETGRAPH_SUPPORT
+++ b/tools/build/options/WITHOUT_NETGRAPH_SUPPORT
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build libraries, programs, and kernel modules without netgraph support.
diff --git a/tools/build/options/WITHOUT_NETLINK b/tools/build/options/WITHOUT_NETLINK
new file mode 100644
index 000000000000..8b698239b10a
--- /dev/null
+++ b/tools/build/options/WITHOUT_NETLINK
@@ -0,0 +1,3 @@
+Do not build
+.Xr genl 1
+utility.
diff --git a/tools/build/options/WITHOUT_NETLINK_SUPPORT b/tools/build/options/WITHOUT_NETLINK_SUPPORT
new file mode 100644
index 000000000000..d7147c91e358
--- /dev/null
+++ b/tools/build/options/WITHOUT_NETLINK_SUPPORT
@@ -0,0 +1,4 @@
+Make libraries and programs use rtsock and
+.Xr sysctl 3
+interfaces instead of
+.Xr snl 3 .
diff --git a/tools/build/options/WITHOUT_NIS b/tools/build/options/WITHOUT_NIS
index 0d72227cda3c..90cecbe76451 100644
--- a/tools/build/options/WITHOUT_NIS
+++ b/tools/build/options/WITHOUT_NIS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr NIS 8
support and related programs.
diff --git a/tools/build/options/WITHOUT_NLS b/tools/build/options/WITHOUT_NLS
index cba7dcd89e45..125b0b302c61 100644
--- a/tools/build/options/WITHOUT_NLS
+++ b/tools/build/options/WITHOUT_NLS
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build NLS catalogs.
diff --git a/tools/build/options/WITHOUT_NLS_CATALOGS b/tools/build/options/WITHOUT_NLS_CATALOGS
index a066e4705ec9..a22e9fec2252 100644
--- a/tools/build/options/WITHOUT_NLS_CATALOGS
+++ b/tools/build/options/WITHOUT_NLS_CATALOGS
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build NLS catalog support for
.Xr csh 1 .
diff --git a/tools/build/options/WITHOUT_NS_CACHING b/tools/build/options/WITHOUT_NS_CACHING
index 9a2739d4f2b3..212dcca27bc5 100644
--- a/tools/build/options/WITHOUT_NS_CACHING
+++ b/tools/build/options/WITHOUT_NS_CACHING
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Disable name caching in the
.Pa nsswitch
subsystem.
diff --git a/tools/build/options/WITHOUT_NTP b/tools/build/options/WITHOUT_NTP
index 0b8e38c44373..884068ce89e5 100644
--- a/tools/build/options/WITHOUT_NTP
+++ b/tools/build/options/WITHOUT_NTP
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr ntpd 8
and related programs.
diff --git a/tools/build/options/WITHOUT_NUAGEINIT b/tools/build/options/WITHOUT_NUAGEINIT
new file mode 100644
index 000000000000..14a17ce0ed5b
--- /dev/null
+++ b/tools/build/options/WITHOUT_NUAGEINIT
@@ -0,0 +1 @@
+Do not install the limited cloud init support scripts.
diff --git a/tools/build/options/WITHOUT_NVME b/tools/build/options/WITHOUT_NVME
index 507f708cd697..9669deb2ed9e 100644
--- a/tools/build/options/WITHOUT_NVME
+++ b/tools/build/options/WITHOUT_NVME
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build nvme related tools and kernel modules.
diff --git a/tools/build/options/WITHOUT_OFED b/tools/build/options/WITHOUT_OFED
index 63cb5b94eb28..8c38242cb1b8 100644
--- a/tools/build/options/WITHOUT_OFED
+++ b/tools/build/options/WITHOUT_OFED
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
-Disable the build of the
+Do not build the
.Dq "OpenFabrics Enterprise Distribution"
-Infiniband software stack, including kernel modules and userspace libraries.
+InfiniBand software stack, including kernel modules and userspace libraries.
diff --git a/tools/build/options/WITHOUT_OPENMP b/tools/build/options/WITHOUT_OPENMP
index f7474b698fe8..65fe9f21f67d 100644
--- a/tools/build/options/WITHOUT_OPENMP
+++ b/tools/build/options/WITHOUT_OPENMP
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build LLVM's OpenMP runtime.
diff --git a/tools/build/options/WITHOUT_OPENSSH b/tools/build/options/WITHOUT_OPENSSH
index 7f13fb891b8c..a1f8f03a829b 100644
--- a/tools/build/options/WITHOUT_OPENSSH
+++ b/tools/build/options/WITHOUT_OPENSSH
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build OpenSSH.
diff --git a/tools/build/options/WITHOUT_OPENSSL b/tools/build/options/WITHOUT_OPENSSL
index 88cced32ade8..b5a41130ed43 100644
--- a/tools/build/options/WITHOUT_OPENSSL
+++ b/tools/build/options/WITHOUT_OPENSSL
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build OpenSSL.
diff --git a/tools/build/options/WITHOUT_PAM b/tools/build/options/WITHOUT_PAM
index a980bba139bf..37c399bb7a18 100644
--- a/tools/build/options/WITHOUT_PAM
+++ b/tools/build/options/WITHOUT_PAM
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build PAM library and modules.
.Bf -symbolic
This option is deprecated and does nothing.
diff --git a/tools/build/options/WITHOUT_PAM_SUPPORT b/tools/build/options/WITHOUT_PAM_SUPPORT
index 047f3719ea7f..323a83cf6192 100644
--- a/tools/build/options/WITHOUT_PAM_SUPPORT
+++ b/tools/build/options/WITHOUT_PAM_SUPPORT
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build some programs without PAM support, particularly
.Xr ftpd 8
and
diff --git a/tools/build/options/WITHOUT_PF b/tools/build/options/WITHOUT_PF
index 6b23d559f19d..097b89b0d55e 100644
--- a/tools/build/options/WITHOUT_PF
+++ b/tools/build/options/WITHOUT_PF
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build PF firewall package.
diff --git a/tools/build/options/WITHOUT_PIE b/tools/build/options/WITHOUT_PIE
index 69cc4843587f..08d08c283e02 100644
--- a/tools/build/options/WITHOUT_PIE
+++ b/tools/build/options/WITHOUT_PIE
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build dynamically linked binaries as
Position-Independent Executable (PIE).
diff --git a/tools/build/options/WITHOUT_PKGBOOTSTRAP b/tools/build/options/WITHOUT_PKGBOOTSTRAP
index 14bfcc05f14c..35a0f4fcf2a4 100644
--- a/tools/build/options/WITHOUT_PKGBOOTSTRAP
+++ b/tools/build/options/WITHOUT_PKGBOOTSTRAP
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr pkg 7
bootstrap tool.
diff --git a/tools/build/options/WITHOUT_PMC b/tools/build/options/WITHOUT_PMC
index c8027bf3a3d3..a5f14731b1a3 100644
--- a/tools/build/options/WITHOUT_PMC
+++ b/tools/build/options/WITHOUT_PMC
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr pmccontrol 8
and related programs.
diff --git a/tools/build/options/WITHOUT_PORTSNAP b/tools/build/options/WITHOUT_PORTSNAP
deleted file mode 100644
index 8b023fd65251..000000000000
--- a/tools/build/options/WITHOUT_PORTSNAP
+++ /dev/null
@@ -1,4 +0,0 @@
-.\" $FreeBSD$
-Do not build or install
-.Xr portsnap 8
-and related files.
diff --git a/tools/build/options/WITHOUT_PPP b/tools/build/options/WITHOUT_PPP
index ce7161243bff..7610634abe0f 100644
--- a/tools/build/options/WITHOUT_PPP
+++ b/tools/build/options/WITHOUT_PPP
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr ppp 8
and related programs.
diff --git a/tools/build/options/WITHOUT_PROFILE b/tools/build/options/WITHOUT_PROFILE
index 7fdb12c94cdd..6d543e6241a4 100644
--- a/tools/build/options/WITHOUT_PROFILE
+++ b/tools/build/options/WITHOUT_PROFILE
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build profiled libraries for use with
.Xr gprof 8 .
diff --git a/tools/build/options/WITHOUT_PTHREADS_ASSERTIONS b/tools/build/options/WITHOUT_PTHREADS_ASSERTIONS
new file mode 100644
index 000000000000..b0961fa43cb6
--- /dev/null
+++ b/tools/build/options/WITHOUT_PTHREADS_ASSERTIONS
@@ -0,0 +1 @@
+Disable debugging assertions in pthreads library.
diff --git a/tools/build/options/WITHOUT_QUOTAS b/tools/build/options/WITHOUT_QUOTAS
index a79bf5dd839a..1914ee676d02 100644
--- a/tools/build/options/WITHOUT_QUOTAS
+++ b/tools/build/options/WITHOUT_QUOTAS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr quota 1
and related programs.
diff --git a/tools/build/options/WITHOUT_RADIUS_SUPPORT b/tools/build/options/WITHOUT_RADIUS_SUPPORT
index 6d1a97de1baa..4b203a7af23d 100644
--- a/tools/build/options/WITHOUT_RADIUS_SUPPORT
+++ b/tools/build/options/WITHOUT_RADIUS_SUPPORT
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build radius support into various applications, like
.Xr pam_radius 8
and
diff --git a/tools/build/options/WITHOUT_RBOOTD b/tools/build/options/WITHOUT_RBOOTD
index fd331607328d..4f4b38747ec7 100644
--- a/tools/build/options/WITHOUT_RBOOTD
+++ b/tools/build/options/WITHOUT_RBOOTD
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build or install
.Xr rbootd 8 .
diff --git a/tools/build/options/WITHOUT_RELRO b/tools/build/options/WITHOUT_RELRO
new file mode 100644
index 000000000000..f5b661f5916d
--- /dev/null
+++ b/tools/build/options/WITHOUT_RELRO
@@ -0,0 +1,4 @@
+Do not apply the Relocation Read-Only (RELRO) vulnerability mitigation.
+See also the
+.Va BIND_NOW
+option.
diff --git a/tools/build/options/WITHOUT_REPRODUCIBLE_BUILD b/tools/build/options/WITHOUT_REPRODUCIBLE_BUILD
index b858e389fee4..feabaed77fb1 100644
--- a/tools/build/options/WITHOUT_REPRODUCIBLE_BUILD
+++ b/tools/build/options/WITHOUT_REPRODUCIBLE_BUILD
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Include build metadata (such as the build time, user, and host)
in the kernel, boot loaders, and uname output.
Successive builds will not be bit-for-bit identical.
diff --git a/tools/build/options/WITHOUT_RESCUE b/tools/build/options/WITHOUT_RESCUE
index 9b71cd0de3f2..5a6e80c3d733 100644
--- a/tools/build/options/WITHOUT_RESCUE
+++ b/tools/build/options/WITHOUT_RESCUE
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build
.Xr rescue 8 .
diff --git a/tools/build/options/WITHOUT_RETPOLINE b/tools/build/options/WITHOUT_RETPOLINE
index 693cce921be1..f918e88294dd 100644
--- a/tools/build/options/WITHOUT_RETPOLINE
+++ b/tools/build/options/WITHOUT_RETPOLINE
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build the base system with the retpoline speculative execution
vulnerability mitigation.
diff --git a/tools/build/options/WITHOUT_ROUTED b/tools/build/options/WITHOUT_ROUTED
index 199c1cd85ddf..e388acf795a4 100644
--- a/tools/build/options/WITHOUT_ROUTED
+++ b/tools/build/options/WITHOUT_ROUTED
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr routed 8
utility.
diff --git a/tools/build/options/WITHOUT_SCTP_SUPPORT b/tools/build/options/WITHOUT_SCTP_SUPPORT
new file mode 100644
index 000000000000..0829dbeca49d
--- /dev/null
+++ b/tools/build/options/WITHOUT_SCTP_SUPPORT
@@ -0,0 +1,4 @@
+Disable support in the kernel for the
+.Xr sctp 4
+Stream Control Transmission Protocol
+loadable kernel module.
diff --git a/tools/build/options/WITHOUT_SENDMAIL b/tools/build/options/WITHOUT_SENDMAIL
index db99666a2696..ef93e3ae7d2b 100644
--- a/tools/build/options/WITHOUT_SENDMAIL
+++ b/tools/build/options/WITHOUT_SENDMAIL
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr sendmail 8
and related programs.
diff --git a/tools/build/options/WITHOUT_SERVICESDB b/tools/build/options/WITHOUT_SERVICESDB
index c603ec0ba123..fc0e76d8a0a1 100644
--- a/tools/build/options/WITHOUT_SERVICESDB
+++ b/tools/build/options/WITHOUT_SERVICESDB
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not install
.Pa /var/db/services.db .
diff --git a/tools/build/options/WITHOUT_SETUID_LOGIN b/tools/build/options/WITHOUT_SETUID_LOGIN
index af073b322947..e1e60432911b 100644
--- a/tools/build/options/WITHOUT_SETUID_LOGIN
+++ b/tools/build/options/WITHOUT_SETUID_LOGIN
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Set this to disable the installation of
.Xr login 1
as a set-user-ID root program.
diff --git a/tools/build/options/WITHOUT_SHAREDOCS b/tools/build/options/WITHOUT_SHAREDOCS
index 6b99e2a09984..b162e005ed5b 100644
--- a/tools/build/options/WITHOUT_SHAREDOCS
+++ b/tools/build/options/WITHOUT_SHAREDOCS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build the
.Bx 4.4
legacy docs.
diff --git a/tools/build/options/WITHOUT_SHARED_TOOLCHAIN b/tools/build/options/WITHOUT_SHARED_TOOLCHAIN
deleted file mode 100644
index 86e309028c21..000000000000
--- a/tools/build/options/WITHOUT_SHARED_TOOLCHAIN
+++ /dev/null
@@ -1,6 +0,0 @@
-.\" $FreeBSD$
-Build the toolchain binaries as statically linked executables.
-The set includes
-.Xr cc 1 ,
-.Xr make 1
-and necessary utilities like assembler, linker and library archive manager.
diff --git a/tools/build/options/WITHOUT_SOURCELESS b/tools/build/options/WITHOUT_SOURCELESS
index 18bf0fc91a42..e60af5c6049e 100644
--- a/tools/build/options/WITHOUT_SOURCELESS
+++ b/tools/build/options/WITHOUT_SOURCELESS
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build kernel modules that include sourceless code (either microcode or native code for host CPU).
diff --git a/tools/build/options/WITHOUT_SOURCELESS_HOST b/tools/build/options/WITHOUT_SOURCELESS_HOST
index 26e043fc11e5..d79198407f93 100644
--- a/tools/build/options/WITHOUT_SOURCELESS_HOST
+++ b/tools/build/options/WITHOUT_SOURCELESS_HOST
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build kernel modules that include sourceless native code for host CPU.
diff --git a/tools/build/options/WITHOUT_SOURCELESS_UCODE b/tools/build/options/WITHOUT_SOURCELESS_UCODE
index c05e76f74fa6..f92bcadf3f03 100644
--- a/tools/build/options/WITHOUT_SOURCELESS_UCODE
+++ b/tools/build/options/WITHOUT_SOURCELESS_UCODE
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build kernel modules that include sourceless microcode.
diff --git a/tools/build/options/WITHOUT_SPLIT_KERNEL_DEBUG b/tools/build/options/WITHOUT_SPLIT_KERNEL_DEBUG
new file mode 100644
index 000000000000..a23bcd5ffdb6
--- /dev/null
+++ b/tools/build/options/WITHOUT_SPLIT_KERNEL_DEBUG
@@ -0,0 +1,3 @@
+Do not build standalone kernel debug files.
+Debug data (if enabled by the kernel configuration file)
+will be included in the kernel and modules.
diff --git a/tools/build/options/WITHOUT_SSP b/tools/build/options/WITHOUT_SSP
index 7f9dac0d7620..88162cecf14a 100644
--- a/tools/build/options/WITHOUT_SSP
+++ b/tools/build/options/WITHOUT_SSP
@@ -1,2 +1 @@
-.\" $FreeBSD$
-Do not build world with propolice stack smashing protection.
+Do not build world with stack smashing protection.
diff --git a/tools/build/options/WITHOUT_STATS b/tools/build/options/WITHOUT_STATS
index 9f741abeab3f..3ab566e21b77 100644
--- a/tools/build/options/WITHOUT_STATS
+++ b/tools/build/options/WITHOUT_STATS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Neither build nor install
.Lb libstats
and dependent binaries.
diff --git a/tools/build/options/WITHOUT_SYSCONS b/tools/build/options/WITHOUT_SYSCONS
index 5bb435a0653b..6da49cda50d8 100644
--- a/tools/build/options/WITHOUT_SYSCONS
+++ b/tools/build/options/WITHOUT_SYSCONS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr syscons 4
support files such as keyboard maps, fonts, and screen output maps.
diff --git a/tools/build/options/WITHOUT_SYSTEM_COMPILER b/tools/build/options/WITHOUT_SYSTEM_COMPILER
index 0bcf771e572b..c70ea201b9d7 100644
--- a/tools/build/options/WITHOUT_SYSTEM_COMPILER
+++ b/tools/build/options/WITHOUT_SYSTEM_COMPILER
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not opportunistically skip building a cross-compiler during the
bootstrap phase of the build.
Normally, if the currently installed compiler matches the planned bootstrap
diff --git a/tools/build/options/WITHOUT_SYSTEM_LINKER b/tools/build/options/WITHOUT_SYSTEM_LINKER
index 4b9019dfefda..0af1a627b47d 100644
--- a/tools/build/options/WITHOUT_SYSTEM_LINKER
+++ b/tools/build/options/WITHOUT_SYSTEM_LINKER
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not opportunistically skip building a cross-linker during the
bootstrap phase of the build.
Normally, if the currently installed linker matches the planned bootstrap
diff --git a/tools/build/options/WITHOUT_TALK b/tools/build/options/WITHOUT_TALK
index 21d103bde0c1..894fabf59d07 100644
--- a/tools/build/options/WITHOUT_TALK
+++ b/tools/build/options/WITHOUT_TALK
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build or install
.Xr talk 1
and
diff --git a/tools/build/options/WITHOUT_TCP_WRAPPERS b/tools/build/options/WITHOUT_TCP_WRAPPERS
index e63d5b3bb7fb..b30a17f65af4 100644
--- a/tools/build/options/WITHOUT_TCP_WRAPPERS
+++ b/tools/build/options/WITHOUT_TCP_WRAPPERS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build or install
.Xr tcpd 8 ,
and related utilities.
diff --git a/tools/build/options/WITHOUT_TCSH b/tools/build/options/WITHOUT_TCSH
index 96aa699012e9..6041c141e723 100644
--- a/tools/build/options/WITHOUT_TCSH
+++ b/tools/build/options/WITHOUT_TCSH
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build and install
.Pa /bin/csh
(which is
diff --git a/tools/build/options/WITHOUT_TELNET b/tools/build/options/WITHOUT_TELNET
index d08f84d96b1c..323d20398458 100644
--- a/tools/build/options/WITHOUT_TELNET
+++ b/tools/build/options/WITHOUT_TELNET
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr telnet 1
and related programs.
diff --git a/tools/build/options/WITHOUT_TESTS b/tools/build/options/WITHOUT_TESTS
index ed90ff41584c..e9b7e4ec1bb0 100644
--- a/tools/build/options/WITHOUT_TESTS
+++ b/tools/build/options/WITHOUT_TESTS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build nor install the
.Fx
Test Suite in
diff --git a/tools/build/options/WITHOUT_TESTS_SUPPORT b/tools/build/options/WITHOUT_TESTS_SUPPORT
index cd86942ad9e3..35c331dbd1de 100644
--- a/tools/build/options/WITHOUT_TESTS_SUPPORT
+++ b/tools/build/options/WITHOUT_TESTS_SUPPORT
@@ -1,2 +1 @@
-.\" $FreeBSD$
Disable the build of all test-related dependencies, including ATF.
diff --git a/tools/build/options/WITHOUT_TEXTPROC b/tools/build/options/WITHOUT_TEXTPROC
index 7797d997fb5d..e8e60bb9d7d9 100644
--- a/tools/build/options/WITHOUT_TEXTPROC
+++ b/tools/build/options/WITHOUT_TEXTPROC
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Do not build
programs used for text processing.
diff --git a/tools/build/options/WITHOUT_TFTP b/tools/build/options/WITHOUT_TFTP
index a64128ec4b2e..59a8158f0ce1 100644
--- a/tools/build/options/WITHOUT_TFTP
+++ b/tools/build/options/WITHOUT_TFTP
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build or install
.Xr tftp 1
and
diff --git a/tools/build/options/WITHOUT_TOOLCHAIN b/tools/build/options/WITHOUT_TOOLCHAIN
index 57deb32a51f7..7445b3f45ba5 100644
--- a/tools/build/options/WITHOUT_TOOLCHAIN
+++ b/tools/build/options/WITHOUT_TOOLCHAIN
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
-Do not install header or
+Do not install
programs used for program development,
compilers, debuggers etc.
diff --git a/tools/build/options/WITHOUT_UNBOUND b/tools/build/options/WITHOUT_UNBOUND
index 10c2e85616ae..ec4be1c1d0b4 100644
--- a/tools/build/options/WITHOUT_UNBOUND
+++ b/tools/build/options/WITHOUT_UNBOUND
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr unbound 8
and related programs.
diff --git a/tools/build/options/WITHOUT_UNDEFINED_VERSION b/tools/build/options/WITHOUT_UNDEFINED_VERSION
new file mode 100644
index 000000000000..0e58eb00f3c1
--- /dev/null
+++ b/tools/build/options/WITHOUT_UNDEFINED_VERSION
@@ -0,0 +1,2 @@
+Link libraries with --no-undefined-version to ensure all symbols are
+provided.
diff --git a/tools/build/options/WITHOUT_UNIFIED_OBJDIR b/tools/build/options/WITHOUT_UNIFIED_OBJDIR
index 840196941da4..1214c1e24d9d 100644
--- a/tools/build/options/WITHOUT_UNIFIED_OBJDIR
+++ b/tools/build/options/WITHOUT_UNIFIED_OBJDIR
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Use the historical object directory format for
.Xr build 7
targets.
@@ -9,7 +8,8 @@ while for cross-builds
.Pa ${MAKEOBJDIRPREFIX}/${TARGET}.${TARGET_ARCH}/${.CURDIR}
is used.
.Pp
-This option is transitional and will be removed before the 12.0 release,
+This option is transitional and will be removed in a future version of
+.Fx ,
at which time
-.va WITH_UNIFIED_OBJDIR
+.Va WITH_UNIFIED_OBJDIR
will be enabled permanently.
diff --git a/tools/build/options/WITHOUT_USB b/tools/build/options/WITHOUT_USB
index 37308951226b..80a61453124a 100644
--- a/tools/build/options/WITHOUT_USB
+++ b/tools/build/options/WITHOUT_USB
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build USB-related programs and libraries.
diff --git a/tools/build/options/WITHOUT_USB_GADGET_EXAMPLES b/tools/build/options/WITHOUT_USB_GADGET_EXAMPLES
index d8b54b061177..d535ab1f2f0d 100644
--- a/tools/build/options/WITHOUT_USB_GADGET_EXAMPLES
+++ b/tools/build/options/WITHOUT_USB_GADGET_EXAMPLES
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build USB gadget kernel modules.
diff --git a/tools/build/options/WITHOUT_UTMPX b/tools/build/options/WITHOUT_UTMPX
index eb2f378fef68..e0c122824aa7 100644
--- a/tools/build/options/WITHOUT_UTMPX
+++ b/tools/build/options/WITHOUT_UTMPX
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build user accounting tools such as
.Xr last 1 ,
.Xr users 1 ,
diff --git a/tools/build/options/WITHOUT_VI b/tools/build/options/WITHOUT_VI
index 19b2df6935b3..0d8af3e0deaa 100644
--- a/tools/build/options/WITHOUT_VI
+++ b/tools/build/options/WITHOUT_VI
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build and install vi, view, ex and related programs.
diff --git a/tools/build/options/WITHOUT_VT b/tools/build/options/WITHOUT_VT
index c07a9e56f0e0..120a21dfa743 100644
--- a/tools/build/options/WITHOUT_VT
+++ b/tools/build/options/WITHOUT_VT
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build
.Xr vt 4
support files (fonts and keymaps).
diff --git a/tools/build/options/WITHOUT_WARNS b/tools/build/options/WITHOUT_WARNS
index a0c1339e7dc4..a5a1126a6a82 100644
--- a/tools/build/options/WITHOUT_WARNS
+++ b/tools/build/options/WITHOUT_WARNS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Set this to not add warning flags to the compiler invocations.
Useful as a temporary workaround when code enters the tree
which triggers warnings in environments that differ from the
diff --git a/tools/build/options/WITHOUT_WERROR b/tools/build/options/WITHOUT_WERROR
index 84a4c6b06967..9c4580b5c38c 100644
--- a/tools/build/options/WITHOUT_WERROR
+++ b/tools/build/options/WITHOUT_WERROR
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Set this to not treat compiler warnings as errors.
Useful as a temporary workaround when working on fixing compiler warnings.
When set, warnings are still printed in the build log but do not fail the build.
diff --git a/tools/build/options/WITHOUT_WIRELESS b/tools/build/options/WITHOUT_WIRELESS
index 7eae3735c8e6..435e6ee4ec25 100644
--- a/tools/build/options/WITHOUT_WIRELESS
+++ b/tools/build/options/WITHOUT_WIRELESS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Do not build programs used for 802.11 wireless networks; especially
.Xr wpa_supplicant 8
and
diff --git a/tools/build/options/WITHOUT_WIRELESS_SUPPORT b/tools/build/options/WITHOUT_WIRELESS_SUPPORT
index 1d07092e10d7..85fed614e8f7 100644
--- a/tools/build/options/WITHOUT_WIRELESS_SUPPORT
+++ b/tools/build/options/WITHOUT_WIRELESS_SUPPORT
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Build libraries, programs, and kernel modules without
802.11 wireless support.
diff --git a/tools/build/options/WITHOUT_WPA_SUPPLICANT_EAPOL b/tools/build/options/WITHOUT_WPA_SUPPLICANT_EAPOL
index d895ef93127d..77a3f163d285 100644
--- a/tools/build/options/WITHOUT_WPA_SUPPLICANT_EAPOL
+++ b/tools/build/options/WITHOUT_WPA_SUPPLICANT_EAPOL
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build
.Xr wpa_supplicant 8
without support for the IEEE 802.1X protocol and without
diff --git a/tools/build/options/WITHOUT_ZFS b/tools/build/options/WITHOUT_ZFS
index 3c809e54cfaa..5598293f102e 100644
--- a/tools/build/options/WITHOUT_ZFS
+++ b/tools/build/options/WITHOUT_ZFS
@@ -1,2 +1,8 @@
-.\" $FreeBSD$
-Do not build ZFS file system kernel module, libraries, and user commands.
+Do not build the ZFS file system kernel module, libraries such as
+.Xr libbe 3 ,
+and user commands such as
+.Xr zpool 8
+or
+.Xr zfs 8 .
+Also disable ZFS support in utilities and libraries which implement
+ZFS-specific functionality.
diff --git a/tools/build/options/WITHOUT_ZONEINFO b/tools/build/options/WITHOUT_ZONEINFO
index 647a10daf612..f6bc81da967b 100644
--- a/tools/build/options/WITHOUT_ZONEINFO
+++ b/tools/build/options/WITHOUT_ZONEINFO
@@ -1,2 +1 @@
-.\" $FreeBSD$
Do not build the timezone database.
diff --git a/tools/build/options/WITH_ASAN b/tools/build/options/WITH_ASAN
new file mode 100644
index 000000000000..2955434fd167
--- /dev/null
+++ b/tools/build/options/WITH_ASAN
@@ -0,0 +1,4 @@
+Build the base system with Address Sanitizer (ASan) to detect
+memory corruption bugs such as buffer overflows or use-after-free.
+Requires that Clang be used as the base system compiler
+and that the runtime support library is available.
diff --git a/tools/build/options/WITH_AUTO_OBJ b/tools/build/options/WITH_AUTO_OBJ
index 9f2e2db3617a..7765af40e40e 100644
--- a/tools/build/options/WITH_AUTO_OBJ
+++ b/tools/build/options/WITH_AUTO_OBJ
@@ -1,2 +1 @@
-.\" $FreeBSD$
Enable automatic creation of objdirs.
diff --git a/tools/build/options/WITH_BEARSSL b/tools/build/options/WITH_BEARSSL
index e89ab8570c17..6a4447d723ed 100644
--- a/tools/build/options/WITH_BEARSSL
+++ b/tools/build/options/WITH_BEARSSL
@@ -1,9 +1,8 @@
-.\" $FreeBSD$
Build the BearSSL library.
.Pp
BearSSL is a tiny SSL library suitable for embedded environments.
For details see
-.Lk http://www.BearSSL.org/
+.Lk https://www.BearSSL.org/
.Pp
This library is currently only used to perform
signature verification and related operations
diff --git a/tools/build/options/WITH_BHYVE_SNAPSHOT b/tools/build/options/WITH_BHYVE_SNAPSHOT
index 3f866d5fa69d..77a6c0031ddd 100644
--- a/tools/build/options/WITH_BHYVE_SNAPSHOT
+++ b/tools/build/options/WITH_BHYVE_SNAPSHOT
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Include support for save and restore (snapshots) in
.Xr bhyve 8
and
diff --git a/tools/build/options/WITH_BIND_NOW b/tools/build/options/WITH_BIND_NOW
index 02e4c37352b4..d9b137c9d8cc 100644
--- a/tools/build/options/WITH_BIND_NOW
+++ b/tools/build/options/WITH_BIND_NOW
@@ -1,5 +1,11 @@
-.\" $FreeBSD$
Build all binaries with the
.Dv DF_BIND_NOW
flag set to indicate that the run-time loader should perform all relocation
processing at process startup rather than on demand.
+The combination of the
+.Va BIND_NOW
+and
+.Va RELRO
+options provide "full" Relocation Read-Only (RELRO) support.
+With full RELRO the entire GOT is made read-only after performing relocation at
+startup, avoiding GOT overwrite attacks.
diff --git a/tools/build/options/WITH_CCACHE_BUILD b/tools/build/options/WITH_CCACHE_BUILD
index 88b20db606e2..9e53769287e5 100644
--- a/tools/build/options/WITH_CCACHE_BUILD
+++ b/tools/build/options/WITH_CCACHE_BUILD
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Use
.Xr ccache 1
for the build.
diff --git a/tools/build/options/WITH_CLANG b/tools/build/options/WITH_CLANG
index 44226e778c36..ad75329e8820 100644
--- a/tools/build/options/WITH_CLANG
+++ b/tools/build/options/WITH_CLANG
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build the Clang C/C++ compiler during the normal phase of the build.
diff --git a/tools/build/options/WITH_CLANG_BOOTSTRAP b/tools/build/options/WITH_CLANG_BOOTSTRAP
index 0dfeaf9009be..8c1182d427ab 100644
--- a/tools/build/options/WITH_CLANG_BOOTSTRAP
+++ b/tools/build/options/WITH_CLANG_BOOTSTRAP
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build the Clang C/C++ compiler during the bootstrap phase of the build.
diff --git a/tools/build/options/WITH_CLANG_EXTRAS b/tools/build/options/WITH_CLANG_EXTRAS
index 389c994f086a..ea6d41c45f27 100644
--- a/tools/build/options/WITH_CLANG_EXTRAS
+++ b/tools/build/options/WITH_CLANG_EXTRAS
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Build additional clang and llvm tools, such as bugpoint and
clang-format.
diff --git a/tools/build/options/WITH_CLANG_FORMAT b/tools/build/options/WITH_CLANG_FORMAT
index 24316a6e2e27..e08dc7e66ac1 100644
--- a/tools/build/options/WITH_CLANG_FORMAT
+++ b/tools/build/options/WITH_CLANG_FORMAT
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build clang-format.
diff --git a/tools/build/options/WITH_CLANG_FULL b/tools/build/options/WITH_CLANG_FULL
index 3e78ad904e74..72d29c94009c 100644
--- a/tools/build/options/WITH_CLANG_FULL
+++ b/tools/build/options/WITH_CLANG_FULL
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Build the ARCMigrate, Rewriter and StaticAnalyzer components of the
Clang C/C++ compiler.
diff --git a/tools/build/options/WITH_CLANG_IS_CC b/tools/build/options/WITH_CLANG_IS_CC
deleted file mode 100644
index 9ab78c569dd2..000000000000
--- a/tools/build/options/WITH_CLANG_IS_CC
+++ /dev/null
@@ -1,6 +0,0 @@
-.\" $FreeBSD$
-Install links to the Clang C/C++ compiler as
-.Pa /usr/bin/cc ,
-.Pa /usr/bin/c++
-and
-.Pa /usr/bin/cpp .
diff --git a/tools/build/options/WITH_CTF b/tools/build/options/WITH_CTF
index a5d2f2c02922..a8a7ebac68f9 100644
--- a/tools/build/options/WITH_CTF
+++ b/tools/build/options/WITH_CTF
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Compile with CTF (Compact C Type Format) data.
CTF data encapsulates a reduced form of debugging information
similar to DWARF and the venerable stabs and is required for DTrace.
diff --git a/tools/build/options/WITH_CXGBETOOL b/tools/build/options/WITH_CXGBETOOL
index 53c379a2af15..5fbc8b5be1fc 100644
--- a/tools/build/options/WITH_CXGBETOOL
+++ b/tools/build/options/WITH_CXGBETOOL
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Build
.Xr cxgbetool 8
diff --git a/tools/build/options/WITH_CXX b/tools/build/options/WITH_CXX
index cc9d7d312845..ca71af977edc 100644
--- a/tools/build/options/WITH_CXX
+++ b/tools/build/options/WITH_CXX
@@ -1,4 +1 @@
-.\" $FreeBSD$
-Build
-.Xr c++ 1
-and related libraries.
+Build C++ headers and runtime libraries.
diff --git a/tools/build/options/WITH_DEBUG_FILES b/tools/build/options/WITH_DEBUG_FILES
index 9f476ce422ef..608f66735545 100644
--- a/tools/build/options/WITH_DEBUG_FILES
+++ b/tools/build/options/WITH_DEBUG_FILES
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Strip debug info into a separate file for each executable binary
and shared library.
The debug files will be placed in a subdirectory of
diff --git a/tools/build/options/WITH_DETECT_TZ_CHANGES b/tools/build/options/WITH_DETECT_TZ_CHANGES
index 6a2d18473892..dfd30b06931b 100644
--- a/tools/build/options/WITH_DETECT_TZ_CHANGES
+++ b/tools/build/options/WITH_DETECT_TZ_CHANGES
@@ -1,2 +1 @@
-.\" $FreeBSD$
Make the time handling code detect changes to the timezone files.
diff --git a/tools/build/options/WITH_DIALOG b/tools/build/options/WITH_DIALOG
new file mode 100644
index 000000000000..8b473b22e21e
--- /dev/null
+++ b/tools/build/options/WITH_DIALOG
@@ -0,0 +1,6 @@
+Do build
+.Xr dialog 1 ,
+.Xr dialog 3 ,
+.Xr dpv 1 ,
+and
+.Xr dpv 3 .
diff --git a/tools/build/options/WITH_DIRDEPS_BUILD b/tools/build/options/WITH_DIRDEPS_BUILD
index 38599cb96a4c..18630d3d1dd1 100644
--- a/tools/build/options/WITH_DIRDEPS_BUILD
+++ b/tools/build/options/WITH_DIRDEPS_BUILD
@@ -1,7 +1,6 @@
-.\" $FreeBSD$
-This is an experimental build system.
+This is an alternate build system.
For details see
-http://www.crufty.net/sjg/docs/freebsd-meta-mode.htm.
+https://www.crufty.net/sjg/docs/freebsd-meta-mode.htm.
Build commands can be seen from the top-level with:
.Dl make show-valid-targets
The build is driven by dirdeps.mk using
@@ -33,4 +32,11 @@ The build hides commands executed unless
is defined.
.Pp
Note that there is currently no mass install feature for this.
+This build is designed for producing packages, that can then be installed
+on a target system.
.Pp
+The implementation in
+.Fx
+is incomplete.
+Completion would require leaf directories for building each kernel
+and package so that their dependencies can be tracked.
diff --git a/tools/build/options/WITH_DIRDEPS_CACHE b/tools/build/options/WITH_DIRDEPS_CACHE
index e4fec026c7d3..82291fed1e96 100644
--- a/tools/build/options/WITH_DIRDEPS_CACHE
+++ b/tools/build/options/WITH_DIRDEPS_CACHE
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Cache result of dirdeps.mk which can save significant time
for subsequent builds.
Depends on
diff --git a/tools/build/options/WITH_DISK_IMAGE_TOOLS_BOOTSTRAP b/tools/build/options/WITH_DISK_IMAGE_TOOLS_BOOTSTRAP
new file mode 100644
index 000000000000..5f5fba2ea0a2
--- /dev/null
+++ b/tools/build/options/WITH_DISK_IMAGE_TOOLS_BOOTSTRAP
@@ -0,0 +1,6 @@
+Build
+.Xr etdump 1 ,
+.Xr makefs 8
+and
+.Xr mkimg 1
+as bootstrap tools.
diff --git a/tools/build/options/WITH_DTRACE_ASAN b/tools/build/options/WITH_DTRACE_ASAN
new file mode 100644
index 000000000000..4240aee4b89b
--- /dev/null
+++ b/tools/build/options/WITH_DTRACE_ASAN
@@ -0,0 +1,4 @@
+Compile userspace DTrace code (libdtrace, dtrace(1), lockstat(1), plockstat(1))
+with address and undefined behavior sanitizers.
+Requires that Clang be used as the base system compiler
+and that the runtime support library is available.
diff --git a/tools/build/options/WITH_DTRACE_TESTS b/tools/build/options/WITH_DTRACE_TESTS
index 79c18167450e..0c84e310fd95 100644
--- a/tools/build/options/WITH_DTRACE_TESTS
+++ b/tools/build/options/WITH_DTRACE_TESTS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build and install the DTrace test suite in
.Pa /usr/tests/cddl/usr.sbin/dtrace .
This test suite is considered experimental on architectures other than
diff --git a/tools/build/options/WITH_EFI b/tools/build/options/WITH_EFI
index 99685733fdec..436f1954d592 100644
--- a/tools/build/options/WITH_EFI
+++ b/tools/build/options/WITH_EFI
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build
.Xr efivar 3
and
diff --git a/tools/build/options/WITH_EXPERIMENTAL b/tools/build/options/WITH_EXPERIMENTAL
index d854f2980dda..a5f41addee52 100644
--- a/tools/build/options/WITH_EXPERIMENTAL
+++ b/tools/build/options/WITH_EXPERIMENTAL
@@ -1,2 +1 @@
-.\" $FreeBSD$
Include experimental features in the build.
diff --git a/tools/build/options/WITH_EXTRA_TCP_STACKS b/tools/build/options/WITH_EXTRA_TCP_STACKS
deleted file mode 100644
index 03fec9881bc2..000000000000
--- a/tools/build/options/WITH_EXTRA_TCP_STACKS
+++ /dev/null
@@ -1,2 +0,0 @@
-.\" $FreeBSD$
-Build extra TCP stack modules.
diff --git a/tools/build/options/WITH_FDT b/tools/build/options/WITH_FDT
index 63484d91221e..102c56be241d 100644
--- a/tools/build/options/WITH_FDT
+++ b/tools/build/options/WITH_FDT
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Build Flattened Device Tree support as part of the base system.
This includes the device tree compiler (dtc) and libfdt support library.
diff --git a/tools/build/options/WITH_GCC b/tools/build/options/WITH_GCC
index d4dfc3d17291..c6b38f6b1bf5 100644
--- a/tools/build/options/WITH_GCC
+++ b/tools/build/options/WITH_GCC
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build and install gcc and g++.
This option is deprecated and will be removed before
.Fx 13 .
diff --git a/tools/build/options/WITH_GCC_BOOTSTRAP b/tools/build/options/WITH_GCC_BOOTSTRAP
index 2ba53112cd1c..90d5453d08c1 100644
--- a/tools/build/options/WITH_GCC_BOOTSTRAP
+++ b/tools/build/options/WITH_GCC_BOOTSTRAP
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build gcc and g++ as part of the bootstrap process.
This option is deprecated and will be removed before
.Fx 13 .
diff --git a/tools/build/options/WITH_GCOV b/tools/build/options/WITH_GCOV
index a9f3eb68a82b..a99e6df4161d 100644
--- a/tools/build/options/WITH_GCOV
+++ b/tools/build/options/WITH_GCOV
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build and install the GNU
.Xr gcov 1
tool.
diff --git a/tools/build/options/WITH_GDB b/tools/build/options/WITH_GDB
index f65058824794..effabf4f8ff0 100644
--- a/tools/build/options/WITH_GDB
+++ b/tools/build/options/WITH_GDB
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Build
.Xr gdb 1 .
diff --git a/tools/build/options/WITH_GH_BC b/tools/build/options/WITH_GH_BC
index 9bc4445fe78f..e12092c03b99 100644
--- a/tools/build/options/WITH_GH_BC
+++ b/tools/build/options/WITH_GH_BC
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Install the enhanced
.Xr bc 1
and
diff --git a/tools/build/options/WITH_GNU_DIFF b/tools/build/options/WITH_GNU_DIFF
index 41827190aa94..6ccea1c7f28e 100644
--- a/tools/build/options/WITH_GNU_DIFF
+++ b/tools/build/options/WITH_GNU_DIFF
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Build and install GNU
.Xr diff3 1 .
diff --git a/tools/build/options/WITH_GOOGLETEST b/tools/build/options/WITH_GOOGLETEST
index 28a59d697bb7..53832de70619 100644
--- a/tools/build/options/WITH_GOOGLETEST
+++ b/tools/build/options/WITH_GOOGLETEST
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build and install
.Lb libgmock ,
.Lb libgtest ,
diff --git a/tools/build/options/WITH_HESIOD b/tools/build/options/WITH_HESIOD
index d42bde2f2aca..30eff2ddd4ef 100644
--- a/tools/build/options/WITH_HESIOD
+++ b/tools/build/options/WITH_HESIOD
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build Hesiod support.
diff --git a/tools/build/options/WITH_HYPERV b/tools/build/options/WITH_HYPERV
index 22d2728138d6..8cf3b5520422 100644
--- a/tools/build/options/WITH_HYPERV
+++ b/tools/build/options/WITH_HYPERV
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build or install HyperV utilities.
diff --git a/tools/build/options/WITH_INIT_ALL_PATTERN b/tools/build/options/WITH_INIT_ALL_PATTERN
deleted file mode 100644
index f84037cdbae4..000000000000
--- a/tools/build/options/WITH_INIT_ALL_PATTERN
+++ /dev/null
@@ -1,5 +0,0 @@
-.\" $FreeBSD$
-Build the base system or kernel with stack variables initialized to
-.Pq compiler defined
-debugging patterns on function entry.
-This option requires the clang compiler.
diff --git a/tools/build/options/WITH_INIT_ALL_ZERO b/tools/build/options/WITH_INIT_ALL_ZERO
deleted file mode 100644
index 046af704f268..000000000000
--- a/tools/build/options/WITH_INIT_ALL_ZERO
+++ /dev/null
@@ -1,4 +0,0 @@
-.\" $FreeBSD$
-Build the base system or kernel with stack variables initialized
-to zero on function entry.
-This option requires that the clang compiler be used.
diff --git a/tools/build/options/WITH_INSTALL_AS_USER b/tools/build/options/WITH_INSTALL_AS_USER
index 8e4a3f358429..9567b7162b2e 100644
--- a/tools/build/options/WITH_INSTALL_AS_USER
+++ b/tools/build/options/WITH_INSTALL_AS_USER
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Make install targets succeed for non-root users by installing
files with owner and group attributes set to that of the user running
the
diff --git a/tools/build/options/WITH_KERNEL_BIN b/tools/build/options/WITH_KERNEL_BIN
new file mode 100644
index 000000000000..b5e008dbd6f0
--- /dev/null
+++ b/tools/build/options/WITH_KERNEL_BIN
@@ -0,0 +1,8 @@
+Generate and install kernel.bin from kernel as part of the normal build and
+install processes for the kernel. Available only on arm and arm64.
+
+Usually this will be added to the kernel config file with:
+
+makeoptions WITH_KERNEL_BIN=1
+
+though it can also be used on the command line.
diff --git a/tools/build/options/WITH_KERNEL_RETPOLINE b/tools/build/options/WITH_KERNEL_RETPOLINE
index 6d101d82593f..c682e5594470 100644
--- a/tools/build/options/WITH_KERNEL_RETPOLINE
+++ b/tools/build/options/WITH_KERNEL_RETPOLINE
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Enable the "retpoline" mitigation for CVE-2017-5715 in the kernel
build.
diff --git a/tools/build/options/WITH_LIB32 b/tools/build/options/WITH_LIB32
new file mode 100644
index 000000000000..3c621483a60d
--- /dev/null
+++ b/tools/build/options/WITH_LIB32
@@ -0,0 +1,3 @@
+On 64-bit platforms, build the 32-bit library set and a
+.Nm ld-elf32.so.1
+runtime linker.
diff --git a/tools/build/options/WITH_LIBSOFT b/tools/build/options/WITH_LIBSOFT
index 81c66bdc700f..6fec6f3cb037 100644
--- a/tools/build/options/WITH_LIBSOFT
+++ b/tools/build/options/WITH_LIBSOFT
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
On armv6 only, enable soft float ABI compatibility libraries.
This option is for transitioning to the new hard float ABI.
diff --git a/tools/build/options/WITH_LLD b/tools/build/options/WITH_LLD
index fa863fbb18af..88bdcc34c49b 100644
--- a/tools/build/options/WITH_LLD
+++ b/tools/build/options/WITH_LLD
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build LLVM's lld linker.
diff --git a/tools/build/options/WITH_LLDB b/tools/build/options/WITH_LLDB
index b0287e08f69a..16e4b26f0239 100644
--- a/tools/build/options/WITH_LLDB
+++ b/tools/build/options/WITH_LLDB
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build the LLDB debugger.
diff --git a/tools/build/options/WITH_LLD_BOOTSTRAP b/tools/build/options/WITH_LLD_BOOTSTRAP
index 6539bb8a9779..87e333a6d6d7 100644
--- a/tools/build/options/WITH_LLD_BOOTSTRAP
+++ b/tools/build/options/WITH_LLD_BOOTSTRAP
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Build the LLD linker during the bootstrap phase of the build,
and use it during buildworld and buildkernel.
diff --git a/tools/build/options/WITH_LLD_IS_LD b/tools/build/options/WITH_LLD_IS_LD
deleted file mode 100644
index 05f9c1d6ffe3..000000000000
--- a/tools/build/options/WITH_LLD_IS_LD
+++ /dev/null
@@ -1,2 +0,0 @@
-.\" $FreeBSD$
-Use LLVM's LLD as the system linker.
diff --git a/tools/build/options/WITH_LLVM_ASSERTIONS b/tools/build/options/WITH_LLVM_ASSERTIONS
index 26f20a3827b3..0e7fbfbda0a3 100644
--- a/tools/build/options/WITH_LLVM_ASSERTIONS
+++ b/tools/build/options/WITH_LLVM_ASSERTIONS
@@ -1,2 +1 @@
-.\" $FreeBSD$
Enable debugging assertions in LLVM.
diff --git a/tools/build/options/WITH_LLVM_BINUTILS b/tools/build/options/WITH_LLVM_BINUTILS
index 8fa2c55f31a9..164e6e8ffabd 100644
--- a/tools/build/options/WITH_LLVM_BINUTILS
+++ b/tools/build/options/WITH_LLVM_BINUTILS
@@ -1,2 +1,18 @@
-.\" $FreeBSD$
-Install LLVM's binutils (ar, addr2line, nm, etc.) instead of ELF Tool Chain's.
+Install LLVM's binutils (without an llvm- prefix),
+instead of ELF Tool Chain's tools.
+This includes
+.Xr addr2line 1 ,
+.Xr ar 1 ,
+.Xr nm 1 ,
+.Xr objcopy 1 ,
+.Xr ranlib 1 ,
+.Xr readelf 1 ,
+.Xr size 1 ,
+and
+.Xr strip 1 .
+Regardless of this setting, LLVM tools are used for
+.Xr c++filt 1
+and
+.Xr objdump 1 .
+.Xr strings 1
+is always provided by ELF Tool Chain.
diff --git a/tools/build/options/WITH_LLVM_COV b/tools/build/options/WITH_LLVM_COV
index 046199d81c35..8cfe078ee231 100644
--- a/tools/build/options/WITH_LLVM_COV
+++ b/tools/build/options/WITH_LLVM_COV
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build the
.Xr llvm-cov 1
tool.
diff --git a/tools/build/options/WITH_LLVM_CXXFILT b/tools/build/options/WITH_LLVM_CXXFILT
index e80c0e9c1f35..f6ac38b20af7 100644
--- a/tools/build/options/WITH_LLVM_CXXFILT
+++ b/tools/build/options/WITH_LLVM_CXXFILT
@@ -1,2 +1 @@
-.\" $FreeBSD$
Install LLVM's llvm-cxxfilt as c++filt, instead of ELF Tool Chain's cxxfilt.
diff --git a/tools/build/options/WITH_LLVM_FULL_DEBUGINFO b/tools/build/options/WITH_LLVM_FULL_DEBUGINFO
new file mode 100644
index 000000000000..4362de9eb762
--- /dev/null
+++ b/tools/build/options/WITH_LLVM_FULL_DEBUGINFO
@@ -0,0 +1,2 @@
+Generate full debug information for LLVM libraries and tools, which uses
+more disk space and build resources, but allows for easier debugging.
diff --git a/tools/build/options/WITH_LLVM_TARGET_AARCH64 b/tools/build/options/WITH_LLVM_TARGET_AARCH64
index a1b4a3e4999a..4761f687b839 100644
--- a/tools/build/options/WITH_LLVM_TARGET_AARCH64
+++ b/tools/build/options/WITH_LLVM_TARGET_AARCH64
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build LLVM target support for AArch64.
The
.Va LLVM_TARGET_ALL
diff --git a/tools/build/options/WITH_LLVM_TARGET_ALL b/tools/build/options/WITH_LLVM_TARGET_ALL
index c2b744ece467..4345767b3350 100644
--- a/tools/build/options/WITH_LLVM_TARGET_ALL
+++ b/tools/build/options/WITH_LLVM_TARGET_ALL
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build support for all LLVM targets.
This option is always applied to the bootstrap compiler for buildworld when
LLVM is used.
diff --git a/tools/build/options/WITH_LLVM_TARGET_ARM b/tools/build/options/WITH_LLVM_TARGET_ARM
index 50bb47b9a104..5b2ef752ecda 100644
--- a/tools/build/options/WITH_LLVM_TARGET_ARM
+++ b/tools/build/options/WITH_LLVM_TARGET_ARM
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build LLVM target support for ARM.
The
.Va LLVM_TARGET_ALL
diff --git a/tools/build/options/WITH_LLVM_TARGET_BPF b/tools/build/options/WITH_LLVM_TARGET_BPF
index 1c01641de5a1..664cc85a52b9 100644
--- a/tools/build/options/WITH_LLVM_TARGET_BPF
+++ b/tools/build/options/WITH_LLVM_TARGET_BPF
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build LLVM target support for BPF.
The
.Va LLVM_TARGET_ALL
diff --git a/tools/build/options/WITH_LLVM_TARGET_MIPS b/tools/build/options/WITH_LLVM_TARGET_MIPS
index 2f625a5ede4b..4cc2a85cd34c 100644
--- a/tools/build/options/WITH_LLVM_TARGET_MIPS
+++ b/tools/build/options/WITH_LLVM_TARGET_MIPS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build LLVM target support for MIPS.
The
.Va LLVM_TARGET_ALL
diff --git a/tools/build/options/WITH_LLVM_TARGET_POWERPC b/tools/build/options/WITH_LLVM_TARGET_POWERPC
index 6c513e6cf20d..0ba82d255b8b 100644
--- a/tools/build/options/WITH_LLVM_TARGET_POWERPC
+++ b/tools/build/options/WITH_LLVM_TARGET_POWERPC
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build LLVM target support for PowerPC.
The
.Va LLVM_TARGET_ALL
diff --git a/tools/build/options/WITH_LLVM_TARGET_RISCV b/tools/build/options/WITH_LLVM_TARGET_RISCV
index 6aa100ac010b..1ad61b787b33 100644
--- a/tools/build/options/WITH_LLVM_TARGET_RISCV
+++ b/tools/build/options/WITH_LLVM_TARGET_RISCV
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build LLVM target support for RISC-V.
The
.Va LLVM_TARGET_ALL
diff --git a/tools/build/options/WITH_LLVM_TARGET_SPARC b/tools/build/options/WITH_LLVM_TARGET_SPARC
index d0590c570f40..0d67602688de 100644
--- a/tools/build/options/WITH_LLVM_TARGET_SPARC
+++ b/tools/build/options/WITH_LLVM_TARGET_SPARC
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build LLVM target support for SPARC.
The
.Va LLVM_TARGET_ALL
diff --git a/tools/build/options/WITH_LLVM_TARGET_X86 b/tools/build/options/WITH_LLVM_TARGET_X86
index 48886740d414..2b7c2aff945a 100644
--- a/tools/build/options/WITH_LLVM_TARGET_X86
+++ b/tools/build/options/WITH_LLVM_TARGET_X86
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build LLVM target support for X86.
The
.Va LLVM_TARGET_ALL
diff --git a/tools/build/options/WITH_LOADER_BIOS_TEXTONLY b/tools/build/options/WITH_LOADER_BIOS_TEXTONLY
new file mode 100644
index 000000000000..08804c19c691
--- /dev/null
+++ b/tools/build/options/WITH_LOADER_BIOS_TEXTONLY
@@ -0,0 +1,3 @@
+Use the old, FreeBSD 12 vidconsole.c.
+This only supports text mode without teken, without any graphics, font or video mode support.
+This setting only affects the i386 and amd64 BIOS boot loader.
diff --git a/tools/build/options/WITH_LOADER_EFI_SECUREBOOT b/tools/build/options/WITH_LOADER_EFI_SECUREBOOT
index 6ba0e310448b..08c7dc774b31 100644
--- a/tools/build/options/WITH_LOADER_EFI_SECUREBOOT
+++ b/tools/build/options/WITH_LOADER_EFI_SECUREBOOT
@@ -1,5 +1,3 @@
-.\" $FreeBSD$
Enable building
.Xr loader 8
with support for verification based on certificates obtained from UEFI.
-.Pp
diff --git a/tools/build/options/WITH_LOADER_FIREWIRE b/tools/build/options/WITH_LOADER_FIREWIRE
deleted file mode 100644
index 0204357f4345..000000000000
--- a/tools/build/options/WITH_LOADER_FIREWIRE
+++ /dev/null
@@ -1,3 +0,0 @@
-.\" $FreeBSD$
-Enable firewire support in /boot/loader on x86.
-This option is a nop on all other platforms.
diff --git a/tools/build/options/WITH_LOADER_GELI b/tools/build/options/WITH_LOADER_GELI
index cf588dba70f3..e6a5f10112bd 100644
--- a/tools/build/options/WITH_LOADER_GELI
+++ b/tools/build/options/WITH_LOADER_GELI
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build GELI bootloader support.
diff --git a/tools/build/options/WITH_LOADER_KBOOT b/tools/build/options/WITH_LOADER_KBOOT
new file mode 100644
index 000000000000..46704afe83f7
--- /dev/null
+++ b/tools/build/options/WITH_LOADER_KBOOT
@@ -0,0 +1 @@
+Build kboot, a linuxboot environment loader
diff --git a/tools/build/options/WITH_LOADER_LUA b/tools/build/options/WITH_LOADER_LUA
index a20cf237af63..08e996d8d494 100644
--- a/tools/build/options/WITH_LOADER_LUA
+++ b/tools/build/options/WITH_LOADER_LUA
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build LUA bindings for the boot loader.
diff --git a/tools/build/options/WITH_LOADER_OFW b/tools/build/options/WITH_LOADER_OFW
index b050c06406f9..d6912709b690 100644
--- a/tools/build/options/WITH_LOADER_OFW
+++ b/tools/build/options/WITH_LOADER_OFW
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build openfirmware bootloader components.
diff --git a/tools/build/options/WITH_LOADER_UBOOT b/tools/build/options/WITH_LOADER_UBOOT
index 0750d635e495..437f452960f8 100644
--- a/tools/build/options/WITH_LOADER_UBOOT
+++ b/tools/build/options/WITH_LOADER_UBOOT
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build ubldr.
diff --git a/tools/build/options/WITH_LOADER_VERBOSE b/tools/build/options/WITH_LOADER_VERBOSE
index 8c6064d86180..b06f88dce33e 100644
--- a/tools/build/options/WITH_LOADER_VERBOSE
+++ b/tools/build/options/WITH_LOADER_VERBOSE
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build with extra verbose debugging in the loader.
May explode already nearly too large loader over the limit.
Use with care.
diff --git a/tools/build/options/WITH_LOADER_VERIEXEC b/tools/build/options/WITH_LOADER_VERIEXEC
index e44732075525..a50ff9a317e6 100644
--- a/tools/build/options/WITH_LOADER_VERIEXEC
+++ b/tools/build/options/WITH_LOADER_VERIEXEC
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Enable building
.Xr loader 8
with support for verification similar to Verified Exec.
diff --git a/tools/build/options/WITH_LOADER_VERIEXEC_PASS_MANIFEST b/tools/build/options/WITH_LOADER_VERIEXEC_PASS_MANIFEST
index 32dd8525e824..b0a7e8f30975 100644
--- a/tools/build/options/WITH_LOADER_VERIEXEC_PASS_MANIFEST
+++ b/tools/build/options/WITH_LOADER_VERIEXEC_PASS_MANIFEST
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Enable building
.Xr loader 8
with support to pass a verified manifest to the kernel.
diff --git a/tools/build/options/WITH_LOADER_VERIEXEC_VECTX b/tools/build/options/WITH_LOADER_VERIEXEC_VECTX
new file mode 100644
index 000000000000..b1fc6c815ed8
--- /dev/null
+++ b/tools/build/options/WITH_LOADER_VERIEXEC_VECTX
@@ -0,0 +1,7 @@
+Enable building
+.Xr loader 8
+with support for hashing and verifying kernel and modules as a side effect
+of loading.
+.Pp
+Depends on
+.Va WITH_LOADER_VERIEXEC .
diff --git a/tools/build/options/WITH_MALLOC_PRODUCTION b/tools/build/options/WITH_MALLOC_PRODUCTION
index ae24de10ee7c..1a214ff805be 100644
--- a/tools/build/options/WITH_MALLOC_PRODUCTION
+++ b/tools/build/options/WITH_MALLOC_PRODUCTION
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Disable assertions and statistics gathering in
.Xr malloc 3 .
It also defaults the A and J runtime options to off.
diff --git a/tools/build/options/WITH_MANSPLITPKG b/tools/build/options/WITH_MANSPLITPKG
index be9280f90b61..3c04b590aade 100644
--- a/tools/build/options/WITH_MANSPLITPKG
+++ b/tools/build/options/WITH_MANSPLITPKG
@@ -1,2 +1 @@
-.\" $FreeBSD$
Split man pages into their own packages during make package.
diff --git a/tools/build/options/WITH_META_ERROR_TARGET b/tools/build/options/WITH_META_ERROR_TARGET
new file mode 100644
index 000000000000..25a7ea479e80
--- /dev/null
+++ b/tools/build/options/WITH_META_ERROR_TARGET
@@ -0,0 +1,13 @@
+Enable the META_MODE .ERROR target.
+.Pp
+This target will copy the meta file of a failed target
+to
+.Va ERROR_LOGDIR
+(default is
+.Ql ${SRCTOP:H}/error )
+to help with failure analysis.
+Depends on
+.Va WITH_META_MODE .
+This default when
+.Va WITH_DIRDEPS_BUILD
+is set.
diff --git a/tools/build/options/WITH_META_MODE b/tools/build/options/WITH_META_MODE
index a1c79b4ec6a2..a8a26e427f45 100644
--- a/tools/build/options/WITH_META_MODE
+++ b/tools/build/options/WITH_META_MODE
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Create
.Xr make 1
meta files when building, which can provide a reliable incremental build when
diff --git a/tools/build/options/WITH_MLX5TOOL b/tools/build/options/WITH_MLX5TOOL
index f0e45f321b47..2a6aea44bcfe 100644
--- a/tools/build/options/WITH_MLX5TOOL
+++ b/tools/build/options/WITH_MLX5TOOL
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Build
.Xr mlx5tool 8
diff --git a/tools/build/options/WITH_MODULE_DRM b/tools/build/options/WITH_MODULE_DRM
index 0034dd6af550..bf74dd6d2a90 100644
--- a/tools/build/options/WITH_MODULE_DRM
+++ b/tools/build/options/WITH_MODULE_DRM
@@ -1,2 +1 @@
-.\" $FreeBSD$
Enable creation of old drm video modules.
diff --git a/tools/build/options/WITH_MODULE_DRM2 b/tools/build/options/WITH_MODULE_DRM2
index 68e304d48296..d7593a8d83ad 100644
--- a/tools/build/options/WITH_MODULE_DRM2
+++ b/tools/build/options/WITH_MODULE_DRM2
@@ -1,2 +1 @@
-.\" $FreeBSD$
Enable creation of old drm2 video modules.
diff --git a/tools/build/options/WITH_NAND b/tools/build/options/WITH_NAND
deleted file mode 100644
index 390167fca341..000000000000
--- a/tools/build/options/WITH_NAND
+++ /dev/null
@@ -1,2 +0,0 @@
-.\" $FreeBSD$
-Build the NAND Flash components.
diff --git a/tools/build/options/WITH_NETLINK b/tools/build/options/WITH_NETLINK
new file mode 100644
index 000000000000..a59f0650dc84
--- /dev/null
+++ b/tools/build/options/WITH_NETLINK
@@ -0,0 +1,3 @@
+Build the
+.Xr genl 1
+utility.
diff --git a/tools/build/options/WITH_NETLINK_SUPPORT b/tools/build/options/WITH_NETLINK_SUPPORT
new file mode 100644
index 000000000000..cf161db07218
--- /dev/null
+++ b/tools/build/options/WITH_NETLINK_SUPPORT
@@ -0,0 +1,4 @@
+Make libraries and programs use
+.Xr snl 3
+interfaces instead of rtsock and
+.Xr sysctl 3 .
diff --git a/tools/build/options/WITH_NVME b/tools/build/options/WITH_NVME
index 78814749cc78..053cfc568b10 100644
--- a/tools/build/options/WITH_NVME
+++ b/tools/build/options/WITH_NVME
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build nvme related tools and kernel modules.
diff --git a/tools/build/options/WITH_OFED b/tools/build/options/WITH_OFED
new file mode 100644
index 000000000000..5c978418f001
--- /dev/null
+++ b/tools/build/options/WITH_OFED
@@ -0,0 +1,3 @@
+Build the
+.Dq "OpenFabrics Enterprise Distribution"
+InfiniBand software stack, including kernel modules and userspace libraries.
diff --git a/tools/build/options/WITH_OFED_EXTRA b/tools/build/options/WITH_OFED_EXTRA
index ed3a9515bc8e..5c72c19ef799 100644
--- a/tools/build/options/WITH_OFED_EXTRA
+++ b/tools/build/options/WITH_OFED_EXTRA
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build the non-essential components of the
.Dq "OpenFabrics Enterprise Distribution"
Infiniband software stack, mostly examples.
diff --git a/tools/build/options/WITH_OPENLDAP b/tools/build/options/WITH_OPENLDAP
index c815e6160726..93c9b2c14269 100644
--- a/tools/build/options/WITH_OPENLDAP
+++ b/tools/build/options/WITH_OPENLDAP
@@ -1,2 +1 @@
-.\" $FreeBSD$
Enable building LDAP support for kerberos using an openldap client from ports.
diff --git a/tools/build/options/WITH_OPENMP b/tools/build/options/WITH_OPENMP
index 03158075daed..1219c46edce7 100644
--- a/tools/build/options/WITH_OPENMP
+++ b/tools/build/options/WITH_OPENMP
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build LLVM's OpenMP runtime.
diff --git a/tools/build/options/WITH_PIE b/tools/build/options/WITH_PIE
index c328a79e07cc..35430ef3d737 100644
--- a/tools/build/options/WITH_PIE
+++ b/tools/build/options/WITH_PIE
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Build dynamically linked binaries as
Position-Independent Executable (PIE).
diff --git a/tools/build/options/WITH_PROFILE b/tools/build/options/WITH_PROFILE
index 3f91c4394911..fa7a88e87d6a 100644
--- a/tools/build/options/WITH_PROFILE
+++ b/tools/build/options/WITH_PROFILE
@@ -1,5 +1,4 @@
-.\" $FreeBSD$
Build profiled libraries for use with
.Xr gprof 8 .
-This option is deprecated and is not present in
-.Fx 14 .
+This option is deprecated and may not be present in a future version of
+.Fx .
diff --git a/tools/build/options/WITH_RATELIMIT b/tools/build/options/WITH_RATELIMIT
index 0566fadcf22e..fb42dd7817c7 100644
--- a/tools/build/options/WITH_RATELIMIT
+++ b/tools/build/options/WITH_RATELIMIT
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build the system with rate limit support.
.Pp
This makes
diff --git a/tools/build/options/WITH_RELRO b/tools/build/options/WITH_RELRO
new file mode 100644
index 000000000000..cfc344dd9cfe
--- /dev/null
+++ b/tools/build/options/WITH_RELRO
@@ -0,0 +1,5 @@
+Build all binaries with the Relocation Read-Only (RELRO) vulnerability
+mitigation applied.
+See also the
+.Va BIND_NOW
+option.
diff --git a/tools/build/options/WITH_REPRODUCIBLE_BUILD b/tools/build/options/WITH_REPRODUCIBLE_BUILD
index 22a615593699..46080d9ffd28 100644
--- a/tools/build/options/WITH_REPRODUCIBLE_BUILD
+++ b/tools/build/options/WITH_REPRODUCIBLE_BUILD
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Exclude build metadata (such as the build time, user, or host)
from the kernel, boot loaders, and uname output, so that builds produce
bit-for-bit identical output.
diff --git a/tools/build/options/WITH_RETPOLINE b/tools/build/options/WITH_RETPOLINE
index aa0019edaee3..f8e42dd54ccc 100644
--- a/tools/build/options/WITH_RETPOLINE
+++ b/tools/build/options/WITH_RETPOLINE
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Build the base system with the retpoline speculative execution
vulnerability mitigation for CVE-2017-5715.
diff --git a/tools/build/options/WITH_RPCBIND_WARMSTART_SUPPORT b/tools/build/options/WITH_RPCBIND_WARMSTART_SUPPORT
index be1e4d1a3b91..7eba885cdd39 100644
--- a/tools/build/options/WITH_RPCBIND_WARMSTART_SUPPORT
+++ b/tools/build/options/WITH_RPCBIND_WARMSTART_SUPPORT
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build
.Xr rpcbind 8
with warmstart support.
diff --git a/tools/build/options/WITH_SENDMAIL b/tools/build/options/WITH_SENDMAIL
index ca399c968fe1..7c74b81f5b30 100644
--- a/tools/build/options/WITH_SENDMAIL
+++ b/tools/build/options/WITH_SENDMAIL
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build and install
.Xr sendmail 8
and related programs.
diff --git a/tools/build/options/WITH_SHARED_TOOLCHAIN b/tools/build/options/WITH_SHARED_TOOLCHAIN
deleted file mode 100644
index 12956c3ff933..000000000000
--- a/tools/build/options/WITH_SHARED_TOOLCHAIN
+++ /dev/null
@@ -1,6 +0,0 @@
-.\" $FreeBSD$
-Build the toolchain binaries as dynamically linked executables.
-The set includes
-.Xr cc 1 ,
-.Xr make 1
-and necessary utilities like assembler, linker and library archive manager.
diff --git a/tools/build/options/WITH_SORT_THREADS b/tools/build/options/WITH_SORT_THREADS
index 0aa579b4b29a..f687157b352e 100644
--- a/tools/build/options/WITH_SORT_THREADS
+++ b/tools/build/options/WITH_SORT_THREADS
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Enable threads in
.Xr sort 1 .
diff --git a/tools/build/options/WITH_SSP b/tools/build/options/WITH_SSP
index 2f0c2c06c9dc..0088dd133782 100644
--- a/tools/build/options/WITH_SSP
+++ b/tools/build/options/WITH_SSP
@@ -1,2 +1 @@
-.\" $FreeBSD$
-Build world with propolice stack smashing protection.
+Build world with stack smashing protection.
diff --git a/tools/build/options/WITH_STAGING b/tools/build/options/WITH_STAGING
index e6bb304a5397..2ee71d1ea723 100644
--- a/tools/build/options/WITH_STAGING
+++ b/tools/build/options/WITH_STAGING
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Enable staging of files to a stage tree.
This can be best thought of as auto-install to
.Va DESTDIR
diff --git a/tools/build/options/WITH_STAGING_MAN b/tools/build/options/WITH_STAGING_MAN
index 5cd75abd98c2..5675c992ab67 100644
--- a/tools/build/options/WITH_STAGING_MAN
+++ b/tools/build/options/WITH_STAGING_MAN
@@ -1,2 +1 @@
-.\" $FreeBSD$
Enable staging of man pages to stage tree.
diff --git a/tools/build/options/WITH_STAGING_PROG b/tools/build/options/WITH_STAGING_PROG
index 2e401baac55f..716e08ff21af 100644
--- a/tools/build/options/WITH_STAGING_PROG
+++ b/tools/build/options/WITH_STAGING_PROG
@@ -1,2 +1 @@
-.\" $FreeBSD$
Enable staging of PROGs to stage tree.
diff --git a/tools/build/options/WITH_STALE_STAGED b/tools/build/options/WITH_STALE_STAGED
index 8bd874e5df98..2c80965809fe 100644
--- a/tools/build/options/WITH_STALE_STAGED
+++ b/tools/build/options/WITH_STALE_STAGED
@@ -1,2 +1 @@
-.\" $FreeBSD$
Check staged files are not stale.
diff --git a/tools/build/options/WITH_STATS b/tools/build/options/WITH_STATS
index 0ad24a169db2..2ab603935243 100644
--- a/tools/build/options/WITH_STATS
+++ b/tools/build/options/WITH_STATS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build and install
.Lb libstats
and dependent binaries.
diff --git a/tools/build/options/WITH_SYSROOT b/tools/build/options/WITH_SYSROOT
index 49a1f36320ec..4078a78cff44 100644
--- a/tools/build/options/WITH_SYSROOT
+++ b/tools/build/options/WITH_SYSROOT
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Enable use of sysroot during build.
Depends on
.Va WITH_DIRDEPS_BUILD .
diff --git a/tools/build/options/WITH_SYSTEM_COMPILER b/tools/build/options/WITH_SYSTEM_COMPILER
index 34818b8c9594..5dcb490b9d3c 100644
--- a/tools/build/options/WITH_SYSTEM_COMPILER
+++ b/tools/build/options/WITH_SYSTEM_COMPILER
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Opportunistically skip building a cross-compiler during the
bootstrap phase of the build.
If the currently installed compiler matches the planned bootstrap compiler
diff --git a/tools/build/options/WITH_SYSTEM_LINKER b/tools/build/options/WITH_SYSTEM_LINKER
index 9313dc70e436..ea03c2f9105b 100644
--- a/tools/build/options/WITH_SYSTEM_LINKER
+++ b/tools/build/options/WITH_SYSTEM_LINKER
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Opportunistically skip building a cross-linker during the
bootstrap phase of the build.
If the currently installed linker matches the planned bootstrap linker
diff --git a/tools/build/options/WITH_TCP_WRAPPERS b/tools/build/options/WITH_TCP_WRAPPERS
index 8fd8e2aa6c56..f17e3a38a193 100644
--- a/tools/build/options/WITH_TCP_WRAPPERS
+++ b/tools/build/options/WITH_TCP_WRAPPERS
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Build and install
.Xr tcpd 8 ,
and related utilities.
diff --git a/tools/build/options/WITH_TOOLCHAIN b/tools/build/options/WITH_TOOLCHAIN
new file mode 100644
index 000000000000..62624bf9e28b
--- /dev/null
+++ b/tools/build/options/WITH_TOOLCHAIN
@@ -0,0 +1,2 @@
+Install programs used for software development such as
+compilers, debuggers, linkers etc.
diff --git a/tools/build/options/WITH_UBSAN b/tools/build/options/WITH_UBSAN
new file mode 100644
index 000000000000..a27f72c713d7
--- /dev/null
+++ b/tools/build/options/WITH_UBSAN
@@ -0,0 +1,4 @@
+Build the base system with Undefined Behavior Sanitizer (UBSan) to detect
+various kinds of undefined behavior at runtime.
+Requires that Clang be used as the base system compiler
+and that the runtime support library is available
diff --git a/tools/build/options/WITH_UNIFIED_OBJDIR b/tools/build/options/WITH_UNIFIED_OBJDIR
index 2a551e1d9e17..536b99eec9a5 100644
--- a/tools/build/options/WITH_UNIFIED_OBJDIR
+++ b/tools/build/options/WITH_UNIFIED_OBJDIR
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Use the unified object directory format for
.Xr build 7
targets.
@@ -6,7 +5,8 @@ For cross-builds, native-builds, and sub-directory builds, the format of
.Pa ${MAKEOBJDIRPREFIX}/${.CURDIR}/${TARGET}.${TARGET_ARCH}
is used.
.Pp
-This option is transitional and will be removed before the 12.0 release,
+This option is transitional and will be removed in a future version of
+.Fx ,
at which time
-.va WITH_UNIFIED_OBJDIR
+.Va WITH_UNIFIED_OBJDIR
will be enabled permanently.
diff --git a/tools/build/options/WITH_USB_GADGET_EXAMPLES b/tools/build/options/WITH_USB_GADGET_EXAMPLES
index 57e2c044c09d..f783c17e2dac 100644
--- a/tools/build/options/WITH_USB_GADGET_EXAMPLES
+++ b/tools/build/options/WITH_USB_GADGET_EXAMPLES
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build USB gadget kernel modules.
diff --git a/tools/build/options/WITH_VERIEXEC b/tools/build/options/WITH_VERIEXEC
index 579209bcd17f..f0fc471a8f79 100644
--- a/tools/build/options/WITH_VERIEXEC
+++ b/tools/build/options/WITH_VERIEXEC
@@ -1,4 +1,3 @@
-.\" $FreeBSD$
Enable building
.Xr veriexec 8
which loads the contents of verified manifests into the kernel
diff --git a/tools/build/options/WITH_ZFS b/tools/build/options/WITH_ZFS
new file mode 100644
index 000000000000..4b1aea6df534
--- /dev/null
+++ b/tools/build/options/WITH_ZFS
@@ -0,0 +1,3 @@
+Build the ZFS file system kernel module, libraries, and user commands.
+Also enable ZFS support in utilities and libraries which implement
+ZFS-specific functionality.
diff --git a/tools/build/options/WITH_ZONEINFO_LEAPSECONDS_SUPPORT b/tools/build/options/WITH_ZONEINFO_LEAPSECONDS_SUPPORT
index efa830c7f2e2..f3d97df2fb89 100644
--- a/tools/build/options/WITH_ZONEINFO_LEAPSECONDS_SUPPORT
+++ b/tools/build/options/WITH_ZONEINFO_LEAPSECONDS_SUPPORT
@@ -1,2 +1 @@
-.\" $FreeBSD$
Build leapsecond information in to the timezone database.
diff --git a/tools/build/options/WITH_ZONEINFO_OLD_TIMEZONES_SUPPORT b/tools/build/options/WITH_ZONEINFO_OLD_TIMEZONES_SUPPORT
index 6d22fe1055a8..6cb2d5eb10d7 100644
--- a/tools/build/options/WITH_ZONEINFO_OLD_TIMEZONES_SUPPORT
+++ b/tools/build/options/WITH_ZONEINFO_OLD_TIMEZONES_SUPPORT
@@ -1,3 +1,2 @@
-.\" $FreeBSD$
Build backward compatibility timezone aliases in to the timezone
database.
diff --git a/tools/build/options/makeman b/tools/build/options/makeman
index 328b9faed881..30416b03b983 100755
--- a/tools/build/options/makeman
+++ b/tools/build/options/makeman
@@ -1,7 +1,6 @@
#!/bin/sh
#
# This file is in the public domain.
-# $FreeBSD$
#
# This script creates the src.conf.5 man page using template text contained
# herein and the contents of the WITH_* and WITHOUT_* files in the same
@@ -53,21 +52,32 @@ show_options()
__MAKE_CONF=/dev/null \
TARGET_ARCH=${target#*/} TARGET=${target%/*} |
while read var _ val ; do
- opt=${var#MK_}
- if [ $opt = "$prev_opt" ]; then
- echo "$target: ignoring duplicate option $opt" >&2
- continue
- fi
- prev_opt=$opt
- case ${val} in
- yes)
- echo ${opt} ${target}
+ case $var in
+ MK_*)
+ opt=${var#MK_}
+ if [ $opt = "$prev_opt" ]; then
+ echo "$target: ignoring duplicate option $opt" >&2
+ continue
+ fi
+ prev_opt=$opt
+ case ${val} in
+ yes)
+ echo ${opt} ${target}
+ ;;
+ no)
+ echo ${opt}
+ ;;
+ *)
+ echo "make showconfig broken: ${var} ${_} ${val} (not yes or no)" >&2
+ exit 1
+ ;;
+ esac
;;
- no)
- echo ${opt}
+ OPT_*)
+ # ignore
;;
*)
- echo "make showconfig broken: ${var} ${_} ${val} (not yes or no)" >&2
+ echo "make showconfig broken: ${var} ${_} ${val} not MK_ or OPT_" >&2
exit 1
;;
esac
@@ -117,19 +127,58 @@ show()
exit 1
;;
esac
+ requireds=`env -i ${make} -f ${srcdir}/share/mk/src.opts.mk \
+ -V '${__REQUIRED_OPTIONS:ts,}'`
env -i ${make} .MAKE.MODE=normal "$@" showconfig __MAKE_CONF=/dev/null \
SRCCONF=/dev/null |
while read var _ val ; do
- opt=${var#MK_}
- case ${val} in
- yes)
- echo ${yes_prefix}_${opt}
+ case ${var} in
+ MK_*)
+ opt=${var#MK_}
+ case ,${requireds}, in
+ *,${opt},*)
+ continue
+ ;;
+ esac
+ case ${val} in
+ yes)
+ echo ${yes_prefix}_${opt}
+ ;;
+ no)
+ echo ${no_prefix}_${opt}
+ ;;
+ *)
+ echo "make showconfig broken: ${var} ${_} ${val} (not yes or no)" >&2
+ exit 1
+ ;;
+ esac
;;
- no)
- echo ${no_prefix}_${opt}
+ OPT_*)
+ # ignore
;;
*)
- echo "make showconfig broken: ${var} ${_} ${val} (not yes or no)" >&2
+ echo "make showconfig broken: ${var} ${_} ${val} not MK_ or OPT_" >&2
+ exit 1
+ ;;
+ esac
+ done
+}
+
+show_group_options()
+{
+ env -i ${make} .MAKE.MODE=normal "$@" showconfig __MAKE_CONF=/dev/null \
+ SRCCONF=/dev/null |
+ while read var _ val ; do
+ case ${var} in
+ MK_*)
+ # ignore
+ ;;
+ OPT_*)
+ opt=${var#OPT_}
+ echo ${opt}
+ ;;
+ *)
+ echo "make showconfig broken: ${var} ${_} ${val} not MK_ or OPT_" >&2
exit 1
;;
esac
@@ -140,11 +189,9 @@ main()
{
echo "building src.conf.5 man page from files in ${PWD}" >&2
- fbsdid='$'FreeBSD'$'
- generated='@'generated
+ generated='@'generated
cat <<EOF
.\" DO NOT EDIT-- this file is $generated by tools/build/options/makeman.
-.\" ${fbsdid}
.Dd $(echo $(LC_TIME=C date +'%B %e, %Y'))
.Dt SRC.CONF 5
.Os
@@ -224,7 +271,11 @@ and
.Va MAKEOBJDIRPREFIX
as they are environment-only variables.
.Pp
-The values of variables are ignored regardless of their setting;
+The values of
+.Va WITH_
+and
+.Va WITHOUT_
+variables are ignored regardless of their setting;
even if they would be set to
.Dq Li FALSE
or
@@ -319,7 +370,24 @@ EOF
;;
esac
- twiddle >&2
+ printf "." >&2
+ done
+ printf "\n" >&2
+ cat <<EOF
+.El
+.Pp
+The following options accept a single value from a list of valid values.
+.Bl -tag -width indent
+EOF
+ show_group_options |
+ while read opt ; do
+ if [ ! -f ${opt} ] ; then
+ echo "no description found for ${opt}, skipping" >&2
+ continue
+ fi
+
+ echo ".It Va ${opt}"
+ cat ${opt}
done
cat <<EOF
.El
@@ -345,13 +413,4 @@ This manual page was autogenerated by
EOF
}
-twiddle_pos=0
-twiddle()
-{
- local c0='|' c1='/' c2='-' c3='\'
-
- eval printf '%c\\b' '$c'${twiddle_pos}
- twiddle_pos=$(((twiddle_pos+1)%4))
-}
-
main
diff --git a/tools/build/stat.h b/tools/build/stat.h
index 18d1460fcf67..1eeea36629b2 100644
--- a/tools/build/stat.h
+++ b/tools/build/stat.h
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#ifndef _LEGACY_SYS_STAT_H_
diff --git a/tools/build/stdlib.h b/tools/build/stdlib.h
index 5f9b90bc3d50..87d54c722144 100644
--- a/tools/build/stdlib.h
+++ b/tools/build/stdlib.h
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#ifndef _LEGACY_STDLIB_H_
diff --git a/tools/build/strings.h b/tools/build/strings.h
index 5dfb9596aaf6..0c5c5639ae54 100644
--- a/tools/build/strings.h
+++ b/tools/build/strings.h
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#ifndef _LEGACY_STRINGS_H_
diff --git a/tools/build/test-includes/Makefile b/tools/build/test-includes/Makefile
new file mode 100644
index 000000000000..2c25e0fb32ce
--- /dev/null
+++ b/tools/build/test-includes/Makefile
@@ -0,0 +1,58 @@
+#
+# A number of header files in sys/* have, going back to 7th Edition Unix in
+# 1979, reqiured other files (like sys/types.h) to compile. Likewise the 4BSD
+# networking code has had prerequisites. However, going back to around the turn
+# of the century, other systems have made them be independently includable
+# (wide-spread header include protection post-dates 7th edition Unix by maybe 4
+# or 5 years judging from netnews sources). Start down the path of making them
+# all independently includable by creating this test that fails buildworld when
+# they are not.
+#
+# The _foo.h files are excluded as they are internal-only headers and/or have
+# special requirements. Since the purpose of this is to allow autoconfig
+# programs to detect FreeBSD has different headers, omitting internal
+# headers cuts down on the noise w/o causing problems for the goal.
+#
+LIB= test-includes
+INTERNALLIB= This is a compile-only test
+MAN=
+HDRS!= (cd ${SRCTOP}/sys; ls sys/[!_]*.h | sort ; ls net*/[!_]*.h | sort)
+NO_PIC= yes
+
+# Some files have to be clean for extra defines too...
+CFLAGS.event.c= -D_WANT_KEVENT32 -D_WANT_FREEBSD11_KEVENT
+
+# We currently support C89 and newer compilers. Catch the odd little fussy
+# details like __inline that the header files must follow to support C89.
+CFLAGS+=-ansi
+
+.include "badfiles.inc"
+
+.for h c in ${HDRS:@x@$x ${x:S,/,_,g:R}.c@}
+.if !${BADHDRS:M${h}}
+SRCS+= $c
+CLEANFILES+=$c
+$c:
+ echo "#include <$h>" > ${.TARGET}
+.endif
+.endfor
+
+test-includes: lib${LIB}.a .PHONY
+
+#
+# Target to make the current known bad list. In general, this list should only
+# ever shrink and never grow.
+#
+.PHONY: badfiles.inc
+badfiles.inc:
+ @(cd ${SRCTOP}/sys; \
+ echo "# DO NOT EDIT-- this file is automatically @""generated."; \
+ echo "BADHDRS= \\"; \
+ for i in ${HDRS}; do \
+ echo "#include <$$i>" | \
+ ${CC} ${CFLAGS} -xc - -c -o /dev/null 2> /dev/null || \
+ echo " $$i \\"; \
+ done; \
+ echo) > ${.CURDIR}/badfiles.inc
+
+.include <bsd.lib.mk>
diff --git a/tools/build/test-includes/badfiles.inc b/tools/build/test-includes/badfiles.inc
new file mode 100644
index 000000000000..eb0cd05cb39f
--- /dev/null
+++ b/tools/build/test-includes/badfiles.inc
@@ -0,0 +1,326 @@
+# DO NOT EDIT-- this file is automatically @generated.
+BADHDRS= \
+ sys/aac_ioctl.h \
+ sys/agpio.h \
+ sys/atomic_common.h \
+ sys/atomic_san.h \
+ sys/bio.h \
+ sys/bitstring.h \
+ sys/blist.h \
+ sys/buf.h \
+ sys/buf_ring.h \
+ sys/bus.h \
+ sys/bus_dma.h \
+ sys/bus_dma_internal.h \
+ sys/bus_san.h \
+ sys/busdma_bufalloc.h \
+ sys/caprights.h \
+ sys/cdrio.h \
+ sys/cfictl.h \
+ sys/conf.h \
+ sys/cons.h \
+ sys/copyright.h \
+ sys/counter.h \
+ sys/coverage.h \
+ sys/cpu.h \
+ sys/cpuctl.h \
+ sys/cpuset.h \
+ sys/devmap.h \
+ sys/disk_zone.h \
+ sys/domain.h \
+ sys/domainset.h \
+ sys/dtrace_bsd.h \
+ sys/dvdio.h \
+ sys/elf32.h \
+ sys/elf64.h \
+ sys/elf_common.h \
+ sys/elf_generic.h \
+ sys/eui64.h \
+ sys/eventhandler.h \
+ sys/eventvar.h \
+ sys/exec.h \
+ sys/extattr.h \
+ sys/fail.h \
+ sys/firmware.h \
+ sys/fnv_hash.h \
+ sys/font.h \
+ sys/gmon.h \
+ sys/gpio.h \
+ sys/gtaskqueue.h \
+ sys/hhook.h \
+ sys/iconv.h \
+ sys/imgact.h \
+ sys/imgact_aout.h \
+ sys/imgact_elf.h \
+ sys/interrupt.h \
+ sys/intr.h \
+ sys/ioctl_compat.h \
+ sys/iov.h \
+ sys/iov_schema.h \
+ sys/ipmi.h \
+ sys/jail.h \
+ sys/kdb.h \
+ sys/kernel.h \
+ sys/khelp.h \
+ sys/kobj.h \
+ sys/ksem.h \
+ sys/ktls.h \
+ sys/ktrace.h \
+ sys/libkern.h \
+ sys/link_aout.h \
+ sys/linker.h \
+ sys/linker_set.h \
+ sys/lock.h \
+ sys/lock_profile.h \
+ sys/lockf.h \
+ sys/lockmgr.h \
+ sys/loginclass.h \
+ sys/mac.h \
+ sys/mbuf.h \
+ sys/md4.h \
+ sys/md5.h \
+ sys/mdioctl.h \
+ sys/memdesc.h \
+ sys/memrange.h \
+ sys/module.h \
+ sys/module_khelp.h \
+ sys/mpt_ioctl.h \
+ sys/msgbuf.h \
+ sys/mutex.h \
+ sys/namei.h \
+ sys/osd.h \
+ sys/pciio.h \
+ sys/pctrie.h \
+ sys/physmem.h \
+ sys/pipe.h \
+ sys/pmckern.h \
+ sys/posix4.h \
+ sys/power.h \
+ sys/priority.h \
+ sys/prng.h \
+ sys/qmath.h \
+ sys/racct.h \
+ sys/refcount.h \
+ sys/resourcevar.h \
+ sys/rman.h \
+ sys/rmlock.h \
+ sys/rtprio.h \
+ sys/runq.h \
+ sys/rwlock.h \
+ sys/sbuf.h \
+ sys/sema.h \
+ sys/sf_buf.h \
+ sys/sglist.h \
+ sys/sigio.h \
+ sys/signalvar.h \
+ sys/smr.h \
+ sys/smr_types.h \
+ sys/socketvar.h \
+ sys/sockopt.h \
+ sys/stack.h \
+ sys/stats.h \
+ sys/sx.h \
+ sys/syscallsubr.h \
+ sys/syslimits.h \
+ sys/systm.h \
+ sys/taskqueue.h \
+ sys/terminal.h \
+ sys/termios.h \
+ sys/tiio.h \
+ sys/timeb.h \
+ sys/timeet.h \
+ sys/timeffc.h \
+ sys/timepps.h \
+ sys/timetc.h \
+ sys/ttydevsw.h \
+ sys/ttydisc.h \
+ sys/ttyhook.h \
+ sys/ttyqueue.h \
+ sys/umtx.h \
+ sys/unpcb.h \
+ sys/user.h \
+ sys/vdso.h \
+ sys/vmmeter.h \
+ sys/vnode.h \
+ net/bpf.h \
+ net/bpf_buffer.h \
+ net/bpf_jitter.h \
+ net/bpf_zerocopy.h \
+ net/bpfdesc.h \
+ net/debugnet_int.h \
+ net/firewire.h \
+ net/if_arp.h \
+ net/if_dl.h \
+ net/if_enc.h \
+ net/if_lagg.h \
+ net/if_llatbl.h \
+ net/if_llc.h \
+ net/if_media.h \
+ net/if_mib.h \
+ net/if_pfsync.h \
+ net/if_tap.h \
+ net/if_tun.h \
+ net/if_var.h \
+ net/if_vlan_var.h \
+ net/iflib.h \
+ net/iflib_private.h \
+ net/ifq.h \
+ net/mp_ring.h \
+ net/mppc.h \
+ net/netisr.h \
+ net/netisr_internal.h \
+ net/netmap.h \
+ net/netmap_legacy.h \
+ net/paravirt.h \
+ net/pfil.h \
+ net/pfkeyv2.h \
+ net/pfvar.h \
+ net/radix.h \
+ net/raw_cb.h \
+ net/rndis.h \
+ net/route.h \
+ net/rss_config.h \
+ net/slcompress.h \
+ net/toeplitz.h \
+ net80211/ieee80211.h \
+ net80211/ieee80211_action.h \
+ net80211/ieee80211_adhoc.h \
+ net80211/ieee80211_ageq.h \
+ net80211/ieee80211_alq.h \
+ net80211/ieee80211_amrr.h \
+ net80211/ieee80211_crypto.h \
+ net80211/ieee80211_dfs.h \
+ net80211/ieee80211_freebsd.h \
+ net80211/ieee80211_hostap.h \
+ net80211/ieee80211_ht.h \
+ net80211/ieee80211_input.h \
+ net80211/ieee80211_ioctl.h \
+ net80211/ieee80211_mesh.h \
+ net80211/ieee80211_monitor.h \
+ net80211/ieee80211_node.h \
+ net80211/ieee80211_power.h \
+ net80211/ieee80211_proto.h \
+ net80211/ieee80211_radiotap.h \
+ net80211/ieee80211_ratectl.h \
+ net80211/ieee80211_rssadapt.h \
+ net80211/ieee80211_scan.h \
+ net80211/ieee80211_scan_sw.h \
+ net80211/ieee80211_sta.h \
+ net80211/ieee80211_superg.h \
+ net80211/ieee80211_tdma.h \
+ net80211/ieee80211_var.h \
+ net80211/ieee80211_vht.h \
+ net80211/ieee80211_wds.h \
+ netgraph/netgraph.h \
+ netgraph/ng_async.h \
+ netgraph/ng_bpf.h \
+ netgraph/ng_bridge.h \
+ netgraph/ng_car.h \
+ netgraph/ng_checksum.h \
+ netgraph/ng_cisco.h \
+ netgraph/ng_deflate.h \
+ netgraph/ng_etf.h \
+ netgraph/ng_hole.h \
+ netgraph/ng_ksocket.h \
+ netgraph/ng_l2tp.h \
+ netgraph/ng_lmi.h \
+ netgraph/ng_macfilter.h \
+ netgraph/ng_message.h \
+ netgraph/ng_mppc.h \
+ netgraph/ng_nat.h \
+ netgraph/ng_one2many.h \
+ netgraph/ng_parse.h \
+ netgraph/ng_patch.h \
+ netgraph/ng_pipe.h \
+ netgraph/ng_ppp.h \
+ netgraph/ng_pppoe.h \
+ netgraph/ng_pptpgre.h \
+ netgraph/ng_pred1.h \
+ netgraph/ng_sample.h \
+ netgraph/ng_socket.h \
+ netgraph/ng_socketvar.h \
+ netgraph/ng_source.h \
+ netgraph/ng_tag.h \
+ netgraph/ng_tcpmss.h \
+ netgraph/ng_tee.h \
+ netgraph/ng_vjc.h \
+ netgraph/ng_vlan.h \
+ netgraph/ng_vlan_rotate.h \
+ netgraph/qos.h \
+ netinet/dccp.h \
+ netinet/icmp6.h \
+ netinet/icmp_var.h \
+ netinet/if_ether.h \
+ netinet/igmp.h \
+ netinet/igmp_var.h \
+ netinet/in_fib.h \
+ netinet/in_kdtrace.h \
+ netinet/in_pcb.h \
+ netinet/in_pcb_var.h \
+ netinet/in_rss.h \
+ netinet/in_systm.h \
+ netinet/in_var.h \
+ netinet/ip.h \
+ netinet/ip6.h \
+ netinet/ip_carp.h \
+ netinet/ip_dummynet.h \
+ netinet/ip_fw.h \
+ netinet/ip_icmp.h \
+ netinet/ip_mroute.h \
+ netinet/ip_options.h \
+ netinet/pim_var.h \
+ netinet/sctp_auth.h \
+ netinet/sctp_bsd_addr.h \
+ netinet/sctp_kdtrace.h \
+ netinet/sctp_os.h \
+ netinet/sctp_os_bsd.h \
+ netinet/sctp_pcb.h \
+ netinet/sctp_structs.h \
+ netinet/sctp_sysctl.h \
+ netinet/tcp_debug.h \
+ netinet/tcp_hpts.h \
+ netinet/tcp_log_buf.h \
+ netinet/tcp_lro.h \
+ netinet/tcp_offload.h \
+ netinet/tcp_pcap.h \
+ netinet/tcp_ratelimit.h \
+ netinet/tcp_var.h \
+ netinet/tcpip.h \
+ netinet/toecore.h \
+ netinet/udplite.h \
+ netinet6/icmp6.h \
+ netinet6/in6.h \
+ netinet6/in6_fib.h \
+ netinet6/in6_rss.h \
+ netinet6/in6_var.h \
+ netinet6/ip6.h \
+ netinet6/ip6_mroute.h \
+ netinet6/ip6_var.h \
+ netinet6/ip6protosw.h \
+ netinet6/ip_fw_nat64.h \
+ netinet6/ip_fw_nptv6.h \
+ netinet6/mld6.h \
+ netinet6/mld6_var.h \
+ netinet6/nd6.h \
+ netinet6/pim6.h \
+ netinet6/pim6_var.h \
+ netinet6/raw_ip6.h \
+ netinet6/send.h \
+ netipsec/ah.h \
+ netipsec/ah_var.h \
+ netipsec/esp.h \
+ netipsec/esp_var.h \
+ netipsec/ipcomp.h \
+ netipsec/ipcomp_var.h \
+ netipsec/ipsec.h \
+ netipsec/ipsec6.h \
+ netipsec/key_debug.h \
+ netipsec/keysock.h \
+ netipsec/xform.h \
+ netsmb/netbios.h \
+ netsmb/smb.h \
+ netsmb/smb_conn.h \
+ netsmb/smb_rq.h \
+ netsmb/smb_subr.h \
+ netsmb/smb_tran.h \
+
diff --git a/tools/build/utimensat.c b/tools/build/utimensat.c
index 210599303cb6..49c389d13fb1 100644
--- a/tools/build/utimensat.c
+++ b/tools/build/utimensat.c
@@ -25,8 +25,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/stat.h>
#include <errno.h>
diff --git a/tools/bus_space/C/Makefile b/tools/bus_space/C/Makefile
index 5fd64c790277..050fa3730fd4 100644
--- a/tools/bus_space/C/Makefile
+++ b/tools/bus_space/C/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
LIB= bus
SHLIB_MAJOR= 0
diff --git a/tools/bus_space/C/lang.c b/tools/bus_space/C/lang.c
index 3ef454466f9d..e6d242b5a7f8 100644
--- a/tools/bus_space/C/lang.c
+++ b/tools/bus_space/C/lang.c
@@ -24,9 +24,6 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <errno.h>
diff --git a/tools/bus_space/C/libbus.h b/tools/bus_space/C/libbus.h
index 1f0c3f176516..420aa4563e94 100644
--- a/tools/bus_space/C/libbus.h
+++ b/tools/bus_space/C/libbus.h
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#ifndef _LIBBUS_SPACE_H_
diff --git a/tools/bus_space/Makefile b/tools/bus_space/Makefile
index b13e3cfd7146..95ea368ffd70 100644
--- a/tools/bus_space/Makefile
+++ b/tools/bus_space/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SUBDIR= \
C \
diff --git a/tools/bus_space/Makefile.inc b/tools/bus_space/Makefile.inc
index 080689ade4a0..af885574a3d3 100644
--- a/tools/bus_space/Makefile.inc
+++ b/tools/bus_space/Makefile.inc
@@ -1,4 +1,3 @@
-# $FreeBSD$
.PATH: ${.CURDIR}/..
SRCS+= bus.c busdma.c
diff --git a/tools/bus_space/Python/Makefile b/tools/bus_space/Python/Makefile
index 2097c8e3824a..e56b9d2b1c15 100644
--- a/tools/bus_space/Python/Makefile
+++ b/tools/bus_space/Python/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SHLIB_NAME= bus.so
SRCS= lang.c
diff --git a/tools/bus_space/Python/lang.c b/tools/bus_space/Python/lang.c
index 4fe3e6ee3d13..4af26da373bf 100644
--- a/tools/bus_space/Python/lang.c
+++ b/tools/bus_space/Python/lang.c
@@ -25,8 +25,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <Python.h>
#include "bus.h"
diff --git a/tools/bus_space/bus.c b/tools/bus_space/bus.c
index 1b0d2ca59c3d..d562f5c04374 100644
--- a/tools/bus_space/bus.c
+++ b/tools/bus_space/bus.c
@@ -25,8 +25,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <errno.h>
diff --git a/tools/bus_space/bus.h b/tools/bus_space/bus.h
index a1835d74e2b5..0298a74599ef 100644
--- a/tools/bus_space/bus.h
+++ b/tools/bus_space/bus.h
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#ifndef _TOOLS_BUS_SPACE_H_
diff --git a/tools/bus_space/busdma.c b/tools/bus_space/busdma.c
index 04a9da8b2ef4..eec9a1e05ffd 100644
--- a/tools/bus_space/busdma.c
+++ b/tools/bus_space/busdma.c
@@ -25,8 +25,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <assert.h>
diff --git a/tools/bus_space/busdma.h b/tools/bus_space/busdma.h
index ec4890dd201f..2868723da86e 100644
--- a/tools/bus_space/busdma.h
+++ b/tools/bus_space/busdma.h
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#ifndef _TOOLS_BUS_DMA_H_
diff --git a/tools/bus_space/examples/am79c900_diag.py b/tools/bus_space/examples/am79c900_diag.py
index 3a15f60a91b8..7c72e2b6dbe2 100644
--- a/tools/bus_space/examples/am79c900_diag.py
+++ b/tools/bus_space/examples/am79c900_diag.py
@@ -24,7 +24,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
'''
diff --git a/tools/debugscripts/README b/tools/debugscripts/README
index a218368cc399..eb301c93d993 100644
--- a/tools/debugscripts/README
+++ b/tools/debugscripts/README
@@ -1,4 +1,3 @@
-$FreeBSD$
This directory contains gdb macros for kernel debugging. When you
build a debug kernel, the target "gdbinit" in the kernel Makefile will
diff --git a/tools/debugscripts/dot.gdbinit b/tools/debugscripts/dot.gdbinit
index 1a340c08ab8c..4923f2254e3b 100644
--- a/tools/debugscripts/dot.gdbinit
+++ b/tools/debugscripts/dot.gdbinit
@@ -1,4 +1,3 @@
-# $FreeBSD$
# .gdbinit file for remote serial debugging.
#
# XXX Do not use this file directly. It contains parameters which are
diff --git a/tools/debugscripts/gdbinit.i386 b/tools/debugscripts/gdbinit.i386
index 95dbf6e93c87..19c97f619a85 100644
--- a/tools/debugscripts/gdbinit.i386
+++ b/tools/debugscripts/gdbinit.i386
@@ -1,4 +1,3 @@
-# $FreeBSD$
# Assembler-level macros for i386
# Disassemble the next 10 instructions.
define xi
diff --git a/tools/debugscripts/gdbinit.kernel b/tools/debugscripts/gdbinit.kernel
index 274eb73d743b..5fa3efc7e7df 100644
--- a/tools/debugscripts/gdbinit.kernel
+++ b/tools/debugscripts/gdbinit.kernel
@@ -1,4 +1,3 @@
-# $FreeBSD$
# General kernel macros
# Print the command name of the current process
diff --git a/tools/debugscripts/netstat-anr.gdb b/tools/debugscripts/netstat-anr.gdb
index d27ae65a94f6..2c1faaf86a98 100644
--- a/tools/debugscripts/netstat-anr.gdb
+++ b/tools/debugscripts/netstat-anr.gdb
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
document netstat-anr
diff --git a/tools/diag/README b/tools/diag/README
index 689c998b719e..57e6773a104a 100644
--- a/tools/diag/README
+++ b/tools/diag/README
@@ -1,4 +1,3 @@
-$FreeBSD$
This directory is for diagnostic programs.
diff --git a/tools/diag/dumpvfscache/Makefile b/tools/diag/dumpvfscache/Makefile
index 3cd9c5d71ae8..3b3959c318e7 100644
--- a/tools/diag/dumpvfscache/Makefile
+++ b/tools/diag/dumpvfscache/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= dumpvfscache
LIBADD= kvm
diff --git a/tools/diag/dumpvfscache/dumpvfscache.c b/tools/diag/dumpvfscache/dumpvfscache.c
index 3f5eb5793a8a..44c2021a5a42 100644
--- a/tools/diag/dumpvfscache/dumpvfscache.c
+++ b/tools/diag/dumpvfscache/dumpvfscache.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
diff --git a/tools/diag/localeck/Makefile b/tools/diag/localeck/Makefile
index 0dc7b0fe19b3..24ca74c8489c 100644
--- a/tools/diag/localeck/Makefile
+++ b/tools/diag/localeck/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= localeck
MAN=
diff --git a/tools/diag/localeck/docheck.sh b/tools/diag/localeck/docheck.sh
index 7f47851f7bdf..14ca26970fb3 100644
--- a/tools/diag/localeck/docheck.sh
+++ b/tools/diag/localeck/docheck.sh
@@ -3,7 +3,6 @@
# Validate all locales installed in specified directory
# (by default check system locales)
#
-# $FreeBSD$
#
LOCALEDIR=/usr/share/locale
diff --git a/tools/diag/localeck/localeck.c b/tools/diag/localeck/localeck.c
index 4ce7e458f147..c2fb1f5a5599 100644
--- a/tools/diag/localeck/localeck.c
+++ b/tools/diag/localeck/localeck.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <locale.h>
diff --git a/tools/diag/prtblknos/Makefile b/tools/diag/prtblknos/Makefile
index 385692c820ca..c337eec72a79 100644
--- a/tools/diag/prtblknos/Makefile
+++ b/tools/diag/prtblknos/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
BINDIR?= /usr/bin
diff --git a/tools/diag/prtblknos/README b/tools/diag/prtblknos/README
index 8d3474483383..2970a638c0dd 100644
--- a/tools/diag/prtblknos/README
+++ b/tools/diag/prtblknos/README
@@ -1,4 +1,3 @@
-# $FreeBSD$
This is a little C-program that can be used to print out the list
of blocks used by a requested list of inodes.
diff --git a/tools/diag/prtblknos/main.c b/tools/diag/prtblknos/main.c
index 25a717760922..c04b0812d6c6 100644
--- a/tools/diag/prtblknos/main.c
+++ b/tools/diag/prtblknos/main.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <ufs/ffs/fs.h>
@@ -44,9 +42,7 @@ void prtblknos(struct fs *fs, union dinode *dp);
struct uufsd disk;
int
-main(argc, argv)
- int argc;
- char *argv[];
+main(int argc, char *argv[])
{
union dinodep dp;
struct fs *fs;
@@ -56,7 +52,6 @@ main(argc, argv)
char ibuf[64];
char *fsname, *filename;
ino_t inonum;
- int error;
filename = NULL;
if (argc == 2) {
@@ -83,7 +78,8 @@ main(argc, argv)
fsname = *++argv;
/* get the superblock. */
- if ((error = ufs_disk_fillout(&disk, fsname)) < 0)
+ if (ufs_disk_fillout_blank(&disk, fsname) == -1 ||
+ sbfind(&disk, 0) == -1)
err(1, "Cannot access file system superblock on %s", fsname);
fs = (struct fs *)&disk.d_sb;
@@ -99,7 +95,7 @@ main(argc, argv)
(void)printf("%s (inode #%jd): ", filename,
(intmax_t)inonum);
- if ((error = getinode(&disk, &dp, inonum)) < 0)
+ if (getinode(&disk, &dp, inonum) < 0)
warn("Read of inode %jd on %s failed: %s",
(intmax_t)inonum, fsname, disk.d_error);
diff --git a/tools/diag/prtblknos/prtblknos.c b/tools/diag/prtblknos/prtblknos.c
index 771d79e43ec9..e0d7a7389b48 100644
--- a/tools/diag/prtblknos/prtblknos.c
+++ b/tools/diag/prtblknos/prtblknos.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
@@ -53,9 +51,7 @@ static void indirprt(struct fs *, int, ufs_lbn_t, ufs_lbn_t, ufs2_daddr_t,
ufs_lbn_t);
void
-prtblknos(fs, dp)
- struct fs *fs;
- union dinode *dp;
+prtblknos(struct fs *fs, union dinode *dp)
{
int i, mode, frags;
ufs_lbn_t lbn, lastlbn, len, blksperindir;
@@ -99,8 +95,8 @@ prtblknos(fs, dp)
if (size < fs->fs_maxsymlinklen) {
printf("symbolic link referencing %s\n",
(fs->fs_magic == FS_UFS1_MAGIC) ?
- (char *)dp->dp1.di_db :
- (char *)dp->dp2.di_db);
+ dp->dp1.di_shortlink :
+ dp->dp2.di_shortlink);
return;
}
printf("symbolic link\n");
@@ -154,13 +150,8 @@ prtblknos(fs, dp)
}
static void
-indirprt(fs, level, blksperindir, lbn, blkno, lastlbn)
- struct fs *fs;
- int level;
- ufs_lbn_t blksperindir;
- ufs_lbn_t lbn;
- ufs2_daddr_t blkno;
- ufs_lbn_t lastlbn;
+indirprt(struct fs *fs, int level, ufs_lbn_t blksperindir, ufs_lbn_t lbn,
+ ufs2_daddr_t blkno, ufs_lbn_t lastlbn)
{
char indir[MAXBSIZE];
ufs_lbn_t i, last;
@@ -209,10 +200,7 @@ indirprt(fs, level, blksperindir, lbn, blkno, lastlbn)
}
static const char *
-distance(fs, lastblk, firstblk)
- struct fs *fs;
- ufs2_daddr_t lastblk;
- ufs2_daddr_t firstblk;
+distance(struct fs *fs, ufs2_daddr_t lastblk, ufs2_daddr_t firstblk)
{
ufs2_daddr_t delta;
int firstcg, lastcg;
@@ -237,12 +225,8 @@ distance(fs, lastblk, firstblk)
static const char *indirname[UFS_NIADDR] = { "First", "Second", "Third" };
static void
-printblk(fs, lbn, blkno, numfrags, lastlbn)
- struct fs *fs;
- ufs_lbn_t lbn;
- ufs2_daddr_t blkno;
- int numfrags;
- ufs_lbn_t lastlbn;
+printblk(struct fs *fs, ufs_lbn_t lbn, ufs2_daddr_t blkno, int numfrags,
+ ufs_lbn_t lastlbn)
{
static int seq;
static ufs2_daddr_t totfrags, lastindirblk, lastblk, firstblk;
diff --git a/tools/ifnet/convert_drvapi.sh b/tools/ifnet/convert_ifapi.sh
index dd30c7a229e0..b226847c9595 100755
--- a/tools/ifnet/convert_drvapi.sh
+++ b/tools/ifnet/convert_ifapi.sh
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Copyright (c) 2014 Juniper Networks, Inc.
+# Copyright (c) 2014, 2019, 2020 Juniper Networks, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -24,7 +24,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
@@ -35,6 +34,8 @@
# Author: Sreekanth Rupavatharam
#
+MAX_PASSES=100
+
if [ $# -lt 1 ]
then
echo " $0 <driver source (e.g., if_em.c)>";
@@ -47,40 +48,24 @@ __ifp__="ifp";
file=$1
rotateCursor() {
- case $toggle
- in
- 1)
- printf " \\ "
- printf "\b\b"
- toggle="2"
- ;;
-
- 2)
- printf " | "
- printf "\b\b\b"
- toggle="3"
- ;;
-
- 3)
- printf " / "
- printf "\b\b\b"
- toggle="4"
- ;;
-
- *)
- printf " - "
- printf "\b\b\b"
- toggle="1"
- ;;
- esac
+ case $toggle in
+ 1) c="\\" ;;
+ 2) c="|" ;;
+ 3) c="/" ;;
+ *) c="-" ;;
+ esac
+ toggle=$(((toggle + 1) % 4))
+ printf " %s \b\b\b" $c
}
-handle_set() {
# Handle the case where $__ifp__->if_blah = XX;
- line=$1
- set=`echo $line| grep "$__ifp__->.* = "`
- if [ ! -z "$set" ]
+handle_set() {
+ if echo $line | grep "$__ifp__->.* = " > /dev/null 2>&1
then
+ if echo $line | grep "\[$__ifp__->.* = " > /dev/null 2>&1; then
+ # Special case of array[ifp->member] = value
+ return 1
+ fi
word=`echo $line | awk -F "if_" ' { print $2 }' | awk -F" =" '{ print $1 }'`
value=`echo $line | awk -F "=" '{ print $2 }' | sed -e 's/;//g'`
new=`echo if_set$word"\($__ifp__,"$value");"`
@@ -93,9 +78,7 @@ handle_set() {
}
handle_inc() {
- line=$1
- inc=`echo $line | grep "$__ifp__->.*++\|++$__ifp__->.*"`
- if [ ! -z "$inc" ]
+ if echo $line | grep "$__ifp__->.*++\|++$__ifp__->.*" > /dev/null 2>&1
then
word=`echo $line | awk -F"if_" '{ print $2 }'|awk -F"\+" '{ print $1}'`
value=' 1';
@@ -104,14 +87,12 @@ handle_inc() {
new=`echo $new | sed -e 's/&/\\\&/'`
line=`echo $line| sed -e's/'$old'/'$new'/g'`
return 0;
- fi
+ fi
return 1;
}
handle_add() {
- line=$1
- add=`echo $line|grep "$__ifp__->.*+= "`
- if [ ! -z "$add" ]
+ if echo $line | grep "$__ifp__->.*+= " > /dev/null 2>&1
then
word=`echo $line | awk -F"if_" '{ print $2 }'|awk '{ print $1}'`
value=`echo $line | awk -F"=" '{ print $2}' | sed -e 's/;//g'`
@@ -126,14 +107,12 @@ handle_add() {
}
handle_or() {
- line=$1
- or=`echo $line|grep "$__ifp__->.*|= "`
- if [ ! -z "$or" ]
+ if echo $line | grep "$__ifp__->.*|= " > /dev/null 2>&1
then
- word=`echo $line | awk -F"if_" '{ print $2 }'|awk '{ print $1}'`
+ word=`echo $line | awk -F"if_" '{ print $2 }'|awk '{ print $1}'`
value=`echo $line | awk -F"=" '{ print $2}' | sed -e 's/;//g'`
new=`echo if_set${word}bit"($__ifp__,$value, 0);"`
- new=`echo $new | sed -e 's/&/\\\&/'`
+ new=`echo $new | sed -e 's/&/\\\&/'`
#line=`echo $line|sed -e 's/&/\\&/'`
old=`echo $line|sed -e 's/^[ ]*//'`
line=`echo $line| sed -e's/'$old'/'$new'/g'`
@@ -144,11 +123,9 @@ handle_or() {
}
handle_and() {
- line=$1
- or=`echo $line|grep "$__ifp__->.*&= "`
- if [ ! -z "$or" ]
+ if echo $line |grep "$__ifp__->.*&= " > /dev/null 2>&1
then
- word=`echo $line | awk -F"if_" '{ print $2 }'|awk '{ print $1}'`
+ word=`echo $line | awk -F"if_" '{ print $2 }'|awk '{ print $1}'`
value=`echo $line | awk -F"=" '{ print $2}' | sed -e 's/;//g'`
value=`echo $value | sed -e's/~//g'`
new=`echo if_set${word}bit"\($__ifp__, 0,$value);"`
@@ -162,8 +139,7 @@ handle_and() {
}
handle_toggle() {
- line=$1
- if [ ! -z `echo $line | grep "\^="` ]
+ if echo $line | grep "\^=" > /dev/null 2>&1
then
line=`echo $line | sed -e 's/'"$__ifp__"'->if_\(.*\) ^=\(.*\);/if_toggle\1('"$__ifp__"',\2);/g'`
return 0;
@@ -174,9 +150,7 @@ handle_toggle() {
# XXX - this needs updating
handle_misc() {
- line=$1
- get=`echo $line | grep "if_capabilities\|if_flags\|if_softc\|if_capenable\|if_mtu\|if_drv_flags"`
- if [ ! -z "$get" ]
+ if echo $line | grep "$__ifp__->\(if_capabilities\|if_flags\|if_softc\|if_capenable\|if_hwassist\|if_mtu\|if_drv_flags\|if_index\|if_alloctype\|if_dname\|if_xname\|if_addr\|if_hw_tsomax\|if_hw_tsomaxsegcount\|if_hw_tsomaxsegsize\)" > /dev/null 2>&1
then
word=`echo $line |awk -F"$__ifp__->if_" '{ print $2 }' | \
sed -e's/[^a-zA-Z0-9_]/\@/'|awk -F"\@" '{ print $1}'`
@@ -192,31 +166,66 @@ handle_misc() {
replace_str ()
{
- line=$1
- orig=$2
- new=$3
- line=`echo $line | sed -e 's/'"$orig"'\(.*\)/'"$new"'\1/g'`
- return 0;
+ orig=$1
+ new=$2
+
+ if echo $line | grep "$orig" > /dev/null 2>&1
+ then
+ line=`echo $line | sed -e "s|$orig|$new|"`
+ else
+ return 1
+ fi
}
-# Handle special cases which do not fall under regular patterns
handle_special ()
{
- line=$1
- replace_str $line "(\*$__ifp__->if_input)" "if_input"
- replace_str $line "if_setinit" "if_setinitfn"
- replace_str $line "if_setioctl" "if_setioctlfn"
- replace_str $line "if_getdrv_flags" "if_getdrvflags"
- replace_str $line "if_setdrv_flagsbit" "if_setdrvflagbits"
- replace_str $line "if_setstart" "if_setstartfn"
- replace_str $line "if_sethwassistbit" "if_sethwassistbits"
- replace_str $line "ifmedia_init" "ifmedia_init_drv"
- replace_str $line "IFQ_DRV_IS_EMPTY(&$__ifp__->if_snd)" "if_sendq_empty($__ifp__)"
- replace_str $line "IFQ_DRV_PREPEND(&$__ifp__->if_snd" "if_sendq_prepend($__ifp__"
- replace_str $line "IFQ_SET_READY(&ifp->if_snd)" "if_setsendqready($__ifp__)"
- line=`echo $line | sed -e 's/IFQ_SET_MAXLEN(&'$__ifp__'->if_snd, \(.*\))/if_setsendqlen('$__ifp__', \1)/g'`
- line=`echo $line | sed -e 's/IFQ_DRV_DEQUEUE(&'$__ifp__'->if_snd, \(.*\))/\1 = if_dequeue('$__ifp__')/g'`
- return 0
+ replace_str "(\*$__ifp__->if_input)" "if_input" || \
+ replace_str "IFQ_DRV_IS_EMPTY(&$__ifp__->if_snd)" \
+ "if_sendq_empty($__ifp__)" || \
+ replace_str "IFQ_DRV_PREPEND(&$__ifp__->if_snd" \
+ "if_sendq_prepend($__ifp__" || \
+ replace_str "IFQ_SET_READY(&$__ifp__->if_snd)" \
+ "if_setsendqready($__ifp__)" || \
+ replace_str "VLAN_CAPABILITIES($__ifp__)" \
+ "if_vlancap($__ifp__)" || \
+ replace_str "IFQ_SET_MAXLEN(&$__ifp__->if_snd," \
+ "if_setsendqlen($__ifp__," || \
+ replace_str "IFQ_DRV_DEQUEUE(&$__ifp__->if_snd, \(.*\))" \
+ "\1 = if_dequeue($__ifp__)"
+ replace_str "$__ifp__->if_vlantrunk != NULL" \
+ "if_vlantrunkinuse($__ifp__)"
+}
+
+handle_ifps() {
+ handle_set || handle_inc || handle_add || handle_or || handle_and || \
+ handle_toggle || handle_misc || handle_special
+}
+
+handle_renames ()
+{
+ replace_str "if_setinit(" "if_setinitfn(" || \
+ replace_str "if_setioctl(" "if_setioctlfn(" || \
+ replace_str "if_setqflush(" "if_setqflushfn(" || \
+ replace_str "if_settransmit(" "if_settransmitfn(" || \
+ replace_str "if_getdrv_flags(" "if_getdrvflags(" || \
+ replace_str "if_setdrv_flagsbit(" "if_setdrvflagbits(" || \
+ replace_str "if_setstart(" "if_setstartfn(" || \
+ replace_str "if_sethwassistbit(" "if_sethwassistbits(" || \
+ replace_str "ifmedia_init(" "ifmedia_init_drv("
+}
+
+check_ifp()
+{
+ case "$line" in
+ *"${__ifp__}->"*) return 0;; # Still an ifp to convert
+ esac
+ return 1
+}
+
+add_failed ()
+{
+ line="$line /* ${FAIL_PAT} */"
+ return 1
}
if [ -e $file.tmp ]
@@ -225,76 +234,44 @@ then
fi
IFS=
echo -n "Conversion for $file started, please wait: "
-FAIL_PAT="XXX - DRVAPI"
+FAIL_PAT="XXX - IFAPI"
count=0
-cat $1 | while read -r line
+while read -r line
do
-count=`expr $count + 1`
-rotateCursor
-pat=`echo $line | grep "$__ifp__->"`
-while [ "$pat" != "" ]
-do
- pat=`echo $line | grep "$__ifp__->"`
- if [ ! -z `echo $pat | grep "$FAIL_PAT"` ]
- then
- break;
- fi
+ rotateCursor
- handle_set $line
+ # There is an ifp, we need to process it
+ passes=0
+ while check_ifp
+ do
+ if handle_ifps
+ then
+ handle_renames
+ else
+ add_failed
+ break
+ fi
+ passes=$((passes + 1))
+ if [ $passes -ge $MAX_PASSES ]; then
+ add_failed
+ break
+ fi
+ done
- if [ $? != 0 ]
- then
- handle_inc $line
- fi
-
- if [ $? != 0 ]
- then
- handle_add $line
- fi
-
- if [ $? != 0 ]
- then
- handle_or $line
- fi
-
- if [ $? != 0 ]
- then
- handle_and $line
- fi
-
- if [ $? != 0 ]
- then
- handle_toggle $line
- fi
-
- if [ $? != 0 ]
- then
- handle_misc $line
- fi
-
- if [ $? != 0 ]
- then
- handle_special $line
- fi
-
- if [ ! -z `echo $line | grep "$__ifp__->"` ]
- then
- line=`echo $line | sed -e 's:$: \/* '${FAIL_PAT}' *\/:g'`
- fi
-done
- line=`echo "$line" | sed -e 's:VLAN_CAPABILITIES('$__ifp__'):if_vlancap('$__ifp__'):g'`
# Replace the ifnet * with if_t
- if [ ! -z `echo $line | grep "struct ifnet"` ]
- then
- line=`echo $line | sed -e 's/struct ifnet[ \t]*\*/if_t /g'`
- fi
- echo "$line" >> $file.tmp
-done
+ case "$line" in
+ *"struct ifnet"*)
+ line=`echo $line | sed -e 's/struct ifnet[ \t]*\*/if_t /g'` ;;
+ *"IF_LLADDR("*)
+ line=`echo $line | sed -e 's/IF_LLADDR(/if_getlladdr(/g'` ;;
+ esac
+ printf "%s\n" "$line" >> $file.tmp
+done < $1
echo ""
count=`grep $FAIL_PAT $file.tmp | wc -l`
if [ $count -gt 0 ]
then
- echo "$count lines could not be converted to DRVAPI"
+ echo "$count lines could not be converted to IFAPI"
echo "Look for /* $FAIL_PAT */ in the converted file"
fi
echo "original $file has been moved to $file.orig"
diff --git a/tools/install.sh b/tools/install.sh
index 8e7fd2ef1300..c0a6715670d9 100644
--- a/tools/install.sh
+++ b/tools/install.sh
@@ -26,7 +26,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
# parse install's options and ignore them completely.
dirmode=""
diff --git a/tools/kerneldoc/Doxyfile b/tools/kerneldoc/Doxyfile
index 146afc32ba0f..aac7f3da4846 100644
--- a/tools/kerneldoc/Doxyfile
+++ b/tools/kerneldoc/Doxyfile
@@ -1,5 +1,4 @@
# Doxyfile 1.3.6
-# $FreeBSD$
#---------------------------------------------------------------------------
# Project related configuration options
diff --git a/tools/kerneldoc/Makefile b/tools/kerneldoc/Makefile
index ec665a7b0256..6e9053aa22cf 100644
--- a/tools/kerneldoc/Makefile
+++ b/tools/kerneldoc/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.PATH: ${.CURDIR}/../kern
diff --git a/tools/kerneldoc/subsys/Dependencies b/tools/kerneldoc/subsys/Dependencies
index 537bdbaa1799..3f771693fa86 100644
--- a/tools/kerneldoc/subsys/Dependencies
+++ b/tools/kerneldoc/subsys/Dependencies
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# makefile dependencies for doxygen tag files
#
diff --git a/tools/kerneldoc/subsys/Doxyfile-cam b/tools/kerneldoc/subsys/Doxyfile-cam
index 7646cc06d145..bb3b12b29f11 100644
--- a/tools/kerneldoc/subsys/Doxyfile-cam
+++ b/tools/kerneldoc/subsys/Doxyfile-cam
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-crypto b/tools/kerneldoc/subsys/Doxyfile-crypto
index 404993d51716..c57b71bd7f37 100644
--- a/tools/kerneldoc/subsys/Doxyfile-crypto
+++ b/tools/kerneldoc/subsys/Doxyfile-crypto
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_aac b/tools/kerneldoc/subsys/Doxyfile-dev_aac
index c86bf0bbbd6e..41187eb6d784 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_aac
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_aac
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_aacraid b/tools/kerneldoc/subsys/Doxyfile-dev_aacraid
index c0a52df4a116..2189e8cd85df 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_aacraid
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_aacraid
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_acpi_support b/tools/kerneldoc/subsys/Doxyfile-dev_acpi_support
index 2fd72fe13255..94518065c71c 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_acpi_support
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_acpi_support
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_acpica b/tools/kerneldoc/subsys/Doxyfile-dev_acpica
index 8e55e6f85e8c..26507f49b1c4 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_acpica
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_acpica
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_adb b/tools/kerneldoc/subsys/Doxyfile-dev_adb
index 8c9c19634808..84269f6569c3 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_adb
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_adb
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_adlink b/tools/kerneldoc/subsys/Doxyfile-dev_adlink
index de0fbde68af9..72c07af03d69 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_adlink
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_adlink
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ae b/tools/kerneldoc/subsys/Doxyfile-dev_ae
index 2862022def81..5058739cb132 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ae
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ae
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_age b/tools/kerneldoc/subsys/Doxyfile-dev_age
index 583dbaaf8c38..f8e07a8b853c 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_age
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_age
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_agp b/tools/kerneldoc/subsys/Doxyfile-dev_agp
index e9e4c418dcd9..06759bfac9c8 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_agp
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_agp
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ahci b/tools/kerneldoc/subsys/Doxyfile-dev_ahci
index 684c0bdbf350..e5675a900248 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ahci
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ahci
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_aic7xxx b/tools/kerneldoc/subsys/Doxyfile-dev_aic7xxx
index 525c9ba083c6..bfe40d40485f 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_aic7xxx
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_aic7xxx
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_al_eth b/tools/kerneldoc/subsys/Doxyfile-dev_al_eth
index 6c2ed7a9161f..c7373f03e6b1 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_al_eth
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_al_eth
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_alc b/tools/kerneldoc/subsys/Doxyfile-dev_alc
index c779a19a8b0b..b6369f9d1e7d 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_alc
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_alc
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ale b/tools/kerneldoc/subsys/Doxyfile-dev_ale
index 200a666edcb9..fd8fbcbf76e8 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ale
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ale
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_alpm b/tools/kerneldoc/subsys/Doxyfile-dev_alpm
index fb1cac442b90..5f215813db61 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_alpm
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_alpm
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_altera b/tools/kerneldoc/subsys/Doxyfile-dev_altera
index 8ba54b9bf616..4db65ac4eba4 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_altera
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_altera
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_amd_ecc_inject b/tools/kerneldoc/subsys/Doxyfile-dev_amd_ecc_inject
index 9784b4a293c1..893573f61bb3 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_amd_ecc_inject
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_amd_ecc_inject
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_amdgpio b/tools/kerneldoc/subsys/Doxyfile-dev_amdgpio
index b36c12d442e5..e11d1c4f18c5 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_amdgpio
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_amdgpio
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_amdpm b/tools/kerneldoc/subsys/Doxyfile-dev_amdpm
index ff3e803e6b0c..96723d1f9cb7 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_amdpm
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_amdpm
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_amdsbwd b/tools/kerneldoc/subsys/Doxyfile-dev_amdsbwd
index aa064e757e61..305951270df2 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_amdsbwd
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_amdsbwd
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_amdsmb b/tools/kerneldoc/subsys/Doxyfile-dev_amdsmb
index 9c7edcad0739..15d2d6c48b11 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_amdsmb
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_amdsmb
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_amdsmn b/tools/kerneldoc/subsys/Doxyfile-dev_amdsmn
index 4dbbb6a04820..3a94c9a65f46 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_amdsmn
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_amdsmn
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_amdtemp b/tools/kerneldoc/subsys/Doxyfile-dev_amdtemp
index 45ab23747ca9..e4b7d313c611 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_amdtemp
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_amdtemp
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_amr b/tools/kerneldoc/subsys/Doxyfile-dev_amr
deleted file mode 100644
index 9daa34e5ffac..000000000000
--- a/tools/kerneldoc/subsys/Doxyfile-dev_amr
+++ /dev/null
@@ -1,21 +0,0 @@
-# Doxyfile 1.5.2
-
-# $FreeBSD$
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME = "FreeBSD kernel AMR device code"
-OUTPUT_DIRECTORY = $(DOXYGEN_DEST_PATH)/dev_amr/
-EXTRACT_ALL = YES # for undocumented src, no warnings enabled
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = $(DOXYGEN_SRC_PATH)/dev/amr/ \
- $(NOTREVIEWED)
-
-GENERATE_TAGFILE = dev_amr/dev_amr.tag
-
-@INCLUDE_PATH = $(DOXYGEN_INCLUDE_PATH)
-@INCLUDE = common-Doxyfile
-
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_an b/tools/kerneldoc/subsys/Doxyfile-dev_an
index 2f383d455a8c..9bd49f1783bc 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_an
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_an
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_arcmsr b/tools/kerneldoc/subsys/Doxyfile-dev_arcmsr
index 061867ab1739..645e427a2be8 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_arcmsr
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_arcmsr
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_asmc b/tools/kerneldoc/subsys/Doxyfile-dev_asmc
index 29a0e553b7ba..f61a88571667 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_asmc
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_asmc
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ata b/tools/kerneldoc/subsys/Doxyfile-dev_ata
index 7e602b2ff7d0..d8392aadf3c8 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ata
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ata
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ath b/tools/kerneldoc/subsys/Doxyfile-dev_ath
index 3b71b6bd377e..b5ffd6c4d66a 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ath
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ath
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_atkbdc b/tools/kerneldoc/subsys/Doxyfile-dev_atkbdc
index 6206eaadbcdd..aced3d6893a1 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_atkbdc
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_atkbdc
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_axgbe b/tools/kerneldoc/subsys/Doxyfile-dev_axgbe
index d3750f16601b..ba9247ee2abf 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_axgbe
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_axgbe
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_bce b/tools/kerneldoc/subsys/Doxyfile-dev_bce
index 04bc6483da5d..1f8e2429b406 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_bce
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_bce
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_beri b/tools/kerneldoc/subsys/Doxyfile-dev_beri
index abb8bdf2a8e6..d66afaf4c947 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_beri
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_beri
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_bfe b/tools/kerneldoc/subsys/Doxyfile-dev_bfe
index f4caac59158d..27ed9c955d0a 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_bfe
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_bfe
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_bge b/tools/kerneldoc/subsys/Doxyfile-dev_bge
index 50da5c90eaf1..df9b1f623a00 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_bge
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_bge
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_bhnd b/tools/kerneldoc/subsys/Doxyfile-dev_bhnd
index 3c8d448993bc..6a40353c2714 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_bhnd
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_bhnd
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_bnxt b/tools/kerneldoc/subsys/Doxyfile-dev_bnxt
index e5b86c7c184d..0fb8ccdba563 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_bnxt
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_bnxt
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_bvm b/tools/kerneldoc/subsys/Doxyfile-dev_bvm
index 6cc7ed31062b..49cc654c02fb 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_bvm
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_bvm
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_bwi b/tools/kerneldoc/subsys/Doxyfile-dev_bwi
index be772e6a0d4a..92dad1e44d2c 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_bwi
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_bwi
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_bwn b/tools/kerneldoc/subsys/Doxyfile-dev_bwn
index fa87dbdd17d8..d40541514e4a 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_bwn
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_bwn
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_bxe b/tools/kerneldoc/subsys/Doxyfile-dev_bxe
index 56713b48099f..be694aea06e4 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_bxe
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_bxe
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_cadence b/tools/kerneldoc/subsys/Doxyfile-dev_cadence
index 4fe3b1487f1e..9d25567749ed 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_cadence
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_cadence
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_cardbus b/tools/kerneldoc/subsys/Doxyfile-dev_cardbus
index df1ef50b1033..b6d76fa289d0 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_cardbus
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_cardbus
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_cas b/tools/kerneldoc/subsys/Doxyfile-dev_cas
index e08d4c1a5443..c5e828b599c8 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_cas
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_cas
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ce b/tools/kerneldoc/subsys/Doxyfile-dev_ce
index cb68367a5e5a..dcfd9d3478a2 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ce
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ce
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_cesa b/tools/kerneldoc/subsys/Doxyfile-dev_cesa
index d284d68330af..0af7b735780b 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_cesa
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_cesa
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_cfe b/tools/kerneldoc/subsys/Doxyfile-dev_cfe
index 64dafd59640d..e3f4ae9090b1 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_cfe
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_cfe
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_cfi b/tools/kerneldoc/subsys/Doxyfile-dev_cfi
index 0eae28500b85..1f9bb0891dca 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_cfi
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_cfi
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_chromebook_platform b/tools/kerneldoc/subsys/Doxyfile-dev_chromebook_platform
index d9f434f0503c..a030ea90d18a 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_chromebook_platform
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_chromebook_platform
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ciss b/tools/kerneldoc/subsys/Doxyfile-dev_ciss
index 95d32b64a43b..9c341bf35e0c 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ciss
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ciss
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_coretemp b/tools/kerneldoc/subsys/Doxyfile-dev_coretemp
index 0d53dd1a4c12..1958deca2a86 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_coretemp
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_coretemp
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_cp b/tools/kerneldoc/subsys/Doxyfile-dev_cp
index de0ae88629f9..b65a94cf64bd 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_cp
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_cp
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_cpuctl b/tools/kerneldoc/subsys/Doxyfile-dev_cpuctl
index 40ac722b3a85..ed42ad9c92b5 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_cpuctl
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_cpuctl
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_cpufreq b/tools/kerneldoc/subsys/Doxyfile-dev_cpufreq
index b6c112b548f8..3d8f25182b5d 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_cpufreq
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_cpufreq
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_cxgb b/tools/kerneldoc/subsys/Doxyfile-dev_cxgb
index af683c53d7a9..05d4cb812c81 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_cxgb
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_cxgb
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_cxgbe b/tools/kerneldoc/subsys/Doxyfile-dev_cxgbe
index bd92d046bfdc..2c9e8f0e20a8 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_cxgbe
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_cxgbe
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_cyapa b/tools/kerneldoc/subsys/Doxyfile-dev_cyapa
index 60280bd285b9..0db4ff3ae4cd 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_cyapa
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_cyapa
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_dc b/tools/kerneldoc/subsys/Doxyfile-dev_dc
index c4e178cbf9e0..710fcd8cc9a6 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_dc
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_dc
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_dcons b/tools/kerneldoc/subsys/Doxyfile-dev_dcons
index 2a69a87407b0..5b61263240ef 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_dcons
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_dcons
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_dme b/tools/kerneldoc/subsys/Doxyfile-dev_dme
deleted file mode 100644
index c5465c30c99e..000000000000
--- a/tools/kerneldoc/subsys/Doxyfile-dev_dme
+++ /dev/null
@@ -1,21 +0,0 @@
-# Doxyfile 1.5.2
-
-# $FreeBSD$
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME = "FreeBSD kernel dme device code"
-OUTPUT_DIRECTORY = $(DOXYGEN_DEST_PATH)/dev_dme/
-EXTRACT_ALL = YES # for undocumented src, no warnings enabled
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = $(DOXYGEN_SRC_PATH)/dev/dme/ \
- $(NOTREVIEWED)
-
-GENERATE_TAGFILE = dev_dme/dev_dme.tag
-
-@INCLUDE_PATH = $(DOXYGEN_INCLUDE_PATH)
-@INCLUDE = common-Doxyfile
-
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_dpaa b/tools/kerneldoc/subsys/Doxyfile-dev_dpaa
index a3da742e7062..5fb878c5a690 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_dpaa
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_dpaa
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_dpms b/tools/kerneldoc/subsys/Doxyfile-dev_dpms
index 4bc8c74dc4d9..30070f01246e 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_dpms
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_dpms
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_dwc b/tools/kerneldoc/subsys/Doxyfile-dev_dwc
index f62629e42ba1..ebfcfb71d3c2 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_dwc
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_dwc
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_e1000 b/tools/kerneldoc/subsys/Doxyfile-dev_e1000
index c0532c5ce1a9..00d4450be374 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_e1000
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_e1000
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_efidev b/tools/kerneldoc/subsys/Doxyfile-dev_efidev
index 607ac073c1f3..caaa4dfa2ebf 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_efidev
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_efidev
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ena b/tools/kerneldoc/subsys/Doxyfile-dev_ena
index 0b31e9a1f035..1bcffe061031 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ena
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ena
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_esp b/tools/kerneldoc/subsys/Doxyfile-dev_esp
deleted file mode 100644
index c66d8f99d9cb..000000000000
--- a/tools/kerneldoc/subsys/Doxyfile-dev_esp
+++ /dev/null
@@ -1,21 +0,0 @@
-# Doxyfile 1.5.2
-
-# $FreeBSD$
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME = "FreeBSD kernel ESP device code"
-OUTPUT_DIRECTORY = $(DOXYGEN_DEST_PATH)/dev_esp/
-EXTRACT_ALL = YES # for undocumented src, no warnings enabled
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = $(DOXYGEN_SRC_PATH)/dev/esp/ \
- $(NOTREVIEWED)
-
-GENERATE_TAGFILE = dev_esp/dev_esp.tag
-
-@INCLUDE_PATH = $(DOXYGEN_INCLUDE_PATH)
-@INCLUDE = common-Doxyfile
-
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_et b/tools/kerneldoc/subsys/Doxyfile-dev_et
index 1267ef500f7b..537018bd8f67 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_et
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_et
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_etherswitch b/tools/kerneldoc/subsys/Doxyfile-dev_etherswitch
index 3dd10cb4ea51..f7b4d3baf7cf 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_etherswitch
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_etherswitch
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_evdev b/tools/kerneldoc/subsys/Doxyfile-dev_evdev
index c42bba615a1e..25e863633758 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_evdev
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_evdev
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_exca b/tools/kerneldoc/subsys/Doxyfile-dev_exca
index 775a3de3bda9..143a9defd460 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_exca
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_exca
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_extres b/tools/kerneldoc/subsys/Doxyfile-dev_extres
index 8e0639276406..2a724f5bfb97 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_extres
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_extres
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_fb b/tools/kerneldoc/subsys/Doxyfile-dev_fb
index 5f45b7b8e4bb..a0e036a58751 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_fb
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_fb
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_fdc b/tools/kerneldoc/subsys/Doxyfile-dev_fdc
index 72b0d9f59a31..2304bad2d225 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_fdc
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_fdc
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_fdt b/tools/kerneldoc/subsys/Doxyfile-dev_fdt
index 30c00d343c66..633b6e3522e7 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_fdt
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_fdt
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ffec b/tools/kerneldoc/subsys/Doxyfile-dev_ffec
index 0efe4883a893..204df93b78ae 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ffec
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ffec
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_filemon b/tools/kerneldoc/subsys/Doxyfile-dev_filemon
index 1549fba02441..fbc2935e6ece 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_filemon
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_filemon
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_firewire b/tools/kerneldoc/subsys/Doxyfile-dev_firewire
index eea3e3a3e2ca..f9c86c7ea491 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_firewire
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_firewire
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_flash b/tools/kerneldoc/subsys/Doxyfile-dev_flash
index 79993dce84bb..aaea8156de6b 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_flash
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_flash
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_fxp b/tools/kerneldoc/subsys/Doxyfile-dev_fxp
index 4c8a53adfe56..1f3e8a154a65 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_fxp
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_fxp
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_gem b/tools/kerneldoc/subsys/Doxyfile-dev_gem
index 5583a205c40b..dae0e653db8f 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_gem
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_gem
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_glxiic b/tools/kerneldoc/subsys/Doxyfile-dev_glxiic
index 0f7d3c86c0f7..1dfdf1903cf8 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_glxiic
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_glxiic
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_glxsb b/tools/kerneldoc/subsys/Doxyfile-dev_glxsb
index 3f10d1f51607..6be208d31edf 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_glxsb
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_glxsb
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_gpio b/tools/kerneldoc/subsys/Doxyfile-dev_gpio
index 180af3cb8aba..9e7ff9924a04 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_gpio
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_gpio
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_gxemul b/tools/kerneldoc/subsys/Doxyfile-dev_gxemul
deleted file mode 100644
index bc4dea6e25fe..000000000000
--- a/tools/kerneldoc/subsys/Doxyfile-dev_gxemul
+++ /dev/null
@@ -1,21 +0,0 @@
-# Doxyfile 1.5.2
-
-# $FreeBSD$
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME = "FreeBSD kernel gxemul device code"
-OUTPUT_DIRECTORY = $(DOXYGEN_DEST_PATH)/dev_gxemul/
-EXTRACT_ALL = YES # for undocumented src, no warnings enabled
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = $(DOXYGEN_SRC_PATH)/dev/gxemul/ \
- $(NOTREVIEWED)
-
-GENERATE_TAGFILE = dev_gxemul/dev_gxemul.tag
-
-@INCLUDE_PATH = $(DOXYGEN_INCLUDE_PATH)
-@INCLUDE = common-Doxyfile
-
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_hdmi b/tools/kerneldoc/subsys/Doxyfile-dev_hdmi
index b6bc8c89c7e4..013bbce0b54e 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_hdmi
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_hdmi
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_hifn b/tools/kerneldoc/subsys/Doxyfile-dev_hifn
index 594b0f203830..2a6402c1eee2 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_hifn
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_hifn
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_hpt27xx b/tools/kerneldoc/subsys/Doxyfile-dev_hpt27xx
index 775e9ab0b4a7..c30aa2749c3c 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_hpt27xx
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_hpt27xx
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_hptiop b/tools/kerneldoc/subsys/Doxyfile-dev_hptiop
index 5ecce983920d..d347957a6c45 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_hptiop
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_hptiop
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_hptmv b/tools/kerneldoc/subsys/Doxyfile-dev_hptmv
index 8251227793b8..a5048b3cd18f 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_hptmv
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_hptmv
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_hptnr b/tools/kerneldoc/subsys/Doxyfile-dev_hptnr
index 5defaddd9316..4d44d041782f 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_hptnr
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_hptnr
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_hptrr b/tools/kerneldoc/subsys/Doxyfile-dev_hptrr
index e86c819bd2b9..fb1efd8c8cc8 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_hptrr
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_hptrr
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_hwpmc b/tools/kerneldoc/subsys/Doxyfile-dev_hwpmc
index 54f742b46a76..97141d0ebbaa 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_hwpmc
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_hwpmc
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_hyperv b/tools/kerneldoc/subsys/Doxyfile-dev_hyperv
index d8325a6d18bb..c62dc11ac240 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_hyperv
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_hyperv
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ic b/tools/kerneldoc/subsys/Doxyfile-dev_ic
index 5a166794bb8f..c090ebdb107e 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ic
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ic
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ice b/tools/kerneldoc/subsys/Doxyfile-dev_ice
index e597f87711b0..d9b693ad5664 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ice
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ice
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ichiic b/tools/kerneldoc/subsys/Doxyfile-dev_ichiic
index e3973429935b..288317bae475 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ichiic
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ichiic
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ichsmb b/tools/kerneldoc/subsys/Doxyfile-dev_ichsmb
index f7b35dee69af..ef9c5eb47d63 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ichsmb
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ichsmb
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ichwd b/tools/kerneldoc/subsys/Doxyfile-dev_ichwd
index 81b5c64fa76d..e4565b34eed0 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ichwd
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ichwd
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ida b/tools/kerneldoc/subsys/Doxyfile-dev_ida
index 54dc48b3bc22..df4d698a56c3 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ida
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ida
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_iicbus b/tools/kerneldoc/subsys/Doxyfile-dev_iicbus
index 3f443508683c..f28ce10bd7bd 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_iicbus
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_iicbus
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_iir b/tools/kerneldoc/subsys/Doxyfile-dev_iir
deleted file mode 100644
index 04c8809fae7b..000000000000
--- a/tools/kerneldoc/subsys/Doxyfile-dev_iir
+++ /dev/null
@@ -1,21 +0,0 @@
-# Doxyfile 1.5.2
-
-# $FreeBSD$
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME = "FreeBSD kernel IIR device code"
-OUTPUT_DIRECTORY = $(DOXYGEN_DEST_PATH)/dev_iir/
-EXTRACT_ALL = YES # for undocumented src, no warnings enabled
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = $(DOXYGEN_SRC_PATH)/dev/iir/ \
- $(NOTREVIEWED)
-
-GENERATE_TAGFILE = dev_iir/dev_iir.tag
-
-@INCLUDE_PATH = $(DOXYGEN_INCLUDE_PATH)
-@INCLUDE = common-Doxyfile
-
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_imcsmb b/tools/kerneldoc/subsys/Doxyfile-dev_imcsmb
index ede8d02b3833..f1119db66a34 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_imcsmb
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_imcsmb
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_intel b/tools/kerneldoc/subsys/Doxyfile-dev_intel
index 663949a787fa..0db9acf5a432 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_intel
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_intel
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_intpm b/tools/kerneldoc/subsys/Doxyfile-dev_intpm
index ce79f71bf6f8..9f7d81c0f114 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_intpm
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_intpm
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_io b/tools/kerneldoc/subsys/Doxyfile-dev_io
index f47046db58cd..e334f0cbf497 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_io
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_io
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ioat b/tools/kerneldoc/subsys/Doxyfile-dev_ioat
index 49df520b6dd4..495c9bf860c9 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ioat
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ioat
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ipmi b/tools/kerneldoc/subsys/Doxyfile-dev_ipmi
index 198918a15417..1b679030ad6c 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ipmi
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ipmi
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ips b/tools/kerneldoc/subsys/Doxyfile-dev_ips
index 4d649963c120..90192682f503 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ips
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ips
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ipw b/tools/kerneldoc/subsys/Doxyfile-dev_ipw
index f3f151eae87b..cc3e039528e0 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ipw
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ipw
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_isci b/tools/kerneldoc/subsys/Doxyfile-dev_isci
index 75a931b398e0..7f6ded2b00cd 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_isci
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_isci
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_iscsi b/tools/kerneldoc/subsys/Doxyfile-dev_iscsi
index 353034898869..c31f3547bbcb 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_iscsi
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_iscsi
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_iscsi_initiator b/tools/kerneldoc/subsys/Doxyfile-dev_iscsi_initiator
deleted file mode 100644
index ffffa77f4e4d..000000000000
--- a/tools/kerneldoc/subsys/Doxyfile-dev_iscsi_initiator
+++ /dev/null
@@ -1,21 +0,0 @@
-# Doxyfile 1.5.2
-
-# $FreeBSD$
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME = "FreeBSD kernel iscsi_initiator device code"
-OUTPUT_DIRECTORY = $(DOXYGEN_DEST_PATH)/dev_iscsi_initiator/
-EXTRACT_ALL = YES # for undocumented src, no warnings enabled
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = $(DOXYGEN_SRC_PATH)/dev/iscsi_initiator/ \
- $(NOTREVIEWED)
-
-GENERATE_TAGFILE = dev_iscsi_initiator/dev_iscsi_initiator.tag
-
-@INCLUDE_PATH = $(DOXYGEN_INCLUDE_PATH)
-@INCLUDE = common-Doxyfile
-
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_iser b/tools/kerneldoc/subsys/Doxyfile-dev_iser
index e5dd49bdc8d8..f98e3efeb788 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_iser
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_iser
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_isl b/tools/kerneldoc/subsys/Doxyfile-dev_isl
index 31a9ad325784..149bd1d813fc 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_isl
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_isl
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ismt b/tools/kerneldoc/subsys/Doxyfile-dev_ismt
index edd64eca760d..138741bcfc25 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ismt
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ismt
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_isp b/tools/kerneldoc/subsys/Doxyfile-dev_isp
index cd2df711fae1..60a6e83b3997 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_isp
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_isp
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ispfw b/tools/kerneldoc/subsys/Doxyfile-dev_ispfw
index a4e5ad5331aa..18a09863ad9a 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ispfw
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ispfw
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_iwi b/tools/kerneldoc/subsys/Doxyfile-dev_iwi
index 11cf21c2fa8d..6853ba5a301e 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_iwi
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_iwi
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_iwm b/tools/kerneldoc/subsys/Doxyfile-dev_iwm
index f97c74050448..6ca206227766 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_iwm
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_iwm
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_iwn b/tools/kerneldoc/subsys/Doxyfile-dev_iwn
index aa066d61e4e8..06a6c4b5cd05 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_iwn
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_iwn
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ixgbe b/tools/kerneldoc/subsys/Doxyfile-dev_ixgbe
index bfc8344ac7ac..777524a14b75 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ixgbe
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ixgbe
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ixl b/tools/kerneldoc/subsys/Doxyfile-dev_ixl
index 23bef0bb6765..ffcc400ecc5f 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ixl
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ixl
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_jedec_dimm b/tools/kerneldoc/subsys/Doxyfile-dev_jedec_dimm
index 0396d3fb1190..35d22d5ecdd8 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_jedec_dimm
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_jedec_dimm
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_jme b/tools/kerneldoc/subsys/Doxyfile-dev_jme
index 95f66945fe70..149c181f8fd7 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_jme
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_jme
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_kbd b/tools/kerneldoc/subsys/Doxyfile-dev_kbd
index 98353a718b93..a4d17c25dc6f 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_kbd
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_kbd
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_kbdmux b/tools/kerneldoc/subsys/Doxyfile-dev_kbdmux
index beda561fb53a..8a60be303ec4 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_kbdmux
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_kbdmux
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ksyms b/tools/kerneldoc/subsys/Doxyfile-dev_ksyms
index 5b1124252be4..79b9437789ca 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ksyms
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ksyms
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_le b/tools/kerneldoc/subsys/Doxyfile-dev_le
index f58635425164..6a4da00f519d 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_le
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_le
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_led b/tools/kerneldoc/subsys/Doxyfile-dev_led
index 86a44d7f8eba..f6aed5db4f76 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_led
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_led
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_lge b/tools/kerneldoc/subsys/Doxyfile-dev_lge
index 3b4aa09fa312..8715a7d5455b 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_lge
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_lge
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_liquidio b/tools/kerneldoc/subsys/Doxyfile-dev_liquidio
index a6cb7712c81e..03355b2a1130 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_liquidio
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_liquidio
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_malo b/tools/kerneldoc/subsys/Doxyfile-dev_malo
index 4e442f721329..068567c7d1c8 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_malo
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_malo
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mbox b/tools/kerneldoc/subsys/Doxyfile-dev_mbox
index e9bfa5486353..d21b98637116 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mbox
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mbox
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_md b/tools/kerneldoc/subsys/Doxyfile-dev_md
index 538f35c59160..53a04c72cfee 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_md
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_md
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mdio b/tools/kerneldoc/subsys/Doxyfile-dev_mdio
index 428030c6396b..f4a666d0d0ae 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mdio
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mdio
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mem b/tools/kerneldoc/subsys/Doxyfile-dev_mem
index f7d12151f316..90e1f469047f 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mem
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mem
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mfi b/tools/kerneldoc/subsys/Doxyfile-dev_mfi
index f986c08d789c..922a179ed83f 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mfi
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mfi
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mge b/tools/kerneldoc/subsys/Doxyfile-dev_mge
index 254e0749eead..8c1590afcfd2 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mge
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mge
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mii b/tools/kerneldoc/subsys/Doxyfile-dev_mii
index abf9d3cae259..cbaf89d908bf 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mii
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mii
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mlx b/tools/kerneldoc/subsys/Doxyfile-dev_mlx
index afbaac9f4f71..6585f845c459 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mlx
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mlx
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mlx4 b/tools/kerneldoc/subsys/Doxyfile-dev_mlx4
index b361d115d5c3..3fffbc9fbb29 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mlx4
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mlx4
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mlx5 b/tools/kerneldoc/subsys/Doxyfile-dev_mlx5
index 630e80b764f4..47b4c58d1659 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mlx5
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mlx5
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mly b/tools/kerneldoc/subsys/Doxyfile-dev_mly
deleted file mode 100644
index 597a9efc2cd8..000000000000
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mly
+++ /dev/null
@@ -1,21 +0,0 @@
-# Doxyfile 1.5.2
-
-# $FreeBSD$
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME = "FreeBSD kernel MLY device code"
-OUTPUT_DIRECTORY = $(DOXYGEN_DEST_PATH)/dev_mly/
-EXTRACT_ALL = YES # for undocumented src, no warnings enabled
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = $(DOXYGEN_SRC_PATH)/dev/mly/ \
- $(NOTREVIEWED)
-
-GENERATE_TAGFILE = dev_mly/dev_mly.tag
-
-@INCLUDE_PATH = $(DOXYGEN_INCLUDE_PATH)
-@INCLUDE = common-Doxyfile
-
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mmc b/tools/kerneldoc/subsys/Doxyfile-dev_mmc
index a3df81b32cb8..afd7b30501ad 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mmc
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mmc
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mmcnull b/tools/kerneldoc/subsys/Doxyfile-dev_mmcnull
index b8661444fa8a..d4ea1decdf0d 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mmcnull
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mmcnull
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mn b/tools/kerneldoc/subsys/Doxyfile-dev_mn
index 2d25f7cefb07..bc5d33356e42 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mn
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mn
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mpr b/tools/kerneldoc/subsys/Doxyfile-dev_mpr
index d63e8a6f28ae..4c460122241e 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mpr
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mpr
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mps b/tools/kerneldoc/subsys/Doxyfile-dev_mps
index aec660939a5a..27d1526ef30f 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mps
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mps
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mpt b/tools/kerneldoc/subsys/Doxyfile-dev_mpt
index 1db15f6b6993..7cd7ace1ed6b 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mpt
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mpt
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mrsas b/tools/kerneldoc/subsys/Doxyfile-dev_mrsas
index c372615f1c18..b0a46e689367 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mrsas
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mrsas
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_msk b/tools/kerneldoc/subsys/Doxyfile-dev_msk
index 75f23bd3e489..4db8a2607171 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_msk
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_msk
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mthca b/tools/kerneldoc/subsys/Doxyfile-dev_mthca
index 565a0d32b923..8d37a1cf5026 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mthca
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mthca
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mvs b/tools/kerneldoc/subsys/Doxyfile-dev_mvs
index 9861a70f57f5..e973fc1f3a9d 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mvs
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mvs
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mwl b/tools/kerneldoc/subsys/Doxyfile-dev_mwl
index 3d37ad670eff..ef76aa9aaece 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mwl
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mwl
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_mxge b/tools/kerneldoc/subsys/Doxyfile-dev_mxge
index 12e8d4e78517..c1dda0a9733e 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_mxge
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_mxge
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_my b/tools/kerneldoc/subsys/Doxyfile-dev_my
index 560ebdad64ee..1fd536f7c73e 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_my
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_my
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_nctgpio b/tools/kerneldoc/subsys/Doxyfile-dev_nctgpio
index 37d7d1852327..17005ae29653 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_nctgpio
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_nctgpio
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_neta b/tools/kerneldoc/subsys/Doxyfile-dev_neta
index 06c78640fa95..3c5fa722c1db 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_neta
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_neta
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_netfpga10g b/tools/kerneldoc/subsys/Doxyfile-dev_netfpga10g
index c4617f68e2e0..74cbb1080514 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_netfpga10g
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_netfpga10g
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_netmap b/tools/kerneldoc/subsys/Doxyfile-dev_netmap
index aa1845798ff6..ac9a0d34dca2 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_netmap
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_netmap
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_nfe b/tools/kerneldoc/subsys/Doxyfile-dev_nfe
index d1522f22cbda..6cc35bff7644 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_nfe
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_nfe
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_nfsmb b/tools/kerneldoc/subsys/Doxyfile-dev_nfsmb
index c15b4c64bea5..d31484346b8b 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_nfsmb
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_nfsmb
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_nge b/tools/kerneldoc/subsys/Doxyfile-dev_nge
index f47318f74637..8b68f59c7a77 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_nge
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_nge
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_nmdm b/tools/kerneldoc/subsys/Doxyfile-dev_nmdm
index 1ae77c763144..412500014f35 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_nmdm
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_nmdm
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ntb b/tools/kerneldoc/subsys/Doxyfile-dev_ntb
index 89e03822a543..d76db6cae0cb 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ntb
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ntb
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_null b/tools/kerneldoc/subsys/Doxyfile-dev_null
index ebfc33c7111d..a2c2be9a3f4a 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_null
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_null
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_nvd b/tools/kerneldoc/subsys/Doxyfile-dev_nvd
index 960677caaea6..242335b4b7d7 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_nvd
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_nvd
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_nvdimm b/tools/kerneldoc/subsys/Doxyfile-dev_nvdimm
index 464b59f961a2..89529498aa53 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_nvdimm
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_nvdimm
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_nvme b/tools/kerneldoc/subsys/Doxyfile-dev_nvme
index fe09c9d6a61b..e6cf5d4791d0 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_nvme
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_nvme
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_nvram b/tools/kerneldoc/subsys/Doxyfile-dev_nvram
index 470ae1890e24..5eadcc9423c4 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_nvram
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_nvram
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_nvram2env b/tools/kerneldoc/subsys/Doxyfile-dev_nvram2env
deleted file mode 100644
index 8398f855da62..000000000000
--- a/tools/kerneldoc/subsys/Doxyfile-dev_nvram2env
+++ /dev/null
@@ -1,21 +0,0 @@
-# Doxyfile 1.5.2
-
-# $FreeBSD$
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME = "FreeBSD kernel NVRAM2ENV device code"
-OUTPUT_DIRECTORY = $(DOXYGEN_DEST_PATH)/dev_nvram2env/
-EXTRACT_ALL = YES # for undocumented src, no warnings enabled
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = $(DOXYGEN_SRC_PATH)/dev/nvram2env/ \
- $(NOTREVIEWED)
-
-GENERATE_TAGFILE = dev_nvram2env/dev_nvram2env.tag
-
-@INCLUDE_PATH = $(DOXYGEN_INCLUDE_PATH)
-@INCLUDE = common-Doxyfile
-
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_oce b/tools/kerneldoc/subsys/Doxyfile-dev_oce
index 5aa2b1a636be..b9ce3479acf2 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_oce
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_oce
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ocs_fc b/tools/kerneldoc/subsys/Doxyfile-dev_ocs_fc
index dc7088ef4d96..dcf16f3c7171 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ocs_fc
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ocs_fc
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ofw b/tools/kerneldoc/subsys/Doxyfile-dev_ofw
index 182ac09a33fe..f9700f5bd6a0 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ofw
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ofw
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_otus b/tools/kerneldoc/subsys/Doxyfile-dev_otus
index c0c87085e3b9..577d693af9d9 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_otus
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_otus
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ow b/tools/kerneldoc/subsys/Doxyfile-dev_ow
index 13a73e54e036..00344332b69f 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ow
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ow
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_pbio b/tools/kerneldoc/subsys/Doxyfile-dev_pbio
index 086595fd5fa8..22e91d02f65e 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_pbio
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_pbio
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_pccard b/tools/kerneldoc/subsys/Doxyfile-dev_pccard
index 28a5f9fac1dd..3205b4bb4c8d 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_pccard
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_pccard
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_pccbb b/tools/kerneldoc/subsys/Doxyfile-dev_pccbb
index 358d2e32d13a..2e1619d6bbdc 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_pccbb
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_pccbb
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_pcf b/tools/kerneldoc/subsys/Doxyfile-dev_pcf
index 76e3758e4a78..8ac463d53483 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_pcf
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_pcf
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_pci b/tools/kerneldoc/subsys/Doxyfile-dev_pci
index 6b6f96460ccf..e0f5328385b8 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_pci
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_pci
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_pms b/tools/kerneldoc/subsys/Doxyfile-dev_pms
index 2efb7e9eeaa9..9293f9cf0746 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_pms
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_pms
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_powermac_nvram b/tools/kerneldoc/subsys/Doxyfile-dev_powermac_nvram
index 02c56e815c76..95692aef8316 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_powermac_nvram
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_powermac_nvram
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ppbus b/tools/kerneldoc/subsys/Doxyfile-dev_ppbus
index 6b2c53b7abe2..04bf84c04e66 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ppbus
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ppbus
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ppc b/tools/kerneldoc/subsys/Doxyfile-dev_ppc
index 4ebc24224e34..dcb7122556f4 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ppc
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ppc
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_proto b/tools/kerneldoc/subsys/Doxyfile-dev_proto
index a09da9655f61..2756b402c508 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_proto
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_proto
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_psci b/tools/kerneldoc/subsys/Doxyfile-dev_psci
index ceb894ee8290..e018054d97a3 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_psci
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_psci
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_pst b/tools/kerneldoc/subsys/Doxyfile-dev_pst
index daef47196cac..aaa49e4938c0 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_pst
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_pst
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_pty b/tools/kerneldoc/subsys/Doxyfile-dev_pty
index 32b3de53f517..b42bfe5ca281 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_pty
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_pty
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_puc b/tools/kerneldoc/subsys/Doxyfile-dev_puc
index 376196acf463..e46eb8dcb7ad 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_puc
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_puc
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_pwm b/tools/kerneldoc/subsys/Doxyfile-dev_pwm
index 7741437ff75f..2e12e706a138 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_pwm
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_pwm
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_qlnx b/tools/kerneldoc/subsys/Doxyfile-dev_qlnx
index 9ca69d4a5610..83aff08f2387 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_qlnx
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_qlnx
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_qlxgb b/tools/kerneldoc/subsys/Doxyfile-dev_qlxgb
index d8a30054516c..7b6afbe18f89 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_qlxgb
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_qlxgb
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_qlxgbe b/tools/kerneldoc/subsys/Doxyfile-dev_qlxgbe
index 1a14cdc18877..6ad748880e01 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_qlxgbe
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_qlxgbe
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_qlxge b/tools/kerneldoc/subsys/Doxyfile-dev_qlxge
index 510f8efd4343..bc21f5d96a62 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_qlxge
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_qlxge
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_quicc b/tools/kerneldoc/subsys/Doxyfile-dev_quicc
index 1baaa6cd5549..e6404bdc3b7c 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_quicc
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_quicc
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ral b/tools/kerneldoc/subsys/Doxyfile-dev_ral
index b13eef8d094e..0c5ea2a55134 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ral
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ral
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_random b/tools/kerneldoc/subsys/Doxyfile-dev_random
index b6ba4cd7207f..72c0ed7825e6 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_random
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_random
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_rccgpio b/tools/kerneldoc/subsys/Doxyfile-dev_rccgpio
index 292adda05733..3f79a724e77e 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_rccgpio
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_rccgpio
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_re b/tools/kerneldoc/subsys/Doxyfile-dev_re
index 36086f6a7ff0..1c909d6b506f 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_re
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_re
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_rl b/tools/kerneldoc/subsys/Doxyfile-dev_rl
index f8d0a4a99d2a..b0ad53c956ee 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_rl
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_rl
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_rndtest b/tools/kerneldoc/subsys/Doxyfile-dev_rndtest
index ae1fb792a9c7..fc5ccbf52e9f 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_rndtest
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_rndtest
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_rt b/tools/kerneldoc/subsys/Doxyfile-dev_rt
deleted file mode 100644
index 35efce958419..000000000000
--- a/tools/kerneldoc/subsys/Doxyfile-dev_rt
+++ /dev/null
@@ -1,21 +0,0 @@
-# Doxyfile 1.5.2
-
-# $FreeBSD$
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME = "FreeBSD kernel RT device code"
-OUTPUT_DIRECTORY = $(DOXYGEN_DEST_PATH)/dev_rt/
-EXTRACT_ALL = YES # for undocumented src, no warnings enabled
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = $(DOXYGEN_SRC_PATH)/dev/rt/ \
- $(NOTREVIEWED)
-
-GENERATE_TAGFILE = dev_rt/dev_rt.tag
-
-@INCLUDE_PATH = $(DOXYGEN_INCLUDE_PATH)
-@INCLUDE = common-Doxyfile
-
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_rtwn b/tools/kerneldoc/subsys/Doxyfile-dev_rtwn
index a6b3d9affd71..8aee67176975 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_rtwn
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_rtwn
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_safe b/tools/kerneldoc/subsys/Doxyfile-dev_safe
index 2411869bfd41..2e8a3cf69346 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_safe
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_safe
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_sbni b/tools/kerneldoc/subsys/Doxyfile-dev_sbni
index 2c1faac9c2f7..a57cd458558a 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_sbni
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_sbni
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_scc b/tools/kerneldoc/subsys/Doxyfile-dev_scc
index 218fbdce9ba9..481a8b18d94d 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_scc
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_scc
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_sdhci b/tools/kerneldoc/subsys/Doxyfile-dev_sdhci
index 1a112ee31096..b14d77129993 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_sdhci
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_sdhci
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_sec b/tools/kerneldoc/subsys/Doxyfile-dev_sec
index c7360da52159..991d0a3f6110 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_sec
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_sec
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_sfxge b/tools/kerneldoc/subsys/Doxyfile-dev_sfxge
index dffac3536896..5a9e8f9085fb 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_sfxge
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_sfxge
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_sge b/tools/kerneldoc/subsys/Doxyfile-dev_sge
index 7ef3062d4101..fc591b20b9d8 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_sge
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_sge
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_siis b/tools/kerneldoc/subsys/Doxyfile-dev_siis
index 42756af2b07e..797416008b20 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_siis
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_siis
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_sis b/tools/kerneldoc/subsys/Doxyfile-dev_sis
index 156a449f2a9a..4202405e6022 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_sis
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_sis
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_sk b/tools/kerneldoc/subsys/Doxyfile-dev_sk
index e1a268cba565..d4840fbb9304 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_sk
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_sk
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_smartpqi b/tools/kerneldoc/subsys/Doxyfile-dev_smartpqi
index d23cc03d3e54..05f747f9a8eb 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_smartpqi
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_smartpqi
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_smbus b/tools/kerneldoc/subsys/Doxyfile-dev_smbus
index d14e3be5457e..a523766a9ba5 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_smbus
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_smbus
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_smc b/tools/kerneldoc/subsys/Doxyfile-dev_smc
index 505223f3f24e..e80ca91f141c 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_smc
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_smc
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_snp b/tools/kerneldoc/subsys/Doxyfile-dev_snp
index 28dad8ccd302..dfff6a630ba5 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_snp
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_snp
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_sound b/tools/kerneldoc/subsys/Doxyfile-dev_sound
index 724b6f9396f4..50020322ac15 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_sound
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_sound
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_speaker b/tools/kerneldoc/subsys/Doxyfile-dev_speaker
index 12e99a30ffdf..61bdf1108b6b 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_speaker
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_speaker
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_spibus b/tools/kerneldoc/subsys/Doxyfile-dev_spibus
index 3cbf4667f57f..5a85036b6651 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_spibus
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_spibus
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ste b/tools/kerneldoc/subsys/Doxyfile-dev_ste
index 432d4980cf61..f073dc2ab484 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ste
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ste
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_stge b/tools/kerneldoc/subsys/Doxyfile-dev_stge
index c21e710db74e..51d009c3b82d 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_stge
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_stge
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_sym b/tools/kerneldoc/subsys/Doxyfile-dev_sym
index 2421632a63a8..ef84973ae671 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_sym
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_sym
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_syscons b/tools/kerneldoc/subsys/Doxyfile-dev_syscons
index c8d5da3f17ad..5f70527d4cea 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_syscons
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_syscons
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_tcp_log b/tools/kerneldoc/subsys/Doxyfile-dev_tcp_log
index 044182d54f84..24c7f88d5846 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_tcp_log
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_tcp_log
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_tdfx b/tools/kerneldoc/subsys/Doxyfile-dev_tdfx
index 3f5c6e24a35f..1fca5b99490e 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_tdfx
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_tdfx
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_terasic b/tools/kerneldoc/subsys/Doxyfile-dev_terasic
index fcbc10ef42fe..e3a8995eb071 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_terasic
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_terasic
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_ti b/tools/kerneldoc/subsys/Doxyfile-dev_ti
index 402697655f83..4cbbde0cc8bf 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_ti
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_ti
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_tpm b/tools/kerneldoc/subsys/Doxyfile-dev_tpm
index 673dbd0cc50b..fbba66dc456d 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_tpm
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_tpm
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_tsec b/tools/kerneldoc/subsys/Doxyfile-dev_tsec
index 46e4742334ba..50ed39369001 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_tsec
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_tsec
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_twa b/tools/kerneldoc/subsys/Doxyfile-dev_twa
deleted file mode 100644
index 9de87ba16748..000000000000
--- a/tools/kerneldoc/subsys/Doxyfile-dev_twa
+++ /dev/null
@@ -1,21 +0,0 @@
-# Doxyfile 1.5.2
-
-# $FreeBSD$
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME = "FreeBSD kernel TWA device code"
-OUTPUT_DIRECTORY = $(DOXYGEN_DEST_PATH)/dev_twa/
-EXTRACT_ALL = YES # for undocumented src, no warnings enabled
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = $(DOXYGEN_SRC_PATH)/dev/twa/ \
- $(NOTREVIEWED)
-
-GENERATE_TAGFILE = dev_twa/dev_twa.tag
-
-@INCLUDE_PATH = $(DOXYGEN_INCLUDE_PATH)
-@INCLUDE = common-Doxyfile
-
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_twe b/tools/kerneldoc/subsys/Doxyfile-dev_twe
index 7b8af559fbc3..d79c6fc91244 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_twe
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_twe
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_tws b/tools/kerneldoc/subsys/Doxyfile-dev_tws
index 919f4f167d2c..73a28c191912 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_tws
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_tws
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_uart b/tools/kerneldoc/subsys/Doxyfile-dev_uart
index e48799b8e20a..431bbe7994ef 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_uart
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_uart
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_usb b/tools/kerneldoc/subsys/Doxyfile-dev_usb
index ad84bb5fa278..937bec5e4f3b 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_usb
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_usb
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_veriexec b/tools/kerneldoc/subsys/Doxyfile-dev_veriexec
index adc0e41374d2..ac2ec0293ed4 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_veriexec
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_veriexec
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_vge b/tools/kerneldoc/subsys/Doxyfile-dev_vge
index 27a5ef9758a3..3b785a1ff918 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_vge
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_vge
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_viapm b/tools/kerneldoc/subsys/Doxyfile-dev_viapm
index c640452f5220..ca5568730188 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_viapm
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_viapm
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_viawd b/tools/kerneldoc/subsys/Doxyfile-dev_viawd
index 2827352f27c4..4134b15f9103 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_viawd
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_viawd
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_videomode b/tools/kerneldoc/subsys/Doxyfile-dev_videomode
index 7c6eec454e68..34dd586fad56 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_videomode
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_videomode
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_virtio b/tools/kerneldoc/subsys/Doxyfile-dev_virtio
index 081d16f539a9..e3ec3ee19e55 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_virtio
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_virtio
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_vkbd b/tools/kerneldoc/subsys/Doxyfile-dev_vkbd
index 40ed99d57db4..1692fe0ab0cf 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_vkbd
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_vkbd
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_vmware b/tools/kerneldoc/subsys/Doxyfile-dev_vmware
index fc77b0cf80ca..abc74988bba1 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_vmware
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_vmware
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_vnic b/tools/kerneldoc/subsys/Doxyfile-dev_vnic
index a41df5263450..ba72dc179fb0 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_vnic
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_vnic
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_vr b/tools/kerneldoc/subsys/Doxyfile-dev_vr
index 96838db5d3ff..e3d48a9cd60c 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_vr
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_vr
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_vt b/tools/kerneldoc/subsys/Doxyfile-dev_vt
index 48eae34d1a2b..1f51a469c0a0 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_vt
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_vt
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_vte b/tools/kerneldoc/subsys/Doxyfile-dev_vte
index 3662cb43446f..d080102cab26 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_vte
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_vte
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_watchdog b/tools/kerneldoc/subsys/Doxyfile-dev_watchdog
index 7bbf81eb44f7..83de2ab13605 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_watchdog
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_watchdog
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_wbwd b/tools/kerneldoc/subsys/Doxyfile-dev_wbwd
index ec855581cb6b..64fd8734495f 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_wbwd
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_wbwd
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_wpi b/tools/kerneldoc/subsys/Doxyfile-dev_wpi
index 5d444f524b0d..b722fa896400 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_wpi
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_wpi
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_wtap b/tools/kerneldoc/subsys/Doxyfile-dev_wtap
index 8ec37ac6d2ab..2181979d1027 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_wtap
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_wtap
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_xdma b/tools/kerneldoc/subsys/Doxyfile-dev_xdma
index f394ac7eb635..50bf4c7235b3 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_xdma
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_xdma
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_xen b/tools/kerneldoc/subsys/Doxyfile-dev_xen
index 9ecea22a6037..ab111e79778f 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_xen
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_xen
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_xilinx b/tools/kerneldoc/subsys/Doxyfile-dev_xilinx
index 3b863fd5bd55..559958a4eff5 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_xilinx
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_xilinx
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_xl b/tools/kerneldoc/subsys/Doxyfile-dev_xl
index 6890f1bbd890..d33cfdf9bc5f 100644
--- a/tools/kerneldoc/subsys/Doxyfile-dev_xl
+++ b/tools/kerneldoc/subsys/Doxyfile-dev_xl
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-geom b/tools/kerneldoc/subsys/Doxyfile-geom
index d7e4041f13c9..a16015694623 100644
--- a/tools/kerneldoc/subsys/Doxyfile-geom
+++ b/tools/kerneldoc/subsys/Doxyfile-geom
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-kern b/tools/kerneldoc/subsys/Doxyfile-kern
index 87f3c5a4e277..3a64cfca42f0 100644
--- a/tools/kerneldoc/subsys/Doxyfile-kern
+++ b/tools/kerneldoc/subsys/Doxyfile-kern
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-libkern b/tools/kerneldoc/subsys/Doxyfile-libkern
index f0f38d6caa96..98e45581d99c 100644
--- a/tools/kerneldoc/subsys/Doxyfile-libkern
+++ b/tools/kerneldoc/subsys/Doxyfile-libkern
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-linux b/tools/kerneldoc/subsys/Doxyfile-linux
index a239d55496a7..7a8855abd5b5 100644
--- a/tools/kerneldoc/subsys/Doxyfile-linux
+++ b/tools/kerneldoc/subsys/Doxyfile-linux
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-net80211 b/tools/kerneldoc/subsys/Doxyfile-net80211
index 7e622cf937d3..f9ce81e4ca06 100644
--- a/tools/kerneldoc/subsys/Doxyfile-net80211
+++ b/tools/kerneldoc/subsys/Doxyfile-net80211
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-netgraph b/tools/kerneldoc/subsys/Doxyfile-netgraph
index 585725edfb60..e75d96d0b262 100644
--- a/tools/kerneldoc/subsys/Doxyfile-netgraph
+++ b/tools/kerneldoc/subsys/Doxyfile-netgraph
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-netinet b/tools/kerneldoc/subsys/Doxyfile-netinet
index c9ed7e0df09a..86bdfb5ee3ad 100644
--- a/tools/kerneldoc/subsys/Doxyfile-netinet
+++ b/tools/kerneldoc/subsys/Doxyfile-netinet
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-netinet6 b/tools/kerneldoc/subsys/Doxyfile-netinet6
index 0c9e5d2bf0c9..d714b54210d7 100644
--- a/tools/kerneldoc/subsys/Doxyfile-netinet6
+++ b/tools/kerneldoc/subsys/Doxyfile-netinet6
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-netipsec b/tools/kerneldoc/subsys/Doxyfile-netipsec
index 75f4685e0a6a..52105e50f176 100644
--- a/tools/kerneldoc/subsys/Doxyfile-netipsec
+++ b/tools/kerneldoc/subsys/Doxyfile-netipsec
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-opencrypto b/tools/kerneldoc/subsys/Doxyfile-opencrypto
index d27501b5bf08..fc334a2f6551 100644
--- a/tools/kerneldoc/subsys/Doxyfile-opencrypto
+++ b/tools/kerneldoc/subsys/Doxyfile-opencrypto
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-vm b/tools/kerneldoc/subsys/Doxyfile-vm
index daa4224db367..9574acc4607e 100644
--- a/tools/kerneldoc/subsys/Doxyfile-vm
+++ b/tools/kerneldoc/subsys/Doxyfile-vm
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Doxyfile-xen b/tools/kerneldoc/subsys/Doxyfile-xen
index 51b59f7003f5..8eee91f1156e 100644
--- a/tools/kerneldoc/subsys/Doxyfile-xen
+++ b/tools/kerneldoc/subsys/Doxyfile-xen
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/Makefile b/tools/kerneldoc/subsys/Makefile
index b8397f810a0f..f8101d73b3e1 100644
--- a/tools/kerneldoc/subsys/Makefile
+++ b/tools/kerneldoc/subsys/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
_ALL!= cd ${.CURDIR} && ls Doxyfile-*
diff --git a/tools/kerneldoc/subsys/README b/tools/kerneldoc/subsys/README
index 9a70bf0b577e..6679d5cb9055 100644
--- a/tools/kerneldoc/subsys/README
+++ b/tools/kerneldoc/subsys/README
@@ -29,4 +29,3 @@ Programs needed to generate the API docs:
- graphics/graphviz
--
-$FreeBSD$
diff --git a/tools/kerneldoc/subsys/common-Doxyfile b/tools/kerneldoc/subsys/common-Doxyfile
index 36cb92bd6fa6..8e194c85e621 100644
--- a/tools/kerneldoc/subsys/common-Doxyfile
+++ b/tools/kerneldoc/subsys/common-Doxyfile
@@ -1,7 +1,5 @@
# Doxyfile 1.5.2
-# $FreeBSD$
-
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
diff --git a/tools/kerneldoc/subsys/notreviewed.dox b/tools/kerneldoc/subsys/notreviewed.dox
index bcc4bed1f61a..29a868e27c1f 100644
--- a/tools/kerneldoc/subsys/notreviewed.dox
+++ b/tools/kerneldoc/subsys/notreviewed.dox
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
/** @mainpage
* <b>IMPORTANT:</b> This API documentation may contain both functions which
diff --git a/tools/lua/template.lua b/tools/lua/template.lua
index 3662953b0f2e..6c7d33c8ab0f 100644
--- a/tools/lua/template.lua
+++ b/tools/lua/template.lua
@@ -28,7 +28,6 @@ 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.
]]--
--- $FreeBSD$
local setmetatable = setmetatable
local loadstring = loadstring
diff --git a/tools/make_libdeps.sh b/tools/make_libdeps.sh
index 77525093bbd7..648dc1589b59 100644
--- a/tools/make_libdeps.sh
+++ b/tools/make_libdeps.sh
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
export PATH=/bin:/usr/bin
diff --git a/tools/pkgbase/README.md b/tools/pkgbase/README.md
index 98bb37ed32e1..e81fc49c843f 100644
--- a/tools/pkgbase/README.md
+++ b/tools/pkgbase/README.md
@@ -1,4 +1,4 @@
-`metalog.lua` is a script that reads METALOG file created by pkgbase
+`metalog_reader.lua` is a script that reads METALOG file created by pkgbase
(make packages) and generates reports about the installed system
and issues
diff --git a/tools/pkgbase/metalog_reader.lua b/tools/pkgbase/metalog_reader.lua
index a429c981a71d..6a5b33f308ae 100644
--- a/tools/pkgbase/metalog_reader.lua
+++ b/tools/pkgbase/metalog_reader.lua
@@ -1,6 +1,6 @@
#!/usr/libexec/flua
--- SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+-- SPDX-License-Identifier: BSD-2-Clause
--
-- Copyright(c) 2020 The FreeBSD Foundation.
--
@@ -25,7 +25,6 @@
-- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-- SUCH DAMAGE.
--- $FreeBSD$
function main(args)
if #args == 0 then usage() end
@@ -86,13 +85,14 @@ function main(args)
local sess = Analysis_session(filename, verbose, w_notagdirs)
+ local errors
if printall then
io.write('--- PACKAGE REPORTS ---\n')
io.write(sess.pkg_report_full())
io.write('--- LINTING REPORTS ---\n')
- print_lints(sess)
+ errors = print_lints(sess)
elseif checkonly then
- print_lints(sess)
+ errors = print_lints(sess)
elseif pkgonly then
io.write(sess.pkg_report_simple(dcount, dsize, {
fuid and sess.pkg_issetuid or nil,
@@ -103,6 +103,10 @@ function main(args)
io.stderr:write('This text should not be displayed.')
usage()
end
+
+ if errors then
+ return 1
+ end
end
--- @param man boolean
@@ -151,6 +155,7 @@ function print_lints(sess)
local inodewarn, inodeerr = sess.inode_report()
io.write(inodewarn)
io.write(inodeerr)
+ return #duperr > 0 or #inodeerr > 0
end
--- @param t table
@@ -257,6 +262,7 @@ end
--- @param verbose boolean
--- @param w_notagdirs boolean turn on to also check directories
function Analysis_session(metalog, verbose, w_notagdirs)
+ local stage_root = {}
local files = {} -- map<string, MetalogRow[]>
-- set is map<elem, bool>. if bool is true then elem exists
local pkgs = {} -- map<string, set<string>>
@@ -385,11 +391,17 @@ function Analysis_session(metalog, verbose, w_notagdirs)
if #rows == 1 then goto continue end
local iseq, offby = metalogrows_all_equal(rows)
if iseq then -- repeated line, just a warning
- warn[#warn+1] = 'warning: '..filename
- ..' repeated with same meta: line '
- ..table.concat(
- table_map(rows, function(e) return e.linenum end), ',')
- warn[#warn+1] = '\n'
+ local dupmsg = filename .. ' ' ..
+ rows[1].attrs.type ..
+ ' repeated with same meta: line ' ..
+ table.concat(table_map(rows, function(e) return e.linenum end), ',')
+ if rows[1].attrs.type == "dir" then
+ if verbose then
+ warn[#warn+1] = 'warning: ' .. dupmsg .. '\n'
+ end
+ else
+ errs[#errs+1] = 'error: ' .. dupmsg .. '\n'
+ end
elseif not metalogrows_all_equal(rows, false, true) then
-- same filename (possibly different tags), different metadata, an error
errs[#errs+1] = 'error: '..filename
@@ -418,17 +430,14 @@ function Analysis_session(metalog, verbose, w_notagdirs)
if files[filename][1].attrs.type ~= 'file' then
goto continue
end
- -- make ./xxx become /xxx so that we can stat
- filename = filename:sub(2)
- local fs = attributes(filename)
+ local fs = attributes(stage_root .. filename)
if fs == nil then
unstatables[#unstatables+1] = filename
goto continue
end
local inode = fs.ino
inm[inode] = inm[inode] or {}
- -- add back the dot prefix
- table.insert(inm[inode], '.'..filename)
+ table.insert(inm[inode], filename)
::continue::
end
@@ -462,6 +471,9 @@ function Analysis_session(metalog, verbose, w_notagdirs)
return table.concat(warn, ''), table.concat(errs, '')
end
+ -- The METALOG file is assumed to be at the top of the stage directory.
+ stage_root = string.gsub(metalog, '/[^/]*$', '/')
+
do
local fp, errmsg, errcode = io.open(metalog, 'r')
if fp == nil then
@@ -475,7 +487,7 @@ function Analysis_session(metalog, verbose, w_notagdirs)
for line in fp:lines() do
-----local isinpkg = false
lineno = lineno + 1
- -- skip lines begining with #
+ -- skip lines beginning with #
if line:match('^%s*#') then goto continue end
-- skip blank lines
if line:match('^%s*$') then goto continue end
@@ -518,4 +530,4 @@ function Analysis_session(metalog, verbose, w_notagdirs)
}
end
-main(arg)
+os.exit(main(arg))
diff --git a/tools/regression/README b/tools/regression/README
index a2de3721f834..21db27d9d9aa 100644
--- a/tools/regression/README
+++ b/tools/regression/README
@@ -1,4 +1,3 @@
-$FreeBSD$
This directory is for regression test programs.
diff --git a/tools/regression/TODO b/tools/regression/TODO
index e8fb9f73c673..22fcf55cf295 100644
--- a/tools/regression/TODO
+++ b/tools/regression/TODO
@@ -1,4 +1,3 @@
-$FreeBSD$
---
A lot of the tests written in C use assert(), only printing 'ok' at the end
diff --git a/tools/regression/aio/aiop/Makefile b/tools/regression/aio/aiop/Makefile
index aac9a3b89e45..4c6d3ac16fef 100644
--- a/tools/regression/aio/aiop/Makefile
+++ b/tools/regression/aio/aiop/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= aiop
MAN=
diff --git a/tools/regression/aio/aiop/aiop.c b/tools/regression/aio/aiop/aiop.c
index 36fe3463d465..4b6bc986600b 100644
--- a/tools/regression/aio/aiop/aiop.c
+++ b/tools/regression/aio/aiop/aiop.c
@@ -38,9 +38,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/disk.h>
#include <sys/ioctl.h>
diff --git a/tools/regression/atm/Funcs.sh b/tools/regression/atm/Funcs.sh
deleted file mode 100644
index c981f101df94..000000000000
--- a/tools/regression/atm/Funcs.sh
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/sh
-# $FreeBSD$
-
-fatal() {
- echo -e "$*" >&2
- exit 1
-}
-
-msg() {
- echo -e "$*" >&2
-}
-
-usage1() {
- msg "Usage: RunTest.sh [-hq] [-b <localbase>]"
- msg "Options:"
- msg " -h show this info"
- msg " -b <localbase> localbase if not /usr/local"
- msg " -q be quite"
- msg " -u run user space test, not kernel"
- exit 0
-}
-
-parse_options() {
- args=`getopt b:hqu $*`
- if [ $? -ne 0 ] ; then
- fatal "Usage: $0 [-qu] [-b <localbase>]"
- fi
-
- options=""
- set -- $args
- for i
- do
- case "$i"
- in
-
- -h) usage1;;
- -u|-q) options="$options $i"; shift;;
- -b) LOCALBASE="$2"; shift; shift;;
- --) shift; break;;
- esac
- done
-
- if [ "$LOCALBASE" = "" ] ; then
- LOCALBASE="/usr/local"
-
- pkg_info -I atmsupport-\* 2>/dev/null >/dev/null
- if [ $? -ne 0 ] ; then
- fatal "Atmsupport package not installed. \
-Goto /usr/ports/net/atmsupport,\ntype 'make ; make install ; make clean' \
-and re-run this script"
- fi
- fi
-}
diff --git a/tools/regression/atm/README b/tools/regression/atm/README
deleted file mode 100644
index 4c7f28a15a11..000000000000
--- a/tools/regression/atm/README
+++ /dev/null
@@ -1,14 +0,0 @@
-$FreeBSD$
-
-This directory contains tests for the ATM stuff. All tests can be run
-from the top-level or from their sub-directories by starting RunTest.sh.
-
-These tests require ports/net/atmsupport to be installed - the
-scripts will remind you if they cannot find the package.
-
-proto_sscfu test suite for the SSCF at the user interface
-proto_sscop test suite for the SSCOP protocol
-proto_uni test suite for the UNI protocol
-proto_cc test suite for the call control function
-
-harti@freebsd.org
diff --git a/tools/regression/atm/RunTest.sh b/tools/regression/atm/RunTest.sh
deleted file mode 100644
index 90f69658d4aa..000000000000
--- a/tools/regression/atm/RunTest.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/sh
-# $FreeBSD$
-
-. ./Funcs.sh
-
-#
-# Just check the legality of the options and pass them along
-#
-args=`getopt b:hq $*`
-if [ $? -ne 0 ] ; then
- fatal "Usage: $0 [-q] [-b <localbase>]"
-fi
-
-usage() {
- msg "Usage: RunTest.sh [-hq] [-b <localbase>]"
- msg "Options:"
- msg " -h show this info"
- msg " -b <localbase> localbase if not /usr/local"
- msg " -q be quite"
- exit 0
-}
-
-options=""
-set -- $args
-for i
-do
- case "$i"
- in
-
- -h) usage;;
- -b) options="$options $i $2" ; shift; shift;;
- -q) options="$options $i" ; shift;;
- --) shift; break;;
- esac
-done
-
-(cd proto_sscop ; sh ./RunTest.sh -u $options)
-(cd proto_sscfu ; sh ./RunTest.sh -u $options)
-(cd proto_uni ; sh ./RunTest.sh -u $options)
-(cd proto_cc ; sh ./RunTest.sh -u $options)
-
-(cd proto_sscop ; sh ./RunTest.sh $options)
-(cd proto_sscfu ; sh ./RunTest.sh $options)
-(cd proto_uni ; sh ./RunTest.sh $options)
-(cd proto_cc ; sh ./RunTest.sh $options)
diff --git a/tools/regression/atm/proto_cc/RunTest.sh b/tools/regression/atm/proto_cc/RunTest.sh
deleted file mode 100644
index f6c7ce00d336..000000000000
--- a/tools/regression/atm/proto_cc/RunTest.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-# $FreeBSD$
-
-. ../Funcs.sh
-
-parse_options $*
-
-DATA=$LOCALBASE/share/atmsupport/testsuite_cc
-
-$LOCALBASE/bin/ats_cc $options $DATA/CC_Funcs $DATA/CC_??_??
diff --git a/tools/regression/atm/proto_sscfu/RunTest.sh b/tools/regression/atm/proto_sscfu/RunTest.sh
deleted file mode 100644
index 2f0865937224..000000000000
--- a/tools/regression/atm/proto_sscfu/RunTest.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-# $FreeBSD$
-
-. ../Funcs.sh
-
-parse_options $*
-
-DATA=$LOCALBASE/share/atmsupport/testsuite_sscfu
-
-$LOCALBASE/bin/ats_sscfu $options $DATA/Funcs $DATA/EST* $DATA/REL* \
-$DATA/REC* $DATA/RES* $DATA/DATA* $DATA/UDATA*
diff --git a/tools/regression/atm/proto_sscop/RunTest.sh b/tools/regression/atm/proto_sscop/RunTest.sh
deleted file mode 100644
index 60812deeb6ed..000000000000
--- a/tools/regression/atm/proto_sscop/RunTest.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-# $FreeBSD$
-
-. ../Funcs.sh
-
-parse_options $*
-
-DATA=$LOCALBASE/share/atmsupport/testsuite_sscop
-
-$LOCALBASE/bin/ats_sscop $options $DATA/Funcs $DATA/S*
diff --git a/tools/regression/atm/proto_uni/RunTest.sh b/tools/regression/atm/proto_uni/RunTest.sh
deleted file mode 100644
index 8b9c9e5e38c9..000000000000
--- a/tools/regression/atm/proto_uni/RunTest.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-# $FreeBSD$
-
-. ../Funcs.sh
-
-parse_options $*
-
-DATA=$LOCALBASE/share/atmsupport/testsuite_uni
-
-$LOCALBASE/bin/ats_sig $options $DATA/Funcs $DATA/L3MU_Funcs $DATA/Restart.??? \
- $DATA/Unknown.??? $DATA/Incoming.??? $DATA/MpOut.??? $DATA/MpIn.??? \
- $DATA/L???_??_??
diff --git a/tools/regression/audit/audit_pipe_ioctl/Makefile b/tools/regression/audit/audit_pipe_ioctl/Makefile
index 083e25d35d9f..04ccfe596bb8 100644
--- a/tools/regression/audit/audit_pipe_ioctl/Makefile
+++ b/tools/regression/audit/audit_pipe_ioctl/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= audit_pipe_ioctl
diff --git a/tools/regression/audit/audit_pipe_ioctl/audit_pipe_ioctl.c b/tools/regression/audit/audit_pipe_ioctl/audit_pipe_ioctl.c
index 7594ca843259..ca8cc8f302b3 100644
--- a/tools/regression/audit/audit_pipe_ioctl/audit_pipe_ioctl.c
+++ b/tools/regression/audit/audit_pipe_ioctl/audit_pipe_ioctl.c
@@ -24,8 +24,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/bpf/Makefile b/tools/regression/bpf/Makefile
index 8fac0b461be7..154b61fa280c 100644
--- a/tools/regression/bpf/Makefile
+++ b/tools/regression/bpf/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SUBDIR= bpf_filter
diff --git a/tools/regression/bpf/bpf_filter/Makefile b/tools/regression/bpf/bpf_filter/Makefile
index e01a54e26cb3..0f88a27c4e8a 100644
--- a/tools/regression/bpf/bpf_filter/Makefile
+++ b/tools/regression/bpf/bpf_filter/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
TEST_CASES?= test0001 test0002 test0003 test0004 \
test0005 test0006 test0007 test0008 \
diff --git a/tools/regression/bpf/bpf_filter/bpf_test.c b/tools/regression/bpf/bpf_filter/bpf_test.c
index b62ca774d21d..b3fd88befdb4 100644
--- a/tools/regression/bpf/bpf_filter/bpf_test.c
+++ b/tools/regression/bpf/bpf_filter/bpf_test.c
@@ -24,8 +24,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
diff --git a/tools/regression/bpf/bpf_filter/tests/test0001.h b/tools/regression/bpf/bpf_filter/tests/test0001.h
index 5640f9a1cb22..79c40d34d822 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0001.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0001.h
@@ -1,7 +1,5 @@
/*-
* Test 0001: Catch illegal instruction.
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0002.h b/tools/regression/bpf/bpf_filter/tests/test0002.h
index 15935505d849..d687e253dbb0 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0002.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0002.h
@@ -1,7 +1,5 @@
/*-
* Test 0002: BPF_RET+BPF_K
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0003.h b/tools/regression/bpf/bpf_filter/tests/test0003.h
index 9ab083a48623..a85f19da4500 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0003.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0003.h
@@ -1,7 +1,5 @@
/*-
* Test 0003: BPF_LD+BPF_IMM & BPF_RET+BPF_A
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0004.h b/tools/regression/bpf/bpf_filter/tests/test0004.h
index 7eb42a125ca3..06440b0dd963 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0004.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0004.h
@@ -1,7 +1,5 @@
/*-
* Test 0004: BPF_LD+BPF_W+BPF_ABS
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0005.h b/tools/regression/bpf/bpf_filter/tests/test0005.h
index 4dae935d1357..e4be9aec98c7 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0005.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0005.h
@@ -1,7 +1,5 @@
/*-
* Test 0005: BPF_LD+BPF_H+BPF_ABS
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0006.h b/tools/regression/bpf/bpf_filter/tests/test0006.h
index 2c7485db6ad7..65fd5dabf028 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0006.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0006.h
@@ -1,7 +1,5 @@
/*-
* Test 0006: BPF_LD+BPF_B+BPF_ABS
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0007.h b/tools/regression/bpf/bpf_filter/tests/test0007.h
index 026c6f7d9725..b8197c73b67d 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0007.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0007.h
@@ -1,7 +1,5 @@
/*-
* Test 0007: BPF_LD+BPF_W+BPF_LEN
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0008.h b/tools/regression/bpf/bpf_filter/tests/test0008.h
index 80e1eb0f812b..ebedc35e7059 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0008.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0008.h
@@ -1,7 +1,5 @@
/*-
* Test 0008: BPF_LDX+BPF_W+BPF_LEN & BPF_MISC+BPF_TXA
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0009.h b/tools/regression/bpf/bpf_filter/tests/test0009.h
index 7053450c4893..38fc482d9359 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0009.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0009.h
@@ -1,7 +1,5 @@
/*-
* Test 0009: BPF_LDX+BPF_IMM & BPF_LD+BPF_W+BPF_IND
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0010.h b/tools/regression/bpf/bpf_filter/tests/test0010.h
index 8377804d4abb..bd1161a926d1 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0010.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0010.h
@@ -1,7 +1,5 @@
/*-
* Test 0010: BPF_LD+BPF_H+BPF_IND
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0011.h b/tools/regression/bpf/bpf_filter/tests/test0011.h
index 057c224eaec4..64e26089ab3a 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0011.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0011.h
@@ -1,7 +1,5 @@
/*-
* Test 0011: BPF_LD+BPF_B+BPF_IND
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0012.h b/tools/regression/bpf/bpf_filter/tests/test0012.h
index b1ef2b73da7d..eb4b13be3988 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0012.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0012.h
@@ -1,7 +1,5 @@
/*-
* Test 0012: BPF_LDX+BPF_MSH+BPF_B
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0013.h b/tools/regression/bpf/bpf_filter/tests/test0013.h
index 004e517b3296..64f8d8357eed 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0013.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0013.h
@@ -1,7 +1,5 @@
/*-
* Test 0013: BPF_ST & BPF_LDX+BPF_MEM
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0014.h b/tools/regression/bpf/bpf_filter/tests/test0014.h
index ff1799f29eb1..d4f4918b28e4 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0014.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0014.h
@@ -1,7 +1,5 @@
/*-
* Test 0014: BPF_STX & BPF_LD+BPF_MEM
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0015.h b/tools/regression/bpf/bpf_filter/tests/test0015.h
index 903f7325d772..4cb097bf721c 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0015.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0015.h
@@ -1,7 +1,5 @@
/*-
* Test 0015: BPF_JMP+BPF_JA
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0016.h b/tools/regression/bpf/bpf_filter/tests/test0016.h
index eeb26fa7b33c..a1d9bb76fd38 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0016.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0016.h
@@ -1,7 +1,5 @@
/*-
* Test 0016: BPF_JMP+BPF_JGT+BPF_K
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0017.h b/tools/regression/bpf/bpf_filter/tests/test0017.h
index 7a38d06940f2..7df1e3c3f565 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0017.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0017.h
@@ -1,7 +1,5 @@
/*-
* Test 0017: BPF_JMP+BPF_JGE+BPF_K
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0018.h b/tools/regression/bpf/bpf_filter/tests/test0018.h
index 11f3927c4e72..738eff861aea 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0018.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0018.h
@@ -1,7 +1,5 @@
/*-
* Test 0018: BPF_JMP+BPF_JEQ+BPF_K
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0019.h b/tools/regression/bpf/bpf_filter/tests/test0019.h
index a2c27c08403c..00e91eb59af8 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0019.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0019.h
@@ -1,7 +1,5 @@
/*-
* Test 0019: BPF_JMP+BPF_JSET+BPF_K
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0020.h b/tools/regression/bpf/bpf_filter/tests/test0020.h
index 58384c66a875..bee47e183094 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0020.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0020.h
@@ -1,7 +1,5 @@
/*-
* Test 0020: BPF_JMP+BPF_JGT+BPF_X
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0021.h b/tools/regression/bpf/bpf_filter/tests/test0021.h
index da092b8abb78..af0fae31f45d 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0021.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0021.h
@@ -1,7 +1,5 @@
/*-
* Test 0021: BPF_JMP+BPF_JGE+BPF_X
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0022.h b/tools/regression/bpf/bpf_filter/tests/test0022.h
index 9fa0d94b32d1..a94790cdb5a3 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0022.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0022.h
@@ -1,7 +1,5 @@
/*-
* Test 0022: BPF_JMP+BPF_JEQ+BPF_X
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0023.h b/tools/regression/bpf/bpf_filter/tests/test0023.h
index ac9bf25e6c85..b4d8d8394d23 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0023.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0023.h
@@ -1,7 +1,5 @@
/*-
* Test 0023: BPF_JMP+BPF_JSET+BPF_X
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0024.h b/tools/regression/bpf/bpf_filter/tests/test0024.h
index 511378e7a781..a41ef400a40c 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0024.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0024.h
@@ -1,7 +1,5 @@
/*-
* Test 0024: BPF_ALU+BPF_ADD+BPF_X
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0025.h b/tools/regression/bpf/bpf_filter/tests/test0025.h
index 91acfe47536a..ac0581b2f6e1 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0025.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0025.h
@@ -1,7 +1,5 @@
/*-
* Test 0025: BPF_ALU+BPF_SUB+BPF_X
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0026.h b/tools/regression/bpf/bpf_filter/tests/test0026.h
index f881c0f8eb46..a0f2a31af66f 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0026.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0026.h
@@ -1,7 +1,5 @@
/*-
* Test 0026: BPF_ALU+BPF_MUL+BPF_X
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0027.h b/tools/regression/bpf/bpf_filter/tests/test0027.h
index bf41904368eb..54756fbbd313 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0027.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0027.h
@@ -1,7 +1,5 @@
/*-
* Test 0027: BPF_ALU+BPF_DIV+BPF_X
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0028.h b/tools/regression/bpf/bpf_filter/tests/test0028.h
index f205e143ca13..47bf4d7f1fe8 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0028.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0028.h
@@ -1,7 +1,5 @@
/*-
* Test 0028: BPF_ALU+BPF_AND+BPF_X
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0029.h b/tools/regression/bpf/bpf_filter/tests/test0029.h
index f9a26a9d86f8..dbbd0276fcb8 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0029.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0029.h
@@ -1,7 +1,5 @@
/*-
* Test 0029: BPF_ALU+BPF_OR+BPF_X
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0030.h b/tools/regression/bpf/bpf_filter/tests/test0030.h
index 5574264d3eee..3cdccf13016d 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0030.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0030.h
@@ -1,7 +1,5 @@
/*-
* Test 0030: BPF_ALU+BPF_LSH+BPF_X
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0031.h b/tools/regression/bpf/bpf_filter/tests/test0031.h
index ff5fc1950a28..43afa36428b1 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0031.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0031.h
@@ -1,7 +1,5 @@
/*-
* Test 0031: BPF_ALU+BPF_RSH+BPF_X
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0032.h b/tools/regression/bpf/bpf_filter/tests/test0032.h
index 7bde40237394..c20a40d99726 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0032.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0032.h
@@ -1,7 +1,5 @@
/*-
* Test 0032: BPF_ALU+BPF_ADD+BPF_K
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0033.h b/tools/regression/bpf/bpf_filter/tests/test0033.h
index 615021839522..c7066c24a5a5 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0033.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0033.h
@@ -1,7 +1,5 @@
/*-
* Test 0033: BPF_ALU+BPF_SUB+BPF_K
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0034.h b/tools/regression/bpf/bpf_filter/tests/test0034.h
index 0219eb025478..37674d8ca11a 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0034.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0034.h
@@ -1,7 +1,5 @@
/*-
* Test 0034: BPF_ALU+BPF_MUL+BPF_K
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0035.h b/tools/regression/bpf/bpf_filter/tests/test0035.h
index 0c6b69e3eaeb..3ebae2dad401 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0035.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0035.h
@@ -1,7 +1,5 @@
/*-
* Test 0035: BPF_ALU+BPF_DIV+BPF_K
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0036.h b/tools/regression/bpf/bpf_filter/tests/test0036.h
index 8bee25b78a74..d9014c98c25b 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0036.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0036.h
@@ -1,7 +1,5 @@
/*-
* Test 0036: BPF_ALU+BPF_AND+BPF_K
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0037.h b/tools/regression/bpf/bpf_filter/tests/test0037.h
index 66682c4ff8bf..722cb429ad66 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0037.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0037.h
@@ -1,7 +1,5 @@
/*-
* Test 0037: BPF_ALU+BPF_OR+BPF_K
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0038.h b/tools/regression/bpf/bpf_filter/tests/test0038.h
index b9307bb73966..71f041dd920b 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0038.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0038.h
@@ -1,7 +1,5 @@
/*-
* Test 0038: BPF_ALU+BPF_LSH+BPF_K
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0039.h b/tools/regression/bpf/bpf_filter/tests/test0039.h
index 51cfed53711c..710202eb9b09 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0039.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0039.h
@@ -1,7 +1,5 @@
/*-
* Test 0039: BPF_ALU+BPF_RSH+BPF_K
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0040.h b/tools/regression/bpf/bpf_filter/tests/test0040.h
index 11b71cd1c369..fc03b50d4cf7 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0040.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0040.h
@@ -1,7 +1,5 @@
/*-
* Test 0040: BPF_ALU+BPF_NEG
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0041.h b/tools/regression/bpf/bpf_filter/tests/test0041.h
index 28008de347d9..89455522a9eb 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0041.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0041.h
@@ -1,7 +1,5 @@
/*-
* Test 0041: BPF_MISC+BPF_TAX
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0042.h b/tools/regression/bpf/bpf_filter/tests/test0042.h
index c5b5928db85a..97c6cbe72a79 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0042.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0042.h
@@ -1,7 +1,5 @@
/*-
* Test 0042: Check boundary conditions (BPF_LD+BPF_W+BPF_ABS)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0043.h b/tools/regression/bpf/bpf_filter/tests/test0043.h
index be1855d3d892..5395faa4197c 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0043.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0043.h
@@ -1,7 +1,5 @@
/*-
* Test 0043: Check boundary conditions (BPF_LD+BPF_H+BPF_ABS)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0044.h b/tools/regression/bpf/bpf_filter/tests/test0044.h
index b46632ad802b..66084f599b92 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0044.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0044.h
@@ -1,7 +1,5 @@
/*-
* Test 0044: Check boundary conditions (BPF_LD+BPF_B+BPF_ABS)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0045.h b/tools/regression/bpf/bpf_filter/tests/test0045.h
index 97ae975ba37d..510e52ab1d00 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0045.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0045.h
@@ -1,7 +1,5 @@
/*-
* Test 0045: Check boundary conditions (BPF_LD+BPF_W+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0046.h b/tools/regression/bpf/bpf_filter/tests/test0046.h
index a45204d06b9e..cb8a44d89ecd 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0046.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0046.h
@@ -1,7 +1,5 @@
/*-
* Test 0046: Check boundary conditions (BPF_LD+BPF_H+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0047.h b/tools/regression/bpf/bpf_filter/tests/test0047.h
index f0d39d86dac2..7f0e883b36e0 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0047.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0047.h
@@ -1,7 +1,5 @@
/*-
* Test 0047: Check boundary conditions (BPF_LD+BPF_B+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0048.h b/tools/regression/bpf/bpf_filter/tests/test0048.h
index 6736d5a9fc29..2bdcb75b8dae 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0048.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0048.h
@@ -1,7 +1,5 @@
/*-
* Test 0048: Check boundary conditions (BPF_LDX+BPF_MSH+BPF_B)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0049.h b/tools/regression/bpf/bpf_filter/tests/test0049.h
index d4091998ad84..75d00c97a6e9 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0049.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0049.h
@@ -1,7 +1,5 @@
/*-
* Test 0049: Check boundary conditions (BPF_LD+BPF_W+BPF_ABS)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0050.h b/tools/regression/bpf/bpf_filter/tests/test0050.h
index 9a5dff68eea6..952c3fdb4109 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0050.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0050.h
@@ -1,7 +1,5 @@
/*-
* Test 0050: Check boundary conditions (BPF_LD+BPF_H+BPF_ABS)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0051.h b/tools/regression/bpf/bpf_filter/tests/test0051.h
index ab48c339e6d1..49306f27ab8d 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0051.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0051.h
@@ -1,7 +1,5 @@
/*-
* Test 0051: Check boundary conditions (BPF_LD+BPF_W+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0052.h b/tools/regression/bpf/bpf_filter/tests/test0052.h
index ec7016f67560..914dd6d16e19 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0052.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0052.h
@@ -1,7 +1,5 @@
/*-
* Test 0052: Check boundary conditions (BPF_LD+BPF_H+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0053.h b/tools/regression/bpf/bpf_filter/tests/test0053.h
index df81ce0e9209..ded72d61d912 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0053.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0053.h
@@ -1,7 +1,5 @@
/*-
* Test 0053: Check boundary conditions (BPF_LD+BPF_B+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0054.h b/tools/regression/bpf/bpf_filter/tests/test0054.h
index 45dd64ff36b5..0b43efe7db5c 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0054.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0054.h
@@ -1,7 +1,5 @@
/*-
* Test 0054: Check boundary conditions (BPF_LD+BPF_W+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0055.h b/tools/regression/bpf/bpf_filter/tests/test0055.h
index 4312102028db..13db5b9c581f 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0055.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0055.h
@@ -1,7 +1,5 @@
/*-
* Test 0055: Check boundary conditions (BPF_LD+BPF_H+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0056.h b/tools/regression/bpf/bpf_filter/tests/test0056.h
index cc3103db2fd4..359c44d350db 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0056.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0056.h
@@ -1,7 +1,5 @@
/*-
* Test 0056: Check boundary conditions (BPF_LD+BPF_W+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0057.h b/tools/regression/bpf/bpf_filter/tests/test0057.h
index ba355a3749eb..25a1b7dca804 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0057.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0057.h
@@ -1,7 +1,5 @@
/*-
* Test 0057: Check boundary conditions (BPF_LD+BPF_H+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0058.h b/tools/regression/bpf/bpf_filter/tests/test0058.h
index 9ea693ea8f03..9a530875903c 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0058.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0058.h
@@ -1,7 +1,5 @@
/*-
* Test 0058: Check boundary conditions (BPF_LD+BPF_B+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0059.h b/tools/regression/bpf/bpf_filter/tests/test0059.h
index 0292787f6ee5..bb2a43d716b5 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0059.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0059.h
@@ -1,7 +1,5 @@
/*-
* Test 0059: Check boundary conditions (BPF_LD+BPF_W+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0060.h b/tools/regression/bpf/bpf_filter/tests/test0060.h
index 6792fcf9c296..f9e3244c2cac 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0060.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0060.h
@@ -1,7 +1,5 @@
/*-
* Test 0060: Check boundary conditions (BPF_LD+BPF_H+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0061.h b/tools/regression/bpf/bpf_filter/tests/test0061.h
index f1557a16676d..79e6f0f6a413 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0061.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0061.h
@@ -1,7 +1,5 @@
/*-
* Test 0061: Check boundary conditions (BPF_LD+BPF_B+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0062.h b/tools/regression/bpf/bpf_filter/tests/test0062.h
index 5689b9c4a19e..1ec92aff3a91 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0062.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0062.h
@@ -1,7 +1,5 @@
/*-
* Test 0062: Check boundary conditions (BPF_LD+BPF_W+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0063.h b/tools/regression/bpf/bpf_filter/tests/test0063.h
index b9d666130532..068ad6b39f45 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0063.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0063.h
@@ -1,7 +1,5 @@
/*-
* Test 0063: Check boundary conditions (BPF_LD+BPF_H+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0064.h b/tools/regression/bpf/bpf_filter/tests/test0064.h
index 0f43c3690fe9..b2ac924e3561 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0064.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0064.h
@@ -1,7 +1,5 @@
/*-
* Test 0064: Check boundary conditions (BPF_LD+BPF_B+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0065.h b/tools/regression/bpf/bpf_filter/tests/test0065.h
index b782a8ef4c49..e4326ff54d04 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0065.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0065.h
@@ -1,7 +1,5 @@
/*-
* Test 0065: Check boundary conditions (BPF_LD+BPF_W+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0066.h b/tools/regression/bpf/bpf_filter/tests/test0066.h
index 1d828e150b07..49cea78005cd 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0066.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0066.h
@@ -1,7 +1,5 @@
/*-
* Test 0066: Check boundary conditions (BPF_LD+BPF_H+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0067.h b/tools/regression/bpf/bpf_filter/tests/test0067.h
index 665ce0e21b60..023aa08550ab 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0067.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0067.h
@@ -1,7 +1,5 @@
/*-
* Test 0067: Check boundary conditions (BPF_LD+BPF_B+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0068.h b/tools/regression/bpf/bpf_filter/tests/test0068.h
index d2f811eda740..e3235a72b705 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0068.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0068.h
@@ -1,7 +1,5 @@
/*-
* Test 0068: Check boundary conditions (BPF_LD+BPF_W+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0069.h b/tools/regression/bpf/bpf_filter/tests/test0069.h
index 86fdcad4caa0..a8ce609788f2 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0069.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0069.h
@@ -1,7 +1,5 @@
/*-
* Test 0069: Check boundary conditions (BPF_LD+BPF_H+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0070.h b/tools/regression/bpf/bpf_filter/tests/test0070.h
index 3c279c4677d8..982015b7bc68 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0070.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0070.h
@@ -1,7 +1,5 @@
/*-
* Test 0070: Check boundary conditions (BPF_LD+BPF_B+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0071.h b/tools/regression/bpf/bpf_filter/tests/test0071.h
index bca754934100..ae23745a1bf5 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0071.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0071.h
@@ -1,7 +1,5 @@
/*-
* Test 0071: Check boundary conditions (BPF_LD+BPF_W+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0072.h b/tools/regression/bpf/bpf_filter/tests/test0072.h
index 9bf97ea5158e..fcfe9a57a3f0 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0072.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0072.h
@@ -1,7 +1,5 @@
/*-
* Test 0072: Check boundary conditions (BPF_LD+BPF_H+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0073.h b/tools/regression/bpf/bpf_filter/tests/test0073.h
index 50b3f5693f1f..7433a4b94c62 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0073.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0073.h
@@ -1,7 +1,5 @@
/*-
* Test 0073: Check boundary conditions (BPF_LD+BPF_B+BPF_IND)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0074.h b/tools/regression/bpf/bpf_filter/tests/test0074.h
index febd27525e98..f4b8ce73dac1 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0074.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0074.h
@@ -1,7 +1,5 @@
/*-
* Test 0074: Divide by 0 (BPF_ALU+BPF_DIV+BPF_X)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0075.h b/tools/regression/bpf/bpf_filter/tests/test0075.h
index c20614b7fec9..d3b29ccc0e82 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0075.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0075.h
@@ -1,7 +1,5 @@
/*-
* Test 0075: Check boundary conditions (BPF_LD+BPF_MEM)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0076.h b/tools/regression/bpf/bpf_filter/tests/test0076.h
index d2b210e00cc2..75c4cf2a2ef5 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0076.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0076.h
@@ -1,7 +1,5 @@
/*-
* Test 0076: Check boundary conditions (BPF_LDX+BPF_MEM)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0077.h b/tools/regression/bpf/bpf_filter/tests/test0077.h
index 5170c003eaaf..08d4c3f0154b 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0077.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0077.h
@@ -1,7 +1,5 @@
/*-
* Test 0077: Check boundary conditions (BPF_ST)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0078.h b/tools/regression/bpf/bpf_filter/tests/test0078.h
index ba830359be49..16da9f6122e0 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0078.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0078.h
@@ -1,7 +1,5 @@
/*-
* Test 0078: Check boundary conditions (BPF_STX)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0079.h b/tools/regression/bpf/bpf_filter/tests/test0079.h
index 7c65fbe42cc4..2d0b824a7d25 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0079.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0079.h
@@ -1,7 +1,5 @@
/*-
* Test 0079: An empty filter program.
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0080.h b/tools/regression/bpf/bpf_filter/tests/test0080.h
index a4829085d20d..c586e1875082 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0080.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0080.h
@@ -1,7 +1,5 @@
/*-
* Test 0080: Check uninitialized scratch memory (obsolete).
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0081.h b/tools/regression/bpf/bpf_filter/tests/test0081.h
index d6ce04ff83be..309e31f6597e 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0081.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0081.h
@@ -1,7 +1,5 @@
/*-
* Test 0081: Check unconditional jump range.
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0082.h b/tools/regression/bpf/bpf_filter/tests/test0082.h
index e74171e1f0f2..d0c64c2e6f92 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0082.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0082.h
@@ -1,7 +1,5 @@
/*-
* Test 0082: Check conditional jump ranges.
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0083.h b/tools/regression/bpf/bpf_filter/tests/test0083.h
index 3ebf1cc6d39c..7beb6be58de9 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0083.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0083.h
@@ -1,7 +1,5 @@
/*-
* Test 0083: Check that the last instruction is BPF_RET.
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0084.h b/tools/regression/bpf/bpf_filter/tests/test0084.h
index f6a777712099..c184d95db2a7 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0084.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0084.h
@@ -1,7 +1,5 @@
/*-
* Test 0084: Check very long BPF program.
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0085.h b/tools/regression/bpf/bpf_filter/tests/test0085.h
index 3a9f77951d58..defed70c443a 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0085.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0085.h
@@ -1,7 +1,5 @@
/*-
* Test 0085: BPF_ALU+BPF_MOD+BPF_X
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0086.h b/tools/regression/bpf/bpf_filter/tests/test0086.h
index 44311bcf2ae6..b6483403376c 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0086.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0086.h
@@ -1,7 +1,5 @@
/*-
* Test 0086: BPF_ALU+BPF_XOR+BPF_X
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0087.h b/tools/regression/bpf/bpf_filter/tests/test0087.h
index 5b102278e8aa..56f1fc890730 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0087.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0087.h
@@ -1,7 +1,5 @@
/*-
* Test 0087: BPF_ALU+BPF_MOD+BPF_K
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0088.h b/tools/regression/bpf/bpf_filter/tests/test0088.h
index 9126ac020b27..f886169dc5a3 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0088.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0088.h
@@ -1,7 +1,5 @@
/*-
* Test 0088: BPF_ALU+BPF_XOR+BPF_K
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0089.h b/tools/regression/bpf/bpf_filter/tests/test0089.h
index a7b1cfaf2103..ea7f3f341892 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0089.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0089.h
@@ -1,7 +1,5 @@
/*-
* Test 0089: Divide by 0 (BPF_ALU+BPF_MOD+BPF_X)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0090.h b/tools/regression/bpf/bpf_filter/tests/test0090.h
index 70ccf1e2b0dc..c339e1af03a8 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0090.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0090.h
@@ -1,7 +1,5 @@
/*-
* Test 0090: Divide by 0 (BPF_ALU+BPF_DIV+BPF_K)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/bpf/bpf_filter/tests/test0091.h b/tools/regression/bpf/bpf_filter/tests/test0091.h
index 1e148e9d783c..36a629f94294 100644
--- a/tools/regression/bpf/bpf_filter/tests/test0091.h
+++ b/tools/regression/bpf/bpf_filter/tests/test0091.h
@@ -1,7 +1,5 @@
/*-
* Test 0091: Divide by 0 (BPF_ALU+BPF_MOD+BPF_K)
- *
- * $FreeBSD$
*/
/* BPF program */
diff --git a/tools/regression/capsicum/syscalls/Makefile b/tools/regression/capsicum/syscalls/Makefile
index 2380193d7d7a..86a3c48ba150 100644
--- a/tools/regression/capsicum/syscalls/Makefile
+++ b/tools/regression/capsicum/syscalls/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SYSCALLS= cap_fcntls_limit cap_getmode cap_ioctls_limit
diff --git a/tools/regression/capsicum/syscalls/cap_fcntls_limit.c b/tools/regression/capsicum/syscalls/cap_fcntls_limit.c
index e3a05bf66149..d26f3e3b7c36 100644
--- a/tools/regression/capsicum/syscalls/cap_fcntls_limit.c
+++ b/tools/regression/capsicum/syscalls/cap_fcntls_limit.c
@@ -27,9 +27,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/capsicum.h>
#include <sys/procdesc.h>
diff --git a/tools/regression/capsicum/syscalls/cap_getmode.c b/tools/regression/capsicum/syscalls/cap_getmode.c
index 32037c3c13de..72596b615877 100644
--- a/tools/regression/capsicum/syscalls/cap_getmode.c
+++ b/tools/regression/capsicum/syscalls/cap_getmode.c
@@ -27,9 +27,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/capsicum.h>
#include <sys/procdesc.h>
diff --git a/tools/regression/capsicum/syscalls/cap_ioctls_limit.c b/tools/regression/capsicum/syscalls/cap_ioctls_limit.c
index 2ed00f175469..68bdefb417ce 100644
--- a/tools/regression/capsicum/syscalls/cap_ioctls_limit.c
+++ b/tools/regression/capsicum/syscalls/cap_ioctls_limit.c
@@ -27,9 +27,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/param.h>
#include <sys/capsicum.h>
#include <sys/ioctl.h>
diff --git a/tools/regression/capsicum/syscalls/misc.c b/tools/regression/capsicum/syscalls/misc.c
index 303a9117910c..704fd70b83ff 100644
--- a/tools/regression/capsicum/syscalls/misc.c
+++ b/tools/regression/capsicum/syscalls/misc.c
@@ -27,9 +27,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/select.h>
#include <sys/socket.h>
diff --git a/tools/regression/capsicum/syscalls/misc.h b/tools/regression/capsicum/syscalls/misc.h
index 4968c3e059b4..842500aff14d 100644
--- a/tools/regression/capsicum/syscalls/misc.h
+++ b/tools/regression/capsicum/syscalls/misc.h
@@ -25,8 +25,6 @@
* 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.
- *
- * $FreeBSD$
*/
#ifndef _MISC_H_
diff --git a/tools/regression/ccd/layout/Makefile b/tools/regression/ccd/layout/Makefile
index 1e6b4dfe59e8..e593f6efc079 100644
--- a/tools/regression/ccd/layout/Makefile
+++ b/tools/regression/ccd/layout/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Regression test for ccd's layout.
#
diff --git a/tools/regression/ccd/layout/a.c b/tools/regression/ccd/layout/a.c
index 33eea10f2a3c..0feb1f28c093 100644
--- a/tools/regression/ccd/layout/a.c
+++ b/tools/regression/ccd/layout/a.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
#include <unistd.h>
static uint32_t buf[512/4];
diff --git a/tools/regression/ccd/layout/b.c b/tools/regression/ccd/layout/b.c
index 5b4ae8ed6a9e..eea078db37d2 100644
--- a/tools/regression/ccd/layout/b.c
+++ b/tools/regression/ccd/layout/b.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
#include <unistd.h>
#include <fcntl.h>
diff --git a/tools/regression/ccd/layout/ccd.sh b/tools/regression/ccd/layout/ccd.sh
index 62d4726528a8..16e62a3b3d43 100644
--- a/tools/regression/ccd/layout/ccd.sh
+++ b/tools/regression/ccd/layout/ccd.sh
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
set -e
diff --git a/tools/regression/ccd/layout/ccd0.sh b/tools/regression/ccd/layout/ccd0.sh
index 0f71b18dc96e..2edc02b83fc6 100644
--- a/tools/regression/ccd/layout/ccd0.sh
+++ b/tools/regression/ccd/layout/ccd0.sh
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
set -e
diff --git a/tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_0 b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_0
index 470f2dce2c0a..644b7d3fd577 100644
--- a/tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_0
+++ b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_0
@@ -1,4 +1,3 @@
-$FreeBSD$
ccd3: 4 components (md90, md91, md92, md93), 960 blocks concatenated
76089c8ed2249882ae0bb260dcb4a913
4cc57a9dd953d032ae7e07edaef31203
diff --git a/tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_4 b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_4
index 470f2dce2c0a..644b7d3fd577 100644
--- a/tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_4
+++ b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_4
@@ -1,4 +1,3 @@
-$FreeBSD$
ccd3: 4 components (md90, md91, md92, md93), 960 blocks concatenated
76089c8ed2249882ae0bb260dcb4a913
4cc57a9dd953d032ae7e07edaef31203
diff --git a/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_0 b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_0
index 593c413f5966..d1aaba5cfd60 100644
--- a/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_0
+++ b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_0
@@ -1,4 +1,3 @@
-$FreeBSD$
ccd3: 4 components (md90, md91, md92, md93), 960 blocks interleaved at 4 blocks
c3019ef8e08259f8748931f225e5cebf
ddef760dcef4784565cfe7d76e5aa3ce
diff --git a/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_2 b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_2
index 593c413f5966..d1aaba5cfd60 100644
--- a/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_2
+++ b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_2
@@ -1,4 +1,3 @@
-$FreeBSD$
ccd3: 4 components (md90, md91, md92, md93), 960 blocks interleaved at 4 blocks
c3019ef8e08259f8748931f225e5cebf
ddef760dcef4784565cfe7d76e5aa3ce
diff --git a/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_4 b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_4
index 9f8aebc12269..b0bea3946e71 100644
--- a/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_4
+++ b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_4
@@ -1,4 +1,3 @@
-$FreeBSD$
ccd3: 4 components (md90, md91, md92, md93), 480 blocks interleaved at 4 blocks
a77c5edd8917abb32dc165750f1af781
8db0b90ec1fa54feca98ad8fd292b07c
diff --git a/tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_0 b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_0
index 44a28186e4a1..c120b1ef2749 100644
--- a/tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_0
+++ b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_0
@@ -1,4 +1,3 @@
-$FreeBSD$
ccd3: 4 components (md90, md91, md92, md93), 1216 blocks concatenated
50ca80e7defff2928b09d9e6c22d14ff
a5f4fb6b17d948b83b8685b3adfe0926
diff --git a/tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_4 b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_4
index 44a28186e4a1..c120b1ef2749 100644
--- a/tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_4
+++ b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_4
@@ -1,4 +1,3 @@
-$FreeBSD$
ccd3: 4 components (md90, md91, md92, md93), 1216 blocks concatenated
50ca80e7defff2928b09d9e6c22d14ff
a5f4fb6b17d948b83b8685b3adfe0926
diff --git a/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_0 b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_0
index 6fc421a38ea6..1b858172606b 100644
--- a/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_0
+++ b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_0
@@ -1,4 +1,3 @@
-$FreeBSD$
ccd3: 4 components (md90, md91, md92, md93), 1216 blocks interleaved at 4 blocks
85853375739fe031c97c20e6226aae0e
ddef760dcef4784565cfe7d76e5aa3ce
diff --git a/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_2 b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_2
index 53cfc7985466..aa8680270267 100644
--- a/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_2
+++ b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_2
@@ -1,4 +1,3 @@
-$FreeBSD$
ccd3: 4 components (md90, md91, md92, md93), 960 blocks interleaved at 4 blocks
c7d32c7a0aacde7259cac3ab214bda77
ddef760dcef4784565cfe7d76e5aa3ce
diff --git a/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_4 b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_4
index ba42742e6745..07f5dd27fa0b 100644
--- a/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_4
+++ b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_4
@@ -1,4 +1,3 @@
-$FreeBSD$
ccd3: 4 components (md90, md91, md92, md93), 480 blocks interleaved at 4 blocks
ab2274c3b7241753a015c243417c0c29
8db0b90ec1fa54feca98ad8fd292b07c
diff --git a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_0 b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_0
index 12de5a4b7df4..889f45cda58f 100644
--- a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_0
+++ b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_0
@@ -1,4 +1,3 @@
-$FreeBSD$
ccd3: 4 components (md90, md91, md92, md93), 1728 blocks concatenated
50ca80e7defff2928b09d9e6c22d14ff
a5f4fb6b17d948b83b8685b3adfe0926
diff --git a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_4 b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_4
index 12de5a4b7df4..889f45cda58f 100644
--- a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_4
+++ b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_4
@@ -1,4 +1,3 @@
-$FreeBSD$
ccd3: 4 components (md90, md91, md92, md93), 1728 blocks concatenated
50ca80e7defff2928b09d9e6c22d14ff
a5f4fb6b17d948b83b8685b3adfe0926
diff --git a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_0 b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_0
index caf85b195ec9..6e5d2a24cb40 100644
--- a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_0
+++ b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_0
@@ -1,4 +1,3 @@
-$FreeBSD$
ccd3: 4 components (md90, md91, md92, md93), 1728 blocks interleaved at 16 blocks
9f63a6ab2d5bd7c183e338387d9c4b59
89518c095e85649516fa08fe98bf0a3e
diff --git a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_2 b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_2
index e00fa6c6caec..942818ba0da6 100644
--- a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_2
+++ b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_2
@@ -1,4 +1,3 @@
-$FreeBSD$
ccd3: 4 components (md90, md91, md92, md93), 960 blocks interleaved at 16 blocks
ebe23f400e868c343240761b0b52c2fd
89518c095e85649516fa08fe98bf0a3e
diff --git a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_4 b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_4
index 06c4890d96e1..cb2662e6f312 100644
--- a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_4
+++ b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_4
@@ -1,4 +1,3 @@
-$FreeBSD$
ccd3: 4 components (md90, md91, md92, md93), 480 blocks interleaved at 16 blocks
f3f609d828a50cca082f6b6f499ca4b5
721d9967a8e2608d111cfc24304255ca
diff --git a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_0 b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_0
index 3b57123ba46f..2ecaaa70a081 100644
--- a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_0
+++ b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_0
@@ -1,4 +1,3 @@
-$FreeBSD$
ccd3: 4 components (md90, md91, md92, md93), 1728 blocks interleaved at 4 blocks
50f78fd6083bea22e664f78350e24f2f
ddef760dcef4784565cfe7d76e5aa3ce
diff --git a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_2 b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_2
index 7cccecf330e7..a61996a460b8 100644
--- a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_2
+++ b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_2
@@ -1,4 +1,3 @@
-$FreeBSD$
ccd3: 4 components (md90, md91, md92, md93), 960 blocks interleaved at 4 blocks
c7d32c7a0aacde7259cac3ab214bda77
ddef760dcef4784565cfe7d76e5aa3ce
diff --git a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_4 b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_4
index db2dcd80af23..6aef59a90e7e 100644
--- a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_4
+++ b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_4
@@ -1,4 +1,3 @@
-$FreeBSD$
ccd3: 4 components (md90, md91, md92, md93), 480 blocks interleaved at 4 blocks
ab2274c3b7241753a015c243417c0c29
8db0b90ec1fa54feca98ad8fd292b07c
diff --git a/tools/regression/compat32/aarch64/Makefile b/tools/regression/compat32/aarch64/Makefile
new file mode 100644
index 000000000000..34428a58caa1
--- /dev/null
+++ b/tools/regression/compat32/aarch64/Makefile
@@ -0,0 +1,4 @@
+ACFLAGS= -target armv7-unknown-freebsd${OS_REVISION} -nostdlib -Wl,-e -Wl,main -static -mhwdiv=arm
+
+swp_test_impl: swp_test_impl.S
+ ${CC} ${ACFLAGS} -o ${.TARGET} ${.ALLSRC}
diff --git a/tools/regression/compat32/aarch64/swp_test_impl.S b/tools/regression/compat32/aarch64/swp_test_impl.S
new file mode 100644
index 000000000000..9f28ab17748e
--- /dev/null
+++ b/tools/regression/compat32/aarch64/swp_test_impl.S
@@ -0,0 +1,410 @@
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2021 Warner Losh
+ * Copyright (c) 2023 Stormshield
+ * Copyright (c) 2023 Klara, Inc.
+ */
+
+#include <sys/syscall.h>
+
+#define STDOUT_FILENO 1
+
+#define MUTEX_LOCKED 0x01
+#define MUTEX_UNLOCKED 0x00
+
+#define STACK_SIZE 4096
+#define TLS_SIZE 4096
+
+ .text
+ .file "swp_test.S"
+ .syntax unified
+ .globl main
+ .p2align 2
+ .type main,%function
+ .code 32
+
+main:
+ /*
+ * Stack slots:
+ * 0 - Sync word
+ * 1 - Thread id
+ * 2 - Shared word
+ */
+ sub sp, sp, #12
+
+ /* Print a message */
+ movw r0, :lower16:.L.mainmsg
+ movt r0, :upper16:.L.mainmsg
+ ldr r1, =(.L.mainmsgEnd - .L.mainmsg - 1)
+ bl print
+
+ /* Create two secondary threads */
+ mov r0, #1
+ str r0, [sp, #4] /* Thread ID */
+ movw r0, :lower16:secondary_thread
+ movt r0, :upper16:secondary_thread
+ mov r1, sp
+ movw r2, :lower16:stack1
+ movt r2, :upper16:stack1
+ movw r3, :lower16:tls1
+ movt r3, :upper16:tls1
+ bl create_thr
+
+1:
+ /*
+ * Wait for the first new thread to ack its existence by
+ * incrementing the thread id.
+ */
+ ldr r0, [sp, #4]
+ cmp r0, #1
+ bne 2f
+ ldr r7, =SYS_sched_yield
+ swi 0
+ b 1b
+
+2:
+ /* Create thread #2 */
+ movw r0, :lower16:secondary_thread
+ movt r0, :upper16:secondary_thread
+ mov r1, sp
+ movw r2, :lower16:stack2
+ movt r2, :upper16:stack2
+ movw r3, :lower16:tls2
+ movt r3, :upper16:tls2
+ bl create_thr
+
+3:
+ /*
+ * Wait for the first new thread to ack its existence by
+ * incrementing the thread id.
+ */
+ ldr r0, [sp, #4]
+ cmp r0, #2
+ bne 4f
+ ldr r7, =SYS_sched_yield
+ swi 0
+ b 3b
+
+ /* Loop */
+4:
+ mov r0, sp
+ mov r1, #0 /* Thread loop */
+ add r2, sp, #8
+ bl thread_loop
+ b 4b
+
+ /* UNREACHABLE */
+ mov r0, #0
+ ldr r7, =SYS_exit
+ swi 0
+
+ .p2align 2
+ .type secondary_thread,%function
+ .code 32
+secondary_thread:
+ /*
+ * On entry, r0 is where we stashed our sync word and
+ * ack word (thread ID).
+ *
+ * Stash the sync word in r4, thread ID in r5.
+ */
+ mov r4, r0
+ ldr r5, [r0, #4]
+
+ /* Print a message */
+ movw r0, :lower16:.L.secondarymsg
+ movt r0, :upper16:.L.secondarymsg
+ ldr r1, =(.L.secondarymsgEnd - .L.secondarymsg - 1)
+ bl print
+
+ /* Acknowledge that we started */
+ add r0, r5, #1
+ str r0, [r4, #4]
+
+1:
+ mov r0, r4
+ mov r1, r5
+ add r2, r4, #8
+ bl thread_loop
+ b 1b
+
+ .p2align 2
+ .type thread_loop,%function
+ .code 32
+thread_loop:
+ push {r4, r5, r6, r7, r8, lr}
+
+ /*
+ * r0 == sync word
+ * r1 == thread ID
+ * r2 == shared word
+ */
+ mov r4, r0
+ mov r5, r1
+ mov r6, r2
+ bl lock_mutex_swp
+ str r5, [r6] /* Write the thread ID */
+ bl random_cycles
+
+ # Save off the now cycle count */
+ mov r8, r0
+
+ /* Print the thread ID and cycle count */
+ mov r0, r5
+ mov r1, #0
+ bl printnum
+
+ /* Separator */
+ movw r0, :lower16:.L.idsep
+ movt r0, :upper16:.L.idsep
+ ldr r1, =(.L.idsepEnd - .L.idsep - 1)
+ bl print
+
+ /* Cycle count */
+ mov r0, r8
+ mov r1, #1
+ bl printnum
+
+1:
+ ldr r0, [r6]
+ cmp r0, r5 /* Check against the thread ID */
+ bne 2f
+ str r5, [r6]
+
+ /*
+ * Check if the count hit 0, otherwise go again.
+ */
+ cmp r8, #0
+ beq 3f
+ sub r8, r8, #1
+ b 1b
+
+2:
+ /* exit(1) */
+ mov r0, #1
+ ldr r7, =SYS_exit
+ swi 0
+
+3:
+ mov r0, r4
+ bl unlock_mutex_swp
+
+ /*
+ * Yield to lower the chance that we end up re-acquiring, the other two
+ * threads are still actively trying to acquire the lock.
+ */
+ ldr r7, =SYS_sched_yield
+ swi 0
+
+ pop {r4, r5, r6, r7, r8, lr}
+ bx lr
+
+ .p2align 2
+ .type random_cycles,%function
+ .code 32
+random_cycles:
+ /* Return a random number < 4k */
+ sub sp, sp, #4
+ mov r0, sp
+ mov r1, #4
+ mov r2, #0
+ ldr r7, =SYS_getrandom
+ swi 0
+
+ /*
+ * Just truncate the result of getrandom(2)
+ * to put us within range. Naive, but functional.
+ */
+ ldr r0, [sp]
+ mov r1, #0xfff
+ and r0, r0, r1
+ add sp, sp, #4
+ bx lr
+
+ /*
+ * lock_mutex_swp and unlock_mutex_swp lifted from
+ * ARM documentation on SWP/SWPB.
+ */
+ .p2align 2
+ .type lock_mutex_swp,%function
+ .code 32
+lock_mutex_swp:
+ mov r2, #MUTEX_LOCKED
+ swp r1, r2, [r0] /* Swap in lock value. */
+ cmp r1, r2 /* Check if we were locked already. */
+ beq lock_mutex_swp /* Retry if so */
+ bx lr /* Return locked */
+
+ .p2align 2
+ .type unlock_mutex_swp,%function
+ .code 32
+unlock_mutex_swp:
+ mov r1, #MUTEX_UNLOCKED
+ str r1, [r0] /* Move in unlocked */
+ bx lr
+
+ .p2align 2
+ .type create_thr,%function
+ .code 32
+create_thr:
+ /*
+ * r0 == start_func
+ * r1 == arg
+ * r2 == stack_base
+ * r3 == tls_base
+ */
+ sub sp, sp, #56
+ str r0, [sp, #4] /* start_func */
+ str r1, [sp, #8] /* arg */
+ str r2, [sp, #12] /* stack_base */
+ mov r0, #STACK_SIZE
+ str r0, [sp, #16] /* stack_size */
+ str r3, [sp, #20] /* tls_base */
+ mov r0, #TLS_SIZE
+ str r0, [sp, #24] /* tls_size */
+ mov r0, #0
+ str r0, [sp, #28]
+ str r0, [sp, #32]
+ str r0, [sp, #36]
+ str r0, [sp, #40]
+
+ add r0, sp, #4 /* &thrp */
+ mov r1, #52 /* sizeof(thrp) */
+ ldr r7, =SYS_thr_new
+ swi 0
+
+ add sp, sp, #56
+ bx lr
+
+ .p2align 2
+ .type printnum,%function
+ .code 32
+printnum:
+ push {r4, r5, r6, r7, r8, r10, lr}
+ sub sp, #4
+
+ /* 1000000000 */
+ movw r6, #0xca00
+ movt r6, #0x3b9a
+
+ udiv r5, r0, r6
+ cmp r5, #9
+ bhi abort
+
+ /* r4 is our accumulator */
+ mov r4, r0
+ /* r5 to be used as our "significant bit" */
+ mov r5, #0
+ /* r10 is "output_newline" */
+ mov r10, r1
+
+1:
+ cmp r6, #0
+ beq 4f
+
+ /* Divide by current place */
+ udiv r0, r4, r6
+ /* Significant already? print anyways */
+ cmp r5, #0
+ bne 2f
+
+ /*
+ * Not significant, maybe print. If we made it all the way to 1, we
+ * need to just print the 0 anyways.
+ */
+ cmp r6, #1
+ beq 2f
+
+ cmp r0, #0
+ bne 2f
+ b 3f /* Proceed */
+
+ /* Print */
+2:
+ mov r5, #1
+ mov r8, r0
+ add r0, r0, #0x30
+ str r0, [sp]
+ mov r0, sp
+ mov r1, #1
+ bl print
+
+ /* Multiply back into place and subtract from accumulator */
+ mul r0, r8, r6
+ sub r4, r4, r0
+
+3:
+ mov r3, #10
+ udiv r6, r6, r3
+ b 1b
+
+4:
+ cmp r10, #0
+ beq 5f
+
+ /* newline */
+ mov r0, #0x0a
+ str r0, [sp]
+ mov r0, sp
+ mov r1, #1
+ bl print
+
+5:
+ add sp, sp, #4
+ pop {r4, r5, r6, r7, r8, r10, lr}
+ bx lr
+
+abort:
+ movw r0, :lower16:.L.badnum
+ movt r0, :upper16:.L.badnum
+ ldr r1, =(.L.badnumEnd - .L.badnum - 1)
+ bl print
+
+ mov r0, #1
+ ldr r7, =SYS_exit
+ swi 0
+
+ .p2align 2
+ .type print,%function
+ .code 32
+print:
+ /* r0 - string, r1 = size */
+ mov r2, r1
+ mov r1, r0
+ ldr r0, =STDOUT_FILENO
+ ldr r7, =SYS_write
+ swi 0
+
+ bx lr
+
+.L.mainmsg:
+ .asciz "Main thread\n"
+.L.mainmsgEnd:
+ .size .L.mainmsg, .L.mainmsgEnd - .L.mainmsg
+.L.secondarymsg:
+ .asciz "Secondary thread\n"
+.L.secondarymsgEnd:
+ .size .L.secondarymsg, .L.secondarymsgEnd - .L.secondarymsg
+.L.badnum:
+ .asciz "Bad number\n"
+.L.badnumEnd:
+ .size .L.badnum, .L.badnumEnd - .L.badnum
+.L.idsep:
+ .asciz " - cycles "
+.L.idsepEnd:
+ .size .L.idsep, .L.idsepEnd - .L.idsep
+
+ .type stack1,%object
+ .local stack1
+ .comm stack1,STACK_SIZE,1
+ .type tls1,%object
+ .local tls1
+ .comm tls1,TLS_SIZE,1
+
+ .type stack2,%object
+ .local stack2
+ .comm stack2,STACK_SIZE,1
+ .type tls2,%object
+ .local tls2
+ .comm tls2,TLS_SIZE,1
diff --git a/tools/regression/doat/Makefile b/tools/regression/doat/Makefile
index c31ca53f4579..96b1c6ebdff2 100644
--- a/tools/regression/doat/Makefile
+++ b/tools/regression/doat/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= doat
diff --git a/tools/regression/doat/README b/tools/regression/doat/README
index c5ebe805c757..dc4ba6370939 100644
--- a/tools/regression/doat/README
+++ b/tools/regression/doat/README
@@ -1,4 +1,3 @@
-$FreeBSD$
This is a simple testing program for *at family of syscalls. It creates
"tmp" subdirectory in a current directory and creates files etc. in it.
diff --git a/tools/regression/doat/doat.c b/tools/regression/doat/doat.c
index d71648d8f0ff..decdf558de28 100644
--- a/tools/regression/doat/doat.c
+++ b/tools/regression/doat/doat.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/environ/Makefile b/tools/regression/environ/Makefile
index 62720d28abd1..00796304b60d 100644
--- a/tools/regression/environ/Makefile
+++ b/tools/regression/environ/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROGS= envctl retention timings
diff --git a/tools/regression/environ/Makefile.envctl b/tools/regression/environ/Makefile.envctl
index 16b42414371f..37fac012cd2e 100644
--- a/tools/regression/environ/Makefile.envctl
+++ b/tools/regression/environ/Makefile.envctl
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
SRCS= envctl.c
PROG= envctl
diff --git a/tools/regression/environ/Makefile.retention b/tools/regression/environ/Makefile.retention
index a69abe72dfdc..90eb544c5afc 100644
--- a/tools/regression/environ/Makefile.retention
+++ b/tools/regression/environ/Makefile.retention
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
SRCS= retention.c
PROG= retention
diff --git a/tools/regression/environ/Makefile.timings b/tools/regression/environ/Makefile.timings
index adc2a987d534..4d48eb44d386 100644
--- a/tools/regression/environ/Makefile.timings
+++ b/tools/regression/environ/Makefile.timings
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
SRCS= timings.c
PROG= timings
diff --git a/tools/regression/environ/envctl.c b/tools/regression/environ/envctl.c
index 586314bc0855..06071f642cc1 100644
--- a/tools/regression/environ/envctl.c
+++ b/tools/regression/environ/envctl.c
@@ -33,9 +33,6 @@
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-
extern char **environ;
diff --git a/tools/regression/environ/envtest.t b/tools/regression/environ/envtest.t
index 2c540179f68c..5532c2ee7860 100644
--- a/tools/regression/environ/envtest.t
+++ b/tools/regression/environ/envtest.t
@@ -24,7 +24,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
# Initialization.
diff --git a/tools/regression/environ/retention.c b/tools/regression/environ/retention.c
index 7f75cd100e15..3edaf8ca1d0a 100644
--- a/tools/regression/environ/retention.c
+++ b/tools/regression/environ/retention.c
@@ -29,9 +29,6 @@
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-
extern char **environ;
const char *envName = "FOOBAR";
const char *envValSmall = "Hi";
diff --git a/tools/regression/environ/timings.c b/tools/regression/environ/timings.c
index 7999fa156d7e..ac7dfcaa658f 100644
--- a/tools/regression/environ/timings.c
+++ b/tools/regression/environ/timings.c
@@ -34,9 +34,6 @@
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-
const char value1[] = "Large ------------------ value";
const char value2[] = "Small -- value";
char nameValuePair[] = "less=more";
diff --git a/tools/regression/ethernet/ethermulti/Makefile b/tools/regression/ethernet/ethermulti/Makefile
index 0b179518999a..ad0fa68320b8 100644
--- a/tools/regression/ethernet/ethermulti/Makefile
+++ b/tools/regression/ethernet/ethermulti/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= ethermulti
SRCS+= ethermulti.c
diff --git a/tools/regression/ethernet/ethermulti/ethermulti.c b/tools/regression/ethernet/ethermulti/ethermulti.c
index 61f0cddb4a10..4b1b00c78cab 100644
--- a/tools/regression/ethernet/ethermulti/ethermulti.c
+++ b/tools/regression/ethernet/ethermulti/ethermulti.c
@@ -24,9 +24,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
diff --git a/tools/regression/fsx/Makefile b/tools/regression/fsx/Makefile
index bf7b0233b919..0f5e8e81d32f 100644
--- a/tools/regression/fsx/Makefile
+++ b/tools/regression/fsx/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= fsx
diff --git a/tools/regression/fsx/fsx.c b/tools/regression/fsx/fsx.c
index 9bf61ffadb09..a4301570d8d5 100644
--- a/tools/regression/fsx/fsx.c
+++ b/tools/regression/fsx/fsx.c
@@ -36,8 +36,6 @@
*
* Updated license to APSL 2.0, 2004/7/27 - Jordan Hubbard
*
- * $FreeBSD$
- *
*/
#include <sys/types.h>
@@ -105,13 +103,13 @@ int fd; /* fd for our test file */
off_t file_size = 0;
off_t biggest = 0;
char state[256];
-unsigned long testcalls = 0; /* calls to function "test" */
+long testcalls = 0; /* calls to function "test" */
-unsigned long simulatedopcount = 0; /* -b flag */
+long simulatedopcount = 0; /* -b flag */
int closeprob = 0; /* -c flag */
int invlprob = 0; /* -i flag */
int debug = 0; /* -d flag */
-unsigned long debugstart = 0; /* -D flag */
+long debugstart = 0; /* -D flag */
off_t maxfilelen = 256 * 1024; /* -l flag */
int sizechecks = 1; /* -n flag disables them */
int maxoplen = 64 * 1024; /* -o flag */
@@ -910,7 +908,7 @@ usage(void)
-c P: 1 in P chance of file close+open at each op (default infinity)\n\
-d: debug output for all operations\n\
-i P: 1 in P chance of calling msync(MS_INVALIDATE) (default infinity)\n\
- -l flen: the upper bound on file size (default 262144)\n\
+ -l flen: the upper bound on file size (default 262144, max 2147483647)\n\
-m startop:endop: monitor (print debug output) specified byte range (default 0:infinity)\n\
-n: no verifications of file size\n\
-o oplen: the upper bound on operation size (default 65536)\n\
@@ -937,32 +935,43 @@ usage(void)
int
getnum(char *s, char **e)
{
- int ret = -1;
+ long long ret = -1;
*e = (char *) 0;
- ret = strtol(s, e, 0);
+ ret = strtoll(s, e, 0);
if (*e)
switch (**e) {
case 'b':
case 'B':
+ if (ret > INT_MAX / 512)
+ return (-1);
ret *= 512;
*e = *e + 1;
break;
case 'k':
case 'K':
+ if (ret > INT_MAX / 1024)
+ return (-1);
ret *= 1024;
*e = *e + 1;
break;
case 'm':
case 'M':
+ if (ret > INT_MAX / 1024 / 1024)
+ return (-1);
ret *= 1024*1024;
*e = *e + 1;
break;
case 'w':
case 'W':
+ if (ret > INT_MAX / 4)
+ return (-1);
ret *= 4;
*e = *e + 1;
break;
+ default:
+ if (ret > INT_MAX)
+ return (-1);
}
return (ret);
}
@@ -1095,6 +1104,8 @@ main(int argc, char **argv)
break;
case 'R':
mapped_reads = 0;
+ if (!quiet)
+ fprintf(stdout, "mapped reads DISABLED\n");
break;
case 'S':
seed = getnum(optarg, &endp);
diff --git a/tools/regression/gaithrstress/Makefile b/tools/regression/gaithrstress/Makefile
index 9c5cdd5c215b..a9d9687c8119 100644
--- a/tools/regression/gaithrstress/Makefile
+++ b/tools/regression/gaithrstress/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= gaithrstress
LIBADD= pthread
diff --git a/tools/regression/gaithrstress/gaithrstress.c b/tools/regression/gaithrstress/gaithrstress.c
index 25066250189f..7eb92474cbf2 100644
--- a/tools/regression/gaithrstress/gaithrstress.c
+++ b/tools/regression/gaithrstress/gaithrstress.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/geom/ConfCmp/ConfCmp.c b/tools/regression/geom/ConfCmp/ConfCmp.c
index 599a953b1b89..ec22a2a6a97f 100644
--- a/tools/regression/geom/ConfCmp/ConfCmp.c
+++ b/tools/regression/geom/ConfCmp/ConfCmp.c
@@ -31,8 +31,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <stdio.h>
diff --git a/tools/regression/geom/ConfCmp/Makefile b/tools/regression/geom/ConfCmp/Makefile
index c34cf650479d..bbb6a14819c1 100644
--- a/tools/regression/geom/ConfCmp/Makefile
+++ b/tools/regression/geom/ConfCmp/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= ConfCmp
SRCS+= ConfCmp.c
diff --git a/tools/regression/geom/Data/disk.beast.da0.xml b/tools/regression/geom/Data/disk.beast.da0.xml
index 96ad5f74ddef..8a3ab6ec020b 100644
--- a/tools/regression/geom/Data/disk.beast.da0.xml
+++ b/tools/regression/geom/Data/disk.beast.da0.xml
@@ -1,7 +1,6 @@
<?xml version="1.0"?>
<DISKIMAGE>
<comment>
- $FreeBSD$
alpha BSD label from beast.freebsd.org
</comment>
<sectorsize>512</sectorsize>
diff --git a/tools/regression/geom/Data/disk.critter.ad0.xml b/tools/regression/geom/Data/disk.critter.ad0.xml
index 9e93b2414345..ff56d2e17c57 100644
--- a/tools/regression/geom/Data/disk.critter.ad0.xml
+++ b/tools/regression/geom/Data/disk.critter.ad0.xml
@@ -1,7 +1,6 @@
<?xml version="1.0"?>
<DISKIMAGE>
<comment>
- $FreeBSD$
This image contains the MBR and disklabel sectors from my Asus M1300
laptop.
</comment>
diff --git a/tools/regression/geom/Data/disk.empty.flp.xml b/tools/regression/geom/Data/disk.empty.flp.xml
index 88c603ac9567..7e3c827167b4 100644
--- a/tools/regression/geom/Data/disk.empty.flp.xml
+++ b/tools/regression/geom/Data/disk.empty.flp.xml
@@ -1,7 +1,6 @@
<?xml version="1.0"?>
<DISKIMAGE>
<comment>
- $FreeBSD$
An empty floppy disk
</comment>
<sectorsize>512</sectorsize>
diff --git a/tools/regression/geom/Data/disk.far.ad0.xml b/tools/regression/geom/Data/disk.far.ad0.xml
index 0a8d3ca9379b..597d6ee1e190 100644
--- a/tools/regression/geom/Data/disk.far.ad0.xml
+++ b/tools/regression/geom/Data/disk.far.ad0.xml
@@ -1,7 +1,6 @@
<?xml version="1.0"?>
<DISKIMAGE>
<comment>
- $FreeBSD$
A Windows laptop.
</comment>
<sectorsize>512</sectorsize>
diff --git a/tools/regression/geom/Data/disk.flat.da1.xml b/tools/regression/geom/Data/disk.flat.da1.xml
index 2302a7c66c99..63e919c20988 100644
--- a/tools/regression/geom/Data/disk.flat.da1.xml
+++ b/tools/regression/geom/Data/disk.flat.da1.xml
@@ -1,7 +1,6 @@
<?xml version="1.0"?>
<DISKIMAGE>
<comment>
- $FreeBSD$
This image contains an interesting setup: there is an MBR+BSD
but also another BSD at sector one which is valid but bogus.
</comment>
diff --git a/tools/regression/geom/Data/disk.kern.flp.xml b/tools/regression/geom/Data/disk.kern.flp.xml
index 6640c4875167..3d5db26469ca 100644
--- a/tools/regression/geom/Data/disk.kern.flp.xml
+++ b/tools/regression/geom/Data/disk.kern.flp.xml
@@ -1,7 +1,6 @@
<?xml version="1.0"?>
<DISKIMAGE>
<comment>
- $FreeBSD$
A FreeBSD kern.flp image.
</comment>
<sectorsize>512</sectorsize>
diff --git a/tools/regression/geom/Data/disk.msdos.ext.xml b/tools/regression/geom/Data/disk.msdos.ext.xml
index 868a88f78237..64edc5c75141 100644
--- a/tools/regression/geom/Data/disk.msdos.ext.xml
+++ b/tools/regression/geom/Data/disk.msdos.ext.xml
@@ -1,7 +1,6 @@
<?xml version="1.0"?>
<DISKIMAGE>
<comment>
- $FreeBSD$
A MSDOS 6.22 disk with maximal number of extended partitions.
</comment>
<sectorsize>512</sectorsize>
diff --git a/tools/regression/geom/Data/disk.msdos.flp.xml b/tools/regression/geom/Data/disk.msdos.flp.xml
index d057d1ac75d5..8bc9210c5170 100644
--- a/tools/regression/geom/Data/disk.msdos.flp.xml
+++ b/tools/regression/geom/Data/disk.msdos.flp.xml
@@ -1,7 +1,6 @@
<?xml version="1.0"?>
<DISKIMAGE>
<comment>
- $FreeBSD$
A MSDOS floppy image.
</comment>
<sectorsize>512</sectorsize>
diff --git a/tools/regression/geom/Data/disk.typo.ad0.xml b/tools/regression/geom/Data/disk.typo.ad0.xml
index 56383abf1c4c..6c7ae72a88cb 100644
--- a/tools/regression/geom/Data/disk.typo.ad0.xml
+++ b/tools/regression/geom/Data/disk.typo.ad0.xml
@@ -1,7 +1,6 @@
<?xml version="1.0"?>
<DISKIMAGE>
<comment>
- $FreeBSD$
A multislice FreeBSD disk
</comment>
<sectorsize>512</sectorsize>
diff --git a/tools/regression/geom/MdLoad/Makefile b/tools/regression/geom/MdLoad/Makefile
index 61637b85d4ba..4b998ee52580 100644
--- a/tools/regression/geom/MdLoad/Makefile
+++ b/tools/regression/geom/MdLoad/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= MdLoad
LIBADD= sbuf bsdxml
diff --git a/tools/regression/geom/MdLoad/MdLoad.c b/tools/regression/geom/MdLoad/MdLoad.c
index c2e5a8af66f4..b5d75d4a8267 100644
--- a/tools/regression/geom/MdLoad/MdLoad.c
+++ b/tools/regression/geom/MdLoad/MdLoad.c
@@ -31,8 +31,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <stdio.h>
diff --git a/tools/regression/geom/Ref/disk.apple.xml b/tools/regression/geom/Ref/disk.apple.xml
index a2a0f984b47e..6fe9a799fde1 100644
--- a/tools/regression/geom/Ref/disk.apple.xml
+++ b/tools/regression/geom/Ref/disk.apple.xml
@@ -1,4 +1,3 @@
-$FreeBSD$
/dev/md34 512 366530560 715880
/dev/md34s1 512 366481408 715784
/dev/md34s2 512 32256 63
diff --git a/tools/regression/geom/Ref/disk.beast.da0.xml b/tools/regression/geom/Ref/disk.beast.da0.xml
index b6aa32e2e031..800b42f31952 100644
--- a/tools/regression/geom/Ref/disk.beast.da0.xml
+++ b/tools/regression/geom/Ref/disk.beast.da0.xml
@@ -1,4 +1,3 @@
-$FreeBSD$
/dev/md34 512 5120 10
/dev/md34a 512 4064280576 7938048
/dev/md34b 512 270925824 529152
diff --git a/tools/regression/geom/Ref/disk.critter.ad0.xml b/tools/regression/geom/Ref/disk.critter.ad0.xml
index 0620bfebb1a4..08dc395fe570 100644
--- a/tools/regression/geom/Ref/disk.critter.ad0.xml
+++ b/tools/regression/geom/Ref/disk.critter.ad0.xml
@@ -1,4 +1,3 @@
-$FreeBSD$
/dev/md34 512 2671841280 5218440
/dev/md34s1 512 20003848704 39070017
/dev/md34s1a 512 1073741824 2097152
diff --git a/tools/regression/geom/Ref/disk.empty.flp.xml b/tools/regression/geom/Ref/disk.empty.flp.xml
index d0a1b497cc5e..6bf22524e439 100644
--- a/tools/regression/geom/Ref/disk.empty.flp.xml
+++ b/tools/regression/geom/Ref/disk.empty.flp.xml
@@ -1,2 +1 @@
-$FreeBSD$
/dev/md34 512 1474560 2880 0 0 80 2 18
diff --git a/tools/regression/geom/Ref/disk.far.ad0.xml b/tools/regression/geom/Ref/disk.far.ad0.xml
index 629816a448cd..146d4995d83e 100644
--- a/tools/regression/geom/Ref/disk.far.ad0.xml
+++ b/tools/regression/geom/Ref/disk.far.ad0.xml
@@ -1,4 +1,3 @@
-$FreeBSD$
/dev/md34 512 5632 11
/dev/md34s1 512 296821760 579730
/dev/md34s2 512 4564740096 8915508
diff --git a/tools/regression/geom/Ref/disk.flat.da1.xml b/tools/regression/geom/Ref/disk.flat.da1.xml
index 89e2df4941af..d3264958c920 100644
--- a/tools/regression/geom/Ref/disk.flat.da1.xml
+++ b/tools/regression/geom/Ref/disk.flat.da1.xml
@@ -1,4 +1,3 @@
-$FreeBSD$
/dev/md34 512 37888 74
/dev/md34a 512 37748736 73728
/dev/md34b 512 268435456 524288
diff --git a/tools/regression/geom/Ref/disk.kern.flp.xml b/tools/regression/geom/Ref/disk.kern.flp.xml
index 6ff67a03c135..90ddf2276ba1 100644
--- a/tools/regression/geom/Ref/disk.kern.flp.xml
+++ b/tools/regression/geom/Ref/disk.kern.flp.xml
@@ -1,4 +1,3 @@
-$FreeBSD$
/dev/md34 512 5632 11
/dev/md34a 512 1474560 2880
/dev/md34b 512 1474560 2880
diff --git a/tools/regression/geom/Ref/disk.msdos.ext.xml b/tools/regression/geom/Ref/disk.msdos.ext.xml
index dc2aced40157..97deb1bae302 100644
--- a/tools/regression/geom/Ref/disk.msdos.ext.xml
+++ b/tools/regression/geom/Ref/disk.msdos.ext.xml
@@ -1,4 +1,3 @@
-$FreeBSD$
/dev/md34 512 2327759360 4546405
/dev/md34s1 512 2146765824 4192902
/dev/md34s10 512 8193024 16002
diff --git a/tools/regression/geom/Ref/disk.msdos.flp.xml b/tools/regression/geom/Ref/disk.msdos.flp.xml
index c176c587ff43..a74c766dcf1d 100644
--- a/tools/regression/geom/Ref/disk.msdos.flp.xml
+++ b/tools/regression/geom/Ref/disk.msdos.flp.xml
@@ -1,2 +1 @@
-$FreeBSD$
/dev/md34 512 5632 11
diff --git a/tools/regression/geom/Ref/disk.typo.ad0.xml b/tools/regression/geom/Ref/disk.typo.ad0.xml
index 6d537ddc2650..df2279fc674b 100644
--- a/tools/regression/geom/Ref/disk.typo.ad0.xml
+++ b/tools/regression/geom/Ref/disk.typo.ad0.xml
@@ -1,4 +1,3 @@
-$FreeBSD$
/dev/md34 512 8585262592 16768091
/dev/md34s1 512 3220406784 6289857
/dev/md34s1a 512 104857600 204800
diff --git a/tools/regression/geom/RunTest.sh b/tools/regression/geom/RunTest.sh
index 46a14b4ab828..d8d6f7cf3232 100644
--- a/tools/regression/geom/RunTest.sh
+++ b/tools/regression/geom/RunTest.sh
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
MD=34
TMP=/tmp/$$
diff --git a/tools/regression/geom/RunTest.t b/tools/regression/geom/RunTest.t
index 1948132f5eac..83ef47635c05 100644
--- a/tools/regression/geom/RunTest.t
+++ b/tools/regression/geom/RunTest.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
MD=34
TMP=/tmp/$$
diff --git a/tools/regression/geom_gpt/Makefile b/tools/regression/geom_gpt/Makefile
index eb5a9659ff4f..ef7f98e03c8b 100644
--- a/tools/regression/geom_gpt/Makefile
+++ b/tools/regression/geom_gpt/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= gctl_test_helper
MAN=
diff --git a/tools/regression/geom_gpt/gctl_test.t b/tools/regression/geom_gpt/gctl_test.t
index f8bceaa2f52e..96d232e63999 100644
--- a/tools/regression/geom_gpt/gctl_test.t
+++ b/tools/regression/geom_gpt/gctl_test.t
@@ -24,7 +24,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
use strict;
use warnings;
diff --git a/tools/regression/geom_gpt/gctl_test_helper.c b/tools/regression/geom_gpt/gctl_test_helper.c
index 870266e1e1b3..1ac8dceb50fd 100644
--- a/tools/regression/geom_gpt/gctl_test_helper.c
+++ b/tools/regression/geom_gpt/gctl_test_helper.c
@@ -24,9 +24,6 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/param.h>
#include <assert.h>
#include <err.h>
diff --git a/tools/regression/include/stdatomic/Makefile b/tools/regression/include/stdatomic/Makefile
index 2bc346a7d6fc..ea6d0c7fb864 100644
--- a/tools/regression/include/stdatomic/Makefile
+++ b/tools/regression/include/stdatomic/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= logic
MAN=
diff --git a/tools/regression/include/stdatomic/Makefile.depend b/tools/regression/include/stdatomic/Makefile.depend
index 8d409f5263ac..6ef78fac5cbf 100644
--- a/tools/regression/include/stdatomic/Makefile.depend
+++ b/tools/regression/include/stdatomic/Makefile.depend
@@ -1,4 +1,3 @@
-# $FreeBSD$
# Autogenerated - do NOT edit!
DIRDEPS = \
diff --git a/tools/regression/include/stdatomic/logic.c b/tools/regression/include/stdatomic/logic.c
index 96599833afad..e5534851417d 100644
--- a/tools/regression/include/stdatomic/logic.c
+++ b/tools/regression/include/stdatomic/logic.c
@@ -25,8 +25,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <assert.h>
#include <stdatomic.h>
#include <stdint.h>
diff --git a/tools/regression/include/tgmath/Makefile b/tools/regression/include/tgmath/Makefile
index 04116c0fa3a3..0e843bcf4b0c 100644
--- a/tools/regression/include/tgmath/Makefile
+++ b/tools/regression/include/tgmath/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= tgmath
CSTD= c99
diff --git a/tools/regression/include/tgmath/tgmath.c b/tools/regression/include/tgmath/tgmath.c
index 037810ad9df0..5f257783688d 100644
--- a/tools/regression/include/tgmath/tgmath.c
+++ b/tools/regression/include/tgmath/tgmath.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/cdefs.h>
diff --git a/tools/regression/include/tgmath/tgmath.t b/tools/regression/include/tgmath/tgmath.t
index 8bdfd03be81b..74eb8c9c581d 100644
--- a/tools/regression/include/tgmath/tgmath.t
+++ b/tools/regression/include/tgmath/tgmath.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
cd `dirname $0`
diff --git a/tools/regression/ipfw/fwd/vimage-fwd.sh b/tools/regression/ipfw/fwd/vimage-fwd.sh
index 5dbfcd77b453..c9ef0501147c 100755
--- a/tools/regression/ipfw/fwd/vimage-fwd.sh
+++ b/tools/regression/ipfw/fwd/vimage-fwd.sh
@@ -25,7 +25,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/ipsec/ipsec.t b/tools/regression/ipsec/ipsec.t
index 6446bf5869e3..121c8d96448b 100644
--- a/tools/regression/ipsec/ipsec.t
+++ b/tools/regression/ipsec/ipsec.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
#
# IPsec regression test.
#
diff --git a/tools/regression/ipsec/ipsec6.t b/tools/regression/ipsec/ipsec6.t
index a13edd361185..15e553338fd7 100644
--- a/tools/regression/ipsec/ipsec6.t
+++ b/tools/regression/ipsec/ipsec6.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
#
# IPv6 IPsec test based on ipsec.t, in this same directory, which tests
# IPsec by setting up a set of tunnels and then sending ICMPv6 packets,
diff --git a/tools/regression/iscsi/iscsi-test.sh b/tools/regression/iscsi/iscsi-test.sh
index 9626e7dac431..a52b98a0f8e7 100644
--- a/tools/regression/iscsi/iscsi-test.sh
+++ b/tools/regression/iscsi/iscsi-test.sh
@@ -26,7 +26,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/kgssapi/Makefile b/tools/regression/kgssapi/Makefile
index 203b688462a5..8b3998599be6 100644
--- a/tools/regression/kgssapi/Makefile
+++ b/tools/regression/kgssapi/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= gsstest
MAN=
diff --git a/tools/regression/kgssapi/gsstest.c b/tools/regression/kgssapi/gsstest.c
index acebf4ce1e9b..585d259aa438 100644
--- a/tools/regression/kgssapi/gsstest.c
+++ b/tools/regression/kgssapi/gsstest.c
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/kthread/kld/Makefile b/tools/regression/kthread/kld/Makefile
index b21848183abb..125fdcf1767d 100644
--- a/tools/regression/kthread/kld/Makefile
+++ b/tools/regression/kthread/kld/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.PATH: ${.CURDIR}
diff --git a/tools/regression/kthread/kld/kthrdlk.c b/tools/regression/kthread/kld/kthrdlk.c
index 67825b6daf19..5d970b95959d 100644
--- a/tools/regression/kthread/kld/kthrdlk.c
+++ b/tools/regression/kthread/kld/kthrdlk.c
@@ -32,9 +32,6 @@
*
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/param.h>
#include <sys/kernel.h>
#include <sys/kthread.h>
diff --git a/tools/regression/lib/libc/regex/Makefile b/tools/regression/lib/libc/regex/Makefile
index f91bef24ffe9..33f6d812d734 100644
--- a/tools/regression/lib/libc/regex/Makefile
+++ b/tools/regression/lib/libc/regex/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
GROT= ../../../../../lib/libc/regex/grot
diff --git a/tools/regression/mlock/Makefile b/tools/regression/mlock/Makefile
index 69fe099466e8..ce523f2cdb73 100644
--- a/tools/regression/mlock/Makefile
+++ b/tools/regression/mlock/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= mlock
MAN=
diff --git a/tools/regression/mlock/mlock.c b/tools/regression/mlock/mlock.c
index d371b2bee1d7..86997d14d534 100644
--- a/tools/regression/mlock/mlock.c
+++ b/tools/regression/mlock/mlock.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/msdosfs/msdosfstest-2.sh b/tools/regression/msdosfs/msdosfstest-2.sh
index 2262af803a5d..38790ad06c88 100644
--- a/tools/regression/msdosfs/msdosfstest-2.sh
+++ b/tools/regression/msdosfs/msdosfstest-2.sh
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
# A really simple script to create a swap-backed msdosfs filesystem, then test to
# make sure the case conversion issue described in msdosfs_lookup.c rev 1.46
# is fixed.
diff --git a/tools/regression/msdosfs/msdosfstest-3.sh b/tools/regression/msdosfs/msdosfstest-3.sh
index bfffc586f6c2..e64233dc637e 100644
--- a/tools/regression/msdosfs/msdosfstest-3.sh
+++ b/tools/regression/msdosfs/msdosfstest-3.sh
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
# A really simple script to create a swap-backed msdosfs filesystem, then
# test to make sure the mbnambuf optimisation(msdosfs_conv.c rev 1.40)
# doesn't break multi-byte characters.
diff --git a/tools/regression/msdosfs/msdosfstest-4.sh b/tools/regression/msdosfs/msdosfstest-4.sh
index 5e3c88e54d0a..e5d2e336c95c 100644
--- a/tools/regression/msdosfs/msdosfstest-4.sh
+++ b/tools/regression/msdosfs/msdosfstest-4.sh
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
# A really simple script to create a swap-backed msdosfs filesystem, then
# test to see if msdosfs_conv.c rev 1.45[1] works properly.
diff --git a/tools/regression/msdosfs/msdosfstest-5.sh b/tools/regression/msdosfs/msdosfstest-5.sh
index 6c8a45d8c974..24dad565f4e2 100644
--- a/tools/regression/msdosfs/msdosfstest-5.sh
+++ b/tools/regression/msdosfs/msdosfstest-5.sh
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
# A really simple script to create a swap-backed msdosfs filesystem, then
# test to see if msdosfs_conv.c rev 1.45[2] works properly.
# Note that this is a requisite condition but far away from sufficient condition.
diff --git a/tools/regression/msdosfs/msdosfstest-6.sh b/tools/regression/msdosfs/msdosfstest-6.sh
index c580b3ed6f4c..0eecf3e02568 100644
--- a/tools/regression/msdosfs/msdosfstest-6.sh
+++ b/tools/regression/msdosfs/msdosfstest-6.sh
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
# A really simple script to create a swap-backed msdosfs filesystem, then
# test to make sure the nmount conversion(mount_msdosfs.c rev 1.37)
# doesn't break multi-byte characters.
diff --git a/tools/regression/msdosfs/msdosfstest.sh b/tools/regression/msdosfs/msdosfstest.sh
index ba2a434ce5ab..54e3b4bf4fb8 100644
--- a/tools/regression/msdosfs/msdosfstest.sh
+++ b/tools/regression/msdosfs/msdosfstest.sh
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
# A really simple script to create a swap-backed msdosfs filesystem, copy a few
# files to it, unmount/remount the filesystem, and make sure all is well.
#
diff --git a/tools/regression/net/if_tap/test-tap.sh b/tools/regression/net/if_tap/test-tap.sh
index 372155656280..2788271df705 100644
--- a/tools/regression/net/if_tap/test-tap.sh
+++ b/tools/regression/net/if_tap/test-tap.sh
@@ -23,7 +23,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
tap_exists()
{
diff --git a/tools/regression/net80211/ccmp/Makefile b/tools/regression/net80211/ccmp/Makefile
index 0d918b1427ab..3c309a81872a 100644
--- a/tools/regression/net80211/ccmp/Makefile
+++ b/tools/regression/net80211/ccmp/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.PATH: ${.CURDIR}/../../../../sys/net80211
diff --git a/tools/regression/net80211/ccmp/test_ccmp.c b/tools/regression/net80211/ccmp/test_ccmp.c
index ffe4b7caf70a..d87695099296 100644
--- a/tools/regression/net80211/ccmp/test_ccmp.c
+++ b/tools/regression/net80211/ccmp/test_ccmp.c
@@ -27,8 +27,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/net80211/tkip/Makefile b/tools/regression/net80211/tkip/Makefile
index 1a1f7cacb4d4..7873ffc17e7a 100644
--- a/tools/regression/net80211/tkip/Makefile
+++ b/tools/regression/net80211/tkip/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.PATH: ${.CURDIR}/../../../../sys/net80211
diff --git a/tools/regression/net80211/tkip/test_tkip.c b/tools/regression/net80211/tkip/test_tkip.c
index 70d2e385407d..690e2a4294fc 100644
--- a/tools/regression/net80211/tkip/test_tkip.c
+++ b/tools/regression/net80211/tkip/test_tkip.c
@@ -27,8 +27,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/net80211/wep/Makefile b/tools/regression/net80211/wep/Makefile
index 1ab4712b9477..e16ccb434e20 100644
--- a/tools/regression/net80211/wep/Makefile
+++ b/tools/regression/net80211/wep/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.PATH: ${.CURDIR}/../../../../sys/net80211
diff --git a/tools/regression/net80211/wep/test_wep.c b/tools/regression/net80211/wep/test_wep.c
index c156863e668c..27ec33174e39 100644
--- a/tools/regression/net80211/wep/test_wep.c
+++ b/tools/regression/net80211/wep/test_wep.c
@@ -27,8 +27,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/netinet/arphold/Makefile b/tools/regression/netinet/arphold/Makefile
index 6b679d39815a..d8170303d42b 100644
--- a/tools/regression/netinet/arphold/Makefile
+++ b/tools/regression/netinet/arphold/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= arphold
MAN=
diff --git a/tools/regression/netinet/arphold/arphold.c b/tools/regression/netinet/arphold/arphold.c
index 417a2d8c15d5..c49166ed4bc4 100644
--- a/tools/regression/netinet/arphold/arphold.c
+++ b/tools/regression/netinet/arphold/arphold.c
@@ -39,8 +39,6 @@
* CAVEAT: The ARP timer will flush the queue after 1 second so it is
* important not to run this code in a fast loop or the test will
* fail.
- *
- * $FreeBSD$
*/
#include <unistd.h>
diff --git a/tools/regression/netinet/arphold/arphold.t b/tools/regression/netinet/arphold/arphold.t
index eb1b2a8c5ad3..a56784c8ea78 100644
--- a/tools/regression/netinet/arphold/arphold.t
+++ b/tools/regression/netinet/arphold/arphold.t
@@ -1,6 +1,5 @@
#!/bin/sh
#
-# $FreeBSD$
make arphold 2>&1 > /dev/null
diff --git a/tools/regression/netinet/ip_id_period/ip_id_period.py b/tools/regression/netinet/ip_id_period/ip_id_period.py
index c04f5a4b133b..2e97df499ae2 100644
--- a/tools/regression/netinet/ip_id_period/ip_id_period.py
+++ b/tools/regression/netinet/ip_id_period/ip_id_period.py
@@ -21,7 +21,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
# This is a regression test to verify the proper behavior of IP ID generation
# code. It will push 200000 packets, then report back what the min and max
diff --git a/tools/regression/netinet/ipbroadcast/Makefile b/tools/regression/netinet/ipbroadcast/Makefile
index c1e5bba93dcf..2036936e8da6 100644
--- a/tools/regression/netinet/ipbroadcast/Makefile
+++ b/tools/regression/netinet/ipbroadcast/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= ipbroadcast
diff --git a/tools/regression/netinet/ipbroadcast/ipbroadcast.c b/tools/regression/netinet/ipbroadcast/ipbroadcast.c
index 8d6f2479aabf..6177ce964749 100644
--- a/tools/regression/netinet/ipbroadcast/ipbroadcast.c
+++ b/tools/regression/netinet/ipbroadcast/ipbroadcast.c
@@ -28,9 +28,6 @@
* Test utility for IPv4 broadcast sockets.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/param.h>
#include <sys/types.h>
#include <sys/ioctl.h>
diff --git a/tools/regression/netinet/ipdivert/Makefile b/tools/regression/netinet/ipdivert/Makefile
index 59a0bc909f70..211741520165 100644
--- a/tools/regression/netinet/ipdivert/Makefile
+++ b/tools/regression/netinet/ipdivert/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= ipdivert
diff --git a/tools/regression/netinet/ipdivert/ipdivert.c b/tools/regression/netinet/ipdivert/ipdivert.c
index 0d5849159a9a..80870c297d26 100644
--- a/tools/regression/netinet/ipdivert/ipdivert.c
+++ b/tools/regression/netinet/ipdivert/ipdivert.c
@@ -25,8 +25,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
@@ -76,7 +74,7 @@ ipdivert_create(const char *test)
{
int s;
- s = socket(PF_INET, SOCK_RAW, IPPROTO_DIVERT);
+ s = socket(PF_DIVERT, SOCK_RAW, 0);
if (s < 0)
fail(test, "socket");
return (s);
diff --git a/tools/regression/netinet/ipmulticast/Makefile b/tools/regression/netinet/ipmulticast/Makefile
index c0291e7072eb..0c12831aa399 100644
--- a/tools/regression/netinet/ipmulticast/Makefile
+++ b/tools/regression/netinet/ipmulticast/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= ipmulticast
diff --git a/tools/regression/netinet/ipmulticast/ipmulticast.c b/tools/regression/netinet/ipmulticast/ipmulticast.c
index af67fcfb150a..eb06c544a7ea 100644
--- a/tools/regression/netinet/ipmulticast/ipmulticast.c
+++ b/tools/regression/netinet/ipmulticast/ipmulticast.c
@@ -32,9 +32,6 @@
* TODO: Merge multicast socket option tests from ipsockopt.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/param.h>
#include <sys/types.h>
#include <sys/ioctl.h>
diff --git a/tools/regression/netinet/ipsockopt/Makefile b/tools/regression/netinet/ipsockopt/Makefile
index f142412c74ba..a6b084118f04 100644
--- a/tools/regression/netinet/ipsockopt/Makefile
+++ b/tools/regression/netinet/ipsockopt/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= ipsockopt
diff --git a/tools/regression/netinet/ipsockopt/ipsockopt.c b/tools/regression/netinet/ipsockopt/ipsockopt.c
index 16805b9e6412..fe74cedc5728 100644
--- a/tools/regression/netinet/ipsockopt/ipsockopt.c
+++ b/tools/regression/netinet/ipsockopt/ipsockopt.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/netinet/ipsockopt/ipsockopt.t b/tools/regression/netinet/ipsockopt/ipsockopt.t
index 8bdfd03be81b..74eb8c9c581d 100644
--- a/tools/regression/netinet/ipsockopt/ipsockopt.t
+++ b/tools/regression/netinet/ipsockopt/ipsockopt.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
cd `dirname $0`
diff --git a/tools/regression/netinet/msocket/Makefile b/tools/regression/netinet/msocket/Makefile
index 21dd84f0c185..64e10b153ec1 100644
--- a/tools/regression/netinet/msocket/Makefile
+++ b/tools/regression/netinet/msocket/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= msocket
MAN=
diff --git a/tools/regression/netinet/msocket/msocket.c b/tools/regression/netinet/msocket/msocket.c
index 534e9f4b6041..4c1033491637 100644
--- a/tools/regression/netinet/msocket/msocket.c
+++ b/tools/regression/netinet/msocket/msocket.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/netinet/msocket_ifnet_remove/Makefile b/tools/regression/netinet/msocket_ifnet_remove/Makefile
index 0c35c6906dac..50f602f243a5 100644
--- a/tools/regression/netinet/msocket_ifnet_remove/Makefile
+++ b/tools/regression/netinet/msocket_ifnet_remove/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= msocket_ifnet_remove
WARNS?= 3
diff --git a/tools/regression/netinet/msocket_ifnet_remove/msocket_ifnet_remove.c b/tools/regression/netinet/msocket_ifnet_remove/msocket_ifnet_remove.c
index 51788eff14c7..f75ae3630569 100644
--- a/tools/regression/netinet/msocket_ifnet_remove/msocket_ifnet_remove.c
+++ b/tools/regression/netinet/msocket_ifnet_remove/msocket_ifnet_remove.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
diff --git a/tools/regression/netinet/rawconnect/Makefile b/tools/regression/netinet/rawconnect/Makefile
index 4f8ba1b4edfd..bd19e1c3bfe7 100644
--- a/tools/regression/netinet/rawconnect/Makefile
+++ b/tools/regression/netinet/rawconnect/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= rawconnect
diff --git a/tools/regression/netinet/rawconnect/rawconnect.c b/tools/regression/netinet/rawconnect/rawconnect.c
index 95f8fc463179..fbdb80db92dc 100644
--- a/tools/regression/netinet/rawconnect/rawconnect.c
+++ b/tools/regression/netinet/rawconnect/rawconnect.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/netinet/rawconnect/rawconnect.t b/tools/regression/netinet/rawconnect/rawconnect.t
index 03f249dda237..2c4f9de40dd1 100644
--- a/tools/regression/netinet/rawconnect/rawconnect.t
+++ b/tools/regression/netinet/rawconnect/rawconnect.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
cd `dirname $0`
diff --git a/tools/regression/netinet/tcpconnect/Makefile b/tools/regression/netinet/tcpconnect/Makefile
index a6b9d71de224..1326489ded89 100644
--- a/tools/regression/netinet/tcpconnect/Makefile
+++ b/tools/regression/netinet/tcpconnect/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= tcpconnect
diff --git a/tools/regression/netinet/tcpconnect/README.tcp-md5 b/tools/regression/netinet/tcpconnect/README.tcp-md5
index c5090234b1c6..a3f6fbfbbe00 100644
--- a/tools/regression/netinet/tcpconnect/README.tcp-md5
+++ b/tools/regression/netinet/tcpconnect/README.tcp-md5
@@ -1,4 +1,3 @@
-# $FreeBSD$
To test tcp-md5 do:
diff --git a/tools/regression/netinet/tcpconnect/tcpconnect.c b/tools/regression/netinet/tcpconnect/tcpconnect.c
index 1257f6689464..6de76e803e50 100644
--- a/tools/regression/netinet/tcpconnect/tcpconnect.c
+++ b/tools/regression/netinet/tcpconnect/tcpconnect.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/netinet/tcpdrop/Makefile b/tools/regression/netinet/tcpdrop/Makefile
index 1bd01aa0e07d..30c51c21909f 100644
--- a/tools/regression/netinet/tcpdrop/Makefile
+++ b/tools/regression/netinet/tcpdrop/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= tcpdrop
diff --git a/tools/regression/netinet/tcpdrop/tcpdrop.c b/tools/regression/netinet/tcpdrop/tcpdrop.c
index 7cfc65860d71..95052f909fd4 100644
--- a/tools/regression/netinet/tcpdrop/tcpdrop.c
+++ b/tools/regression/netinet/tcpdrop/tcpdrop.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/netinet/tcpfullwindowrst/Makefile b/tools/regression/netinet/tcpfullwindowrst/Makefile
index 52333897f6fb..d86a3029bd8a 100644
--- a/tools/regression/netinet/tcpfullwindowrst/Makefile
+++ b/tools/regression/netinet/tcpfullwindowrst/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= tcpfullwindowrsttest
MAN=
diff --git a/tools/regression/netinet/tcpfullwindowrst/tcpfullwindowrst.t b/tools/regression/netinet/tcpfullwindowrst/tcpfullwindowrst.t
index 49acbccf6e80..457255e2a76b 100644
--- a/tools/regression/netinet/tcpfullwindowrst/tcpfullwindowrst.t
+++ b/tools/regression/netinet/tcpfullwindowrst/tcpfullwindowrst.t
@@ -1,6 +1,5 @@
#!/bin/sh
#
-# $FreeBSD$
make tcpfullwindowrsttest 2>&1 > /dev/null
diff --git a/tools/regression/netinet/tcpfullwindowrst/tcpfullwindowrsttest.c b/tools/regression/netinet/tcpfullwindowrst/tcpfullwindowrsttest.c
index 6e4ac0356a36..964892f5e380 100644
--- a/tools/regression/netinet/tcpfullwindowrst/tcpfullwindowrsttest.c
+++ b/tools/regression/netinet/tcpfullwindowrst/tcpfullwindowrsttest.c
@@ -24,8 +24,6 @@ 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.
-$FreeBSD$
-
*/
#include <sys/types.h>
diff --git a/tools/regression/netinet/tcpsockclosebeforeaccept/Makefile b/tools/regression/netinet/tcpsockclosebeforeaccept/Makefile
index dfc0691f37ef..ad26320b6529 100644
--- a/tools/regression/netinet/tcpsockclosebeforeaccept/Makefile
+++ b/tools/regression/netinet/tcpsockclosebeforeaccept/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= tcpsockclosebeforeaccept
diff --git a/tools/regression/netinet/tcpsockclosebeforeaccept/tcpsockclosebeforeaccept.c b/tools/regression/netinet/tcpsockclosebeforeaccept/tcpsockclosebeforeaccept.c
index b7ef7656b9b7..b9180108a823 100644
--- a/tools/regression/netinet/tcpsockclosebeforeaccept/tcpsockclosebeforeaccept.c
+++ b/tools/regression/netinet/tcpsockclosebeforeaccept/tcpsockclosebeforeaccept.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/netinet/tcpsocktimewait/Makefile b/tools/regression/netinet/tcpsocktimewait/Makefile
index 63cb6359c32b..5ab67d506bf0 100644
--- a/tools/regression/netinet/tcpsocktimewait/Makefile
+++ b/tools/regression/netinet/tcpsocktimewait/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= tcpsocktimewait
diff --git a/tools/regression/netinet/tcpsocktimewait/tcpsocktimewait.c b/tools/regression/netinet/tcpsocktimewait/tcpsocktimewait.c
index 302546885419..2b54aa925eb8 100644
--- a/tools/regression/netinet/tcpsocktimewait/tcpsocktimewait.c
+++ b/tools/regression/netinet/tcpsocktimewait/tcpsocktimewait.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/netinet/tcpstream/Makefile b/tools/regression/netinet/tcpstream/Makefile
index 37cbcc030c88..e5bfa82b5ddf 100644
--- a/tools/regression/netinet/tcpstream/Makefile
+++ b/tools/regression/netinet/tcpstream/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
CFLAGS+= -Wall
diff --git a/tools/regression/netinet/tcpstream/README b/tools/regression/netinet/tcpstream/README
index df2e9b1a21da..4ac11ae0e70d 100644
--- a/tools/regression/netinet/tcpstream/README
+++ b/tools/regression/netinet/tcpstream/README
@@ -16,5 +16,3 @@ Now run the client on a second machine with the server's IP, port 8080, and
seed of 100:
tcpstream client 192.168.10.10 8080 100
-
-$FreeBSD$
diff --git a/tools/regression/netinet/tcpstream/tcpstream.c b/tools/regression/netinet/tcpstream/tcpstream.c
index c8fe9a3fe098..8bdd2bd2e305 100644
--- a/tools/regression/netinet/tcpstream/tcpstream.c
+++ b/tools/regression/netinet/tcpstream/tcpstream.c
@@ -22,14 +22,12 @@
* 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.
- *
- * $FreeBSD$
*/
/*
* tcpstream sets up a simple TCP client and server, and then streams a
* predictable pseudo-random byte sequence through it using variable block
- * sizes. The intent is to to detect corruption of data in the TCP stream.
+ * sizes. The intent is to detect corruption of data in the TCP stream.
*/
#include <sys/types.h>
diff --git a/tools/regression/netinet/udpconnectjail/Makefile b/tools/regression/netinet/udpconnectjail/Makefile
index 10688691c322..23480a3a2ca2 100644
--- a/tools/regression/netinet/udpconnectjail/Makefile
+++ b/tools/regression/netinet/udpconnectjail/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= udpconnectjail
MAN=
diff --git a/tools/regression/netinet/udpconnectjail/udpconnectjail.c b/tools/regression/netinet/udpconnectjail/udpconnectjail.c
index 718836cbe99b..28d81aa1b1db 100644
--- a/tools/regression/netinet/udpconnectjail/udpconnectjail.c
+++ b/tools/regression/netinet/udpconnectjail/udpconnectjail.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
diff --git a/tools/regression/netinet/udpzerobyte/Makefile b/tools/regression/netinet/udpzerobyte/Makefile
index 35bd4c12e545..7ac697d75d32 100644
--- a/tools/regression/netinet/udpzerobyte/Makefile
+++ b/tools/regression/netinet/udpzerobyte/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= udpzerobyte
MAN=
diff --git a/tools/regression/netinet/udpzerobyte/udpzerobyte.c b/tools/regression/netinet/udpzerobyte/udpzerobyte.c
index c19149233deb..98f31598ea35 100644
--- a/tools/regression/netinet/udpzerobyte/udpzerobyte.c
+++ b/tools/regression/netinet/udpzerobyte/udpzerobyte.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
diff --git a/tools/regression/netinet6/icmp6_filter/Makefile b/tools/regression/netinet6/icmp6_filter/Makefile
index a28ad743cebe..3743da2a604e 100644
--- a/tools/regression/netinet6/icmp6_filter/Makefile
+++ b/tools/regression/netinet6/icmp6_filter/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= icmp6_filter
diff --git a/tools/regression/netinet6/icmp6_filter/icmp6_filter.c b/tools/regression/netinet6/icmp6_filter/icmp6_filter.c
index 68e3b3314140..1e94d178a7d5 100644
--- a/tools/regression/netinet6/icmp6_filter/icmp6_filter.c
+++ b/tools/regression/netinet6/icmp6_filter/icmp6_filter.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/netinet6/inet6_rth/Makefile b/tools/regression/netinet6/inet6_rth/Makefile
index 6a3c04b01c76..d23141f5ba95 100644
--- a/tools/regression/netinet6/inet6_rth/Makefile
+++ b/tools/regression/netinet6/inet6_rth/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
#
PROG= inet6_rth-segments
SRCS= test_subr.c inet6_rth-segments.c
diff --git a/tools/regression/netinet6/inet6_rth/inet6_rth-segments.c b/tools/regression/netinet6/inet6_rth/inet6_rth-segments.c
index 5ac1d9768565..5ca6bfcdde76 100644
--- a/tools/regression/netinet6/inet6_rth/inet6_rth-segments.c
+++ b/tools/regression/netinet6/inet6_rth/inet6_rth-segments.c
@@ -25,9 +25,6 @@
*
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/socket.h>
diff --git a/tools/regression/netinet6/inet6_rth/test_subr.c b/tools/regression/netinet6/inet6_rth/test_subr.c
index ab09ec803851..59d4e43fff6d 100644
--- a/tools/regression/netinet6/inet6_rth/test_subr.c
+++ b/tools/regression/netinet6/inet6_rth/test_subr.c
@@ -25,9 +25,6 @@
*
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <stdio.h>
diff --git a/tools/regression/netinet6/inet6_rth/test_subr.h b/tools/regression/netinet6/inet6_rth/test_subr.h
index f0463daed51c..3890043fd2df 100644
--- a/tools/regression/netinet6/inet6_rth/test_subr.h
+++ b/tools/regression/netinet6/inet6_rth/test_subr.h
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/netinet6/ip6_sockets/Makefile b/tools/regression/netinet6/ip6_sockets/Makefile
index bf9b740794ef..c6f797fbc56d 100644
--- a/tools/regression/netinet6/ip6_sockets/Makefile
+++ b/tools/regression/netinet6/ip6_sockets/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= ip6_sockets
diff --git a/tools/regression/netinet6/ip6_sockets/ip6_sockets.c b/tools/regression/netinet6/ip6_sockets/ip6_sockets.c
index 07e6209297c5..71da53458a8f 100644
--- a/tools/regression/netinet6/ip6_sockets/ip6_sockets.c
+++ b/tools/regression/netinet6/ip6_sockets/ip6_sockets.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/socket.h>
diff --git a/tools/regression/nfsmmap/Makefile b/tools/regression/nfsmmap/Makefile
index 959725694229..4c3c96ebccfd 100644
--- a/tools/regression/nfsmmap/Makefile
+++ b/tools/regression/nfsmmap/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SUBDIR= test1 test2
diff --git a/tools/regression/nfsmmap/README b/tools/regression/nfsmmap/README
index 055ed652ecd6..1dc8b9cfd8ca 100644
--- a/tools/regression/nfsmmap/README
+++ b/tools/regression/nfsmmap/README
@@ -1,4 +1,3 @@
-$FreeBSD$
These tests are intended to make sure that NFS's use of the
b_{valid,dirty}{off,end} fields of struct buf is consistent with the
VM system's use of the underlying VM pages.
diff --git a/tools/regression/nfsmmap/test1/Makefile b/tools/regression/nfsmmap/test1/Makefile
index 5802538d2ced..f42c89aa7653 100644
--- a/tools/regression/nfsmmap/test1/Makefile
+++ b/tools/regression/nfsmmap/test1/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= test1
MAN=
diff --git a/tools/regression/nfsmmap/test2/Makefile b/tools/regression/nfsmmap/test2/Makefile
index 5f09d02ce588..c321daa3c8af 100644
--- a/tools/regression/nfsmmap/test2/Makefile
+++ b/tools/regression/nfsmmap/test2/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= test2
MAN=
diff --git a/tools/regression/p1003_1b/Makefile b/tools/regression/p1003_1b/Makefile
index 902666c2ec39..0c234ff29d6d 100644
--- a/tools/regression/p1003_1b/Makefile
+++ b/tools/regression/p1003_1b/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG=p1003_1b
diff --git a/tools/regression/p1003_1b/README b/tools/regression/p1003_1b/README
index e0b703754927..206f2dc06b90 100644
--- a/tools/regression/p1003_1b/README
+++ b/tools/regression/p1003_1b/README
@@ -1,4 +1,3 @@
-$FreeBSD$
p1003_1b: Regression tests for the scheduling facilities.
The following should always work as of the release of 4.0:
diff --git a/tools/regression/p1003_1b/fifo.c b/tools/regression/p1003_1b/fifo.c
index bf8fae0bb262..614781f8d4fb 100644
--- a/tools/regression/p1003_1b/fifo.c
+++ b/tools/regression/p1003_1b/fifo.c
@@ -30,8 +30,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
#include <sys/mman.h>
diff --git a/tools/regression/p1003_1b/main.c b/tools/regression/p1003_1b/main.c
index 5cf3183955f8..7333b64bd455 100644
--- a/tools/regression/p1003_1b/main.c
+++ b/tools/regression/p1003_1b/main.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
#include <sys/param.h>
diff --git a/tools/regression/p1003_1b/memlock.c b/tools/regression/p1003_1b/memlock.c
index 3033fbbacfd5..dd0996134011 100644
--- a/tools/regression/p1003_1b/memlock.c
+++ b/tools/regression/p1003_1b/memlock.c
@@ -30,8 +30,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <unistd.h>
#include <stdio.h>
diff --git a/tools/regression/p1003_1b/p26.c b/tools/regression/p1003_1b/p26.c
index ae869bffddf3..9ae35fbbbe40 100644
--- a/tools/regression/p1003_1b/p26.c
+++ b/tools/regression/p1003_1b/p26.c
@@ -30,8 +30,6 @@
* 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.
- *
- * $FreeBSD$
*/
#define _POSIX_SOURCE
#define _POSIX_C_SOURCE 199309L
diff --git a/tools/regression/p1003_1b/prutil.c b/tools/regression/p1003_1b/prutil.c
index 2910b7fdd2c3..be8c6588e1a9 100644
--- a/tools/regression/p1003_1b/prutil.c
+++ b/tools/regression/p1003_1b/prutil.c
@@ -9,7 +9,6 @@
#include "prutil.h"
/*
- * $FreeBSD$
*/
void quit(const char *text)
{
diff --git a/tools/regression/p1003_1b/prutil.h b/tools/regression/p1003_1b/prutil.h
index 3387b994b151..5eaaa784920a 100644
--- a/tools/regression/p1003_1b/prutil.h
+++ b/tools/regression/p1003_1b/prutil.h
@@ -2,7 +2,6 @@
#define _PRUTIL_H_
/*
- * $FreeBSD$
*/
struct sched_param;
diff --git a/tools/regression/p1003_1b/sched.c b/tools/regression/p1003_1b/sched.c
index ea6fcc7a461f..b9340db89235 100644
--- a/tools/regression/p1003_1b/sched.c
+++ b/tools/regression/p1003_1b/sched.c
@@ -30,7 +30,6 @@
* 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.
- * $FreeBSD$
*
*/
diff --git a/tools/regression/p1003_1b/yield.c b/tools/regression/p1003_1b/yield.c
index 479ce50ef886..f25e71b48b31 100644
--- a/tools/regression/p1003_1b/yield.c
+++ b/tools/regression/p1003_1b/yield.c
@@ -30,7 +30,6 @@
* 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.
- * $FreeBSD$
*
*/
#include <sys/types.h>
diff --git a/tools/regression/poll/Makefile b/tools/regression/poll/Makefile
index 45f743f17ae6..bbf019d65c8b 100644
--- a/tools/regression/poll/Makefile
+++ b/tools/regression/poll/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
# This makefile has been uglified for portability.
# Nothing yet works with gmake for the path to the sources.
.PATH: ..
diff --git a/tools/regression/poll/Readme b/tools/regression/poll/Readme
index 658379486e4f..34c037c5af8d 100644
--- a/tools/regression/poll/Readme
+++ b/tools/regression/poll/Readme
@@ -1,4 +1,3 @@
-$FreeBSD$
The directory contains poll(2) and select(2) compliance (and more) tests
from Bruce Evans, together with canned test results from several systems
diff --git a/tools/regression/poll/pipepoll.c b/tools/regression/poll/pipepoll.c
index 5ca064bf6bf3..9fcf450adeba 100644
--- a/tools/regression/poll/pipepoll.c
+++ b/tools/regression/poll/pipepoll.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
#include <sys/poll.h>
#include <sys/socket.h>
diff --git a/tools/regression/poll/pipeselect.c b/tools/regression/poll/pipeselect.c
index fe6e8ed33daa..7e16ec071ede 100644
--- a/tools/regression/poll/pipeselect.c
+++ b/tools/regression/poll/pipeselect.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
#include <sys/socket.h>
#include <sys/select.h>
diff --git a/tools/regression/poll/sockpoll.c b/tools/regression/poll/sockpoll.c
index 31ebcaf9bcb2..ea3c91c3affb 100644
--- a/tools/regression/poll/sockpoll.c
+++ b/tools/regression/poll/sockpoll.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
#define _GNU_SOURCE /* expose POLLRDHUP when testing on Linux */
diff --git a/tools/regression/posixsem/Makefile b/tools/regression/posixsem/Makefile
index 5f73a72376d4..1de91196d13b 100644
--- a/tools/regression/posixsem/Makefile
+++ b/tools/regression/posixsem/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= posixsem
SRCS= posixsem.c test.c
diff --git a/tools/regression/posixsem/posixsem.c b/tools/regression/posixsem/posixsem.c
index 9d0465682951..0668a0d4f4fb 100644
--- a/tools/regression/posixsem/posixsem.c
+++ b/tools/regression/posixsem/posixsem.c
@@ -30,9 +30,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/param.h>
#include <sys/queue.h>
#include <sys/_semaphore.h>
diff --git a/tools/regression/posixsem/posixsem.t b/tools/regression/posixsem/posixsem.t
index 198d2be6c89c..499ac4733c46 100644
--- a/tools/regression/posixsem/posixsem.t
+++ b/tools/regression/posixsem/posixsem.t
@@ -1,5 +1,4 @@
#!/bin/sh
#
-# $FreeBSD$
./posixsem
diff --git a/tools/regression/posixsem/test.c b/tools/regression/posixsem/test.c
index bd309733c568..3d8fd0532baa 100644
--- a/tools/regression/posixsem/test.c
+++ b/tools/regression/posixsem/test.c
@@ -31,8 +31,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <stdarg.h>
#include <stdio.h>
diff --git a/tools/regression/posixsem/test.h b/tools/regression/posixsem/test.h
index 39f3c2ff74af..3ef37cbae54a 100644
--- a/tools/regression/posixsem/test.h
+++ b/tools/regression/posixsem/test.h
@@ -28,8 +28,6 @@
* 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.
- *
- * $FreeBSD$
*/
#ifndef __TEST_H__
diff --git a/tools/regression/posixsem2/Makefile b/tools/regression/posixsem2/Makefile
index d9859087b94e..d5d87822a910 100644
--- a/tools/regression/posixsem2/Makefile
+++ b/tools/regression/posixsem2/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= semtest
SRCS= semtest.c
diff --git a/tools/regression/posixsem2/semtest.c b/tools/regression/posixsem2/semtest.c
index 0879ff9fda78..5ff2d3e9a888 100644
--- a/tools/regression/posixsem2/semtest.c
+++ b/tools/regression/posixsem2/semtest.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
#include <sys/types.h>
#include <sys/wait.h>
diff --git a/tools/regression/priv/Makefile b/tools/regression/priv/Makefile
index 32a4a74fdd53..43fc46236035 100644
--- a/tools/regression/priv/Makefile
+++ b/tools/regression/priv/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
.include <src.opts.mk>
diff --git a/tools/regression/priv/main.c b/tools/regression/priv/main.c
index 74b7b2f47775..dbcb5759f6b9 100644
--- a/tools/regression/priv/main.c
+++ b/tools/regression/priv/main.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/main.h b/tools/regression/priv/main.h
index 475a47ebbd17..bb46f910096c 100644
--- a/tools/regression/priv/main.h
+++ b/tools/regression/priv/main.h
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
#define UID_ROOT 0
diff --git a/tools/regression/priv/priv_acct.c b/tools/regression/priv/priv_acct.c
index d1324bbeb49c..2762ff23d899 100644
--- a/tools/regression/priv/priv_acct.c
+++ b/tools/regression/priv/priv_acct.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_adjtime.c b/tools/regression/priv/priv_adjtime.c
index 65fbfac48dbe..f2eb2ca4aa92 100644
--- a/tools/regression/priv/priv_adjtime.c
+++ b/tools/regression/priv/priv_adjtime.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_audit_control.c b/tools/regression/priv/priv_audit_control.c
index a6618192d95b..e900c8ef2417 100644
--- a/tools/regression/priv/priv_audit_control.c
+++ b/tools/regression/priv/priv_audit_control.c
@@ -25,8 +25,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_audit_getaudit.c b/tools/regression/priv/priv_audit_getaudit.c
index cccabeda28c6..66d0f91b88c5 100644
--- a/tools/regression/priv/priv_audit_getaudit.c
+++ b/tools/regression/priv/priv_audit_getaudit.c
@@ -25,8 +25,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_audit_setaudit.c b/tools/regression/priv/priv_audit_setaudit.c
index 0b6d8dbaf173..df0e5e562728 100644
--- a/tools/regression/priv/priv_audit_setaudit.c
+++ b/tools/regression/priv/priv_audit_setaudit.c
@@ -25,8 +25,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_audit_submit.c b/tools/regression/priv/priv_audit_submit.c
index 915f6e6cc6f5..b11ddd274b26 100644
--- a/tools/regression/priv/priv_audit_submit.c
+++ b/tools/regression/priv/priv_audit_submit.c
@@ -25,8 +25,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_clock_settime.c b/tools/regression/priv/priv_clock_settime.c
index 84b8bebfc8a2..4e7609dcb188 100644
--- a/tools/regression/priv/priv_clock_settime.c
+++ b/tools/regression/priv/priv_clock_settime.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_cred.c b/tools/regression/priv/priv_cred.c
index 2fd0e2c0befd..245dec26482d 100644
--- a/tools/regression/priv/priv_cred.c
+++ b/tools/regression/priv/priv_cred.c
@@ -25,8 +25,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_io.c b/tools/regression/priv/priv_io.c
index 31e60a0c20e5..801b2192d976 100644
--- a/tools/regression/priv/priv_io.c
+++ b/tools/regression/priv/priv_io.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_kenv_set.c b/tools/regression/priv/priv_kenv_set.c
index 1e750e03f33f..24d6da7751a2 100644
--- a/tools/regression/priv/priv_kenv_set.c
+++ b/tools/regression/priv/priv_kenv_set.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_kenv_unset.c b/tools/regression/priv/priv_kenv_unset.c
index 02004da78276..dde340d3a8ac 100644
--- a/tools/regression/priv/priv_kenv_unset.c
+++ b/tools/regression/priv/priv_kenv_unset.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_msgbuf.c b/tools/regression/priv/priv_msgbuf.c
index c8db210a4c22..17bf1a09c6f4 100644
--- a/tools/regression/priv/priv_msgbuf.c
+++ b/tools/regression/priv/priv_msgbuf.c
@@ -25,8 +25,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_netinet_ipsec.c b/tools/regression/priv/priv_netinet_ipsec.c
index a485886b8fe2..72ccc076a493 100644
--- a/tools/regression/priv/priv_netinet_ipsec.c
+++ b/tools/regression/priv/priv_netinet_ipsec.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_netinet_raw.c b/tools/regression/priv/priv_netinet_raw.c
index 75f66c07d6b2..3e79d0a4e826 100644
--- a/tools/regression/priv/priv_netinet_raw.c
+++ b/tools/regression/priv/priv_netinet_raw.c
@@ -25,8 +25,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_proc_setlogin.c b/tools/regression/priv/priv_proc_setlogin.c
index f04b79feaa45..450a3262bc32 100644
--- a/tools/regression/priv/priv_proc_setlogin.c
+++ b/tools/regression/priv/priv_proc_setlogin.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_proc_setrlimit.c b/tools/regression/priv/priv_proc_setrlimit.c
index 590f55f0685b..021350e49b31 100644
--- a/tools/regression/priv/priv_proc_setrlimit.c
+++ b/tools/regression/priv/priv_proc_setrlimit.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*-
diff --git a/tools/regression/priv/priv_sched_rtprio.c b/tools/regression/priv/priv_sched_rtprio.c
index 2498f3faa32a..7652a51bac18 100644
--- a/tools/regression/priv/priv_sched_rtprio.c
+++ b/tools/regression/priv/priv_sched_rtprio.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_sched_setpriority.c b/tools/regression/priv/priv_sched_setpriority.c
index 219fd8c68b1c..6e2097ced83b 100644
--- a/tools/regression/priv/priv_sched_setpriority.c
+++ b/tools/regression/priv/priv_sched_setpriority.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_settimeofday.c b/tools/regression/priv/priv_settimeofday.c
index df9300ecd887..fc7ef35a8a2c 100644
--- a/tools/regression/priv/priv_settimeofday.c
+++ b/tools/regression/priv/priv_settimeofday.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_sysctl_write.c b/tools/regression/priv/priv_sysctl_write.c
index 25e02f91c189..7202f30f54b7 100644
--- a/tools/regression/priv/priv_sysctl_write.c
+++ b/tools/regression/priv/priv_sysctl_write.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_vfs_chflags.c b/tools/regression/priv/priv_vfs_chflags.c
index 469b12b125fb..4a1366547abe 100644
--- a/tools/regression/priv/priv_vfs_chflags.c
+++ b/tools/regression/priv/priv_vfs_chflags.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_vfs_chmod.c b/tools/regression/priv/priv_vfs_chmod.c
index 6a64871f5973..f7e0e79d92ec 100644
--- a/tools/regression/priv/priv_vfs_chmod.c
+++ b/tools/regression/priv/priv_vfs_chmod.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_vfs_chown.c b/tools/regression/priv/priv_vfs_chown.c
index c0c10e640c0d..c126f4c0e207 100644
--- a/tools/regression/priv/priv_vfs_chown.c
+++ b/tools/regression/priv/priv_vfs_chown.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_vfs_chroot.c b/tools/regression/priv/priv_vfs_chroot.c
index 4ba15e5a73f0..a5122994fd54 100644
--- a/tools/regression/priv/priv_vfs_chroot.c
+++ b/tools/regression/priv/priv_vfs_chroot.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_vfs_clearsugid.c b/tools/regression/priv/priv_vfs_clearsugid.c
index b62a9283c778..5cba16f35a42 100644
--- a/tools/regression/priv/priv_vfs_clearsugid.c
+++ b/tools/regression/priv/priv_vfs_clearsugid.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_vfs_extattr_system.c b/tools/regression/priv/priv_vfs_extattr_system.c
index a766a04c7930..64e1ffb9093a 100644
--- a/tools/regression/priv/priv_vfs_extattr_system.c
+++ b/tools/regression/priv/priv_vfs_extattr_system.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_vfs_fhopen.c b/tools/regression/priv/priv_vfs_fhopen.c
index 32b32f98a232..b399e2464c03 100644
--- a/tools/regression/priv/priv_vfs_fhopen.c
+++ b/tools/regression/priv/priv_vfs_fhopen.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_vfs_fhstat.c b/tools/regression/priv/priv_vfs_fhstat.c
index 18506fa190f1..481d082ba1ed 100644
--- a/tools/regression/priv/priv_vfs_fhstat.c
+++ b/tools/regression/priv/priv_vfs_fhstat.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_vfs_fhstatfs.c b/tools/regression/priv/priv_vfs_fhstatfs.c
index f814989423c1..58e4a3ebce02 100644
--- a/tools/regression/priv/priv_vfs_fhstatfs.c
+++ b/tools/regression/priv/priv_vfs_fhstatfs.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_vfs_generation.c b/tools/regression/priv/priv_vfs_generation.c
index 0ac58c537ce4..e0e17b4050d1 100644
--- a/tools/regression/priv/priv_vfs_generation.c
+++ b/tools/regression/priv/priv_vfs_generation.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_vfs_getfh.c b/tools/regression/priv/priv_vfs_getfh.c
index d2904dfc225a..619c6f814ab1 100644
--- a/tools/regression/priv/priv_vfs_getfh.c
+++ b/tools/regression/priv/priv_vfs_getfh.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_vfs_read_write.c b/tools/regression/priv/priv_vfs_read_write.c
index 5bf5a0306a20..8d26320ab978 100644
--- a/tools/regression/priv/priv_vfs_read_write.c
+++ b/tools/regression/priv/priv_vfs_read_write.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_vfs_setgid.c b/tools/regression/priv/priv_vfs_setgid.c
index 62ebf8c3a7c3..0f2139f0f1be 100644
--- a/tools/regression/priv/priv_vfs_setgid.c
+++ b/tools/regression/priv/priv_vfs_setgid.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_vfs_stickyfile.c b/tools/regression/priv/priv_vfs_stickyfile.c
index 5dcf350105b0..da04155b9170 100644
--- a/tools/regression/priv/priv_vfs_stickyfile.c
+++ b/tools/regression/priv/priv_vfs_stickyfile.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_vfs_utimes.c b/tools/regression/priv/priv_vfs_utimes.c
index 78fe6916c4f4..23ff5e3880be 100644
--- a/tools/regression/priv/priv_vfs_utimes.c
+++ b/tools/regression/priv/priv_vfs_utimes.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_vm_madv_protect.c b/tools/regression/priv/priv_vm_madv_protect.c
index 008e531dbe5e..06422a98dc88 100644
--- a/tools/regression/priv/priv_vm_madv_protect.c
+++ b/tools/regression/priv/priv_vm_madv_protect.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_vm_mlock.c b/tools/regression/priv/priv_vm_mlock.c
index 5cdbc706de50..b50903231eb5 100644
--- a/tools/regression/priv/priv_vm_mlock.c
+++ b/tools/regression/priv/priv_vm_mlock.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/priv/priv_vm_munlock.c b/tools/regression/priv/priv_vm_munlock.c
index d5a474ad3b8e..267a98dd21be 100644
--- a/tools/regression/priv/priv_vm_munlock.c
+++ b/tools/regression/priv/priv_vm_munlock.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/pthread/cv_cancel1/Makefile b/tools/regression/pthread/cv_cancel1/Makefile
index be2ffaaa3f5b..04b151a138fe 100644
--- a/tools/regression/pthread/cv_cancel1/Makefile
+++ b/tools/regression/pthread/cv_cancel1/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= cv_cancel1
MAN=
diff --git a/tools/regression/pthread/cv_cancel1/cv_cancel1.c b/tools/regression/pthread/cv_cancel1/cv_cancel1.c
index 2ae94c5a9f1c..c61a785628c1 100644
--- a/tools/regression/pthread/cv_cancel1/cv_cancel1.c
+++ b/tools/regression/pthread/cv_cancel1/cv_cancel1.c
@@ -23,8 +23,6 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD$
- *
*/
#include <pthread.h>
#include <stdio.h>
@@ -32,14 +30,14 @@
#define NLOOPS 10
-pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
-pthread_cond_t cv = PTHREAD_COND_INITIALIZER;
+static pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
+static pthread_cond_t cv = PTHREAD_COND_INITIALIZER;
-int wake;
-int stop;
+static int wake;
+static int stop;
-void *
-thr_routine(void *arg)
+static void *
+thr_routine(void *arg __unused)
{
pthread_mutex_lock(&m);
while (wake == 0)
@@ -51,7 +49,8 @@ thr_routine(void *arg)
return (NULL);
}
-int main(int argc, char **argv)
+int
+main(void)
{
pthread_t td;
int i;
diff --git a/tools/regression/pthread/mutex_isowned_np/Makefile b/tools/regression/pthread/mutex_isowned_np/Makefile
index 88270530e6ae..650baa65563c 100644
--- a/tools/regression/pthread/mutex_isowned_np/Makefile
+++ b/tools/regression/pthread/mutex_isowned_np/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= mutex_isowned_np
MAN=
diff --git a/tools/regression/pthread/mutex_isowned_np/mutex_isowned_np.c b/tools/regression/pthread/mutex_isowned_np/mutex_isowned_np.c
index 5c23568c33ac..9032c7dd3968 100644
--- a/tools/regression/pthread/mutex_isowned_np/mutex_isowned_np.c
+++ b/tools/regression/pthread/mutex_isowned_np/mutex_isowned_np.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2008 Dag-Erling Coïdan Smørgrav
+ * Copyright (c) 2008 Dag-Erling Smørgrav
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <pthread.h>
@@ -46,7 +44,7 @@ thread(void *arg)
}
int
-main(int argc, char *argv[])
+main(void)
{
pthread_t thr;
pthread_mutex_t mtx;
diff --git a/tools/regression/pthread/unwind/Makefile b/tools/regression/pthread/unwind/Makefile
index c4f9ac84d9fb..33d3787c0ee3 100644
--- a/tools/regression/pthread/unwind/Makefile
+++ b/tools/regression/pthread/unwind/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
all: main_thread_exit thread_normal_exit sem_wait_cancel \
cond_wait_cancel cond_wait_cancel2 catch_pthread_exit
diff --git a/tools/regression/pthread/unwind/Test.cpp b/tools/regression/pthread/unwind/Test.cpp
index 9322deff621e..bad63be44798 100644
--- a/tools/regression/pthread/unwind/Test.cpp
+++ b/tools/regression/pthread/unwind/Test.cpp
@@ -1,7 +1,6 @@
-/* $FreeBSD$ */
-int destructed;
-int destructed2;
+static int destructed;
+static int destructed2;
class Test {
public:
@@ -10,7 +9,7 @@ public:
};
void
-cleanup_handler(void *arg)
+cleanup_handler(void *arg __unused)
{
destructed2 = 1;
printf("%s()\n", __func__);
diff --git a/tools/regression/pthread/unwind/catch_pthread_exit.cpp b/tools/regression/pthread/unwind/catch_pthread_exit.cpp
index 15abc20d1fea..b5074cd4beb1 100644
--- a/tools/regression/pthread/unwind/catch_pthread_exit.cpp
+++ b/tools/regression/pthread/unwind/catch_pthread_exit.cpp
@@ -1,14 +1,13 @@
-/* $FreeBSD$ */
/* try to catch thread exiting, and rethrow the exception */
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
-int caught;
+static int caught;
-void *
-thr_routine(void *arg)
+static void *
+thr_routine(void *arg __unused)
{
try {
pthread_exit(NULL);
diff --git a/tools/regression/pthread/unwind/cond_wait_cancel.cpp b/tools/regression/pthread/unwind/cond_wait_cancel.cpp
index 5975e028a5ca..d241b55909b6 100644
--- a/tools/regression/pthread/unwind/cond_wait_cancel.cpp
+++ b/tools/regression/pthread/unwind/cond_wait_cancel.cpp
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
/* Test stack unwinding for pthread_cond_wait function */
#include <pthread.h>
@@ -8,11 +7,11 @@
#include "Test.cpp"
-pthread_mutex_t mtx;
-pthread_cond_t cv;
+static pthread_mutex_t mtx;
+static pthread_cond_t cv;
-void *
-thr(void *arg)
+static void *
+thr(void *arg __unused)
{
Test t;
diff --git a/tools/regression/pthread/unwind/cond_wait_cancel2.cpp b/tools/regression/pthread/unwind/cond_wait_cancel2.cpp
index c781068918f1..1763e115435b 100644
--- a/tools/regression/pthread/unwind/cond_wait_cancel2.cpp
+++ b/tools/regression/pthread/unwind/cond_wait_cancel2.cpp
@@ -1,5 +1,4 @@
/*
- * $FreeBSD$
*
* Test stack unwinding for mixed pthread_cleanup_push/pop and C++
* object, both should work together.
@@ -13,10 +12,10 @@
#include "Test.cpp"
-pthread_mutex_t mtx;
-pthread_cond_t cv;
+static pthread_mutex_t mtx;
+static pthread_cond_t cv;
-void f()
+static void f()
{
Test t;
@@ -26,13 +25,13 @@ void f()
printf("Bug, thread shouldn't be here.\n");
}
-void g()
+static void g()
{
f();
}
-void *
-thr(void *arg)
+static void *
+thr(void *arg __unused)
{
pthread_cleanup_push(cleanup_handler, NULL);
g();
diff --git a/tools/regression/pthread/unwind/main_thread_exit.cpp b/tools/regression/pthread/unwind/main_thread_exit.cpp
index 182c194b07af..c3ee859a5f0f 100644
--- a/tools/regression/pthread/unwind/main_thread_exit.cpp
+++ b/tools/regression/pthread/unwind/main_thread_exit.cpp
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
/* check unwinding for main thread */
#include <pthread.h>
diff --git a/tools/regression/pthread/unwind/sem_wait_cancel.cpp b/tools/regression/pthread/unwind/sem_wait_cancel.cpp
index 019164cb3166..45f881c521fe 100644
--- a/tools/regression/pthread/unwind/sem_wait_cancel.cpp
+++ b/tools/regression/pthread/unwind/sem_wait_cancel.cpp
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
/* Test stack unwinding for libc's sem */
#include <pthread.h>
@@ -8,10 +7,10 @@
#include "Test.cpp"
-sem_t sem;
+static sem_t sem;
-void *
-thr(void *arg)
+static void *
+thr(void *arg __unused)
{
Test t;
diff --git a/tools/regression/pthread/unwind/thread_normal_exit.cpp b/tools/regression/pthread/unwind/thread_normal_exit.cpp
index faf900e572c4..3549db432f38 100644
--- a/tools/regression/pthread/unwind/thread_normal_exit.cpp
+++ b/tools/regression/pthread/unwind/thread_normal_exit.cpp
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
/* test stack unwinding for a new thread */
#include <pthread.h>
@@ -7,8 +6,8 @@
#include "Test.cpp"
-void *
-thr_routine(void *arg)
+static void *
+thr_routine(void *arg __unused)
{
Test test;
diff --git a/tools/regression/redzone9/Makefile b/tools/regression/redzone9/Makefile
index 6de15357488f..fe2d71ecd776 100644
--- a/tools/regression/redzone9/Makefile
+++ b/tools/regression/redzone9/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
KMOD= redzone
SRCS= redzone.c
diff --git a/tools/regression/redzone9/README b/tools/regression/redzone9/README
index 87ca49a08633..efdd4b22b1e2 100644
--- a/tools/regression/redzone9/README
+++ b/tools/regression/redzone9/README
@@ -1,4 +1,3 @@
-$FreeBSD$
To verify that redzone(9) works properly:
diff --git a/tools/regression/redzone9/redzone.c b/tools/regression/redzone9/redzone.c
index 101373892188..579e5a08cda7 100644
--- a/tools/regression/redzone9/redzone.c
+++ b/tools/regression/redzone9/redzone.c
@@ -24,9 +24,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
diff --git a/tools/regression/redzone9/test.sh b/tools/regression/redzone9/test.sh
index b38245807e04..eb995a1e841d 100644
--- a/tools/regression/redzone9/test.sh
+++ b/tools/regression/redzone9/test.sh
@@ -1,6 +1,5 @@
#!/bin/sh
#
-# $FreeBSD$
sysctl debug.redzone.malloc_underflow=1
sysctl debug.redzone.malloc_overflow=1
diff --git a/tools/regression/rpcsec_gss/Makefile b/tools/regression/rpcsec_gss/Makefile
index 6f9debb7c2c3..60ece71252a4 100644
--- a/tools/regression/rpcsec_gss/Makefile
+++ b/tools/regression/rpcsec_gss/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= rpctest
MAN=
diff --git a/tools/regression/rpcsec_gss/rpctest.c b/tools/regression/rpcsec_gss/rpctest.c
index 847ae3bea9e3..a179c82c6b1a 100644
--- a/tools/regression/rpcsec_gss/rpctest.c
+++ b/tools/regression/rpcsec_gss/rpctest.c
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
#ifdef __FreeBSD__
diff --git a/tools/regression/security/access/Makefile b/tools/regression/security/access/Makefile
index 70437110ceeb..4f1b9a5fb2dd 100644
--- a/tools/regression/security/access/Makefile
+++ b/tools/regression/security/access/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= testaccess
MAN=
diff --git a/tools/regression/security/access/testaccess.c b/tools/regression/security/access/testaccess.c
index 46bb01c4150d..61e1b62f28b7 100644
--- a/tools/regression/security/access/testaccess.c
+++ b/tools/regression/security/access/testaccess.c
@@ -28,8 +28,6 @@
*
* Work sponsored by Defense Advanced Research Projects Agency under the
* CHATS research program, CBOSS project.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/security/cap_test/Makefile b/tools/regression/security/cap_test/Makefile
index 344effae0460..05c7724af825 100644
--- a/tools/regression/security/cap_test/Makefile
+++ b/tools/regression/security/cap_test/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= cap_test
SRCS= cap_test.c \
diff --git a/tools/regression/security/cap_test/cap_test.c b/tools/regression/security/cap_test/cap_test.c
index 580ce4e27b39..3544bf690214 100644
--- a/tools/regression/security/cap_test/cap_test.c
+++ b/tools/regression/security/cap_test/cap_test.c
@@ -23,13 +23,9 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/wait.h>
#include <err.h>
diff --git a/tools/regression/security/cap_test/cap_test.h b/tools/regression/security/cap_test/cap_test.h
index 202b998bd0e0..da06fab0ef76 100644
--- a/tools/regression/security/cap_test/cap_test.h
+++ b/tools/regression/security/cap_test/cap_test.h
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
#ifndef CAP_TEST_H
diff --git a/tools/regression/security/cap_test/cap_test.t b/tools/regression/security/cap_test/cap_test.t
index 8185161f702a..a13e1b204fb4 100644
--- a/tools/regression/security/cap_test/cap_test.t
+++ b/tools/regression/security/cap_test/cap_test.t
@@ -1,6 +1,5 @@
#!/bin/sh
#
-# $FreeBSD$
#
if test -z "${DIR}" ; then DIR=$( make -V .OBJDIR ); fi
diff --git a/tools/regression/security/cap_test/cap_test_capabilities.c b/tools/regression/security/cap_test/cap_test_capabilities.c
index 1ffac9a519cf..b22749360bb1 100644
--- a/tools/regression/security/cap_test/cap_test_capabilities.c
+++ b/tools/regression/security/cap_test/cap_test_capabilities.c
@@ -34,9 +34,6 @@
* various object types.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/param.h>
#include <sys/capsicum.h>
#include <sys/errno.h>
diff --git a/tools/regression/security/cap_test/cap_test_capmode.c b/tools/regression/security/cap_test/cap_test_capmode.c
index d0c915c61327..9d1eaf45ea85 100644
--- a/tools/regression/security/cap_test/cap_test_capmode.c
+++ b/tools/regression/security/cap_test/cap_test_capmode.c
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
@@ -33,9 +31,6 @@
* whether or not they return the expected ECAPMODE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/param.h>
#include <sys/capsicum.h>
#include <sys/errno.h>
diff --git a/tools/regression/security/cap_test/cap_test_fcntl.c b/tools/regression/security/cap_test/cap_test_fcntl.c
index 626abe7a95b6..5ef9c55a3e4d 100644
--- a/tools/regression/security/cap_test/cap_test_fcntl.c
+++ b/tools/regression/security/cap_test/cap_test_fcntl.c
@@ -29,9 +29,6 @@
* Test that fcntl works in capability mode.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/capsicum.h>
#include <sys/errno.h>
diff --git a/tools/regression/security/cap_test/cap_test_pdfork.c b/tools/regression/security/cap_test/cap_test_pdfork.c
index 8becee04a1a8..fdd0b5d6ad04 100644
--- a/tools/regression/security/cap_test/cap_test_pdfork.c
+++ b/tools/regression/security/cap_test/cap_test_pdfork.c
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
@@ -33,9 +31,6 @@
* whether or not they return the expected ECAPMODE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/capsium.h>
diff --git a/tools/regression/security/cap_test/cap_test_pdkill.c b/tools/regression/security/cap_test/cap_test_pdkill.c
index 2018eddbc394..2f2a18b3baa7 100644
--- a/tools/regression/security/cap_test/cap_test_pdkill.c
+++ b/tools/regression/security/cap_test/cap_test_pdkill.c
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
@@ -33,9 +31,6 @@
* whether or not they return the expected ECAPMODE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/capsicum.h>
diff --git a/tools/regression/security/cap_test/cap_test_relative.c b/tools/regression/security/cap_test/cap_test_relative.c
index 284cf7852c6c..ef2e561b0158 100644
--- a/tools/regression/security/cap_test/cap_test_relative.c
+++ b/tools/regression/security/cap_test/cap_test_relative.c
@@ -23,13 +23,8 @@
* 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.
- *
- * $FreeBSD$
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/param.h>
#include <sys/capsicum.h>
#include <sys/errno.h>
diff --git a/tools/regression/security/cap_test/cap_test_sysctl.c b/tools/regression/security/cap_test/cap_test_sysctl.c
index a31b4241670e..dcc6970606da 100644
--- a/tools/regression/security/cap_test/cap_test_sysctl.c
+++ b/tools/regression/security/cap_test/cap_test_sysctl.c
@@ -23,17 +23,12 @@
* 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.
- *
- * $FreeBSD$
*/
/*
* Test that various sysctls are (and aren't) available on capability mode.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/capsicum.h>
#include <sys/errno.h>
diff --git a/tools/regression/security/open_to_operation/Makefile b/tools/regression/security/open_to_operation/Makefile
index fbc0dc7c12b8..87f46c1f3032 100644
--- a/tools/regression/security/open_to_operation/Makefile
+++ b/tools/regression/security/open_to_operation/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= open_to_operation
MAN=
diff --git a/tools/regression/security/open_to_operation/open_to_operation.c b/tools/regression/security/open_to_operation/open_to_operation.c
index c8c816becab9..235b785b5993 100644
--- a/tools/regression/security/open_to_operation/open_to_operation.c
+++ b/tools/regression/security/open_to_operation/open_to_operation.c
@@ -89,9 +89,6 @@
* XXXRW: message queue and shared memory fds?
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/param.h>
#include <sys/mman.h>
#include <sys/mount.h>
diff --git a/tools/regression/security/proc_to_proc/Makefile b/tools/regression/security/proc_to_proc/Makefile
index aa0770227c92..041aea2000e6 100644
--- a/tools/regression/security/proc_to_proc/Makefile
+++ b/tools/regression/security/proc_to_proc/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= testuid
MAN=
diff --git a/tools/regression/security/proc_to_proc/README b/tools/regression/security/proc_to_proc/README
index 01857b834dce..9fe1e8cd35c8 100644
--- a/tools/regression/security/proc_to_proc/README
+++ b/tools/regression/security/proc_to_proc/README
@@ -1,4 +1,3 @@
-$FreeBSD$
Inter-Process Authorization Test Suite
Robert Watson, TrustedBSD Project
diff --git a/tools/regression/security/proc_to_proc/scenario.c b/tools/regression/security/proc_to_proc/scenario.c
index 0e3e476df54b..5419058cce8f 100644
--- a/tools/regression/security/proc_to_proc/scenario.c
+++ b/tools/regression/security/proc_to_proc/scenario.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
diff --git a/tools/regression/security/proc_to_proc/scenario.h b/tools/regression/security/proc_to_proc/scenario.h
index da087207c5a7..4bc8b33a9f71 100644
--- a/tools/regression/security/proc_to_proc/scenario.h
+++ b/tools/regression/security/proc_to_proc/scenario.h
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#ifndef _SCENARIO_H
#define _SCENARIO_H
diff --git a/tools/regression/security/proc_to_proc/testuid.c b/tools/regression/security/proc_to_proc/testuid.c
index a9b81a08541c..0f499ede771c 100644
--- a/tools/regression/security/proc_to_proc/testuid.c
+++ b/tools/regression/security/proc_to_proc/testuid.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/sigqueue/Makefile b/tools/regression/sigqueue/Makefile
index 3533723b61cb..2913e8870e8e 100644
--- a/tools/regression/sigqueue/Makefile
+++ b/tools/regression/sigqueue/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SUBDIR=sigqtest1 sigqtest2
diff --git a/tools/regression/sigqueue/sigqtest1/Makefile b/tools/regression/sigqueue/sigqtest1/Makefile
index 66ad799895cb..28e458537055 100644
--- a/tools/regression/sigqueue/sigqtest1/Makefile
+++ b/tools/regression/sigqueue/sigqtest1/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG=sigqtest1
MAN=
diff --git a/tools/regression/sigqueue/sigqtest1/sigqtest1.c b/tools/regression/sigqueue/sigqtest1/sigqtest1.c
index f0201c37af86..074f140f11c8 100644
--- a/tools/regression/sigqueue/sigqtest1/sigqtest1.c
+++ b/tools/regression/sigqueue/sigqtest1/sigqtest1.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
#include <err.h>
#include <errno.h>
#include <signal.h>
diff --git a/tools/regression/sigqueue/sigqtest2/Makefile b/tools/regression/sigqueue/sigqtest2/Makefile
index 30ae7840ebc5..6f278fab171e 100644
--- a/tools/regression/sigqueue/sigqtest2/Makefile
+++ b/tools/regression/sigqueue/sigqtest2/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG=sigqtest2
MAN=
diff --git a/tools/regression/sigqueue/sigqtest2/sigqtest2.c b/tools/regression/sigqueue/sigqtest2/sigqtest2.c
index 50b579d0a42c..50ab140dbd9a 100644
--- a/tools/regression/sigqueue/sigqtest2/sigqtest2.c
+++ b/tools/regression/sigqueue/sigqtest2/sigqtest2.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
#include <sys/types.h>
#include <sys/wait.h>
#include <err.h>
diff --git a/tools/regression/sockets/accept_fd_leak/Makefile b/tools/regression/sockets/accept_fd_leak/Makefile
index d3b3f42ce2a8..2614e92a1d17 100644
--- a/tools/regression/sockets/accept_fd_leak/Makefile
+++ b/tools/regression/sockets/accept_fd_leak/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= accept_fd_leak
diff --git a/tools/regression/sockets/accept_fd_leak/accept_fd_leak.c b/tools/regression/sockets/accept_fd_leak/accept_fd_leak.c
index 659c22d29564..f1de967a9f39 100644
--- a/tools/regression/sockets/accept_fd_leak/accept_fd_leak.c
+++ b/tools/regression/sockets/accept_fd_leak/accept_fd_leak.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
diff --git a/tools/regression/sockets/accept_fd_leak/accept_fd_leak.t b/tools/regression/sockets/accept_fd_leak/accept_fd_leak.t
index 8bdfd03be81b..74eb8c9c581d 100644
--- a/tools/regression/sockets/accept_fd_leak/accept_fd_leak.t
+++ b/tools/regression/sockets/accept_fd_leak/accept_fd_leak.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
cd `dirname $0`
diff --git a/tools/regression/sockets/accf_data_attach/Makefile b/tools/regression/sockets/accf_data_attach/Makefile
index e7942ced5d02..0df72455fa69 100644
--- a/tools/regression/sockets/accf_data_attach/Makefile
+++ b/tools/regression/sockets/accf_data_attach/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= accf_data_attach
diff --git a/tools/regression/sockets/accf_data_attach/accf_data_attach.c b/tools/regression/sockets/accf_data_attach/accf_data_attach.c
index 9d2a5d152114..68a8d278f825 100644
--- a/tools/regression/sockets/accf_data_attach/accf_data_attach.c
+++ b/tools/regression/sockets/accf_data_attach/accf_data_attach.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/sockets/accf_data_attach/accf_data_attach.t b/tools/regression/sockets/accf_data_attach/accf_data_attach.t
index 8bdfd03be81b..74eb8c9c581d 100644
--- a/tools/regression/sockets/accf_data_attach/accf_data_attach.t
+++ b/tools/regression/sockets/accf_data_attach/accf_data_attach.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
cd `dirname $0`
diff --git a/tools/regression/sockets/fstat/Makefile b/tools/regression/sockets/fstat/Makefile
index d5cb72419969..ee36f797b5e1 100644
--- a/tools/regression/sockets/fstat/Makefile
+++ b/tools/regression/sockets/fstat/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= fstat
diff --git a/tools/regression/sockets/fstat/fstat.c b/tools/regression/sockets/fstat/fstat.c
index 6ea931de4660..be370e983089 100644
--- a/tools/regression/sockets/fstat/fstat.c
+++ b/tools/regression/sockets/fstat/fstat.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/sockets/kqueue/Makefile b/tools/regression/sockets/kqueue/Makefile
index e37eadfbb203..142330b97e6e 100644
--- a/tools/regression/sockets/kqueue/Makefile
+++ b/tools/regression/sockets/kqueue/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= kqueue
diff --git a/tools/regression/sockets/kqueue/kqueue.c b/tools/regression/sockets/kqueue/kqueue.c
index f73704a9fef3..bc75ce38e7c9 100644
--- a/tools/regression/sockets/kqueue/kqueue.c
+++ b/tools/regression/sockets/kqueue/kqueue.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/sockets/kqueue/kqueue.t b/tools/regression/sockets/kqueue/kqueue.t
index 8bdfd03be81b..74eb8c9c581d 100644
--- a/tools/regression/sockets/kqueue/kqueue.t
+++ b/tools/regression/sockets/kqueue/kqueue.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
cd `dirname $0`
diff --git a/tools/regression/sockets/listen_backlog/Makefile b/tools/regression/sockets/listen_backlog/Makefile
index 091d7a420c76..24efd15aebd2 100644
--- a/tools/regression/sockets/listen_backlog/Makefile
+++ b/tools/regression/sockets/listen_backlog/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= listen_backlog
MAN=
diff --git a/tools/regression/sockets/listen_backlog/listen_backlog.c b/tools/regression/sockets/listen_backlog/listen_backlog.c
index 2276393ee6f1..843c36ad3543 100644
--- a/tools/regression/sockets/listen_backlog/listen_backlog.c
+++ b/tools/regression/sockets/listen_backlog/listen_backlog.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
@@ -44,7 +42,7 @@
*
* Future things to test:
*
- * - That if we change the value of kern.ipc.somaxconn, the limits really
+ * - That if we change the value of kern.ipc.soacceptqueue, the limits really
* do change.
*
* - That limits are, approximately, enforced and implemented.
@@ -55,7 +53,7 @@
*/
/*
- * We retrieve kern.ipc.somaxconn before running the tests in order to use a
+ * We retrieve kern.ipc.soacceptqueue before running the tests in order to use a
* run-time set value of SOMAXCONN, rather than compile-time set. We assume
* that no other process will be simultaneously frobbing it, and these tests
* may fail if that assumption is not held.
@@ -371,9 +369,9 @@ main(void)
size_t len;
len = sizeof(somaxconn);
- if (sysctlbyname("kern.ipc.somaxconn", &somaxconn, &len, NULL, 0)
+ if (sysctlbyname("kern.ipc.soacceptqueue", &somaxconn, &len, NULL, 0)
< 0)
- err(-1, "sysctlbyname(kern.ipc.somaxconn)");
+ err(-1, "sysctlbyname(kern.ipc.soacceptqueue)");
test_defaults();
test_listen_update();
diff --git a/tools/regression/sockets/listen_kqueue/Makefile b/tools/regression/sockets/listen_kqueue/Makefile
index a506f262d06a..3ebdb1c4fac0 100644
--- a/tools/regression/sockets/listen_kqueue/Makefile
+++ b/tools/regression/sockets/listen_kqueue/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= listen_kqueue
MAN=
diff --git a/tools/regression/sockets/listen_kqueue/listen_kqueue.c b/tools/regression/sockets/listen_kqueue/listen_kqueue.c
index dd36a0f53296..29de5f7745a0 100644
--- a/tools/regression/sockets/listen_kqueue/listen_kqueue.c
+++ b/tools/regression/sockets/listen_kqueue/listen_kqueue.c
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/sockets/listenclose/Makefile b/tools/regression/sockets/listenclose/Makefile
index ee147dad8cef..a2a09a02a3bf 100644
--- a/tools/regression/sockets/listenclose/Makefile
+++ b/tools/regression/sockets/listenclose/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= listenclose
diff --git a/tools/regression/sockets/listenclose/listenclose.c b/tools/regression/sockets/listenclose/listenclose.c
index f920846de309..5aa7090a1676 100644
--- a/tools/regression/sockets/listenclose/listenclose.c
+++ b/tools/regression/sockets/listenclose/listenclose.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/sockets/pr_atomic/Makefile b/tools/regression/sockets/pr_atomic/Makefile
index a52433c6ef26..3c13ea53d068 100644
--- a/tools/regression/sockets/pr_atomic/Makefile
+++ b/tools/regression/sockets/pr_atomic/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= pr_atomic
MAN=
diff --git a/tools/regression/sockets/pr_atomic/pr_atomic.c b/tools/regression/sockets/pr_atomic/pr_atomic.c
index e902cf7e9263..cb7e24cdc972 100644
--- a/tools/regression/sockets/pr_atomic/pr_atomic.c
+++ b/tools/regression/sockets/pr_atomic/pr_atomic.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/sockets/reconnect/Makefile b/tools/regression/sockets/reconnect/Makefile
index 285d075bca4b..2b3eba0e8db4 100644
--- a/tools/regression/sockets/reconnect/Makefile
+++ b/tools/regression/sockets/reconnect/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= reconnect
diff --git a/tools/regression/sockets/reconnect/reconnect.c b/tools/regression/sockets/reconnect/reconnect.c
index 985d6d709e64..033d03369637 100644
--- a/tools/regression/sockets/reconnect/reconnect.c
+++ b/tools/regression/sockets/reconnect/reconnect.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/sockets/rtsocket/Makefile b/tools/regression/sockets/rtsocket/Makefile
index fcb2e40acca1..666f6c1ab8d0 100644
--- a/tools/regression/sockets/rtsocket/Makefile
+++ b/tools/regression/sockets/rtsocket/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= rtsocket
MAN=
diff --git a/tools/regression/sockets/rtsocket/rtsocket.c b/tools/regression/sockets/rtsocket/rtsocket.c
index f189cdcdd0aa..68003768223b 100644
--- a/tools/regression/sockets/rtsocket/rtsocket.c
+++ b/tools/regression/sockets/rtsocket/rtsocket.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/sockets/sblock/Makefile b/tools/regression/sockets/sblock/Makefile
index 1992a0a652ac..724259c8615f 100644
--- a/tools/regression/sockets/sblock/Makefile
+++ b/tools/regression/sockets/sblock/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= sblock
diff --git a/tools/regression/sockets/sblock/sblock.c b/tools/regression/sockets/sblock/sblock.c
index 415c4d4eb8da..e7788d943033 100644
--- a/tools/regression/sockets/sblock/sblock.c
+++ b/tools/regression/sockets/sblock/sblock.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/sockets/sendfile/Makefile b/tools/regression/sockets/sendfile/Makefile
index f1ba7a1cf596..31ae7b9124bb 100644
--- a/tools/regression/sockets/sendfile/Makefile
+++ b/tools/regression/sockets/sendfile/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= sendfile
diff --git a/tools/regression/sockets/sendfile/sendfile.c b/tools/regression/sockets/sendfile/sendfile.c
index 3a5923487dec..40af5a67982e 100644
--- a/tools/regression/sockets/sendfile/sendfile.c
+++ b/tools/regression/sockets/sendfile/sendfile.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/sockets/shutdown/Makefile b/tools/regression/sockets/shutdown/Makefile
index c36398c5af24..87706eb23450 100644
--- a/tools/regression/sockets/shutdown/Makefile
+++ b/tools/regression/sockets/shutdown/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= shutdown
diff --git a/tools/regression/sockets/shutdown/shutdown.c b/tools/regression/sockets/shutdown/shutdown.c
index 3d23c943015b..95c0120801e2 100644
--- a/tools/regression/sockets/shutdown/shutdown.c
+++ b/tools/regression/sockets/shutdown/shutdown.c
@@ -21,8 +21,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/sockets/sigpipe/Makefile b/tools/regression/sockets/sigpipe/Makefile
index bd7720fbcbed..d6cb19b7f88f 100644
--- a/tools/regression/sockets/sigpipe/Makefile
+++ b/tools/regression/sockets/sigpipe/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= sigpipe
diff --git a/tools/regression/sockets/sigpipe/sigpipe.c b/tools/regression/sockets/sigpipe/sigpipe.c
index 894d9de6255f..d3c52356f4b1 100644
--- a/tools/regression/sockets/sigpipe/sigpipe.c
+++ b/tools/regression/sockets/sigpipe/sigpipe.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/sockets/so_setfib/Makefile b/tools/regression/sockets/so_setfib/Makefile
index eadb3efb1c36..c7c8e69fef6e 100644
--- a/tools/regression/sockets/so_setfib/Makefile
+++ b/tools/regression/sockets/so_setfib/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.include <src.opts.mk>
diff --git a/tools/regression/sockets/so_setfib/so_setfib.c b/tools/regression/sockets/so_setfib/so_setfib.c
index ab1255bcc662..9d3110a92499 100644
--- a/tools/regression/sockets/so_setfib/so_setfib.c
+++ b/tools/regression/sockets/so_setfib/so_setfib.c
@@ -25,8 +25,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/sockets/udp_pingpong/Makefile b/tools/regression/sockets/udp_pingpong/Makefile
index 61e92ed73ce8..8ba9ee40826f 100644
--- a/tools/regression/sockets/udp_pingpong/Makefile
+++ b/tools/regression/sockets/udp_pingpong/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= udp_pingpong
MAN=
diff --git a/tools/regression/sockets/udp_pingpong/udp_pingpong.c b/tools/regression/sockets/udp_pingpong/udp_pingpong.c
index fc585d275db4..2fe342debdc6 100644
--- a/tools/regression/sockets/udp_pingpong/udp_pingpong.c
+++ b/tools/regression/sockets/udp_pingpong/udp_pingpong.c
@@ -34,9 +34,6 @@
* sure it makes sense.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/wait.h>
diff --git a/tools/regression/sockets/unix_bindconnect/Makefile b/tools/regression/sockets/unix_bindconnect/Makefile
index 4bb4fc011ba4..776723eadada 100644
--- a/tools/regression/sockets/unix_bindconnect/Makefile
+++ b/tools/regression/sockets/unix_bindconnect/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= unix_bindconnect
MAN=
diff --git a/tools/regression/sockets/unix_bindconnect/unix_bindconnect.c b/tools/regression/sockets/unix_bindconnect/unix_bindconnect.c
index 079dc4d1cae4..11487c70dc9c 100644
--- a/tools/regression/sockets/unix_bindconnect/unix_bindconnect.c
+++ b/tools/regression/sockets/unix_bindconnect/unix_bindconnect.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/regression/sockets/unix_close_race/Makefile b/tools/regression/sockets/unix_close_race/Makefile
index 690929edc2bc..b4fa340ed0df 100644
--- a/tools/regression/sockets/unix_close_race/Makefile
+++ b/tools/regression/sockets/unix_close_race/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= unix_close_race
MAN=
diff --git a/tools/regression/sockets/unix_close_race/unix_close_race.c b/tools/regression/sockets/unix_close_race/unix_close_race.c
index 89c1b20d62dc..fd7675576ae6 100644
--- a/tools/regression/sockets/unix_close_race/unix_close_race.c
+++ b/tools/regression/sockets/unix_close_race/unix_close_race.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/sockets/unix_cmsg/Makefile b/tools/regression/sockets/unix_cmsg/Makefile
index 137b146f8553..b3caf4996c46 100644
--- a/tools/regression/sockets/unix_cmsg/Makefile
+++ b/tools/regression/sockets/unix_cmsg/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= unix_cmsg
SRCS= ${AUTOSRCS} unix_cmsg.c uc_common.h uc_common.c \
diff --git a/tools/regression/sockets/unix_cmsg/README b/tools/regression/sockets/unix_cmsg/README
index df51723b76fa..ca9fa3c1b3b3 100644
--- a/tools/regression/sockets/unix_cmsg/README
+++ b/tools/regression/sockets/unix_cmsg/README
@@ -1,4 +1,3 @@
-$FreeBSD$
About unix_cmsg
===============
diff --git a/tools/regression/sockets/unix_cmsg/t_cmsg_len.c b/tools/regression/sockets/unix_cmsg/t_cmsg_len.c
index 3a88cebf1645..d9e4b6fb99ae 100644
--- a/tools/regression/sockets/unix_cmsg/t_cmsg_len.c
+++ b/tools/regression/sockets/unix_cmsg/t_cmsg_len.c
@@ -24,9 +24,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
diff --git a/tools/regression/sockets/unix_cmsg/t_cmsg_len.h b/tools/regression/sockets/unix_cmsg/t_cmsg_len.h
index 5ec735144439..d526dc306cc9 100644
--- a/tools/regression/sockets/unix_cmsg/t_cmsg_len.h
+++ b/tools/regression/sockets/unix_cmsg/t_cmsg_len.h
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
#ifndef __LP64__
diff --git a/tools/regression/sockets/unix_cmsg/t_cmsgcred.c b/tools/regression/sockets/unix_cmsg/t_cmsgcred.c
index 3e3653c15179..a1f6dc43e1db 100644
--- a/tools/regression/sockets/unix_cmsg/t_cmsgcred.c
+++ b/tools/regression/sockets/unix_cmsg/t_cmsgcred.c
@@ -24,9 +24,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
diff --git a/tools/regression/sockets/unix_cmsg/t_cmsgcred.h b/tools/regression/sockets/unix_cmsg/t_cmsgcred.h
index 2aee226161df..2a459260da41 100644
--- a/tools/regression/sockets/unix_cmsg/t_cmsgcred.h
+++ b/tools/regression/sockets/unix_cmsg/t_cmsgcred.h
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
int t_cmsgcred_client(int fd);
diff --git a/tools/regression/sockets/unix_cmsg/t_cmsgcred_sockcred.c b/tools/regression/sockets/unix_cmsg/t_cmsgcred_sockcred.c
index 72110b32af64..af4232470812 100644
--- a/tools/regression/sockets/unix_cmsg/t_cmsgcred_sockcred.c
+++ b/tools/regression/sockets/unix_cmsg/t_cmsgcred_sockcred.c
@@ -24,9 +24,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
diff --git a/tools/regression/sockets/unix_cmsg/t_cmsgcred_sockcred.h b/tools/regression/sockets/unix_cmsg/t_cmsgcred_sockcred.h
index df849c65afd7..ed0fecac4b2f 100644
--- a/tools/regression/sockets/unix_cmsg/t_cmsgcred_sockcred.h
+++ b/tools/regression/sockets/unix_cmsg/t_cmsgcred_sockcred.h
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
int t_cmsgcred_sockcred(void);
diff --git a/tools/regression/sockets/unix_cmsg/t_generic.c b/tools/regression/sockets/unix_cmsg/t_generic.c
index 02a65255011d..8b4e251e92fe 100644
--- a/tools/regression/sockets/unix_cmsg/t_generic.c
+++ b/tools/regression/sockets/unix_cmsg/t_generic.c
@@ -24,9 +24,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
diff --git a/tools/regression/sockets/unix_cmsg/t_generic.h b/tools/regression/sockets/unix_cmsg/t_generic.h
index a9b3d1be703c..25bfc1540d3e 100644
--- a/tools/regression/sockets/unix_cmsg/t_generic.h
+++ b/tools/regression/sockets/unix_cmsg/t_generic.h
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
int t_generic(int (*client_func)(int), int (*server_func)(int));
diff --git a/tools/regression/sockets/unix_cmsg/t_peercred.c b/tools/regression/sockets/unix_cmsg/t_peercred.c
index 9b6e14868fcb..cbea69eaea97 100644
--- a/tools/regression/sockets/unix_cmsg/t_peercred.c
+++ b/tools/regression/sockets/unix_cmsg/t_peercred.c
@@ -24,9 +24,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ucred.h>
diff --git a/tools/regression/sockets/unix_cmsg/t_peercred.h b/tools/regression/sockets/unix_cmsg/t_peercred.h
index 1200734722ac..7a2ac010487b 100644
--- a/tools/regression/sockets/unix_cmsg/t_peercred.h
+++ b/tools/regression/sockets/unix_cmsg/t_peercred.h
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
int t_peercred(void);
diff --git a/tools/regression/sockets/unix_cmsg/t_sockcred.c b/tools/regression/sockets/unix_cmsg/t_sockcred.c
index 45ac5bfe823c..d5171946f988 100644
--- a/tools/regression/sockets/unix_cmsg/t_sockcred.c
+++ b/tools/regression/sockets/unix_cmsg/t_sockcred.c
@@ -24,9 +24,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
diff --git a/tools/regression/sockets/unix_cmsg/t_sockcred.h b/tools/regression/sockets/unix_cmsg/t_sockcred.h
index c0c52b90fb65..1f4bf6ab57e9 100644
--- a/tools/regression/sockets/unix_cmsg/t_sockcred.h
+++ b/tools/regression/sockets/unix_cmsg/t_sockcred.h
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
int t_sockcred_1(void);
diff --git a/tools/regression/sockets/unix_cmsg/t_xxxtime.c.in b/tools/regression/sockets/unix_cmsg/t_xxxtime.c.in
index 8bed032a5e23..332bab621fbf 100644
--- a/tools/regression/sockets/unix_cmsg/t_xxxtime.c.in
+++ b/tools/regression/sockets/unix_cmsg/t_xxxtime.c.in
@@ -25,8 +25,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/time.h>
#include <sys/types.h>
#include <sys/socket.h>
diff --git a/tools/regression/sockets/unix_cmsg/t_xxxtime.h.in b/tools/regression/sockets/unix_cmsg/t_xxxtime.h.in
index fcd6348524de..e304ffb7c373 100644
--- a/tools/regression/sockets/unix_cmsg/t_xxxtime.h.in
+++ b/tools/regression/sockets/unix_cmsg/t_xxxtime.h.in
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
#if defined(%%SCM_TTYPE%%)
diff --git a/tools/regression/sockets/unix_cmsg/uc_check_time.c b/tools/regression/sockets/unix_cmsg/uc_check_time.c
index 682cd442077d..abc20e84ade9 100644
--- a/tools/regression/sockets/unix_cmsg/uc_check_time.c
+++ b/tools/regression/sockets/unix_cmsg/uc_check_time.c
@@ -25,8 +25,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/time.h>
#include <time.h>
diff --git a/tools/regression/sockets/unix_cmsg/uc_check_time.h b/tools/regression/sockets/unix_cmsg/uc_check_time.h
index 61c52b05996d..2190d244e33e 100644
--- a/tools/regression/sockets/unix_cmsg/uc_check_time.h
+++ b/tools/regression/sockets/unix_cmsg/uc_check_time.h
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
struct bintime;
diff --git a/tools/regression/sockets/unix_cmsg/uc_common.c b/tools/regression/sockets/unix_cmsg/uc_common.c
index 0799df2e0d73..bcb18a808d99 100644
--- a/tools/regression/sockets/unix_cmsg/uc_common.c
+++ b/tools/regression/sockets/unix_cmsg/uc_common.c
@@ -25,8 +25,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/socket.h>
#include <sys/un.h>
#include <err.h>
diff --git a/tools/regression/sockets/unix_cmsg/uc_common.h b/tools/regression/sockets/unix_cmsg/uc_common.h
index 5e119cabc7e9..626ae659119e 100644
--- a/tools/regression/sockets/unix_cmsg/uc_common.h
+++ b/tools/regression/sockets/unix_cmsg/uc_common.h
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
struct uc_cfg {
diff --git a/tools/regression/sockets/unix_cmsg/unix_cmsg.c b/tools/regression/sockets/unix_cmsg/unix_cmsg.c
index 1d1dfbfc4b07..bd3753140b46 100644
--- a/tools/regression/sockets/unix_cmsg/unix_cmsg.c
+++ b/tools/regression/sockets/unix_cmsg/unix_cmsg.c
@@ -24,9 +24,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/limits.h>
#include <sys/socket.h>
diff --git a/tools/regression/sockets/unix_cmsg/unix_cmsg.t b/tools/regression/sockets/unix_cmsg/unix_cmsg.t
index 70d92770d6e4..a267800922b3 100644
--- a/tools/regression/sockets/unix_cmsg/unix_cmsg.t
+++ b/tools/regression/sockets/unix_cmsg/unix_cmsg.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
cd `dirname $0`
cmd="./`basename $0 .t`"
diff --git a/tools/regression/sockets/unix_gc/Makefile b/tools/regression/sockets/unix_gc/Makefile
index 09ba07ae65ee..81791f4b5212 100644
--- a/tools/regression/sockets/unix_gc/Makefile
+++ b/tools/regression/sockets/unix_gc/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= unix_gc
MAN=
diff --git a/tools/regression/sockets/unix_gc/unix_gc.c b/tools/regression/sockets/unix_gc/unix_gc.c
index e378f3aee0ec..63b1e45e5284 100644
--- a/tools/regression/sockets/unix_gc/unix_gc.c
+++ b/tools/regression/sockets/unix_gc/unix_gc.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/sockets/unix_sendtorace/Makefile b/tools/regression/sockets/unix_sendtorace/Makefile
index 7d26fc8b1383..fb1a25429f82 100644
--- a/tools/regression/sockets/unix_sendtorace/Makefile
+++ b/tools/regression/sockets/unix_sendtorace/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= unix_sendtorace
MAN=
diff --git a/tools/regression/sockets/unix_sendtorace/unix_sendtorace.c b/tools/regression/sockets/unix_sendtorace/unix_sendtorace.c
index 9fd748d6f7bb..6a6db010314e 100644
--- a/tools/regression/sockets/unix_sendtorace/unix_sendtorace.c
+++ b/tools/regression/sockets/unix_sendtorace/unix_sendtorace.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/sockets/unix_socket/Makefile b/tools/regression/sockets/unix_socket/Makefile
index 7ebc03fc22f3..0a62bf25a0dc 100644
--- a/tools/regression/sockets/unix_socket/Makefile
+++ b/tools/regression/sockets/unix_socket/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= unix_socket
MAN=
diff --git a/tools/regression/sockets/unix_socket/unix_socket.c b/tools/regression/sockets/unix_socket/unix_socket.c
index ca7225b49ce0..487668ab4701 100644
--- a/tools/regression/sockets/unix_socket/unix_socket.c
+++ b/tools/regression/sockets/unix_socket/unix_socket.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/sockets/unix_sorflush/Makefile b/tools/regression/sockets/unix_sorflush/Makefile
index 879dcc8ef533..a7f52e47d1fb 100644
--- a/tools/regression/sockets/unix_sorflush/Makefile
+++ b/tools/regression/sockets/unix_sorflush/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= unix_sorflush
MAN=
diff --git a/tools/regression/sockets/unix_sorflush/unix_sorflush.c b/tools/regression/sockets/unix_sorflush/unix_sorflush.c
index e0deb00a389d..082db5a02d17 100644
--- a/tools/regression/sockets/unix_sorflush/unix_sorflush.c
+++ b/tools/regression/sockets/unix_sorflush/unix_sorflush.c
@@ -36,8 +36,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/socket.h>
#include <err.h>
diff --git a/tools/regression/sockets/zerosend/Makefile b/tools/regression/sockets/zerosend/Makefile
index 9706b25ea899..4ceb95dd16b5 100644
--- a/tools/regression/sockets/zerosend/Makefile
+++ b/tools/regression/sockets/zerosend/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= zerosend
MAN=
diff --git a/tools/regression/sockets/zerosend/zerosend.c b/tools/regression/sockets/zerosend/zerosend.c
index ac9542a93617..347574a2e569 100644
--- a/tools/regression/sockets/zerosend/zerosend.c
+++ b/tools/regression/sockets/zerosend/zerosend.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/select.h>
diff --git a/tools/regression/sysvmsg/Makefile b/tools/regression/sysvmsg/Makefile
index c4c09e991cb0..a51353632e7a 100644
--- a/tools/regression/sysvmsg/Makefile
+++ b/tools/regression/sysvmsg/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
# SysV Message Queue Regression Utility
# Obtained from: $NetBSD: Makefile,v 1.3 2002/03/05 21:56:59 thorpej Exp $
diff --git a/tools/regression/sysvmsg/README b/tools/regression/sysvmsg/README
index f115b9967ed1..cfa585772b50 100644
--- a/tools/regression/sysvmsg/README
+++ b/tools/regression/sysvmsg/README
@@ -1,4 +1,3 @@
-$FreeBSD$
SysV IPC Message Queue Regression Utility.
diff --git a/tools/regression/sysvmsg/msgtest.c b/tools/regression/sysvmsg/msgtest.c
index 058a32106642..164fcf692017 100644
--- a/tools/regression/sysvmsg/msgtest.c
+++ b/tools/regression/sysvmsg/msgtest.c
@@ -28,7 +28,6 @@
* POSSIBILITY OF SUCH DAMAGE.
*
* Obtained from: $NetBSD: msgtest.c,v 1.7 2002/07/20 08:36:25 grant Exp $
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/sysvsem/Makefile b/tools/regression/sysvsem/Makefile
index d5c3e9fe4b7c..bbc87a377ecd 100644
--- a/tools/regression/sysvsem/Makefile
+++ b/tools/regression/sysvsem/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
# SysV Semaphores Regression Utility
# Obtained from: $NetBSD: Makefile,v 1.3 2002/03/05 21:57:00 thorpej Exp $
diff --git a/tools/regression/sysvsem/README b/tools/regression/sysvsem/README
index 33b9706817da..04cd208f2a15 100644
--- a/tools/regression/sysvsem/README
+++ b/tools/regression/sysvsem/README
@@ -1,4 +1,3 @@
-$FreeBSD$
SysV IPC Semaphore Regression Utility.
diff --git a/tools/regression/sysvsem/semtest.c b/tools/regression/sysvsem/semtest.c
index 39c416403c63..f4ab8e876ec4 100644
--- a/tools/regression/sysvsem/semtest.c
+++ b/tools/regression/sysvsem/semtest.c
@@ -28,7 +28,6 @@
* POSSIBILITY OF SUCH DAMAGE.
*
* Obtained from: $NetBSD: semtest.c,v 1.4 2002/07/20 08:36:25 grant Exp $
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/sysvshm/Makefile b/tools/regression/sysvshm/Makefile
index 382de0370d2f..6db232517d91 100644
--- a/tools/regression/sysvshm/Makefile
+++ b/tools/regression/sysvshm/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
# SysV Shared Memory Regression Utility
# Obtained from: $NetBSD: Makefile,v 1.3 2002/03/05 21:57:00 thorpej Exp $
diff --git a/tools/regression/sysvshm/README b/tools/regression/sysvshm/README
index 4e0125eec8ef..bcb0c5fb91b1 100644
--- a/tools/regression/sysvshm/README
+++ b/tools/regression/sysvshm/README
@@ -1,4 +1,3 @@
-$FreeBSD$
SysV IPC Shared Memory Regression Utility.
diff --git a/tools/regression/sysvshm/shmtest.c b/tools/regression/sysvshm/shmtest.c
index c3e5962d9fa1..edac85b21bda 100644
--- a/tools/regression/sysvshm/shmtest.c
+++ b/tools/regression/sysvshm/shmtest.c
@@ -28,7 +28,6 @@
* POSSIBILITY OF SUCH DAMAGE.
*
* Obtained from: $NetBSD: shmtest.c,v 1.3 2002/07/20 08:36:26 grant Exp $
- * $FreeBSD$
*/
/*
@@ -54,7 +53,7 @@ static void sigsys_handler(int);
static void sigchld_handler(int);
static void cleanup(void);
static void receiver(void);
-static void usage(void);
+static void usage(void) __dead2;
static const char *m_str = "The quick brown fox jumped over the lazy dog.";
diff --git a/tools/regression/tls/Makefile b/tools/regression/tls/Makefile
index 76def9685e75..96cd680987c2 100644
--- a/tools/regression/tls/Makefile
+++ b/tools/regression/tls/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SUBDIR=libxx libyy ttls1 ttls2 ttls4
diff --git a/tools/regression/tls/libxx/Makefile b/tools/regression/tls/libxx/Makefile
index cf4e68069f23..adf4da1cb6b7 100644
--- a/tools/regression/tls/libxx/Makefile
+++ b/tools/regression/tls/libxx/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SHLIB_NAME= libxx.so
diff --git a/tools/regression/tls/libxx/xx.c b/tools/regression/tls/libxx/xx.c
index 6d1e73f79a05..bc81531e2ce0 100644
--- a/tools/regression/tls/libxx/xx.c
+++ b/tools/regression/tls/libxx/xx.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
extern int __thread yy1;
int __thread xx1 = 1;
diff --git a/tools/regression/tls/libyy/Makefile b/tools/regression/tls/libyy/Makefile
index b7a7198cb319..634be2ad58ea 100644
--- a/tools/regression/tls/libyy/Makefile
+++ b/tools/regression/tls/libyy/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SHLIB_NAME= libyy.so
diff --git a/tools/regression/tls/libyy/yy.c b/tools/regression/tls/libyy/yy.c
index c00cb8770ec4..e7265829b93a 100644
--- a/tools/regression/tls/libyy/yy.c
+++ b/tools/regression/tls/libyy/yy.c
@@ -1,3 +1,2 @@
-/* $FreeBSD$ */
int __thread yy1 = 101;
diff --git a/tools/regression/tls/ttls1/Makefile b/tools/regression/tls/ttls1/Makefile
index a4535e0213d1..fd0f5edfd0b8 100644
--- a/tools/regression/tls/ttls1/Makefile
+++ b/tools/regression/tls/ttls1/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= ttls1
LDFLAGS+= -L../libxx -lxx -Wl,--rpath=${.OBJDIR}/../libxx
diff --git a/tools/regression/tls/ttls1/ttls1.c b/tools/regression/tls/ttls1/ttls1.c
index 9c514aeecf7a..24e4b1636e7d 100644
--- a/tools/regression/tls/ttls1/ttls1.c
+++ b/tools/regression/tls/ttls1/ttls1.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
#include <stdio.h>
diff --git a/tools/regression/tls/ttls2/Makefile b/tools/regression/tls/ttls2/Makefile
index cbebbe769e2f..044520a6b73e 100644
--- a/tools/regression/tls/ttls2/Makefile
+++ b/tools/regression/tls/ttls2/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= ttls2
LIBADD= pthread
diff --git a/tools/regression/tls/ttls2/ttls2.c b/tools/regression/tls/ttls2/ttls2.c
index 15eb640e3e3c..6fe316e15128 100644
--- a/tools/regression/tls/ttls2/ttls2.c
+++ b/tools/regression/tls/ttls2/ttls2.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
#include <pthread.h>
#include <stdio.h>
diff --git a/tools/regression/tls/ttls3/Makefile b/tools/regression/tls/ttls3/Makefile
index b171181e74fb..4695889067eb 100644
--- a/tools/regression/tls/ttls3/Makefile
+++ b/tools/regression/tls/ttls3/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
all: ttls3
diff --git a/tools/regression/tls/ttls3/elftls.S b/tools/regression/tls/ttls3/elftls.S
index 0fad08d90a7c..b13d286c264c 100644
--- a/tools/regression/tls/ttls3/elftls.S
+++ b/tools/regression/tls/ttls3/elftls.S
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
.file "elftls.S"
diff --git a/tools/regression/tls/ttls3/tls-test-lib.c b/tools/regression/tls/ttls3/tls-test-lib.c
index bc88ad1383dd..ebdd27c83302 100644
--- a/tools/regression/tls/ttls3/tls-test-lib.c
+++ b/tools/regression/tls/ttls3/tls-test-lib.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <stdio.h>
diff --git a/tools/regression/tls/ttls3/tls-test.c b/tools/regression/tls/ttls3/tls-test.c
index 539b6ce1ed11..0f2c3fdb79f3 100644
--- a/tools/regression/tls/ttls3/tls-test.c
+++ b/tools/regression/tls/ttls3/tls-test.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <stdio.h>
diff --git a/tools/regression/tls/ttls4/Makefile b/tools/regression/tls/ttls4/Makefile
index ab6ca6fe753c..f6f54d48f1b1 100644
--- a/tools/regression/tls/ttls4/Makefile
+++ b/tools/regression/tls/ttls4/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= ttls4
LIBADD= pthread
diff --git a/tools/regression/tls/ttls4/ttls4.c b/tools/regression/tls/ttls4/ttls4.c
index 914b220f5e7e..60cd91d4542a 100644
--- a/tools/regression/tls/ttls4/ttls4.c
+++ b/tools/regression/tls/ttls4/ttls4.c
@@ -3,8 +3,6 @@
* is clean.
*
* David Xu <davidxu@freebsd.org>
- *
- * $FreeBSD$
*/
#include <stdio.h>
diff --git a/tools/regression/tmpfs/Makefile b/tools/regression/tmpfs/Makefile
index 49f7b8c8941e..20d56371e17f 100644
--- a/tools/regression/tmpfs/Makefile
+++ b/tools/regression/tmpfs/Makefile
@@ -1,5 +1,4 @@
# $NetBSD: Makefile,v 1.4 2006/11/09 15:25:37 jmmv Exp $
-# $FreeBSD$
tests= t_mount
tests+= t_statvfs
diff --git a/tools/regression/tmpfs/h_funcs.subr b/tools/regression/tmpfs/h_funcs.subr
index 3d6eb4fe1b09..d316176f308a 100644
--- a/tools/regression/tmpfs/h_funcs.subr
+++ b/tools/regression/tmpfs/h_funcs.subr
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/h_tools.c b/tools/regression/tmpfs/h_tools.c
index 6f3b87fc4dfd..4c3ea966db2e 100644
--- a/tools/regression/tmpfs/h_tools.c
+++ b/tools/regression/tmpfs/h_tools.c
@@ -28,8 +28,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/regression/tmpfs/t_create b/tools/regression/tmpfs/t_create
index 1a635829d53e..92119be8e187 100644
--- a/tools/regression/tmpfs/t_create
+++ b/tools/regression/tmpfs/t_create
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_dots b/tools/regression/tmpfs/t_dots
index 6282ad6ae9ad..8cf553418e64 100644
--- a/tools/regression/tmpfs/t_dots
+++ b/tools/regression/tmpfs/t_dots
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_exec b/tools/regression/tmpfs/t_exec
index 95939cd331e3..1b0cdbb735e9 100644
--- a/tools/regression/tmpfs/t_exec
+++ b/tools/regression/tmpfs/t_exec
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_link b/tools/regression/tmpfs/t_link
index 640391c009be..a50b24265294 100644
--- a/tools/regression/tmpfs/t_link
+++ b/tools/regression/tmpfs/t_link
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_mkdir b/tools/regression/tmpfs/t_mkdir
index 5c4b6d44a753..c1e8899df326 100644
--- a/tools/regression/tmpfs/t_mkdir
+++ b/tools/regression/tmpfs/t_mkdir
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_mount b/tools/regression/tmpfs/t_mount
index 318d8927d6bf..cc68458d3d0c 100644
--- a/tools/regression/tmpfs/t_mount
+++ b/tools/regression/tmpfs/t_mount
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_pipes b/tools/regression/tmpfs/t_pipes
index c1a62011fddf..9cda290dde6c 100644
--- a/tools/regression/tmpfs/t_pipes
+++ b/tools/regression/tmpfs/t_pipes
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_read_write b/tools/regression/tmpfs/t_read_write
index d2e997dbec29..82e9c6d74471 100644
--- a/tools/regression/tmpfs/t_read_write
+++ b/tools/regression/tmpfs/t_read_write
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_readdir b/tools/regression/tmpfs/t_readdir
index c6e8d263dcf8..a992cfa23778 100644
--- a/tools/regression/tmpfs/t_readdir
+++ b/tools/regression/tmpfs/t_readdir
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_remove b/tools/regression/tmpfs/t_remove
index e54e1059696a..1946ace4b250 100644
--- a/tools/regression/tmpfs/t_remove
+++ b/tools/regression/tmpfs/t_remove
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_rename b/tools/regression/tmpfs/t_rename
index af81a5c733e4..c534a5ca7d8e 100644
--- a/tools/regression/tmpfs/t_rename
+++ b/tools/regression/tmpfs/t_rename
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_rmdir b/tools/regression/tmpfs/t_rmdir
index 860fdb2409c9..cbc29ad8c4c1 100644
--- a/tools/regression/tmpfs/t_rmdir
+++ b/tools/regression/tmpfs/t_rmdir
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_setattr b/tools/regression/tmpfs/t_setattr
index a25015a25900..5a5942cf4d37 100644
--- a/tools/regression/tmpfs/t_setattr
+++ b/tools/regression/tmpfs/t_setattr
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_sizes b/tools/regression/tmpfs/t_sizes
index 6623ee53feff..d129ef076949 100644
--- a/tools/regression/tmpfs/t_sizes
+++ b/tools/regression/tmpfs/t_sizes
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_sockets b/tools/regression/tmpfs/t_sockets
index 24f9844e9675..9dc23b2252bd 100644
--- a/tools/regression/tmpfs/t_sockets
+++ b/tools/regression/tmpfs/t_sockets
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_statvfs b/tools/regression/tmpfs/t_statvfs
index 98eb80cfaca4..d6fcd987cc17 100644
--- a/tools/regression/tmpfs/t_statvfs
+++ b/tools/regression/tmpfs/t_statvfs
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_symlink b/tools/regression/tmpfs/t_symlink
index 218429de0530..9b706d4c00d0 100644
--- a/tools/regression/tmpfs/t_symlink
+++ b/tools/regression/tmpfs/t_symlink
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_times b/tools/regression/tmpfs/t_times
index 11e2014b6b31..fa5430eb3d23 100644
--- a/tools/regression/tmpfs/t_times
+++ b/tools/regression/tmpfs/t_times
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_trail_slash b/tools/regression/tmpfs/t_trail_slash
index 131beb7cd246..09e5547d1bd2 100644
--- a/tools/regression/tmpfs/t_trail_slash
+++ b/tools/regression/tmpfs/t_trail_slash
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_truncate b/tools/regression/tmpfs/t_truncate
index 74d7e53030cc..71de76c9461a 100644
--- a/tools/regression/tmpfs/t_truncate
+++ b/tools/regression/tmpfs/t_truncate
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_vnd b/tools/regression/tmpfs/t_vnd
index 7065a3d3a1e5..07d6b4887a31 100644
--- a/tools/regression/tmpfs/t_vnd
+++ b/tools/regression/tmpfs/t_vnd
@@ -29,7 +29,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/tmpfs/t_vnode_leak b/tools/regression/tmpfs/t_vnode_leak
index e71a57c102f4..fd0a4a5e88af 100644
--- a/tools/regression/tmpfs/t_vnode_leak
+++ b/tools/regression/tmpfs/t_vnode_leak
@@ -30,7 +30,6 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/regression/ufs/uprintf/Makefile b/tools/regression/ufs/uprintf/Makefile
index a798971f7984..a1de5f3cb9c4 100644
--- a/tools/regression/ufs/uprintf/Makefile
+++ b/tools/regression/ufs/uprintf/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= ufs_uprintf
WARNS?= 3
diff --git a/tools/regression/ufs/uprintf/ufs_uprintf.c b/tools/regression/ufs/uprintf/ufs_uprintf.c
index 17aa71ec0668..4034643fe4c9 100644
--- a/tools/regression/ufs/uprintf/ufs_uprintf.c
+++ b/tools/regression/ufs/uprintf/ufs_uprintf.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <err.h>
diff --git a/tools/regression/usb/usb_enum.t b/tools/regression/usb/usb_enum.t
index fe3e754c0351..2e23f97d9624 100755
--- a/tools/regression/usb/usb_enum.t
+++ b/tools/regression/usb/usb_enum.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
#
# About:
diff --git a/tools/regression/usr.bin/cc/Makefile b/tools/regression/usr.bin/cc/Makefile
index e5b1b90908f1..890875b1abba 100644
--- a/tools/regression/usr.bin/cc/Makefile
+++ b/tools/regression/usr.bin/cc/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
TESTS= float
CFLAGS+=-lm
diff --git a/tools/regression/usr.bin/cc/float.c b/tools/regression/usr.bin/cc/float.c
index 9bdd7d959c16..e08e0f5a6174 100644
--- a/tools/regression/usr.bin/cc/float.c
+++ b/tools/regression/usr.bin/cc/float.c
@@ -29,8 +29,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <fenv.h>
#include <float.h>
#include <math.h>
diff --git a/tools/regression/usr.bin/cc/float.t b/tools/regression/usr.bin/cc/float.t
index 8bdfd03be81b..74eb8c9c581d 100644
--- a/tools/regression/usr.bin/cc/float.t
+++ b/tools/regression/usr.bin/cc/float.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
cd `dirname $0`
diff --git a/tools/regression/usr.bin/env/Makefile b/tools/regression/usr.bin/env/Makefile
index c20fedd56c0b..2a4e6bd61cea 100644
--- a/tools/regression/usr.bin/env/Makefile
+++ b/tools/regression/usr.bin/env/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
TESTPGM?=TestProgramNotSpecifed
diff --git a/tools/regression/usr.bin/env/regress-env.rgdata b/tools/regression/usr.bin/env/regress-env.rgdata
index 90c296e5c604..490ae1c84089 100644
--- a/tools/regression/usr.bin/env/regress-env.rgdata
+++ b/tools/regression/usr.bin/env/regress-env.rgdata
@@ -23,7 +23,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
testpgm=/usr/bin/env
diff --git a/tools/regression/usr.bin/env/regress-sb.rb b/tools/regression/usr.bin/env/regress-sb.rb
index b43ddd3b6aa4..b784dcec3e50 100644
--- a/tools/regression/usr.bin/env/regress-sb.rb
+++ b/tools/regression/usr.bin/env/regress-sb.rb
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
# -------+---------+---------+-------- + --------+---------+---------+---------+
-# $FreeBSD$
# -------+---------+---------+-------- + --------+---------+---------+---------+
# This script was written to provide a battery of regression-tests for some
# changes I am making to the `env' command. I wrote a new script for this
diff --git a/tools/regression/zfs/LICENSE b/tools/regression/zfs/LICENSE
index 45b9cac44ee3..5f030f03ff92 100644
--- a/tools/regression/zfs/LICENSE
+++ b/tools/regression/zfs/LICENSE
@@ -1,4 +1,3 @@
-$FreeBSD$
License for all ZFS regression tests:
diff --git a/tools/regression/zfs/misc.sh b/tools/regression/zfs/misc.sh
index b52481e86e8d..33f1cc3a8eb7 100755
--- a/tools/regression/zfs/misc.sh
+++ b/tools/regression/zfs/misc.sh
@@ -1,4 +1,3 @@
-# $FreeBSD$
ntest=1
os=`uname -s`
diff --git a/tools/regression/zfs/zpool/add/cache.t b/tools/regression/zfs/zpool/add/cache.t
index abaaf41bc4d8..af5e4936341e 100644
--- a/tools/regression/zfs/zpool/add/cache.t
+++ b/tools/regression/zfs/zpool/add/cache.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/add/disks.t b/tools/regression/zfs/zpool/add/disks.t
index e12f5feaefdd..0a1e9658351f 100644
--- a/tools/regression/zfs/zpool/add/disks.t
+++ b/tools/regression/zfs/zpool/add/disks.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/add/doesnt_exist.t b/tools/regression/zfs/zpool/add/doesnt_exist.t
index d099afc255cd..589dd31b4097 100644
--- a/tools/regression/zfs/zpool/add/doesnt_exist.t
+++ b/tools/regression/zfs/zpool/add/doesnt_exist.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/add/files.t b/tools/regression/zfs/zpool/add/files.t
index 59014aafd912..624bb7893069 100644
--- a/tools/regression/zfs/zpool/add/files.t
+++ b/tools/regression/zfs/zpool/add/files.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/add/log.t b/tools/regression/zfs/zpool/add/log.t
index 516ab1b14438..289468801a75 100644
--- a/tools/regression/zfs/zpool/add/log.t
+++ b/tools/regression/zfs/zpool/add/log.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/add/mirror.t b/tools/regression/zfs/zpool/add/mirror.t
index 25ff59ea2034..34a89cff3bf0 100644
--- a/tools/regression/zfs/zpool/add/mirror.t
+++ b/tools/regression/zfs/zpool/add/mirror.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/add/option-f_inuse.t b/tools/regression/zfs/zpool/add/option-f_inuse.t
index 5cc86c31f32e..2d5a7db480dc 100644
--- a/tools/regression/zfs/zpool/add/option-f_inuse.t
+++ b/tools/regression/zfs/zpool/add/option-f_inuse.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/add/option-f_replication_level_mismatch_0.t b/tools/regression/zfs/zpool/add/option-f_replication_level_mismatch_0.t
index 83b0a59559c5..5d3a649b2205 100644
--- a/tools/regression/zfs/zpool/add/option-f_replication_level_mismatch_0.t
+++ b/tools/regression/zfs/zpool/add/option-f_replication_level_mismatch_0.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/add/option-f_replication_level_mismatch_1.t b/tools/regression/zfs/zpool/add/option-f_replication_level_mismatch_1.t
index 6b19b0aa7bbb..97258f2ed770 100644
--- a/tools/regression/zfs/zpool/add/option-f_replication_level_mismatch_1.t
+++ b/tools/regression/zfs/zpool/add/option-f_replication_level_mismatch_1.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/add/option-f_size_mismatch.t b/tools/regression/zfs/zpool/add/option-f_size_mismatch.t
index 79281e522c27..e16258e956aa 100644
--- a/tools/regression/zfs/zpool/add/option-f_size_mismatch.t
+++ b/tools/regression/zfs/zpool/add/option-f_size_mismatch.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/add/option-f_type_mismatch.t b/tools/regression/zfs/zpool/add/option-f_type_mismatch.t
index a79bce98ac35..7187001d2fba 100644
--- a/tools/regression/zfs/zpool/add/option-f_type_mismatch.t
+++ b/tools/regression/zfs/zpool/add/option-f_type_mismatch.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/add/option-n.t b/tools/regression/zfs/zpool/add/option-n.t
index 5f8b5c0b7b65..001a596137f0 100644
--- a/tools/regression/zfs/zpool/add/option-n.t
+++ b/tools/regression/zfs/zpool/add/option-n.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/add/raidz1.t b/tools/regression/zfs/zpool/add/raidz1.t
index cd004a226765..ae986e5b54fc 100644
--- a/tools/regression/zfs/zpool/add/raidz1.t
+++ b/tools/regression/zfs/zpool/add/raidz1.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/add/raidz2.t b/tools/regression/zfs/zpool/add/raidz2.t
index 20fca8a1e693..20a9fb5ae7d1 100644
--- a/tools/regression/zfs/zpool/add/raidz2.t
+++ b/tools/regression/zfs/zpool/add/raidz2.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/add/spare.t b/tools/regression/zfs/zpool/add/spare.t
index 816e385c47f2..ddefd55a0ea7 100644
--- a/tools/regression/zfs/zpool/add/spare.t
+++ b/tools/regression/zfs/zpool/add/spare.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/attach/log.t b/tools/regression/zfs/zpool/attach/log.t
index dde59956f160..8ef6fd972b8a 100644
--- a/tools/regression/zfs/zpool/attach/log.t
+++ b/tools/regression/zfs/zpool/attach/log.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/attach/mirror.t b/tools/regression/zfs/zpool/attach/mirror.t
index ac3fe2d2c91d..ce7b8d57d5f9 100644
--- a/tools/regression/zfs/zpool/attach/mirror.t
+++ b/tools/regression/zfs/zpool/attach/mirror.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/attach/option-f_inuse.t b/tools/regression/zfs/zpool/attach/option-f_inuse.t
index a62d360582b0..f99e196df3e1 100644
--- a/tools/regression/zfs/zpool/attach/option-f_inuse.t
+++ b/tools/regression/zfs/zpool/attach/option-f_inuse.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/already_exists.t b/tools/regression/zfs/zpool/create/already_exists.t
index f3005804073e..7bb098b54de2 100644
--- a/tools/regression/zfs/zpool/create/already_exists.t
+++ b/tools/regression/zfs/zpool/create/already_exists.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/automount.t b/tools/regression/zfs/zpool/create/automount.t
index 175f2abd7963..12fae937c41c 100644
--- a/tools/regression/zfs/zpool/create/automount.t
+++ b/tools/regression/zfs/zpool/create/automount.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/cache.t b/tools/regression/zfs/zpool/create/cache.t
index 13af7f170b8a..b95fccdc6603 100644
--- a/tools/regression/zfs/zpool/create/cache.t
+++ b/tools/regression/zfs/zpool/create/cache.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/disks.t b/tools/regression/zfs/zpool/create/disks.t
index b6b722ce0a41..5b3513484d91 100644
--- a/tools/regression/zfs/zpool/create/disks.t
+++ b/tools/regression/zfs/zpool/create/disks.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/files.t b/tools/regression/zfs/zpool/create/files.t
index 06107b29b141..1a06689173ea 100644
--- a/tools/regression/zfs/zpool/create/files.t
+++ b/tools/regression/zfs/zpool/create/files.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/log.t b/tools/regression/zfs/zpool/create/log.t
index 18105fbc7490..ff09667aa18a 100644
--- a/tools/regression/zfs/zpool/create/log.t
+++ b/tools/regression/zfs/zpool/create/log.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/mirror.t b/tools/regression/zfs/zpool/create/mirror.t
index 49572e8e1fd3..a5b93fad52a5 100644
--- a/tools/regression/zfs/zpool/create/mirror.t
+++ b/tools/regression/zfs/zpool/create/mirror.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/option-R.t b/tools/regression/zfs/zpool/create/option-R.t
index 75182a0eb954..cf20d0f12882 100644
--- a/tools/regression/zfs/zpool/create/option-R.t
+++ b/tools/regression/zfs/zpool/create/option-R.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/option-f_inuse.t b/tools/regression/zfs/zpool/create/option-f_inuse.t
index 344b9c1328d7..b9905fb86b2c 100644
--- a/tools/regression/zfs/zpool/create/option-f_inuse.t
+++ b/tools/regression/zfs/zpool/create/option-f_inuse.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/option-f_replication_level_mismatch_0.t b/tools/regression/zfs/zpool/create/option-f_replication_level_mismatch_0.t
index 27ffede5f471..fcaf7a9c55a6 100644
--- a/tools/regression/zfs/zpool/create/option-f_replication_level_mismatch_0.t
+++ b/tools/regression/zfs/zpool/create/option-f_replication_level_mismatch_0.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/option-f_replication_level_mismatch_1.t b/tools/regression/zfs/zpool/create/option-f_replication_level_mismatch_1.t
index d64db3a76af6..92f4bbc89f89 100644
--- a/tools/regression/zfs/zpool/create/option-f_replication_level_mismatch_1.t
+++ b/tools/regression/zfs/zpool/create/option-f_replication_level_mismatch_1.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/option-f_size_mismatch.t b/tools/regression/zfs/zpool/create/option-f_size_mismatch.t
index 74af3909ef8e..d0fda7af192e 100644
--- a/tools/regression/zfs/zpool/create/option-f_size_mismatch.t
+++ b/tools/regression/zfs/zpool/create/option-f_size_mismatch.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/option-f_type_mismatch.t b/tools/regression/zfs/zpool/create/option-f_type_mismatch.t
index 7739eb807fa1..b0b69d935bd4 100644
--- a/tools/regression/zfs/zpool/create/option-f_type_mismatch.t
+++ b/tools/regression/zfs/zpool/create/option-f_type_mismatch.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/option-m.t b/tools/regression/zfs/zpool/create/option-m.t
index 357959e26849..d5ed832e6f4d 100644
--- a/tools/regression/zfs/zpool/create/option-m.t
+++ b/tools/regression/zfs/zpool/create/option-m.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/option-n.t b/tools/regression/zfs/zpool/create/option-n.t
index 0cb3e7fa5a5f..8fddf383488c 100644
--- a/tools/regression/zfs/zpool/create/option-n.t
+++ b/tools/regression/zfs/zpool/create/option-n.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/option-o.t b/tools/regression/zfs/zpool/create/option-o.t
index 3305323a0e41..6278b37d9134 100644
--- a/tools/regression/zfs/zpool/create/option-o.t
+++ b/tools/regression/zfs/zpool/create/option-o.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/raidz1.t b/tools/regression/zfs/zpool/create/raidz1.t
index 382f7e749b2e..7aa684c23339 100644
--- a/tools/regression/zfs/zpool/create/raidz1.t
+++ b/tools/regression/zfs/zpool/create/raidz1.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/raidz2.t b/tools/regression/zfs/zpool/create/raidz2.t
index 587d3dc3753b..ad6c28b6684c 100644
--- a/tools/regression/zfs/zpool/create/raidz2.t
+++ b/tools/regression/zfs/zpool/create/raidz2.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/create/spare.t b/tools/regression/zfs/zpool/create/spare.t
index 46f47da32516..b87de5856172 100644
--- a/tools/regression/zfs/zpool/create/spare.t
+++ b/tools/regression/zfs/zpool/create/spare.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/offline/io.t b/tools/regression/zfs/zpool/offline/io.t
index 8faeb8a2dde0..d2fe640997dc 100644
--- a/tools/regression/zfs/zpool/offline/io.t
+++ b/tools/regression/zfs/zpool/offline/io.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/offline/log.t b/tools/regression/zfs/zpool/offline/log.t
index 2a741ba4f5f7..f4d8fada03e8 100644
--- a/tools/regression/zfs/zpool/offline/log.t
+++ b/tools/regression/zfs/zpool/offline/log.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/offline/mirror.t b/tools/regression/zfs/zpool/offline/mirror.t
index 37778fcdcc54..2863b9cc2dcf 100644
--- a/tools/regression/zfs/zpool/offline/mirror.t
+++ b/tools/regression/zfs/zpool/offline/mirror.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/offline/option-t.t b/tools/regression/zfs/zpool/offline/option-t.t
index c4087961edc2..652160dc2cff 100644
--- a/tools/regression/zfs/zpool/offline/option-t.t
+++ b/tools/regression/zfs/zpool/offline/option-t.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/offline/raidz1.t b/tools/regression/zfs/zpool/offline/raidz1.t
index d6827cad606b..e377ed07d5c4 100644
--- a/tools/regression/zfs/zpool/offline/raidz1.t
+++ b/tools/regression/zfs/zpool/offline/raidz1.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/offline/raidz2.t b/tools/regression/zfs/zpool/offline/raidz2.t
index 299649d0f7fd..cce59dbd02a2 100644
--- a/tools/regression/zfs/zpool/offline/raidz2.t
+++ b/tools/regression/zfs/zpool/offline/raidz2.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/remove/cache.t b/tools/regression/zfs/zpool/remove/cache.t
index fd55451e274e..af3aa9ade4c1 100644
--- a/tools/regression/zfs/zpool/remove/cache.t
+++ b/tools/regression/zfs/zpool/remove/cache.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/remove/spare.t b/tools/regression/zfs/zpool/remove/spare.t
index c52f220b7fb6..179363b5e192 100644
--- a/tools/regression/zfs/zpool/remove/spare.t
+++ b/tools/regression/zfs/zpool/remove/spare.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/replace/cache.t b/tools/regression/zfs/zpool/replace/cache.t
index 23abc3769191..cd9fec9aeaa2 100644
--- a/tools/regression/zfs/zpool/replace/cache.t
+++ b/tools/regression/zfs/zpool/replace/cache.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/replace/disk.t b/tools/regression/zfs/zpool/replace/disk.t
index 51029e6d8a68..572c5f9694ee 100644
--- a/tools/regression/zfs/zpool/replace/disk.t
+++ b/tools/regression/zfs/zpool/replace/disk.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/replace/log.t b/tools/regression/zfs/zpool/replace/log.t
index 6eed8bdc9926..d1f7b4fd5f75 100644
--- a/tools/regression/zfs/zpool/replace/log.t
+++ b/tools/regression/zfs/zpool/replace/log.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/replace/mirror.t b/tools/regression/zfs/zpool/replace/mirror.t
index 6e9dafead23f..0de1e3330335 100644
--- a/tools/regression/zfs/zpool/replace/mirror.t
+++ b/tools/regression/zfs/zpool/replace/mirror.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/replace/raidz1.t b/tools/regression/zfs/zpool/replace/raidz1.t
index 79bcf8e3060c..6b8467a3fae2 100644
--- a/tools/regression/zfs/zpool/replace/raidz1.t
+++ b/tools/regression/zfs/zpool/replace/raidz1.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/replace/raidz2.t b/tools/regression/zfs/zpool/replace/raidz2.t
index d961e3c32ff3..29bacda5a0e9 100644
--- a/tools/regression/zfs/zpool/replace/raidz2.t
+++ b/tools/regression/zfs/zpool/replace/raidz2.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/regression/zfs/zpool/replace/spare.t b/tools/regression/zfs/zpool/replace/spare.t
index 5899305c6a30..7359d2234f02 100644
--- a/tools/regression/zfs/zpool/replace/spare.t
+++ b/tools/regression/zfs/zpool/replace/spare.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
dir=`dirname $0`
. ${dir}/../../misc.sh
diff --git a/tools/sched/make_ktr.sh b/tools/sched/make_ktr.sh
index 44aff7b37b12..e21df10eeca0 100755
--- a/tools/sched/make_ktr.sh
+++ b/tools/sched/make_ktr.sh
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
if [ "$#" -ne 2 ]
diff --git a/tools/sched/schedgraph.d b/tools/sched/schedgraph.d
index 129c50d25325..9f29d2889f0d 100755
--- a/tools/sched/schedgraph.d
+++ b/tools/sched/schedgraph.d
@@ -24,8 +24,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/sched/schedgraph.py b/tools/sched/schedgraph.py
index 6d8a4b9ada14..00ad1bfec99e 100644
--- a/tools/sched/schedgraph.py
+++ b/tools/sched/schedgraph.py
@@ -24,17 +24,18 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
from __future__ import print_function
import sys
import re
import random
-from Tkinter import *
+from operator import attrgetter, itemgetter
+from functools import total_ordering
+from tkinter import *
# To use:
# - Install the ports/x11-toolkits/py-tkinter package; e.g.
-# portinstall x11-toolkits/py-tkinter package
+# pkg install x11-toolkits/py-tkinter
# - Add KTR_SCHED to KTR_COMPILE and KTR_MASK in your KERNCONF; e.g.
# options KTR
# options KTR_ENTRIES=32768
@@ -55,6 +56,8 @@ from Tkinter import *
# while the workload is still running is to avoid wasting log entries on
# "idle" time at the end.
# - Dump the trace to a file: 'ktrdump -ct > ktr.out'
+# - Alternatively, use schedgraph.d script in this directory for getting
+# the trace data by means of DTrace. See the script for details.
# - Run the python script: 'python schedgraph.py ktr.out' optionally provide
# your cpu frequency in ghz: 'python schedgraph.py ktr.out 2.4'
#
@@ -444,10 +447,6 @@ class SourceConfigure(Toplevel):
for item in self.sconfig:
item.uncheck()
-# Reverse compare of second member of the tuple
-def cmp_counts(x, y):
- return y[1] - x[1]
-
class SourceStats(Toplevel):
def __init__(self, source):
self.source = source
@@ -473,7 +472,7 @@ class SourceStats(Toplevel):
for k, v in eventtypes.iteritems():
(c, d) = v
events.append((k, c, d))
- events.sort(cmp=cmp_counts)
+ events.sort(key=itemgetter(1), reverse=True)
ypos = 0
for event in events:
@@ -793,10 +792,8 @@ class PadEvent(StateEvent):
Event.draw(self, canvas, xpos, ypos, None)
return (xpos + delta)
-# Sort function for start y address
-def source_cmp_start(x, y):
- return x.y - y.y
+@total_ordering
class EventSource:
def __init__(self, group, id):
self.name = id
@@ -808,12 +805,16 @@ class EventSource:
self.hidden = 0
self.tag = group + id
- def __cmp__(self, other):
- if (other == None):
- return -1
- if (self.group == other.group):
- return cmp(self.name, other.name)
- return cmp(self.group, other.group)
+ def __lt__(self, other):
+ if other is None:
+ return False
+ return (self.group < other.group or
+ self.group == other.group and self.name < other.name)
+
+ def __eq__(self, other):
+ if other is None:
+ return False
+ return self.group == other.group and self.name == other.name
# It is much faster to append items to a list then to insert them
# at the beginning. As a result, we add events in reverse order
@@ -1478,7 +1479,7 @@ class SchedGraph(Frame):
# expensive due to python's canvas.move().
#
def sourceshowlist(self, srclist):
- srclist.sort(cmp=source_cmp_start)
+ srclist.sort(key=attrgetter('y'))
startsize = []
for source in srclist:
if (source.hidden == 0):
@@ -1486,7 +1487,7 @@ class SchedGraph(Frame):
startsize.append((self.sourcepicky(source),
self.sourcesize(source)))
- sources.sort(cmp=source_cmp_start, reverse=True)
+ sources.sort(key=attrgetter('y'), reverse=True)
self.status.startup("Updating display...");
for source in sources:
if (source.hidden == 1):
@@ -1516,8 +1517,8 @@ class SchedGraph(Frame):
# expensive due to python's canvas.move().
#
def sourcehidelist(self, srclist):
- srclist.sort(cmp=source_cmp_start)
- sources.sort(cmp=source_cmp_start)
+ srclist.sort(key=attrgetter('y'))
+ sources.sort(key=attrgetter('y'))
startsize = []
off = len(sources) * 100
self.status.startup("Updating display...");
diff --git a/tools/test/README b/tools/test/README
index 5512fd5203ba..a54964621cd8 100644
--- a/tools/test/README
+++ b/tools/test/README
@@ -1,4 +1,3 @@
-$FreeBSD$
This directory is for standalone test programs. For the FreeBSD
Test Suite, which uses Kyua, please see /usr/src/tests/
diff --git a/tools/test/auxinfo/Makefile b/tools/test/auxinfo/Makefile
index f40c81d87652..f848a58f1446 100644
--- a/tools/test/auxinfo/Makefile
+++ b/tools/test/auxinfo/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= auxinfo
MAN=
diff --git a/tools/test/auxinfo/auxinfo.c b/tools/test/auxinfo/auxinfo.c
index a855b543f270..f155777ec121 100644
--- a/tools/test/auxinfo/auxinfo.c
+++ b/tools/test/auxinfo/auxinfo.c
@@ -1,8 +1,6 @@
/*
* This file is in public domain.
* Written by Konstantin Belousov <kib@freebsd.org>
- *
- * $FreeBSD$
*/
#include <sys/mman.h>
diff --git a/tools/test/bsnmp/Makefile b/tools/test/bsnmp/Makefile
index 52f67be70164..47f03ac48a1f 100644
--- a/tools/test/bsnmp/Makefile
+++ b/tools/test/bsnmp/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
CONTRIB=${SRCTOP}/contrib/bsnmp
.PATH: ${CONTRIB}/tests
diff --git a/tools/test/callout_free/Makefile b/tools/test/callout_free/Makefile
index ee17d752b820..cc1583aa7a23 100644
--- a/tools/test/callout_free/Makefile
+++ b/tools/test/callout_free/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
KMOD= callout_free
SRCS= callout_free.c
diff --git a/tools/test/callout_free/callout_free.c b/tools/test/callout_free/callout_free.c
index 4556687e06f6..8a22d0768341 100644
--- a/tools/test/callout_free/callout_free.c
+++ b/tools/test/callout_free/callout_free.c
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/test/devrandom/hammer.random b/tools/test/devrandom/hammer.random
index ea4cb5f64032..f6c823986029 100644
--- a/tools/test/devrandom/hammer.random
+++ b/tools/test/devrandom/hammer.random
@@ -5,7 +5,6 @@
# Read and display random numbers.
# Try tapping shift/alt/ctrl to get more randomness.
#
-# $FreeBSD$
#
for (;;) {
diff --git a/tools/test/devrandom/hammer.urandom b/tools/test/devrandom/hammer.urandom
index d0b6aa89da58..892cd3697492 100644
--- a/tools/test/devrandom/hammer.urandom
+++ b/tools/test/devrandom/hammer.urandom
@@ -5,7 +5,6 @@
# Read and display random numbers.
# This also reads /dev/zero to make sure there is no brokenness there.
#
-# $FreeBSD$
#
open(ZERO, "/dev/zero") || die "Cannot open /dev/zero - $!\n";
diff --git a/tools/test/devrandom/stat.16bit b/tools/test/devrandom/stat.16bit
index 32a6a9caf550..b30b10c81b3f 100644
--- a/tools/test/devrandom/stat.16bit
+++ b/tools/test/devrandom/stat.16bit
@@ -8,7 +8,6 @@
# Redirect the output from this to a file - and go to the movies while
# it runs. This program is a CPU Hog!
#
-# $FreeBSD$
#
for ($i = 0; $i < (1024*64); $i++) {
diff --git a/tools/test/devrandom/stat.8bit b/tools/test/devrandom/stat.8bit
index 03fdbdd5b39d..63cf396bb72d 100644
--- a/tools/test/devrandom/stat.8bit
+++ b/tools/test/devrandom/stat.8bit
@@ -8,7 +8,6 @@
# Redirect the output from this to a file - and make a cup of coffee while
# it runs. This program is a CPU Hog!
#
-# $FreeBSD$
#
for ($i = 0; $i < (1024*32); $i++) {
diff --git a/tools/test/gpioevents/Makefile b/tools/test/gpioevents/Makefile
index 89edfefa87ea..4bc4422ae333 100644
--- a/tools/test/gpioevents/Makefile
+++ b/tools/test/gpioevents/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= gpioevents
SRCS= gpioevents.c
@@ -9,4 +8,6 @@ MK_MAN= no
BINDIR= /usr/bin
+CWARNFLAGS += -Wno-gnu-folding-constant
+
.include <bsd.prog.mk>
diff --git a/tools/test/gpioevents/gpioevents.c b/tools/test/gpioevents/gpioevents.c
index 20d18257f4a8..43bad610cb68 100644
--- a/tools/test/gpioevents/gpioevents.c
+++ b/tools/test/gpioevents/gpioevents.c
@@ -1,5 +1,5 @@
/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ * SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (c) 2018 Christian Kramer
* Copyright (c) 2020 Ian Lepore <ian@FreeBSD.org>
@@ -25,8 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD$
- *
* make LDFLAGS+=-lgpio gpioevents
*/
@@ -63,10 +61,10 @@ sigio_handler(int sig __unused){
}
static void
-usage()
+usage(void)
{
fprintf(stderr, "usage: %s [-f ctldev] [-m method] [-s] [-n] [-S] [-u]"
- "[-t timeout] [-d delay-usec] pin intr-config [pin intr-config ...]\n\n",
+ "[-t timeout] [-d delay-usec] pin intr-config pin-mode [pin intr-config pin-mode ...]\n\n",
getprogname());
fprintf(stderr, " -d delay before each call to read/poll/select/etc\n");
fprintf(stderr, " -n Non-blocking IO\n");
@@ -85,7 +83,11 @@ usage()
fprintf(stderr, " no\t no interrupt\n");
fprintf(stderr, " er\t edge rising\n");
fprintf(stderr, " ef\t edge falling\n");
- fprintf(stderr, " eb\t edge both\n");
+ fprintf(stderr, " eb\t edge both\n\n");
+ fprintf(stderr, "Possible options for pin-mode:\n\n");
+ fprintf(stderr, " ft\t floating\n");
+ fprintf(stderr, " pd\t pull-down\n");
+ fprintf(stderr, " pu\t pull-up\n");
}
static void
@@ -150,7 +152,7 @@ print_poll_events(short event)
}
static void
-calc_utc_offset()
+calc_utc_offset(void)
{
struct timespec monotime, utctime;
@@ -454,7 +456,7 @@ run_sigio(bool loop, int handle, const char *file)
do {
if (sigio == 1) {
sigio = 0;
- printf("%s: recieved SIGIO on %s\n", getprogname(),
+ printf("%s: received SIGIO on %s\n", getprogname(),
file);
run_read(false, handle, file, 0);
}
@@ -539,8 +541,15 @@ main(int argc, char *argv[])
return EXIT_FAILURE;
}
- if (argc % 2 == 1) {
- fprintf(stderr, "%s: Invalid number of pin intr-conf pairs.\n",
+ if (argc == 1) {
+ fprintf(stderr, "%s: No trigger type specified.\n",
+ getprogname());
+ usage();
+ return EXIT_FAILURE;
+ }
+
+ if (argc % 3 != 0) {
+ fprintf(stderr, "%s: Invalid number of (pin intr-conf mode) triplets.\n",
getprogname());
usage();
return EXIT_FAILURE;
@@ -567,7 +576,7 @@ main(int argc, char *argv[])
err(EXIT_FAILURE, "cannot set O_NONBLOCK on %s", file);
}
- for (int i = 0; i <= argc - 2; i += 2) {
+ for (int i = 0; i <= argc - 3; i += 3) {
errno = 0;
pin_config.g_pin = strtol(argv[i], NULL, 10);
@@ -604,7 +613,31 @@ main(int argc, char *argv[])
return EXIT_FAILURE;
}
- pin_config.g_flags |= GPIO_PIN_INPUT | GPIO_PIN_PULLUP;
+ if (strnlen(argv[i + 2], 2) < 2) {
+ fprintf(stderr, "%s: Invalid pin mode (argument "
+ "too short).\n", getprogname());
+ usage();
+ return EXIT_FAILURE;
+ }
+
+ switch((argv[i + 2][0] << 8) + argv[i + 2][1]) {
+ case ('f' << 8) + 't':
+ /* no changes to pin_config */
+ break;
+ case ('p' << 8) + 'd':
+ pin_config.g_flags |= GPIO_PIN_PULLDOWN;
+ break;
+ case ('p' << 8) + 'u':
+ pin_config.g_flags |= GPIO_PIN_PULLUP;
+ break;
+ default:
+ fprintf(stderr, "%s: Invalid pin mode.\n",
+ getprogname());
+ usage();
+ return EXIT_FAILURE;
+ }
+
+ pin_config.g_flags |= GPIO_PIN_INPUT;
res = gpio_pin_set_flags(handle, &pin_config);
if (res < 0)
diff --git a/tools/test/hwpmc/pmctest.py b/tools/test/hwpmc/pmctest.py
index 51f58311a62b..4bd4910b00a9 100755
--- a/tools/test/hwpmc/pmctest.py
+++ b/tools/test/hwpmc/pmctest.py
@@ -33,7 +33,6 @@
#
# Author: George V. Neville-Neil
#
-# $FreeBSD$
# Description: A program to run a simple program against every available
# pmc counter present in a system.
diff --git a/tools/test/iconv/Makefile b/tools/test/iconv/Makefile
index 6f390d4deb4d..5452b20686f9 100644
--- a/tools/test/iconv/Makefile
+++ b/tools/test/iconv/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SUBDIR= tablegen refgen posix gnu
diff --git a/tools/test/iconv/const-gnuism.c b/tools/test/iconv/const-gnuism.c
index fdf130fc215a..957f7e0786c7 100644
--- a/tools/test/iconv/const-gnuism.c
+++ b/tools/test/iconv/const-gnuism.c
@@ -24,9 +24,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <err.h>
diff --git a/tools/test/iconv/gnu/Makefile b/tools/test/iconv/gnu/Makefile
index d52876e3aa18..3feb4845cee9 100644
--- a/tools/test/iconv/gnu/Makefile
+++ b/tools/test/iconv/gnu/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= gnu
MAN=
diff --git a/tools/test/iconv/gnu/gnu.c b/tools/test/iconv/gnu/gnu.c
index ecf180d23b98..1640bdc631fe 100644
--- a/tools/test/iconv/gnu/gnu.c
+++ b/tools/test/iconv/gnu/gnu.c
@@ -25,8 +25,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/endian.h>
#include <sys/types.h>
diff --git a/tools/test/iconv/posix/Makefile b/tools/test/iconv/posix/Makefile
index aafaadebafe7..55c939a32e84 100644
--- a/tools/test/iconv/posix/Makefile
+++ b/tools/test/iconv/posix/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= posix
MAN=
diff --git a/tools/test/iconv/posix/posix.c b/tools/test/iconv/posix/posix.c
index 7faed92416a3..36e662f882f7 100644
--- a/tools/test/iconv/posix/posix.c
+++ b/tools/test/iconv/posix/posix.c
@@ -24,11 +24,8 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
+#include <sys/param.h>
#include <sys/endian.h>
-#include <sys/types.h>
#include <err.h>
#include <errno.h>
@@ -66,18 +63,22 @@ static int
open_2(void)
{
iconv_t cd[MAX_LIMIT];
- int i, ret;
+ size_t i;
+ int ret;
errno = 0;
+ ret = 1;
for (i = 0; i < MAX_LIMIT; i++) {
cd[i] = iconv_open("ASCII", "UTF8");
- if (cd[i] == (iconv_t)-1)
+ if (cd[i] == (iconv_t)-1) {
+ if (errno == ENFILE || errno == EMFILE)
+ ret = 0;
+ cd[i] = NULL;
break;
+ }
}
- ret = (cd[i] == (iconv_t)-1) && ((errno == ENFILE) ||
- (errno == EMFILE)) ? 0 : 1;
- for (; i > 0; i--)
+ for (i = MIN(i, nitems(cd) - 1); i > 0; i--)
iconv_close(cd[i]);
return (ret);
}
diff --git a/tools/test/iconv/ref/ARMSCII-8 b/tools/test/iconv/ref/ARMSCII-8
index fd9c484df2a7..7e492cae00e5 100644
--- a/tools/test/iconv/ref/ARMSCII-8
+++ b/tools/test/iconv/ref/ARMSCII-8
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ARMSCII-8-rev b/tools/test/iconv/ref/ARMSCII-8-rev
index c9d066dfe41c..e84930931237 100644
--- a/tools/test/iconv/ref/ARMSCII-8-rev
+++ b/tools/test/iconv/ref/ARMSCII-8-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ASCII b/tools/test/iconv/ref/ASCII
index a662b865d087..b6ed8fce32cd 100644
--- a/tools/test/iconv/ref/ASCII
+++ b/tools/test/iconv/ref/ASCII
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ASCII-rev b/tools/test/iconv/ref/ASCII-rev
index 48ad5796743c..2dcb854dc624 100644
--- a/tools/test/iconv/ref/ASCII-rev
+++ b/tools/test/iconv/ref/ASCII-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ATARIST b/tools/test/iconv/ref/ATARIST
index 260578ffdb94..13f6397a4407 100644
--- a/tools/test/iconv/ref/ATARIST
+++ b/tools/test/iconv/ref/ATARIST
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ATARIST-rev b/tools/test/iconv/ref/ATARIST-rev
index fa68aa8ce1cc..01a49cb2317d 100644
--- a/tools/test/iconv/ref/ATARIST-rev
+++ b/tools/test/iconv/ref/ATARIST-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/BIG5 b/tools/test/iconv/ref/BIG5
index ac272eb21707..08c5ab03ee53 100644
--- a/tools/test/iconv/ref/BIG5
+++ b/tools/test/iconv/ref/BIG5
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/BIG5-2003 b/tools/test/iconv/ref/BIG5-2003
index 82621cd08ab9..68d00d395971 100644
--- a/tools/test/iconv/ref/BIG5-2003
+++ b/tools/test/iconv/ref/BIG5-2003
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/BIG5-2003-rev b/tools/test/iconv/ref/BIG5-2003-rev
index 08f73f9208f5..3f8a103855e7 100644
--- a/tools/test/iconv/ref/BIG5-2003-rev
+++ b/tools/test/iconv/ref/BIG5-2003-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/BIG5-HKSCS b/tools/test/iconv/ref/BIG5-HKSCS
index 99ff08bd28a5..931b1206ce03 100644
--- a/tools/test/iconv/ref/BIG5-HKSCS
+++ b/tools/test/iconv/ref/BIG5-HKSCS
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/BIG5-HKSCS-rev b/tools/test/iconv/ref/BIG5-HKSCS-rev
index 68d825aa41d9..d22cc99357b0 100644
--- a/tools/test/iconv/ref/BIG5-HKSCS-rev
+++ b/tools/test/iconv/ref/BIG5-HKSCS-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/BIG5-rev b/tools/test/iconv/ref/BIG5-rev
index f41d13b2a73d..02491de94687 100644
--- a/tools/test/iconv/ref/BIG5-rev
+++ b/tools/test/iconv/ref/BIG5-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/BIG5HKSCS b/tools/test/iconv/ref/BIG5HKSCS
index 688b0c8e734b..0cf43c4610de 100644
--- a/tools/test/iconv/ref/BIG5HKSCS
+++ b/tools/test/iconv/ref/BIG5HKSCS
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00000000
0x01 = 0x00000001
0x02 = 0x00000002
diff --git a/tools/test/iconv/ref/BIG5HKSCS-rev b/tools/test/iconv/ref/BIG5HKSCS-rev
index 7ba58d96b3df..172c866072b2 100644
--- a/tools/test/iconv/ref/BIG5HKSCS-rev
+++ b/tools/test/iconv/ref/BIG5HKSCS-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00
0x01 = 0x01
0x02 = 0x02
diff --git a/tools/test/iconv/ref/C99 b/tools/test/iconv/ref/C99
index ebb056a7ced7..5e846e73784f 100644
--- a/tools/test/iconv/ref/C99
+++ b/tools/test/iconv/ref/C99
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/C99-rev b/tools/test/iconv/ref/C99-rev
index e1f1b9bab983..327aa9097cf9 100644
--- a/tools/test/iconv/ref/C99-rev
+++ b/tools/test/iconv/ref/C99-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1046 b/tools/test/iconv/ref/CP1046
index c4f1772a0f94..cfe69aa77d8d 100644
--- a/tools/test/iconv/ref/CP1046
+++ b/tools/test/iconv/ref/CP1046
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1046-rev b/tools/test/iconv/ref/CP1046-rev
index 68161434b9f0..5729410e2511 100644
--- a/tools/test/iconv/ref/CP1046-rev
+++ b/tools/test/iconv/ref/CP1046-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1124 b/tools/test/iconv/ref/CP1124
index 6df07a9391ac..c5d2ceab54a4 100644
--- a/tools/test/iconv/ref/CP1124
+++ b/tools/test/iconv/ref/CP1124
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1124-rev b/tools/test/iconv/ref/CP1124-rev
index 6023d6e52b2d..368fb7e6c537 100644
--- a/tools/test/iconv/ref/CP1124-rev
+++ b/tools/test/iconv/ref/CP1124-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1125 b/tools/test/iconv/ref/CP1125
index 1f28652fa7eb..c62a784f3958 100644
--- a/tools/test/iconv/ref/CP1125
+++ b/tools/test/iconv/ref/CP1125
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1125-rev b/tools/test/iconv/ref/CP1125-rev
index ca927423ef39..49814be21b8d 100644
--- a/tools/test/iconv/ref/CP1125-rev
+++ b/tools/test/iconv/ref/CP1125-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1129 b/tools/test/iconv/ref/CP1129
index 67deb59f0392..52f14141ff46 100644
--- a/tools/test/iconv/ref/CP1129
+++ b/tools/test/iconv/ref/CP1129
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1129-rev b/tools/test/iconv/ref/CP1129-rev
index 82b9db792893..e10727c0892d 100644
--- a/tools/test/iconv/ref/CP1129-rev
+++ b/tools/test/iconv/ref/CP1129-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1131 b/tools/test/iconv/ref/CP1131
index a8e2b9f7d7f5..86226a298431 100644
--- a/tools/test/iconv/ref/CP1131
+++ b/tools/test/iconv/ref/CP1131
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1131-rev b/tools/test/iconv/ref/CP1131-rev
index 9e7c3dd88898..ba0ca711e51d 100644
--- a/tools/test/iconv/ref/CP1131-rev
+++ b/tools/test/iconv/ref/CP1131-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1133 b/tools/test/iconv/ref/CP1133
index 1cd2eb4ec42d..7f56a34e54be 100644
--- a/tools/test/iconv/ref/CP1133
+++ b/tools/test/iconv/ref/CP1133
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1133-rev b/tools/test/iconv/ref/CP1133-rev
index 72fd143b91a4..6f72ba75c335 100644
--- a/tools/test/iconv/ref/CP1133-rev
+++ b/tools/test/iconv/ref/CP1133-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1161 b/tools/test/iconv/ref/CP1161
index 423effdc2312..433cc494bc9e 100644
--- a/tools/test/iconv/ref/CP1161
+++ b/tools/test/iconv/ref/CP1161
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1161-rev b/tools/test/iconv/ref/CP1161-rev
index d2514a685012..7485aba47759 100644
--- a/tools/test/iconv/ref/CP1161-rev
+++ b/tools/test/iconv/ref/CP1161-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1162 b/tools/test/iconv/ref/CP1162
index f2b8c32653d0..a2fed926b341 100644
--- a/tools/test/iconv/ref/CP1162
+++ b/tools/test/iconv/ref/CP1162
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1162-rev b/tools/test/iconv/ref/CP1162-rev
index a85544f945c7..85b189e53cba 100644
--- a/tools/test/iconv/ref/CP1162-rev
+++ b/tools/test/iconv/ref/CP1162-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1163 b/tools/test/iconv/ref/CP1163
index 9e1e76baf16b..4c42c4d3f8f0 100644
--- a/tools/test/iconv/ref/CP1163
+++ b/tools/test/iconv/ref/CP1163
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1163-rev b/tools/test/iconv/ref/CP1163-rev
index 6a38fd206acf..4a408d1e2ac6 100644
--- a/tools/test/iconv/ref/CP1163-rev
+++ b/tools/test/iconv/ref/CP1163-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1250 b/tools/test/iconv/ref/CP1250
index 67d9c75a6702..d712c57bd9a7 100644
--- a/tools/test/iconv/ref/CP1250
+++ b/tools/test/iconv/ref/CP1250
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1250-rev b/tools/test/iconv/ref/CP1250-rev
index 15e812a1ad89..299cf9ff48eb 100644
--- a/tools/test/iconv/ref/CP1250-rev
+++ b/tools/test/iconv/ref/CP1250-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1251 b/tools/test/iconv/ref/CP1251
index d171fdd847be..1934ee8981f7 100644
--- a/tools/test/iconv/ref/CP1251
+++ b/tools/test/iconv/ref/CP1251
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1251-rev b/tools/test/iconv/ref/CP1251-rev
index 97050b37b76e..99ae6ff8d11f 100644
--- a/tools/test/iconv/ref/CP1251-rev
+++ b/tools/test/iconv/ref/CP1251-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1252 b/tools/test/iconv/ref/CP1252
index 4096a1d1a42a..af800dc86b8e 100644
--- a/tools/test/iconv/ref/CP1252
+++ b/tools/test/iconv/ref/CP1252
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1252-rev b/tools/test/iconv/ref/CP1252-rev
index 1fb9195bf721..f1f5643d11f0 100644
--- a/tools/test/iconv/ref/CP1252-rev
+++ b/tools/test/iconv/ref/CP1252-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1253 b/tools/test/iconv/ref/CP1253
index 03b740a22f91..492a0b10e99f 100644
--- a/tools/test/iconv/ref/CP1253
+++ b/tools/test/iconv/ref/CP1253
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1253-rev b/tools/test/iconv/ref/CP1253-rev
index 668a59ae7959..d4e82f50df53 100644
--- a/tools/test/iconv/ref/CP1253-rev
+++ b/tools/test/iconv/ref/CP1253-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1254 b/tools/test/iconv/ref/CP1254
index c28e20bcde1a..18b4bb1ccaff 100644
--- a/tools/test/iconv/ref/CP1254
+++ b/tools/test/iconv/ref/CP1254
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1254-rev b/tools/test/iconv/ref/CP1254-rev
index 815b99edbf07..c28b451bdbc3 100644
--- a/tools/test/iconv/ref/CP1254-rev
+++ b/tools/test/iconv/ref/CP1254-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1255 b/tools/test/iconv/ref/CP1255
index d1dff480d404..4e74635600fc 100644
--- a/tools/test/iconv/ref/CP1255
+++ b/tools/test/iconv/ref/CP1255
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1255-rev b/tools/test/iconv/ref/CP1255-rev
index ed393f569313..2abbf20878f7 100644
--- a/tools/test/iconv/ref/CP1255-rev
+++ b/tools/test/iconv/ref/CP1255-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1256 b/tools/test/iconv/ref/CP1256
index 5b74e2ef9573..c32203702635 100644
--- a/tools/test/iconv/ref/CP1256
+++ b/tools/test/iconv/ref/CP1256
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1256-rev b/tools/test/iconv/ref/CP1256-rev
index 95c2e0a1f972..3716a30f3e69 100644
--- a/tools/test/iconv/ref/CP1256-rev
+++ b/tools/test/iconv/ref/CP1256-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1257 b/tools/test/iconv/ref/CP1257
index 1626de0a7985..fdddd3bc2889 100644
--- a/tools/test/iconv/ref/CP1257
+++ b/tools/test/iconv/ref/CP1257
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1257-rev b/tools/test/iconv/ref/CP1257-rev
index b458c9e095b5..cbeab3f0c43c 100644
--- a/tools/test/iconv/ref/CP1257-rev
+++ b/tools/test/iconv/ref/CP1257-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1258 b/tools/test/iconv/ref/CP1258
index 6230428c815f..76ce8b78890a 100644
--- a/tools/test/iconv/ref/CP1258
+++ b/tools/test/iconv/ref/CP1258
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP1258-rev b/tools/test/iconv/ref/CP1258-rev
index 143212b02cbd..fe44a2c28733 100644
--- a/tools/test/iconv/ref/CP1258-rev
+++ b/tools/test/iconv/ref/CP1258-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP437 b/tools/test/iconv/ref/CP437
index 277f1096352f..e5a5de4c2320 100644
--- a/tools/test/iconv/ref/CP437
+++ b/tools/test/iconv/ref/CP437
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP437-rev b/tools/test/iconv/ref/CP437-rev
index 219623833ba1..73a1fec7fac0 100644
--- a/tools/test/iconv/ref/CP437-rev
+++ b/tools/test/iconv/ref/CP437-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP737 b/tools/test/iconv/ref/CP737
index 3b78c1b44e0b..f61c661e4be2 100644
--- a/tools/test/iconv/ref/CP737
+++ b/tools/test/iconv/ref/CP737
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP737-rev b/tools/test/iconv/ref/CP737-rev
index c498414d1aa6..8f4066986909 100644
--- a/tools/test/iconv/ref/CP737-rev
+++ b/tools/test/iconv/ref/CP737-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP775 b/tools/test/iconv/ref/CP775
index 1521bfb51671..accb2b16b85e 100644
--- a/tools/test/iconv/ref/CP775
+++ b/tools/test/iconv/ref/CP775
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP775-rev b/tools/test/iconv/ref/CP775-rev
index 1aa7ae2e3e6d..794580be7aba 100644
--- a/tools/test/iconv/ref/CP775-rev
+++ b/tools/test/iconv/ref/CP775-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP850 b/tools/test/iconv/ref/CP850
index 06843d1fb55e..e7f36597f691 100644
--- a/tools/test/iconv/ref/CP850
+++ b/tools/test/iconv/ref/CP850
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP850-rev b/tools/test/iconv/ref/CP850-rev
index b30db6aaf275..dd7d564892d4 100644
--- a/tools/test/iconv/ref/CP850-rev
+++ b/tools/test/iconv/ref/CP850-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP852 b/tools/test/iconv/ref/CP852
index 7ce9895ea2c3..14c6c3818c21 100644
--- a/tools/test/iconv/ref/CP852
+++ b/tools/test/iconv/ref/CP852
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP852-rev b/tools/test/iconv/ref/CP852-rev
index 75ea141d9896..df8d6eb09bdd 100644
--- a/tools/test/iconv/ref/CP852-rev
+++ b/tools/test/iconv/ref/CP852-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP853 b/tools/test/iconv/ref/CP853
index 218469bde9d4..31c276750768 100644
--- a/tools/test/iconv/ref/CP853
+++ b/tools/test/iconv/ref/CP853
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP853-rev b/tools/test/iconv/ref/CP853-rev
index 1387a2a42855..13e83a8c4646 100644
--- a/tools/test/iconv/ref/CP853-rev
+++ b/tools/test/iconv/ref/CP853-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP855 b/tools/test/iconv/ref/CP855
index f7b976e5fb59..f6084c7b4bb5 100644
--- a/tools/test/iconv/ref/CP855
+++ b/tools/test/iconv/ref/CP855
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP855-rev b/tools/test/iconv/ref/CP855-rev
index fd4c48393e1f..11ae795fbdb8 100644
--- a/tools/test/iconv/ref/CP855-rev
+++ b/tools/test/iconv/ref/CP855-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP856 b/tools/test/iconv/ref/CP856
index d5c8841e71c2..cd9bf9244082 100644
--- a/tools/test/iconv/ref/CP856
+++ b/tools/test/iconv/ref/CP856
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP856-rev b/tools/test/iconv/ref/CP856-rev
index c7be5238a09c..a4079c307d35 100644
--- a/tools/test/iconv/ref/CP856-rev
+++ b/tools/test/iconv/ref/CP856-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP857 b/tools/test/iconv/ref/CP857
index 863504dbbf01..e7d188889441 100644
--- a/tools/test/iconv/ref/CP857
+++ b/tools/test/iconv/ref/CP857
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP857-rev b/tools/test/iconv/ref/CP857-rev
index 6691da5bd66b..67157d578fa8 100644
--- a/tools/test/iconv/ref/CP857-rev
+++ b/tools/test/iconv/ref/CP857-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP858 b/tools/test/iconv/ref/CP858
index b2a76ac44c59..024c9793de03 100644
--- a/tools/test/iconv/ref/CP858
+++ b/tools/test/iconv/ref/CP858
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP858-rev b/tools/test/iconv/ref/CP858-rev
index 6ec7fb3ce7a3..d9ffd1c1acf6 100644
--- a/tools/test/iconv/ref/CP858-rev
+++ b/tools/test/iconv/ref/CP858-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP860 b/tools/test/iconv/ref/CP860
index b9fc527fb033..157d999e07a3 100644
--- a/tools/test/iconv/ref/CP860
+++ b/tools/test/iconv/ref/CP860
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP860-rev b/tools/test/iconv/ref/CP860-rev
index 54584faf60f3..3ddd4f591c1a 100644
--- a/tools/test/iconv/ref/CP860-rev
+++ b/tools/test/iconv/ref/CP860-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP861 b/tools/test/iconv/ref/CP861
index 5581fbe6f687..bfde74aa6a63 100644
--- a/tools/test/iconv/ref/CP861
+++ b/tools/test/iconv/ref/CP861
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP861-rev b/tools/test/iconv/ref/CP861-rev
index d0ef1c0ddf11..2ba1d1ddfff2 100644
--- a/tools/test/iconv/ref/CP861-rev
+++ b/tools/test/iconv/ref/CP861-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP862 b/tools/test/iconv/ref/CP862
index 272055e0879e..61f965d313c9 100644
--- a/tools/test/iconv/ref/CP862
+++ b/tools/test/iconv/ref/CP862
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP862-rev b/tools/test/iconv/ref/CP862-rev
index 02ff78fd188d..9adf72afdd03 100644
--- a/tools/test/iconv/ref/CP862-rev
+++ b/tools/test/iconv/ref/CP862-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP863 b/tools/test/iconv/ref/CP863
index 988b9f73f68d..763a24ad1a95 100644
--- a/tools/test/iconv/ref/CP863
+++ b/tools/test/iconv/ref/CP863
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP863-rev b/tools/test/iconv/ref/CP863-rev
index 7966aa7dc6c1..417cefad85cf 100644
--- a/tools/test/iconv/ref/CP863-rev
+++ b/tools/test/iconv/ref/CP863-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP864 b/tools/test/iconv/ref/CP864
index 9f1f00881a84..dc1a9489072e 100644
--- a/tools/test/iconv/ref/CP864
+++ b/tools/test/iconv/ref/CP864
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP864-rev b/tools/test/iconv/ref/CP864-rev
index 7ffb33278274..448f5d5f6d5d 100644
--- a/tools/test/iconv/ref/CP864-rev
+++ b/tools/test/iconv/ref/CP864-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP865 b/tools/test/iconv/ref/CP865
index fa11e3a189bb..d483b4207b8a 100644
--- a/tools/test/iconv/ref/CP865
+++ b/tools/test/iconv/ref/CP865
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP865-rev b/tools/test/iconv/ref/CP865-rev
index 28539bdf1e5f..25dea226dc68 100644
--- a/tools/test/iconv/ref/CP865-rev
+++ b/tools/test/iconv/ref/CP865-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP866 b/tools/test/iconv/ref/CP866
index 7d533a93c968..b54ca02264c1 100644
--- a/tools/test/iconv/ref/CP866
+++ b/tools/test/iconv/ref/CP866
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP866-rev b/tools/test/iconv/ref/CP866-rev
index d56f2af5acf3..06defed08d4a 100644
--- a/tools/test/iconv/ref/CP866-rev
+++ b/tools/test/iconv/ref/CP866-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP869 b/tools/test/iconv/ref/CP869
index 2f5718e86dda..a40e4646cc43 100644
--- a/tools/test/iconv/ref/CP869
+++ b/tools/test/iconv/ref/CP869
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP869-rev b/tools/test/iconv/ref/CP869-rev
index 964d3e6fe661..a8d4c9bcf65b 100644
--- a/tools/test/iconv/ref/CP869-rev
+++ b/tools/test/iconv/ref/CP869-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP874 b/tools/test/iconv/ref/CP874
index 15f889e7c793..97448659c9be 100644
--- a/tools/test/iconv/ref/CP874
+++ b/tools/test/iconv/ref/CP874
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP874-rev b/tools/test/iconv/ref/CP874-rev
index abc65cdfdaf9..9509d30f5c69 100644
--- a/tools/test/iconv/ref/CP874-rev
+++ b/tools/test/iconv/ref/CP874-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP922 b/tools/test/iconv/ref/CP922
index 6561ddce12a6..b80f4d5df5fc 100644
--- a/tools/test/iconv/ref/CP922
+++ b/tools/test/iconv/ref/CP922
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP922-rev b/tools/test/iconv/ref/CP922-rev
index fd8b16c05f4c..8e844e0d2e00 100644
--- a/tools/test/iconv/ref/CP922-rev
+++ b/tools/test/iconv/ref/CP922-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP932 b/tools/test/iconv/ref/CP932
index 95bc393e4082..6db1bdde5f16 100644
--- a/tools/test/iconv/ref/CP932
+++ b/tools/test/iconv/ref/CP932
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP932-rev b/tools/test/iconv/ref/CP932-rev
index 888a7c298789..ba9918fb2c49 100644
--- a/tools/test/iconv/ref/CP932-rev
+++ b/tools/test/iconv/ref/CP932-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP936 b/tools/test/iconv/ref/CP936
index a64cbcf03b6b..4e2e4a2b7642 100644
--- a/tools/test/iconv/ref/CP936
+++ b/tools/test/iconv/ref/CP936
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP936-rev b/tools/test/iconv/ref/CP936-rev
index abb97a2e8dcb..89b4128d21b8 100644
--- a/tools/test/iconv/ref/CP936-rev
+++ b/tools/test/iconv/ref/CP936-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP943 b/tools/test/iconv/ref/CP943
index 95bc393e4082..6db1bdde5f16 100644
--- a/tools/test/iconv/ref/CP943
+++ b/tools/test/iconv/ref/CP943
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP943-rev b/tools/test/iconv/ref/CP943-rev
index 888a7c298789..ba9918fb2c49 100644
--- a/tools/test/iconv/ref/CP943-rev
+++ b/tools/test/iconv/ref/CP943-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP949 b/tools/test/iconv/ref/CP949
index 3ce0bffd06ae..02af49f67431 100644
--- a/tools/test/iconv/ref/CP949
+++ b/tools/test/iconv/ref/CP949
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP949-rev b/tools/test/iconv/ref/CP949-rev
index 8def35fd3e36..c0608a781d30 100644
--- a/tools/test/iconv/ref/CP949-rev
+++ b/tools/test/iconv/ref/CP949-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP950 b/tools/test/iconv/ref/CP950
index 6ad866030e23..0f25fe04ddb0 100644
--- a/tools/test/iconv/ref/CP950
+++ b/tools/test/iconv/ref/CP950
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/CP950-rev b/tools/test/iconv/ref/CP950-rev
index eb9d674e70d5..c869fff18b07 100644
--- a/tools/test/iconv/ref/CP950-rev
+++ b/tools/test/iconv/ref/CP950-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/DEC-HANYU b/tools/test/iconv/ref/DEC-HANYU
index 6f077bc5fe3c..5def52a5ecae 100644
--- a/tools/test/iconv/ref/DEC-HANYU
+++ b/tools/test/iconv/ref/DEC-HANYU
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/DEC-HANYU-rev b/tools/test/iconv/ref/DEC-HANYU-rev
index 55e8ab89db1f..c0e23cc2e408 100644
--- a/tools/test/iconv/ref/DEC-HANYU-rev
+++ b/tools/test/iconv/ref/DEC-HANYU-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/EUC-CN b/tools/test/iconv/ref/EUC-CN
index acda0fe71996..c9f14c0fa14c 100644
--- a/tools/test/iconv/ref/EUC-CN
+++ b/tools/test/iconv/ref/EUC-CN
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/EUC-CN-rev b/tools/test/iconv/ref/EUC-CN-rev
index fbd76d71e6ca..b256c26f770b 100644
--- a/tools/test/iconv/ref/EUC-CN-rev
+++ b/tools/test/iconv/ref/EUC-CN-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/EUC-JIS-2004 b/tools/test/iconv/ref/EUC-JIS-2004
index 818cfe76c6ae..ac0880226782 100644
--- a/tools/test/iconv/ref/EUC-JIS-2004
+++ b/tools/test/iconv/ref/EUC-JIS-2004
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/EUC-JIS-2004-rev b/tools/test/iconv/ref/EUC-JIS-2004-rev
index 31ad7b6842a0..ca13e39667bb 100644
--- a/tools/test/iconv/ref/EUC-JIS-2004-rev
+++ b/tools/test/iconv/ref/EUC-JIS-2004-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/EUC-JP b/tools/test/iconv/ref/EUC-JP
index 1964a574f635..45d1b76c86bf 100644
--- a/tools/test/iconv/ref/EUC-JP
+++ b/tools/test/iconv/ref/EUC-JP
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/EUC-JP-rev b/tools/test/iconv/ref/EUC-JP-rev
index 6a459d01b5c3..d0ec07d20823 100644
--- a/tools/test/iconv/ref/EUC-JP-rev
+++ b/tools/test/iconv/ref/EUC-JP-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/EUC-KR b/tools/test/iconv/ref/EUC-KR
index 4bcfb5de5f36..f70a7409fe9e 100644
--- a/tools/test/iconv/ref/EUC-KR
+++ b/tools/test/iconv/ref/EUC-KR
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/EUC-KR-rev b/tools/test/iconv/ref/EUC-KR-rev
index d723e22fb425..f73289e4af91 100644
--- a/tools/test/iconv/ref/EUC-KR-rev
+++ b/tools/test/iconv/ref/EUC-KR-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/EUC-TW b/tools/test/iconv/ref/EUC-TW
index f763bba7d268..429de556d0ad 100644
--- a/tools/test/iconv/ref/EUC-TW
+++ b/tools/test/iconv/ref/EUC-TW
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/EUC-TW-rev b/tools/test/iconv/ref/EUC-TW-rev
index 5f41059b27d4..5f7eb9c56384 100644
--- a/tools/test/iconv/ref/EUC-TW-rev
+++ b/tools/test/iconv/ref/EUC-TW-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/GB18030 b/tools/test/iconv/ref/GB18030
index a84793f2aed5..66dc913f8dd0 100644
--- a/tools/test/iconv/ref/GB18030
+++ b/tools/test/iconv/ref/GB18030
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/GB18030-rev b/tools/test/iconv/ref/GB18030-rev
index 127c469cd91a..75612431535d 100644
--- a/tools/test/iconv/ref/GB18030-rev
+++ b/tools/test/iconv/ref/GB18030-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/GB2312 b/tools/test/iconv/ref/GB2312
index acda0fe71996..c9f14c0fa14c 100644
--- a/tools/test/iconv/ref/GB2312
+++ b/tools/test/iconv/ref/GB2312
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/GB2312-rev b/tools/test/iconv/ref/GB2312-rev
index fbd76d71e6ca..b256c26f770b 100644
--- a/tools/test/iconv/ref/GB2312-rev
+++ b/tools/test/iconv/ref/GB2312-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/GBK b/tools/test/iconv/ref/GBK
index 6ecb254bb565..b7f6a13c960f 100644
--- a/tools/test/iconv/ref/GBK
+++ b/tools/test/iconv/ref/GBK
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/GBK-rev b/tools/test/iconv/ref/GBK-rev
index 95841e350c23..662ac14e773c 100644
--- a/tools/test/iconv/ref/GBK-rev
+++ b/tools/test/iconv/ref/GBK-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/GEORGIAN-ACADEMY b/tools/test/iconv/ref/GEORGIAN-ACADEMY
index f7b6ccd2f27a..28bdfab3d486 100644
--- a/tools/test/iconv/ref/GEORGIAN-ACADEMY
+++ b/tools/test/iconv/ref/GEORGIAN-ACADEMY
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/GEORGIAN-ACADEMY-rev b/tools/test/iconv/ref/GEORGIAN-ACADEMY-rev
index 50d3e6d6e0c2..15a53fb35bc4 100644
--- a/tools/test/iconv/ref/GEORGIAN-ACADEMY-rev
+++ b/tools/test/iconv/ref/GEORGIAN-ACADEMY-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/GEORGIAN-PS b/tools/test/iconv/ref/GEORGIAN-PS
index 79ccf40fe774..7da1b4c2920c 100644
--- a/tools/test/iconv/ref/GEORGIAN-PS
+++ b/tools/test/iconv/ref/GEORGIAN-PS
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/GEORGIAN-PS-rev b/tools/test/iconv/ref/GEORGIAN-PS-rev
index 9751937f7fa5..a5a6780e2553 100644
--- a/tools/test/iconv/ref/GEORGIAN-PS-rev
+++ b/tools/test/iconv/ref/GEORGIAN-PS-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/HP-ROMAN8 b/tools/test/iconv/ref/HP-ROMAN8
index afd105294f17..6ba10479e305 100644
--- a/tools/test/iconv/ref/HP-ROMAN8
+++ b/tools/test/iconv/ref/HP-ROMAN8
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/HP-ROMAN8-rev b/tools/test/iconv/ref/HP-ROMAN8-rev
index d80abadc9706..7a1b7d5f99ac 100644
--- a/tools/test/iconv/ref/HP-ROMAN8-rev
+++ b/tools/test/iconv/ref/HP-ROMAN8-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/HZ b/tools/test/iconv/ref/HZ
index 48bc0e47ecb1..41f47bc1d911 100644
--- a/tools/test/iconv/ref/HZ
+++ b/tools/test/iconv/ref/HZ
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/HZ-rev b/tools/test/iconv/ref/HZ-rev
index a0d2e59f7821..f691e8a12760 100644
--- a/tools/test/iconv/ref/HZ-rev
+++ b/tools/test/iconv/ref/HZ-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO-2022-CN b/tools/test/iconv/ref/ISO-2022-CN
index 74d743efe3a7..ded2adbc83c3 100644
--- a/tools/test/iconv/ref/ISO-2022-CN
+++ b/tools/test/iconv/ref/ISO-2022-CN
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO-2022-CN-EXT b/tools/test/iconv/ref/ISO-2022-CN-EXT
index 74d743efe3a7..ded2adbc83c3 100644
--- a/tools/test/iconv/ref/ISO-2022-CN-EXT
+++ b/tools/test/iconv/ref/ISO-2022-CN-EXT
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO-2022-CN-EXT-rev b/tools/test/iconv/ref/ISO-2022-CN-EXT-rev
index 75c7e9c786bd..221b4fc2045e 100644
--- a/tools/test/iconv/ref/ISO-2022-CN-EXT-rev
+++ b/tools/test/iconv/ref/ISO-2022-CN-EXT-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO-2022-CN-rev b/tools/test/iconv/ref/ISO-2022-CN-rev
index e9b740e6d05c..eb7220e3d211 100644
--- a/tools/test/iconv/ref/ISO-2022-CN-rev
+++ b/tools/test/iconv/ref/ISO-2022-CN-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO-2022-JP b/tools/test/iconv/ref/ISO-2022-JP
index 03097d6e40e6..7f659bdceb61 100644
--- a/tools/test/iconv/ref/ISO-2022-JP
+++ b/tools/test/iconv/ref/ISO-2022-JP
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO-2022-JP-1 b/tools/test/iconv/ref/ISO-2022-JP-1
index 03097d6e40e6..7f659bdceb61 100644
--- a/tools/test/iconv/ref/ISO-2022-JP-1
+++ b/tools/test/iconv/ref/ISO-2022-JP-1
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO-2022-JP-1-rev b/tools/test/iconv/ref/ISO-2022-JP-1-rev
index 94ce0cf08aa1..e22640a1ec5f 100644
--- a/tools/test/iconv/ref/ISO-2022-JP-1-rev
+++ b/tools/test/iconv/ref/ISO-2022-JP-1-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO-2022-JP-2 b/tools/test/iconv/ref/ISO-2022-JP-2
index 03097d6e40e6..7f659bdceb61 100644
--- a/tools/test/iconv/ref/ISO-2022-JP-2
+++ b/tools/test/iconv/ref/ISO-2022-JP-2
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO-2022-JP-2-rev b/tools/test/iconv/ref/ISO-2022-JP-2-rev
index b2d6ce7d61e4..d56f3803da0f 100644
--- a/tools/test/iconv/ref/ISO-2022-JP-2-rev
+++ b/tools/test/iconv/ref/ISO-2022-JP-2-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO-2022-JP-2004 b/tools/test/iconv/ref/ISO-2022-JP-2004
index 03097d6e40e6..7f659bdceb61 100644
--- a/tools/test/iconv/ref/ISO-2022-JP-2004
+++ b/tools/test/iconv/ref/ISO-2022-JP-2004
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO-2022-JP-2004-rev b/tools/test/iconv/ref/ISO-2022-JP-2004-rev
index 99d35271277e..f3039df18cad 100644
--- a/tools/test/iconv/ref/ISO-2022-JP-2004-rev
+++ b/tools/test/iconv/ref/ISO-2022-JP-2004-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO-2022-JP-rev b/tools/test/iconv/ref/ISO-2022-JP-rev
index b536a5a78be6..02b4d0a6bc21 100644
--- a/tools/test/iconv/ref/ISO-2022-JP-rev
+++ b/tools/test/iconv/ref/ISO-2022-JP-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO-2022-KR b/tools/test/iconv/ref/ISO-2022-KR
index 74d743efe3a7..ded2adbc83c3 100644
--- a/tools/test/iconv/ref/ISO-2022-KR
+++ b/tools/test/iconv/ref/ISO-2022-KR
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO-2022-KR-rev b/tools/test/iconv/ref/ISO-2022-KR-rev
index b56886d0737a..a761273b7d76 100644
--- a/tools/test/iconv/ref/ISO-2022-KR-rev
+++ b/tools/test/iconv/ref/ISO-2022-KR-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO-IR-14 b/tools/test/iconv/ref/ISO-IR-14
index c8c63f6d8a01..8d13a9783d2c 100644
--- a/tools/test/iconv/ref/ISO-IR-14
+++ b/tools/test/iconv/ref/ISO-IR-14
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO-IR-14-rev b/tools/test/iconv/ref/ISO-IR-14-rev
index 03bdf662817e..58172f944369 100644
--- a/tools/test/iconv/ref/ISO-IR-14-rev
+++ b/tools/test/iconv/ref/ISO-IR-14-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO-IR-165 b/tools/test/iconv/ref/ISO-IR-165
index fcbd709b2caf..a22473f638cd 100644
--- a/tools/test/iconv/ref/ISO-IR-165
+++ b/tools/test/iconv/ref/ISO-IR-165
@@ -1,4 +1,3 @@
-$FreeBSD$
0x2121 = 0x3000
0x2123 = 0xFF01
0x2124 = 0x3041
diff --git a/tools/test/iconv/ref/ISO-IR-165-rev b/tools/test/iconv/ref/ISO-IR-165-rev
index f78699062f8b..8b6ccdb9b657 100644
--- a/tools/test/iconv/ref/ISO-IR-165-rev
+++ b/tools/test/iconv/ref/ISO-IR-165-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0021 = 0x212A
0x0022 = 0x222A
0x0023 = 0x232A
diff --git a/tools/test/iconv/ref/ISO-IR-57 b/tools/test/iconv/ref/ISO-IR-57
index 746af64b25ef..a4f1711ce883 100644
--- a/tools/test/iconv/ref/ISO-IR-57
+++ b/tools/test/iconv/ref/ISO-IR-57
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO-IR-57-rev b/tools/test/iconv/ref/ISO-IR-57-rev
index 8b34dfcfb7e6..3564400f0189 100644
--- a/tools/test/iconv/ref/ISO-IR-57-rev
+++ b/tools/test/iconv/ref/ISO-IR-57-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-1 b/tools/test/iconv/ref/ISO8859-1
index 6691b5b53b28..e8ee2263280a 100644
--- a/tools/test/iconv/ref/ISO8859-1
+++ b/tools/test/iconv/ref/ISO8859-1
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-1-rev b/tools/test/iconv/ref/ISO8859-1-rev
index 9186725c4bd0..d568cf406a36 100644
--- a/tools/test/iconv/ref/ISO8859-1-rev
+++ b/tools/test/iconv/ref/ISO8859-1-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-10 b/tools/test/iconv/ref/ISO8859-10
index aad86f4d918e..e3f801d57c0f 100644
--- a/tools/test/iconv/ref/ISO8859-10
+++ b/tools/test/iconv/ref/ISO8859-10
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-10-rev b/tools/test/iconv/ref/ISO8859-10-rev
index 370ef3e2548f..f4665e47fb0b 100644
--- a/tools/test/iconv/ref/ISO8859-10-rev
+++ b/tools/test/iconv/ref/ISO8859-10-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-11 b/tools/test/iconv/ref/ISO8859-11
index 8d396e98423b..a85eac9eeaaa 100644
--- a/tools/test/iconv/ref/ISO8859-11
+++ b/tools/test/iconv/ref/ISO8859-11
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-11-rev b/tools/test/iconv/ref/ISO8859-11-rev
index bf0568e75c66..2c6729c6e9c3 100644
--- a/tools/test/iconv/ref/ISO8859-11-rev
+++ b/tools/test/iconv/ref/ISO8859-11-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-13 b/tools/test/iconv/ref/ISO8859-13
index 3dcaf6901edb..03afcad2acea 100644
--- a/tools/test/iconv/ref/ISO8859-13
+++ b/tools/test/iconv/ref/ISO8859-13
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-13-rev b/tools/test/iconv/ref/ISO8859-13-rev
index 9f8f7f29bc23..64d19029e567 100644
--- a/tools/test/iconv/ref/ISO8859-13-rev
+++ b/tools/test/iconv/ref/ISO8859-13-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-14 b/tools/test/iconv/ref/ISO8859-14
index 004252b17b3d..cb8c353a1221 100644
--- a/tools/test/iconv/ref/ISO8859-14
+++ b/tools/test/iconv/ref/ISO8859-14
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-14-rev b/tools/test/iconv/ref/ISO8859-14-rev
index 896677b36e9c..059bee72aaba 100644
--- a/tools/test/iconv/ref/ISO8859-14-rev
+++ b/tools/test/iconv/ref/ISO8859-14-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-15 b/tools/test/iconv/ref/ISO8859-15
index be6b53b19fe1..3549db9e5326 100644
--- a/tools/test/iconv/ref/ISO8859-15
+++ b/tools/test/iconv/ref/ISO8859-15
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-15-rev b/tools/test/iconv/ref/ISO8859-15-rev
index 5353d41bc5fb..6f3b5f14cabd 100644
--- a/tools/test/iconv/ref/ISO8859-15-rev
+++ b/tools/test/iconv/ref/ISO8859-15-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-16 b/tools/test/iconv/ref/ISO8859-16
index d9af580afedb..7204e3718845 100644
--- a/tools/test/iconv/ref/ISO8859-16
+++ b/tools/test/iconv/ref/ISO8859-16
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-16-rev b/tools/test/iconv/ref/ISO8859-16-rev
index e20fac090988..c266d09638e1 100644
--- a/tools/test/iconv/ref/ISO8859-16-rev
+++ b/tools/test/iconv/ref/ISO8859-16-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-2 b/tools/test/iconv/ref/ISO8859-2
index 0f7db231acd5..56e85f2aa7f6 100644
--- a/tools/test/iconv/ref/ISO8859-2
+++ b/tools/test/iconv/ref/ISO8859-2
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-2-rev b/tools/test/iconv/ref/ISO8859-2-rev
index db10375f2e90..54db89e41dae 100644
--- a/tools/test/iconv/ref/ISO8859-2-rev
+++ b/tools/test/iconv/ref/ISO8859-2-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-3 b/tools/test/iconv/ref/ISO8859-3
index 91ba5f24946a..d04d0865f0cc 100644
--- a/tools/test/iconv/ref/ISO8859-3
+++ b/tools/test/iconv/ref/ISO8859-3
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-3-rev b/tools/test/iconv/ref/ISO8859-3-rev
index 67cbffbfe92a..4ff1ee88b1ea 100644
--- a/tools/test/iconv/ref/ISO8859-3-rev
+++ b/tools/test/iconv/ref/ISO8859-3-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-4 b/tools/test/iconv/ref/ISO8859-4
index 8a4eb2ad476d..9dbd77c9428e 100644
--- a/tools/test/iconv/ref/ISO8859-4
+++ b/tools/test/iconv/ref/ISO8859-4
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-4-rev b/tools/test/iconv/ref/ISO8859-4-rev
index b7685b8247b4..4d39f39f877e 100644
--- a/tools/test/iconv/ref/ISO8859-4-rev
+++ b/tools/test/iconv/ref/ISO8859-4-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-5 b/tools/test/iconv/ref/ISO8859-5
index 4612c3020a9c..61d0818829ca 100644
--- a/tools/test/iconv/ref/ISO8859-5
+++ b/tools/test/iconv/ref/ISO8859-5
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-5-rev b/tools/test/iconv/ref/ISO8859-5-rev
index b0910277b452..ce6103bcdd97 100644
--- a/tools/test/iconv/ref/ISO8859-5-rev
+++ b/tools/test/iconv/ref/ISO8859-5-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-6 b/tools/test/iconv/ref/ISO8859-6
index 6a7094f195ca..a05e460d3656 100644
--- a/tools/test/iconv/ref/ISO8859-6
+++ b/tools/test/iconv/ref/ISO8859-6
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-6-rev b/tools/test/iconv/ref/ISO8859-6-rev
index 81929d9fa41e..025b95bdc570 100644
--- a/tools/test/iconv/ref/ISO8859-6-rev
+++ b/tools/test/iconv/ref/ISO8859-6-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-7 b/tools/test/iconv/ref/ISO8859-7
index d9bc089ca277..cd37f793b89c 100644
--- a/tools/test/iconv/ref/ISO8859-7
+++ b/tools/test/iconv/ref/ISO8859-7
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-7-rev b/tools/test/iconv/ref/ISO8859-7-rev
index f9764d24fa36..03640a621d84 100644
--- a/tools/test/iconv/ref/ISO8859-7-rev
+++ b/tools/test/iconv/ref/ISO8859-7-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-8 b/tools/test/iconv/ref/ISO8859-8
index 15c71c9ff346..61676a77d8cb 100644
--- a/tools/test/iconv/ref/ISO8859-8
+++ b/tools/test/iconv/ref/ISO8859-8
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-8-rev b/tools/test/iconv/ref/ISO8859-8-rev
index 40558b892cfd..039fa697649b 100644
--- a/tools/test/iconv/ref/ISO8859-8-rev
+++ b/tools/test/iconv/ref/ISO8859-8-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-9 b/tools/test/iconv/ref/ISO8859-9
index b987f09e01f4..6b194d6be76b 100644
--- a/tools/test/iconv/ref/ISO8859-9
+++ b/tools/test/iconv/ref/ISO8859-9
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/ISO8859-9-rev b/tools/test/iconv/ref/ISO8859-9-rev
index 745c652829be..4233cac27371 100644
--- a/tools/test/iconv/ref/ISO8859-9-rev
+++ b/tools/test/iconv/ref/ISO8859-9-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/JAVA b/tools/test/iconv/ref/JAVA
index 487404d4c6ec..d6d293af62a1 100644
--- a/tools/test/iconv/ref/JAVA
+++ b/tools/test/iconv/ref/JAVA
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/JAVA-rev b/tools/test/iconv/ref/JAVA-rev
index a662b865d087..b6ed8fce32cd 100644
--- a/tools/test/iconv/ref/JAVA-rev
+++ b/tools/test/iconv/ref/JAVA-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/JIS_X0201 b/tools/test/iconv/ref/JIS_X0201
index a305b3c7fc4f..054a01d90de4 100644
--- a/tools/test/iconv/ref/JIS_X0201
+++ b/tools/test/iconv/ref/JIS_X0201
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/JIS_X0201-rev b/tools/test/iconv/ref/JIS_X0201-rev
index fbf1566e8a15..aa62e1fca178 100644
--- a/tools/test/iconv/ref/JIS_X0201-rev
+++ b/tools/test/iconv/ref/JIS_X0201-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/JIS_X0208-1990 b/tools/test/iconv/ref/JIS_X0208-1990
index b2bdce5af479..e37aca486d24 100644
--- a/tools/test/iconv/ref/JIS_X0208-1990
+++ b/tools/test/iconv/ref/JIS_X0208-1990
@@ -1,4 +1,3 @@
-$FreeBSD$
0x2121 = 0x3000
0x2122 = 0x25C6
0x2124 = 0x3041
diff --git a/tools/test/iconv/ref/JIS_X0208-1990-rev b/tools/test/iconv/ref/JIS_X0208-1990-rev
index 891a896f7d11..c4699642d0e2 100644
--- a/tools/test/iconv/ref/JIS_X0208-1990-rev
+++ b/tools/test/iconv/ref/JIS_X0208-1990-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00A2 = 0x7121
0x00A3 = 0x7221
0x00A7 = 0x7821
diff --git a/tools/test/iconv/ref/JOHAB b/tools/test/iconv/ref/JOHAB
index c795e608f0b4..19117d225bdc 100644
--- a/tools/test/iconv/ref/JOHAB
+++ b/tools/test/iconv/ref/JOHAB
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/JOHAB-rev b/tools/test/iconv/ref/JOHAB-rev
index 95e2972bd507..0e7b3f0c30fd 100644
--- a/tools/test/iconv/ref/JOHAB-rev
+++ b/tools/test/iconv/ref/JOHAB-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/KOI8-R b/tools/test/iconv/ref/KOI8-R
index b9753b6b2088..f99b32a2055c 100644
--- a/tools/test/iconv/ref/KOI8-R
+++ b/tools/test/iconv/ref/KOI8-R
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/KOI8-R-rev b/tools/test/iconv/ref/KOI8-R-rev
index 5e85165350de..d5a4779c7a72 100644
--- a/tools/test/iconv/ref/KOI8-R-rev
+++ b/tools/test/iconv/ref/KOI8-R-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/KOI8-RU b/tools/test/iconv/ref/KOI8-RU
index 96d3948904e4..84e683a8f711 100644
--- a/tools/test/iconv/ref/KOI8-RU
+++ b/tools/test/iconv/ref/KOI8-RU
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/KOI8-RU-rev b/tools/test/iconv/ref/KOI8-RU-rev
index 226413b32d59..4bcac70fc8bf 100644
--- a/tools/test/iconv/ref/KOI8-RU-rev
+++ b/tools/test/iconv/ref/KOI8-RU-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/KOI8-T b/tools/test/iconv/ref/KOI8-T
index ddec36cb8cf4..958d324a0a47 100644
--- a/tools/test/iconv/ref/KOI8-T
+++ b/tools/test/iconv/ref/KOI8-T
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/KOI8-T-rev b/tools/test/iconv/ref/KOI8-T-rev
index 5b2b7fdc8928..b2792cd75b5d 100644
--- a/tools/test/iconv/ref/KOI8-T-rev
+++ b/tools/test/iconv/ref/KOI8-T-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/KOI8-U b/tools/test/iconv/ref/KOI8-U
index 505139966ff8..704ed9dc919e 100644
--- a/tools/test/iconv/ref/KOI8-U
+++ b/tools/test/iconv/ref/KOI8-U
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/KOI8-U-rev b/tools/test/iconv/ref/KOI8-U-rev
index f434495df1a5..db26ef366fd9 100644
--- a/tools/test/iconv/ref/KOI8-U-rev
+++ b/tools/test/iconv/ref/KOI8-U-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/KZ-1048 b/tools/test/iconv/ref/KZ-1048
index 40e932592054..b77c15e5b946 100644
--- a/tools/test/iconv/ref/KZ-1048
+++ b/tools/test/iconv/ref/KZ-1048
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/KZ-1048-rev b/tools/test/iconv/ref/KZ-1048-rev
index 0c3d77425489..5b65cfeb5ab0 100644
--- a/tools/test/iconv/ref/KZ-1048-rev
+++ b/tools/test/iconv/ref/KZ-1048-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/MACARABIC b/tools/test/iconv/ref/MACARABIC
index aeb23281d419..8798b80ea291 100644
--- a/tools/test/iconv/ref/MACARABIC
+++ b/tools/test/iconv/ref/MACARABIC
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00000000
0x01 = 0x00000001
0x02 = 0x00000002
diff --git a/tools/test/iconv/ref/MACARABIC-rev b/tools/test/iconv/ref/MACARABIC-rev
index c30d8b68ec39..83eb43c41aae 100644
--- a/tools/test/iconv/ref/MACARABIC-rev
+++ b/tools/test/iconv/ref/MACARABIC-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00
0x01 = 0x01
0x02 = 0x02
diff --git a/tools/test/iconv/ref/MACCENTRALEUROPE b/tools/test/iconv/ref/MACCENTRALEUROPE
index f9cc030d968b..1e8dd0a63df9 100644
--- a/tools/test/iconv/ref/MACCENTRALEUROPE
+++ b/tools/test/iconv/ref/MACCENTRALEUROPE
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00000000
0x01 = 0x00000001
0x02 = 0x00000002
diff --git a/tools/test/iconv/ref/MACCENTRALEUROPE-rev b/tools/test/iconv/ref/MACCENTRALEUROPE-rev
index 4f1500788a05..7485b8ccfd23 100644
--- a/tools/test/iconv/ref/MACCENTRALEUROPE-rev
+++ b/tools/test/iconv/ref/MACCENTRALEUROPE-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00
0x01 = 0x01
0x02 = 0x02
diff --git a/tools/test/iconv/ref/MACCROATIAN b/tools/test/iconv/ref/MACCROATIAN
index 7f217df1bc9c..56e12e702f73 100644
--- a/tools/test/iconv/ref/MACCROATIAN
+++ b/tools/test/iconv/ref/MACCROATIAN
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00000000
0x01 = 0x00000001
0x02 = 0x00000002
diff --git a/tools/test/iconv/ref/MACCROATIAN-rev b/tools/test/iconv/ref/MACCROATIAN-rev
index b5709ec307ae..05592351eced 100644
--- a/tools/test/iconv/ref/MACCROATIAN-rev
+++ b/tools/test/iconv/ref/MACCROATIAN-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00
0x01 = 0x01
0x02 = 0x02
diff --git a/tools/test/iconv/ref/MACCYRILLIC b/tools/test/iconv/ref/MACCYRILLIC
index e45f6bca97c2..4cc5bcd30814 100644
--- a/tools/test/iconv/ref/MACCYRILLIC
+++ b/tools/test/iconv/ref/MACCYRILLIC
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00000000
0x01 = 0x00000001
0x02 = 0x00000002
diff --git a/tools/test/iconv/ref/MACCYRILLIC-rev b/tools/test/iconv/ref/MACCYRILLIC-rev
index 5b89eb348fdc..c0dc224278e1 100644
--- a/tools/test/iconv/ref/MACCYRILLIC-rev
+++ b/tools/test/iconv/ref/MACCYRILLIC-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00
0x01 = 0x01
0x02 = 0x02
diff --git a/tools/test/iconv/ref/MACGREEK b/tools/test/iconv/ref/MACGREEK
index 0298654a406c..9a3817e39422 100644
--- a/tools/test/iconv/ref/MACGREEK
+++ b/tools/test/iconv/ref/MACGREEK
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00000000
0x01 = 0x00000001
0x02 = 0x00000002
diff --git a/tools/test/iconv/ref/MACGREEK-rev b/tools/test/iconv/ref/MACGREEK-rev
index 9f74db7543a4..1acfa7bcadcd 100644
--- a/tools/test/iconv/ref/MACGREEK-rev
+++ b/tools/test/iconv/ref/MACGREEK-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00
0x01 = 0x01
0x02 = 0x02
diff --git a/tools/test/iconv/ref/MACHEBREW b/tools/test/iconv/ref/MACHEBREW
index 7a4c980f638b..df6a8b93a899 100644
--- a/tools/test/iconv/ref/MACHEBREW
+++ b/tools/test/iconv/ref/MACHEBREW
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00000000
0x01 = 0x00000001
0x02 = 0x00000002
diff --git a/tools/test/iconv/ref/MACHEBREW-rev b/tools/test/iconv/ref/MACHEBREW-rev
index 79cedb5c8135..c7396c339be8 100644
--- a/tools/test/iconv/ref/MACHEBREW-rev
+++ b/tools/test/iconv/ref/MACHEBREW-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00
0x01 = 0x01
0x02 = 0x02
diff --git a/tools/test/iconv/ref/MACICELAND b/tools/test/iconv/ref/MACICELAND
index 5f2c943afee7..656a84a840b3 100644
--- a/tools/test/iconv/ref/MACICELAND
+++ b/tools/test/iconv/ref/MACICELAND
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00000000
0x01 = 0x00000001
0x02 = 0x00000002
diff --git a/tools/test/iconv/ref/MACICELAND-rev b/tools/test/iconv/ref/MACICELAND-rev
index af342e7a5347..b5139c5173fd 100644
--- a/tools/test/iconv/ref/MACICELAND-rev
+++ b/tools/test/iconv/ref/MACICELAND-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00
0x01 = 0x01
0x02 = 0x02
diff --git a/tools/test/iconv/ref/MACROMAN b/tools/test/iconv/ref/MACROMAN
index 740ed4598774..408da3a36f99 100644
--- a/tools/test/iconv/ref/MACROMAN
+++ b/tools/test/iconv/ref/MACROMAN
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00000000
0x01 = 0x00000001
0x02 = 0x00000002
diff --git a/tools/test/iconv/ref/MACROMAN-rev b/tools/test/iconv/ref/MACROMAN-rev
index 86614676bf30..675fa569dad0 100644
--- a/tools/test/iconv/ref/MACROMAN-rev
+++ b/tools/test/iconv/ref/MACROMAN-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00
0x01 = 0x01
0x02 = 0x02
diff --git a/tools/test/iconv/ref/MACROMANIA b/tools/test/iconv/ref/MACROMANIA
index 9bae2905c61c..d8d0ecd6547f 100644
--- a/tools/test/iconv/ref/MACROMANIA
+++ b/tools/test/iconv/ref/MACROMANIA
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00000000
0x01 = 0x00000001
0x02 = 0x00000002
diff --git a/tools/test/iconv/ref/MACROMANIA-rev b/tools/test/iconv/ref/MACROMANIA-rev
index ade273e3d9e2..8da939e0f4b8 100644
--- a/tools/test/iconv/ref/MACROMANIA-rev
+++ b/tools/test/iconv/ref/MACROMANIA-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00
0x01 = 0x01
0x02 = 0x02
diff --git a/tools/test/iconv/ref/MACTHAI b/tools/test/iconv/ref/MACTHAI
index d4813d1712a5..77ef36fd0674 100644
--- a/tools/test/iconv/ref/MACTHAI
+++ b/tools/test/iconv/ref/MACTHAI
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00000000
0x01 = 0x00000001
0x02 = 0x00000002
diff --git a/tools/test/iconv/ref/MACTHAI-rev b/tools/test/iconv/ref/MACTHAI-rev
index 3234d6e4a93a..e184bc8a048a 100644
--- a/tools/test/iconv/ref/MACTHAI-rev
+++ b/tools/test/iconv/ref/MACTHAI-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00
0x01 = 0x01
0x02 = 0x02
diff --git a/tools/test/iconv/ref/MACTURKISH b/tools/test/iconv/ref/MACTURKISH
index 78bda1e65589..4a0b7b6588ce 100644
--- a/tools/test/iconv/ref/MACTURKISH
+++ b/tools/test/iconv/ref/MACTURKISH
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00000000
0x01 = 0x00000001
0x02 = 0x00000002
diff --git a/tools/test/iconv/ref/MACTURKISH-rev b/tools/test/iconv/ref/MACTURKISH-rev
index c4593ac72c0e..9fca844c336a 100644
--- a/tools/test/iconv/ref/MACTURKISH-rev
+++ b/tools/test/iconv/ref/MACTURKISH-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00
0x01 = 0x01
0x02 = 0x02
diff --git a/tools/test/iconv/ref/MACUKRAINE b/tools/test/iconv/ref/MACUKRAINE
index ff09d1a2af28..19c04bec8c9a 100644
--- a/tools/test/iconv/ref/MACUKRAINE
+++ b/tools/test/iconv/ref/MACUKRAINE
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00000000
0x01 = 0x00000001
0x02 = 0x00000002
diff --git a/tools/test/iconv/ref/MACUKRAINE-rev b/tools/test/iconv/ref/MACUKRAINE-rev
index 8839fa24016f..f1a5d3187662 100644
--- a/tools/test/iconv/ref/MACUKRAINE-rev
+++ b/tools/test/iconv/ref/MACUKRAINE-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00
0x01 = 0x01
0x02 = 0x02
diff --git a/tools/test/iconv/ref/MULELAO-1 b/tools/test/iconv/ref/MULELAO-1
index 205b7c1ad257..7f4b16e53e69 100644
--- a/tools/test/iconv/ref/MULELAO-1
+++ b/tools/test/iconv/ref/MULELAO-1
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/MULELAO-1-rev b/tools/test/iconv/ref/MULELAO-1-rev
index 68e4ffb26c39..6b1e1d186f78 100644
--- a/tools/test/iconv/ref/MULELAO-1-rev
+++ b/tools/test/iconv/ref/MULELAO-1-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/NEXTSTEP b/tools/test/iconv/ref/NEXTSTEP
index 464335d3e613..ef29d09660b9 100644
--- a/tools/test/iconv/ref/NEXTSTEP
+++ b/tools/test/iconv/ref/NEXTSTEP
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/NEXTSTEP-rev b/tools/test/iconv/ref/NEXTSTEP-rev
index 2a8abddbc8b9..90eefabe5383 100644
--- a/tools/test/iconv/ref/NEXTSTEP-rev
+++ b/tools/test/iconv/ref/NEXTSTEP-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/PT154 b/tools/test/iconv/ref/PT154
index bd3ad8b6b105..72d74edb14c5 100644
--- a/tools/test/iconv/ref/PT154
+++ b/tools/test/iconv/ref/PT154
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/PT154-rev b/tools/test/iconv/ref/PT154-rev
index e2ddbf6c30ac..5b369fb3483f 100644
--- a/tools/test/iconv/ref/PT154-rev
+++ b/tools/test/iconv/ref/PT154-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/RISCOS-LATIN1 b/tools/test/iconv/ref/RISCOS-LATIN1
index ef5fc3f0f6e3..44dd3b2016dc 100644
--- a/tools/test/iconv/ref/RISCOS-LATIN1
+++ b/tools/test/iconv/ref/RISCOS-LATIN1
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/RISCOS-LATIN1-rev b/tools/test/iconv/ref/RISCOS-LATIN1-rev
index 09174a3b2d8b..f3c71631c9b0 100644
--- a/tools/test/iconv/ref/RISCOS-LATIN1-rev
+++ b/tools/test/iconv/ref/RISCOS-LATIN1-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/SHIFT_JIS b/tools/test/iconv/ref/SHIFT_JIS
index 71cade1d30e8..2dcc80facac5 100644
--- a/tools/test/iconv/ref/SHIFT_JIS
+++ b/tools/test/iconv/ref/SHIFT_JIS
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/SHIFT_JIS-rev b/tools/test/iconv/ref/SHIFT_JIS-rev
index f40678bda52d..644358644740 100644
--- a/tools/test/iconv/ref/SHIFT_JIS-rev
+++ b/tools/test/iconv/ref/SHIFT_JIS-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/TCVN5712-1 b/tools/test/iconv/ref/TCVN5712-1
index 644332d33364..4d248667ae5b 100644
--- a/tools/test/iconv/ref/TCVN5712-1
+++ b/tools/test/iconv/ref/TCVN5712-1
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0000
0x0002 = 0x1EE4
diff --git a/tools/test/iconv/ref/TCVN5712-1-rev b/tools/test/iconv/ref/TCVN5712-1-rev
index 76ea067330c6..c1b4433d6889 100644
--- a/tools/test/iconv/ref/TCVN5712-1-rev
+++ b/tools/test/iconv/ref/TCVN5712-1-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0003 = 0x0003
0x0007 = 0x0007
diff --git a/tools/test/iconv/ref/TDS565 b/tools/test/iconv/ref/TDS565
index 862437ad5a64..c9083b5a69a8 100644
--- a/tools/test/iconv/ref/TDS565
+++ b/tools/test/iconv/ref/TDS565
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/TDS565-rev b/tools/test/iconv/ref/TDS565-rev
index 95d34d36c475..d8ca976674fb 100644
--- a/tools/test/iconv/ref/TDS565-rev
+++ b/tools/test/iconv/ref/TDS565-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x0002
diff --git a/tools/test/iconv/ref/UTF-16BE b/tools/test/iconv/ref/UTF-16BE
index 15154fcea265..fa3accbaea5f 100644
--- a/tools/test/iconv/ref/UTF-16BE
+++ b/tools/test/iconv/ref/UTF-16BE
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0100 = 0x00000001
0x0101 = 0x00000101
0x0102 = 0x00000201
diff --git a/tools/test/iconv/ref/UTF-16BE-rev b/tools/test/iconv/ref/UTF-16BE-rev
index 47fa7388ef59..6cfc8ac7b27c 100644
--- a/tools/test/iconv/ref/UTF-16BE-rev
+++ b/tools/test/iconv/ref/UTF-16BE-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x0000
0x01 = 0x0100
0x02 = 0x0200
diff --git a/tools/test/iconv/ref/UTF-16LE b/tools/test/iconv/ref/UTF-16LE
index 382ac2d2e315..970104f233d8 100644
--- a/tools/test/iconv/ref/UTF-16LE
+++ b/tools/test/iconv/ref/UTF-16LE
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0100 = 0x00000100
0x0101 = 0x00000101
0x0102 = 0x00000102
diff --git a/tools/test/iconv/ref/UTF-16LE-rev b/tools/test/iconv/ref/UTF-16LE-rev
index 734e13713525..641e3f39e1da 100644
--- a/tools/test/iconv/ref/UTF-16LE-rev
+++ b/tools/test/iconv/ref/UTF-16LE-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x0000
0x01 = 0x0001
0x02 = 0x0002
diff --git a/tools/test/iconv/ref/UTF-32BE b/tools/test/iconv/ref/UTF-32BE
index 5873eb0512d2..e69de29bb2d1 100644
--- a/tools/test/iconv/ref/UTF-32BE
+++ b/tools/test/iconv/ref/UTF-32BE
@@ -1 +0,0 @@
-$FreeBSD$
diff --git a/tools/test/iconv/ref/UTF-32BE-rev b/tools/test/iconv/ref/UTF-32BE-rev
index dee81c225681..64a15179c34b 100644
--- a/tools/test/iconv/ref/UTF-32BE-rev
+++ b/tools/test/iconv/ref/UTF-32BE-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00000000
0x01 = 0x01000000
0x02 = 0x02000000
diff --git a/tools/test/iconv/ref/UTF-32LE b/tools/test/iconv/ref/UTF-32LE
index 5873eb0512d2..e69de29bb2d1 100644
--- a/tools/test/iconv/ref/UTF-32LE
+++ b/tools/test/iconv/ref/UTF-32LE
@@ -1 +0,0 @@
-$FreeBSD$
diff --git a/tools/test/iconv/ref/UTF-32LE-rev b/tools/test/iconv/ref/UTF-32LE-rev
index 8796936dab6e..3c081e062888 100644
--- a/tools/test/iconv/ref/UTF-32LE-rev
+++ b/tools/test/iconv/ref/UTF-32LE-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00000000
0x01 = 0x00000001
0x02 = 0x00000002
diff --git a/tools/test/iconv/ref/UTF-7 b/tools/test/iconv/ref/UTF-7
index 8fd8f892e04c..f662b182f0a0 100644
--- a/tools/test/iconv/ref/UTF-7
+++ b/tools/test/iconv/ref/UTF-7
@@ -1,4 +1,3 @@
-$FreeBSD$
0x09 = 0x00000009
0x0A = 0x0000000A
0x0D = 0x0000000D
diff --git a/tools/test/iconv/ref/UTF-7-rev b/tools/test/iconv/ref/UTF-7-rev
index 06862e9b66a6..4024cc1238ed 100644
--- a/tools/test/iconv/ref/UTF-7-rev
+++ b/tools/test/iconv/ref/UTF-7-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x41412B
0x01 = 0x41412B
0x02 = 0x41412B
diff --git a/tools/test/iconv/ref/UTF-8 b/tools/test/iconv/ref/UTF-8
index 6c6614995eed..67c884221c23 100644
--- a/tools/test/iconv/ref/UTF-8
+++ b/tools/test/iconv/ref/UTF-8
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00000000
0x01 = 0x00000001
0x02 = 0x00000002
diff --git a/tools/test/iconv/ref/UTF-8-rev b/tools/test/iconv/ref/UTF-8-rev
index 3358fcb8c400..5186ffbe6cbc 100644
--- a/tools/test/iconv/ref/UTF-8-rev
+++ b/tools/test/iconv/ref/UTF-8-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x00 = 0x00
0x01 = 0x01
0x02 = 0x02
diff --git a/tools/test/iconv/ref/VISCII b/tools/test/iconv/ref/VISCII
index 6b7e0097546d..53ff9380ff90 100644
--- a/tools/test/iconv/ref/VISCII
+++ b/tools/test/iconv/ref/VISCII
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0002 = 0x1EB2
diff --git a/tools/test/iconv/ref/VISCII-rev b/tools/test/iconv/ref/VISCII-rev
index a061ee82b79f..9fc24e8f3cff 100644
--- a/tools/test/iconv/ref/VISCII-rev
+++ b/tools/test/iconv/ref/VISCII-rev
@@ -1,4 +1,3 @@
-$FreeBSD$
0x0000 = 0x0000
0x0001 = 0x0001
0x0003 = 0x0003
diff --git a/tools/test/iconv/refgen/Makefile b/tools/test/iconv/refgen/Makefile
index 6ac215101de3..5dc332c9d0e3 100644
--- a/tools/test/iconv/refgen/Makefile
+++ b/tools/test/iconv/refgen/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.PATH: ${.CURDIR}/../tablegen
diff --git a/tools/test/iconv/tablegen/Makefile b/tools/test/iconv/tablegen/Makefile
index cdac44f5b585..ab79bacdb9c1 100644
--- a/tools/test/iconv/tablegen/Makefile
+++ b/tools/test/iconv/tablegen/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= tablegen
MAN=
diff --git a/tools/test/iconv/tablegen/cmp.sh b/tools/test/iconv/tablegen/cmp.sh
index 349c08f6e038..dca7284060d4 100755
--- a/tools/test/iconv/tablegen/cmp.sh
+++ b/tools/test/iconv/tablegen/cmp.sh
@@ -1,4 +1,3 @@
#!/bin/sh
-# $FreeBSD$
diff -I\$\FreeBSD $1 $2 | grep '^-' >/dev/null && printf "\tDIFFER: $1 $2\n" && exit 0 || exit 0
diff --git a/tools/test/iconv/tablegen/tablegen.c b/tools/test/iconv/tablegen/tablegen.c
index 12d44ae753ff..ecc1c7fdb44d 100644
--- a/tools/test/iconv/tablegen/tablegen.c
+++ b/tools/test/iconv/tablegen/tablegen.c
@@ -25,8 +25,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/endian.h>
#include <sys/types.h>
@@ -256,7 +254,6 @@ main (int argc, char *argv[])
if (dflag && iconvctl(cd, ICONV_SET_FALLBACKS, &fbs) != 0)
err(1, NULL);
if (cflag) {
- printf("# $FreeBSD$\n\n");
printf("TYPE\t\tROWCOL\n");
printf("NAME\t\tUCS/%s\n", argv[0]);
printf("%s", citrus_common);
@@ -268,7 +265,6 @@ main (int argc, char *argv[])
if (dflag && (iconvctl(cd, ICONV_SET_FALLBACKS, &fbs) != 0))
err(1, NULL);
if (cflag) {
- printf("# $FreeBSD$\n\n");
printf("TYPE\t\tROWCOL\n");
printf("NAME\t\t%s/UCS\n", argv[0]);
printf("%s", citrus_common);
diff --git a/tools/test/malloc/Makefile b/tools/test/malloc/Makefile
index ac3fdd89486b..8944bf2da79a 100644
--- a/tools/test/malloc/Makefile
+++ b/tools/test/malloc/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= malloc
SRCS= main.c
.PATH: ${.CURDIR}/../../../lib/libc/stdlib
diff --git a/tools/test/malloc/main.c b/tools/test/malloc/main.c
index 5fef9a92f4da..7c5bf14924de 100644
--- a/tools/test/malloc/main.c
+++ b/tools/test/malloc/main.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
diff --git a/tools/test/net/Makefile b/tools/test/net/Makefile
index 4fe5fb155cd1..bdbc46c5ad57 100644
--- a/tools/test/net/Makefile
+++ b/tools/test/net/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROGS= listen connect
MAN=
diff --git a/tools/test/net/connect.c b/tools/test/net/connect.c
index a1245f1e8b3a..5c187c164fbd 100644
--- a/tools/test/net/connect.c
+++ b/tools/test/net/connect.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <err.h>
diff --git a/tools/test/net/listen.c b/tools/test/net/listen.c
index 2c09bb699b76..f14fffe726f8 100644
--- a/tools/test/net/listen.c
+++ b/tools/test/net/listen.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <err.h>
diff --git a/tools/test/netfibs/Makefile b/tools/test/netfibs/Makefile
index 7262a21356c8..02db4c8d82de 100644
--- a/tools/test/netfibs/Makefile
+++ b/tools/test/netfibs/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= reflect
MAN=
diff --git a/tools/test/netfibs/README b/tools/test/netfibs/README
index 64c238895c68..9c6d8bb63513 100644
--- a/tools/test/netfibs/README
+++ b/tools/test/netfibs/README
@@ -1,4 +1,3 @@
-# $FreeBSD$
This directory holds scripts and a support program for multiple test cases
exercising multi-IP FIBs. At this time only IPv6 test cases are provided.
diff --git a/tools/test/netfibs/forwarding.sh b/tools/test/netfibs/forwarding.sh
index 3d63d7454cc4..1b639b65d7f3 100755
--- a/tools/test/netfibs/forwarding.sh
+++ b/tools/test/netfibs/forwarding.sh
@@ -27,7 +27,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
# Test setup:
diff --git a/tools/test/netfibs/initiator.sh b/tools/test/netfibs/initiator.sh
index 3a409a7da1bc..bde3c88b7a2d 100755
--- a/tools/test/netfibs/initiator.sh
+++ b/tools/test/netfibs/initiator.sh
@@ -27,7 +27,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
# We will use the RFC5180 (and Errata) benchmarking working group prefix
diff --git a/tools/test/netfibs/reflect.c b/tools/test/netfibs/reflect.c
index 47c7846948df..8b34343409f6 100644
--- a/tools/test/netfibs/reflect.c
+++ b/tools/test/netfibs/reflect.c
@@ -25,8 +25,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/socket.h>
diff --git a/tools/test/netfibs/reflector.sh b/tools/test/netfibs/reflector.sh
index 3f8c43ae4f26..b9500689a321 100755
--- a/tools/test/netfibs/reflector.sh
+++ b/tools/test/netfibs/reflector.sh
@@ -27,7 +27,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
# We will use the RFC5180 (and Errata) benchmarking working group prefix
diff --git a/tools/test/popss/popss.c b/tools/test/popss/popss.c
index b41f2a32ae91..004ccb29c546 100644
--- a/tools/test/popss/popss.c
+++ b/tools/test/popss/popss.c
@@ -1,5 +1,5 @@
/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ * SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (c) 2018 The FreeBSD Foundation
* All rights reserved.
@@ -29,7 +29,6 @@
* SUCH DAMAGE.
*
* $Id: popss.c,v 1.28 2018/05/09 21:35:29 kostik Exp kostik $
- * $FreeBSD$
*
* cc -m32 -Wall -Wextra -O2 -g -o popss popss.c
* Use as "popss <instruction>", where instruction is one of
diff --git a/tools/test/ppsapi/Makefile b/tools/test/ppsapi/Makefile
index 0474b9979363..91a017f393ba 100644
--- a/tools/test/ppsapi/Makefile
+++ b/tools/test/ppsapi/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= ppsapitest
MAN=
diff --git a/tools/test/ppsapi/README b/tools/test/ppsapi/README
index ea0c3e86e1b5..57ced89e64ce 100644
--- a/tools/test/ppsapi/README
+++ b/tools/test/ppsapi/README
@@ -1,4 +1,3 @@
-# $FreeBSD$
This is a small test program which I have had around since we wrote
the RFC 2783 API.
diff --git a/tools/test/ppsapi/ppsapitest.c b/tools/test/ppsapi/ppsapitest.c
index ef655e96d6df..598411d7af6a 100644
--- a/tools/test/ppsapi/ppsapitest.c
+++ b/tools/test/ppsapi/ppsapitest.c
@@ -6,8 +6,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
diff --git a/tools/test/pthread_vfork/pthread_vfork_test.c b/tools/test/pthread_vfork/pthread_vfork_test.c
index 925c86255738..6525e51fe6f7 100644
--- a/tools/test/pthread_vfork/pthread_vfork_test.c
+++ b/tools/test/pthread_vfork/pthread_vfork_test.c
@@ -26,9 +26,6 @@
*
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/wait.h>
#include <err.h>
diff --git a/tools/test/ptrace/Makefile b/tools/test/ptrace/Makefile
index 46e0aee6b53f..b2c9c7a91c37 100644
--- a/tools/test/ptrace/Makefile
+++ b/tools/test/ptrace/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= scescx
MAN=
diff --git a/tools/test/ptrace/scescx.c b/tools/test/ptrace/scescx.c
index 582d1734427e..27a00b40f737 100644
--- a/tools/test/ptrace/scescx.c
+++ b/tools/test/ptrace/scescx.c
@@ -23,11 +23,9 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/ptrace.h>
+#include <sys/syscall.h>
#include <sys/sysctl.h>
#include <sys/wait.h>
#include <assert.h>
@@ -213,9 +211,13 @@ wait_info(int pid, int status, struct ptrace_lwpinfo *lwpinfo)
printf("\n");
}
+static int trace_syscalls = 1;
+static int remote_getpid = 0;
+
static int
trace_sc(int pid)
{
+ struct ptrace_sc_remote pscr;
struct ptrace_lwpinfo lwpinfo;
int status;
@@ -269,6 +271,24 @@ trace_sc(int pid)
wait_info(pid, status, &lwpinfo);
assert(lwpinfo.pl_flags & PL_FLAG_SCX);
+ if (remote_getpid) {
+ memset(&pscr, 0, sizeof(pscr));
+ pscr.pscr_syscall = SYS_getpid;
+ pscr.pscr_nargs = 0;
+ if (ptrace(PT_SC_REMOTE, pid, (caddr_t)&pscr,
+ sizeof(pscr)) < 0) {
+ perror("PT_SC_REMOTE");
+ ptrace(PT_KILL, pid, NULL, 0);
+ return (-1);
+ } else {
+ printf(TRACE "remote getpid %ld errno %d\n",
+ pscr.pscr_ret.sr_retval[0], pscr.pscr_ret.sr_error);
+ if (waitpid(pid, &status, 0) == -1) {
+ perror("waitpid");
+ return (-1);
+ }
+ }
+ }
if (lwpinfo.pl_flags & PL_FLAG_EXEC)
get_pathname(pid);
@@ -322,8 +342,6 @@ trace_cont(int pid)
return (0);
}
-static int trace_syscalls = 1;
-
static int
trace(pid_t pid)
{
@@ -340,12 +358,16 @@ main(int argc, char *argv[])
pid_t pid, pid1;
trace_syscalls = 1;
+ remote_getpid = 0;
use_vfork = 0;
- while ((c = getopt(argc, argv, "csv")) != -1) {
+ while ((c = getopt(argc, argv, "crsv")) != -1) {
switch (c) {
case 'c':
trace_syscalls = 0;
break;
+ case 'r':
+ remote_getpid = 1;
+ break;
case 's':
trace_syscalls = 1;
break;
@@ -354,7 +376,8 @@ main(int argc, char *argv[])
break;
default:
case '?':
- fprintf(stderr, "Usage: %s [-c] [-s] [-v]\n", argv[0]);
+ fprintf(stderr, "Usage: %s [-c] [-r] [-s] [-v]\n",
+ argv[0]);
return (2);
}
}
diff --git a/tools/test/sort/bigtest/kcmd b/tools/test/sort/bigtest/kcmd
index f853fd609230..41aa080139f7 100755
--- a/tools/test/sort/bigtest/kcmd
+++ b/tools/test/sort/bigtest/kcmd
@@ -1,7 +1,5 @@
#!/bin/sh
-# $FreeBSD$
-
rm -rf siks
mkdir -p siks
diff --git a/tools/test/sort/regression/Makefile b/tools/test/sort/regression/Makefile
index e7cc101f354f..e8f78e2e7f71 100644
--- a/tools/test/sort/regression/Makefile
+++ b/tools/test/sort/regression/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
TESTFILE= test01 test02 test03 test04 test05 test06 test07 test08 \
test09 test10 test11 test12 test13 test14 test15 test16 test17 \
diff --git a/tools/test/sort/regression/cmp.sh b/tools/test/sort/regression/cmp.sh
index 44c406a3dc65..cd840af27952 100755
--- a/tools/test/sort/regression/cmp.sh
+++ b/tools/test/sort/regression/cmp.sh
@@ -1,4 +1,3 @@
#!/bin/sh
-# $FreeBSD$
diff $1 $2 | grep '^-' >/dev/null && echo DIFFER: $1 $2 && exit 0 || exit 0
diff --git a/tools/test/stress2/default.cfg b/tools/test/stress2/default.cfg
index 43b89dc7e160..bff7f3f168a9 100644
--- a/tools/test/stress2/default.cfg
+++ b/tools/test/stress2/default.cfg
@@ -58,7 +58,6 @@ export diskimage=${diskimage:-/tmp/diskimage} # Location of 1G disk image
export mntpoint=${mntpoint:-/mnt} # Disk image mount point
export testuser=${testuser:-TBD} # Name of non root test user
export mdstart=${mdstart:-10} # Start of free md units
-export part=${part:-a} # Partition to use on a md FS
export newfs_flags=${newfs_flags:-"-U"} # Default file system flags
export stress2origin=${stress2origin:-`pwd`}
export stress2tools=`dirname $stress2origin`/tools
@@ -89,6 +88,7 @@ checkfs () {
# BMODE=1 ./all.sh -on `grep -lw mycc *.sh`
# BMODE=2 STRESS2BIN=/home/pho/stress2/bin.i386.r276368 ./all.sh
+BMODE=${BMODE:-0}
CC=${CC:-cc}
top=`dirname $(pwd)` # cwd for the all.sh script
STRESS2BIN=${STRESS2BIN:-$top/bin}
diff --git a/tools/test/stress2/lib/resources.c b/tools/test/stress2/lib/resources.c
index 935a085a58de..1888d1fba87f 100644
--- a/tools/test/stress2/lib/resources.c
+++ b/tools/test/stress2/lib/resources.c
@@ -149,7 +149,7 @@ usermem(void)
}
static void
-cleanupdf()
+cleanupdf(void)
{
unlink(dfpath);
}
diff --git a/tools/test/stress2/misc/1st.sh b/tools/test/stress2/misc/1st.sh
index 00602d67e803..59edb7957bfb 100755
--- a/tools/test/stress2/misc/1st.sh
+++ b/tools/test/stress2/misc/1st.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/advlock.sh b/tools/test/stress2/misc/advlock.sh
index 16b67c3f3340..9e7144856310 100755
--- a/tools/test/stress2/misc/advlock.sh
+++ b/tools/test/stress2/misc/advlock.sh
@@ -60,9 +60,8 @@ rm -f advlock.c
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 512m -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
cp /usr/bin/true $mntpoint
cd $mntpoint
diff --git a/tools/test/stress2/misc/aesni.sh b/tools/test/stress2/misc/aesni.sh
index c25694fa002a..a5160d82dd57 100755
--- a/tools/test/stress2/misc/aesni.sh
+++ b/tools/test/stress2/misc/aesni.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/all.debug.inc b/tools/test/stress2/misc/all.debug.inc
index ea0f2d6a5c58..4042ca1f7718 100644
--- a/tools/test/stress2/misc/all.debug.inc
+++ b/tools/test/stress2/misc/all.debug.inc
@@ -1,5 +1,5 @@
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
# Example debug include file for misc/all.sh
diff --git a/tools/test/stress2/misc/all.exclude b/tools/test/stress2/misc/all.exclude
index 7ee33f258f87..f7b1a9613670 100644
--- a/tools/test/stress2/misc/all.exclude
+++ b/tools/test/stress2/misc/all.exclude
@@ -5,8 +5,14 @@ backingstore.sh g_vfs_done():md6a[WRITE(offset=...)]error = 28 20111220
backingstore2.sh panic: 43 vncache entries remaining 20111220
backingstore3.sh g_vfs_done():md6a[WRITE(offset=...)]error = 28 20111230
dd.sh CAM stuck in vmwait 20200116
-devfs4.sh Hang seen 20210210
+force13.sh https://people.freebsd.org/~pho/stress/log/log0376.txt 20221113
+force14.sh Waiting for fix 20230319
+force15.sh Waiting for fix 20230319
force4.sh https://people.freebsd.org/~pho/stress/log/log0082.txt 20210328
+force7.sh https://people.freebsd.org/~pho/stress/log/log0266.txt 20220207
+fsck10.sh Waiting for fix 20230319
+fsck11.sh Waiting for fix 20230319
+fsck12.sh Waiting for fix 20230319
fsync.sh panic: Journal overflow 20190208
fuse.sh Memory corruption seen in log file kostik734.txt 20141114
fuse2.sh Deadlock seen 20121129
@@ -17,87 +23,61 @@ gjournal.sh panic: Journal overflow 20190626
gjournal2.sh panic: Journal overflow 20180125
gjournal3.sh panic: Bio not on queue 20171225
gjournal4.sh CAM stuck in vmwait 20180517
+gnop10.sh Waiting for fix 20230319
+gnop13.sh https://people.freebsd.org/~pho/stress/log/log0386.txt 20221113
gnop7.sh Waiting for patch commit 20190820
gnop8.sh Waiting for patch commit 20201214
gnop9.sh Waiting for patch commit 20201214
-gnop10.sh Waiting for patch commit 20210105
graid1_8.sh Known issue 20170909
graid1_9.sh panic: Bad effnlink 20180212
lockf5.sh Spinning threads seen 20160718
-ifconfig.sh Bug 253824 20210322
-ifconfig2.sh https://people.freebsd.org/~pho/stress/log/log0051.txt 20210210
maxvnodes2.sh https://people.freebsd.org/~pho/stress/log/log0083.txt 20210329
memguard.sh https://people.freebsd.org/~pho/stress/log/log0088.txt 20210402
memguard2.sh Waiting for fix commit
memguard3.sh Waiting for fix commit
-memsetdomain.sh May change policy for random threads to to domainset_fixed 20210104
mlockall2.sh Unrecoverable OOM killing seen 20190203
+mlockall6.sh https://people.freebsd.org/~pho/stress/log/log0430.txt 20230403
mlockall7.sh Needs further investigation 20210123
-nfs15lockd.sh panic: Assertion td->td_realucred == td->td_ucred failed ... 20210211
+msetdomain.sh May change policy for random threads to domainset_fixed 20210104
newfs4.sh watchdog fired. newbuf 20190225
nfs10.sh Double fault 20151013
nfs13.sh mount_nfs hangs in mntref 20191007
+nfs15lockd.sh panic: Assertion td->td_realucred == td->td_ucred failed ... 20210211
nfs16.sh panic: Failed to register NFS lock locally - error=11 20160608
+nullfs28.sh Hang in "mount drain" seen 20220111
oom2.sh Hang in pfault 20180324
overcommit2.sh CAM stuck in vmwait seen 20200112
-pageout.sh panic: handle_written_filepage: not started 20190218
pmc8.sh panic: [pmc,2749] (ri21, rc1) waiting too long for pmc to ... 20210621
-quota10.sh people.freebsd.org/~pho/stress/log/quota10-2.txt 20200525
-quota2.sh panic: dqflush: stray dquot 20120221
-quota3.sh panic: softdep_deallocate_dependencies: unrecovered ... 20111222
-quota7.sh panic: dqflush: stray dquot 20120221
+rename14.sh https://people.freebsd.org/~pho/stress/log/log0433.txt 20230409
+sctp2.sh panic: Queues are not empty when handling SHUTDOWN-COMPLETE 20210211
sctp3.sh panic: Queues are not empty when handling SHUTDOWN-COMPLETE 20210211
-sendfile25.sh WiP 20200611
signal.sh Timing issues. Needs fixing 20171116
snap8.sh https://people.freebsd.org/~pho/stress/log/log0123.txt 20211008
+suj12.sh Waiting for fix 20230319
+suj19.sh https://people.freebsd.org/~pho/stress/log/log0378.txt 20221113
+suj27.sh https://people.freebsd.org/~pho/stress/log/log0387.txt 20221113
+suj36.sh https://people.freebsd.org/~pho/stress/log/log0392.txt 20221114
swapoff2.sh swap_pager_force_pagein: read from swap failed 20171223
+swapoff3.sh Excessive OOM killing 20220403
swapoff5.sh log0005.txt, known issue 20210111
systrace.sh WiP 20200227
systrace2.sh WiP 20200227
-syzkaller11.sh WiP 20200721
-syzkaller15.sh WiP 20200712
-syzkaller16.sh WiP 20210722
-syzkaller19.sh WiP 20200712
-syzkaller25.sh WiP 20201116
-syzkaller28.sh WiP 20201120
-syzkaller29.sh May change policy for random threads to to domainset_fixed 20210104
-syzkaller30.sh May change policy for random threads to to domainset_fixed 20210104
-syzkaller31.sh panic: Bad tailq NEXT(0xfffffe0079608f00->tqh_last) != NULL 20210322
-syzkaller32.sh Fatal trap 18: integer divide fault while in kernel mode 20210322
-syzkaller33.sh Fatal trap 18: integer divide fault while in kernel mode 20210418
-syzkaller39.sh WiP 20210607
-syzkaller40.sh WiP 20210607
-syzkaller41.sh WiP 20210607
-syzkaller42.sh WiP 20210613
-syzkaller43.sh WiP 20210906
+syzkaller16.sh zonelimit issue 20210722
+syzkaller28.sh panic: About to free ctl:0x... so:0x... and its in 1 20201120
+syzkaller31.sh panic: Bad tailq NEXT(0xfffffe01a0899430->tqh_last) != NULL 20220420
+syzkaller59.sh Page fault 20220625
+syzkaller65.sh panic: in_pcblookup_hash_locked: invalid local address 20230318
+syzkaller66.sh panic: in_pcbconnect: inp is already connected 20230621
+syzkaller67.sh panic: ASan: Invalid access, 8-byte read at ... 20230621
truss3.sh WiP 20200915
-unionfs.sh insmntque: non-locked vp: xx is not exclusive locked... 20130909
-unionfs2.sh insmntque: mp-safe fs and non-locked vp is not ... 20111219
-unionfs3.sh insmntque: mp-safe fs and non-locked vp is not ... 20111216
-unionfs4.sh WiP 20210916
-unionfs5.sh WiP 20210916
# Test not to run for other reasons:
-fuzz.sh A know issue
marcus3.sh OK, but runs for a long time
statfs.sh Not very interesting
vunref.sh No problems ever seen
vunref2.sh No problems ever seen
-# Snapshots has been disabled on SU+J
-suj15.sh
-suj16.sh
-suj19.sh
-suj20.sh
-suj21.sh
-suj22.sh
-suj24.sh
-suj25.sh
-suj26.sh
-suj27.sh
-suj28.sh
-
# Exclude NFS loopback tests
nfs2.sh panic: wrong diroffset 20140219
nfs5.sh
diff --git a/tools/test/stress2/misc/all.sh b/tools/test/stress2/misc/all.sh
index 58bf3a630294..86d986099dbb 100755
--- a/tools/test/stress2/misc/all.sh
+++ b/tools/test/stress2/misc/all.sh
@@ -42,14 +42,15 @@ alloutput=$sdir/output # Output from current test
allexcess=$sdir/excessive # Tests with excessive runtime
allelapsed=$sdir/elapsed # Test runtime
alllocal=$sdir/all.exclude # Local exclude list
+exitonerror=0 # -e option
loops=0 # Times to run the tests
# Get kernel config + revision
rev=`uname -a | awk '{print $7}' | sed 's/://'`
rev="`uname -a | sed 's#.*/compile/##; s/ .*//'` $rev"
-args=`getopt acl:m:no "$@"`
+args=`getopt acel:m:no "$@"`
[ $? -ne 0 ] &&
- echo "Usage $0 [-a] [-c] [-l <val>] [-m <min.>] [-n] [-o] [<tests>]" &&
+ echo "Usage $0 [-a] [-c] [-e] [-l <val>] [-m <min.>] [-n] [-o] [<tests>]" &&
exit 1
set -- $args
for i; do
@@ -62,6 +63,9 @@ for i; do
rm -f $alllist
shift
;;
+ -e) exitonerror=1
+ shift
+ ;;
-l) loops=$2 # Number of time to run
shift; shift
;;
@@ -160,6 +164,7 @@ trap intr INT
[ -f all.debug.inc ] && . all.debug.inc
s1=`date +%s`
+touch $sdir/starttime
while true; do
exclude=`cat all.exclude $alllocal 2>/dev/null | sed '/^#/d' |
grep "^[a-zA-Z].*\.sh" | awk '{print $1}'`
@@ -226,6 +231,7 @@ while true; do
[ $e -ne 0 ] &&
echo "FAIL $i exit code $e"
) 2>&1 | tee $alloutput
+ grep -qw FAIL $alloutput && e=1 || e=0
ts=`date '+%Y%m%d %T'`
grep -qw FAIL $alloutput &&
echo "$ts $rev $i" >> $allfaillog &&
@@ -237,9 +243,8 @@ while true; do
[ -f ../tools/ministat.sh ] &&
../tools/ministat.sh $allelapsed $i
[ $((`date '+%s'` - start)) -gt 1980 ] &&
- printf "$ts *** Excessive run time: %s %d min\r\n" $i, \
- $(((`date '+%s'` - start) / 60)) |
- tee $console >> $allexcess
+ printf "$ts $rev $i %d min\n" \
+ $(((`date '+%s'` - start) / 60)) >> $allexcess
while pgrep -q "^swap$"; do
echo "swap still running"
sleep 2
@@ -248,6 +253,7 @@ while true; do
[ $all_debug ] && post_debug
[ $minutes ] && [ $((`date +%s` - s1)) -ge $minutes ] &&
break 2
+ [ $exitonerror -eq 1 -a $e -ne 0 ] && break 2
done
[ $((loops -= 1)) -eq 0 ] && break
done
diff --git a/tools/test/stress2/misc/arp.sh b/tools/test/stress2/misc/arp.sh
index ef66ce351e24..5c4d997ba975 100755
--- a/tools/test/stress2/misc/arp.sh
+++ b/tools/test/stress2/misc/arp.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/aslr.sh b/tools/test/stress2/misc/aslr.sh
index 6261fae4546b..686b2b414030 100755
--- a/tools/test/stress2/misc/aslr.sh
+++ b/tools/test/stress2/misc/aslr.sh
@@ -1,7 +1,7 @@
#/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/audit2.sh b/tools/test/stress2/misc/audit2.sh
index 1435b13d9768..36a6339b8852 100755
--- a/tools/test/stress2/misc/audit2.sh
+++ b/tools/test/stress2/misc/audit2.sh
@@ -37,9 +37,8 @@ pgrep -q auditd && exit 0 || service auditd onestart
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=5m
@@ -52,7 +51,7 @@ while mount | grep $mntpoint | grep -q /dev/md; do
umount $mntpoint || sleep 1
[ $((n += 1)) -gt 300 ] && { echo FAIL; exit 1; }
done
-checkfs /dev/md${mdstart}$part; s=$?
+checkfs /dev/md$mdstart; s=$?
mdconfig -d -u $mdstart
service auditd onestop
diff --git a/tools/test/stress2/misc/avx_sig.sh b/tools/test/stress2/misc/avx_sig.sh
new file mode 100755
index 000000000000..2a328daa340d
--- /dev/null
+++ b/tools/test/stress2/misc/avx_sig.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+# Test AVX context integrity under ctx switches and signals (amd64)
+
+src=/usr/src/tools/test/avx_sig/avx_sig.c
+[ -f $src ] || exit 0
+[ `uname -p` != "amd64" ] && exit 0
+
+cd /tmp
+cc -Wall -Wextra -O -g -o avx_sig $src -lpthread || exit 1
+
+timeout 1m /tmp/avx_sig; s=$?
+[ $s -eq 124 ] && s=0
+
+rm /tmp/avx_sig
+exit $s
diff --git a/tools/test/stress2/misc/backingstore.sh b/tools/test/stress2/misc/backingstore.sh
index b16ff852acd9..5c8a1ac83577 100755
--- a/tools/test/stress2/misc/backingstore.sh
+++ b/tools/test/stress2/misc/backingstore.sh
@@ -37,45 +37,43 @@ export here=`pwd`
m=$mdstart
-mount | grep "$mntpoint" | grep -q md$m && umount ${mntpoint}$m
+mount | grep "$mntpoint" | grep -q md$m && umount $mntpoint$m
mdconfig -l | grep -q md$m && mdconfig -d -u $m
dd if=/dev/zero of=$D$m bs=100m count=1 status=none || exit 1
mdconfig -a -t vnode -f $D$m -u $m
-bsdlabel -w md$m auto
-newfs md${m}$part > /dev/null 2>&1
-[ -d ${mntpoint}$m ] || mkdir -p ${mntpoint}$m
-mount $opt /dev/md${m}$part ${mntpoint}$m
+newfs md${m} > /dev/null 2>&1
+[ -d $mntpoint$m ] || mkdir -p $mntpoint$m
+mount $opt /dev/md$m $mntpoint$m
n=$m
m=$((m + 1))
-mount | grep "$mntpoint" | grep -q md$m && umount ${mntpoint}$m
+mount | grep "$mntpoint$m" | grep -q md$m && umount $mntpoint$m
mdconfig -l | grep -q md$m && mdconfig -d -u $m
-truncate -s 500M ${mntpoint}$n/diskimage
-mdconfig -a -t vnode -f ${mntpoint}$n/diskimage -u $m
+truncate -s 500M $mntpoint$n/diskimage
+mdconfig -a -t vnode -f $mntpoint$n/diskimage -u $m
-bsdlabel -w md$m auto
-newfs md${m}$part > /dev/null 2>&1
-[ -d ${mntpoint}$m ] || mkdir -p ${mntpoint}$m
-mount $opt /dev/md${m}$part ${mntpoint}$m
+newfs md${m} > /dev/null 2>&1
+[ -d $mntpoint$m ] || mkdir -p $mntpoint$m
+mount $opt /dev/md$m $mntpoint$m
-export RUNDIR=${mntpoint}$m/stressX
+export RUNDIR=$mntpoint$m/stressX
../testcases/rw/rw -t 5m -i 200 -h -n
-while mount | grep -q ${mntpoint}$m; do
+while mount | grep -q $mntpoint$m; do
flag=$([ $((`date '+%s'` % 2)) -eq 0 ] && echo "-f" || echo "")
- umount $flag ${mntpoint}$m > /dev/null 2>&1
+ umount $flag $mntpoint$m > /dev/null 2>&1
done
mdconfig -l | grep -q md$m && mdconfig -d -u $m
m=$((m - 1))
-while mount | grep -q ${mntpoint}$m; do
+while mount | grep -q $mntpoint$m; do
umount $([ $((`date '+%s'` % 2)) -eq 0 ] && \
- echo "-f" || echo "") ${mntpoint}$m > /dev/null 2>&1
+ echo "-f" || echo "") $mntpoint$m > /dev/null 2>&1
done
mdconfig -l | grep -q md$m && mdconfig -d -u $m
rm -f $D
diff --git a/tools/test/stress2/misc/backingstore2.sh b/tools/test/stress2/misc/backingstore2.sh
index 48dc6109f719..91b8cb7acb68 100755
--- a/tools/test/stress2/misc/backingstore2.sh
+++ b/tools/test/stress2/misc/backingstore2.sh
@@ -40,33 +40,31 @@ export here=`pwd`
m1=$mdstart
m2=$((m1 + 1))
-mount | grep "$mntpoint" | grep -q md$m2 && umount ${mntpoint}$m2
+mount | grep "$mntpoint$m2" | grep -q md$m2 && umount $mntpoint$m2
mdconfig -l | grep -q md$m2 && mdconfig -d -u $m2
-mount | grep "$mntpoint" | grep -q md$m1 && umount ${mntpoint}$m1
+mount | grep "$mntpoint$m1" | grep -q md$m1 && umount $mntpoint$m1
mdconfig -l | grep -q md$m1 && mdconfig -d -u $m1
-[ -d ${mntpoint}$m1 ] || mkdir -p ${mntpoint}$m1
-[ -d ${mntpoint}$m2 ] || mkdir -p ${mntpoint}$m2
+[ -d $mntpoint$m1 ] || mkdir -p $mntpoint$m1
+[ -d $mntpoint$m2 ] || mkdir -p $mntpoint$m2
dd if=/dev/zero of=$D$m bs=100m count=1 status=none || exit 1
mdconfig -a -t vnode -f $D$m1 -u $m1
-bsdlabel -w md$m1 auto
-newfs md${m1}$part > /dev/null 2>&1
-mount /dev/md${m1}$part ${mntpoint}$m1
+newfs md$m1 > /dev/null 2>&1
+mount /dev/md$m1 $mntpoint$m1
-truncate -s 500M ${mntpoint}$m1/diskimage
-mdconfig -a -t vnode -f ${mntpoint}$m1/diskimage -u $m2
+truncate -s 500M $mntpoint$m1/diskimage
+mdconfig -a -t vnode -f $mntpoint$m1/diskimage -u $m2
-bsdlabel -w md$m2 auto
-newfs md${m2}$part > /dev/null 2>&1
-mount /dev/md${m2}$part ${mntpoint}$m2
+newfs md$m2 > /dev/null 2>&1
+mount /dev/md$m2 $mntpoint$m2
# Reversed umount sequence:
-umount -f /dev/md${m1}$part
-umount -f /dev/md${m2}$part
+umount -f /dev/md$m1
+umount -f /dev/md$m2
-mount | grep "$mntpoint" | grep -q md$m2 && umount ${mntpoint}$m2
+mount | grep "$mntpoint" | grep -q md$m2 && umount $mntpoint$m2
mdconfig -l | grep -q md$m2 && mdconfig -d -u $m2
-mount | grep "$mntpoint" | grep -q md$m1 && umount ${mntpoint}$m1
+mount | grep "$mntpoint" | grep -q md$m1 && umount $mntpoint$m1
mdconfig -l | grep -q md$m1 && mdconfig -d -u $m1
diff --git a/tools/test/stress2/misc/backingstore3.sh b/tools/test/stress2/misc/backingstore3.sh
index 2610983da92e..1cea69c46477 100755
--- a/tools/test/stress2/misc/backingstore3.sh
+++ b/tools/test/stress2/misc/backingstore3.sh
@@ -39,35 +39,33 @@ export here=`pwd`
m1=$mdstart
m2=$((m1 + 1))
-mount | grep "$mntpoint" | grep -q md$m2 && umount ${mntpoint}$m2
+mount | grep "$mntpoint" | grep -q md$m2 && umount $mntpoint$m2
mdconfig -l | grep -q md$m2 && mdconfig -d -u $m2
-mount | grep "$mntpoint" | grep -q md$m1 && umount ${mntpoint}$m1
+mount | grep "$mntpoint" | grep -q md$m1 && umount $mntpoint$m1
mdconfig -l | grep -q md$m1 && mdconfig -d -u $m1
-[ -d ${mntpoint}$m1 ] || mkdir -p ${mntpoint}$m1
-[ -d ${mntpoint}$m2 ] || mkdir -p ${mntpoint}$m2
+[ -d $mntpoint$m1 ] || mkdir -p $mntpoint$m1
+[ -d $mntpoint$m2 ] || mkdir -p $mntpoint$m2
dd if=/dev=zero of=$D$m bs=25m count=1 status=none || exit 1
mdconfig -a -t vnode -f $D$m1 -u $m1
-bsdlabel -w md$m1 auto
-newfs md${m1}$part > /dev/null 2>&1
-mount /dev/md${m1}$part ${mntpoint}$m1
+newfs md$m1 > /dev/null 2>&1
+mount /dev/md$m1 $mntpoint$m1
-truncate -s 500M ${mntpoint}$m1/diskimage
-mdconfig -a -t vnode -f ${mntpoint}$m1/diskimage -u $m2
+truncate -s 500M $mntpoint$m1/diskimage
+mdconfig -a -t vnode -f $mntpoint$m1/diskimage -u $m2
-bsdlabel -w md$m2 auto
-newfs md${m2}$part > /dev/null 2>&1
-mount /dev/md${m2}$part ${mntpoint}$m2
+newfs md$m2 > /dev/null 2>&1
+mount /dev/md$m2 $mntpoint$m2
-dd if=/dev/zero of=${mntpoint}$m2/file bs=1m > /dev/null 2>&1
+dd if=/dev/zero of=$mntpoint$m2/file bs=1m > /dev/null 2>&1
# Reversed umount sequence:
-umount -f /dev/md${m1}$part
-umount -f /dev/md${m2}$part
+umount -f /dev/md$m1
+umount -f /dev/md$m2
-mount | grep "$mntpoint" | grep -q md$m2 && umount ${mntpoint}$m2
+mount | grep "$mntpoint" | grep -q md$m2 && umount $mntpoint$m2
mdconfig -l | grep -q md$m2 && mdconfig -d -u $m2
-mount | grep "$mntpoint" | grep -q md$m1 && umount ${mntpoint}$m1
+mount | grep "$mntpoint" | grep -q md$m1 && umount $mntpoint$m1
mdconfig -l | grep -q md$m1 && mdconfig -d -u $m1
diff --git a/tools/test/stress2/misc/badcode.sh b/tools/test/stress2/misc/badcode.sh
index c869c3a8c13e..caa9b1b6d461 100755
--- a/tools/test/stress2/misc/badcode.sh
+++ b/tools/test/stress2/misc/badcode.sh
@@ -40,9 +40,8 @@ kldstat -v | grep -q pty || kldload pty # ignore any load failure
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export LOAD=80
@@ -61,5 +60,5 @@ su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS'
while mount | grep "on $mntpoint " | grep -q /dev/md; do
umount $mntpoint || sleep 1
done
-checkfs /dev/md${mdstart}$part
+checkfs /dev/md$mdstart
mdconfig -d -u $mdstart
diff --git a/tools/test/stress2/misc/badcode2.sh b/tools/test/stress2/misc/badcode2.sh
index 8e47a74a87d1..dbf2cadbc4cd 100755
--- a/tools/test/stress2/misc/badcode2.sh
+++ b/tools/test/stress2/misc/badcode2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Peter Holm
#
diff --git a/tools/test/stress2/misc/badcode3.sh b/tools/test/stress2/misc/badcode3.sh
index e0a10d0074a4..da4f811bff6d 100755
--- a/tools/test/stress2/misc/badcode3.sh
+++ b/tools/test/stress2/misc/badcode3.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Peter Holm
#
@@ -39,13 +39,18 @@ mdconfig -a -t swap -s 1g -u $mdstart
newfs $newfs_flags md$mdstart > /dev/null
mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
+export badcodeLOAD=100
+export RUNDIR=$mntpoint/stressX
+mkdir -p $RUNDIR
+chmod 0777 $RUNDIR
here=`pwd`
cd $mntpoint
(cd $here/../testcases/swap; ./swap -t 5m -i 20) &
sleep 2
while pgrep -q swap; do
- timeout 1m limits -c 0 $here/../testcases/badcode/badcode -t 1m -i 20
+ su $testuser -c \
+ "timeout 1m limits -c 0 $here/../testcases/badcode/badcode -t 1m -i 20"
done
wait
cd $here
diff --git a/tools/test/stress2/misc/bench.sh b/tools/test/stress2/misc/bench.sh
index 965c9a3d9b99..33b6eb653879 100755
--- a/tools/test/stress2/misc/bench.sh
+++ b/tools/test/stress2/misc/bench.sh
@@ -43,16 +43,15 @@ cd $odir
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
log=/tmp/stress2.d/bench.sh.log
[ -f $log ] && old=`tail -1 $log | awk '{print $2}'`
tmp=/tmp/bench.sh.tmp
s=0
for j in `jot 5`; do
- newfs -n -b 4096 -f 512 -i 1024 md${mdstart}$part > \
+ newfs -n -b 4096 -f 512 -i 1024 md$mdstart > \
/dev/null
- mount -o async /dev/md${mdstart}$part $mntpoint
+ mount -o async /dev/md$mdstart $mntpoint
/usr/bin/time sh -c "(cd $mntpoint; /tmp/bench)" 2>&1 | \
awk '{print $1}'
[ $? -ne 0 ] && s=1
diff --git a/tools/test/stress2/misc/beneath.sh b/tools/test/stress2/misc/beneath.sh
index 5f61dbd5e383..29c7ce967197 100755
--- a/tools/test/stress2/misc/beneath.sh
+++ b/tools/test/stress2/misc/beneath.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Konstantin Belousov <kib@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/beneath2.sh b/tools/test/stress2/misc/beneath2.sh
index a89cd8deb1e1..5cbe3c160e00 100755
--- a/tools/test/stress2/misc/beneath2.sh
+++ b/tools/test/stress2/misc/beneath2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
@@ -50,9 +50,8 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
set +e
cd $mntpoint
diff --git a/tools/test/stress2/misc/beneath3.sh b/tools/test/stress2/misc/beneath3.sh
index 46f370899ee8..aac7079e284b 100755
--- a/tools/test/stress2/misc/beneath3.sh
+++ b/tools/test/stress2/misc/beneath3.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
@@ -48,9 +48,8 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
set +e
cd $mntpoint
diff --git a/tools/test/stress2/misc/beneath4.sh b/tools/test/stress2/misc/beneath4.sh
index 0f51980cb75a..48458f088a96 100755
--- a/tools/test/stress2/misc/beneath4.sh
+++ b/tools/test/stress2/misc/beneath4.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/bio.sh b/tools/test/stress2/misc/bio.sh
index d344fdb281c3..69bdc773b3ce 100755
--- a/tools/test/stress2/misc/bio.sh
+++ b/tools/test/stress2/misc/bio.sh
@@ -50,9 +50,8 @@ cd $odir
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -n md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -n md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
(cd $mntpoint; /tmp/bio) &
pid1=$!
diff --git a/tools/test/stress2/misc/buildkernel.sh b/tools/test/stress2/misc/buildkernel.sh
index fe8d530dfab7..849a09b81439 100755
--- a/tools/test/stress2/misc/buildkernel.sh
+++ b/tools/test/stress2/misc/buildkernel.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/buildworld.sh b/tools/test/stress2/misc/buildworld.sh
index ef4927d8dd1b..595b387c90ae 100755
--- a/tools/test/stress2/misc/buildworld.sh
+++ b/tools/test/stress2/misc/buildworld.sh
@@ -45,9 +45,8 @@ mount | grep -q "on $mntpoint " && umount $mntpoint
dd if=/dev/zero of=$diskimage bs=1m count=3k status=none
trap "rm -f $diskimage" EXIT INT
mdconfig -a -t vnode -f $diskimage -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount -o async /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount -o async /dev/md$mdstart $mntpoint
cd /usr/src
export MAKEOBJDIRPREFIX=$mntpoint/obj
diff --git a/tools/test/stress2/misc/buildworld3.sh b/tools/test/stress2/misc/buildworld3.sh
index 518c16151bcd..0c660cae8eae 100755
--- a/tools/test/stress2/misc/buildworld3.sh
+++ b/tools/test/stress2/misc/buildworld3.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
@@ -41,12 +41,11 @@
[ -d /usr/src/sys ] || exit 0
mount | grep -q "on $mntpoint " && umount $mntpoint
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
export PATH_FSTAB=/tmp/fstab
trap "rm -f $PATH_FSTAB" EXIT INT
-echo "/dev/md${mdstart}$part $mntpoint ufs rw,userquota 2 2" > $PATH_FSTAB
+echo "/dev/md$mdstart $mntpoint ufs rw,userquota 2 2" > $PATH_FSTAB
mount $mntpoint
set `df -ik $mntpoint | tail -1 | awk '{print $4,$7}'`
export QK=$(($1 / 2))
diff --git a/tools/test/stress2/misc/buildworld4.sh b/tools/test/stress2/misc/buildworld4.sh
index fae22b9a17b9..6c15a72a9dcb 100755
--- a/tools/test/stress2/misc/buildworld4.sh
+++ b/tools/test/stress2/misc/buildworld4.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
@@ -38,10 +38,9 @@
rm -f $diskimage
mount | grep -q "on $mntpoint " && umount $mntpoint
mdconfig -a -t swap -s 5g -u $mdstart
-bsdlabel -w md$mdstart auto
[ "$newfs_flags" = "-U" ] && newfs_flags="-j"
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
mount | grep $mntpoint
cd /usr/src
diff --git a/tools/test/stress2/misc/burnin.sh b/tools/test/stress2/misc/burnin.sh
index 0b6c206cd69b..352cc55426e3 100755
--- a/tools/test/stress2/misc/burnin.sh
+++ b/tools/test/stress2/misc/burnin.sh
@@ -45,9 +45,8 @@ cd $odir
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -n md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -n md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
d=`date '+%Y%m%dT%H%M%S'`
log=/tmp/burnin.$d.log
mode=`pgrep -q cron && echo "Multi-user" || echo "Single-user"`
diff --git a/tools/test/stress2/misc/callout_reset_on.sh b/tools/test/stress2/misc/callout_reset_on.sh
index cdffc0dd67f7..bafeeea270c7 100755
--- a/tools/test/stress2/misc/callout_reset_on.sh
+++ b/tools/test/stress2/misc/callout_reset_on.sh
@@ -230,10 +230,8 @@ writer(void) {
struct hostent *hostent;
int i, r;
char line[1024], ack[80];;
- pid_t ppid;
setproctitle("writer - init");
- ppid = getppid();
signal(SIGUSR1, handler);
alarm(60);
on = 1;
diff --git a/tools/test/stress2/misc/callout_reset_on2.sh b/tools/test/stress2/misc/callout_reset_on2.sh
index 270aeb95aa97..1a54097ff4ba 100755
--- a/tools/test/stress2/misc/callout_reset_on2.sh
+++ b/tools/test/stress2/misc/callout_reset_on2.sh
@@ -201,11 +201,9 @@ writer(void) {
struct hostent *hostent;
int i, r;
char line[1024], ack[80];;
- pid_t ppid;
setproctitle("writer - init");
share[SYNC] = 1;
- ppid = getppid();
signal(SIGUSR1, handler);
signal(SIGALRM, ahandler);
alarm(60);
diff --git a/tools/test/stress2/misc/chain.sh b/tools/test/stress2/misc/chain.sh
index 46d2f32cd7c4..ebc3f118e1bf 100755
--- a/tools/test/stress2/misc/chain.sh
+++ b/tools/test/stress2/misc/chain.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Jeremy <peterj@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/chroot.sh b/tools/test/stress2/misc/chroot.sh
index 176b249312f0..35e2d2f11e0e 100755
--- a/tools/test/stress2/misc/chroot.sh
+++ b/tools/test/stress2/misc/chroot.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/cmp.sh b/tools/test/stress2/misc/cmp.sh
index bd492c8493ca..91adf5ea5ab0 100755
--- a/tools/test/stress2/misc/cmp.sh
+++ b/tools/test/stress2/misc/cmp.sh
@@ -45,10 +45,9 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
# Don't use SU due to bogus "out of inodes" messages.
-newfs md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
daemon sh -c "(cd $here/../testcases/swap; ./swap -t 5m -i 20 -h -l 100)" \
@@ -58,7 +57,7 @@ su $testuser -c "/tmp/cmp $mntpoint" &
while kill -0 $! 2>/dev/null; do
umount -f $mntpoint &&
- mount /dev/md${mdstart}$part $mntpoint
+ mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
sleep .1
done
diff --git a/tools/test/stress2/misc/compare.sh b/tools/test/stress2/misc/compare.sh
index c983046384b5..9ca6542d1af5 100755
--- a/tools/test/stress2/misc/compare.sh
+++ b/tools/test/stress2/misc/compare.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/contigmalloc3.sh b/tools/test/stress2/misc/contigmalloc3.sh
index 9497a67f21cf..9baf7c129688 100755
--- a/tools/test/stress2/misc/contigmalloc3.sh
+++ b/tools/test/stress2/misc/contigmalloc3.sh
@@ -62,7 +62,7 @@ void
test(int argc, char *argv[])
{
long mw, size;
- int i, no, ps, res;
+ int no, ps, res;
char *cp;
if (argc == 3) {
@@ -77,7 +77,6 @@ test(int argc, char *argv[])
fprintf(stderr, "max_user_wired too small for this test\n");
exit (0);
}
- i = 0;
size = round_page(MAXBUF);
res = syscall(no, TALLOC, &cp, &size);
if (res == -1) {
diff --git a/tools/test/stress2/misc/core2.sh b/tools/test/stress2/misc/core2.sh
index 4f0e0472af95..2e8396858982 100755
--- a/tools/test/stress2/misc/core2.sh
+++ b/tools/test/stress2/misc/core2.sh
@@ -42,9 +42,8 @@ cd $RUNDIR
mount | grep "on $mntpoint " | grep -q md$mdstart && umount $mntpoint
[ -c /dev/mn$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
touch /tmp/continue
for i in `jot 64`; do
diff --git a/tools/test/stress2/misc/core3.sh b/tools/test/stress2/misc/core3.sh
index 68d55468c087..5d0d0c258651 100755
--- a/tools/test/stress2/misc/core3.sh
+++ b/tools/test/stress2/misc/core3.sh
@@ -49,9 +49,8 @@ cd $odir
mount | grep -q "on $mntpoint " && umount $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
mkdir $mntpoint/d
chmod 777 $mntpoint/d
@@ -65,7 +64,7 @@ while pgrep -q core3; do
done > /dev/null 2>&1 &
while pgrep -q core3; do
[ -d $mntpoint/d ] ||
- mount /dev/md${mdstart}$part $mntpoint
+ mount /dev/md$mdstart $mntpoint
done > /dev/null 2>&1
wait $pid
status=$?
diff --git a/tools/test/stress2/misc/core4.sh b/tools/test/stress2/misc/core4.sh
index 562160a1a314..0f0096e7052b 100755
--- a/tools/test/stress2/misc/core4.sh
+++ b/tools/test/stress2/misc/core4.sh
@@ -45,11 +45,10 @@ mount | grep -q "$mntpoint" && umount $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
for i in `jot 20`; do
- mount /dev/md${mdstart}$part $mntpoint
+ mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
su $testuser -c "(cd $mntpoint; /tmp/core4)" &
su $testuser -c "(cd $mntpoint; /tmp/core4)" &
@@ -79,9 +78,7 @@ EOF
int
main(void)
{
- void *p;
-
- p = mmap(NULL, SIZ, PROT_READ | PROT_WRITE, MAP_ANON, -1, 0);
+ (void)mmap(NULL, SIZ, PROT_READ | PROT_WRITE, MAP_ANON, -1, 0);
usleep(1000);
raise(SIGSEGV);
diff --git a/tools/test/stress2/misc/core5.sh b/tools/test/stress2/misc/core5.sh
index 6dc6ba96b742..c7928a7cf1dc 100755
--- a/tools/test/stress2/misc/core5.sh
+++ b/tools/test/stress2/misc/core5.sh
@@ -34,7 +34,7 @@
# 20150714 Slowdown seen with core5 waiting in vlruwk.
# sysctl vfs.vlru_allow_cache_src=1 used to resolve this.
-# For now change MAXVNODES from 1.000 to 4.000.
+# For now change MAXVNODES from 1.000 to 5.000.
[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
. ../default.cfg
@@ -91,10 +91,9 @@ mount | grep -q "on $mntpoint " && umount $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t malloc -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -b 4096 -f 512 -i 2048 md${mdstart}$part > /dev/null
-mount -o async /dev/md${mdstart}$part $mntpoint || exit 1
+newfs -b 4096 -f 512 -i 2048 md$mdstart > /dev/null
+mount -o async /dev/md$mdstart $mntpoint || exit 1
cp /tmp/core5 $mntpoint
mkdir $mntpoint/dir
@@ -132,7 +131,7 @@ EOF
#include <time.h>
#include <unistd.h>
-#define MAXVNODES 4000
+#define MAXVNODES 5000
#define NBFILES 10000
#define PARALLEL 4
#define RTIME (10 * 60)
diff --git a/tools/test/stress2/misc/cpuset.sh b/tools/test/stress2/misc/cpuset.sh
index ad9f8569f386..359974a4bd87 100755
--- a/tools/test/stress2/misc/cpuset.sh
+++ b/tools/test/stress2/misc/cpuset.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/creat.sh b/tools/test/stress2/misc/creat.sh
new file mode 100755
index 000000000000..45f6b0f87301
--- /dev/null
+++ b/tools/test/stress2/misc/creat.sh
@@ -0,0 +1,83 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Demonstrate incorrect "out of inodes" message with SU enabled.
+# No issue seen with SU+J
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+set -eu
+prog=$(basename "$0" .sh)
+log=/tmp/$prog.log
+s=0
+mount | grep -q "on $mntpoint " && umount $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+
+mdconfig -a -t swap -s 100m -u $mdstart
+[ $# -eq 1 ] && flags="$@" || flags="-Un"
+echo "newfs $flags /dev/md$mdstart"
+newfs $flags /dev/md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+set +e
+
+ifree1=`df -i $mntpoint | tail -1 | awk '{print $7}'`
+before=`df -i $mntpoint`
+n=$(((ifree1 - 5) / 10))
+jot 10 | xargs -I% mkdir $mntpoint/%
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 60 ]; do
+ for j in `jot 10`; do
+ (
+ jot $n | xargs -P0 -I% touch $mntpoint/$j/%
+ jot $n | xargs -P0 -I% rm $mntpoint/$j/%
+ ) &
+ done
+ wait
+done 2>&1 | tee $log | head -5
+[ -s $log ] && s=3
+jot 10 | xargs -I% rmdir $mntpoint/%
+umount $mntpoint; mount /dev/md$mdstart $mntpoint
+
+ifree2=`df -i $mntpoint | tail -1 | awk '{print $7}'`
+after=`df -i $mntpoint | tail -1`
+if [ $ifree1 -ne $ifree2 ]; then
+ echo "$before"
+ echo "$after"
+ s=1
+ ls -alsrt $mntpoint | head -20
+fi
+
+umount $mntpoint
+fsck -fy /dev/md$mdstart > $log 2>&1
+grep -Eq "WAS MODIFIED" $log && { s=2; cat $log; }
+
+mdconfig -d -u $mdstart
+rm -f $log
+exit $s
diff --git a/tools/test/stress2/misc/crossmp.sh b/tools/test/stress2/misc/crossmp.sh
index 7d1ccbe3a469..0bd07cea2aaf 100755
--- a/tools/test/stress2/misc/crossmp.sh
+++ b/tools/test/stress2/misc/crossmp.sh
@@ -48,8 +48,7 @@ if [ $# -eq 0 ]; then
dd if=/dev/zero of=$D$m bs=1m count=1 status=none
mdconfig -a -t vnode -f $D$m -u $m
- bsdlabel -w md$m auto
- newfs $newfs_flags md${m}$part > /dev/null 2>&1
+ newfs $newfs_flags md${m} > /dev/null 2>&1
done
# start the parallel tests
@@ -77,7 +76,7 @@ else
# The test: Parallel mount and unmounts
for i in `jot 1024`; do
m=$1
- mount /dev/md${m}$part ${mntpoint}$m
+ mount /dev/md${m} ${mntpoint}$m
while mount | grep -q "on ${mntpoint}$m "; do
opt=$([ $((`date '+%s'` % 2)) -eq 0 ] &&
echo "-f")
diff --git a/tools/test/stress2/misc/crossmp10.sh b/tools/test/stress2/misc/crossmp10.sh
index 30e64a064dac..7833aec176cb 100755
--- a/tools/test/stress2/misc/crossmp10.sh
+++ b/tools/test/stress2/misc/crossmp10.sh
@@ -48,8 +48,7 @@ if [ $# -eq 0 ]; then
mdconfig -l | grep -q md$m && mdconfig -d -u $m
mdconfig -a -t swap -s ${size}m -u $m
- bsdlabel -w md$m auto
- mke2fs -m 0 /dev/md${m}$part > /dev/null 2>&1
+ mke2fs -m 0 /dev/md${m} > /dev/null 2>&1
done
# start the parallel tests
@@ -83,7 +82,7 @@ else
start=`date '+%s'`
while [ $((`date '+%s'` - start)) -lt 300 ]; do
m=$1
- mount -t ext2fs /dev/md${m}$part ${mntpoint}$m &&
+ mount -t ext2fs /dev/md${m} ${mntpoint}$m &&
chmod 777 ${mntpoint}$m
export RUNDIR=${mntpoint}$m/stressX
export CTRLDIR=${mntpoint}$m/stressX.control
diff --git a/tools/test/stress2/misc/crossmp11.sh b/tools/test/stress2/misc/crossmp11.sh
index 8bc008f6f504..8332b1592675 100755
--- a/tools/test/stress2/misc/crossmp11.sh
+++ b/tools/test/stress2/misc/crossmp11.sh
@@ -64,8 +64,7 @@ if [ $# -eq 0 ]; then
mdconfig -l | grep -q md$m && mdconfig -d -u $m
mdconfig -a -t swap -s ${size}m -u $m
- bsdlabel -w md$m auto
- newfs $newfs_flags md${m}$part > /dev/null 2>&1
+ newfs $newfs_flags md${m} > /dev/null 2>&1
done
# start the parallel tests
@@ -97,7 +96,7 @@ else
export runRUNTIME=20s
# The test: Parallel mount and unmounts
for i in `jot 3`; do
- mount /dev/md${m}$part ${mntpoint}$m &&
+ mount /dev/md${m} ${mntpoint}$m &&
chmod 777 ${mntpoint}$m
export RUNDIR=${mntpoint}$m/stressX
export CTRLDIR=${mntpoint}$m/stressX.control
diff --git a/tools/test/stress2/misc/crossmp3.sh b/tools/test/stress2/misc/crossmp3.sh
index 30c9f86840f1..5eecb936e900 100755
--- a/tools/test/stress2/misc/crossmp3.sh
+++ b/tools/test/stress2/misc/crossmp3.sh
@@ -57,8 +57,7 @@ if [ $# -eq 0 ]; then
mdconfig -l | grep -q md$m && mdconfig -d -u $m
mdconfig -a -t swap -s ${size}m -u $m
- bsdlabel -w md$m auto
- newfs $newfs_flags md${m}$part > /dev/null 2>&1
+ newfs $newfs_flags md${m} > /dev/null 2>&1
done
# start the parallel tests
@@ -87,9 +86,10 @@ else
else
export runRUNTIME=20s
# The test: Parallel mount and unmounts
+ start=`date +%s`
for i in `jot 3`; do
m=$1
- mount /dev/md${m}$part ${mntpoint}$m &&
+ mount /dev/md${m} ${mntpoint}$m &&
chmod 777 ${mntpoint}$m
export RUNDIR=${mntpoint}$m/stressX
export CTRLDIR=${mntpoint}$m/stressX.control
@@ -102,7 +102,10 @@ else
umount $opt ${mntpoint}$m > /dev/null 2>&1
[ -f $CONT ] || break 2
done
+ [ $((`date +%s` - start)) -gt 600 ] &&
+ { echo "Timed out"; s=1; }
done
rm -f $CONT
fi
+ exit $s
fi
diff --git a/tools/test/stress2/misc/crossmp4.sh b/tools/test/stress2/misc/crossmp4.sh
index 7f24097475f3..e22f969b72bb 100755
--- a/tools/test/stress2/misc/crossmp4.sh
+++ b/tools/test/stress2/misc/crossmp4.sh
@@ -52,9 +52,8 @@ if [ $# -eq 0 ]; then
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s ${size}m -u $mdstart
- bsdlabel -w md$mdstart auto
- newfs $newfs_flags md${mdstart}$part > /dev/null 2>&1
- mount /dev/md${mdstart}$part $mntpoint
+ newfs $newfs_flags md$mdstart > /dev/null 2>&1
+ mount /dev/md$mdstart $mntpoint
# start the parallel tests
for i in `jot $mounts`; do
diff --git a/tools/test/stress2/misc/crossmp5.sh b/tools/test/stress2/misc/crossmp5.sh
index 9a636c9aae45..b5a8304f2dcb 100755
--- a/tools/test/stress2/misc/crossmp5.sh
+++ b/tools/test/stress2/misc/crossmp5.sh
@@ -48,8 +48,7 @@ if [ $# -eq 0 ]; then
mdconfig -l | grep -q md$m && mdconfig -d -u $m
mdconfig -a -t swap -s ${size}m -u $m
- bsdlabel -w md$m auto
- newfs $newfs_flags md${m}$part > /dev/null 2>&1
+ newfs $newfs_flags md${m} > /dev/null 2>&1
done
# start the parallel tests
@@ -77,7 +76,7 @@ else
# The test: Parallel mount and unmount
m=$1
for i in `jot 200`; do
- mount /dev/md${m}$part ${mntpoint}$m
+ mount /dev/md${m} ${mntpoint}$m
chmod 777 ${mntpoint}$m
l=`jot -r 1 65535`
dd if=/dev/zero of=$mntpoint/$i bs=$l count=100 \
diff --git a/tools/test/stress2/misc/crossmp8.sh b/tools/test/stress2/misc/crossmp8.sh
index f8d06d6a4a30..e877dfaf6d1c 100755
--- a/tools/test/stress2/misc/crossmp8.sh
+++ b/tools/test/stress2/misc/crossmp8.sh
@@ -61,8 +61,7 @@ if [ $# -eq 0 ]; then
mdconfig -l | grep -q md$m && mdconfig -d -u $m
mdconfig -a -t swap -s ${size}m -u $m
- bsdlabel -w md$m auto
- newfs md${m}$part > /dev/null 2>&1
+ newfs md${m} > /dev/null 2>&1
done
# start the parallel tests
@@ -100,7 +99,7 @@ else
start=`date '+%s'`
while [ $((`date '+%s'` - start)) -lt 300 ]; do
m=$1
- mount /dev/md${m}$part ${mntpoint}$m &&
+ mount /dev/md${m} ${mntpoint}$m &&
chmod 777 ${mntpoint}$m
export RUNDIR=${mntpoint}$m/stressX
export CTRLDIR=${mntpoint}$m/stressX.control
diff --git a/tools/test/stress2/misc/crossmp9.sh b/tools/test/stress2/misc/crossmp9.sh
index e55f16b5ede4..b049f65aded9 100755
--- a/tools/test/stress2/misc/crossmp9.sh
+++ b/tools/test/stress2/misc/crossmp9.sh
@@ -47,8 +47,7 @@ if [ $# -eq 0 ]; then
mdconfig -l | grep -q md$m && mdconfig -d -u $m
mdconfig -a -t swap -s 512m -u $m
- bsdlabel -w md$m auto
- newfs $newfs_flags md${m}$part > /dev/null 2>&1
+ newfs $newfs_flags md${m} > /dev/null 2>&1
done
# start the parallel tests
@@ -78,7 +77,7 @@ else
start=`date '+%s'`
while [ $((`date '+%s'` - start)) -lt 300 ] ; do
m=$1
- mount /dev/md${m}$part ${mntpoint}$m
+ mount /dev/md${m} ${mntpoint}$m
while mount | grep -qw ${mntpoint}$m; do
opt=$([ $((`date '+%s'` % 2)) -eq 0 ] &&
echo "-f")
diff --git a/tools/test/stress2/misc/dangling.sh b/tools/test/stress2/misc/dangling.sh
index 5f3db6db00ec..cd807a382375 100755
--- a/tools/test/stress2/misc/dangling.sh
+++ b/tools/test/stress2/misc/dangling.sh
@@ -42,9 +42,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 4g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint || exit 1
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint || exit 1
chmod 777 $mntpoint
export runRUNTIME=4m
diff --git a/tools/test/stress2/misc/datagram.sh b/tools/test/stress2/misc/datagram.sh
index 895145a22c84..0eec052823b7 100755
--- a/tools/test/stress2/misc/datagram.sh
+++ b/tools/test/stress2/misc/datagram.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
@@ -59,7 +59,7 @@ int
main(void) {
struct sockaddr_un addr;
- int bytes, sockfd;
+ int sockfd;
char buf[1024];
unlink(filename);
@@ -78,7 +78,7 @@ main(void) {
sizeof(addr)) == -1)
err(1, "connect");
- bytes = read(sockfd, buf, sizeof(buf));
+ (void)read(sockfd, buf, sizeof(buf));
return (0);
}
diff --git a/tools/test/stress2/misc/datagram2.sh b/tools/test/stress2/misc/datagram2.sh
index 66cfd44711c2..746ea33cb734 100755
--- a/tools/test/stress2/misc/datagram2.sh
+++ b/tools/test/stress2/misc/datagram2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/datagram3.sh b/tools/test/stress2/misc/datagram3.sh
index ca54377befcc..a5e141702139 100755
--- a/tools/test/stress2/misc/datagram3.sh
+++ b/tools/test/stress2/misc/datagram3.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/datamove.sh b/tools/test/stress2/misc/datamove.sh
index a27a53e5e31b..67de998f3816 100755
--- a/tools/test/stress2/misc/datamove.sh
+++ b/tools/test/stress2/misc/datamove.sh
@@ -194,7 +194,7 @@ int startIO(int fd,char *buffer)
return 0;
}
-int main(int argc,char *argv[],char *envp[])
+int main(void)
{
int fdA,fdB,fdDelayA,fdDelayB;
diff --git a/tools/test/stress2/misc/datamove2.sh b/tools/test/stress2/misc/datamove2.sh
index 1b4c964a1f12..e503edf152a4 100755
--- a/tools/test/stress2/misc/datamove2.sh
+++ b/tools/test/stress2/misc/datamove2.sh
@@ -194,7 +194,7 @@ startIO(int fd, char *buffer)
}
int
-main(int argc, char *argv[], char *envp[])
+main(void)
{
int fdA, fdB, fdDelayA, fdDelayB;
diff --git a/tools/test/stress2/misc/datamove3.sh b/tools/test/stress2/misc/datamove3.sh
index 47a1cbce4c95..0cdd4b5c0c3c 100755
--- a/tools/test/stress2/misc/datamove3.sh
+++ b/tools/test/stress2/misc/datamove3.sh
@@ -161,7 +161,7 @@ mapBuffer(void *ar)
char *buffer;
int i;
- i = (int )ar;
+ i = (intptr_t)ar;
addr = mmap(NULL, pagesize * 2, PROT_READ | PROT_WRITE, MAP_SHARED, a[i].fd1, 0);
if (addr == MAP_FAILED) {
err(1, "Mmap failed");
@@ -192,7 +192,7 @@ startIO(int fd, char *buffer)
}
int
-main(int argc, char *argv[], char *envp[])
+main(void)
{
int fdA, fdB, fdDelayA, fdDelayB;
diff --git a/tools/test/stress2/misc/datamove5.sh b/tools/test/stress2/misc/datamove5.sh
index 5f4a868f03b1..49e97570100d 100755
--- a/tools/test/stress2/misc/datamove5.sh
+++ b/tools/test/stress2/misc/datamove5.sh
@@ -47,9 +47,8 @@ mount | grep -wq $mp2 && umount $mp2
mount | grep -wq $mp1 && umount $mp1
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mp1
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mp1
mount -t nullfs $opt $mp1 $mp2
chmod 777 $mp2
diff --git a/tools/test/stress2/misc/devfd.sh b/tools/test/stress2/misc/devfd.sh
index 1f5eecece0ca..a1ff329cda1c 100755
--- a/tools/test/stress2/misc/devfd.sh
+++ b/tools/test/stress2/misc/devfd.sh
@@ -47,9 +47,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
su $testuser -c "(cd $mntpoint; /tmp/devfd)"
diff --git a/tools/test/stress2/misc/devfs4.sh b/tools/test/stress2/misc/devfs4.sh
index eac87374db11..03a9f8cc8ca3 100755
--- a/tools/test/stress2/misc/devfs4.sh
+++ b/tools/test/stress2/misc/devfs4.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
@@ -32,4 +32,7 @@
[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+# This test creates havoc for a lot of programs
+exit 0
+
umount -f /dev && mount /dev
diff --git a/tools/test/stress2/misc/devfs5.sh b/tools/test/stress2/misc/devfs5.sh
index b0b1d98fc83e..ab96b37bfa2b 100755
--- a/tools/test/stress2/misc/devfs5.sh
+++ b/tools/test/stress2/misc/devfs5.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/dfull.sh b/tools/test/stress2/misc/dfull.sh
index 100784047dbc..5ee40698a96d 100755
--- a/tools/test/stress2/misc/dfull.sh
+++ b/tools/test/stress2/misc/dfull.sh
@@ -33,13 +33,12 @@
. ../default.cfg
-mount | grep "$mntpoint" | grep md${mdstart}$part > /dev/null && umount $mntpoint
+mount | grep "$mntpoint" | grep md$mdstart > /dev/null && umount $mntpoint
mdconfig -l | grep md$mdstart > /dev/null && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 512m -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
export RUNDIR=$mntpoint/stressX
set `df -ik $mntpoint | tail -1 | awk '{print $4,$7}'`
diff --git a/tools/test/stress2/misc/dtrace.sh b/tools/test/stress2/misc/dtrace.sh
index 3521ef3099e5..dc11e67edec5 100755
--- a/tools/test/stress2/misc/dtrace.sh
+++ b/tools/test/stress2/misc/dtrace.sh
@@ -36,9 +36,8 @@ dtrace -n 'dtrace:::BEGIN { exit(0); }' > /dev/null 2>&1 || exit 0
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=5m
diff --git a/tools/test/stress2/misc/dtrace_fault.sh b/tools/test/stress2/misc/dtrace_fault.sh
index 508cfc48cd59..6de6c058a998 100755
--- a/tools/test/stress2/misc/dtrace_fault.sh
+++ b/tools/test/stress2/misc/dtrace_fault.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Konstantin Belousov <kib@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/dup.sh b/tools/test/stress2/misc/dup.sh
index 7223709d09c4..89b4e637a737 100755
--- a/tools/test/stress2/misc/dup.sh
+++ b/tools/test/stress2/misc/dup.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/elf.sh b/tools/test/stress2/misc/elf.sh
index e0f88e5e90bc..5d7cbaaf9952 100755
--- a/tools/test/stress2/misc/elf.sh
+++ b/tools/test/stress2/misc/elf.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm
#
@@ -37,11 +37,13 @@
dir=/tmp
odir=`pwd`
+save=/tmp/elf.sh.img
+[ -f $save ] && { echo "$save exists"; exit 0; }
cc -o /tmp/flip -Wall -Wextra -O2 ../tools/flip.c || exit 1
set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
-[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
+[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
newfs $newfs_flags md$mdstart > /dev/null
mount /dev/md$mdstart $mntpoint
@@ -54,6 +56,7 @@ while [ $((`date +%s` - start)) -lt 180 ]; do
cp /bin/ps ./elf
for j in `jot 10`; do
/tmp/flip -n 1 ./elf
+ cp elf $save; fsync $save; sync
timeout -s SIGKILL 2 ./elf aux > /dev/null 2>&1 || break
rm -f *.core
done
@@ -67,5 +70,5 @@ for i in `jot 6`; do
{ echo FATAL; fstat -mf $mntpoint; exit 1; }
done
mdconfig -d -u $mdstart
-rm /tmp/flip
+rm /tmp/flip $save
exit 0
diff --git a/tools/test/stress2/misc/execpath.sh b/tools/test/stress2/misc/execpath.sh
new file mode 100755
index 000000000000..0e88472ae356
--- /dev/null
+++ b/tools/test/stress2/misc/execpath.sh
@@ -0,0 +1,104 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Bug 248184 - readlink("/proc/curproc/file") returns arbitrary correct name for programs with more than one link (name)
+# Test scenario for D32611 "exec: provide right hardlink name in AT_EXECPATH"
+
+. ../default.cfg
+[ `id -u` -ne 0 ] && echo "Must be root!" && exit 1
+
+dir=/tmp
+odir=`pwd`
+cd $dir
+sed '1,/^EOF/d' < $odir/$0 > $dir/execpath.c
+mycc -o execpath -Wall -Wextra -O0 -g execpath.c || exit 1
+rm -f execpath.c
+cd $odir
+
+set -e
+mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
+[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 2g -u $mdstart
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+set +e
+
+cd $mntpoint
+mkdir d1 d2
+cp /bin/sleep .
+ln sleep d1/sleep
+ln sleep d2/sleep
+s=0
+for p in $mntpoint/sleep $mntpoint/d1/sleep $mntpoint/d2/sleep; do
+ (cd `dirname $p`; ./`basename $p` 10) &
+ /bin/sleep .2
+ path=`procstat binary $! | awk "/$!/ {print \\$NF}"`
+ kill $!
+ wait
+ [ "$path" != "$p" ] && { s=1; echo "fail path=$path : prog=$p"; }
+done
+mv /tmp/execpath d1
+ln d1/execpath d2/execpath
+
+r=`./d1/execpath`
+echo $r | grep -q "/d1/" || { s=1; echo "fail: $r. Expected d1 @ 1"; }
+r=`./d2/execpath`
+echo $r | grep -q "/d2/" || { s=1; echo "fail: $r. Expected d2 @ 2"; }
+r=`(cd d1; ./execpath)`
+echo $r | grep -q "/d1/" || { s=1; echo "fail: $r. Expected d1 @ 3"; }
+r=`(cd d2; ./execpath)`
+echo $r | grep -q "/d2/" || { s=1; echo "fail: $r. Expected d2 @ 4"; }
+
+cd $odir
+
+for i in `jot 6`; do
+ mount | grep -q "on $mntpoint " || break
+ umount $mntpoint && break || sleep 10
+ [ $i -eq 6 ] &&
+ { echo FATAL; fstat -mf $mntpoint; exit 1; }
+done
+mdconfig -d -u $mdstart
+exit $s
+
+EOF
+/* Test scenario by Tobias Kortkamp <tobik@freebsd.org> */
+
+#include <sys/auxv.h>
+#include <limits.h>
+#include <stdio.h>
+
+int
+main(void)
+{
+ char pathname[PATH_MAX];
+
+ elf_aux_info(AT_EXECPATH, pathname, PATH_MAX);
+ puts(pathname);
+ return 0;
+}
diff --git a/tools/test/stress2/misc/exlock.sh b/tools/test/stress2/misc/exlock.sh
index 6e88f9437177..7369f6fe3834 100755
--- a/tools/test/stress2/misc/exlock.sh
+++ b/tools/test/stress2/misc/exlock.sh
@@ -43,9 +43,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
su $testuser -c "cd $mntpoint; /tmp/exlock"
diff --git a/tools/test/stress2/misc/exlock2.sh b/tools/test/stress2/misc/exlock2.sh
index 94e3f88f48e3..e1760cc52a4d 100755
--- a/tools/test/stress2/misc/exlock2.sh
+++ b/tools/test/stress2/misc/exlock2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
@@ -68,6 +68,7 @@ EOF
#include <unistd.h>
static _Atomic(int) *share;
+static int debug; /* Set to "1" for debug output */
static int quit;
static char file[80];
@@ -101,9 +102,8 @@ test1(void)
; /* wait for test2 to signal "done" */
close(fd);
}
-#if defined(DEBUG)
- fprintf(stderr, "%s: n = %d\n", __func__, n);
-#endif
+ if (debug != 0)
+ fprintf(stderr, "%s: n = %d\n", __func__, n);
_exit(0);
}
@@ -114,17 +114,15 @@ test2(void)
struct flock fl;
struct stat st;
time_t start;
- int e, fd, n;
+ int e, fd;
e = 0;
fd = 0;
- n = 0;
start = time(NULL);
while (time(NULL) - start < RUNTIME) {
share[SYNC] = 1;
if ((fd = open(file, O_RDWR)) == -1)
goto out;
- n++;
memset(&fl, 0, sizeof(fl));
fl.l_start = 0;
fl.l_len = 0;
@@ -151,12 +149,9 @@ out:
share[SYNC] = 0;
usleep(100);
}
-#if defined(DEBUG)
- if (e != 0) {
+ if (debug != 0 && e != 0)
system("ps -Uroot | grep -v grep | grep /tmp/exlock2 | "\
"awk '{print $1}' | xargs procstat -f");
- }
-#endif
share[SYNC] = 0;
_exit(e);
diff --git a/tools/test/stress2/misc/ext2fs2.sh b/tools/test/stress2/misc/ext2fs2.sh
index a576c582cc7e..748e45a33ffa 100755
--- a/tools/test/stress2/misc/ext2fs2.sh
+++ b/tools/test/stress2/misc/ext2fs2.sh
@@ -39,11 +39,12 @@ mount | grep "$mntpoint" | grep -q md$mdstart && umount -f $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart > /dev/null
+gpart add -t freebsd-ufs md$mdstart > /dev/null
mke2fs /dev/md${mdstart}a
# No panic seen when disabling hashed b-tree lookup for large directories
-# tune2fs -O ^dir_index /dev/md${mdstart}$part
-mount -t ext2fs /dev/md${mdstart}$part $mntpoint
+# tune2fs -O ^dir_index /dev/md$mdstart
+mount -t ext2fs /dev/md${mdstart}a $mntpoint
export RUNDIR=$mntpoint/stressX
export runRUNTIME=10m # Run tests for 10 minutes
diff --git a/tools/test/stress2/misc/ext3fs.sh b/tools/test/stress2/misc/ext3fs.sh
index 826317857f85..e5a0d9a09481 100755
--- a/tools/test/stress2/misc/ext3fs.sh
+++ b/tools/test/stress2/misc/ext3fs.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/ext4fs.sh b/tools/test/stress2/misc/ext4fs.sh
index 610351352501..ac5656ed7be0 100755
--- a/tools/test/stress2/misc/ext4fs.sh
+++ b/tools/test/stress2/misc/ext4fs.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/extattr.sh b/tools/test/stress2/misc/extattr.sh
index 31027eec696b..bd37c092bda8 100755
--- a/tools/test/stress2/misc/extattr.sh
+++ b/tools/test/stress2/misc/extattr.sh
@@ -42,14 +42,13 @@ mycc -o extattr -Wall extattr.c
rm -f extattr.c
cd $odir
-mount | grep "$mntpoint" | grep -q md${mdstart}$part && umount $mntpoint
+mount | grep "$mntpoint" | grep -q md$mdstart && umount $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 20m -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -O 2 md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -O 2 md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
mkdir -p $mntpoint/.attribute/system
cd $mntpoint/.attribute/system
@@ -58,9 +57,9 @@ extattrctl initattr -p . 388 posix1e.acl_access
extattrctl initattr -p . 388 posix1e.acl_default
cd /
umount $mntpoint
-tunefs -a enable /dev/md${mdstart}$part
-mount /dev/md${mdstart}$part $mntpoint
-mount | grep md${mdstart}$part
+tunefs -a enable /dev/md$mdstart
+mount /dev/md$mdstart $mntpoint
+mount | grep md$mdstart
touch $mntpoint/acl-test
setfacl -b $mntpoint/acl-test
diff --git a/tools/test/stress2/misc/extattr2.sh b/tools/test/stress2/misc/extattr2.sh
index 313d4ea26447..64cd73dcce47 100755
--- a/tools/test/stress2/misc/extattr2.sh
+++ b/tools/test/stress2/misc/extattr2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
@@ -41,14 +41,13 @@
[ -z "`which setfacl`" ] && exit 0
here=`pwd`
-mount | grep "$mntpoint" | grep -q md${mdstart}$part && umount $mntpoint
+mount | grep "$mntpoint" | grep -q md$mdstart && umount $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
mkdir -p $mntpoint/.attribute/system
cd $mntpoint/.attribute/system
@@ -57,9 +56,9 @@ extattrctl initattr -p . 388 posix1e.acl_access
extattrctl initattr -p . 388 posix1e.acl_default
cd /
umount $mntpoint
-tunefs -a enable /dev/md${mdstart}$part
-mount /dev/md${mdstart}$part $mntpoint
-mount | grep md${mdstart}$part
+tunefs -a enable /dev/md$mdstart
+mount /dev/md$mdstart $mntpoint
+mount | grep md$mdstart
export runRUNTIME=10m
export RUNDIR=$mntpoint/stressX
@@ -89,6 +88,6 @@ for i in `jot 6`; do
[ $i -eq 6 ] &&
{ echo FAIL; fstat -mf $mntpoint; exit 1; }
done
-checkfs /dev/md${mdstart}$part || s=1
+checkfs /dev/md$mdstart || s=1
mdconfig -d -u $mdstart || s=2
exit $s
diff --git a/tools/test/stress2/misc/extattr3.sh b/tools/test/stress2/misc/extattr3.sh
index 84b5e1821473..82d404400b7d 100755
--- a/tools/test/stress2/misc/extattr3.sh
+++ b/tools/test/stress2/misc/extattr3.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/extattr_set_fd.sh b/tools/test/stress2/misc/extattr_set_fd.sh
index 22bfa52f4813..3982318fe9e0 100755
--- a/tools/test/stress2/misc/extattr_set_fd.sh
+++ b/tools/test/stress2/misc/extattr_set_fd.sh
@@ -43,9 +43,8 @@ rm -f extattr_set_fd.c
mount | grep -q "$mntpoint" && umount $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
(cd $mntpoint; /tmp/extattr_set_fd)
diff --git a/tools/test/stress2/misc/extattrctl.sh b/tools/test/stress2/misc/extattrctl.sh
index dad79023a2fc..14cb44ab72b4 100755
--- a/tools/test/stress2/misc/extattrctl.sh
+++ b/tools/test/stress2/misc/extattrctl.sh
@@ -43,14 +43,13 @@
{ echo "Kernel not build with UFS_EXTATTR"; exit 0; }
[ -z "`which setfacl`" ] && exit 0
-mount | grep "$mntpoint" | grep -q md${mdstart}$part && umount $mntpoint
+mount | grep "$mntpoint" | grep -q md$mdstart && umount $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 20m -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -O 1 md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -O 1 md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
mkdir -p $mntpoint/.attribute/system
cd $mntpoint/.attribute/system
@@ -59,9 +58,9 @@ extattrctl initattr -p . 388 posix1e.acl_access
extattrctl initattr -p . 388 posix1e.acl_default
cd /
umount $mntpoint
-tunefs -a enable /dev/md${mdstart}$part
-mount /dev/md${mdstart}$part $mntpoint
-mount | grep md${mdstart}$part
+tunefs -a enable /dev/md$mdstart
+mount /dev/md$mdstart $mntpoint
+mount | grep md$mdstart
touch $mntpoint/acl-test
setfacl -b $mntpoint/acl-test
diff --git a/tools/test/stress2/misc/fcntl.sh b/tools/test/stress2/misc/fcntl.sh
index ccbcc45a325f..237cacdf6de8 100755
--- a/tools/test/stress2/misc/fcntl.sh
+++ b/tools/test/stress2/misc/fcntl.sh
@@ -26,7 +26,7 @@
# SUCH DAMAGE.
#
-# fcntl(2) locking scenario. No problems seen.
+# fcntl(2) locking scenario.
. ../default.cfg
@@ -45,6 +45,8 @@ rm -f /tmp/fcntl
exit $status
EOF
#include <sys/types.h>
+#include <sys/wait.h>
+
#include <err.h>
#include <errno.h>
#include <fcntl.h>
@@ -52,7 +54,6 @@ EOF
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <sys/wait.h>
#include <unistd.h>
#define PARALLEL 16
@@ -81,8 +82,9 @@ add(int n, int increment)
struct flock fl;
off_t pos;
long val, oval;
- int r;
+ int debug, r;
+ debug = 0; /* set to "1" for debug output. */
pos = n * sizeof(val);
memset(&fl, 0, sizeof(fl));
fl.l_start = pos;
@@ -107,10 +109,9 @@ add(int n, int increment)
}
oval = val;
val = val + increment;
-#if defined(DEBUG)
- fprintf(stderr, "add(%d, %d) @ pos %ld: %ld = %ld + %d\n",
- n, increment, (long)pos, val, oval, increment);
-#endif
+ if (debug != 0)
+ fprintf(stderr, "add(%d, %d) @ pos %ld: %ld = %ld + %d\n",
+ n, increment, (long)pos, val, oval, increment);
if (lseek(fd, pos, SEEK_SET) == -1)
err(1, "lseek");
while ((r = write(fd, &val, sizeof(val)) != sizeof(val))) {
@@ -178,9 +179,9 @@ down(void)
int
main(void)
{
- int flags, i;
- long val, sum;
off_t len;
+ long val, sum;
+ int flags, i;
signal(SIGHUP, handler);
signal(SIGALRM, ahandler);
diff --git a/tools/test/stress2/misc/fcntl2.sh b/tools/test/stress2/misc/fcntl2.sh
index 5f276ae81ccc..acb161fd0523 100755
--- a/tools/test/stress2/misc/fcntl2.sh
+++ b/tools/test/stress2/misc/fcntl2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
@@ -150,6 +150,8 @@ test(void)
}
close(fd);
unlink(file);
+ if (success == 0)
+ fprintf(stderr, "No calls to fcntl() succeeded.\n");
_exit(0);
}
diff --git a/tools/test/stress2/misc/fcntl3.sh b/tools/test/stress2/misc/fcntl3.sh
index 8892a9d5670b..650619b43762 100755
--- a/tools/test/stress2/misc/fcntl3.sh
+++ b/tools/test/stress2/misc/fcntl3.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Mark Johnston <markj@freebsd.org>
#
diff --git a/tools/test/stress2/misc/fexecve.sh b/tools/test/stress2/misc/fexecve.sh
index 01ff0b723134..432945061c64 100755
--- a/tools/test/stress2/misc/fexecve.sh
+++ b/tools/test/stress2/misc/fexecve.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/ffs_blkfree.sh b/tools/test/stress2/misc/ffs_blkfree.sh
index 5ea4828429c3..a71a979857ed 100755
--- a/tools/test/stress2/misc/ffs_blkfree.sh
+++ b/tools/test/stress2/misc/ffs_blkfree.sh
@@ -35,14 +35,13 @@ DUMP=$RUNDIR/dump
trap "rm -f $D" EXIT INT
dd if=/dev/zero of=$D bs=1m count=1024 status=none || exit 1
-mount | grep "$mntpoint" | grep md${mdstart}$part > /dev/null &&
+mount | grep "$mntpoint" | grep md$mdstart > /dev/null &&
umount $mntpoint
mdconfig -l | grep md$mdstart > /dev/null && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
mount
for i in `jot 10`; do
@@ -52,7 +51,7 @@ for i in `jot 10`; do
done
done
-dump -L0a -f $DUMP /dev/md${mdstart}$part
+dump -L0a -f $DUMP /dev/md$mdstart
ls -lf $DUMP
@@ -62,8 +61,8 @@ while mount | grep -q $mntpoint; do
done
for i in `jot 10`; do
- newfs $newfs_flags -n md${mdstart}$part > /dev/null
- mount /dev/md${mdstart}$part $mntpoint
+ newfs $newfs_flags -n md$mdstart > /dev/null
+ mount /dev/md$mdstart $mntpoint
(cd $mntpoint; restore -rf $DUMP)
rm -rf $mntpoint/*
while mount | grep -q $mntpoint; do
diff --git a/tools/test/stress2/misc/ffs_sync.sh b/tools/test/stress2/misc/ffs_sync.sh
index aa970839c7b3..c2f4bc962d11 100755
--- a/tools/test/stress2/misc/ffs_sync.sh
+++ b/tools/test/stress2/misc/ffs_sync.sh
@@ -44,9 +44,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 4g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
for i in `jot 3`; do
diff --git a/tools/test/stress2/misc/ffs_syncvnode.sh b/tools/test/stress2/misc/ffs_syncvnode.sh
index faa9856a8bca..96991ca7904c 100755
--- a/tools/test/stress2/misc/ffs_syncvnode.sh
+++ b/tools/test/stress2/misc/ffs_syncvnode.sh
@@ -39,11 +39,10 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=20m
diff --git a/tools/test/stress2/misc/ffs_syncvnode2.sh b/tools/test/stress2/misc/ffs_syncvnode2.sh
index 5fd9e4cfe843..a3356183a15d 100755
--- a/tools/test/stress2/misc/ffs_syncvnode2.sh
+++ b/tools/test/stress2/misc/ffs_syncvnode2.sh
@@ -41,11 +41,10 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=20m
diff --git a/tools/test/stress2/misc/fifo.sh b/tools/test/stress2/misc/fifo.sh
index 17881bd9eb00..773ceaedd938 100755
--- a/tools/test/stress2/misc/fifo.sh
+++ b/tools/test/stress2/misc/fifo.sh
@@ -47,15 +47,14 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
(cd $mntpoint; /tmp/fifo)
for i in `jot 10`; do
- mount | grep -q md${mdstart}$part && \
+ mount | grep -q md$mdstart && \
umount $mntpoint && mdconfig -d -u $mdstart && break
sleep 10
done
@@ -75,13 +74,12 @@ EOF
int
main(void)
{
- int fd;
if (mkfifo("fifo", 0644) == -1)
err(1, "mkfifo");
- fd = open("fifo", O_RDWR | O_SHLOCK | O_EXLOCK);
- fd = open("fifo", 0x60e9f2, 0xc74c65b1db4be370, 0xb64a34df72368759);
+ (void)open("fifo", O_RDWR | O_SHLOCK | O_EXLOCK);
+ (void)open("fifo", 0x60e9f2, 0xc74c65b1db4be370, 0xb64a34df72368759);
return (0);
}
diff --git a/tools/test/stress2/misc/fifo2.sh b/tools/test/stress2/misc/fifo2.sh
index 7f269f2368d4..4a7b986931d9 100755
--- a/tools/test/stress2/misc/fifo2.sh
+++ b/tools/test/stress2/misc/fifo2.sh
@@ -45,9 +45,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
mkfifo $mntpoint/f
chmod 777 $mntpoint/f
@@ -66,13 +65,13 @@ while [ $((`date '+%s'` - st)) -lt $((10 * sleeptime)) ]; do
done
for i in `jot 10`; do
- mount | grep -q md${mdstart}$part && \
+ mount | grep -q md$mdstart && \
umount $mntpoint > /dev/null 2>&1 &&
mdconfig -d -u $mdstart && break
sleep 10
done
s=0
-mount | grep -q md${mdstart}$part &&
+mount | grep -q md$mdstart &&
{ echo "umount $mntpoint failed"; s=1; }
rm -f /tmp/fifo2
exit $s
@@ -97,6 +96,7 @@ EOF
#include <unistd.h>
#define N (128 * 1024 / (int)sizeof(u_int32_t))
+static int debug; /* Set to 1 for debug output */
u_int32_t r[N];
static void
@@ -133,7 +133,7 @@ static void *
calls(void *arg __unused)
{
unsigned long arg1, arg2, arg3, arg4, arg5, arg6, arg7;
- int i, num;
+ int i;
for (i = 0;; i++) {
arg1 = (unsigned long)(void *)"f";
@@ -144,14 +144,12 @@ calls(void *arg __unused)
arg6 = makearg();
arg7 = makearg();
-#if 0
- fprintf(stderr, "%2d : syscall(%3d, %lx, %lx, %lx, %lx, %lx, %lx, %lx)\n",
- i, SYS_open, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
+ if (debug != 0)
+ fprintf(stderr, "%2d : syscall(%3d, %lx, %lx, %lx, %lx, %lx, %lx, %lx)\n",
+ i, SYS_open, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
usleep(100000);
-#endif
alarm(1);
syscall(SYS_open, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
- num = 0;
}
return (0);
diff --git a/tools/test/stress2/misc/fifo3.sh b/tools/test/stress2/misc/fifo3.sh
index 04fca483eabf..4ffd34e2f424 100755
--- a/tools/test/stress2/misc/fifo3.sh
+++ b/tools/test/stress2/misc/fifo3.sh
@@ -188,9 +188,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
(cd $mntpoint; /tmp/fifo3 ) &
diff --git a/tools/test/stress2/misc/fifo4.sh b/tools/test/stress2/misc/fifo4.sh
index 7f46f8537dc6..2a8a149e3105 100755
--- a/tools/test/stress2/misc/fifo4.sh
+++ b/tools/test/stress2/misc/fifo4.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/flock.sh b/tools/test/stress2/misc/flock.sh
index 451fec4b518a..cbb07e14085d 100755
--- a/tools/test/stress2/misc/flock.sh
+++ b/tools/test/stress2/misc/flock.sh
@@ -53,9 +53,8 @@ cd $odir
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
(cd $mntpoint; /tmp/flock)
e=$?
diff --git a/tools/test/stress2/misc/flock_open_close.sh b/tools/test/stress2/misc/flock_open_close.sh
index 173cdcbf2e75..01e376319abe 100755
--- a/tools/test/stress2/misc/flock_open_close.sh
+++ b/tools/test/stress2/misc/flock_open_close.sh
@@ -46,9 +46,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
cp /bin/test $mntpoint
@@ -67,11 +66,11 @@ wait $pid
s=$?
for i in `jot 10`; do
- mount | grep -q md${mdstart}$part && \
+ mount | grep -q md$mdstart && \
umount $mntpoint && mdconfig -d -u $mdstart && break
sleep 2
done
-if mount | grep -q md${mdstart}$part; then
+if mount | grep -q md$mdstart; then
fstat $mntpoint
echo "umount $mntpoint failed"
exit 1
@@ -124,9 +123,8 @@ child(const char *binary)
static void
exec_child(char **av)
{
- int fd;
- fd = open(av[0], O_RDONLY | O_SHLOCK);
+ (void)open(av[0], O_RDONLY | O_SHLOCK);
execv(av[0], av);
/* "flock_open_close: execv(/mnt/test): Text file busy" seen */
err(127, "execv(%s)", av[0]);
diff --git a/tools/test/stress2/misc/force.sh b/tools/test/stress2/misc/force.sh
index 4c5cd6c255f6..61f15b0d5b8b 100755
--- a/tools/test/stress2/misc/force.sh
+++ b/tools/test/stress2/misc/force.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
diff --git a/tools/test/stress2/misc/force10.sh b/tools/test/stress2/misc/force10.sh
new file mode 100755
index 000000000000..d0ff36ae2ef9
--- /dev/null
+++ b/tools/test/stress2/misc/force10.sh
@@ -0,0 +1,92 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm
+#
+# 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.
+#
+
+# "mdconfig -o force" test scenario. Simplification of force7.sh
+
+# panic: buf_alloc: BUF_LOCK on free buf 0xfffffe0038652410: 16.
+# https://people.freebsd.org/~pho/stress/log/log0270.txt
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+set -u
+log=/tmp/force10.sh.log
+mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+truncate -s 1g $diskimage
+mdconfig -a -t vnode -f $diskimage -s 1g -u $mdstart
+flags=$newfs_flags
+echo "newfs $flags md$mdstart"
+newfs $flags md$mdstart > /dev/null 2>&1
+
+#export TESTPROGS=`cd ..; find testcases/ -perm -1 -type f | \
+# egrep -Ev "/run/|/badcode/|/pty/|/shm/|/socket/|sysctl|tcp|thr|udp"`
+export TESTPROGS='
+testcases/creat/creat
+testcases/swap/swap
+'
+export runRUNTIME=3m
+export RUNDIR=$mntpoint/stressX
+s=0
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 300 ]; do
+ mount /dev/md$mdstart $mntpoint
+ rm -fr $mntpoint/lost+found
+ chmod 777 $mntpoint
+
+ su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS' > \
+ /dev/null 2>&1 &
+
+ sleep `jot -r 1 5 9`
+ while mdconfig -l | grep -q md$mdstart; do
+ mdconfig -d -u $mdstart -o force || sleep 1
+ done
+ sleep 1
+ ../tools/killall.sh
+ wait
+ n=0
+ while mount | grep $mntpoint | grep -q /dev/md; do
+ umount $mntpoint || sleep 1
+ [ $((n += 1)) -gt 300 ] && { echo FAIL; exit 1; }
+ done
+ mdconfig -a -t vnode -f $diskimage -s 1g -u $mdstart
+ for i in `jot 10`; do
+ fsck_ffs -fy /dev/md$mdstart > $log 2>&1
+ grep -Eq "FILE SYSTEM WAS MODIFIED" $log || break
+ done
+ [ $i -gt 2 ] && echo "Ran fsck $i times"
+ [ $i -eq 10 ] && { s=1; break; }
+done
+if [ $s -eq 0 ]; then
+ mdconfig -d -u $mdstart
+ rm -f $diskimage $log
+else
+ cat $log
+fi
+exit $s
diff --git a/tools/test/stress2/misc/force11.sh b/tools/test/stress2/misc/force11.sh
new file mode 100755
index 000000000000..229a83ce69fe
--- /dev/null
+++ b/tools/test/stress2/misc/force11.sh
@@ -0,0 +1,100 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+set -u
+backup=`dirname $diskimage`/force11.sh.diskimage.`date +%Y%m%dT%H%M%S`
+log=/tmp/force11.sh.log
+mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+truncate -s 10g $diskimage
+mdconfig -a -t vnode -f $diskimage -u $mdstart
+flags=$newfs_flags
+[ `jot -r 1 0 1` -eq 1 ] && flags="-j"
+echo "newfs $flags md$mdstart"
+newfs $flags md$mdstart > /dev/null 2>&1
+
+export TESTPROGS=`cd ..; find testcases/ -perm -1 -type f | \
+ egrep -Ev "/run/|/badcode/|/pty/|/shm/|/socket/|sysctl|tcp|thr|udp|rename"`
+export runRUNTIME=3m
+export RUNDIR=$mntpoint/stressX
+export CTRLDIR=$mntpoint/stressX.control
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt $((15 * 60)) ]; do
+ mount /dev/md$mdstart $mntpoint
+ rm -fr $mntpoint/lost+found
+ chmod 777 $mntpoint
+
+ su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS' > \
+ /dev/null 2>&1 &
+
+ sleep `jot -r 1 30 60`
+ while mdconfig -l | grep -q md$mdstart; do
+ mdconfig -d -u $mdstart -o force || sleep 1
+ done
+ sleep 1
+ ../tools/killall.sh
+ wait
+ dd if=$diskimage of=$backup bs=1m conv=sparse,sync status=none
+ sync; sleep .5; sync; sleep .5; sync
+ n=0
+ while mount | grep $mntpoint | grep -q /dev/md; do
+ umount $mntpoint || sleep 1
+ [ $((n += 1)) -gt 300 ] && { echo FAIL; exit 1; }
+ done
+ mdconfig -a -t vnode -f $diskimage -u $mdstart
+ c=0
+ for i in `jot 5`; do
+ fsck_ffs -fyR /dev/md$mdstart > $log 2>&1; s=$?
+ grep -q CLEAN $log && grep -q "MODIFIED" $log && c=$((c+=1))
+ grep -Eq "FILE SYSTEM WAS MODIFIED" $log || break
+ done
+ [ $c -gt 1 ] &&
+ { echo "Note: FS marked clean+modified $c times out of $i fsck runs"; s=101; }
+ [ $s -ne 0 ] && break
+ grep -Eq "IS CLEAN|MARKED CLEAN" $log || { s=100; break; }
+ break # For now, only once
+done
+if [ $s -eq 0 ]; then
+ mount /dev/md$mdstart $mntpoint
+ cp -R /usr/include $mntpoint || s=1
+ dd if=/dev/zero of=$mntpoint/big bs=1m count=10 status=none || s=2
+ ls -lR $mntpoint > /dev/null || s=3
+ find $mntpoint/* -delete || s=4
+ umount $mntpoint
+ [ $s -eq 0 ] &&
+ rm -f $diskimage $log $backup
+else
+ tail -10 $log
+fi
+mdconfig -d -u $mdstart
+[ -f $backup ] && xz -T0 $backup
+exit $s
diff --git a/tools/test/stress2/misc/force12.sh b/tools/test/stress2/misc/force12.sh
new file mode 100755
index 000000000000..c030adb16d86
--- /dev/null
+++ b/tools/test/stress2/misc/force12.sh
@@ -0,0 +1,83 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# rename() livelock seen with a forced unmount of a FS
+# https://people.freebsd.org/~pho/stress/log/log0375.txt
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+echo "Known issue. Skipping ..."; exit 0
+
+set -u
+log=/tmp/force12.sh.log
+mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 4g -u $mdstart
+flags=$newfs_flags
+[ `jot -r 1 0 1` -eq 1 ] && flags="-j"
+echo "newfs $flags md$mdstart"
+newfs $flags md$mdstart > /dev/null 2>&1
+
+export TESTPROGS='
+testcases/dirnprename/dirnprename
+testcases/dirrename/dirrename
+testcases/fts/fts
+testcases/mkdir/mkdir
+testcases/rename/rename
+testcases/rw/rw
+testcases/swap/swap
+'
+
+export runRUNTIME=3m
+export RUNDIR=$mntpoint/stressX
+export CTRLDIR=$mntpoint/stressX.control
+
+mount /dev/md$mdstart $mntpoint
+chmod 777 $mntpoint
+export dirnprenameLOAD=100
+export dirrenameLOAD=100
+
+su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS' > \
+ /dev/null 2>&1 &
+
+sleep `jot -r 1 60 180`
+while mdconfig -l | grep -q md$mdstart; do
+ mdconfig -d -u $mdstart -o force || sleep 1
+done
+sleep 1
+../tools/killall.sh
+wait
+n=0
+while mount | grep $mntpoint | grep -q /dev/md; do
+ umount $mntpoint || sleep 1
+ [ $((n += 1)) -gt 30 ] && { echo FAIL; exit 1; }
+done
+mdconfig -d -u $mdstart > /dev/null 2>&1
+rm -f $log
+exit 0
diff --git a/tools/test/stress2/misc/force13.sh b/tools/test/stress2/misc/force13.sh
new file mode 100755
index 000000000000..ac32ee90e38c
--- /dev/null
+++ b/tools/test/stress2/misc/force13.sh
@@ -0,0 +1,129 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Snapshot test
+
+# "panic: flush_pagedep_deps: failed to flush inodedep 0xfff..." seen:
+# https://people.freebsd.org/~pho/stress/log/log0376.txt
+
+# watchdog fired:
+# https://people.freebsd.org/~pho/stress/log/log0377.txt
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+set -u
+log=/tmp/force13.sh.log
+mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+truncate -s 10g $diskimage
+mdconfig -a -t vnode -f $diskimage -u $mdstart
+flags=$newfs_flags
+[ `jot -r 1 0 1` -eq 1 ] && flags="-j"
+
+echo "newfs $flags md$mdstart"
+newfs $flags md$mdstart > /dev/null 2>&1
+
+# Exclude rename for now due to log0374.txt
+export TESTPROGS=`cd ..; find testcases/ -perm -1 -type f | \
+ egrep -Ev "/run/|/badcode/|/pty/|/shm/|/socket/|sysctl|tcp|thr|udp|rename"`
+export runRUNTIME=3m
+export RUNDIR=$mntpoint/stressX
+export CTRLDIR=$mntpoint/stressX.control
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt $((15 * 60)) ]; do
+ mount /dev/md$mdstart $mntpoint
+ rm -fr $mntpoint/lost+found
+ chmod 777 $mntpoint
+
+ su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS' > \
+ /dev/null 2>&1 &
+
+ t=`jot -r 1 60 180`
+ start=`date +%s`
+ mkdir -p $mntpoint/.snap
+ for i in `jot 10`; do
+ rm -f $mntpoint/.snap/$i
+ mksnap_ffs $mntpoint $mntpoint/.snap/$i ||
+ { ../tools/killall.sh; break; }
+ sleep `jot -r 1 1 5`
+ [ $((`date +%s` - start)) -ge $t ] && break
+ done &
+ sleep `jot -r 1 60 180`
+ while mdconfig -l | grep -q md$mdstart; do
+ mdconfig -d -u $mdstart -o force || sleep 1
+ done
+ sleep 1
+ ../tools/killall.sh
+ wait
+ n=0
+ while mount | grep -q "on $mntpoint "; do
+ umount $mntpoint || sleep 1
+ [ $((n += 1)) -gt 300 ] && { echo FAIL; exit 1; }
+ done
+ mdconfig -a -t vnode -f $diskimage -u $mdstart
+ c=0
+ # Run fsck minimum two times
+ for i in `jot 5`; do
+ fsck_ffs -fy /dev/md$mdstart > $log 2>&1; s=$?
+ grep -q CLEAN $log && grep -q "MODIFIED" $log && c=$((c+=1))
+ grep -Eq "FILE SYSTEM WAS MODIFIED" $log || break
+ done
+ [ $c -gt 1 ] &&
+ { echo "Note: FS marked clean+modified $c times out of $i fsck runs"; s=101; }
+ [ $s -ne 0 ] && break
+ grep -Eq "IS CLEAN|MARKED CLEAN" $log || { s=102; break; }
+done
+[ $s -eq 101 ] && s=0 # Ignore CLEANish problem for now
+if [ $s -eq 0 ]; then
+ mount /dev/md$mdstart $mntpoint
+ cp -R /usr/include $mntpoint
+ dd if=/dev/zero of=$mntpoint/big bs=1m count=10 status=none
+ find $mntpoint/* -delete
+
+ # Check the snapshots
+ for f in $mntpoint/.snap/*; do
+ c=0
+ for i in `jot 5`; do
+ echo "fsck_ffs -fy $f"
+ fsck_ffs -fy $f > $log 2>&1; s=$?
+ grep -q CLEAN $log && grep -q "MODIFIED" $log && c=$((c+=1))
+ grep -Eq "FILE SYSTEM WAS MODIFIED" $log || break
+ done
+ [ $c -gt 1 ] &&
+ { echo "Note: snapshot $i marked clean+modified $c times out of $i fsck runs"; s=201; }
+ [ $s -ne 0 ] && break
+ grep -Eq "IS CLEAN|MARKED CLEAN" $log ||
+ { s=202; tail -10 $log; break; }
+ done
+ umount $mntpoint
+ mdconfig -d -u $mdstart
+ rm -f $diskimage $log
+fi
+exit $s
diff --git a/tools/test/stress2/misc/force14.sh b/tools/test/stress2/misc/force14.sh
new file mode 100755
index 000000000000..eec850c50891
--- /dev/null
+++ b/tools/test/stress2/misc/force14.sh
@@ -0,0 +1,119 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# SU+J Snapshot test with a 50G file system
+
+# "panic: handle_jwork: Unknown type jnewblk" seen:
+# https://people.freebsd.org/~pho/stress/log/log0422.txt
+
+# "panic: flush_pagedep_deps: failed to flush inodedep..." seen:
+# https://people.freebsd.org/~pho/stress/log/log0423.txt
+
+# "panic: softdep_deallocate_dependencies: dangling deps" seen:
+# https://people.freebsd.org/~pho/stress/log/log0424.txt
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+set -u
+log=/tmp/force14.sh.log
+mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+truncate -s 50g $diskimage
+mdconfig -a -t vnode -f $diskimage -u $mdstart
+flags="-j"
+
+newfs $flags md$mdstart > /dev/null 2>&1
+
+# Exclude rename for now due to log0374.txt
+export TESTPROGS=`cd ..; find testcases/ -perm -1 -type f | \
+ egrep -Ev "/run/|/badcode/|/pty/|/shm/|/socket/|sysctl|tcp|thr|udp|rename"`
+export runRUNTIME=3m
+export RUNDIR=$mntpoint/stressX
+export CTRLDIR=$mntpoint/stressX.control
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt $((15 * 60)) ]; do
+ mount /dev/md$mdstart $mntpoint
+ rm -fr $mntpoint/lost+found
+ chmod 777 $mntpoint
+
+ su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS' > \
+ /dev/null 2>&1 &
+
+ t=`jot -r 1 60 180`
+ st=`date +%s`
+ mkdir -p $mntpoint/.snap
+ for i in `jot 10`; do
+ rm -f $mntpoint/.snap/$i
+ mksnap_ffs $mntpoint $mntpoint/.snap/$i ||
+ { ../tools/killall.sh; break; }
+ sleep `jot -r 1 1 5`
+ [ $((`date +%s` - st)) -ge $t ] && break
+ done &
+ sleep `jot -r 1 60 180`
+ while mdconfig -l | grep -q md$mdstart; do
+ mdconfig -d -u $mdstart -o force || sleep 1
+ done
+ sleep 1
+ ../tools/killall.sh
+ wait
+ n=0
+ while mount | grep -q "on $mntpoint "; do
+ umount $mntpoint || sleep 1
+ [ $((n += 1)) -gt 300 ] && { echo FAIL; exit 1; }
+ done
+ mdconfig -a -t vnode -f $diskimage -u $mdstart
+ c=0
+ # Process the journal
+ fsck_ffs -fy /dev/md$mdstart > $log 2>&1; s=$?
+ grep 'INTERNAL ERROR: GOT TO reply' $log
+ for i in `jot 4`; do
+ [ $i -ne 1 ] &&
+ echo "fsck_ffs -fy /dev/md$mdstart"
+ fsck_ffs -fy /dev/md$mdstart > $log 2>&1; s=$?
+ grep 'INTERNAL ERROR: GOT TO reply' $log
+ grep -q CLEAN $log && c=$((c+=1))
+ grep -Eq "WAS MODIFIED" $log || break
+ done
+ [ $c -gt 1 ] &&
+ { echo "Note: FS marked clean+modified $c times out of $i fsck runs"; s=101; }
+ [ $s -ne 0 ] && break
+ grep -Eq "IS CLEAN|MARKED CLEAN" $log || { s=102; break; }
+done
+if [ $s -eq 0 ]; then
+ mount /dev/md$mdstart $mntpoint
+ cp -R /usr/include $mntpoint
+ dd if=/dev/zero of=$mntpoint/big bs=1m count=10 status=none
+ find $mntpoint/* -delete
+
+ umount $mntpoint
+ mdconfig -d -u $mdstart
+ rm -f $diskimage $log
+fi
+exit $s
diff --git a/tools/test/stress2/misc/force15.sh b/tools/test/stress2/misc/force15.sh
new file mode 100755
index 000000000000..955025cd98c6
--- /dev/null
+++ b/tools/test/stress2/misc/force15.sh
@@ -0,0 +1,113 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# FFS+SU with snapshots and forced unmounts
+
+# "panic: flush_pagedep_deps: failed to flush inodedep ..." seen
+# https://people.freebsd.org/~pho/stress/log/log0427.txt
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+prog=$(basename "$0" .sh)
+diskimage=/tmp/diskimage
+log=/tmp/$prog.log
+mdstart=10
+mntpoint=/mnt
+newfs_flags="-U"
+
+set -u
+mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+dd if=/dev/zero of=$diskimage bs=1m count=1k status=none
+mdconfig -a -t vnode -f $diskimage -u $mdstart
+flags="-U"
+
+newfs $flags md$mdstart > /dev/null 2>&1
+
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt $((5 * 60)) ]; do
+ mount /dev/md$mdstart $mntpoint
+ rm -fr $mntpoint/lost+found
+
+ jot 10 | xargs -I% mkdir -p $mntpoint/%
+ n=5000
+ for j in `jot 10`; do
+ (
+ jot $n | xargs -P0 -I% touch $mntpoint/$j/%
+ jot $n | xargs -P0 -I% rm $mntpoint/$j/%
+ ) > /dev/null 2>&1 &
+ done
+
+ sleep `jot -r 1 5 20`
+ t=`jot -r 1 60 180`
+ st=`date +%s`
+ mkdir -p $mntpoint/.snap
+ for i in `jot 10`; do
+ rm -f $mntpoint/.snap/$i
+ mksnap_ffs $mntpoint $mntpoint/.snap/$i > /dev/null 2>&1 || break
+ sleep `jot -r 1 1 5`
+ [ $((`date +%s` - st)) -ge $t ] && break
+ done &
+ sleep `jot -r 1 2 5`
+ while mdconfig -l | grep -q md$mdstart; do
+ mdconfig -d -u $mdstart -o force || sleep 1
+ done
+ sleep 1
+ wait
+ n=0
+ while mount | grep -q "on $mntpoint "; do
+ umount $mntpoint || sleep 1
+ [ $((n += 1)) -gt 300 ] && { echo FAIL; exit 1; }
+ done
+ mdconfig -a -t vnode -f $diskimage -u $mdstart
+ c=0
+ for i in `jot 5`; do
+ [ $i -ne 1 ] &&
+ echo "$i: fsck_ffs -fy /dev/md$mdstart"
+ fsck_ffs -fy /dev/md$mdstart > $log 2>&1; s=$?
+ grep 'INTERNAL ERROR: GOT TO reply' $log
+ grep -q CLEAN $log && grep -q MODIFIED && c=$((c+=1))
+ grep -Eq "WAS MODIFIED" $log || break
+ done
+ [ $c -gt 1 ] &&
+ { echo "Note: FS marked clean+modified $c times out of $i fsck runs"; s=101; }
+ [ $s -ne 0 ] && break
+ grep -Eq "IS CLEAN|MARKED CLEAN" $log || { s=102; break; }
+done
+if [ $s -eq 0 ]; then
+ mount /dev/md$mdstart $mntpoint
+ cp -R /usr/include $mntpoint
+ dd if=/dev/zero of=$mntpoint/big bs=1m count=10 status=none
+ find $mntpoint/* -delete
+
+ umount $mntpoint
+ mdconfig -d -u $mdstart
+ rm -f $diskimage $log
+fi
+exit $s
diff --git a/tools/test/stress2/misc/force2.sh b/tools/test/stress2/misc/force2.sh
index 35e448afbbba..cd947ef7d13d 100755
--- a/tools/test/stress2/misc/force2.sh
+++ b/tools/test/stress2/misc/force2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
diff --git a/tools/test/stress2/misc/force3.sh b/tools/test/stress2/misc/force3.sh
index 4bfb0011cbef..2fc947bb0af6 100755
--- a/tools/test/stress2/misc/force3.sh
+++ b/tools/test/stress2/misc/force3.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
diff --git a/tools/test/stress2/misc/force4.sh b/tools/test/stress2/misc/force4.sh
index b1b05dc54efa..69bbb7f4c978 100755
--- a/tools/test/stress2/misc/force4.sh
+++ b/tools/test/stress2/misc/force4.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
@@ -82,7 +82,7 @@ done
sleep 1
../tools/killall.sh
wait
-umount $mp2
+mount | grep -q "on $mp2 " && umount $mp2
n=0
while mount | grep $mntpoint | grep -q /dev/md; do
umount $mntpoint || sleep 1
diff --git a/tools/test/stress2/misc/force5.sh b/tools/test/stress2/misc/force5.sh
index c0aa6436fc1f..263761211148 100755
--- a/tools/test/stress2/misc/force5.sh
+++ b/tools/test/stress2/misc/force5.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
diff --git a/tools/test/stress2/misc/force6.sh b/tools/test/stress2/misc/force6.sh
index 5c7d508241ec..22b362d51573 100755
--- a/tools/test/stress2/misc/force6.sh
+++ b/tools/test/stress2/misc/force6.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
diff --git a/tools/test/stress2/misc/force7.sh b/tools/test/stress2/misc/force7.sh
index 1e987bc13a72..e828b0090f7b 100755
--- a/tools/test/stress2/misc/force7.sh
+++ b/tools/test/stress2/misc/force7.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
@@ -30,6 +30,9 @@
# "mdconfig -o force" test scenario.
# fsck_ffs core dump seen
+# "panic: buf_alloc: BUF_LOCK on free buf 0xfffffe003c9f8360: 16." seen:
+# https://people.freebsd.org/~pho/stress/log/log0266.txt
+
[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
. ../default.cfg
diff --git a/tools/test/stress2/misc/force8.sh b/tools/test/stress2/misc/force8.sh
index 77a8e6fd97bf..26361890f02f 100755
--- a/tools/test/stress2/misc/force8.sh
+++ b/tools/test/stress2/misc/force8.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm
#
diff --git a/tools/test/stress2/misc/force9.sh b/tools/test/stress2/misc/force9.sh
index 325b227888a6..54a17f20e036 100755
--- a/tools/test/stress2/misc/force9.sh
+++ b/tools/test/stress2/misc/force9.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
@@ -31,12 +31,15 @@
# "panic: ffs_checkblk: cylinder group read failed" seen:
# https://people.freebsd.org/~pho/stress/log/log0170.txt
-" "panic: softdep_update_inodeblock inconsistent ip ..." seen:
+# "panic: softdep_update_inodeblock inconsistent ip ..." seen:
# https://people.freebsd.org/~pho/stress/log/log0184.txt
+# Watchdog fired: https://people.freebsd.org/~pho/stress/log/log0374.txt
+
[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
. ../default.cfg
+set -u
log=/tmp/force7.sh.log
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
@@ -46,22 +49,22 @@ flags=$newfs_flags
echo "newfs $flags md$mdstart"
newfs $flags md$mdstart > /dev/null 2>&1
+# Exclude rename for now due to log0374.txt
export TESTPROGS=`cd ..; find testcases/ -perm -1 -type f | \
- egrep -Ev "/run/|/badcode/|/pty/|/shm/|/socket/|sysctl|tcp|thr|udp"`
+ egrep -Ev "/run/|/badcode/|/pty/|/shm/|/socket/|sysctl|tcp|thr|udp|rename"`
export runRUNTIME=3m
export RUNDIR=$mntpoint/stressX
+export CTRLDIR=$mntpoint/stressX.control
start=`date +%s`
while [ $((`date +%s` - start)) -lt $((15 * 60)) ]; do
mount /dev/md$mdstart $mntpoint
rm -fr $mntpoint/lost+found
chmod 777 $mntpoint
- echo "Start tests"
su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS' > \
/dev/null 2>&1 &
sleep `jot -r 1 60 180`
- echo "Force destroy MD disk"
while mdconfig -l | grep -q md$mdstart; do
mdconfig -d -u $mdstart -o force || sleep 1
done
@@ -74,9 +77,17 @@ while [ $((`date +%s` - start)) -lt $((15 * 60)) ]; do
[ $((n += 1)) -gt 300 ] && { echo FAIL; exit 1; }
done
mdconfig -a -t vnode -f $diskimage -u $mdstart
- fsck_ffs -fyR /dev/md$mdstart > $log 2>&1; s=$?
+ c=0
+ # Run fsck minimum two times
+ for i in `jot 5`; do
+ fsck_ffs -fy /dev/md$mdstart > $log 2>&1; s=$?
+ grep -q CLEAN $log && grep -q "MODIFIED" $log && c=$((c+=1))
+ grep -Eq "FILE SYSTEM WAS MODIFIED" $log || break
+ done
+ [ $c -gt 1 ] &&
+ { echo "Note: FS marked clean+modified $c times out of $i fsck runs"; s=101; }
[ $s -ne 0 ] && break
- grep -Eq "IS CLEAN|MARKED CLEAN" $log || { s=100; break; }
+ grep -Eq "IS CLEAN|MARKED CLEAN" $log || { s=102; break; }
done
if [ $s -eq 0 ]; then
mount /dev/md$mdstart $mntpoint
@@ -87,6 +98,6 @@ if [ $s -eq 0 ]; then
mdconfig -d -u $mdstart
rm -f $diskimage $log
else
- cat $log
+ tail -10 $log
fi
exit $s
diff --git a/tools/test/stress2/misc/fork2.sh b/tools/test/stress2/misc/fork2.sh
new file mode 100755
index 000000000000..4dbe2de3f6d1
--- /dev/null
+++ b/tools/test/stress2/misc/fork2.sh
@@ -0,0 +1,134 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm
+#
+# 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.
+#
+
+# Regression test for D36069
+# thread_create(): call cpu_copy_thread() after td_pflags is zeroed
+
+# Seen before fix:
+# cc: error: unable to execute command: Segmentation fault (core dumped)
+# cc: error: linker command failed due to signal (use -v to see invocation)
+# Aug 9 18:27:47 freebsd-vm kernel: pid 32094 (ld.lld), jid 0, uid 0: exited on signal 11 (core dumped)
+
+. ../default.cfg
+[ `id -u` -ne 0 ] && echo "Must be root!" && exit 1
+
+dir=/tmp
+odir=`pwd`
+cd $dir
+sed '1,/^EOF/d' < $odir/$0 > $dir/fork2.c
+mycc -o fork2 -Wall -Wextra -O0 -g fork2.c || exit 1
+cd $odir
+
+set -e
+mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
+[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 2g -u $mdstart
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+set +e
+
+cd $mntpoint
+$dir/fork2
+s=$?
+pkill fork2
+[ -f fork2.core -a $s -eq 0 ] &&
+ { ls -l fork2.core; mv fork2.core $dir; s=1; }
+cd $odir
+
+for i in `jot 6`; do
+ mount | grep -q "on $mntpoint " || break
+ umount $mntpoint && break || sleep 10
+ [ $i -eq 6 ] &&
+ { echo FATAL; fstat -mf $mntpoint; exit 1; }
+done
+mdconfig -d -u $mdstart
+cd $dir
+mycc -o $dir/fork2 -Wall -Wextra -O0 -g $dir/fork2.c; s=$?
+rm -rf $dir/fork2 $dir/fork2.c
+exit $s
+
+EOF
+#include <sys/param.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+
+#include <machine/atomic.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <unistd.h>
+
+static volatile u_int *share;
+
+#define MX 5000
+#define RUNTIME (1 * 60)
+#define SYNC 0
+
+int
+main(void)
+{
+ pid_t pid;
+ size_t len;
+ time_t start;
+ int n;
+
+ len = PAGE_SIZE;
+ if ((share = mmap(NULL, len, PROT_READ | PROT_WRITE,
+ MAP_ANON | MAP_SHARED, -1, 0)) == MAP_FAILED)
+ err(1, "mmap");
+
+ n = 0;
+ signal(SIGCHLD, SIG_IGN);
+ start = time(NULL);
+ while ((time(NULL) - start) < RUNTIME) {
+ while ((atomic_load_int(&share[SYNC])) > MX)
+ usleep(100);
+ n++;
+ pid = fork();
+ if (pid == -1)
+ err(1, "fork)");
+ if (pid == 0) {
+ atomic_add_int(&share[SYNC], 1);
+ while (atomic_load_int(&share[SYNC]) <= MX)
+ usleep(10000);
+ usleep(arc4random() % 1000);
+ atomic_add_int(&share[SYNC], -1);
+ raise(SIGHUP);
+ _exit(0);
+ }
+ }
+ atomic_add_int(&share[SYNC], MX * 2);
+ fprintf(stderr, "%d fork() calls\n", n);
+}
diff --git a/tools/test/stress2/misc/forkbomb.sh b/tools/test/stress2/misc/forkbomb.sh
index 9638fe796fee..caaaa27db281 100755
--- a/tools/test/stress2/misc/forkbomb.sh
+++ b/tools/test/stress2/misc/forkbomb.sh
@@ -47,9 +47,8 @@ cd $odir
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 512m -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
su $testuser -c /tmp/forkbomb
@@ -82,7 +81,7 @@ volatile u_int *share;
#define R4 4 /* fork failed */
//#define DEBUG
-#define MXFAIL 100
+#define MXFAIL 2
#define MAXPROC 40000 /* Arbitrary cap */
#define PARALLEL 200
@@ -94,7 +93,7 @@ test(void)
alarm(1200);
atomic_add_int(&share[R1], 1);
while (share[R1] != PARALLEL)
- ;
+ usleep(100);
atomic_add_int(&share[R2], 1);
for (;;) {
@@ -104,6 +103,7 @@ test(void)
if ((r = fork()) == -1) {
atomic_add_int(&share[R4], 1);
atomic_add_int(&share[R2], -1);
+ usleep(arc4random() % 100000);
break;
}
}
diff --git a/tools/test/stress2/misc/fragments.sh b/tools/test/stress2/misc/fragments.sh
index ea1d095081c6..56d95d9cf8d9 100755
--- a/tools/test/stress2/misc/fragments.sh
+++ b/tools/test/stress2/misc/fragments.sh
@@ -48,9 +48,8 @@ mount | grep "$mntpoint" | grep -q md$mdstart && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags -m 0 md${mdstart}$part > /dev/null 2>&1
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags -m 0 md$mdstart > /dev/null 2>&1
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
cd $mntpoint
diff --git a/tools/test/stress2/misc/fs.sh b/tools/test/stress2/misc/fs.sh
index dde3f39ed3ef..40cd8bd0917a 100755
--- a/tools/test/stress2/misc/fs.sh
+++ b/tools/test/stress2/misc/fs.sh
@@ -37,8 +37,8 @@ ftest () { # option, disk full
local args="$@"
[ $2 -eq 1 ] && df=", disk full" || df=""
echo "`date '+%T'` newfs $1 md${mdstart}${part}$df"
- newfs $1 md${mdstart}$part > /dev/null
- mount /dev/md${mdstart}$part $mntpoint
+ newfs $1 md$mdstart > /dev/null
+ mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export RUNDIR=$mntpoint/stressX
@@ -67,14 +67,13 @@ ftest () { # option, disk full
umount -f $mntpoint
fi
done
- checkfs /dev/md${mdstart}$part || touch $flag
+ checkfs /dev/md$mdstart || touch $flag
}
-mount | grep "on $mntpoint " | grep -q md${mdstart}$part && umount $mntpoint
+mount | grep "on $mntpoint " | grep -q md$mdstart && umount $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 20m -u $mdstart
-bsdlabel -w md$mdstart auto
ftest "-O 1" 0 # ufs1
ftest "-O 1" 1 # ufs1, disk full
diff --git a/tools/test/stress2/misc/fsck.sh b/tools/test/stress2/misc/fsck.sh
index a007e722988e..4af41df037e9 100755
--- a/tools/test/stress2/misc/fsck.sh
+++ b/tools/test/stress2/misc/fsck.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
@@ -27,14 +27,15 @@
# SUCH DAMAGE.
#
-# fsck_ffs(8) test.
+# fsck_ffs(8) disk image fuzz test.
+
# "UFS /dev/md11 (/mnt11) cylinder checksum failed" seen.
# Fixed by r341510.
# 'panic: invalid counts on struct mount' seen:
# https://people.freebsd.org/~pho/stress/log/fsck-4.txt
-[ $DEBUG ] || exit 0 # Still WiP
+# "panic: softdep_load_inodeblock: negative i_effnlink" seen.
. ../default.cfg
@@ -42,20 +43,18 @@
cc -o /tmp/flip -Wall -Wextra -O2 ../tools/flip.c || exit 1
-echo 'int sync(void) { return (0); }' > /tmp/fsck_preload.c
-mycc -o /tmp/fsck_preload.so -shared -fpic /tmp/fsck_preload.c || exit 1
-cc -o /tmp/fsck_preload.so -shared -fpic /tmp/fsck_preload.c || exit 1
-rm /tmp/fsck_preload.c
-
set -e
u1=$mdstart
u2=$((mdstart + 1))
mp1=${mntpoint}$u1
mp2=${mntpoint}$u2
mkdir -p $mp1 $mp2
-log=$mp1/fsck.sh.log
-diskimage=$mp1/fsck.sh.diskimage
+
backup=/tmp/fsck.sh.diskimage.`date +%Y%m%dT%H%M%S`.gz
+core=/tmp/fsck.sh.core.`date +%Y%m%dT%H%M%S`
+diskimage=$mp1/fsck.sh.diskimage
+log=$mp1/fsck.sh.log
+
asbs=0
cleans=0
reruns=0
@@ -69,12 +68,13 @@ set +e
mount | grep "on $mp1 " | grep -q /dev/md && umount -f $mp1
[ -c /dev/md$u1 ] && mdconfig -d -u $u1
mdconfig -a -t swap -s 1g -u $u1
-newfs $newfs_flags /dev/md$u1 > /dev/null
+newfs $newfs_flags -n /dev/md$u1 > /dev/null
mount /dev/md$u1 $mp1
[ -c /dev/md$u2 ] && mdconfig -d -u $u2
dd if=/dev/zero of=$diskimage bs=$max count=1 status=none
mdconfig -a -t vnode -f $diskimage -u $u2
+[ "$newfs_flags" = "-U" ] && [ `jot -r 1 0 1` -eq 1 ] && newfs_flags="-j"
backups=`newfs -N $newfs_flags md$u2 | grep -A1 "super-block backups" | \
tail -1 | sed 's/,//g'`
newfs $newfs_flags md$u2 > /dev/null
@@ -85,17 +85,18 @@ umount $mp2
chk() {
local i
- LD_PRELOAD=/tmp/fsck_preload.so \
- fsck_ffs -fy $1 > $log 2>&1
+ clean=0
+ rerun=0
+ waccess=0
+ fsck_ffs -fy $1 > $log 2>&1
r=$?
- if grep -qE "Cannot find file system superblock|Superblock check-hash failed" $log; then
+ if grep -qiE "super-?block.*failed" $log; then
for b in $backups; do
echo "Using alternate SB $b"
asbs=$((asbs + 1))
- LD_PRELOAD=/tmp/fsck_preload.so \
- fsck_ffs -b $b -fy $1 > $log 2>&1
+ fsck_ffs -b $b -fy $1 > $log 2>&1
r=$?
- grep -qE "Cannot find file system superblock|Superblock check-hash failed" $log ||
+ grep -qiE "super-?block.*failed" $log ||
break
done
usedasb=1
@@ -103,47 +104,65 @@ chk() {
usedasb=0
fi
LANG=C egrep -q "[A-Z][A-Z]" $log && clean=0
- ! grep -Eq "IS CLEAN|MARKED CLEAN" $log; clean=$?
- ! grep -q RERUN $log; rerun=$?
- ! grep -q "NO WRITE ACCESS" $log; waccess=$?
+ grep -Eq "IS CLEAN|MARKED CLEAN" $log && clean=1
+ # For now regard a "was modified" as a cause for a rerun,
+ # disregarding "clean" claim.
+ grep -Eq "WAS MODIFIED" $log && rerun=1
+ grep -q RERUN $log && rerun=1
+ grep -q "NO WRITE ACCESS" $log && waccess=1
[ $r -ne 0 -a $clean -eq 1 ] && echo "Exit code $r w/ clean == 1"
-
}
-cd /tmp
+cd $mp1
s=0
start=`date +%s`
while [ $((`date +%s` - start)) -lt 60 ]; do
- gzip < $diskimage > $backup
- fsync $backup; sync # ; sleep .2; sync; sleep .2; sync
mount /dev/md$u2 $mp2 || { s=101; break; }
+ ls -lR $mp2 > /dev/null || { s=102; echo "ls failed"; break; }
touch $mp2/`jot -rc 8 a z | tr -d '\n'`
- umount $mp2
- /tmp/flip -n 4 $diskimage
+ while mount | grep -q "on $mp2 "; do umount $mp2; done
+ echo * | grep -q core && break
+ sync
+ mdconfig -d -u $u2
+ /tmp/flip -n 10 $diskimage
+
+ sync
+ gzip < $diskimage > $backup
+ fsync $backup
+
for i in `jot 3`; do
- chk /dev/md$u2
- [ $clean -eq 1 ] && { cleans=$((cleans + 1)); break; }
+ chk $diskimage
[ $rerun -eq 1 ] && { reruns=$((reruns + 1)); continue; }
+ [ $clean -eq 1 ] && { cleans=$((cleans + 1)); break; }
+ [ -f fsck_ffs.core ] &&
+ { cp $diskimage \
+ /tmp/fsck_ffs.core.diskimage.`date +%Y%m%dT%H%M%S`; break 2; }
done
+ [ $clean -ne 1 ] && break
+ mdconfig -a -t vnode -f $diskimage -u $u2
[ $r -ne 0 -a $clean -eq 1 ] &&
{ echo "CLEAN && non zero exit code"; break; }
[ $clean -eq 1 ] && continue
- [ $usedasb -eq 1 ] && { echo "Alt. SB failed"; s=103; }
- [ $waccess -eq 1 ] && { echo "No write access"; s=555; }
+ [ $usedasb -eq 1 ] && { echo "Alt. SB failed"; s=104; }
+ [ $waccess -eq 1 ] && { echo "No write access"; s=105; }
break
done
-[ $DEBUG ] &&
- echo "$cleans cleans, $reruns reruns, $asbs alternate SBs." && cat $log
+mount | grep -q "on $mp2 " && umount $mp2
+mdconfig -l | grep -q "md$u2" &&
+ mdconfig -d -u $u2
+
+echo "$cleans cleans, $reruns reruns, $asbs alternate SBs."
if [ $clean -ne 1 ]; then
echo "FS still not clean. Last fsck_ffs exit code was $r."
cat $log
- cp -v $log /tmp || rm $log
- [ $s -eq 0 ] && s=104
+ cp -v $log /tmp
+ [ $s -eq 0 ] && s=106
fi
-mdconfig -d -u $u2 || exit 1
-[ -f fsck_ffs.core ] && ls -l fsck_ffs.core
-
+[ -f fsck_ffs.core ] &&
+ mv fsck_ffs.core $core
+[ $s -eq 0 ] && rm -f $backup
+cd /tmp
umount $mp1
mdconfig -d -u $u1
-rm -f /tmp/fsck_preload.so $backup /tmp/flip
+rm -f /tmp/flip
exit $s
diff --git a/tools/test/stress2/misc/fsck10.sh b/tools/test/stress2/misc/fsck10.sh
new file mode 100755
index 000000000000..30479e0dfebb
--- /dev/null
+++ b/tools/test/stress2/misc/fsck10.sh
@@ -0,0 +1,171 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Variation of fsck9.sh with smaller disk size and newfs options '', 'U' and 'O1'
+# fsck_ffs core dump seen
+
+. ../default.cfg
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+cc -o /tmp/flip -Wall -Wextra -O2 ../tools/flip.c || exit 1
+
+set -e
+prog=$(basename "$0" .sh)
+u1=$mdstart
+u2=$((mdstart + 1))
+mp1=${mntpoint}$u1
+mp2=${mntpoint}$u2
+mkdir -p $mp1 $mp2
+log=$mp1/$prog.sh.log
+diskimage=$mp1/$prog.sh.diskimage
+backup=/tmp/$prog.sh.diskimage.`date +%Y%m%dT%H%M%S`.gz
+cleans=0
+reruns=0
+
+# Pick a random newfs flag
+newfs_flags=$(echo "" "-U" "-O1" | awk -v N=`jot -r 1 1 3` '{print $N}')
+[ $# -eq 1 ] && newfs_flags="$1" # or use script argument
+max=$((512 * 1024))
+
+mount | grep "on $mp1 " | grep -q /dev/md && umount -f $mp1
+[ -c /dev/md$u1 ] && mdconfig -d -u $u1
+mdconfig -a -t swap -s 1g -u $u1
+newfs $newfs_flags -n /dev/md$u1 > /dev/null
+mount /dev/md$u1 $mp1
+
+[ -c /dev/md$u2 ] && mdconfig -d -u $u2
+dd if=/dev/zero of=$diskimage bs=$max count=1 status=none
+mdconfig -a -t vnode -f $diskimage -u $u2
+backups=`newfs -N $newfs_flags md$u2 | grep -A1 "super-block backups" | \
+ tail -1 | sed 's/,//g'`
+echo "newfs $newfs_flags -n md$u2"
+newfs $newfs_flags -n md$u2 > /dev/null
+set +e
+
+chk() {
+ local i
+
+ clean=0
+ rerun=0
+ fsck_ffs -fy $1 > $log 2>&1
+ r=$?
+ if grep -qiE "super-?block.*failed" $log; then
+ for b in $backups; do
+ echo "fsck_ffs -b $b -fy $1"
+ fsck_ffs -b $b -fy $1 > $log 2>&1
+ r=$?
+ grep -qiE "super-?block.*failed" $log ||
+ break
+ echo "Checking next SB"
+ done
+ usedasb=1
+ else
+ usedasb=0
+ fi
+ LANG=C egrep -q "[A-Z][A-Z]" $log && clean=0
+ grep -Eq "IS CLEAN|MARKED CLEAN" $log && clean=1
+ grep -q RERUN $log && rerun=1
+ [ $r -ne 0 -a $clean -eq 1 ] && echo "Exit code $r w/ clean == 1"
+}
+
+cd $mp1
+clean=0
+errors=0
+s=0
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 300 ]; do
+ mount /dev/md$u2 $mp2 || break
+ if ! ls -lR $mp2 > /dev/null; then
+ s=102
+ echo "ls failed"; grep "core dumped" /var/log/messages | tail -1
+ break
+ fi
+ rm -f $mp2/????????
+ touch $mp2/`jot -rc 8 a z | tr -d '\n'`
+ mkdir -p $mp2/dir/dir/dir/dir
+ echo "abc" > $mp2/dir/dir/dir/dir/f
+ while mount | grep -q "on $mp2 "; do umount $mp2; done
+ echo * | grep -q core && break
+ mdconfig -d -u $u2
+
+ # Introduce 5 random single bit errors to the file system image
+ /tmp/flip -n 5 $diskimage
+
+ sync; sleep .1
+ if [ `stat -f%z $diskimage` -gt $max ]; then
+ ls -lh $diskimage
+ truncate -s $max $diskimage
+ else
+ gzip < $diskimage > $backup
+ fi
+ fsync $backup
+ sync; sleep .1
+
+ for i in `jot 5`; do
+ [ $i -gt 2 ] && echo "fsck run #$i"
+ chk $diskimage
+ [ $rerun -eq 1 ] && { reruns=$((reruns + 1)); continue; }
+ [ $clean -eq 1 ] && { cleans=$((cleans + 1)); break; }
+ if [ -f fsck_ffs.core ]; then
+ tstamp=`date +%Y%m%dT%H%M%S`
+ gzip < $backup > /tmp/fsck_ffs.core.diskimage.$tstamp
+ gzip < fsck_ffs.core > /tmp/fsck_ffs.core.$tstamp
+ break 2
+ fi
+ done
+ if [ $clean -eq 1 ]; then
+ fsck_ffs -fy $diskimage > $log 2>&1
+ if grep -q MODIFIED $log; then
+ echo "*** fsck of \"clean\" FS found more issues:"
+ cat $log
+ errors=$((errors + 1))
+ s=1
+ break
+ fi
+ fi
+ [ $clean -ne 1 ] && break
+ mdconfig -a -t vnode -f $diskimage -u $u2
+done
+for i in `jot 5`; do
+ mount | grep -q "on $mp2 " || break
+ umount $mp2 && break
+ sleep 2
+done
+mdconfig -l | grep -q $u2 && mdconfig -d -u $u2
+
+[ $s -eq 0 ] && rm -f $backup || echo "Preserved $backup due to status code $s"
+cd /tmp
+for i in `jot 5`; do
+ umount $mp1 && break
+ sleep 2
+done
+mdconfig -d -u $u1
+rm -f /tmp/flip
+exit $s
diff --git a/tools/test/stress2/misc/fsck11.sh b/tools/test/stress2/misc/fsck11.sh
new file mode 100755
index 000000000000..8019cc1f2656
--- /dev/null
+++ b/tools/test/stress2/misc/fsck11.sh
@@ -0,0 +1,170 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Demonstrate how the "CLEAN" message and the exit code can be misleading
+
+# "panic: softdep_update_inodeblock inconsistent ip ..." seen:
+# https://people.freebsd.org/~pho/stress/log/log0421.txt
+# https://people.freebsd.org/~pho/fsck11.sh.diskimage.20230228T064402.gz
+
+. ../default.cfg
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+cc -o /tmp/flip -Wall -Wextra -O2 ../tools/flip.c || exit 1
+
+set -e
+prog=$(basename "$0" .sh)
+u1=$mdstart
+u2=$((mdstart + 1))
+mp1=${mntpoint}$u1
+mp2=${mntpoint}$u2
+mkdir -p $mp1 $mp2
+log=$mp1/$prog.sh.log
+diskimage=$mp1/$prog.sh.diskimage
+backup=/tmp/$prog.sh.diskimage.`date +%Y%m%dT%H%M%S`.gz
+cleans=0
+reruns=0
+
+# Pick a random newfs flag
+newfs_flags=$(echo "" "-U" "-O1" | awk -v N=`jot -r 1 1 3` '{print $N}')
+[ $# -eq 1 ] && newfs_flags="$1" # or use script argument
+max=$((2 * 1024 * 1024))
+[ "$newfs_flags" = "-j" ] && max=$((20 * 1024 * 1024)) # Make room for the journal file
+
+mount | grep "on $mp1 " | grep -q /dev/md && umount -f $mp1
+[ -c /dev/md$u1 ] && mdconfig -d -u $u1
+mdconfig -a -t swap -s 1g -u $u1
+newfs $newfs_flags -n /dev/md$u1 > /dev/null
+mount /dev/md$u1 $mp1
+
+[ -c /dev/md$u2 ] && mdconfig -d -u $u2
+dd if=/dev/zero of=$diskimage bs=$max count=1 status=none
+mdconfig -a -t vnode -f $diskimage -u $u2
+backups=`newfs -N $newfs_flags md$u2 | grep -A1 "super-block backups" | \
+ tail -1 | sed 's/,//g'`
+echo "newfs $newfs_flags -n md$u2"
+newfs $newfs_flags -n md$u2 > /dev/null
+set +e
+
+chk() {
+ local i
+
+ clean=0
+ rerun=0
+ fsck_ffs -fy $1 > $log 2>&1
+ r=$?
+ if grep -qiE "super-?block.*failed" $log; then
+ for b in $backups; do
+ echo "fsck_ffs -b $b -fy $1"
+ fsck_ffs -b $b -fy $1 > $log 2>&1
+ r=$?
+ grep -qiE "super-?block.*failed" $log ||
+ break
+ echo "Checking next SB"
+ done
+ usedasb=1
+ else
+ usedasb=0
+ fi
+ LANG=C egrep -q "[A-Z][A-Z]" $log && clean=0
+ grep -Eq "IS CLEAN|MARKED CLEAN" $log && clean=1
+ grep -q RERUN $log && rerun=1
+ [ $r -ne 0 -a $clean -eq 1 ] && echo "Exit code $r w/ clean == 1"
+}
+
+cd $mp1
+clean=0
+errors=0
+s=0
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 300 ]; do
+ mount /dev/md$u2 $mp2 || break
+ if ! ls -lR $mp2 > /dev/null; then
+ s=102
+ echo "ls failed"; grep "core dumped" /var/log/messages | tail -1
+ break
+ fi
+
+ find $mp2 -type f | xargs cat > /dev/null
+ for j in `jot 9`; do
+ rm -rf $mp2/$j
+ mkdir $mp2/$j
+ jot 10 | xargs -P0 -I% cp /etc/group $mp2/$j/%
+ done 2>/dev/null
+
+ while mount | grep -q "on $mp2 "; do umount $mp2; done
+ echo * | grep -q core && break
+ mdconfig -d -u $u2
+
+ # Introduce 5 random single bit errors to the file system image
+ /tmp/flip -n 5 $diskimage
+
+ if [ `stat -f%z $diskimage` -gt $max ]; then
+ ls -lh $diskimage
+ truncate -s $max $diskimage
+ else
+ gzip < $diskimage > $backup
+ fi
+ fsync $backup
+ sync; sleep 1
+
+ [ "$newfs_flags" = "-j" ] &&
+ fsck -fy $diskimage > $log 2>&1 # process the journal file
+ for i in `jot 5`; do
+ [ $i -gt 2 ] && echo "fsck run #$i"
+ chk $diskimage
+ [ $rerun -eq 1 ] && { reruns=$((reruns + 1)); continue; }
+ [ $clean -eq 1 ] && { cleans=$((cleans + 1)); break; }
+ if [ -f fsck_ffs.core ]; then
+ tstamp=`date +%Y%m%dT%H%M%S`
+ gzip < $backup > /tmp/fsck_ffs.core.diskimage.$tstamp
+ gzip < fsck_ffs.core > /tmp/fsck_ffs.core.$tstamp
+ break 2
+ fi
+ done
+ [ $clean -ne 1 ] && { s=99; break; } # broken image?
+ mdconfig -a -t vnode -f $diskimage -u $u2
+done
+for i in `jot 5`; do
+ mount | grep -q "on $mp2 " || break
+ umount $mp2 && break
+ sleep 2
+done
+mdconfig -l | grep -q $u2 && mdconfig -d -u $u2
+
+[ $s -eq 0 ] && rm -f $backup || echo "Preserved $backup due to status code $s"
+cd /tmp
+for i in `jot 5`; do
+ umount $mp1 && break
+ sleep 2
+done
+mdconfig -d -u $u1
+rm -f /tmp/flip
+exit $s
diff --git a/tools/test/stress2/misc/fsck12.sh b/tools/test/stress2/misc/fsck12.sh
new file mode 100755
index 000000000000..da4629991705
--- /dev/null
+++ b/tools/test/stress2/misc/fsck12.sh
@@ -0,0 +1,175 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# "panic: ffs_copyonwrite: bad copy block" seen:
+# Hunt for fsck_ffs's INTERNAL ERROR message
+
+# https://people.freebsd.org/~pho/stress/log/log0426.txt
+
+. ../default.cfg
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+cc -o /tmp/flip -Wall -Wextra -O2 ../tools/flip.c || exit 1
+
+set -e
+prog=$(basename "$0" .sh)
+u1=$mdstart
+u2=$((mdstart + 1))
+mp1=${mntpoint}$u1
+mp2=${mntpoint}$u2
+mkdir -p $mp1 $mp2
+log=$mp1/$prog.sh.log
+diskimage=$mp1/$prog.sh.diskimage
+backup=/tmp/$prog.sh.diskimage.`date +%Y%m%dT%H%M%S`.gz
+cleans=0
+reruns=0
+
+mount | grep "on $mp1 " | grep -q /dev/md && umount -f $mp1
+[ -c /dev/md$u1 ] && mdconfig -d -u $u1
+mdconfig -a -t swap -s 1g -u $u1
+newfs $newfs_flags -n /dev/md$u1 > /dev/null
+mount /dev/md$u1 $mp1
+
+newfs_flags='-j'
+[ $# -eq 1 ] && newfs_flags="$1" # or use script argument
+max=$((2 * 1024 * 1024))
+[ "$newfs_flags" = "-j" ] && max=$((20 * 1024 * 1024)) # Make room for the journal file
+
+[ -c /dev/md$u2 ] && mdconfig -d -u $u2
+dd if=/dev/zero of=$diskimage bs=$max count=1 status=none
+mdconfig -a -t vnode -f $diskimage -u $u2
+backups=`newfs -N $newfs_flags md$u2 | grep -A1 "super-block backups" | \
+ tail -1 | sed 's/,//g'`
+echo "newfs $newfs_flags md$u2"
+newfs $newfs_flags md$u2 > /dev/null
+set +e
+
+chk() {
+ local i
+
+ clean=0
+ rerun=0
+ fsck_ffs -fy $1 > $log 2>&1
+ r=$?
+ grep "GOT TO reply" $log && exit 1
+ if grep -qiE "super-?block.*failed" $log; then
+ for b in $backups; do
+ echo "fsck_ffs -b $b -fy $1"
+ fsck_ffs -b $b -fy $1 > $log 2>&1
+ r=$?
+ grep "GOT TO reply" $log && exit 1
+ grep -qiE "super-?block.*failed" $log ||
+ break
+ echo "Checking next SB"
+ done
+ usedasb=1
+ else
+ usedasb=0
+ fi
+ LANG=C egrep -q "[A-Z][A-Z]" $log && clean=0
+ grep -Eq "IS CLEAN|MARKED CLEAN" $log && clean=1
+ grep -q RERUN $log && rerun=1
+ [ $r -ne 0 -a $clean -eq 1 ] && echo "Exit code $r w/ clean == 1"
+}
+
+cd $mp1
+clean=0
+errors=0
+s=0
+sno=0
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 300 ]; do
+ mount /dev/md$u2 $mp2 || break
+ if ! ls -lR $mp2 > /dev/null; then
+ s=102
+ echo "ls failed"; grep "core dumped" /var/log/messages | tail -1
+ break
+ fi
+ mkdir -p $mp2/d/d/d/d/d
+ cp /etc/group $mp2/d/d/d/d/d/f
+ for i in `jot 20`; do
+ cp -r $mp2/d $i
+ done
+
+ rm -f $mp2/.snap/$sno
+ mksnap_ffs $mp2 $mp2/.snap/$sno &
+ sno=$(((sno + 1) % 10))
+
+ sleep 1
+ rm -rf $mp/?
+ wait
+ while mount | grep -q "on $mp2 "; do umount $mp2; done
+ echo * | grep -q core && break
+ mdconfig -d -u $u2
+
+ # Introduce 5 random single bit errors to the file system image
+ /tmp/flip -n 5 $diskimage
+
+ if [ `stat -f%z $diskimage` -gt $max ]; then
+ ls -lh $diskimage
+ truncate -s $max $diskimage
+ else
+ gzip < $diskimage > $backup
+ fi
+ fsync $backup
+ sync; sleep 1
+
+ [ $newfs_flags = "-j" ] &&
+ fsck -fy $diskimage > $log 2>&1 # process the journal file
+ for i in `jot 5`; do
+ [ $i -gt 2 ] && echo "fsck run #$i"
+ chk $diskimage
+ [ $rerun -eq 1 ] && { reruns=$((reruns + 1)); continue; }
+ grep -q "MODIFIED" $log && continue # For now, do not trust CLEAN
+ [ $clean -eq 1 ] && { cleans=$((cleans + 1)); break; }
+ if [ -f fsck_ffs.core ]; then
+ s=1
+ break 2
+ fi
+ done
+ [ $clean -ne 1 ] && { s=99; break; } # broken image?
+ mdconfig -a -t vnode -f $diskimage -u $u2
+done
+for i in `jot 5`; do
+ mount | grep -q "on $mp2 " || break
+ umount $mp2 && break
+ sleep 2
+done
+mdconfig -l | grep -q $u2 && mdconfig -d -u $u2
+
+[ $s -eq 0 ] && rm -f $backup || echo "Preserved $backup due to status code $s"
+cd /tmp
+for i in `jot 5`; do
+ umount $mp1 && break
+ sleep 2
+done
+mdconfig -d -u $u1
+rm -f /tmp/flip
+exit $s
diff --git a/tools/test/stress2/misc/fsck13.sh b/tools/test/stress2/misc/fsck13.sh
new file mode 100755
index 000000000000..f279e0bae066
--- /dev/null
+++ b/tools/test/stress2/misc/fsck13.sh
@@ -0,0 +1,152 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# fsck_ffs(8) disk image fuzz test.
+# Test without mount(8) and umount(8)
+
+. ../default.cfg
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+cc -o /tmp/flip -Wall -Wextra -O2 ../tools/flip.c || exit 1
+
+# Disable the calls to sync(2) in fsck_ffs(8) to speed up the test
+echo 'int sync(void) { return (0); }' > /tmp/fsck_preload.c
+mycc -o /tmp/fsck_preload.so -shared -fpic /tmp/fsck_preload.c || exit 1
+rm /tmp/fsck_preload.c
+
+set -eu
+u1=$mdstart
+u2=$((mdstart + 1))
+mp1=${mntpoint}$u1
+prog=$(basename "$0" .sh)
+mkdir -p $mp1
+
+max=$((2 * 1024 * 1024)) # Two alternate super blocks @ 192 and 2240
+i=`jot -r 1 1 3`
+[ $i -eq 1 ] && flags="-O2"
+[ $i -eq 2 ] && flags="-U"
+[ $i -eq 3 ] && { flags="-j"; max=$((8 * 1024 * 1024)); }
+
+backup=$mp1/$prog.diskimage.$flags.`date +%Y%m%dT%H%M%S`
+core=/tmp/$prog.core.`date +%Y%m%dT%H%M%S`
+diskimage=$mp1/$prog.diskimage
+log=$mp1/$prog.log
+
+asbs=0
+cleans=0
+reruns=0
+waccess=0
+
+set +e
+mount | grep "on $mp1 " | grep -q /dev/md && umount -f $mp1
+[ -c /dev/md$u1 ] && mdconfig -d -u $u1
+mdconfig -a -t swap -s 10g -u $u1
+newfs $newfs_flags /dev/md$u1 > /dev/null
+mount /dev/md$u1 $mp1
+
+[ -c /dev/md$u2 ] && mdconfig -d -u $u2
+dd if=/dev/zero of=$diskimage bs=$max count=1 status=none
+mdconfig -a -t vnode -f $diskimage -u $u2
+backups=`newfs -N $flags md$u2 | grep -A1 "super-block backups" | \
+ tail -1 | sed 's/,//g'`
+echo "newfs $flags /dev/md$u2"
+newfs $flags md$u2 > /dev/null
+mdconfig -d -u $u2
+
+chk() {
+ local i
+
+ clean=0
+ rerun=0
+ waccess=0
+ LD_PRELOAD=/tmp/fsck_preload.so \
+ timeout 2m fsck_ffs -fy $1 > $log 2>&1
+ r=$?
+ if grep -qiE "super-?block.*failed" $log; then
+ for b in $backups; do
+ asbs=$((asbs + 1))
+ LD_PRELOAD=/tmp/fsck_preload.so \
+ timeout 2m fsck_ffs -b $b -fy $1 > $log 2>&1
+ r=$?
+ grep -qiE "super-?block.*failed" $log ||
+ break
+ done
+ usedasb=1
+ else
+ usedasb=0
+ fi
+ LANG=C egrep -q "[A-Z][A-Z]" $log && clean=0
+ grep -Eq "IS CLEAN|MARKED CLEAN" $log && clean=1
+ # For now regard a "was modified" as a cause for a rerun,
+ # disregarding "clean" claim.
+ grep -Eq "WAS MODIFIED" $log && rerun=1
+ grep -q RERUN $log && rerun=1
+ grep -q "NO WRITE ACCESS" $log && waccess=1
+ [ $r -ne 0 -a $clean -eq 1 ] && echo "Exit code $r w/ clean == 1"
+}
+
+cd $mp1
+s=0
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 60 ]; do
+ /tmp/flip -n 50 $diskimage
+
+ cp $diskimage $backup
+
+ for i in `jot 10`; do
+ chk $diskimage
+ [ $i -eq 1 -a "$flags" = "-j" ] && continue # First run processes the journal
+ [ $rerun -eq 1 ] && { reruns=$((reruns + 1)); continue; }
+ [ $clean -eq 1 ] && { cleans=$((cleans + 1)); break; }
+ [ -f fsck_ffs.core ] && { s=1; break 2; }
+ [ $r -eq 124 ] && { s=2; break 2; } # timeout
+ done
+ [ $clean -ne 1 ] && break
+ [ $r -ne 0 -a $clean -eq 1 ] &&
+ { echo "CLEAN && non zero exit code"; break; }
+ [ $clean -eq 1 ] && continue
+ [ $usedasb -eq 1 ] && { echo "Alt. SB failed"; s=104; }
+ [ $waccess -eq 1 ] && { echo "No write access"; s=105; }
+ break
+done
+
+echo "$cleans cleans, $reruns reruns, $asbs alternate SBs."
+if [ $clean -ne 1 ]; then
+ echo "FS still not clean. Last fsck_ffs exit code was $r."
+ [ $s -eq 0 ] && s=106
+fi
+grep -q "Superblock check-hash failed" $log && s=0 # Ignore for now
+grep -q "is not a file system superblock" $log && s=0 # Ignore for now
+[ $s -ne 0 ] && { gzip $backup; cp -v $backup.gz /tmp; }
+cd /tmp
+umount $mp1
+mdconfig -d -u $u1
+rm -f /tmp/flip /tmp/fsck_preload.so
+exit $s
diff --git a/tools/test/stress2/misc/fsck14.sh b/tools/test/stress2/misc/fsck14.sh
new file mode 100755
index 000000000000..ddeb45a83e96
--- /dev/null
+++ b/tools/test/stress2/misc/fsck14.sh
@@ -0,0 +1,119 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# fsck -B test scenario with SUJ. -B implies "preen mode".
+
+# 'panic: ffs_blkfree_cg: bad size' seen:
+# https://people.freebsd.org/~pho/stress/log/log0465.txt
+# Fixed by: 220427da0e9b - Set UFS/FFS file type to snapshot before changing
+# its block pointers.
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+mycc -o /tmp/flip -Wall -Wextra ../tools/flip.c || exit 2
+
+set -e
+md=/dev/md$mdstart
+prog=$(basename "$0" .sh)
+backup=/tmp/$prog.sh.diskimage.`date +%Y%m%dT%H%M%S`.gz
+log=/tmp/$prog.sh.log
+[ -c $md ] && mdconfig -d -u $mdstart
+dd if=/dev/zero of=$diskimage bs=128m count=1 status=none
+mdconfig -a -t vnode -f $diskimage -u $mdstart
+backups=`newfs -N $j $md | grep -A1 "super-block backups" | \
+ tail -1 | sed 's/,//g'`
+newfs -j $md > /dev/null 2>&1
+mount $md $mntpoint
+set +e
+
+jot 5000 | xargs -P0 -I% touch $mntpoint/a%
+while ! umount $mntpoint; do :; done
+/tmp/flip -n 10 $diskimage
+gzip < $diskimage > $backup
+fsync $diskimage $backup
+
+mount -f $md $mntpoint
+
+if ! fsck_ffs -B $md > $log 2>&1; then
+ grep MANUALLY $log
+ umount $mntpoint
+ fsck_ffs -fy $md > $log 2>&1; s=$?
+ grep -Eq "IS CLEAN|MARKED CLEAN" $log || {
+ cat $log
+ echo "fsck_ffs -f failed with exit code $s"
+ umount $mntpoint; mdconfig -d -u $mdstart
+ rm -f $log /tmp/flip $diskimage $backup
+ exit 1
+ }
+ mount $md $mntpoint
+fi
+
+jot 5000 | xargs -P0 -I% rm $mntpoint/a%
+jot 5000 | xargs -P0 -I% touch $mntpoint/b%
+
+ls -lR $mntpoint > /dev/null || {
+ echo "ls -lR $mntpoint failed after fsck -B"
+ umount $mntpoint; mdconfig -d -u $mdstart
+ rm -f $log /tmp/flip $diskimage $backup
+ exit 0 # For now, ignore non fatal errors
+}
+
+jot 5000 | xargs -P0 -I% rm $mntpoint/b% || {
+ echo "clean failed"
+ umount $mntpoint; mdconfig -d -u $mdstart
+ rm -f $log /tmp/flip $diskimage $backup
+ exit 0 # For now, ignore non fatal errors
+}
+umount $mntpoint
+
+r=0
+for i in `jot 4`; do
+ fsck_ffs -fy $diskimage > $log 2>&1; r=$?
+ if grep -qiE "super-?block.*failed" $log; then
+ for b in $backups; do
+ echo "fsck_ffs -b $b -fy $diskimage"
+ fsck_ffs -b $b -fy $diskimage > $log 2>&1
+ r=$?
+ grep -qiE "super-?block.*failed" $log ||
+ break
+ echo "Checking next SB"
+ done
+ fi
+ [ $r -ne 0 ] && continue
+ grep -Eq "WAS MODIFIED" $log && continue
+ grep -Eq "CLEAN" $log && break
+done
+mount $md $mntpoint || exit 3
+ls -lR $mntpoint > /dev/null || { umount $mntpoint; mdconfig -d -u mdstart; echo "exit 4"; exit 4; }
+umount $mntpoint
+fsck_ffs -fy $md > $log 2>&1
+grep -Eq 'IS CLEAN|MARKED CLEAN' $log && s=0 || { s=1; cat $log; }
+mdconfig -d -u $mdstart
+rm -f $log /tmp/flip $diskimage $backup
+exit $s
diff --git a/tools/test/stress2/misc/fsck2.sh b/tools/test/stress2/misc/fsck2.sh
index 313efec490d1..3287e240d338 100755
--- a/tools/test/stress2/misc/fsck2.sh
+++ b/tools/test/stress2/misc/fsck2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/fsck3.sh b/tools/test/stress2/misc/fsck3.sh
index f9bd29017e35..39ebd112fccf 100755
--- a/tools/test/stress2/misc/fsck3.sh
+++ b/tools/test/stress2/misc/fsck3.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/fsck4.sh b/tools/test/stress2/misc/fsck4.sh
index 3e97f7b54340..feb955ac3231 100755
--- a/tools/test/stress2/misc/fsck4.sh
+++ b/tools/test/stress2/misc/fsck4.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/fsck5.sh b/tools/test/stress2/misc/fsck5.sh
index 35381c8c55e7..5ffded87d95e 100755
--- a/tools/test/stress2/misc/fsck5.sh
+++ b/tools/test/stress2/misc/fsck5.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/fsck6.sh b/tools/test/stress2/misc/fsck6.sh
index e1c5a4f36559..5d86b9d59ed2 100755
--- a/tools/test/stress2/misc/fsck6.sh
+++ b/tools/test/stress2/misc/fsck6.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/fsck7.sh b/tools/test/stress2/misc/fsck7.sh
new file mode 100755
index 000000000000..9662393e1df6
--- /dev/null
+++ b/tools/test/stress2/misc/fsck7.sh
@@ -0,0 +1,65 @@
+#!/bin/sh
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# fsck -B test scenario
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+mycc -o /tmp/zapsb -Wall -Wextra ../tools/zapsb.c || exit 1
+
+set -e
+log=/tmp/fsck7.sh.log
+md=/dev/md$mdstart
+[ -c $md ] && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 5g -u $mdstart
+newfs -U $md > /dev/null 2>&1
+mount $md $mntpoint
+set +e
+
+jot 500 | xargs -P0 -I% touch $mntpoint/a%
+umount $mntpoint
+/tmp/zapsb $md
+
+echo "Expect:
+ Superblock check-hash failed"
+mount -f $md $mntpoint
+
+fsck -B -p -t ufs $md &
+
+jot 500 | xargs -P0 -I% rm $mntpoint/a%
+jot 500 | xargs -P0 -I% touch $mntpoint/b%
+
+wait
+umount $mntpoint
+mount $md $mntpoint || exit 1 # The SB should be fixed at this point
+umount $mntpoint
+fsck -fy $md 2>&1 | tee $log
+grep -q 'FILE SYSTEM IS CLEAN' $log && s=0 || s=1
+mdconfig -d -u $mdstart
+rm -f $log /tmp/zapsb
+exit $s
diff --git a/tools/test/stress2/misc/fsck8.sh b/tools/test/stress2/misc/fsck8.sh
new file mode 100755
index 000000000000..9613fe72173e
--- /dev/null
+++ b/tools/test/stress2/misc/fsck8.sh
@@ -0,0 +1,179 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# fsck_ffs(8) disk image fuzz test. SB focus.
+
+# panic: wrong length 4098 for sectorsize 512
+# FreeBSD 14.0-CURRENT #0 main-n255602-51adf913e8815: Fri May 13 07:55:32 CEST 2022
+# pho@mercat1.netperf.freebsd.org:/usr/src/sys/amd64/compile/PHO
+
+. ../default.cfg
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+cc -o /tmp/flip -Wall -Wextra -O2 ../tools/flip.c || exit 1
+
+set -e
+u1=$mdstart
+u2=$((mdstart + 1))
+mp1=${mntpoint}$u1
+mp2=${mntpoint}$u2
+mkdir -p $mp1 $mp2
+log=$mp1/fsck8.sh.log
+diskimage=$mp1/fsck8.sh.diskimage
+backup=/tmp/fsck8.sh.diskimage.`date +%Y%m%dT%H%M%S`.gz
+asbs=0
+cleans=0
+reruns=0
+waccess=0
+
+max=$((10 * 1024 * 1024))
+# UFS1 or UFS2 SU:
+[ `jot -r 1 0 1` -eq 0 ] && newfs_flags='-O 1' || newfs_flags='-O 2 -U'
+
+mount | grep "on $mp1 " | grep -q /dev/md && umount -f $mp1
+[ -c /dev/md$u1 ] && mdconfig -d -u $u1
+mdconfig -a -t swap -s 1g -u $u1
+newfs $newfs_flags -n /dev/md$u1 > /dev/null
+mount /dev/md$u1 $mp1
+
+[ -c /dev/md$u2 ] && mdconfig -d -u $u2
+dd if=/dev/zero of=$diskimage bs=$max count=1 status=none
+mdconfig -a -t vnode -f $diskimage -u $u2
+backups=`newfs -N $newfs_flags md$u2 | grep -A1 "super-block backups" | \
+ tail -1 | sed 's/,//g'`
+newfs $newfs_flags -n md$u2 > /dev/null
+mount /dev/md$u2 $mp2
+[ -d /usr/include/sys ] && cp -r /usr/include/sys $mp2
+umount $mp2
+set +e
+
+chk() {
+ local i
+
+ clean=0
+ rerun=0
+ waccess=0
+ timeout 5m fsck_ffs -fy $1 > $log 2>&1
+ r=$?
+ if grep -qiE "super-?block.*failed" $log; then
+ for b in $backups; do
+ echo "Using alternate SB $b"
+ asbs=$((asbs + 1))
+ fsck_ffs -b $b -fy $1 > $log 2>&1
+ r=$?
+ grep -qiE "super-?block.*failed" $log ||
+ break
+ done
+ usedasb=1
+ else
+ usedasb=0
+ fi
+ LANG=C egrep -q "[A-Z][A-Z]" $log && clean=0
+ grep -Eq "IS CLEAN|MARKED CLEAN" $log && clean=1
+ # For now regard a "was modified" as a cause for a rerun,
+ # disregarding the "clean" claim.
+ grep -Eq "WAS MODIFIED" $log && rerun=1
+ grep -q RERUN $log && rerun=1
+ grep -q "NO WRITE ACCESS" $log && waccess=1
+ [ $r -ne 0 -a $clean -eq 1 ] && echo "Exit code $r w/ clean == 1"
+}
+
+cd $mp1
+clean=0
+s=0
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 300 ]; do
+ mount /dev/md$u2 $mp2 || break
+ ls -lR $mp2 > /dev/null || { s=102; echo "ls failed"; break; }
+ touch $mp2/`jot -rc 8 a z | tr -d '\n'`
+ while mount | grep -q "on $mp2 "; do umount $mp2; done
+ echo * | grep -q core && break
+ sync
+ mdconfig -d -u $u2
+ # SBLOCK = 64k, SBLOCKSIZE = 8k
+ /tmp/flip -n 5 -s $(((64 + 8) * 1024)) $diskimage
+
+ sync
+ if [ `stat -f%z $diskimage` -gt $max ]; then
+ ls -lh $diskimage
+ truncate -s $max $diskimage
+ else
+ gzip < $diskimage > $backup
+ fi
+ fsync $backup
+ sync
+
+ for i in `jot 5`; do
+ [ $i -gt 2 ] && echo "fsck run #$i"
+ chk $diskimage
+ [ $rerun -eq 1 ] && { reruns=$((reruns + 1)); continue; }
+ [ $clean -eq 1 ] && { cleans=$((cleans + 1)); break; }
+ [ -f fsck_ffs.core ] &&
+ { cp -v $diskimage \
+ /tmp/fsck_ffs.core.diskimage.`date +%Y%m%dT%H%M%S`; break 2; }
+ done
+ [ $clean -ne 1 ] && break
+ mdconfig -a -t vnode -f $diskimage -u $u2
+ [ $r -ne 0 -a $clean -eq 1 ] &&
+ { echo "CLEAN && non zero exit code"; break; }
+ [ $clean -eq 1 ] && continue
+ [ $usedasb -eq 1 ] && { echo "Alt. SB failed"; s=104; }
+ [ $waccess -eq 1 ] && { echo "No write access"; s=105; }
+ break
+done
+sleep 2 # Wait for /dev to catch up
+[ -c /dev/md$u2 ] && r1=1 || r1=0
+for i in `jot 5`; do
+ mount | grep -q "on $mp2 " || break
+ umount $mp2 && break
+ sleep 2
+done
+mdconfig -d -u $u2 2>/dev/null # XXX when mount fails
+
+echo "$cleans cleans, $reruns reruns, $asbs alternate SBs."
+if [ $clean -ne 1 ]; then
+ echo "FS still not clean. Last fsck_ffs exit code was $r."
+ echo =================
+ cat $log
+ echo =================
+ cp -v $log /tmp
+ [ $s -eq 0 ] && s=106
+fi
+echo * | grep -q core && { ls -l *.core; cp -v $log /tmp; exit 106; } ||
+ rm -f $backup
+[ $s -eq 101 ] && rm -f $backup # mount error breakout
+cd /tmp
+for i in `jot 5`; do
+ umount $mp1 && break
+ sleep 2
+done
+mdconfig -d -u $u1
+rm -f /tmp/flip
+exit $s
diff --git a/tools/test/stress2/misc/fsck9.sh b/tools/test/stress2/misc/fsck9.sh
new file mode 100755
index 000000000000..bbb10609ea67
--- /dev/null
+++ b/tools/test/stress2/misc/fsck9.sh
@@ -0,0 +1,168 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# fsck_ffs(8) false CLEAN claim scenario
+
+# https://people.freebsd.org/~pho/fsck9.sh.diskimage.20220716T150359.txt
+# https://people.freebsd.org/~pho/fsck9.sh.diskimage.20220716T150359.gz
+
+# https://people.freebsd.org/~pho/fsck9.sh.diskimage.20220716T172428.txt
+# https://people.freebsd.org/~pho/fsck9.sh.diskimage.20220716T172428.gz
+
+. ../default.cfg
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+cc -o /tmp/flip -Wall -Wextra -O2 ../tools/flip.c || exit 1
+
+set -e
+u1=$mdstart
+u2=$((mdstart + 1))
+mp1=${mntpoint}$u1
+mp2=${mntpoint}$u2
+mkdir -p $mp1 $mp2
+log=$mp1/fsck9.sh.log
+diskimage=$mp1/fsck9.sh.diskimage
+backup=/tmp/fsck9.sh.diskimage.`date +%Y%m%dT%H%M%S`.gz
+cleans=0
+reruns=0
+
+max=$((10 * 1024 * 1024))
+newfs_flags='-U'
+
+mount | grep "on $mp1 " | grep -q /dev/md && umount -f $mp1
+[ -c /dev/md$u1 ] && mdconfig -d -u $u1
+mdconfig -a -t swap -s 1g -u $u1
+newfs $newfs_flags -n /dev/md$u1 > /dev/null
+mount /dev/md$u1 $mp1
+
+[ -c /dev/md$u2 ] && mdconfig -d -u $u2
+dd if=/dev/zero of=$diskimage bs=$max count=1 status=none
+mdconfig -a -t vnode -f $diskimage -u $u2
+backups=`newfs -N $newfs_flags md$u2 | grep -A1 "super-block backups" | \
+ tail -1 | sed 's/,//g'`
+newfs $newfs_flags -n md$u2 > /dev/null
+mount /dev/md$u2 $mp2
+[ -d /usr/include/sys ] && cp -r /usr/include/sys $mp2
+umount $mp2
+set +e
+
+chk() {
+ local i
+
+ clean=0
+ rerun=0
+ fsck_ffs -fy $1 > $log 2>&1
+ r=$?
+ if grep -qiE "super-?block.*failed" $log; then
+ for b in $backups; do
+ echo "fsck_ffs -b $b -fy $1"
+ fsck_ffs -b $b -fy $1 > $log 2>&1
+ r=$?
+ grep -qiE "super-?block.*failed" $log ||
+ break
+ echo "Checking next SB"
+ done
+ usedasb=1
+ else
+ usedasb=0
+ fi
+ LANG=C egrep -q "[A-Z][A-Z]" $log && clean=0
+ grep -Eq "IS CLEAN|MARKED CLEAN" $log && clean=1
+ grep -q RERUN $log && rerun=1
+ [ $r -ne 0 -a $clean -eq 1 ] && echo "Exit code $r w/ clean == 1"
+}
+
+cd $mp1
+clean=0
+s=0
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 300 ]; do
+ mount /dev/md$u2 $mp2 || break
+ if ! ls -lR $mp2 > /dev/null; then
+ s=102
+ echo "ls failed"; grep "core dumped" /var/log/messages | tail -1
+ break
+ fi
+ touch $mp2/`jot -rc 8 a z | tr -d '\n'`
+ while mount | grep -q "on $mp2 "; do umount $mp2; done
+ echo * | grep -q core && break
+ sync
+ mdconfig -d -u $u2
+ /tmp/flip -n 5 $diskimage
+
+ sync
+ if [ `stat -f%z $diskimage` -gt $max ]; then
+ ls -lh $diskimage
+ truncate -s $max $diskimage
+ else
+ gzip < $diskimage > $backup
+ fi
+ fsync $backup
+ sync
+
+ for i in `jot 5`; do
+ [ $i -gt 2 ] && echo "fsck run #$i"
+ chk $diskimage
+ [ $rerun -eq 1 ] && { reruns=$((reruns + 1)); continue; }
+ [ $clean -eq 1 ] && { cleans=$((cleans + 1)); break; }
+ [ -f fsck_ffs.core ] &&
+ { cp -v $diskimage \
+ /tmp/fsck_ffs.core.diskimage.`date +%Y%m%dT%H%M%S`; break 2; }
+ done
+ if [ $clean -eq 1 ]; then
+ fsck_ffs -fy $diskimage > $log 2>&1
+ if grep -q MODIFIED $log; then
+ echo "*** fsck of \"clean\" FS found more issues:"
+ cat $log
+ s=1
+ break
+ fi
+ fi
+ [ $clean -ne 1 ] && break
+ mdconfig -a -t vnode -f $diskimage -u $u2
+done
+sleep 2 # Wait for /dev to catch up
+[ -c /dev/md$u2 ] && r1=1 || r1=0
+for i in `jot 5`; do
+ mount | grep -q "on $mp2 " || break
+ umount $mp2 && break
+ sleep 2
+done
+mdconfig -d -u $u2 2>/dev/null # XXX when mount fails
+
+[ $s -eq 0 ] && rm -f $backup || echo "Preserved $backup due to status code $s"
+cd /tmp
+for i in `jot 5`; do
+ umount $mp1 && break
+ sleep 2
+done
+mdconfig -d -u $u1
+rm -f /tmp/flip
+exit $s
diff --git a/tools/test/stress2/misc/fsgs.sh b/tools/test/stress2/misc/fsgs.sh
index ba9e81de392d..ff6a1161968e 100755
--- a/tools/test/stress2/misc/fsgs.sh
+++ b/tools/test/stress2/misc/fsgs.sh
@@ -88,7 +88,7 @@ test(void)
for (i = 0; i < 100; i++) {
if ((pid = fork()) == 0) {
cp = malloc(2);
- _exit(0);
+ _exit(cp == NULL);
}
if (waitpid(pid, &status, 0) != pid)
err(1, "waitpid(%d)", pid);
diff --git a/tools/test/stress2/misc/fstat.sh b/tools/test/stress2/misc/fstat.sh
index 441065f8e769..72e90d631e6d 100755
--- a/tools/test/stress2/misc/fstat.sh
+++ b/tools/test/stress2/misc/fstat.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/fsync2.sh b/tools/test/stress2/misc/fsync2.sh
index f2e846c4aa20..009fe9542f07 100755
--- a/tools/test/stress2/misc/fsync2.sh
+++ b/tools/test/stress2/misc/fsync2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/fsync3.sh b/tools/test/stress2/misc/fsync3.sh
new file mode 100755
index 000000000000..f220d19b8c24
--- /dev/null
+++ b/tools/test/stress2/misc/fsync3.sh
@@ -0,0 +1,156 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Regression test for D37997: ffs_syncvnode(): avoid a LoR for SU
+# https://people.freebsd.org/~pho/stress/log/log0402.txt
+# Fixed by 6e1eabadcb1d - main - ffs_syncvnode(): avoid a LoR for SU
+
+# Test scenario based on report by jkim
+
+. ../default.cfg
+[ `id -u` -ne 0 ] && echo "Must be root!" && exit 1
+
+dir=/tmp
+odir=`pwd`
+prog=$(basename "$0" .sh)
+cd $dir
+sed '1,/^EOF/d' < $odir/$0 > $dir/$prog.c
+mycc -o $prog -Wall -Wextra -O0 -g $prog.c -lpthread || exit 1
+rm -f $prog.c
+cd $odir
+
+set -eu
+mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
+[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 1g -u $mdstart
+newfs -U md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+set +e
+
+cd $odir
+../testcases/swap/swap -t 1m -i 20 -l 100 > /dev/null &
+sleep .5
+cd $mntpoint
+mkdir -p d1/d2/d3/d4/d5
+for i in `jot 8`; do
+ $dir/$prog $i &
+done
+cd $odir
+wait
+
+for i in `jot 6`; do
+ mount | grep -q "on $mntpoint " || break
+ umount $mntpoint && break || sleep 10
+ [ $i -eq 6 ] &&
+ { echo FATAL; fstat -mf $mntpoint; exit 1; }
+done
+mdconfig -d -u $mdstart
+rm -rf $dir/$prog
+exit 0
+EOF
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <err.h>
+#include <fcntl.h>
+#include <pthread.h>
+#include <pthread_np.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define RUNTIME 60
+
+static time_t start;
+static volatile int fd, n;
+static char buf[4096];
+
+static void *
+t1(void *data __unused)
+{
+ char *path = "d1/d2/d3/d4/d5";
+ char d1[1024], d2[1024], file[1024];
+
+ pthread_set_name_np(pthread_self(), __func__);
+ snprintf(d1, sizeof(d1), "%s/dir.%d", path, getpid());
+ snprintf(d2, sizeof(d2), "%s/new.%d", path, getpid());
+ snprintf(file, sizeof(file), "%s/../file.%d", path, getpid());
+ while (time(NULL) - start < RUNTIME) {
+ if (mkdir(d1, 0740) == -1)
+ err(1, "mkdir(%s)", d1);
+ if (rename(d1, d2) == -1)
+ err(1, "rename(%s, %s)", d1, d2);
+ if ((fd = open(file, O_RDWR | O_CREAT | O_TRUNC, 0600)) == -1)
+ err(1, "open%s()", file);
+ if (write(fd, buf, sizeof(buf)) != sizeof(buf))
+ err(1, "write()");
+ close(fd);
+ if (rename(d2, d1) == -1)
+ err(1, "rename(%s, %s)", d2, d1);
+ if (rmdir(d1) == -1)
+ err(1, "rmdir(%s)", d1);
+ }
+
+ return (NULL);
+}
+
+static void *
+t2(void *data __unused)
+{
+ pthread_set_name_np(pthread_self(), __func__);
+ while (time(NULL) - start < RUNTIME) {
+ fsync(fd);
+ usleep(arc4random() % 500);
+ }
+
+ return (NULL);
+}
+
+int
+main(int argc __unused, char *argv[])
+{
+ pthread_t tid[2];
+ int r;
+
+ n = atoi(argv[1]);
+ start = time(NULL);
+ if ((r = pthread_create(&tid[0], NULL, t1, NULL)) != 0)
+ errc(1, r, "pthread_create");
+ if ((r = pthread_create(&tid[1], NULL, t2, NULL)) != 0)
+ errc(1, r, "pthread_create");
+
+ if ((r = pthread_join(tid[0], NULL)) != 0)
+ errc(1, r, "pthread_join");
+ if ((r = pthread_join(tid[1], NULL)) != 0)
+ errc(1, r, "pthread_join");
+
+ return (0);
+}
diff --git a/tools/test/stress2/misc/fsync4.sh b/tools/test/stress2/misc/fsync4.sh
new file mode 100755
index 000000000000..ac08dd6dff49
--- /dev/null
+++ b/tools/test/stress2/misc/fsync4.sh
@@ -0,0 +1,146 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Regression test for D38114: Handle ERELOOKUP from VOP_FSYNC()
+
+# "fsync4: msync(0x82d3cc000), file d1/d2/d3/d4/d5/../file.92660:
+# Input/output error" seen
+
+# Fixed by: 6189672e6008 - main - Handle ERELOOKUP from VOP_FSYNC() in
+# several other places
+
+. ../default.cfg
+[ `id -u` -ne 0 ] && echo "Must be root!" && exit 1
+
+dir=/tmp
+odir=`pwd`
+pids=""
+prog=$(basename "$0" .sh)
+s=0
+cd $dir
+sed '1,/^EOF/d' < $odir/$0 > $dir/$prog.c
+mycc -o $prog -Wall -Wextra -O0 -g $prog.c || exit 1
+rm -f $prog.c
+cd $odir
+
+set -eu
+mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
+[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 1g -u $mdstart
+newfs -U md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+set +e
+
+cd $odir
+../testcases/swap/swap -t 1m -i 20 -l 100 > /dev/null &
+sleep .5
+cd $mntpoint
+mkdir -p d1/d2/d3/d4/d5
+for i in `jot 8`; do
+ $dir/$prog $i &
+ pids="$pids $!"
+done
+cd $odir
+for pid in $pids; do
+ wait $pid
+ [ $? -ne 0 ] && s=1
+done
+
+for i in `jot 6`; do
+ mount | grep -q "on $mntpoint " || break
+ umount $mntpoint && break || sleep 10
+ [ $i -eq 6 ] &&
+ { echo FATAL; fstat -mf $mntpoint; exit 1; }
+done
+mdconfig -d -u $mdstart
+rm -rf $dir/$prog
+exit $s
+EOF
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <sys/param.h>
+#include <sys/stat.h>
+
+
+#include <err.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define RUNTIME 60
+#define SIZ (1024 * 1024)
+
+static time_t start;
+
+int
+main(void)
+{
+ size_t len;
+ int fd, i, ps;
+ char *cp;
+ char *path = "d1/d2/d3/d4/d5";
+ char d1[1024], d2[1024], file[1024];
+
+ snprintf(d1, sizeof(d1), "%s/dir.%d", path, getpid());
+ snprintf(d2, sizeof(d2), "%s/new.%d", path, getpid());
+ snprintf(file, sizeof(file), "%s/../file.%d", path, getpid());
+
+ start = time(NULL);
+ while (time(NULL) - start < RUNTIME) {
+ if (mkdir(d1, 0740) == -1)
+ err(1, "mkdir(%s)", d1);
+ if (rename(d1, d2) == -1)
+ err(1, "rename(%s, %s)", d1, d2);
+ if ((fd = open(file, O_RDWR | O_CREAT | O_TRUNC, 0600)) == -1)
+ err(1, "open%s()", file);
+ len = SIZ;
+ if (ftruncate(fd, len) == -1)
+ err(1, "ftruncate");
+ cp = mmap(NULL, len, PROT_READ | PROT_WRITE,
+ MAP_SHARED, fd, 0);
+ if (cp == MAP_FAILED)
+ err(1, "mmap()");
+ ps = getpagesize();
+ for (i = 0; i < SIZ; i += ps)
+ cp[i] = 1;
+ if (msync(cp, 0, MS_SYNC) == -1)
+ err(1, "msync(%p), file %s", cp, file);
+ if (munmap(cp, len) == -1)
+ err(1, "unmap()");
+ close(fd);
+ if (rename(d2, d1) == -1)
+ err(1, "rename(%s, %s)", d2, d1);
+ if (rmdir(d1) == -1)
+ err(1, "rmdir(%s)", d1);
+ }
+
+ return (0);
+}
diff --git a/tools/test/stress2/misc/ftruncate2.sh b/tools/test/stress2/misc/ftruncate2.sh
index c8c89e7ea5bd..35db3a4c5f8d 100755
--- a/tools/test/stress2/misc/ftruncate2.sh
+++ b/tools/test/stress2/misc/ftruncate2.sh
@@ -47,9 +47,8 @@ echo "Expect: \"/mnt: write failed, filesystem is full\""
mount | grep $mntpoint | grep -q "on $mntpoint " && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs md${mdstart}$part > /dev/null # Non SU panics
-mount /dev/md${mdstart}$part $mntpoint
+newfs md$mdstart > /dev/null # Non SU panics
+mount /dev/md$mdstart $mntpoint
dir=$mntpoint
chmod 777 $dir
diff --git a/tools/test/stress2/misc/fts.sh b/tools/test/stress2/misc/fts.sh
index b823517f7c3c..84d89ddc9e9e 100755
--- a/tools/test/stress2/misc/fts.sh
+++ b/tools/test/stress2/misc/fts.sh
@@ -44,11 +44,10 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=20m
diff --git a/tools/test/stress2/misc/fts2.sh b/tools/test/stress2/misc/fts2.sh
index d155393e66ba..b19ae1c68e7c 100755
--- a/tools/test/stress2/misc/fts2.sh
+++ b/tools/test/stress2/misc/fts2.sh
@@ -272,9 +272,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
(cd $mntpoint; /tmp/fts2)
diff --git a/tools/test/stress2/misc/fts3.sh b/tools/test/stress2/misc/fts3.sh
index 4cb75d8bf6e6..ed15fa451347 100755
--- a/tools/test/stress2/misc/fts3.sh
+++ b/tools/test/stress2/misc/fts3.sh
@@ -44,9 +44,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 3g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
start=`date '+%s'`
while [ $((`date '+%s'` - start)) -lt 120 ]; do
diff --git a/tools/test/stress2/misc/full.sh b/tools/test/stress2/misc/full.sh
index ec99ff88138a..cc6085d77e4e 100755
--- a/tools/test/stress2/misc/full.sh
+++ b/tools/test/stress2/misc/full.sh
@@ -40,9 +40,8 @@ kldstat -v | grep -q pty || kldload pty # ignore any load failure
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export LOAD=80
@@ -62,6 +61,6 @@ for i in `jot 6`; do
[ $i -eq 6 ] &&
{ echo FATAL; fstat -mf $mntpoint; exit 1; }
done
-checkfs /dev/md${mdstart}$part; s=$?
+checkfs /dev/md$mdstart; s=$?
mdconfig -d -u $mdstart
exit $s
diff --git a/tools/test/stress2/misc/fullpath.sh b/tools/test/stress2/misc/fullpath.sh
index 88cee4795009..5e772f00fa7d 100755
--- a/tools/test/stress2/misc/fullpath.sh
+++ b/tools/test/stress2/misc/fullpath.sh
@@ -101,9 +101,7 @@ test(void) {
int main(int argc, char **argv)
{
- int i;
- i = 0;
signal(SIGALRM, handler);
alarm(60);
diff --git a/tools/test/stress2/misc/fuzz.sh b/tools/test/stress2/misc/fuzz.sh
index bfe783752280..189cdbfebd01 100755
--- a/tools/test/stress2/misc/fuzz.sh
+++ b/tools/test/stress2/misc/fuzz.sh
@@ -54,25 +54,24 @@ tst() {
rm -f $D
truncate -s 2M $D
mdconfig -a -t vnode -f $D -u $mdstart
- bsdlabel -w md$mdstart auto
- newfs -b 8192 -f 1024 $newfs_flags /dev/md${mdstart}$part > /dev/null 2>&1
- mount /dev/md${mdstart}$part $mntpoint
+ newfs -b 8192 -f 1024 $newfs_flags /dev/md$mdstart > /dev/null 2>&1
+ mount /dev/md$mdstart $mntpoint
cp /etc/passwd /etc/group /etc/hosts $mntpoint
cp -r /usr/include/ufs $mntpoint
umount $mntpoint
for i in `jot 50`; do
./fuzz -n 50 $D
- if fsck -f -y /dev/md${mdstart}$part 2>&1 | egrep "^[A-Z]" > /dev/null; then
- if fsck -f -y /dev/md${mdstart}$part 2>&1 | egrep "^[A-Z]" > /dev/null; then
- if fsck -f -y /dev/md${mdstart}$part 2>&1 | egrep "^[A-Z]" > /dev/null; then
+ if fsck -f -y /dev/md$mdstart 2>&1 | egrep "^[A-Z]" > /dev/null; then
+ if fsck -f -y /dev/md$mdstart 2>&1 | egrep "^[A-Z]" > /dev/null; then
+ if fsck -f -y /dev/md$mdstart 2>&1 | egrep "^[A-Z]" > /dev/null; then
echo "fsck is giving up in loop $i!"
break
fi
fi
fi
sync;sync;sync
- if mount /dev/md${mdstart}$part $mntpoint; then
+ if mount /dev/md$mdstart $mntpoint; then
ls -l $mntpoint > /dev/null
find $mntpoint -exec dd if={} of=/dev/null bs=1m count=3 \; > /dev/null 2>&1
umount $mntpoint
diff --git a/tools/test/stress2/misc/geomleak2.sh b/tools/test/stress2/misc/geomleak2.sh
index 19b6f03d6333..1fc2405da66b 100755
--- a/tools/test/stress2/misc/geomleak2.sh
+++ b/tools/test/stress2/misc/geomleak2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/getrandom.sh b/tools/test/stress2/misc/getrandom.sh
index fe30a688decb..402ff8a40544 100755
--- a/tools/test/stress2/misc/getrandom.sh
+++ b/tools/test/stress2/misc/getrandom.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
@@ -46,9 +46,8 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
set +e
(cd $odir/../testcases/swap; ./swap -t 5m -i 40 -l 100) &
diff --git a/tools/test/stress2/misc/getrandom2.sh b/tools/test/stress2/misc/getrandom2.sh
index 941ffb737a6d..23eaa5aedb8e 100755
--- a/tools/test/stress2/misc/getrandom2.sh
+++ b/tools/test/stress2/misc/getrandom2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
diff --git a/tools/test/stress2/misc/gjournal.sh b/tools/test/stress2/misc/gjournal.sh
index 7ccc7a70760e..69d449104661 100755
--- a/tools/test/stress2/misc/gjournal.sh
+++ b/tools/test/stress2/misc/gjournal.sh
@@ -55,9 +55,8 @@ here=`pwd`
cd $mntpoint
dd if=/dev/zero of=image bs=1m count=1k status=none
mdconfig -a -t vnode -f image -u $m
-bsdlabel -w md$m auto
-newfs md${m}$part > /dev/null
-mount /dev/md${m}$part $mp2
+newfs md${m} > /dev/null
+mount /dev/md${m} $mp2
# dd will suspend in wdrain
echo "Expect \"$mp2: write failed, filesystem is full\""
dd if=/dev/zero of=$mp2/zero bs=1M > /dev/null 2>&1
diff --git a/tools/test/stress2/misc/gnop10.sh b/tools/test/stress2/misc/gnop10.sh
index 80ddc2fe1216..5ab05280279c 100755
--- a/tools/test/stress2/misc/gnop10.sh
+++ b/tools/test/stress2/misc/gnop10.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
@@ -27,11 +27,15 @@
# SUCH DAMAGE.
#
-# fsck test with forced unmount of a SUJ FS.
+# fsck test with forced unmount of a SU FS.
# Variation of gnop8.sh by Kirk McKusick <mckusick@mckusick.com>
# Copy of gnop9.sh. Uses SU instead of SUJ.
+# https://people.freebsd.org/~pho/stress/log/log0269.txt
+# https://people.freebsd.org/~pho/stress/log/log0370.txt
+# https://people.freebsd.org/~pho/stress/log/log0396.txt
+
[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
. ../default.cfg
@@ -41,9 +45,7 @@ pgrep -x mount && { pgrep -x mount | xargs ps -lp; exit 1; }
fsck=/sbin/fsck_ffs
fsck_loops=10
-exp=/sbin/fsck_ffs.exp # Experimental version
log=/tmp/gnop10.log
-[ -f $exp ] && { echo "Using $exp"; fsck=$exp; }
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 5g -u $mdstart || exit 1
md=md$mdstart
@@ -72,27 +74,27 @@ testcases/dirnprename/dirnprename
testcases/dirrename/dirrename
'
-set `df -ik $mntpoint | tail -1 | awk '{print $4,$7}'`
-export KBLOCKS=$(($1 / 10 * 7))
-export INODES=$(($2 / 10 * 7))
-
start=`date +%s`
while [ $((`date +%s` - start)) -lt 600 ]; do
gnop create /dev/$md || exit 1
mount /dev/$md.nop $mntpoint || exit 1
+
+ rm -rf $RUNDIR $CTRLDIR
mkdir -p $RUNDIR $CTRLDIR
chmod 777 $RUNDIR $CTRLDIR
+ set `df -ik $mntpoint | tail -1 | awk '{print $4,$7}'`
+ export KBLOCKS=$(($1 / 10 * 7))
+ export INODES=$(($2 / 10 * 7))
# start your favorite I/O test here
- rm -rf /tmp/stressX.control
- (cd $RUNDIR && find . -delete)
- su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS' &
+ su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS' > /dev/null 2>&1 &
# after some number of seconds
- sleep `jot -r 1 30 90`
+ sleep `jot -r 1 20 30`
gnop destroy -f /dev/$md.nop
../tools/killall.sh || exit 1
+ while pgrep -qU $testuser; do pkill -U $testuser; done
wait
# Wait until forcible unmount, may be up to about 30 seconds,
@@ -102,37 +104,33 @@ while [ $((`date +%s` - start)) -lt 600 ]; do
while mount | grep -q "on $mntpoint "; do
[ $n -eq 0 ] && /bin/echo -n "Waiting for $mntpoint to force umount ..."
n=$((n + 1))
- sleep 2
+ sleep 5
if [ $((`date +%s` - s)) -ge 180 ]; then
- echo "Giving up on waiting for umount of $mntpoint"
- umount $mntpoint || umount -f $mntpoint
- break
+ echo "Giving up on waiting for umount of $mntpoint"
+ umount $mntpoint
+ while mount | grep -q "on $mntpoint "; do
+ umount -f $mntpoint
+ done
fi
done
[ $n -ne 0 ] && echo
- # first fsck will attempt journal recovery
- $fsck -fy /dev/$md > $log 2>&1
-
- # The second fsck will do traditional check for any errors
- # from journal recovery
+ # The initial fsck_ffs may run for more than on hour with a 5GB MD disk
+ t=`date +%s`
+ $fsck -fy /dev/$md > /dev/null 2>&1
+ t=$((`date +%s`- t))
+ [ $t -gt 300 ] && echo "First fsck took $(((t + 30) / 60)) minutes!"
- # There seems to be a gnop cache issue, which resolves by adding
- # delays between each fsck run
for i in `jot $fsck_loops`; do
- sleep $((i * i)) # gnop workaround
- [ $i -ne 1 ] &&
- echo "`date +%T` $fsck loop #$((i + 1))"
+ sleep 10
$fsck -fy /dev/$md > $log 2>&1
- grep -Eq "IS CLEAN|MARKED CLEAN" $log && break
+ # For now, do not trust fsck_ffs's "CLEAN" message
+# grep -Eq "IS CLEAN|MARKED CLEAN" $log && break
+ grep -Eq "FILE SYSTEM WAS MODIFIED" $log || break
[ $i -eq $fsck_loops ] &&
- { echo "$fsck did not mark FS as clean"; exit 1; }
- [ $i -ne 1 ] && tail -3 $log
- sync; sleep 5; sync; sleep 5
+ { echo "$fsck did not mark FS as clean"; tail -12 $log; exit 1; }
done
done
-echo "Final $fsck"
-sleep 3; # gnop workaround
$fsck -fy /dev/$md > $log || { tail -5 $log; exit 1; }
mdconfig -d -u ${md#md}
rm -f $log
diff --git a/tools/test/stress2/misc/gnop11.sh b/tools/test/stress2/misc/gnop11.sh
index 4d4f936bd8c6..48da18f1c425 100755
--- a/tools/test/stress2/misc/gnop11.sh
+++ b/tools/test/stress2/misc/gnop11.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Kirk McKusick <mckusick@mckusick.com>
#
diff --git a/tools/test/stress2/misc/gnop12.sh b/tools/test/stress2/misc/gnop12.sh
new file mode 100755
index 000000000000..1b5d311d7723
--- /dev/null
+++ b/tools/test/stress2/misc/gnop12.sh
@@ -0,0 +1,114 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# fsck test with forced unmount of a SU FS.
+# Variation of gnop8.sh by Kirk McKusick <mckusick@mckusick.com>
+
+# Long fsck_ffs runtime scenario
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+fsck=/sbin/fsck_ffs
+fsck_loops=10
+log=/tmp/gnop12.log
+[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 5g -u $mdstart || exit 1
+md=md$mdstart
+newfs -U /dev/$md > /dev/null 2>&1 || exit 1
+
+export LOAD=80
+export rwLOAD=80
+export runRUNTIME=10m
+export RUNDIR=$mntpoint/stressX
+export CTRLDIR=$mntpoint/stressX.control
+export MAXSWAPPCT=80
+export TESTPROGS='
+testcases/creat/creat
+'
+
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 600 ]; do
+ gnop create /dev/$md || exit 1
+ mount /dev/$md.nop $mntpoint || exit 1
+
+ rm -rf $RUNDIR $CTRLDIR
+ mkdir -p $RUNDIR $CTRLDIR
+ chmod 777 $RUNDIR $CTRLDIR
+ set `df -ik $mntpoint | tail -1 | awk '{print $4,$7}'`
+ export KBLOCKS=$(($1 / 10 * 7))
+ export INODES=$(($2 / 10 * 7))
+
+ su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS' > /dev/null 2>&1 &
+
+ # after some number of seconds
+ sleep `jot -r 1 20 30`
+ gnop destroy -f /dev/$md.nop
+ ../tools/killall.sh || exit 1
+ while pgrep -qU $testuser; do pkill -U $testuser; done
+ wait
+
+ # Wait until forcible unmount, may be up to about 30 seconds,
+ # but typically very quick if I/O is in progress
+ s=`date +%s`
+ n=0
+ while mount | grep -q "on $mntpoint "; do
+ [ $n -eq 0 ] && /bin/echo -n "Waiting for $mntpoint to force umount ..."
+ n=$((n + 1))
+ sleep 5
+ if [ $((`date +%s` - s)) -ge 180 ]; then
+ echo "Giving up on waiting for umount of $mntpoint"
+ umount $mntpoint
+ while mount | grep -q "on $mntpoint "; do
+ umount -f $mntpoint
+ done
+ fi
+ done
+ [ $n -ne 0 ] && echo
+
+ # The initial fsck_ffs may run for more than on hour with a 5GB MD disk
+ t=`date +%s`
+ $fsck -fy /dev/$md > /dev/null 2>&1
+ t=$((`date +%s`- t))
+ [ $t -gt 300 ] && { echo "First fsck took $(((t + 30) / 60)) minutes!"; e=1; }
+
+ for i in `jot $fsck_loops`; do
+ sleep 10
+ $fsck -fy /dev/$md > $log 2>&1
+ # For now, do not trust fsck_ffs's "CLEAN" message
+# grep -Eq "IS CLEAN|MARKED CLEAN" $log && break
+ grep -Eq "FILE SYSTEM WAS MODIFIED" $log || break
+ [ $i -eq $fsck_loops ] &&
+ { echo "$fsck did not mark FS as clean"; tail -12 $log; exit 1; }
+ done
+done
+$fsck -fy /dev/$md > $log || { tail -5 $log; exit 1; }
+mdconfig -d -u ${md#md}
+rm -f $log
+exit $e
diff --git a/tools/test/stress2/misc/gnop13.sh b/tools/test/stress2/misc/gnop13.sh
new file mode 100755
index 000000000000..45668b9d8e82
--- /dev/null
+++ b/tools/test/stress2/misc/gnop13.sh
@@ -0,0 +1,138 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Snapshot test
+# Variation of force13.sh, but uses "gnop -f destroy"
+
+# Seen:
+# UFS: forcibly unmounting /dev/md10.nop from /mnt
+# panic: flush_pagedep_deps: failed to flush inodedep
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+set -u
+log=/tmp/gnop13.sh.log
+mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+truncate -s 10g $diskimage
+mdconfig -a -t vnode -f $diskimage -u $mdstart
+flags=$newfs_flags
+[ `jot -r 1 0 1` -eq 1 ] && flags="-j"
+
+echo "newfs $flags md$mdstart"
+newfs $flags md$mdstart > /dev/null 2>&1
+
+# Exclude rename for now due to log0374.txt
+export TESTPROGS=`cd ..; find testcases/ -perm -1 -type f | \
+ egrep -Ev "/run/|/badcode/|/pty/|/shm/|/socket/|sysctl|tcp|thr|udp|rename"`
+export runRUNTIME=3m
+export RUNDIR=$mntpoint/stressX
+export CTRLDIR=$mntpoint/stressX.control
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt $((15 * 60)) ]; do
+ gnop create /dev/md$mdstart || exit 1
+ mount /dev/md$mdstart.nop $mntpoint || exit 1
+ rm -fr $mntpoint/lost+found
+ chmod 777 $mntpoint
+
+ su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS' > \
+ /dev/null 2>&1 &
+
+ t=`jot -r 1 60 120`
+ st=`date +%s`
+ for i in `jot 10`; do
+ [ -d $mntpoint/.snap ] || break
+ rm -f $mntpoint/.snap/$i
+ echo "mksnap_ffs $mntpoint $mntpoint/.snap/$i"
+ mksnap_ffs $mntpoint $mntpoint/.snap/$i
+ sleep `jot -r 1 1 5`
+ [ $((`date +%s` - st)) -ge $t ] && break
+ done &
+ sleep `jot -r 1 60 120`
+ while [ -c /dev/md$mdstart.nop ]; do
+ echo "gnop destroy -f /dev/md$mdstart.nop"
+ gnop destroy -f /dev/md$mdstart.nop || sleep 1
+ done
+ n=0
+ st=`date +%s`
+ while mount | grep -q "on $mntpoint "; do
+ [ $n -eq 0 ] && /bin/echo -n "Waiting for $mntpoint to force umount ..."
+ n=$((n + 1))
+ sleep 2
+ if [ $((`date +%s` - st)) -ge 180 ]; then
+ echo "Giving up on waiting for umount of $mntpoint"
+ umount $mntpoint || umount -f $mntpoint
+ break
+ fi
+ done
+ [ $n -ne 0 ] && echo
+
+ ../tools/killall.sh
+ wait
+ mount | grep -q "on $mntpoint " && umount -f $mntpoint
+ c=0
+ # Run fsck minimum two times
+ for i in `jot 5`; do
+ fsck_ffs -fy /dev/md$mdstart > $log 2>&1; s=$?
+ grep -q CLEAN $log && grep -q "MODIFIED" $log && c=$((c+=1))
+ grep -Eq "FILE SYSTEM WAS MODIFIED" $log || break
+ done
+ [ $c -gt 1 ] &&
+ { echo "Note: FS marked clean+modified $c times out of $i fsck runs"; s=101; }
+ [ $s -ne 0 ] && break
+ grep -Eq "IS CLEAN|MARKED CLEAN" $log || { s=102; break; }
+done
+[ $s -eq 101 ] && s=0 # Ignore CLEANish problem for now
+if [ $s -eq 0 ]; then
+ mount /dev/md$mdstart.nop $mntpoint
+ cp -R /usr/include $mntpoint
+ dd if=/dev/zero of=$mntpoint/big bs=1m count=10 status=none
+ find $mntpoint/* -delete
+
+ # Check the RO snapshots
+ for f in $mntpoint/.snap/*; do
+ c=0
+ for i in `jot 5`; do
+ echo "fsck_ffs -fy $f"
+ fsck_ffs -fy $f > $log 2>&1; s=$?
+ grep -q CLEAN $log && grep -q "MODIFIED" $log && c=$((c+=1))
+ grep -Eq "FILE SYSTEM WAS MODIFIED" $log || break
+ done
+ [ $c -gt 1 ] &&
+ { echo "Note: snapshot $i marked clean+modified $c times out of $i fsck runs"; s=201; }
+ [ $s -ne 0 ] && break
+ grep -Eq "IS CLEAN|MARKED CLEAN" $log ||
+ { s=202; tail -10 $log; break; }
+ done
+ umount $mntpoint
+ mdconfig -d -u $mdstart
+ rm -f $diskimage $log
+fi
+exit $s
diff --git a/tools/test/stress2/misc/gnop4.sh b/tools/test/stress2/misc/gnop4.sh
index 2e4cc1a5df35..f938dd3b790b 100755
--- a/tools/test/stress2/misc/gnop4.sh
+++ b/tools/test/stress2/misc/gnop4.sh
@@ -55,19 +55,16 @@ mount /dev/md$mdstart.nop $mntpoint
chmod 777 $mntpoint
set +e
-start=`date '+%s'`
-(cd /usr; tar --exclude compile -cf - src) | (cd $mntpoint; tar xf -)
+(cd /usr; tar --exclude compile --exclude-vcs -cf - src) | \
+ (cd $mntpoint; tar xf -)
cd $mntpoint/src
export MAKEOBJDIRPREFIX=$mntpoint/obj
p=$((`sysctl -n hw.ncpu`+ 1))
-make -i -j $p buildworld DESTDIR=$mntpoint TARGET=amd64 TARGET_ARCH=amd64 \
- > /dev/null &
-e=$((`date '+%s'` - start))
-sleep $((15 * 60 - e))
-kill $!
-wait
+timeout 10m \
+ make -i -j $p buildworld DESTDIR=$mntpoint TARGET=amd64 \
+ TARGET_ARCH=amd64 > /dev/null
cd /
while mount | grep $mntpoint | grep -q /dev/md; do
diff --git a/tools/test/stress2/misc/gnop6.sh b/tools/test/stress2/misc/gnop6.sh
index 63301d8fe841..4d32f584662e 100755
--- a/tools/test/stress2/misc/gnop6.sh
+++ b/tools/test/stress2/misc/gnop6.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/gnop7.sh b/tools/test/stress2/misc/gnop7.sh
index 3f3118ff0fab..76008aabe925 100755
--- a/tools/test/stress2/misc/gnop7.sh
+++ b/tools/test/stress2/misc/gnop7.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/gnop8.sh b/tools/test/stress2/misc/gnop8.sh
index 6916c14e41f4..e9067c8c8066 100755
--- a/tools/test/stress2/misc/gnop8.sh
+++ b/tools/test/stress2/misc/gnop8.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Kirk McKusick <mckusick@mckusick.com>
#
diff --git a/tools/test/stress2/misc/gnop9.sh b/tools/test/stress2/misc/gnop9.sh
index 0389391398f3..12c6fff0a3bf 100755
--- a/tools/test/stress2/misc/gnop9.sh
+++ b/tools/test/stress2/misc/gnop9.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/gpt.sh b/tools/test/stress2/misc/gpt.sh
index 51b4ba39afda..5c1818921321 100755
--- a/tools/test/stress2/misc/gpt.sh
+++ b/tools/test/stress2/misc/gpt.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/graid1_11.sh b/tools/test/stress2/misc/graid1_11.sh
new file mode 100755
index 000000000000..a338b15306f4
--- /dev/null
+++ b/tools/test/stress2/misc/graid1_11.sh
@@ -0,0 +1,103 @@
+#!/bin/sh
+
+# g_mirror: don't fail reads while losing next-to-last disk
+
+# Fixed by https://cgit.FreeBSD.org/src/commit/?id=5d5f44623eb3d121d528060d131ee5d6bcd63489
+# Test scenario by: Andriy Gapon <avg@FreeBSD.org>
+
+set -u
+
+cleanup()
+{
+ echo "cleanup" 2>&1
+ gnop destroy -f ${dev1}.nop
+ gnop destroy -f ${dev2}.nop
+ gmirror destroy testmirror
+ mdconfig -d -u ${dev2#md}
+ mdconfig -d -u ${dev1#md}
+}
+
+list_descendants()
+{
+ local children
+
+ children=$(pgrep -P "$1")
+ for pid in $children ; do
+ list_descendants "$pid"
+ done
+ echo "$children"
+}
+
+# Note that the size of gnop providers is smaller than the
+# size of backing md-s to avoid gmirror auto-tasting.
+for i in 1 2; do
+ eval dev$i=$(mdconfig -a -t swap -s 1024m)
+ eval gnop create -d 8 -s 1000m \${dev$i}
+done
+
+trap cleanup EXIT INT TERM QUIT
+
+gmirror load 2>/dev/null || true
+gmirror label -b round-robin -F testmirror ${dev1}.nop ${dev2}.nop
+
+(
+ #my_pid=$(exec sh -c 'echo "$PPID"')
+
+ sleep 100000 &
+ sentry=$!
+
+ children=""
+ for i in $(seq 8) ; do
+ (
+ while dd if=/dev/mirror/testmirror of=/dev/null > /dev/null ; ds=$? ; [ $ds -eq 0 ] ; do
+ :
+ done
+ if [ $ds -lt 128 ] ; then
+ # Not killed
+ echo "dd exited with $ds" 1>&2
+ kill $sentry 2>/dev/null
+ fi
+ ) &
+
+ children="${children:+${children},}$!"
+
+ sleep 0.1
+ done
+
+ wait $sentry
+ pkill -P ${children} -x dd
+
+ # Reap background children
+ wait
+) &
+runner=$!
+
+# Give dd-s some time to get running
+sleep 2
+
+# Destroy one of the members
+echo "destroying one member" 1>&2
+gnop destroy -f ${dev1}.nop
+
+count=0
+while kill -0 $runner 2>/dev/null && [ $count -lt 5 ] ; do
+ sleep 1
+ count=$((count + 1))
+done
+
+if ! kill -0 $runner 2>/dev/null ; then
+ echo "the test has self-terminated" 1>&2
+ ret=1
+else
+ echo "the test is stuck, killing..." 1>&2
+ ret=0
+ kill $(list_descendants $runner) 2>/dev/null
+fi
+
+# Reap background processes
+wait
+
+# Just in case
+sleep 5
+
+exit $ret
diff --git a/tools/test/stress2/misc/growfs2.sh b/tools/test/stress2/misc/growfs2.sh
new file mode 100755
index 000000000000..0990f71423a3
--- /dev/null
+++ b/tools/test/stress2/misc/growfs2.sh
@@ -0,0 +1,65 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# growfs(8) test with output to FS to be grown.
+# A regression test for D37896 ufs/suspend: deny suspension if calling
+# process has file from mp opened for write
+# Before D37896 this would result in growfs(8) hanging.
+
+. ../default.cfg
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+log=/tmp/growfs2.sh.log
+s=0
+set -eu
+mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
+[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 32g -u $mdstart
+/sbin/gpart create -s GPT md$mdstart > /dev/null
+/sbin/gpart add -t freebsd-ufs -s 2g -a 4k md$mdstart > /dev/null
+set +e
+
+newfs $newfs_flags md${mdstart}p1 > /dev/null
+mount /dev/md${mdstart}p1 $mntpoint
+cp -r /usr/include $mntpoint/inc1
+
+gpart resize -i 1 -s 31g -a 4k md$mdstart
+echo "Expect: growfs: UFSSUSPEND: Resource deadlock avoided"
+growfs -y md${mdstart}p1 > $mntpoint/log && s=1 || s=0
+
+cp -r /usr/include $mntpoint/inc2
+umount $mntpoint
+fsck -fy /dev/md${mdstart}p1 > $log 2>&1
+grep -q "WAS MODIFIED" $log && s=2
+grep -q CLEAN $log || s=3
+[ $s -ne 0 ] && cat $log
+
+mdconfig -d -u $mdstart
+rm -f $log
+exit $s
diff --git a/tools/test/stress2/misc/gunion.sh b/tools/test/stress2/misc/gunion.sh
new file mode 100755
index 000000000000..ceecc55b2f13
--- /dev/null
+++ b/tools/test/stress2/misc/gunion.sh
@@ -0,0 +1,87 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# geom union test
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+kldstat -v | grep -q geom_union.ko ||
+ { kldload geom_union.ko 2>/dev/null || exit 0; loaded=1; }
+log=/tmp/gunion.sh.log
+md1=$mdstart
+md2=$((mdstart + 1))
+mp1=$mntpoint$md1
+mp2=$mntpoint$md2
+s=0
+
+set -e
+mdconfig -a -t swap -s 5g -u $md1
+newfs $newfs_flags -n /dev/md$md1 > /dev/null
+mkdir -p $mp1 $mp2
+mount /dev/md$md1 $mp1
+cp -r ../../stress2 $mp1
+umount $mp1
+
+mdconfig -a -t swap -s 5g -u $md2
+set +e
+gunion create -v /dev/md$md2 /dev/md$md1; s=$?
+[ $s -ne 0 ] && echo "gunion create returned $s"
+set -e
+mount /dev/md$md2-md$md1.union $mntpoint
+
+export RUNDIR=$mntpoint/stressX
+export runRUNTIME=5m
+export RUNTIME=2m
+export CTRLDIR=$mntpoint/stressX.control
+
+set +e
+chmod 777 $mntpoint
+su $testuser -c \
+ "(cd $mntpoint/stress2; ./run.sh marcus.cfg)"
+
+for i in `jot 6`; do
+ mount | grep -q "on $mntpoint " || break
+ umount $mntpoint && break || sleep 10
+ [ $i -eq 6 ] &&
+ { echo FATAL; fstat -mf $mntpoint; exit 1; }
+done
+fsck_ffs -fyR /dev/md$md2-md$md1.union > $log 2>&1
+grep -Eq "IS CLEAN|MARKED CLEAN" $log || { s=2; cat $log; }
+set -e
+gunion commit /dev/md$md2-md$md1.union
+gunion list | egrep Block\|Current | egrep -v 0 && s=3
+gunion destroy /dev/md$md2-md$md1.union
+fsck_ffs -fyR /dev/md$md1 > $log 2>&1
+grep -Eq "IS CLEAN|MARKED CLEAN" $log || { s=4; cat $log; }
+mdconfig -d -u $md2
+mdconfig -d -u $md1
+rm -f $log
+[ loaded ] && gunion unload
+exit $s
diff --git a/tools/test/stress2/misc/gunion2.sh b/tools/test/stress2/misc/gunion2.sh
new file mode 100755
index 000000000000..0d14c17b24eb
--- /dev/null
+++ b/tools/test/stress2/misc/gunion2.sh
@@ -0,0 +1,108 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# geom union test
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+kldstat -v | grep -q geom_union.ko ||
+ { kldload geom_union.ko 2>/dev/null || exit 0; loaded=1; }
+log=/tmp/gunion2.sh.log
+md1=$mdstart
+md2=$((mdstart + 1))
+mp1=$mntpoint$md1
+mp2=$mntpoint$md2
+s=0
+
+set -e
+mdconfig -a -t swap -s 5g -u $md1
+newfs -n /dev/md$md1 > /dev/null
+mkdir -p $mp1 $mp2
+mount /dev/md$md1 $mp1
+cp -r ../../stress2 $mp1
+umount $mp1
+
+mdconfig -a -t swap -s 5g -u $md2
+set +e
+gunion create -v /dev/md$md2 /dev/md$md1; s=$?
+[ $s -ne 0 ] && echo "gunion create returned $s"
+set -e
+mount /dev/md$md2-md$md1.union $mntpoint
+
+export CTRLDIR=$mntpoint/stressX.control
+export INCARNATIONS=10
+export LOAD=80
+export RUNDIR=$mntpoint/stressX
+export runRUNTIME=5m
+export rwLOAD=80
+export symlinkLOAD=80
+
+export TESTPROGS="
+testcases/lockf2/lockf2
+testcases/symlink/symlink
+testcases/openat/openat
+testcases/rw/rw
+testcases/fts/fts
+testcases/link/link
+testcases/lockf/lockf
+testcases/creat/creat
+testcases/mkdir/mkdir
+testcases/rename/rename
+testcases/mkfifo/mkfifo
+testcases/dirnprename/dirnprename
+testcases/dirrename/dirrename
+testcases/swap/swap
+"
+export TESTPROGS=`echo $TESTPROGS | sed 's/\n/ /g'`
+
+set -e
+chmod 777 $mntpoint
+su $testuser -c \
+ "(cd $mntpoint/stress2; ./testcases/run/run $TESTPROGS)"
+
+for i in `jot 6`; do
+ mount | grep -q "on $mntpoint " || break
+ umount $mntpoint && break || sleep 10
+ [ $i -eq 6 ] &&
+ { echo FATAL; fstat -mf $mntpoint; exit 1; }
+done
+fsck_ffs -fyR /dev/md$md2-md$md1.union > $log 2>&1
+grep -Eq "IS CLEAN|MARKED CLEAN" $log || { s=2; cat $log; }
+set +e
+gunion commit /dev/md$md2-md$md1.union
+gunion list | egrep Block\|Current | egrep -v 0 && s=3
+gunion destroy /dev/md$md2-md$md1.union
+fsck_ffs -fyR /dev/md$md1 > $log 2>&1
+grep -Eq "IS CLEAN|MARKED CLEAN" $log || { s=4; cat $log; }
+mdconfig -d -u $md2
+mdconfig -d -u $md1
+rm -f $log
+[ loaded ] && gunion unload
+exit $s
diff --git a/tools/test/stress2/misc/holdcnt0.sh b/tools/test/stress2/misc/holdcnt0.sh
index 7a35eb1dbf5f..2833915a8f27 100755
--- a/tools/test/stress2/misc/holdcnt0.sh
+++ b/tools/test/stress2/misc/holdcnt0.sh
@@ -50,9 +50,8 @@ cd $here
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 5g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
(cd $mntpoint; /tmp/holdcnt0) &
pid=$!
@@ -62,7 +61,7 @@ while kill -0 $! 2> /dev/null; do
done
wait $pid; s=$?
-while mount | grep -q md${mdstart}$part; do
+while mount | grep -q md$mdstart; do
umount $mntpoint || sleep 1
done
mdconfig -d -u $mdstart
diff --git a/tools/test/stress2/misc/holdcnt04.sh b/tools/test/stress2/misc/holdcnt04.sh
index 52aff0e3816d..871df7ccb08a 100755
--- a/tools/test/stress2/misc/holdcnt04.sh
+++ b/tools/test/stress2/misc/holdcnt04.sh
@@ -44,9 +44,8 @@ cd $here
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
(cd $mntpoint; /tmp/holdcnt04) &
pid=$!
@@ -56,7 +55,7 @@ while kill -0 $! 2> /dev/null; do
done
wait $pid; s=$?
-while mount | grep -q md${mdstart}$part; do
+while mount | grep -q md$mdstart; do
umount $mntpoint || sleep 1
done
mdconfig -d -u $mdstart
diff --git a/tools/test/stress2/misc/holdcnt05.sh b/tools/test/stress2/misc/holdcnt05.sh
index efafa984bdd8..fa6c7b4bd628 100755
--- a/tools/test/stress2/misc/holdcnt05.sh
+++ b/tools/test/stress2/misc/holdcnt05.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/ifconfig.sh b/tools/test/stress2/misc/ifconfig.sh
index 6359711a0445..0fe768d8c53c 100755
--- a/tools/test/stress2/misc/ifconfig.sh
+++ b/tools/test/stress2/misc/ifconfig.sh
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
@@ -50,7 +50,7 @@ start=`date +%s`
while [ $((`date +%s` - start)) -lt 300 ]; do
for i in `jot 255`; do
(ifconfig $if.$i create
- ifconfig $if.$i inet 224.0.0.$i
+ ifconfig $if.$i inet 224.0.0.$i netmask 255.255.255.0
ifconfig $if.$i destroy) > /dev/null 2>&1 &
done
wait
diff --git a/tools/test/stress2/misc/ifconfig2.sh b/tools/test/stress2/misc/ifconfig2.sh
index 61abbab3dd54..77b0d4860647 100755
--- a/tools/test/stress2/misc/ifconfig2.sh
+++ b/tools/test/stress2/misc/ifconfig2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
@@ -53,7 +53,7 @@ for i in `jot 5`; do
done
while [ -f $sync ]; do
ifconfig $if.$i create
- ifconfig $if.$i inet 224.0.0.$i
+ ifconfig $if.$i inet 224.0.0.$i netmask 255.255.255.0
ifconfig $if.$i destroy
done
) > /dev/null 2>&1 &
diff --git a/tools/test/stress2/misc/indir.sh b/tools/test/stress2/misc/indir.sh
index d2d28cd650ab..1f0b873833ee 100755
--- a/tools/test/stress2/misc/indir.sh
+++ b/tools/test/stress2/misc/indir.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/indir_trunc.sh b/tools/test/stress2/misc/indir_trunc.sh
index 64c11f3570ee..e7f1b7cb4fe6 100755
--- a/tools/test/stress2/misc/indir_trunc.sh
+++ b/tools/test/stress2/misc/indir_trunc.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/isofs3.sh b/tools/test/stress2/misc/isofs3.sh
index 476c729568ac..c3ba14335a26 100755
--- a/tools/test/stress2/misc/isofs3.sh
+++ b/tools/test/stress2/misc/isofs3.sh
@@ -42,17 +42,16 @@ cp -r ../../stress2 $D 2>/dev/null
mkisofs -o $I -r $D > /dev/null 2>&1
-mount | grep -q /dev/md${mdstart}$part && umount -f /dev/md${mdstart}$part
+mount | grep -q /dev/md$mdstart && umount -f /dev/md${mdstart}
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $I -u $mdstart || exit 1
mount -t cd9660 /dev/md$mdstart $mntpoint || exit 1
m2=$((mdstart + 1))
mdconfig -s 1g -u $m2
-bsdlabel -w md$m2 auto
-newfs $newfs_flags md${m2}$part > /dev/null
+newfs $newfs_flags md${m2} > /dev/null
-mount -o union /dev/md${m2}$part $mntpoint || exit 1
+mount -o union /dev/md${m2} $mntpoint || exit 1
export RUNDIR=$mntpoint/stressX
export runRUNTIME=5m
diff --git a/tools/test/stress2/misc/jexec.sh b/tools/test/stress2/misc/jexec.sh
index c5c2ab605e08..00fb17a27a92 100755
--- a/tools/test/stress2/misc/jexec.sh
+++ b/tools/test/stress2/misc/jexec.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
diff --git a/tools/test/stress2/misc/jumbo.sh b/tools/test/stress2/misc/jumbo.sh
index 8dcc5aa7aca3..a2d09bafaa82 100755
--- a/tools/test/stress2/misc/jumbo.sh
+++ b/tools/test/stress2/misc/jumbo.sh
@@ -131,7 +131,7 @@ reader(void) {
if ((buf = malloc(MX)) == NULL)
err(1, "malloc(%d), %s:%d", MX, __FILE__, __LINE__);
setproctitle("reader");
- for (i = 4096; i < MX; i += 1024) {
+ for (i = sysconf(_SC_PAGESIZE); i < MX; i += 1024) {
alarm(TIMEOUT);
if ((n = recvfrom(msgsock, buf, i, MSG_WAITALL, NULL,
NULL)) < 0) {
diff --git a/tools/test/stress2/misc/kern_umtx_inf_loop.sh b/tools/test/stress2/misc/kern_umtx_inf_loop.sh
index b8088814d7b2..2c4d99149480 100755
--- a/tools/test/stress2/misc/kern_umtx_inf_loop.sh
+++ b/tools/test/stress2/misc/kern_umtx_inf_loop.sh
@@ -46,7 +46,6 @@ EOF
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
#include <sys/types.h>
#include <machine/cpufunc.h>
diff --git a/tools/test/stress2/misc/kevent10.sh b/tools/test/stress2/misc/kevent10.sh
index 6efdedfc28cd..b7f74f487cec 100755
--- a/tools/test/stress2/misc/kevent10.sh
+++ b/tools/test/stress2/misc/kevent10.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/kevent11.sh b/tools/test/stress2/misc/kevent11.sh
index f3a319f2ecff..a973dfc4fae8 100755
--- a/tools/test/stress2/misc/kevent11.sh
+++ b/tools/test/stress2/misc/kevent11.sh
@@ -44,9 +44,8 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
set +e
(cd $odir/../testcases/swap; ./swap -t 5m -i 20 -h -l 100 > /dev/null) &
diff --git a/tools/test/stress2/misc/kevent12.sh b/tools/test/stress2/misc/kevent12.sh
index 3ae0085f1e5d..1a022e2d1b47 100755
--- a/tools/test/stress2/misc/kevent12.sh
+++ b/tools/test/stress2/misc/kevent12.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/kevent13.sh b/tools/test/stress2/misc/kevent13.sh
index 82a7a10b983c..0e2f8982f4ab 100755
--- a/tools/test/stress2/misc/kevent13.sh
+++ b/tools/test/stress2/misc/kevent13.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/kevent14.sh b/tools/test/stress2/misc/kevent14.sh
index 2531b15caecf..3cf88fd87ba7 100755
--- a/tools/test/stress2/misc/kevent14.sh
+++ b/tools/test/stress2/misc/kevent14.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/kevent15.sh b/tools/test/stress2/misc/kevent15.sh
index 52925365c865..56a3bc4fbd0a 100755
--- a/tools/test/stress2/misc/kevent15.sh
+++ b/tools/test/stress2/misc/kevent15.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/kevent16.sh b/tools/test/stress2/misc/kevent16.sh
new file mode 100755
index 000000000000..23dd222821da
--- /dev/null
+++ b/tools/test/stress2/misc/kevent16.sh
@@ -0,0 +1,92 @@
+#!/bin/sh
+
+# Bug 258310 - kevent() does not see signal with zero timeout
+# Test scenario copied from the bug report.
+
+# Fixed by: 98168a6e6c12 - main - kqueue: drain kqueue taskqueue if syscall tickled it
+
+cat > /tmp/kevent16.c <<EOF
+#ifdef NDEBUG
+#undef NDEBUG
+#endif
+
+#define _GNU_SOURCE
+
+#include <sys/types.h>
+
+#include <sys/event.h>
+
+#include <assert.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdlib.h>
+
+#include <poll.h>
+#include <unistd.h>
+
+int
+main(void)
+{
+ long l;
+ int rv;
+
+ sigset_t set;
+ rv = sigemptyset(&set);
+ assert(rv == 0);
+ rv = sigaddset(&set, SIGUSR1);
+ assert(rv == 0);
+
+ rv = sigprocmask(SIG_BLOCK, &set, NULL);
+ assert(rv == 0);
+
+ int skq = kqueue();
+ assert(skq >= 0);
+
+ struct kevent kev;
+ EV_SET(&kev, SIGUSR1, EVFILT_SIGNAL, EV_ADD, 0, 0, 0);
+ rv = kevent(skq, &kev, 1, NULL, 0, NULL);
+ assert(rv == 0);
+
+ int kq = kqueue();
+ assert(kq >= 0);
+
+ EV_SET(&kev, skq, EVFILT_READ, EV_ADD | EV_CLEAR, 0, 0, 0);
+ rv = kevent(kq, &kev, 1, NULL, 0, NULL);
+ assert(rv == 0);
+
+ for (l = 0; l < 1000000; l++) {
+ rv = kill(getpid(), SIGUSR1);
+ assert(rv == 0);
+
+ /* Turn this into `#if 1` to avoid the race. */
+#if 0
+ rv = kevent(kq, NULL, 0, &kev, 1, NULL);
+#else
+ rv = kevent(kq, NULL, 0, &kev, 1, &(struct timespec) { 0, 0 });
+#endif
+ assert(rv == 1);
+ rv = kevent(kq, NULL, 0, &kev, 1, &(struct timespec) { 0, 0 });
+ assert(rv == 0);
+
+ rv = kevent(skq, NULL, 0, &kev, 1, &(struct timespec) { 0, 0 });
+ assert(rv == 1);
+ rv = kevent(skq, NULL, 0, &kev, 1, &(struct timespec) { 0, 0 });
+ assert(rv == 0);
+
+ siginfo_t siginfo;
+
+ rv = sigtimedwait(&set, &siginfo, &(struct timespec) { 0, 0 });
+ assert(rv == SIGUSR1);
+
+ rv = sigtimedwait(&set, &siginfo, &(struct timespec) { 0, 0 });
+ assert(rv < 0);
+ assert(errno == EAGAIN);
+ }
+}
+EOF
+cc -o /tmp/kevent16 -Wall -Wextra -O2 /tmp/kevent16.c || exit 1
+
+/tmp/kevent16; s=$?
+
+rm -f /tmp/kevent16.c kevent16 kevent16.core
+exit $s
diff --git a/tools/test/stress2/misc/kevent6.sh b/tools/test/stress2/misc/kevent6.sh
index 528bde5e78a1..41396c5be9a2 100755
--- a/tools/test/stress2/misc/kevent6.sh
+++ b/tools/test/stress2/misc/kevent6.sh
@@ -49,9 +49,8 @@ mount | grep "on $mntpoint " | grep -q md$mdstart && umount -f $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
su $testuser -c "(cd $mntpoint; /tmp/kevent6)"
diff --git a/tools/test/stress2/misc/kevent7.sh b/tools/test/stress2/misc/kevent7.sh
index 9383918ea134..8b58c35551f7 100755
--- a/tools/test/stress2/misc/kevent7.sh
+++ b/tools/test/stress2/misc/kevent7.sh
@@ -53,9 +53,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
for i in `jot 5`; do
@@ -68,11 +67,11 @@ for i in `jot 5`; do
done
for i in `jot 5`; do
- mount | grep -q md${mdstart}$part && \
+ mount | grep -q md$mdstart && \
umount $mntpoint && mdconfig -d -u $mdstart && break
sleep 10
done
-if mount | grep -q md${mdstart}$part; then
+if mount | grep -q md$mdstart; then
fstat $mntpoint
echo "umount $mntpoint failed"
exit 1
diff --git a/tools/test/stress2/misc/kevent8.sh b/tools/test/stress2/misc/kevent8.sh
index 66007eb5a2b1..3b9b4899076c 100755
--- a/tools/test/stress2/misc/kevent8.sh
+++ b/tools/test/stress2/misc/kevent8.sh
@@ -46,9 +46,8 @@ mount | grep "on $mntpoint " | grep -q md$mdstart && umount -f $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
su $testuser -c "(cd $mntpoint; /tmp/kevent8)" &
diff --git a/tools/test/stress2/misc/killpg2.sh b/tools/test/stress2/misc/killpg2.sh
new file mode 100755
index 000000000000..5e986f059637
--- /dev/null
+++ b/tools/test/stress2/misc/killpg2.sh
@@ -0,0 +1,197 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# killpg(2) version of reaper.sh. No problems seen.
+
+. ../default.cfg
+
+prog=$(basename "$0" .sh)
+cat > /tmp/$prog.c <<EOF
+#include <sys/param.h>
+#include <sys/mman.h>
+#include <sys/wait.h>
+
+#include <err.h>
+#include <errno.h>
+#include <pwd.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <unistd.h>
+
+static volatile u_int *share;
+
+#define CONT 0
+#define GID 1
+#define SYNC 2
+#define MAXP 10000
+
+static void
+hand(int i __unused) {
+ _exit(0);
+}
+
+static void
+looper(void)
+{
+ struct sigaction sa;
+ time_t start;
+ struct passwd *pw;
+ pid_t pids[MAXP];
+ int i, parallel;
+
+ setproctitle("looper");
+ sa.sa_handler = SIG_IGN;
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = 0;
+ if (sigaction(SIGUSR1, &sa, NULL) == -1)
+ err(1, "sigaction");
+
+ if ((pw = getpwnam("TUSER")) == NULL)
+ err(1, "no such user: TUSER");
+
+ if (setgroups(1, &pw->pw_gid) ||
+ setegid(pw->pw_gid) || setgid(pw->pw_gid) ||
+ seteuid(pw->pw_uid) || setuid(pw->pw_uid))
+ err(1, "Can't drop privileges to \"TUSER\"");
+ endpwent();
+ setpgrp(0, 0);
+ share[GID] = getpgrp();
+ share[SYNC] = 1;
+ start = time(NULL);
+ while (time(NULL) - start < 120) {
+ parallel = arc4random() % MAXP + 1;
+ for (i = 0; i < parallel; i++) {
+ if ((pids[i] = fork()) == 0) {
+ sa.sa_handler = hand;
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = 0;
+ if (sigaction(SIGUSR1, &sa, NULL) == -1)
+ err(1, "sigaction");
+ setproctitle("child");
+ for (;;)
+ pause();
+ _exit(0); /* never reached */
+ }
+ if (pids[i] == -1)
+ err(1, "fork()");
+ }
+ for (i = 0; i < parallel; i++) {
+ if (waitpid(pids[i], NULL, 0) != pids[i])
+ err(1, "waitpid(%d) in looper", pids[i]);
+ }
+ }
+ _exit(0);
+}
+
+static void
+killer(void)
+{
+ int e, gid;
+
+ while (share[SYNC] == 0)
+ ;
+ gid = share[GID];
+ while (share[CONT] == 1) {
+ usleep(arc4random() % 50000);
+ gid = share[GID];
+ if (gid != 0) {
+ e = 0;
+ while (e == 0) {
+ if (killpg(gid, SIGUSR1) == -1) {
+ e = 1;
+ if (errno != ESRCH)
+ err(1, "pgkill(%d)", gid);
+ }
+ usleep(5000 + arc4random() % 5000);
+ }
+ }
+ }
+ _exit(0);
+}
+
+int
+main(void)
+{
+ size_t len;
+ time_t start;
+ int lpid, kpid, s1, s2;
+
+ len = PAGE_SIZE;
+ if ((share = mmap(NULL, len, PROT_READ | PROT_WRITE,
+ MAP_ANON | MAP_SHARED, -1, 0)) == MAP_FAILED)
+ err(1, "mmap");
+
+ start = time(NULL);
+ while (time(NULL) - start < 120) {
+ share[CONT] = 1;
+ share[GID] = 0;
+ share[SYNC] = 0;
+ if ((lpid = fork()) == 0)
+ looper();
+ usleep(arc4random() % 100000);
+ if ((kpid = fork()) == 0)
+ killer();
+
+ if (waitpid(lpid, &s1, 0) != lpid)
+ err(1, "waitpid looper");
+ usleep(arc4random() % 1000);
+ share[CONT] = 0;
+ waitpid(kpid, &s2, 0);
+ }
+
+ return (0);
+}
+EOF
+sed -i '' "s#TUSER#$testuser#" /tmp/$prog.c
+cc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c || exit 1
+rm /tmp/$prog.c
+
+n=1
+start=`date +%s`
+while true; do
+ /tmp/$prog
+ for i in `jot 50`; do
+ pgrep -q $prog || break
+ sleep .5
+ done
+ if pgrep -q $prog; then
+ e=$((`date +%s` - start))
+ echo "Failed in loop #$n after $e seconds."
+ pgrep "$prog|timeout" | xargs ps -jp
+ pkill $prog
+ rm -f /tmp/$prog
+ exit 1
+ fi
+ [ $((`date +%s` - start)) -ge 600 ] && break
+ n=$((n + 1))
+done
+rm /tmp/$prog
+exit 0
diff --git a/tools/test/stress2/misc/killpg3.sh b/tools/test/stress2/misc/killpg3.sh
new file mode 100755
index 000000000000..304b3e320f2f
--- /dev/null
+++ b/tools/test/stress2/misc/killpg3.sh
@@ -0,0 +1,192 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# killpg(2) version of reaper.sh. No problems seen.
+
+. ../default.cfg
+
+prog=$(basename "$0" .sh)
+cat > /tmp/$prog.c <<EOF
+#include <sys/param.h>
+#include <sys/mman.h>
+#include <sys/wait.h>
+
+
+#include <err.h>
+#include <errno.h>
+#include <pwd.h>
+#include <signal.h>
+#include <stdatomic.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <unistd.h>
+
+static _Atomic(int) *share;
+
+#define GID 0
+#define PARALLEL 10
+#define RDY 1
+#define MAXP 7000
+
+static void
+hand(int i __unused) {
+ _exit(0);
+}
+
+static void
+innerloop(int parallel)
+{
+ pid_t pids[MAXP];
+ struct sigaction sa;
+ int i;
+
+ usleep(1000);
+ for (i = 0; i < parallel; i++) {
+ if ((pids[i] = fork()) == 0) {
+ sa.sa_handler = hand;
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = 0;
+ if (sigaction(SIGUSR1, &sa, NULL) == -1)
+ err(1, "sigaction");
+ atomic_fetch_add(&share[RDY], 1);
+ setproctitle("child");
+ for (;;)
+ pause();
+ _exit(0); /* never reached */
+ }
+ if (pids[i] == -1)
+ err(1, "fork()");
+ }
+ for (i = 0; i < parallel; i++) {
+ if (waitpid(pids[i], NULL, 0) != pids[i])
+ err(1, "waitpid(%d) in looper", pids[i]);
+ }
+ _exit(0);
+}
+
+static void
+looper(void)
+{
+ struct sigaction sa;
+ struct passwd *pw;
+ pid_t pids[MAXP];
+ int i, parallel;
+
+ setproctitle("looper");
+ sa.sa_handler = SIG_IGN;
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = 0;
+ if (sigaction(SIGUSR1, &sa, NULL) == -1)
+ err(1, "sigaction");
+
+ if ((pw = getpwnam("TUSER")) == NULL)
+ err(1, "no such user: TUSER");
+
+ if (setgroups(1, &pw->pw_gid) ||
+ setegid(pw->pw_gid) || setgid(pw->pw_gid) ||
+ seteuid(pw->pw_uid) || setuid(pw->pw_uid))
+ err(1, "Can't drop privileges to \"TUSER\"");
+ endpwent();
+ setpgrp(0, 0);
+ share[GID] = getpgrp();
+ parallel = arc4random() % MAXP + 1;
+ parallel = parallel / PARALLEL * PARALLEL;
+ for (i = 0; i < PARALLEL; i++) {
+ if ((pids[i] = fork()) == 0)
+ innerloop(parallel / PARALLEL);
+ }
+ while (atomic_load(&share[RDY]) != parallel)
+ usleep(10000);
+ if (killpg(share[GID], SIGUSR1) == -1)
+ err(1, "pgkill(%d)", share[GID]);
+ for (i = 0; i < 4; i++) {
+ if (waitpid(pids[i], NULL, 0) != pids[i])
+ err(1, "waitpid(%d) in looper", pids[i]);
+ }
+ _exit(0);
+}
+
+int
+main(void)
+{
+ size_t len;
+ time_t start;
+ int lpid, s1;
+
+ len = PAGE_SIZE;
+ if ((share = mmap(NULL, len, PROT_READ | PROT_WRITE,
+ MAP_ANON | MAP_SHARED, -1, 0)) == MAP_FAILED)
+ err(1, "mmap");
+
+ start = time(NULL);
+ while (time(NULL) - start < 120) {
+ share[GID] = 0;
+ share[RDY] = 0;
+ if ((lpid = fork()) == 0)
+ looper();
+ if (waitpid(lpid, &s1, 0) != lpid)
+ err(1, "waitpid looper");
+ }
+
+ return (0);
+}
+EOF
+sed -i '' "s#TUSER#$testuser#" /tmp/$prog.c
+mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c || exit 1
+rm /tmp/$prog.c
+
+export MAXSWAPPCT=70
+n=1
+start=`date +%s`
+while true; do
+ ../testcases/swap/swap -t 2m -i 20 > /dev/null &
+ /tmp/$prog & pid=$!
+ st=`date +%s`
+ while kill -0 $pid > /dev/null 2>&1; do
+ e=$((`date +%s` - st))
+ if [ $e -ge 120 ]; then
+ while pgrep -q swap; do pkill swap; done
+ fi
+ if [ $e -ge 600 ]; then
+ echo "Failed in loop #$n after $e seconds."
+ ps -jU$testuser | head -20
+ kill $pid
+ pkill -U$testuser
+ wait
+ rm -f /tmp/$prog
+ exit 1
+ fi
+ done
+ wait
+ [ $((`date +%s` - start)) -ge 300 ] && break
+ n=$((n + 1))
+done
+rm /tmp/$prog
+exit 0
diff --git a/tools/test/stress2/misc/killpg4.sh b/tools/test/stress2/misc/killpg4.sh
new file mode 100755
index 000000000000..448a7f60dd4b
--- /dev/null
+++ b/tools/test/stress2/misc/killpg4.sh
@@ -0,0 +1,114 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Another killpg(2) test scenario. No problems seen.
+
+. ../default.cfg
+export prog=$(basename "$0" .sh)
+set -u
+
+cat > /tmp/$prog.c <<EOF
+#include <sys/wait.h>
+#include <err.h>
+#include <time.h>
+#include <stdlib.h>
+#include <unistd.h>
+#define PARALLEL 2
+
+int
+test(void)
+{
+ pid_t pid;
+ time_t start;
+
+ start = time(NULL);
+ while (time(NULL) - start < 300) {
+ if ((pid = fork()) == -1)
+ err(1, "fork()");
+ if (pid == 0) {
+ if (arc4random() % 100 < 20)
+ usleep(arc4random() % 5000);
+ _exit(0); /* Not reached */
+ }
+ if (waitpid(pid, NULL, 0) != pid)
+ err(1, "waitpid()");
+ }
+ _exit(0);
+}
+
+int
+main(void)
+{
+ pid_t pids[PARALLEL];
+ int i;
+
+ for (i = 0; i < PARALLEL; i++) {
+ test();
+ }
+ for (i = 0; i < PARALLEL; i++) {
+ if (waitpid(pids[i], NULL, 0) != pids[i])
+ err(1, "waotpid() main");
+ }
+
+}
+EOF
+mycc -o /tmp/$prog -Wall -Wextra -O2 /tmp/$prog.c || exit 1
+
+export MAXSWAPPCT=80
+../testcases/swap/swap -t 2m -i 5 > /dev/null 2>&1 &
+sleep .5
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 120 ]; do
+ for i in `jot 200 100`; do
+ (
+ sl=$prog.$i
+ sleep=/tmp/$sl
+ cp /tmp/$prog $sleep
+ su $testuser -c "$sleep & $sleep & $sleep &" & pid=$!
+ for j in `jot 10`; do
+ pgrep -q "$sl" && break
+ sleep .5
+ done
+ pgrep -q "$sl" || { echo "No start"; exit 1; }
+ pgid=`pgrep "$sl" | xargs ps -jp | sed 1d | \
+ tail -1 | awk '{print $4}'`
+ [ -z "$pgid" ] && { echo "Zero pgid:$pgid"; ps aj | \
+ sed -n "1p;/$sl/p"; exit 1; }
+ sleep 1.`jot -r 1 2 9`
+ kill -- -$pgid || { echo "kill -$pgid failed"; exit 1; }
+ wait $pid
+ rm -f $sleep
+ ) &
+ done
+ while [ `ps -U$testuser | wc -l` -gt 1 ] ; do sleep 2; done
+done
+while pkill swap; do :; done
+wait
+rm /tmp/$prog /tmp/$prog.c
+exit 0
diff --git a/tools/test/stress2/misc/kinfo3.sh b/tools/test/stress2/misc/kinfo3.sh
index 9f4d00dbf2fb..262a9943e780 100755
--- a/tools/test/stress2/misc/kinfo3.sh
+++ b/tools/test/stress2/misc/kinfo3.sh
@@ -35,7 +35,7 @@
odir=`pwd`
cd /tmp
sed '1,/^EOF/d' < $odir/$0 > kinfo3.c
-mycc -o kinfo3 -Wall -Wextra kinfo3.c -lutil -pthread || exit 1
+mycc -o kinfo3 -Wall -Wextra -O0 kinfo3.c -lutil -pthread || exit 1
rm -f kinfo3.c
s=0
@@ -131,7 +131,7 @@ list(void)
{
struct kinfo_proc *kipp;
struct kinfo_vmentry *freep_vm;
- struct kinfo_file *freep, *kif;
+ struct kinfo_file *freep, *kif __unused;
size_t len;
long i, j;
int cnt, name[4];
diff --git a/tools/test/stress2/misc/kpti.sh b/tools/test/stress2/misc/kpti.sh
index c5ca254a48d6..fdd516197482 100755
--- a/tools/test/stress2/misc/kpti.sh
+++ b/tools/test/stress2/misc/kpti.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/largepage.sh b/tools/test/stress2/misc/largepage.sh
index 3c8e745ff3ab..6e7baeca0bfc 100755
--- a/tools/test/stress2/misc/largepage.sh
+++ b/tools/test/stress2/misc/largepage.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
@@ -78,7 +78,7 @@ work(int idx)
size_t len;
int i,r;
char *p;
- volatile char val;
+ volatile char val __unused;
char path[PATH_MAX];
len = ps[idx];
diff --git a/tools/test/stress2/misc/laundry.sh b/tools/test/stress2/misc/laundry.sh
index 5d368432ac3c..cd94e4f38972 100755
--- a/tools/test/stress2/misc/laundry.sh
+++ b/tools/test/stress2/misc/laundry.sh
@@ -48,9 +48,8 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
set +e
cd $mntpoint
diff --git a/tools/test/stress2/misc/ldt.sh b/tools/test/stress2/misc/ldt.sh
index 21c7055d76fe..7b23548c9eea 100755
--- a/tools/test/stress2/misc/ldt.sh
+++ b/tools/test/stress2/misc/ldt.sh
@@ -284,7 +284,6 @@ EOF
cat > fault.c <<EOF
/* \$Id: fault.c,v 1.5 2008/10/28 17:39:16 kostik Exp \$ */
-#include <sys/cdefs.h>
#include <sys/types.h>
#include <sys/ucontext.h>
#include <errno.h>
diff --git a/tools/test/stress2/misc/linger.sh b/tools/test/stress2/misc/linger.sh
index fee2524ffd3b..3d1dd1e3268e 100755
--- a/tools/test/stress2/misc/linger.sh
+++ b/tools/test/stress2/misc/linger.sh
@@ -42,12 +42,11 @@ cd $here
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
[ $# -eq 1 ] && opt="$1"
[ $# -eq 0 ] && opt=$newfs_flags # No argument == default flag
-echo "newfs $opt md${mdstart}$part"
-newfs $opt md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+echo "newfs $opt md$mdstart"
+newfs $opt md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
if ! su $testuser -c "cd $mntpoint; /tmp/linger $size"; then
diff --git a/tools/test/stress2/misc/linger2.sh b/tools/test/stress2/misc/linger2.sh
index e5dad8d7e21d..7ffde78089d8 100755
--- a/tools/test/stress2/misc/linger2.sh
+++ b/tools/test/stress2/misc/linger2.sh
@@ -42,11 +42,10 @@ cd $here
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
[ $# -eq 1 ] && opt="$1"
[ $# -eq 0 ] && opt=$newfs_flags # No argument == default flag
-newfs $opt -n md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $opt -n md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
set `df -i $mntpoint | tail -1 | awk '{print $3, $6}'`
diff --git a/tools/test/stress2/misc/linger3.sh b/tools/test/stress2/misc/linger3.sh
index c888d992138a..b3512041775c 100755
--- a/tools/test/stress2/misc/linger3.sh
+++ b/tools/test/stress2/misc/linger3.sh
@@ -42,12 +42,11 @@ mount | grep "$mntpoint" | grep -q md$mdstart && umount $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
[ $# -eq 1 ] && opt="$1"
[ $# -eq 0 ] && opt=$newfs_flags # No argument == default flag
-echo "newfs $opt md${mdstart}$part"
-newfs $opt md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+echo "newfs $opt md$mdstart"
+newfs $opt md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
cd $mntpoint
chmod 777 $mntpoint
diff --git a/tools/test/stress2/misc/linger4.sh b/tools/test/stress2/misc/linger4.sh
index 1578575fa387..aade4a4ab006 100755
--- a/tools/test/stress2/misc/linger4.sh
+++ b/tools/test/stress2/misc/linger4.sh
@@ -42,12 +42,11 @@ mount | grep "$mntpoint" | grep -q md$mdstart && umount $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
[ $# -eq 1 ] && opt="$1"
[ $# -eq 0 ] && opt="$newfs_flags -n" # No argument == default flag
-echo "newfs $opt md${mdstart}$part"
-newfs $opt md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+echo "newfs $opt md$mdstart"
+newfs $opt md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
cd $mntpoint
chmod 777 $mntpoint
diff --git a/tools/test/stress2/misc/link.sh b/tools/test/stress2/misc/link.sh
index 64f76ca5f3b0..5be9c1cba293 100755
--- a/tools/test/stress2/misc/link.sh
+++ b/tools/test/stress2/misc/link.sh
@@ -45,9 +45,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
daemon sh -c "(cd $here/../testcases/swap; ./swap -t 5m -i 20 -h -l 100)" \
> /dev/null 2>&1
@@ -55,7 +54,7 @@ daemon sh -c "(cd $here/../testcases/swap; ./swap -t 5m -i 20 -h -l 100)" \
for i in `jot 100`; do
umount -f $mntpoint &&
- mount /dev/md${mdstart}$part $mntpoint
+ mount /dev/md$mdstart $mntpoint
sleep .1
done
pkill -9 link
diff --git a/tools/test/stress2/misc/link2.sh b/tools/test/stress2/misc/link2.sh
index 94116c0dc081..650509c55814 100755
--- a/tools/test/stress2/misc/link2.sh
+++ b/tools/test/stress2/misc/link2.sh
@@ -42,9 +42,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
daemon sh -c "(cd $here/../testcases/swap; ./swap -t 5m -i 20 -h -l 100)" \
> /dev/null 2>&1
@@ -53,7 +52,7 @@ daemon sh -c "(cd $here/../testcases/swap; ./swap -t 5m -i 20 -h -l 100)" \
m1=`vmstat -m | awk '/ mount/ {print $2}'`
for i in `jot 100`; do
umount -f $mntpoint &&
- mount /dev/md${mdstart}$part $mntpoint
+ mount /dev/md$mdstart $mntpoint
sleep .1
done
m2=`vmstat -m | awk '/ mount/ {print $2}'`
diff --git a/tools/test/stress2/misc/linux.sh b/tools/test/stress2/misc/linux.sh
index 1cbbfb8b27a1..9f5a14d8324f 100755
--- a/tools/test/stress2/misc/linux.sh
+++ b/tools/test/stress2/misc/linux.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/lockf3.sh b/tools/test/stress2/misc/lockf3.sh
index 4493fa214a33..02dc86b7884f 100755
--- a/tools/test/stress2/misc/lockf3.sh
+++ b/tools/test/stress2/misc/lockf3.sh
@@ -40,10 +40,9 @@ mount | grep -q "$mntpoint" && umount $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 40m -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
cd $mntpoint
for i in `jot 3`; do
diff --git a/tools/test/stress2/misc/lockf4.sh b/tools/test/stress2/misc/lockf4.sh
index 690bad033cf4..6427a8a02ff9 100755
--- a/tools/test/stress2/misc/lockf4.sh
+++ b/tools/test/stress2/misc/lockf4.sh
@@ -42,9 +42,8 @@ cd $odir
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
su $testuser -c "(cd $mntpoint; /tmp/lockf4)" &
diff --git a/tools/test/stress2/misc/lstat.sh b/tools/test/stress2/misc/lstat.sh
index f89886a4556e..b380fee35904 100755
--- a/tools/test/stress2/misc/lstat.sh
+++ b/tools/test/stress2/misc/lstat.sh
@@ -44,9 +44,8 @@ cd $odir
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -n -b 4096 -f 512 -i 1024 md${mdstart}$part > /dev/null
-mount -o async /dev/md${mdstart}$part $mntpoint || exit 1
+newfs -n -b 4096 -f 512 -i 1024 md$mdstart > /dev/null
+mount -o async /dev/md$mdstart $mntpoint || exit 1
path=$mntpoint/a/b/c
mkdir -p $path
@@ -129,7 +128,7 @@ test(int idx)
struct stat sb;
pid_t fpid, pd, pid;
size_t len;
- int i, n, r;
+ int i, r;
char dir[128], path[128];
atomic_add_int(&share[R1], 1);
@@ -156,7 +155,6 @@ test(int idx)
while (share[R2] == 0) {
snprintf(path, sizeof(path), "%s/d.%d.%d", arg, pid,
i);
- n = 0;
while (dirs[0] > MXDIRS && share[R2] == 0)
usleep(SLPTIME);
while ((r = mkdir(path, 0777)) == -1) {
@@ -179,7 +177,6 @@ test(int idx)
i = 0;
setproctitle("rmdir");
while (dirs[0] > 0 || share[R2] == 0) {
- n = 0;
if (dirs[0] < MXDIRS / 2)
usleep(SLPTIME);
snprintf(path, sizeof(path), "%s/d.%d.%d", arg, pid, i);
diff --git a/tools/test/stress2/misc/mac_chkexec.sh b/tools/test/stress2/misc/mac_chkexec.sh
index d3e961b02200..e1cb6f37169d 100755
--- a/tools/test/stress2/misc/mac_chkexec.sh
+++ b/tools/test/stress2/misc/mac_chkexec.sh
@@ -35,15 +35,14 @@ exit 0 # Not part of the kernel
sysctl -a | ! grep -q security.mac.chkexec && echo "chkexec.ko must be loaded" && exit 1
-mount | grep "$mntpoint" | grep -q md${mdstart}$part && umount $mntpoint
+mount | grep "$mntpoint" | grep -q md$mdstart && umount $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 12m -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs md${mdstart}$part > /dev/null
-tunefs -l enable /dev/md${mdstart}$part
-mount /dev/md${mdstart}$part $mntpoint
+newfs md$mdstart > /dev/null
+tunefs -l enable /dev/md$mdstart
+mount /dev/md$mdstart $mntpoint
cp /bin/ls $mntpoint
setfmac chkexec/md5:`md5 -q $mntpoint/ls` $mntpoint/ls
diff --git a/tools/test/stress2/misc/mapwrite.sh b/tools/test/stress2/misc/mapwrite.sh
new file mode 100755
index 000000000000..1fef81942b64
--- /dev/null
+++ b/tools/test/stress2/misc/mapwrite.sh
@@ -0,0 +1,189 @@
+#!/bin/sh
+
+# File corruption scenario
+
+# Test program by Rob Norris <rob norris klarasystems com>
+# Test program obtained from: https://gist.github.com/robn/9804c60cd0275086d26893d73e7af35c
+# https://github.com/openzfs/zfs/issues/15654
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+
+set -u
+prog=$(basename "$0" .sh)
+cat > /tmp/$prog.c <<EOF
+/*
+ * Some kind of clone-related crasher. Not sure if legit or just outdated
+ * assertion.
+ *
+ * Creates clone, maps it, writes from map back into itself.
+ *
+ * Compile a recent (2.2+) ZFS with --enable-debug.
+ *
+ * cc -o mapwrite mapwrite.c
+ *
+ * echo 1 > /sys/modules/zfs/parameters/zfs_bclone_enabled
+ * zpool create tank ...
+ * cd /tank
+ * mapwrite
+ *
+ * [ 7.666305] VERIFY(arc_released(db->db_buf)) failed
+ * [ 7.666443] PANIC at dbuf.c:2150:dbuf_redirty()
+ * [ 7.666489] Showing stack for process 608
+ * [ 7.666534] CPU: 1 PID: 608 Comm: mapwrite Tainted: P O 5.10.170 #3
+ * [ 7.666610] Call Trace:
+ * [ 7.666646] dump_stack+0x57/0x6e
+ * [ 7.666717] spl_panic+0xd3/0xfb [spl]
+ * [ 7.667113] ? zfs_btree_find+0x16a/0x300 [zfs]
+ * [ 7.667278] ? range_tree_find_impl+0x55/0xa0 [zfs]
+ * [ 7.667333] ? _cond_resched+0x1a/0x50
+ * [ 7.667371] ? __kmalloc_node+0x14a/0x2b0
+ * [ 7.667415] ? spl_kmem_alloc_impl+0xb0/0xd0 [spl]
+ * [ 7.667555] ? __list_add+0x12/0x30 [zfs]
+ * [ 7.667681] spl_assert+0x17/0x20 [zfs]
+ * [ 7.667807] dbuf_redirty+0xad/0xb0 [zfs]
+ * [ 7.667963] dbuf_dirty+0xe76/0x1310 [zfs]
+ * [ 7.668011] ? mutex_lock+0xe/0x30
+ * [ 7.668133] ? dbuf_noread+0x112/0x240 [zfs]
+ * [ 7.668271] dmu_write_uio_dnode+0x101/0x1b0 [zfs]
+ * [ 7.668411] dmu_write_uio_dbuf+0x4a/0x70 [zfs]
+ * [ 7.668555] zfs_write+0x500/0xc80 [zfs]
+ * [ 7.668610] ? page_add_file_rmap+0xe/0xb0
+ * [ 7.668740] zpl_iter_write+0xe4/0x130 [zfs]
+ * [ 7.668803] new_sync_write+0x119/0x1b0
+ * [ 7.668843] vfs_write+0x1ce/0x260
+ * [ 7.668880] __x64_sys_pwrite64+0x91/0xc0
+ * [ 7.668918] do_syscall_64+0x30/0x40
+ * [ 7.668957] entry_SYSCALL_64_after_hwframe+0x61/0xc6
+ */
+
+#define _GNU_SOURCE
+
+#include <fcntl.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/stat.h>
+#include <sys/mman.h>
+
+#define DATASIZE (1024*1024)
+char data[DATASIZE];
+
+#define NDATA (512)
+
+#define FILE_NAME "file"
+#define CLONE_NAME "clone"
+
+static int
+_create_file(void)
+{
+ memset(data, 0x5a, DATASIZE);
+
+ int fd;
+ if ((fd = open(FILE_NAME, O_RDWR | O_CREAT | O_APPEND,
+ S_IRUSR | S_IWUSR)) < 0) {
+ perror("open '" FILE_NAME "'");
+ abort();
+ }
+
+ for (int i = 0; i < NDATA; i++) {
+ int nwr = write(fd, data, DATASIZE);
+ if (nwr < 0) {
+ perror("write");
+ abort();
+ }
+ if (nwr < DATASIZE) {
+ fprintf(stderr, "short write\n");
+ abort();
+ }
+ }
+
+ if (lseek(fd, 0, SEEK_SET) < 0) {
+ perror("lseek");
+ abort();
+ }
+
+ sync();
+
+ return (fd);
+}
+
+static int
+_clone_file(int sfd)
+{
+ int dfd;
+ if ((dfd = open(CLONE_NAME, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR)) < 0) {
+ perror("open '" CLONE_NAME "'");
+ abort();
+ }
+
+ if (copy_file_range(sfd, 0, dfd, 0, DATASIZE * NDATA, 0) < 0) {
+ perror("copy_file_range");
+ abort();
+ }
+
+ return (dfd);
+}
+
+static void *
+_map_file(int fd)
+{
+ void *p = mmap(NULL, DATASIZE*NDATA, PROT_READ, MAP_SHARED, fd, 0);
+ if (p == MAP_FAILED) {
+ perror("mmap");
+ abort();
+ }
+
+ return (p);
+}
+
+static void
+_map_write(void *p, int fd)
+{
+ if (pwrite(fd, p, DATASIZE, 0) < 0) {
+ perror("pwrite");
+ abort();
+ }
+}
+
+int
+main(void)
+{
+ int sfd = _create_file();
+ int dfd = _clone_file(sfd);
+ void *p = _map_file(dfd);
+ _map_write(p, dfd);
+ return (0);
+}
+EOF
+mycc -o /tmp/$prog -Wall -Wextra -O2 /tmp/$prog.c || exit 1
+
+mount | grep -q "on $mntpoint " && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+mdconfig -s 5g -u $mdstart
+
+newfs -n $newfs_flags /dev/md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+
+mycc -o /tmp/swap -Wall -Wextra -O0 ../tools/swap.c || exit 1
+timeout -k 90 60 /tmp/swap -d 100 &
+for i in `jot 10`; do
+ capacity=`swapinfo | tail -1 | sed 's/.* //; s/%//'`
+ [ $capacity -gt 1 ] && break
+ sleep 2 # Wait for swapping
+done
+
+cd $mntpoint
+/tmp/$prog; s=$?
+pkill swap
+wait
+cmp $mntpoint/file $mntpoint/clone || { echo Fail; s=1; }
+cd -
+
+umount $mntpoint
+mdconfig -d -u $mdstart
+rm /tmp/$prog /tmp/$prog.c
+exit $s
diff --git a/tools/test/stress2/misc/marcus.sh b/tools/test/stress2/misc/marcus.sh
index 727b1ad56c17..87fc2664d48a 100755
--- a/tools/test/stress2/misc/marcus.sh
+++ b/tools/test/stress2/misc/marcus.sh
@@ -35,9 +35,8 @@
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=20m
@@ -50,6 +49,6 @@ while mount | grep $mntpoint | grep -q /dev/md; do
umount $mntpoint || sleep 1
[ $((n += 1)) -gt 300 ] && { echo FAIL; exit 1; }
done
-checkfs /dev/md${mdstart}$part; s=$?
+checkfs /dev/md$mdstart; s=$?
mdconfig -d -u $mdstart
exit $s
diff --git a/tools/test/stress2/misc/marcus2.sh b/tools/test/stress2/misc/marcus2.sh
index 1e58c52ddfde..ddd358453a2d 100755
--- a/tools/test/stress2/misc/marcus2.sh
+++ b/tools/test/stress2/misc/marcus2.sh
@@ -39,9 +39,8 @@
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=20m
@@ -68,6 +67,6 @@ while mount | grep $mntpoint | grep -q /dev/md; do
umount $mntpoint || sleep 1
[ $((n += 1)) -gt 300 ] && { echo FAIL; exit 1; }
done
-checkfs /dev/md${mdstart}$part; s=$?
+checkfs /dev/md$mdstart; s=$?
mdconfig -d -u $mdstart
exit $s
diff --git a/tools/test/stress2/misc/marcus5.sh b/tools/test/stress2/misc/marcus5.sh
index 97c2465ba49c..f95887a20d56 100755
--- a/tools/test/stress2/misc/marcus5.sh
+++ b/tools/test/stress2/misc/marcus5.sh
@@ -39,9 +39,8 @@
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 5g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
size=$((`sysctl -n hw.physmem` / 1024 / 1024))
@@ -80,6 +79,6 @@ while mount | grep $mntpoint | grep -q /dev/md; do
umount $mntpoint || sleep 1
[ $((n += 1)) -gt 300 ] && { echo FAIL; exit 1; }
done
-checkfs /dev/md${mdstart}$part; s=$!
+checkfs /dev/md$mdstart; s=$!
mdconfig -d -u $mdstart
exit $s
diff --git a/tools/test/stress2/misc/marcus6.sh b/tools/test/stress2/misc/marcus6.sh
index 076a51e1e4a4..e541a552233e 100755
--- a/tools/test/stress2/misc/marcus6.sh
+++ b/tools/test/stress2/misc/marcus6.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
@@ -38,9 +38,8 @@
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 5g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
size=$((`sysctl -n hw.physmem` / 1024 / 1024))
@@ -78,6 +77,6 @@ while mount | grep $mntpoint | grep -q /dev/md; do
umount $mntpoint || sleep 1
[ $((n += 1)) -gt 60 ] && { echo "Timed out"; exit 1; }
done
-checkfs /dev/md${mdstart}$part; s=$!
+checkfs /dev/md$mdstart; s=$!
mdconfig -d -u $mdstart
exit $s
diff --git a/tools/test/stress2/misc/marcus7.sh b/tools/test/stress2/misc/marcus7.sh
index 94800c5c5f60..ac34c5419a14 100755
--- a/tools/test/stress2/misc/marcus7.sh
+++ b/tools/test/stress2/misc/marcus7.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
@@ -42,9 +42,8 @@
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 5g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
size=$((`sysctl -n hw.physmem` / 1024 / 1024))
@@ -85,6 +84,6 @@ while mount | grep $mntpoint | grep -q /dev/md; do
umount $mntpoint || sleep 1
[ $((n += 1)) -gt 300 ] && { echo FAIL; exit 1; }
done
-checkfs /dev/md${mdstart}$part; s=$!
+checkfs /dev/md$mdstart; s=$!
mdconfig -d -u $mdstart
exit $s
diff --git a/tools/test/stress2/misc/md.sh b/tools/test/stress2/misc/md.sh
index 47e491e2b841..ae0b090a86cc 100755
--- a/tools/test/stress2/misc/md.sh
+++ b/tools/test/stress2/misc/md.sh
@@ -33,13 +33,12 @@
. ../default.cfg
-mount | grep "$mntpoint" | grep md${mdstart}$part > /dev/null && umount $mntpoint
+mount | grep "$mntpoint" | grep md$mdstart > /dev/null && umount $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2m -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
export RUNDIR=$mntpoint/stressX
export KBLOCKS=30000 # Exaggerate disk capacity
diff --git a/tools/test/stress2/misc/md3.sh b/tools/test/stress2/misc/md3.sh
index 626d578e54ae..24354c19c4a7 100755
--- a/tools/test/stress2/misc/md3.sh
+++ b/tools/test/stress2/misc/md3.sh
@@ -36,10 +36,9 @@ mount | grep -q "$mntpoint" && umount $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1400m -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
# Stop FS "out of inodes" problem by only using 70%
set `df -ik $mntpoint | tail -1 | awk '{print $4,$7}'`
diff --git a/tools/test/stress2/misc/md9.sh b/tools/test/stress2/misc/md9.sh
index a232ade6963f..ab5024404b36 100755
--- a/tools/test/stress2/misc/md9.sh
+++ b/tools/test/stress2/misc/md9.sh
@@ -43,9 +43,8 @@ mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
diskimage=$mp2/diskimage
dd if=/dev/zero of=$diskimage bs=1m count=2k status=none
mdconfig -a -t vnode -f $diskimage -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -U /dev/md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -U /dev/md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
for i in `jot 10`; do
umount $mntpoint && break
diff --git a/tools/test/stress2/misc/mdconfig3.sh b/tools/test/stress2/misc/mdconfig3.sh
index 7fbdcbc1a5ff..5c145e34cc6d 100755
--- a/tools/test/stress2/misc/mdconfig3.sh
+++ b/tools/test/stress2/misc/mdconfig3.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/mdconfig4.sh b/tools/test/stress2/misc/mdconfig4.sh
index fb7bdd869b2a..284ce1b08045 100755
--- a/tools/test/stress2/misc/mdconfig4.sh
+++ b/tools/test/stress2/misc/mdconfig4.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
@@ -37,7 +37,6 @@
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 512m -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
newfs $newfs_flags md$mdstart > /dev/null
mount /dev/md$mdstart $mntpoint
diff --git a/tools/test/stress2/misc/mdconfig5.sh b/tools/test/stress2/misc/mdconfig5.sh
new file mode 100755
index 000000000000..b3ecd913bc4b
--- /dev/null
+++ b/tools/test/stress2/misc/mdconfig5.sh
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm
+#
+# 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.
+#
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+# Bug 257557 Garbage on disk (or USB memory stick) can cause GEOM taste ffs_sbget() to crash.
+# "panic: wrong length 4352 for sectorsize 512" seen:
+# https://people.freebsd.org/~pho/stress/log/log0159.txt
+
+. ../default.cfg
+
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+cc -o /tmp/flip -Wall -Wextra -O2 ../tools/flip.c || exit 1
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 120 ]; do
+ dd if=/dev/zero of=$diskimage bs=8m count=1 status=none
+ mdconfig -a -t vnode -f $diskimage -u $mdstart
+ newfs $newfs_flags /dev/md$mdstart > /dev/null
+ mdconfig -d -u $mdstart
+ for i in `jot 10`; do
+ /tmp/flip -n 4 $diskimage
+ mdconfig -a -t vnode -f $diskimage -u $mdstart &&
+ mdconfig -d -u $mdstart
+ done
+done
+
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+rm -f $diskimage /tmp/flip
+exit 0
diff --git a/tools/test/stress2/misc/memguard.sh b/tools/test/stress2/misc/memguard.sh
index 9b2a3a964d1b..2f80631ee308 100755
--- a/tools/test/stress2/misc/memguard.sh
+++ b/tools/test/stress2/misc/memguard.sh
@@ -38,11 +38,10 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 20m -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=5m
diff --git a/tools/test/stress2/misc/memguard2.sh b/tools/test/stress2/misc/memguard2.sh
index 4c4619ef89e3..60d6f00357b8 100755
--- a/tools/test/stress2/misc/memguard2.sh
+++ b/tools/test/stress2/misc/memguard2.sh
@@ -39,11 +39,10 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=30s
diff --git a/tools/test/stress2/misc/memguard3.sh b/tools/test/stress2/misc/memguard3.sh
index 8a7705c71537..d54c8f8e06b8 100755
--- a/tools/test/stress2/misc/memguard3.sh
+++ b/tools/test/stress2/misc/memguard3.sh
@@ -42,9 +42,8 @@ sysctl vm.memguard.frequency=1000
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 5g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=5m
@@ -55,7 +54,7 @@ su $testuser -c 'cd ..; ./run.sh marcus.cfg'
while mount | grep $mntpoint | grep -q /dev/md; do
umount $mntpoint || sleep 1
done
-checkfs /dev/md${mdstart}$part; s=$?
+checkfs /dev/md$mdstart; s=$?
mdconfig -d -u $mdstart
sysctl vm.memguard.frequency=0 > /dev/null
diff --git a/tools/test/stress2/misc/memguard4.sh b/tools/test/stress2/misc/memguard4.sh
index 323183caf96d..691deec627ca 100755
--- a/tools/test/stress2/misc/memguard4.sh
+++ b/tools/test/stress2/misc/memguard4.sh
@@ -38,11 +38,10 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=5m
diff --git a/tools/test/stress2/misc/midi.sh b/tools/test/stress2/misc/midi.sh
index 47594734b4e0..de9161e262ca 100755
--- a/tools/test/stress2/misc/midi.sh
+++ b/tools/test/stress2/misc/midi.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Mark Johnston <markj@freebsd.org>
#
diff --git a/tools/test/stress2/misc/midi2.sh b/tools/test/stress2/misc/midi2.sh
index 91f15aa3cc3b..80a485437dbb 100755
--- a/tools/test/stress2/misc/midi2.sh
+++ b/tools/test/stress2/misc/midi2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/mincore.sh b/tools/test/stress2/misc/mincore.sh
index 85c09cc0ceaf..8f42971144a7 100755
--- a/tools/test/stress2/misc/mincore.sh
+++ b/tools/test/stress2/misc/mincore.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/minherit.sh b/tools/test/stress2/misc/minherit.sh
index facb018a0337..ba5b0d9d1aeb 100755
--- a/tools/test/stress2/misc/minherit.sh
+++ b/tools/test/stress2/misc/minherit.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Peter Holm
#
diff --git a/tools/test/stress2/misc/mkdir.sh b/tools/test/stress2/misc/mkdir.sh
new file mode 100755
index 000000000000..39cc828f0303
--- /dev/null
+++ b/tools/test/stress2/misc/mkdir.sh
@@ -0,0 +1,80 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Demonstrate incorrect "out of inodes" message with SU enabled.
+# No issue seen with SU+J
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+set -eu
+prog=$(basename "$0" .sh)
+log=/tmp/$prog.log
+s=0
+mount | grep -q "on $mntpoint " && umount $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+
+mdconfig -a -t swap -s 100m -u $mdstart
+[ $# -eq 1 ] && flags="$@" || flags="-Un"
+echo "newfs $flags /dev/md$mdstart"
+newfs $flags /dev/md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+set +e
+
+ifree1=`df -i $mntpoint | tail -1 | awk '{print $7}'`
+before=`df -i $mntpoint`
+n=$(((ifree1 - 5) / 10))
+jot 10 | xargs -I% mkdir $mntpoint/%
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 180 ]; do
+ for j in `jot 10`; do
+ jot $n | xargs -P0 -I% mkdir $mntpoint/$j/%
+ jot $n | xargs -P0 -I% rmdir $mntpoint/$j/%
+ done
+done 2>&1 | tee $log | head -5
+[ -s $log ] && s=3
+jot 10 | xargs -I% rmdir $mntpoint/%
+umount $mntpoint; mount /dev/md$mdstart $mntpoint
+
+ifree2=`df -i $mntpoint | tail -1 | awk '{print $7}'`
+after=`df -i $mntpoint | tail -1`
+if [ $ifree1 -ne $ifree2 ]; then
+ echo "$before"
+ echo "$after"
+ s=1
+ ls -alsrt $mntpoint | head -20
+fi
+
+umount $mntpoint
+fsck -fy /dev/md$mdstart > $log 2>&1
+grep -Eq "WAS MODIFIED" $log && { s=2; cat $log; }
+
+mdconfig -d -u $mdstart
+rm -f $log
+exit $s
diff --git a/tools/test/stress2/misc/mkfifo.sh b/tools/test/stress2/misc/mkfifo.sh
index a0f012da5baa..1ea7dca8472f 100755
--- a/tools/test/stress2/misc/mkfifo.sh
+++ b/tools/test/stress2/misc/mkfifo.sh
@@ -44,11 +44,10 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
[ "$newfs_flags" = "-U" ] && opt="-j"
-newfs $opt md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $opt md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=20m
diff --git a/tools/test/stress2/misc/mkfifo2c.sh b/tools/test/stress2/misc/mkfifo2c.sh
index 6d83a5aca4a2..92a69b37d5fa 100755
--- a/tools/test/stress2/misc/mkfifo2c.sh
+++ b/tools/test/stress2/misc/mkfifo2c.sh
@@ -45,12 +45,11 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
[ $# -eq 1 ] && opt="$1"
[ $# -eq 0 ] && opt="-j"
-newfs $opt md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $opt md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=20m
diff --git a/tools/test/stress2/misc/mkfifo2d.sh b/tools/test/stress2/misc/mkfifo2d.sh
index 74d5875d090f..e5f2b257470a 100755
--- a/tools/test/stress2/misc/mkfifo2d.sh
+++ b/tools/test/stress2/misc/mkfifo2d.sh
@@ -39,10 +39,9 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount -o async /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount -o async /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=5m
diff --git a/tools/test/stress2/misc/mkfifo8.sh b/tools/test/stress2/misc/mkfifo8.sh
index 6227070f016e..eeed86bd98ec 100755
--- a/tools/test/stress2/misc/mkfifo8.sh
+++ b/tools/test/stress2/misc/mkfifo8.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/mknod.sh b/tools/test/stress2/misc/mknod.sh
index d2b9aa617577..4a5a826654fa 100755
--- a/tools/test/stress2/misc/mknod.sh
+++ b/tools/test/stress2/misc/mknod.sh
@@ -46,9 +46,8 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
set +e
cd $mntpoint
diff --git a/tools/test/stress2/misc/mlockall5.sh b/tools/test/stress2/misc/mlockall5.sh
index 847909b478c2..18f568ac7024 100755
--- a/tools/test/stress2/misc/mlockall5.sh
+++ b/tools/test/stress2/misc/mlockall5.sh
@@ -56,9 +56,8 @@ cd $odir
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 512m -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags -n md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint || exit 1
+newfs $newfs_flags -n md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint || exit 1
(cd $mntpoint; /tmp/mlockall5 || echo FAIL)
diff --git a/tools/test/stress2/misc/mlockall6.sh b/tools/test/stress2/misc/mlockall6.sh
index a755350f673d..b47f9be9bb1e 100755
--- a/tools/test/stress2/misc/mlockall6.sh
+++ b/tools/test/stress2/misc/mlockall6.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
@@ -30,6 +30,9 @@
# "panic: Lock (rw) vm object not locked @ vm/vm_page.c:1013" seen:
# https://people.freebsd.org/~pho/stress/log/mlockall6-2.txt
+# "panic: vm_page_unwire: wire count underflow for page..." seen:
+# https://people.freebsd.org/~pho/stress/log/log0430.txt
+
. ../default.cfg
[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
@@ -46,9 +49,8 @@ cd $odir
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 512m -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags -n md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint || exit 1
+newfs $newfs_flags -n md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint || exit 1
daemon sh -c "(cd $odir/../testcases/swap; ./swap -t 20m -i 20 -l 100)" \
> /dev/null 2>&1
@@ -141,7 +143,7 @@ test2(void)
for (i = 0; i < 100000 && share2[R2] == 0; i++)
touch(); /* while child is running */
- if (waitpid(pid, &status, 0) == -1)
+ if (waitpid(pid, &status, 0) != pid)
err(1, "wait");
if (status != 0)
@@ -170,7 +172,7 @@ test(void)
int
main(void)
{
- pid_t pid;
+ pid_t pids[PARALLEL];
size_t len;
time_t start;
int i, s, status;
@@ -184,12 +186,13 @@ main(void)
s = 0;
while (s == 0 && (time(NULL) - start) < RUNTIME) {
for (i = 0; i < PARALLEL; i++) {
- if ((pid = fork()) == 0)
+ if ((pids[i] = fork()) == 0)
test();
}
atomic_add_int(&share[R0], 1); /* Start test() runs */
for (i = 0; i < PARALLEL; i++) {
- waitpid(pid, &status, 0);
+ if (waitpid(pids[i], &status, 0) != pids[i])
+ err(1, "wait");
if (status != 0) {
fprintf(stderr, "FAIL: status = %d\n",
status);
diff --git a/tools/test/stress2/misc/mmap10.sh b/tools/test/stress2/misc/mmap10.sh
index a29768c36691..0bb7845f4d15 100755
--- a/tools/test/stress2/misc/mmap10.sh
+++ b/tools/test/stress2/misc/mmap10.sh
@@ -40,18 +40,22 @@ sed '1,/^EOF/d' < $here/$0 > mmap10.c
mycc -o mmap10 -Wall -Wextra -O2 -g mmap10.c -lpthread || exit 1
rm -f mmap10.c
-daemon sh -c "(cd $here/../testcases/swap; ./swap -t 2m -i 20 -k)"
+daemon sh -c "(cd $here/../testcases/swap; ./swap -t 2m -i 20 -k > /dev/null)"
+ulimit -c 0
sleep `jot -r 1 0 9`
for i in `jot 2`; do
- /tmp/mmap10 &
+ su $testuser -c /tmp/mmap10 &
done
-sleep 300
+start=`date +%s`
while pgrep -q mmap10; do
- pkill -9 mmap10
+ [ $((`date +%s` - start)) -ge 300 ] && break
+ sleep 2
+done
+while pgrep -q 'mmap10|swap'; do
+ pkill -9 mmap10 swap
sleep 2
done
wait
-killall -q swap
rm -f /tmp/mmap10 /tmp/mmap10.core
exit 0
@@ -76,6 +80,7 @@ EOF
#define N (128 * 1024 / (int)sizeof(u_int32_t))
#define PARALLEL 50
+static int debug = 0; /* set to "1" for debug output */
void *p;
u_int32_t r[N];
@@ -169,7 +174,7 @@ tmlock(void *arg __unused)
if (munlock(makeptr(), len) == 0)
n++;
}
- if (n < 10)
+ if (debug == 1 && n < 10)
fprintf(stderr, "Note: tmlock() only succeeded %d times.\n",
n);
@@ -193,7 +198,7 @@ tmprotect(void *arg __unused)
n++;
usleep(1000);
}
- if (n < 10)
+ if (debug == 1 && n < 10)
fprintf(stderr, "Note: tmprotect() only succeeded %d times.\n",
n);
@@ -215,7 +220,7 @@ tmlockall(void *arg __unused)
munlockall();
usleep(1000);
}
- if (n < 10)
+ if (debug == 1 && n < 10)
fprintf(stderr, "Note: tmlockall() only succeeded %d times.\n",
n);
diff --git a/tools/test/stress2/misc/mmap18.sh b/tools/test/stress2/misc/mmap18.sh
index 065b5bb7df6c..f2b19c07fe60 100755
--- a/tools/test/stress2/misc/mmap18.sh
+++ b/tools/test/stress2/misc/mmap18.sh
@@ -89,6 +89,7 @@ EOF
static u_int32_t r[N];
static void *p;
+static int debug; /* set to 1 for debug output */
static unsigned long
makearg(void)
@@ -176,11 +177,9 @@ tmlock(void *arg __unused)
if (munlock(makeptr(), len) == 0)
n++;
}
-#if defined(DEBUG)
- if (n < 10)
+ if (debug != 0 && n < 10)
fprintf(stderr, "Note: tmlock() only succeeded %d "
"times.\n", n);
-#endif
return (NULL);
}
@@ -202,11 +201,9 @@ tmprotect(void *arg __unused)
n++;
usleep(1000);
}
-#if defined(DEBUG)
- if (n < 10)
+ if (debug != 0 && n < 10)
fprintf(stderr, "Note: tmprotect() only succeeded %d "
"times.\n", n);
-#endif
return (NULL);
}
@@ -226,11 +223,9 @@ tmlockall(void *arg __unused)
munlockall();
usleep(1000);
}
-#if defined(DEBUG)
- if (n < 10)
+ if (debug != 0 && n < 10)
fprintf(stderr, "Note: tmlockall() only succeeded %d "
"times.\n", n);
-#endif
return (NULL);
}
diff --git a/tools/test/stress2/misc/mmap22.sh b/tools/test/stress2/misc/mmap22.sh
index 4b730100d7dc..6d56dbf4393e 100755
--- a/tools/test/stress2/misc/mmap22.sh
+++ b/tools/test/stress2/misc/mmap22.sh
@@ -41,7 +41,7 @@
here=`pwd`
cd /tmp
sed '1,/^EOF/d' < $here/$0 > mmap22.c
-mycc -o mmap22 -Wall -Wextra -O2 -g mmap22.c -lpthread || exit 1
+mycc -o mmap22 -Wall -Wextra -O0 -g mmap22.c -lpthread || exit 1
rm -f mmap22.c
su $testuser -c /tmp/mmap22 &
@@ -78,7 +78,7 @@ void *
tmmap(void *arg __unused)
{
size_t len;
- void *p;
+ void *p __unused;
int i;
len = SIZ;
diff --git a/tools/test/stress2/misc/mmap24.sh b/tools/test/stress2/misc/mmap24.sh
index 4a25a0e3520f..867c42f0ed9b 100755
--- a/tools/test/stress2/misc/mmap24.sh
+++ b/tools/test/stress2/misc/mmap24.sh
@@ -45,9 +45,8 @@ cd $odir
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
cp /tmp/mmap24 $mntpoint
diff --git a/tools/test/stress2/misc/mmap27.sh b/tools/test/stress2/misc/mmap27.sh
index 7f8d4e94583a..469a8a9ad8d8 100755
--- a/tools/test/stress2/misc/mmap27.sh
+++ b/tools/test/stress2/misc/mmap27.sh
@@ -76,7 +76,7 @@ work(void)
size_t left, len;
int i;
char *p;
- volatile char val;
+ volatile char val __unused;
if ((fd = open("/dev/mem", O_RDWR)) == -1)
err(1,"open()");
diff --git a/tools/test/stress2/misc/mmap28.sh b/tools/test/stress2/misc/mmap28.sh
index fd64202e3814..9e4fc6d26d5d 100755
--- a/tools/test/stress2/misc/mmap28.sh
+++ b/tools/test/stress2/misc/mmap28.sh
@@ -78,7 +78,7 @@ work(void)
int i;
char *p;
char path[128];
- volatile char val;
+ volatile char val __unused;
if ((rfd = open("/dev/random", O_RDONLY)) == -1)
err(1, "open(/dev/random)");
diff --git a/tools/test/stress2/misc/mmap29.sh b/tools/test/stress2/misc/mmap29.sh
index e6aacc15e48e..207bdb137b99 100755
--- a/tools/test/stress2/misc/mmap29.sh
+++ b/tools/test/stress2/misc/mmap29.sh
@@ -13,9 +13,8 @@
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -U md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -U md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
mkdir $mntpoint/mmap29
cd /tmp
diff --git a/tools/test/stress2/misc/mmap32.sh b/tools/test/stress2/misc/mmap32.sh
index a775b756084e..334327a85989 100755
--- a/tools/test/stress2/misc/mmap32.sh
+++ b/tools/test/stress2/misc/mmap32.sh
@@ -62,6 +62,7 @@ EOF
#include <unistd.h>
#define N 4096
+static int debug; /* set to 1 for debug output */
static uint32_t r[N];
static unsigned long
@@ -133,10 +134,8 @@ fuzz(int arg, void *addr, size_t len, int prot, int flags, int fd,
n++;
}
}
-#if defined(DEBUG)
- if (n == 0 && arg != 5)
+ if (debug != 0 &&n == 0 && arg != 5)
fprintf(stderr, "%s(%d) failed\n", __func__, arg);
-#endif
exit(0);
}
diff --git a/tools/test/stress2/misc/mmap33.sh b/tools/test/stress2/misc/mmap33.sh
index 70ac054a9934..8ecd9e22180b 100755
--- a/tools/test/stress2/misc/mmap33.sh
+++ b/tools/test/stress2/misc/mmap33.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
@@ -94,9 +94,8 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags -n md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags -n md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
set +e
file=file
@@ -109,7 +108,7 @@ sum1=`md5 < $mntpoint/$file`
{ ls -l mmap33.core; mv mmap33.core /tmp; s=1; }
cd $odir
umount $mntpoint
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
# This fails for truncate size < 512
sum2=`md5 < $mntpoint/$file`
[ $sum1 = $sum2 ] ||
diff --git a/tools/test/stress2/misc/mmap34.sh b/tools/test/stress2/misc/mmap34.sh
index 02bd193421b9..f1bf09200d8a 100755
--- a/tools/test/stress2/misc/mmap34.sh
+++ b/tools/test/stress2/misc/mmap34.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/mmap35.sh b/tools/test/stress2/misc/mmap35.sh
index 6e76434e77ec..f613b7006a89 100755
--- a/tools/test/stress2/misc/mmap35.sh
+++ b/tools/test/stress2/misc/mmap35.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/mmap36.sh b/tools/test/stress2/misc/mmap36.sh
index 89fc6721fbeb..4a38d5073344 100755
--- a/tools/test/stress2/misc/mmap36.sh
+++ b/tools/test/stress2/misc/mmap36.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/mmap37.sh b/tools/test/stress2/misc/mmap37.sh
index f5e25a282927..9d5f9d74c1c7 100755
--- a/tools/test/stress2/misc/mmap37.sh
+++ b/tools/test/stress2/misc/mmap37.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/mmap38.sh b/tools/test/stress2/misc/mmap38.sh
index b4cf60afe25b..06ff8770f36f 100755
--- a/tools/test/stress2/misc/mmap38.sh
+++ b/tools/test/stress2/misc/mmap38.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
diff --git a/tools/test/stress2/misc/mmap39.sh b/tools/test/stress2/misc/mmap39.sh
index 15aa8ec718a3..d94b40593a10 100755
--- a/tools/test/stress2/misc/mmap39.sh
+++ b/tools/test/stress2/misc/mmap39.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
@@ -54,7 +54,7 @@ mount /dev/md$mdstart $mntpoint
set +e
for i in `jot 128`; do
- $dir/mmap39 &
+ proccontrol -m aslr -s disable $dir/mmap39 &
pids="$pids $!"
done
s=0
diff --git a/tools/test/stress2/misc/mmap4.sh b/tools/test/stress2/misc/mmap4.sh
index 8c84401fb960..5303a4fbaeba 100755
--- a/tools/test/stress2/misc/mmap4.sh
+++ b/tools/test/stress2/misc/mmap4.sh
@@ -46,10 +46,9 @@ mount | grep -q "$mntpoint" && umount $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 40m -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
/tmp/mmap4 /$mntpoint/file
diff --git a/tools/test/stress2/misc/mmap40.sh b/tools/test/stress2/misc/mmap40.sh
index 4bf60fc8f44d..7f4d07885e05 100755
--- a/tools/test/stress2/misc/mmap40.sh
+++ b/tools/test/stress2/misc/mmap40.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/mmap41.sh b/tools/test/stress2/misc/mmap41.sh
new file mode 100755
index 000000000000..5051681aaf31
--- /dev/null
+++ b/tools/test/stress2/misc/mmap41.sh
@@ -0,0 +1,160 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2024 Peter Holm <pho@FreeBSD.org>
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+
+# Based on code from https://syzkaller.appspot.com/text?tag=ReproC&x=15d9baada80000
+# No problems seen
+
+. ../default.cfg
+
+prog=$(basename "$0" .sh)
+odir=`pwd`
+cd /tmp
+sed '1,/^EOF/d' < $odir/$0 > $prog.c
+mycc -o $prog -Wall -Wextra -O0 $prog.c -lpthread || exit 1
+rm -f $prog.c
+
+set -e
+mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
+[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 2g -u $mdstart
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+set +e
+
+$odir/../testcases/swap/swap -t 2m -i 10 > /dev/null &
+cd $mntpoint
+/tmp/$prog
+cd $odir
+while pkill swap; do :; done
+wait
+
+for i in `jot 6`; do
+ mount | grep -q "on $mntpoint " || break
+ umount $mntpoint && break || sleep 10
+ [ $i -eq 6 ] &&
+ { echo FATAL; fstat -mf $mntpoint; exit 1; }
+done
+mdconfig -d -u $mdstart
+rm -f /tmp/$prog
+exit 0
+
+EOF
+#include <sys/param.h>
+#include <sys/mman.h>
+#include <sys/uio.h>
+#include <sys/wait.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define DEBUG 0 /* 1 to enable */
+#define THREADS 2
+
+static volatile int go;
+static int fd;
+static char *p, path[128];
+
+#define ADDR (void *) 0x20000000ul
+#define LEN 0x1000000ul
+
+void *
+thr(void *arg)
+{
+ struct iovec iov;
+ long n, w;
+ char *p1;
+
+ if (*(int *)arg == 0) {
+ while (go == 0)
+ usleep(100);
+ while (go == 1) {
+ if ((p1 = mmap(ADDR, LEN, PROT_WRITE, MAP_ANON|MAP_FIXED|MAP_PRIVATE, -1, 0)) == MAP_FAILED)
+ err(1, "mmap() in %s", __func__);
+ usleep(arc4random() % 50);
+ if ((p1 = mmap(ADDR, LEN, PROT_READ|PROT_WRITE, MAP_ANON|MAP_FIXED|MAP_PRIVATE, -1, 0)) == MAP_FAILED)
+ err(1, "mmap() in %s", __func__);
+ usleep(arc4random() % 10000);
+ }
+ } else {
+ while (go == 0)
+ usleep(100);
+ n = w = 0;
+ while (go == 1) {
+ iov.iov_base = p;
+ iov.iov_len = 0x100000;
+ if (pwritev(fd, &iov, 1, 0) != -1)
+ w++;
+ n++;
+ }
+ if (DEBUG == 1)
+ fprintf(stderr, "%ld out of %ld writes (%ld%%)\n", w, n, w * 100 / n);
+ }
+
+
+ return (0);
+}
+
+void
+test(void)
+{
+ pthread_t threads[THREADS];
+ int nr[THREADS];
+ int i, r;
+
+ sprintf(path, "mmap.%06d", getpid());
+ if ((fd = open(path, O_CREAT | O_TRUNC | O_RDWR, 0622)) == -1)
+ err(1,"open()");
+
+
+ if ((p = mmap(ADDR, LEN, PROT_READ|PROT_WRITE, MAP_ANON|MAP_FIXED|MAP_PRIVATE, -1, 0)) == MAP_FAILED)
+ err(1, "mmap() in %s", __func__);
+
+ go = 0;
+ for (i = 0; i < THREADS; i++) {
+ nr[i] = i;
+ if ((r = pthread_create(&threads[i], NULL, thr,
+ (void *)&nr[i])) != 0)
+ errc(1, r, "pthread_create()");
+ }
+
+ go = 1;
+ sleep(60);
+ go = 2;
+
+ for (i = 0; i < THREADS; i++) {
+ if ((r = pthread_join(threads[i], NULL)) != 0)
+ errc(1, r, "pthread_join(%d)", i);
+ }
+ close(fd);
+ if (DEBUG == 0) {
+ if (unlink(path) == -1)
+ err(1, "unlink(%s)", path);
+ }
+
+ _exit(0);
+}
+
+int
+main(void)
+{
+ pid_t pid;
+ int i;
+
+ for (i = 0; i < 2; i++) {
+ if ((pid = fork()) == 0)
+ test();
+ if (waitpid(pid, NULL, 0) != pid)
+ err(1, "waitpid()");
+ }
+}
diff --git a/tools/test/stress2/misc/mmap42.sh b/tools/test/stress2/misc/mmap42.sh
new file mode 100755
index 000000000000..11235e581e73
--- /dev/null
+++ b/tools/test/stress2/misc/mmap42.sh
@@ -0,0 +1,101 @@
+#!/bin/sh
+
+# Test scenario by: kib@
+# Test program obtained from Kyle Evans <kevans@FreeBSD.org>
+
+# Demonstrate UFS SU file corruption:
+# ffs: on write into a buffer without content
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+
+set -u
+prog=$(basename "$0" .sh)
+s=0
+cat > /tmp/$prog.c <<EOF
+#include <sys/mman.h>
+#include <sys/stat.h>
+
+#include <assert.h>
+#include <err.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#define FILE "file"
+
+int
+main(void)
+{
+ struct stat sb;
+ ssize_t wsz;
+ size_t bufsz;
+ void *buf, *obuf;
+ int mfd, fd;
+ int done = 0;
+
+ mfd = open(FILE, O_RDONLY);
+ assert(mfd >= 0);
+
+ assert(fstat(mfd, &sb) == 0);
+ bufsz = sb.st_size;
+ buf = obuf = mmap(NULL, bufsz, PROT_READ, MAP_SHARED, mfd, 0);
+ assert(buf != MAP_FAILED);
+
+ /* O_RDWR */
+ fd = open(FILE, O_RDWR);
+ if (fd < 0)
+ err(1, "open");
+ assert(fd >= 0);
+
+again:
+ while (bufsz > 0) {
+ wsz = write(fd, buf, bufsz);
+ if (wsz < 0)
+ err(1, "write");
+ else if (wsz == 0)
+ fprintf(stderr, "Huh?\n");
+ bufsz -= wsz;
+ buf += wsz;
+ }
+
+ bufsz = sb.st_size;
+ buf = obuf;
+
+ if (++done < 2)
+ goto again;
+
+ close(fd);
+ munmap(obuf, sb.st_size);
+ close(mfd);
+ return (0);
+}
+EOF
+mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c || exit 1
+
+mount | grep -q "on $mntpoint " && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+mdconfig -s 32m -u $mdstart
+
+pagesize=$(sysctl -n hw.pagesize)
+newfs -Un -b $pagesize /dev/md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+dd if=/dev/random of=/mnt/file.orig bs=${pagesize} count=1 status=none
+cp $mntpoint/file.orig $mntpoint/file
+cat $mntpoint/file $mntpoint/file > $mntpoint/file.post
+umount $mntpoint
+
+mount /dev/md$mdstart $mntpoint
+(cd $mntpoint; /tmp/$prog)
+
+if ! cmp $mntpoint/file $mntpoint/file.post; then
+ echo "Files differ"
+ ls -l $mntpoint/file $mntpoint/file.post
+ s=1
+fi
+
+umount $mntpoint
+mdconfig -d -u $mdstart
+rm /tmp/$prog /tmp/$prog.c
+exit $s
diff --git a/tools/test/stress2/misc/mmap43.sh b/tools/test/stress2/misc/mmap43.sh
new file mode 100755
index 000000000000..98f1de174d54
--- /dev/null
+++ b/tools/test/stress2/misc/mmap43.sh
@@ -0,0 +1,182 @@
+#!/bin/sh
+
+# Test program obtained from Kyle Evans <kevans@FreeBSD.org>
+
+# Demonstrate UFS SU file corruption
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+
+set -u
+prog=$(basename "$0" .sh)
+log=/tmp/$prog.log
+rm -f $log
+cat > /tmp/$prog.c <<EOF
+#include <sys/mman.h>
+#include <sys/stat.h>
+
+#include <assert.h>
+#include <err.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#define FILE "file"
+
+int
+main(void)
+{
+ struct stat sb;
+ ssize_t wsz;
+ size_t bufsz;
+ void *buf, *obuf;
+ int mfd, fd;
+ int done = 0;
+
+ mfd = open(FILE, O_RDONLY);
+ assert(mfd >= 0);
+
+ assert(fstat(mfd, &sb) == 0);
+ bufsz = sb.st_size;
+ buf = obuf = mmap(NULL, bufsz, PROT_READ, MAP_SHARED, mfd, 0);
+ assert(buf != MAP_FAILED);
+
+ /* O_RDWR */
+ fd = open(FILE, O_RDWR);
+ if (fd < 0)
+ err(1, "open");
+ assert(fd >= 0);
+
+again:
+ while (bufsz > 0) {
+ wsz = write(fd, buf, bufsz);
+ if (wsz < 0)
+ err(1, "write");
+ else if (wsz == 0)
+ fprintf(stderr, "Huh?\n");
+ bufsz -= wsz;
+ buf += wsz;
+ }
+
+ bufsz = sb.st_size;
+ buf = obuf;
+
+ if (++done < 2)
+ goto again;
+
+ close(fd);
+ munmap(obuf, sb.st_size);
+ close(mfd);
+ return (0);
+}
+EOF
+mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c || exit 1
+
+cat > /tmp/$prog.serial.c <<EOF
+/* Fill a file with sequential numbers */
+#include <sys/param.h>
+#include <sys/mman.h>
+#include <err.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(int argc, char *argv[])
+{
+ size_t i, size;
+ long ix, *lp;
+ int fd;
+ char *file;
+
+ if (argc != 3) {
+ fprintf(stderr, "Usage: %s <file> <file length in bytes>\n", argv[0]);
+ exit(1);
+ }
+ file = argv[1];
+ size = atol(argv[2]);
+
+ if ((fd = open(file, O_RDWR | O_CREAT | O_TRUNC, 0600)) < 0)
+ err(1, "%s", file);
+
+ if (lseek(fd, size - 1, SEEK_SET) == -1)
+ err(1, "lseek error");
+
+ /* write a dummy byte at the last location */
+ if (write(fd, "\0", 1) != 1)
+ err(1, "write error");
+
+ if ((lp = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0)) == MAP_FAILED)
+ err(1, "mmap()");
+
+ for (i = 0, ix = 0; i < size; i += sizeof(long), ix++)
+ lp[ix] = ix;
+
+ if (munmap(lp, size) == -1)
+ err(1, "munmap");
+ close(fd);
+}
+EOF
+mycc -o /tmp/$prog.serial -Wall -Wextra -O0 /tmp/$prog.serial.c || exit 1
+
+mount | grep -q "on $mntpoint " && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+mdconfig -s 5g -u $mdstart
+
+newfs -n $newfs_flags /dev/md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+
+here=`pwd`
+cd $mntpoint
+
+size=875998990
+pagesize=`sysctl -n hw.pagesize`
+tail=$((size % pagesize))
+/tmp/$prog.serial file $size
+
+cat file file > file.post
+mv file file.orig
+md5=`md5 < file.post`
+
+cp /usr/bin/sort /tmp/$prog.sort
+counter=1
+n=$((`sysctl -n hw.ncpu`))
+[ $n -gt 10 ] && n=10
+s=0
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 300 ]; do
+ st=`date +%s`
+ cp file.orig file
+ for i in `jot $n`; do
+ timeout -k 70s 1m /tmp/$prog.sort /dev/zero &
+ done
+ sleep $n
+ /tmp/$prog
+ while pkill $prog.sort; do sleep .2; done
+ wait
+ m=`md5 < file`
+ if [ $md5 != $m ]; then
+ echo "Failed @ iteration $counter"
+ ls -l
+ od -t x8 file > /var/tmp/$prog.file1
+ od -t x8 file.post > /var/tmp/$prog.file2
+ diff /var/tmp/$prog.file1 /var/tmp/$prog.file2 > $log
+ head -10 $log
+ rm /var/tmp/$prog.file1 /var/tmp/$prog.file2
+ s=1
+ break
+ fi
+ echo "`date +%T` Loop #$counter, elapsed $((`date +%s` - st)) seconds."
+ counter=$((counter + 1))
+done
+cd $here
+
+umount $mntpoint
+mdconfig -d -u $mdstart
+rm /tmp/$prog /tmp/$prog.c /tmp/$prog.sort
+[ $s -eq 0 ] &&
+ printf "OK File size is %9d, tail is %4d bytes. (%3d loops)\n" $size $tail $counter ||
+ printf "FAIL File size is %9d, tail is %4d bytes. (%3d loops)\n" $size $tail $counter
+exit $s
diff --git a/tools/test/stress2/misc/mmap44.sh b/tools/test/stress2/misc/mmap44.sh
new file mode 100755
index 000000000000..5865491e1dea
--- /dev/null
+++ b/tools/test/stress2/misc/mmap44.sh
@@ -0,0 +1,255 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2024 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Demonstrate issue described in:
+# [Bug 276002] nfscl: data corruption using both copy_file_range and mmap'd I/O
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+set -u
+prog=$(basename "$0" .sh)
+log=/tmp/$prog.log
+grep -q $mntpoint /etc/exports ||
+ { echo "$mntpoint missing from /etc/exports"; exit 0; }
+
+cat > /tmp/$prog.c <<EOF
+#include <sys/mman.h>
+#include <sys/stat.h>
+
+#include <err.h>
+#include <fcntl.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+static off_t siz;
+static pthread_mutex_t write_mutex;
+static int fd, go;
+static char *cp;
+
+static void *
+memread(void *arg __unused)
+{
+ int i;
+ char c;
+
+ while (go == 1) {
+ i = arc4random() % siz;
+ c = cp[i];
+ if (c != 0x77) /* No unused vars here */
+ usleep(arc4random() % 400);
+ }
+ return (0);
+}
+
+static void *
+memwrite(void *arg __unused)
+{
+ int i;
+ char c;
+
+ while (go == 1) {
+ i = arc4random() % siz;
+ pthread_mutex_lock(&write_mutex);
+ c = cp[i];
+ cp[i] = 0xee; /* This value seems to linger with NFS */
+ cp[i] = c;
+ pthread_mutex_unlock(&write_mutex);
+ usleep(arc4random() % 400);
+ }
+ return (0);
+}
+
+static void *
+wr(void *arg __unused)
+{
+ off_t pos;
+ int r, s;
+ char buf[1024];
+
+ while (go == 1) {
+ s = arc4random() % sizeof(buf) + 1;
+ pos = arc4random() % (siz - s);
+ pthread_mutex_lock(&write_mutex);
+ if (lseek(fd, pos, SEEK_SET) == -1)
+ err(1, "lseek(%d)", (int)pos);
+ if ((r = read(fd, buf, s)) != s) {
+ fprintf(stderr, "r = %d, s = %d, pos = %d\n", r, s, (int)pos);
+ err(1, "read():2");
+ }
+ if (lseek(fd, pos, SEEK_SET) == -1)
+ err(1, "lseek(%d)", (int)pos);
+ if (write(fd, buf, s) != s)
+ err(1, "write()");
+ pthread_mutex_unlock(&write_mutex);
+ usleep(arc4random() % 400);
+ }
+ return (0);
+}
+
+static void *
+s1(void *arg __unused)
+{
+
+ while (go == 1) {
+ if (fdatasync(fd) == -1)
+ err(1, "fdatasync()");
+ usleep(arc4random() % 1000);
+ }
+ return (0);
+}
+
+static void *
+s2(void *arg __unused)
+{
+
+ while (go == 1) {
+ if (fsync(fd) == -1)
+ err(1, "fdatasync()");
+ usleep(arc4random() % 1000);
+ }
+ return (0);
+}
+
+static void *
+tr(void *arg __unused)
+{
+ int i, s;
+ char buf[1024];
+
+ memset(buf, 0x5a, sizeof(buf));
+ while (go == 1) {
+ pthread_mutex_lock(&write_mutex);
+ if (lseek(fd, arc4random() % siz, SEEK_END) == -1)
+ err(1, "lseek() END");
+ s = sizeof(buf);
+ for (i = 0; i < 50; i++) {
+ if (write(fd, buf, s) != s)
+ warn("write()");
+ }
+ if (ftruncate(fd, siz) == -1)
+ err(1, "truncate()");
+ pthread_mutex_unlock(&write_mutex);
+ usleep(arc4random() % 400);
+ }
+ return (0);
+}
+
+int
+main(int argc, char *argv[])
+{
+ struct stat st;
+ pthread_t tp[6];
+ int e, i;
+
+ if (argc != 2) {
+ fprintf(stderr, "Usage: %s <file>\n", argv[0]);
+ exit(1);
+ }
+ if ((fd = open(argv[1], O_RDWR)) == -1)
+ err(1, "open(%s)", argv[1]);
+ if (fstat(fd, &st) == -1)
+ err(1, "stat(%s)", argv[1]);
+ siz = st.st_size;
+ cp = mmap(NULL, st.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+ if (cp == MAP_FAILED)
+ err(1, "mmap()");
+
+ go = 1;
+ pthread_mutex_init(&write_mutex, NULL);
+ if ((e = pthread_create(&tp[0], NULL, memwrite, NULL)) != 0)
+ errc(1, e, "pthread_create");
+ if ((e = pthread_create(&tp[1], NULL, memread, NULL)) != 0)
+ errc(1, e, "pthread_create");
+ if ((e = pthread_create(&tp[2], NULL, wr, NULL)) != 0)
+ errc(1, e, "pthread_create");
+ if ((e = pthread_create(&tp[3], NULL, s1, NULL)) != 0)
+ errc(1, e, "pthread_create");
+ if ((e = pthread_create(&tp[4], NULL, s2, NULL)) != 0)
+ errc(1, e, "pthread_create");
+ if ((e = pthread_create(&tp[5], NULL, tr, NULL)) != 0)
+ errc(1, e, "pthread_create");
+
+ sleep(60);
+ go = 0;
+ for (i = 0; i < (int)(sizeof(tp) / sizeof(tp[0])); i++)
+ pthread_join(tp[i], NULL);
+ if (munmap(cp, siz) == -1)
+ err(1, "munmap()");
+ close(fd);
+}
+EOF
+mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c -lpthread || exit 1
+
+mycc -o /tmp/serial -Wall -Wextra -O2 ../tools/serial.c || exit 1
+mount | grep -q "on $mntpoint " && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+mdconfig -s 5g -u $mdstart
+newfs -n $newfs_flags /dev/md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+
+mp2=${mntpoint}2
+mkdir -p $mp2
+mount | grep -q "on $mp2 " && umount -f $mp2
+mount -t nfs 127.0.0.1:$mntpoint $mp2; s=$?
+sleep .2
+
+here=`pwd`
+mount | grep $mntpoint
+cd $mp2
+$here/../testcases/swap/swap -t 5m -i 20 > /dev/null &
+sleep 2
+
+size=262144
+/tmp/serial file $size
+cp file file.orig
+
+s=0
+/tmp/$prog file || s=1
+
+while pgrep -q swap; do pkill swap; done
+wait
+if ! cmp -s file.orig file; then
+ od -t x1 file.orig > /var/tmp/$prog.file1
+ od -t x1 file > /var/tmp/$prog.file2
+ diff /var/tmp/$prog.file1 /var/tmp/$prog.file2 > $log
+ head -20 $log
+ rm /var/tmp/$prog.file1 /var/tmp/$prog.file2
+ ls -ls file.orig file
+ s=2
+fi
+
+cd $here
+umount $mp2
+umount $mntpoint
+mdconfig -d -u $mdstart
+rm -f /tmp/serial /tmp/$prog /tmp/$prog.c $log
+exit $s
diff --git a/tools/test/stress2/misc/mmap7.sh b/tools/test/stress2/misc/mmap7.sh
index 7d467c715203..ee802a85e933 100755
--- a/tools/test/stress2/misc/mmap7.sh
+++ b/tools/test/stress2/misc/mmap7.sh
@@ -38,7 +38,7 @@ dir=/tmp
odir=`pwd`
cd $dir
sed '1,/^EOF/d' < $odir/$0 > $dir/wire_no_page.c
-mycc -o mmap7 -Wall -Wextra wire_no_page.c -lpthread || exit 1
+mycc -o mmap7 -Wall -Wextra -O0 wire_no_page.c -lpthread || exit 1
rm -f wire_no_page.c
cd $odir
@@ -75,7 +75,7 @@ struct stat st;
void *
test2(void *arg __unused)
{
- int error, i;
+ int error, i __unused;
p1[arc4random() % len] = 1;
p2[arc4random() % len] = 1;
diff --git a/tools/test/stress2/misc/mount.sh b/tools/test/stress2/misc/mount.sh
index 4b020ca919bd..79639c90ed24 100755
--- a/tools/test/stress2/misc/mount.sh
+++ b/tools/test/stress2/misc/mount.sh
@@ -64,15 +64,14 @@ mount | grep -q "$mntpoint" && umount $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
# The test:
echo "Expect: mount: /dev/md5a: Device busy"
-mount -r /dev/md${mdstart}$part $mntpoint
-mount -r /dev/md${mdstart}$part $mntpoint
+mount -r /dev/md$mdstart $mntpoint
+mount -r /dev/md$mdstart $mntpoint
umount $mntpoint
ls -lR $mntpoint > /dev/null # panic
diff --git a/tools/test/stress2/misc/mount2.sh b/tools/test/stress2/misc/mount2.sh
index d4b30bafe711..cfb3b81e47fb 100755
--- a/tools/test/stress2/misc/mount2.sh
+++ b/tools/test/stress2/misc/mount2.sh
@@ -47,8 +47,7 @@ for i in `jot $mounts`; do
dd if=/dev/zero of=$D$m bs=1m count=1 status=none
mdconfig -a -t vnode -f $D$m -u $m || { rm -f $D$m; exit 1; }
- bsdlabel -w md$m auto
- newfs md${m}$part > /dev/null
+ newfs md${m} > /dev/null
done
# start the parallel tests
@@ -57,7 +56,7 @@ for i in `jot $mounts`; do
start=`date +%s`
while [ $((`date +%s` - start)) -lt 300 ]; do
opt=`[ $(( m % 2 )) -eq 0 ] && echo -f`
- mount /dev/md${m}$part ${mntpoint}$m
+ mount /dev/md${m} ${mntpoint}$m
while mount | grep -q ${mntpoint}$m; do
umount $opt ${mntpoint}$m > /dev/null 2>&1
done
diff --git a/tools/tools/nanobsd/embedded/qemu-mips.cfg b/tools/test/stress2/misc/mount7.sh
index 341f7f9c1430..d85c91529e83 100644..100755
--- a/tools/tools/nanobsd/embedded/qemu-mips.cfg
+++ b/tools/test/stress2/misc/mount7.sh
@@ -1,8 +1,8 @@
-# $FreeBSD$
-
-#-
-# Copyright (c) 2015 M. Warner Losh <imp@FreeBSD.org>
-# Copyright (c) 2010-2011 iXsystems, Inc.
+#!/bin/sh
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
@@ -16,7 +16,7 @@
# 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 iXsystems, Inc. OR CONTRIBUTORS BE LIABLE
+# 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)
@@ -26,11 +26,32 @@
# SUCH DAMAGE.
#
-NANO_ARCH=mips
-NANO_KERNEL=MALTA
-NANO_DRIVE=ada0
-NANO_NAME=qemu-mips
+# Another parallel mount(8) test scenario
+
+. ../default.cfg
+
+mounts=15
-. common # Pull in common definitions
+../testcases/swap/swap -t 2m -i 20 &
+for i in `jot $mounts $mdstart`; do
+ mdconfig -a -s 50m -u $i
+ newfs -U /dev/md$i > /dev/null
+ mkdir -p $mntpoint$i
+ start=`date +%s`
+ while [ $((`date +%s` - start)) -lt 120 ]; do
+ mount /dev/md$i $mntpoint$i && cp /etc/passwd $mntpoint$i
+ while mount | grep -q " on $mntpoint$i "; do
+ umount $mntpoint$i > /dev/null 2>&1
+ done
+ done &
+ while [ $((`date +%s` - start)) -lt 120 ]; do
+ find $mntpoint$i -ls > /dev/null 2>&1
+ done &
+done
+wait
-qemu_env
+for i in `jot $mounts $mdstart`; do
+ mdconfig -d -u $i
+ rmdir $mntpoint$i
+done
+exit $s
diff --git a/tools/test/stress2/misc/mountro.sh b/tools/test/stress2/misc/mountro.sh
index 38f6c6e5bd10..74fddb10b751 100755
--- a/tools/test/stress2/misc/mountro.sh
+++ b/tools/test/stress2/misc/mountro.sh
@@ -41,9 +41,8 @@ mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart || { rm -f $D; exit 1; }
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null 2>&1
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null 2>&1
+mount /dev/md$mdstart $mntpoint
mkdir $mntpoint/stressX
chmod 777 $mntpoint/stressX
diff --git a/tools/test/stress2/misc/mountro2.sh b/tools/test/stress2/misc/mountro2.sh
index a57c6776fb03..33ccb9694dae 100755
--- a/tools/test/stress2/misc/mountro2.sh
+++ b/tools/test/stress2/misc/mountro2.sh
@@ -40,9 +40,8 @@ mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart || { rm -f $D; exit 1; }
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null 2>&1
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null 2>&1
+mount /dev/md$mdstart $mntpoint
mtree -deU -f /etc/mtree/BSD.usr.dist -p $mntpoint/ >> /dev/null
sync ; sync ; sync
diff --git a/tools/test/stress2/misc/mountro3.sh b/tools/test/stress2/misc/mountro3.sh
index e1749dfdc391..fd2959f59de6 100755
--- a/tools/test/stress2/misc/mountro3.sh
+++ b/tools/test/stress2/misc/mountro3.sh
@@ -36,18 +36,17 @@
D=$diskimage
dd if=/dev/zero of=$D bs=1m count=64 status=none || exit 1
-mount | grep "$mntpoint" | grep md${mdstart}$part > /dev/null && umount $mntpoint
+mount | grep "$mntpoint" | grep md$mdstart > /dev/null && umount $mntpoint
mdconfig -l | grep md$mdstart > /dev/null && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart || { rm -f $D; exit 1; }
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null 2>&1
+newfs $newfs_flags md$mdstart > /dev/null 2>&1
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
touch $mntpoint/file
umount $mntpoint
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
rm $mntpoint/file
mount -u -o ro $mntpoint # Should fail with "Device busy"
diff --git a/tools/test/stress2/misc/mountro4.sh b/tools/test/stress2/misc/mountro4.sh
index b6ff922d5ff9..906639d9dc3a 100755
--- a/tools/test/stress2/misc/mountro4.sh
+++ b/tools/test/stress2/misc/mountro4.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
@@ -77,7 +77,9 @@ umount $mntpoint
# msdosfs
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart > /dev/null
+gpart add -t freebsd-ufs md$mdstart > /dev/null
+part=a
newfs_msdos /dev/md${mdstart}$part > /dev/null
mount -t msdosfs /dev/md${mdstart}$part $mntpoint || exit 1
diff --git a/tools/test/stress2/misc/mountro5.sh b/tools/test/stress2/misc/mountro5.sh
index 67663df54145..bcc77694b6d0 100755
--- a/tools/test/stress2/misc/mountro5.sh
+++ b/tools/test/stress2/misc/mountro5.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/mountro6.sh b/tools/test/stress2/misc/mountro6.sh
index 398cbeed4fea..d19a73d76c4c 100755
--- a/tools/test/stress2/misc/mountro6.sh
+++ b/tools/test/stress2/misc/mountro6.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/mountu.sh b/tools/test/stress2/misc/mountu.sh
index 1c1b619463cd..abd3c744d160 100755
--- a/tools/test/stress2/misc/mountu.sh
+++ b/tools/test/stress2/misc/mountu.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2012 Peter Holm <pho@FreeBSD.org>
# Copyright (c) 2019 Dell EMC Isilon
@@ -74,7 +74,9 @@ mapfile=/tmp/mountu.sh.map
mount | grep -q "$mntpoint " && umount $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 100m -u $mdstart
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart > /dev/null
+gpart add -t freebsd-ufs md$mdstart > /dev/null
+part=a
newfs $newfs_flags md${mdstart}$part > /dev/null
mount /dev/md${mdstart}$part $mntpoint
chmod 777 $mntpoint
@@ -126,7 +128,9 @@ fi
# msdos
if [ -x /sbin/mount_msdosfs ]; then
mdconfig -a -t swap -s 100m -u $mdstart
- bsdlabel -w md$mdstart auto
+ gpart create -s bsd md$mdstart > /dev/null
+ gpart add -t freebsd-ufs md$mdstart > /dev/null
+ part=a
newfs_msdos -F 16 -b 8192 /dev/md${mdstart}$part > /dev/null 2>&1
mount_msdosfs -m 777 /dev/md${mdstart}$part $mntpoint
/tmp/mountu MSDOS $file &
diff --git a/tools/test/stress2/misc/mprotect.sh b/tools/test/stress2/misc/mprotect.sh
index 9fde68de56ec..cdb3b2cccd13 100755
--- a/tools/test/stress2/misc/mprotect.sh
+++ b/tools/test/stress2/misc/mprotect.sh
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Mark Johnston <markj@freebsd.org>
#
@@ -43,7 +43,7 @@ cat > mprotect.c <<EOF
int
main(void)
{
- char *addr, c;
+ char *addr, c __unused;
size_t i, len;
len = 2 * 1024 * 1024;
@@ -67,7 +67,7 @@ main(void)
return (0);
}
EOF
-mycc -o mprotect -Wall -Wextra -O2 mprotect.c || exit 1
+mycc -o mprotect -Wall -Wextra -O0 mprotect.c || exit 1
./mprotect; s=$?
diff --git a/tools/test/stress2/misc/mprotect2.sh b/tools/test/stress2/misc/mprotect2.sh
index c5cdc44a0f39..6f8d0c3ce6fd 100755
--- a/tools/test/stress2/misc/mprotect2.sh
+++ b/tools/test/stress2/misc/mprotect2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/msdos.sh b/tools/test/stress2/misc/msdos.sh
index 2324404bfd16..c0f38ba3011b 100755
--- a/tools/test/stress2/misc/msdos.sh
+++ b/tools/test/stress2/misc/msdos.sh
@@ -38,7 +38,9 @@ mount | grep "$mntpoint" | grep -q md$mdstart && umount -f $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart > /dev/null
+gpart add -t freebsd-ufs md$mdstart > /dev/null
+part=a
newfs_msdos /dev/md${mdstart}$part > /dev/null
mount -t msdosfs /dev/md${mdstart}$part $mntpoint
diff --git a/tools/test/stress2/misc/msdos10.sh b/tools/test/stress2/misc/msdos10.sh
index 09613a859082..b581a71d3519 100755
--- a/tools/test/stress2/misc/msdos10.sh
+++ b/tools/test/stress2/misc/msdos10.sh
@@ -49,7 +49,9 @@ mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
set -e
mdconfig -a -t swap -s 4g -u $mdstart
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart > /dev/null
+gpart add -t freebsd-ufs md$mdstart > /dev/null
+part=a
newfs_msdos -b 1024 /dev/md${mdstart}$part > /dev/null
mount -t msdosfs /dev/md${mdstart}$part $mntpoint
set +e
diff --git a/tools/test/stress2/misc/msdos11.sh b/tools/test/stress2/misc/msdos11.sh
index af0958686118..023a16af08c7 100755
--- a/tools/test/stress2/misc/msdos11.sh
+++ b/tools/test/stress2/misc/msdos11.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm
#
@@ -45,7 +45,9 @@ mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
set -e
mdconfig -a -t swap -s 4g -u $mdstart
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart > /dev/null
+gpart add -t freebsd-ufs md$mdstart > /dev/null
+part=a
newfs_msdos -b 1024 /dev/md${mdstart}$part > /dev/null
mount -t msdosfs /dev/md${mdstart}$part $mntpoint
set +e
diff --git a/tools/test/stress2/misc/msdos12.sh b/tools/test/stress2/misc/msdos12.sh
index 0c1c518575e8..8e3984305cd7 100755
--- a/tools/test/stress2/misc/msdos12.sh
+++ b/tools/test/stress2/misc/msdos12.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm
#
@@ -40,7 +40,9 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart > /dev/null
+gpart add -t freebsd-ufs md$mdstart > /dev/null
+part=a
newfs_msdos -F 32 -b 8192 /dev/md$mdstart$part > /dev/null
mount -t msdosfs /dev/md$mdstart$part $mntpoint
mkdir $mntpoint/stressX
diff --git a/tools/test/stress2/misc/msdos13.sh b/tools/test/stress2/misc/msdos13.sh
index 1e6ee205e4f6..2f714ba120a8 100755
--- a/tools/test/stress2/misc/msdos13.sh
+++ b/tools/test/stress2/misc/msdos13.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm
#
@@ -40,7 +40,9 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart > /dev/null
+gpart add -t freebsd-ufs md$mdstart > /dev/null
+part=a
newfs_msdos -F 32 -b 8192 /dev/md$mdstart$part > /dev/null
mount -t msdosfs /dev/md$mdstart$part $mntpoint
mkdir $mntpoint/stressX
diff --git a/tools/test/stress2/misc/msdos14.sh b/tools/test/stress2/misc/msdos14.sh
index 1a39d60f0781..9c7a636f5f59 100755
--- a/tools/test/stress2/misc/msdos14.sh
+++ b/tools/test/stress2/misc/msdos14.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm
#
@@ -86,7 +86,9 @@ mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
set -e
mdconfig -a -t swap -s 4g -u $mdstart
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart > /dev/null
+gpart add -t freebsd-ufs md$mdstart > /dev/null
+part=a
newfs_msdos -b 1024 /dev/md${mdstart}$part > /dev/null
mount -t msdosfs /dev/md${mdstart}$part $mntpoint
set +e
diff --git a/tools/test/stress2/misc/msdos15.sh b/tools/test/stress2/misc/msdos15.sh
new file mode 100755
index 000000000000..b07defd677af
--- /dev/null
+++ b/tools/test/stress2/misc/msdos15.sh
@@ -0,0 +1,90 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# msdosfs disk image fuzz test.
+
+# "panic: wrong dirclust" seen:
+# https://people.freebsd.org/~pho/stress/log/log0206.txt
+
+. ../default.cfg
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+cc -o /tmp/flip -Wall -Wextra -O2 ../tools/flip.c || exit 1
+
+set -e
+u1=$mdstart
+u2=$((mdstart + 1))
+mp1=${mntpoint}$u1
+mp2=${mntpoint}$u2
+mkdir -p $mp1 $mp2
+log=$mp1/msdos15.sh.log
+diskimage=$mp1/msdos15.sh.diskimage
+cap=$((32 * 1024)) # Only fuzz the first 32k
+max=$((10 * 1024 * 1024)) # dos disk size
+
+set +e
+mount | grep "on $mp1 " | grep -q /dev/md && umount -f $mp1
+[ -c /dev/md$u1 ] && mdconfig -d -u $u1
+mdconfig -a -t swap -s 1g -u $u1
+newfs -U /dev/md$u1 > /dev/null
+mount /dev/md$u1 $mp1
+
+[ -c /dev/md$u2 ] && mdconfig -d -u $u2
+dd if=/dev/zero of=$diskimage bs=$max count=1 status=none
+mdconfig -a -t vnode -f $diskimage -u $u2
+newfs_msdos /dev/md$u2 > /dev/null 2>&1 # FAT12
+mount -t msdosfs /dev/md$u2 $mp2
+[ -d /usr/include/sys ] && cp -r /usr/include/sys $mp2
+umount $mp2
+
+cd $mp1
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 60 ]; do
+ mount -t msdosfs /dev/md$u2 $mp2 2>/dev/null || break
+ ls -lR $mp2 > /dev/null 2>&1 || break
+ rm -rf $mp2/* > /dev/null 2>&1 || break
+ touch $mp2/`jot -rc 8 a z | tr -d '\n'` || break
+ while mount | grep -q "on $mp2 "; do umount $mp2; done
+ echo * | grep -q core && break
+ sync
+ mdconfig -d -u $u2
+ /tmp/flip -n 10 -s $cap $diskimage
+ sync
+ mdconfig -a -t vnode -f $diskimage -u $u2
+done
+mount | grep -q "on $mp2 " && umount $mp2
+mdconfig -d -u $u2 || exit 1
+
+echo * | grep -q core && { ls -l *.core; cp $log /tmp; exit 106; } ||
+cd /tmp
+umount $mp1
+mdconfig -d -u $u1
+rm -f /tmp/flip
+exit 0
diff --git a/tools/test/stress2/misc/msdos16.sh b/tools/test/stress2/misc/msdos16.sh
new file mode 100755
index 000000000000..965be8233881
--- /dev/null
+++ b/tools/test/stress2/misc/msdos16.sh
@@ -0,0 +1,87 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# msdosfs disk image fuzz test.
+# FAT32 version of msdos15.sh
+
+. ../default.cfg
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+cc -o /tmp/flip -Wall -Wextra -O2 ../tools/flip.c || exit 1
+
+set -e
+u1=$mdstart
+u2=$((mdstart + 1))
+mp1=${mntpoint}$u1
+mp2=${mntpoint}$u2
+mkdir -p $mp1 $mp2
+log=$mp1/msdos16.sh.log
+diskimage=$mp1/msdos16.sh.diskimage
+cap=$((32 * 1024)) # Only fuzz the first 32k
+
+set +e
+mount | grep "on $mp1 " | grep -q /dev/md && umount -f $mp1
+[ -c /dev/md$u1 ] && mdconfig -d -u $u1
+mdconfig -a -t swap -s 2g -u $u1
+newfs -U /dev/md$u1 > /dev/null
+mount /dev/md$u1 $mp1
+
+[ -c /dev/md$u2 ] && mdconfig -d -u $u2
+dd if=/dev/zero of=$diskimage bs=1g count=1 status=none
+mdconfig -a -t vnode -f $diskimage -u $u2
+newfs_msdos -F 32 -b 8192 /dev/md$u2 > /dev/null
+mount -t msdosfs /dev/md$u2 $mp2
+[ -d /usr/include/sys ] && cp -r /usr/include/sys $mp2
+umount $mp2
+
+cd $mp1
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 60 ]; do
+ mount -t msdosfs /dev/md$u2 $mp2 2>/dev/null || break
+ ls -lR $mp2 > /dev/null 2>&1 || break
+ rm -rf $mp2/* > /dev/null 2>&1 || break
+ touch $mp2/`jot -rc 8 a z | tr -d '\n'` || break
+ while mount | grep -q "on $mp2 "; do umount $mp2; done
+ echo * | grep -q core && break
+ sync
+ mdconfig -d -u $u2
+ /tmp/flip -n 10 -s $cap $diskimage
+ sync
+ mdconfig -a -t vnode -f $diskimage -u $u2
+done
+mount | grep -q "on $mp2 " && umount $mp2
+mdconfig -d -u $u2 || exit 1
+
+echo * | grep -q core && { ls -l *.core; cp $log /tmp; exit 106; } ||
+cd /tmp
+umount $mp1
+mdconfig -d -u $u1
+rm -f /tmp/flip
+exit 0
diff --git a/tools/test/stress2/misc/msdos18.sh b/tools/test/stress2/misc/msdos18.sh
new file mode 100755
index 000000000000..faeed9dca944
--- /dev/null
+++ b/tools/test/stress2/misc/msdos18.sh
@@ -0,0 +1,250 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# D38549: msdosfs deextend: validate pages of the partial buffer
+
+# https://people.freebsd.org/~pho/stress/log/log0420.txt
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+
+set -eu
+prog=$(basename "$0" .sh)
+mkdir -p $mntpoint
+mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
+[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 1g -u $mdstart
+newfs_msdos /dev/md$mdstart > /dev/null 2>&1
+mount -t msdosfs /dev/md$mdstart $mntpoint
+mount | grep $mntpoint
+set +e
+
+odir=`pwd`
+
+cd /tmp
+sed '1,/^EOF/d' < $odir/$0 > $prog.c
+cc -o $prog -Wall -O0 $prog.c -pthread || exit 1
+rm -f $prog.c
+cd $mntpoint
+
+in=inputFile
+out=outputFile
+
+/tmp/$prog $in $out 12345
+ls -al
+
+cd $odir
+umount $mntpoint
+mdconfig -d -u $mdstart
+rm -f /tmp/$prog
+exit
+EOF
+#include <sys/param.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+
+#include <err.h>
+#include <fcntl.h>
+#include <netdb.h>
+#include <netinet/in.h>
+#include <pthread.h>
+#include <pthread_np.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+int fd, port;
+volatile int go;
+char *inputFile;
+char *outputFile;
+
+#define FSIZE 936374
+char buf[FSIZE];
+
+static void
+reader(void) {
+ struct sockaddr_in inetaddr, inetpeer;
+ socklen_t len;
+ int on, n, tcpsock, msgsock;
+
+ on = 1;
+ if ((tcpsock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
+ err(1, "socket(), %s:%d", __FILE__, __LINE__);
+
+ if (setsockopt(tcpsock,
+ SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on)) < 0)
+ err(1, "setsockopt(), %s:%d", __FILE__, __LINE__);
+
+ inetaddr.sin_family = AF_INET;
+ inetaddr.sin_addr.s_addr = INADDR_ANY;
+ inetaddr.sin_port = htons(port);
+ inetaddr.sin_len = sizeof(inetaddr);
+
+ if (bind(tcpsock,
+ (struct sockaddr *)&inetaddr, sizeof (inetaddr)) < 0)
+ err(1, "bind(), %s:%d", __FILE__, __LINE__);
+
+ if (listen(tcpsock, 5) < 0)
+ err(1, "listen(), %s:%d", __FILE__, __LINE__);
+
+ len = sizeof(inetpeer);
+ if ((msgsock = accept(tcpsock,
+ (struct sockaddr *)&inetpeer, &len)) < 0)
+ err(1, "accept(), %s:%d", __FILE__, __LINE__);
+
+ if ((fd = open(outputFile, O_RDWR | O_CREAT | O_TRUNC, 0640)) == -1)
+ err(1, "open(%s)", outputFile);
+
+ usleep(arc4random() % 1000);
+ for (;;) {
+ if ((n = read(msgsock, buf, FSIZE)) < 0)
+ err(1, "read(), %s:%d", __FILE__, __LINE__);
+ if (n == 0)
+ break;
+
+ }
+ close(msgsock);
+ close(tcpsock);
+ close(fd);
+ return;
+}
+
+static void *
+thr(void *data __unused)
+{
+ pthread_set_name_np(pthread_self(), __func__);
+ go = 1;
+ while (go == 1) {
+ ftruncate(fd, FSIZE / 2);
+ ftruncate(fd, FSIZE);
+ }
+
+ return (NULL);
+}
+
+static void
+writer(void) {
+ struct hostent *hostent;
+ struct sockaddr_in inetaddr;
+ pthread_t tid;
+ off_t off = 0;
+ size_t size;
+ int i, on, r, tcpsock;
+
+ on = 1;
+ for (i = 1; i < 5; i++) {
+ if ((tcpsock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
+ err(1, "socket(), %s:%d", __FILE__, __LINE__);
+
+ if (setsockopt(tcpsock,
+ SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on)) < 0)
+ err(1, "setsockopt(), %s:%d", __FILE__, __LINE__);
+
+ size = getpagesize();
+ if (setsockopt(tcpsock, SOL_SOCKET, SO_SNDBUF, (void *)&size,
+ sizeof(size)) < 0)
+ err(1, "setsockopt(SO_SNDBUF), %s:%d",
+ __FILE__, __LINE__);
+
+ hostent = gethostbyname ("localhost");
+ memcpy (&inetaddr.sin_addr.s_addr, hostent->h_addr,
+ sizeof (struct in_addr));
+
+ inetaddr.sin_family = AF_INET;
+ inetaddr.sin_port = htons(port);
+ inetaddr.sin_len = sizeof(inetaddr);
+
+ r = connect(tcpsock, (struct sockaddr *) &inetaddr,
+ sizeof(inetaddr));
+ if (r == 0)
+ break;
+ sleep(1);
+ close(tcpsock);
+ }
+ if (r < 0)
+ err(1, "connect(), %s:%d", __FILE__, __LINE__);
+
+ if ((fd = open(inputFile, O_RDWR | O_CREAT | O_TRUNC, 0640)) == -1)
+ err(1, "open(%s)", inputFile);
+
+ if (write(fd, buf, sizeof(buf)) != sizeof(buf))
+ err(1, "write()");
+
+ r = pthread_create(&tid, NULL, thr, NULL);
+ if (r)
+ errc(1, r, "pthread_create");
+
+ usleep(5000);
+ if (sendfile(fd, tcpsock, 0, FSIZE, NULL, &off, 0) == -1)
+ err(1, "sendfile");
+
+ usleep(arc4random() % 20000);
+ go = 0;
+ if ((r = pthread_join(tid, NULL)) != 0)
+ errc(1, r, "pthread_join");
+
+ _exit(0);
+}
+
+int
+main(int argc, char **argv)
+{
+ pid_t pid;
+ time_t start;
+
+ if (argc != 4) {
+ fprintf(stderr, "Usage: %s <inputFile outputFile portNumber\n",
+ argv[0]);
+ return (1);
+ }
+ inputFile = argv[1];
+ outputFile = argv[2];
+ port = atoi(argv[3]);
+ pthread_set_name_np(pthread_self(), __func__);
+
+ start = time(NULL);
+ while (time(NULL) - start < 120) {
+ if ((pid = fork()) == 0) {
+ writer();
+ } else if (pid > 0) {
+ reader();
+ kill(pid, SIGINT);
+ if (waitpid(pid, NULL, 0) != pid)
+ err(1, "waitpid()");
+ } else
+ err(1, "fork(), %s:%d", __FILE__, __LINE__);
+ }
+
+ return (0);
+}
diff --git a/tools/test/stress2/misc/msdos2.sh b/tools/test/stress2/misc/msdos2.sh
index 838585595ec3..192ea7905d3b 100755
--- a/tools/test/stress2/misc/msdos2.sh
+++ b/tools/test/stress2/misc/msdos2.sh
@@ -38,14 +38,17 @@ mount | grep "$mntpoint" | grep -q md$mdstart && umount -f $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart > /dev/null
+gpart add -t freebsd-ufs md$mdstart > /dev/null
+part=a
newfs_msdos /dev/md${mdstart}$part > /dev/null
mount -t msdosfs /dev/md${mdstart}$part $mntpoint
u=$((mdstart + 1))
mdconfig -l | grep -q $u && mdconfig -d -u $u
mdconfig -a -t swap -s 1g -u $u
-bsdlabel -w md$u auto
+gpart create -s bsd md$u > /dev/null
+gpart add -t freebsd-ufs md$u > /dev/null
newfs_msdos /dev/md${u}$part > /dev/null
mount -u /dev/md${u}$part $mntpoint > /dev/null 2>&1 # panic
diff --git a/tools/test/stress2/misc/msdos3.sh b/tools/test/stress2/misc/msdos3.sh
index e251f7bf7ee7..38344e37d5d8 100755
--- a/tools/test/stress2/misc/msdos3.sh
+++ b/tools/test/stress2/misc/msdos3.sh
@@ -38,7 +38,9 @@ mount | grep "$mntpoint" | grep -q md$mdstart && umount -f $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart > /dev/null
+gpart add -t freebsd-ufs md$mdstart > /dev/null
+part=a
newfs_msdos /dev/md${mdstart}$part > /dev/null
mount -t msdosfs /dev/md${mdstart}$part $mntpoint
diff --git a/tools/test/stress2/misc/msdos4.sh b/tools/test/stress2/misc/msdos4.sh
index 807c3b5206eb..b90f7d8229ea 100755
--- a/tools/test/stress2/misc/msdos4.sh
+++ b/tools/test/stress2/misc/msdos4.sh
@@ -41,7 +41,9 @@ mount | grep "$mntpoint" | grep -q md$mdstart && umount -f $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart > /dev/null
+gpart add -t freebsd-ufs md$mdstart > /dev/null
+part=a
newfs_msdos /dev/md${mdstart}$part > /dev/null
mount -t msdosfs /dev/md${mdstart}$part $mntpoint || exit 1
diff --git a/tools/test/stress2/misc/msdos5.sh b/tools/test/stress2/misc/msdos5.sh
index 815eeca6fd4c..4b7b961a622b 100755
--- a/tools/test/stress2/misc/msdos5.sh
+++ b/tools/test/stress2/misc/msdos5.sh
@@ -42,7 +42,9 @@ cd /tmp
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 3g -u $mdstart
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart > /dev/null
+gpart add -t freebsd-ufs md$mdstart > /dev/null
+part=a
newfs_msdos -F 32 -b 8192 /dev/md${mdstart}$part > /dev/null 2>&1
mount_msdosfs -m 777 /dev/md${mdstart}$part $mntpoint
diff --git a/tools/test/stress2/misc/msdos6.sh b/tools/test/stress2/misc/msdos6.sh
index 475989b3fa1c..e99874e78aa1 100755
--- a/tools/test/stress2/misc/msdos6.sh
+++ b/tools/test/stress2/misc/msdos6.sh
@@ -38,6 +38,7 @@
mounts=15 # Number of parallel scripts
cont=/tmp/msdos6.continue
mdstart=$mdstart # Use md unit numbers from this point
+part=a
if [ $# -eq 0 ]; then
touch $cont
@@ -49,7 +50,8 @@ if [ $# -eq 0 ]; then
mdconfig -l | grep -q md$m && mdconfig -d -u $m
mdconfig -a -t swap -s 1g -u $m
- bsdlabel -w md$m auto
+ gpart create -s bsd md$m > /dev/null
+ gpart add -t freebsd-ufs md$m > /dev/null
newfs_msdos -F 32 -b 8192 /dev/md${m}$part > /dev/null 2>&1
mount -t msdosfs /dev/md${m}$part ${mntpoint}$m
(mkdir ${mntpoint}$m/test$i; cd ${mntpoint}$m/test$i; /tmp/fstool -l -f 100 -n 100 -s ${i}k)
diff --git a/tools/test/stress2/misc/msdos7.sh b/tools/test/stress2/misc/msdos7.sh
index 7bebe3703848..ff309de0ace8 100755
--- a/tools/test/stress2/misc/msdos7.sh
+++ b/tools/test/stress2/misc/msdos7.sh
@@ -39,7 +39,9 @@ mount | grep -q "on $mntpoint " && umount $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart > /dev/null
+gpart add -t freebsd-ufs md$mdstart > /dev/null
+part=a
newfs_msdos -F 32 -b 8192 /dev/md${mdstart}$part > /dev/null || exit 1
mount -t msdosfs /dev/md${mdstart}$part $mntpoint
diff --git a/tools/test/stress2/misc/msdos8.sh b/tools/test/stress2/misc/msdos8.sh
index 58f0390e195d..84192ee6895e 100755
--- a/tools/test/stress2/misc/msdos8.sh
+++ b/tools/test/stress2/misc/msdos8.sh
@@ -45,7 +45,9 @@ mount | grep "$mntpoint" | grep -q md$mdstart && umount -f $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart > /dev/null
+gpart add -t freebsd-ufs md$mdstart > /dev/null
+part=a
newfs_msdos /dev/md${mdstart}$part #> /dev/null
mount -t msdosfs /dev/md${mdstart}$part $mntpoint || exit 1
diff --git a/tools/test/stress2/misc/msdos9.sh b/tools/test/stress2/misc/msdos9.sh
index cafabc546aa9..d325d4300067 100755
--- a/tools/test/stress2/misc/msdos9.sh
+++ b/tools/test/stress2/misc/msdos9.sh
@@ -49,7 +49,9 @@ mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
set -e
mdconfig -a -t swap -s 4g -u $mdstart
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart > /dev/null
+gpart add -t freebsd-ufs md$mdstart > /dev/null
+part=a
newfs_msdos -b 1024 /dev/md${mdstart}$part > /dev/null
mount -t msdosfs /dev/md${mdstart}$part $mntpoint
set +e
diff --git a/tools/test/stress2/misc/namecache2.sh b/tools/test/stress2/misc/namecache2.sh
index a5dd4319fc66..9fcfe5e0226c 100755
--- a/tools/test/stress2/misc/namecache2.sh
+++ b/tools/test/stress2/misc/namecache2.sh
@@ -52,9 +52,8 @@ cd $odir
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
(cd $mntpoint; /tmp/namecache2)
@@ -67,8 +66,8 @@ if [ "$f" != '*' ]; then
echo "ls -ali $mntpoint"
ls -ali $mntpoint
echo ""
- echo "fsdb -r /dev/md${mdstart}$part"
- fsdb -r /dev/md${mdstart}$part <<-EF
+ echo "fsdb -r /dev/md$mdstart"
+ fsdb -r /dev/md$mdstart <<-EF
ls
quit
EF
diff --git a/tools/test/stress2/misc/nbufkv.sh b/tools/test/stress2/misc/nbufkv.sh
index db2c45feb496..1f9434d2cf75 100755
--- a/tools/test/stress2/misc/nbufkv.sh
+++ b/tools/test/stress2/misc/nbufkv.sh
@@ -65,31 +65,29 @@ mp2=${mntpoint}2
dd if=/dev/zero of=$d1 bs=1m count=${size}k status=none || exit 1
cp $d1 $d2 || exit 1
-mount | grep -q /dev/md${u2}$part && umount -f /dev/md${u2}$part
-mount | grep -q /dev/md${u1}$part && umount -f /dev/md${u1}$part
+mount | grep -q /dev/md$u2 && umount -f /dev/md$u2
+mount | grep -q /dev/md$u1 && umount -f /dev/md$u1
[ -c /dev/md$u2 ] && mdconfig -d -u $u2
[ -c /dev/md$u1 ] && mdconfig -d -u $u1
mdconfig -a -t vnode -f $d1 -u $u1 || exit 1
-bsdlabel -w md$u1 auto
-newfs -b 65536 -f 65536 -O2 md${u1}$part > /dev/null
+newfs -b 65536 -f 65536 -O2 md$u1 > /dev/null
mdconfig -a -t vnode -f $d2 -u $u2 || exit 1
-bsdlabel -w md$u2 auto
-newfs -b 65536 -f 65536 -O2 md${u2}$part > /dev/null
+newfs -b 65536 -f 65536 -O2 md$u2 > /dev/null
-mount /dev/md${u1}$part $mp1
-mount /dev/md${u2}$part $mp2
+mount /dev/md$u1 $mp1
+mount /dev/md$u2 $mp2
/tmp/nbufkv $mp1 &
/tmp/nbufkv $mp2 &
wait
-umount /dev/md${u2}$part
-umount /dev/md${u1}$part
+umount /dev/md$u2
+umount /dev/md$u1
-mount | grep -q /dev/md${u2}$part && umount -f /dev/md${u2}$part
-mount | grep -q /dev/md${u1}$part && umount -f /dev/md${u1}$part
+mount | grep -q /dev/md$u2 && umount -f /dev/md$u2
+mount | grep -q /dev/md$u1 && umount -f /dev/md$u1
mdconfig -d -u $u2
mdconfig -d -u $u1
diff --git a/tools/test/stress2/misc/newfs.sh b/tools/test/stress2/misc/newfs.sh
index 8ef7b9eae31e..252629c04b90 100755
--- a/tools/test/stress2/misc/newfs.sh
+++ b/tools/test/stress2/misc/newfs.sh
@@ -37,55 +37,50 @@
. ../default.cfg
-mount | grep "$mntpoint" | grep md${mdstart}$part > /dev/null &&
+mount | grep "$mntpoint" | grep md$mdstart > /dev/null &&
umount $mntpoint
mdconfig -l | grep md$mdstart > /dev/null && mdconfig -d -u $mdstart
-mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
+mdconfig -a -t swap -s 20g -u $mdstart
-echo "Expect warnings from SU and SU+J."
log=/tmp/newfs.sh.log
s=0
export RUNDIR=$mntpoint/stressX
-export runRUNTIME=10s
+export runRUNTIME=15s
export RUNTIME=$runRUNTIME
export CTRLDIR=$mntpoint/stressX.control
start=`date '+%s'`
for opt in -O1 -O2 -U -j; do
- echo "Testing newfs with option $opt."
blocksize=4096
while [ $blocksize -le 65536 ]; do
for i in 8 4 2 1; do
fragsize=$((blocksize / i))
+ echo "newfs $opt -b $blocksize -f $fragsize"\
+ "md$mdstart"
newfs $opt -b $blocksize -f $fragsize \
- md${mdstart}$part > /dev/null 2>&1 || continue
- mount /dev/md${mdstart}$part $mntpoint
+ md$mdstart > /dev/null || { s=1; continue; }
+ mount /dev/md$mdstart $mntpoint || { s=2; continue; }
chmod 777 $mntpoint
- rm -rf /tmp/stressX.control
su $testuser -c \
"(cd ..; ./run.sh disk.cfg > /dev/null 2>&1)" &
sleep 10
../tools/killall.sh
wait
while mount | grep "$mntpoint" | \
- grep -q md${mdstart}$part; do
+ grep -q md$mdstart; do
umount $mntpoint > /dev/null 2>&1 || sleep 1
done
- checkfs /dev/md${mdstart}$part > $log 2>&1 || {
- cmd="newfs $opt -b $blocksize -f $fragsize"
-# if ! grep -q -- "$cmd" $0; then
- s=1
- echo "$cmd"
- cat $log
-# fi
+ fsck -fy /dev/md$mdstart > $log 2>&1
+ grep -q "WAS MODIFIED" $log && {
+ s=3
+ cat $log
}
done
blocksize=$((blocksize * 2))
done
- if [ $((`date '+%s'` - start)) -gt 1200 ]; then
- echo "Timed out"
- s=1
+ if [ $((`date '+%s'` - start)) -gt 1800 ]; then
+ echo "Timed out in $opt"
+ s=4
break
fi
done
diff --git a/tools/test/stress2/misc/newfs2.sh b/tools/test/stress2/misc/newfs2.sh
index ac891e7926fb..0706b30e40b8 100755
--- a/tools/test/stress2/misc/newfs2.sh
+++ b/tools/test/stress2/misc/newfs2.sh
@@ -34,7 +34,7 @@
size=$((32 * 1024 * 1024))
-mount | grep "$mntpoint" | grep -q md${mdstart}$part && umount $mntpoint
+mount | grep "$mntpoint" | grep -q md$mdstart && umount $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
s=0
@@ -45,18 +45,17 @@ while [ $size -le $((900 * 1024 * 1024)) ]; do
dd if=/dev/zero of=$diskimage bs=1m count=$mb status=none
mdconfig -a -t vnode -f $diskimage -u $mdstart ||
{ rm $diskimage; exit 1; }
- bsdlabel -w md$mdstart auto
- newfs -b 32768 -f 4096 -O2 md${mdstart}$part > /dev/null 2>&1
- mount /dev/md${mdstart}$part $mntpoint
+ newfs -b 32768 -f 4096 -O2 md$mdstart > /dev/null 2>&1
+ mount /dev/md$mdstart $mntpoint
export RUNDIR=$mntpoint/stressX
export runRUNTIME=30s
export RUNTIME=$runRUNTIME
export CTRLDIR=$mntpoint/stressX.control
(cd ..; ./run.sh disk.cfg) > /dev/null
- while mount | grep "$mntpoint" | grep -q md${mdstart}$part; do
+ while mount | grep "$mntpoint" | grep -q md$mdstart; do
umount $mntpoint > /dev/null 2>&1
done
- checkfs md${mdstart}$part || s=1
+ checkfs md$mdstart || s=1
mdconfig -d -u $mdstart
size=$((size + 32 * 1024 * 1024))
if [ $((`date '+%s'` - start)) -gt 1200 ]; then
diff --git a/tools/test/stress2/misc/newfs3.sh b/tools/test/stress2/misc/newfs3.sh
index f6dd84e801bc..8bb8125db8aa 100755
--- a/tools/test/stress2/misc/newfs3.sh
+++ b/tools/test/stress2/misc/newfs3.sh
@@ -40,7 +40,7 @@
size=$((32 * 1024 * 1024))
opt="-O2" # newfs option. Eg. -U
-mount | grep "$mntpoint" | grep -q md${mdstart}$part && umount $mntpoint
+mount | grep "$mntpoint" | grep -q md$mdstart && umount $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
s=0
@@ -50,14 +50,13 @@ while [ $size -le $((128 * 1024 * 1024)) ]; do
dd if=/dev/zero of=$diskimage bs=1m count=$mb status=none
mdconfig -a -t vnode -f $diskimage -u $mdstart ||
{ rm -f $diskimage; exit 1; }
- bsdlabel -w md$mdstart auto
blocksize=4096
while [ $blocksize -le 65536 ]; do
for i in 1 2 4 8; do
fragsize=$((blocksize / i))
- newfs -b $blocksize -f $fragsize $opt md${mdstart}$part > \
+ newfs -b $blocksize -f $fragsize $opt md$mdstart > \
/dev/null 2>&1
- mount /dev/md${mdstart}$part $mntpoint
+ mount /dev/md$mdstart $mntpoint
export RUNDIR=$mntpoint/stressX
export runRUNTIME=15s
export RUNTIME=$runRUNTIME
@@ -67,10 +66,10 @@ while [ $size -le $((128 * 1024 * 1024)) ]; do
../tools/killall.sh
wait
while mount | grep "$mntpoint" | \
- grep -q md${mdstart}$part; do
+ grep -q md$mdstart; do
umount $mntpoint > /dev/null 2>&1
done
- checkfs /dev/md${mdstart}$part || s=1
+ checkfs /dev/md$mdstart || s=1
done
blocksize=$((blocksize * 2))
done
diff --git a/tools/test/stress2/misc/newfs4.sh b/tools/test/stress2/misc/newfs4.sh
index 46d563a49460..55ac3aaae3da 100755
--- a/tools/test/stress2/misc/newfs4.sh
+++ b/tools/test/stress2/misc/newfs4.sh
@@ -44,7 +44,7 @@ mycc -o newfs4 -Wall -Wextra newfs4.c || exit 1
rm -f newfs4.c
cd $odir
-mount | grep "$mntpoint" | grep -q md${mdstart}$part && umount $mntpoint
+mount | grep "$mntpoint" | grep -q md$mdstart && umount $mntpoint
mdconfig -l | grep md$mdstart > /dev/null && mdconfig -d -u $mdstart
size=9 # Gb
@@ -58,9 +58,8 @@ dd if=/dev/zero of=$diskimage bs=1m count=$((size * 1024)) status=none ||
blocksize="-b 65536"
opt="-O2 -U"
mdconfig -a -t vnode -f $diskimage -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $blocksize $opt md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $blocksize $opt md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
cd $mntpoint
truncate -s 2g f1
@@ -73,10 +72,10 @@ truncate -s 2g f4
/tmp/newfs4 f4 &
wait
-while mount | grep "$mntpoint" | grep -q md${mdstart}$part; do
+while mount | grep "$mntpoint" | grep -q md$mdstart; do
umount -f $mntpoint || sleep 1
done
-checkfs /dev/md${mdstart}$part; s=$?
+checkfs /dev/md$mdstart; s=$?
mdconfig -d -u $mdstart
rm -f /tmp/newfs4
diff --git a/tools/test/stress2/misc/newfs5.sh b/tools/test/stress2/misc/newfs5.sh
index f41da12e28dd..29c7e1a84b09 100755
--- a/tools/test/stress2/misc/newfs5.sh
+++ b/tools/test/stress2/misc/newfs5.sh
@@ -39,16 +39,15 @@ mycc -o newfs5 -Wall -Wextra newfs5.c
rm -f newfs5.c
cd $odir
-mount | grep "$mntpoint" | grep md${mdstart}$part > /dev/null && umount $mntpoint
+mount | grep "$mntpoint" | grep md$mdstart > /dev/null && umount $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
blocksize="-b 65536"
opt="-O2 -U"
size=9 # Gb
mdconfig -a -t swap -s ${size}g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $blocksize $opt md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $blocksize $opt md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
cd $mntpoint
truncate -s 2g f1
@@ -61,10 +60,10 @@ truncate -s 2g f4
/tmp/newfs5 f4 &
wait
-while mount | grep "$mntpoint" | grep -q md${mdstart}$part; do
+while mount | grep "$mntpoint" | grep -q md$mdstart; do
umount -f $mntpoint || sleep 1
done
-checkfs /dev/md${mdstart}$part; s=$?
+checkfs /dev/md$mdstart; s=$?
mdconfig -d -u $mdstart
rm -f $diskimage
diff --git a/tools/test/stress2/misc/newfs6.sh b/tools/test/stress2/misc/newfs6.sh
new file mode 100755
index 000000000000..cf481569ee9c
--- /dev/null
+++ b/tools/test/stress2/misc/newfs6.sh
@@ -0,0 +1,64 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# A fast version of newfs.sh
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+
+mount | grep "on $mntpoint " | grep -q md$mdstart &&
+ umount $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 1g -u $mdstart || exit 1
+
+log=/tmp/newfs6.sh.log
+s=0
+for opt in -O1 -O2 -U -j; do
+ bs=4096
+ while [ $bs -le 65536 ]; do
+ for i in 8 4 2 1; do
+ fragsize=$((bs / i))
+ echo "newfs $opt -b $bs -f $fragsize md$mdstart "
+ newfs $opt -b $bs -f $fragsize \
+ md$mdstart > /dev/null || { s=1; continue; }
+ mount /dev/md$mdstart $mntpoint || s=2 &&
+ umount $mntpoint
+ fsck -fy /dev/md$mdstart > $log 2>&1
+ grep -q "WAS MODIFIED" $log && {
+ s=3
+ cat $log
+ }
+ done
+ bs=$((bs * 2))
+ done
+done
+mdconfig -d -u $mdstart
+rm -f $log
+exit $s
diff --git a/tools/tools/nanobsd/embedded/qemu-mips64.cfg b/tools/test/stress2/misc/newfs7.sh
index 6e936b156757..1456d1360bc1 100644..100755
--- a/tools/tools/nanobsd/embedded/qemu-mips64.cfg
+++ b/tools/test/stress2/misc/newfs7.sh
@@ -1,8 +1,9 @@
-# $FreeBSD$
+#!/bin/sh
-#-
-# Copyright (c) 2015 M. Warner Losh <imp@FreeBSD.org>
-# Copyright (c) 2010-2011 iXsystems, Inc.
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
@@ -16,7 +17,7 @@
# 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 iXsystems, Inc. OR CONTRIBUTORS BE LIABLE
+# 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)
@@ -26,11 +27,27 @@
# SUCH DAMAGE.
#
-NANO_ARCH=mips
-NANO_KERNEL=MALTA64
-NANO_DRIVE=ada0
-NANO_NAME=qemu-mips64
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+# "mount: /dev/md10: Invalid fstype: Invalid argument" seen.
+# Reported by: soralx@cydem.org
+# Fixed by: 017367c1146a
-. common # Pull in common definitions
+set -eu
+prog=`basename ${0%.sh}`
+log=/tmp/$prog.log
+s=0
+mdconfig -a -t swap -s 32T -u $mdstart
+newfs -L tst0 -U -b 65536 -f 8192 -d 1048576 -g 131072 -h 16 -i 1048576 \
+ /dev/md$mdstart > /dev/null || s=1
+set +e
+mount /dev/md$mdstart $mntpoint && umount $mntpoint || s=$((s | 2))
+fsck_ffs -fy md$mdstart > $log 2>&1 || s=$((s | 4))
+grep -Eq "IS CLEAN|MARKED CLEAN" $log || s=$((s | 8))
+grep -Eq "WAS MODIFIED" $log && s=$((s | 16))
+[ $s -ne 0 ] && tail -10 $log
+mdconfig -d -u $mdstart
+rm -f $log
-qemu_env
+exit $s
diff --git a/tools/test/stress2/misc/nfs10.sh b/tools/test/stress2/misc/nfs10.sh
index 15f449548f45..f8c6e3c76c56 100755
--- a/tools/test/stress2/misc/nfs10.sh
+++ b/tools/test/stress2/misc/nfs10.sh
@@ -45,11 +45,10 @@ mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
mount -t nfs -o nfsv4 -o rw,retrycnt=3 127.0.0.1:$mntpoint $m2
diff --git a/tools/test/stress2/misc/nfs11.sh b/tools/test/stress2/misc/nfs11.sh
index e132ad9f894e..1ba0124f939e 100755
--- a/tools/test/stress2/misc/nfs11.sh
+++ b/tools/test/stress2/misc/nfs11.sh
@@ -42,11 +42,10 @@ mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
mount -t nfs -o nfsv4 -o rw,retrycnt=3 127.0.0.1:$mntpoint $m2
diff --git a/tools/test/stress2/misc/nfs17.sh b/tools/test/stress2/misc/nfs17.sh
index 2a012e476e55..86f045a34bdf 100755
--- a/tools/test/stress2/misc/nfs17.sh
+++ b/tools/test/stress2/misc/nfs17.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/nfs18.sh b/tools/test/stress2/misc/nfs18.sh
index bf9e0fc8010e..b1432dd355d2 100755
--- a/tools/test/stress2/misc/nfs18.sh
+++ b/tools/test/stress2/misc/nfs18.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm
#
@@ -47,7 +47,9 @@ kill -HUP `pgrep mountd` # loopback workaround
mdconfig -a -t swap -s 1g -u $mdstart
set -e
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart
+gpart add -t freebsd-ufs md$mdstart
+part=a
newfs_msdos -F 32 -b 8192 /dev/md${mdstart}$part > /dev/null
mkdir -p $mp1; chmod 777 $mp1
mount -t msdosfs -o rw /dev/md${mdstart}$part $mp1
diff --git a/tools/test/stress2/misc/nfs2.sh b/tools/test/stress2/misc/nfs2.sh
index 9d470c18e8f0..16912e59a16e 100755
--- a/tools/test/stress2/misc/nfs2.sh
+++ b/tools/test/stress2/misc/nfs2.sh
@@ -45,7 +45,9 @@ mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart
+gpart add -t freebsd-ufs md$mdstart
+part=a
newfs_msdos -F 16 -b 8192 /dev/md${mdstart}$part > /dev/null
mount -t msdosfs -o rw /dev/md${mdstart}$part $mntpoint
diff --git a/tools/test/stress2/misc/nfs5.sh b/tools/test/stress2/misc/nfs5.sh
index 1f311ef47baf..893c4b7f7e8f 100755
--- a/tools/test/stress2/misc/nfs5.sh
+++ b/tools/test/stress2/misc/nfs5.sh
@@ -39,9 +39,8 @@ mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
mkdir $mntpoint/stressX
chmod 777 $mntpoint/stressX
diff --git a/tools/test/stress2/misc/nfs6.sh b/tools/test/stress2/misc/nfs6.sh
index 98b2a9d40945..0a70893e20ae 100755
--- a/tools/test/stress2/misc/nfs6.sh
+++ b/tools/test/stress2/misc/nfs6.sh
@@ -45,9 +45,8 @@ mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
mkdir $mntpoint/stressX
chmod 777 $mntpoint/stressX
@@ -66,7 +65,7 @@ sleep 60
for i in `jot 10`; do
umount -f $mntpoint > /dev/null 2>&1
sleep 1
- mount /dev/md${mdstart}$part $mntpoint
+ mount /dev/md$mdstart $mntpoint
sleep 1
done
diff --git a/tools/test/stress2/misc/nfs_halfpage.sh b/tools/test/stress2/misc/nfs_halfpage.sh
index b665e84d7ddf..8d02ca8ebbcf 100755
--- a/tools/test/stress2/misc/nfs_halfpage.sh
+++ b/tools/test/stress2/misc/nfs_halfpage.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2017 Konstantin Belousov <kib@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/nfs_halfpage2.sh b/tools/test/stress2/misc/nfs_halfpage2.sh
index 15895da2da21..b916531c7a9d 100755
--- a/tools/test/stress2/misc/nfs_halfpage2.sh
+++ b/tools/test/stress2/misc/nfs_halfpage2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2017 Konstantin Belousov <kib@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/nlink.sh b/tools/test/stress2/misc/nlink.sh
new file mode 100755
index 000000000000..f06752290ac3
--- /dev/null
+++ b/tools/test/stress2/misc/nlink.sh
@@ -0,0 +1,96 @@
+#!/bin/sh
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Regression test for:
+# D35514 UFS: make mkdir() reliable when using SU and reaching nlink limit
+# Bug 165392 - [ufs] [patch] Multiple mkdir/rmdir fails with errno 31
+
+. ../default.cfg
+
+cat > /tmp/nlink.c <<EOF
+#include <sys/stat.h>
+#include <ufs/ufs/dinode.h>
+#include <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <unistd.h>
+
+int
+main (void) {
+ int i, mx;
+ char dir[100];
+
+ mx = UFS_LINK_MAX - 2;
+ for (i = 0; i < mx; i++) {
+ snprintf(dir, sizeof(dir), "%d", i);
+ if (mkdir(dir, 0700) == -1)
+ err(1, "mkdir(%s)", dir);
+ }
+
+ /* The following mkdir(2) must fail */
+ i = mx;
+ snprintf(dir, sizeof(dir), "%d", i);
+ if (mkdir(dir, 0700) != -1) /* this must fail */
+ err(1, "mkdir(%s)", dir);
+ if (errno != EMLINK)
+ err(1, "Must fail: mkdir(%s)", dir);
+
+ /* Must succeed */
+ i = 0;
+ snprintf(dir, sizeof(dir), "%d", i);
+ if (rmdir(dir) == -1)
+ err(1, "rmdir(%s)", dir);
+ snprintf(dir, sizeof(dir), "%s", "a");
+ if (mkdir(dir, 0700) == -1)
+ err(1, "mkdir(%s)", dir);
+
+ return (0);
+}
+EOF
+mycc -o /tmp/nlink -Wall -Wextra -O2 /tmp/nlink.c || exit 1
+rm /tmp/nlink.c
+
+set -e
+here=`pwd`
+mount | grep -q "on $mntpoint " && umount -f $mntpoint
+mdconfig -l | grep "md$mdstart " && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 1g -u $mdstart
+newfs -Un /dev/md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+set +e
+
+cd $mntpoint
+/tmp/nlink; s=$?
+n=`ls -a | wc -l`
+[ $s -ne 0 ] && echo "$n dirs"
+cd $here
+
+umount $mntpoint
+mdconfig -d -u $mdstart
+rm /tmp/nlink
+exit $s
diff --git a/tools/test/stress2/misc/nlink2.sh b/tools/test/stress2/misc/nlink2.sh
new file mode 100755
index 000000000000..559ad5cfa417
--- /dev/null
+++ b/tools/test/stress2/misc/nlink2.sh
@@ -0,0 +1,71 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Simple test to demonstrate EMLINK issue on a SU file system.
+
+# mkdir: /mnt10/a994: Too many links
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+echo "$newfs_flags" | grep -q U || exit 0
+log=/tmp/nlink2.sh.log
+md=$mdstart
+mp=/mnt$md
+mkdir -p $mp
+set -e
+mount | grep -q "on $mp " && umount -f $mp
+mdconfig -l | grep -q md$md && mdconfig -d -u $md
+
+mdconfig -a -t swap -s 1g -u $md
+newfs $newfs_flags -n md$md > /dev/null
+mount /dev/md$md $mp
+set +e
+
+start=`date +%s`
+for i in `jot 1000`; do
+ jot 1000 | xargs -P0 -I% mkdir $mp/a% || { s=1; break; }
+ jot 1000 | xargs -P0 -I% rmdir $mp/a%
+ t=$((`date +%s` - start))
+ if [ $t -ge 300 ]; then
+ echo "Warn: Timed out in loop #$i after $t seconds"
+ break
+ fi
+done
+if [ $s ]; then
+ echo "Failed in loop #$i"
+ df -i $mp
+fi
+
+umount $mp
+fsck_ffs -fy /dev/md$md > $log 2>&1
+grep -Eq "WAS MODIFIED" $log && { s=$((s + 2)); cat $log; }
+mdconfig -d -u $md
+rm -f $log
+exit $s
diff --git a/tools/test/stress2/misc/nlink3.sh b/tools/test/stress2/misc/nlink3.sh
new file mode 100755
index 000000000000..55557124c9c2
--- /dev/null
+++ b/tools/test/stress2/misc/nlink3.sh
@@ -0,0 +1,106 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# https://reviews.freebsd.org/D35514
+# link() version
+
+. ../default.cfg
+
+cat > /tmp/nlink3.c <<EOF
+#include <sys/stat.h>
+#include <ufs/ufs/dinode.h>
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <unistd.h>
+
+int
+main (void) {
+ int fd, i, mx;
+ char file[100];
+
+ snprintf(file, sizeof(file), "f");
+ if ((fd = open(file, O_RDWR | O_CREAT | O_TRUNC,
+ DEFFILEMODE)) == -1)
+ err(1, "creat(%s)", file);
+ close(fd);
+
+ mx = UFS_LINK_MAX - 1;
+ for (i = 0; i < mx; i++) {
+ snprintf(file, sizeof(file), "%d", i);
+ if (link("f", file) == -1)
+ err(1, "link(%s, %s)", "f", file);
+
+ }
+
+ /* The following link(2) must fail */
+ i = mx;
+ snprintf(file, sizeof(file), "%d", i);
+ if (link("f", file) != -1)
+ err(1, "link(%s, %s)", "f", file);
+ if (errno != EMLINK)
+ err(1, "Must fail: link(%s, %s)", "f", file);
+
+ i = 0;
+ snprintf(file, sizeof(file), "%d", i);
+ if (unlink(file) == -1)
+ err(1, "unlink(%s)", file);
+
+ /* Must succeed */
+ i = mx;
+ snprintf(file, sizeof(file), "%d", i);
+ if (link("f", file) == -1)
+ err(1, "link(%s, %s)", "f", file);
+
+ return (0);
+}
+EOF
+mycc -o /tmp/nlink3 -Wall -Wextra -O2 /tmp/nlink3.c || exit 1
+rm /tmp/nlink3.c
+
+set -e
+here=`pwd`
+mount | grep -q "on $mntpoint " && umount -f $mntpoint
+mdconfig -l | grep "md$mdstart " && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 1g -u $mdstart
+newfs -Un /dev/md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+set +e
+
+cd $mntpoint
+/tmp/nlink3; s=$?
+n=`ls -a | wc -l`
+[ $s -ne 0 ] && echo "$n files"
+cd $here
+
+umount $mntpoint
+mdconfig -d -u $mdstart
+rm /tmp/nlink3
+exit $s
diff --git a/tools/test/stress2/misc/nlink4.sh b/tools/test/stress2/misc/nlink4.sh
new file mode 100755
index 000000000000..cce8bb06985a
--- /dev/null
+++ b/tools/test/stress2/misc/nlink4.sh
@@ -0,0 +1,105 @@
+#!/bin/sh
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# https://reviews.freebsd.org/D35514
+# rename(2) version
+
+. ../default.cfg
+
+cat > /tmp/nlink4.c <<EOF
+#include <sys/stat.h>
+#include <ufs/ufs/dinode.h>
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <unistd.h>
+
+int
+main (void) {
+ int fd, i, mx;
+ char file[100];
+
+ snprintf(file, sizeof(file), "f");
+ if ((fd = open(file, O_RDWR | O_CREAT | O_TRUNC,
+ DEFFILEMODE)) == -1)
+ err(1, "creat(%s)", file);
+ close(fd);
+
+ mx = UFS_LINK_MAX - 1;
+ for (i = 0; i < mx; i++) {
+ snprintf(file, sizeof(file), "%d", i);
+ if (link("f", file) == -1)
+ err(1, "link(%s, %s)", "f", file);
+
+ }
+
+ /* The following link(2) must fail */
+ i = mx;
+ snprintf(file, sizeof(file), "%d", i);
+ if (link("f", file) != -1)
+ err(1, "link(%s, %s)", "f", file);
+ if (errno != EMLINK)
+ err(1, "Must fail: link(%s, %s)", "f", file);
+
+ /* Must succeed */
+ i = 0;
+ snprintf(file, sizeof(file), "%d", i);
+ if (unlink(file) == -1)
+ err(1, "unlink(%s)", file);
+ if (rename("1", "a") == -1) {
+ if (errno == EMLINK)
+ fprintf(stderr, "Unexpected EMLINK\n");
+ err(1, "rename(%s, %s)", "1", "a");
+ }
+
+ return (0);
+}
+EOF
+mycc -o /tmp/nlink4 -Wall -Wextra -O2 /tmp/nlink4.c || exit 1
+rm /tmp/nlink4.c
+
+set -e
+here=`pwd`
+mount | grep -q "on $mntpoint " && umount -f $mntpoint
+mdconfig -l | grep "md$mdstart " && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 1g -u $mdstart
+newfs -Un /dev/md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+set +e
+
+cd $mntpoint
+/tmp/nlink4; s=$?
+n=`ls -a | wc -l`
+[ $s -ne 0 ] && echo "$n files"
+cd $here
+
+umount $mntpoint
+mdconfig -d -u $mdstart
+rm /tmp/nlink4
+exit $s
diff --git a/tools/test/stress2/misc/nlink5.sh b/tools/test/stress2/misc/nlink5.sh
new file mode 100755
index 000000000000..0738bc7548bf
--- /dev/null
+++ b/tools/test/stress2/misc/nlink5.sh
@@ -0,0 +1,123 @@
+#!/bin/sh
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# https://reviews.freebsd.org/D35514
+# Rename dir a/b to c/d
+
+# Test scenario suggestion by kib
+
+. ../default.cfg
+
+UFS_LINK_MAX=`grep UFS_LINK_MAX /usr/include/ufs/ufs/dinode.h 2>/dev/null`
+[ -z "$UFS_LINK_MAX" ] && exit 0
+UFS_LINK_MAX=`echo $UFS_LINK_MAX | awk '{print $3}'`
+cat > /tmp/nlink5.c <<EOF
+#include <sys/stat.h>
+#include <ufs/ufs/dinode.h>
+#include <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <unistd.h>
+
+int
+main (void) {
+ int i, mx;
+ char dir[100];
+
+ mx = UFS_LINK_MAX - 2;
+ for (i = 0; i < mx; i++) {
+ snprintf(dir, sizeof(dir), "%d", i);
+ if (mkdir(dir, 0700) == -1)
+ err(1, "mkdir(%s)", dir);
+ }
+
+ /* The following mkdir(2) must fail */
+ i = mx;
+ snprintf(dir, sizeof(dir), "%d", i);
+ if (mkdir(dir, 0700) != -1) /* this must fail */
+ err(1, "mkdir(%s)", dir);
+ if (errno != EMLINK)
+ err(1, "Must fail: mkdir(%s)", dir);
+
+ /* Must succeed */
+ i = 0;
+ snprintf(dir, sizeof(dir), "%d", i);
+ if (rmdir(dir) == -1)
+ err(1, "rmdir(%s)", dir);
+ snprintf(dir, sizeof(dir), "%s", "x");
+ if (mkdir(dir, 0700) == -1)
+ err(1, "mkdir(%s)", dir);
+
+ /* Make room for two top level directories */
+ if (rmdir("1") == -1)
+ err(1, "rmdir(1)");
+ if (rmdir("2") == -1)
+ err(1, "rmdir(2)");
+
+ /* mkdir a c */
+ snprintf(dir, sizeof(dir), "%s", "a");
+ if (mkdir(dir, 0700) == -1)
+ err(1, "mkdir(%s)", dir);
+ snprintf(dir, sizeof(dir), "%s", "c");
+ if (mkdir(dir, 0700) == -1)
+ err(1, "mkdir(%s)", dir);
+
+ /* mkdir a/b */
+ snprintf(dir, sizeof(dir), "%s/%s", "a", "b");
+ if (mkdir(dir, 0700) == -1)
+ err(1, "mkdir(%s)", dir);
+
+ /* mv a/b c/d */
+ if (rename("a/b", "c/d") == -1)
+ err(1, "rename(a/b, c/d)");
+
+ return (0);
+}
+EOF
+mycc -o /tmp/nlink5 -Wall -Wextra -O2 /tmp/nlink5.c || exit 1
+rm /tmp/nlink5.c
+
+set -e
+here=`pwd`
+mount | grep -q "on $mntpoint " && umount -f $mntpoint
+mdconfig -l | grep "md$mdstart " && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 1g -u $mdstart
+newfs -Un /dev/md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+set +e
+
+cd $mntpoint
+/tmp/nlink5; s=$?
+n=`find . -type d -maxdepth 1 | wc -l`
+[ $n -ne $((UFS_LINK_MAX - 1)) ] && s=2
+cd $here
+
+umount $mntpoint
+mdconfig -d -u $mdstart
+rm /tmp/nlink5
+exit $s
diff --git a/tools/test/stress2/misc/nullfs10.sh b/tools/test/stress2/misc/nullfs10.sh
index 4444bcca2913..c0574be42e5a 100755
--- a/tools/test/stress2/misc/nullfs10.sh
+++ b/tools/test/stress2/misc/nullfs10.sh
@@ -45,9 +45,8 @@ mount | grep -q $mnt2 && umount $mnt2
mount | grep $mnt2 | grep -q /dev/md && umount -f $mnt2
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
mount -t nullfs $mntpoint $mnt2
diff --git a/tools/test/stress2/misc/nullfs11.sh b/tools/test/stress2/misc/nullfs11.sh
index 9d02abd3b3ca..7685f607a3ea 100755
--- a/tools/test/stress2/misc/nullfs11.sh
+++ b/tools/test/stress2/misc/nullfs11.sh
@@ -48,9 +48,8 @@ test() {
mount | grep -wq $mp1 && umount $mp1
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
- bsdlabel -w md$mdstart auto
- newfs $newfs_flags md${mdstart}$part > /dev/null
- mount /dev/md${mdstart}$part $mp1
+ newfs $newfs_flags md$mdstart > /dev/null
+ mount /dev/md$mdstart $mp1
mount -t nullfs $opt $mp1 $mp2
diff --git a/tools/test/stress2/misc/nullfs12.sh b/tools/test/stress2/misc/nullfs12.sh
index 12671bb695c1..daec7c0ba04e 100755
--- a/tools/test/stress2/misc/nullfs12.sh
+++ b/tools/test/stress2/misc/nullfs12.sh
@@ -41,9 +41,8 @@ mount | grep -q $mnt2 && umount $mnt2
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
mount -t nullfs $mntpoint $mnt2
diff --git a/tools/test/stress2/misc/nullfs13.sh b/tools/test/stress2/misc/nullfs13.sh
index 5c51621a8c94..0ef9b0f597fd 100755
--- a/tools/test/stress2/misc/nullfs13.sh
+++ b/tools/test/stress2/misc/nullfs13.sh
@@ -41,9 +41,8 @@ mount | grep -q "$nullfsmp " && umount $nullfsmp
mount | grep "$mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
mount -t nullfs $mntpoint $nullfsmp
diff --git a/tools/test/stress2/misc/nullfs14.sh b/tools/test/stress2/misc/nullfs14.sh
index 96bcb470dc40..4c38bef54896 100755
--- a/tools/test/stress2/misc/nullfs14.sh
+++ b/tools/test/stress2/misc/nullfs14.sh
@@ -39,9 +39,8 @@ mount | grep -q "$nullfsmp " && umount $nullfsmp
mount | grep "$mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
#chmod 777 $mntpoint
mount -t nullfs $mntpoint $nullfsmp
diff --git a/tools/test/stress2/misc/nullfs15.sh b/tools/test/stress2/misc/nullfs15.sh
index fcaca4af8cb9..0cd589173456 100755
--- a/tools/test/stress2/misc/nullfs15.sh
+++ b/tools/test/stress2/misc/nullfs15.sh
@@ -40,9 +40,8 @@ mount | grep -q "$nullfsmp " && umount $nullfsmp
mount | grep "$mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
mount -t nullfs $mntpoint $nullfsmp
mkdir $mntpoint/.new_packages $nullfsmp/new_packages
diff --git a/tools/test/stress2/misc/nullfs18.sh b/tools/test/stress2/misc/nullfs18.sh
index 1f3320bff1e6..0ee0a1c2ef6b 100755
--- a/tools/test/stress2/misc/nullfs18.sh
+++ b/tools/test/stress2/misc/nullfs18.sh
@@ -39,11 +39,10 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -n md${mdstart}$part > /dev/null
+newfs -n md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
set `df -ik $mntpoint | tail -1 | awk '{print $4,$7}'`
export KBLOCKS=$(($1 / N))
diff --git a/tools/test/stress2/misc/nullfs19.sh b/tools/test/stress2/misc/nullfs19.sh
index fd5f16f4b780..6ad70077b7b3 100755
--- a/tools/test/stress2/misc/nullfs19.sh
+++ b/tools/test/stress2/misc/nullfs19.sh
@@ -38,11 +38,10 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -n $newfs_flags md${mdstart}$part > /dev/null
+newfs -n $newfs_flags md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
set `df -ik $mntpoint | tail -1 | awk '{print $4,$7}'`
export KBLOCKS=$(($1 / N))
diff --git a/tools/test/stress2/misc/nullfs20.sh b/tools/test/stress2/misc/nullfs20.sh
index 78c5295bae32..9e22770b139b 100755
--- a/tools/test/stress2/misc/nullfs20.sh
+++ b/tools/test/stress2/misc/nullfs20.sh
@@ -37,11 +37,10 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -n -b 4096 -f 512 -i 1024 md${mdstart}$part > /dev/null
+newfs -n -b 4096 -f 512 -i 1024 md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
mp2=$mntpoint$((mdstart + 1))
diff --git a/tools/test/stress2/misc/nullfs21.sh b/tools/test/stress2/misc/nullfs21.sh
index 209ed65d1d3f..9184cbdaa088 100755
--- a/tools/test/stress2/misc/nullfs21.sh
+++ b/tools/test/stress2/misc/nullfs21.sh
@@ -37,11 +37,10 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 512m -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -n -b 4096 -f 512 -i 1024 md${mdstart}$part > /dev/null
+newfs -n -b 4096 -f 512 -i 1024 md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
mp2=${mntpoint}2
[ -d $mp2 ] || mkdir -p $mp2
diff --git a/tools/test/stress2/misc/nullfs22.sh b/tools/test/stress2/misc/nullfs22.sh
index f7652d71bf40..f5fadd7ed9d0 100755
--- a/tools/test/stress2/misc/nullfs22.sh
+++ b/tools/test/stress2/misc/nullfs22.sh
@@ -45,9 +45,8 @@ mount | grep -q "on $mp2 " && umount $mp2
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 512m -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -n md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -n md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
mount -t nullfs $mntpoint $mp2
@@ -103,7 +102,7 @@ add(int n, int increment)
{
struct flock fl;
off_t pos;
- long val, oval;
+ long val, oval __unused;
int r;
pos = n * sizeof(val);
diff --git a/tools/test/stress2/misc/nullfs25.sh b/tools/test/stress2/misc/nullfs25.sh
index 5588567ead22..b98d4599a7ad 100755
--- a/tools/test/stress2/misc/nullfs25.sh
+++ b/tools/test/stress2/misc/nullfs25.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
@@ -40,9 +40,8 @@ CONT=/tmp/nullfs25.continue
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
(cd $mntpoint; jot 500 | xargs touch)
(cd ../testcases/swap; ./swap -t 5m -i 20 > /dev/null) &
diff --git a/tools/test/stress2/misc/nullfs26.sh b/tools/test/stress2/misc/nullfs26.sh
index 720021e9e199..ae3dfa23dc2b 100755
--- a/tools/test/stress2/misc/nullfs26.sh
+++ b/tools/test/stress2/misc/nullfs26.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/nullfs27.sh b/tools/test/stress2/misc/nullfs27.sh
index 02894fba5efb..bf7b2a5fea61 100755
--- a/tools/test/stress2/misc/nullfs27.sh
+++ b/tools/test/stress2/misc/nullfs27.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
@@ -39,10 +39,9 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
mp2=${mntpoint}2
diff --git a/tools/test/stress2/misc/nullfs28.sh b/tools/test/stress2/misc/nullfs28.sh
new file mode 100755
index 000000000000..6ebb47974ffe
--- /dev/null
+++ b/tools/test/stress2/misc/nullfs28.sh
@@ -0,0 +1,81 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Scenario: mount -t nullfs /mnt /mnt
+
+# Seen:
+# [root@mercat1 /home/pho]# ps -lUroot | grep -v grep | grep -E "find|umount"
+# 0 23496 3144 0 52 0 12856 2544 ufs D+ 0 0:00.00 find /mnt -type f -maxdepth 2 -ls
+# 0 23497 3126 6 52 0 12812 2512 mount dr D+ 0 0:00.00 umount /mnt
+# [root@mercat1 /home/pho]#
+
+# Test suggestion by Jason Harmening:
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+
+nullfs_srcdir=$mntpoint
+nullfs_dstdir=$mntpoint
+runtime=300
+
+set -e
+mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 2g -u $mdstart || exit 1
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+chmod 777 $mntpoint
+set +e
+
+start=`date '+%s'`
+while [ `date '+%s'` -lt $((start + $runtime)) ]; do
+ find $nullfs_dstdir -type f -maxdepth 2 -ls > \
+ /dev/null 2>&1
+done &
+
+(cd ../testcases/swap; ./swap -t ${runtime}s -i 20) &
+start=`date '+%s'`
+while [ `date '+%s'` -lt $((start + $runtime)) ]; do
+ mount_nullfs $nullfs_srcdir $nullfs_dstdir
+ opt=$([ `jot -r 1 0 1` -eq 0 ] && echo "-f")
+ while mount | grep nullfs | grep -q ${nullfs_dstdir}; do
+ umount $opt $nullfs_dstdir
+ done
+done > /dev/null 2>&1
+pkill swap
+wait
+n=0
+while mount | grep $mntpoint | grep -q /dev/md; do
+ umount $mntpoint || sleep 1
+ n=$((n + 1))
+ [ $n -gt 30 ] && { echo FAIL; status=2; }
+done
+mdconfig -d -u $mdstart
+exit 0
diff --git a/tools/test/stress2/misc/nullfs29.sh b/tools/test/stress2/misc/nullfs29.sh
new file mode 100755
index 000000000000..aa606fd5f526
--- /dev/null
+++ b/tools/test/stress2/misc/nullfs29.sh
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+# Regression test for:
+# bf13db086b84 - main - Mostly revert a5970a529c2d95271: Make files opened
+# with O_PATH to not block non-forced unmount
+
+# Based on a scenario by: ambrisko
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+
+here=`pwd`
+mp1=$mntpoint
+mp2=${mntpoint}$mdstart
+
+set -e
+mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 1g -u $mdstart || exit 1
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+chmod 777 $mntpoint
+
+mkdir -p $mp2
+mount_nullfs -o nocache $mp1 $mp2
+set +e
+cat > /tmp/nullfs29.c <<EOF
+#include <sys/stat.h>
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(void) {
+ int new_dir, new_file, ret;
+ struct stat sb;
+ char *dir = "test2";
+ char *path= "test2/what2";
+
+ if (mkdir(dir, 0755) == -1)
+ err(1, "mkdir(test2)");
+ new_dir = openat(AT_FDCWD, dir, O_RDONLY|O_DIRECTORY|O_CLOEXEC|O_PATH, 0700);
+ if (new_dir == -1)
+ err(1, "openat(%s)", dir);
+
+ ret = fstatat(new_dir, "what2", &sb, AT_SYMLINK_NOFOLLOW);
+ if (ret == 0)
+ errx(1, "Expected fstatat() to fail");
+ if (ret == -1 && errno != ENOENT)
+ err(1, "fstatat(%s)", dir);
+
+ close(new_dir);
+ new_file = openat(AT_FDCWD, path, O_WRONLY|O_CREAT|O_EXCL|O_CLOEXEC, 0644);
+ if (new_file== -1)
+ err(1, "openat(%s)", path);
+}
+
+EOF
+mycc -o /tmp/nullfs29 -Wall -Wextra -O2 /tmp/nullfs29.c || exit 1
+cd $mp2
+/tmp/nullfs29; s=$?
+cd $here
+umount $mp2
+
+n=0
+while mount | grep $mp1 | grep -q /dev/md; do
+ umount $mp1 || sleep 1
+ n=$((n + 1))
+ [ $n -gt 30 ] && { echo FAIL; s=2; }
+done
+mdconfig -d -u $mdstart
+rm -f /tmp/nullfs29.c
+exit $s
diff --git a/tools/test/stress2/misc/nullfs30.sh b/tools/test/stress2/misc/nullfs30.sh
new file mode 100755
index 000000000000..8b8f35aed4c0
--- /dev/null
+++ b/tools/test/stress2/misc/nullfs30.sh
@@ -0,0 +1,112 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Parallel mount and umount test of file mounts,
+# mounting over non-directories
+
+# panic: free: address 0xffffffff80b229b4 ... has not been allocated
+# https://people.freebsd.org/~pho/stress/log/log0454.txt
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+cont=/tmp/nullfs30.continue
+mounts=3 # Number of parallel scripts
+
+set -eu
+md1=$mdstart
+md2=$((md1 + 1))
+mp1=$mntpoint$md1
+mp2=$mntpoint$md2
+mkdir -p $mp1 $mp2
+
+mdconfig -a -t swap -s 256m -u $md1
+newfs $newfs_flags -n md$md1 > /dev/null
+mount /dev/md$md1 $mp1
+mdconfig -a -t swap -s 256m -u $md2
+newfs $newfs_flags -n md$md2 > /dev/null
+mount /dev/md$md2 $mp2
+
+for i in `jot $mounts`; do
+ cp /etc/group $mp1/f$i
+ touch $mp2/m$i
+done
+set +e
+
+mount -t nullfs $mp1/f1 $mp2/m1 || {
+ umount $mp2
+ umount $mp1
+ mdconfig -d -u $md2
+ mdconfig -d -u $md1
+ echo "File mount not implemented"
+ exit 0
+}
+
+(cd ../testcases/swap; ./swap -t 5m -i 20 > /dev/null) &
+
+# Start the parallel tests
+touch $cont
+while [ -f $cont ]; do
+ while mount | grep -q "on $mp2/m1 "; do umount $mp2/m1; done 2> /dev/null
+ mount -t nullfs $mp1/f1 $mp2/m1
+done &
+while [ -f $cont ]; do
+ while mount | grep -q "on $mp2/m2 "; do umount $mp2/m2; done 2> /dev/null
+ mount -t nullfs $mp1/f2 $mp2/m2
+done &
+while [ -f $cont ]; do
+ while mount | grep -q "on $mp2/m3 "; do umount $mp2/m3; done 2> /dev/null
+ mount -t nullfs $mp1/f3 $mp2/m3
+done &
+
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 300 ]; do
+ cat $mp2/m1 $mp2/m2 $mp2/m3 > /dev/null
+done
+rm -f $cont
+while pgrep -q swap; do pkill swap; done
+wait
+
+for i in 1 2 3; do
+ while mount | grep -q "on $mp2/m$i "; do umount $mp2/m$i; done 2> /dev/null
+done
+
+# Check error handling
+mount -t nullfs $mp1/f1 $mp2/m1
+mount -t nullfs $mp1/f1 $mp2/m1 2>/dev/null && s=1 || s=0
+while mount | grep -q "on $mp2/m1 "; do umount $mp2/m1; done 2> /dev/null
+
+mkdir $mp2/dir
+mount -t nullfs $mp1/f1 $mp2/dir 2>/dev/null && s=2
+
+umount $mp2
+umount $mp1
+mdconfig -d -u $md2
+mdconfig -d -u $md1
+exit $s
diff --git a/tools/test/stress2/misc/nullfs7.sh b/tools/test/stress2/misc/nullfs7.sh
index 329258f5af4d..d790f7ef05b0 100755
--- a/tools/test/stress2/misc/nullfs7.sh
+++ b/tools/test/stress2/misc/nullfs7.sh
@@ -43,9 +43,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
[ -d $RUNDIR ] || mkdir -p $RUNDIR
for i in `jot 50`; do
diff --git a/tools/test/stress2/misc/nullfs9.sh b/tools/test/stress2/misc/nullfs9.sh
index e74cde947924..7e7403af3138 100755
--- a/tools/test/stress2/misc/nullfs9.sh
+++ b/tools/test/stress2/misc/nullfs9.sh
@@ -41,9 +41,8 @@ mount | grep -q $mnt2/mp && umount $mnt2/mp
mount | grep $mnt2 | grep -q /dev/md && umount -f $mnt2
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mnt2
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mnt2
chmod 777 $mnt2
mount | grep $mntpoint | grep -q tmpfs && umount -f $mntpoint
diff --git a/tools/test/stress2/misc/numa.sh b/tools/test/stress2/misc/numa.sh
index 048eb1201714..afa153ec1ed1 100755
--- a/tools/test/stress2/misc/numa.sh
+++ b/tools/test/stress2/misc/numa.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/open2.sh b/tools/test/stress2/misc/open2.sh
index 7c0994bfd4e4..fc3f7c9b05eb 100755
--- a/tools/test/stress2/misc/open2.sh
+++ b/tools/test/stress2/misc/open2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/overcommit.sh b/tools/test/stress2/misc/overcommit.sh
index 40f60a32f4af..a5de8e214b18 100755
--- a/tools/test/stress2/misc/overcommit.sh
+++ b/tools/test/stress2/misc/overcommit.sh
@@ -44,15 +44,15 @@ sysctl vm.overcommit=1
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=10m
export RUNDIR=$mntpoint/stressX
-su $testuser -c 'cd ..; ./run.sh marcus.cfg'
+timeout 11m \
+ su $testuser -c 'cd ..; ./run.sh marcus.cfg'
while mount | grep "on $mntpoint " | grep -q /dev/md; do
umount $mntpoint || sleep 1
diff --git a/tools/test/stress2/misc/overcommit2.sh b/tools/test/stress2/misc/overcommit2.sh
index aed26689b933..962fc01e8e50 100755
--- a/tools/test/stress2/misc/overcommit2.sh
+++ b/tools/test/stress2/misc/overcommit2.sh
@@ -46,9 +46,8 @@ trap "sysctl vm.overcommit=$old" EXIT INT
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s ${size}m -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
echo "Expect:
/mnt: write failed, filesystem is full
diff --git a/tools/test/stress2/misc/overflow3.sh b/tools/test/stress2/misc/overflow3.sh
index a5a29721a30b..d09794e57bca 100755
--- a/tools/test/stress2/misc/overflow3.sh
+++ b/tools/test/stress2/misc/overflow3.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Mark Johnston <markj@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/overlap.sh b/tools/test/stress2/misc/overlap.sh
index f7ac00116559..e1de3e914491 100755
--- a/tools/test/stress2/misc/overlap.sh
+++ b/tools/test/stress2/misc/overlap.sh
@@ -45,11 +45,10 @@ rm -f /tmp/overlap.c
size="1g"
mdconfig -a -t swap -s $size -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -U md${mdstart}$part > /dev/null
+newfs -U md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
(cd $mntpoint; /tmp/overlap)
diff --git a/tools/test/stress2/misc/pageout.sh b/tools/test/stress2/misc/pageout.sh
index 5497a1135ff4..92eb899880ac 100755
--- a/tools/test/stress2/misc/pageout.sh
+++ b/tools/test/stress2/misc/pageout.sh
@@ -33,6 +33,10 @@
# "panic: handle_written_filepage: not started" seen:
# https://people.freebsd.org/~pho/stress/log/pageout-2.txt
+# "panic: ffs_geom_strategy: bad I/O" seen:
+# https://people.freebsd.org/~pho/stress/log/log0434.txt
+# Fixed by: 7aeea73e3078
+
[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
. ../default.cfg
@@ -48,11 +52,12 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+[ "$newfs_flags" = "-U" ] && [ `jot -r 1 0 1` -eq 1 ] && newfs_flags="-j"
+[ $# -eq 1 ] && newfs_flags="$1" # or use script argument
+newfs $newfs_flags md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
f1=$mntpoint/f1
@@ -62,8 +67,8 @@ daemon sh -c "(cd ../testcases/swap; ./swap -t 5m -i 20 -l 100 -h)" > /dev/null
(cd /tmp; /tmp/pageout $f1) &
sleep .2
while kill -0 $! 2> /dev/null; do
- mksnap_ffs $mntpoint $mntpoint/.snap/stress2 &&
- rm -f $mntpoint/.snap/stress2
+ rm -f $mntpoint/.snap/stress2
+ mksnap_ffs $mntpoint $mntpoint/.snap/stress2
done
while pgrep -q swap; do
pkill swap
diff --git a/tools/test/stress2/misc/parallelmount.sh b/tools/test/stress2/misc/parallelmount.sh
index 5292efbed97a..6d6a5c458328 100755
--- a/tools/test/stress2/misc/parallelmount.sh
+++ b/tools/test/stress2/misc/parallelmount.sh
@@ -38,8 +38,7 @@ parallel=40
if [ $# -eq 0 ]; then
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 10m -u $mdstart || exit 1
- bsdlabel -w md$mdstart auto
- newfs $newfs_flags md${mdstart}$part > /dev/null
+ newfs $newfs_flags md$mdstart > /dev/null
# start the parallel tests
for i in `jot $parallel`; do
@@ -61,7 +60,7 @@ if [ $# -eq 0 ]; then
else
start=`date '+%s'`
while [ $((`date '+%s'` - start)) -lt 600 ]; do
- mount /dev/md${mdstart}$part $mntpoint
+ mount /dev/md$mdstart $mntpoint
umount $mntpoint
mount
done > /dev/null 2>&1
diff --git a/tools/test/stress2/misc/parallelmount2.sh b/tools/test/stress2/misc/parallelmount2.sh
index 454a7b4b01ed..a90ae65aa8fd 100755
--- a/tools/test/stress2/misc/parallelmount2.sh
+++ b/tools/test/stress2/misc/parallelmount2.sh
@@ -41,11 +41,10 @@ parallel=40
if [ $# -eq 0 ]; then
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 10m -u $mdstart || exit 1
- bsdlabel -w md$mdstart auto
- newfs $newfs_flags md${mdstart}$part > /dev/null
+ newfs $newfs_flags md$mdstart > /dev/null
export PATH_FSTAB=/var/tmp/fstab.$$
- echo "/dev/md${mdstart}$part $mntpoint ufs rw,userquota 2 2" > $PATH_FSTAB
- mount /dev/md${mdstart}$part $mntpoint
+ echo "/dev/md$mdstart $mntpoint ufs rw,userquota 2 2" > $PATH_FSTAB
+ mount /dev/md$mdstart $mntpoint
set `df -ik $mntpoint | tail -1 | awk '{print $4,$7}'`
export QK=$(($1 / 10 * 8))
export QI=$(($2 / 10 * 8))
@@ -76,7 +75,7 @@ if [ $# -eq 0 ]; then
else
start=`date '+%s'`
while [ $((`date '+%s'` - start)) -lt 600 ]; do
- mount /dev/md${mdstart}$part $mntpoint
+ mount /dev/md$mdstart $mntpoint
quotaon $mntpoint
umount $mntpoint
mount
diff --git a/tools/test/stress2/misc/pcatch.sh b/tools/test/stress2/misc/pcatch.sh
index f1db7de253f2..6a4ebc34e00a 100755
--- a/tools/test/stress2/misc/pcatch.sh
+++ b/tools/test/stress2/misc/pcatch.sh
@@ -52,10 +52,9 @@ cd $here
mount | grep -q "$mntpoint" && umount $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
start=`date '+%s'`
while [ $((`date '+%s'` - start)) -lt 120 ]; do
diff --git a/tools/test/stress2/misc/perf.sh b/tools/test/stress2/misc/perf.sh
index 89e9dd8d371c..58f5bd67b756 100755
--- a/tools/test/stress2/misc/perf.sh
+++ b/tools/test/stress2/misc/perf.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/pfl.sh b/tools/test/stress2/misc/pfl.sh
index 6d590b5cf225..d4f435c5f34c 100755
--- a/tools/test/stress2/misc/pfl.sh
+++ b/tools/test/stress2/misc/pfl.sh
@@ -56,17 +56,15 @@ opt=$([ $((`date '+%s'` % 2)) -eq 0 ] && echo "-j" || echo "-U")
mount | grep "on $mp1 " | grep -q /dev/md && umount -f $mp1
[ -c /dev/md$md1 ] && mdconfig -d -u $md1
mdconfig -a -t swap -s ${size}m -u $md1
-bsdlabel -w md$md1 auto
-newfs $opt md${md1}$part > /dev/null
-mount /dev/md${md1}$part $mp1
+newfs $opt md${md1} > /dev/null
+mount /dev/md${md1} $mp1
chmod 777 $mp1
mount | grep "on $mp2 " | grep -q /dev/md && umount -f $mp2
[ -c /dev/md$md2 ] && mdconfig -d -u $md2
mdconfig -a -t swap -s ${size}m -u $md2
-bsdlabel -w md$md2 auto
-newfs $opt md${md2}$part > /dev/null
-mount /dev/md${md2}$part $mp2
+newfs $opt md${md2} > /dev/null
+mount /dev/md${md2} $mp2
chmod 777 $mp2
su $testuser -c "cd $mp1; /tmp/pfl" &
diff --git a/tools/test/stress2/misc/pfl2.sh b/tools/test/stress2/misc/pfl2.sh
index 9b6497294242..458962b65f2b 100755
--- a/tools/test/stress2/misc/pfl2.sh
+++ b/tools/test/stress2/misc/pfl2.sh
@@ -54,17 +54,15 @@ opt=$([ $((`date '+%s'` % 2)) -eq 0 ] && echo "-j" || echo "-U")
mount | grep "on $mp1 " | grep -q /dev/md && umount -f $mp1
mdconfig -l | grep -q md$md1 && mdconfig -d -u $md1
mdconfig -a -t swap -s ${size}m -u $md1
-bsdlabel -w md$md1 auto
-newfs $opt md${md1}$part > /dev/null
-mount /dev/md${md1}$part $mp1
+newfs $opt md${md1} > /dev/null
+mount /dev/md${md1} $mp1
chmod 777 $mp1
mount | grep "on $mp2 " | grep -q /dev/md && umount -f $mp2
mdconfig -l | grep -q md$md2 && mdconfig -d -u $md2
mdconfig -a -t swap -s ${size}m -u $md2
-bsdlabel -w md$md2 auto
-newfs $opt md${md2}$part > /dev/null
-mount /dev/md${md2}$part $mp2
+newfs $opt md${md2} > /dev/null
+mount /dev/md${md2} $mp2
chmod 777 $mp2
export runRUNTIME=10m
diff --git a/tools/test/stress2/misc/pfl4.sh b/tools/test/stress2/misc/pfl4.sh
index 8128fa1f585c..3459923f5795 100755
--- a/tools/test/stress2/misc/pfl4.sh
+++ b/tools/test/stress2/misc/pfl4.sh
@@ -63,9 +63,8 @@ for i in `jot $mounts $start`; do
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -a -t swap -s 2g -u $mdstart
- bsdlabel -w md$mdstart auto
- newfs $newfs_flags md${mdstart}$part > /dev/null
- mount /dev/md${mdstart}$part $mntpoint
+ newfs $newfs_flags md$mdstart > /dev/null
+ mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export RUNDIR=$mntpoint/stressX
@@ -86,10 +85,11 @@ for i in `jot $mounts $start`; do
mntpoint=${prefix}$i
n=0
while mount | grep -q "on $mntpoint "; do
- umount $mntpoint && mdconfig -d -u $mdstart || sleep 1
+ umount $mntpoint || sleep 1
n=$((n += 1))
[ $n -gt 60 ] && exit 1
done
- checkfs /dev/md${mdstart}$part || s=$?
+ checkfs /dev/md$mdstart || s=$?
+ mdconfig -d -u $mdstart
done
exit $s
diff --git a/tools/test/stress2/misc/ping.sh b/tools/test/stress2/misc/ping.sh
index 2594c6d5e43c..29ed6dec955f 100755
--- a/tools/test/stress2/misc/ping.sh
+++ b/tools/test/stress2/misc/ping.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
diff --git a/tools/test/stress2/misc/pipe3.sh b/tools/test/stress2/misc/pipe3.sh
index 6208e1a52f90..654b94e3caaf 100755
--- a/tools/test/stress2/misc/pipe3.sh
+++ b/tools/test/stress2/misc/pipe3.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Peter Holm
#
diff --git a/tools/test/stress2/misc/pipe_enomem.sh b/tools/test/stress2/misc/pipe_enomem.sh
index 92558b164336..9a00aac5cb6b 100755
--- a/tools/test/stress2/misc/pipe_enomem.sh
+++ b/tools/test/stress2/misc/pipe_enomem.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Konstantin Belousov
#
diff --git a/tools/test/stress2/misc/pkru.sh b/tools/test/stress2/misc/pkru.sh
index 9ac0a5000daf..047b7f8f8745 100755
--- a/tools/test/stress2/misc/pkru.sh
+++ b/tools/test/stress2/misc/pkru.sh
@@ -1,6 +1,6 @@
#/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Konstantin Belousov <kib@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/pmc6.sh b/tools/test/stress2/misc/pmc6.sh
index 4cbdf278125f..f0869333b0ff 100755
--- a/tools/test/stress2/misc/pmc6.sh
+++ b/tools/test/stress2/misc/pmc6.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/poll2.sh b/tools/test/stress2/misc/poll2.sh
index 13db2d0d22d3..aa5ad5f995dd 100755
--- a/tools/test/stress2/misc/poll2.sh
+++ b/tools/test/stress2/misc/poll2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
@@ -136,11 +136,11 @@ static void *
pl(void *data __unused)
{
struct pollfd pfd;
- int i, r;
+ int r;
pfd.fd = fds[0];
pfd.events = POLLIN;
- for (i = 0; done == 0; i++) {
+ while (done == 0) {
pfd.fd = fds[0];
pfd.events = POLLIN;
pthread_set_name_np(pthread_self(), "pl-idle");
diff --git a/tools/test/stress2/misc/pread.sh b/tools/test/stress2/misc/pread.sh
index fecdc18675c9..1bf3b874e6af 100755
--- a/tools/test/stress2/misc/pread.sh
+++ b/tools/test/stress2/misc/pread.sh
@@ -70,9 +70,8 @@ while mount | grep -q "on $mntpoint "; do
done
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
cp -a /usr/include $mntpoint
echo "Testing FFS"
/tmp/pread $mntpoint
diff --git a/tools/test/stress2/misc/proccontrol.sh b/tools/test/stress2/misc/proccontrol.sh
index 52f7cc824372..cea8c0dc0f0a 100755
--- a/tools/test/stress2/misc/proccontrol.sh
+++ b/tools/test/stress2/misc/proccontrol.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/procfs4.sh b/tools/test/stress2/misc/procfs4.sh
index ffa812a7f73d..18e5c0a6f803 100755
--- a/tools/test/stress2/misc/procfs4.sh
+++ b/tools/test/stress2/misc/procfs4.sh
@@ -68,6 +68,7 @@ EOF
#define MAXRUN 1200
#define PARALLEL 10
+static int debug; /* Set to 1 for debug output */
char *files[] = {
"cmdline",
"ctl",
@@ -116,10 +117,8 @@ test(void)
close(fd);
}
kill(p, SIGHUP);
-#if 0
- if (opens < 1)
- fprintf(stderr, "Warn %d open(s) for pid %d\n", opens, getpid());
-#endif
+ if (debug != 0 && opens == 0)
+ fprintf(stderr, "No ioctl() calls succeeded.\n");
}
for (i = 0; i < 64; i++)
diff --git a/tools/test/stress2/misc/procfs6.sh b/tools/test/stress2/misc/procfs6.sh
index b4cc4c1eb4c0..24ea6ae47588 100755
--- a/tools/test/stress2/misc/procfs6.sh
+++ b/tools/test/stress2/misc/procfs6.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/procstat.sh b/tools/test/stress2/misc/procstat.sh
index 91a846ba91ee..c760583c8bbd 100755
--- a/tools/test/stress2/misc/procstat.sh
+++ b/tools/test/stress2/misc/procstat.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/procstat2.sh b/tools/test/stress2/misc/procstat2.sh
index 712f53c11b3b..758b684dbf0a 100755
--- a/tools/test/stress2/misc/procstat2.sh
+++ b/tools/test/stress2/misc/procstat2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
diff --git a/tools/test/stress2/misc/ptrace10.sh b/tools/test/stress2/misc/ptrace10.sh
index c2dec736a240..205efe2cc27a 100755
--- a/tools/test/stress2/misc/ptrace10.sh
+++ b/tools/test/stress2/misc/ptrace10.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Mark Johnston <markj@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/ptrace11.sh b/tools/test/stress2/misc/ptrace11.sh
index 9fbd44481624..f5231bc1850f 100755
--- a/tools/test/stress2/misc/ptrace11.sh
+++ b/tools/test/stress2/misc/ptrace11.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/ptrace12.sh b/tools/test/stress2/misc/ptrace12.sh
index b7381c4937e1..b80ba69b1327 100755
--- a/tools/test/stress2/misc/ptrace12.sh
+++ b/tools/test/stress2/misc/ptrace12.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/ptrace9.sh b/tools/test/stress2/misc/ptrace9.sh
index ac1329fd1a2a..ffd5fce0d646 100755
--- a/tools/test/stress2/misc/ptrace9.sh
+++ b/tools/test/stress2/misc/ptrace9.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2016 Mark Johnston <markj@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/pts2.sh b/tools/test/stress2/misc/pts2.sh
index 84f7bbd78255..32adb98f2cfe 100755
--- a/tools/test/stress2/misc/pts2.sh
+++ b/tools/test/stress2/misc/pts2.sh
@@ -40,11 +40,11 @@ sed '1,/^EOF/d' < $here/$0 > pts2.c
mycc -o pts2 -Wall -Wextra -O2 pts2.c || exit 1
rm -f pts2.c
-pts=`vmstat -m | grep pts | awk '{print $2}'`
+pts=`vmstat -m | awk '/ pts / {print $2}'`
for i in `jot 10`; do
/tmp/pts2
done
-new=`vmstat -m | grep pts | awk '{print $2}'`
+new=`vmstat -m | awk '/ pts / {print $2}'`
s=0
[ $((new - pts)) -gt 1 ] && { s=1; echo "Leaked $((new - pts)) pts."; }
diff --git a/tools/test/stress2/misc/pts3.sh b/tools/test/stress2/misc/pts3.sh
index b398e92916af..ebd854b82bf7 100755
--- a/tools/test/stress2/misc/pts3.sh
+++ b/tools/test/stress2/misc/pts3.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/quota1.sh b/tools/test/stress2/misc/quota1.sh
index 38e0fcd9c351..2bdb16c2a624 100755
--- a/tools/test/stress2/misc/quota1.sh
+++ b/tools/test/stress2/misc/quota1.sh
@@ -38,14 +38,13 @@ D=$diskimage
trap "rm -f $D" 0
dd if=/dev/zero of=$D bs=1m count=128 status=none || exit 1
-mount | grep "$mntpoint" | grep md${mdstart}$part > /dev/null &&
+mount | grep "$mntpoint" | grep md$mdstart > /dev/null &&
umount $mntpoint
mdconfig -l | grep md$mdstart > /dev/null && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
export RUNDIR=$mntpoint/stressX
export runRUNTIME=10m # Run tests for 10 minutes
(cd ..; ./run.sh disk.cfg)
diff --git a/tools/test/stress2/misc/quota10.sh b/tools/test/stress2/misc/quota10.sh
index 1452f68538cf..44d417ab3d33 100755
--- a/tools/test/stress2/misc/quota10.sh
+++ b/tools/test/stress2/misc/quota10.sh
@@ -51,9 +51,8 @@ if [ $# -eq 0 ]; then
dd if=/dev/zero of=$D$m bs=1m count=1 status=none
mdconfig -a -t vnode -f $D$m -u $m
- bsdlabel -w md$m auto
- newfs md${m}$part > /dev/null 2>&1
- echo "/dev/md${m}$part ${mntpoint}$m ufs rw,userquota 2 2" \
+ newfs md${m} > /dev/null 2>&1
+ echo "/dev/md${m} ${mntpoint}$m ufs rw,userquota 2 2" \
>> $PATH_FSTAB
mount ${mntpoint}$m
edquota -u -f ${mntpoint}$m -e \
@@ -92,7 +91,7 @@ else
while [ $((`date '+%s'` - start)) -lt 1200 ]; do
m=$1
opt=`[ $(( m % 2 )) -eq 0 ] && echo -f`
- mount $opt /dev/md${m}$part ${mntpoint}$m
+ mount $opt /dev/md${m} ${mntpoint}$m
while mount | grep -qw $mntpoint$m; do
opt=$([ $((`date '+%s'` % 2)) -eq 0 ] &&
echo "-f")
diff --git a/tools/test/stress2/misc/quota11.sh b/tools/test/stress2/misc/quota11.sh
index bf08f9e15db4..62fcbe7f0922 100755
--- a/tools/test/stress2/misc/quota11.sh
+++ b/tools/test/stress2/misc/quota11.sh
@@ -37,15 +37,14 @@
. ../default.cfg
-mount | grep "on $mntpoint " | grep -q md${mdstart}$part && umount $mntpoint
+mount | grep "on $mntpoint " | grep -q md$mdstart && umount $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
export PATH_FSTAB=/tmp/fstab
trap "rm -f $PATH_FSTAB" 0
-echo "/dev/md${mdstart}$part $mntpoint ufs rw,userquota 2 2" > $PATH_FSTAB
+echo "/dev/md$mdstart $mntpoint ufs rw,userquota 2 2" > $PATH_FSTAB
mount $mntpoint
edquota -u -f $mntpoint -e $mntpoint:1000:2000:100:200 root
quotaon $mntpoint
diff --git a/tools/test/stress2/misc/quota12.sh b/tools/test/stress2/misc/quota12.sh
index 78a5e0c0cd81..cd0855b07584 100755
--- a/tools/test/stress2/misc/quota12.sh
+++ b/tools/test/stress2/misc/quota12.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
@@ -37,15 +37,14 @@
. ../default.cfg
-mount | grep "on $mntpoint " | grep -q md${mdstart}$part && umount $mntpoint
+mount | grep "on $mntpoint " | grep -q md$mdstart && umount $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
export PATH_FSTAB=/tmp/fstab
trap "rm -f $PATH_FSTAB" 0
-echo "/dev/md${mdstart}$part $mntpoint ufs rw,userquota 2 2" > $PATH_FSTAB
+echo "/dev/md$mdstart $mntpoint ufs rw,userquota 2 2" > $PATH_FSTAB
mount $mntpoint
set `df -ik $mntpoint | tail -1 | awk '{print $4,$7}'`
export KBLOCKS=$1
diff --git a/tools/test/stress2/misc/quota2.sh b/tools/test/stress2/misc/quota2.sh
index 9deb97726d60..3b346ef969d2 100755
--- a/tools/test/stress2/misc/quota2.sh
+++ b/tools/test/stress2/misc/quota2.sh
@@ -36,13 +36,12 @@ export PATH_FSTAB=/tmp/fstab
trap "rm -f $D $PATH_FSTAB" 0
dd if=/dev/zero of=$D bs=1m count=128 status=none || exit 1
-mount | grep "$mntpoint" | grep md${mdstart}$part > /dev/null && umount $mntpoint
+mount | grep "$mntpoint" | grep md$mdstart > /dev/null && umount $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-echo "/dev/md${mdstart}$part $mntpoint ufs rw,userquota 2 2" > $PATH_FSTAB
+newfs $newfs_flags md$mdstart > /dev/null
+echo "/dev/md$mdstart $mntpoint ufs rw,userquota 2 2" > $PATH_FSTAB
mount $mntpoint
edquota -u -f $mntpoint -e $mntpoint:100000:110000:15000:16000 root
quotacheck $mntpoint
diff --git a/tools/test/stress2/misc/quota3.sh b/tools/test/stress2/misc/quota3.sh
index de4c60ec2810..9260178b39fa 100755
--- a/tools/test/stress2/misc/quota3.sh
+++ b/tools/test/stress2/misc/quota3.sh
@@ -36,13 +36,12 @@ export PATH_FSTAB=/tmp/fstab
trap "rm -f $D $PATH_FSTAB" 0
dd if=/dev/zero of=$D bs=1m count=1k status=none || exit 1
-mount | grep "$mntpoint" | grep -q md${mdstart}$part && umount $mntpoint
+mount | grep "$mntpoint" | grep -q md$mdstart && umount $mntpoint
mdconfig -l | grep md$mdstart > /dev/null && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-echo "/dev/md${mdstart}$part $mntpoint ufs rw,userquota 2 2" > $PATH_FSTAB
+newfs $newfs_flags md$mdstart > /dev/null
+echo "/dev/md$mdstart $mntpoint ufs rw,userquota 2 2" > $PATH_FSTAB
mount $mntpoint
edquota -u -f $mntpoint -e $mntpoint:850000:900000:130000:140000 root
quotacheck $mntpoint
diff --git a/tools/test/stress2/misc/quota4.sh b/tools/test/stress2/misc/quota4.sh
index 3eeae263cac2..8acac9958f1b 100755
--- a/tools/test/stress2/misc/quota4.sh
+++ b/tools/test/stress2/misc/quota4.sh
@@ -38,20 +38,19 @@ D=$diskimage
trap "rm -f $D" 0
dd if=/dev/zero of=$D bs=1m count=1k status=none || exit 1
-mount | grep "$mntpoint" | grep md${mdstart}$part > /dev/null && umount \
+mount | grep "$mntpoint" | grep md$mdstart > /dev/null && umount \
$mntpoint
mdconfig -l | grep md$mdstart > /dev/null && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-echo "/dev/md${mdstart}$part $mntpoint ufs rw,userquota 2 2" >> \
+newfs $newfs_flags md$mdstart > /dev/null
+echo "/dev/md$mdstart $mntpoint ufs rw,userquota 2 2" >> \
/etc/fstab
mount $mntpoint
edquota -u -f $mntpoint -e ${mntpoint}:850000:900000:130000:140000 root \
> /dev/null 2>&1
quotaon $mntpoint
-sed -i -e "/md${mdstart}$part/d" /etc/fstab # clean up before any panics
+sed -i -e "/md$mdstart/d" /etc/fstab # clean up before any panics
export RUNDIR=$mntpoint/stressX
../testcases/rw/rw -t 2m -i 200 -h -n 2>/dev/null &
sleep 60
diff --git a/tools/test/stress2/misc/quota5.sh b/tools/test/stress2/misc/quota5.sh
index 050ea4a822d9..ee69dac4be01 100755
--- a/tools/test/stress2/misc/quota5.sh
+++ b/tools/test/stress2/misc/quota5.sh
@@ -39,6 +39,6 @@ edquota -g -f /tmp -e /tmp:1500000:1400000:200000:180000 $testuser
quotaon /tmp
su $testuser -c "export runRUNTIME=60m; cd ../testcases/mkdir; \
- ./mkdir -t 30m -i 200 -v -v"
+ ./mkdir -t 10m -i 200 -v -v"
quotaoff /tmp
diff --git a/tools/test/stress2/misc/quota6.sh b/tools/test/stress2/misc/quota6.sh
index 9cb3f5187f65..05a839adb395 100755
--- a/tools/test/stress2/misc/quota6.sh
+++ b/tools/test/stress2/misc/quota6.sh
@@ -36,14 +36,13 @@
D=$diskimage
truncate -s 250M $D
-mount | grep $mntpoint | grep -q md${mdstart}$part && umount $mntpoint
+mount | grep $mntpoint | grep -q md$mdstart && umount $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
export PATH_FSTAB=/tmp/fstab
-echo "/dev/md${mdstart}$part $mntpoint ufs rw,userquota 2 2" > \
+echo "/dev/md$mdstart $mntpoint ufs rw,userquota 2 2" > \
$PATH_FSTAB
mount $mntpoint
edquota -u -f $mntpoint -e $mntpoint:850000:900000:130000:140000 root > \
diff --git a/tools/test/stress2/misc/quota7.sh b/tools/test/stress2/misc/quota7.sh
index f098fceb0939..fa448e1f241d 100755
--- a/tools/test/stress2/misc/quota7.sh
+++ b/tools/test/stress2/misc/quota7.sh
@@ -42,10 +42,9 @@ mount | grep $mntpoint | grep -q md$mdstart && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
export PATH_FSTAB=/tmp/fstab
-echo "/dev/md${mdstart}$part $mntpoint ufs rw,userquota 2 2" > $PATH_FSTAB
+echo "/dev/md$mdstart $mntpoint ufs rw,userquota 2 2" > $PATH_FSTAB
mount $mntpoint
set `df -ik $mntpoint | tail -1 | awk '{print $4,$7}'`
export KBLOCKS=$(($1 / 21))
@@ -67,7 +66,7 @@ for i in `jot 20`; do
mksnap_ffs $mntpoint $mntpoint/.snap/snap$i
sleep 1
done
-i=$(($(date '+%S') % 20 + 1))
+i=$(($(date '+%s') % 20 + 1))
echo "rm -f $mntpoint/.snap/snap$i"
rm -f $mntpoint/.snap/snap$i
wait
diff --git a/tools/test/stress2/misc/quota8.sh b/tools/test/stress2/misc/quota8.sh
index a11418aba5d9..b5c8a367d88c 100755
--- a/tools/test/stress2/misc/quota8.sh
+++ b/tools/test/stress2/misc/quota8.sh
@@ -47,9 +47,8 @@ mount | grep "$mntpoint" | grep -q md$mdstart && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-echo "/dev/md${mdstart}$part $mntpoint ufs rw,userquota 2 2" >> \
+newfs $newfs_flags md$mdstart > /dev/null
+echo "/dev/md$mdstart $mntpoint ufs rw,userquota 2 2" >> \
/etc/fstab
mount $mntpoint
set `df -ik $mntpoint | tail -1 | awk '{print $4,$7}'`
@@ -63,7 +62,7 @@ export QI=$((INODES / 2))
edquota -u -f $mntpoint -e ${mntpoint}:$((QK - 50)):$QK:$((QI - 50 )):$QI \
$testuser
quotaon $mntpoint
-sed -i -e "/md${mdstart}$part/d" /etc/fstab
+sed -i -e "/md$mdstart/d" /etc/fstab
export RUNDIR=$mntpoint/stressX
mkdir $mntpoint/stressX
chmod 777 $mntpoint/stressX
@@ -75,7 +74,7 @@ for i in `jot 20`; do
sleep 1
done
# Remove random snapshot file
-i=$((`date +%S` % 20 + 1))
+i=$((`date +%s` % 20 + 1))
echo "rm -f $mntpoint/.snap/snap$i"
rm -f $mntpoint/.snap/snap$i
wait
diff --git a/tools/test/stress2/misc/quota9.sh b/tools/test/stress2/misc/quota9.sh
index 01681bce8a01..1baf4b7b0267 100755
--- a/tools/test/stress2/misc/quota9.sh
+++ b/tools/test/stress2/misc/quota9.sh
@@ -54,10 +54,9 @@ mount | grep "$mntpoint" | grep -q md$mdstart &&
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
export PATH_FSTAB=/tmp/fstab
-echo "/dev/md${mdstart}$part $mntpoint ufs rw,userquota 2 2" \
+echo "/dev/md$mdstart $mntpoint ufs rw,userquota 2 2" \
> $PATH_FSTAB
mount $mntpoint
mkdir $mntpoint/stressX
diff --git a/tools/test/stress2/misc/r335171.sh b/tools/test/stress2/misc/r335171.sh
index 2d2e9ad72fee..09a11f304198 100755
--- a/tools/test/stress2/misc/r335171.sh
+++ b/tools/test/stress2/misc/r335171.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/radix.sh b/tools/test/stress2/misc/radix.sh
index 9107f528deb9..b102c09aca92 100755
--- a/tools/test/stress2/misc/radix.sh
+++ b/tools/test/stress2/misc/radix.sh
@@ -46,13 +46,15 @@ mycc -o radix -Wall -Wextra radix.c || exit 1
rm -f radix.c
cd $odir
-set -e
+set -u
+trap "rm -f rendezvous" EXIT INT
parallel=1
usermem=`sysctl hw.usermem | sed 's/.* //'`
pagesize=`pagesize`
start=`date +%s`
while true; do
- /tmp/radix $parallel > $log; s=$?
+ timeout 20m /tmp/radix $parallel > $log; s=$?
+ [ $s -eq 124 ] && { echo "Timed out"; break; }
[ $s -ne 0 ] && cat $log
used=`awk '{print $4}' < $log`
[ -z "$used" ] && break
@@ -61,7 +63,7 @@ while true; do
[ $parallel -eq 1 ] &&
parallel=$((usermem / pagesize / used))
parallel=$((parallel + 1))
- echo "`date +%T` parallel=$parallel" # XXX
+ [ $parallel -gt 10 ] && parallel=10
done
cat /tmp/radix.log
diff --git a/tools/test/stress2/misc/random.sh b/tools/test/stress2/misc/random.sh
index 04a0075d0c2c..100d9d9b88d0 100755
--- a/tools/test/stress2/misc/random.sh
+++ b/tools/test/stress2/misc/random.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/rdgsbase.sh b/tools/test/stress2/misc/rdgsbase.sh
index 66a44592d419..3c5597e3f9c2 100755
--- a/tools/test/stress2/misc/rdgsbase.sh
+++ b/tools/test/stress2/misc/rdgsbase.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2017 Konstantin Belousov <kib@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/readdir.sh b/tools/test/stress2/misc/readdir.sh
index 16523982d859..8616a8a40206 100755
--- a/tools/test/stress2/misc/readdir.sh
+++ b/tools/test/stress2/misc/readdir.sh
@@ -71,9 +71,8 @@ if ping -c 2 `echo $nfs_export | sed 's/:.*//'` > /dev/null 2>&1; then
fi
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
cp -a /usr/include $mntpoint
echo "Testing UFS"
/tmp/readdir $mntpoint
@@ -81,9 +80,8 @@ umount $mntpoint
mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
cp -a /usr/include $mntpoint
echo "Testing FFS"
/tmp/readdir $mntpoint
diff --git a/tools/test/stress2/misc/reaper.sh b/tools/test/stress2/misc/reaper.sh
new file mode 100755
index 000000000000..5ad19a55d60b
--- /dev/null
+++ b/tools/test/stress2/misc/reaper.sh
@@ -0,0 +1,108 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Demonstrate lingering child process after a timeout(1) timeout
+# Test scenario suggestions by kib
+
+# Fixed by: 709783373e57 - main - Fix another race between fork(2) and
+# PROC_REAP_KILL subtree
+
+eval prog=reaper.$$
+cat > /tmp/$prog.c <<EOF
+#include <sys/wait.h>
+#include <err.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define MAXP 10000
+
+int
+main(void)
+{
+ pid_t pids[MAXP];
+ int i, parallel;
+ char *cmdline[] = { "SLP", "86400", NULL };
+
+ for (;;) {
+ parallel = arc4random() % MAXP + 1;
+ for (i = 0; i < parallel; i++) {
+ if ((pids[i] = fork()) == 0) {
+ setproctitle("child");
+ if ((arc4random() % 100) < 10) {
+ if (execve(cmdline[0], cmdline,
+ NULL) == -1)
+ err(1, "execve");
+ } else {
+ for (;;)
+ pause();
+ }
+ _exit(0); /* never reached */
+ }
+ if (pids[i] == -1)
+ err(1, "fork()");
+ }
+
+ usleep(arc4random() % 500);
+
+ for (i = 0; i < parallel; i++) {
+ if (kill(pids[i], SIGINT) == -1)
+ err(1, "kill(%d)", pids[i]);
+ if (waitpid(pids[i], NULL, 0) != pids[i])
+ err(1, "waitpid(%d)", pids[i]);
+ }
+ }
+}
+EOF
+sed -i '' "s#SLP#/tmp/$prog.sleep#" /tmp/$prog.c
+cc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c || exit 1
+rm /tmp/$prog.c
+
+cp /bin/sleep /tmp/$prog.sleep
+n=1
+start=`date +%s`
+while true; do
+ timeout 2s /tmp/$prog
+ for i in `jot 50`; do
+ pgrep -q $prog || break
+ sleep .5
+ done
+ if pgrep -q $prog; then
+ e=$((`date +%s` - start))
+ echo "Failed in loop #$n after $e seconds."
+ pgrep "$prog|timeout" | xargs ps -lp
+ pkill $prog
+ rm -f /tmp/$prog /tmp/$prog.sleep
+ exit 1
+ fi
+ [ $((`date +%s` - start)) -ge 600 ] && break
+ n=$((n + 1))
+done
+rm /tmp/$prog /tmp/$prog.sleep
+exit 0
diff --git a/tools/test/stress2/misc/reaper2.sh b/tools/test/stress2/misc/reaper2.sh
new file mode 100755
index 000000000000..ee9cf927f1d9
--- /dev/null
+++ b/tools/test/stress2/misc/reaper2.sh
@@ -0,0 +1,131 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# procctl(2) threaded test
+
+# panic: exiting process is stopped" seen:
+# https://people.freebsd.org/~pho/stress/log/log0285.txt
+
+prog=`basename ${0%.sh}`
+cat > /tmp/$prog.c <<EOF
+#include <sys/param.h>
+#include <sys/mman.h>
+#include <sys/procctl.h>
+
+#include <err.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <unistd.h>
+
+static volatile u_int *share;
+
+#define PARALLEL 25
+#define RUNTIME 120
+
+static void *
+tr(void *arg __unused)
+{
+ for (;;)
+ pause();
+
+ return (NULL);
+}
+
+static void
+test(void) {
+ pthread_t thr;
+ struct procctl_reaper_kill killemall;
+ pid_t pid;
+ time_t start;
+ int data[20], debug, e, n, m;
+
+ debug = 0; /* set to 1 for debug output */
+ n = m = 0;
+ if (procctl(P_PID, getpid(), PROC_REAP_ACQUIRE, NULL) == -1)
+ err(EXIT_FAILURE, "Fail to acquire the reaper");
+ start = time(NULL);
+ while (time(NULL) - start < RUNTIME) {
+ m++;
+ share[0] = 0;
+ if ((pid = fork()) == 0) {
+ e = pthread_create(&thr, NULL, tr, NULL);
+ if (e != 0)
+ errc(1, e, "pthread_create");
+ share[0] = 1;
+ setproctitle("child");
+ usleep(arc4random() % 200);
+ _exit(0);
+ }
+ arc4random_buf(data, sizeof(data));
+ while (share[0] == 0)
+ usleep(10);
+ killemall.rk_sig = SIGTERM;
+ killemall.rk_flags = 0;
+ if (procctl(P_PID, getpid(), PROC_REAP_KILL,
+ &killemall) == 0)
+ n++;
+ if (waitpid(pid, NULL, 0) != pid)
+ err(1, "waitpid()");
+ }
+ if (debug == 1)
+ fprintf(stderr, "n = %d out of %d\n", n, m);
+ _exit(0);
+}
+
+int
+main(void) {
+ pid_t pids[PARALLEL];
+ size_t len;
+ int i;
+
+ len = PAGE_SIZE;
+ if ((share = mmap(NULL, len, PROT_READ | PROT_WRITE,
+ MAP_ANON | MAP_SHARED, -1, 0)) == MAP_FAILED)
+ err(1, "mmap");
+ for (i = 0; i < PARALLEL; i++) {
+ if ((pids[i] = fork()) == 0)
+ test();
+ }
+ for (i = 0; i < PARALLEL; i++)
+ if (waitpid(pids[i], NULL, 0) != pids[i])
+ err(1, "waitpid()");
+}
+EOF
+cc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c -lpthread || exit 1
+rm /tmp/$prog.c
+
+here=`pwd`
+cd /tmp
+./$prog; s=$?
+cd $here
+
+rm /tmp/$prog
+exit $s
diff --git a/tools/test/stress2/misc/reaper3.sh b/tools/test/stress2/misc/reaper3.sh
new file mode 100755
index 000000000000..59012d2c45ca
--- /dev/null
+++ b/tools/test/stress2/misc/reaper3.sh
@@ -0,0 +1,154 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# procctl(2) fuzz test
+
+prog=`basename ${0%.sh}`
+cat > /tmp/$prog.c <<EOF
+#include <sys/param.h>
+#include <sys/mman.h>
+#include <sys/procctl.h>
+
+#include <err.h>
+#include <pthread.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <unistd.h>
+
+static volatile u_int *share;
+
+#define PARALLEL 25
+#define RUNTIME 120
+
+static long
+random_long(long mi, long ma)
+{
+ return (arc4random() % (ma - mi + 1) + mi);
+}
+
+static void
+flip(void *ap, size_t len)
+{
+ unsigned char *cp;
+ int byte;
+ unsigned char bit, buf, mask;
+
+ cp = (unsigned char *)ap;
+ byte = random_long(0, len);
+ bit = random_long(0,7);
+ mask = ~(1 << bit);
+ buf = cp[byte];
+ buf = (buf & mask) | (~buf & ~mask);
+ cp[byte] = buf;
+}
+
+static void *
+tr(void *arg __unused)
+{
+ for (;;)
+ pause();
+
+ return (NULL);
+}
+
+static void
+test(void) {
+ pthread_t thr;
+ struct procctl_reaper_kill killemall;
+ pid_t pid;
+ time_t start;
+ int data[20], debug, e, n, m;
+
+ debug = 0; /* set to 1 for debug output */
+ n = m = 0;
+ if (procctl(P_PID, getpid(), PROC_REAP_ACQUIRE, NULL) == -1)
+ err(EXIT_FAILURE, "Fail to acquire the reaper");
+ start = time(NULL);
+ while (time(NULL) - start < RUNTIME) {
+ m++;
+ share[0] = 0;
+ if ((pid = fork()) == 0) {
+ e = pthread_create(&thr, NULL, tr, NULL);
+ if (e != 0)
+ errc(1, e, "pthread_create");
+ share[0] = 1;
+ setproctitle("child");
+ usleep(arc4random() % 200);
+ if (arc4random() % 100 < 2)
+ raise(SIGSEGV);
+ _exit(0);
+ }
+ arc4random_buf(data, sizeof(data));
+ while (share[0] == 0)
+ usleep(10);
+ killemall.rk_sig = SIGTERM;
+ killemall.rk_flags = 0;
+ flip(&killemall, sizeof(killemall));
+ if (procctl(P_PID, getpid(), PROC_REAP_KILL,
+ &killemall) == 0)
+ n++;
+ if (waitpid(pid, NULL, 0) != pid)
+ err(1, "waitpid()");
+ }
+ if (debug == 1)
+ fprintf(stderr, "n = %d out of %d\n", n, m);
+ _exit(0);
+}
+
+int
+main(void) {
+ pid_t pids[PARALLEL];
+ size_t len;
+ int i;
+
+ len = PAGE_SIZE;
+ if ((share = mmap(NULL, len, PROT_READ | PROT_WRITE,
+ MAP_ANON | MAP_SHARED, -1, 0)) == MAP_FAILED)
+ err(1, "mmap");
+ for (i = 0; i < PARALLEL; i++) {
+ if ((pids[i] = fork()) == 0)
+ test();
+ }
+ for (i = 0; i < PARALLEL; i++)
+ if (waitpid(pids[i], NULL, 0) != pids[i])
+ err(1, "waitpid()");
+}
+EOF
+cc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c -lpthread || exit 1
+rm /tmp/$prog.c
+
+here=`pwd`
+cd /tmp
+./$prog; s=$?
+cd $here
+
+rm -f /tmp/$prog /tmp/$prog.core
+exit $s
diff --git a/tools/test/stress2/misc/reaper4.sh b/tools/test/stress2/misc/reaper4.sh
new file mode 100755
index 000000000000..0fdb3f75ccff
--- /dev/null
+++ b/tools/test/stress2/misc/reaper4.sh
@@ -0,0 +1,153 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# procctl(2) fuzz test
+
+prog=`basename ${0%.sh}`
+cat > /tmp/$prog.c <<EOF
+#include <sys/param.h>
+#include <sys/mman.h>
+#include <sys/procctl.h>
+
+#include <err.h>
+#include <pthread.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <unistd.h>
+
+static volatile u_int *share;
+
+#define PARALLEL 25
+#define RUNTIME 120
+
+static long
+random_long(long mi, long ma)
+{
+ return (arc4random() % (ma - mi + 1) + mi);
+}
+
+static void
+flip(void *ap, size_t len)
+{
+ unsigned char *cp;
+ int byte;
+ unsigned char bit, buf, mask;
+
+ cp = (unsigned char *)ap;
+ byte = random_long(0, len);
+ bit = random_long(0,7);
+ mask = ~(1 << bit);
+ buf = cp[byte];
+ buf = (buf & mask) | (~buf & ~mask);
+ cp[byte] = buf;
+}
+
+static void *
+tr(void *arg __unused)
+{
+ usleep(arc4random() % 400);
+
+ return (NULL);
+}
+
+static void
+test(void) {
+ pthread_t thr;
+ struct procctl_reaper_kill killemall;
+ pid_t pid;
+ time_t start;
+ int data[20], debug, e, n, m;
+
+ debug = 0; /* set to 1 for debug output */
+ n = m = 0;
+ if (procctl(P_PID, getpid(), PROC_REAP_ACQUIRE, NULL) == -1)
+ err(EXIT_FAILURE, "Fail to acquire the reaper");
+ start = time(NULL);
+ while (time(NULL) - start < RUNTIME) {
+ m++;
+ share[0] = 0;
+ if ((pid = fork()) == 0) {
+ e = pthread_create(&thr, NULL, tr, NULL);
+ if (e != 0)
+ errc(1, e, "pthread_create");
+ share[0] = 1;
+ setproctitle("child");
+ usleep(arc4random() % 200);
+ if (arc4random() % 100 < 2)
+ raise(SIGSEGV);
+ _exit(0);
+ }
+ arc4random_buf(data, sizeof(data));
+ while (share[0] == 0)
+ usleep(10);
+ killemall.rk_sig = SIGTERM;
+ killemall.rk_flags = 0;
+ flip(&killemall, sizeof(killemall));
+ if (procctl(P_PID, getpid(), PROC_REAP_KILL,
+ &killemall) == 0)
+ n++;
+ if (waitpid(pid, NULL, 0) != pid)
+ err(1, "waitpid()");
+ }
+ if (debug == 1)
+ fprintf(stderr, "n = %d out of %d\n", n, m);
+ _exit(0);
+}
+
+int
+main(void) {
+ pid_t pids[PARALLEL];
+ size_t len;
+ int i;
+
+ len = PAGE_SIZE;
+ if ((share = mmap(NULL, len, PROT_READ | PROT_WRITE,
+ MAP_ANON | MAP_SHARED, -1, 0)) == MAP_FAILED)
+ err(1, "mmap");
+ for (i = 0; i < PARALLEL; i++) {
+ if ((pids[i] = fork()) == 0)
+ test();
+ }
+ for (i = 0; i < PARALLEL; i++)
+ if (waitpid(pids[i], NULL, 0) != pids[i])
+ err(1, "waitpid()");
+}
+EOF
+cc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c -lpthread || exit 1
+rm /tmp/$prog.c
+
+here=`pwd`
+cd /tmp
+./$prog; s=$?
+cd $here
+
+rm -f /tmp/$prog /tmp/$prog.core
+exit $s
diff --git a/tools/test/stress2/misc/vmstat2.sh b/tools/test/stress2/misc/reaper5.sh
index db3cb1a697e2..944475479e2c 100755
--- a/tools/test/stress2/misc/vmstat2.sh
+++ b/tools/test/stress2/misc/reaper5.sh
@@ -1,9 +1,9 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
-# Copyright (c) 2019 Dell EMC Isilon
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
@@ -27,15 +27,14 @@
# SUCH DAMAGE.
#
-# "0xFFFFFFFFFFFFFFFF in vmstat output" seen.
+# "panic: Assertion (t->parent->p_treeflag & P_TREE_REAPER) != 0 failed at
+# ../../../kern/kern_procctl.c:373" seen in WiP kernel code
-(cd ../testcases/swap; ./swap -t 2m -i 20 -h -l 100 &)
-sleep .5
-s=0
-while pgrep -q swap; do
- vmstat -z | awk '{if (length($4) > 11) { print $0; exit 1}}' ||
- { pkill swap; s=1; }
- sleep 2
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 120 ]; do
+ for i in `jot 100`; do
+ timeout 2s sh -c "timeout 2s sleep 60" &
+ done
+ wait
done
-wait
-exit $s
+exit 0
diff --git a/tools/test/stress2/misc/recursiveflushes.sh b/tools/test/stress2/misc/recursiveflushes.sh
index 1da843a2f1d1..7e6e8a7236a6 100755
--- a/tools/test/stress2/misc/recursiveflushes.sh
+++ b/tools/test/stress2/misc/recursiveflushes.sh
@@ -42,9 +42,8 @@ snap() {
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 4g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
old=`sysctl vfs.recursiveflushes | awk '{print $NF}'`
cd $mntpoint
diff --git a/tools/test/stress2/misc/rename10.sh b/tools/test/stress2/misc/rename10.sh
index 5cbf39f3d3d2..8a76ba4ed05b 100755
--- a/tools/test/stress2/misc/rename10.sh
+++ b/tools/test/stress2/misc/rename10.sh
@@ -45,9 +45,8 @@ mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 4g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
avail=`df -k $mntpoint | tail -1 | awk '{print $4}'`
cd $mntpoint
@@ -72,7 +71,7 @@ while mount | grep "on $mntpoint " | grep -q /dev/md; do
[ $n -gt 5 ] && { umount -f $mntpoint; break; }
done
-checkfs /dev/md${mdstart}$part || s=$?
+checkfs /dev/md$mdstart || s=$?
rm -f /tmp/rename10
mdconfig -d -u $mdstart
exit $s
diff --git a/tools/test/stress2/misc/rename11.sh b/tools/test/stress2/misc/rename11.sh
index 19aaa16f92ea..bae0c31c376f 100755
--- a/tools/test/stress2/misc/rename11.sh
+++ b/tools/test/stress2/misc/rename11.sh
@@ -42,12 +42,11 @@ mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
[ $# -eq 1 ] && newfs_flags=$1 # Problem only seen with SU
-echo newfs $newfs_flags md${mdstart}$part
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+echo newfs $newfs_flags md$mdstart
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
mkdir $mntpoint/dir
(
@@ -59,7 +58,7 @@ while mount | grep "on $mntpoint " | grep -q /dev/md; do
umount $mntpoint || sleep 1
done
-checkfs /dev/md${mdstart}$part; s=$?
+checkfs /dev/md$mdstart; s=$?
mdconfig -d -u $mdstart
rm -rf /tmp/rename11
exit $s
diff --git a/tools/test/stress2/misc/rename12.sh b/tools/test/stress2/misc/rename12.sh
index 3000e59b70d3..0f15c7e543d3 100755
--- a/tools/test/stress2/misc/rename12.sh
+++ b/tools/test/stress2/misc/rename12.sh
@@ -45,9 +45,8 @@ mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 4g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
inodes=`df -i $mntpoint | tail -1 | awk '{print $7}'`
loops=4
@@ -72,7 +71,7 @@ while mount | grep "on $mntpoint " | grep -q /dev/md; do
umount $mntpoint || sleep 1
done
-checkfs /dev/md${mdstart}$part; s=$?
+checkfs /dev/md$mdstart; s=$?
mdconfig -d -u $mdstart
rm -rf /tmp/rename12
exit $s
diff --git a/tools/test/stress2/misc/rename13.sh b/tools/test/stress2/misc/rename13.sh
index 9234d4454751..7184c82cbf78 100755
--- a/tools/test/stress2/misc/rename13.sh
+++ b/tools/test/stress2/misc/rename13.sh
@@ -41,9 +41,8 @@ mount | grep -q "on $mntpoint " && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 512m -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
s=0
to=/tmp/rename13.dir
diff --git a/tools/test/stress2/misc/rename14.sh b/tools/test/stress2/misc/rename14.sh
index 83612a2632df..cf7f5f6d8148 100755
--- a/tools/test/stress2/misc/rename14.sh
+++ b/tools/test/stress2/misc/rename14.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
@@ -33,6 +33,9 @@
# Based on a syzkaller scenario reported by tuexen@freebsd.org
+# "panic: journal_jremref: Lost inodedep":
+# https://people.freebsd.org/~pho/stress/log/log0279.txt
+
. ../default.cfg
[ `id -u` -ne 0 ] && echo "Must be root!" && exit 1
diff --git a/tools/test/stress2/misc/rename15.sh b/tools/test/stress2/misc/rename15.sh
index aa884e045010..0831343101e5 100755
--- a/tools/test/stress2/misc/rename15.sh
+++ b/tools/test/stress2/misc/rename15.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
diff --git a/tools/test/stress2/misc/rename5.sh b/tools/test/stress2/misc/rename5.sh
index 89779b79ec32..9a83bf85e2c0 100755
--- a/tools/test/stress2/misc/rename5.sh
+++ b/tools/test/stress2/misc/rename5.sh
@@ -41,10 +41,9 @@ mount | grep -q "$mntpoint" && umount $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
here=`pwd`
cd /tmp
@@ -59,11 +58,11 @@ cd $mntpoint
cd $here
rm -f /tmp/rename5
-while mount | grep -q md${mdstart}$part; do
+while mount | grep -q md$mdstart; do
umount $mntpoint || sleep 1
done
-checkfs /dev/md${mdstart}$part; s=$?
+checkfs /dev/md$mdstart; s=$?
mdconfig -d -u $mdstart
exit $s
diff --git a/tools/test/stress2/misc/rename6.sh b/tools/test/stress2/misc/rename6.sh
index 6c27c5601d2a..b08a0851266e 100755
--- a/tools/test/stress2/misc/rename6.sh
+++ b/tools/test/stress2/misc/rename6.sh
@@ -44,14 +44,13 @@ cd $here
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
su $testuser -c "cd $mntpoint; /tmp/rename6"
-while mount | grep -q md${mdstart}$part; do
+while mount | grep -q md$mdstart; do
umount $mntpoint || sleep 1
done
mdconfig -d -u $mdstart
diff --git a/tools/test/stress2/misc/rename7.sh b/tools/test/stress2/misc/rename7.sh
index 89edcd17e827..9f6954916411 100755
--- a/tools/test/stress2/misc/rename7.sh
+++ b/tools/test/stress2/misc/rename7.sh
@@ -46,18 +46,17 @@ cd $here
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
su $testuser -c "cd $mntpoint; /tmp/rename7 || echo FAIL"
for i in `jot 10`; do
- mount | grep -q md${mdstart}$part && \
+ mount | grep -q md$mdstart && \
umount $mntpoint && mdconfig -d -u $mdstart && break
done
-if mount | grep -q md${mdstart}$part; then
+if mount | grep -q md$mdstart; then
echo "Test failed"
exit 1
fi
diff --git a/tools/test/stress2/misc/rename8.sh b/tools/test/stress2/misc/rename8.sh
index e0019cb353fa..990b8e96c941 100755
--- a/tools/test/stress2/misc/rename8.sh
+++ b/tools/test/stress2/misc/rename8.sh
@@ -44,20 +44,19 @@ cd $here
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
su $testuser -c "cd $mntpoint; mkdir r; /tmp/rename8 r"
ls -li $mntpoint/r | egrep -v "^total"
for i in `jot 10`; do
- mount | grep -q md${mdstart}$part && \
+ mount | grep -q md$mdstart && \
umount $mntpoint && mdconfig -d -u $mdstart && break
sleep 1
done
-if mount | grep -q md${mdstart}$part; then
+if mount | grep -q md$mdstart; then
fuser $mntpoint
echo "umount $mntpoint failed"
exit 1
diff --git a/tools/test/stress2/misc/rename9.sh b/tools/test/stress2/misc/rename9.sh
index e169c64af5ea..67f5de37b70f 100755
--- a/tools/test/stress2/misc/rename9.sh
+++ b/tools/test/stress2/misc/rename9.sh
@@ -42,9 +42,8 @@ cd $here
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
rm -rf $mntpoint/.snap
chmod 777 $mntpoint
@@ -54,7 +53,7 @@ kill $! > /dev/null 2>&1
wait
ls -ilR $mntpoint | egrep -v "^total "
-while mount | grep -q md${mdstart}$part; do
+while mount | grep -q md$mdstart; do
umount $mntpoint || sleep 1
done
mdconfig -d -u $mdstart
diff --git a/tools/test/stress2/misc/rot.sh b/tools/test/stress2/misc/rot.sh
index b658f35aad1b..3254562fad13 100755
--- a/tools/test/stress2/misc/rot.sh
+++ b/tools/test/stress2/misc/rot.sh
@@ -44,11 +44,10 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
(cd $mntpoint; /tmp/rot)
diff --git a/tools/test/stress2/misc/routetbl.sh b/tools/test/stress2/misc/routetbl.sh
index 0a2b936f15e4..df4fd64409eb 100755
--- a/tools/test/stress2/misc/routetbl.sh
+++ b/tools/test/stress2/misc/routetbl.sh
@@ -37,14 +37,13 @@ pgrep -q mountd || exit 0
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 128m -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
routetbl=`vmstat -m | grep routetbl | awk '{print $2}'`
s=0
start=`date +%s`
while [ $((`date +%s` - start)) -lt 60 ]; do
- mount /dev/md${mdstart}$part $mntpoint &&
+ mount /dev/md$mdstart $mntpoint &&
umount $mntpoint
done
routetbl=$((`vmstat -m | grep routetbl | awk '{print $2}'` - routetbl))
diff --git a/tools/test/stress2/misc/rw.sh b/tools/test/stress2/misc/rw.sh
index 2cba9587c925..3f7f83df49db 100755
--- a/tools/test/stress2/misc/rw.sh
+++ b/tools/test/stress2/misc/rw.sh
@@ -40,11 +40,10 @@ mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=10m
diff --git a/tools/test/stress2/misc/sched.sh b/tools/test/stress2/misc/sched.sh
index f91055b3c289..1a1db70eb38a 100755
--- a/tools/test/stress2/misc/sched.sh
+++ b/tools/test/stress2/misc/sched.sh
@@ -43,9 +43,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
cpus=`sysctl hw.ncpu | sed 's/.*: //'`
diff --git a/tools/test/stress2/misc/seekhole.sh b/tools/test/stress2/misc/seekhole.sh
new file mode 100755
index 000000000000..40c397b04521
--- /dev/null
+++ b/tools/test/stress2/misc/seekhole.sh
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# A SEEK_HOLE / SEEK_DATA test scenario
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+
+prog=$(basename "$0" .sh)
+exp=/tmp/$prog.exp
+here=`pwd`
+log=/tmp/$prog.log
+
+cc -o /tmp/lsholes -Wall -Wextra -O2 $here/../tools/lsholes.c | exit 1
+cat > $exp <<EXP
+Min hole size is 32768, file size is 524288000.
+data #1 @ 0, size=32768)
+hole #2 @ 32768, size=32768
+data #3 @ 65536, size=32768)
+hole #4 @ 98304, size=32768
+data #5 @ 131072, size=32768)
+hole #6 @ 163840, size=524091392
+data #7 @ 524255232, size=32768)
+hole #8 @ 524288000, size=0
+EXP
+
+set -eu
+mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
+mdconfig -s 2g -u $mdstart
+newfs -U /dev/md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+set +e
+
+file=$mntpoint/file
+truncate -s 500m $file
+bs=`getconf MIN_HOLE_SIZE $file`
+printf "\001" | dd of=$file seek=$((0*bs)) bs=1 count=1 conv=notrunc status=none
+printf "\002" | dd of=$file seek=$((2*bs)) bs=1 count=1 conv=notrunc status=none
+printf "\003" | dd of=$file seek=$((4*bs)) bs=1 count=1 conv=notrunc status=none
+s1=0
+s2=0
+/tmp/lsholes $file > $log 2>&1; s1=$?
+
+cat $log
+cmp -s $exp $log || s2=1
+
+umount $mntpoint
+mdconfig -d -u $mdstart
+rm -f /tmp/lsholes $exp $log
+exit $((s1 + s2))
diff --git a/tools/test/stress2/misc/segnp.sh b/tools/test/stress2/misc/segnp.sh
index 3dbe91e04550..96f163070db7 100755
--- a/tools/test/stress2/misc/segnp.sh
+++ b/tools/test/stress2/misc/segnp.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2017 Konstantin Belousov <kib@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/segregs.sh b/tools/test/stress2/misc/segregs.sh
index 0ecc3565546a..63aa3abb5354 100755
--- a/tools/test/stress2/misc/segregs.sh
+++ b/tools/test/stress2/misc/segregs.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2017 Konstantin Belousov <kib@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/sem_post.sh b/tools/test/stress2/misc/sem_post.sh
index 2f1d7c4c004f..7fc2ffdd8778 100755
--- a/tools/test/stress2/misc/sem_post.sh
+++ b/tools/test/stress2/misc/sem_post.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/sem_timedwait.sh b/tools/test/stress2/misc/sem_timedwait.sh
index 33e5c1933f37..86c33f7e2ac3 100755
--- a/tools/test/stress2/misc/sem_timedwait.sh
+++ b/tools/test/stress2/misc/sem_timedwait.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/sem_wait.sh b/tools/test/stress2/misc/sem_wait.sh
index 6d8bc49c9199..2a4474eff4d5 100755
--- a/tools/test/stress2/misc/sem_wait.sh
+++ b/tools/test/stress2/misc/sem_wait.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/sendfile.sh b/tools/test/stress2/misc/sendfile.sh
index 408564bef0e2..2444721b955f 100755
--- a/tools/test/stress2/misc/sendfile.sh
+++ b/tools/test/stress2/misc/sendfile.sh
@@ -36,7 +36,7 @@ odir=`pwd`
cd /tmp
sed '1,/^EOF/d' < $odir/$0 > sendfile.c
-mycc -o sendfile -Wall sendfile.c -pthread
+mycc -o sendfile -Wall -O0 sendfile.c -pthread
rm -f sendfile.c
[ -d "$RUNDIR" ] || mkdir -p $RUNDIR
cd $RUNDIR
@@ -78,7 +78,7 @@ reader(void) {
int on;
socklen_t len;
struct sockaddr_in inetaddr, inetpeer;
- int n, t, *buf, fd;
+ int n, t __unused, *buf, fd;
on = 1;
if ((tcpsock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
diff --git a/tools/test/stress2/misc/sendfile10.sh b/tools/test/stress2/misc/sendfile10.sh
index 0bfc4a83da71..2e7c142b6bdf 100755
--- a/tools/test/stress2/misc/sendfile10.sh
+++ b/tools/test/stress2/misc/sendfile10.sh
@@ -44,9 +44,8 @@ cd $odir
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags -n md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags -n md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
cd $mntpoint
dd if=/dev/random of=template bs=1m count=50 status=none
@@ -111,7 +110,7 @@ mess(void)
static void
reader(void) {
- off_t t;
+ off_t t __unused;
int tcpsock, msgsock;
int on;
socklen_t len;
diff --git a/tools/test/stress2/misc/sendfile11.sh b/tools/test/stress2/misc/sendfile11.sh
index 439416f063f0..995f9abe358a 100755
--- a/tools/test/stress2/misc/sendfile11.sh
+++ b/tools/test/stress2/misc/sendfile11.sh
@@ -37,7 +37,7 @@
odir=`pwd`
cd /tmp
sed '1,/^EOF/d' < $odir/$0 > sendfile11.c
-mycc -o sendfile11 -Wall sendfile11.c -pthread || exit 1
+mycc -o sendfile11 -Wall -O0 sendfile11.c -pthread || exit 1
rm -f sendfile11.c
set -e
@@ -100,7 +100,7 @@ reader(void) {
struct sockaddr_in inetaddr, inetpeer;
socklen_t len;
int tcpsock, msgsock;
- int *buf, fd, n, on, t;
+ int *buf, fd, n, on, t __unused;
on = 1;
if ((tcpsock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
diff --git a/tools/test/stress2/misc/sendfile12.sh b/tools/test/stress2/misc/sendfile12.sh
index 05f30c9a292c..bf4ce0018688 100755
--- a/tools/test/stress2/misc/sendfile12.sh
+++ b/tools/test/stress2/misc/sendfile12.sh
@@ -39,7 +39,7 @@
odir=`pwd`
cd /tmp
sed '1,/^EOF/d' < $odir/$0 > sendfile12.c
-mycc -o sendfile12 -Wall sendfile12.c -pthread || exit 1
+mycc -o sendfile12 -Wall -O0 sendfile12.c -pthread || exit 1
rm -f sendfile12.c
set -e
@@ -99,7 +99,7 @@ reader(void) {
struct sockaddr_in inetaddr, inetpeer;
socklen_t len;
int tcpsock, msgsock;
- int *buf, fd, n, on, t;
+ int *buf, fd, n, on, t __unused;
on = 1;
if ((tcpsock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
diff --git a/tools/test/stress2/misc/sendfile13.sh b/tools/test/stress2/misc/sendfile13.sh
index 9a7b0ad40003..cec938ba2b2c 100755
--- a/tools/test/stress2/misc/sendfile13.sh
+++ b/tools/test/stress2/misc/sendfile13.sh
@@ -57,9 +57,8 @@ md1=$mdstart
mount | grep "on $mp1 " | grep -q /dev/md && umount -f $mp1
[ -c /dev/md$md1 ] && mdconfig -d -u $md1
mdconfig -a -t swap -s $size -u $md1
-bsdlabel -w md$md1 auto
-newfs $newfs_flags -n md${md1}$part > /dev/null 2>&1
-mount /dev/md${md1}$part $mp1
+newfs $newfs_flags -n md${md1} > /dev/null 2>&1
+mount /dev/md${md1} $mp1
md2=$((mdstart + 1))
mp2=${mntpoint}$md2
@@ -67,9 +66,8 @@ mkdir -p $mp2
mount | grep "on $mp2 " | grep -q /dev/md && umount -f $mp2
[ -c /dev/md$md2 ] && mdconfig -d -u $md2
mdconfig -a -t swap -s $size -u $md2
-bsdlabel -w md$md2 auto
-newfs $newfs_flags -n md${md2}$part > /dev/null 2>&1
-mount /dev/md${md2}$part $mp2
+newfs $newfs_flags -n md${md2} > /dev/null 2>&1
+mount /dev/md${md2} $mp2
set +e
free=`df $mp1 | tail -1 | awk '{print $4}'`
@@ -99,8 +97,8 @@ for i in `jot 6`; do
[ $i -eq 6 ] &&
{ echo FATAL; fstat -mf $mp2; exit 1; }
done
-checkfs /dev/md${md1}$part || s=1
-checkfs /dev/md${md2}$part || s=1
+checkfs /dev/md${md1} || s=1
+checkfs /dev/md${md2} || s=1
mdconfig -d -u $md1 || s=1
mdconfig -d -u $md2 || s=1
@@ -110,7 +108,7 @@ for i in `jot 6`; do
[ $i -eq 6 ] &&
{ echo FATAL; fstat -mf $mp2; exit 1; }
done
-checkfs /dev/md${md2}$part || s=1
+checkfs /dev/md${md2} || s=1
rm -rf $dir/sendfile13
exit $s
@@ -184,7 +182,7 @@ server(void)
struct sockaddr_in inetaddr, inetpeer;
socklen_t len;
int tcpsock, msgsock;
- int *buf, fd, idx, n, on, t;
+ int *buf, fd, idx, n, on, t __unused;
char ofile[128], nfile[128];
sa.sa_handler = SIG_IGN;
diff --git a/tools/test/stress2/misc/sendfile14.sh b/tools/test/stress2/misc/sendfile14.sh
index 00fc8cd01b99..bebc0b165615 100755
--- a/tools/test/stress2/misc/sendfile14.sh
+++ b/tools/test/stress2/misc/sendfile14.sh
@@ -57,9 +57,8 @@ md1=$mdstart
mount | grep "on $mp1 " | grep -q /dev/md && umount -f $mp1
[ -c /dev/md$md1 ] && mdconfig -d -u $md1
mdconfig -a -t swap -s $size -u $md1
-bsdlabel -w md$md1 auto
-newfs $newfs_flags -n md${md1}$part > /dev/null 2>&1
-mount /dev/md${md1}$part $mp1
+newfs $newfs_flags -n md${md1} > /dev/null 2>&1
+mount /dev/md${md1} $mp1
md2=$((mdstart + 1))
mp2=${mntpoint}$md2
@@ -67,9 +66,8 @@ mkdir -p $mp2
mount | grep "on $mp2 " | grep -q /dev/md && umount -f $mp2
[ -c /dev/md$md2 ] && mdconfig -d -u $md2
mdconfig -a -t swap -s $size -u $md2
-bsdlabel -w md$md2 auto
-newfs $newfs_flags -n md${md2}$part > /dev/null 2>&1
-mount /dev/md${md2}$part $mp2
+newfs $newfs_flags -n md${md2} > /dev/null 2>&1
+mount /dev/md${md2} $mp2
set +e
free=`df $mp1 | tail -1 | awk '{print $4}'`
@@ -95,8 +93,8 @@ for i in `jot 6`; do
[ $i -eq 6 ] &&
{ echo FATAL; fstat -mf $mp2; exit 1; }
done
-checkfs /dev/md${md1}$part || s=1
-checkfs /dev/md${md2}$part || s=1
+checkfs /dev/md${md1} || s=1
+checkfs /dev/md${md2} || s=1
mdconfig -d -u $md1 || s=1
mdconfig -d -u $md2 || s=1
@@ -176,7 +174,7 @@ server(void)
struct sockaddr_in inetaddr, inetpeer;
socklen_t len;
int tcpsock, msgsock;
- int *buf, fd, idx, n, on, t;
+ int *buf, fd, idx, n, on, t __unused;
char ofile[128], nfile[128];
setproctitle("%s", __func__);
diff --git a/tools/test/stress2/misc/sendfile15.sh b/tools/test/stress2/misc/sendfile15.sh
index 373c49977157..c5f46d72c280 100755
--- a/tools/test/stress2/misc/sendfile15.sh
+++ b/tools/test/stress2/misc/sendfile15.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
@@ -54,9 +54,8 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
set +e
cd $mntpoint
diff --git a/tools/test/stress2/misc/sendfile16.sh b/tools/test/stress2/misc/sendfile16.sh
index 2374bd00fd46..8b96ad5c7f74 100755
--- a/tools/test/stress2/misc/sendfile16.sh
+++ b/tools/test/stress2/misc/sendfile16.sh
@@ -45,9 +45,8 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
set +e
cd $mntpoint
diff --git a/tools/test/stress2/misc/sendfile17.sh b/tools/test/stress2/misc/sendfile17.sh
index 8580778d5ae8..3ebd992fcd8e 100755
--- a/tools/test/stress2/misc/sendfile17.sh
+++ b/tools/test/stress2/misc/sendfile17.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
@@ -47,9 +47,8 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 3g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
set +e
cd $mntpoint
diff --git a/tools/test/stress2/misc/sendfile18.sh b/tools/test/stress2/misc/sendfile18.sh
index 3b13292932f1..f8bb111e2986 100755
--- a/tools/test/stress2/misc/sendfile18.sh
+++ b/tools/test/stress2/misc/sendfile18.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Mark Johnston <markj@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/sendfile19.sh b/tools/test/stress2/misc/sendfile19.sh
index 0254a495d5cf..faf08ca87d85 100755
--- a/tools/test/stress2/misc/sendfile19.sh
+++ b/tools/test/stress2/misc/sendfile19.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/sendfile2.sh b/tools/test/stress2/misc/sendfile2.sh
index 42520c54d708..3df34b80d7d3 100755
--- a/tools/test/stress2/misc/sendfile2.sh
+++ b/tools/test/stress2/misc/sendfile2.sh
@@ -102,7 +102,7 @@ main () {
warn ("fail to connect");
flags = fcntl(s, F_GETFL);
flags |= O_NONBLOCK;
- fcntl(s, F_SETFL);
+ fcntl(s, F_SETFL, flags);
f = open("large", O_RDONLY);
if (f < 0)
diff --git a/tools/test/stress2/misc/sendfile20.sh b/tools/test/stress2/misc/sendfile20.sh
index 88c0a344a926..aefbb58eeb6c 100755
--- a/tools/test/stress2/misc/sendfile20.sh
+++ b/tools/test/stress2/misc/sendfile20.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/sendfile21.sh b/tools/test/stress2/misc/sendfile21.sh
index 4387d167dfc2..88b59c018c81 100755
--- a/tools/test/stress2/misc/sendfile21.sh
+++ b/tools/test/stress2/misc/sendfile21.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
@@ -61,7 +61,6 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
newfs $newfs_flags -n md$mdstart > /dev/null
mount /dev/md$mdstart $mntpoint
set +e
@@ -124,7 +123,7 @@ static void
test(void)
{
struct stat st;
- off_t i, j, k, rd, written, pos;
+ off_t i, j, k __unused, rd, written, pos;
pid_t pid;
int error, from, n, status, sv[2], to;
char buf[4086], *cp;
diff --git a/tools/test/stress2/misc/sendfile22.sh b/tools/test/stress2/misc/sendfile22.sh
index ea3a564e1561..a9bff35d8662 100755
--- a/tools/test/stress2/misc/sendfile22.sh
+++ b/tools/test/stress2/misc/sendfile22.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
@@ -45,7 +45,6 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
newfs_flags=""
newfs $newfs_flags -n md$mdstart > /dev/null
mount /dev/md$mdstart $mntpoint
@@ -63,6 +62,8 @@ while [ $((` date +%s` - start)) -lt 180 ]; do
umount $mntpoint 2>/dev/null # busy umount
$dir/sendfile22
s=$?
+ [ $s -ne 0 ] &&
+ pkill sendfile22
cmp -s input output || break
[ `stat -f '%z' input` -ne ` stat -f '%z' output` ] && break
n=$((n + 1))
diff --git a/tools/test/stress2/misc/sendfile23.sh b/tools/test/stress2/misc/sendfile23.sh
index c5b77a685f1c..f7079eabc5f2 100755
--- a/tools/test/stress2/misc/sendfile23.sh
+++ b/tools/test/stress2/misc/sendfile23.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
@@ -44,7 +44,6 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
newfs $newfs_flags -n md$mdstart > /dev/null
mount /dev/md$mdstart $mntpoint
set +e
diff --git a/tools/test/stress2/misc/sendfile24.sh b/tools/test/stress2/misc/sendfile24.sh
index e61a01a436c5..363008f69cb3 100755
--- a/tools/test/stress2/misc/sendfile24.sh
+++ b/tools/test/stress2/misc/sendfile24.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
@@ -104,7 +104,7 @@ reader(void) {
int on;
socklen_t len;
struct sockaddr_in inetaddr, inetpeer;
- int n, t, *buf, fd;
+ int n, *buf, fd;
on = 1;
if ((tcpsock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
@@ -131,7 +131,6 @@ reader(void) {
(struct sockaddr *)&inetpeer, &len)) < 0)
err(1, "accept(), %s:%d", __FILE__, __LINE__);
- t = 0;
if ((buf = malloc(bufsize)) == NULL)
err(1, "malloc(%d), %s:%d", bufsize, __FILE__, __LINE__);
@@ -141,7 +140,6 @@ reader(void) {
for (;;) {
if ((n = read(msgsock, buf, bufsize)) < 0)
err(1, "read(), %s:%d", __FILE__, __LINE__);
- t += n;
if (n == 0)
break;
diff --git a/tools/test/stress2/misc/sendfile25.sh b/tools/test/stress2/misc/sendfile25.sh
index dba0378d547a..ae755bf1d4df 100755
--- a/tools/test/stress2/misc/sendfile25.sh
+++ b/tools/test/stress2/misc/sendfile25.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
@@ -105,7 +105,7 @@ reader(void) {
int on;
socklen_t len;
struct sockaddr_in inetaddr, inetpeer;
- int n, t, *buf, fd;
+ int n, *buf, fd;
on = 1;
if ((tcpsock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
@@ -132,7 +132,6 @@ reader(void) {
(struct sockaddr *)&inetpeer, &len)) < 0)
err(1, "accept(), %s:%d", __FILE__, __LINE__);
- t = 0;
if ((buf = malloc(bufsize)) == NULL)
err(1, "malloc(%d), %s:%d", bufsize, __FILE__, __LINE__);
@@ -142,7 +141,6 @@ reader(void) {
for (;;) {
if ((n = read(msgsock, buf, bufsize)) < 0)
err(1, "read(), %s:%d", __FILE__, __LINE__);
- t += n;
if (n == 0)
break;
diff --git a/tools/test/stress2/misc/sendfile26.sh b/tools/test/stress2/misc/sendfile26.sh
index da9aa52d5f3c..cecf2547a182 100755
--- a/tools/test/stress2/misc/sendfile26.sh
+++ b/tools/test/stress2/misc/sendfile26.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Jean-Sébastien Pédron <dumbbell@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/sendfile3.sh b/tools/test/stress2/misc/sendfile3.sh
index f46d02d906d8..9d204255f90b 100755
--- a/tools/test/stress2/misc/sendfile3.sh
+++ b/tools/test/stress2/misc/sendfile3.sh
@@ -88,7 +88,7 @@ reader(void) {
int on;
socklen_t len;
struct sockaddr_in inetaddr, inetpeer;
- int n, t, *buf, fd;
+ int n, *buf, fd;
on = 1;
if ((tcpsock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
@@ -115,7 +115,6 @@ reader(void) {
(struct sockaddr *)&inetpeer, &len)) < 0)
err(1, "accept(), %s:%d", __FILE__, __LINE__);
- t = 0;
if ((buf = malloc(bufsize)) == NULL)
err(1, "malloc(%d), %s:%d", bufsize, __FILE__, __LINE__);
@@ -125,7 +124,6 @@ reader(void) {
for (;;) {
if ((n = read(msgsock, buf, bufsize)) < 0)
err(1, "read(), %s:%d", __FILE__, __LINE__);
- t += n;
if (n == 0) break;
if ((write(fd, buf, n)) != n)
diff --git a/tools/test/stress2/misc/sendfile5.sh b/tools/test/stress2/misc/sendfile5.sh
index 5bae03441779..c81515003a13 100755
--- a/tools/test/stress2/misc/sendfile5.sh
+++ b/tools/test/stress2/misc/sendfile5.sh
@@ -59,9 +59,8 @@ umount $mntpoint
[ $loaded ] && kldunload tmpfs.ko
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
echo "Testing FFS"
cp $diskimage $mntpoint
/tmp/sendfile5 $mntpoint/$file
diff --git a/tools/test/stress2/misc/sendfile6.sh b/tools/test/stress2/misc/sendfile6.sh
index dd130b43d401..424d5dc575e6 100755
--- a/tools/test/stress2/misc/sendfile6.sh
+++ b/tools/test/stress2/misc/sendfile6.sh
@@ -236,9 +236,8 @@ mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
dd if=/dev/random of=$mntpoint/data bs=123456 count=1 status=none
./sendfile6_server $mntpoint/data mysocket &
diff --git a/tools/test/stress2/misc/sendfile8.sh b/tools/test/stress2/misc/sendfile8.sh
index ddbcb74ffc02..84ad0bf25a07 100755
--- a/tools/test/stress2/misc/sendfile8.sh
+++ b/tools/test/stress2/misc/sendfile8.sh
@@ -44,9 +44,8 @@ cd $odir
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
cd $mntpoint
dd if=/dev/random of=in bs=1m count=50 status=none
@@ -110,7 +109,7 @@ reader(void) {
socklen_t len;
int tcpsock, msgsock;
int on;
- int n, t, *buf, fd;
+ int n, *buf, fd;
on = 1;
if ((tcpsock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
@@ -137,7 +136,6 @@ reader(void) {
(struct sockaddr *)&inetpeer, &len)) < 0)
err(1, "accept(), %s:%d", __FILE__, __LINE__);
- t = 0;
if ((buf = malloc(BUFSIZE)) == NULL)
err(1, "malloc(%d), %s:%d", BUFSIZE, __FILE__, __LINE__);
@@ -147,7 +145,6 @@ reader(void) {
for (;;) {
if ((n = read(msgsock, buf, BUFSIZE)) < 0)
err(1, "read(), %s:%d", __FILE__, __LINE__);
- t += n;
if (n == 0) break;
if ((write(fd, buf, n)) != n)
diff --git a/tools/test/stress2/misc/sendfile9.sh b/tools/test/stress2/misc/sendfile9.sh
index 989098e09321..7e091660701f 100755
--- a/tools/test/stress2/misc/sendfile9.sh
+++ b/tools/test/stress2/misc/sendfile9.sh
@@ -43,9 +43,8 @@ cd $odir
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags -n md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags -n md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
cd $mntpoint
dd if=/dev/random of=in bs=1m count=50 status=none
@@ -109,7 +108,7 @@ reader(void) {
socklen_t len;
int tcpsock, msgsock;
int on;
- int n, t, *buf, fd;
+ int n, *buf, fd;
on = 1;
if ((tcpsock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
@@ -136,7 +135,6 @@ reader(void) {
(struct sockaddr *)&inetpeer, &len)) < 0)
err(1, "accept(), %s:%d", __FILE__, __LINE__);
- t = 0;
if ((buf = malloc(BUFSIZE)) == NULL)
err(1, "malloc(%d), %s:%d", BUFSIZE, __FILE__, __LINE__);
@@ -146,7 +144,6 @@ reader(void) {
for (;;) {
if ((n = read(msgsock, buf, BUFSIZE)) < 0)
err(1, "read(), %s:%d", __FILE__, __LINE__);
- t += n;
if (n == 0) break;
if ((write(fd, buf, n)) != n)
diff --git a/tools/test/stress2/misc/setrlimit.sh b/tools/test/stress2/misc/setrlimit.sh
new file mode 100755
index 000000000000..ca7a2d7f5364
--- /dev/null
+++ b/tools/test/stress2/misc/setrlimit.sh
@@ -0,0 +1,193 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+# Test setrlimit() max file size and ftruncate()
+
+# Problem seen:
+# Testing UFS -O1
+# setrlimit: ftruncate(5413) did not fail. limit = 2791
+# Testing FFS -U
+# setrlimit: ftruncate(9956) did not fail. limit = 7880
+# Testing msdosfs
+# setrlimit: ftruncate(9033) did not fail. limit = 5884
+# Testing tmpfs
+# setrlimit: ftruncate(123) did not fail. limit = 86
+
+. ../default.cfg
+
+cat > /tmp/setrlimit.c <<EOF
+#include <sys/types.h>
+#include <sys/resource.h>
+#include <sys/stat.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+static int signals;
+
+static void
+handler(int sig __unused)
+{
+#if defined(DEBUG)
+ fprintf(stderr, "Got signal SIGXFSZ\n");
+#endif
+ signals++;
+}
+
+void
+test(int argc, char *argv[])
+{
+ struct rlimit rlim;
+ rlim_t limit, sz;
+ struct sigaction act;
+ long pos;
+ int e, expected, fd;
+ char file[] = "setrlimit.file";
+
+ if (argc != 2) {
+ fprintf(stderr, "Usage: %s <FS size>\n", argv[0]);
+ exit(1);
+ }
+ expected = signals = 0;
+ sz = atol(argv[1]);
+ arc4random_buf(&limit, sizeof(limit));
+ if (limit < 0)
+ limit = -limit;
+ limit = limit % sz + 1;
+ rlim.rlim_cur = rlim.rlim_max = limit;
+ if (setrlimit(RLIMIT_FSIZE, &rlim) == -1)
+ err(1, "setrlimit(%ld)", limit);
+
+ act.sa_handler = handler;
+ act.sa_flags = 0;
+ sigemptyset(&act.sa_mask);
+ if (sigaction(SIGXFSZ, &act, NULL) != 0)
+ err(1, "sigaction");
+
+ if ((fd = open(file, O_WRONLY | O_CREAT | O_TRUNC, DEFFILEMODE)) == -1)
+ err(1, "open(%s)", file);
+
+ e = 0;
+ arc4random_buf(&pos, sizeof(pos));
+ if (pos < 0)
+ pos = -pos;
+ pos = pos % (limit * 2);
+ if (pos > limit)
+ expected = 1;
+ if (ftruncate(fd, pos) == -1) {
+ e = errno;
+ if (pos <= limit)
+ errc(1, e, "ftruncate(%ld), limit = %ld", pos, limit);
+ } else {
+ if (pos > limit)
+ errx(1, "ftruncate(%ld) did not fail. limit = %ld", pos, limit);
+ }
+
+ if (lseek(fd, limit - 1, SEEK_SET) == -1)
+ err(1, "lseek(limit - 1)");
+ if (write(fd, "a", 1) != 1)
+ err(1, "write() at limit - 1. limit = %ld", limit);
+
+ if (write(fd, "b", 1) != -1)
+ err(1, "write() at limit. limit = %ld", limit);
+ expected++;
+
+ /* Partial write test. No signal is expected */
+ if (lseek(fd, limit - 1, SEEK_SET) == -1)
+ err(1, "lseek(limit - 1)");
+ if (write(fd, "12", 2) != 1)
+ err(1, "write() at limit - 1. limit = %ld", limit);
+
+ if (signals != expected)
+ errx(1, "Expected %d signals, got %d", expected, signals);
+
+ close(fd);
+ unlink(file);
+}
+
+int
+main(int argc, char *argv[])
+{
+ int i;
+
+ for (i = 0; i < 100; i++)
+ test(argc, argv);
+
+}
+EOF
+
+here=`pwd`
+s=0
+cc -o /tmp/setrlimit -Wall -Wextra -O0 -g /tmp/setrlimit.c || exit 1
+
+mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
+[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
+
+echo "Testing UFS -O1"
+mdconfig -t swap -s 1g -u $mdstart
+newfs -O1 /dev/md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+cd $mntpoint; /tmp/setrlimit 10000 || s=1
+cd $here
+umount $mntpoint
+mdconfig -d -u $mdstart
+
+echo "Testing FFS -U"
+mdconfig -t swap -s 1g -u $mdstart
+newfs -U /dev/md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+cd $mntpoint; /tmp/setrlimit 10000 || s=$((s + 2))
+cd $here
+umount $mntpoint
+mdconfig -d -u $mdstart
+
+echo "Testing msdosfs"
+mdconfig -t swap -s 1g -u $mdstart
+newfs_msdos -F 32 -b 8192 /dev/md$mdstart > /dev/null 2>&1
+mount -t msdosfs /dev/md$mdstart $mntpoint
+cd $mntpoint; /tmp/setrlimit 10000 || s=$((s + 4))
+cd $here
+umount $mntpoint
+mdconfig -d -u $mdstart
+
+echo "Testing tmpfs"
+mount -o size=20000 -t tmpfs dummy $mntpoint
+cd $mntpoint; /tmp/setrlimit 10000 || s=$((s + 8))
+cd $here
+umount $mntpoint
+
+rm -f /tmp/setrlimit /tmp/setrlimit.c
+exit $s
diff --git a/tools/test/stress2/misc/setrlimit2.sh b/tools/test/stress2/misc/setrlimit2.sh
new file mode 100755
index 000000000000..4eea25ef3ee4
--- /dev/null
+++ b/tools/test/stress2/misc/setrlimit2.sh
@@ -0,0 +1,118 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Demonstrate that a mapped SHARED file can be updated past LIMIT_FSIZE
+
+# Kostik wrote:
+# This one should be reproducible when you
+# - have file larger than e.g. RLIMIT_FSIZE
+# - mmaped it without closing the file descriptor
+# - dirty its pages beyond the limit
+# - then unmap
+# - then close the file descriptor.
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+
+cat > /tmp/setrlimit2.c <<EOF
+#include <sys/param.h>
+#include <sys/mman.h>
+#include <sys/resource.h>
+#include <sys/stat.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+static int signals;
+
+static void
+handler(int sig __unused)
+{
+ signals++;
+}
+
+int
+main(int argc, char *argv[])
+{
+ struct rlimit rlim;
+ struct sigaction act;
+ struct stat st;
+ size_t len;
+ int error, fd, ps;
+ char *file, *p;
+
+ if (argc != 2) {
+ fprintf(stderr, "Usage: %s <data file>\n", argv[0]);
+ exit(1);
+ }
+ act.sa_handler = handler;
+ act.sa_flags = 0;
+ sigemptyset(&act.sa_mask);
+ if (sigaction(SIGXFSZ, &act, NULL) != 0)
+ err(1, "sigaction");
+
+ file = argv[1];
+ ps = getpagesize();
+ if ((fd = open(file, O_RDWR)) == -1)
+ err(1, "open(%s)", file);
+ if ((error = fstat(fd, &st)) == -1)
+ err(1, "stat(%s)", file);
+ len = round_page(st.st_size);
+ if ((p = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0)) == MAP_FAILED)
+ err(1, "mmap");
+ rlim.rlim_cur = rlim.rlim_max = len / 2;;
+ if (setrlimit(RLIMIT_FSIZE, &rlim) == -1)
+ err(1, "setrlimit(%ld)", len / 2);
+
+ p[len / 2 + ps] = 'a';
+
+ if (munmap(p, len) == -1)
+ err(1, "unmap()");
+ close(fd);
+
+}
+EOF
+here=`pwd`
+cd /tmp
+mycc -o setrlimit2 -Wall -Wextra -O0 -g setrlimit2.c || exit 1
+data=/tmp/setrlimit2.data
+dd if=/dev/zero of=$data bs=1m count=1 status=none
+h1=`md5 < $data`
+
+./setrlimit2 $data
+
+h2=`md5 < $data`
+rm -f /tmp/setrlimit2 /tmp/setrlimit2.c
+[ $h1 = $h2 ] && exit 1 || exit 0
diff --git a/tools/test/stress2/misc/setsockopt.sh b/tools/test/stress2/misc/setsockopt.sh
index 969c7b23069b..439b1984cb3c 100755
--- a/tools/test/stress2/misc/setsockopt.sh
+++ b/tools/test/stress2/misc/setsockopt.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/setsockopt2.sh b/tools/test/stress2/misc/setsockopt2.sh
index 89f22602a11e..13cc3175cce3 100755
--- a/tools/test/stress2/misc/setsockopt2.sh
+++ b/tools/test/stress2/misc/setsockopt2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
@@ -86,6 +86,7 @@ EOF
#include <time.h>
#include <unistd.h>
+static int debug; /* set to 1 for debug output */
static volatile u_int *share;
#define PARALLEL 128
@@ -165,6 +166,8 @@ bad:
if (waitpid(pid, NULL, 0) != pid)
err(1, "waitpid(%d)", pid);
}
+ if (debug != 0 && success == 0)
+ fprintf(stderr, "No calls to connect() succeded.\n");
_exit(0);
}
@@ -204,5 +207,5 @@ main(void)
}
}
- return (0);
+ return (e);
}
diff --git a/tools/test/stress2/misc/setuid.sh b/tools/test/stress2/misc/setuid.sh
index 770c20366f7d..642b4f3111fc 100755
--- a/tools/test/stress2/misc/setuid.sh
+++ b/tools/test/stress2/misc/setuid.sh
@@ -48,9 +48,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
mkdir $mntpoint/root
diff --git a/tools/test/stress2/misc/shm2.sh b/tools/test/stress2/misc/shm2.sh
index e1b229030b4a..e45f9f45ac4f 100755
--- a/tools/test/stress2/misc/shm2.sh
+++ b/tools/test/stress2/misc/shm2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
@@ -147,11 +147,10 @@ int
main(void)
{
pid_t pids[INCARNATIONS];
- int i, verbose;
+ int i;
runtime = 120; /* 2 minutes */
utime = 1000; /* 0.001 sec */
- verbose = 0;
size = 512 * 1024 * 1024;
setup();
diff --git a/tools/test/stress2/misc/shm3.sh b/tools/test/stress2/misc/shm3.sh
new file mode 100755
index 000000000000..ed0a57b348ba
--- /dev/null
+++ b/tools/test/stress2/misc/shm3.sh
@@ -0,0 +1,74 @@
+#!/bin/sh
+
+# Test scenario for Bug 261707.
+# Based on Kostik's shm_super.sh
+# "panic: vm_page_free_prep: freeing mapped page ..." seen.
+
+# Test scenario suggestion by kib@
+
+. ../default.cfg
+
+cat > /tmp/shm3.c <<EOF
+#include <sys/param.h>
+#include <sys/mman.h>
+
+#include <err.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define M(x) ((x) * 1024 * 1024)
+#define SZ M(256)
+
+int
+main(void)
+{
+ off_t cnt;
+ void *ptr;
+ int error, shmfd;
+ char buf[128];
+
+ shmfd = shm_open(SHM_ANON, O_CREAT | O_RDWR, 0600);
+ if (shmfd == -1)
+ err(1, "shm_open");
+ error = ftruncate(shmfd, SZ);
+ if (error == -1)
+ err(1, "truncate");
+ memset(buf, 0, sizeof(buf));
+ for (cnt = 0; cnt < SZ; cnt += sizeof(buf)) {
+ error = write(shmfd, buf, sizeof(buf));
+ if (error == -1)
+ err(1, "write");
+ else if (error != sizeof(buf))
+ errx(1, "short write %d", (int)error);
+ }
+ ptr = mmap(NULL, SZ, PROT_READ | PROT_WRITE, MAP_SHARED,
+ shmfd, 0);
+ if (ptr == MAP_FAILED)
+ err(1, "mmap");
+ for (cnt = 0; cnt < SZ; cnt += PAGE_SIZE)
+ *((char *)ptr + cnt) = 0;
+ close(shmfd);
+ sleep(30);
+}
+EOF
+mycc -o /tmp/shm3 -Wall -Wextra -O0 -g /tmp/shm3.c || exit 1
+rm /tmp/shm3.c
+
+../testcases/swap/swap -t 3m -i 50 > /dev/null &
+sleep 30
+for i in `jot 50`; do
+ /tmp/shm3 &
+done
+while pgrep -q shm3; do
+ sleep 5
+done
+while pkill swap; do
+ sleep .2
+done
+wait
+
+rm -f /tmp/shm3
+exit $s
diff --git a/tools/test/stress2/misc/shm_super.sh b/tools/test/stress2/misc/shm_super.sh
index 78f237bf789d..59d142002264 100755
--- a/tools/test/stress2/misc/shm_super.sh
+++ b/tools/test/stress2/misc/shm_super.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Konstantin Belousov <kib@FreeBSD.org>
#
@@ -82,6 +82,7 @@ rm /tmp/shm_super.c
/tmp/shm_super > /tmp/shm_super.log 2>&1
grep -wq S /tmp/shm_super.log && s=0 || { cat /tmp/shm_super.log; s=1; }
+[ $s -eq 1 ] && echo "No superpage mappings found."
rm -f /tmp/shm_super /tmp/shm_super.log
exit $s
diff --git a/tools/test/stress2/misc/sigfastblock.sh b/tools/test/stress2/misc/sigfastblock.sh
index 403dbde31553..ce655a611e6d 100755
--- a/tools/test/stress2/misc/sigfastblock.sh
+++ b/tools/test/stress2/misc/sigfastblock.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Konstantin Belousov
#
diff --git a/tools/test/stress2/misc/sigfastblock2.sh b/tools/test/stress2/misc/sigfastblock2.sh
index 8354307f6f7a..c8474333cbca 100755
--- a/tools/test/stress2/misc/sigfastblock2.sh
+++ b/tools/test/stress2/misc/sigfastblock2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 corydoras@ridiculousfish.com
#
diff --git a/tools/test/stress2/misc/signal2.sh b/tools/test/stress2/misc/signal2.sh
new file mode 100755
index 000000000000..2cb0589f1dce
--- /dev/null
+++ b/tools/test/stress2/misc/signal2.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+# Test scenario from:
+# Bug 265889 - sys.kern.basic_signal.trap_signal_test crashes bhyve in i386 VM
+# Test scenario by: Li-Wen Hsu <lwhsu@FreeBSD.org>
+
+cat > /tmp/signal2.c <<EOF
+#include <stdio.h>
+#include <signal.h>
+
+#include <machine/psl.h>
+#define SET_TRACE_FLAG(ucp) (ucp)->uc_mcontext.mc_eflags |= PSL_T
+#define CLR_TRACE_FLAG(ucp) (ucp)->uc_mcontext.mc_eflags &= ~PSL_T
+
+static volatile sig_atomic_t trap_signal_fired = 0;
+
+static void
+trap_sig_handler(int signo __unused, siginfo_t *info __unused, void *_ucp)
+{
+ ucontext_t *ucp = _ucp;
+
+ if (trap_signal_fired < 9) {
+ SET_TRACE_FLAG(ucp);
+ } else {
+ CLR_TRACE_FLAG(ucp);
+ }
+ trap_signal_fired++;
+}
+
+int main() {
+ struct sigaction sa = {
+ .sa_sigaction = trap_sig_handler,
+ .sa_flags = SA_SIGINFO,
+ };
+
+ sigemptyset(&sa.sa_mask);
+ sigaction(SIGTRAP, &sa, NULL);
+
+ raise(SIGTRAP);
+
+ printf("test\n");
+}
+EOF
+cc -o /tmp/signal2 -Wall -Wextra -O0 -m32 /tmp/signal2.c || exit 1
+
+/tmp/signal2; s=$?
+for i in `jot 30`; do
+ /tmp/signal2 &
+done > /dev/null
+wait
+
+rm -f /tmp/signal2 /tmp/signal2.c
+exit $s
diff --git a/tools/test/stress2/misc/sigreturn2.sh b/tools/test/stress2/misc/sigreturn2.sh
new file mode 100755
index 000000000000..8960b9b3958c
--- /dev/null
+++ b/tools/test/stress2/misc/sigreturn2.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# A sigreturn(2) syscall fuzzer
+
+# panic: vm_fault_lookup: fault on nofault entry, addr: 0
+# cpuid = 0
+# time = 1661248103
+# KDB: stack backtrace:
+# db_trace_self_wrapper(e,27e1dae0,27e1dae2,ffc07db8,c1f0490,...) at db_trace_self_wrapper+0x28/frame 0xffc07d24
+# vpanic(150b260,ffc07d60,ffc07d60,ffc07e20,12cb565,...) at vpanic+0xf4/frame 0xffc07d40
+# panic(150b260,14ec2f3,0,149349d,1430,...) at panic+0x14/frame 0xffc07d54
+# vm_fault(1e37000,0,4,0,0) at vm_fault+0x1725/frame 0xffc07e20
+# vm_fault_trap(1e37000,3b,4,0,0,0) at vm_fault_trap+0x52/frame 0xffc07e48
+# trap_pfault(3b,0,0) at trap_pfault+0x176/frame 0xffc07e94
+# trap(ffc07f6c,8,28,28,1915b000,...) at trap+0x2d9/frame 0xffc07f60
+# calltrap() at 0xffc031ef/frame 0xffc07f60
+# --- trap 0xc, eip = 0x3b, esp = 0xffc07fac, ebp = 0xffc0340c ---
+# (null)() at 0x3b/frame 0xffc0340c
+# KDB: enter: panic
+# [ thread pid 26126 tid 120029 ]
+# Stopped at kdb_enter+0x34: movl $0,kdb_why
+# db> x/s version
+# version: FreeBSD 14.0-CURRENT #0 ast-n257558-eb20af97a66-dirty: Mon Aug 22 17:53:22 CEST 2022
+# pho@mercat1.netperf.freebsd.org:/media/obj/var/tmp/deviant3/i386.i386/sys/PHO
+# db>
+
+inc=/usr/include/sys/syscall.h
+[ -f $inc ] || exit 0
+num=`awk '/SYS_sigreturn/ {print $NF}' < $inc`
+old=`grep -E 'sigreturn \*' < $inc | \
+ sed 's/.* \([0-9]\{1,3\}\) .*/\1/' | tr '\n' ' '`
+num="$num $old"
+
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 180 ]; do
+ for i in $num; do
+ echo "noswap=1 ./syscall4.sh $i"
+ noswap=1 ./syscall4.sh $i
+ done
+done
+
+exit 0
diff --git a/tools/test/stress2/misc/sigreturn3.sh b/tools/test/stress2/misc/sigreturn3.sh
new file mode 100755
index 000000000000..fbb19d87cb6e
--- /dev/null
+++ b/tools/test/stress2/misc/sigreturn3.sh
@@ -0,0 +1,182 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Fatal trap -4186856: UNKNOWN while in kernel mode
+# cpuid = 1; apic id = 01
+# error code = 0xfbafcf8c
+# instruction pointer = 0x79e4:0x4
+# stack pointer = 0x28:0xffc0aff0
+# frame pointer = 0x28:0x204620d4
+# code segment = base 0x0, limit 0x0, type 0x0
+# = DPL 0, pres 0, def32 0, gran 0
+# processor eflags = trace trap, at 0x3b/frame 0xffc0340c
+# KDB: enter: panic
+# [ thread pid 15631 tid 114622 ]
+# Stopped at kdb_enter+0x34: movl $0,kdb_why
+# db>
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+prog=sigreturn3
+
+cat > /tmp/$prog.c <<EOF
+#include <sys/types.h>
+#include <sys/resource.h>
+#include <sys/stat.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <libutil.h>
+#include <pthread.h>
+#include <pwd.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define N 4096
+#define RUNTIME 120
+#define THREADS 1
+
+static uint32_t r[N];
+
+static void
+hand(int i __unused) { /* handler */
+ exit(1);
+}
+
+static void *
+churn(void *arg __unused)
+{
+ time_t start;
+
+ pthread_set_name_np(pthread_self(), __func__);
+ start = time(NULL);
+ while (time(NULL) - start < 10) {
+ arc4random_buf(r, sizeof(r));
+ usleep(100);
+ }
+ return(NULL);
+}
+
+static void *
+calls(void *arg __unused)
+{
+ time_t start;
+ int i;
+
+ start = time(NULL);
+ for (i = 0; time(NULL) - start < 10; i++) {
+ arc4random_buf(r, sizeof(r));
+ alarm(1);
+ syscall(SYS_sigreturn, r);
+ }
+
+ return (NULL);
+}
+
+int
+main(int argc, char **argv)
+{
+ struct passwd *pw;
+ struct rlimit limit;
+ pid_t pid;
+ pthread_t rp, cp[THREADS];
+ time_t start;
+ int e, j;
+
+ if ((pw = getpwnam("nobody")) == NULL)
+ err(1, "failed to resolve nobody");
+
+ if (getenv("USE_ROOT") && argc == 2)
+ fprintf(stderr, "Running syscall4 as root for %s.\n",
+ argv[1]);
+ else {
+ if (setgroups(1, &pw->pw_gid) ||
+ setegid(pw->pw_gid) || setgid(pw->pw_gid) ||
+ seteuid(pw->pw_uid) || setuid(pw->pw_uid))
+ err(1, "Can't drop privileges to \"nobody\"");
+ endpwent();
+ }
+
+ limit.rlim_cur = limit.rlim_max = 1000;
+#if defined(RLIMIT_NPTS)
+ if (setrlimit(RLIMIT_NPTS, &limit) < 0)
+ err(1, "setrlimit");
+#endif
+
+ signal(SIGALRM, hand);
+ signal(SIGILL, hand);
+ signal(SIGFPE, hand);
+ signal(SIGSEGV, hand);
+ signal(SIGBUS, hand);
+ signal(SIGURG, hand);
+ signal(SIGSYS, hand);
+ signal(SIGTRAP, hand);
+
+ if (daemon(1, 1) == -1)
+ err(1, "daemon()");
+
+ start = time(NULL);
+ while ((time(NULL) - start) < RUNTIME) {
+ if ((pid = fork()) == 0) {
+ if ((e = pthread_create(&rp, NULL, churn, NULL)) != 0)
+ errc(1, e, "pthread_create");
+ for (j = 0; j < THREADS; j++)
+ if ((e = pthread_create(&cp[j], NULL, calls,
+ NULL)) != 0)
+ errc(1, e, "pthread_create");
+ for (j = 0; j < THREADS; j++)
+ pthread_join(cp[j], NULL);
+
+ if ((e = pthread_kill(rp, SIGINT)) != 0)
+ errc(1, e, "pthread_kill");
+ if ((e = pthread_join(rp, NULL)) != 0)
+ errc(1, e, "pthread_join");
+ _exit(0);
+ }
+ waitpid(pid, NULL, 0);
+ }
+
+ return (0);
+}
+EOF
+
+cd /tmp
+cc -o $prog -Wall -Wextra -O0 $prog.c -lpthread || exit 1
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 300 ]; do
+ ./$prog > /dev/null 2>&1
+ date +%T
+done
+rm -f /tmp/$prog /tmp/$ptog.c /tmp/$prog.core
+exit 0
diff --git a/tools/test/stress2/misc/sigreturn4.sh b/tools/test/stress2/misc/sigreturn4.sh
new file mode 100755
index 000000000000..f7916dc3b1ee
--- /dev/null
+++ b/tools/test/stress2/misc/sigreturn4.sh
@@ -0,0 +1,208 @@
+#!/bin/sh
+
+# panic: vm_fault_lookup: fault on nofault entry, addr: 0
+# cpuid = 2
+# time = 1661698922
+# KDB: stack backtrace:
+# db_trace_self_wrapper(b,2931e740,2931e742,ffc0ddb8,190431,...) at db_trace_self_wrapper+0x28/frame 0xffc0dd24
+# vpanic(150acba,ffc0dd60,ffc0dd60,ffc0de20,12cc155,...) at vpanic+0xf4/frame 0xffc0dd40
+# panic(150acba,14ec1ab,0,146253d,1430,...) at panic+0x14/frame 0xffc0dd54
+# vm_fault(1e360c8,0,4,0,0) at vm_fault+0x1725/frame 0xffc0de20
+# vm_fault_trap(1e360c8,3b,4,0,0,0) at vm_fault_trap+0x52/frame 0xffc0de48
+# trap_pfault(3b,0,0) at trap_pfault+0x176/frame 0xffc0de94
+# trap(ffc0df6c,8,28,28,19156000,...) at trap+0x2d9/frame 0xffc0df60
+# calltrap() at 0xffc031ef/frame 0xffc0df60
+# --- trap 0xc, eip = 0x3b, esp = 0xffc0dfac, ebp = 0xffc0340c ---
+# (null)() at 0x3b/frame 0xffc0340c
+# KDB: enter: panic
+# [ thread pid 54680 tid 102765 ]
+# Stopped at kdb_enter+0x34: movl $0,kdb_why
+# db> x/s version
+# version: FreeBSD 14.0-CURRENT #0 main-n257606-9ea2716b775-dirty: Thu Aug 25 10:47:45 CEST 2022
+# pho@mercat1.netperf.freebsd.org:/media/ob
+# j/usr/src/i386.i386/sys/PHO\012
+# db> show proc
+# Process 54680 (date) at 0x28905d50:
+# state: NORMAL
+# uid: 0 gids: 0, 0, 5
+# parent: pid 785 at 0x26c14000
+# ABI: FreeBSD ELF32
+# flag: 0x10004002 flag2: 0
+# arguments: date +%s
+# reaper: 0x18c710a4 reapsubtree: 1
+# sigparent: 20
+# vmspace: 0x29332100
+# (map 0x29332100)
+# (map.pmap 0x29332174)
+# (pmap 0x293321b0)
+# threads: 1
+# 102765 Run CPU 2 date
+# db>
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+prog=sigreturn4
+
+cat > /tmp/$prog.c <<EOF
+#include <sys/types.h>
+#include <sys/resource.h>
+#include <sys/stat.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+
+#include <ucontext.h>
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <libutil.h>
+#include <pthread.h>
+#include <pwd.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define RUNTIME 120
+#define THREADS 1
+
+static void
+hand(int i __unused) { /* handler */
+ _exit(1);
+}
+
+static long
+random_long(long mi, long ma)
+{
+ return (arc4random() % (ma - mi + 1) + mi);
+}
+
+static void
+flip(void *ap, size_t len)
+{
+ unsigned char *cp;
+ int byte;
+ unsigned char bit, buf, mask, old __unused;
+
+ cp = (unsigned char *)ap;
+ byte = random_long(0, len);
+ bit = random_long(0,7);
+ mask = ~(1 << bit);
+ buf = cp[byte];
+ old = cp[byte];
+ buf = (buf & mask) | (~buf & ~mask);
+ cp[byte] = buf;
+}
+
+static void *
+churn(void *arg __unused)
+{
+ time_t start;
+
+ start = time(NULL);
+ while (time(NULL) - start < 10) {
+ usleep(100);
+ }
+ return(NULL);
+}
+
+static void *
+calls(void *arg __unused)
+{
+ time_t start;
+ ucontext_t uc;
+ int i, n;
+
+ start = time(NULL);
+ for (i = 0; time(NULL) - start < 10; i++) {
+ n = 0;
+ if (getcontext(&uc) == -1)
+ err(1, "getcontext");
+ n++;
+
+ if (n == 1) {
+ flip(&uc, sizeof(uc));
+ alarm(1);
+ if (sigreturn(&uc) == -1)
+ err(1, "sigreturn()");
+ } else
+ break;
+ }
+ return (NULL);
+}
+
+int
+main(int argc, char **argv)
+{
+ struct passwd *pw;
+ struct rlimit limit;
+ pid_t pid;
+ pthread_t rp, cp[THREADS];
+ time_t start;
+ int e, j;
+
+ if ((pw = getpwnam("nobody")) == NULL)
+ err(1, "failed to resolve nobody");
+
+ if (getenv("USE_ROOT") && argc == 2)
+ fprintf(stderr, "Running sigreturn4 as root for %s.\n",
+ argv[1]);
+ else {
+ if (setgroups(1, &pw->pw_gid) ||
+ setegid(pw->pw_gid) || setgid(pw->pw_gid) ||
+ seteuid(pw->pw_uid) || setuid(pw->pw_uid))
+ err(1, "Can't drop privileges to \"nobody\"");
+ endpwent();
+ }
+
+ limit.rlim_cur = limit.rlim_max = 1000;
+#if defined(RLIMIT_NPTS)
+ if (setrlimit(RLIMIT_NPTS, &limit) < 0)
+ err(1, "setrlimit");
+#endif
+
+ signal(SIGALRM, hand);
+ signal(SIGILL, hand);
+ signal(SIGFPE, hand);
+ signal(SIGSEGV, hand);
+ signal(SIGBUS, hand);
+ signal(SIGURG, hand);
+ signal(SIGSYS, hand);
+ signal(SIGTRAP, hand);
+
+ if (daemon(1, 1) == -1)
+ err(1, "daemon()");
+
+ start = time(NULL);
+ while ((time(NULL) - start) < RUNTIME) {
+ if ((pid = fork()) == 0) {
+ if ((e = pthread_create(&rp, NULL, churn, NULL)) != 0)
+ errc(1, e, "pthread_create");
+ for (j = 0; j < THREADS; j++)
+ if ((e = pthread_create(&cp[j], NULL, calls,
+ NULL)) != 0)
+ errc(1, e, "pthread_create");
+ for (j = 0; j < THREADS; j++)
+ pthread_join(cp[j], NULL);
+
+ if ((e = pthread_kill(rp, SIGINT)) != 0)
+ errc(1, e, "pthread_kill");
+ if ((e = pthread_join(rp, NULL)) != 0)
+ errc(1, e, "pthread_join");
+ _exit(0);
+ }
+ waitpid(pid, NULL, 0);
+ }
+
+ return (0);
+}
+EOF
+
+cd /tmp
+cc -o $prog -Wall -Wextra -O0 $prog.c -lpthread || exit 1
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 300 ]; do
+ ./$prog > /dev/null 2>&1
+ date +%T
+done
+rm -f /tmp/$prog /tmp/$ptog.c /tmp/$prog.core
+exit 0
diff --git a/tools/test/stress2/misc/sigstop2.sh b/tools/test/stress2/misc/sigstop2.sh
index 286936c2fb1a..640af0801318 100755
--- a/tools/test/stress2/misc/sigstop2.sh
+++ b/tools/test/stress2/misc/sigstop2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/sigxcpu.sh b/tools/test/stress2/misc/sigxcpu.sh
index 3d478fd19286..135b40ea98e9 100755
--- a/tools/test/stress2/misc/sigxcpu.sh
+++ b/tools/test/stress2/misc/sigxcpu.sh
@@ -44,11 +44,10 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 4g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
+newfs $newfs_flags md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=4m
diff --git a/tools/test/stress2/misc/smrstress.sh b/tools/test/stress2/misc/smrstress.sh
index 5806f9231520..b174cb5aa087 100755
--- a/tools/test/stress2/misc/smrstress.sh
+++ b/tools/test/stress2/misc/smrstress.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
diff --git a/tools/test/stress2/misc/smrstress2.sh b/tools/test/stress2/misc/smrstress2.sh
index 8f9f4d86a4fd..054fc922708d 100755
--- a/tools/test/stress2/misc/smrstress2.sh
+++ b/tools/test/stress2/misc/smrstress2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/snap10.sh b/tools/test/stress2/misc/snap10.sh
index 53fba0ee652d..69d5ddd0bfdc 100755
--- a/tools/test/stress2/misc/snap10.sh
+++ b/tools/test/stress2/misc/snap10.sh
@@ -40,9 +40,8 @@ log=/tmp/snap10.log
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 512m -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
while ! mksnap_ffs $mntpoint $mntpoint/.snap/stress2; do :; done
diff --git a/tools/test/stress2/misc/snap11.sh b/tools/test/stress2/misc/snap11.sh
index f4e499d7deda..2458438deef1 100755
--- a/tools/test/stress2/misc/snap11.sh
+++ b/tools/test/stress2/misc/snap11.sh
@@ -45,9 +45,8 @@ log=/tmp/snap11.log
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
last=`tail -1 /var/log/messages | cut -c1-15`
[ -z "$last" ] && last=dummy
@@ -79,7 +78,7 @@ for i in `jot 6`; do
umount $mntpoint && break || sleep 10
done
[ $i -eq 6 ] && exit 1
-fsck -t ufs -y /dev/md${mdstart}$part > $log 2>&1 || s=1
+fsck -t ufs -y /dev/md$mdstart > $log 2>&1 || s=1
egrep -v "IS CLEAN" $log | grep -q "[A-Z]" $log || { cat $log; s=1; }
mdconfig -d -u $mdstart
rm -rf $log
diff --git a/tools/test/stress2/misc/snap12.sh b/tools/test/stress2/misc/snap12.sh
index 137e1930fa27..bca6af6efe5d 100755
--- a/tools/test/stress2/misc/snap12.sh
+++ b/tools/test/stress2/misc/snap12.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
@@ -44,9 +44,8 @@ mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
[ -c /dev/md$m2 ] && mdconfig -d -u $m2
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
touch $mntpoint/file
rm -f $mntpoint/.snap/stress2
@@ -65,7 +64,7 @@ for i in `jot 6`; do
umount $mntpoint && break || sleep 10
done
[ $i -eq 6 ] && exit 1
-fsck -t ufs -y /dev/md${mdstart}$part > $log 2>&1 || s=5
+fsck -t ufs -y /dev/md$mdstart > $log 2>&1 || s=5
egrep -v "IS CLEAN" $log | grep -q "[A-Z]" $log || { cat $log; s=6; }
mdconfig -d -u $mdstart
rm -rf $log
diff --git a/tools/test/stress2/misc/snap13.sh b/tools/test/stress2/misc/snap13.sh
new file mode 100755
index 000000000000..75550e76a784
--- /dev/null
+++ b/tools/test/stress2/misc/snap13.sh
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Test mounting of snapshots for different UFS types
+
+# Seen: mount of a -O1 snapshot failed
+# Fixed by:
+# f1549d7d5229 Write out corrected superblock when creating a UFS/FFS snapshot.
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+
+set -u
+s=0
+m2=$((mdstart + 1))
+mp2=$mntpoint$m2
+[ -d $mp2 ] || mkdir -p $mp2
+mount | grep -q "on $mntpoint " && umount -f $mntpoint
+[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
+[ -c /dev/md$m2 ] && mdconfig -d -u $m2
+mdconfig -a -t swap -s 2g -u $mdstart || exit 1
+for newfs_flags in "-O2" "-U" "-j" "-O1"; do
+ echo "newfs $newfs_flags md$mdstart"
+ newfs $newfs_flags md$mdstart > /dev/null
+ mount /dev/md$mdstart $mntpoint
+ touch $mntpoint/file
+
+ rm -f $mntpoint/.snap/stress2
+ mksnap_ffs $mntpoint $mntpoint/.snap/stress2 || { s=1; break; }
+ mdconfig -a -t vnode -f $mntpoint/.snap/stress2 -u $m2 -o readonly ||
+ { s=2; break; }
+ mount -t ufs -o ro /dev/md$m2 $mp2 || {
+ echo "mount of a $newfs_flags snapshot failed"
+ dumpfs -s /dev/md$m2; s=3; break; }
+ [ -f $mp2/file ] || { s=4; ls -l $mp2; }
+ umount $mp2
+ mdconfig -d -u $m2
+ umount $mntpoint
+done
+mount | grep -q "on $mntpoint " && umount $mntpoint
+
+mdconfig -d -u $mdstart
+exit $s
diff --git a/tools/test/stress2/misc/snap8.sh b/tools/test/stress2/misc/snap8.sh
index ffe33593bc6e..6cc1371506c8 100755
--- a/tools/test/stress2/misc/snap8.sh
+++ b/tools/test/stress2/misc/snap8.sh
@@ -39,7 +39,7 @@
. ../default.cfg
-mount | grep -q /dev/md${mdstart}$part && umount -f /dev/md${mdstart}$part
+mount | grep -q /dev/md$mdstart && umount -f /dev/md${mdstart}
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
parallel=20
@@ -53,9 +53,8 @@ mx=$((`sysctl -n hw.physmem` / 1024 / 1024 / 1024 / 2))
truncate -s ${size}G $diskimage
mdconfig -a -t vnode -f $diskimage -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -O2 $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -O2 $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
mycc -o /tmp/fstool -Wall ../tools/fstool.c
for i in `jot $parallel`; do
@@ -88,8 +87,8 @@ for i in `jot 10`; do
done
wait
-umount /dev/md${mdstart}$part
+umount /dev/md$mdstart
-mount | grep -q /dev/md${mdstart}$part && umount -f /dev/md${mdstart}$part
+mount | grep -q /dev/md$mdstart && umount -f /dev/md${mdstart}
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
rm -f $diskimage
diff --git a/tools/test/stress2/misc/snap9.sh b/tools/test/stress2/misc/snap9.sh
index d1ba0e968427..61fe464439e3 100755
--- a/tools/test/stress2/misc/snap9.sh
+++ b/tools/test/stress2/misc/snap9.sh
@@ -39,9 +39,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
dd if=/dev/zero of=$mntpoint/big1 bs=1m count=512 status=none
dd if=/dev/zero of=$mntpoint/big2 bs=1m count=512 status=none
diff --git a/tools/test/stress2/misc/socketpair4.sh b/tools/test/stress2/misc/socketpair4.sh
index c9bfd52a3bfc..c9e07b3494fc 100755
--- a/tools/test/stress2/misc/socketpair4.sh
+++ b/tools/test/stress2/misc/socketpair4.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
@@ -45,7 +45,6 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
newfs_flags=""
newfs $newfs_flags -n md$mdstart > /dev/null
mount /dev/md$mdstart $mntpoint
diff --git a/tools/test/stress2/misc/sort2.sh b/tools/test/stress2/misc/sort2.sh
index ba3d5a0a01f8..fb2965ea6c02 100755
--- a/tools/test/stress2/misc/sort2.sh
+++ b/tools/test/stress2/misc/sort2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/sparse.sh b/tools/test/stress2/misc/sparse.sh
index 1ae95de12558..8327177c92f9 100755
--- a/tools/test/stress2/misc/sparse.sh
+++ b/tools/test/stress2/misc/sparse.sh
@@ -35,9 +35,8 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 5g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
set +e
in=$mntpoint/in
diff --git a/tools/test/stress2/misc/spin.sh b/tools/test/stress2/misc/spin.sh
index 0128e3ff3529..070d08c2c33f 100755
--- a/tools/test/stress2/misc/spin.sh
+++ b/tools/test/stress2/misc/spin.sh
@@ -49,9 +49,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags -n md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags -n md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
cpus=`sysctl hw.ncpu | sed 's/.*: //'`
(cd $mntpoint; /tmp/spin $((cpus + 1))) &
diff --git a/tools/test/stress2/misc/split.sh b/tools/test/stress2/misc/split.sh
index 59e3c6f140e1..2709a38e77b5 100755
--- a/tools/test/stress2/misc/split.sh
+++ b/tools/test/stress2/misc/split.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/su.sh b/tools/test/stress2/misc/su.sh
index da29146c3ab6..c4ed6eee93ac 100755
--- a/tools/test/stress2/misc/su.sh
+++ b/tools/test/stress2/misc/su.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/suj.sh b/tools/test/stress2/misc/suj.sh
index 5beb93ec7388..2a5f04ddcd03 100755
--- a/tools/test/stress2/misc/suj.sh
+++ b/tools/test/stress2/misc/suj.sh
@@ -35,9 +35,8 @@
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -j md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export RUNDIR=$mntpoint/stressX
@@ -47,6 +46,6 @@ su $testuser -c "cd ..; ./run.sh rw.cfg"
while mount | grep $mntpoint | grep -q /dev/md; do
umount $mntpoint || sleep 1
done
-checkfs /dev/md${mdstart}$part; s=$?
+checkfs /dev/md$mdstart; s=$?
mdconfig -d -u $mdstart
exit $s
diff --git a/tools/test/stress2/misc/suj11.sh b/tools/test/stress2/misc/suj11.sh
index ccb97fa8d189..01f3a49be087 100755
--- a/tools/test/stress2/misc/suj11.sh
+++ b/tools/test/stress2/misc/suj11.sh
@@ -36,14 +36,13 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
+newfs -j md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
-export runRUNTIME=30m
+export runRUNTIME=10m
export RUNDIR=$mntpoint/stressX
su $testuser -c 'cd ..; ./run.sh marcus.cfg' > /dev/null 2>&1
@@ -51,8 +50,8 @@ su $testuser -c 'cd ..; ./run.sh marcus.cfg' > /dev/null 2>&1
while mount | grep $mntpoint | grep -q /dev/md; do
umount $mntpoint || sleep 1
done
-checkfs /dev/md${mdstart}$part; s=$?
-tunefs -j disable /dev/md${mdstart}$part
-checkfs /dev/md${mdstart}$part || s=$?
+checkfs /dev/md$mdstart; s=$?
+tunefs -j disable /dev/md$mdstart
+checkfs /dev/md$mdstart || s=$?
mdconfig -d -u $mdstart
exit $s
diff --git a/tools/test/stress2/misc/suj12.sh b/tools/test/stress2/misc/suj12.sh
index d0cbecfb1a37..48b138fbd2d3 100755
--- a/tools/test/stress2/misc/suj12.sh
+++ b/tools/test/stress2/misc/suj12.sh
@@ -32,6 +32,9 @@
# OOM seen: https://people.freebsd.org/~pho/stress/log/suj12.txt
+# watchdogd fired:
+# https://people.freebsd.org/~pho/stress/log/log0428.txt
+
. ../default.cfg
gnop load || exit 0
diff --git a/tools/test/stress2/misc/suj13.sh b/tools/test/stress2/misc/suj13.sh
index 7a5616488f21..a33af26e4772 100755
--- a/tools/test/stress2/misc/suj13.sh
+++ b/tools/test/stress2/misc/suj13.sh
@@ -40,11 +40,10 @@ mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
size="128m"
[ `uname -m` = "amd64" ] && size="1g"
mdconfig -a -t malloc -o reserve -s $size -S 4096 -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
+newfs -j md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=20m
@@ -55,6 +54,6 @@ su $testuser -c 'cd ..; ./run.sh marcus.cfg' > /dev/null 2>&1
while mount | grep $mntpoint | grep -q /dev/md; do
umount $mntpoint || sleep 1
done
-checkfs /dev/md${mdstart}$part; s=$?
+checkfs /dev/md$mdstart; s=$?
mdconfig -d -u $mdstart
exit $s
diff --git a/tools/test/stress2/misc/suj14.sh b/tools/test/stress2/misc/suj14.sh
index 6587d4f554fd..7d83c454902b 100755
--- a/tools/test/stress2/misc/suj14.sh
+++ b/tools/test/stress2/misc/suj14.sh
@@ -38,11 +38,10 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
+newfs -j md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
# Populate the FS with some random files
for i in `jot 102`; do
diff --git a/tools/test/stress2/misc/suj15.sh b/tools/test/stress2/misc/suj15.sh
index 011cb0bebdf9..86bf2f4e3f1d 100755
--- a/tools/test/stress2/misc/suj15.sh
+++ b/tools/test/stress2/misc/suj15.sh
@@ -42,21 +42,20 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
+newfs -j md$mdstart > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
-export runRUNTIME=30m
+export runRUNTIME=10m
export RUNDIR=$mntpoint/stressX
su $testuser -c 'cd ..; ./run.sh jeff.cfg > /dev/null' &
rpid=$!
while kill -0 $rpid 2> /dev/null; do
sleep 10
- dump -0aLf /dev/null /dev/md${mdstart}$part
+ dump -0aLf /dev/null /dev/md$mdstart
done
wait
diff --git a/tools/test/stress2/misc/suj16.sh b/tools/test/stress2/misc/suj16.sh
index 8eaf5d678534..64e64dd65fbc 100755
--- a/tools/test/stress2/misc/suj16.sh
+++ b/tools/test/stress2/misc/suj16.sh
@@ -40,14 +40,13 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null 2>&1
+newfs -j md$mdstart > /dev/null 2>&1
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
-export runRUNTIME=30m
+export runRUNTIME=10m
export RUNDIR=$mntpoint/stressX
export creatINCARNATIONS=2
diff --git a/tools/test/stress2/misc/suj17.sh b/tools/test/stress2/misc/suj17.sh
index 319b61ecab8b..d45d9a574778 100755
--- a/tools/test/stress2/misc/suj17.sh
+++ b/tools/test/stress2/misc/suj17.sh
@@ -45,12 +45,11 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
[ $# -eq 1 ] && opt="$1"
[ $# -eq 0 ] && opt="-j"
-echo "newfs $opt md${mdstart}$part"
-newfs $opt md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+echo "newfs $opt md$mdstart"
+newfs $opt md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
su $testuser -c "cd $mntpoint; /tmp/suj17"
@@ -59,7 +58,7 @@ s=$?
while mount | grep $mntpoint | grep -q /dev/md; do
umount $mntpoint || sleep 1
done
-checkfs /dev/md${mdstart}$part || s=$?
+checkfs /dev/md$mdstart || s=$?
mdconfig -d -u $mdstart
rm -f /tmp/suj17
exit $s
diff --git a/tools/test/stress2/misc/suj18.sh b/tools/test/stress2/misc/suj18.sh
index 120a8e53ab67..d2f4819f16b2 100755
--- a/tools/test/stress2/misc/suj18.sh
+++ b/tools/test/stress2/misc/suj18.sh
@@ -42,10 +42,9 @@ mount | grep "$mntpoint" | grep -q md$mdstart && umount $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
+newfs -j md$mdstart > /dev/null
export PATH_FSTAB=/tmp/fstab
-echo "/dev/md${mdstart}$part $mntpoint ufs rw,userquota 2 2" > \
+echo "/dev/md$mdstart $mntpoint ufs rw,userquota 2 2" > \
$PATH_FSTAB
mount $mntpoint
set `df -ik $mntpoint | tail -1 | awk '{print $4,$7}'`
diff --git a/tools/test/stress2/misc/suj19.sh b/tools/test/stress2/misc/suj19.sh
index 580ebf131700..751cacad0615 100755
--- a/tools/test/stress2/misc/suj19.sh
+++ b/tools/test/stress2/misc/suj19.sh
@@ -46,10 +46,9 @@ mount | grep "$mntpoint" | grep -q md$mdstart && umount $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
+newfs -j md$mdstart > /dev/null
export PATH_FSTAB=/tmp/fstab
-echo "/dev/md${mdstart}$part $mntpoint ufs rw,userquota 2 2" > $PATH_FSTAB
+echo "/dev/md$mdstart $mntpoint ufs rw,userquota 2 2" > $PATH_FSTAB
mount $mntpoint
set `df -ik $mntpoint | tail -1 | awk '{print $4,$7}'`
export QK=$(($1 / 4))
diff --git a/tools/test/stress2/misc/suj2.sh b/tools/test/stress2/misc/suj2.sh
index bc00f09d3045..ede32fcc674f 100755
--- a/tools/test/stress2/misc/suj2.sh
+++ b/tools/test/stress2/misc/suj2.sh
@@ -45,9 +45,8 @@ rm -f suj2.c
mount | grep "$mntpoint" | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -j md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
cd $mntpoint
rm -rf foo bar
diff --git a/tools/test/stress2/misc/suj20.sh b/tools/test/stress2/misc/suj20.sh
index 9e73a480f333..eaf9ffeb654a 100755
--- a/tools/test/stress2/misc/suj20.sh
+++ b/tools/test/stress2/misc/suj20.sh
@@ -67,9 +67,8 @@ mount | grep "$mntpoint" | grep -q md$mdstart && umount $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -j md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
cd $mntpoint
chmod 777 $mntpoint
diff --git a/tools/test/stress2/misc/suj21.sh b/tools/test/stress2/misc/suj21.sh
index cbf2d4c730ab..c8009b3c4a62 100755
--- a/tools/test/stress2/misc/suj21.sh
+++ b/tools/test/stress2/misc/suj21.sh
@@ -68,9 +68,8 @@ mount | grep "$mntpoint" | grep -q md$mdstart && umount $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -j md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
cd $mntpoint
chmod 777 $mntpoint
diff --git a/tools/test/stress2/misc/suj22.sh b/tools/test/stress2/misc/suj22.sh
index beff053378c1..e79a0bcd8a65 100755
--- a/tools/test/stress2/misc/suj22.sh
+++ b/tools/test/stress2/misc/suj22.sh
@@ -66,8 +66,8 @@ D=$diskimage
if [ -n "`find $D -mtime -1h 2>/dev/null`" ]; then
# FS left by previous crash
mdconfig -a -t vnode -f $D -u $mdstart
- fsck -t ufs -y md${mdstart}$part
- fsck -t ufs -y md${mdstart}$part
+ fsck -t ufs -y md$mdstart
+ fsck -t ufs -y md$mdstart
rm -f $D
exit 0
fi
@@ -83,9 +83,8 @@ mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
dd if=/dev/zero of=$D bs=1m count=1k status=none || exit 1
mdconfig -a -t vnode -f $D -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -j md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
cd $mntpoint
chmod 777 $mntpoint
@@ -106,8 +105,8 @@ cd $here
while mount | grep -q $mntpoint; do
umount $mntpoint || sleep 1
done
-fsck -t ufs -y md${mdstart}$part
-fsck -t ufs -y md${mdstart}$part
+fsck -t ufs -y md$mdstart
+fsck -t ufs -y md$mdstart
mdconfig -d -u $mdstart
rm -f /tmp/suj22 $D
exit 0
diff --git a/tools/test/stress2/misc/suj23.sh b/tools/test/stress2/misc/suj23.sh
index aca810d42485..ee8920369680 100755
--- a/tools/test/stress2/misc/suj23.sh
+++ b/tools/test/stress2/misc/suj23.sh
@@ -49,9 +49,8 @@ mount | grep "on $mntpoint " | grep -q md$mdstart && umount $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -j md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
su $testuser -c '/tmp/suj23'
diff --git a/tools/test/stress2/misc/suj24.sh b/tools/test/stress2/misc/suj24.sh
index 68cb3dae2ff4..7ef8be5d5eb4 100755
--- a/tools/test/stress2/misc/suj24.sh
+++ b/tools/test/stress2/misc/suj24.sh
@@ -40,9 +40,8 @@ mount | grep "$mntpoint" | grep -q md$mdstart && umount $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -j md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
(cd $mntpoint; mksnap_ffs $mntpoint/.snap/snapshot)
diff --git a/tools/test/stress2/misc/suj25.sh b/tools/test/stress2/misc/suj25.sh
index 325fb9c39dc8..de8a1e710d86 100755
--- a/tools/test/stress2/misc/suj25.sh
+++ b/tools/test/stress2/misc/suj25.sh
@@ -39,11 +39,10 @@ mount | grep -w $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null 2>&1
+newfs -j md$mdstart > /dev/null 2>&1
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
cp -R /usr/include $mntpoint/1
diff --git a/tools/test/stress2/misc/suj26.sh b/tools/test/stress2/misc/suj26.sh
index 90888c3f3892..427f94dbc664 100755
--- a/tools/test/stress2/misc/suj26.sh
+++ b/tools/test/stress2/misc/suj26.sh
@@ -38,15 +38,14 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
[ $# -eq 1 ] && opt="$1" || opt="-j"
-newfs $opt md${mdstart}$part > /dev/null 2>&1
+newfs $opt md$mdstart > /dev/null 2>&1
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
-export runRUNTIME=30m
+export runRUNTIME=10m
export RUNDIR=$mntpoint/stressX
export creatINCARNATIONS=2
diff --git a/tools/test/stress2/misc/suj27.sh b/tools/test/stress2/misc/suj27.sh
index f4f014260343..02cc70af5520 100755
--- a/tools/test/stress2/misc/suj27.sh
+++ b/tools/test/stress2/misc/suj27.sh
@@ -38,15 +38,14 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
[ $# -eq 1 ] && opt="$1" || opt="-j"
-newfs $opt md${mdstart}$part > /dev/null 2>&1
+newfs $opt md$mdstart > /dev/null 2>&1
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
-export runRUNTIME=30m
+export runRUNTIME=10m
export RUNDIR=$mntpoint/stressX
export creatINCARNATIONS=2
diff --git a/tools/test/stress2/misc/suj28.sh b/tools/test/stress2/misc/suj28.sh
index 39f31428a196..e55fea11de61 100755
--- a/tools/test/stress2/misc/suj28.sh
+++ b/tools/test/stress2/misc/suj28.sh
@@ -37,12 +37,11 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
[ $# -eq 1 ] && opt="$1" || opt="-j"
-newfs $opt md${mdstart}$part > /dev/null 2>&1
+newfs $opt md$mdstart > /dev/null 2>&1
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
mount
chmod 777 $mntpoint
diff --git a/tools/test/stress2/misc/suj29.sh b/tools/test/stress2/misc/suj29.sh
index 69f07abc2396..105fdea79e16 100755
--- a/tools/test/stress2/misc/suj29.sh
+++ b/tools/test/stress2/misc/suj29.sh
@@ -41,13 +41,12 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -U md${mdstart}$part > /dev/null
-echo "tunefs -j enable -S 10000000 /dev/md${mdstart}$part"
-tunefs -j enable -S 10000000 /dev/md${mdstart}$part
+newfs -U md$mdstart > /dev/null
+echo "tunefs -j enable -S 10000000 /dev/md$mdstart"
+tunefs -j enable -S 10000000 /dev/md$mdstart
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=5m
@@ -67,8 +66,8 @@ su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS'
while mount | grep $mntpoint | grep -q /dev/md; do
umount $mntpoint || sleep 1
done
-checkfs /dev/md${mdstart}$part; s=$?
-tunefs -j disable /dev/md${mdstart}$part
-checkfs /dev/md${mdstart}$part || s=$?
+checkfs /dev/md$mdstart; s=$?
+tunefs -j disable /dev/md$mdstart
+checkfs /dev/md$mdstart || s=$?
mdconfig -d -u $mdstart
exit $s
diff --git a/tools/test/stress2/misc/suj30.sh b/tools/test/stress2/misc/suj30.sh
index 7e168e7c3f1c..39290c0d030b 100755
--- a/tools/test/stress2/misc/suj30.sh
+++ b/tools/test/stress2/misc/suj30.sh
@@ -30,6 +30,8 @@
# "panic: flush_pagedep_deps: MKDIR_PARENT" seen:
# http://people.freebsd.org/~pho/stress/log/suj30.txt
+# Hang seen: https://people.freebsd.org/~pho/stress/log/log0337.txt
+
[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
. ../default.cfg
@@ -44,9 +46,8 @@ mount | grep "on $mntpoint " | grep -q md$mdstart && umount $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 4g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -j md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
for i in `jot 10`; do
diff --git a/tools/test/stress2/misc/suj31.sh b/tools/test/stress2/misc/suj31.sh
index e875d1f94076..f9facc779363 100755
--- a/tools/test/stress2/misc/suj31.sh
+++ b/tools/test/stress2/misc/suj31.sh
@@ -40,9 +40,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -U md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -U md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=10m
@@ -52,14 +51,14 @@ while mount | grep $mntpoint | grep -q /dev/md; do
umount $mntpoint || sleep 1
done
-tunefs -j enable /dev/md${mdstart}$part
-mount /dev/md${mdstart}$part $mntpoint
+tunefs -j enable /dev/md$mdstart
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
su $testuser -c 'cd ..; ./run.sh marcus.cfg' > /dev/null 2>&1
while mount | grep $mntpoint | grep -q /dev/md; do
umount $mntpoint || sleep 1
done
-checkfs /dev/md${mdstart}$part; s=$?
+checkfs /dev/md$mdstart; s=$?
mdconfig -d -u $mdstart
exit $s
diff --git a/tools/test/stress2/misc/suj32.sh b/tools/test/stress2/misc/suj32.sh
index b9c14339ccbb..532cbf197f5c 100755
--- a/tools/test/stress2/misc/suj32.sh
+++ b/tools/test/stress2/misc/suj32.sh
@@ -44,9 +44,8 @@ mount | grep "on $mntpoint " | grep -q md$mdstart && umount $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 5g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -U md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint || exit 1
+newfs -U md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint || exit 1
# fill the root directory to become larger than NIDIR * blksize
(cd $mntpoint; /tmp/suj32)
@@ -54,11 +53,11 @@ while mount | grep -q $mntpoint; do
umount $mntpoint || sleep 1
done
-tunefs -j enable /dev/md${mdstart}$part
+tunefs -j enable /dev/md$mdstart
-if ! mount /dev/md${mdstart}$part $mntpoint; then
+if ! mount /dev/md$mdstart $mntpoint; then
echo FAIL
- fsck_ffs -y /dev/md${mdstart}$part
+ fsck_ffs -y /dev/md$mdstart
else
umount $mntpoint
fi
diff --git a/tools/test/stress2/misc/suj33.sh b/tools/test/stress2/misc/suj33.sh
index 44861d1b6739..eb90035138aa 100755
--- a/tools/test/stress2/misc/suj33.sh
+++ b/tools/test/stress2/misc/suj33.sh
@@ -37,13 +37,12 @@
. ../default.cfg
-mount | grep "$mntpoint" | grep -q md${mdstart}$part && umount $mntpoint
+mount | grep "$mntpoint" | grep -q md$mdstart && umount $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -j md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
export RUNDIR=$mntpoint/stressX
export runRUNTIME=3m # Run tests for three minutes
chmod 777 $mntpoint
@@ -61,6 +60,6 @@ for i in `jot 6`; do
[ $i -eq 6 ] &&
{ echo FAIL; fstat -mf $mntpoint; exit 1; }
done
-checkfs /dev/md${mdstart}$part; s=$?
+checkfs /dev/md$mdstart; s=$?
mdconfig -d -u $mdstart
exit $s
diff --git a/tools/test/stress2/misc/suj34.sh b/tools/test/stress2/misc/suj34.sh
index 2b60c289b163..555c792dd1be 100755
--- a/tools/test/stress2/misc/suj34.sh
+++ b/tools/test/stress2/misc/suj34.sh
@@ -38,10 +38,9 @@ mount | grep -q "$mntpoint" && umount $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 4g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -j md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
mkdir $mntpoint/null
mnt2=${mntpoint}2
diff --git a/tools/test/stress2/misc/suj36.sh b/tools/test/stress2/misc/suj36.sh
new file mode 100755
index 000000000000..686274418901
--- /dev/null
+++ b/tools/test/stress2/misc/suj36.sh
@@ -0,0 +1,84 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# SU+J and snapshots
+
+# "panic: handle_disk_io_initiation: Unexpected type jnewblk" seen
+# https://people.freebsd.org/~pho/stress/log/log0392.txt
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+
+set -eu
+prog=$(basename "$0" .sh)
+log=/tmp/$prog.log
+
+mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
+[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 5g -u $mdstart
+[ "$newfs_flags" = "-U" ] && newfs_flags="-j"
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+chmod 777 $mntpoint
+
+export LOAD=80
+export rwLOAD=80
+export runRUNTIME=10m
+export RUNDIR=$mntpoint/stressX
+export CTRLDIR=$mntpoint/stressX.control
+export MAXSWAPPCT=80
+export TESTPROGS=`cd ..; find testcases/ -perm -1 -type f | \
+ egrep -Ev "/run/|/badcode/|/pty/|/shm/|/socket/|sysctl|tcp|thr|udp"`
+
+su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS' > /dev/null &
+
+sleep 5
+for i in `jot 10`; do
+ for j in `jot 5`; do
+ rm -f $mntpoint/.snap/snap.$j
+ mksnap_ffs $mntpoint $mntpoint/.snap/snap.$j
+ sleep 10
+ done
+ sleep 10
+done
+wait
+
+../tools/killall.sh
+for i in `jot 6`; do
+ mount | grep -q "on $mntpoint " || break
+ umount $mntpoint && break || sleep 10
+ [ $i -eq 6 ] &&
+ { echo FATAL; fstat -mf $mntpoint; exit 1; }
+done
+fsck_ffs -fy /dev/md$mdstart > $log 2>&1; s=$?
+grep -q "WAS MODIFIED" $log && { tail -12 $log; s=100; }
+mdconfig -d -u $mdstart
+rm -f $log
+exit $s
diff --git a/tools/test/stress2/misc/suj4.sh b/tools/test/stress2/misc/suj4.sh
index 975f572a162d..928909077cef 100755
--- a/tools/test/stress2/misc/suj4.sh
+++ b/tools/test/stress2/misc/suj4.sh
@@ -35,13 +35,12 @@
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -j md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export RUNDIR=$mntpoint/stressX
-export runRUNTIME=30m
+export runRUNTIME=10m
set `df -ik $mntpoint | tail -1 | awk '{print $4,$7}'`
export KBLOCKS=$(($1 / 2))
export INODES=$(($2 / 2))
diff --git a/tools/test/stress2/misc/suj5.sh b/tools/test/stress2/misc/suj5.sh
index 9dbaa90282ed..957065adc60c 100755
--- a/tools/test/stress2/misc/suj5.sh
+++ b/tools/test/stress2/misc/suj5.sh
@@ -28,7 +28,8 @@
[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
-# Deadlock seen
+# "panic: general protection fault" seen:
+# https://people.freebsd.org/~pho/stress/log/log0398.txt
. ../default.cfg
@@ -42,9 +43,8 @@ cd $here
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -j md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
su $testuser -c "cd $mntpoint; /tmp/suj5" > /dev/null
diff --git a/tools/test/stress2/misc/suj6.sh b/tools/test/stress2/misc/suj6.sh
index b769e1d3c6e1..b40412033f85 100755
--- a/tools/test/stress2/misc/suj6.sh
+++ b/tools/test/stress2/misc/suj6.sh
@@ -43,9 +43,8 @@ cd $here
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -j md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
su $testuser -c "cd $mntpoint; /tmp/suj6" > /dev/null
diff --git a/tools/test/stress2/misc/suj7.sh b/tools/test/stress2/misc/suj7.sh
index 9975e701e86b..5e8b82eab402 100755
--- a/tools/test/stress2/misc/suj7.sh
+++ b/tools/test/stress2/misc/suj7.sh
@@ -35,9 +35,8 @@
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs -j md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs -j md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chflags 0 $mntpoint/.sujournal
rm -f $mntpoint/.sujournal
@@ -51,8 +50,8 @@ done
# Failed to start journal: 2
echo "Expect: \"mount: /dev/md5a: No such file or directory\""
-[ -c /dev/md${mdstart}$part ] &&
- mount /dev/md${mdstart}$part $mntpoint
+[ -c /dev/md$mdstart ] &&
+ mount /dev/md$mdstart $mntpoint
while mount | grep $mntpoint | grep -q /dev/md; do
umount $mntpoint > /dev/null 2>&1 || sleep 1
diff --git a/tools/test/stress2/misc/suj8.sh b/tools/test/stress2/misc/suj8.sh
index 890caf2a27fd..5aed0813b7f8 100755
--- a/tools/test/stress2/misc/suj8.sh
+++ b/tools/test/stress2/misc/suj8.sh
@@ -37,24 +37,23 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 128M -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
n=0
s=0
for i in 1 2 ; do
n=$((n + 1))
- echo "newfs -U md${mdstart}$part"
- newfs -U md${mdstart}$part > /dev/null
- [ $n -eq 2 ] && tunefs -j enable /dev/md${mdstart}$part
+ echo "newfs -U md$mdstart"
+ newfs -U md$mdstart > /dev/null
+ [ $n -eq 2 ] && tunefs -j enable /dev/md$mdstart
- mount /dev/md${mdstart}$part $mntpoint
+ mount /dev/md$mdstart $mntpoint
dd if=/dev/zero of=$mntpoint/big bs=4k > /dev/null 2>&1
while mount | grep $mntpoint | grep -q /dev/md; do
umount $mntpoint || sleep 1
done
- checkfs /dev/md${mdstart}$part || s=1
+ checkfs /dev/md$mdstart || s=1
done
mdconfig -d -u $mdstart
diff --git a/tools/test/stress2/misc/suj9.sh b/tools/test/stress2/misc/suj9.sh
index 72d9f7382061..0a4a5cf7da87 100755
--- a/tools/test/stress2/misc/suj9.sh
+++ b/tools/test/stress2/misc/suj9.sh
@@ -40,12 +40,11 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 128m -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
for i in `jot 2`; do
- newfs -j md${mdstart}$part > /dev/null
+ newfs -j md$mdstart > /dev/null
- mount /dev/md${mdstart}$part $mntpoint
+ mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=5m
diff --git a/tools/test/stress2/misc/swap2.sh b/tools/test/stress2/misc/swap2.sh
index faba6c6ec956..d840651fc4b4 100755
--- a/tools/test/stress2/misc/swap2.sh
+++ b/tools/test/stress2/misc/swap2.sh
@@ -39,9 +39,8 @@
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export RUNDIR=$mntpoint/stressX
diff --git a/tools/test/stress2/misc/swap5.sh b/tools/test/stress2/misc/swap5.sh
index a0d746e1d2e2..c9f715d57b9a 100755
--- a/tools/test/stress2/misc/swap5.sh
+++ b/tools/test/stress2/misc/swap5.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/swap6.sh b/tools/test/stress2/misc/swap6.sh
index 30a3fd8e703a..a1eaea6b86a6 100755
--- a/tools/test/stress2/misc/swap6.sh
+++ b/tools/test/stress2/misc/swap6.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
@@ -33,7 +33,7 @@
. ../default.cfg
[ `sysctl -n vm.swap_total` -eq 0 ] && exit 0
-min=5 # percent swap usage
+min=10 # percent swap usage
(cd ../testcases/swap; ./swap -t 10m -i 100 -l 100 -h > /dev/null) &
sleep 1
mx=0
diff --git a/tools/test/stress2/misc/swapoff.sh b/tools/test/stress2/misc/swapoff.sh
index 3251653d472f..4a515254ef3e 100755
--- a/tools/test/stress2/misc/swapoff.sh
+++ b/tools/test/stress2/misc/swapoff.sh
@@ -42,9 +42,8 @@
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=5m
diff --git a/tools/test/stress2/misc/swapoff2.sh b/tools/test/stress2/misc/swapoff2.sh
index e86f868ddb01..c21d8b80a35a 100755
--- a/tools/test/stress2/misc/swapoff2.sh
+++ b/tools/test/stress2/misc/swapoff2.sh
@@ -39,9 +39,8 @@ set -e
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
set +e
: ${size:=2m}
diff --git a/tools/test/stress2/misc/swapoff3.sh b/tools/test/stress2/misc/swapoff3.sh
index 89b775a4f59c..5bd9e338a80f 100755
--- a/tools/test/stress2/misc/swapoff3.sh
+++ b/tools/test/stress2/misc/swapoff3.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Mark Johnston
#
diff --git a/tools/test/stress2/misc/swapoff4.sh b/tools/test/stress2/misc/swapoff4.sh
index 8bba94faebd1..564715030478 100755
--- a/tools/test/stress2/misc/swapoff4.sh
+++ b/tools/test/stress2/misc/swapoff4.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
diff --git a/tools/test/stress2/misc/swapoff5.sh b/tools/test/stress2/misc/swapoff5.sh
index fa4e0fe37a17..9801c5956716 100755
--- a/tools/test/stress2/misc/swapoff5.sh
+++ b/tools/test/stress2/misc/swapoff5.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Mark Johnston
#
diff --git a/tools/test/stress2/misc/symlink3.sh b/tools/test/stress2/misc/symlink3.sh
index 16f10d1a7bec..bc4cf317a2ca 100755
--- a/tools/test/stress2/misc/symlink3.sh
+++ b/tools/test/stress2/misc/symlink3.sh
@@ -37,9 +37,8 @@
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
umount $mntpoint
@@ -54,7 +53,7 @@ testcases/symlink/symlink
"
for i in `jot 10`; do
- mount /dev/md${mdstart}$part $mntpoint
+ mount /dev/md$mdstart $mntpoint
su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS'
diff --git a/tools/test/stress2/misc/symlink4.sh b/tools/test/stress2/misc/symlink4.sh
index 7184b2a1ed28..973d459f714d 100755
--- a/tools/test/stress2/misc/symlink4.sh
+++ b/tools/test/stress2/misc/symlink4.sh
@@ -49,9 +49,8 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
set +e
cd $mntpoint
diff --git a/tools/test/stress2/misc/symlink5.sh b/tools/test/stress2/misc/symlink5.sh
index 00ada39e5002..55f71e209791 100755
--- a/tools/test/stress2/misc/symlink5.sh
+++ b/tools/test/stress2/misc/symlink5.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/syscall4.sh b/tools/test/stress2/misc/syscall4.sh
index 209a00f7af9b..3937d45c0303 100755
--- a/tools/test/stress2/misc/syscall4.sh
+++ b/tools/test/stress2/misc/syscall4.sh
@@ -64,9 +64,8 @@ mount | grep -q "on $mntpoint " && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags -n md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags -n md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
[ -z "$noswap" ] &&
@@ -90,11 +89,11 @@ while pkill -9 swap; do :; done
while pkill -9 syscall4; do :; done
for i in `jot 10`; do
- mount | grep -q md${mdstart}$part && \
+ mount | grep -q md$mdstart && \
umount $mntpoint && mdconfig -d -u $mdstart && break
sleep 10
done
-if mount | grep -q md${mdstart}$part; then
+if mount | grep -q md$mdstart; then
fstat $mntpoint
echo "umount $mntpoint failed"
exit 1
@@ -261,7 +260,7 @@ static void *
calls(void *arg __unused)
{
time_t start;
- int i, j, num;
+ int i __unused, j, num;
unsigned long arg1, arg2, arg3, arg4, arg5, arg6, arg7;
#ifdef __NP__
diff --git a/tools/test/stress2/misc/systrace.sh b/tools/test/stress2/misc/systrace.sh
index aa7b8426dddf..c41675e77da3 100755
--- a/tools/test/stress2/misc/systrace.sh
+++ b/tools/test/stress2/misc/systrace.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
diff --git a/tools/test/stress2/misc/systrace2.sh b/tools/test/stress2/misc/systrace2.sh
index a8c4d05106a7..0ebdfd9549d1 100755
--- a/tools/test/stress2/misc/systrace2.sh
+++ b/tools/test/stress2/misc/systrace2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
diff --git a/tools/test/stress2/misc/syzkaller11.sh b/tools/test/stress2/misc/syzkaller11.sh
index 9586092cd5b3..788ea3a9557a 100755
--- a/tools/test/stress2/misc/syzkaller11.sh
+++ b/tools/test/stress2/misc/syzkaller11.sh
@@ -218,7 +218,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter;
+ int iter __unused;
for (iter = 0;; iter++) {
int pid = fork();
if (pid < 0)
diff --git a/tools/test/stress2/misc/syzkaller12.sh b/tools/test/stress2/misc/syzkaller12.sh
index dc026dc348bc..f5468c6c5e1f 100755
--- a/tools/test/stress2/misc/syzkaller12.sh
+++ b/tools/test/stress2/misc/syzkaller12.sh
@@ -94,7 +94,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter;
+ int iter __unused;
for (iter = 0;; iter++) {
int pid = fork();
if (pid < 0)
diff --git a/tools/test/stress2/misc/syzkaller14.sh b/tools/test/stress2/misc/syzkaller14.sh
index 5fa99004f838..9181fe71a2af 100755
--- a/tools/test/stress2/misc/syzkaller14.sh
+++ b/tools/test/stress2/misc/syzkaller14.sh
@@ -229,7 +229,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter;
+ int iter __unused;
for (iter = 0;; iter++) {
int pid = fork();
if (pid < 0)
diff --git a/tools/test/stress2/misc/syzkaller15.sh b/tools/test/stress2/misc/syzkaller15.sh
index d15017d7eb12..7a13bd819f0b 100755
--- a/tools/test/stress2/misc/syzkaller15.sh
+++ b/tools/test/stress2/misc/syzkaller15.sh
@@ -112,7 +112,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter;
+ int iter __unused;
for (iter = 0;; iter++) {
int pid = fork();
if (pid < 0)
diff --git a/tools/test/stress2/misc/syzkaller16.sh b/tools/test/stress2/misc/syzkaller16.sh
index 4ded2f61388f..7035223b8f0e 100755
--- a/tools/test/stress2/misc/syzkaller16.sh
+++ b/tools/test/stress2/misc/syzkaller16.sh
@@ -273,7 +273,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter;
+ int iter __unused;
for (iter = 0;; iter++) {
int pid = fork();
if (pid < 0)
@@ -410,7 +410,8 @@ mycc -o /tmp/syzkaller16 -Wall -Wextra -O0 -m32 /tmp/syzkaller16.c -pthread ||
(cd ../testcases/swap; ./swap -t 1m -i 20 -h > /dev/null 2>&1) &
(cd /tmp; ./syzkaller16) &
sleep 60
-pkill -9 syzkaller16 swap
+pkill -9 syzkaller16
+while pkill swap; do sleep 1; done
wait
rm -f /tmp/syzkaller16 /tmp/syzkaller16.c /tmp/syzkaller16.core
diff --git a/tools/test/stress2/misc/syzkaller17.sh b/tools/test/stress2/misc/syzkaller17.sh
index 94b33771c59c..1e3f3ec2eb91 100755
--- a/tools/test/stress2/misc/syzkaller17.sh
+++ b/tools/test/stress2/misc/syzkaller17.sh
@@ -124,7 +124,8 @@ while pgrep -q swap; do
(cd /tmp; timeout 1m ./syzkaller17)
[ $((`date +%s` - start)) -ge 60 ] && break
done
-pkill -9 syzkaller17 swap
+pkill -9 syzkaller17
+while pkill swap; do sleep 1; done
wait
rm -f /tmp/syzkaller17 /tmp/syzkaller17.c /tmp/syzkaller17.core
diff --git a/tools/test/stress2/misc/syzkaller18.sh b/tools/test/stress2/misc/syzkaller18.sh
index 12432d23bc65..6a1d41c33084 100755
--- a/tools/test/stress2/misc/syzkaller18.sh
+++ b/tools/test/stress2/misc/syzkaller18.sh
@@ -121,7 +121,8 @@ while pgrep -q swap; do
(cd /tmp; timeout 1m ./syzkaller18)
[ $((`date +%s` - start)) -ge 60 ] && break
done
-pkill -9 syzkaller18 swap
+pkill -9 syzkaller18
+while pkill swap; do sleep 1; done
wait
rm -f /tmp/syzkaller18 /tmp/syzkaller18.c /tmp/syzkaller18.core
diff --git a/tools/test/stress2/misc/syzkaller19.sh b/tools/test/stress2/misc/syzkaller19.sh
index 651f444203e4..116ab539c152 100755
--- a/tools/test/stress2/misc/syzkaller19.sh
+++ b/tools/test/stress2/misc/syzkaller19.sh
@@ -78,7 +78,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter;
+ int iter __unused;
for (iter = 0;; iter++) {
int pid = fork();
if (pid < 0)
@@ -164,7 +164,8 @@ mycc -o /tmp/syzkaller19 -Wall -Wextra -O2 /tmp/syzkaller19.c -lpthread ||
(cd ../testcases/swap; ./swap -t 1m -i 20 -h > /dev/null 2>&1) &
(cd /tmp; ./syzkaller19) &
sleep 60
-pkill -9 syzkaller19 swap
+pkill -9 syzkaller19
+while pkill swap; do sleep 1; done
wait
rm -f /tmp/syzkaller19 /tmp/syzkaller19.c /tmp/syzkaller19.core
diff --git a/tools/test/stress2/misc/syzkaller24.sh b/tools/test/stress2/misc/syzkaller24.sh
index 12a816598b8f..98d4f90b146f 100755
--- a/tools/test/stress2/misc/syzkaller24.sh
+++ b/tools/test/stress2/misc/syzkaller24.sh
@@ -81,7 +81,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter = 0;
+ int iter __unused = 0;
for (;; iter++) {
int pid = fork();
if (pid < 0)
diff --git a/tools/test/stress2/misc/syzkaller25.sh b/tools/test/stress2/misc/syzkaller25.sh
index 6981ce061217..b5a71b5e6e0e 100755
--- a/tools/test/stress2/misc/syzkaller25.sh
+++ b/tools/test/stress2/misc/syzkaller25.sh
@@ -472,5 +472,5 @@ mycc -o /tmp/syzkaller25 -Wall -Wextra -O0 /tmp/syzkaller25.c -lpthread ||
while pkill swap; do :; done
wait
-rm -rf /tmp/syzkaller25 syzkaller25.c /tmp/syzkaller.*
+rm -rf /tmp/syzkaller25 /tmp/syzkaller25.c /tmp/syzkaller.*
exit 0
diff --git a/tools/test/stress2/misc/syzkaller26.sh b/tools/test/stress2/misc/syzkaller26.sh
index f14806199ff5..857ba0eaac65 100755
--- a/tools/test/stress2/misc/syzkaller26.sh
+++ b/tools/test/stress2/misc/syzkaller26.sh
@@ -82,7 +82,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter = 0;
+ int iter __unused = 0;
for (;; iter++) {
int pid = fork();
if (pid < 0)
diff --git a/tools/test/stress2/misc/syzkaller27.sh b/tools/test/stress2/misc/syzkaller27.sh
index b003f6aec319..a84c921e462d 100755
--- a/tools/test/stress2/misc/syzkaller27.sh
+++ b/tools/test/stress2/misc/syzkaller27.sh
@@ -86,7 +86,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter = 0;
+ int iter __unused = 0;
for (;; iter++) {
int pid = fork();
if (pid < 0)
diff --git a/tools/test/stress2/misc/syzkaller28.sh b/tools/test/stress2/misc/syzkaller28.sh
index 1119b067f047..7062d84a8234 100755
--- a/tools/test/stress2/misc/syzkaller28.sh
+++ b/tools/test/stress2/misc/syzkaller28.sh
@@ -220,7 +220,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter = 0;
+ int iter __unused = 0;
for (;; iter++) {
int pid = fork();
if (pid < 0)
@@ -352,5 +352,5 @@ mycc -o /tmp/syzkaller28 -Wall -Wextra -O0 /tmp/syzkaller28.c -lpthread ||
while pkill swap; do :; done
wait
-rm -rf /tmp/syzkaller28 syzkaller28.c /tmp/syzkaller.*
+rm -rf /tmp/syzkaller28 /tmp/syzkaller28.c /tmp/syzkaller.*
exit 0
diff --git a/tools/test/stress2/misc/syzkaller29.sh b/tools/test/stress2/misc/syzkaller29.sh
index 7718c569482d..5976e2cc596d 100755
--- a/tools/test/stress2/misc/syzkaller29.sh
+++ b/tools/test/stress2/misc/syzkaller29.sh
@@ -26,6 +26,9 @@
# Fixed by r368116
+# May change policy for random threads to domainset_fixed
+exit 0
+
. ../default.cfg
cat > /tmp/syzkaller29.c <<EOF
// https://syzkaller.appspot.com/bug?id=c3452066dba9238c4551010eb130944442d9174f
@@ -76,7 +79,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter = 0;
+ int iter __unused = 0;
for (;; iter++) {
int pid = fork();
if (pid < 0)
@@ -124,5 +127,5 @@ mycc -o /tmp/syzkaller29 -Wall -Wextra -O0 /tmp/syzkaller29.c ||
(cd /tmp; timeout 3m ./syzkaller29)
-rm -rf /tmp/syzkaller29 syzkaller29.c /tmp/syzkaller.*
+rm -rf /tmp/syzkaller29 /tmp/syzkaller29.c /tmp/syzkaller.*
exit 0
diff --git a/tools/test/stress2/misc/syzkaller30.sh b/tools/test/stress2/misc/syzkaller30.sh
index a224652865db..d159da78307c 100755
--- a/tools/test/stress2/misc/syzkaller30.sh
+++ b/tools/test/stress2/misc/syzkaller30.sh
@@ -29,6 +29,9 @@
# Fixed by r368462
+# May change policy for random threads to domainset_fixed
+exit 0
+
. ../default.cfg
cat > /tmp/syzkaller30.c <<EOF
// https://syzkaller.appspot.com/bug?id=6652adb41773e5c471c98342fefcbfb041af9ac8
@@ -63,5 +66,5 @@ mycc -o /tmp/syzkaller30 -Wall -Wextra -O0 /tmp/syzkaller30.c ||
(cd /tmp; timeout 3m ./syzkaller30)
-rm -rf /tmp/syzkaller30 syzkaller30.c /tmp/syzkaller.*
+rm -rf /tmp/syzkaller30 /tmp/syzkaller30.c /tmp/syzkaller.*
exit 0
diff --git a/tools/test/stress2/misc/syzkaller31.sh b/tools/test/stress2/misc/syzkaller31.sh
index af93a89a127c..9815ac16f404 100755
--- a/tools/test/stress2/misc/syzkaller31.sh
+++ b/tools/test/stress2/misc/syzkaller31.sh
@@ -228,7 +228,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter = 0;
+ int iter __unused = 0;
for (;; iter++) {
int pid = fork();
if (pid < 0)
@@ -320,5 +320,5 @@ mycc -o /tmp/syzkaller31 -Wall -Wextra -O0 /tmp/syzkaller31.c -lpthread ||
while pkill swap; do :; done
wait
-rm -rf /tmp/syzkaller31 syzkaller31.c /tmp/syzkaller.*
+rm -rf /tmp/syzkaller31 /tmp/syzkaller31.c /tmp/syzkaller.*
exit 0
diff --git a/tools/test/stress2/misc/syzkaller32.sh b/tools/test/stress2/misc/syzkaller32.sh
index a95871969d5c..1d96f1e3deff 100755
--- a/tools/test/stress2/misc/syzkaller32.sh
+++ b/tools/test/stress2/misc/syzkaller32.sh
@@ -231,7 +231,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter = 0;
+ int iter __unused = 0;
for (;; iter++) {
int pid = fork();
if (pid < 0)
@@ -295,5 +295,5 @@ mycc -o /tmp/syzkaller32 -Wall -Wextra -O0 /tmp/syzkaller32.c -lpthread ||
while pkill swap; do :; done
wait
-rm -rf /tmp/syzkaller32 syzkaller32.c /tmp/syzkaller.*
+rm -rf /tmp/syzkaller32 /tmp/syzkaller32.c /tmp/syzkaller.*
exit 0
diff --git a/tools/test/stress2/misc/syzkaller33.sh b/tools/test/stress2/misc/syzkaller33.sh
index 746cecbffaab..fac3318e4d0d 100755
--- a/tools/test/stress2/misc/syzkaller33.sh
+++ b/tools/test/stress2/misc/syzkaller33.sh
@@ -88,7 +88,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter = 0;
+ int iter __unused = 0;
for (;; iter++) {
int pid = fork();
if (pid < 0)
@@ -138,5 +138,5 @@ mycc -o /tmp/syzkaller33 -Wall -Wextra -O0 /tmp/syzkaller33.c ||
(cd /tmp; timeout 3m ./syzkaller33)
-rm -rf /tmp/syzkaller33 syzkaller33.c /tmp/syzkaller.*
+rm -rf /tmp/syzkaller33 /tmp/syzkaller33.c /tmp/syzkaller.*
exit 0
diff --git a/tools/test/stress2/misc/syzkaller34.sh b/tools/test/stress2/misc/syzkaller34.sh
index c426fef129b1..d8b89991c2f2 100755
--- a/tools/test/stress2/misc/syzkaller34.sh
+++ b/tools/test/stress2/misc/syzkaller34.sh
@@ -53,7 +53,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter = 0;
+ int iter __unused = 0;
for (;; iter++) {
int pid = fork();
if (pid < 0)
@@ -115,5 +115,5 @@ mycc -o /tmp/syzkaller34 -Wall -Wextra -O0 /tmp/syzkaller34.c ||
(cd /tmp; timeout 3m ./syzkaller34)
-rm -rf /tmp/syzkaller34 syzkaller34.c /tmp/syzkaller.*
+rm -rf /tmp/syzkaller34 /tmp/syzkaller34.c /tmp/syzkaller.*
exit 0
diff --git a/tools/test/stress2/misc/syzkaller35.sh b/tools/test/stress2/misc/syzkaller35.sh
index 14619c24ab9c..768fadd1f9b0 100755
--- a/tools/test/stress2/misc/syzkaller35.sh
+++ b/tools/test/stress2/misc/syzkaller35.sh
@@ -97,5 +97,5 @@ kldload cryptodev.ko && loaded=1
(cd /tmp; timeout 3m ./syzkaller35)
[ $loaded ] && kldunload cryptodev.ko
-rm -rf /tmp/syzkaller35 syzkaller35.c /tmp/syzkaller.*
+rm -rf /tmp/syzkaller35 /tmp/syzkaller35.c /tmp/syzkaller.*
exit 0
diff --git a/tools/test/stress2/misc/syzkaller36.sh b/tools/test/stress2/misc/syzkaller36.sh
index ca4678408a25..8be90573431d 100755
--- a/tools/test/stress2/misc/syzkaller36.sh
+++ b/tools/test/stress2/misc/syzkaller36.sh
@@ -94,5 +94,5 @@ kldload cryptodev.ko && loaded=1
(cd /tmp; timeout 3m ./syzkaller36)
[ $loaded ] && kldunload cryptodev.ko
-rm -rf /tmp/syzkaller36 syzkaller36.c /tmp/syzkaller.*
+rm -rf /tmp/syzkaller36 /tmp/syzkaller36.c /tmp/syzkaller.*
exit 0
diff --git a/tools/test/stress2/misc/syzkaller37.sh b/tools/test/stress2/misc/syzkaller37.sh
index cda44530af85..4eef524bb3f8 100755
--- a/tools/test/stress2/misc/syzkaller37.sh
+++ b/tools/test/stress2/misc/syzkaller37.sh
@@ -95,5 +95,5 @@ kldload cryptodev.ko && loaded=1
(cd /tmp; timeout 3m ./syzkaller37)
[ $loaded ] && kldunload cryptodev.ko
-rm -rf /tmp/syzkaller37 syzkaller37.c /tmp/syzkaller.*
+rm -rf /tmp/syzkaller37 /tmp/syzkaller37.c /tmp/syzkaller.*
exit 0
diff --git a/tools/test/stress2/misc/syzkaller38.sh b/tools/test/stress2/misc/syzkaller38.sh
index 2bd42e98a644..568e536ed00c 100755
--- a/tools/test/stress2/misc/syzkaller38.sh
+++ b/tools/test/stress2/misc/syzkaller38.sh
@@ -59,5 +59,5 @@ mycc -o /tmp/syzkaller38 -Wall -Wextra -O0 /tmp/syzkaller38.c ||
(cd /tmp; timeout 3m ./syzkaller38)
-rm -rf /tmp/syzkaller38 syzkaller38.c /tmp/syzkaller.*
+rm -rf /tmp/syzkaller38 /tmp/syzkaller38.c /tmp/syzkaller.*
exit 0
diff --git a/tools/test/stress2/misc/syzkaller39.sh b/tools/test/stress2/misc/syzkaller39.sh
index e19f19d2c751..ca1573ea6465 100755
--- a/tools/test/stress2/misc/syzkaller39.sh
+++ b/tools/test/stress2/misc/syzkaller39.sh
@@ -240,5 +240,5 @@ mycc -o /tmp/syzkaller39 -Wall -Wextra -O0 /tmp/syzkaller39.c -lpthread ||
(cd /tmp; timeout 3m ./syzkaller39)
-rm -rf /tmp/syzkaller39 syzkaller39.c /tmp/syzkaller.*
+rm -rf /tmp/syzkaller39 /tmp/syzkaller39.c /tmp/syzkaller.*
exit 0
diff --git a/tools/test/stress2/misc/syzkaller4.sh b/tools/test/stress2/misc/syzkaller4.sh
index 2a14d4d2b776..06797980b2a0 100755
--- a/tools/test/stress2/misc/syzkaller4.sh
+++ b/tools/test/stress2/misc/syzkaller4.sh
@@ -215,7 +215,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter;
+ int iter __unused;
for (iter = 0;; iter++) {
int pid = fork();
if (pid < 0)
diff --git a/tools/test/stress2/misc/syzkaller40.sh b/tools/test/stress2/misc/syzkaller40.sh
index 8c4d3e4ee54e..e094ca15621a 100755
--- a/tools/test/stress2/misc/syzkaller40.sh
+++ b/tools/test/stress2/misc/syzkaller40.sh
@@ -81,5 +81,5 @@ mycc -o /tmp/syzkaller40 -Wall -Wextra -O0 /tmp/syzkaller40.c -lpthread ||
(cd /tmp; timeout 3m ./syzkaller40)
-rm -rf /tmp/syzkaller40 syzkaller40.c /tmp/syzkaller.*
+rm -rf /tmp/syzkaller40 /tmp/syzkaller40.c /tmp/syzkaller.*
exit 0
diff --git a/tools/test/stress2/misc/syzkaller41.sh b/tools/test/stress2/misc/syzkaller41.sh
index 762f155e33bf..a2f87ef0260e 100755
--- a/tools/test/stress2/misc/syzkaller41.sh
+++ b/tools/test/stress2/misc/syzkaller41.sh
@@ -280,5 +280,5 @@ mycc -o /tmp/syzkaller41 -Wall -Wextra -O0 /tmp/syzkaller41.c -lpthread ||
(cd /tmp; timeout 3m ./syzkaller41)
-rm -rf /tmp/syzkaller41 syzkaller41.c /tmp/syzkaller.*
+rm -rf /tmp/syzkaller41 /tmp/syzkaller41.c /tmp/syzkaller.*
exit 0
diff --git a/tools/test/stress2/misc/syzkaller42.sh b/tools/test/stress2/misc/syzkaller42.sh
index 07425e4b8731..e0a02e18df2d 100755
--- a/tools/test/stress2/misc/syzkaller42.sh
+++ b/tools/test/stress2/misc/syzkaller42.sh
@@ -75,7 +75,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter = 0;
+ int iter __unused = 0;
for (;; iter++) {
int pid = fork();
if (pid < 0)
@@ -120,5 +120,5 @@ mycc -o /tmp/syzkaller42 -Wall -Wextra -O0 /tmp/syzkaller42.c -lpthread ||
(cd /tmp; timeout 3m ./syzkaller42)
-rm -rf /tmp/syzkaller42 syzkaller42.c /tmp/syzkaller.*
+rm -rf /tmp/syzkaller42 /tmp/syzkaller42.c /tmp/syzkaller.*
exit 0
diff --git a/tools/test/stress2/misc/syzkaller43.sh b/tools/test/stress2/misc/syzkaller43.sh
index 025ee674132d..fb32ea77ab66 100755
--- a/tools/test/stress2/misc/syzkaller43.sh
+++ b/tools/test/stress2/misc/syzkaller43.sh
@@ -214,7 +214,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter = 0;
+ int iter __unused = 0;
for (;; iter++) {
int pid = fork();
if (pid < 0)
@@ -323,5 +323,5 @@ mycc -o /tmp/syzkaller43 -Wall -Wextra -O0 /tmp/syzkaller43.c -lpthread ||
(cd /tmp; timeout 3m ./syzkaller43)
-rm -rf /tmp/syzkaller43 syzkaller43.c /tmp/syzkaller.*
+rm -rf /tmp/syzkaller43 /tmp/syzkaller43.c /tmp/syzkaller.*
exit 0
diff --git a/tools/test/stress2/misc/syzkaller46.sh b/tools/test/stress2/misc/syzkaller46.sh
new file mode 100755
index 000000000000..db1c9c27b221
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller46.sh
@@ -0,0 +1,118 @@
+#!/bin/sh
+
+# Fatal trap 12: page fault while in kernel mode
+# cpuid = 4; apic id = 04
+# fault virtual address = 0x28
+# fault code = supervisor read data, page not present
+# instruction pointer = 0x20:0xffffffff81549dea
+# stack pointer = 0x28:0xfffffe01d8689480
+# frame pointer = 0x28:0xfffffe01d8689490
+# code segment = base 0x0, limit 0xfffff, type 0x1b
+# = DPL 0, pres 1, long 1, def32 0, gran 1
+# processor eflags = interrupt enabled, resume, IOPL = 0
+# current process = 3050 (syzkaller46)
+# trap number = 12
+# panic: page fault
+# cpuid = 4
+# time = 1635158869
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0xa5/frame 0xfffffe01d8688cb0
+# kdb_backtrace() at kdb_backtrace+0xc9/frame 0xfffffe01d8688e10
+# vpanic() at vpanic+0x248/frame 0xfffffe01d8688ef0
+# panic() at panic+0xb5/frame 0xfffffe01d8688fb0
+# trap_fatal() at trap_fatal+0x52e/frame 0xfffffe01d86890b0
+# trap_pfault() at trap_pfault+0x132/frame 0xfffffe01d86891d0
+# trap() at trap+0x53f/frame 0xfffffe01d86893b0
+# calltrap() at calltrap+0x8/frame 0xfffffe01d86893b0
+# --- trap 0xc, rip = 0xffffffff81549dea, rsp = 0xfffffe01d8689480, rbp = 0xfffffe01d8689490 ---
+# filt_bpfwrite() filt_bpfwrite+0x4a/frame 0xfffffe01d8689490
+# kqueue_register() at kqueue_register+0xea3/frame 0xfffffe01d86895d0
+# kqueue_kevent() at kqueue_kevent+0x26a/frame 0xfffffe01d86899c0
+# kern_kevent_fp() at kern_kevent_fp+0xd2/frame 0xfffffe01d8689a10
+# kern_kevent() at kern_kevent+0x138/frame 0xfffffe01d8689b10
+# kern_kevent_generic() at kern_kevent_gene6/frame 0xfffffesys_kevent() at sys_kevent+0x1e1/frame 0xfffffe01d8689d30
+# amd64_syscall() at amd64_syscall+0x31e/frame 0xfffffe01d8689f30
+# fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe01d8689f30
+# --- syscall (0, FreeBSD ELF64, nosys), rip = 0x8003adafa, rsp = 0x7fffffffe648, rbp = 0x7fffffffe670 ---
+# KDB: enter: panic
+# [ thread pid 3050 tid 100263 ]
+# Stopped at kdb_enter+0x37: movq $0,0x2638c4e(%rip)
+# db> x/s version
+# version: FreeBSD 14.0-CURRENT #0 main-n250242-eab5358b9080-dirty: Mon Oct 25 11:32:45 CEST 2021
+# pho@mercat1.netperf.freebsd.org
+# db>
+
+
+[ `uname -p` != "amd64" ] && exit 0
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+cat > /tmp/syzkaller46.c <<EOF
+// https://syzkaller.appspot.com/bug?id=a99f705b2b8b854d70ec4d47eed481c90046bd3c
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+ae45d5166afe15a5a21d@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <pwd.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <unistd.h>
+
+uint64_t r[1] = {0xffffffffffffffff};
+
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ intptr_t res = 0;
+ memcpy((void*)0x20000040, "/dev/bpf\000", 9);
+ syscall(SYS_openat, 0xffffffffffffff9cul, 0x20000040ul, 0ul, 0ul);
+ res = syscall(SYS_kqueue);
+ if (res != -1)
+ r[0] = res;
+ *(uint64_t*)0x20000480 = 0x284;
+ *(uint16_t*)0x20000488 = 0xfff8;
+ *(uint16_t*)0x2000048a = 0x10;
+ *(uint32_t*)0x2000048c = 1;
+ *(uint64_t*)0x20000490 = 0x401;
+ *(uint64_t*)0x20000498 = 5;
+ *(uint64_t*)0x200004a0 = 5;
+ *(uint64_t*)0x200004a8 = 0x24000000;
+ *(uint64_t*)0x200004b0 = 0x100000000;
+ *(uint64_t*)0x200004b8 = 0x3f;
+ *(uint64_t*)0x200004c0 = 3;
+ *(uint16_t*)0x200004c8 = 0xfffe;
+ *(uint16_t*)0x200004ca = 1;
+ *(uint32_t*)0x200004cc = 1;
+ *(uint64_t*)0x200004d0 = 1;
+ *(uint64_t*)0x200004d8 = 3;
+ *(uint64_t*)0x200004e0 = 9;
+ *(uint64_t*)0x200004e8 = 0x3ff;
+ *(uint64_t*)0x200004f0 = 0x100000001;
+ *(uint64_t*)0x200004f8 = 3;
+ *(uint64_t*)0x20000500 = 5;
+ *(uint16_t*)0x20000508 = 0xfffe;
+ *(uint16_t*)0x2000050a = 0x42;
+ *(uint32_t*)0x2000050c = 2;
+ *(uint64_t*)0x20000510 = 5;
+ *(uint64_t*)0x20000518 = 0x7f;
+ *(uint64_t*)0x20000520 = 9;
+ *(uint64_t*)0x20000528 = 0x600000000;
+ *(uint64_t*)0x20000530 = 0x1f;
+ *(uint64_t*)0x20000538 = 7;
+ syscall(SYS_kevent, r[0], 0x20000480ul, 3ul, 0x200001c0ul, 0xaul, 0ul);
+ return 0;
+}
+EOF
+mycc -o /tmp/syzkaller46 -Wall -Wextra -O0 /tmp/syzkaller46.c -lpthread || exit 1
+
+(cd /tmp; ./syzkaller46)
+
+rm -rf /tmp/syzkaller46 /tmp/syzkaller46.c /tmp/syzkaller.*
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller47.sh b/tools/test/stress2/misc/syzkaller47.sh
new file mode 100755
index 000000000000..76561282a86b
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller47.sh
@@ -0,0 +1,404 @@
+#!/bin/sh
+
+# panic: ASan: Invalid access, 32-byte read at 0xfffffe01f76145a0, UseAfterScope(f8)
+# cpuid = 3
+# time = 1635158022
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0xa5/frame 0xfffffe01f7614170
+# kdb_backtrace() at kdb_backtrace+0xc9/frame 0xfffffe01f76142d0
+# vpanic() at vpanic+0x248/frame 0xfffffe01f76143b0
+# panic() at panic+0xb5/frame 0xfffffe01f7614480
+# __asan_storeN() at __asan_storeN/frame 0xfffffe01f7614550
+# smp_masked_invlpg_range() at smp_masked_invlpg_range+0xb2/frame 0xfffffe01f7614630
+# pmap_invalidate_range() at pmap_invalidate_range+0x22b/frame 0xfffffe01f7614730
+# vm_thread_stack_create() at vm_thread_stack_create+0xf5/frame 0xfffffe01f7614910
+# kstack_import() at kstack_import+0xcache_alloc() at cache_alloc+0x556/frame 0xfffffe01f7614a10
+# cache_alloc_retry() at cache_alloc_retry+0x30/frame 0xfffffe01f7614a80
+# vm_thread_new() at vm_thread_new+0x61/frame 0xfffffe01f7614ab0
+# thread_alloc() at thread_alloc+0x5f/frame 0xfffffe01f7614af0
+# thread_create() at thread_create+0x1b3/frame 0xfffffe01f7614bf0
+# sys_thr_new() at sys_thr_new+0x15a/framd30
+# amd64_syscall() at amd64_syscall+0x31e/frame 0xfffffe01f7614f30
+# fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe01f7614f30
+# --- syscall (0, FreeBSD ELF64, nosys), rip = 0x8003afafa, rsp = 0x7fffdfffdf58, rbp = 0x7fffdfffdf70 ---
+# KDB: enter: panic
+# [ thread pid 69407 tid 100937 ]
+# Stopped at kdb_enter+0x37: movq $0,0x2638c4e(%rip)
+# db> x/s version
+# version: FreeBSD 14.0-CURRENT #0 main-n250242-eab5358b9080-dirty: Mon Oct 25 11:32:45 CEST 2021
+# pho@mercat1.netperf.freebsd.org:/usr/src/sys/amd64/compile/PHO-KASAN
+# db>
+
+[ `uname -p` != "amd64" ] && exit 0
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+[ "`sysctl -in kern.features.kasan`" != "1" ] && exit 0
+
+. ../default.cfg
+cat > /tmp/syzkaller47.c <<EOF
+// https://syzkaller.appspot.com/bug?id=5676c1c4b457596c1a8782e4a8533f4e9ff2aa0e
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+a5898c11651b423b501f@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <sys/types.h>
+
+#include <dirent.h>
+#include <errno.h>
+#include <pthread.h>
+#include <pwd.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/resource.h>
+#include <sys/stat.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+#include <time.h>
+#include <unistd.h>
+
+static __thread int skip_segv;
+static __thread jmp_buf segv_env;
+
+static void segv_handler(int sig, siginfo_t* info, void* ctx __unused)
+{
+ uintptr_t addr = (uintptr_t)info->si_addr;
+ const uintptr_t prog_start = 1 << 20;
+ const uintptr_t prog_end = 100 << 20;
+ int skip = __atomic_load_n(&skip_segv, __ATOMIC_RELAXED) != 0;
+ int valid = addr < prog_start || addr > prog_end;
+ if (sig == SIGBUS)
+ valid = 1;
+ if (skip && valid) {
+ _longjmp(segv_env, 1);
+ }
+ exit(sig);
+}
+
+static void install_segv_handler(void)
+{
+ struct sigaction sa;
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_sigaction = segv_handler;
+ sa.sa_flags = SA_NODEFER | SA_SIGINFO;
+ sigaction(SIGSEGV, &sa, NULL);
+ sigaction(SIGBUS, &sa, NULL);
+}
+
+#define NONFAILING(...) \
+ ({ \
+ int ok = 1; \
+ __atomic_fetch_add(&skip_segv, 1, __ATOMIC_SEQ_CST); \
+ if (_setjmp(segv_env) == 0) { \
+ __VA_ARGS__; \
+ } else \
+ ok = 0; \
+ __atomic_fetch_sub(&skip_segv, 1, __ATOMIC_SEQ_CST); \
+ ok; \
+ })
+
+static void kill_and_wait(int pid, int* status)
+{
+ kill(pid, SIGKILL);
+ while (waitpid(-1, status, 0) != pid) {
+ }
+}
+
+static void sleep_ms(uint64_t ms)
+{
+ usleep(ms * 1000);
+}
+
+static uint64_t current_time_ms(void)
+{
+ struct timespec ts;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(1);
+ return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
+}
+
+static void use_temporary_dir(void)
+{
+ char tmpdir_template[] = "./syzkaller.XXXXXX";
+ char* tmpdir = mkdtemp(tmpdir_template);
+ if (!tmpdir)
+ exit(1);
+ if (chmod(tmpdir, 0777))
+ exit(1);
+ if (chdir(tmpdir))
+ exit(1);
+}
+
+static void __attribute__((noinline)) remove_dir(const char* dir)
+{
+ DIR* dp = opendir(dir);
+ if (dp == NULL) {
+ if (errno == EACCES) {
+ if (rmdir(dir))
+ exit(1);
+ return;
+ }
+ exit(1);
+ }
+ struct dirent* ep = 0;
+ while ((ep = readdir(dp))) {
+ if (strcmp(ep->d_name, ".") == 0 || strcmp(ep->d_name, "..") == 0)
+ continue;
+ char filename[FILENAME_MAX];
+ snprintf(filename, sizeof(filename), "%s/%s", dir, ep->d_name);
+ struct stat st;
+ if (lstat(filename, &st))
+ exit(1);
+ if (S_ISDIR(st.st_mode)) {
+ remove_dir(filename);
+ continue;
+ }
+ if (unlink(filename))
+ exit(1);
+ }
+ closedir(dp);
+ if (rmdir(dir))
+ exit(1);
+}
+
+static void thread_start(void* (*fn)(void*), void* arg)
+{
+ pthread_t th;
+ pthread_attr_t attr;
+ pthread_attr_init(&attr);
+ pthread_attr_setstacksize(&attr, 128 << 10);
+ int i = 0;
+ for (; i < 100; i++) {
+ if (pthread_create(&th, &attr, fn, arg) == 0) {
+ pthread_attr_destroy(&attr);
+ return;
+ }
+ if (errno == EAGAIN) {
+ usleep(50);
+ continue;
+ }
+ break;
+ }
+ exit(1);
+}
+
+typedef struct {
+ pthread_mutex_t mu;
+ pthread_cond_t cv;
+ int state;
+} event_t;
+
+static void event_init(event_t* ev)
+{
+ if (pthread_mutex_init(&ev->mu, 0))
+ exit(1);
+ if (pthread_cond_init(&ev->cv, 0))
+ exit(1);
+ ev->state = 0;
+}
+
+static void event_reset(event_t* ev)
+{
+ ev->state = 0;
+}
+
+static void event_set(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ if (ev->state)
+ exit(1);
+ ev->state = 1;
+ pthread_mutex_unlock(&ev->mu);
+ pthread_cond_broadcast(&ev->cv);
+}
+
+static void event_wait(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ while (!ev->state)
+ pthread_cond_wait(&ev->cv, &ev->mu);
+ pthread_mutex_unlock(&ev->mu);
+}
+
+static int event_isset(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+static int event_timedwait(event_t* ev, uint64_t timeout)
+{
+ uint64_t start = current_time_ms();
+ uint64_t now = start;
+ pthread_mutex_lock(&ev->mu);
+ for (;;) {
+ if (ev->state)
+ break;
+ uint64_t remain = timeout - (now - start);
+ struct timespec ts;
+ ts.tv_sec = remain / 1000;
+ ts.tv_nsec = (remain % 1000) * 1000 * 1000;
+ pthread_cond_timedwait(&ev->cv, &ev->mu, &ts);
+ now = current_time_ms();
+ if (now - start > timeout)
+ break;
+ }
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+static void sandbox_common()
+{
+ struct rlimit rlim;
+ rlim.rlim_cur = rlim.rlim_max = 128 << 20;
+ setrlimit(RLIMIT_AS, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 8 << 20;
+ setrlimit(RLIMIT_MEMLOCK, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 1 << 20;
+ setrlimit(RLIMIT_FSIZE, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 1 << 20;
+ setrlimit(RLIMIT_STACK, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 0;
+ setrlimit(RLIMIT_CORE, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 256;
+ setrlimit(RLIMIT_NOFILE, &rlim);
+}
+
+static void loop();
+
+static int do_sandbox_none(void)
+{
+ sandbox_common();
+ loop();
+ return 0;
+}
+
+struct thread_t {
+ int created, call;
+ event_t ready, done;
+};
+
+static struct thread_t threads[16];
+static void execute_call(int call);
+static int running;
+
+static void* thr(void* arg)
+{
+ struct thread_t* th = (struct thread_t*)arg;
+ for (;;) {
+ event_wait(&th->ready);
+ event_reset(&th->ready);
+ execute_call(th->call);
+ __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->done);
+ }
+ return 0;
+}
+
+static void execute_one(void)
+{
+ int i, call, thread;
+ int collide = 0;
+again:
+ for (call = 0; call < 2; call++) {
+ for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0]));
+ thread++) {
+ struct thread_t* th = &threads[thread];
+ if (!th->created) {
+ th->created = 1;
+ event_init(&th->ready);
+ event_init(&th->done);
+ event_set(&th->done);
+ thread_start(thr, th);
+ }
+ if (!event_isset(&th->done))
+ continue;
+ event_reset(&th->done);
+ th->call = call;
+ __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->ready);
+ if (collide && (call % 2) == 0)
+ break;
+ event_timedwait(&th->done, 50);
+ break;
+ }
+ }
+ for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++)
+ sleep_ms(1);
+ if (!collide) {
+ collide = 1;
+ goto again;
+ }
+}
+
+static void execute_one(void);
+
+#define WAIT_FLAGS 0
+
+static void loop(void)
+{
+ int iter = 0;
+ for (;; iter++) {
+ char cwdbuf[32];
+ sprintf(cwdbuf, "./%d", iter);
+ if (mkdir(cwdbuf, 0777))
+ exit(1);
+ int pid = fork();
+ if (pid < 0)
+ exit(1);
+ if (pid == 0) {
+ if (chdir(cwdbuf))
+ exit(1);
+ execute_one();
+ exit(0);
+ }
+ int status = 0;
+ uint64_t start = current_time_ms();
+ for (;;) {
+ if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid)
+ break;
+ sleep_ms(1);
+ if (current_time_ms() - start < 5000)
+ continue;
+ kill_and_wait(pid, &status);
+ break;
+ }
+ remove_dir(cwdbuf);
+ }
+}
+
+void execute_call(int call)
+{
+ switch (call) {
+ case 0:
+ syscall(SYS_rfork, 0x4030ul);
+ break;
+ case 1:
+ syscall(SYS_thr_new, 0ul, 0ul);
+ break;
+ }
+}
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ install_segv_handler();
+ use_temporary_dir();
+ do_sandbox_none();
+ return 0;
+}
+EOF
+mycc -o /tmp/syzkaller47 -Wall -Wextra -O0 /tmp/syzkaller47.c -lpthread || exit 1
+
+(cd /tmp; timeout 2m ./syzkaller47)
+
+rm -rf /tmp/syzkaller47 /tmp/syzkaller47.c /tmp/syzkaller.*
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller48.sh b/tools/test/stress2/misc/syzkaller48.sh
new file mode 100755
index 000000000000..6cb59576bbfd
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller48.sh
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+# Fixed by:
+# 628c3b307fb2 - main - cache: only let non-dir descriptors through when doing EMPTYPATH lookups
+
+. ../default.cfg
+[ `id -u` -ne 0 ] && echo "Must be root!" && exit 1
+
+cat > /tmp/syzkaller48.c <<EOF
+// Reported-by: syzbot+9aa5439dd9c708aeb1a8@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <pwd.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <unistd.h>
+
+#ifndef SYS___realpathat
+#define SYS___realpathat 574
+#endif
+
+uint64_t r[1] = {0xffffffffffffffff};
+
+int main(void)
+{
+ int i;
+
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ intptr_t res = 0;
+ memcpy((void*)0x200000c0, "./file0\000", 8);
+ for (i = 0; i < 1000; i++) {
+ res = syscall(SYS_open, 0x200000c0ul, 0x48300ul, 0ul);
+ if (res != -1)
+ r[0] = res;
+ memcpy((void*)0x20000080, ".\000", 2);
+ syscall(SYS___realpathat, r[0], 0x20000080ul, 0x200002c0ul, 0xabul, 0ul);
+ close(res);
+ }
+ return 0;
+}
+EOF
+
+set -e
+mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
+[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 5g -u $mdstart
+newfs $newfs_flags -n md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+set +e
+
+mkdir $mntpoint/work
+mycc -o $mntpoint/work/syzkaller48 -Wall -Wextra -O0 /tmp/syzkaller48.c || exit 1
+
+while true; do
+ touch $mntpoint/work/file0
+ rm $mntpoint/work/file0
+done &
+
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 120 ]; do
+ (cd $mntpoint/work; ./syzkaller48)
+done
+kill $!
+wait
+ls -l $mntpoint/work
+
+for i in `jot 6`; do
+ mount | grep -q "on $mntpoint " || break
+ umount $mntpoint && break || sleep 10
+ [ $i -eq 6 ] &&
+ { echo FATAL; fstat -mf $mntpoint; exit 1; }
+done
+mdconfig -d -u $mdstart
+
+rm -rf /tmp/syzkaller48.c
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller49.sh b/tools/test/stress2/misc/syzkaller49.sh
new file mode 100755
index 000000000000..d2810be64c87
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller49.sh
@@ -0,0 +1,299 @@
+#!/bin/sh
+
+# Fatal trap 12: page fault while in kernel mode
+# cpuid = 10; apic id = 0a
+# fault virtual address = 0x0
+# fault code = supervisor read data, page not present
+# instruction pointer = 0x20:0xffffffff80e04f35
+# stack pointer = 0x28:0xfffffe014fd0fbc0
+# frame pointer = 0x28:0xfffffe014fd0fc00
+# code segment = base 0x0, limit 0xfffff, type 0x1b
+# = DPL 0, pres 1, long 1, def32 0, gran 1
+# processor eflags = interrupt enabled, resume, IOPL = 0
+# current process = 13332 (repro77)
+# trap number = 12
+# panic: page fault
+# cpuid = 10
+# time = 1640585179
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe014fd0f980
+# vpanic() at vpanic+0x17f/frame 0xfffffe014fd0f9d0
+# panic() at panic+0x43/frame 0xfffffe014fd0fa30
+# trap_fatal() at trap_fatal+0x385/frame 0xfffffe014fd0fa90
+# trap_pfault() at trap_pfault+0xab/frame 0xfffffe014fd0faf0
+# calltrap() at calltrap+0x8/frame 0xfffffe014fd0faf0
+# --- trap 0xc, rip = 0xffffffff80e04f35, rsp = 0xfffffe014fd0fbc0, rbp = 0xfffffe014fd0fc00 ---
+# tcp_usr_rcvd() at tcp_usr_rcvd+0x65/frame 0xfffffe014fd0fc00
+# soreceive_generic() at soreceive_generic+0xe44/frame 0xfffffe014fd0fcc0
+# soreceive() at soreceive+0x4b/frame 0xfffffe014fd0fce0
+# kern_recvit() at kern_recvit+0x1ba/frame 0xfffffe014fd0fd90
+# sys_recvmsg() at sys_recvmsg+0x6f/frame 0xfffffe014fd0fe00
+# amd64_syscall() at amd64_syscall+0x145/frame 0xfffffe014fd0ff30
+# fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe014fd0ff30
+# --- syscall (0, FreeBSD ELF64, nosys), rip = 0x8020e328a, rsp = 0x22f48, rbp = 0x22f70 ---
+# KDB: enter: panic
+# [ thread pid 13332 tid 103311 ]
+# Stopped at kdb_enter+0x37: movq $0,0x128720e(%rip)
+# db> x/s version
+# version: FreeBSD 14.0-CURRENT #0 ufs-n251956-c3008785b91: Mon Dec 27 06:11:30 CET 2021
+# pho@mercat1.netperf.freebsd.org:/var/tmp/deviant3/sys/amd64/compile/PHO
+# db>
+
+. ../default.cfg
+[ `id -u` -ne 0 ] && echo "Must be root!" && exit 1
+
+cat > /tmp/syzkaller49.c <<EOF
+// https://syzkaller.appspot.com/bug?id=efb2e9f019f36fbc39380724a31cb0c458bb4e61
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+93c75c4618b2a4f0f0ac@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <errno.h>
+#include <pthread.h>
+#include <pwd.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <time.h>
+#include <unistd.h>
+
+static void sleep_ms(uint64_t ms)
+{
+ usleep(ms * 1000);
+}
+
+static uint64_t current_time_ms(void)
+{
+ struct timespec ts;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(1);
+ return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
+}
+
+static void thread_start(void* (*fn)(void*), void* arg)
+{
+ pthread_t th;
+ pthread_attr_t attr;
+ pthread_attr_init(&attr);
+ pthread_attr_setstacksize(&attr, 128 << 10);
+ int i = 0;
+ for (; i < 100; i++) {
+ if (pthread_create(&th, &attr, fn, arg) == 0) {
+ pthread_attr_destroy(&attr);
+ return;
+ }
+ if (errno == EAGAIN) {
+ usleep(50);
+ continue;
+ }
+ break;
+ }
+ exit(1);
+}
+
+typedef struct {
+ pthread_mutex_t mu;
+ pthread_cond_t cv;
+ int state;
+} event_t;
+
+static void event_init(event_t* ev)
+{
+ if (pthread_mutex_init(&ev->mu, 0))
+ exit(1);
+ if (pthread_cond_init(&ev->cv, 0))
+ exit(1);
+ ev->state = 0;
+}
+
+static void event_reset(event_t* ev)
+{
+ ev->state = 0;
+}
+
+static void event_set(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ if (ev->state)
+ exit(1);
+ ev->state = 1;
+ pthread_mutex_unlock(&ev->mu);
+ pthread_cond_broadcast(&ev->cv);
+}
+
+static void event_wait(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ while (!ev->state)
+ pthread_cond_wait(&ev->cv, &ev->mu);
+ pthread_mutex_unlock(&ev->mu);
+}
+
+static int event_isset(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+static int event_timedwait(event_t* ev, uint64_t timeout)
+{
+ uint64_t start = current_time_ms();
+ uint64_t now = start;
+ pthread_mutex_lock(&ev->mu);
+ for (;;) {
+ if (ev->state)
+ break;
+ uint64_t remain = timeout - (now - start);
+ struct timespec ts;
+ ts.tv_sec = remain / 1000;
+ ts.tv_nsec = (remain % 1000) * 1000 * 1000;
+ pthread_cond_timedwait(&ev->cv, &ev->mu, &ts);
+ now = current_time_ms();
+ if (now - start > timeout)
+ break;
+ }
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+struct thread_t {
+ int created, call;
+ event_t ready, done;
+};
+
+static struct thread_t threads[16];
+static void execute_call(int call);
+static int running;
+
+static void* thr(void* arg)
+{
+ struct thread_t* th = (struct thread_t*)arg;
+ for (;;) {
+ event_wait(&th->ready);
+ event_reset(&th->ready);
+ execute_call(th->call);
+ __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->done);
+ }
+ return 0;
+}
+
+static void loop(void)
+{
+ int i, call, thread;
+ for (call = 0; call < 6; call++) {
+ for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0]));
+ thread++) {
+ struct thread_t* th = &threads[thread];
+ if (!th->created) {
+ th->created = 1;
+ event_init(&th->ready);
+ event_init(&th->done);
+ event_set(&th->done);
+ thread_start(thr, th);
+ }
+ if (!event_isset(&th->done))
+ continue;
+ event_reset(&th->done);
+ th->call = call;
+ __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->ready);
+ event_timedwait(&th->done, 50);
+ break;
+ }
+ }
+ for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++)
+ sleep_ms(1);
+}
+
+uint64_t r[1] = {0xffffffffffffffff};
+
+void execute_call(int call)
+{
+ intptr_t res = 0;
+ switch (call) {
+ case 0:
+ res = syscall(SYS_socket, 2ul, 1ul, 0);
+ if (res != -1)
+ r[0] = res;
+ break;
+ case 1:
+ *(uint8_t*)0x20000140 = 0x10;
+ *(uint8_t*)0x20000141 = 2;
+ *(uint16_t*)0x20000142 = htobe16(0x4e23);
+ *(uint32_t*)0x20000144 = htobe32(0x7f000001);
+ memset((void*)0x20000148, 0, 8);
+ syscall(SYS_bind, r[0], 0x20000140ul, 0x10ul);
+ break;
+ case 2:
+ *(uint8_t*)0x20000080 = 0x10;
+ *(uint8_t*)0x20000081 = 2;
+ *(uint16_t*)0x20000082 = htobe16(0x4e23);
+ *(uint32_t*)0x20000084 = htobe32(0x7f000001);
+ memset((void*)0x20000088, 0, 8);
+ syscall(SYS_sendto, r[0], 0ul, 0ul, 0ul, 0x20000080ul, 0x10ul);
+ break;
+ case 3:
+ memset((void*)0x20000100, 69, 1);
+ syscall(SYS_sendto, r[0], 0x20000100ul, 0xfda4ul, 0ul, 0ul, 0ul);
+ break;
+ case 4:
+ *(uint64_t*)0x200003c0 = 0;
+ *(uint32_t*)0x200003c8 = 0;
+ *(uint64_t*)0x200003d0 = 0x20000340;
+ *(uint64_t*)0x20000340 = 0x20000680;
+ *(uint64_t*)0x20000348 = 0x19000;
+ *(uint64_t*)0x200003d8 = 1;
+ *(uint64_t*)0x200003e0 = 0;
+ *(uint64_t*)0x200003e8 = 0;
+ *(uint32_t*)0x200003f0 = 0;
+ syscall(SYS_recvmsg, r[0], 0x200003c0ul, 0x40ul);
+ break;
+ case 5:
+ syscall(SYS_shutdown, r[0], 1ul);
+ break;
+ }
+}
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ loop();
+ return 0;
+}
+EOF
+
+set -e
+mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
+[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 5g -u $mdstart
+newfs $newfs_flags -n md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+set +e
+
+mkdir $mntpoint/work
+mycc -o $mntpoint/work/syzkaller49 -Wall -Wextra -O0 /tmp/syzkaller49.c -lpthread || exit 1
+
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 120 ]; do
+ (cd $mntpoint/work; ./syzkaller49)
+done
+
+for i in `jot 6`; do
+ mount | grep -q "on $mntpoint " || break
+ umount $mntpoint && break || sleep 10
+ [ $i -eq 6 ] &&
+ { echo FATAL; fstat -mf $mntpoint; exit 1; }
+done
+mdconfig -d -u $mdstart
+
+rm -rf /tmp/syzkaller49.c
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller50.sh b/tools/test/stress2/misc/syzkaller50.sh
new file mode 100755
index 000000000000..e813db054458
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller50.sh
@@ -0,0 +1,169 @@
+#!/bin/sh
+
+# panic: Assertion done != job_total_nbytes failed at ../../../kern/sys_socket.c:670
+# cpuid = 10
+# time = 1649059964
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe069a27fd70
+# vpanic() at vpanic+0x17f/frame 0xfffffe069a27fdc0
+# panic() at panic+0x43/frame 0xfffffe069a27fe20
+# soaio_process_sb() at soaio_process_sb+0x751/frame 0xfffffe069a27feb0
+# soaio_kproc_loop() at soaio_kproc_loop+0xa9/frame 0xfffffe069a27fef0
+# fork_exit() at fork_exit+0x80/frame 0xfffffe069a27ff30
+# fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe069a27ff30
+# --- trap 0xc, rip = 0x36633df4a5ca, rsp = 0x36633cd66d98, rbp = 0x36633cd66db0 ---
+# KDB: enter: panic
+# [ thread pid 36460 tid 546462 ]
+# Stopped at kdb_enter+0x37: movq $0,0x127b48e(%rip)
+# db> x/s version
+# version: FreeBSD 14.0-CURRENT #0 main-n254248-88b3e65fcff2a: Sun Apr 3 11:21:34 CEST 2022\012 pho@mercat1.netperf.freebsd.org:/usr/src/sys/amd64/compile/PHO\012
+# db>
+
+[ `uname -p` != "amd64" ] && exit 0
+
+. ../default.cfg
+cat > /tmp/syzkaller50.c <<EOF
+// https://syzkaller.appspot.com/bug?id=3d4fdc415d285b4de0dbf5709b4f2bb451a0a382
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+3b4dc5d1d63e9bd01eda@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <sys/types.h>
+
+#include <pwd.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+#include <time.h>
+#include <unistd.h>
+
+static void kill_and_wait(int pid, int* status)
+{
+ kill(pid, SIGKILL);
+ while (waitpid(-1, status, 0) != pid) {
+ }
+}
+
+static void sleep_ms(uint64_t ms)
+{
+ usleep(ms * 1000);
+}
+
+static uint64_t current_time_ms(void)
+{
+ struct timespec ts;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(1);
+ return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
+}
+
+static void execute_one(void);
+
+#define WAIT_FLAGS 0
+
+static void loop(void)
+{
+ int iter __unused = 0;
+ for (;; iter++) {
+ int pid = fork();
+ if (pid < 0)
+ exit(1);
+ if (pid == 0) {
+ execute_one();
+ exit(0);
+ }
+ int status = 0;
+ uint64_t start = current_time_ms();
+ for (;;) {
+ if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid)
+ break;
+ sleep_ms(1);
+ if (current_time_ms() - start < 5000)
+ continue;
+ kill_and_wait(pid, &status);
+ break;
+ }
+ }
+}
+
+uint64_t r[2] = {0xffffffffffffffff, 0xffffffffffffffff};
+
+void execute_one(void)
+{
+ intptr_t res = 0;
+ res = syscall(SYS_socket, 0x1cul, 1ul, 0x84);
+ if (res != -1)
+ r[0] = res;
+ *(uint8_t*)0x20000240 = 0x1c;
+ *(uint8_t*)0x20000241 = 0x1c;
+ *(uint16_t*)0x20000242 = htobe16(0x4e23);
+ *(uint32_t*)0x20000244 = 0;
+ *(uint64_t*)0x20000248 = htobe64(0);
+ *(uint64_t*)0x20000250 = htobe64(1);
+ *(uint32_t*)0x20000258 = 0;
+ syscall(SYS_bind, r[0], 0x20000240ul, 0x1cul);
+ *(uint8_t*)0x20000080 = 0x1c;
+ *(uint8_t*)0x20000081 = 0x1c;
+ *(uint16_t*)0x20000082 = htobe16(0x4e23);
+ *(uint32_t*)0x20000084 = 0;
+ *(uint64_t*)0x20000088 = htobe64(0);
+ *(uint64_t*)0x20000090 = htobe64(1);
+ *(uint32_t*)0x20000098 = 0;
+ syscall(SYS_connect, r[0], 0x20000080ul, 0x1cul);
+ *(uint32_t*)0x20000000 = r[0];
+ *(uint64_t*)0x20000008 = 0;
+ *(uint64_t*)0x20000010 = 0x200002c0;
+ *(uint64_t*)0x20000018 = 0;
+ *(uint32_t*)0x20000020 = 0;
+ *(uint32_t*)0x20000024 = 0;
+ *(uint64_t*)0x20000028 = 0;
+ *(uint32_t*)0x20000030 = 0;
+ *(uint32_t*)0x20000034 = 0;
+ *(uint64_t*)0x20000038 = 0;
+ *(uint64_t*)0x20000040 = 0;
+ *(uint64_t*)0x20000048 = 0;
+ *(uint32_t*)0x20000050 = 0;
+ *(uint32_t*)0x20000054 = 0;
+ *(uint32_t*)0x20000058 = 0;
+ *(uint32_t*)0x20000060 = 0;
+ syscall(SYS_aio_write, 0x20000000ul);
+ res = syscall(SYS_fcntl, r[0], 0ul, r[0]);
+ if (res != -1)
+ r[1] = res;
+ *(uint32_t*)0x20001540 = 0;
+ memset((void*)0x20001544, 6, 1);
+ syscall(SYS_setsockopt, r[1], 0x84, 0x901, 0x20001540ul, 8ul);
+}
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ loop();
+ return 0;
+}
+EOF
+mycc -o /tmp/syzkaller50 -Wall -Wextra -O0 /tmp/syzkaller50.c || exit 1
+
+kldstat | grep -q sctp || { kldload sctp.ko && loaded=1; }
+
+(cd ../testcases/swap; ./swap -t 3m -i 10 -l 100) &
+for i in `jot 3`; do
+ (cd /tmp; timeout 3m ./syzkaller50) &
+ pids="$pids $!"
+done
+for pid in $pids; do
+ wait $pid
+done
+while pkill swap; do :; done
+wait
+
+rm -rf /tmp/syzkaller50 /tmp/syzkaller50.c /tmp/syzkaller.*
+[ $loaded ] && kldunload sctp.ko
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller51.sh b/tools/test/stress2/misc/syzkaller51.sh
new file mode 100755
index 000000000000..772d6cc556c0
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller51.sh
@@ -0,0 +1,195 @@
+#!/bin/sh
+
+# panic: Queues are not empty when handling SHUTDOWN-COMPLETE
+# cpuid = 10
+# time = 1650546082
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe00e49be680
+# vpanic() at vpanic+0x17f/frame 0xfffffe00e49be6d0
+# panic() at panic+0x43/frame 0xfffffe00e49be730
+# sctp_handle_shutdown_complete() at sctp_handle_shutdown_complete+0xea/frame 0xfffffe00e49be750
+# sctp_process_control() at sctp_process_control+0x1561/frame 0xfffffe00e49bea90
+# sctp_common_input_processing() at sctp_common_input_processing+0x514/frame 0xfffffe00e49bec00
+# sctp6_input_with_port() at sctp6_input_with_port+0x228/frame 0xfffffe00e49becf0
+# sctp6_input() at sctp6_input+0xb/frame 0xfffffe00e49bed00
+# ip6_input() at ip6_input+0xc2f/frame 0xfffffe00e49bede0
+# swi_net() at swi_net+0x191/frame 0xfffffe00e49bee60
+# ithread_loop() at ithread_loop+0x279/frame 0xfffffe00e49beef0
+# fork_exit() at fork_exit+0x80/frame 0xfffffe00e49bef30
+# fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe00e49bef30
+# --- trap 0, rip = 0, rsp = 0, rbp = 0 ---
+# KDB: enter: panic
+# [ thread pid 12 tid 100077 ]
+# Stopped at kdb_enter+0x32: movq $0,0x12797a3(%rip)
+# db> x/s version
+# FreeBSD 14.0-CURRENT #0 main-n254961-b91a48693a53e: Thu Apr 21 09:39:27 CEST 2022
+# pho@mercat1.netperf.freebsd.org:/usr/src/sys/amd64/compile/PHO
+# db>
+
+[ `uname -p` != "amd64" ] && exit 0
+
+. ../default.cfg
+cat > /tmp/syzkaller51.c <<EOF
+// https://syzkaller.appspot.com/bug?id=358f4bcd3d53267e6f5f069677688bad5cf7c1f4
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+341e9ebd9d24ca7dc62a@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <sys/types.h>
+
+#include <pwd.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+#include <time.h>
+#include <unistd.h>
+
+static void kill_and_wait(int pid, int* status)
+{
+ kill(pid, SIGKILL);
+ while (waitpid(-1, status, 0) != pid) {
+ }
+}
+
+static void sleep_ms(uint64_t ms)
+{
+ usleep(ms * 1000);
+}
+
+static uint64_t current_time_ms(void)
+{
+ struct timespec ts;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(1);
+ return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
+}
+
+static void execute_one(void);
+
+#define WAIT_FLAGS 0
+
+static void loop(void)
+{
+ int iter __unused = 0;
+ for (;; iter++) {
+ int pid = fork();
+ if (pid < 0)
+ exit(1);
+ if (pid == 0) {
+ execute_one();
+ exit(0);
+ }
+ int status = 0;
+ uint64_t start = current_time_ms();
+ for (;;) {
+ if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid)
+ break;
+ sleep_ms(1);
+ if (current_time_ms() - start < 5000)
+ continue;
+ kill_and_wait(pid, &status);
+ break;
+ }
+ }
+}
+
+uint64_t r[3] = {0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff};
+
+void execute_one(void)
+{
+ intptr_t res = 0;
+ res = syscall(SYS_socket, 0x1cul, 1ul, 0x84);
+ if (res != -1)
+ r[0] = res;
+ *(uint8_t*)0x20000000 = 0x1c;
+ *(uint8_t*)0x20000001 = 0x1c;
+ *(uint16_t*)0x20000002 = htobe16(0x4e22);
+ *(uint32_t*)0x20000004 = 0;
+ memset((void*)0x20000008, 0, 16);
+ *(uint32_t*)0x20000018 = 0;
+ syscall(SYS_bind, r[0], 0x20000000ul, 0x1cul);
+ syscall(SYS_listen, r[0], 5);
+ res = syscall(SYS_socket, 0x1cul, 1ul, 0x84);
+ if (res != -1)
+ r[1] = res;
+ memset((void*)0x20000240, 202, 1);
+ *(uint8_t*)0x20000040 = 0x1c;
+ *(uint8_t*)0x20000041 = 0x1c;
+ *(uint16_t*)0x20000042 = htobe16(0x4e22);
+ *(uint32_t*)0x20000044 = 0;
+ *(uint64_t*)0x20000048 = htobe64(0);
+ *(uint64_t*)0x20000050 = htobe64(1);
+ *(uint32_t*)0x20000058 = 0;
+ syscall(SYS_sendto, r[1], 0x20000240ul, 1ul, 0ul, 0x20000040ul, 0x1cul);
+ syscall(SYS_dup2, r[0], r[1]);
+ res = syscall(SYS_accept, r[1], 0ul, 0ul);
+ if (res != -1)
+ r[2] = res;
+ *(uint64_t*)0x20001980 = 0;
+ *(uint32_t*)0x20001988 = 0;
+ *(uint64_t*)0x20001990 = 0x200018c0;
+ *(uint64_t*)0x200018c0 = 0x20000400;
+ memcpy(
+ (void*)0x20000400,
+ "\xe1\xb9\x03\xdc\x43\xbc\x11\x92\xcb\x81\xb0\x96\xe0\x09\xde\x05\x09\x0b"
+ "\x44\x42\x6a\x68\x20\x0d\x0a\x78\x94\x0a\xbc\xcb\x4d\x0b\x1d\x3e\xc6\x6a"
+ "\xc2\x43\x46\x14\x08\x20\x01\x43\x3e\xf2\xc1\xb6\x6a\x0e\x5e\x13\xa8\xcf"
+ "\x99\x01\x1d\x5a\xb4\xe1\x7e\xa4\x98\x7d\x56\xb5\x86\xa3\xbb\x1e\x3e\xb5"
+ "\x85\x89\x43\xf9\x0d\xee\x7e\x8d\xc5\xac\x60\xed\x23\x62\xc7\x05\x0b\x3b"
+ "\x37\x6c\x77\x77\x5f\x1e\x0f\xa0\x90\x50\xc1\x97\x45\x47\x7f\xe7\x64\xff"
+ "\x92\x61\x9f\x9c\x06\xee\x37\x89\xf8\x81\x6e\xf7\xeb\xe5\xe1\xbd\xa8\xcc"
+ "\x50\xce\x6b\x9b\x7e\x9a\x62\x5c\x71\xd4\x41\x55\x90\x6b\xe5\x92\x55\xe0"
+ "\x3e\xc5\xfd\xfd\xbb\x5d\x2c\xf2\x70\x22\xdb\x96\x07\x02\xe6\xae\x67\xb2"
+ "\xcd\x1b\xf6\xab\x30\x3a\xfd\x24\x5d\xb7\x37\x95\x21\x4c\xc6\x8a\x29\x50"
+ "\xec\x8d\x33\x21\x6a\x93\x20\x30\x43\xe4\x54\xeb\x98\x2b\x40\x9a\x2a\x1d"
+ "\x48\x77\xc8\xf3\x06\xdf\xa3\x80\x07\xab\x8c\x6e\x30\x13\x84\x4d\xf4\x48"
+ "\x1e\x5b\x0f\xbd\x84\xe0\x17\xbe\x81\xc9\x47\xc5\x6b\x0b\xc0\x70\x74\xcb"
+ "\x6d\xe1\xe3\xeb\xdc\xe8\xbf\x72\x22\x92\x0b\x2b\xfe\xda\x7f\xcf\x96",
+ 251);
+ *(uint64_t*)0x200018c8 = 0xfb;
+ *(uint64_t*)0x200018d0 = 0;
+ *(uint64_t*)0x200018d8 = 0;
+ *(uint64_t*)0x200018e0 = 0x20000600;
+ *(uint64_t*)0x200018e8 = 0;
+ *(uint64_t*)0x200018f0 = 0;
+ *(uint64_t*)0x200018f8 = 0;
+ *(uint64_t*)0x20001900 = 0;
+ *(uint64_t*)0x20001908 = 0;
+ *(uint64_t*)0x20001910 = 0;
+ *(uint64_t*)0x20001918 = 0;
+ *(uint64_t*)0x20001920 = 0;
+ *(uint64_t*)0x20001928 = 0;
+ *(uint64_t*)0x20001930 = 0;
+ *(uint64_t*)0x20001938 = 0;
+ *(uint64_t*)0x20001940 = 0;
+ *(uint64_t*)0x20001948 = 0;
+ *(uint32_t*)0x20001998 = 9;
+ *(uint64_t*)0x200019a0 = 0;
+ *(uint32_t*)0x200019a8 = 0;
+ *(uint32_t*)0x200019ac = 0x101;
+ syscall(SYS_sendmsg, r[2], 0x20001980ul, 0x20104ul);
+}
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ loop();
+ return 0;
+}
+EOF
+mycc -o /tmp/syzkaller51 -Wall -Wextra -O0 /tmp/syzkaller51.c || exit 1
+
+kldstat | grep -q sctp || { kldload sctp.ko && loaded=1; }
+
+(cd /tmp; timeout 3m ./syzkaller51)
+
+rm -rf /tmp/syzkaller51 /tmp/syzkaller51.c /tmp/syzkaller.*
+[ $loaded ] && kldunload sctp.ko
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller52.sh b/tools/test/stress2/misc/syzkaller52.sh
new file mode 100755
index 000000000000..ec5244bdae65
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller52.sh
@@ -0,0 +1,458 @@
+#!/bin/sh
+
+# panic: already suspended
+# cpuid = 6
+# time = 1651176216
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe014194ea70
+# vpanic() at vpanic+0x17f/frame 0xfffffe014194eac0
+# panic() at panic+0x43/frame 0xfffffe014194eb20
+# thread_single() at thread_single+0x774/frame 0xfffffe014194eb90
+# reap_kill_proc() at reap_kill_proc+0x296/frame 0xfffffe014194ebf0
+# reap_kill() at reap_kill+0x371/frame 0xfffffe014194ed00
+# kern_procctl() at kern_procctl+0x30b/frame 0xfffffe014194ed70
+# sys_procctl() at sys_procctl+0x11e/frame 0xfffffe014194ee00
+# amd64_syscall() at amd64_syscall+0x145/frame 0xfffffe014194ef30
+# fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe014194ef30
+# --- syscall (0, FreeBSD ELF64, nosys), rip = 0x8226f27aa, rsp = 0x82803ef48, rbp = 0x82803ef70 ---
+# KDB: enter: panic
+# [ thread pid 3074 tid 100404 ]
+# Stopped at kdb_enter+0x32: movq $0,0x12790b3(%rip)
+# db> x/s version
+# FreeBSD 14.0-CURRENT #0 main-n255099-0923ff82fb383: Thu Apr 28 09:48:48 CEST 2022
+# pho@mercat1.netperf.freebsd.org:/usr/src/sys/amd64/compile/PHO
+# db>
+
+[ `uname -p` != "amd64" ] && exit 0
+
+. ../default.cfg
+cat > /tmp/syzkaller52.c <<EOF
+// https://syzkaller.appspot.com/bug?id=20185b6047d7371885412b56ff188be88f740eab
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+79cd12371d417441b175@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <sys/types.h>
+
+#include <dirent.h>
+#include <errno.h>
+#include <pthread.h>
+#include <pwd.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/resource.h>
+#include <sys/stat.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+#include <time.h>
+#include <unistd.h>
+
+static unsigned long long procid;
+
+static void kill_and_wait(int pid, int* status)
+{
+ kill(pid, SIGKILL);
+ while (waitpid(-1, status, 0) != pid) {
+ }
+}
+
+static void sleep_ms(uint64_t ms)
+{
+ usleep(ms * 1000);
+}
+
+static uint64_t current_time_ms(void)
+{
+ struct timespec ts;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(1);
+ return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
+}
+
+static void use_temporary_dir(void)
+{
+ char tmpdir_template[] = "./syzkaller.XXXXXX";
+ char* tmpdir = mkdtemp(tmpdir_template);
+ if (!tmpdir)
+ exit(1);
+ if (chmod(tmpdir, 0777))
+ exit(1);
+ if (chdir(tmpdir))
+ exit(1);
+}
+
+static void __attribute__((noinline)) remove_dir(const char* dir)
+{
+ DIR* dp = opendir(dir);
+ if (dp == NULL) {
+ if (errno == EACCES) {
+ if (rmdir(dir))
+ exit(1);
+ return;
+ }
+ exit(1);
+ }
+ struct dirent* ep = 0;
+ while ((ep = readdir(dp))) {
+ if (strcmp(ep->d_name, ".") == 0 || strcmp(ep->d_name, "..") == 0)
+ continue;
+ char filename[FILENAME_MAX];
+ snprintf(filename, sizeof(filename), "%s/%s", dir, ep->d_name);
+ struct stat st;
+ if (lstat(filename, &st))
+ exit(1);
+ if (S_ISDIR(st.st_mode)) {
+ remove_dir(filename);
+ continue;
+ }
+ if (unlink(filename))
+ exit(1);
+ }
+ closedir(dp);
+ if (rmdir(dir))
+ exit(1);
+}
+
+static void thread_start(void* (*fn)(void*), void* arg)
+{
+ pthread_t th;
+ pthread_attr_t attr;
+ pthread_attr_init(&attr);
+ pthread_attr_setstacksize(&attr, 128 << 10);
+ int i = 0;
+ for (; i < 100; i++) {
+ if (pthread_create(&th, &attr, fn, arg) == 0) {
+ pthread_attr_destroy(&attr);
+ return;
+ }
+ if (errno == EAGAIN) {
+ usleep(50);
+ continue;
+ }
+ break;
+ }
+ exit(1);
+}
+
+typedef struct {
+ pthread_mutex_t mu;
+ pthread_cond_t cv;
+ int state;
+} event_t;
+
+static void event_init(event_t* ev)
+{
+ if (pthread_mutex_init(&ev->mu, 0))
+ exit(1);
+ if (pthread_cond_init(&ev->cv, 0))
+ exit(1);
+ ev->state = 0;
+}
+
+static void event_reset(event_t* ev)
+{
+ ev->state = 0;
+}
+
+static void event_set(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ if (ev->state)
+ exit(1);
+ ev->state = 1;
+ pthread_mutex_unlock(&ev->mu);
+ pthread_cond_broadcast(&ev->cv);
+}
+
+static void event_wait(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ while (!ev->state)
+ pthread_cond_wait(&ev->cv, &ev->mu);
+ pthread_mutex_unlock(&ev->mu);
+}
+
+static int event_isset(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+static int event_timedwait(event_t* ev, uint64_t timeout)
+{
+ uint64_t start = current_time_ms();
+ uint64_t now = start;
+ pthread_mutex_lock(&ev->mu);
+ for (;;) {
+ if (ev->state)
+ break;
+ uint64_t remain = timeout - (now - start);
+ struct timespec ts;
+ ts.tv_sec = remain / 1000;
+ ts.tv_nsec = (remain % 1000) * 1000 * 1000;
+ pthread_cond_timedwait(&ev->cv, &ev->mu, &ts);
+ now = current_time_ms();
+ if (now - start > timeout)
+ break;
+ }
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+static void sandbox_common()
+{
+ struct rlimit rlim;
+ rlim.rlim_cur = rlim.rlim_max = 128 << 20;
+ setrlimit(RLIMIT_AS, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 8 << 20;
+ setrlimit(RLIMIT_MEMLOCK, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 1 << 20;
+ setrlimit(RLIMIT_FSIZE, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 1 << 20;
+ setrlimit(RLIMIT_STACK, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 0;
+ setrlimit(RLIMIT_CORE, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 256;
+ setrlimit(RLIMIT_NOFILE, &rlim);
+}
+
+static void loop();
+
+static int do_sandbox_none(void)
+{
+ sandbox_common();
+ loop();
+ return 0;
+}
+
+struct thread_t {
+ int created, call;
+ event_t ready, done;
+};
+
+static struct thread_t threads[16];
+static void execute_call(int call);
+static int running;
+
+static void* thr(void* arg)
+{
+ struct thread_t* th = (struct thread_t*)arg;
+ for (;;) {
+ event_wait(&th->ready);
+ event_reset(&th->ready);
+ execute_call(th->call);
+ __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->done);
+ }
+ return 0;
+}
+
+static void execute_one(void)
+{
+ int i, call, thread;
+ for (call = 0; call < 14; call++) {
+ for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0]));
+ thread++) {
+ struct thread_t* th = &threads[thread];
+ if (!th->created) {
+ th->created = 1;
+ event_init(&th->ready);
+ event_init(&th->done);
+ event_set(&th->done);
+ thread_start(thr, th);
+ }
+ if (!event_isset(&th->done))
+ continue;
+ event_reset(&th->done);
+ th->call = call;
+ __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->ready);
+ event_timedwait(&th->done, 50);
+ break;
+ }
+ }
+ for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++)
+ sleep_ms(1);
+}
+
+static void execute_one(void);
+
+#define WAIT_FLAGS 0
+
+static void loop(void)
+{
+ int iter = 0;
+ for (;; iter++) {
+ char cwdbuf[32];
+ sprintf(cwdbuf, "./%d", iter);
+ if (mkdir(cwdbuf, 0777))
+ exit(1);
+ int pid = fork();
+ if (pid < 0)
+ exit(1);
+ if (pid == 0) {
+ if (chdir(cwdbuf))
+ exit(1);
+ execute_one();
+ exit(0);
+ }
+ int status = 0;
+ uint64_t start = current_time_ms();
+ for (;;) {
+ if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid)
+ break;
+ sleep_ms(1);
+ if (current_time_ms() - start < 5000)
+ continue;
+ kill_and_wait(pid, &status);
+ break;
+ }
+ remove_dir(cwdbuf);
+ }
+}
+
+uint64_t r[4] = {0x0, 0x0, 0x0, 0x0};
+
+void execute_call(int call)
+{
+ intptr_t res = 0;
+ switch (call) {
+ case 0:
+ *(uint32_t*)0x20000000 = 0x3f;
+ *(uint32_t*)0x20000004 = 8;
+ *(uint32_t*)0x20000008 = 0x1000;
+ *(uint32_t*)0x2000000c = 7;
+ syscall(SYS_sigsuspend, 0x20000000ul);
+ break;
+ case 1:
+ syscall(SYS_setgid, 0);
+ break;
+ case 2:
+ syscall(SYS_getgroups, 0ul, 0ul);
+ break;
+ case 3:
+ syscall(SYS_setegid, 0);
+ break;
+ case 4:
+ res = syscall(SYS_shmget, 0ul, 0x2000ul, 0x420ul, 0x20ffd000ul);
+ if (res != -1)
+ r[0] = res;
+ break;
+ case 5:
+ res = syscall(SYS_getpid);
+ if (res != -1)
+ r[1] = res;
+ break;
+ case 6:
+ *(uint32_t*)0x20000200 = -1;
+ *(uint32_t*)0x20000204 = 0;
+ *(uint32_t*)0x20000208 = -1;
+ *(uint32_t*)0x2000020c = 0;
+ *(uint16_t*)0x20000210 = 0xf965;
+ *(uint16_t*)0x20000212 = 0x2000;
+ *(uint32_t*)0x20000214 = 0;
+ *(uint64_t*)0x20000218 = 0x2d;
+ *(uint32_t*)0x20000220 = 0x1f;
+ *(uint64_t*)0x20000228 = 2;
+ *(uint64_t*)0x20000230 = 4;
+ *(uint64_t*)0x20000238 = 0;
+ *(uint32_t*)0x20000240 = r[1];
+ *(uint32_t*)0x20000244 = -1;
+ *(uint16_t*)0x20000248 = 7;
+ *(uint16_t*)0x2000024a = 0;
+ *(uint64_t*)0x20000250 = 0;
+ *(uint64_t*)0x20000258 = 0;
+ syscall(SYS_shmctl, r[0], 1ul, 0x20000200ul);
+ break;
+ case 7:
+ syscall(SYS_getgid);
+ break;
+ case 8:
+ syscall(SYS___semctl, 0, 0ul, 1ul, 0ul);
+ break;
+ case 9:
+ *(uint32_t*)0x20000300 = 4;
+ *(uint32_t*)0x20000304 = 0;
+ *(uint16_t*)0x20000308 = 7;
+ *(uint16_t*)0x2000030a = 6;
+ memcpy((void*)0x2000030c,
+ "\x26\xb9\x52\x60\x70\xe1\xb8\x97\x99\x4b\x39\xd3\xea\x42\xe7\xed",
+ 16);
+ syscall(SYS_fhstat, 0x20000300ul, 0ul);
+ break;
+ case 10:
+ res = syscall(SYS_getgid);
+ if (res != -1)
+ r[2] = res;
+ break;
+ case 11:
+ *(uint32_t*)0x20000440 = 3;
+ *(uint32_t*)0x20000444 = 0;
+ *(uint32_t*)0x20000448 = r[1];
+ *(uint32_t*)0x2000044c = 0x81;
+ *(uint32_t*)0x20000450 = r[1];
+ memset((void*)0x20000454, 0, 60);
+ res = syscall(SYS_procctl, 0ul, r[1], 6ul, 0x20000440ul);
+ if (res != -1)
+ r[3] = *(uint32_t*)0x20000450;
+ break;
+ case 12:
+ *(uint32_t*)0x200004c0 = 0;
+ *(uint32_t*)0x200004c4 = 0;
+ *(uint32_t*)0x200004c8 = 0;
+ *(uint32_t*)0x200004cc = r[2];
+ *(uint16_t*)0x200004d0 = 0x100;
+ *(uint16_t*)0x200004d2 = 8;
+ *(uint32_t*)0x200004d4 = 0;
+ *(uint64_t*)0x200004d8 = 0x7ff;
+ *(uint64_t*)0x200004e0 = 0x7f;
+ *(uint64_t*)0x200004e8 = 0x81;
+ *(uint64_t*)0x200004f0 = 0xfff;
+ *(uint64_t*)0x200004f8 = 0x3a;
+ *(uint64_t*)0x20000500 = 0x100000000;
+ *(uint64_t*)0x20000508 = 9;
+ *(uint32_t*)0x20000510 = r[1];
+ *(uint32_t*)0x20000514 = r[3];
+ *(uint64_t*)0x20000518 = 0;
+ *(uint64_t*)0x20000520 = 0;
+ syscall(SYS_msgctl, -1, 1ul, 0x200004c0ul);
+ break;
+ case 13:
+ syscall(SYS_ioctl, -1, 0xc0f24425ul, 0ul);
+ break;
+ }
+}
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ for (procid = 0; procid < 4; procid++) {
+ if (fork() == 0) {
+ use_temporary_dir();
+ do_sandbox_none();
+ }
+ }
+ sleep(1000000);
+ return 0;
+}
+EOF
+mycc -o /tmp/syzkaller52 -Wall -Wextra -O0 /tmp/syzkaller52.c -l pthread ||
+ exit 1
+
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 120 ]; do
+ (cd /tmp; timeout 3m ./syzkaller52)
+done
+
+rm -rf /tmp/syzkaller52 /tmp/syzkaller52.c /tmp/syzkaller52.core \
+ /tmp/syzkaller.??????
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller53.sh b/tools/test/stress2/misc/syzkaller53.sh
new file mode 100755
index 000000000000..bfbabe70a571
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller53.sh
@@ -0,0 +1,172 @@
+#!/bin/sh
+
+# panic: Thread not suspended
+# cpuid = 9
+# time = 1651215111
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe018701d9c0
+# vpanic() at vpanic+0x17f/frame 0xfffffe018701da10
+# panic() at panic+0x43/frame 0xfffffe018701da70
+# thread_unsuspend_one() at thread_unsuspend_one+0xc5/frame 0xfffffe018701daa0
+# thread_suspend_check() at thread_suspend_check+0x1f8/frame 0xfffffe018701dae0
+# exit1() at exit1+0xb7/frame 0xfffffe018701db50
+# sigexit() at sigexit+0x157/frame 0xfffffe018701de20
+# postsig() at postsig+0x1aa/frame 0xfffffe018701def0
+# ast() at ast+0x4fb/frame 0xfffffe018701df30
+# doreti_ast() at doreti_ast+0x1f/frame 0x820bf50f0
+# KDB: enter: panic
+# [ thread pid 8379 tid 100392 ]
+# Stopped at kdb_enter+0x32: movq $0,0x12790b3(%rip)
+# db> x/s version
+# FreeBSD 14.0-CURRENT #0 main-n255099-0923ff82fb383: Thu Apr 28 09:48:48 CEST 2022
+# pho@mercat1.netperf.freebsd.org:/usr/src/sys/amd64/compile/PHO
+# db>
+
+[ `uname -p` != "amd64" ] && exit 0
+
+. ../default.cfg
+cat > /tmp/syzkaller53.c <<EOF
+// https://syzkaller.appspot.com/bug?id=3b00c85aa7a7a1bad3bf0af3abde3c16b543f2a0
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+7789d9923f58fa08ecba@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <sys/types.h>
+
+#include <pwd.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+#include <time.h>
+#include <unistd.h>
+
+static __thread int clone_ongoing;
+static __thread int skip_segv;
+static __thread jmp_buf segv_env;
+
+static void segv_handler(int sig, siginfo_t* info, void* ctx __unused)
+{
+ if (__atomic_load_n(&clone_ongoing, __ATOMIC_RELAXED) != 0) {
+ exit(sig);
+ }
+ uintptr_t addr = (uintptr_t)info->si_addr;
+ const uintptr_t prog_start = 1 << 20;
+ const uintptr_t prog_end = 100 << 20;
+ int skip = __atomic_load_n(&skip_segv, __ATOMIC_RELAXED) != 0;
+ int valid = addr < prog_start || addr > prog_end;
+ if (sig == SIGBUS)
+ valid = 1;
+ if (skip && valid) {
+ _longjmp(segv_env, 1);
+ }
+ exit(sig);
+}
+
+static void install_segv_handler(void)
+{
+ struct sigaction sa;
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_sigaction = segv_handler;
+ sa.sa_flags = SA_NODEFER | SA_SIGINFO;
+ sigaction(SIGSEGV, &sa, NULL);
+ sigaction(SIGBUS, &sa, NULL);
+}
+
+#define NONFAILING(...) \
+ ({ \
+ int ok = 1; \
+ __atomic_fetch_add(&skip_segv, 1, __ATOMIC_SEQ_CST); \
+ if (_setjmp(segv_env) == 0) { \
+ __VA_ARGS__; \
+ } else \
+ ok = 0; \
+ __atomic_fetch_sub(&skip_segv, 1, __ATOMIC_SEQ_CST); \
+ ok; \
+ })
+
+static void kill_and_wait(int pid, int* status)
+{
+ kill(pid, SIGKILL);
+ while (waitpid(-1, status, 0) != pid) {
+ }
+}
+
+static void sleep_ms(uint64_t ms)
+{
+ usleep(ms * 1000);
+}
+
+static uint64_t current_time_ms(void)
+{
+ struct timespec ts;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(1);
+ return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
+}
+
+static void execute_one(void);
+
+#define WAIT_FLAGS 0
+
+static void loop(void)
+{
+ int iter __unused = 0;
+ for (;; iter++) {
+ int pid = fork();
+ if (pid < 0)
+ exit(1);
+ if (pid == 0) {
+ execute_one();
+ exit(0);
+ }
+ int status = 0;
+ uint64_t start = current_time_ms();
+ for (;;) {
+ if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid)
+ break;
+ sleep_ms(1);
+ if (current_time_ms() - start < 5000)
+ continue;
+ kill_and_wait(pid, &status);
+ break;
+ }
+ }
+}
+
+void execute_one(void)
+{
+ NONFAILING(*(uint32_t*)0x20000080 = 0x13);
+ NONFAILING(*(uint32_t*)0x20000084 = 0);
+ NONFAILING(*(uint32_t*)0x20000088 = 0);
+ NONFAILING(*(uint32_t*)0x2000008c = 0);
+ NONFAILING(*(uint32_t*)0x20000090 = -1);
+ NONFAILING(memset((void*)0x20000094, 0, 60));
+ syscall(SYS_procctl, 0ul, 0, 6ul, 0x20000080ul);
+}
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ install_segv_handler();
+ loop();
+ return 0;
+}
+EOF
+mycc -o /tmp/syzkaller53 -Wall -Wextra -O0 /tmp/syzkaller53.c ||
+ exit 1
+
+for i in `jot 20`; do
+ (cd /tmp; timeout 3m ./syzkaller53) &
+done
+wait
+
+rm -rf /tmp/syzkaller53 /tmp/syzkaller53.c /tmp/syzkaller53.*
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller54.sh b/tools/test/stress2/misc/syzkaller54.sh
new file mode 100755
index 000000000000..252ba4e0f6f4
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller54.sh
@@ -0,0 +1,324 @@
+#!/bin/sh
+
+# panic: td 0xfffffe014f7193a0 is not suspended
+# cpuid = 5
+# time = 1652003036
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe019a497c20
+# vpanic() at vpanic+0x17f/frame 0xfffffe019a497c70
+# panic() at panic+0x43/frame 0xfffffe019a497cd0
+# thread_single() at thread_single+0x766/frame 0xfffffe019a497d40
+# fork1() at fork1+0x1e1/frame 0xfffffe019a497da0
+# sys_rfork() at sys_rfork+0xa4/frame 0xfffffe019a497e00
+# amd64_syscall() at amd64_syscall+0x145/frame 0xfffffe019a497f30
+# fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe019a497f30
+# --- syscall (0, FreeBSD ELF64, nosys), rip = 0x82317b7da, rsp = 0x826544f48, rbp = 0x826544f70 ---
+# KDB: enter: panic
+# [ thread pid 17068 tid 104913 ]
+# Stopped at kdb_enter+0x32: movq $0,0x12795f3(%rip)
+# db> x/s version
+# FreeBSD 14.0-CURRENT #0 main-n255381-cbbce42345c51: Sun May 8 09:55:50 CEST 2022
+# pho@mercat1.netperf.freebsd.org:/usr/src/sys/amd64/compile/PHO
+# db>
+
+[ `uname -p` != "amd64" ] && exit 0
+
+. ../default.cfg
+cat > /tmp/syzkaller54.c <<EOF
+// https://syzkaller.appspot.com/bug?id=346de481f8b814d103c440296a0adcb7ec6c46d4
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+9db4640d67478a0ced08@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <sys/types.h>
+
+#include <errno.h>
+#include <pthread.h>
+#include <pwd.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+#include <time.h>
+#include <unistd.h>
+
+static unsigned long long procid;
+
+static void kill_and_wait(int pid, int* status)
+{
+ kill(pid, SIGKILL);
+ while (waitpid(-1, status, 0) != pid) {
+ }
+}
+
+static void sleep_ms(uint64_t ms)
+{
+ usleep(ms * 1000);
+}
+
+static uint64_t current_time_ms(void)
+{
+ struct timespec ts;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(1);
+ return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
+}
+
+static void thread_start(void* (*fn)(void*), void* arg)
+{
+ pthread_t th;
+ pthread_attr_t attr;
+ pthread_attr_init(&attr);
+ pthread_attr_setstacksize(&attr, 128 << 10);
+ int i = 0;
+ for (; i < 100; i++) {
+ if (pthread_create(&th, &attr, fn, arg) == 0) {
+ pthread_attr_destroy(&attr);
+ return;
+ }
+ if (errno == EAGAIN) {
+ usleep(50);
+ continue;
+ }
+ break;
+ }
+ exit(1);
+}
+
+typedef struct {
+ pthread_mutex_t mu;
+ pthread_cond_t cv;
+ int state;
+} event_t;
+
+static void event_init(event_t* ev)
+{
+ if (pthread_mutex_init(&ev->mu, 0))
+ exit(1);
+ if (pthread_cond_init(&ev->cv, 0))
+ exit(1);
+ ev->state = 0;
+}
+
+static void event_reset(event_t* ev)
+{
+ ev->state = 0;
+}
+
+static void event_set(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ if (ev->state)
+ exit(1);
+ ev->state = 1;
+ pthread_mutex_unlock(&ev->mu);
+ pthread_cond_broadcast(&ev->cv);
+}
+
+static void event_wait(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ while (!ev->state)
+ pthread_cond_wait(&ev->cv, &ev->mu);
+ pthread_mutex_unlock(&ev->mu);
+}
+
+static int event_isset(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+static int event_timedwait(event_t* ev, uint64_t timeout)
+{
+ uint64_t start = current_time_ms();
+ uint64_t now = start;
+ pthread_mutex_lock(&ev->mu);
+ for (;;) {
+ if (ev->state)
+ break;
+ uint64_t remain = timeout - (now - start);
+ struct timespec ts;
+ ts.tv_sec = remain / 1000;
+ ts.tv_nsec = (remain % 1000) * 1000 * 1000;
+ pthread_cond_timedwait(&ev->cv, &ev->mu, &ts);
+ now = current_time_ms();
+ if (now - start > timeout)
+ break;
+ }
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+struct thread_t {
+ int created, call;
+ event_t ready, done;
+};
+
+static struct thread_t threads[16];
+static void execute_call(int call);
+static int running;
+
+static void* thr(void* arg)
+{
+ struct thread_t* th = (struct thread_t*)arg;
+ for (;;) {
+ event_wait(&th->ready);
+ event_reset(&th->ready);
+ execute_call(th->call);
+ __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->done);
+ }
+ return 0;
+}
+
+static void execute_one(void)
+{
+ int i, call, thread;
+ for (call = 0; call < 12; call++) {
+ for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0]));
+ thread++) {
+ struct thread_t* th = &threads[thread];
+ if (!th->created) {
+ th->created = 1;
+ event_init(&th->ready);
+ event_init(&th->done);
+ event_set(&th->done);
+ thread_start(thr, th);
+ }
+ if (!event_isset(&th->done))
+ continue;
+ event_reset(&th->done);
+ th->call = call;
+ __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->ready);
+ event_timedwait(&th->done, 50);
+ break;
+ }
+ }
+ for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++)
+ sleep_ms(1);
+}
+
+static void execute_one(void);
+
+#define WAIT_FLAGS 0
+
+static void loop(void)
+{
+ int iter __unused = 0;
+ for (;; iter++) {
+ int pid = fork();
+ if (pid < 0)
+ exit(1);
+ if (pid == 0) {
+ execute_one();
+ exit(0);
+ }
+ int status = 0;
+ uint64_t start = current_time_ms();
+ for (;;) {
+ if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid)
+ break;
+ sleep_ms(1);
+ if (current_time_ms() - start < 5000)
+ continue;
+ kill_and_wait(pid, &status);
+ break;
+ }
+ }
+}
+
+uint64_t r[4] = {0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
+ 0xffffffffffffffff};
+
+void execute_call(int call)
+{
+ intptr_t res = 0;
+ switch (call) {
+ case 0:
+ res = syscall(SYS_socket, 0x1cul, 1ul, 0x84);
+ if (res != -1)
+ r[0] = res;
+ break;
+ case 1:
+ syscall(SYS_connect, r[0], 0ul, 0ul);
+ break;
+ case 2:
+ res = syscall(SYS_socket, 0x1cul, 1ul, 0x84);
+ if (res != -1)
+ r[1] = res;
+ break;
+ case 3:
+ syscall(SYS_sendto, -1, 0ul, 0ul, 0ul, 0ul, 0ul);
+ break;
+ case 4:
+ syscall(SYS_dup2, r[1], -1);
+ break;
+ case 5:
+ res = syscall(SYS_dup2, -1, -1);
+ if (res != -1)
+ r[2] = res;
+ break;
+ case 6:
+ res = syscall(SYS_dup2, -1, r[2]);
+ if (res != -1)
+ r[3] = res;
+ break;
+ case 7:
+ syscall(SYS_sendmsg, r[3], 0ul, 0ul);
+ break;
+ case 8:
+ syscall(SYS_sendto, -1, 0ul, 0ul, 0ul, 0ul, 0ul);
+ break;
+ case 9:
+ memcpy((void*)0x20000100, "/dev/filemon\000", 13);
+ syscall(SYS_openat, 0xffffffffffffff9cul, 0x20000100ul, 0ul, 0ul);
+ break;
+ case 10:
+ syscall(SYS_rfork, 0x5000ul);
+ break;
+ case 11:
+ *(uint32_t*)0x20000080 = 0x13;
+ *(uint32_t*)0x20000084 = 0;
+ *(uint32_t*)0x20000088 = 0;
+ *(uint32_t*)0x2000008c = 0;
+ *(uint32_t*)0x20000090 = -1;
+ memset((void*)0x20000094, 0, 60);
+ syscall(SYS_procctl, 0ul, 0, 6ul, 0x20000080ul);
+ break;
+ }
+}
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ for (procid = 0; procid < 4; procid++) {
+ if (fork() == 0) {
+ loop();
+ }
+ }
+ sleep(1000000);
+ return 0;
+}
+EOF
+mycc -o /tmp/syzkaller54 -Wall -Wextra -O0 /tmp/syzkaller54.c -l pthread ||
+ exit 1
+
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 120 ]; do
+ (cd /tmp; timeout 3m ./syzkaller54)
+done
+
+rm -rf /tmp/syzkaller54 /tmp/syzkaller54.c /tmp/syzkaller54.core \
+ /tmp/syzkaller.??????
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller55.sh b/tools/test/stress2/misc/syzkaller55.sh
new file mode 100755
index 000000000000..e1d3e7a28121
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller55.sh
@@ -0,0 +1,197 @@
+#!/bin/sh
+
+# panic: Counter goes negative
+# cpuid = 8
+# time = 1653397881
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe014386fa40
+# vpanic() at vpanic+0x17f/frame 0xfffffe014386fa90
+# panic() at panic+0x43/frame 0xfffffe014386faf0
+# sctp_sorecvmsg() at sctp_sorecvmsg+0xf8e/frame 0xfffffe014386fc10
+# sctp_soreceive() at sctp_soreceive+0x196/frame 0xfffffe014386fe00
+# soreceive() at soreceive+0x4b/frame 0xfffffe014386fe20
+# soaio_process_sb() at soaio_process_sb+0x581/frame 0xfffffe014386feb0
+# soaio_kproc_loop() at soaio_kproc_loop+0xa9/frame 0xfffffe014386fef0
+# fork_exit() at fork_exit+0x80/frame 0xfffffe014386ff30
+# fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe014386ff30
+# --- trap 0xc, rip = 0x8220e08da, rsp = 0x820a211b8, rbp = 0x820a211e0 ---
+# KDB: enter: panic
+# [ thread pid 78762 tid 931834 ]
+# Stopped at kdb_enter+0x32: movq $0,0x1278fc3(%rip)
+# db> x/s version
+# FreeBSD 14.0-CURRENT #0 reap-n255780-cbbb27164fa: Tue May 24 13:42:53 CEST 2022
+# pho@mercat1.netperf.freebsd.org:/var/tmp/deviant3/sys/amd64/compile/PHO
+# db>
+
+[ `uname -p` != "amd64" ] && exit 0
+
+. ../default.cfg
+cat > /tmp/syzkaller55.c <<EOF
+// https://syzkaller.appspot.com/bug?id=ce7f451c017537296074d9203baaec292b311365
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+e256d42e9b390564530a@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <sys/types.h>
+
+#include <pwd.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+#include <time.h>
+#include <unistd.h>
+
+static unsigned long long procid;
+
+static void kill_and_wait(int pid, int* status)
+{
+ kill(pid, SIGKILL);
+ while (waitpid(-1, status, 0) != pid) {
+ }
+}
+
+static void sleep_ms(uint64_t ms)
+{
+ usleep(ms * 1000);
+}
+
+static uint64_t current_time_ms(void)
+{
+ struct timespec ts;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(1);
+ return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
+}
+
+static void execute_one(void);
+
+#define WAIT_FLAGS 0
+
+static void loop(void)
+{
+ int iter __unused = 0;
+ for (;; iter++) {
+ int pid = fork();
+ if (pid < 0)
+ exit(1);
+ if (pid == 0) {
+ execute_one();
+ exit(0);
+ }
+ int status = 0;
+ uint64_t start = current_time_ms();
+ for (;;) {
+ if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid)
+ break;
+ sleep_ms(1);
+ if (current_time_ms() - start < 5000)
+ continue;
+ kill_and_wait(pid, &status);
+ break;
+ }
+ }
+}
+
+uint64_t r[3] = {0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff};
+
+void execute_one(void)
+{
+ intptr_t res = 0;
+ res = syscall(SYS_socket, 0x1cul, 1ul, 0x84);
+ if (res != -1)
+ r[0] = res;
+ *(uint8_t*)0x20000000 = 0x1c;
+ *(uint8_t*)0x20000001 = 0x1c;
+ *(uint16_t*)0x20000002 = htobe16(0x4e23 + procid * 4);
+ *(uint32_t*)0x20000004 = 0;
+ memset((void*)0x20000008, 0, 16);
+ *(uint32_t*)0x20000018 = 0;
+ syscall(SYS_bind, r[0], 0x20000000ul, 0x1cul);
+ *(uint8_t*)0x20000080 = 0x1c;
+ *(uint8_t*)0x20000081 = 0x1c;
+ *(uint16_t*)0x20000082 = htobe16(0x4e23 + procid * 4);
+ *(uint32_t*)0x20000084 = 0;
+ *(uint64_t*)0x20000088 = htobe64(0);
+ *(uint64_t*)0x20000090 = htobe64(1);
+ *(uint32_t*)0x20000098 = 0;
+ syscall(SYS_connect, r[0], 0x20000080ul, 0x1cul);
+ *(uint32_t*)0x20000400 = r[0];
+ *(uint64_t*)0x20000408 = 0;
+ *(uint64_t*)0x20000410 = 0x20000040;
+ memset((void*)0x20000040, 27, 1);
+ *(uint64_t*)0x20000418 = 1;
+ *(uint32_t*)0x20000420 = 0;
+ *(uint32_t*)0x20000424 = 0;
+ *(uint64_t*)0x20000428 = 0;
+ *(uint32_t*)0x20000430 = 0;
+ *(uint32_t*)0x20000434 = 0;
+ *(uint64_t*)0x20000438 = 0;
+ *(uint64_t*)0x20000440 = 0;
+ *(uint64_t*)0x20000448 = 0;
+ *(uint32_t*)0x20000450 = 0;
+ *(uint32_t*)0x20000454 = 0;
+ *(uint32_t*)0x20000458 = 0;
+ *(uint64_t*)0x20000460 = 0;
+ *(uint64_t*)0x20000468 = 0;
+ *(uint64_t*)0x20000470 = 0;
+ *(uint64_t*)0x20000478 = 0;
+ *(uint64_t*)0x20000480 = 0;
+ *(uint64_t*)0x20000488 = 0;
+ *(uint64_t*)0x20000490 = 0;
+ *(uint64_t*)0x20000498 = 0;
+ syscall(SYS_aio_read, 0x20000400ul);
+ memset((void*)0x200000c0, 89, 1);
+ syscall(SYS_sendto, r[0], 0x200000c0ul, 1ul, 0ul, 0ul, 0ul);
+ syscall(SYS_shutdown, r[0], 0ul);
+ res = syscall(SYS_socket, 0x1cul, 5ul, 0x84);
+ if (res != -1)
+ r[1] = res;
+ *(uint64_t*)0x200003c0 = 0;
+ *(uint32_t*)0x200003c8 = 0;
+ *(uint64_t*)0x200003d0 = 0x20000300;
+ *(uint64_t*)0x20000300 = 0x20000200;
+ memset((void*)0x20000200, 30, 1);
+ *(uint64_t*)0x20000308 = 1;
+ *(uint32_t*)0x200003d8 = 1;
+ *(uint64_t*)0x200003e0 = 0;
+ *(uint32_t*)0x200003e8 = 0;
+ *(uint32_t*)0x200003ec = 0;
+ syscall(SYS_sendmsg, r[0], 0x200003c0ul, 0ul);
+ res = syscall(SYS_dup2, r[0], r[1]);
+ if (res != -1)
+ r[2] = res;
+ *(uint32_t*)0x20000140 = 0;
+ memcpy((void*)0x20000144, "\x0a\x00\x01\x00\x01", 5);
+ syscall(SYS_setsockopt, r[2], 0x84, 0x901, 0x20000140ul, 0xaul);
+}
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ for (procid = 0; procid < 4; procid++) {
+ if (fork() == 0) {
+ loop();
+ }
+ }
+ sleep(1000000);
+ return 0;
+}
+EOF
+mycc -o /tmp/syzkaller55 -Wall -Wextra -O0 /tmp/syzkaller55.c || exit 1
+
+kldstat | grep -q sctp || kldload sctp.ko
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 120 ]; do
+ (cd /tmp; timeout 3m ./syzkaller55)
+done
+
+rm -rf /tmp/syzkaller55 /tmp/syzkaller55.c /tmp/syzkaller55.core \
+ /tmp/syzkaller.??????
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller56.sh b/tools/test/stress2/misc/syzkaller56.sh
new file mode 100755
index 000000000000..f24dafa72823
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller56.sh
@@ -0,0 +1,298 @@
+#!/bin/sh
+
+# panic: Assertion clen >= sizeof(*cm) && clen <= cm->cmsg_len failed at ../../../kern/uipc_usrreq.c:2018
+# cpuid = 8
+# time = 1653654831
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe0158aebaa0
+# vpanic() at vpanic+0x17f/frame 0xfffffe0158aebaf0
+# panic() at panic+0x43/frame 0xfffffe0158aebb50
+# unp_externalize() at unp_externalize+0x3b7/frame 0xfffffe0158aebbe0
+# soreceive_generic() at soreceive_generic+0x73d/frame 0xfffffe0158aebca0
+# soreceive() at soreceive+0x4b/frame 0xfffffe0158aebcc0
+# kern_recvit() at kern_recvit+0x1ba/frame 0xfffffe0158aebd70
+# sys_recvfrom() at sys_recvfrom+0x95/frame 0xfffffe0158aebe00
+# amd64_syscall() at amd64_syscall+0x145/frame 0xfffffe0158aebf30
+# fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe0158aebf30
+# --- syscall (0, FreeBSD ELF64, nosys), rip = 0x8230797da, rsp = 0x827bc4f48, rbp = 0x827bc4f70 ---
+# KDB: enter: panic
+# [ thread pid 32490 tid 141239 ]
+# Stopped at 78043(%rip)
+# db> x/s version
+# FreeBSD 14.0-CURRENT #0 n255820-4682ac697ce9b: Fri May 27 07:06:21 CEST 2022
+# pho@mercat1.netperf.freebsd.org:/usr/src/sys/amd64/compile/PHO
+# db>
+
+
+[ `uname -p` != "amd64" ] && exit 0
+
+. ../default.cfg
+cat > /tmp/syzkaller56.c <<EOF
+// https://syzkaller.appspot.com/bug?id=10ad96d3c8f58f42ad73650e339a4952f9d82254
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+c48c62e7fbd8ef327088@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <errno.h>
+#include <pthread.h>
+#include <pwd.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <time.h>
+#include <unistd.h>
+
+static void sleep_ms(uint64_t ms)
+{
+ usleep(ms * 1000);
+}
+
+static uint64_t current_time_ms(void)
+{
+ struct timespec ts;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(1);
+ return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
+}
+
+static void thread_start(void* (*fn)(void*), void* arg)
+{
+ pthread_t th;
+ pthread_attr_t attr;
+ pthread_attr_init(&attr);
+ pthread_attr_setstacksize(&attr, 128 << 10);
+ int i = 0;
+ for (; i < 100; i++) {
+ if (pthread_create(&th, &attr, fn, arg) == 0) {
+ pthread_attr_destroy(&attr);
+ return;
+ }
+ if (errno == EAGAIN) {
+ usleep(50);
+ continue;
+ }
+ break;
+ }
+ exit(1);
+}
+
+typedef struct {
+ pthread_mutex_t mu;
+ pthread_cond_t cv;
+ int state;
+} event_t;
+
+static void event_init(event_t* ev)
+{
+ if (pthread_mutex_init(&ev->mu, 0))
+ exit(1);
+ if (pthread_cond_init(&ev->cv, 0))
+ exit(1);
+ ev->state = 0;
+}
+
+static void event_reset(event_t* ev)
+{
+ ev->state = 0;
+}
+
+static void event_set(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ if (ev->state)
+ exit(1);
+ ev->state = 1;
+ pthread_mutex_unlock(&ev->mu);
+ pthread_cond_broadcast(&ev->cv);
+}
+
+static void event_wait(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ while (!ev->state)
+ pthread_cond_wait(&ev->cv, &ev->mu);
+ pthread_mutex_unlock(&ev->mu);
+}
+
+static int event_isset(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+static int event_timedwait(event_t* ev, uint64_t timeout)
+{
+ uint64_t start = current_time_ms();
+ uint64_t now = start;
+ pthread_mutex_lock(&ev->mu);
+ for (;;) {
+ if (ev->state)
+ break;
+ uint64_t remain = timeout - (now - start);
+ struct timespec ts;
+ ts.tv_sec = remain / 1000;
+ ts.tv_nsec = (remain % 1000) * 1000 * 1000;
+ pthread_cond_timedwait(&ev->cv, &ev->mu, &ts);
+ now = current_time_ms();
+ if (now - start > timeout)
+ break;
+ }
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+struct thread_t {
+ int created, call;
+ event_t ready, done;
+};
+
+static struct thread_t threads[16];
+static void execute_call(int call);
+static int running;
+
+static void* thr(void* arg)
+{
+ struct thread_t* th = (struct thread_t*)arg;
+ for (;;) {
+ event_wait(&th->ready);
+ event_reset(&th->ready);
+ execute_call(th->call);
+ __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->done);
+ }
+ return 0;
+}
+
+static void loop(void)
+{
+ int i, call, thread;
+ for (call = 0; call < 3; call++) {
+ for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0]));
+ thread++) {
+ struct thread_t* th = &threads[thread];
+ if (!th->created) {
+ th->created = 1;
+ event_init(&th->ready);
+ event_init(&th->done);
+ event_set(&th->done);
+ thread_start(thr, th);
+ }
+ if (!event_isset(&th->done))
+ continue;
+ event_reset(&th->done);
+ th->call = call;
+ __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->ready);
+ event_timedwait(&th->done, 50);
+ break;
+ }
+ }
+ for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++)
+ sleep_ms(1);
+}
+
+uint64_t r[2] = {0xffffffffffffffff, 0xffffffffffffffff};
+
+void execute_call(int call)
+{
+ intptr_t res = 0;
+ switch (call) {
+ case 0:
+ res = syscall(SYS_socketpair, 1ul, 5ul, 0, 0x20000100ul);
+ if (res != -1) {
+ r[0] = *(uint32_t*)0x20000100;
+ r[1] = *(uint32_t*)0x20000104;
+ }
+ break;
+ case 1:
+ syscall(SYS_recvfrom, r[0], 0x20000140ul, 0x1000ul, 0ul, 0ul, 0ul);
+ break;
+ case 2:
+ *(uint64_t*)0x20001e40 = 0;
+ *(uint32_t*)0x20001e48 = 0;
+ *(uint64_t*)0x20001e50 = 0;
+ *(uint64_t*)0x20001e58 = 0;
+ *(uint64_t*)0x20001e60 = 0x20001f80;
+ memcpy((void*)0x20001f80,
+ "\x60\x00\x00\x00\xff\xff\x00\x00\x03\x00\x00\x00", 12);
+ *(uint32_t*)0x20001f8c = -1;
+ *(uint32_t*)0x20001f90 = 0;
+ *(uint32_t*)0x20001f94 = 0;
+ *(uint32_t*)0x20001f98 = 0;
+ memcpy((void*)0x20001f9c, "\x10\x00\x26\x00", 4);
+ *(uint32_t*)0x20001fa0 = 0;
+ *(uint32_t*)0x20001fa4 = 0;
+ *(uint32_t*)0x20001fa8 = 0;
+ *(uint32_t*)0x20001fac = 0;
+ *(uint32_t*)0x20001fb0 = 0;
+ *(uint32_t*)0x20001fb4 = 0;
+ *(uint32_t*)0x20001fb8 = -1;
+ *(uint32_t*)0x20001fbc = 0;
+ *(uint32_t*)0x20001fc0 = -1;
+ *(uint32_t*)0x20001fc4 = 0;
+ *(uint32_t*)0x20001fc8 = 0;
+ *(uint32_t*)0x20001fcc = 0;
+ *(uint32_t*)0x20001fd0 = 0;
+ *(uint32_t*)0x20001fd4 = 0;
+ *(uint32_t*)0x20001fd8 = 0;
+ *(uint32_t*)0x20001fdc = 0;
+ memcpy((void*)0x20001fe0,
+ "\x60\x00\x00\x00\xff\xff\x00\x00\x03\x00\x00\x00", 12);
+ *(uint32_t*)0x20001fec = 0;
+ *(uint32_t*)0x20001ff0 = 0;
+ *(uint32_t*)0x20001ff4 = 0;
+ *(uint32_t*)0x20001ff8 = -1;
+ memcpy((void*)0x20001ffc, "\x10\x00\x00\x00", 4);
+ *(uint32_t*)0x20002000 = -1;
+ *(uint32_t*)0x20002004 = 0;
+ *(uint32_t*)0x20002008 = 0;
+ *(uint32_t*)0x2000200c = 0;
+ *(uint32_t*)0x20002010 = 0;
+ *(uint32_t*)0x20002014 = 0;
+ *(uint32_t*)0x20002018 = -1;
+ *(uint32_t*)0x2000201c = 0;
+ *(uint32_t*)0x20002020 = -1;
+ *(uint32_t*)0x20002024 = 0;
+ *(uint32_t*)0x20002028 = 0;
+ *(uint32_t*)0x2000202c = 0;
+ *(uint32_t*)0x20002030 = 0;
+ *(uint32_t*)0x20002034 = 0;
+ *(uint32_t*)0x20002038 = 0;
+ *(uint32_t*)0x2000203c = -1;
+ memcpy((void*)0x20002040,
+ "\x14\x00\x00\x00\xff\xff\x00\x00\x01\x00\x00\x00", 12);
+ *(uint32_t*)0x2000204c = -1;
+ *(uint32_t*)0x20002050 = r[1];
+ *(uint64_t*)0x20001e68 = 0xd4;
+ *(uint32_t*)0x20001e70 = 0;
+ syscall(SYS_sendmsg, r[1], 0x20001e40ul, 0ul);
+ break;
+ }
+}
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ loop();
+ return 0;
+}
+EOF
+mycc -o /tmp/syzkaller56 -Wall -Wextra -O0 /tmp/syzkaller56.c -lpthread ||
+ exit 1
+
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 60 ]; do
+ (cd /tmp; timeout 3m ./syzkaller56)
+done
+
+rm -rf /tmp/syzkaller56 /tmp/syzkaller56.c /tmp/syzkaller56.core \
+ /tmp/syzkaller.??????
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller57.sh b/tools/test/stress2/misc/syzkaller57.sh
new file mode 100755
index 000000000000..a90213744418
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller57.sh
@@ -0,0 +1,267 @@
+#!/bin/sh
+
+# panic: sbflush_internal: ccc 0 mb 0 mbcnt 256
+# cpuid = 6
+# time = 1653879149
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe0694766c00
+# vpanic() at vpanic+0x17f/frame 0xfffffe0694766c50
+# panic() at panic+0x43/frame 0xfffffe0694766cb0
+# sbrelease_internal() at sbrelease_internal+0xb9/frame 0xfffffe0694766cd0
+# solisten_proto() at solisten_proto+0xb5/frame 0xfffffe0694766d30
+# sctp_listen() at sctp_listen+0x2f7/frame 0xfffffe0694766da0
+# solisten() at solisten+0x42/frame 0xfffffe0694766dc0
+# kern_listen() at kern_listen+0x7d/frame 0xfffffe0694766e00
+# amd64_syscall() at amd64_syscall+0x145/frame 0xfffffe0694766f30
+# fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe0694766f30
+# --- syscall (0, FreeBSD ELF64, nosys), rip = 0x82222e7da, rsp = 0x820d68d88, rbp = 0x820d68f00 ---
+# KDB: enter: panic
+# [ thread pid 12921 tid 741095 ]
+# Stopped at kdb_enter+0x32: movq $0,0x1277ff3(%rip)
+# db> x/s version
+# FreeBSD 14.0-CURRENT #0 main-n255847-d46174cd8838b: Sat May 28 20:56:08 CEST 2022
+# pho@mercat1.netperf.freebsd.org:/usr/src/sys/amd64/compile/PHO
+# db>
+
+[ `uname -p` != "amd64" ] && exit 0
+
+. ../default.cfg
+cat > /tmp/syzkaller57.c <<EOF
+// https://syzkaller.appspot.com/bug?id=66d47f23f24ecf5536fd47d81defdb917c307bd2
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+6c484f116b9dc88f7db1@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <sys/types.h>
+
+#include <dirent.h>
+#include <errno.h>
+#include <pwd.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/stat.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+#include <time.h>
+#include <unistd.h>
+
+static __thread int skip_segv;
+static __thread jmp_buf segv_env;
+
+static void segv_handler(int sig, siginfo_t* info, void* ctx __unused)
+{
+ uintptr_t addr = (uintptr_t)info->si_addr;
+ const uintptr_t prog_start = 1 << 20;
+ const uintptr_t prog_end = 100 << 20;
+ int skip = __atomic_load_n(&skip_segv, __ATOMIC_RELAXED) != 0;
+ int valid = addr < prog_start || addr > prog_end;
+ if (sig == SIGBUS) {
+ valid = 1;
+ }
+ if (skip && valid) {
+ _longjmp(segv_env, 1);
+ }
+ exit(sig);
+}
+
+static void install_segv_handler(void)
+{
+ struct sigaction sa;
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_sigaction = segv_handler;
+ sa.sa_flags = SA_NODEFER | SA_SIGINFO;
+ sigaction(SIGSEGV, &sa, NULL);
+ sigaction(SIGBUS, &sa, NULL);
+}
+
+#define NONFAILING(...) \
+ ({ \
+ int ok = 1; \
+ __atomic_fetch_add(&skip_segv, 1, __ATOMIC_SEQ_CST); \
+ if (_setjmp(segv_env) == 0) { \
+ __VA_ARGS__; \
+ } else \
+ ok = 0; \
+ __atomic_fetch_sub(&skip_segv, 1, __ATOMIC_SEQ_CST); \
+ ok; \
+ })
+
+static void kill_and_wait(int pid, int* status)
+{
+ kill(pid, SIGKILL);
+ while (waitpid(-1, status, 0) != pid) {
+ }
+}
+
+static void sleep_ms(uint64_t ms)
+{
+ usleep(ms * 1000);
+}
+
+static uint64_t current_time_ms(void)
+{
+ struct timespec ts;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(1);
+ return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
+}
+
+static void use_temporary_dir(void)
+{
+ char tmpdir_template[] = "./syzkaller.XXXXXX";
+ char* tmpdir = mkdtemp(tmpdir_template);
+ if (!tmpdir)
+ exit(1);
+ if (chmod(tmpdir, 0777))
+ exit(1);
+ if (chdir(tmpdir))
+ exit(1);
+}
+
+static void __attribute__((noinline)) remove_dir(const char* dir)
+{
+ DIR* dp = opendir(dir);
+ if (dp == NULL) {
+ if (errno == EACCES) {
+ if (rmdir(dir))
+ exit(1);
+ return;
+ }
+ exit(1);
+ }
+ struct dirent* ep = 0;
+ while ((ep = readdir(dp))) {
+ if (strcmp(ep->d_name, ".") == 0 || strcmp(ep->d_name, "..") == 0)
+ continue;
+ char filename[FILENAME_MAX];
+ snprintf(filename, sizeof(filename), "%s/%s", dir, ep->d_name);
+ struct stat st;
+ if (lstat(filename, &st))
+ exit(1);
+ if (S_ISDIR(st.st_mode)) {
+ remove_dir(filename);
+ continue;
+ }
+ if (unlink(filename))
+ exit(1);
+ }
+ closedir(dp);
+ if (rmdir(dir))
+ exit(1);
+}
+
+static void execute_one(void);
+
+#define WAIT_FLAGS 0
+
+static void loop(void)
+{
+ int iter = 0;
+ for (;; iter++) {
+ char cwdbuf[32];
+ sprintf(cwdbuf, "./%d", iter);
+ if (mkdir(cwdbuf, 0777))
+ exit(1);
+ int pid = fork();
+ if (pid < 0)
+ exit(1);
+ if (pid == 0) {
+ if (chdir(cwdbuf))
+ exit(1);
+ execute_one();
+ exit(0);
+ }
+ int status = 0;
+ uint64_t start = current_time_ms();
+ for (;;) {
+ if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid)
+ break;
+ sleep_ms(1);
+ if (current_time_ms() - start < 5000) {
+ continue;
+ }
+ kill_and_wait(pid, &status);
+ break;
+ }
+ remove_dir(cwdbuf);
+ }
+}
+
+uint64_t r[1] = {0xffffffffffffffff};
+
+void execute_one(void)
+{
+ intptr_t res = 0;
+ res = syscall(SYS_socket, 0x1cul, 1ul, 0x84);
+ if (res != -1)
+ r[0] = res;
+ NONFAILING(*(uint8_t*)0x20000000 = 0x1c);
+ NONFAILING(*(uint8_t*)0x20000001 = 0x1c);
+ NONFAILING(*(uint16_t*)0x20000002 = htobe16(0x4e22));
+ NONFAILING(*(uint32_t*)0x20000004 = 0x20);
+ NONFAILING(memset((void*)0x20000008, 0, 16));
+ NONFAILING(*(uint32_t*)0x20000018 = 0x20);
+ syscall(SYS_bind, r[0], 0x20000000ul, 0x1cul);
+ NONFAILING(*(uint8_t*)0x20000180 = 0x1c);
+ NONFAILING(*(uint8_t*)0x20000181 = 0x1c);
+ NONFAILING(*(uint16_t*)0x20000182 = htobe16(0x4e22));
+ NONFAILING(*(uint32_t*)0x20000184 = 4);
+ NONFAILING(*(uint64_t*)0x20000188 = htobe64(0));
+ NONFAILING(*(uint64_t*)0x20000190 = htobe64(1));
+ NONFAILING(*(uint32_t*)0x20000198 = 4);
+ syscall(SYS_connect, r[0], 0x20000180ul, 0x1cul);
+ NONFAILING(memcpy(
+ (void*)0x20000480,
+ "\xa3\x1b\xe1\x78\x8e\x58\x9b\x38\x59\xf3\xbb\xdd\x7e\xf7\x51\x23\x97\x31"
+ "\xb2\x90\x4a\xd0\x4e\xb7\xdc\x37\xc6\x95\xf6\x05\x5c\xa8\x36\x54\x7e\x7b"
+ "\x6c\xc3\x7d\xae\x2a\xe4\x77\x08\x94\x67\x3c\x89\x65\x93\x24\x1c\x56\x3e"
+ "\x08\x69\x05\x35\xeb\x3b\x7f\x19\x7d\xda\x44\x54\xb4\x42\x4f\x34\xc8\x81"
+ "\x69\x4e\xac\xef\xa6\xd4\xb1\x61\x9d\xf1\x0b\x97\x7c\xd9\x82\x16\xc9\x7b"
+ "\x2e\xb3\x9f\x02\xde\x0f\xae\xe7\x0b\xec\xa3\x66\x3c\x2e\x6c\xd1\xca\x02"
+ "\xae\x0f\xd5\x65\xb9\x7c\x5c\xa0\xea\xfc\xa4\xc9\x13\x73\x14\x16\xba\xcc"
+ "\xae\x89\xe2\x68\x77\xfc\x2a\x8c\xa3\xee\xa8\x45\xf7\xc2\xcb\x48\x93\xe5"
+ "\x83\x52\x45\x26\xe3\xeb\x73\xa2\xe4\xf1\x11\xcf\x40\x5f\xef\x99\xc2\xa1"
+ "\xeb\x2c\x96\x70\x56\x88\xc8\xc7\x6b\xa1\x66\xd2\x23\x20\x07\x62\x69\xd2"
+ "\x1c\x52\xbb\x5e\x86\x43\x7d\x6c\x65\x44\x42\xf6\xd8\x45\xe2\xff\x77\xf9"
+ "\x24\xf0\x1d\x29\xf6\xd3\x74\x83\x25\x40\x56\x50\x17\x7f\xc3\x60\xd7\xed"
+ "\xb1\xfb\x7a\x74\x38\x2b\x47\x34\x93\x9c\xee\xc9\xb0\xbf\x7d\xc4\x19\xe2"
+ "\x77\x49\xbc\x71\x9c\x30\x8b\x57\x0f\x13\x4d\x93\x9d\x53\xa8\x03\xc1\x3b"
+ "\x5d\xc3\xbc\x20\xc4\x9e\xc1\x62\x69\xca\x92\x0f\x04\xa1\x0b\xea\xe7\x61"
+ "\x79\x99\x5a\x53\x1a\x27\x40\xf0\x0b\xc5\xe8\xb5\xf0\xd8\x1c\xd2\xca\x99"
+ "\x16\x70\xa8\xc5\xac\x0a\x6b\x99\x31\x0c\x90\xe2\xa5\xe0\xe3\x7c\x99\x3c"
+ "\xbd\xeb\x42\xcf\x74\xe0\xa8\xea\x4e\x64\xd8\x30\x46\x6d\x6e\x83\x7f\x21"
+ "\x00\x5c\xcf\x79\xfe\x19\xdd\xd5\xaf\x69\x9e\x1b\x67\xd5\x3f\x18\x4d\xe5"
+ "\x2a\xec\x02\x12\x92",
+ 347));
+ syscall(SYS_sendto, r[0], 0x20000480ul, 0x15bul, 0x20108ul, 0ul, 0ul);
+ syscall(SYS_listen, r[0], 0x1f);
+}
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ install_segv_handler();
+ use_temporary_dir();
+ loop();
+ return 0;
+}
+EOF
+mycc -o /tmp/syzkaller57 -Wall -Wextra -O0 /tmp/syzkaller57.c || exit 1
+
+kldstat | grep -q sctp || { kldload sctp.ko && loaded=1; }
+for i in `jot 3`; do
+ (cd /tmp; timeout 3m ./syzkaller57) &
+done
+wait
+
+rm -rf /tmp/syzkaller57 /tmp/syzkaller57.c /tmp/syzkaller57.core \
+ /tmp/syzkaller.??????
+[ $loaded ] && kldunload sctp.ko
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller58.sh b/tools/test/stress2/misc/syzkaller58.sh
new file mode 100755
index 000000000000..6c11cd583b9d
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller58.sh
@@ -0,0 +1,290 @@
+#!/bin/sh
+
+# panic: td 0xfffffe010e6ff000 is not suspended
+# cpuid = 2
+# time = 1654661460
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe0143924c10
+# vpanic() at vpanic+0x17f/frame 0xfffffe0143924c60
+# panic() at panic+0x43/frame 0xfffffe0143924cc0
+# thread_single() at thread_single+0x736/frame 0xfffffe0143924d40
+# fork1() at fork1+0x1e1/frame 0xfffffe0143924da0
+# sys_rfork() at sys_rfork+0xa4/frame 0xfffffe0143924e00
+# amd64_syscall() at amd64_syscall+0x145/frame 0xfffffe0143924f30
+# fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe0143924f30
+# --- syscall (0, FreeBSD ELF64, nosys), rip = 0x821be4d1a, rsp = 0x8276b8f48, rbp = 0x8276b8f70 ---
+# KDB: enter: panic
+# [ thread pid 2860 tid 100362 ]
+# Stopped at kdb_enter+0x32: movq $0,0x1277d83(%rip)
+# db> x/s version
+# FreeBSD 14.0-CURRENT #0 reap-n255837-0bdda1ded8d: Thu May 26 22:38:04 CEST 2022
+# pho@mercat1.netperf.freebsd.org:/var/tmp/deviant3/sys/amd64/compile/PHO
+# db>
+
+# Submitted by: markj
+
+[ `uname -p` != "amd64" ] && exit 0
+
+. ../default.cfg
+cat > /tmp/syzkaller58.c <<EOF
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+
+#define _GNU_SOURCE
+
+#include <sys/types.h>
+
+#include <errno.h>
+#include <pthread.h>
+#include <pwd.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+#include <time.h>
+#include <unistd.h>
+
+static unsigned long long procid;
+
+static void kill_and_wait(int pid, int* status)
+{
+ kill(pid, SIGKILL);
+ while (waitpid(-1, status, 0) != pid) {
+ }
+}
+
+static void sleep_ms(uint64_t ms)
+{
+ usleep(ms * 1000);
+}
+
+static uint64_t current_time_ms(void)
+{
+ struct timespec ts;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(1);
+ return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
+}
+
+static void thread_start(void* (*fn)(void*), void* arg)
+{
+ pthread_t th;
+ pthread_attr_t attr;
+ pthread_attr_init(&attr);
+ pthread_attr_setstacksize(&attr, 128 << 10);
+ int i = 0;
+ for (; i < 100; i++) {
+ if (pthread_create(&th, &attr, fn, arg) == 0) {
+ pthread_attr_destroy(&attr);
+ return;
+ }
+ if (errno == EAGAIN) {
+ usleep(50);
+ continue;
+ }
+ break;
+ }
+ exit(1);
+}
+
+typedef struct {
+ pthread_mutex_t mu;
+ pthread_cond_t cv;
+ int state;
+} event_t;
+
+static void event_init(event_t* ev)
+{
+ if (pthread_mutex_init(&ev->mu, 0))
+ exit(1);
+ if (pthread_cond_init(&ev->cv, 0))
+ exit(1);
+ ev->state = 0;
+}
+
+static void event_reset(event_t* ev)
+{
+ ev->state = 0;
+}
+
+static void event_set(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ if (ev->state)
+ exit(1);
+ ev->state = 1;
+ pthread_mutex_unlock(&ev->mu);
+ pthread_cond_broadcast(&ev->cv);
+}
+
+static void event_wait(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ while (!ev->state)
+ pthread_cond_wait(&ev->cv, &ev->mu);
+ pthread_mutex_unlock(&ev->mu);
+}
+
+static int event_isset(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+static int event_timedwait(event_t* ev, uint64_t timeout)
+{
+ uint64_t start = current_time_ms();
+ uint64_t now = start;
+ pthread_mutex_lock(&ev->mu);
+ for (;;) {
+ if (ev->state)
+ break;
+ uint64_t remain = timeout - (now - start);
+ struct timespec ts;
+ ts.tv_sec = remain / 1000;
+ ts.tv_nsec = (remain % 1000) * 1000 * 1000;
+ pthread_cond_timedwait(&ev->cv, &ev->mu, &ts);
+ now = current_time_ms();
+ if (now - start > timeout)
+ break;
+ }
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+struct thread_t {
+ int created, call;
+ event_t ready, done;
+};
+
+static struct thread_t threads[16];
+static void execute_call(int call);
+static int running;
+
+static void* thr(void* arg)
+{
+ struct thread_t* th = (struct thread_t*)arg;
+ for (;;) {
+ event_wait(&th->ready);
+ event_reset(&th->ready);
+ execute_call(th->call);
+ __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->done);
+ }
+ return 0;
+}
+
+static void execute_one(void)
+{
+ int i, call, thread;
+ for (call = 0; call < 5; call++) {
+ for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0]));
+ thread++) {
+ struct thread_t* th = &threads[thread];
+ if (!th->created) {
+ th->created = 1;
+ event_init(&th->ready);
+ event_init(&th->done);
+ event_set(&th->done);
+ thread_start(thr, th);
+ }
+ if (!event_isset(&th->done))
+ continue;
+ event_reset(&th->done);
+ th->call = call;
+ __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->ready);
+ event_timedwait(&th->done, 50);
+ break;
+ }
+ }
+ for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++)
+ sleep_ms(1);
+}
+
+static void execute_one(void);
+
+#define WAIT_FLAGS 0
+
+static void loop(void)
+{
+ int iter __unused = 0;
+ for (;; iter++) {
+ int pid = fork();
+ if (pid < 0)
+ exit(1);
+ if (pid == 0) {
+ execute_one();
+ exit(0);
+ }
+ int status = 0;
+ uint64_t start = current_time_ms();
+ for (;;) {
+ if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid)
+ break;
+ sleep_ms(1);
+ if (current_time_ms() - start < 5000)
+ continue;
+ kill_and_wait(pid, &status);
+ break;
+ }
+ }
+}
+
+void execute_call(int call)
+{
+ switch (call) {
+ case 0:
+ syscall(SYS_rfork, 0x93000ul);
+ break;
+ case 1:
+ syscall(SYS_kqueue);
+ break;
+ case 2:
+ *(uint32_t*)0x20000000 = 0x1d;
+ *(uint32_t*)0x20000004 = 0;
+ *(uint32_t*)0x20000008 = 0;
+ *(uint32_t*)0x2000000c = 0;
+ *(uint32_t*)0x20000010 = 0;
+ memset((void*)0x20000014, 0, 60);
+ syscall(SYS_procctl, 0ul, 0, 6ul, 0x20000000ul);
+ break;
+ case 3:
+ syscall(SYS_kevent, -1, 0ul, 0ul, 0ul, 0ul, 0ul);
+ break;
+ case 4:
+ syscall(SYS_truncate, 0ul, 4ul);
+ break;
+ }
+}
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ for (procid = 0; procid < 2; procid++) {
+ if (fork() == 0) {
+ loop();
+ }
+ }
+ sleep(1000000);
+ return 0;
+}
+
+
+EOF
+mycc -o /tmp/syzkaller58 -Wall -Wextra -O0 /tmp/syzkaller58.c -lpthread \
+ || exit 1
+
+(cd /tmp; timeout 3m ./syzkaller58)
+
+rm -rf /tmp/syzkaller58 /tmp/syzkaller58.c /tmp/syzkaller58.core \
+ /tmp/syzkaller.??????
+[ $loaded ] && kldunload sctp.ko
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller59.sh b/tools/test/stress2/misc/syzkaller59.sh
new file mode 100755
index 000000000000..1644ce627934
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller59.sh
@@ -0,0 +1,154 @@
+#!/bin/sh
+
+# Fatal trap 12: page fault while in kernel mode
+# cpuid = 8; apic id = 08
+# fault virtual address = 0x8
+# fault code = supervisor read data, page not present
+# instruction pointer = 0x20:0xffffffff80b98b73
+# stack pointer = 0x0:0xfffffe06996fc700
+# frame pointer = 0x0:0xfffffe06996fc730
+# code segment = base 0x0, limit 0xfffff, type 0x1b
+# = DPL 0, pres 1, long 1, def32 0, gran 1
+# processor eflags = interrupt enabled, resume, IOPL = 0
+# current process = 46538 (repro11)
+# trap number = 12
+# panic: page fault
+# cpuid = 8
+# time = 1655883715
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe06996fc4c0
+# vpanic() at vpanic+0x151/frame 0xfffffe06996fc510
+# panic() at panic+0x43/frame 0xfffffe06996fc570
+# trap_fatal() at trap_fatal+0x387/frame 0xfffffe06996fc5d0
+# trap_pfault() at trap_pfault+0xab/frame 0xfffffe06996fc630
+# calltrap() at calltrap+0x8/frame 0xfffffe06996fc630
+# --- trap 0xc, rip = 0xffffffff80b98b73, rsp = 0xfffffe06996fc700, rbp = 0xfffffe06996fc730 ---
+# knlist_remove_kq() at knlist_remove_kq+0xa3/frame 0xfffffe06996fc730
+# kqueue_drain() at kqueue_drain+0x2c8/frame 0xfffffe06996fc770
+# kqueue_close() at kqueue_close+0x7e/frame 0xfffffe06996fc7b0
+# _fdrop() at _fdrop+0x1b/frame 0xfffffe06996fc7d0
+# closef() at closef+0x1db/frame 0xfffffe06996fc860
+# fdescfree() at fdescfree+0x433/frame 0xfffffe06996fc930
+# exit1() at exit1+0x4ef/frame 0xfffffe06996fc9a0
+# sigexit() at sigfce20
+# postsig() at postsig+0x1aa/frame 0xfffffe06996fcef0
+# ast() at ast+0x4fb/frame 0xfffffe06996fcf30
+# doreti_ast() at doreti_ast+0x1f/frame 0x821076840
+# KDB: enter: panic
+# [ thread pid 46538 tid 356284 ]
+# Stopped at kdb_enter+0x32: movq $0,0x129f1a3(%rip)
+# db> x/s version
+# version: FreeBSD 14.0-CURRENT #0 main-n256236-4f1d91e413d7e: Wed Jun 22 07:47:51 CEST 2022
+# pho@mercat1.netperf.freebsd.org:/usr/src/sys/amd64/compile/PHO
+# db>
+
+[ `uname -p` != "amd64" ] && exit 0
+
+. ../default.cfg
+cat > /tmp/syzkaller59.c <<EOF
+// https://syzkaller.appspot.com/bug?id=17dea08cb46e51310db9047c400d1ff4646d2f9a
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+c94f6c97744bd9f9d14d@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <sys/types.h>
+
+#include <pwd.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+#include <time.h>
+#include <unistd.h>
+
+static void kill_and_wait(int pid, int* status)
+{
+ kill(pid, SIGKILL);
+ while (waitpid(-1, status, 0) != pid) {
+ }
+}
+
+static void sleep_ms(uint64_t ms)
+{
+ usleep(ms * 1000);
+}
+
+static uint64_t current_time_ms(void)
+{
+ struct timespec ts;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(1);
+ return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
+}
+
+static void execute_one(void);
+
+#define WAIT_FLAGS 0
+
+static void loop(void)
+{
+ int iter __unused = 0;
+ for (;; iter++) {
+ int pid = fork();
+ if (pid < 0)
+ exit(1);
+ if (pid == 0) {
+ execute_one();
+ exit(0);
+ }
+ int status = 0;
+ uint64_t start = current_time_ms();
+ for (;;) {
+ if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid)
+ break;
+ sleep_ms(1);
+ if (current_time_ms() - start < 5000)
+ continue;
+ kill_and_wait(pid, &status);
+ break;
+ }
+ }
+}
+
+uint64_t r[1] = {0xffffffffffffffff};
+
+void execute_one(void)
+{
+ intptr_t res = 0;
+ res = syscall(SYS_kqueue);
+ if (res != -1)
+ r[0] = res;
+ *(uint64_t*)0x20000140 = 0;
+ *(uint16_t*)0x20000148 = 0xfffa;
+ *(uint16_t*)0x2000014a = 0x4021;
+ *(uint32_t*)0x2000014c = 0;
+ *(uint64_t*)0x20000150 = 0;
+ *(uint64_t*)0x20000158 = 0;
+ *(uint64_t*)0x20000160 = 0;
+ *(uint64_t*)0x20000168 = 0;
+ *(uint64_t*)0x20000170 = 0;
+ *(uint64_t*)0x20000178 = 0;
+ syscall(SYS_kevent, r[0], 0x20000140ul, 1ul, 0ul, 0ul, 0ul);
+ syscall(SYS_rfork, 0x90030ul);
+}
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ loop();
+ return 0;
+}
+EOF
+mycc -o /tmp/syzkaller59 -Wall -Wextra -O0 /tmp/syzkaller59.c || exit 1
+
+(cd /tmp; timeout 3m ./syzkaller59)
+
+rm -rf /tmp/syzkaller59 /tmp/syzkaller59.c /tmp/syzkaller59.core \
+ /tmp/syzkaller.??????
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller60.sh b/tools/test/stress2/misc/syzkaller60.sh
new file mode 100755
index 000000000000..cc93834152ae
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller60.sh
@@ -0,0 +1,103 @@
+#!/bin/sh
+
+# Fatal trap 12: page fault while in kernel mode
+# cpuid = 5; apic id = 05
+# fault virtual address = 0x3e07d728
+# fault code = supervisor write data, page not present
+# instruction pointer = 0x20:0xffffffff80c9ba1d
+# stack pointer = 0x28:0xfffffe014d9ceba0
+# frame pointer = 0x28:0xfffffe014d9cec00
+# code segment = base 0x0, limit 0xfffff, type 0x1b
+# = DPL 0, pres 1, long 1, def32 0, gran 1
+# processor eflags = interrupt enabled, resume, IOPL = 0
+# current process = 3135 (syzkaller60)
+# trap number = 12
+# panic: page fault
+# cpuid = 5
+# time = 1656134459
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe014d9ce960
+# vpanic() at vpanic+0x151/frame 0xfffffe014d9ce9b0
+# panic() at panic+0x43/frame 0xfffffe014d9cea10
+# trap_fatal() at trap_fatal+0x387/frame 0xfffffe014d9cea70
+# trap_pfault() at trap_pfault+0xab/frame 0xfffffe014d9cead0
+# calltrap() at calltrap+0x8/frame 0xfffffe014d9cead0
+# --- trap 0xc, rip = 0xffffffff80c9ba1d, rsp = 0xfffffe014d9ceba0, rbp = 0xfffffe014d9cec00 ---
+# soclose() at soclose+0x1ad/frame 0xfffffe014d9cec00
+# _fdrop() at _fdrop+0x1b/frame 0xfffffe014d9cec20
+# closef() at closef+0x1db/frame 0xfffffe014d9cecb0
+# fdescfree() at fdescfree+0x433/frame 0xfffffe014d9ced80
+# exit1() at exit1+0x4ef/frame 0xfffffe014d9cedf0
+# sys_exit() at sys_exit+0xd/frame 0xfffffe014d9cee00
+# amd64_syscall() md64_syscall+0x145/frame 0xfffffe014d9cef30
+# fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe014d9cef30
+# --- syscall (1, FreeBSD ELF64, sys_exit), rip = 0x82209fdca, rsp = 0x820fab718, rbp = 0x820fab730 ---
+# KDB: enter: panic
+# [ thread pid 3135 tid 100332 ]
+# Stopped at kdb_enter+0x32: movq $0,0x129f1a3(%rip)
+# db> x/s version
+# version: FreeBSD 14.0-CURRENT #0 main-n256319-c11e64ce51308: Sat Jun 25 07:12:49 CEST 2022\012
+# pho@mercat1.netperf.freebsd.org:/usr/src/sys/amd64/compile/PHO
+# db>
+
+[ `uname -p` != "amd64" ] && exit 0
+
+. ../default.cfg
+cat > /tmp/syzkaller60.c <<EOF
+// https://syzkaller.appspot.com/bug?id=c08c1aff3eaffde1197888c66684fabf474f3305
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+4b862074650b91e087b4@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <pwd.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <unistd.h>
+
+uint64_t r[2] = {0xffffffffffffffff, 0xffffffffffffffff};
+
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ intptr_t res = 0;
+ res = syscall(SYS_socket, 0x1cul, 1ul, 0x84);
+ if (res != -1)
+ r[0] = res;
+ *(uint8_t*)0x20000000 = 0x1c;
+ *(uint8_t*)0x20000001 = 0x1c;
+ *(uint16_t*)0x20000002 = htobe16(0x4e22);
+ *(uint32_t*)0x20000004 = 0;
+ memset((void*)0x20000008, 0, 16);
+ *(uint32_t*)0x20000018 = 0;
+ syscall(SYS_bind, r[0], 0x20000000ul, 0x1cul);
+ syscall(SYS_listen, r[0], 0x40000);
+ res = syscall(SYS_socket, 0x1cul, 1ul, 0x84);
+ if (res != -1)
+ r[1] = res;
+ *(uint8_t*)0x20000180 = 0x1c;
+ *(uint8_t*)0x20000181 = 0x1c;
+ *(uint16_t*)0x20000182 = htobe16(0x4e22);
+ *(uint32_t*)0x20000184 = 0;
+ *(uint64_t*)0x20000188 = htobe64(0);
+ *(uint64_t*)0x20000190 = htobe64(1);
+ *(uint32_t*)0x20000198 = 0;
+ syscall(SYS_connect, r[1], 0x20000180ul, 0x1cul);
+ return 0;
+}
+EOF
+mycc -o /tmp/syzkaller60 -Wall -Wextra -O0 /tmp/syzkaller60.c || exit 1
+
+kldstat | grep -q sctp || { kldload sctp.ko && loaded=1; }
+(cd /tmp; timeout 3m ./syzkaller60)
+
+rm -rf /tmp/syzkaller60 /tmp/syzkaller60.c /tmp/syzkaller60.core \
+ /tmp/syzkaller.??????
+[ $loaded ] && kldunload sctp.ko
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller61.sh b/tools/test/stress2/misc/syzkaller61.sh
new file mode 100755
index 000000000000..a25ae4cf00d8
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller61.sh
@@ -0,0 +1,319 @@
+#!/bin/sh
+
+# Seen:
+# [root@mercat1 /usr/src/tools/test/stress2/misc]# pgrep syzkaller61 | xargs procstat -k
+# PID TID COMM TDNAME KSTACK
+# 13332 106396 syzkaller61 - mi_switch thread_suspend_check ast_suspend ast_handler ast doreti_ast
+# 13332 560662 syzkaller61 - mi_switch sleepq_switch sleepq_catch_signals sleepq_wait_sig _sleep umtxq_sleep do_wait __umtx_op_wait_uint_private sys__umtx_op amd64_syscall fast_syscall_common
+# 13332 560776 syzkaller61 - mi_switch thread_suspend_switch thread_single fork1 sys_rfork amd64_syscall fast_syscall_common
+# 13662 356440 syzkaller61 - mi_switch thread_suspend_check ast_suspend ast_handler ast doreti_ast
+# 13662 561098 syzkaller61 - mi_switch sleepq_switch sleepq_catch_signals sleepq_wait_sig _sleep umtxq_sleep do_wait __umtx_op_wait_uint_private sys__umtx_op amd64_syscall fast_syscall_common
+# 13662 561160 syzkaller61 - mi_switch thread_suspend_switch thread_single fork1 sys_rfork amd64_syscall fast_syscall_common
+# [root@mercat1 /usr/src/tools/test/stress2/misc]#
+
+[ `uname -p` != "amd64" ] && exit 0
+
+. ../default.cfg
+cat > /tmp/syzkaller61.c <<EOF
+// https://syzkaller.appspot.com/bug?id=00d8ca63243899ffb67b15ec93aee4ffa2f06637
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+647212368c3f32c6f13f@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <sys/types.h>
+
+#include <errno.h>
+#include <pthread.h>
+#include <pwd.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+#include <time.h>
+#include <unistd.h>
+
+static __thread int clone_ongoing;
+static __thread int skip_segv;
+static __thread jmp_buf segv_env;
+
+static void segv_handler(int sig, siginfo_t* info, void* ctx __unused)
+{
+ if (__atomic_load_n(&clone_ongoing, __ATOMIC_RELAXED) != 0) {
+ exit(sig);
+ }
+ uintptr_t addr = (uintptr_t)info->si_addr;
+ const uintptr_t prog_start = 1 << 20;
+ const uintptr_t prog_end = 100 << 20;
+ int skip = __atomic_load_n(&skip_segv, __ATOMIC_RELAXED) != 0;
+ int valid = addr < prog_start || addr > prog_end;
+ if (sig == SIGBUS)
+ valid = 1;
+ if (skip && valid) {
+ _longjmp(segv_env, 1);
+ }
+ exit(sig);
+}
+
+static void install_segv_handler(void)
+{
+ struct sigaction sa;
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_sigaction = segv_handler;
+ sa.sa_flags = SA_NODEFER | SA_SIGINFO;
+ sigaction(SIGSEGV, &sa, NULL);
+ sigaction(SIGBUS, &sa, NULL);
+}
+
+#define NONFAILING(...) \
+ ({ \
+ int ok = 1; \
+ __atomic_fetch_add(&skip_segv, 1, __ATOMIC_SEQ_CST); \
+ if (_setjmp(segv_env) == 0) { \
+ __VA_ARGS__; \
+ } else \
+ ok = 0; \
+ __atomic_fetch_sub(&skip_segv, 1, __ATOMIC_SEQ_CST); \
+ ok; \
+ })
+
+static void kill_and_wait(int pid, int* status)
+{
+ kill(pid, SIGKILL);
+ while (waitpid(-1, status, 0) != pid) {
+ }
+}
+
+static void sleep_ms(uint64_t ms)
+{
+ usleep(ms * 1000);
+}
+
+static uint64_t current_time_ms(void)
+{
+ struct timespec ts;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(1);
+ return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
+}
+
+static void thread_start(void* (*fn)(void*), void* arg)
+{
+ pthread_t th;
+ pthread_attr_t attr;
+ pthread_attr_init(&attr);
+ pthread_attr_setstacksize(&attr, 128 << 10);
+ int i = 0;
+ for (; i < 100; i++) {
+ if (pthread_create(&th, &attr, fn, arg) == 0) {
+ pthread_attr_destroy(&attr);
+ return;
+ }
+ if (errno == EAGAIN) {
+ usleep(50);
+ continue;
+ }
+ break;
+ }
+ exit(1);
+}
+
+typedef struct {
+ pthread_mutex_t mu;
+ pthread_cond_t cv;
+ int state;
+} event_t;
+
+static void event_init(event_t* ev)
+{
+ if (pthread_mutex_init(&ev->mu, 0))
+ exit(1);
+ if (pthread_cond_init(&ev->cv, 0))
+ exit(1);
+ ev->state = 0;
+}
+
+static void event_reset(event_t* ev)
+{
+ ev->state = 0;
+}
+
+static void event_set(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ if (ev->state)
+ exit(1);
+ ev->state = 1;
+ pthread_mutex_unlock(&ev->mu);
+ pthread_cond_broadcast(&ev->cv);
+}
+
+static void event_wait(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ while (!ev->state)
+ pthread_cond_wait(&ev->cv, &ev->mu);
+ pthread_mutex_unlock(&ev->mu);
+}
+
+static int event_isset(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+static int event_timedwait(event_t* ev, uint64_t timeout)
+{
+ uint64_t start = current_time_ms();
+ uint64_t now = start;
+ pthread_mutex_lock(&ev->mu);
+ for (;;) {
+ if (ev->state)
+ break;
+ uint64_t remain = timeout - (now - start);
+ struct timespec ts;
+ ts.tv_sec = remain / 1000;
+ ts.tv_nsec = (remain % 1000) * 1000 * 1000;
+ pthread_cond_timedwait(&ev->cv, &ev->mu, &ts);
+ now = current_time_ms();
+ if (now - start > timeout)
+ break;
+ }
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+struct thread_t {
+ int created, call;
+ event_t ready, done;
+};
+
+static struct thread_t threads[16];
+static void execute_call(int call);
+static int running;
+
+static void* thr(void* arg)
+{
+ struct thread_t* th = (struct thread_t*)arg;
+ for (;;) {
+ event_wait(&th->ready);
+ event_reset(&th->ready);
+ execute_call(th->call);
+ __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->done);
+ }
+ return 0;
+}
+
+static void execute_one(void)
+{
+ int i, call, thread;
+ for (call = 0; call < 2; call++) {
+ for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0]));
+ thread++) {
+ struct thread_t* th = &threads[thread];
+ if (!th->created) {
+ th->created = 1;
+ event_init(&th->ready);
+ event_init(&th->done);
+ event_set(&th->done);
+ thread_start(thr, th);
+ }
+ if (!event_isset(&th->done))
+ continue;
+ event_reset(&th->done);
+ th->call = call;
+ __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->ready);
+ event_timedwait(&th->done, 50);
+ break;
+ }
+ }
+ for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++)
+ sleep_ms(1);
+}
+
+static void execute_one(void);
+
+#define WAIT_FLAGS 0
+
+static void loop(void)
+{
+ int iter __unused = 0;
+ for (;; iter++) {
+ int pid = fork();
+ if (pid < 0)
+ exit(1);
+ if (pid == 0) {
+ execute_one();
+ exit(0);
+ }
+ int status = 0;
+ uint64_t start = current_time_ms();
+ for (;;) {
+ if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid)
+ break;
+ sleep_ms(1);
+ if (current_time_ms() - start < 5000)
+ continue;
+ kill_and_wait(pid, &status);
+ break;
+ }
+ }
+}
+
+void execute_call(int call)
+{
+ switch (call) {
+ case 0:
+ NONFAILING(*(uint32_t*)0x20001f00 = 0x16);
+ NONFAILING(*(uint32_t*)0x20001f04 = 0);
+ NONFAILING(*(uint32_t*)0x20001f08 = 0);
+ NONFAILING(*(uint32_t*)0x20001f0c = 0);
+ NONFAILING(*(uint32_t*)0x20001f10 = 0);
+ NONFAILING(memset((void*)0x20001f14, 0, 60));
+ syscall(SYS_procctl, 0ul, 0, 6ul, 0x20001f00ul);
+ break;
+ case 1:
+ syscall(SYS_rfork, 0x85000ul);
+ break;
+ }
+}
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ install_segv_handler();
+ loop();
+ return 0;
+}
+EOF
+mycc -o /tmp/syzkaller61 -Wall -Wextra -O0 /tmp/syzkaller61.c -lpthread ||
+ exit 1
+
+(cd ../testcases/swap; ./swap -t 3m -i 10 -l 100 > /dev/null 2>&1) &
+for i in `jot 300`; do
+ (cd /tmp; timeout -k 3s 2s ./syzkaller61) &
+ pids="$pids $!"
+done
+sleep 5
+pkill -9 syzkaller61 swap; sleep 1
+pgrep -q syzkaller61 && { pgrep syzkaller61 | xargs ps -lHp; exit 1; }
+for pid in $pids; do
+ wait $pid
+done
+while pkill swap; do :; done
+wait
+
+rm -rf /tmp/syzkaller61 /tmp/syzkaller61.c /tmp/syzkaller61.core \
+ /tmp/syzkaller.??????
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller62.sh b/tools/test/stress2/misc/syzkaller62.sh
new file mode 100755
index 000000000000..aa2d33ebaf9e
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller62.sh
@@ -0,0 +1,83 @@
+#!/bin/sh
+
+# panic: Assertion sb->sb_hiwat >= sb->uxdg_cc failed at ../../../kern/uipc_usrreq.c:1099
+# cpuid = 9
+# time = 1660909804
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe01401e7970
+# vpanic() at vpanic+0x151/frame 0xfffffe01401e79c0
+# panic() at panic+0x43/frame 0xfffffe01401e7a20
+# uipc_dgram_sbspace() at uipc_dgram_sbspace+0x51/frame 0xfffffe01401e7a30
+# uipc_sosend_dgram() at uipc_sosend_dgram+0x690/frame 0xfffffe01401e7ac0
+# sosend() at sosend+0x49/frame 0xfffffe01401e7af0
+# soo_write() at soo_write+0x43/frame 0xfffffe01401e7b20
+# filemon_close_log() at filemon_close_log+0xd5/frame 0xfffffe01401e7b90
+# filemon_dtr() at filemon_dtr+0x31/frame 0xfffffe01401e7bb0
+# devfs_destroy_cdevpriv() at devfs_destroy_cdevpriv+0xab/frame 0xfffffe01401e7bd0
+# devfs_close_f() at devfs_close_f+0x64/frame 0xfffffe01401e7c00
+# _fdrop() at _fdrop+0x1b/frame 0xfffffe01401e7c20
+# closef() at closef+0x1db/frame 0xfffffe01401e7cb0
+# fdescfree() at fdescfree+0x433/frame 0xfffffe01401e7d80
+# exit1() at exit1+0x4df/frame 0xfffffe01401e7df0
+# sys_exit() at sys_exit+0xd/frame 0xfffffe01401e7e00
+# amd64_syscall() at amd64_syscall+0x145/frame 0xfffffe01401e7f30
+# fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe01401e7f30
+# --- syscall (1, FreeBSD ELF64, sys_exit), rip = 0x82301d16a, rsp = 0x8209bf628, rbp = 0x8209bf640 ---
+# KDB: enter: panic
+# [ thread pid 2876 tid 100222 ]
+# Stopped at x32: movq $0,0x12a1323(%rip)
+# db> x/s version
+# version: FreeBSD 14.0-CURRENT #0 main-n257506-eed634d113d-dirty: Thu Aug 18 13:56:53 CEST 2022
+# pho@mercat1.netperf.freebsd.org:/usr/src/sys/amd64/compile/PHO\012
+# db>
+
+. ../default.cfg
+cat > /tmp/syzkaller62.c <<EOF
+// https://syzkaller.appspot.com/bug?id=582310beb894769fc836748eec49b8d2f905e5ef
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+6e8be1ec8d77578a3df4@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <pwd.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <unistd.h>
+
+uint64_t r[2] = {0xffffffffffffffff, 0xffffffffffffffff};
+
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ intptr_t res = 0;
+ memcpy((void*)0x20000040, "/dev/filemon\000", 13);
+ res = syscall(SYS_openat, 0xffffffffffffff9cul, 0x20000040ul, 0ul, 0ul);
+ if (res != -1)
+ r[0] = res;
+ res = syscall(SYS_socketpair, 1ul, 2ul, 0, 0x20000080ul);
+ if (res != -1)
+ r[1] = *(uint32_t*)0x20000084;
+ *(uint32_t*)0x200000c0 = r[1];
+ syscall(SYS_ioctl, r[0], 0xc0045301ul, 0x200000c0ul);
+ *(uint32_t*)0x20000040 = 3;
+ syscall(SYS_setsockopt, r[1], 0xffff, 0x1001, 0x20000040ul, 4ul);
+ return 0;
+}
+EOF
+mycc -o /tmp/syzkaller62 -Wall -Wextra -O0 /tmp/syzkaller62.c || exit 1
+
+kldstat | grep -q filemon || { kldload filemon.ko && loaded=1; }
+
+(cd /tmp; timeout -k 3s 2s ./syzkaller62)
+
+rm -rf /tmp/syzkaller62 /tmp/syzkaller62.c /tmp/syzkaller62.core \
+ /tmp/syzkaller.??????
+# Unload causes: Fatal trap 12: page fault while in kernel mode
+#[ $loaded ] && kldunload -f filemon.ko
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller63.sh b/tools/test/stress2/misc/syzkaller63.sh
new file mode 100755
index 000000000000..647801dbdbb9
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller63.sh
@@ -0,0 +1,75 @@
+#!/bin/sh
+
+# Fatal trap 12: page fault while in kernel mode
+# cpuid = 1; apic id = 01
+# fault virtual address = 0x20
+# fault code = supervisor read data, page not present
+# instruction pointer = 0x20:0xfa1a2c
+# stack pointer = 0x28:0x27a41a80
+# frame pointer = 0x28:0x27a41a98
+# code segment = base 0x0, limit 0xfffff, type 0x1b
+# = DPL 0, pres 1, def32 1, gran 1
+# processor eflags = interrupt enabled, resume, IOPL = 0
+# current process = 804 (syzkaller63)
+# trap number = 12
+# panic: page fault
+# cpuid = 1
+# time = 1675071979
+# KDB: stack backtrace:
+# db_trace_self_wrapper(d,2048e3a0,27a41a40,20,c,...) at db_trace_self_wrapper+0x28/frame 0x27a418d0
+# vpanic(146c355,27a4190c,27a4190c,27a41938,141f1d6,...) at vpanic+0xf4/frame 0x27a418ec
+# panic(146c355,15010e8,0,fffff,1dfc39b,...) at panic+0x14/frame 0x27a41900
+# trap_fatal(2048e3a0,2048e3a0,27a4196c,1008e0a,18cd6638,...) at trap_fatal+0x346/frame 0x27a41938
+# trap_pfault(20,0,0) at trap_pfault+0x6f/frame 0x27a4196c
+# trap(27a41a40,8,28,28,0,...) at trap+0x31b/frame 0x27a41a34
+# calltrap() at 0xffc0321f/frame 0x27a41a34
+# --- trap 0xc, eip = 0xfa1a2c, esp = 0x27a41a80, ebp = 0x27a41a98 ---
+# kern_cpuset_getid(141f60e,0,9,0,0,0) at kern_cpuset_getid+0x10c/frame 0x27a41a98
+# sys_cpuset_getid(2048e3a0,2048e644,2048e3a0,2048e3a0,27a41b9c,...) at sys_cpuset_getid+0x32/frame 0x27a41ac0
+# syscall(27a41ba8,3b,3b,3b,ffbfe9fc,...) at syscall+0x1ef/frame 0x27a41b9c
+# Xint0x80_syscall() at 0xffc03479/frame 0x27a41b9c
+# --- syscall (486, FreeBSD ELF32, cpuset_getid), eip = 0x2056317d, esp = 0xffbfe990, ebp = 0xffbfe9b0 ---
+# KDB: enter: panic
+# [ thread pid 804 tid 100092 ]
+# Stopped at kdb_enter+0x34: movl $0,kdb_why
+# db> x/s version
+# version: FreeBSD 14.0-CURRENT #0 main-n260354-34b867ca30479: Mon Jan 30 07:26:30 CET 2023
+# pho@mercat1.netperf.freebsd.org:/mnt25/obj/usr/src/i386.i386/sys/PHO
+# db>
+
+. ../default.cfg
+prog=$(basename "$0" .sh)
+[ `uname -p` = "i386" ] || exit 0
+
+cat > /tmp/$prog.c <<EOF
+// https://syzkaller.appspot.com/bug?id=69dd3c8d867306dd9f97e2dae6ab1557fd8d2679
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+331e8402e0f7347f0f2a@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <pwd.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <unistd.h>
+
+int main(void)
+{
+ syscall(SYS_mmap, 0x10000000, 0x1000000, 7, 0x1012, -1, 0);
+ syscall(SYS_cpuset_getid, 0, 9, 0ull, 0);
+ return 0;
+}
+EOF
+mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c || exit 1
+
+(cd /tmp; timeout -k 3s 2s ./$prog)
+
+rm -rf /tmp/$prog /tmp/$prog.c /tmp/$prog.core \
+ /tmp/syzkaller.??????
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller64.sh b/tools/test/stress2/misc/syzkaller64.sh
new file mode 100755
index 000000000000..f13fd415087b
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller64.sh
@@ -0,0 +1,328 @@
+#!/bin/sh
+
+[ `uname -p` != "amd64" ] && exit 0
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+[ "`sysctl -in kern.features.kasan`" != "1" ] && exit 0
+
+. ../default.cfg
+prog=$(basename "$0" .sh)
+cat > /tmp/$prog.c <<EOF
+// https://syzkaller.appspot.com/bug?id=749aa1fdb67018e9c0179373a60d523511bff02c
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+5cb51285603332d9be11@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <sys/types.h>
+
+#include <errno.h>
+#include <pthread.h>
+#include <pwd.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/resource.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+#include <time.h>
+#include <unistd.h>
+
+static __thread int clone_ongoing;
+static __thread int skip_segv;
+static __thread jmp_buf segv_env;
+
+static void segv_handler(int sig, siginfo_t* info, void* ctx __unused)
+{
+ if (__atomic_load_n(&clone_ongoing, __ATOMIC_RELAXED) != 0) {
+ exit(sig);
+ }
+ uintptr_t addr = (uintptr_t)info->si_addr;
+ const uintptr_t prog_start = 1 << 20;
+ const uintptr_t prog_end = 100 << 20;
+ int skip = __atomic_load_n(&skip_segv, __ATOMIC_RELAXED) != 0;
+ int valid = addr < prog_start || addr > prog_end;
+ if (sig == SIGBUS)
+ valid = 1;
+ if (skip && valid) {
+ _longjmp(segv_env, 1);
+ }
+ exit(sig);
+}
+
+static void install_segv_handler(void)
+{
+ struct sigaction sa;
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_sigaction = segv_handler;
+ sa.sa_flags = SA_NODEFER | SA_SIGINFO;
+ sigaction(SIGSEGV, &sa, NULL);
+ sigaction(SIGBUS, &sa, NULL);
+}
+
+#define NONFAILING(...) \
+ ({ \
+ int ok = 1; \
+ __atomic_fetch_add(&skip_segv, 1, __ATOMIC_SEQ_CST); \
+ if (_setjmp(segv_env) == 0) { \
+ __VA_ARGS__; \
+ } else \
+ ok = 0; \
+ __atomic_fetch_sub(&skip_segv, 1, __ATOMIC_SEQ_CST); \
+ ok; \
+ })
+
+static void kill_and_wait(int pid, int* status)
+{
+ kill(pid, SIGKILL);
+ while (waitpid(-1, status, 0) != pid) {
+ }
+}
+
+static void sleep_ms(uint64_t ms)
+{
+ usleep(ms * 1000);
+}
+
+static uint64_t current_time_ms(void)
+{
+ struct timespec ts;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(1);
+ return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
+}
+
+static void thread_start(void* (*fn)(void*), void* arg)
+{
+ pthread_t th;
+ pthread_attr_t attr;
+ pthread_attr_init(&attr);
+ pthread_attr_setstacksize(&attr, 128 << 10);
+ int i = 0;
+ for (; i < 100; i++) {
+ if (pthread_create(&th, &attr, fn, arg) == 0) {
+ pthread_attr_destroy(&attr);
+ return;
+ }
+ if (errno == EAGAIN) {
+ usleep(50);
+ continue;
+ }
+ break;
+ }
+ exit(1);
+}
+
+typedef struct {
+ pthread_mutex_t mu;
+ pthread_cond_t cv;
+ int state;
+} event_t;
+
+static void event_init(event_t* ev)
+{
+ if (pthread_mutex_init(&ev->mu, 0))
+ exit(1);
+ if (pthread_cond_init(&ev->cv, 0))
+ exit(1);
+ ev->state = 0;
+}
+
+static void event_reset(event_t* ev)
+{
+ ev->state = 0;
+}
+
+static void event_set(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ if (ev->state)
+ exit(1);
+ ev->state = 1;
+ pthread_mutex_unlock(&ev->mu);
+ pthread_cond_broadcast(&ev->cv);
+}
+
+static void event_wait(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ while (!ev->state)
+ pthread_cond_wait(&ev->cv, &ev->mu);
+ pthread_mutex_unlock(&ev->mu);
+}
+
+static int event_isset(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+static int event_timedwait(event_t* ev, uint64_t timeout)
+{
+ uint64_t start = current_time_ms();
+ uint64_t now = start;
+ pthread_mutex_lock(&ev->mu);
+ for (;;) {
+ if (ev->state)
+ break;
+ uint64_t remain = timeout - (now - start);
+ struct timespec ts;
+ ts.tv_sec = remain / 1000;
+ ts.tv_nsec = (remain % 1000) * 1000 * 1000;
+ pthread_cond_timedwait(&ev->cv, &ev->mu, &ts);
+ now = current_time_ms();
+ if (now - start > timeout)
+ break;
+ }
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+static void sandbox_common()
+{
+ struct rlimit rlim;
+ rlim.rlim_cur = rlim.rlim_max = 128 << 20;
+ setrlimit(RLIMIT_AS, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 8 << 20;
+ setrlimit(RLIMIT_MEMLOCK, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 1 << 20;
+ setrlimit(RLIMIT_FSIZE, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 1 << 20;
+ setrlimit(RLIMIT_STACK, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 0;
+ setrlimit(RLIMIT_CORE, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 256;
+ setrlimit(RLIMIT_NOFILE, &rlim);
+}
+
+static void loop();
+
+static int do_sandbox_none(void)
+{
+ sandbox_common();
+ loop();
+ return 0;
+}
+
+struct thread_t {
+ int created, call;
+ event_t ready, done;
+};
+
+static struct thread_t threads[16];
+static void execute_call(int call);
+static int running;
+
+static void* thr(void* arg)
+{
+ struct thread_t* th = (struct thread_t*)arg;
+ for (;;) {
+ event_wait(&th->ready);
+ event_reset(&th->ready);
+ execute_call(th->call);
+ __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->done);
+ }
+ return 0;
+}
+
+static void execute_one(void)
+{
+ int i, call, thread;
+ for (call = 0; call < 5; call++) {
+ for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0]));
+ thread++) {
+ struct thread_t* th = &threads[thread];
+ if (!th->created) {
+ th->created = 1;
+ event_init(&th->ready);
+ event_init(&th->done);
+ event_set(&th->done);
+ thread_start(thr, th);
+ }
+ if (!event_isset(&th->done))
+ continue;
+ event_reset(&th->done);
+ th->call = call;
+ __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->ready);
+ event_timedwait(&th->done, 50);
+ break;
+ }
+ }
+ for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++)
+ sleep_ms(1);
+}
+
+static void execute_one(void);
+
+#define WAIT_FLAGS 0
+
+static void loop(void)
+{
+ int iter __unused = 0;
+ for (;; iter++) {
+ int pid = fork();
+ if (pid < 0)
+ exit(1);
+ if (pid == 0) {
+ execute_one();
+ exit(0);
+ }
+ int status = 0;
+ uint64_t start = current_time_ms();
+ for (;;) {
+ if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid)
+ break;
+ sleep_ms(1);
+ if (current_time_ms() - start < 5000)
+ continue;
+ kill_and_wait(pid, &status);
+ break;
+ }
+ }
+}
+
+void execute_call(int call)
+{
+ switch (call) {
+ case 0:
+ syscall(SYS_thr_new, 0ul, 0ul);
+ break;
+ case 1:
+ syscall(SYS_setloginclass, 0ul);
+ break;
+ case 2:
+ syscall(SYS_vfork);
+ break;
+ case 3:
+ NONFAILING(*(uint32_t*)0x20001880 = 4);
+ syscall(SYS_sysarch, 8ul, 0x20001880ul);
+ break;
+ case 4:
+ syscall(SYS_getsid, 0);
+ break;
+ }
+}
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ install_segv_handler();
+ do_sandbox_none();
+ return 0;
+}
+EOF
+mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c -lpthread || exit 1
+
+(cd /tmp; timeout 2m ./$prog)
+
+rm -rf /tmp/$prog /tmp/$prog.c /tmp/syzkaller.*
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller65.sh b/tools/test/stress2/misc/syzkaller65.sh
new file mode 100755
index 000000000000..8806a55e2733
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller65.sh
@@ -0,0 +1,82 @@
+#!/bin/sh
+
+# panic: in_pcblookup_hash_locked: invalid local address
+# cpuid = 11
+# time = 1678303805
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe0657e466d0
+# vpanic() at vpanic+0x152/frame 0xfffffe0657e46720
+# panic() at panic+0x43/frame 0xfffffe0657e46780
+# in_pcblookup_hash_locked() at in_pcblookup_hash_locked+0x4e2/frame 0xfffffe0657e467f0
+# in_pcb_lport_dest() at in_pcb_lport_dest+0x28a/frame 0xfffffe0657e468a0
+# in_pcbconnect_setup() at in_pcbconnect_setup+0x31b/frame 0xfffffe0657e46940
+# udp_send() at udp_send+0x68b/frame 0xfffffe0657e46a50
+# udp6_send() at udp6_send+0x287/frame 0xfffffe0657e46c10
+# sosend_dgram() at sosend_dgram+0x327/frame 0xfffffe0657e46c70
+# sousrsend() at sousrsend+0x7e/frame 0xfffffe0657e46cd0
+# kern_sendit() at kern_sendit+0x1bc/frame 0xfffffe0657e46d60
+# sendit() at sendit+0xba/frame 0xfffffe0657e46db0
+# sys_sendto() at sys_sendto+0x4d/frame 0xfffffe0657e46e00
+# amd64_syscall() at amd64_syscall+0x15a/frame 0xfffffe0657e46f30
+# fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe0657e46f30
+# --- syscall (0, FreeBSD ELF64, syscall), rip = 0x822a3a31a, rsp = 0x8208224d8, rbp = 0x820822500 ---
+# KDB: enter: panic
+# [ thread pid 47141 tid 357973 ]
+# Stopped at kdb_enter+0x32: movq $0,0x12906d3(%rip)
+# db> x/s version
+# FreeBSD 14.0-CURRENT #0 main-n261389-109abf744bf76: Wed Mar 8 06:10:24 CET 2023
+# pho@mercat1.netperf.freebsd.org:/usr/src/sys/a
+# db>
+
+[ `uname -p` != "amd64" ] && exit 0
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+prog=$(basename "$0" .sh)
+cat > /tmp/$prog.c <<EOF
+// https://syzkaller.appspot.com/bug?id=7cae38958ddfe2c338548b4217587bd6d89b43e2
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+c8e3dac881bba85bc029@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <pwd.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <unistd.h>
+
+uint64_t r[1] = {0xffffffffffffffff};
+
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ intptr_t res = 0;
+ res = syscall(SYS_socket, 0x1cul, 2ul, 0);
+ if (res != -1)
+ r[0] = res;
+ *(uint32_t*)0x200001c0 = 0;
+ syscall(SYS_setsockopt, r[0], 0x29, 0x1b, 0x200001c0ul, 4ul);
+ *(uint8_t*)0x20000000 = 0x1c;
+ *(uint8_t*)0x20000001 = 0x1c;
+ *(uint16_t*)0x20000002 = htobe16(0x4e22);
+ *(uint32_t*)0x20000004 = 0;
+ memset((void*)0x20000008, 0, 10);
+ memset((void*)0x20000012, 255, 2);
+ *(uint32_t*)0x20000014 = htobe32(0);
+ *(uint32_t*)0x20000018 = 0;
+ syscall(SYS_sendto, r[0], 0ul, 0ul, 0ul, 0x20000000ul, 0x1cul);
+ return 0;
+}
+EOF
+mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c -lpthread || exit 1
+
+(cd /tmp; timeout 2m ./$prog)
+
+rm -rf /tmp/$prog /tmp/$prog.c /tmp/syzkaller.*
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller66.sh b/tools/test/stress2/misc/syzkaller66.sh
new file mode 100755
index 000000000000..8d1e9afe6f6c
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller66.sh
@@ -0,0 +1,156 @@
+#!/bin/sh
+
+# panic: in_pcbconnect: inp is already connected
+# cpuid = 2
+# time = 1687326262
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe016e604b60
+# vpanic() at vpanic+0x150/frame 0xfffffe016e604bb0
+# panic() at panic+0x43/frame 0xfffffe016e604c10
+# in_pcbconnect_setup() at in_pcbconnect_setup/frame 0xfffffe016e604c60
+# tcp_connect() at tcp_connect+0xa3/frame 0xfffffe016e604ca0
+# tcp_usr_connect() at tcp_usr_connect+0xf3/frame 0xfffffe016e604d10
+# soconnectat() at soconnectat+0xaf/frame 0xfffffe016e604d60
+# kern_connectat() at kern_connectat+0xe1/frame 0xfffffe016e604dc0
+# sys_connect() at sys_connect+0x75/frame 0xfffffe016e604e00
+# amd64_syscall() at amd64_syscall+0x157/frame 0xfffffe016e604f30
+# fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe016e604f30
+# --- syscall (0, FreeBSD ELF64, syscall), rip = 0x823c81a6a, rsp = 0x8210ed3c8, rbp = 0x8210ed3e0 ---
+# KDB: enter: panic
+# [ thread pid 46907 tid 100356 ]
+# Stopped at kdb_enter+0x32: movq $0,0xddf693(%rip)
+# db> x/s version
+# version: FreeBSD 14.0-CURRENT #0 main-n263725-1efa7dbc0798e: Wed Jun 21 09:13:50 CEST 2023
+# pho@mercat1.netperf.freebsd.org:/usr/src/sys/amd64/compile/PHO-KASAN\012
+# db>
+
+[ `uname -p` != "amd64" ] && exit 0
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+prog=$(basename "$0" .sh)
+cat > /tmp/$prog.c <<EOF
+// https://syzkaller.appspot.com/bug?id=44e3d85e927362a22cc594b9d1d3072f38da7972
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+f0f7871ec5397602b446@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <sys/types.h>
+
+#include <pwd.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+#include <time.h>
+#include <unistd.h>
+
+static void kill_and_wait(int pid, int* status)
+{
+ kill(pid, SIGKILL);
+ while (waitpid(-1, status, 0) != pid) {
+ }
+}
+
+static void sleep_ms(uint64_t ms)
+{
+ usleep(ms * 1000);
+}
+
+static uint64_t current_time_ms(void)
+{
+ struct timespec ts;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(1);
+ return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
+}
+
+static void execute_one(void);
+
+#define WAIT_FLAGS 0
+
+static void loop(void)
+{
+ int iter __unused = 0;
+ for (;; iter++) {
+ int pid = fork();
+ if (pid < 0)
+ exit(1);
+ if (pid == 0) {
+ execute_one();
+ exit(0);
+ }
+ int status = 0;
+ uint64_t start = current_time_ms();
+ for (;;) {
+ if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid)
+ break;
+ sleep_ms(1);
+ if (current_time_ms() - start < 5000)
+ continue;
+ kill_and_wait(pid, &status);
+ break;
+ }
+ }
+}
+
+uint64_t r[2] = {0xffffffffffffffff, 0xffffffffffffffff};
+
+void execute_one(void)
+{
+ intptr_t res = 0;
+ res = syscall(SYS_socket, 2ul, 1ul, 0);
+ if (res != -1)
+ r[0] = res;
+ *(uint8_t*)0x200001c0 = 0x10;
+ *(uint8_t*)0x200001c1 = 2;
+ *(uint16_t*)0x200001c2 = htobe16(0x4e22);
+ *(uint32_t*)0x200001c4 = htobe32(0x7f000001);
+ memset((void*)0x200001c8, 0, 8);
+ syscall(SYS_bind, r[0], 0x200001c0ul, 0x10ul);
+ syscall(SYS_listen, r[0], 0);
+ res = syscall(SYS_socket, 2ul, 1ul, 0);
+ if (res != -1)
+ r[1] = res;
+ *(uint8_t*)0x200000c0 = 0x10;
+ *(uint8_t*)0x200000c1 = 2;
+ *(uint16_t*)0x200000c2 = htobe16(0x4e22);
+ *(uint32_t*)0x200000c4 = htobe32(0x7f000001);
+ memset((void*)0x200000c8, 0, 8);
+ syscall(SYS_connect, r[1], 0x200000c0ul, 0x10ul);
+ *(uint64_t*)0x20002580 = 0;
+ *(uint32_t*)0x20002588 = 0;
+ *(uint64_t*)0x20002590 = 0;
+ *(uint64_t*)0x20002598 = 0;
+ *(uint64_t*)0x200025a0 = 0;
+ *(uint64_t*)0x200025a8 = 0;
+ *(uint32_t*)0x200025b0 = 0;
+ syscall(SYS_sendmsg, r[1], 0x20002580ul, 0x20104ul);
+ syscall(SYS_shutdown, r[1], 1ul);
+ *(uint8_t*)0x200000c0 = 0x10;
+ *(uint8_t*)0x200000c1 = 2;
+ *(uint16_t*)0x200000c2 = htobe16(0x4e22);
+ *(uint32_t*)0x200000c4 = htobe32(0x7f000001);
+ memset((void*)0x200000c8, 0, 8);
+ syscall(SYS_connect, r[1], 0x200000c0ul, 0x10ul);
+}
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ loop();
+ return 0;
+}
+EOF
+mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c || exit 1
+
+(cd /tmp; timeout 2m ./$prog)
+
+rm -rf /tmp/$prog /tmp/$prog.c /tmp/syzkaller.*
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller67.sh b/tools/test/stress2/misc/syzkaller67.sh
new file mode 100755
index 000000000000..d5dc340442ae
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller67.sh
@@ -0,0 +1,99 @@
+#!/bin/sh
+
+# panic: ASan: Invalid access, 8-byte read at 0xfffffe01fece46f8, StackMiddle(f2)
+# cpuid = 4
+# time = 1687335671
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0xa5/frame 0xfffffe01fece42f0
+# kdb_backtrace() at kdb_backtrace+0xc7/frame 0xfffffe01fece4450
+# vpanic() at vpanic+0x1d7/frame 0xfffffe01fece4510
+# panic() at panic+0xb5/frame 0xfffffe01fece45e0
+# kasan_report() at kasan_report+0xdc/frame 0xfffffe01fece46b0
+# __cap_rights_is_set() at __cap_rights_is_set+0x186/frame 0xfffffe01fece47d0
+# fget_fcntl() at fget_fcntl+0xd7/frame 0xfffffe01fece48d0
+# kern_fcntl() at kern_fcntl+0x602/frame 0xfffffe01fece4c10
+# kern_fcntl_freebsd() at kern_fcntl_freebsd+0x244/frame 0xfffffe01fece4d30
+# ia32_syscall() at ia32_syscall+0x32a/frame 0xfffffe01fece4f30
+# int0x80_syscall_common() at int0x80_syscall_common+0x9c/frame 0xffffdb38
+# KDB: enter: panic
+# [ thread pid 4224 tid 100231 ]
+# Stopped at kdb_enter+0x34: movq $0,0x1e3f7c1(%rip)
+# db> x/s version
+# version: FreeBSD 14.0-CURRENT #0 main-n263725-1efa7dbc0798e: Wed Jun 21 09:13:50 CEST 2023
+# pho@mercat1.netperf.freebsd.org:/usr/src/sys/amd64/compile/PHO-KASAN
+# db>
+
+uname -p | grep -Eq "amd64|i386" || exit 0
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+prog=$(basename "$0" .sh)
+cat > /tmp/$prog.c <<EOF
+// https://syzkaller.appspot.com/bug?id=81419dc41de046ccb99da6f333074b750ac36680
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+d35497494d68b4859367@syzkaller.appspotmail.com
+// i386 + ASan
+
+#define _GNU_SOURCE
+
+#include <pwd.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <unistd.h>
+
+uint64_t r[5] = {0x0, 0x0, 0x0, 0x0, 0x0};
+
+int main(void)
+{
+ syscall(SYS_mmap, 0x10000000, 0x1000000, 7, 0x1012, -1, 0);
+ intptr_t res = 0;
+ syscall(SYS_munmap, 0x10ffa000, 0x3000);
+ syscall(SYS_mmap, 0x10ffd000, 0x1000, 4, 0x1010, -1, 0);
+ syscall(SYS_mmap, 0x10ffc000, 0x1000, 0, 0x1010, -1, 0);
+ syscall(SYS_mmap, 0x10ffc000, 0x1000, 0, 0x1010, -1, 0);
+ syscall(SYS_mprotect, 0x10ffe000, 0x2000, 7);
+ syscall(SYS_mprotect, 0x10ffd000, 0x3000, 0);
+ syscall(SYS_fork);
+ res = syscall(SYS_fork);
+ if (res != -1)
+ r[0] = res;
+ syscall(SYS_fork);
+ res = syscall(SYS_fork);
+ if (res != -1)
+ r[1] = res;
+ syscall(SYS_sigqueue, (intptr_t)r[1], 0x2b, 0);
+ res = syscall(SYS_fork);
+ if (res != -1)
+ r[2] = res;
+ syscall(SYS_sigqueue, (intptr_t)r[2], 0x2b, 0);
+ syscall(SYS_vfork);
+ syscall(SYS_fcntl, -1, 5, 0);
+ syscall(SYS_sigqueue, 0, 0x2b, 0);
+ syscall(SYS_getpgrp, (intptr_t)r[0]);
+ syscall(SYS_fork);
+ res = syscall(SYS_fork);
+ if (res != -1)
+ r[3] = res;
+ syscall(SYS_sigqueue, (intptr_t)r[3], 0x2b, 0);
+ syscall(SYS_getpid);
+ syscall(SYS_mmap, 0x10ffc000, 0x1000, 3, 0x10, -1, 7);
+ syscall(SYS_mmap, 0x10ffc000, 0x1000, 3, 0x10, -1, 7);
+ res = syscall(SYS_fork);
+ if (res != -1)
+ r[4] = res;
+ syscall(SYS_sigqueue, (intptr_t)r[4], 0xc, 0);
+ return 0;
+}
+EOF
+mycc -o /tmp/$prog -Wall -Wextra -O0 -m32 /tmp/$prog.c || exit 1
+
+(cd /tmp; timeout 2m ./$prog)
+
+rm -rf /tmp/$prog /tmp/$prog.c /tmp/syzkaller.*
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller68.sh b/tools/test/stress2/misc/syzkaller68.sh
new file mode 100755
index 000000000000..3d60af5215c5
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller68.sh
@@ -0,0 +1,235 @@
+#!/bin/sh
+
+# panic: mutex Giant owned at ../../../kern/kern_thread.c:1409
+# cpuid = 0
+# time = 1688501618
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe0171ba2510
+# vpanic() at vpanic+0x150/frame 0xfffffe0171ba2560
+# panic() at panic+0x43/frame 0xfffffe0171ba25c0
+# __mtx_assert() at __mtx_assert+0xc4/frame 0xfffffe0171ba25d0
+# thread_suspend_check() at thread_suspend_check+0x38/frame 0xfffffe0171ba2610
+# sig_intr() at sig_intr+0x78/frame 0xfffffe0171ba2640
+# fork1() at fork1+0x238/frame 0xfffffe0171ba26c0
+# kproc_create() at kproc_create+0x92/frame 0xfffffe0171ba2790
+# kproc_kthread_add() at kproc_kthread_add+0xdd/frame 0xfffffe0171ba28b0
+# zthr_create_timer() at zthr_create_timer+0x109/frame 0xfffffe0171ba2930
+# arc_init() at arc_init+0x1b44/frame 0xfffffe0171ba2970
+# dmu_init() at dmu_init+0x31/frame 0xfffffe0171ba2980
+# spa_init() at spa_init+0xed/frame 0xfffffe0171ba29a0
+# zfs_kmod_init() at zfs_kmod_init+0x1f/frame 0xfffffe0171ba29c0
+# zfs_modevent() at zfs_modevent+0module_register_init() at module_register_init+0xb0/frame 0xfffffe0171ba2a10
+# linker_load_module() at linker_load_module+0xbd2/frame 0xfffffe0171ba2d10
+# kern_kldload() at kern_kldload+0x16f/frame 0xfffffe0171ba2d60
+# vfs_byname_kld() at vfs_byname_kld+0x31/frame 0xfffffe0171ba2da0
+# sys_mount() at sys_mount+0xa9/frame 0xfffffe0171ba2e00
+# amd64_syscall() at amd64_syscall+0x150/frame 0xfffffe0171ba2f30
+# fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe0171ba2f30
+# --- syscall (0, FreeBSD ELF64, syscall), rip = 0x823f70e9a, rsp = 0x82513af78, rbp = 0x82513af90 KDB: enter: panic
+# [ thread pid 43886 tid 178779 ]
+# Stopped at kdb_enter+0x32: movq $0,0xde5863(%rip)
+# db> x/s version
+# version: FreeBSD 14.0-CURRENT #0 main-n263953-d7614c010c762: Tue Jul 4 19:29:44 CEST 2023
+# pho@mercat1.netperf.freebsd.org:/usr/src/sys/amd64/compile/PHO
+# db>
+
+uname -p | grep -Eq "amd64|i386" || exit 0
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+prog=$(basename "$0" .sh)
+cat > /tmp/$prog.c <<EOF
+// https://syzkaller.appspot.com/bug?id=85a795d15aa54816d63f71f69bfb3a2c61635472
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+dce5858451a2329877ff@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <errno.h>
+#include <pthread.h>
+#include <pwd.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <time.h>
+#include <unistd.h>
+
+static void sleep_ms(uint64_t ms)
+{
+ usleep(ms * 1000);
+}
+
+static uint64_t current_time_ms(void)
+{
+ struct timespec ts;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(1);
+ return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
+}
+
+static void thread_start(void* (*fn)(void*), void* arg)
+{
+ pthread_t th;
+ pthread_attr_t attr;
+ pthread_attr_init(&attr);
+ pthread_attr_setstacksize(&attr, 128 << 10);
+ int i = 0;
+ for (; i < 100; i++) {
+ if (pthread_create(&th, &attr, fn, arg) == 0) {
+ pthread_attr_destroy(&attr);
+ return;
+ }
+ if (errno == EAGAIN) {
+ usleep(50);
+ continue;
+ }
+ break;
+ }
+ exit(1);
+}
+
+typedef struct {
+ pthread_mutex_t mu;
+ pthread_cond_t cv;
+ int state;
+} event_t;
+
+static void event_init(event_t* ev)
+{
+ if (pthread_mutex_init(&ev->mu, 0))
+ exit(1);
+ if (pthread_cond_init(&ev->cv, 0))
+ exit(1);
+ ev->state = 0;
+}
+
+static void event_reset(event_t* ev)
+{
+ ev->state = 0;
+}
+
+static void event_set(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ if (ev->state)
+ exit(1);
+ ev->state = 1;
+ pthread_mutex_unlock(&ev->mu);
+ pthread_cond_broadcast(&ev->cv);
+}
+
+static void event_wait(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ while (!ev->state)
+ pthread_cond_wait(&ev->cv, &ev->mu);
+ pthread_mutex_unlock(&ev->mu);
+}
+
+static int event_isset(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+static int event_timedwait(event_t* ev, uint64_t timeout)
+{
+ uint64_t start = current_time_ms();
+ uint64_t now = start;
+ pthread_mutex_lock(&ev->mu);
+ for (;;) {
+ if (ev->state)
+ break;
+ uint64_t remain = timeout - (now - start);
+ struct timespec ts;
+ ts.tv_sec = remain / 1000;
+ ts.tv_nsec = (remain % 1000) * 1000 * 1000;
+ pthread_cond_timedwait(&ev->cv, &ev->mu, &ts);
+ now = current_time_ms();
+ if (now - start > timeout)
+ break;
+ }
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+struct thread_t {
+ int created, call;
+ event_t ready, done;
+};
+
+static struct thread_t threads[16];
+static void execute_call(int call);
+static int running;
+
+static void* thr(void* arg)
+{
+ struct thread_t* th = (struct thread_t*)arg;
+ for (;;) {
+ event_wait(&th->ready);
+ event_reset(&th->ready);
+ execute_call(th->call);
+ __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->done);
+ }
+ return 0;
+}
+
+static void loop(void)
+{
+ int i, call, thread;
+ for (call = 0; call < 1; call++) {
+ for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0]));
+ thread++) {
+ struct thread_t* th = &threads[thread];
+ if (!th->created) {
+ th->created = 1;
+ event_init(&th->ready);
+ event_init(&th->done);
+ event_set(&th->done);
+ thread_start(thr, th);
+ }
+ if (!event_isset(&th->done))
+ continue;
+ event_reset(&th->done);
+ th->call = call;
+ __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->ready);
+ event_timedwait(&th->done, 50);
+ break;
+ }
+ }
+ for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++)
+ sleep_ms(1);
+}
+
+void execute_call(int call)
+{
+ switch (call) {
+ case 0:
+ memcpy((void*)0x20000440, "zfs\000", 4);
+ syscall(SYS_mount, 0x20000440ul, 0ul, 0x8300648ul, 0ul);
+ break;
+ }
+}
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ loop();
+ return 0;
+}
+EOF
+mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c -lpthread || exit 1
+
+(cd /tmp; timeout 2m ./$prog)
+
+rm -rf /tmp/$prog /tmp/$prog.c /tmp/syzkaller.*
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller69.sh b/tools/test/stress2/misc/syzkaller69.sh
new file mode 100755
index 000000000000..fbaa3e5b9c9c
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller69.sh
@@ -0,0 +1,494 @@
+#!/bin/sh
+
+# Fatal trap 12: page fault while in kernel mode
+# cpuid = 6; apic id = 06
+# fault virtual address = 0xb8
+# fault code = supervisor read data, page not present
+# instruction pointer = 0x20:0xffffffff80d3c17b
+# stack pointer = 0x28:0xfffffe00e49fab80
+# frame pointer = 0x28:0xfffffe00e49facc0
+# code segment = base 0x0, limit 0xfffff, type 0x1b
+# = DPL 0, pres 1, long 1, def32 0, gran 1
+# processor eflags = interrupt enabled, resume, IOPL = 0
+# current process = 12 (swi1: netisr 0)
+# rdi: fffff802d2d8daa0 rsi: fffffe00e49fab48 rdx: ffffffff819d5a90
+# rcx: ffffffff819d5a98 r8: 00000000ffffffff r9: 0000000000000000
+# rax: 0000000000000000 rbx: 0000000000000002 rbp: fffffe00e49facc0
+# r10: fffff802d2d8daa0 r11: 0000000000010000 r12: 0000000000000000
+# r13: fffff802d2d8da80 r14: 0000000000000060 r15: fffff802d2d8dab8
+# trap number = 12
+# panic: page fault
+# cpuid = 6
+# time = 1689053386
+# KDB: stack backtrace:
+# db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe00e49fa930
+# vpanic() at vpanic+0x149/frame 0xfffffe00e49fa980
+# panic() at panic+0x43/frame 0xfffffe00e49fa9e0
+# trap_fatal() at trap_fatal+0x40c/frame 0xfffffe00e49faa40
+# trap_pfault() at trap_pfault+0xae/frame 0xfffffe00e49faab0
+# calltrap() at calltrap+0x8/frame 0xfffffe00e49faab0
+# --- trap 0xc, rip = 0xffffffff80d3c17b, rsp = 0xfffffe00e49fab80, rbp = 0xfffffe00e49facc0 ---
+# tcp_input_with_port() at tcp_input_with_port+0x70b/frame 0xfffffe00e49facc0
+# tcp6_input_with_port() at tcp6_input_with_port+0x6a/frame 0xfffffe00e49facf0
+# tcp6_input() at tcp6_input+0xb/frame 0xfffffe00e49fad00
+# ip6_input() at ip6_input+0xc97/frame 0xfffffe00e49fade0
+# swi_net() at swi_net+0x19b/frame 0xfffffe00e49fae60
+# ithread_loop() at ithread_loop+0x266/frame 0xfffffe00e49faef0
+# fork_exit() at fork_exit+0x82/frame 0xfffffe00e49faf30
+# fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe00e49faf30
+# --- trap 0, rip = 0, rsp = 0, rbp = 0 ---
+# KDB: enter: panic
+# [ thread pid 12 tid 100089 ]
+# Stopped at kdb_enter+0x32: movq $0,0xde5053(%rip)
+# db> x/s version
+# version: FreeBSD 14.0-CURRENT #0 main-n264110-43ed91e00bbb1: Tue Jul 11 06:28:21 CEST 2023
+# pho@mercat1.netperf.freebsd.org:/usr/src/sys/amd64/compile/PHO
+# db>
+
+uname -p | grep -Eq "amd64" || exit 0
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+prog=$(basename "$0" .sh)
+cat > /tmp/$prog.c <<EOF
+// https://syzkaller.appspot.com/bug?id=44d933862f436b628c77db28122dbfa4e00990aa
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+e7d2e451f89fb444319b@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <sys/types.h>
+
+#include <dirent.h>
+#include <errno.h>
+#include <pthread.h>
+#include <pwd.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/resource.h>
+#include <sys/stat.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+#include <time.h>
+#include <unistd.h>
+
+static unsigned long long procid;
+
+static __thread int clone_ongoing;
+static __thread int skip_segv;
+static __thread jmp_buf segv_env;
+
+static void segv_handler(int sig, siginfo_t* info, void* ctx __unused)
+{
+ if (__atomic_load_n(&clone_ongoing, __ATOMIC_RELAXED) != 0) {
+ exit(sig);
+ }
+ uintptr_t addr = (uintptr_t)info->si_addr;
+ const uintptr_t prog_start = 1 << 20;
+ const uintptr_t prog_end = 100 << 20;
+ int skip = __atomic_load_n(&skip_segv, __ATOMIC_RELAXED) != 0;
+ int valid = addr < prog_start || addr > prog_end;
+ if (sig == SIGBUS)
+ valid = 1;
+ if (skip && valid) {
+ _longjmp(segv_env, 1);
+ }
+ exit(sig);
+}
+
+static void install_segv_handler(void)
+{
+ struct sigaction sa;
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_sigaction = segv_handler;
+ sa.sa_flags = SA_NODEFER | SA_SIGINFO;
+ sigaction(SIGSEGV, &sa, NULL);
+ sigaction(SIGBUS, &sa, NULL);
+}
+
+#define NONFAILING(...) \
+ ({ \
+ int ok = 1; \
+ __atomic_fetch_add(&skip_segv, 1, __ATOMIC_SEQ_CST); \
+ if (_setjmp(segv_env) == 0) { \
+ __VA_ARGS__; \
+ } else \
+ ok = 0; \
+ __atomic_fetch_sub(&skip_segv, 1, __ATOMIC_SEQ_CST); \
+ ok; \
+ })
+
+static void kill_and_wait(int pid, int* status)
+{
+ kill(pid, SIGKILL);
+ while (waitpid(-1, status, 0) != pid) {
+ }
+}
+
+static void sleep_ms(uint64_t ms)
+{
+ usleep(ms * 1000);
+}
+
+static uint64_t current_time_ms(void)
+{
+ struct timespec ts;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(1);
+ return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
+}
+
+static void use_temporary_dir(void)
+{
+ char tmpdir_template[] = "./syzkaller.XXXXXX";
+ char* tmpdir = mkdtemp(tmpdir_template);
+ if (!tmpdir)
+ exit(1);
+ if (chmod(tmpdir, 0777))
+ exit(1);
+ if (chdir(tmpdir))
+ exit(1);
+}
+
+static void reset_flags(const char* filename)
+{
+ struct stat st;
+ if (lstat(filename, &st))
+ exit(1);
+ st.st_flags &= ~(SF_NOUNLINK | UF_NOUNLINK | SF_IMMUTABLE | UF_IMMUTABLE |
+ SF_APPEND | UF_APPEND);
+ if (lchflags(filename, st.st_flags))
+ exit(1);
+}
+static void __attribute__((noinline)) remove_dir(const char* dir)
+{
+ DIR* dp = opendir(dir);
+ if (dp == NULL) {
+ if (errno == EACCES) {
+ if (rmdir(dir))
+ exit(1);
+ return;
+ }
+ exit(1);
+ }
+ struct dirent* ep = 0;
+ while ((ep = readdir(dp))) {
+ if (strcmp(ep->d_name, ".") == 0 || strcmp(ep->d_name, "..") == 0)
+ continue;
+ char filename[FILENAME_MAX];
+ snprintf(filename, sizeof(filename), "%s/%s", dir, ep->d_name);
+ struct stat st;
+ if (lstat(filename, &st))
+ exit(1);
+ if (S_ISDIR(st.st_mode)) {
+ remove_dir(filename);
+ continue;
+ }
+ if (unlink(filename)) {
+ if (errno == EPERM) {
+ reset_flags(filename);
+ reset_flags(dir);
+ if (unlink(filename) == 0)
+ continue;
+ }
+ exit(1);
+ }
+ }
+ closedir(dp);
+ while (rmdir(dir)) {
+ if (errno == EPERM) {
+ reset_flags(dir);
+ if (rmdir(dir) == 0)
+ break;
+ }
+ exit(1);
+ }
+}
+
+static void thread_start(void* (*fn)(void*), void* arg)
+{
+ pthread_t th;
+ pthread_attr_t attr;
+ pthread_attr_init(&attr);
+ pthread_attr_setstacksize(&attr, 128 << 10);
+ int i = 0;
+ for (; i < 100; i++) {
+ if (pthread_create(&th, &attr, fn, arg) == 0) {
+ pthread_attr_destroy(&attr);
+ return;
+ }
+ if (errno == EAGAIN) {
+ usleep(50);
+ continue;
+ }
+ break;
+ }
+ exit(1);
+}
+
+typedef struct {
+ pthread_mutex_t mu;
+ pthread_cond_t cv;
+ int state;
+} event_t;
+
+static void event_init(event_t* ev)
+{
+ if (pthread_mutex_init(&ev->mu, 0))
+ exit(1);
+ if (pthread_cond_init(&ev->cv, 0))
+ exit(1);
+ ev->state = 0;
+}
+
+static void event_reset(event_t* ev)
+{
+ ev->state = 0;
+}
+
+static void event_set(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ if (ev->state)
+ exit(1);
+ ev->state = 1;
+ pthread_mutex_unlock(&ev->mu);
+ pthread_cond_broadcast(&ev->cv);
+}
+
+static void event_wait(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ while (!ev->state)
+ pthread_cond_wait(&ev->cv, &ev->mu);
+ pthread_mutex_unlock(&ev->mu);
+}
+
+static int event_isset(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+static int event_timedwait(event_t* ev, uint64_t timeout)
+{
+ uint64_t start = current_time_ms();
+ uint64_t now = start;
+ pthread_mutex_lock(&ev->mu);
+ for (;;) {
+ if (ev->state)
+ break;
+ uint64_t remain = timeout - (now - start);
+ struct timespec ts;
+ ts.tv_sec = remain / 1000;
+ ts.tv_nsec = (remain % 1000) * 1000 * 1000;
+ pthread_cond_timedwait(&ev->cv, &ev->mu, &ts);
+ now = current_time_ms();
+ if (now - start > timeout)
+ break;
+ }
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+static void sandbox_common()
+{
+ struct rlimit rlim;
+ rlim.rlim_cur = rlim.rlim_max = 128 << 20;
+ setrlimit(RLIMIT_AS, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 8 << 20;
+ setrlimit(RLIMIT_MEMLOCK, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 1 << 20;
+ setrlimit(RLIMIT_FSIZE, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 1 << 20;
+ setrlimit(RLIMIT_STACK, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 0;
+ setrlimit(RLIMIT_CORE, &rlim);
+ rlim.rlim_cur = rlim.rlim_max = 256;
+ setrlimit(RLIMIT_NOFILE, &rlim);
+}
+
+static void loop();
+
+static int do_sandbox_none(void)
+{
+ sandbox_common();
+ loop();
+ return 0;
+}
+
+struct thread_t {
+ int created, call;
+ event_t ready, done;
+};
+
+static struct thread_t threads[16];
+static void execute_call(int call);
+static int running;
+
+static void* thr(void* arg)
+{
+ struct thread_t* th = (struct thread_t*)arg;
+ for (;;) {
+ event_wait(&th->ready);
+ event_reset(&th->ready);
+ execute_call(th->call);
+ __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->done);
+ }
+ return 0;
+}
+
+static void execute_one(void)
+{
+ int i, call, thread;
+ for (call = 0; call < 7; call++) {
+ for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0]));
+ thread++) {
+ struct thread_t* th = &threads[thread];
+ if (!th->created) {
+ th->created = 1;
+ event_init(&th->ready);
+ event_init(&th->done);
+ event_set(&th->done);
+ thread_start(thr, th);
+ }
+ if (!event_isset(&th->done))
+ continue;
+ event_reset(&th->done);
+ th->call = call;
+ __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->ready);
+ if (call == 3)
+ break;
+ event_timedwait(&th->done, 50);
+ break;
+ }
+ }
+ for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++)
+ sleep_ms(1);
+}
+
+static void execute_one(void);
+
+#define WAIT_FLAGS 0
+
+static void loop(void)
+{
+ int iter = 0;
+ for (;; iter++) {
+ char cwdbuf[32];
+ sprintf(cwdbuf, "./%d", iter);
+ if (mkdir(cwdbuf, 0777))
+ exit(1);
+ int pid = fork();
+ if (pid < 0)
+ exit(1);
+ if (pid == 0) {
+ if (chdir(cwdbuf))
+ exit(1);
+ execute_one();
+ exit(0);
+ }
+ int status = 0;
+ uint64_t start = current_time_ms();
+ for (;;) {
+ if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid)
+ break;
+ sleep_ms(1);
+ if (current_time_ms() - start < 5000)
+ continue;
+ kill_and_wait(pid, &status);
+ break;
+ }
+ remove_dir(cwdbuf);
+ }
+}
+
+uint64_t r[2] = {0xffffffffffffffff, 0xffffffffffffffff};
+
+void execute_call(int call)
+{
+ intptr_t res = 0;
+ switch (call) {
+ case 0:
+ res = syscall(SYS_socket, 0x1cul, 1ul, 0);
+ if (res != -1)
+ r[0] = res;
+ break;
+ case 1:
+ NONFAILING(*(uint32_t*)0x20000080 = 9);
+ syscall(SYS_setsockopt, r[0], 0xffff, 0x10000, 0x20000080ul, 4ul);
+ break;
+ case 2:
+ NONFAILING(*(uint8_t*)0x200000c0 = 0x1c);
+ NONFAILING(*(uint8_t*)0x200000c1 = 0x1c);
+ NONFAILING(*(uint16_t*)0x200000c2 = htobe16(0x4e20 + procid * 4));
+ NONFAILING(*(uint32_t*)0x200000c4 = 0);
+ NONFAILING(memset((void*)0x200000c8, 0, 16));
+ NONFAILING(*(uint32_t*)0x200000d8 = 0);
+ syscall(SYS_bind, r[0], 0x200000c0ul, 0x1cul);
+ break;
+ case 3:
+ NONFAILING(*(uint32_t*)0x20000080 = 9);
+ syscall(SYS_setsockopt, r[0], 0xffff, 0x10000, 0x20000080ul, 4ul);
+ break;
+ case 4:
+ NONFAILING(*(uint32_t*)0x20000040 = 0x72);
+ NONFAILING(*(uint8_t*)0x20000048 = 0x10);
+ NONFAILING(*(uint8_t*)0x20000049 = 2);
+ NONFAILING(*(uint16_t*)0x2000004a = htobe16(0x4e21 + procid * 4));
+ NONFAILING(*(uint32_t*)0x2000004c = htobe32(0x7f000001));
+ NONFAILING(memset((void*)0x20000050, 0, 8));
+ NONFAILING(memset((void*)0x20000058, 0, 112));
+ syscall(SYS_setsockopt, r[0], 0, 0x51, 0x20000040ul, 0x88ul);
+ break;
+ case 5:
+ res = syscall(SYS_socket, 0x1cul, 1ul, 0);
+ if (res != -1)
+ r[1] = res;
+ break;
+ case 6:
+ NONFAILING(*(uint8_t*)0x20000140 = 0x1c);
+ NONFAILING(*(uint8_t*)0x20000141 = 0x1c);
+ NONFAILING(*(uint16_t*)0x20000142 = htobe16(0x4e20 + procid * 4));
+ NONFAILING(*(uint32_t*)0x20000144 = 0);
+ NONFAILING(memset((void*)0x20000148, 0, 16));
+ NONFAILING(*(uint32_t*)0x20000158 = 0);
+ syscall(SYS_connect, r[1], 0x20000140ul, 0x1cul);
+ break;
+ }
+}
+int main(void)
+{
+ syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul);
+ install_segv_handler();
+ for (procid = 0; procid < 4; procid++) {
+ if (fork() == 0) {
+ use_temporary_dir();
+ do_sandbox_none();
+ }
+ }
+ sleep(1000000);
+ return 0;
+}
+EOF
+mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c -lpthread || exit 1
+
+(cd ../testcases/swap; ./swap -t 2m -i 10 -l 100 > /dev/null 2>&1) &
+
+(cd /tmp; timeout 2m ./$prog)
+wait
+
+rm -rf /tmp/$prog /tmp/$prog.c /tmp/syzkaller.*
+exit 0
diff --git a/tools/test/stress2/misc/syzkaller7.sh b/tools/test/stress2/misc/syzkaller7.sh
index f43747006862..c03a47d8b2d2 100755
--- a/tools/test/stress2/misc/syzkaller7.sh
+++ b/tools/test/stress2/misc/syzkaller7.sh
@@ -80,7 +80,7 @@ static void execute_one(void);
static void loop(void)
{
- int iter;
+ int iter __unused;
for (iter = 0;; iter++) {
int pid = fork();
if (pid < 0)
diff --git a/tools/test/stress2/misc/syzkaller70.sh b/tools/test/stress2/misc/syzkaller70.sh
new file mode 100755
index 000000000000..7f63da7f6475
--- /dev/null
+++ b/tools/test/stress2/misc/syzkaller70.sh
@@ -0,0 +1,302 @@
+#!/bin/sh
+
+# db:1:pho1> bt
+# Tracing pid 5640 tid 102468 td 0xfffffe00e4d26ac0
+# kdb_enter() at kdb_enter+0x32/frame 0xfffffe010dbcf260
+# vpanic() at vpanic+0x163/frame 0xfffffe010dbcf390
+# panic() at panic+0x43/frame 0xfffffe010dbcf3f0
+# vm_map_insert1() at vm_map_insert1+0x147/frame 0xfffffe010dbcf4a0
+# vm_map_insert() at vm_map_insert+0x69/frame 0xfffffe010dbcf510
+# vm_map_growstack() at vm_map_growstack+0x90e/frame 0xfffffe010dbcf650
+# vm_map_lookup() at vm_map_lookup+0x15f/frame 0xfffffe010dbcf6e0
+# vm_fault() at vm_fault+0x12f/frame 0xfffffe010dbcf820
+# vm_fault_trap() at vm_fault_trap+0x6f/frame 0xfffffe010dbcf860
+# trap_pfault() at trap_pfault+0x24a/frame 0xfffffe010dbcf8d0
+# calltrap() at calltrap+0x8/frame 0xfffffe010dbcf8d0
+# --- trap 0xc, rip = 0xffffffff81057a06, rsp = 0xfffffe010dbcf9a0, rbp = 0xfffffe010dbcf9a0 ---
+# copyin_nosmap_erms() at copyin_nosmap_erms+0x156/frame 0xfffffe010dbcf9a0
+# uiomove_fromphys() at uiomove_fromphys+0x145/frame 0xfffffe010dbcfa10
+# uiomove_object_page() at uiomove_object_page+0x1dc/frame 0xfffffe010dbcfa70
+# uiomove_object() at uiomove_object+0xa4/frame 0xfffffe010dbcfac0
+# tmpfs_write() at tmpfs_write+0xe4/frame 0xfffffe010dbcfb10
+# VOP_WRITE_APV() at VOP_WRITE_APV+0xcf/frame 0xfffffe010dbcfc20
+# vn_write() at vn_write+0x2f4/frame 0xfffffe010dbcfcb0
+# vn_io_fault() at vn_io_fault+0x1e2/frame 0xfffffe010dbcfd40
+# dofilewrite() at dofilewrite+0x82/frame 0xfffffe010dbcfd90
+# kern_pwritev() at kern_pwritev+0x64/frame 0xfffffe010dbcfdd0
+# sys_pwritev() at sys_pwritev+0x3a/frame 0xfffffe010dbcfe00
+# amd64_syscall() at amd64_syscall+0x14f/frame 0xfffffe010dbcff30
+# fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe010dbcff30
+# --- syscall (0, FreeBSD ELF64, syscall), rip = 0x822d56fca, rsp = 0x824255f58, rbp = 0x824255f90 ---
+# FreeBSD 14.0-ALPHA1 #1 main-n264742-81b41b2ef5bfd5-dirty: Tue Aug 15 19:52:50 CEST 2023
+
+uname -p | grep -Eq "amd64" || exit 0
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+prog=$(basename "$0" .sh)
+cat > /tmp/$prog.c <<EOF
+// https://syzkaller.appspot.com/bug?id=4c33ed3d5a9072d2ccaec3b2ef7a129f0997f477
+// autogenerated by syzkaller (https://github.com/google/syzkaller)
+// Reported-by: syzbot+c325d6a75e4fd0a68714@syzkaller.appspotmail.com
+
+#define _GNU_SOURCE
+
+#include <sys/types.h>
+
+#include <errno.h>
+#include <pthread.h>
+#include <pwd.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/endian.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+#include <time.h>
+#include <unistd.h>
+
+static void kill_and_wait(int pid, int* status)
+{
+ kill(pid, SIGKILL);
+ while (waitpid(-1, status, 0) != pid) {
+ }
+}
+
+static void sleep_ms(uint64_t ms)
+{
+ usleep(ms * 1000);
+}
+
+static uint64_t current_time_ms(void)
+{
+ struct timespec ts;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts))
+ exit(1);
+ return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
+}
+
+static void thread_start(void* (*fn)(void*), void* arg)
+{
+ pthread_t th;
+ pthread_attr_t attr;
+ pthread_attr_init(&attr);
+ pthread_attr_setstacksize(&attr, 128 << 10);
+ int i = 0;
+ for (; i < 100; i++) {
+ if (pthread_create(&th, &attr, fn, arg) == 0) {
+ pthread_attr_destroy(&attr);
+ return;
+ }
+ if (errno == EAGAIN) {
+ usleep(50);
+ continue;
+ }
+ break;
+ }
+ exit(1);
+}
+
+typedef struct {
+ pthread_mutex_t mu;
+ pthread_cond_t cv;
+ int state;
+} event_t;
+
+static void event_init(event_t* ev)
+{
+ if (pthread_mutex_init(&ev->mu, 0))
+ exit(1);
+ if (pthread_cond_init(&ev->cv, 0))
+ exit(1);
+ ev->state = 0;
+}
+
+static void event_reset(event_t* ev)
+{
+ ev->state = 0;
+}
+
+static void event_set(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ if (ev->state)
+ exit(1);
+ ev->state = 1;
+ pthread_mutex_unlock(&ev->mu);
+ pthread_cond_broadcast(&ev->cv);
+}
+
+static void event_wait(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ while (!ev->state)
+ pthread_cond_wait(&ev->cv, &ev->mu);
+ pthread_mutex_unlock(&ev->mu);
+}
+
+static int event_isset(event_t* ev)
+{
+ pthread_mutex_lock(&ev->mu);
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+static int event_timedwait(event_t* ev, uint64_t timeout)
+{
+ uint64_t start = current_time_ms();
+ uint64_t now = start;
+ pthread_mutex_lock(&ev->mu);
+ for (;;) {
+ if (ev->state)
+ break;
+ uint64_t remain = timeout - (now - start);
+ struct timespec ts;
+ ts.tv_sec = remain / 1000;
+ ts.tv_nsec = (remain % 1000) * 1000 * 1000;
+ pthread_cond_timedwait(&ev->cv, &ev->mu, &ts);
+ now = current_time_ms();
+ if (now - start > timeout)
+ break;
+ }
+ int res = ev->state;
+ pthread_mutex_unlock(&ev->mu);
+ return res;
+}
+
+struct thread_t {
+ int created, call;
+ event_t ready, done;
+};
+
+static struct thread_t threads[16];
+static void execute_call(int call);
+static int running;
+
+static void* thr(void* arg)
+{
+ struct thread_t* th = (struct thread_t*)arg;
+ for (;;) {
+ event_wait(&th->ready);
+ event_reset(&th->ready);
+ execute_call(th->call);
+ __atomic_fetch_sub(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->done);
+ }
+ return 0;
+}
+
+static void execute_one(void)
+{
+ int i, call, thread;
+ for (call = 0; call < 4; call++) {
+ for (thread = 0; thread < (int)(sizeof(threads) / sizeof(threads[0]));
+ thread++) {
+ struct thread_t* th = &threads[thread];
+ if (!th->created) {
+ th->created = 1;
+ event_init(&th->ready);
+ event_init(&th->done);
+ event_set(&th->done);
+ thread_start(thr, th);
+ }
+ if (!event_isset(&th->done))
+ continue;
+ event_reset(&th->done);
+ th->call = call;
+ __atomic_fetch_add(&running, 1, __ATOMIC_RELAXED);
+ event_set(&th->ready);
+ event_timedwait(&th->done, 50);
+ break;
+ }
+ }
+ for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++)
+ sleep_ms(1);
+}
+
+static void execute_one(void);
+
+#define WAIT_FLAGS 0
+
+static void loop(void)
+{
+ int iter __unused = 0;
+ for (;; iter++) {
+ int pid = fork();
+ if (pid < 0)
+ exit(1);
+ if (pid == 0) {
+ execute_one();
+ exit(0);
+ }
+ int status = 0;
+ uint64_t start = current_time_ms();
+ for (;;) {
+ if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid)
+ break;
+ sleep_ms(1);
+ if (current_time_ms() - start < 5000)
+ continue;
+ kill_and_wait(pid, &status);
+ break;
+ }
+ }
+}
+
+uint64_t r[1] = {0xffffffffffffffff};
+
+void execute_call(int call)
+{
+ intptr_t res = 0;
+ switch (call) {
+ case 0:
+ memcpy((void*)0x20000240, "./file0\000", 8);
+ res = syscall(SYS_open, /*file=*/0x20000240ul,
+ /*flags=*/0x40000400000002c2ul, /*mode=*/0ul);
+ if (res != -1)
+ r[0] = res;
+ break;
+ case 1:
+ *(uint64_t*)0x20000080 = 0x200006c0;
+ *(uint64_t*)0x20000088 = 0x100000;
+ syscall(SYS_pwritev, /*fd=*/r[0], /*vec=*/0x20000080ul, /*vlen=*/1ul,
+ /*off=*/0ul);
+ break;
+ case 2:
+ syscall(SYS_mmap, /*addr=*/0x20000000ul, /*len=*/0x200000ul, /*prot=*/3ul,
+ /*flags=*/0x410ul, /*fd=*/-1, /*offset=*/0ul);
+ break;
+ case 3:
+ syscall(SYS_mmap, /*addr=*/0x2000c000ul, /*len=*/0x4000ul, /*prot=*/0ul,
+ /*flags=*/0x2010ul, /*fd=*/-1, /*offset=*/0ul);
+ break;
+ }
+}
+int main(void)
+{
+ syscall(SYS_mmap, /*addr=*/0x20000000ul, /*len=*/0x1000000ul, /*prot=*/7ul,
+ /*flags=*/0x1012ul, /*fd=*/-1, /*offset=*/0ul);
+ loop();
+ return 0;
+}
+EOF
+mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c -lpthread || exit 1
+
+mount | grep -q "on $mntpoint " && umount $mntpoint
+mount -o size=10m -t tmpfs dummy $mntpoint
+
+cd $mntpoint
+for i in `jot 20`; do
+ timeout 3m /tmp/$prog &
+done
+wait
+cd -
+
+umount $mntpoint
+rm -rf /tmp/$prog /tmp/$prog.c /tmp/$prog.core
+exit 0
diff --git a/tools/test/stress2/misc/tcp3.sh b/tools/test/stress2/misc/tcp3.sh
index ca3161c25821..d74eed0835bb 100755
--- a/tools/test/stress2/misc/tcp3.sh
+++ b/tools/test/stress2/misc/tcp3.sh
@@ -117,7 +117,7 @@ static void
reader(void) {
struct sockaddr_in inetaddr, inetpeer;
socklen_t len;
- int n, t, *buf;
+ int n, *buf;
int on;
int tcpsock, msgsock;
@@ -149,14 +149,12 @@ reader(void) {
(struct sockaddr *)&inetpeer, &len)) < 0)
err(1, "accept(), %s:%d", __FILE__, __LINE__);
- t = 0;
if ((buf = malloc(bufsize)) == NULL)
err(1, "malloc(%d), %s:%d", bufsize, __FILE__,
__LINE__);
while (done_testing == 0) {
if ((n = read(msgsock, buf, bufsize)) < 0)
err(1, "read(), %s:%d", __FILE__, __LINE__);
- t += n;
if (n == 0) break;
}
close(msgsock);
diff --git a/tools/test/stress2/misc/tcp4.sh b/tools/test/stress2/misc/tcp4.sh
index 514d73595e54..da0b7c07283d 100755
--- a/tools/test/stress2/misc/tcp4.sh
+++ b/tools/test/stress2/misc/tcp4.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
@@ -67,7 +67,7 @@ static void
reader(void) {
socklen_t len;
struct sockaddr_in inetaddr, inetpeer;
- int tcpsock, msgsock ,on, n, t, *buf;
+ int tcpsock, msgsock ,on, n, *buf;
on = 1;
setproctitle("%s", __func__);
@@ -99,13 +99,11 @@ reader(void) {
(struct sockaddr *)&inetpeer, &len)) < 0)
err(1, "accept(), %s:%d", __FILE__, __LINE__);
- t = 0;
if ((buf = malloc(bufsize)) == NULL)
err(1, "malloc(%d), %s:%d", bufsize, __FILE__, __LINE__);
for (;;) {
if ((n = read(msgsock, buf, bufsize)) < 0)
err(1, "read(), %s:%d", __FILE__, __LINE__);
- t += n;
if (n == 0) break;
}
close(msgsock);
diff --git a/tools/test/stress2/misc/timeout.sh b/tools/test/stress2/misc/timeout.sh
index 079efe3006b5..90d160f6b771 100755
--- a/tools/test/stress2/misc/timeout.sh
+++ b/tools/test/stress2/misc/timeout.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/tmpfs19.sh b/tools/test/stress2/misc/tmpfs19.sh
index ab1e96835955..4c8843ae1522 100755
--- a/tools/test/stress2/misc/tmpfs19.sh
+++ b/tools/test/stress2/misc/tmpfs19.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/tmpfs20.sh b/tools/test/stress2/misc/tmpfs20.sh
index 763d70a49ae8..80fa04936c4f 100755
--- a/tools/test/stress2/misc/tmpfs20.sh
+++ b/tools/test/stress2/misc/tmpfs20.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/tmpfs21.sh b/tools/test/stress2/misc/tmpfs21.sh
index 295ba0bd20c0..936f2c125564 100755
--- a/tools/test/stress2/misc/tmpfs21.sh
+++ b/tools/test/stress2/misc/tmpfs21.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Peter Holm
#
diff --git a/tools/test/stress2/misc/tmpfs22.sh b/tools/test/stress2/misc/tmpfs22.sh
index 4439ad1bf1d5..0912b03b5848 100755
--- a/tools/test/stress2/misc/tmpfs22.sh
+++ b/tools/test/stress2/misc/tmpfs22.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
diff --git a/tools/test/stress2/misc/tmpfs23.sh b/tools/test/stress2/misc/tmpfs23.sh
index 2f956d512dda..170f4c10cb8b 100755
--- a/tools/test/stress2/misc/tmpfs23.sh
+++ b/tools/test/stress2/misc/tmpfs23.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/tmpfs24.sh b/tools/test/stress2/misc/tmpfs24.sh
new file mode 100755
index 000000000000..5e086269cd25
--- /dev/null
+++ b/tools/test/stress2/misc/tmpfs24.sh
@@ -0,0 +1,72 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# A SEEK_HOLE / SEEK_DATA test scenario
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+
+prog=$(basename "$0" .sh)
+exp=/tmp/$prog.exp
+here=`pwd`
+log=/tmp/$prog.log
+
+cc -o /tmp/lsholes -Wall -Wextra -O2 $here/../tools/lsholes.c | exit 1
+cat > $exp <<EXP
+Min hole size is 4096, file size is 524288000.
+data #1 @ 0, size=4096)
+hole #2 @ 4096, size=4096
+data #3 @ 8192, size=4096)
+hole #4 @ 12288, size=4096
+data #5 @ 16384, size=4096)
+hole #6 @ 20480, size=524267520
+<<Missing EOF hole>>
+EXP
+
+set -eu
+mount -t tmpfs dummy $mntpoint
+set +e
+
+file=$mntpoint/file
+truncate -s 500m $file
+bs=`getconf MIN_HOLE_SIZE $file`
+printf "\001" | dd of=$file seek=$((0*bs)) bs=1 count=1 conv=notrunc status=none
+printf "\002" | dd of=$file seek=$((2*bs)) bs=1 count=1 conv=notrunc status=none
+printf "\003" | dd of=$file seek=$((4*bs)) bs=1 count=1 conv=notrunc status=none
+s1=0
+s2=0
+/tmp/lsholes $file > $log 2>&1; s1=$?
+
+cat $log
+diff -u $exp $log || s2=1
+
+umount $mntpoint
+rm -f /tmp/lsholes $exp $log
+exit $((s1 + s2))
diff --git a/tools/test/stress2/misc/tmpfs25.sh b/tools/test/stress2/misc/tmpfs25.sh
new file mode 100755
index 000000000000..b4ee7bdeef34
--- /dev/null
+++ b/tools/test/stress2/misc/tmpfs25.sh
@@ -0,0 +1,86 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Regression test for:
+# Bug 223015 - [tmpfs] [patch] tmpfs does not support sparse files
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+set -eu
+prog=$(basename "$0" .sh)
+cont=/tmp/$prog.cont
+sync=/tmp/$prog.sync
+mount | grep -q "on $mntpoint " && umount $mntpoint
+mount -t tmpfs -o size=100m dummy $mntpoint
+iused=`df $mntpoint | tail -1 | awk '{print $3}'`
+
+list="1m 10m 40m 45m 49m 50m 60m 100m 1g 4g"
+r=0
+for s in $list; do
+ truncate -s $s $mntpoint/sparse || {
+ echo "truncate -s $s failed"
+ r=1; break 2
+ }
+ rm $mntpoint/sparse || break
+ used=`df $mntpoint | tail -1 | awk '{print $3}'`
+ [ $used -ne $iused ] && {
+ echo "truncate -s $s test: $iused / $used"; r=1; break; }
+done
+
+touch $cont
+for i in `jot 1000`; do
+ [ $r -ne 0 ] && break
+ file=$mntpoint/sparse.$i
+ for s in $list; do
+ [ ! -f $cont ] && break
+ for n in `jot 300`; do [ -f $sync ] && break; sleep .2; done
+ truncate -s $s $file || {
+ echo "truncate -s $s failed"
+ rm -f $cont
+ break
+ }
+ [ -f $file ] || { echo "No file $file"; break; }
+ rm $file || break
+ done &
+done
+touch $sync
+wait
+
+used=`df $mntpoint | tail -1 | awk '{print $3}'`
+if [ $used -ne $iused ]; then
+ [ `ls -al $mntpoint | wc -l` -gt 3 ] &&
+ ls -al $mntpoint | head -10
+ df -i $mntpoint
+ fstat -f $mntpoint
+fi
+umount $mntpoint
+rm -f $cont $sync
+
+exit $r
diff --git a/tools/test/stress2/misc/trim.sh b/tools/test/stress2/misc/trim.sh
index 2dee27ec96ec..520f855e9eb1 100755
--- a/tools/test/stress2/misc/trim.sh
+++ b/tools/test/stress2/misc/trim.sh
@@ -49,11 +49,10 @@ export MAXSWAPPCT=80
for flag in ' ' $opt; do
echo "mdconfig -a -t malloc -o reserve -s $size -u $mdstart"
mdconfig -a -t malloc -o reserve -s $size -u $mdstart || exit 1
- bsdlabel -w md$mdstart auto
- echo "newfs $trim $flag md${mdstart}$part"
- newfs $trim $flag md${mdstart}$part > /dev/null
- mount /dev/md${mdstart}$part $mntpoint || exit 1
+ echo "newfs $trim $flag md$mdstart"
+ newfs $trim $flag md$mdstart > /dev/null
+ mount /dev/md$mdstart $mntpoint || exit 1
chmod 777 $mntpoint
export runRUNTIME=5m
@@ -65,7 +64,7 @@ for flag in ' ' $opt; do
umount $mntpoint && break || sleep 10
done
[ $i -eq 6 ] && { s=1; break; }
- checkfs /dev/md${mdstart}$part || s=1
+ checkfs /dev/md$mdstart || s=1
mdconfig -d -u $mdstart
done
[ $malloc_wait != 1 ] && sysctl vm.md_malloc_wait=$malloc_wait
diff --git a/tools/test/stress2/misc/trim2.sh b/tools/test/stress2/misc/trim2.sh
index f1f71cc9087a..19a55ff03a8c 100755
--- a/tools/test/stress2/misc/trim2.sh
+++ b/tools/test/stress2/misc/trim2.sh
@@ -36,10 +36,9 @@
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t malloc -o reserve -s 128m -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
[ $# -eq 0 ] && trim=-t
-newfs $trim $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $trim $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
echo "This is a Trim (TRIM) test." >> $mntpoint/file
for i in `jot 20`; do
@@ -52,8 +51,8 @@ while mount | grep $mntpoint | grep -q /dev/md; do
umount $mntpoint || sleep 1
done
-grep -a -qm1 Trim /dev/md${mdstart}$part && { echo "Test failed"; s=1; }
+grep -a -qm1 Trim /dev/md$mdstart && { echo "Test failed"; s=1; }
-checkfs /dev/md${mdstart}$part; s=$?
+checkfs /dev/md$mdstart; s=$?
mdconfig -d -u $mdstart
exit $s
diff --git a/tools/test/stress2/misc/trim3.sh b/tools/test/stress2/misc/trim3.sh
index 125c763f3546..959a86b4a1b7 100755
--- a/tools/test/stress2/misc/trim3.sh
+++ b/tools/test/stress2/misc/trim3.sh
@@ -46,12 +46,11 @@ s=0
for flag in ' ' $opt; do
echo "mdconfig -a -t swap -s $size -u $mdstart"
mdconfig -a -t swap -s $size -u $mdstart || exit 1
- bsdlabel -w md$mdstart auto
- echo "newfs $trim $flag md${mdstart}$part"
- newfs $trim $flag md${mdstart}$part > /dev/null
+ echo "newfs $trim $flag md$mdstart"
+ newfs $trim $flag md$mdstart > /dev/null
- mount /dev/md${mdstart}$part $mntpoint
+ mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=7m
@@ -65,7 +64,7 @@ for flag in ' ' $opt; do
[ $i -eq 6 ] &&
{ echo FAIL; fstat -mf $mntpoint; exit 1; }
done
- checkfs /dev/md${mdstart}$part || s=$?
+ checkfs /dev/md$mdstart || s=$?
mdconfig -d -u $mdstart
done
exit $s
diff --git a/tools/test/stress2/misc/trim4.sh b/tools/test/stress2/misc/trim4.sh
index fc23c53b09af..5fad2c084288 100755
--- a/tools/test/stress2/misc/trim4.sh
+++ b/tools/test/stress2/misc/trim4.sh
@@ -45,12 +45,11 @@ while [ $((`date +%s` - start)) -lt $((15 * 60)) ]; do
echo "Test `date '+%T'`"
echo "mdconfig -a -t swap -s $size -u $mdstart"
mdconfig -a -t swap -s $size -u $mdstart || exit 1
- bsdlabel -w md$mdstart auto
- echo "newfs $trim $flag md${mdstart}$part"
- newfs $trim $flag md${mdstart}$part > /dev/null
+ echo "newfs $trim $flag md$mdstart"
+ newfs $trim $flag md$mdstart > /dev/null
- mount /dev/md${mdstart}$part $mntpoint
+ mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=5m
@@ -62,7 +61,7 @@ while [ $((`date +%s` - start)) -lt $((15 * 60)) ]; do
umount $mntpoint || sleep 1
done
# Do not break in case of fsck error
- checkfs /dev/md${mdstart}$part || s=$?
+ checkfs /dev/md$mdstart || s=$?
mdconfig -d -u $mdstart
done
exit $s
diff --git a/tools/test/stress2/misc/trim5.sh b/tools/test/stress2/misc/trim5.sh
index a03efbd33e54..0f8ff9ae705d 100755
--- a/tools/test/stress2/misc/trim5.sh
+++ b/tools/test/stress2/misc/trim5.sh
@@ -37,9 +37,8 @@ mount | grep "$mntpoint " | grep -q md$mdstart && umount $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t malloc -s 128m -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags -t md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags -t md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
mksnap_ffs $mntpoint $mntpoint/.snap/snap
diff --git a/tools/test/stress2/misc/trim8.sh b/tools/test/stress2/misc/trim8.sh
index f31a10b5be25..2aafac7cf5ab 100755
--- a/tools/test/stress2/misc/trim8.sh
+++ b/tools/test/stress2/misc/trim8.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/truncate3.sh b/tools/test/stress2/misc/truncate3.sh
index af1b41cdb6c3..13ddaa37bdaa 100755
--- a/tools/test/stress2/misc/truncate3.sh
+++ b/tools/test/stress2/misc/truncate3.sh
@@ -36,10 +36,9 @@ mount | grep -q "$mntpoint" && umount $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 400m -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
export RUNDIR=$mntpoint/stressX
here=`pwd`
@@ -62,7 +61,7 @@ while mount | grep -q $mntpoint; do
umount $mntpoint
done
-checkfs /dev/md${mdstart}$part; s=$?
+checkfs /dev/md$mdstart; s=$?
mdconfig -d -u $mdstart
exit $s
EOF
diff --git a/tools/test/stress2/misc/truncate4.sh b/tools/test/stress2/misc/truncate4.sh
index 394970c55b12..7d83926217f9 100755
--- a/tools/test/stress2/misc/truncate4.sh
+++ b/tools/test/stress2/misc/truncate4.sh
@@ -36,18 +36,17 @@
mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
s=0
for size in $((4 * 1024 * 1024 * 1024 - 1)) $((4 * 1024 * 1024 * 1024)); do
- newfs $newfs_flags md${mdstart}$part > /dev/null
- mount /dev/md${mdstart}$part $mntpoint
+ newfs $newfs_flags md$mdstart > /dev/null
+ mount /dev/md$mdstart $mntpoint
truncate -s $size $mntpoint/f1 && rm $mntpoint/f1
while mount | grep "$mntpoint " | grep -q /dev/md; do
umount $mntpoint || sleep 1
done
- checkfs /dev/md${mdstart}$part || s=1
+ checkfs /dev/md$mdstart || s=1
done
mdconfig -d -u $mdstart
rm -f /tmp/fsck.log
diff --git a/tools/test/stress2/misc/truncate5.sh b/tools/test/stress2/misc/truncate5.sh
index e21432b1f0a4..c04da55d8a47 100755
--- a/tools/test/stress2/misc/truncate5.sh
+++ b/tools/test/stress2/misc/truncate5.sh
@@ -36,10 +36,9 @@ mount | grep -q "$mntpoint" && umount $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
here=`pwd`
cd /tmp
@@ -56,11 +55,11 @@ cd $RUNDIR
cd $here
rm -f /tmp/truncate5
-while mount | grep -q md${mdstart}$part; do
+while mount | grep -q md$mdstart; do
umount $mntpoint || sleep 1
done
-checkfs /dev/md${mdstart}$part; s=$?
+checkfs /dev/md$mdstart; s=$?
mdconfig -d -u $mdstart
exit $s
EOF
diff --git a/tools/test/stress2/misc/truncate7.sh b/tools/test/stress2/misc/truncate7.sh
index ec216721180c..710bb94414c9 100755
--- a/tools/test/stress2/misc/truncate7.sh
+++ b/tools/test/stress2/misc/truncate7.sh
@@ -37,14 +37,13 @@ mount | grep -q "$mntpoint" && umount $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 400m -u $mdstart
-bsdlabel -w md$mdstart auto
if [ `jot -r 1 0 1` -eq 0 ]; then
- newfs $newfs_flags md${mdstart}$part > /dev/null
+ newfs $newfs_flags md$mdstart > /dev/null
else
- newfs md${mdstart}$part > /dev/null
+ newfs md$mdstart > /dev/null
fi
-mount /dev/md${mdstart}$part $mntpoint
+mount /dev/md$mdstart $mntpoint
export RUNDIR=$mntpoint/stressX
here=`pwd`
@@ -67,7 +66,7 @@ while mount | grep -q $mntpoint; do
umount $mntpoint
done
-checkfs /dev/md${mdstart}$part; s=$?
+checkfs /dev/md$mdstart; s=$?
mdconfig -d -u $mdstart
exit $s
EOF
diff --git a/tools/test/stress2/misc/truncate8.sh b/tools/test/stress2/misc/truncate8.sh
index d175623cb090..e3192262e4f3 100755
--- a/tools/test/stress2/misc/truncate8.sh
+++ b/tools/test/stress2/misc/truncate8.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
@@ -45,7 +45,9 @@ echo ufs:
mount | grep -q "$mntpoint " && umount $mntpoint
mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart
-bsdlabel -w md$mdstart auto
+gpart create -s bsd md$mdstart > /dev/null
+gpart add -t freebsd-ufs md$mdstart > /dev/null
+part=a
newfs $newfs_flags md${mdstart}$part > /dev/null
mount /dev/md${mdstart}$part $mntpoint
@@ -72,7 +74,9 @@ fi
echo msdos:
if [ -x /sbin/mount_msdosfs ]; then
mdconfig -a -t swap -s 1g -u $mdstart
- bsdlabel -w md$mdstart auto
+ gpart create -s bsd md$mdstart > /dev/null
+ gpart add -t freebsd-ufs md$mdstart > /dev/null
+ part=a
newfs_msdos -F 16 -b 8192 /dev/md${mdstart}$part > /dev/null 2>&1
mount_msdosfs -m 777 /dev/md${mdstart}$part $mntpoint
diff --git a/tools/test/stress2/misc/truncate9.sh b/tools/test/stress2/misc/truncate9.sh
index 1acda51aa7c8..75526dcabf19 100755
--- a/tools/test/stress2/misc/truncate9.sh
+++ b/tools/test/stress2/misc/truncate9.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
@@ -40,9 +40,8 @@ set -e
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags -n md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags -n md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
set +e
(cd $odir/../testcases/swap; ./swap -t 5m -i 20 -l 100) > /dev/null &
diff --git a/tools/test/stress2/misc/truss2.sh b/tools/test/stress2/misc/truss2.sh
index 6a5743550b04..0bf769a485ab 100755
--- a/tools/test/stress2/misc/truss2.sh
+++ b/tools/test/stress2/misc/truss2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm
#
diff --git a/tools/test/stress2/misc/tvnlru.sh b/tools/test/stress2/misc/tvnlru.sh
index 09789a22b68e..6726ca8f4abb 100755
--- a/tools/test/stress2/misc/tvnlru.sh
+++ b/tools/test/stress2/misc/tvnlru.sh
@@ -63,9 +63,8 @@ cd $odir
mount | grep -q "on $mntpoint " && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 2g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs -n -b 4096 -f 512 -i 512 md${mdstart}$part > /dev/null
-mount -o async /dev/md${mdstart}$part $mntpoint
+newfs -n -b 4096 -f 512 -i 512 md$mdstart > /dev/null
+mount -o async /dev/md$mdstart $mntpoint
ncpu=`sysctl -n hw.ncpu`
[ $ncpu -lt 4 ] && { rm /tmp/tvnlru; exit 0; }
@@ -84,15 +83,15 @@ cd $mntpoint
t1=`/tmp/tvnlru $ncpu $newmaxvnodes $newmaxvnodes $mntpoint 2>/dev/null`
cd $odir
umount $mntpoint
-newfs -n -b 4096 -f 512 -i 512 md${mdstart}$part > /dev/null
-mount -o async /dev/md${mdstart}$part $mntpoint
+newfs -n -b 4096 -f 512 -i 512 md$mdstart > /dev/null
+mount -o async /dev/md$mdstart $mntpoint
cd $mntpoint
t1=`/tmp/tvnlru $ncpu $newmaxvnodes $newmaxvnodes $mntpoint 2>$log`
cd $odir
umount $mntpoint
-newfs -n -b 4096 -f 512 -i 512 md${mdstart}$part > /dev/null
-mount -o async /dev/md${mdstart}$part $mntpoint
+newfs -n -b 4096 -f 512 -i 512 md$mdstart > /dev/null
+mount -o async /dev/md$mdstart $mntpoint
cd $mntpoint
echo >> $log
diff --git a/tools/test/stress2/misc/udp2.sh b/tools/test/stress2/misc/udp2.sh
index 3cd72d82734b..f305fc554c24 100755
--- a/tools/test/stress2/misc/udp2.sh
+++ b/tools/test/stress2/misc/udp2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/ufsbench.sh b/tools/test/stress2/misc/ufsbench.sh
index 9ea572132c52..58abba0971c8 100755
--- a/tools/test/stress2/misc/ufsbench.sh
+++ b/tools/test/stress2/misc/ufsbench.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
@@ -37,13 +37,12 @@ mycc -o /tmp/ufsbench -Wall -Wextra -O0 -g ../tools/bench.c || exit 1
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 1g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
s=0
for j in `jot 5`; do
- newfs -n -b 4096 -f 512 -i 1024 md${mdstart}$part > \
+ newfs -n -b 4096 -f 512 -i 1024 md$mdstart > \
/dev/null
- mount -o async /dev/md${mdstart}$part $mntpoint
+ mount -o async /dev/md$mdstart $mntpoint
(cd $mntpoint; /tmp/ufsbench)
[ $? -ne 0 ] && s=1
for i in `jot 6`; do
diff --git a/tools/test/stress2/misc/umount.sh b/tools/test/stress2/misc/umount.sh
index 8ec0351cda31..b610a567e873 100755
--- a/tools/test/stress2/misc/umount.sh
+++ b/tools/test/stress2/misc/umount.sh
@@ -35,13 +35,12 @@
D=$diskimage
dd if=/dev/zero of=$D bs=1m count=110 status=none || exit 1
-mount | grep "$mntpoint" | grep md${mdstart}$part > /dev/null && umount $mntpoint
+mount | grep "$mntpoint" | grep md$mdstart > /dev/null && umount $mntpoint
mdconfig -l | grep md$mdstart > /dev/null && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
export RUNDIR=$mntpoint/stressX
export runRUNTIME=3m # Run tests for three minutes
(cd ..; ./run.sh vfs.cfg)
diff --git a/tools/test/stress2/misc/umount2.sh b/tools/test/stress2/misc/umount2.sh
index d78f7a836f15..fa8988d18e62 100755
--- a/tools/test/stress2/misc/umount2.sh
+++ b/tools/test/stress2/misc/umount2.sh
@@ -40,9 +40,8 @@
mount | grep -q "on $mntpoint " && umount -f $mntpoint
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 5g -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
size=$((`sysctl -n hw.physmem` / 1024 / 1024))
diff --git a/tools/test/stress2/misc/umount3.sh b/tools/test/stress2/misc/umount3.sh
index 2ff0c8caeb56..b28230d8b3af 100755
--- a/tools/test/stress2/misc/umount3.sh
+++ b/tools/test/stress2/misc/umount3.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
@@ -43,9 +43,8 @@ touch $continue
[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 10m -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
for i in `jot $parallel`; do
while [ -f $continue ]; do umount $mntpoint; done 2>/dev/null &
@@ -54,7 +53,7 @@ done
start=`date '+%s'`
while [ $((`date '+%s'` - start)) -lt 300 ]; do
mount | grep -q "on $mntpoint " ||
- mount /dev/md${mdstart}$part $mntpoint
+ mount /dev/md$mdstart $mntpoint
done > /dev/null 2>&1
rm $continue
wait
diff --git a/tools/test/stress2/misc/umount4.sh b/tools/test/stress2/misc/umount4.sh
index e46f319959a0..bcd062bb8106 100755
--- a/tools/test/stress2/misc/umount4.sh
+++ b/tools/test/stress2/misc/umount4.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Peter Holm
#
diff --git a/tools/test/stress2/misc/umountf.sh b/tools/test/stress2/misc/umountf.sh
index 125eb336749c..038e64e70717 100755
--- a/tools/test/stress2/misc/umountf.sh
+++ b/tools/test/stress2/misc/umountf.sh
@@ -35,14 +35,13 @@
D=$diskimage
dd if=/dev/zero of=$D bs=1m count=110 status=none || exit 1
-mount | grep "$mntpoint" | grep md${mdstart}$part > /dev/null &&
+mount | grep "$mntpoint" | grep md$mdstart > /dev/null &&
umount $mntpoint
mdconfig -l | grep md$mdstart > /dev/null && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart || { rm $diskimage; exit 1; }
-bsdlabel -w md$mdstart auto
-newfs md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
export RUNDIR=$mntpoint/stressX
export runRUNTIME=2m
diff --git a/tools/test/stress2/misc/umountf11.sh b/tools/test/stress2/misc/umountf11.sh
index b2a694037420..b41ec6bc5737 100755
--- a/tools/test/stress2/misc/umountf11.sh
+++ b/tools/test/stress2/misc/umountf11.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/umountf12.sh b/tools/test/stress2/misc/umountf12.sh
index 8a13f8fd480a..af74cf37a0b8 100755
--- a/tools/test/stress2/misc/umountf12.sh
+++ b/tools/test/stress2/misc/umountf12.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/umountf2.sh b/tools/test/stress2/misc/umountf2.sh
index 6dc62bcd947b..5018a804c403 100755
--- a/tools/test/stress2/misc/umountf2.sh
+++ b/tools/test/stress2/misc/umountf2.sh
@@ -44,13 +44,12 @@ rm -f /tmp/fsx.c
D=$diskimage
dd if=/dev/zero of=$D bs=1m count=1k status=none || exit 1
-mount | grep "$mntpoint" | grep md${mdstart}$part > /dev/null && umount $mntpoint
+mount | grep "$mntpoint" | grep md$mdstart > /dev/null && umount $mntpoint
mdconfig -l | grep md$mdstart > /dev/null && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs md${mdstart}$part > /dev/null 2>&1
-mount /dev/md${mdstart}$part $mntpoint
+newfs md$mdstart > /dev/null 2>&1
+mount /dev/md$mdstart $mntpoint
sleep 5
for i in `jot 100`; do
/tmp/fsx -S $i -q $mntpoint/xxx$i > /dev/null &
diff --git a/tools/test/stress2/misc/umountf3.sh b/tools/test/stress2/misc/umountf3.sh
index dd165fc88d2f..a451ece0e296 100755
--- a/tools/test/stress2/misc/umountf3.sh
+++ b/tools/test/stress2/misc/umountf3.sh
@@ -47,9 +47,8 @@ mount | grep "$mntpoint" | grep md$mdstart > /dev/null && umount $mntpoint
mdconfig -l | grep md$mdstart > /dev/null && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs md${mdstart}$part > /dev/null 2>&1
-mount /dev/md${mdstart}$part $mntpoint
+newfs md$mdstart > /dev/null 2>&1
+mount /dev/md$mdstart $mntpoint
export RUNDIR=$mntpoint/stressX
for i in `jot 25`; do
(cd /$mntpoint; /tmp/umountf3) &
diff --git a/tools/test/stress2/misc/umountf4.sh b/tools/test/stress2/misc/umountf4.sh
index e9f802e1daf0..4f5ea0fff660 100755
--- a/tools/test/stress2/misc/umountf4.sh
+++ b/tools/test/stress2/misc/umountf4.sh
@@ -46,8 +46,7 @@ if [ $# -eq 0 ]; then
dd if=/dev/zero of=$D$m bs=1m count=10 status=none
mdconfig -a -t vnode -f $D$m -u $m ||
{ rm -f $D$m; exit 1; }
- bsdlabel -w md$m auto
- newfs md${m}$part > /dev/null 2>&1
+ newfs md${m} > /dev/null 2>&1
done
# start the parallel tests
@@ -75,7 +74,7 @@ else
for i in `jot 100`; do
m=$1
opt=`[ $(( m % 2 )) -eq 0 ] && echo -f`
- mount $opt /dev/md${m}$part ${mntpoint}$m
+ mount $opt /dev/md${m} ${mntpoint}$m
cp -r /usr/include/machine/a* ${mntpoint}$m
while mount | grep -qw $mntpoint$m; do
umount -f ${mntpoint}$m > /dev/null 2>&1
diff --git a/tools/test/stress2/misc/umountf5.sh b/tools/test/stress2/misc/umountf5.sh
index f5ebb253134a..0f44ea3407e4 100755
--- a/tools/test/stress2/misc/umountf5.sh
+++ b/tools/test/stress2/misc/umountf5.sh
@@ -35,14 +35,13 @@
D=$diskimage
dd if=/dev/zero of=$D$m bs=1m count=10 status=none
-mount | grep "$mntpoint" | grep md${mdstart}$part > /dev/null &&
+mount | grep "$mntpoint" | grep md$mdstart > /dev/null &&
umount $mntpoint
mdconfig -l | grep md$mdstart > /dev/null && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $D -u $mdstart || { rm -f $diskimage; exit 1; }
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null 2>&1
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null 2>&1
+mount /dev/md$mdstart $mntpoint
export RUNDIR=$mntpoint/stressX
export runRUNTIME=2m
diff --git a/tools/test/stress2/misc/umountf6.sh b/tools/test/stress2/misc/umountf6.sh
index b42a8071aaa8..aeb4454ea69c 100755
--- a/tools/test/stress2/misc/umountf6.sh
+++ b/tools/test/stress2/misc/umountf6.sh
@@ -46,8 +46,7 @@ if [ $# -eq 0 ]; then
dd if=/dev/zero of=$D$m bs=1m count=10 status=none
mdconfig -a -t vnode -f $D$m -u $m ||
{ rm -f $D$m; exit 1; }
- bsdlabel -w md$m auto
- newfs $newfs_flags md${m}$part > /dev/null 2>&1
+ newfs $newfs_flags md${m} > /dev/null 2>&1
done
# start the parallel tests
@@ -75,7 +74,7 @@ else
for i in `jot 100`; do
m=$1
opt=`[ $(( m % 2 )) -eq 0 ] && echo -f`
- mount $opt /dev/md${m}$part ${mntpoint}$m
+ mount $opt /dev/md${m} ${mntpoint}$m
cp -r /usr/include/machine/a* ${mntpoint}$m
while mount | grep -qw $mntpoint$m; do
umount -f ${mntpoint}$m > /dev/null 2>&1
diff --git a/tools/test/stress2/misc/umountf7.sh b/tools/test/stress2/misc/umountf7.sh
index d4a52b4ce8f2..be1d971a6586 100755
--- a/tools/test/stress2/misc/umountf7.sh
+++ b/tools/test/stress2/misc/umountf7.sh
@@ -46,10 +46,9 @@ cd $odir
mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 3g -u $mdstart || exit 1
-bsdlabel -w md$mdstart auto
[ "$newfs_flags" = "-U" ] && opt="-j"
-newfs $opt md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $opt md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
daemon sh -c '(cd ../testcases/swap; ./swap -t 2m -i 4)'
parallel=4
diff --git a/tools/test/stress2/misc/union.sh b/tools/test/stress2/misc/union.sh
index cef2e4c69868..25eb266eb39b 100755
--- a/tools/test/stress2/misc/union.sh
+++ b/tools/test/stress2/misc/union.sh
@@ -35,31 +35,29 @@
u1=$mdstart
u2=$((u1 + 1))
-mount | grep -q /dev/md${u2}$part && umount -f /dev/md${u2}$part
-mount | grep -q /dev/md${u1}$part && umount -f /dev/md${u1}$part
+mount | grep -q /dev/md${u2} && umount -f /dev/md${u2}
+mount | grep -q /dev/md${u1} && umount -f /dev/md${u1}
mdconfig -l | grep -q md$u2 && mdconfig -d -u $u2
mdconfig -l | grep -q md$u1 && mdconfig -d -u $u1
mdconfig -s 256m -u $u1
-bsdlabel -w md$u1 auto
-newfs md${u1}$part > /dev/null
+newfs md${u1} > /dev/null
mdconfig -s 256m -u $u2
-bsdlabel -w md$u2 auto
-newfs md${u2}$part > /dev/null
+newfs md${u2} > /dev/null
-mount -o ro /dev/md${u1}$part $mntpoint
-mount -o union /dev/md${u2}$part $mntpoint
+mount -o ro /dev/md${u1} $mntpoint
+mount -o union /dev/md${u2} $mntpoint
export RUNDIR=$mntpoint/stressX
export runRUNTIME=10m
(cd ..; ./run.sh marcus.cfg) > /dev/null
-umount /dev/md${u2}$part
-umount /dev/md${u1}$part
+umount /dev/md${u2}
+umount /dev/md${u1}
-mount | grep -q /dev/md${u2}$part && umount -f /dev/md${u2}$part
-mount | grep -q /dev/md${u1}$part && umount -f /dev/md${u1}$part
+mount | grep -q /dev/md${u2} && umount -f /dev/md${u2}
+mount | grep -q /dev/md${u1} && umount -f /dev/md${u1}
mdconfig -d -u $u2
mdconfig -d -u $u1
diff --git a/tools/test/stress2/misc/unionfs10.sh b/tools/test/stress2/misc/unionfs10.sh
new file mode 100755
index 000000000000..866de62d9ff0
--- /dev/null
+++ b/tools/test/stress2/misc/unionfs10.sh
@@ -0,0 +1,87 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2022 Jason Harmening <jah@FreeBSD.org>
+# 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.
+#
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+# Regression test:
+
+# There is an issue, namely, when the lower file is already
+# opened r/w, but its nullfs alias is executed. This situation obviously
+# shall result in ETXTBUSY, but it currently does not.
+
+# Based on nullfs10.sh by pho@, original test scenario by kib@
+
+. ../default.cfg
+
+md1=$mdstart
+md2=$((md1 + 1))
+mp1=/mnt$md1
+mp2=/mnt$md2
+mkdir -p $mp1 $mp2
+set -e
+for i in $mp1 $mp2; do
+ mount | grep -q "on $i " && umount -f $i
+done
+for i in $md1 $md2; do
+ mdconfig -l | grep -q md$i && mdconfig -d -u $i
+done
+
+mdconfig -a -t swap -s 4g -u $md1
+mdconfig -a -t swap -s 4g -u $md2
+newfs $newfs_flags -n md$md1 > /dev/null
+newfs $newfs_flags -n md$md2 > /dev/null
+mount /dev/md$md1 $mp1
+mount /dev/md$md2 $mp2
+
+mount -t unionfs -o noatime $mp1 $mp2
+set +e
+
+mount | grep -E "$mp1|$mp2"
+
+chmod 777 $mp1
+chmod 777 $mp2
+
+cp /bin/ls $mp1
+chmod +w $mp1/ls
+sleep 2 >> $mp1/ls &
+sleep .5
+
+# This line should cause a "$mp2/ls: Text file busy" error
+$mp2/ls -l /bin/ls $mp1 $mp2 && echo FAIL || echo OK
+kill $!
+wait
+
+while mount | grep -q "$mp2 "; do
+ umount $mp2 || sleep 1
+done
+
+while mount | grep -q "$mp1 "; do
+ umount $mp1 || sleep 1
+done
+mdconfig -d -u $md2
+mdconfig -d -u $md1
diff --git a/tools/test/stress2/misc/unionfs11.sh b/tools/test/stress2/misc/unionfs11.sh
new file mode 100755
index 000000000000..b86be896d8f5
--- /dev/null
+++ b/tools/test/stress2/misc/unionfs11.sh
@@ -0,0 +1,87 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2022 Jason Harmening <jah@FreeBSD.org>
+# 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.
+#
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+# Regression test:
+
+# There is an issue, namely, when the lower file is already
+# opened r/w, but its nullfs alias is executed. This situation obviously
+# shall result in ETXTBUSY, but it currently does not.
+
+# Based on nullfs10.sh by pho@, original test scenario by kib@
+
+. ../default.cfg
+
+md1=$mdstart
+md2=$((md1 + 1))
+mp1=/mnt$md1
+mp2=/mnt$md2
+mkdir -p $mp1 $mp2
+set -e
+for i in $mp1 $mp2; do
+ mount | grep -q "on $i " && umount -f $i
+done
+for i in $md1 $md2; do
+ mdconfig -l | grep -q md$i && mdconfig -d -u $i
+done
+
+mdconfig -a -t swap -s 4g -u $md1
+mdconfig -a -t swap -s 4g -u $md2
+newfs $newfs_flags -n md$md1 > /dev/null
+newfs $newfs_flags -n md$md2 > /dev/null
+mount /dev/md$md1 $mp1
+mount /dev/md$md2 $mp2
+
+mount -t unionfs -o noatime $mp1 $mp2
+set +e
+
+mount | grep -E "$mp1|$mp2"
+
+chmod 777 $mp1
+chmod 777 $mp2
+
+cp /bin/ls $mp2
+chmod +w $mp2/ls
+sleep 2 >> $mp2/ls &
+sleep .5
+
+# This line should cause a "$mp1/ls: Text file busy" error
+$mp1/ls -l /bin/ls $mp1 $mp2 && echo FAIL || echo OK
+kill $!
+wait
+
+while mount | grep -q "$mp2 "; do
+ umount $mp2 || sleep 1
+done
+
+while mount | grep -q "$mp1 "; do
+ umount $mp1 || sleep 1
+done
+mdconfig -d -u $md2
+mdconfig -d -u $md1
diff --git a/tools/test/stress2/misc/unionfs12.sh b/tools/test/stress2/misc/unionfs12.sh
new file mode 100755
index 000000000000..62d1b494cda9
--- /dev/null
+++ b/tools/test/stress2/misc/unionfs12.sh
@@ -0,0 +1,88 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2022 Jason Harmening <jah@FreeBSD.org>
+# 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.
+#
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+# Regression test:
+
+# There is an issue, namely, when the lower file is already
+# opened r/w, but its nullfs alias is executed. This situation obviously
+# shall result in ETXTBUSY, but it currently does not.
+
+# Based on nullfs10.sh by pho@, original test scenario by kib@
+
+. ../default.cfg
+
+md1=$mdstart
+md2=$((md1 + 1))
+mp1=/mnt$md1
+mp2=/mnt$md2
+mkdir -p $mp1 $mp2
+set -e
+for i in $mp1 $mp2; do
+ mount | grep -q "on $i " && umount -f $i
+done
+for i in $md1 $md2; do
+ mdconfig -l | grep -q md$i && mdconfig -d -u $i
+done
+
+mdconfig -a -t swap -s 4g -u $md1
+mdconfig -a -t swap -s 4g -u $md2
+newfs $newfs_flags -n md$md1 > /dev/null
+newfs $newfs_flags -n md$md2 > /dev/null
+mount /dev/md$md1 $mp1
+mount /dev/md$md2 $mp2
+
+mkdir $mp2/shadow
+cp /bin/ls $mp2/shadow/
+mount -t unionfs -o noatime $mp1 $mp2
+set +e
+
+mount | grep -E "$mp1|$mp2"
+
+chmod 777 $mp1
+chmod 777 $mp2
+
+chmod +w $mp2/shadow/ls
+sleep 2 >> $mp2/shadow/ls &
+sleep .5
+
+# This line should cause a "$mp1/shadow/ls: Text file busy" error
+$mp1/shadow/ls -l /bin/ls $mp1 $mp2 && echo FAIL || echo OK
+kill $!
+wait
+
+while mount | grep -q "$mp2 "; do
+ umount $mp2 || sleep 1
+done
+
+while mount | grep -q "$mp1 "; do
+ umount $mp1 || sleep 1
+done
+mdconfig -d -u $md2
+mdconfig -d -u $md1
diff --git a/tools/test/stress2/misc/unionfs13.sh b/tools/test/stress2/misc/unionfs13.sh
new file mode 100755
index 000000000000..0202e782a11c
--- /dev/null
+++ b/tools/test/stress2/misc/unionfs13.sh
@@ -0,0 +1,75 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm
+#
+# 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.
+#
+
+# Simple test to demonstrate EMLINK issue.
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+md1=$mdstart
+md2=$((md1 + 1))
+mp1=/mnt$md1
+mp2=/mnt$md2
+mkdir -p $mp1 $mp2
+set -e
+for i in $mp1 $mp2; do
+ mount | grep -q "on $i " && umount -f $i
+done
+for i in $md1 $md2; do
+ mdconfig -l | grep -q md$i && mdconfig -d -u $i
+done
+
+mdconfig -a -t swap -s 2g -u $md1
+mdconfig -a -t swap -s 2g -u $md2
+newfs $newfs_flags -n md$md1 > /dev/null
+newfs $newfs_flags -n md$md2 > /dev/null
+mount /dev/md$md1 $mp1
+mount /dev/md$md2 $mp2
+df -i $mp1 $mp2
+echo
+mount -t unionfs -o noatime $mp1 $mp2
+set +e
+
+df -i $mp2
+for i in `jot 100`; do
+ jot 1000 | xargs -P0 -I% mkdir $mp2/a% || { s=1; break; }
+ jot 1000 | xargs -P0 -I% rmdir $mp2/a%
+done
+[ $s ] && echo "Failed in loop #$i"
+df -i $mp2 | tail -1
+
+while mount | grep -Eq "on $mp2 .*unionfs"; do
+ umount $mp2 && break
+ sleep 5
+done
+umount $mp2
+umount $mp1
+mdconfig -d -u $md2
+mdconfig -d -u $md1
+exit $s
diff --git a/tools/test/stress2/misc/unionfs14.sh b/tools/test/stress2/misc/unionfs14.sh
new file mode 100755
index 000000000000..054e76e4b476
--- /dev/null
+++ b/tools/test/stress2/misc/unionfs14.sh
@@ -0,0 +1,94 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Parallel mount and umount test.
+# Copy of unionfs9.sh, with a subdirectory mount point.
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+mounts=3 # Number of parallel scripts
+CONT=/tmp/unionfs9.continue
+
+set -e
+mdconfig -a -t swap -s 256m -u $mdstart
+newfs $newfs_flags -n md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+
+for i in `jot $mounts $((mdstart + 2))`; do
+ mdconfig -a -t swap -s 512m -u $((mdstart + i))
+ newfs $newfs_flags -n md$((mdstart + i)) > /dev/null
+ mkdir -p ${mntpoint}$i
+ mount /dev/md$((mdstart + i)) ${mntpoint}$i
+ mkdir -p ${mntpoint}$i/dir
+done
+set +e
+echo Pre:
+mount | grep mnt
+
+(cd $mntpoint; jot 500 | xargs touch)
+(cd ../testcases/swap; ./swap -t 5m -i 20 > /dev/null) &
+
+# Start the parallel tests
+touch $CONT
+for i in `jot $mounts $((mdstart + 2))`; do
+ while [ -f $CONT ]; do
+ find ${mntpoint}$i -type f -maxdepth 2 -ls > \
+ /dev/null 2>&1
+ done &
+ # The test: Parallel mount and unmounts
+ start=`date +%s`
+ (
+ while [ $((`date +%s` - start)) -lt 300 ]; do
+ mount_unionfs $mntpoint ${mntpoint}$i/dir
+ opt=$([ `jot -r 1 0 1` -eq 0 ] && echo "-f")
+ while mount | grep -q ${mntpoint}$i/dir; do
+ umount $opt ${mntpoint}$i/dir
+ done
+ done > /dev/null 2>&1
+ rm -f $CONT
+ ) &
+done
+while [ -f $CONT ] ; do sleep 1; done
+while pgrep -q swap; do pkill swap; done
+wait
+echo Post:
+mount | grep mnt
+
+for i in `jot $mounts $((mdstart + 2))`; do
+ umount ${mntpoint}$i > /dev/null 2>&1
+ mdconfig -d -u $((mdstart + i))
+ rmdir ${mntpoint}$i
+done
+while mount | grep $mntpoint | grep -q /dev/md; do
+ umount $mntpoint || sleep 1
+ [ $((n += 1)) -gt 300 ] && { echo FAIL; exit 1; }
+done
+mdconfig -d -u $mdstart
+exit 0
diff --git a/tools/test/stress2/misc/unionfs15.sh b/tools/test/stress2/misc/unionfs15.sh
new file mode 100755
index 000000000000..87cea7c0b15d
--- /dev/null
+++ b/tools/test/stress2/misc/unionfs15.sh
@@ -0,0 +1,86 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2024 Peter Holm <pho@FreeBSD.org>
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+
+# O_PATH test scenario. Variation of nullfs29.sh
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+md1=$mdstart
+md2=$((md1 + 1))
+mp1=/mnt$md1
+mp2=/mnt$md2
+mkdir -p $mp1 $mp2
+set -e
+for i in $mp1 $mp2; do
+ mount | grep -q "on $i " && umount -f $i
+done
+for i in $md1 $md2; do
+ mdconfig -l | grep -q md$i && mdconfig -d -u $i
+done
+
+mdconfig -a -t swap -s 2g -u $md1
+mdconfig -a -t swap -s 2g -u $md2
+newfs $newfs_flags -n md$md1 > /dev/null
+newfs $newfs_flags -n md$md2 > /dev/null
+mount /dev/md$md1 $mp1
+mount /dev/md$md2 $mp2
+mount -t unionfs -o noatime $mp1 $mp2
+set +e
+
+cat > /tmp/unionfs15.c <<EOF
+#include <sys/stat.h>
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(void) {
+ int new_dir, new_file, ret;
+ struct stat sb;
+ char *dir = "test2";
+ char *path= "test2/what2";
+
+ if (mkdir(dir, 0755) == -1)
+ err(1, "mkdir(test2)");
+ new_dir = openat(AT_FDCWD, dir, O_RDONLY|O_DIRECTORY|O_CLOEXEC|O_PATH, 0700);
+ if (new_dir == -1)
+ err(1, "openat(%s)", dir);
+
+ ret = fstatat(new_dir, "what2", &sb, AT_SYMLINK_NOFOLLOW);
+ if (ret == 0)
+ errx(1, "Expected fstatat() to fail");
+ if (ret == -1 && errno != ENOENT)
+ err(1, "fstatat(%s)", dir);
+
+ close(new_dir);
+ new_file = openat(AT_FDCWD, path, O_WRONLY|O_CREAT|O_EXCL|O_CLOEXEC, 0644);
+ if (new_file== -1)
+ err(1, "openat(%s)", path);
+}
+
+EOF
+mycc -o /tmp/unionfs15 -Wall -Wextra -O2 /tmp/unionfs15.c || exit 1
+cd $mp2
+/tmp/unionfs15; s=$?
+cd $here
+umount $mp2
+
+while mount | grep -Eq "on $mp2 .*unionfs"; do
+ umount $mp2 && break
+ sleep 5
+done
+umount $mp2
+umount $mp1
+mdconfig -d -u $md2
+mdconfig -d -u $md1
+rm -f /tmp/unionfs15.c /tmp/unionfs15
+exit $s
diff --git a/tools/test/stress2/misc/unionfs16.sh b/tools/test/stress2/misc/unionfs16.sh
new file mode 100755
index 000000000000..c1c65f7d8313
--- /dev/null
+++ b/tools/test/stress2/misc/unionfs16.sh
@@ -0,0 +1,65 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2024 Peter Holm <pho@FreeBSD.org>
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+
+# No problems seen with this test scenario
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+[ -d /usr/src/tools/test/stress2 ] || exit 0
+prog=$(basename "$0" .sh)
+log=/tmp/$prog.log
+md1=$mdstart
+md2=$((md1 + 1))
+mp1=/mnt$md1
+mp2=/mnt$md2
+s=0
+
+mkdir -p $mp1 $mp2
+set -e
+for i in $mp1 $mp2; do
+ mount | grep -q "on $i " && umount -f $i
+done
+for i in $md1 $md2; do
+ mdconfig -l | grep -q md$i && mdconfig -d -u $i
+done
+
+mdconfig -a -t swap -s 3g -u $md1
+mdconfig -a -t swap -s 3g -u $md2
+newfs $newfs_flags -n md$md1 > /dev/null
+newfs $newfs_flags -n md$md2 > /dev/null
+mount /dev/md$md1 $mp1
+mount /dev/md$md2 $mp2
+(cd $mp1; cp -a /usr/src/tools/test/stress2 .)
+(cd $mp2; cp -a /usr/src/tools/test/stress2 .)
+rm $mp1/stress2/testcases/run/run
+rm $mp2/stress2/testcases/swap/swap
+mount -u -o ro $mp1
+mount -t unionfs -o below $mp1 $mp2
+rm $mp2/stress2/testcases/mkdir/mkdir
+chmod 777 $mp2
+set +e
+
+(cd $mp2/stress2; make > /dev/null 2>&1)
+export RUNDIR=$mp2/stressX
+export runRUNTIME=1m
+su $testuser -c "cd $mp2/stress2; ./run.sh vfs.cfg" > /dev/null 2>&1
+umount $mp2
+
+while mount | grep -Eq "unionfs.* on $mp2 "; do
+ umount $mp2 && break
+ sleep 5
+done
+fsck_ffs -fy /dev/md$md2 > $log 2>&1
+grep -Eq "WAS MODIFIED" $log && { cat $log; s=1; }
+umount $mp2
+umount $mp1
+mdconfig -d -u $md1
+mdconfig -d -u $md2
+rm -f $log
+exit $s
diff --git a/tools/test/stress2/misc/unionfs17.sh b/tools/test/stress2/misc/unionfs17.sh
new file mode 100755
index 000000000000..bcb6d242187b
--- /dev/null
+++ b/tools/test/stress2/misc/unionfs17.sh
@@ -0,0 +1,73 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2024 Peter Holm <pho@FreeBSD.org>
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+
+# unionfs(8) test
+# Variation of unionfs7.sh, but with tmpfs
+
+# "mkdir: rmdir(d17) Directory not empty" seen.
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+mp1=/mnt$mdstart
+mp2=/mnt$((mdstart + 1))
+mkdir -p $mp1 $mp2
+set -e
+for i in $mp1 $mp2; do
+ mount | grep -q "on $i " && umount -f $i
+done
+
+mount -o size=4g -t tmpfs dummy $mp1
+mount -o size=4g -t tmpfs dummy $mp2
+
+mount -t unionfs -o noatime $mp1 $mp2
+set +e
+export 'INODES=100000'
+
+export CTRLDIR=$mp2/stressX.control
+export INCARNATIONS=10
+export LOAD=80
+export RUNDIR=$mp2/stressX
+export runRUNTIME=5m
+export rwLOAD=80
+export symlinkLOAD=80
+
+export TESTPROGS="
+testcases/lockf2/lockf2
+testcases/symlink/symlink
+testcases/openat/openat
+testcases/rw/rw
+testcases/fts/fts
+testcases/link/link
+testcases/lockf/lockf
+testcases/creat/creat
+testcases/mkdir/mkdir
+testcases/rename/rename
+testcases/mkfifo/mkfifo
+testcases/dirnprename/dirnprename
+testcases/dirrename/dirrename
+testcases/swap/swap
+"
+
+cp -r ../../stress2 $mp2
+export TESTPROGS=`echo $TESTPROGS | sed 's/\n/ /g'`
+
+set +e
+chmod 777 $mp2
+su $testuser -c \
+ "(cd $mp2/stress2; ./testcases/run/run $TESTPROGS)"
+
+while mount | grep -Eq "on $mp2 .*unionfs"; do
+ umount $mp2 && break
+ sleep 5
+done
+umount $mp2
+n=`find $mp1/stressX | wc -l`
+[ $n -eq 1 ] && s=0 || { find $mp1/stressX -ls | head -12; s=1; }
+umount $mp1
+exit $s
diff --git a/tools/test/stress2/misc/unionfs18.sh b/tools/test/stress2/misc/unionfs18.sh
new file mode 100755
index 000000000000..e772a67a07fb
--- /dev/null
+++ b/tools/test/stress2/misc/unionfs18.sh
@@ -0,0 +1,73 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2024 Peter Holm <pho@FreeBSD.org>
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+
+# Simple unionfs(8) + tmpfs test
+
+# "rmdir: d2: Directory not empty" seen.
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+mp1=/mnt$mdstart
+mp2=/mnt$((mdstart + 1))
+mkdir -p $mp1 $mp2
+set -e
+for i in $mp1 $mp2; do
+ mount | grep -q "on $i " && umount -f $i
+done
+
+md1=$mdstart
+md2=$((md1 + 1))
+mp1=/mnt$md1
+mp2=/mnt$md2
+mkdir -p $mp1 $mp2
+for i in $mp1 $mp2; do
+ mount | grep -q "on $i " && umount -f $i
+done
+
+if [ $# -eq 0 ]; then
+ echo "tmpfs version"
+ mount -o size=4g -t tmpfs dummy $mp1
+ mount -o size=4g -t tmpfs dummy $mp2
+else
+ echo "UFS version"
+ for i in $md1 $md2; do
+ mdconfig -l | grep -q md$i && mdconfig -d -u $i
+ done
+ mdconfig -a -t swap -s 4g -u $md1
+ mdconfig -a -t swap -s 4g -u $md2
+ newfs $newfs_flags -n md$md1 > /dev/null
+ newfs $newfs_flags -n md$md2 > /dev/null
+ mount /dev/md$md1 $mp1
+ mount /dev/md$md2 $mp2
+fi
+
+mount -t unionfs -o noatime $mp1 $mp2
+set +e
+
+N=3 # Tree depth
+here=`pwd`
+cd $mp2
+mkdir dir; cd dir
+for j in `seq 1 $N`; do
+ mkdir d$j && cd d$j
+done
+for j in `seq $N 1`; do
+ cd .. && rmdir d$j
+done
+cd ..
+rmdir dir || { s=1; find dir -ls; }
+cd $here
+
+while mount | grep -Eq "on $mp2 .*unionfs"; do
+ umount $mp2 && break
+ sleep 5
+done
+umount $mp2
+umount $mp1
+exit $s
diff --git a/tools/test/stress2/misc/unionfs3.sh b/tools/test/stress2/misc/unionfs3.sh
index 9b1a43344447..791da14e315c 100755
--- a/tools/test/stress2/misc/unionfs3.sh
+++ b/tools/test/stress2/misc/unionfs3.sh
@@ -39,9 +39,8 @@ mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t vnode -f $diskimage -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
mount -t unionfs -o noatime /tmp $mntpoint
umount -f /tmp # panic
mount /tmp
diff --git a/tools/test/stress2/misc/unionfs4.sh b/tools/test/stress2/misc/unionfs4.sh
index 557cead66389..e23f90004a88 100755
--- a/tools/test/stress2/misc/unionfs4.sh
+++ b/tools/test/stress2/misc/unionfs4.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm
#
@@ -52,6 +52,8 @@ done
mdconfig -a -t swap -s 2g -u $md1
mdconfig -a -t swap -s 2g -u $md2
+[ "$newfs_flags" = "-U" ] &&
+ newfs_flags="-j" # "out of inodes" work around
newfs $newfs_flags -n md$md1 > /dev/null
newfs $newfs_flags -n md$md2 > /dev/null
mount /dev/md$md1 $mp1
@@ -67,7 +69,10 @@ export runRUNTIME=2m
(cd ..; ./run.sh marcus.cfg)
../tools/killall.sh
-umount $mp2 # The unionfs mount
+while mount | grep -Eq "on $mp2 .*unionfs"; do
+ umount $mp2 && break
+ sleep 5
+done
umount $mp2
n=`find $mp1/stressX | wc -l`
[ $n -eq 1 ] && s=0 || { find $mp1/stressX -ls | head -12; s=1; }
diff --git a/tools/test/stress2/misc/unionfs5.sh b/tools/test/stress2/misc/unionfs5.sh
index ba00fa2b5258..a45ffde5c0b2 100755
--- a/tools/test/stress2/misc/unionfs5.sh
+++ b/tools/test/stress2/misc/unionfs5.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm
#
@@ -50,8 +50,8 @@ for i in $md1 $md2; do
mdconfig -l | grep -q md$i && mdconfig -d -u $i
done
-mdconfig -a -t swap -s 2g -u $md1
-mdconfig -a -t swap -s 2g -u $md2
+mdconfig -a -t swap -s 5g -u $md1
+mdconfig -a -t swap -s 5g -u $md2
newfs $newfs_flags -n md$md1 > /dev/null
newfs $newfs_flags -n md$md2 > /dev/null
mount /dev/md$md1 $mp1
@@ -68,12 +68,16 @@ else
echo "Using FFS"
export RUNDIR=$mp1/stressX
fi
-export runRUNTIME=2m
+export CTRLDIR=$mp2/stressX.control
+export runRUNTIME=2m
-(cd ../testcases/mkdir; ./mkdir -t 2m -i 20)
+(cd ../testcases/mkdir; ./mkdir -t 2m -i 20 -l 100)
-find $RUNDIR -ls
-umount $mp2 # The unionfs mount
+find $RUNDIR -ls | grep -v 'stressX$' | head -5
+while mount | grep -Eq "on $mp2 .*unionfs"; do
+ umount $mp2 && break
+ sleep 5
+done
umount $mp2
n=`find $mp1/stressX | wc -l`
[ $n -eq 1 ] && s=0 || s=1
diff --git a/tools/test/stress2/misc/unionfs6.sh b/tools/test/stress2/misc/unionfs6.sh
new file mode 100755
index 000000000000..54e688b0a111
--- /dev/null
+++ b/tools/test/stress2/misc/unionfs6.sh
@@ -0,0 +1,104 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2021 Peter Holm
+#
+# 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.
+#
+
+# unionfs(8) test
+# "panic: ufs dir vp 0xfffffe0157351068 ip 0xfffffe016a63d488 flags 0x3c06" seen
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+md1=$mdstart
+md2=$((md1 + 1))
+mp1=/mnt$md1
+mp2=/mnt$md2
+mkdir -p $mp1 $mp2
+set -e
+for i in $mp1 $mp2; do
+ mount | grep -q "on $i " && umount -f $i
+done
+for i in $md1 $md2; do
+ mdconfig -l | grep -q md$i && mdconfig -d -u $i
+done
+
+mdconfig -a -t swap -s 4g -u $md1
+mdconfig -a -t swap -s 4g -u $md2
+newfs $newfs_flags -n md$md1 > /dev/null
+newfs $newfs_flags -n md$md2 > /dev/null
+mount /dev/md$md1 $mp1
+mount /dev/md$md2 $mp2
+
+mount -t unionfs -o noatime $mp1 $mp2
+set +e
+mount | grep -E "$mp1|$mp2"
+
+set `df -ik $mp2 | tail -1 | awk '{print $4,$7}'`
+export KBLOCKS=$(($1 / 4))
+export INODES=$(($2 / 4))
+
+export CTRLDIR=$mp2/stressX.control
+export INCARNATIONS=10
+export LOAD=80
+export RUNDIR=$mp2/stressX
+export runRUNTIME=5m
+export rwLOAD=80
+export symlinkLOAD=80
+
+export TESTPROGS="
+testcases/lockf2/lockf2
+testcases/symlink/symlink
+testcases/openat/openat
+testcases/rw/rw
+testcases/fts/fts
+testcases/link/link
+testcases/lockf/lockf
+testcases/creat/creat
+testcases/mkdir/mkdir
+testcases/rename/rename
+testcases/mkfifo/mkfifo
+testcases/dirnprename/dirnprename
+testcases/dirrename/dirrename
+testcases/swap/swap
+"
+
+set +e
+chmod 777 $mp2
+su $testuser -c \
+ '(cd ..; ./testcases/run/run $TESTPROGS)'
+
+while mount | grep -Eq "on $mp2 .*unionfs"; do
+ umount $mp2 && break
+ sleep 5
+done
+umount $mp2
+n=`find $mp1/stressX | wc -l`
+[ $n -eq 1 ] && s=0 || { find $mp1/stressX -ls | head -12; s=1; }
+umount $mp1
+mdconfig -d -u $md2
+mdconfig -d -u $md1
+exit $s
diff --git a/tools/test/stress2/misc/unionfs7.sh b/tools/test/stress2/misc/unionfs7.sh
new file mode 100755
index 000000000000..1684a960d142
--- /dev/null
+++ b/tools/test/stress2/misc/unionfs7.sh
@@ -0,0 +1,110 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2021 Peter Holm
+#
+# 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.
+#
+
+# unionfs(8) test
+
+# "unionfs_get_node_status: 0xfffffe018f356770 is not exclusive locked but
+# should be" seen.
+# https://people.freebsd.org/~pho/stress/log/log0202.txt
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+md1=$mdstart
+md2=$((md1 + 1))
+mp1=/mnt$md1
+mp2=/mnt$md2
+mkdir -p $mp1 $mp2
+set -e
+for i in $mp1 $mp2; do
+ mount | grep -q "on $i " && umount -f $i
+done
+for i in $md1 $md2; do
+ mdconfig -l | grep -q md$i && mdconfig -d -u $i
+done
+
+mdconfig -a -t swap -s 4g -u $md1
+mdconfig -a -t swap -s 4g -u $md2
+newfs $newfs_flags -n md$md1 > /dev/null
+newfs $newfs_flags -n md$md2 > /dev/null
+mount /dev/md$md1 $mp1
+mount /dev/md$md2 $mp2
+
+mount -t unionfs -o noatime $mp1 $mp2
+set +e
+mount | grep -E "$mp1|$mp2"
+
+set `df -ik $mp2 | tail -1 | awk '{print $4,$7}'`
+export KBLOCKS=$(($1 / 4))
+export INODES=$(($2 / 4))
+
+export CTRLDIR=$mp2/stressX.control
+export INCARNATIONS=10
+export LOAD=80
+export RUNDIR=$mp2/stressX
+export runRUNTIME=5m
+export rwLOAD=80
+export symlinkLOAD=80
+
+export TESTPROGS="
+testcases/lockf2/lockf2
+testcases/symlink/symlink
+testcases/openat/openat
+testcases/rw/rw
+testcases/fts/fts
+testcases/link/link
+testcases/lockf/lockf
+testcases/creat/creat
+testcases/mkdir/mkdir
+testcases/rename/rename
+testcases/mkfifo/mkfifo
+testcases/dirnprename/dirnprename
+testcases/dirrename/dirrename
+testcases/swap/swap
+"
+
+cp -r ../../stress2 $mp2
+export TESTPROGS=`echo $TESTPROGS | sed 's/\n/ /g'`
+
+set +e
+chmod 777 $mp2
+su $testuser -c \
+ "(cd $mp2/stress2; ./testcases/run/run $TESTPROGS)"
+
+while mount | grep -Eq "on $mp2 .*unionfs"; do
+ umount $mp2 && break
+ sleep 5
+done
+umount $mp2
+n=`find $mp1/stressX | wc -l`
+[ $n -eq 1 ] && s=0 || { find $mp1/stressX -ls | head -12; s=1; }
+umount $mp1
+mdconfig -d -u $md2
+mdconfig -d -u $md1
+exit $s
diff --git a/tools/test/stress2/misc/unionfs8.sh b/tools/test/stress2/misc/unionfs8.sh
new file mode 100755
index 000000000000..9ddf5a990b82
--- /dev/null
+++ b/tools/test/stress2/misc/unionfs8.sh
@@ -0,0 +1,124 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2021 Peter Holm
+#
+# 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.
+#
+
+# unionfs(8) test with a cd9660 file system
+
+# "panic: unionfs_noderem: vnode 0xfffffe014f9259c8 locked recursively" seen
+# https://people.freebsd.org/~pho/stress/log/log0233.txt
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+[ -z "`type mkisofs 2>/dev/null`" ] &&
+ { echo "cdrtools not installed"; exit 0; }
+. ../default.cfg
+
+I=`dirname $diskimage`/unionfs8.iso
+md1=$mdstart
+md2=$((md1 + 1))
+mp1=/mnt$md1
+mp2=/mnt$md2
+mkdir -p $mp1 $mp2
+set -e
+for i in $mp1 $mp2; do
+ mount | grep -q "on $i " && umount -f $i
+done
+for i in $md1 $md2; do
+ mdconfig -l | grep -q md$i && mdconfig -d -u $i
+done
+
+mdconfig -a -t swap -s 5g -u $md1
+mdconfig -a -t swap -s 5g -u $md2
+newfs $newfs_flags -n md$md1 > /dev/null
+newfs $newfs_flags -n md$md2 > /dev/null
+mount /dev/md$md1 $mp1
+cp -r ../../stress2 $mp1
+mkisofs -o $I -r $mp1 > /dev/null 2>&1
+umount $mp1
+mdconfig -d -u $md1
+mdconfig -a -t vnode -f $I -u $md1
+mount -t cd9660 /dev/md$mdstart $mp1
+mount /dev/md$md2 $mp2
+chmod 777 $mp2
+
+mount -t unionfs -o below $mp1 $mp2
+set +e
+mount | grep -E "$mp1|$mp2"
+
+set `df -ik $mp2 | tail -1 | awk '{print $4,$7}'`
+export KBLOCKS=$(($1 / 6))
+export INODES=$(($2 / 6))
+
+export CTRLDIR=$mp2/stressX.control
+export INCARNATIONS=10
+export LOAD=80
+export RUNDIR=$mp2/stressX
+export runRUNTIME=5m
+export rwLOAD=80
+export symlinkLOAD=80
+
+export TESTPROGS="
+testcases/lockf2/lockf2
+testcases/symlink/symlink
+testcases/openat/openat
+testcases/rw/rw
+testcases/fts/fts
+testcases/link/link
+testcases/lockf/lockf
+testcases/creat/creat
+testcases/mkdir/mkdir
+testcases/rename/rename
+testcases/mkfifo/mkfifo
+testcases/dirnprename/dirnprename
+testcases/dirrename/dirrename
+testcases/swap/swap
+"
+
+export TESTPROGS=`echo $TESTPROGS | sed 's/\n/ /g'`
+
+set +e
+su $testuser -c \
+ "(cd $mp2/stress2; ./testcases/run/run $TESTPROGS)"
+
+n=`find $mp2/stressX 2>/dev/null | wc -l`
+[ $n -eq 1 ] && s=0 || { find $mp2/stressX -ls 2>/dev/null | head -12; s=1; }
+
+while mount | grep "on $mp2" | grep -q unionfs; do
+ umount $mp2 && break
+done
+for i in `jot 5`; do
+ umount $mp2 && break
+ sleep .5
+done
+for i in `jot 5`; do
+ umount $mp1 && break
+ sleep .5
+done
+mdconfig -d -u $md2
+mdconfig -d -u $md1
+rm -f $I
+exit $s
diff --git a/tools/test/stress2/misc/unionfs9.sh b/tools/test/stress2/misc/unionfs9.sh
new file mode 100755
index 000000000000..700eed13aeb5
--- /dev/null
+++ b/tools/test/stress2/misc/unionfs9.sh
@@ -0,0 +1,100 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# Parallel mount and umount test
+
+# umount(1) stuck in "mount drain" seen:
+# https://people.freebsd.org/~pho/stress/log/log0205.txt
+
+# https://people.freebsd.org/~pho/stress/log/log0226.txt
+# https://people.freebsd.org/~pho/stress/log/log0404.txt
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
+
+mounts=3 # Number of parallel scripts
+CONT=/tmp/unionfs9.continue
+
+set -e
+mdconfig -a -t swap -s 256m -u $mdstart
+newfs $newfs_flags -n md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
+
+for i in `jot $mounts $((mdstart + 2))`; do
+ mdconfig -a -t swap -s 512m -u $((mdstart + i))
+ newfs $newfs_flags -n md$((mdstart + i)) > /dev/null
+ mkdir -p ${mntpoint}$i
+ mount /dev/md$((mdstart + i)) ${mntpoint}$i
+done
+set +e
+echo Pre:
+mount | grep mnt
+
+(cd $mntpoint; jot 500 | xargs touch)
+(cd ../testcases/swap; ./swap -t 5m -i 20 > /dev/null) &
+
+# Start the parallel tests
+touch $CONT
+for i in `jot $mounts $((mdstart + 2))`; do
+ while [ -f $CONT ]; do
+ find ${mntpoint}$i -type f -maxdepth 2 -ls > \
+ /dev/null 2>&1
+ done &
+ # The test: Parallel mount and unmounts
+ start=`date +%s`
+ (
+ while [ $((`date +%s` - start)) -lt 300 ]; do
+ mount_unionfs $mntpoint ${mntpoint}$i > \
+ /dev/null 2>&1
+ opt=$([ `jot -r 1 0 1` -eq 0 ] && echo "-f")
+ while mount | grep -q ${mntpoint}$i; do
+ umount $opt ${mntpoint}$i > \
+ /dev/null 2>&1
+ done
+ done
+ rm -f $CONT
+ ) &
+done
+while [ -f $CONT ] ; do sleep 1; done
+while pgrep -q swap; do pkill swap; done
+wait
+echo Post:
+mount | grep mnt
+
+for i in `jot $mounts $((mdstart + 2))`; do
+ umount ${mntpoint}$i > /dev/null 2>&1
+ mdconfig -d -u $((mdstart + i))
+ rmdir ${mntpoint}$i
+done
+while mount | grep $mntpoint | grep -q /dev/md; do
+ umount $mntpoint || sleep 1
+ [ $((n += 1)) -gt 300 ] && { echo FAIL; exit 1; }
+done
+mdconfig -d -u $mdstart
+exit 0
diff --git a/tools/test/stress2/misc/unix_socket.sh b/tools/test/stress2/misc/unix_socket.sh
index a5486dd7d4f0..c4283f30de0d 100755
--- a/tools/test/stress2/misc/unix_socket.sh
+++ b/tools/test/stress2/misc/unix_socket.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/unix_socket_detach.sh b/tools/test/stress2/misc/unix_socket_detach.sh
index 66670daf5639..6d201273ac05 100755
--- a/tools/test/stress2/misc/unix_socket_detach.sh
+++ b/tools/test/stress2/misc/unix_socket_detach.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2016 Mark Johnston <markj@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/vm_fault.sh b/tools/test/stress2/misc/vm_fault.sh
new file mode 100755
index 000000000000..540aa609a301
--- /dev/null
+++ b/tools/test/stress2/misc/vm_fault.sh
@@ -0,0 +1,113 @@
+#!/bin/sh
+
+# Regression test for D33416 vm_fault: Fix vm_fault_populate()'s handling of VM_FAULT_WIRE
+# Bug report: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=260347
+
+# Test scenario by: martin
+
+# Fixed by 88642d978a99
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+[ -d /usr/src/sys ] || exit 0
+builddir=`sysctl kern.version | grep @ | sed 's/.*://'`
+[ -d "$builddir" ] && export KERNBUILDDIR=$builddir || exit 0
+export SYSDIR=`echo $builddir | sed 's#/sys.*#/sys#'`
+
+. ../default.cfg
+
+odir=`pwd`
+dir=$RUNDIR/skeleton
+mkdir -p $dir
+
+cd $dir
+cat > skeleton.c <<EOF
+/*
+ * KLD Skeleton
+ * Inspired by Andrew Reiter's Daemonnews article
+ */
+
+#include <sys/param.h>
+#include <sys/module.h>
+#include <sys/systm.h> /* uprintf */
+#include <sys/errno.h>
+#include <sys/param.h> /* defines used in kernel.h */
+#include <sys/kernel.h> /* types used in module initialization */
+
+#define BUFFER_SIZE 10*1000*1024 // 10 MB
+static char gBuffer[BUFFER_SIZE];
+
+static int demo_init (void)
+{
+ for (int i=0; i<BUFFER_SIZE; i++)
+ {
+ gBuffer[i] = 'A';
+ }
+ return 0;
+}
+
+static void demo_exit (void)
+{
+ for (int i=0; i<BUFFER_SIZE; i++)
+ {
+ gBuffer[i] += 1;
+ }
+}
+
+/*
+ * Load handler that deals with the loading and unloading of a KLD.
+ */
+
+static int
+skel_loader(struct module *m, int what, void *arg)
+{
+ int err = 0;
+
+ switch (what) {
+ case MOD_LOAD: /* kldload */
+ uprintf("Skeleton KLD loaded.\n");
+ demo_init();
+ break;
+ case MOD_UNLOAD:
+ uprintf("Skeleton KLD unloaded.\n");
+ demo_exit();
+ break;
+ default:
+ err = EOPNOTSUPP;
+ break;
+ }
+ return(err);
+}
+
+/* Declare this module to the rest of the kernel */
+
+static moduledata_t skel_mod = {
+ "skel",
+ skel_loader,
+ NULL
+};
+
+DECLARE_MODULE(skeleton, skel_mod, SI_SUB_KLD, SI_ORDER_ANY);
+EOF
+
+cat > Makefile <<EOF
+KMOD= skeleton
+SRCS= skeleton.c
+
+.include <bsd.kmod.mk>
+EOF
+
+make
+old=`sysctl -n vm.stats.vm.v_wire_count`
+kldload $dir/skeleton.ko
+kldunload $dir/skeleton.ko
+leak=$((`sysctl -n vm.stats.vm.v_wire_count` - old))
+if [ $leak -gt 25 ]; then
+ echo "Test leaked $leak pages in the skeleton.ko module"
+ s=1
+else
+ s=0
+fi
+
+cd $odir
+rm -rf $dir
+exit $s
diff --git a/tools/test/stress2/misc/vm_map.sh b/tools/test/stress2/misc/vm_map.sh
index c28beb464022..e209d8aacb2c 100755
--- a/tools/test/stress2/misc/vm_map.sh
+++ b/tools/test/stress2/misc/vm_map.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
@@ -44,7 +44,7 @@ rm -f vm_map.c
pages=$((`sysctl -n hw.usermem` / `sysctl -n hw.pagesize`))
[ `sysctl -n vm.swap_total` -eq 0 ] &&
pages=$((pages / 10 * 8))
-/tmp/vm_map $pages
+proccontrol -m aslr -s disable /tmp/vm_map $pages
rm -f /tmp/vm_map
exit $s
diff --git a/tools/test/stress2/misc/vunref.sh b/tools/test/stress2/misc/vunref.sh
index 8b245aa20a13..f844a0dd3625 100755
--- a/tools/test/stress2/misc/vunref.sh
+++ b/tools/test/stress2/misc/vunref.sh
@@ -55,8 +55,7 @@ if [ $# -eq 0 ]; then
dd if=/dev/zero of=$D.$m bs=1m count=10 status=none
mdconfig -a -t vnode -f $D.$m -u $m
- bsdlabel -w md$m auto
- newfs md${m}$part > /dev/null 2>&1
+ newfs md${m} > /dev/null 2>&1
done
# start the parallel tests
@@ -94,7 +93,7 @@ else
else
# The test: Parallel mount and unmounts
m=$1
- mount $opt /dev/md${m}$part ${mntpoint}$m
+ mount $opt /dev/md${m} ${mntpoint}$m
while [ -f $RUNDIR/active.$m ] ; do
sleep 0.1
n=0
@@ -108,7 +107,7 @@ else
fi
sleep 0.1
done
- mount $opt /dev/md${m}$part ${mntpoint}$m
+ mount $opt /dev/md${m} ${mntpoint}$m
done
mount | grep "$mntpoint" | grep -q md$m && umount ${mntpoint}$m
fi
diff --git a/tools/test/stress2/misc/vunref2.sh b/tools/test/stress2/misc/vunref2.sh
index 974af4bf8d80..9a8876666dda 100755
--- a/tools/test/stress2/misc/vunref2.sh
+++ b/tools/test/stress2/misc/vunref2.sh
@@ -34,13 +34,12 @@
. ../default.cfg
-mount | grep "$mntpoint" | grep -q md${mdstart}$part && umount -f $mntpoint
+mount | grep "$mntpoint" | grep -q md$mdstart && umount -f $mntpoint
mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart
mdconfig -a -t swap -s 12m -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
+newfs $newfs_flags md$mdstart > /dev/null
+mount /dev/md$mdstart $mntpoint
chmod 777 $mntpoint
export runRUNTIME=5m
@@ -65,7 +64,7 @@ for i in `jot 10`; do
exit 1
fi
done
- mount /dev/md${mdstart}$part $mntpoint
+ mount /dev/md$mdstart $mntpoint
done
umount $mntpoint
diff --git a/tools/test/stress2/misc/md4.sh b/tools/test/stress2/misc/write2.sh
index 484e531e3f6c..f1f9deeef374 100755
--- a/tools/test/stress2/misc/md4.sh
+++ b/tools/test/stress2/misc/write2.sh
@@ -1,8 +1,9 @@
#!/bin/sh
#
-# Copyright (c) 2013 Peter Holm <pho@FreeBSD.org>
-# All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Peter Holm <pho@FreeBSD.org>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
@@ -26,18 +27,17 @@
# SUCH DAMAGE.
#
-# Demonstrate data corruption on the swap-backed md.
-# Test scenario by Nigel Williams <njwilliams swin edu au>.
-# Fixed in r250966.
+# A write(2) syscall fuzzer
+
+# "panic: Assertion tib != NULL failed at ../../../kern/tty_inq.c:467" seen:
+# https://people.freebsd.org/~pho/stress/log/log0272.txt
+
+# Fixed by: d76960962093
+
+num=`awk '/SYS_write[^a-z]/ {print $NF}' < /usr/include/sys/syscall.h`
+[ -z "$num" ] && exit 0
-[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+kldstat | grep -q pty.ko || kldload pty.ko
+./syscall4.sh $num
-status=0
-MD_DEV=`mdconfig -an -t swap -s 1m -x 63 -y 16`
-fdisk -I md$MD_DEV > /dev/null 2>&1
-bsdlabel -w -B md${MD_DEV}s1 || exit 1
-dd if=/dev/md$MD_DEV of=/dev/null bs=64k status=none
-bsdlabel md${MD_DEV}s1 > /dev/null ||
- { echo FAIL; status=1; }
-mdconfig -d -u $MD_DEV
-exit $status
+exit 0
diff --git a/tools/test/stress2/misc/zfs10.sh b/tools/test/stress2/misc/zfs10.sh
index 3f3fdd2622d7..9d8ae717dffa 100755
--- a/tools/test/stress2/misc/zfs10.sh
+++ b/tools/test/stress2/misc/zfs10.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/zfs11.sh b/tools/test/stress2/misc/zfs11.sh
index 97e71a5a13f7..84300aed0c0c 100755
--- a/tools/test/stress2/misc/zfs11.sh
+++ b/tools/test/stress2/misc/zfs11.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/misc/zfs12.sh b/tools/test/stress2/misc/zfs12.sh
index cfabca2b9f6f..e8f82efc9b9b 100755
--- a/tools/test/stress2/misc/zfs12.sh
+++ b/tools/test/stress2/misc/zfs12.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm
#
diff --git a/tools/test/stress2/misc/zfs13.sh b/tools/test/stress2/misc/zfs13.sh
index 2ccd4388270d..33630e0f1d75 100755
--- a/tools/test/stress2/misc/zfs13.sh
+++ b/tools/test/stress2/misc/zfs13.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2021 Peter Holm
#
diff --git a/tools/test/stress2/misc/zfs14.sh b/tools/test/stress2/misc/zfs14.sh
new file mode 100755
index 000000000000..70b97e950dff
--- /dev/null
+++ b/tools/test/stress2/misc/zfs14.sh
@@ -0,0 +1,90 @@
+#!/bin/sh
+
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
+#
+# 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.
+#
+
+# "userret: returning with the following locks held:" seen:
+# https://people.freebsd.org/~pho/stress/log/log0188.txt
+
+# Test scenario suggestion by: markj@
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+kldstat -v | grep -q zfs.ko || { kldload zfs.ko; loaded=1; } ||
+ exit 0
+
+. ../default.cfg
+
+here=`pwd`
+mp1=/stress2_tank/test
+u1=$mdstart
+u2=$((u1 + 1))
+
+set -e
+mdconfig -l | grep -q md$u1 && mdconfig -d -u $u1
+mdconfig -l | grep -q md$u2 && mdconfig -d -u $u2
+
+mdconfig -s 2g -u $u1
+mdconfig -s 2g -u $u2
+
+zpool list | egrep -q "^stress2_tank" && zpool destroy stress2_tank
+[ -d /stress2_tank ] && rm -rf /stress2_tank
+zpool create stress2_tank md$u1 md$u2
+zfs create stress2_tank/test
+set +e
+
+export RUNDIR=/stress2_tank/test/stressX
+export runRUNTIME=5m
+export LOAD=70
+export TESTPROGS=`cd ..; find testcases/ -perm -1 -type f | \
+ egrep -Ev "/run/|/tcp/|/udp/"`
+
+(cd ..; ./testcases/run/run $TESTPROGS > /dev/null 2>&1) &
+
+sleep 5
+zfs snapshot stress2_tank/test@1
+
+start=`date +%s`
+while [ $((`date +%s` - start)) -lt 300 ]; do
+ if [ `jot -r 1 1 2` -eq 1 ]; then
+ zfs umount -f stress2_tank/test &&
+ zfs mount stress2_tank/test
+ else
+ zfs rollback stress2_tank/test@1
+ fi
+ sleep 5
+ zfs list | grep -q /stress2_tank/test || break
+done
+wait
+
+zfs umount stress2_tank/test
+zfs destroy -r stress2_tank
+zpool destroy stress2_tank
+
+mdconfig -d -u $u1
+mdconfig -d -u $u2
+[ -n "$loaded" ] && kldunload zfs.ko
+exit 0
diff --git a/tools/test/stress2/misc/zfs8.sh b/tools/test/stress2/misc/zfs8.sh
index 7d1d9887ce29..5eb53cd78ead 100755
--- a/tools/test/stress2/misc/zfs8.sh
+++ b/tools/test/stress2/misc/zfs8.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2018 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/zfs9.sh b/tools/test/stress2/misc/zfs9.sh
index 274a42f18bdb..2b051c8cd3c3 100755
--- a/tools/test/stress2/misc/zfs9.sh
+++ b/tools/test/stress2/misc/zfs9.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/zz-combo01.sh b/tools/test/stress2/misc/zz-combo01.sh
index 8899ade3441f..19c102288c79 100755
--- a/tools/test/stress2/misc/zz-combo01.sh
+++ b/tools/test/stress2/misc/zz-combo01.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/zz-combo02.sh b/tools/test/stress2/misc/zz-combo02.sh
index 2d866858bb8f..d65caf2f3c22 100755
--- a/tools/test/stress2/misc/zz-combo02.sh
+++ b/tools/test/stress2/misc/zz-combo02.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/zz-combo03.sh b/tools/test/stress2/misc/zz-combo03.sh
index 7afaec11e861..1bc3424f9de3 100755
--- a/tools/test/stress2/misc/zz-combo03.sh
+++ b/tools/test/stress2/misc/zz-combo03.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/misc/zz-combo04.sh b/tools/test/stress2/misc/zz-combo04.sh
index 69003ec73371..1cbe19b6d518 100755
--- a/tools/test/stress2/misc/zz-combo04.sh
+++ b/tools/test/stress2/misc/zz-combo04.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm
#
diff --git a/tools/test/stress2/misc/zzbuildworld.sh b/tools/test/stress2/misc/zzbuildworld.sh
index ae0956239648..2104eb156c86 100755
--- a/tools/test/stress2/misc/zzbuildworld.sh
+++ b/tools/test/stress2/misc/zzbuildworld.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019 Dell EMC Isilon
#
diff --git a/tools/test/stress2/testcases/socket/socket.c b/tools/test/stress2/testcases/socket/socket.c
index 965ce6b852c3..ec9b1e6cd28f 100644
--- a/tools/test/stress2/testcases/socket/socket.c
+++ b/tools/test/stress2/testcases/socket/socket.c
@@ -47,15 +47,13 @@ static int sv[2];
static void
reader(void) {
- int n, t, *buf;
+ int n, *buf;
- t = 0;
if ((buf = malloc(bufsize)) == NULL)
err(1, "malloc(%d), %s:%d", bufsize, __FILE__, __LINE__);
while (done_testing == 0) {
if ((n = read(sv[0], buf, bufsize)) < 0)
err(1, "read(), %s:%d", __FILE__, __LINE__);
- t += n;
if (n == 0) break;
}
close(sv[0]);
diff --git a/tools/test/stress2/testcases/swap/swap.c b/tools/test/stress2/testcases/swap/swap.c
index 75bfe7856aed..c54605a4b0fe 100644
--- a/tools/test/stress2/testcases/swap/swap.c
+++ b/tools/test/stress2/testcases/swap/swap.c
@@ -155,10 +155,8 @@ test(void)
c[i] = 0;
i += page;
}
-#if 0
- if (op->hog != 1)
- usleep(1000);
-#endif
+ if (arc4random() % 100 < 10)
+ usleep(10000);
}
free((void *)c);
diff --git a/tools/test/stress2/testcases/tcp/tcp.c b/tools/test/stress2/testcases/tcp/tcp.c
index 5d8d7197b5be..468acb169f4a 100644
--- a/tools/test/stress2/testcases/tcp/tcp.c
+++ b/tools/test/stress2/testcases/tcp/tcp.c
@@ -52,7 +52,7 @@ reader(void) {
struct sockaddr_in inetaddr, inetpeer;
socklen_t len;
int on;
- int n, t, *buf;
+ int n, *buf;
int tcpsock, msgsock;
alarm(op->run_time + 30);
@@ -85,13 +85,11 @@ reader(void) {
(struct sockaddr *)&inetpeer, &len)) < 0)
err(1, "accept(), %s:%d", __FILE__, __LINE__);
- t = 0;
if ((buf = malloc(bufsize)) == NULL)
err(1, "malloc(%d), %s:%d", bufsize, __FILE__, __LINE__);
while (done_testing == 0) {
if ((n = read(msgsock, buf, bufsize)) < 0)
err(1, "read(), %s:%d", __FILE__, __LINE__);
- t += n;
if (n == 0) break;
}
close(msgsock);
diff --git a/tools/test/stress2/tools/bench.c b/tools/test/stress2/tools/bench.c
index e986fb6db791..71918b7b0684 100644
--- a/tools/test/stress2/tools/bench.c
+++ b/tools/test/stress2/tools/bench.c
@@ -1,5 +1,5 @@
/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ * SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (c) 2018 Dell EMC Isilon
*
@@ -305,7 +305,7 @@ main(int argc, char *argv[])
pid_t *pids;
struct timeval t1, t2, diff;
size_t len;
- time_t start;
+ time_t start __unused;
int ch, i, status, timing;
timing = 0;
@@ -334,8 +334,8 @@ main(int argc, char *argv[])
start = time(NULL);
spawn(functions[i], i);
#if defined(DEBUG)
- fprintf(stderr, "%d: %d elapsed\n", i ,
- time(NULL) - start);
+ fprintf(stderr, "%d: %ld elapsed\n", i ,
+ (long)(time(NULL) - start));
#endif
_exit(0);
}
diff --git a/tools/test/stress2/tools/fail.sh b/tools/test/stress2/tools/fail.sh
index 6d83d8fe0d22..a7b9c769892a 100755
--- a/tools/test/stress2/tools/fail.sh
+++ b/tools/test/stress2/tools/fail.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/tools/fast.sh b/tools/test/stress2/tools/fast.sh
index ce33eaa4c103..83809c8baf55 100755
--- a/tools/test/stress2/tools/fast.sh
+++ b/tools/test/stress2/tools/fast.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/tools/flip.c b/tools/test/stress2/tools/flip.c
index 816162947c45..cdc2742de59f 100644
--- a/tools/test/stress2/tools/flip.c
+++ b/tools/test/stress2/tools/flip.c
@@ -1,5 +1,5 @@
/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ * SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
* All rights reserved.
@@ -54,10 +54,10 @@ flip(void *ap, size_t len)
{
unsigned char *cp;
int byte;
- unsigned char bit, buf, mask, old;
+ unsigned char bit, buf, mask, old __unused;
cp = (unsigned char *)ap;
- byte = random_long(0, len);
+ byte = random_long(0, len - 1);
bit = random_long(0,7);
mask = ~(1 << bit);
buf = cp[byte];
@@ -70,20 +70,34 @@ flip(void *ap, size_t len)
#endif
}
+static void
+trash(char *c)
+{
+ if (arc4random() % 2 == 1)
+ *c = 0;
+ else
+ arc4random_buf(c, sizeof(c));
+}
+
int
main(int argc, char *argv[])
{
struct stat st;
off_t pos;
+ size_t size;
int fd, i, times;
char c;
times = 1;
- while ((c = getopt(argc, argv, "n:")) != -1) {
+ size = 0;
+ while ((c = getopt(argc, argv, "n:s:")) != -1) {
switch (c) {
case 'n':
times = atoi(optarg);
break;
+ case 's':
+ size = atol(optarg);
+ break;
case '?':
default:
fprintf(stderr,
@@ -103,18 +117,28 @@ main(int argc, char *argv[])
if ((fd = open(argv[0], O_RDWR)) == -1)
err(1, "open(%s)", argv[0]);
- if (fstat(fd, &st) == -1)
- err(1, "stat %s", argv[0]);
+ if (size == 0) {
+ if (fstat(fd, &st) == -1)
+ err(1, "stat %s", argv[0]);
+ if ((st.st_mode & S_IFREG) == 0)
+ errx(1, "%s must be a regular file\n", argv[0]);
+ size = st.st_size;
+ }
for (i = 0; i < times; i++) {
- pos = arc4random() % st.st_size;
+ pos = arc4random() % size;
if (lseek(fd, pos, SEEK_SET) == -1)
err(1, "lseek()");
- read(fd, &c, 1);
- flip(&c, 1);
+ if (read(fd, &c, 1) != 1)
+ err(1, "read()");
+ if (arc4random() % 100 < 98)
+ flip(&c, 1);
+ else
+ trash(&c);
if (lseek(fd, pos, SEEK_SET) == -1)
err(1, "lseek()");
- write(fd, &c, 1);
+ if (write(fd, &c, 1) != 1)
+ err(1, "write()");
}
return (0);
diff --git a/tools/test/stress2/tools/lsholes.c b/tools/test/stress2/tools/lsholes.c
index a583c1315093..736ae92a41c8 100644
--- a/tools/test/stress2/tools/lsholes.c
+++ b/tools/test/stress2/tools/lsholes.c
@@ -1,5 +1,5 @@
/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ * SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (c) 2021 Peter Holm <pho@FreeBSD.org>
*
@@ -40,7 +40,8 @@ main(int argc, char *argv[])
{
struct stat st;
off_t data, hole, pos;
- long mx;
+ long mn;
+ intmax_t siz;
int fd, n;
char *name;
@@ -54,33 +55,47 @@ main(int argc, char *argv[])
err(1, "open(%s)", name);
if (fstat(fd, &st))
err(1, "fstat()");
- if ((mx = fpathconf(fd, _PC_MIN_HOLE_SIZE)) == -1)
+ if ((mn = fpathconf(fd, _PC_MIN_HOLE_SIZE)) == -1)
err(1, "fpathconf()");
- fprintf(stderr, "file \"%s\" size = %jd, _PC_MIN_HOLE_SIZE = %ld\n",
- name, (intmax_t)st.st_size, mx);
+ fprintf(stderr, "Min hole size is %ld, file size is %jd.\n",
+ mn, (intmax_t)st.st_size);
n = 1;
pos = 0;
+
while (pos < st.st_size) {
- if ((hole = lseek(fd, pos, SEEK_HOLE)) == -1)
+ hole = lseek(fd, pos, SEEK_HOLE);
+ if (hole == -1 && errno != ENXIO)
err(1, "lseek(SEEK_HOLE)");
- if ((data = lseek(fd, hole, SEEK_DATA)) == -1) {
- if (errno == ENXIO) {
- if (hole == st.st_size)
- break;
- fprintf(stderr,
- "No data after hole @ %jd\n",
- (intmax_t)hole);
- break;
- }
- err(1, "lseek(SEEK_DATA)");
+ data = lseek(fd, pos, SEEK_DATA);
+ if (data == -1 && errno != ENXIO)
+ err(1, "lseek(SEEK_data)");
+
+ if (hole >= 0 && data >= 0 && hole > data) {
+ siz = hole - data;
+ printf("data #%d @ %ld, size=%jd)\n",
+ n, (intmax_t)data, siz);
+ n++;
+ pos += siz;
+ }
+ if (hole >= 0 && data >= 0 && hole < data) {
+ siz = data - hole;
+ printf("hole #%d @ %ld, size=%jd\n",
+ n, (intmax_t)hole, siz);
+ n++;
+ pos += siz;
+ }
+ if (hole >= 0 && data == -1) {
+ siz = st.st_size - hole;
+ printf("hole #%d @ %ld, size=%jd\n",
+ n, (intmax_t)hole, siz);
+ n++;
+ pos += siz;
}
- pos = data;
- printf("hole #%d @ %jd (0x%jx), size=%jd (0x%jx)\n",
- n, (intmax_t)hole, (intmax_t)hole, (intmax_t)(data - hole),
- (intmax_t)(data - hole));
- n++;
}
+ if (hole == st.st_size) {
+ /* EOF */
+ printf("hole #%d @ %ld, size=%jd\n",
+ n, (intmax_t)hole, 0L);
+ }
close(fd);
- if (hole != st.st_size)
- errx(1, "No implicit hole at EOF");
}
diff --git a/tools/test/stress2/tools/ministat.sh b/tools/test/stress2/tools/ministat.sh
index 552828e97e59..d219122a0c42 100755
--- a/tools/test/stress2/tools/ministat.sh
+++ b/tools/test/stress2/tools/ministat.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/tools/ps.sh b/tools/test/stress2/tools/ps.sh
index 238192db1b0e..c8ed7d66ecac 100755
--- a/tools/test/stress2/tools/ps.sh
+++ b/tools/test/stress2/tools/ps.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
#
diff --git a/tools/test/stress2/tools/serial.c b/tools/test/stress2/tools/serial.c
new file mode 100644
index 000000000000..8dcf9c5da3a8
--- /dev/null
+++ b/tools/test/stress2/tools/serial.c
@@ -0,0 +1,44 @@
+/* Fill a file with a sequence of byte values from 0 - 0xff */
+
+#include <sys/param.h>
+#include <sys/mman.h>
+#include <err.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(int argc, char *argv[])
+{
+ size_t i, size;
+ int fd;
+ char *cp, *file;
+
+ if (argc != 3) {
+ fprintf(stderr, "Usage: %s <file> <file length in bytes>\n", argv[0]);
+ exit(1);
+ }
+ file = argv[1];
+ size = atol(argv[2]);
+
+ if ((fd = open(file, O_RDWR | O_CREAT | O_TRUNC, 0600)) < 0)
+ err(1, "%s", file);
+
+ if (lseek(fd, size - 1, SEEK_SET) == -1)
+ err(1, "lseek error");
+
+ /* write a dummy byte at the last location */
+ if (write(fd, "\0", 1) != 1)
+ err(1, "write error");
+
+ if ((cp = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0)) == MAP_FAILED)
+ err(1, "mmap()");
+
+ for (i = 0; i < size; i++)
+ cp[i] = i & 0xff;
+
+ if (munmap(cp, size) == -1)
+ err(1, "munmap");
+ close(fd);
+}
diff --git a/tools/test/stress2/tools/swap.c b/tools/test/stress2/tools/swap.c
index ce272b794ea7..9e07a8c46d1f 100644
--- a/tools/test/stress2/tools/swap.c
+++ b/tools/test/stress2/tools/swap.c
@@ -1,5 +1,5 @@
/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ * SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
* All rights reserved.
diff --git a/tools/test/stress2/tools/vmstat.sh b/tools/test/stress2/tools/vmstat.sh
index 89ff1e331fc5..f7006669a7c0 100755
--- a/tools/test/stress2/tools/vmstat.sh
+++ b/tools/test/stress2/tools/vmstat.sh
@@ -45,34 +45,28 @@ OIFS=$IFS
while true; do
# Type InUse MemUse
[ -z "$optm" ] && vmstat -m | sed 1d |
- sed 's/\(.* \)\([0-9][0-9]*\) *\(.*\)K .*/\1:\2:\3/' |
- while IFS=: read -r p1 p2 p3; do
- name=`echo $p1 | sed 's/^ *//;s/ *$//'`
- memuse=$p3
+ while read l; do
+ name=`echo $l | sed -E 's/ [0-9]+ .*//; s/^ *//'`
+ memuse=`echo $l | sed -E "s#$name##" | \
+ awk '{print int(($2 + 1023) / 1024)}'`
[ "$memuse" -ne 0 ] && echo "vmstat -m $name,$memuse"
- done
+ done
# ITEM SIZE LIMIT USED
- [ -z "$optz" ] && vmstat -z |
- grep -vE '(rl_entry):' |
- sed "1,2d;/^$/d;s/: /, /" |
- sed -E 's/[^[:print:]\r\t]/ /g' |
+ [ -z "$optz" ] && vmstat -z | sed 1d |
while read l; do
- IFS=','
- set $l
- [ $# -lt 8 ] &&
- { echo "# args must be >= 8, but is $# in $l" 1>&2;
- continue; }
- size=$2
- used=$4
+ name=`echo $l | sed 's/:.*//'`
+ l=`echo $l | sed 's/.*://'`
+ size=`echo $l | awk -F ',' '{print $1}'`
+ used=`echo $l | awk -F ',' '{print $3}'`
[ -z "$used" -o -z "$size" ] &&
{ echo "used/size not set $l" 1>&2; continue; }
echo $used | egrep -q '^ *[0-9]{1,10}$' ||
{ echo "Bad used: $used. l=$l" 1>&2; continue; }
tot=$((((size * used) + 1023) / 1024))
[ $tot -ne 0 ] &&
- echo "vmstat -z $1,$tot"
- done
+ echo "vmstat -z $name,$tot"
+ done
r=`sysctl -n vm.stats.vm.v_wire_count`
[ -n "$r" ] &&
@@ -98,6 +92,7 @@ done | awk $debug -F, '
close(cmd);
printf "%s \"%s\" %'\''dK\r\n", t,
name, size;
+ fflush
n[name] = 0;
}
s[name] = size;
diff --git a/tools/test/stress2/tools/zapsb.c b/tools/test/stress2/tools/zapsb.c
new file mode 100644
index 000000000000..09e16e27c322
--- /dev/null
+++ b/tools/test/stress2/tools/zapsb.c
@@ -0,0 +1,75 @@
+/*
+ * Zero out a superblock check hash.
+ * By Kirk McKusick <mckusick@mckusick.com>
+ */
+
+#include <sys/param.h>
+#include <sys/disklabel.h>
+
+#include <ufs/ufs/dinode.h>
+#include <ufs/ffs/fs.h>
+
+#include <err.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <unistd.h>
+
+/*
+ * Possible superblock locations ordered from most to least likely.
+ */
+static int sblock_try[] = SBLOCKSEARCH;
+
+static void
+usage(void)
+{
+ (void)fprintf(stderr, "usage: zapsb special_device\n");
+ exit(1);
+}
+
+int
+main(int argc, char *argv[])
+{
+ char *fs, sblock[SBLOCKSIZE];
+ struct fs *sbp;
+ int i, fd;
+
+ if (argc != 2)
+ usage();
+
+ fs = *++argv;
+
+ /* get the superblock. */
+ if ((fd = open(fs, O_RDWR, 0)) < 0)
+ err(1, "%s", fs);
+ for (i = 0; sblock_try[i] != -1; i++) {
+ if (lseek(fd, (off_t)(sblock_try[i]), SEEK_SET) < 0)
+ err(1, "%s", fs);
+ if (read(fd, sblock, sizeof(sblock)) != sizeof(sblock))
+ errx(1, "%s: can't read superblock", fs);
+ sbp = (struct fs *)sblock;
+ if ((sbp->fs_magic == FS_UFS1_MAGIC ||
+ (sbp->fs_magic == FS_UFS2_MAGIC &&
+ sbp->fs_sblockloc == sblock_try[i])) &&
+ sbp->fs_bsize <= MAXBSIZE &&
+ sbp->fs_bsize >= (int)sizeof(struct fs))
+ break;
+ }
+ if (sblock_try[i] == -1) {
+ fprintf(stderr, "Cannot find file system superblock\n");
+ exit(2);
+ }
+ if ((sbp->fs_metackhash & CK_SUPERBLOCK) == 0) {
+ fprintf(stderr, "file system superblock has no check hash\n");
+ exit(3);
+ }
+ printf("zeroing superblock checksum at location %d\n", sblock_try[i]);
+ sbp->fs_ckhash = 0;
+ if (lseek(fd, (off_t)(sblock_try[i]), SEEK_SET) < 0)
+ err(1, "%s", fs);
+ if (write(fd, sblock, sizeof(sblock)) != sizeof(sblock))
+ errx(1, "%s: can't write superblock", fs);
+ (void)close(fd);
+ exit(0);
+}
diff --git a/tools/test/testfloat/README.txt b/tools/test/testfloat/README.txt
deleted file mode 100644
index fe99fd95d641..000000000000
--- a/tools/test/testfloat/README.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-
-Package Overview for TestFloat Release 2a
-
-John R. Hauser
-1998 December 16
-
-
-TestFloat is a program for testing that a floating-point implementation
-conforms to the IEC/IEEE Standard for Binary Floating-Point Arithmetic.
-TestFloat is distributed in the form of C source code. The TestFloat
-package actually provides two related programs:
-
--- The `testfloat' program tests a system's floating-point for conformance
- to the IEC/IEEE Standard. This program uses the SoftFloat software
- floating-point implementation as a basis for comparison.
-
--- The `testsoftfloat' program tests SoftFloat itself for conformance to
- the IEC/IEEE Standard. These tests are performed by comparing against a
- separate, slower software floating-point that is included in the TestFloat
- package.
-
-TestFloat depends on SoftFloat, but SoftFloat is not included in the
-TestFloat package. SoftFloat can be obtained through the Web page `http://
-HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/SoftFloat.html'.
-
-TestFloat is documented in three text files:
-
- testfloat.txt Documentation for using the TestFloat programs
- (both `testfloat' and `testsoftfloat').
- testfloat-source.txt Documentation for porting and compiling TestFloat.
- testfloat-history.txt History of major changes to TestFloat.
-
-The following file is also provided:
-
- systemBugs.txt Information about processor bugs found using
- TestFloat.
-
-Other files in the package comprise the source code for TestFloat.
-
-Please be aware that some work is involved in porting this software to other
-targets. It is not just a matter of getting `make' to complete without
-error messages. I would have written the code that way if I could, but
-there are fundamental differences between systems that I can't make go away.
-You should not attempt to compile the TestFloat sources without first
-reading `testfloat-source.txt'.
-
-At the time of this writing, the most up-to-date information about
-TestFloat and the latest release can be found at the Web page `http://
-HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
diff --git a/tools/test/testfloat/fail.c b/tools/test/testfloat/fail.c
deleted file mode 100644
index 30bbea6bd7d7..000000000000
--- a/tools/test/testfloat/fail.c
+++ /dev/null
@@ -1,46 +0,0 @@
-
-/*
-===============================================================================
-
-This C source file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-#include <stdlib.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include "milieu.h"
-#include "fail.h"
-
-char *fail_programName = "";
-
-void fail( const char *message, ... )
-{
- va_list varArgs;
-
- fprintf( stderr, "%s: ", fail_programName );
- va_start( varArgs, message );
- vfprintf( stderr, message, varArgs );
- va_end( varArgs );
- fputs( ".\n", stderr );
- exit( EXIT_FAILURE );
-
-}
-
diff --git a/tools/test/testfloat/fail.h b/tools/test/testfloat/fail.h
deleted file mode 100644
index 9c338da260aa..000000000000
--- a/tools/test/testfloat/fail.h
+++ /dev/null
@@ -1,29 +0,0 @@
-
-/*
-===============================================================================
-
-This C header file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-extern char *fail_programName;
-
-void fail( const char *, ... );
-
diff --git a/tools/test/testfloat/random.c b/tools/test/testfloat/random.c
deleted file mode 100644
index 21326c1ff23f..000000000000
--- a/tools/test/testfloat/random.c
+++ /dev/null
@@ -1,63 +0,0 @@
-
-/*
-===============================================================================
-
-This C source file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stdlib.h>
-#include "milieu.h"
-#include "random.h"
-
-uint8 randomUint8( void )
-{
-
- return (bits8) ( random()>>4 );
-
-}
-
-uint16 randomUint16( void )
-{
-
- return ( random() & 0x0000ffff );
-
-}
-
-uint32 randomUint32( void )
-{
-
- return ( ( (uint32) random()<<16) | ( (uint32) random() & 0x0000ffff) );
-}
-
-#ifdef BITS64
-
-uint64 randomUint64( void )
-{
-
- return ( ( (uint64) randomUint32() )<<32 ) | randomUint32();
-
-}
-
-#endif
-
diff --git a/tools/test/testfloat/random.h b/tools/test/testfloat/random.h
deleted file mode 100644
index 7375499ea965..000000000000
--- a/tools/test/testfloat/random.h
+++ /dev/null
@@ -1,32 +0,0 @@
-
-/*
-===============================================================================
-
-This C header file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-uint8 randomUint8( void );
-uint16 randomUint16( void );
-uint32 randomUint32( void );
-#ifdef BITS64
-uint64 randomUint64( void );
-#endif
-
diff --git a/tools/test/testfloat/slowfloat-32.c b/tools/test/testfloat/slowfloat-32.c
deleted file mode 100644
index 549654b05e63..000000000000
--- a/tools/test/testfloat/slowfloat-32.c
+++ /dev/null
@@ -1,1183 +0,0 @@
-
-/*
-===============================================================================
-
-This C source file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-int8 slow_float_rounding_mode;
-int8 slow_float_exception_flags;
-int8 slow_float_detect_tininess;
-
-typedef struct {
- bits32 a0, a1;
-} bits64X;
-
-typedef struct {
- flag isNaN;
- flag isInf;
- flag isZero;
- flag sign;
- int16 exp;
- bits64X sig;
-} floatX;
-
-static const floatX floatXNaN = { TRUE, FALSE, FALSE, FALSE, 0, { 0, 0 } };
-static const floatX floatXPositiveZero =
- { FALSE, FALSE, TRUE, FALSE, 0, { 0, 0 } };
-static const floatX floatXNegativeZero =
- { FALSE, FALSE, TRUE, TRUE, 0, { 0, 0 } };
-
-static bits64X shortShift64Left( bits64X a, int8 shiftCount )
-{
- int8 negShiftCount;
-
- negShiftCount = ( - shiftCount & 31 );
- a.a0 = ( a.a0<<shiftCount ) | ( a.a1>>negShiftCount );
- a.a1 <<= shiftCount;
- return a;
-
-}
-
-static bits64X shortShift64RightJamming( bits64X a, int8 shiftCount )
-{
- int8 negShiftCount;
- bits32 extra;
-
- negShiftCount = ( - shiftCount & 31 );
- extra = a.a1<<negShiftCount;
- a.a1 = ( a.a0<<negShiftCount ) | ( a.a1>>shiftCount ) | ( extra != 0 );
- a.a0 >>= shiftCount;
- return a;
-
-}
-
-static bits64X neg64( bits64X a )
-{
-
- if ( a.a1 == 0 ) {
- a.a0 = - a.a0;
- }
- else {
- a.a1 = - a.a1;
- a.a0 = ~ a.a0;
- }
- return a;
-
-}
-
-static bits64X add64( bits64X a, bits64X b )
-{
-
- a.a1 += b.a1;
- a.a0 += b.a0 + ( a.a1 < b.a1 );
- return a;
-
-}
-
-static flag eq64( bits64X a, bits64X b )
-{
-
- return ( a.a0 == b.a0 ) && ( a.a1 == b.a1 );
-
-}
-
-static flag le64( bits64X a, bits64X b )
-{
-
- return ( a.a0 < b.a0 ) || ( ( a.a0 == b.a0 ) && ( a.a1 <= b.a1 ) );
-
-}
-
-static flag lt64( bits64X a, bits64X b )
-{
-
- return ( a.a0 < b.a0 ) || ( ( a.a0 == b.a0 ) && ( a.a1 < b.a1 ) );
-
-}
-
-static floatX roundFloatXTo24( flag isTiny, floatX zx )
-{
-
- if ( zx.sig.a1 ) {
- slow_float_exception_flags |= float_flag_inexact;
- if ( isTiny ) slow_float_exception_flags |= float_flag_underflow;
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- if ( zx.sig.a1 < 0x80000000 ) goto noIncrement;
- if ( ( zx.sig.a1 == 0x80000000 ) && ! ( zx.sig.a0 & 1 ) ) {
- goto noIncrement;
- }
- break;
- case float_round_to_zero:
- goto noIncrement;
- case float_round_down:
- if ( ! zx.sign ) goto noIncrement;
- break;
- case float_round_up:
- if ( zx.sign ) goto noIncrement;
- break;
- }
- ++zx.sig.a0;
- if ( zx.sig.a0 == 0x01000000 ) {
- zx.sig.a0 = 0x00800000;
- ++zx.exp;
- }
- }
- noIncrement:
- zx.sig.a1 = 0;
- return zx;
-
-}
-
-static floatX roundFloatXTo53( flag isTiny, floatX zx )
-{
- int8 roundBits;
-
- roundBits = zx.sig.a1 & 7;
- zx.sig.a1 -= roundBits;
- if ( roundBits ) {
- slow_float_exception_flags |= float_flag_inexact;
- if ( isTiny ) slow_float_exception_flags |= float_flag_underflow;
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- if ( roundBits < 4 ) goto noIncrement;
- if ( ( roundBits == 4 ) && ! ( zx.sig.a1 & 8 ) ) goto noIncrement;
- break;
- case float_round_to_zero:
- goto noIncrement;
- case float_round_down:
- if ( ! zx.sign ) goto noIncrement;
- break;
- case float_round_up:
- if ( zx.sign ) goto noIncrement;
- break;
- }
- zx.sig.a1 += 8;
- zx.sig.a0 += ( zx.sig.a1 == 0 );
- if ( zx.sig.a0 == 0x01000000 ) {
- zx.sig.a0 = 0x00800000;
- ++zx.exp;
- }
- }
- noIncrement:
- return zx;
-
-}
-
-static floatX int32ToFloatX( int32 a )
-{
- floatX ax;
-
- ax.isNaN = FALSE;
- ax.isInf = FALSE;
- ax.sign = ( a < 0 );
- ax.sig.a1 = ax.sign ? - a : a;
- ax.sig.a0 = 0;
- if ( a == 0 ) {
- ax.isZero = TRUE;
- return ax;
- }
- ax.isZero = FALSE;
- ax.sig = shortShift64Left( ax.sig, 23 );
- ax.exp = 32;
- while ( ax.sig.a0 < 0x00800000 ) {
- ax.sig = shortShift64Left( ax.sig, 1 );
- --ax.exp;
- }
- return ax;
-
-}
-
-static int32 floatXToInt32( floatX ax )
-{
- int8 savedExceptionFlags;
- int16 shiftCount;
- int32 z;
-
- if ( ax.isInf || ax.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- return ( ax.isInf & ax.sign ) ? 0x80000000 : 0x7FFFFFFF;
- }
- if ( ax.isZero ) return 0;
- savedExceptionFlags = slow_float_exception_flags;
- shiftCount = 52 - ax.exp;
- if ( 56 < shiftCount ) {
- ax.sig.a1 = 1;
- ax.sig.a0 = 0;
- }
- else {
- while ( 0 < shiftCount ) {
- ax.sig = shortShift64RightJamming( ax.sig, 1 );
- --shiftCount;
- }
- }
- ax = roundFloatXTo53( FALSE, ax );
- ax.sig = shortShift64RightJamming( ax.sig, 3 );
- z = ax.sig.a1;
- if ( ax.sign ) z = - z;
- if ( ( shiftCount < 0 )
- || ax.sig.a0
- || ( ( z != 0 ) && ( ( ax.sign ^ ( z < 0 ) ) != 0 ) )
- ) {
- slow_float_exception_flags = savedExceptionFlags | float_flag_invalid;
- return ax.sign ? 0x80000000 : 0x7FFFFFFF;
- }
- return z;
-
-}
-
-static floatX float32ToFloatX( float32 a )
-{
- int16 expField;
- floatX ax;
-
- ax.isNaN = FALSE;
- ax.isInf = FALSE;
- ax.isZero = FALSE;
- ax.sign = ( ( a & 0x80000000 ) != 0 );
- expField = ( a>>23 ) & 0xFF;
- ax.sig.a1 = 0;
- ax.sig.a0 = a & 0x007FFFFF;
- if ( expField == 0 ) {
- if ( ax.sig.a0 == 0 ) {
- ax.isZero = TRUE;
- }
- else {
- expField = 1 - 0x7F;
- do {
- ax.sig.a0 <<= 1;
- --expField;
- } while ( ax.sig.a0 < 0x00800000 );
- ax.exp = expField;
- }
- }
- else if ( expField == 0xFF ) {
- if ( ax.sig.a0 == 0 ) {
- ax.isInf = TRUE;
- }
- else {
- ax.isNaN = TRUE;
- }
- }
- else {
- ax.sig.a0 |= 0x00800000;
- ax.exp = expField - 0x7F;
- }
- return ax;
-
-}
-
-static float32 floatXToFloat32( floatX zx )
-{
- floatX savedZ;
- flag isTiny;
- int16 expField;
- float32 z;
-
- if ( zx.isZero ) return zx.sign ? 0x80000000 : 0;
- if ( zx.isInf ) return zx.sign ? 0xFF800000 : 0x7F800000;
- if ( zx.isNaN ) return 0xFFFFFFFF;
- while ( 0x01000000 <= zx.sig.a0 ) {
- zx.sig = shortShift64RightJamming( zx.sig, 1 );
- ++zx.exp;
- }
- while ( zx.sig.a0 < 0x00800000 ) {
- zx.sig = shortShift64Left( zx.sig, 1 );
- --zx.exp;
- }
- savedZ = zx;
- isTiny =
- ( slow_float_detect_tininess == float_tininess_before_rounding )
- && ( zx.exp + 0x7F <= 0 );
- zx = roundFloatXTo24( isTiny, zx );
- expField = zx.exp + 0x7F;
- if ( 0xFF <= expField ) {
- slow_float_exception_flags |=
- float_flag_overflow | float_flag_inexact;
- if ( zx.sign ) {
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- case float_round_down:
- z = 0xFF800000;
- break;
- case float_round_to_zero:
- case float_round_up:
- z = 0xFF7FFFFF;
- break;
- }
- }
- else {
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- case float_round_up:
- z = 0x7F800000;
- break;
- case float_round_to_zero:
- case float_round_down:
- z = 0x7F7FFFFF;
- break;
- }
- }
- return z;
- }
- if ( expField <= 0 ) {
- isTiny = TRUE;
- zx = savedZ;
- expField = zx.exp + 0x7F;
- if ( expField < -27 ) {
- zx.sig.a1 = ( zx.sig.a0 != 0 ) || ( zx.sig.a1 != 0 );
- zx.sig.a0 = 0;
- }
- else {
- while ( expField <= 0 ) {
- zx.sig = shortShift64RightJamming( zx.sig, 1 );
- ++expField;
- }
- }
- zx = roundFloatXTo24( isTiny, zx );
- expField = ( 0x00800000 <= zx.sig.a0 ) ? 1 : 0;
- }
- z = expField;
- z <<= 23;
- if ( zx.sign ) z |= 0x80000000;
- z |= zx.sig.a0 & 0x007FFFFF;
- return z;
-
-}
-
-static floatX float64ToFloatX( float64 a )
-{
- int16 expField;
- floatX ax;
-
- ax.isNaN = FALSE;
- ax.isInf = FALSE;
- ax.isZero = FALSE;
-#ifdef BITS64
- ax.sign = ( ( a & LIT64( 0x8000000000000000 ) ) != 0 );
- expField = ( a>>52 ) & 0x7FF;
- ax.sig.a1 = a;
- ax.sig.a0 = ( a>>32 ) & 0x000FFFFF;
-#else
- ax.sign = ( ( a.high & 0x80000000 ) != 0 );
- expField = ( a.high>>( 52 - 32 ) ) & 0x7FF;
- ax.sig.a1 = a.low;
- ax.sig.a0 = a.high & 0x000FFFFF;
-#endif
- if ( expField == 0 ) {
- if ( ( ax.sig.a0 == 0 ) && ( ax.sig.a1 == 0 ) ) {
- ax.isZero = TRUE;
- }
- else {
- expField = 1 - 0x3FF;
- do {
- ax.sig = shortShift64Left( ax.sig, 1 );
- --expField;
- } while ( ax.sig.a0 < 0x00100000 );
- ax.exp = expField;
- }
- }
- else if ( expField == 0x7FF ) {
- if ( ( ax.sig.a0 == 0 ) && ( ax.sig.a1 == 0 ) ) {
- ax.isInf = TRUE;
- }
- else {
- ax.isNaN = TRUE;
- }
- }
- else {
- ax.exp = expField - 0x3FF;
- ax.sig.a0 |= 0x00100000;
- }
- ax.sig = shortShift64Left( ax.sig, 3 );
- return ax;
-
-}
-
-static float64 floatXToFloat64( floatX zx )
-{
- floatX savedZ;
- flag isTiny;
- int16 expField;
- float64 z;
-
-#ifdef BITS64
- if ( zx.isZero ) return zx.sign ? LIT64( 0x8000000000000000 ) : 0;
- if ( zx.isInf ) {
- return
- zx.sign ? LIT64( 0xFFF0000000000000 )
- : LIT64( 0x7FF0000000000000 );
- }
- if ( zx.isNaN ) return LIT64( 0xFFFFFFFFFFFFFFFF );
-#else
- if ( zx.isZero ) {
- z.low = 0;
- z.high = zx.sign ? 0x80000000 : 0;
- return z;
- }
- if ( zx.isInf ) {
- z.low = 0;
- z.high = zx.sign ? 0xFFF00000 : 0x7FF00000;
- return z;
- }
- if ( zx.isNaN ) {
- z.high = z.low = 0xFFFFFFFF;
- return z;
- }
-#endif
- while ( 0x01000000 <= zx.sig.a0 ) {
- zx.sig = shortShift64RightJamming( zx.sig, 1 );
- ++zx.exp;
- }
- while ( zx.sig.a0 < 0x00800000 ) {
- zx.sig = shortShift64Left( zx.sig, 1 );
- --zx.exp;
- }
- savedZ = zx;
- isTiny =
- ( slow_float_detect_tininess == float_tininess_before_rounding )
- && ( zx.exp + 0x3FF <= 0 );
- zx = roundFloatXTo53( isTiny, zx );
- expField = zx.exp + 0x3FF;
- if ( 0x7FF <= expField ) {
- slow_float_exception_flags |=
- float_flag_overflow | float_flag_inexact;
-#ifdef BITS64
- if ( zx.sign ) {
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- case float_round_down:
- z = LIT64( 0xFFF0000000000000 );
- break;
- case float_round_to_zero:
- case float_round_up:
- z = LIT64( 0xFFEFFFFFFFFFFFFF );
- break;
- }
- }
- else {
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- case float_round_up:
- z = LIT64( 0x7FF0000000000000 );
- break;
- case float_round_to_zero:
- case float_round_down:
- z = LIT64( 0x7FEFFFFFFFFFFFFF );
- break;
- }
- }
-#else
- if ( zx.sign ) {
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- case float_round_down:
- z.low = 0;
- z.high = 0xFFF00000;
- break;
- case float_round_to_zero:
- case float_round_up:
- z.low = 0xFFFFFFFF;
- z.high = 0xFFEFFFFF;
- break;
- }
- }
- else {
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- case float_round_up:
- z.low = 0;
- z.high = 0x7FF00000;
- break;
- case float_round_to_zero:
- case float_round_down:
- z.low = 0xFFFFFFFF;
- z.high = 0x7FEFFFFF;
- break;
- }
- }
-#endif
- return z;
- }
- if ( expField <= 0 ) {
- isTiny = TRUE;
- zx = savedZ;
- expField = zx.exp + 0x3FF;
- if ( expField < -56 ) {
- zx.sig.a1 = ( zx.sig.a0 != 0 ) || ( zx.sig.a1 != 0 );
- zx.sig.a0 = 0;
- }
- else {
- while ( expField <= 0 ) {
- zx.sig = shortShift64RightJamming( zx.sig, 1 );
- ++expField;
- }
- }
- zx = roundFloatXTo53( isTiny, zx );
- expField = ( 0x00800000 <= zx.sig.a0 ) ? 1 : 0;
- }
- zx.sig = shortShift64RightJamming( zx.sig, 3 );
-#ifdef BITS64
- z = expField;
- z <<= 52;
- if ( zx.sign ) z |= LIT64( 0x8000000000000000 );
- z |= ( ( (bits64) ( zx.sig.a0 & 0x000FFFFF ) )<<32 ) | zx.sig.a1;
-#else
- z.low = zx.sig.a1;
- z.high = expField;
- z.high <<= 52 - 32;
- if ( zx.sign ) z.high |= 0x80000000;
- z.high |= zx.sig.a0 & 0x000FFFFF;
-#endif
- return z;
-
-}
-
-static floatX floatXInvalid( void )
-{
-
- slow_float_exception_flags |= float_flag_invalid;
- return floatXNaN;
-
-}
-
-static floatX floatXRoundToInt( floatX ax )
-{
- int16 shiftCount, i;
-
- if ( ax.isNaN || ax.isInf ) return ax;
- shiftCount = 52 - ax.exp;
- if ( shiftCount <= 0 ) return ax;
- if ( 55 < shiftCount ) {
- ax.exp = 52;
- ax.sig.a1 = ! ax.isZero;
- ax.sig.a0 = 0;
- }
- else {
- while ( 0 < shiftCount ) {
- ax.sig = shortShift64RightJamming( ax.sig, 1 );
- ++ax.exp;
- --shiftCount;
- }
- }
- ax = roundFloatXTo53( FALSE, ax );
- if ( ( ax.sig.a0 == 0 ) && ( ax.sig.a1 == 0 ) ) ax.isZero = TRUE;
- return ax;
-
-}
-
-static floatX floatXAdd( floatX ax, floatX bx )
-{
- int16 expDiff;
- floatX zx;
-
- if ( ax.isNaN ) return ax;
- if ( bx.isNaN ) return bx;
- if ( ax.isInf && bx.isInf ) {
- if ( ax.sign == bx.sign ) return ax;
- return floatXInvalid();
- }
- if ( ax.isInf ) return ax;
- if ( bx.isInf ) return bx;
- if ( ax.isZero && bx.isZero ) {
- if ( ax.sign == bx.sign ) return ax;
- goto completeCancellation;
- }
- if ( ( ax.sign != bx.sign )
- && ( ax.exp == bx.exp )
- && eq64( ax.sig, bx.sig )
- ) {
- completeCancellation:
- return
- ( slow_float_rounding_mode == float_round_down ) ?
- floatXNegativeZero
- : floatXPositiveZero;
- }
- if ( ax.isZero ) return bx;
- if ( bx.isZero ) return ax;
- expDiff = ax.exp - bx.exp;
- if ( expDiff < 0 ) {
- zx = ax;
- zx.exp = bx.exp;
- if ( expDiff < -56 ) {
- zx.sig.a1 = 1;
- zx.sig.a0 = 0;
- }
- else {
- while ( expDiff < 0 ) {
- zx.sig = shortShift64RightJamming( zx.sig, 1 );
- ++expDiff;
- }
- }
- if ( ax.sign != bx.sign ) zx.sig = neg64( zx.sig );
- zx.sign = bx.sign;
- zx.sig = add64( zx.sig, bx.sig );
- }
- else {
- zx = bx;
- zx.exp = ax.exp;
- if ( 56 < expDiff ) {
- zx.sig.a1 = 1;
- zx.sig.a0 = 0;
- }
- else {
- while ( 0 < expDiff ) {
- zx.sig = shortShift64RightJamming( zx.sig, 1 );
- --expDiff;
- }
- }
- if ( ax.sign != bx.sign ) zx.sig = neg64( zx.sig );
- zx.sign = ax.sign;
- zx.sig = add64( zx.sig, ax.sig );
- }
- if ( zx.sig.a0 & 0x80000000 ) {
- zx.sig = neg64( zx.sig );
- zx.sign = ! zx.sign;
- }
- return zx;
-
-}
-
-static floatX floatXMul( floatX ax, floatX bx )
-{
- int8 bitNum;
- floatX zx;
-
- if ( ax.isNaN ) return ax;
- if ( bx.isNaN ) return bx;
- if ( ax.isInf ) {
- if ( bx.isZero ) return floatXInvalid();
- if ( bx.sign ) ax.sign = ! ax.sign;
- return ax;
- }
- if ( bx.isInf ) {
- if ( ax.isZero ) return floatXInvalid();
- if ( ax.sign ) bx.sign = ! bx.sign;
- return bx;
- }
- zx = ax;
- zx.sign ^= bx.sign;
- if ( ax.isZero || bx.isZero ) {
- return zx.sign ? floatXNegativeZero : floatXPositiveZero;
- }
- zx.exp += bx.exp + 1;
- zx.sig.a1 = 0;
- zx.sig.a0 = 0;
- for ( bitNum = 0; bitNum < 55; ++bitNum ) {
- if ( bx.sig.a1 & 2 ) zx.sig = add64( zx.sig, ax.sig );
- bx.sig = shortShift64RightJamming( bx.sig, 1 );
- zx.sig = shortShift64RightJamming( zx.sig, 1 );
- }
- return zx;
-
-}
-
-static floatX floatXDiv( floatX ax, floatX bx )
-{
- bits64X negBSig;
- int8 bitNum;
- floatX zx;
-
- if ( ax.isNaN ) return ax;
- if ( bx.isNaN ) return bx;
- if ( ax.isInf ) {
- if ( bx.isInf ) return floatXInvalid();
- if ( bx.sign ) ax.sign = ! ax.sign;
- return ax;
- }
- if ( bx.isZero ) {
- if ( ax.isZero ) return floatXInvalid();
- slow_float_exception_flags |= float_flag_divbyzero;
- if ( ax.sign ) bx.sign = ! bx.sign;
- bx.isZero = FALSE;
- bx.isInf = TRUE;
- return bx;
- }
- zx = ax;
- zx.sign ^= bx.sign;
- if ( ax.isZero || bx.isInf ) {
- return zx.sign ? floatXNegativeZero : floatXPositiveZero;
- }
- zx.exp -= bx.exp + 1;
- zx.sig.a1 = 0;
- zx.sig.a0 = 0;
- negBSig = neg64( bx.sig );
- for ( bitNum = 0; bitNum < 56; ++bitNum ) {
- if ( le64( bx.sig, ax.sig ) ) {
- zx.sig.a1 |= 1;
- ax.sig = add64( ax.sig, negBSig );
- }
- ax.sig = shortShift64Left( ax.sig, 1 );
- zx.sig = shortShift64Left( zx.sig, 1 );
- }
- if ( ax.sig.a0 || ax.sig.a1 ) zx.sig.a1 |= 1;
- return zx;
-
-}
-
-static floatX floatXRem( floatX ax, floatX bx )
-{
- bits64X negBSig;
- flag lastQuotientBit;
- bits64X savedASig;
-
- if ( ax.isNaN ) return ax;
- if ( bx.isNaN ) return bx;
- if ( ax.isInf || bx.isZero ) return floatXInvalid();
- if ( ax.isZero || bx.isInf ) return ax;
- --bx.exp;
- if ( ax.exp < bx.exp ) return ax;
- bx.sig = shortShift64Left( bx.sig, 1 );
- negBSig = neg64( bx.sig );
- while ( bx.exp < ax.exp ) {
- if ( le64( bx.sig, ax.sig ) ) ax.sig = add64( ax.sig, negBSig );
- ax.sig = shortShift64Left( ax.sig, 1 );
- --ax.exp;
- }
- lastQuotientBit = le64( bx.sig, ax.sig );
- if ( lastQuotientBit ) ax.sig = add64( ax.sig, negBSig );
- savedASig = ax.sig;
- ax.sig = neg64( add64( ax.sig, negBSig ) );
- if ( lt64( ax.sig, savedASig ) ) {
- ax.sign = ! ax.sign;
- }
- else if ( lt64( savedASig, ax.sig ) ) {
- ax.sig = savedASig;
- }
- else {
- if ( lastQuotientBit ) {
- ax.sign = ! ax.sign;
- }
- else {
- ax.sig = savedASig;
- }
- }
- if ( ( ax.sig.a0 == 0 ) && ( ax.sig.a1 == 0 ) ) ax.isZero = TRUE;
- return ax;
-
-}
-
-static floatX floatXSqrt( floatX ax )
-{
- int8 bitNum;
- bits64X bitSig, savedASig;
- floatX zx;
-
- if ( ax.isNaN || ax.isZero ) return ax;
- if ( ax.sign ) return floatXInvalid();
- if ( ax.isInf ) return ax;
- zx = ax;
- zx.exp >>= 1;
- if ( ( ax.exp & 1 ) == 0 ) ax.sig = shortShift64RightJamming( ax.sig, 1 );
- zx.sig.a1 = 0;
- zx.sig.a0 = 0;
- bitSig.a1 = 0;
- bitSig.a0 = 0x00800000;
- for ( bitNum = 0; bitNum < 56; ++bitNum ) {
- savedASig = ax.sig;
- ax.sig = add64( ax.sig, neg64( zx.sig ) );
- ax.sig = shortShift64Left( ax.sig, 1 );
- ax.sig = add64( ax.sig, neg64( bitSig ) );
- if ( ax.sig.a0 & 0x80000000 ) {
- ax.sig = shortShift64Left( savedASig, 1 );
- }
- else {
- zx.sig.a1 |= bitSig.a1;
- zx.sig.a0 |= bitSig.a0;
- }
- bitSig = shortShift64RightJamming( bitSig, 1 );
- }
- if ( ax.sig.a0 || ax.sig.a1 ) zx.sig.a1 |= 1;
- return zx;
-
-}
-
-static flag floatXEq( floatX ax, floatX bx )
-{
-
- if ( ax.isNaN || bx.isNaN ) return FALSE;
- if ( ax.isZero && bx.isZero ) return TRUE;
- if ( ax.sign != bx.sign ) return FALSE;
- if ( ax.isInf || bx.isInf ) return ax.isInf && bx.isInf;
- return ( ax.exp == bx.exp ) && eq64( ax.sig, bx.sig );
-
-}
-
-static flag floatXLe( floatX ax, floatX bx )
-{
-
- if ( ax.isNaN || bx.isNaN ) return FALSE;
- if ( ax.isZero && bx.isZero ) return TRUE;
- if ( ax.sign != bx.sign ) return ax.sign;
- if ( ax.sign ) {
- if ( ax.isInf || bx.isZero ) return TRUE;
- if ( bx.isInf || ax.isZero ) return FALSE;
- if ( bx.exp < ax.exp ) return TRUE;
- if ( ax.exp < bx.exp ) return FALSE;
- return le64( bx.sig, ax.sig );
- }
- else {
- if ( bx.isInf || ax.isZero ) return TRUE;
- if ( ax.isInf || bx.isZero ) return FALSE;
- if ( ax.exp < bx.exp ) return TRUE;
- if ( bx.exp < ax.exp ) return FALSE;
- return le64( ax.sig, bx.sig );
- }
-
-}
-
-static flag floatXLt( floatX ax, floatX bx )
-{
-
- if ( ax.isNaN || bx.isNaN ) return FALSE;
- if ( ax.isZero && bx.isZero ) return FALSE;
- if ( ax.sign != bx.sign ) return ax.sign;
- if ( ax.isInf && bx.isInf ) return FALSE;
- if ( ax.sign ) {
- if ( ax.isInf || bx.isZero ) return TRUE;
- if ( bx.isInf || ax.isZero ) return FALSE;
- if ( bx.exp < ax.exp ) return TRUE;
- if ( ax.exp < bx.exp ) return FALSE;
- return lt64( bx.sig, ax.sig );
- }
- else {
- if ( bx.isInf || ax.isZero ) return TRUE;
- if ( ax.isInf || bx.isZero ) return FALSE;
- if ( ax.exp < bx.exp ) return TRUE;
- if ( bx.exp < ax.exp ) return FALSE;
- return lt64( ax.sig, bx.sig );
- }
-
-}
-
-float32 slow_int32_to_float32( int32 a )
-{
-
- return floatXToFloat32( int32ToFloatX( a ) );
-
-}
-
-float64 slow_int32_to_float64( int32 a )
-{
-
- return floatXToFloat64( int32ToFloatX( a ) );
-
-}
-
-int32 slow_float32_to_int32( float32 a )
-{
-
- return floatXToInt32( float32ToFloatX( a ) );
-
-}
-
-int32 slow_float32_to_int32_round_to_zero( float32 a )
-{
- int8 savedRoundingMode;
- int32 z;
-
- savedRoundingMode = slow_float_rounding_mode;
- slow_float_rounding_mode = float_round_to_zero;
- z = floatXToInt32( float32ToFloatX( a ) );
- slow_float_rounding_mode = savedRoundingMode;
- return z;
-
-}
-
-float64 slow_float32_to_float64( float32 a )
-{
-
- return floatXToFloat64( float32ToFloatX( a ) );
-
-}
-
-float32 slow_float32_round_to_int( float32 a )
-{
-
- return floatXToFloat32( floatXRoundToInt( float32ToFloatX( a ) ) );
-
-}
-
-float32 slow_float32_add( float32 a, float32 b )
-{
-
- return
- floatXToFloat32(
- floatXAdd( float32ToFloatX( a ), float32ToFloatX( b ) ) );
-
-}
-
-float32 slow_float32_sub( float32 a, float32 b )
-{
-
- b ^= 0x80000000;
- return
- floatXToFloat32(
- floatXAdd( float32ToFloatX( a ), float32ToFloatX( b ) ) );
-
-}
-
-float32 slow_float32_mul( float32 a, float32 b )
-{
-
- return
- floatXToFloat32(
- floatXMul( float32ToFloatX( a ), float32ToFloatX( b ) ) );
-
-}
-
-float32 slow_float32_div( float32 a, float32 b )
-{
-
- return
- floatXToFloat32(
- floatXDiv( float32ToFloatX( a ), float32ToFloatX( b ) ) );
-
-}
-
-float32 slow_float32_rem( float32 a, float32 b )
-{
-
- return
- floatXToFloat32(
- floatXRem( float32ToFloatX( a ), float32ToFloatX( b ) ) );
-
-}
-
-float32 slow_float32_sqrt( float32 a )
-{
-
- return floatXToFloat32( floatXSqrt( float32ToFloatX( a ) ) );
-
-}
-
-flag slow_float32_eq( float32 a, float32 b )
-{
-
- return floatXEq( float32ToFloatX( a ), float32ToFloatX( b ) );
-
-}
-
-flag slow_float32_le( float32 a, float32 b )
-{
- floatX ax, bx;
-
- ax = float32ToFloatX( a );
- bx = float32ToFloatX( b );
- if ( ax.isNaN || bx.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- }
- return floatXLe( ax, bx );
-
-}
-
-flag slow_float32_lt( float32 a, float32 b )
-{
- floatX ax, bx;
-
- ax = float32ToFloatX( a );
- bx = float32ToFloatX( b );
- if ( ax.isNaN || bx.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- }
- return floatXLt( ax, bx );
-
-}
-
-flag slow_float32_eq_signaling( float32 a, float32 b )
-{
- floatX ax, bx;
-
- ax = float32ToFloatX( a );
- bx = float32ToFloatX( b );
- if ( ax.isNaN || bx.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- }
- return floatXEq( ax, bx );
-
-}
-
-flag slow_float32_le_quiet( float32 a, float32 b )
-{
-
- return floatXLe( float32ToFloatX( a ), float32ToFloatX( b ) );
-
-}
-
-flag slow_float32_lt_quiet( float32 a, float32 b )
-{
-
- return floatXLt( float32ToFloatX( a ), float32ToFloatX( b ) );
-
-}
-
-int32 slow_float64_to_int32( float64 a )
-{
-
- return floatXToInt32( float64ToFloatX( a ) );
-
-}
-
-int32 slow_float64_to_int32_round_to_zero( float64 a )
-{
- int8 savedRoundingMode;
- int32 z;
-
- savedRoundingMode = slow_float_rounding_mode;
- slow_float_rounding_mode = float_round_to_zero;
- z = floatXToInt32( float64ToFloatX( a ) );
- slow_float_rounding_mode = savedRoundingMode;
- return z;
-
-}
-
-float32 slow_float64_to_float32( float64 a )
-{
-
- return floatXToFloat32( float64ToFloatX( a ) );
-
-}
-
-float64 slow_float64_round_to_int( float64 a )
-{
-
- return floatXToFloat64( floatXRoundToInt( float64ToFloatX( a ) ) );
-
-}
-
-float64 slow_float64_add( float64 a, float64 b )
-{
-
- return
- floatXToFloat64(
- floatXAdd( float64ToFloatX( a ), float64ToFloatX( b ) ) );
-
-}
-
-float64 slow_float64_sub( float64 a, float64 b )
-{
-
-#ifdef BITS64
- b ^= LIT64( 0x8000000000000000 );
-#else
- b.high ^= 0x80000000;
-#endif
- return
- floatXToFloat64(
- floatXAdd( float64ToFloatX( a ), float64ToFloatX( b ) ) );
-
-}
-
-float64 slow_float64_mul( float64 a, float64 b )
-{
-
- return
- floatXToFloat64(
- floatXMul( float64ToFloatX( a ), float64ToFloatX( b ) ) );
-
-}
-
-float64 slow_float64_div( float64 a, float64 b )
-{
-
- return
- floatXToFloat64(
- floatXDiv( float64ToFloatX( a ), float64ToFloatX( b ) ) );
-
-}
-
-float64 slow_float64_rem( float64 a, float64 b )
-{
-
- return
- floatXToFloat64(
- floatXRem( float64ToFloatX( a ), float64ToFloatX( b ) ) );
-
-}
-
-float64 slow_float64_sqrt( float64 a )
-{
-
- return floatXToFloat64( floatXSqrt( float64ToFloatX( a ) ) );
-
-}
-
-flag slow_float64_eq( float64 a, float64 b )
-{
-
- return floatXEq( float64ToFloatX( a ), float64ToFloatX( b ) );
-
-}
-
-flag slow_float64_le( float64 a, float64 b )
-{
- floatX ax, bx;
-
- ax = float64ToFloatX( a );
- bx = float64ToFloatX( b );
- if ( ax.isNaN || bx.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- }
- return floatXLe( ax, bx );
-
-}
-
-flag slow_float64_lt( float64 a, float64 b )
-{
- floatX ax, bx;
-
- ax = float64ToFloatX( a );
- bx = float64ToFloatX( b );
- if ( ax.isNaN || bx.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- }
- return floatXLt( ax, bx );
-
-}
-
-flag slow_float64_eq_signaling( float64 a, float64 b )
-{
- floatX ax, bx;
-
- ax = float64ToFloatX( a );
- bx = float64ToFloatX( b );
- if ( ax.isNaN || bx.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- }
- return floatXEq( ax, bx );
-
-}
-
-flag slow_float64_le_quiet( float64 a, float64 b )
-{
-
- return floatXLe( float64ToFloatX( a ), float64ToFloatX( b ) );
-
-}
-
-flag slow_float64_lt_quiet( float64 a, float64 b )
-{
-
- return floatXLt( float64ToFloatX( a ), float64ToFloatX( b ) );
-
-}
-
diff --git a/tools/test/testfloat/slowfloat-64.c b/tools/test/testfloat/slowfloat-64.c
deleted file mode 100644
index 27e56e1152a0..000000000000
--- a/tools/test/testfloat/slowfloat-64.c
+++ /dev/null
@@ -1,2109 +0,0 @@
-
-/*
-===============================================================================
-
-This C source file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-int8 slow_float_rounding_mode;
-int8 slow_float_exception_flags;
-int8 slow_float_detect_tininess;
-#ifdef FLOATX80
-int8 slow_floatx80_rounding_precision;
-#endif
-
-typedef struct {
- bits64 a0, a1;
-} bits128X;
-
-typedef struct {
- flag isNaN;
- flag isInf;
- flag isZero;
- flag sign;
- int32 exp;
- bits128X sig;
-} floatX;
-
-static const floatX floatXNaN = { TRUE, FALSE, FALSE, FALSE, 0, { 0, 0 } };
-static const floatX floatXPositiveZero =
- { FALSE, FALSE, TRUE, FALSE, 0, { 0, 0 } };
-static const floatX floatXNegativeZero =
- { FALSE, FALSE, TRUE, TRUE, 0, { 0, 0 } };
-
-static bits128X shortShift128Left( bits128X a, int8 shiftCount )
-{
- int8 negShiftCount;
-
- negShiftCount = ( - shiftCount & 63 );
- a.a0 = ( a.a0<<shiftCount ) | ( a.a1>>negShiftCount );
- a.a1 <<= shiftCount;
- return a;
-
-}
-
-static bits128X shortShift128RightJamming( bits128X a, int8 shiftCount )
-{
- int8 negShiftCount;
- bits64 extra;
-
- negShiftCount = ( - shiftCount & 63 );
- extra = a.a1<<negShiftCount;
- a.a1 = ( a.a0<<negShiftCount ) | ( a.a1>>shiftCount ) | ( extra != 0 );
- a.a0 >>= shiftCount;
- return a;
-
-}
-
-static bits128X neg128( bits128X a )
-{
-
- if ( a.a1 == 0 ) {
- a.a0 = - a.a0;
- }
- else {
- a.a1 = - a.a1;
- a.a0 = ~ a.a0;
- }
- return a;
-
-}
-
-static bits128X add128( bits128X a, bits128X b )
-{
-
- a.a1 += b.a1;
- a.a0 += b.a0 + ( a.a1 < b.a1 );
- return a;
-
-}
-
-static flag eq128( bits128X a, bits128X b )
-{
-
- return ( a.a0 == b.a0 ) && ( a.a1 == b.a1 );
-
-}
-
-static flag le128( bits128X a, bits128X b )
-{
-
- return ( a.a0 < b.a0 ) || ( ( a.a0 == b.a0 ) && ( a.a1 <= b.a1 ) );
-
-}
-
-static flag lt128( bits128X a, bits128X b )
-{
-
- return ( a.a0 < b.a0 ) || ( ( a.a0 == b.a0 ) && ( a.a1 < b.a1 ) );
-
-}
-
-static floatX roundFloatXTo24( flag isTiny, floatX zx )
-{
- bits32 roundBits;
-
- zx.sig.a0 |= ( zx.sig.a1 != 0 );
- zx.sig.a1 = 0;
- roundBits = zx.sig.a0 & 0xFFFFFFFF;
- zx.sig.a0 -= roundBits;
- if ( roundBits ) {
- slow_float_exception_flags |= float_flag_inexact;
- if ( isTiny ) slow_float_exception_flags |= float_flag_underflow;
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- if ( roundBits < 0x80000000 ) goto noIncrement;
- if ( ( roundBits == 0x80000000 )
- && ! ( zx.sig.a0 & LIT64( 0x100000000 ) ) ) {
- goto noIncrement;
- }
- break;
- case float_round_to_zero:
- goto noIncrement;
- case float_round_down:
- if ( ! zx.sign ) goto noIncrement;
- break;
- case float_round_up:
- if ( zx.sign ) goto noIncrement;
- break;
- }
- zx.sig.a0 += LIT64( 0x100000000 );
- if ( zx.sig.a0 == LIT64( 0x0100000000000000 ) ) {
- zx.sig.a0 = LIT64( 0x0080000000000000 );
- ++zx.exp;
- }
- }
- noIncrement:
- return zx;
-
-}
-
-static floatX roundFloatXTo53( flag isTiny, floatX zx )
-{
- int8 roundBits;
-
- zx.sig.a0 |= ( zx.sig.a1 != 0 );
- zx.sig.a1 = 0;
- roundBits = zx.sig.a0 & 7;
- zx.sig.a0 -= roundBits;
- if ( roundBits ) {
- slow_float_exception_flags |= float_flag_inexact;
- if ( isTiny ) slow_float_exception_flags |= float_flag_underflow;
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- if ( roundBits < 4 ) goto noIncrement;
- if ( ( roundBits == 4 ) && ! ( zx.sig.a0 & 8 ) ) goto noIncrement;
- break;
- case float_round_to_zero:
- goto noIncrement;
- case float_round_down:
- if ( ! zx.sign ) goto noIncrement;
- break;
- case float_round_up:
- if ( zx.sign ) goto noIncrement;
- break;
- }
- zx.sig.a0 += 8;
- if ( zx.sig.a0 == LIT64( 0x0100000000000000 ) ) {
- zx.sig.a0 = LIT64( 0x0080000000000000 );
- ++zx.exp;
- }
- }
- noIncrement:
- return zx;
-
-}
-
-static floatX roundFloatXTo64( flag isTiny, floatX zx )
-{
- int64 roundBits;
-
- roundBits = zx.sig.a1 & LIT64( 0x00FFFFFFFFFFFFFF );
- zx.sig.a1 -= roundBits;
- if ( roundBits ) {
- slow_float_exception_flags |= float_flag_inexact;
- if ( isTiny ) slow_float_exception_flags |= float_flag_underflow;
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- if ( roundBits < LIT64( 0x0080000000000000 ) ) goto noIncrement;
- if ( ( roundBits == LIT64( 0x0080000000000000 ) )
- && ! ( zx.sig.a1 & LIT64( 0x0100000000000000 ) ) ) {
- goto noIncrement;
- }
- break;
- case float_round_to_zero:
- goto noIncrement;
- case float_round_down:
- if ( ! zx.sign ) goto noIncrement;
- break;
- case float_round_up:
- if ( zx.sign ) goto noIncrement;
- break;
- }
- zx.sig.a1 += LIT64( 0x0100000000000000 );
- zx.sig.a0 += ( zx.sig.a1 == 0 );
- if ( zx.sig.a0 == LIT64( 0x0100000000000000 ) ) {
- zx.sig.a0 = LIT64( 0x0080000000000000 );
- ++zx.exp;
- }
- }
- noIncrement:
- return zx;
-
-}
-
-static floatX roundFloatXTo113( flag isTiny, floatX zx )
-{
- int8 roundBits;
-
- roundBits = zx.sig.a1 & 0x7F;
- zx.sig.a1 -= roundBits;
- if ( roundBits ) {
- slow_float_exception_flags |= float_flag_inexact;
- if ( isTiny ) slow_float_exception_flags |= float_flag_underflow;
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- if ( roundBits < 0x40 ) goto noIncrement;
- if ( ( roundBits == 0x40 )
- && ! ( zx.sig.a1 & 0x80 ) ) goto noIncrement;
- break;
- case float_round_to_zero:
- goto noIncrement;
- case float_round_down:
- if ( ! zx.sign ) goto noIncrement;
- break;
- case float_round_up:
- if ( zx.sign ) goto noIncrement;
- break;
- }
- zx.sig.a1 += 0x80;
- zx.sig.a0 += ( zx.sig.a1 == 0 );
- if ( zx.sig.a0 == LIT64( 0x0100000000000000 ) ) {
- zx.sig.a0 = LIT64( 0x0080000000000000 );
- ++zx.exp;
- }
- }
- noIncrement:
- return zx;
-
-}
-
-static floatX int32ToFloatX( int32 a )
-{
- floatX ax;
-
- ax.isNaN = FALSE;
- ax.isInf = FALSE;
- ax.sign = ( a < 0 );
- ax.sig.a1 = 0;
- ax.sig.a0 = ax.sign ? - (bits64) a : a;
- if ( a == 0 ) {
- ax.isZero = TRUE;
- return ax;
- }
- ax.isZero = FALSE;
- ax.sig.a0 <<= 24;
- ax.exp = 31;
- while ( ax.sig.a0 < LIT64( 0x0080000000000000 ) ) {
- ax.sig.a0 <<= 1;
- --ax.exp;
- }
- return ax;
-
-}
-
-static int32 floatXToInt32( floatX ax )
-{
- int8 savedExceptionFlags;
- int32 shiftCount;
- int32 z;
-
- if ( ax.isInf || ax.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- return ( ax.isInf & ax.sign ) ? (sbits32) 0x80000000 : 0x7FFFFFFF;
- }
- if ( ax.isZero ) return 0;
- savedExceptionFlags = slow_float_exception_flags;
- shiftCount = 52 - ax.exp;
- if ( 56 < shiftCount ) {
- ax.sig.a1 = 1;
- ax.sig.a0 = 0;
- }
- else {
- while ( 0 < shiftCount ) {
- ax.sig = shortShift128RightJamming( ax.sig, 1 );
- --shiftCount;
- }
- }
- ax = roundFloatXTo53( FALSE, ax );
- ax.sig = shortShift128RightJamming( ax.sig, 3 );
- z = ax.sig.a0;
- if ( ax.sign ) z = - z;
- if ( ( shiftCount < 0 )
- || ( ax.sig.a0>>32 )
- || ( ( z != 0 ) && ( ( ax.sign ^ ( z < 0 ) ) != 0 ) )
- ) {
- slow_float_exception_flags = savedExceptionFlags | float_flag_invalid;
- return ax.sign ? (sbits32) 0x80000000 : 0x7FFFFFFF;
- }
- return z;
-
-}
-
-static floatX int64ToFloatX( int64 a )
-{
- uint64 absA;
- floatX ax;
-
- ax.isNaN = FALSE;
- ax.isInf = FALSE;
- ax.sign = ( a < 0 );
- ax.sig.a1 = ax.sign ? - a : a;
- ax.sig.a0 = 0;
- if ( a == 0 ) {
- ax.isZero = TRUE;
- return ax;
- }
- ax.isZero = FALSE;
- ax.sig = shortShift128Left( ax.sig, 56 );
- ax.exp = 63;
- while ( ax.sig.a0 < LIT64( 0x0080000000000000 ) ) {
- ax.sig = shortShift128Left( ax.sig, 1 );
- --ax.exp;
- }
- return ax;
-
-}
-
-static int64 floatXToInt64( floatX ax )
-{
- int8 savedExceptionFlags;
- int32 shiftCount;
- int64 z;
-
- if ( ax.isInf || ax.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- return
- ( ax.isInf & ax.sign ) ? (sbits64) LIT64( 0x8000000000000000 )
- : LIT64( 0x7FFFFFFFFFFFFFFF );
- }
- if ( ax.isZero ) return 0;
- savedExceptionFlags = slow_float_exception_flags;
- shiftCount = 112 - ax.exp;
- if ( 116 < shiftCount ) {
- ax.sig.a1 = 1;
- ax.sig.a0 = 0;
- }
- else {
- while ( 0 < shiftCount ) {
- ax.sig = shortShift128RightJamming( ax.sig, 1 );
- --shiftCount;
- }
- }
- ax = roundFloatXTo113( FALSE, ax );
- ax.sig = shortShift128RightJamming( ax.sig, 7 );
- z = ax.sig.a1;
- if ( ax.sign ) z = - z;
- if ( ( shiftCount < 0 )
- || ax.sig.a0
- || ( ( z != 0 ) && ( ( ax.sign ^ ( z < 0 ) ) != 0 ) )
- ) {
- slow_float_exception_flags = savedExceptionFlags | float_flag_invalid;
- return
- ax.sign ? (sbits64) LIT64( 0x8000000000000000 )
- : LIT64( 0x7FFFFFFFFFFFFFFF );
- }
- return z;
-
-}
-
-static floatX float32ToFloatX( float32 a )
-{
- int16 expField;
- floatX ax;
-
- ax.isNaN = FALSE;
- ax.isInf = FALSE;
- ax.isZero = FALSE;
- ax.sign = ( ( a & 0x80000000 ) != 0 );
- expField = ( a>>23 ) & 0xFF;
- ax.sig.a1 = 0;
- ax.sig.a0 = a & 0x007FFFFF;
- ax.sig.a0 <<= 32;
- if ( expField == 0 ) {
- if ( ax.sig.a0 == 0 ) {
- ax.isZero = TRUE;
- }
- else {
- expField = 1 - 0x7F;
- do {
- ax.sig.a0 <<= 1;
- --expField;
- } while ( ax.sig.a0 < LIT64( 0x0080000000000000 ) );
- ax.exp = expField;
- }
- }
- else if ( expField == 0xFF ) {
- if ( ax.sig.a0 == 0 ) {
- ax.isInf = TRUE;
- }
- else {
- ax.isNaN = TRUE;
- }
- }
- else {
- ax.sig.a0 |= LIT64( 0x0080000000000000 );
- ax.exp = expField - 0x7F;
- }
- return ax;
-
-}
-
-static float32 floatXToFloat32( floatX zx )
-{
- floatX savedZ;
- flag isTiny;
- int32 expField;
- float32 z;
-
- if ( zx.isZero ) return zx.sign ? 0x80000000 : 0;
- if ( zx.isInf ) return zx.sign ? 0xFF800000 : 0x7F800000;
- if ( zx.isNaN ) return 0xFFFFFFFF;
- while ( LIT64( 0x0100000000000000 ) <= zx.sig.a0 ) {
- zx.sig = shortShift128RightJamming( zx.sig, 1 );
- ++zx.exp;
- }
- while ( zx.sig.a0 < LIT64( 0x0080000000000000 ) ) {
- zx.sig = shortShift128Left( zx.sig, 1 );
- --zx.exp;
- }
- savedZ = zx;
- isTiny =
- ( slow_float_detect_tininess == float_tininess_before_rounding )
- && ( zx.exp + 0x7F <= 0 );
- zx = roundFloatXTo24( isTiny, zx );
- expField = zx.exp + 0x7F;
- if ( 0xFF <= expField ) {
- slow_float_exception_flags |=
- float_flag_overflow | float_flag_inexact;
- if ( zx.sign ) {
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- case float_round_down:
- z = 0xFF800000;
- break;
- case float_round_to_zero:
- case float_round_up:
- z = 0xFF7FFFFF;
- break;
- }
- }
- else {
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- case float_round_up:
- z = 0x7F800000;
- break;
- case float_round_to_zero:
- case float_round_down:
- z = 0x7F7FFFFF;
- break;
- }
- }
- return z;
- }
- if ( expField <= 0 ) {
- isTiny = TRUE;
- zx = savedZ;
- expField = zx.exp + 0x7F;
- if ( expField < -27 ) {
- zx.sig.a1 = ( zx.sig.a0 != 0 ) || ( zx.sig.a1 != 0 );
- zx.sig.a0 = 0;
- }
- else {
- while ( expField <= 0 ) {
- zx.sig = shortShift128RightJamming( zx.sig, 1 );
- ++expField;
- }
- }
- zx = roundFloatXTo24( isTiny, zx );
- expField = ( LIT64( 0x0080000000000000 ) <= zx.sig.a0 ) ? 1 : 0;
- }
- z = expField;
- z <<= 23;
- if ( zx.sign ) z |= 0x80000000;
- z |= ( zx.sig.a0>>32 ) & 0x007FFFFF;
- return z;
-
-}
-
-static floatX float64ToFloatX( float64 a )
-{
- int16 expField;
- floatX ax;
-
- ax.isNaN = FALSE;
- ax.isInf = FALSE;
- ax.isZero = FALSE;
- ax.sign = ( ( a & LIT64( 0x8000000000000000 ) ) != 0 );
- expField = ( a>>52 ) & 0x7FF;
- ax.sig.a1 = 0;
- ax.sig.a0 = a & LIT64( 0x000FFFFFFFFFFFFF );
- if ( expField == 0 ) {
- if ( ax.sig.a0 == 0 ) {
- ax.isZero = TRUE;
- }
- else {
- expField = 1 - 0x3FF;
- do {
- ax.sig.a0 <<= 1;
- --expField;
- } while ( ax.sig.a0 < LIT64( 0x0010000000000000 ) );
- ax.exp = expField;
- }
- }
- else if ( expField == 0x7FF ) {
- if ( ax.sig.a0 == 0 ) {
- ax.isInf = TRUE;
- }
- else {
- ax.isNaN = TRUE;
- }
- }
- else {
- ax.exp = expField - 0x3FF;
- ax.sig.a0 |= LIT64( 0x0010000000000000 );
- }
- ax.sig.a0 <<= 3;
- return ax;
-
-}
-
-static float64 floatXToFloat64( floatX zx )
-{
- floatX savedZ;
- flag isTiny;
- int32 expField;
- float64 z;
-
- if ( zx.isZero ) return zx.sign ? LIT64( 0x8000000000000000 ) : 0;
- if ( zx.isInf ) {
- return
- zx.sign ? LIT64( 0xFFF0000000000000 )
- : LIT64( 0x7FF0000000000000 );
- }
- if ( zx.isNaN ) return LIT64( 0xFFFFFFFFFFFFFFFF );
- while ( LIT64( 0x0100000000000000 ) <= zx.sig.a0 ) {
- zx.sig = shortShift128RightJamming( zx.sig, 1 );
- ++zx.exp;
- }
- while ( zx.sig.a0 < LIT64( 0x0080000000000000 ) ) {
- zx.sig = shortShift128Left( zx.sig, 1 );
- --zx.exp;
- }
- savedZ = zx;
- isTiny =
- ( slow_float_detect_tininess == float_tininess_before_rounding )
- && ( zx.exp + 0x3FF <= 0 );
- zx = roundFloatXTo53( isTiny, zx );
- expField = zx.exp + 0x3FF;
- if ( 0x7FF <= expField ) {
- slow_float_exception_flags |=
- float_flag_overflow | float_flag_inexact;
- if ( zx.sign ) {
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- case float_round_down:
- z = LIT64( 0xFFF0000000000000 );
- break;
- case float_round_to_zero:
- case float_round_up:
- z = LIT64( 0xFFEFFFFFFFFFFFFF );
- break;
- }
- }
- else {
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- case float_round_up:
- z = LIT64( 0x7FF0000000000000 );
- break;
- case float_round_to_zero:
- case float_round_down:
- z = LIT64( 0x7FEFFFFFFFFFFFFF );
- break;
- }
- }
- return z;
- }
- if ( expField <= 0 ) {
- isTiny = TRUE;
- zx = savedZ;
- expField = zx.exp + 0x3FF;
- if ( expField < -56 ) {
- zx.sig.a1 = ( zx.sig.a0 != 0 ) || ( zx.sig.a1 != 0 );
- zx.sig.a0 = 0;
- }
- else {
- while ( expField <= 0 ) {
- zx.sig = shortShift128RightJamming( zx.sig, 1 );
- ++expField;
- }
- }
- zx = roundFloatXTo53( isTiny, zx );
- expField = ( LIT64( 0x0080000000000000 ) <= zx.sig.a0 ) ? 1 : 0;
- }
- zx.sig.a0 >>= 3;
- z = expField;
- z <<= 52;
- if ( zx.sign ) z |= LIT64( 0x8000000000000000 );
- z |= zx.sig.a0 & LIT64( 0x000FFFFFFFFFFFFF );
- return z;
-
-}
-
-#ifdef FLOATX80
-
-static floatX floatx80ToFloatX( floatx80 a )
-{
- int32 expField;
- floatX ax;
-
- ax.isNaN = FALSE;
- ax.isInf = FALSE;
- ax.isZero = FALSE;
- ax.sign = ( ( a.high & 0x8000 ) != 0 );
- expField = a.high & 0x7FFF;
- ax.sig.a1 = a.low;
- ax.sig.a0 = 0;
- if ( expField == 0 ) {
- if ( ax.sig.a1 == 0 ) {
- ax.isZero = TRUE;
- }
- else {
- expField = 1 - 0x3FFF;
- while ( ax.sig.a1 < LIT64( 0x8000000000000000 ) ) {
- ax.sig.a1 <<= 1;
- --expField;
- }
- ax.exp = expField;
- }
- }
- else if ( expField == 0x7FFF ) {
- if ( ( ax.sig.a1 & LIT64( 0x7FFFFFFFFFFFFFFF ) ) == 0 ) {
- ax.isInf = TRUE;
- }
- else {
- ax.isNaN = TRUE;
- }
- }
- else {
- ax.exp = expField - 0x3FFF;
- }
- ax.sig = shortShift128Left( ax.sig, 56 );
- return ax;
-
-}
-
-static floatx80 floatXToFloatx80( floatX zx )
-{
- floatX savedZ;
- flag isTiny;
- int32 expField;
- floatx80 z;
-
- if ( zx.isZero ) {
- z.low = 0;
- z.high = zx.sign ? 0x8000 : 0;
- return z;
- }
- if ( zx.isInf ) {
- z.low = LIT64( 0x8000000000000000 );
- z.high = zx.sign ? 0xFFFF : 0x7FFF;
- return z;
- }
- if ( zx.isNaN ) {
- z.low = LIT64( 0xFFFFFFFFFFFFFFFF );
- z.high = 0xFFFF;
- return z;
- }
- while ( LIT64( 0x0100000000000000 ) <= zx.sig.a0 ) {
- zx.sig = shortShift128RightJamming( zx.sig, 1 );
- ++zx.exp;
- }
- while ( zx.sig.a0 < LIT64( 0x0080000000000000 ) ) {
- zx.sig = shortShift128Left( zx.sig, 1 );
- --zx.exp;
- }
- savedZ = zx;
- isTiny =
- ( slow_float_detect_tininess == float_tininess_before_rounding )
- && ( zx.exp + 0x3FFF <= 0 );
- switch ( slow_floatx80_rounding_precision ) {
- case 32:
- zx = roundFloatXTo24( isTiny, zx );
- break;
- case 64:
- zx = roundFloatXTo53( isTiny, zx );
- break;
- default:
- zx = roundFloatXTo64( isTiny, zx );
- break;
- }
- expField = zx.exp + 0x3FFF;
- if ( 0x7FFF <= expField ) {
- slow_float_exception_flags |=
- float_flag_overflow | float_flag_inexact;
- if ( zx.sign ) {
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- case float_round_down:
- z.low = LIT64( 0x8000000000000000 );
- z.high = 0xFFFF;
- break;
- case float_round_to_zero:
- case float_round_up:
- switch ( slow_floatx80_rounding_precision ) {
- case 32:
- z.low = LIT64( 0xFFFFFF0000000000 );
- break;
- case 64:
- z.low = LIT64( 0xFFFFFFFFFFFFF800 );
- break;
- default:
- z.low = LIT64( 0xFFFFFFFFFFFFFFFF );
- break;
- }
- z.high = 0xFFFE;
- break;
- }
- }
- else {
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- case float_round_up:
- z.low = LIT64( 0x8000000000000000 );
- z.high = 0x7FFF;
- break;
- case float_round_to_zero:
- case float_round_down:
- switch ( slow_floatx80_rounding_precision ) {
- case 32:
- z.low = LIT64( 0xFFFFFF0000000000 );
- break;
- case 64:
- z.low = LIT64( 0xFFFFFFFFFFFFF800 );
- break;
- default:
- z.low = LIT64( 0xFFFFFFFFFFFFFFFF );
- break;
- }
- z.high = 0x7FFE;
- break;
- }
- }
- return z;
- }
- if ( expField <= 0 ) {
- isTiny = TRUE;
- zx = savedZ;
- expField = zx.exp + 0x3FFF;
- if ( expField < -70 ) {
- zx.sig.a1 = ( zx.sig.a0 != 0 ) || ( zx.sig.a1 != 0 );
- zx.sig.a0 = 0;
- }
- else {
- while ( expField <= 0 ) {
- zx.sig = shortShift128RightJamming( zx.sig, 1 );
- ++expField;
- }
- }
- switch ( slow_floatx80_rounding_precision ) {
- case 32:
- zx = roundFloatXTo24( isTiny, zx );
- break;
- case 64:
- zx = roundFloatXTo53( isTiny, zx );
- break;
- default:
- zx = roundFloatXTo64( isTiny, zx );
- break;
- }
- expField = ( LIT64( 0x0080000000000000 ) <= zx.sig.a0 ) ? 1 : 0;
- }
- zx.sig = shortShift128RightJamming( zx.sig, 56 );
- z.low = zx.sig.a1;
- z.high = expField;
- if ( zx.sign ) z.high |= 0x8000;
- return z;
-
-}
-
-#endif
-
-#ifdef FLOAT128
-
-static floatX float128ToFloatX( float128 a )
-{
- int32 expField;
- floatX ax;
-
- ax.isNaN = FALSE;
- ax.isInf = FALSE;
- ax.isZero = FALSE;
- ax.sign = ( ( a.high & LIT64( 0x8000000000000000 ) ) != 0 );
- expField = ( a.high>>48 ) & 0x7FFF;
- ax.sig.a1 = a.low;
- ax.sig.a0 = a.high & LIT64( 0x0000FFFFFFFFFFFF );
- if ( expField == 0 ) {
- if ( ( ax.sig.a0 == 0 ) && ( ax.sig.a1 == 0 ) ) {
- ax.isZero = TRUE;
- }
- else {
- expField = 1 - 0x3FFF;
- do {
- ax.sig = shortShift128Left( ax.sig, 1 );
- --expField;
- } while ( ax.sig.a0 < LIT64( 0x0001000000000000 ) );
- ax.exp = expField;
- }
- }
- else if ( expField == 0x7FFF ) {
- if ( ( ax.sig.a0 == 0 ) && ( ax.sig.a1 == 0 ) ) {
- ax.isInf = TRUE;
- }
- else {
- ax.isNaN = TRUE;
- }
- }
- else {
- ax.exp = expField - 0x3FFF;
- ax.sig.a0 |= LIT64( 0x0001000000000000 );
- }
- ax.sig = shortShift128Left( ax.sig, 7 );
- return ax;
-
-}
-
-static float128 floatXToFloat128( floatX zx )
-{
- floatX savedZ;
- flag isTiny;
- int32 expField;
- float128 z;
-
- if ( zx.isZero ) {
- z.low = 0;
- z.high = zx.sign ? LIT64( 0x8000000000000000 ) : 0;
- return z;
- }
- if ( zx.isInf ) {
- z.low = 0;
- z.high =
- zx.sign ? LIT64( 0xFFFF000000000000 )
- : LIT64( 0x7FFF000000000000 );
- return z;
- }
- if ( zx.isNaN ) {
- z.high = z.low = LIT64( 0xFFFFFFFFFFFFFFFF );
- return z;
- }
- while ( LIT64( 0x0100000000000000 ) <= zx.sig.a0 ) {
- zx.sig = shortShift128RightJamming( zx.sig, 1 );
- ++zx.exp;
- }
- while ( zx.sig.a0 < LIT64( 0x0080000000000000 ) ) {
- zx.sig = shortShift128Left( zx.sig, 1 );
- --zx.exp;
- }
- savedZ = zx;
- isTiny =
- ( slow_float_detect_tininess == float_tininess_before_rounding )
- && ( zx.exp + 0x3FFF <= 0 );
- zx = roundFloatXTo113( isTiny, zx );
- expField = zx.exp + 0x3FFF;
- if ( 0x7FFF <= expField ) {
- slow_float_exception_flags |=
- float_flag_overflow | float_flag_inexact;
- if ( zx.sign ) {
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- case float_round_down:
- z.low = 0;
- z.high = LIT64( 0xFFFF000000000000 );
- break;
- case float_round_to_zero:
- case float_round_up:
- z.low = LIT64( 0xFFFFFFFFFFFFFFFF );
- z.high = LIT64( 0xFFFEFFFFFFFFFFFF );
- break;
- }
- }
- else {
- switch ( slow_float_rounding_mode ) {
- case float_round_nearest_even:
- case float_round_up:
- z.low = 0;
- z.high = LIT64( 0x7FFF000000000000 );
- break;
- case float_round_to_zero:
- case float_round_down:
- z.low = LIT64( 0xFFFFFFFFFFFFFFFF );
- z.high = LIT64( 0x7FFEFFFFFFFFFFFF );
- break;
- }
- }
- return z;
- }
- if ( expField <= 0 ) {
- isTiny = TRUE;
- zx = savedZ;
- expField = zx.exp + 0x3FFF;
- if ( expField < -120 ) {
- zx.sig.a1 = ( zx.sig.a0 != 0 ) || ( zx.sig.a1 != 0 );
- zx.sig.a0 = 0;
- }
- else {
- while ( expField <= 0 ) {
- zx.sig = shortShift128RightJamming( zx.sig, 1 );
- ++expField;
- }
- }
- zx = roundFloatXTo113( isTiny, zx );
- expField = ( LIT64( 0x0080000000000000 ) <= zx.sig.a0 ) ? 1 : 0;
- }
- zx.sig = shortShift128RightJamming( zx.sig, 7 );
- z.low = zx.sig.a1;
- z.high = expField;
- z.high <<= 48;
- if ( zx.sign ) z.high |= LIT64( 0x8000000000000000 );
- z.high |= zx.sig.a0 & LIT64( 0x0000FFFFFFFFFFFF );
- return z;
-
-}
-
-#endif
-
-static floatX floatXInvalid( void )
-{
-
- slow_float_exception_flags |= float_flag_invalid;
- return floatXNaN;
-
-}
-
-static floatX floatXRoundToInt( floatX ax )
-{
- int32 shiftCount, i;
-
- if ( ax.isNaN || ax.isInf ) return ax;
- shiftCount = 112 - ax.exp;
- if ( shiftCount <= 0 ) return ax;
- if ( 119 < shiftCount ) {
- ax.exp = 112;
- ax.sig.a1 = ! ax.isZero;
- ax.sig.a0 = 0;
- }
- else {
- while ( 0 < shiftCount ) {
- ax.sig = shortShift128RightJamming( ax.sig, 1 );
- ++ax.exp;
- --shiftCount;
- }
- }
- ax = roundFloatXTo113( FALSE, ax );
- if ( ( ax.sig.a0 == 0 ) && ( ax.sig.a1 == 0 ) ) ax.isZero = TRUE;
- return ax;
-
-}
-
-static floatX floatXAdd( floatX ax, floatX bx )
-{
- int32 expDiff;
- floatX zx;
-
- if ( ax.isNaN ) return ax;
- if ( bx.isNaN ) return bx;
- if ( ax.isInf && bx.isInf ) {
- if ( ax.sign == bx.sign ) return ax;
- return floatXInvalid();
- }
- if ( ax.isInf ) return ax;
- if ( bx.isInf ) return bx;
- if ( ax.isZero && bx.isZero ) {
- if ( ax.sign == bx.sign ) return ax;
- goto completeCancellation;
- }
- if ( ( ax.sign != bx.sign )
- && ( ax.exp == bx.exp )
- && eq128( ax.sig, bx.sig )
- ) {
- completeCancellation:
- return
- ( slow_float_rounding_mode == float_round_down ) ?
- floatXNegativeZero
- : floatXPositiveZero;
- }
- if ( ax.isZero ) return bx;
- if ( bx.isZero ) return ax;
- expDiff = ax.exp - bx.exp;
- if ( expDiff < 0 ) {
- zx = ax;
- zx.exp = bx.exp;
- if ( expDiff < -120 ) {
- zx.sig.a1 = 1;
- zx.sig.a0 = 0;
- }
- else {
- while ( expDiff < 0 ) {
- zx.sig = shortShift128RightJamming( zx.sig, 1 );
- ++expDiff;
- }
- }
- if ( ax.sign != bx.sign ) zx.sig = neg128( zx.sig );
- zx.sign = bx.sign;
- zx.sig = add128( zx.sig, bx.sig );
- }
- else {
- zx = bx;
- zx.exp = ax.exp;
- if ( 120 < expDiff ) {
- zx.sig.a1 = 1;
- zx.sig.a0 = 0;
- }
- else {
- while ( 0 < expDiff ) {
- zx.sig = shortShift128RightJamming( zx.sig, 1 );
- --expDiff;
- }
- }
- if ( ax.sign != bx.sign ) zx.sig = neg128( zx.sig );
- zx.sign = ax.sign;
- zx.sig = add128( zx.sig, ax.sig );
- }
- if ( zx.sig.a0 & LIT64( 0x8000000000000000 ) ) {
- zx.sig = neg128( zx.sig );
- zx.sign = ! zx.sign;
- }
- return zx;
-
-}
-
-static floatX floatXMul( floatX ax, floatX bx )
-{
- int8 bitNum;
- floatX zx;
-
- if ( ax.isNaN ) return ax;
- if ( bx.isNaN ) return bx;
- if ( ax.isInf ) {
- if ( bx.isZero ) return floatXInvalid();
- if ( bx.sign ) ax.sign = ! ax.sign;
- return ax;
- }
- if ( bx.isInf ) {
- if ( ax.isZero ) return floatXInvalid();
- if ( ax.sign ) bx.sign = ! bx.sign;
- return bx;
- }
- zx = ax;
- zx.sign ^= bx.sign;
- if ( ax.isZero || bx.isZero ) {
- return zx.sign ? floatXNegativeZero : floatXPositiveZero;
- }
- zx.exp += bx.exp + 1;
- zx.sig.a1 = 0;
- zx.sig.a0 = 0;
- for ( bitNum = 0; bitNum < 119; ++bitNum ) {
- if ( bx.sig.a1 & 2 ) zx.sig = add128( zx.sig, ax.sig );
- bx.sig = shortShift128RightJamming( bx.sig, 1 );
- zx.sig = shortShift128RightJamming( zx.sig, 1 );
- }
- return zx;
-
-}
-
-static floatX floatXDiv( floatX ax, floatX bx )
-{
- bits128X negBSig;
- int8 bitNum;
- floatX zx;
-
- if ( ax.isNaN ) return ax;
- if ( bx.isNaN ) return bx;
- if ( ax.isInf ) {
- if ( bx.isInf ) return floatXInvalid();
- if ( bx.sign ) ax.sign = ! ax.sign;
- return ax;
- }
- if ( bx.isZero ) {
- if ( ax.isZero ) return floatXInvalid();
- slow_float_exception_flags |= float_flag_divbyzero;
- if ( ax.sign ) bx.sign = ! bx.sign;
- bx.isZero = FALSE;
- bx.isInf = TRUE;
- return bx;
- }
- zx = ax;
- zx.sign ^= bx.sign;
- if ( ax.isZero || bx.isInf ) {
- return zx.sign ? floatXNegativeZero : floatXPositiveZero;
- }
- zx.exp -= bx.exp + 1;
- zx.sig.a1 = 0;
- zx.sig.a0 = 0;
- negBSig = neg128( bx.sig );
- for ( bitNum = 0; bitNum < 120; ++bitNum ) {
- if ( le128( bx.sig, ax.sig ) ) {
- zx.sig.a1 |= 1;
- ax.sig = add128( ax.sig, negBSig );
- }
- ax.sig = shortShift128Left( ax.sig, 1 );
- zx.sig = shortShift128Left( zx.sig, 1 );
- }
- if ( ax.sig.a0 || ax.sig.a1 ) zx.sig.a1 |= 1;
- return zx;
-
-}
-
-static floatX floatXRem( floatX ax, floatX bx )
-{
- bits128X negBSig;
- flag lastQuotientBit;
- bits128X savedASig;
-
- if ( ax.isNaN ) return ax;
- if ( bx.isNaN ) return bx;
- if ( ax.isInf || bx.isZero ) return floatXInvalid();
- if ( ax.isZero || bx.isInf ) return ax;
- --bx.exp;
- if ( ax.exp < bx.exp ) return ax;
- bx.sig = shortShift128Left( bx.sig, 1 );
- negBSig = neg128( bx.sig );
- while ( bx.exp < ax.exp ) {
- if ( le128( bx.sig, ax.sig ) ) ax.sig = add128( ax.sig, negBSig );
- ax.sig = shortShift128Left( ax.sig, 1 );
- --ax.exp;
- }
- lastQuotientBit = le128( bx.sig, ax.sig );
- if ( lastQuotientBit ) ax.sig = add128( ax.sig, negBSig );
- savedASig = ax.sig;
- ax.sig = neg128( add128( ax.sig, negBSig ) );
- if ( lt128( ax.sig, savedASig ) ) {
- ax.sign = ! ax.sign;
- }
- else if ( lt128( savedASig, ax.sig ) ) {
- ax.sig = savedASig;
- }
- else {
- if ( lastQuotientBit ) {
- ax.sign = ! ax.sign;
- }
- else {
- ax.sig = savedASig;
- }
- }
- if ( ( ax.sig.a0 == 0 ) && ( ax.sig.a1 == 0 ) ) ax.isZero = TRUE;
- return ax;
-
-}
-
-static floatX floatXSqrt( floatX ax )
-{
- int8 bitNum;
- bits128X bitSig, savedASig;
- floatX zx;
-
- if ( ax.isNaN || ax.isZero ) return ax;
- if ( ax.sign ) return floatXInvalid();
- if ( ax.isInf ) return ax;
- zx = ax;
- zx.exp >>= 1;
- if ( ( ax.exp & 1 ) == 0 ) ax.sig = shortShift128RightJamming( ax.sig, 1 );
- zx.sig.a1 = 0;
- zx.sig.a0 = 0;
- bitSig.a1 = 0;
- bitSig.a0 = LIT64( 0x0080000000000000 );
- for ( bitNum = 0; bitNum < 120; ++bitNum ) {
- savedASig = ax.sig;
- ax.sig = add128( ax.sig, neg128( zx.sig ) );
- ax.sig = shortShift128Left( ax.sig, 1 );
- ax.sig = add128( ax.sig, neg128( bitSig ) );
- if ( ax.sig.a0 & LIT64( 0x8000000000000000 ) ) {
- ax.sig = shortShift128Left( savedASig, 1 );
- }
- else {
- zx.sig.a1 |= bitSig.a1;
- zx.sig.a0 |= bitSig.a0;
- }
- bitSig = shortShift128RightJamming( bitSig, 1 );
- }
- if ( ax.sig.a0 || ax.sig.a1 ) zx.sig.a1 |= 1;
- return zx;
-
-}
-
-static flag floatXEq( floatX ax, floatX bx )
-{
-
- if ( ax.isNaN || bx.isNaN ) return FALSE;
- if ( ax.isZero && bx.isZero ) return TRUE;
- if ( ax.sign != bx.sign ) return FALSE;
- if ( ax.isInf || bx.isInf ) return ax.isInf && bx.isInf;
- return ( ax.exp == bx.exp ) && eq128( ax.sig, bx.sig );
-
-}
-
-static flag floatXLe( floatX ax, floatX bx )
-{
-
- if ( ax.isNaN || bx.isNaN ) return FALSE;
- if ( ax.isZero && bx.isZero ) return TRUE;
- if ( ax.sign != bx.sign ) return ax.sign;
- if ( ax.sign ) {
- if ( ax.isInf || bx.isZero ) return TRUE;
- if ( bx.isInf || ax.isZero ) return FALSE;
- if ( bx.exp < ax.exp ) return TRUE;
- if ( ax.exp < bx.exp ) return FALSE;
- return le128( bx.sig, ax.sig );
- }
- else {
- if ( bx.isInf || ax.isZero ) return TRUE;
- if ( ax.isInf || bx.isZero ) return FALSE;
- if ( ax.exp < bx.exp ) return TRUE;
- if ( bx.exp < ax.exp ) return FALSE;
- return le128( ax.sig, bx.sig );
- }
-
-}
-
-static flag floatXLt( floatX ax, floatX bx )
-{
-
- if ( ax.isNaN || bx.isNaN ) return FALSE;
- if ( ax.isZero && bx.isZero ) return FALSE;
- if ( ax.sign != bx.sign ) return ax.sign;
- if ( ax.isInf && bx.isInf ) return FALSE;
- if ( ax.sign ) {
- if ( ax.isInf || bx.isZero ) return TRUE;
- if ( bx.isInf || ax.isZero ) return FALSE;
- if ( bx.exp < ax.exp ) return TRUE;
- if ( ax.exp < bx.exp ) return FALSE;
- return lt128( bx.sig, ax.sig );
- }
- else {
- if ( bx.isInf || ax.isZero ) return TRUE;
- if ( ax.isInf || bx.isZero ) return FALSE;
- if ( ax.exp < bx.exp ) return TRUE;
- if ( bx.exp < ax.exp ) return FALSE;
- return lt128( ax.sig, bx.sig );
- }
-
-}
-
-float32 slow_int32_to_float32( int32 a )
-{
-
- return floatXToFloat32( int32ToFloatX( a ) );
-
-}
-
-float64 slow_int32_to_float64( int32 a )
-{
-
- return floatXToFloat64( int32ToFloatX( a ) );
-
-}
-
-#ifdef FLOATX80
-
-floatx80 slow_int32_to_floatx80( int32 a )
-{
-
- return floatXToFloatx80( int32ToFloatX( a ) );
-
-}
-
-#endif
-
-#ifdef FLOAT128
-
-float128 slow_int32_to_float128( int32 a )
-{
-
- return floatXToFloat128( int32ToFloatX( a ) );
-
-}
-
-#endif
-
-float32 slow_int64_to_float32( int64 a )
-{
-
- return floatXToFloat32( int64ToFloatX( a ) );
-
-}
-
-float64 slow_int64_to_float64( int64 a )
-{
-
- return floatXToFloat64( int64ToFloatX( a ) );
-
-}
-
-#ifdef FLOATX80
-
-floatx80 slow_int64_to_floatx80( int64 a )
-{
-
- return floatXToFloatx80( int64ToFloatX( a ) );
-
-}
-
-#endif
-
-#ifdef FLOAT128
-
-float128 slow_int64_to_float128( int64 a )
-{
-
- return floatXToFloat128( int64ToFloatX( a ) );
-
-}
-
-#endif
-
-int32 slow_float32_to_int32( float32 a )
-{
-
- return floatXToInt32( float32ToFloatX( a ) );
-
-}
-
-int32 slow_float32_to_int32_round_to_zero( float32 a )
-{
- int8 savedRoundingMode;
- int32 z;
-
- savedRoundingMode = slow_float_rounding_mode;
- slow_float_rounding_mode = float_round_to_zero;
- z = floatXToInt32( float32ToFloatX( a ) );
- slow_float_rounding_mode = savedRoundingMode;
- return z;
-
-}
-
-int64 slow_float32_to_int64( float32 a )
-{
-
- return floatXToInt64( float32ToFloatX( a ) );
-
-}
-
-int64 slow_float32_to_int64_round_to_zero( float32 a )
-{
- int8 savedRoundingMode;
- int64 z;
-
- savedRoundingMode = slow_float_rounding_mode;
- slow_float_rounding_mode = float_round_to_zero;
- z = floatXToInt64( float32ToFloatX( a ) );
- slow_float_rounding_mode = savedRoundingMode;
- return z;
-
-}
-
-float64 slow_float32_to_float64( float32 a )
-{
-
- return floatXToFloat64( float32ToFloatX( a ) );
-
-}
-
-#ifdef FLOATX80
-
-floatx80 slow_float32_to_floatx80( float32 a )
-{
-
- return floatXToFloatx80( float32ToFloatX( a ) );
-
-}
-
-#endif
-
-#ifdef FLOAT128
-
-float128 slow_float32_to_float128( float32 a )
-{
-
- return floatXToFloat128( float32ToFloatX( a ) );
-
-}
-
-#endif
-
-float32 slow_float32_round_to_int( float32 a )
-{
-
- return floatXToFloat32( floatXRoundToInt( float32ToFloatX( a ) ) );
-
-}
-
-float32 slow_float32_add( float32 a, float32 b )
-{
-
- return
- floatXToFloat32(
- floatXAdd( float32ToFloatX( a ), float32ToFloatX( b ) ) );
-
-}
-
-float32 slow_float32_sub( float32 a, float32 b )
-{
-
- b ^= 0x80000000;
- return
- floatXToFloat32(
- floatXAdd( float32ToFloatX( a ), float32ToFloatX( b ) ) );
-
-}
-
-float32 slow_float32_mul( float32 a, float32 b )
-{
-
- return
- floatXToFloat32(
- floatXMul( float32ToFloatX( a ), float32ToFloatX( b ) ) );
-
-}
-
-float32 slow_float32_div( float32 a, float32 b )
-{
-
- return
- floatXToFloat32(
- floatXDiv( float32ToFloatX( a ), float32ToFloatX( b ) ) );
-
-}
-
-float32 slow_float32_rem( float32 a, float32 b )
-{
-
- return
- floatXToFloat32(
- floatXRem( float32ToFloatX( a ), float32ToFloatX( b ) ) );
-
-}
-
-float32 slow_float32_sqrt( float32 a )
-{
-
- return floatXToFloat32( floatXSqrt( float32ToFloatX( a ) ) );
-
-}
-
-flag slow_float32_eq( float32 a, float32 b )
-{
-
- return floatXEq( float32ToFloatX( a ), float32ToFloatX( b ) );
-
-}
-
-flag slow_float32_le( float32 a, float32 b )
-{
- floatX ax, bx;
-
- ax = float32ToFloatX( a );
- bx = float32ToFloatX( b );
- if ( ax.isNaN || bx.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- }
- return floatXLe( ax, bx );
-
-}
-
-flag slow_float32_lt( float32 a, float32 b )
-{
- floatX ax, bx;
-
- ax = float32ToFloatX( a );
- bx = float32ToFloatX( b );
- if ( ax.isNaN || bx.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- }
- return floatXLt( ax, bx );
-
-}
-
-flag slow_float32_eq_signaling( float32 a, float32 b )
-{
- floatX ax, bx;
-
- ax = float32ToFloatX( a );
- bx = float32ToFloatX( b );
- if ( ax.isNaN || bx.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- }
- return floatXEq( ax, bx );
-
-}
-
-flag slow_float32_le_quiet( float32 a, float32 b )
-{
-
- return floatXLe( float32ToFloatX( a ), float32ToFloatX( b ) );
-
-}
-
-flag slow_float32_lt_quiet( float32 a, float32 b )
-{
-
- return floatXLt( float32ToFloatX( a ), float32ToFloatX( b ) );
-
-}
-
-int32 slow_float64_to_int32( float64 a )
-{
-
- return floatXToInt32( float64ToFloatX( a ) );
-
-}
-
-int32 slow_float64_to_int32_round_to_zero( float64 a )
-{
- int8 savedRoundingMode;
- int32 z;
-
- savedRoundingMode = slow_float_rounding_mode;
- slow_float_rounding_mode = float_round_to_zero;
- z = floatXToInt32( float64ToFloatX( a ) );
- slow_float_rounding_mode = savedRoundingMode;
- return z;
-
-}
-
-int64 slow_float64_to_int64( float64 a )
-{
-
- return floatXToInt64( float64ToFloatX( a ) );
-
-}
-
-int64 slow_float64_to_int64_round_to_zero( float64 a )
-{
- int8 savedRoundingMode;
- int64 z;
-
- savedRoundingMode = slow_float_rounding_mode;
- slow_float_rounding_mode = float_round_to_zero;
- z = floatXToInt64( float64ToFloatX( a ) );
- slow_float_rounding_mode = savedRoundingMode;
- return z;
-
-}
-
-float32 slow_float64_to_float32( float64 a )
-{
-
- return floatXToFloat32( float64ToFloatX( a ) );
-
-}
-
-#ifdef FLOATX80
-
-floatx80 slow_float64_to_floatx80( float64 a )
-{
-
- return floatXToFloatx80( float64ToFloatX( a ) );
-
-}
-
-#endif
-
-#ifdef FLOAT128
-
-float128 slow_float64_to_float128( float64 a )
-{
-
- return floatXToFloat128( float64ToFloatX( a ) );
-
-}
-
-#endif
-
-float64 slow_float64_round_to_int( float64 a )
-{
-
- return floatXToFloat64( floatXRoundToInt( float64ToFloatX( a ) ) );
-
-}
-
-float64 slow_float64_add( float64 a, float64 b )
-{
-
- return
- floatXToFloat64(
- floatXAdd( float64ToFloatX( a ), float64ToFloatX( b ) ) );
-
-}
-
-float64 slow_float64_sub( float64 a, float64 b )
-{
-
- b ^= LIT64( 0x8000000000000000 );
- return
- floatXToFloat64(
- floatXAdd( float64ToFloatX( a ), float64ToFloatX( b ) ) );
-
-}
-
-float64 slow_float64_mul( float64 a, float64 b )
-{
-
- return
- floatXToFloat64(
- floatXMul( float64ToFloatX( a ), float64ToFloatX( b ) ) );
-
-}
-
-float64 slow_float64_div( float64 a, float64 b )
-{
-
- return
- floatXToFloat64(
- floatXDiv( float64ToFloatX( a ), float64ToFloatX( b ) ) );
-
-}
-
-float64 slow_float64_rem( float64 a, float64 b )
-{
-
- return
- floatXToFloat64(
- floatXRem( float64ToFloatX( a ), float64ToFloatX( b ) ) );
-
-}
-
-float64 slow_float64_sqrt( float64 a )
-{
-
- return floatXToFloat64( floatXSqrt( float64ToFloatX( a ) ) );
-
-}
-
-flag slow_float64_eq( float64 a, float64 b )
-{
-
- return floatXEq( float64ToFloatX( a ), float64ToFloatX( b ) );
-
-}
-
-flag slow_float64_le( float64 a, float64 b )
-{
- floatX ax, bx;
-
- ax = float64ToFloatX( a );
- bx = float64ToFloatX( b );
- if ( ax.isNaN || bx.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- }
- return floatXLe( ax, bx );
-
-}
-
-flag slow_float64_lt( float64 a, float64 b )
-{
- floatX ax, bx;
-
- ax = float64ToFloatX( a );
- bx = float64ToFloatX( b );
- if ( ax.isNaN || bx.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- }
- return floatXLt( ax, bx );
-
-}
-
-flag slow_float64_eq_signaling( float64 a, float64 b )
-{
- floatX ax, bx;
-
- ax = float64ToFloatX( a );
- bx = float64ToFloatX( b );
- if ( ax.isNaN || bx.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- }
- return floatXEq( ax, bx );
-
-}
-
-flag slow_float64_le_quiet( float64 a, float64 b )
-{
-
- return floatXLe( float64ToFloatX( a ), float64ToFloatX( b ) );
-
-}
-
-flag slow_float64_lt_quiet( float64 a, float64 b )
-{
-
- return floatXLt( float64ToFloatX( a ), float64ToFloatX( b ) );
-
-}
-
-#ifdef FLOATX80
-
-int32 slow_floatx80_to_int32( floatx80 a )
-{
-
- return floatXToInt32( floatx80ToFloatX( a ) );
-
-}
-
-int32 slow_floatx80_to_int32_round_to_zero( floatx80 a )
-{
- int8 savedRoundingMode;
- int32 z;
-
- savedRoundingMode = slow_float_rounding_mode;
- slow_float_rounding_mode = float_round_to_zero;
- z = floatXToInt32( floatx80ToFloatX( a ) );
- slow_float_rounding_mode = savedRoundingMode;
- return z;
-
-}
-
-int64 slow_floatx80_to_int64( floatx80 a )
-{
-
- return floatXToInt64( floatx80ToFloatX( a ) );
-
-}
-
-int64 slow_floatx80_to_int64_round_to_zero( floatx80 a )
-{
- int8 savedRoundingMode;
- int64 z;
-
- savedRoundingMode = slow_float_rounding_mode;
- slow_float_rounding_mode = float_round_to_zero;
- z = floatXToInt64( floatx80ToFloatX( a ) );
- slow_float_rounding_mode = savedRoundingMode;
- return z;
-
-}
-
-float32 slow_floatx80_to_float32( floatx80 a )
-{
-
- return floatXToFloat32( floatx80ToFloatX( a ) );
-
-}
-
-float64 slow_floatx80_to_float64( floatx80 a )
-{
-
- return floatXToFloat64( floatx80ToFloatX( a ) );
-
-}
-
-#ifdef FLOAT128
-
-float128 slow_floatx80_to_float128( floatx80 a )
-{
-
- return floatXToFloat128( floatx80ToFloatX( a ) );
-
-}
-
-#endif
-
-floatx80 slow_floatx80_round_to_int( floatx80 a )
-{
-
- return floatXToFloatx80( floatXRoundToInt( floatx80ToFloatX( a ) ) );
-
-}
-
-floatx80 slow_floatx80_add( floatx80 a, floatx80 b )
-{
-
- return
- floatXToFloatx80(
- floatXAdd( floatx80ToFloatX( a ), floatx80ToFloatX( b ) ) );
-
-}
-
-floatx80 slow_floatx80_sub( floatx80 a, floatx80 b )
-{
-
- b.high ^= 0x8000;
- return
- floatXToFloatx80(
- floatXAdd( floatx80ToFloatX( a ), floatx80ToFloatX( b ) ) );
-
-}
-
-floatx80 slow_floatx80_mul( floatx80 a, floatx80 b )
-{
-
- return
- floatXToFloatx80(
- floatXMul( floatx80ToFloatX( a ), floatx80ToFloatX( b ) ) );
-
-}
-
-floatx80 slow_floatx80_div( floatx80 a, floatx80 b )
-{
-
- return
- floatXToFloatx80(
- floatXDiv( floatx80ToFloatX( a ), floatx80ToFloatX( b ) ) );
-
-}
-
-floatx80 slow_floatx80_rem( floatx80 a, floatx80 b )
-{
-
- return
- floatXToFloatx80(
- floatXRem( floatx80ToFloatX( a ), floatx80ToFloatX( b ) ) );
-
-}
-
-floatx80 slow_floatx80_sqrt( floatx80 a )
-{
-
- return floatXToFloatx80( floatXSqrt( floatx80ToFloatX( a ) ) );
-
-}
-
-flag slow_floatx80_eq( floatx80 a, floatx80 b )
-{
-
- return floatXEq( floatx80ToFloatX( a ), floatx80ToFloatX( b ) );
-
-}
-
-flag slow_floatx80_le( floatx80 a, floatx80 b )
-{
- floatX ax, bx;
-
- ax = floatx80ToFloatX( a );
- bx = floatx80ToFloatX( b );
- if ( ax.isNaN || bx.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- }
- return floatXLe( ax, bx );
-
-}
-
-flag slow_floatx80_lt( floatx80 a, floatx80 b )
-{
- floatX ax, bx;
-
- ax = floatx80ToFloatX( a );
- bx = floatx80ToFloatX( b );
- if ( ax.isNaN || bx.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- }
- return floatXLt( ax, bx );
-
-}
-
-flag slow_floatx80_eq_signaling( floatx80 a, floatx80 b )
-{
- floatX ax, bx;
-
- ax = floatx80ToFloatX( a );
- bx = floatx80ToFloatX( b );
- if ( ax.isNaN || bx.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- }
- return floatXEq( ax, bx );
-
-}
-
-flag slow_floatx80_le_quiet( floatx80 a, floatx80 b )
-{
-
- return floatXLe( floatx80ToFloatX( a ), floatx80ToFloatX( b ) );
-
-}
-
-flag slow_floatx80_lt_quiet( floatx80 a, floatx80 b )
-{
-
- return floatXLt( floatx80ToFloatX( a ), floatx80ToFloatX( b ) );
-
-}
-
-#endif
-
-#ifdef FLOAT128
-
-int32 slow_float128_to_int32( float128 a )
-{
-
- return floatXToInt32( float128ToFloatX( a ) );
-
-}
-
-int32 slow_float128_to_int32_round_to_zero( float128 a )
-{
- int8 savedRoundingMode;
- int32 z;
-
- savedRoundingMode = slow_float_rounding_mode;
- slow_float_rounding_mode = float_round_to_zero;
- z = floatXToInt32( float128ToFloatX( a ) );
- slow_float_rounding_mode = savedRoundingMode;
- return z;
-
-}
-
-int64 slow_float128_to_int64( float128 a )
-{
-
- return floatXToInt64( float128ToFloatX( a ) );
-
-}
-
-int64 slow_float128_to_int64_round_to_zero( float128 a )
-{
- int8 savedRoundingMode;
- int64 z;
-
- savedRoundingMode = slow_float_rounding_mode;
- slow_float_rounding_mode = float_round_to_zero;
- z = floatXToInt64( float128ToFloatX( a ) );
- slow_float_rounding_mode = savedRoundingMode;
- return z;
-
-}
-
-float32 slow_float128_to_float32( float128 a )
-{
-
- return floatXToFloat32( float128ToFloatX( a ) );
-
-}
-
-float64 slow_float128_to_float64( float128 a )
-{
-
- return floatXToFloat64( float128ToFloatX( a ) );
-
-}
-
-#ifdef FLOATX80
-
-floatx80 slow_float128_to_floatx80( float128 a )
-{
-
- return floatXToFloatx80( float128ToFloatX( a ) );
-
-}
-
-#endif
-
-float128 slow_float128_round_to_int( float128 a )
-{
-
- return floatXToFloat128( floatXRoundToInt( float128ToFloatX( a ) ) );
-
-}
-
-float128 slow_float128_add( float128 a, float128 b )
-{
-
- return
- floatXToFloat128(
- floatXAdd( float128ToFloatX( a ), float128ToFloatX( b ) ) );
-
-}
-
-float128 slow_float128_sub( float128 a, float128 b )
-{
-
- b.high ^= LIT64( 0x8000000000000000 );
- return
- floatXToFloat128(
- floatXAdd( float128ToFloatX( a ), float128ToFloatX( b ) ) );
-
-}
-
-float128 slow_float128_mul( float128 a, float128 b )
-{
-
- return
- floatXToFloat128(
- floatXMul( float128ToFloatX( a ), float128ToFloatX( b ) ) );
-
-}
-
-float128 slow_float128_div( float128 a, float128 b )
-{
-
- return
- floatXToFloat128(
- floatXDiv( float128ToFloatX( a ), float128ToFloatX( b ) ) );
-
-}
-
-float128 slow_float128_rem( float128 a, float128 b )
-{
-
- return
- floatXToFloat128(
- floatXRem( float128ToFloatX( a ), float128ToFloatX( b ) ) );
-
-}
-
-float128 slow_float128_sqrt( float128 a )
-{
-
- return floatXToFloat128( floatXSqrt( float128ToFloatX( a ) ) );
-
-}
-
-flag slow_float128_eq( float128 a, float128 b )
-{
-
- return floatXEq( float128ToFloatX( a ), float128ToFloatX( b ) );
-
-}
-
-flag slow_float128_le( float128 a, float128 b )
-{
- floatX ax, bx;
-
- ax = float128ToFloatX( a );
- bx = float128ToFloatX( b );
- if ( ax.isNaN || bx.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- }
- return floatXLe( ax, bx );
-
-}
-
-flag slow_float128_lt( float128 a, float128 b )
-{
- floatX ax, bx;
-
- ax = float128ToFloatX( a );
- bx = float128ToFloatX( b );
- if ( ax.isNaN || bx.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- }
- return floatXLt( ax, bx );
-
-}
-
-flag slow_float128_eq_signaling( float128 a, float128 b )
-{
- floatX ax, bx;
-
- ax = float128ToFloatX( a );
- bx = float128ToFloatX( b );
- if ( ax.isNaN || bx.isNaN ) {
- slow_float_exception_flags |= float_flag_invalid;
- }
- return floatXEq( ax, bx );
-
-}
-
-flag slow_float128_le_quiet( float128 a, float128 b )
-{
-
- return floatXLe( float128ToFloatX( a ), float128ToFloatX( b ) );
-
-}
-
-flag slow_float128_lt_quiet( float128 a, float128 b )
-{
-
- return floatXLt( float128ToFloatX( a ), float128ToFloatX( b ) );
-
-}
-
-#endif
-
diff --git a/tools/test/testfloat/slowfloat.c b/tools/test/testfloat/slowfloat.c
deleted file mode 100644
index ea69f82908ec..000000000000
--- a/tools/test/testfloat/slowfloat.c
+++ /dev/null
@@ -1,35 +0,0 @@
-
-/*
-===============================================================================
-
-This C source file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-#include "milieu.h"
-#include "softfloat.h"
-#include "slowfloat.h"
-
-#ifdef BITS64
-#include "slowfloat-64.c"
-#else
-#include "slowfloat-32.c"
-#endif
-
diff --git a/tools/test/testfloat/slowfloat.h b/tools/test/testfloat/slowfloat.h
deleted file mode 100644
index 45c6c6be00a1..000000000000
--- a/tools/test/testfloat/slowfloat.h
+++ /dev/null
@@ -1,167 +0,0 @@
-
-/*
-===============================================================================
-
-This C header file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-extern int8 slow_float_rounding_mode;
-extern int8 slow_float_exception_flags;
-extern int8 slow_float_detect_tininess;
-#ifdef FLOATX80
-extern int8 slow_floatx80_rounding_precision;
-#endif
-
-float32 slow_int32_to_float32( int32 );
-float64 slow_int32_to_float64( int32 );
-#ifdef FLOATX80
-floatx80 slow_int32_to_floatx80( int32 );
-#endif
-#ifdef FLOAT128
-float128 slow_int32_to_float128( int32 );
-#endif
-#ifdef BITS64
-float32 slow_int64_to_float32( int64 );
-float64 slow_int64_to_float64( int64 );
-#ifdef FLOATX80
-floatx80 slow_int64_to_floatx80( int64 );
-#endif
-#ifdef FLOAT128
-float128 slow_int64_to_float128( int64 );
-#endif
-#endif
-
-int32 slow_float32_to_int32( float32 );
-int32 slow_float32_to_int32_round_to_zero( float32 );
-#ifdef BITS64
-int64 slow_float32_to_int64( float32 );
-int64 slow_float32_to_int64_round_to_zero( float32 );
-#endif
-float64 slow_float32_to_float64( float32 );
-#ifdef FLOATX80
-floatx80 slow_float32_to_floatx80( float32 );
-#endif
-#ifdef FLOAT128
-float128 slow_float32_to_float128( float32 );
-#endif
-
-float32 slow_float32_round_to_int( float32 );
-float32 slow_float32_add( float32, float32 );
-float32 slow_float32_sub( float32, float32 );
-float32 slow_float32_mul( float32, float32 );
-float32 slow_float32_div( float32, float32 );
-float32 slow_float32_rem( float32, float32 );
-float32 slow_float32_sqrt( float32 );
-flag slow_float32_eq( float32, float32 );
-flag slow_float32_le( float32, float32 );
-flag slow_float32_lt( float32, float32 );
-flag slow_float32_eq_signaling( float32, float32 );
-flag slow_float32_le_quiet( float32, float32 );
-flag slow_float32_lt_quiet( float32, float32 );
-
-int32 slow_float64_to_int32( float64 );
-int32 slow_float64_to_int32_round_to_zero( float64 );
-#ifdef BITS64
-int64 slow_float64_to_int64( float64 );
-int64 slow_float64_to_int64_round_to_zero( float64 );
-#endif
-float32 slow_float64_to_float32( float64 );
-#ifdef FLOATX80
-floatx80 slow_float64_to_floatx80( float64 );
-#endif
-#ifdef FLOAT128
-float128 slow_float64_to_float128( float64 );
-#endif
-
-float64 slow_float64_round_to_int( float64 );
-float64 slow_float64_add( float64, float64 );
-float64 slow_float64_sub( float64, float64 );
-float64 slow_float64_mul( float64, float64 );
-float64 slow_float64_div( float64, float64 );
-float64 slow_float64_rem( float64, float64 );
-float64 slow_float64_sqrt( float64 );
-flag slow_float64_eq( float64, float64 );
-flag slow_float64_le( float64, float64 );
-flag slow_float64_lt( float64, float64 );
-flag slow_float64_eq_signaling( float64, float64 );
-flag slow_float64_le_quiet( float64, float64 );
-flag slow_float64_lt_quiet( float64, float64 );
-
-#ifdef FLOATX80
-
-int32 slow_floatx80_to_int32( floatx80 );
-int32 slow_floatx80_to_int32_round_to_zero( floatx80 );
-#ifdef BITS64
-int64 slow_floatx80_to_int64( floatx80 );
-int64 slow_floatx80_to_int64_round_to_zero( floatx80 );
-#endif
-float32 slow_floatx80_to_float32( floatx80 );
-float64 slow_floatx80_to_float64( floatx80 );
-#ifdef FLOAT128
-float128 slow_floatx80_to_float128( floatx80 );
-#endif
-
-floatx80 slow_floatx80_round_to_int( floatx80 );
-floatx80 slow_floatx80_add( floatx80, floatx80 );
-floatx80 slow_floatx80_sub( floatx80, floatx80 );
-floatx80 slow_floatx80_mul( floatx80, floatx80 );
-floatx80 slow_floatx80_div( floatx80, floatx80 );
-floatx80 slow_floatx80_rem( floatx80, floatx80 );
-floatx80 slow_floatx80_sqrt( floatx80 );
-flag slow_floatx80_eq( floatx80, floatx80 );
-flag slow_floatx80_le( floatx80, floatx80 );
-flag slow_floatx80_lt( floatx80, floatx80 );
-flag slow_floatx80_eq_signaling( floatx80, floatx80 );
-flag slow_floatx80_le_quiet( floatx80, floatx80 );
-flag slow_floatx80_lt_quiet( floatx80, floatx80 );
-
-#endif
-
-#ifdef FLOAT128
-
-int32 slow_float128_to_int32( float128 );
-int32 slow_float128_to_int32_round_to_zero( float128 );
-#ifdef BITS64
-int64 slow_float128_to_int64( float128 );
-int64 slow_float128_to_int64_round_to_zero( float128 );
-#endif
-float32 slow_float128_to_float32( float128 );
-float64 slow_float128_to_float64( float128 );
-#ifdef FLOATX80
-floatx80 slow_float128_to_floatx80( float128 );
-#endif
-
-float128 slow_float128_round_to_int( float128 );
-float128 slow_float128_add( float128, float128 );
-float128 slow_float128_sub( float128, float128 );
-float128 slow_float128_mul( float128, float128 );
-float128 slow_float128_div( float128, float128 );
-float128 slow_float128_rem( float128, float128 );
-float128 slow_float128_sqrt( float128 );
-flag slow_float128_eq( float128, float128 );
-flag slow_float128_le( float128, float128 );
-flag slow_float128_lt( float128, float128 );
-flag slow_float128_eq_signaling( float128, float128 );
-flag slow_float128_le_quiet( float128, float128 );
-flag slow_float128_lt_quiet( float128, float128 );
-
-#endif
-
diff --git a/tools/test/testfloat/systemBugs.txt b/tools/test/testfloat/systemBugs.txt
deleted file mode 100644
index ec95894a2849..000000000000
--- a/tools/test/testfloat/systemBugs.txt
+++ /dev/null
@@ -1,323 +0,0 @@
-
-Known Floating-point Bugs Detected by TestFloat
-
-John R. Hauser
-1997 December 15
-
-
--------------------------------------------------------------------------------
-Introduction
-
-Several popular systems have bugs that TestFloat is very likely to run
-across. The ones I know of are documented here. First off, TestFloat finds
-no errors in the following processors/machines:
-
- AMD 486 DX4's
- Sun UltraSPARC 1's and 2's
-
-On the other hand, bugs are found in these processors/machines:
-
- Older Intel Pentiums (with the divide bug)
- Intel Pentium Pros
- Sun SPARCstation 1's and IPX's
- Sun SPARCstation 10's
- HP Precision Architecture processors, with HP-UX prior to version 10.10
-
-For some reason, most of the bugs found involve conversions from floating-
-point to integer formats.
-
-The bugs are shown as actual TestFloat error lines, along with a brief
-explanation. The error lines given are not necessarily exhaustive and were
-not necessarily output in the order shown.
-
-This document does not pretend to be an authoritative bug listing for all
-commercial processors. The vast majority of processors are absent from this
-list because I have never run TestFloat on such machines and I thus have no
-knowledge of what bugs TestFloat might find in them.
-
-The latest version of this file can be found at the Web page `http://
-http.cs.berkeley.edu/~jhauser/arithmetic/testfloat.html'.
-
-
--------------------------------------------------------------------------------
-Older Intel Pentiums (with the divide bug)
-
-The following conversion problems are found on Pentiums that also suffer
-from the infamous floating-point divide bug. These bugs have been fixed on
-newer Pentiums. (TestFloat does not find the divide bug.)
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-floatx80_to_int32
-
--- A few small fractions are treated as though they were zero.
-
- Errors found in floatx80_to_int32, rounding nearest_even:
- 3FFB.8000000000000000 soft: 00000000 ....x syst: 00000000 .....
- 3FFC.8000000000000000 soft: 00000000 ....x syst: 00000000 .....
- 3FFC.C000000000000000 soft: 00000000 ....x syst: 00000000 .....
- BFFB.8000000000000000 soft: 00000000 ....x syst: 00000000 .....
- BFFC.8000000000000000 soft: 00000000 ....x syst: 00000000 .....
- Errors found in floatx80_to_int32, rounding to_zero:
- 3FFB.8000000000000000 soft: 00000000 ....x syst: 00000000 .....
- 3FFC.8000000000000000 soft: 00000000 ....x syst: 00000000 .....
- 3FFC.C000000000000000 soft: 00000000 ....x syst: 00000000 .....
- BFFB.8000000000000000 soft: 00000000 ....x syst: 00000000 .....
- BFFC.8000000000000000 soft: 00000000 ....x syst: 00000000 .....
- BFFC.C000000000000000 soft: 00000000 ....x syst: 00000000 .....
- Errors found in floatx80_to_int32, rounding down:
- 3FFB.8000000000000000 soft: 00000000 ....x syst: 00000000 .....
- 3FFC.8000000000000000 soft: 00000000 ....x syst: 00000000 .....
- 3FFC.C000000000000000 soft: 00000000 ....x syst: 00000000 .....
- BFFB.8000000000000000 soft: FFFFFFFF ....x syst: 00000000 .....
- BFFC.8000000000000000 soft: FFFFFFFF ....x syst: 00000000 .....
- BFFC.C000000000000000 soft: FFFFFFFF ....x syst: 00000000 .....
- Errors found in floatx80_to_int32, rounding up:
- 3FFB.8000000000000000 soft: 00000001 ....x syst: 00000000 .....
- 3FFC.8000000000000000 soft: 00000001 ....x syst: 00000000 .....
- 3FFC.C000000000000000 soft: 00000001 ....x syst: 00000000 .....
- BFFB.8000000000000000 soft: 00000000 ....x syst: 00000000 .....
- BFFC.8000000000000000 soft: 00000000 ....x syst: 00000000 .....
-
- 3FFB.8000000000000000 is the fraction 1/16; 3FFC.8000000000000000 is 1/8;
- and 3FFC.C000000000000000 is 3/16. Both positive and negative inputs are
- affected.
-
--- Some (all?) positive floating-point values between 2^32 - 1/2
- (401E.FFFFFFFF00000000) and 2^32 (401F.0000000000000000) are rounded to
- zero when the rounding mode is nearest/even or up.
-
- Errors found in floatx80_to_int32, rounding nearest_even:
- 401E.FFFFFFFF80000000 soft: 7FFFFFFF v.... syst: 00000000 ....x
- 401E.FFFFFFFFC00001FE soft: 7FFFFFFF v.... syst: 00000000 ....x
- 401E.FFFFFFFFF8000000 soft: 7FFFFFFF v.... syst: 00000000 ....x
- 401E.FFFFFFFFFEC00000 soft: 7FFFFFFF v.... syst: 00000000 ....x
- 401E.FFFFFFFFFF002000 soft: 7FFFFFFF v.... syst: 00000000 ....x
- 401E.FFFFFFFFFFC00000 soft: 7FFFFFFF v.... syst: 00000000 ....x
- 401E.FFFFFFFFFFE00000 soft: 7FFFFFFF v.... syst: 00000000 ....x
- 401E.FFFFFFFFFFFD7FFE soft: 7FFFFFFF v.... syst: 00000000 ....x
- 401E.FFFFFFFFFFFFFFFE soft: 7FFFFFFF v.... syst: 00000000 ....x
- 401E.FFFFFFFFFFFFFFFF soft: 7FFFFFFF v.... syst: 00000000 ....x
- Errors found in floatx80_to_int32, rounding up:
- 401E.FFFFFFFF00800000 soft: 7FFFFFFF v.... syst: 00000000 ....x
- 401E.FFFFFFFF80000000 soft: 7FFFFFFF v.... syst: 00000000 ....x
- 401E.FFFFFFFFEFFFC000 soft: 7FFFFFFF v.... syst: 00000000 ....x
- 401E.FFFFFFFFFC000000 soft: 7FFFFFFF v.... syst: 00000000 ....x
- 401E.FFFFFFFFFE7FFFFF soft: 7FFFFFFF v.... syst: 00000000 ....x
- 401E.FFFFFFFFFFF00000 soft: 7FFFFFFF v.... syst: 00000000 ....x
- 401E.FFFFFFFFFFFE0800 soft: 7FFFFFFF v.... syst: 00000000 ....x
- 401E.FFFFFFFFFFFF7FFB soft: 7FFFFFFF v.... syst: 00000000 ....x
- 401E.FFFFFFFFFFFFFFFE soft: 7FFFFFFF v.... syst: 00000000 ....x
- 401E.FFFFFFFFFFFFFFFF soft: 7FFFFFFF v.... syst: 00000000 ....x
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
--------------------------------------------------------------------------------
-Intel Pentium Pros
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-floatx80_to_int32
-
--- The inexact flag is sometimes raised instead of the invalid flag for
- floating-point inputs under -(2^32) (C01F.0000000000000000). This bug is
- sporadic. It appears to be deterministic but dependent on the sequence
- of operations executed.
-
- Errors found in floatx80_to_int32, rounding nearest_even:
- C01F.C000000000000002 soft: 80000000 v.... syst: 80000000 ....x
- C021.F00000000000003F soft: 80000000 v.... syst: 80000000 ....x
- Errors found in floatx80_to_int32, rounding to_zero:
- C021.F00000000000003F soft: 80000000 v.... syst: 80000000 ....x
- Errors found in floatx80_to_int32, rounding up:
- C01F.C000000000000007 soft: 80000000 v.... syst: 80000000 ....x
- C01F.C000000000001000 soft: 80000000 v.... syst: 80000000 ....x
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
--------------------------------------------------------------------------------
-Sun SPARCstation 1's and IPX's
-
-Some older SPARCstations appear confused about whether underflow tininess is
-detected before or after rounding. For conversions from double precision
-to single precision, tininess is detected after rounding, while for all
-quadruple-precision operations it is detected before rounding. Single- and
-double-precision multipies go both ways:
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-float32_mul, float64_mul
-
--- For multiplies, underflow tininess is detected _before_ rounding if one
- of the inputs is subnormal, and _after_ rounding otherwise. If tininess
- is assumed to be detected before rounding, the following errors are
- generated:
-
- Errors found in float32_mul, rounding nearest_even:
- 001.000001 07E.7FFFFE soft: 001.000000 ...ux syst: 001.000000 ....x
- 001.000001 87E.7FFFFE soft: 801.000000 ...ux syst: 801.000000 ....x
- 001.000002 07E.7FFFFC soft: 001.000000 ...ux syst: 001.000000 ....x
- 001.000002 87E.7FFFFC soft: 801.000000 ...ux syst: 801.000000 ....x
- 001.000004 07E.7FFFF8 soft: 001.000000 ...ux syst: 001.000000 ....x
- Errors found in float32_mul, rounding down:
- 001.000001 87E.7FFFFE soft: 801.000000 ...ux syst: 801.000000 ....x
- 001.000002 87E.7FFFFC soft: 801.000000 ...ux syst: 801.000000 ....x
- 001.000004 87E.7FFFF8 soft: 801.000000 ...ux syst: 801.000000 ....x
- 001.000008 87E.7FFFF0 soft: 801.000000 ...ux syst: 801.000000 ....x
- 001.000010 87E.7FFFE0 soft: 801.000000 ...ux syst: 801.000000 ....x
- Errors found in float32_mul, rounding up:
- 001.000001 07E.7FFFFE soft: 001.000000 ...ux syst: 001.000000 ....x
- 001.000002 07E.7FFFFC soft: 001.000000 ...ux syst: 001.000000 ....x
- 001.000004 07E.7FFFF8 soft: 001.000000 ...ux syst: 001.000000 ....x
- 001.000008 07E.7FFFF0 soft: 001.000000 ...ux syst: 001.000000 ....x
- 001.000010 07E.7FFFE0 soft: 001.000000 ...ux syst: 001.000000 ....x
- Errors found in float64_mul, rounding nearest_even:
- 001.0000000000001 3FE.FFFFFFFFFFFFE
- soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x
- 001.0000000000001 BFE.FFFFFFFFFFFFE
- soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x
- 001.0000000000002 3FE.FFFFFFFFFFFFC
- soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x
- 001.0000000000002 BFE.FFFFFFFFFFFFC
- soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x
- 001.0000000000004 3FE.FFFFFFFFFFFF8
- soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x
- Errors found in float64_mul, rounding down:
- 001.0000000000001 BFE.FFFFFFFFFFFFE
- soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x
- 001.0000000000002 BFE.FFFFFFFFFFFFC
- soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x
- 001.0000000000004 BFE.FFFFFFFFFFFF8
- soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x
- 001.0000000000008 BFE.FFFFFFFFFFFF0
- soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x
- 001.0000000000010 BFE.FFFFFFFFFFFE0
- soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x
- Errors found in float64_mul, rounding up:
- 001.0000000000001 3FE.FFFFFFFFFFFFE
- soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x
- 001.0000000000002 3FE.FFFFFFFFFFFFC
- soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x
- 001.0000000000004 3FE.FFFFFFFFFFFF8
- soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x
- 001.0000000000008 3FE.FFFFFFFFFFFF0
- soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x
- 001.0000000000010 3FE.FFFFFFFFFFFE0
- soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x
-
- If we assume tininess should be detected after rounding, we get the
- following errors:
-
- Errors found in float32_mul, rounding nearest_even:
- 000.7FFC00 07F.000400 soft: 001.000000 ....x syst: 001.000000 ...ux
- 000.7FFC00 87F.000400 soft: 801.000000 ....x syst: 801.000000 ...ux
- 000.7FFE00 07F.000200 soft: 001.000000 ....x syst: 001.000000 ...ux
- 000.7FFE00 87F.000200 soft: 801.000000 ....x syst: 801.000000 ...ux
- 000.7FFF00 07F.000100 soft: 001.000000 ....x syst: 001.000000 ...ux
- Errors found in float32_mul, rounding down:
- 000.7FFC00 87F.000400 soft: 801.000000 ....x syst: 801.000000 ...ux
- 000.7FFE00 87F.000200 soft: 801.000000 ....x syst: 801.000000 ...ux
- 000.7FFF00 87F.000100 soft: 801.000000 ....x syst: 801.000000 ...ux
- 000.7FFF80 87F.000080 soft: 801.000000 ....x syst: 801.000000 ...ux
- 000.7FFFC0 87F.000040 soft: 801.000000 ....x syst: 801.000000 ...ux
- Errors found in float32_mul, rounding up:
- 000.7FFC00 07F.000400 soft: 001.000000 ....x syst: 001.000000 ...ux
- 000.7FFE00 07F.000200 soft: 001.000000 ....x syst: 001.000000 ...ux
- 000.7FFF00 07F.000100 soft: 001.000000 ....x syst: 001.000000 ...ux
- 000.7FFF80 07F.000080 soft: 001.000000 ....x syst: 001.000000 ...ux
- 000.7FFFC0 07F.000040 soft: 001.000000 ....x syst: 001.000000 ...ux
- Errors found in float64_mul, rounding nearest_even:
- 000.FFFFFFE000000 3FF.0000002000000
- soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux
- 000.FFFFFFE000000 BFF.0000002000000
- soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux
- 000.FFFFFFF000000 3FF.0000001000000
- soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux
- 000.FFFFFFF000000 BFF.0000001000000
- soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux
- 000.FFFFFFF800000 3FF.0000000800000
- soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux
- Errors found in float64_mul, rounding down:
- 000.FFFFFFE000000 BFF.0000002000000
- soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux
- 000.FFFFFFF000000 BFF.0000001000000
- soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux
- 000.FFFFFFF800000 BFF.0000000800000
- soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux
- 000.FFFFFFFC00000 BFF.0000000400000
- soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux
- 000.FFFFFFFE00000 BFF.0000000200000
- soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux
- Errors found in float64_mul, rounding up:
- 000.FFFFFFE000000 3FF.0000002000000
- soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux
- 000.FFFFFFF000000 3FF.0000001000000
- soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux
- 000.FFFFFFF800000 3FF.0000000800000
- soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux
- 000.FFFFFFFC00000 3FF.0000000400000
- soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux
- 000.FFFFFFFE00000 3FF.0000000200000
- soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
--------------------------------------------------------------------------------
-Sun SPARCstation 10's
-
-Like other SPARCstations, some SPARCstation 10's are inconsistent regarding
-underflow tininess, detecting it after rounding for single- and double-
-precision operations and before rounding for quadruple-precision operations.
-The following bug has also been observed.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-float32_to_int32_round_to_zero, float64_to_int32_round_to_zero
-
--- Single- and double-precision NaNs are converted to the integer zero.
- (The invalid exception flag is raised correctly.)
-
- Errors found in float32_to_int32_round_to_zero:
- 8FF.5D36AC soft: 7FFFFFFF v.... syst: 00000000 v....
- 0FF.7FFFC0 soft: 7FFFFFFF v.... syst: 00000000 v....
- 8FF.7C0000 soft: 7FFFFFFF v.... syst: 00000000 v....
- 0FF.2AB7ED soft: 7FFFFFFF v.... syst: 00000000 v....
- 0FF.03FFFF soft: 7FFFFFFF v.... syst: 00000000 v....
- Errors found in float64_to_int32_round_to_zero:
- 7FF.45AD84DB2524A soft: 7FFFFFFF v.... syst: 00000000 v....
- 7FF.CFEE063EE0512 soft: 7FFFFFFF v.... syst: 00000000 v....
- 7FF.89FF03AB7DBA2 soft: 7FFFFFFF v.... syst: 00000000 v....
- 7FF.FFFFFFFFFF800 soft: 7FFFFFFF v.... syst: 00000000 v....
- FFF.68A6410E91BF6 soft: 7FFFFFFF v.... syst: 00000000 v....
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
--------------------------------------------------------------------------------
-HP Precision Architecture processors, with HP-UX prior to version 10.10
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-float32_to_int32_round_to_zero, float64_to_int32_round_to_zero
-
--- When the floating-point value is too large, the overflow and inexact
- exception flags are raised instead of the invalid flag.
-
- Errors found in float32_to_int32_round_to_zero:
- 89E.000007 soft: 80000000 v.... syst: 80000000 ..o.x
- 0A2.000020 soft: 7FFFFFFF v.... syst: 7FFFFFFF ..o.x
- 8FA.7C0000 soft: 80000000 v.... syst: 80000000 ..o.x
- Errors found in float64_to_int32_round_to_zero:
- 7FD.0448700002F1C soft: 7FFFFFFF v.... syst: 7FFFFFFF ..o.x
- DAA.F000000000000 soft: 80000000 v.... syst: 80000000 ..o.x
- 41E.063DA00005E65 soft: 7FFFFFFF v.... syst: 7FFFFFFF ..o.x
- 47E.FFFF800000000 soft: 7FFFFFFF v.... syst: 7FFFFFFF ..o.x
- 51F.0000000000004 soft: 7FFFFFFF v.... syst: 7FFFFFFF ..o.x
- DDA.0000001FFFFFF soft: 80000000 v.... syst: 80000000 ..o.x
- D70.00000000003FF soft: 80000000 v.... syst: 80000000 ..o.x
- C7E.0000100000000 soft: 80000000 v.... syst: 80000000 ..o.x
- 47E.000000000007F soft: 7FFFFFFF v.... syst: 7FFFFFFF ..o.x
- D57.000000000FFFF soft: 80000000 v.... syst: 80000000 ..o.x
-
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
diff --git a/tools/test/testfloat/systflags.h b/tools/test/testfloat/systflags.h
deleted file mode 100644
index 23e6b2364720..000000000000
--- a/tools/test/testfloat/systflags.h
+++ /dev/null
@@ -1,33 +0,0 @@
-
-/*
-===============================================================================
-
-This C header file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-/*
--------------------------------------------------------------------------------
-Target-specific function for clearing the system's IEC/IEEE floating-point
-exception flags. The previous value of the flags is returned.
--------------------------------------------------------------------------------
-*/
-int8 syst_float_flags_clear( void );
-
diff --git a/tools/test/testfloat/systfloat.c b/tools/test/testfloat/systfloat.c
deleted file mode 100644
index 08548c4981e7..000000000000
--- a/tools/test/testfloat/systfloat.c
+++ /dev/null
@@ -1,553 +0,0 @@
-
-/*
-===============================================================================
-
-This C source file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-#include <math.h>
-#include "milieu.h"
-#include "softfloat.h"
-#include "systfloat.h"
-
-float32 syst_int32_to_float32( int32 a )
-{
- float32 z;
-
- *( (float *) &z ) = a;
- return z;
-
-}
-
-float64 syst_int32_to_float64( int32 a )
-{
- float64 z;
-
- *( (double *) &z ) = a;
- return z;
-
-}
-
-#if defined( FLOATX80 ) && defined( LONG_DOUBLE_IS_FLOATX80 )
-
-floatx80 syst_int32_to_floatx80( int32 a )
-{
- floatx80 z;
-
- *( (long double *) &z ) = a;
- return z;
-
-}
-
-#endif
-
-#if defined( FLOAT128 ) && defined( LONG_DOUBLE_IS_FLOAT128 )
-
-float128 syst_int32_to_float128( int32 a )
-{
- float128 z;
-
- *( (long double *) &z ) = a;
- return z;
-
-}
-
-#endif
-
-#ifdef BITS64
-
-float32 syst_int64_to_float32( int64 a )
-{
- float32 z;
-
- *( (float *) &z ) = a;
- return z;
-
-}
-
-float64 syst_int64_to_float64( int64 a )
-{
- float64 z;
-
- *( (double *) &z ) = a;
- return z;
-
-}
-
-#if defined( FLOATX80 ) && defined( LONG_DOUBLE_IS_FLOATX80 )
-
-floatx80 syst_int64_to_floatx80( int64 a )
-{
- floatx80 z;
-
- *( (long double *) &z ) = a;
- return z;
-
-}
-
-#endif
-
-#if defined( FLOAT128 ) && defined( LONG_DOUBLE_IS_FLOAT128 )
-
-float128 syst_int64_to_float128( int64 a )
-{
- float128 z;
-
- *( (long double *) &z ) = a;
- return z;
-
-}
-
-#endif
-
-#endif
-
-int32 syst_float32_to_int32_round_to_zero( float32 a )
-{
-
- return *( (float *) &a );
-
-}
-
-#ifdef BITS64
-
-int64 syst_float32_to_int64_round_to_zero( float32 a )
-{
-
- return *( (float *) &a );
-
-}
-
-#endif
-
-float64 syst_float32_to_float64( float32 a )
-{
- float64 z;
-
- *( (double *) &z ) = *( (float *) &a );
- return z;
-
-}
-
-#if defined( FLOATX80 ) && defined( LONG_DOUBLE_IS_FLOATX80 )
-
-floatx80 syst_float32_to_floatx80( float32 a )
-{
- floatx80 z;
-
- *( (long double *) &z ) = *( (float *) &a );
- return z;
-
-}
-
-#endif
-
-#if defined( FLOAT128 ) && defined( LONG_DOUBLE_IS_FLOAT128 )
-
-float128 syst_float32_to_float128( float32 a )
-{
- float128 z;
-
- *( (long double *) &z ) = *( (float *) &a );
- return z;
-
-}
-
-#endif
-
-float32 syst_float32_add( float32 a, float32 b )
-{
- float32 z;
-
- *( (float *) &z ) = *( (float *) &a ) + *( (float *) &b );
- return z;
-
-}
-
-float32 syst_float32_sub( float32 a, float32 b )
-{
- float32 z;
-
- *( (float *) &z ) = *( (float *) &a ) - *( (float *) &b );
- return z;
-
-}
-
-float32 syst_float32_mul( float32 a, float32 b )
-{
- float32 z;
-
- *( (float *) &z ) = *( (float *) &a ) * *( (float *) &b );
- return z;
-
-}
-
-float32 syst_float32_div( float32 a, float32 b )
-{
- float32 z;
-
- *( (float *) &z ) = *( (float *) &a ) / *( (float *) &b );
- return z;
-
-}
-
-flag syst_float32_eq( float32 a, float32 b )
-{
-
- return ( *( (float *) &a ) == *( (float *) &b ) );
-
-}
-
-flag syst_float32_le( float32 a, float32 b )
-{
-
- return ( *( (float *) &a ) <= *( (float *) &b ) );
-
-}
-
-flag syst_float32_lt( float32 a, float32 b )
-{
-
- return ( *( (float *) &a ) < *( (float *) &b ) );
-
-}
-
-int32 syst_float64_to_int32_round_to_zero( float64 a )
-{
-
- return *( (double *) &a );
-
-}
-
-#ifdef BITS64
-
-int64 syst_float64_to_int64_round_to_zero( float64 a )
-{
-
- return *( (double *) &a );
-
-}
-
-#endif
-
-float32 syst_float64_to_float32( float64 a )
-{
- float32 z;
-
- *( (float *) &z ) = *( (double *) &a );
- return z;
-
-}
-
-#if defined( FLOATX80 ) && defined( LONG_DOUBLE_IS_FLOATX80 )
-
-floatx80 syst_float64_to_floatx80( float64 a )
-{
- floatx80 z;
-
- *( (long double *) &z ) = *( (double *) &a );
- return z;
-
-}
-
-#endif
-
-#if defined( FLOAT128 ) && defined( LONG_DOUBLE_IS_FLOAT128 )
-
-float128 syst_float64_to_float128( float64 a )
-{
- float128 z;
-
- *( (long double *) &z ) = *( (double *) &a );
- return z;
-
-}
-
-#endif
-
-float64 syst_float64_add( float64 a, float64 b )
-{
- float64 z;
-
- *( (double *) &z ) = *( (double *) &a ) + *( (double *) &b );
- return z;
-
-}
-
-float64 syst_float64_sub( float64 a, float64 b )
-{
- float64 z;
-
- *( (double *) &z ) = *( (double *) &a ) - *( (double *) &b );
- return z;
-
-}
-
-float64 syst_float64_mul( float64 a, float64 b )
-{
- float64 z;
-
- *( (double *) &z ) = *( (double *) &a ) * *( (double *) &b );
- return z;
-
-}
-
-float64 syst_float64_div( float64 a, float64 b )
-{
- float64 z;
-
- *( (double *) &z ) = *( (double *) &a ) / *( (double *) &b );
- return z;
-
-}
-
-float64 syst_float64_sqrt( float64 a )
-{
- float64 z;
-
- *( (double *) &z ) = sqrt( *( (double *) &a ) );
- return z;
-
-}
-
-flag syst_float64_eq( float64 a, float64 b )
-{
-
- return ( *( (double *) &a ) == *( (double *) &b ) );
-
-}
-
-flag syst_float64_le( float64 a, float64 b )
-{
-
- return ( *( (double *) &a ) <= *( (double *) &b ) );
-
-}
-
-flag syst_float64_lt( float64 a, float64 b )
-{
-
- return ( *( (double *) &a ) < *( (double *) &b ) );
-
-}
-
-#if defined( FLOATX80 ) && defined( LONG_DOUBLE_IS_FLOATX80 )
-
-int32 syst_floatx80_to_int32_round_to_zero( floatx80 a )
-{
-
- return *( (long double *) &a );
-
-}
-
-#ifdef BITS64
-
-int64 syst_floatx80_to_int64_round_to_zero( floatx80 a )
-{
-
- return *( (long double *) &a );
-
-}
-
-#endif
-
-float32 syst_floatx80_to_float32( floatx80 a )
-{
- float32 z;
-
- *( (float *) &z ) = *( (long double *) &a );
- return z;
-
-}
-
-float64 syst_floatx80_to_float64( floatx80 a )
-{
- float64 z;
-
- *( (double *) &z ) = *( (long double *) &a );
- return z;
-
-}
-
-floatx80 syst_floatx80_add( floatx80 a, floatx80 b )
-{
- floatx80 z;
-
- *( (long double *) &z ) =
- *( (long double *) &a ) + *( (long double *) &b );
- return z;
-
-}
-
-floatx80 syst_floatx80_sub( floatx80 a, floatx80 b )
-{
- floatx80 z;
-
- *( (long double *) &z ) =
- *( (long double *) &a ) - *( (long double *) &b );
- return z;
-
-}
-
-floatx80 syst_floatx80_mul( floatx80 a, floatx80 b )
-{
- floatx80 z;
-
- *( (long double *) &z ) =
- *( (long double *) &a ) * *( (long double *) &b );
- return z;
-
-}
-
-floatx80 syst_floatx80_div( floatx80 a, floatx80 b )
-{
- floatx80 z;
-
- *( (long double *) &z ) =
- *( (long double *) &a ) / *( (long double *) &b );
- return z;
-
-}
-
-flag syst_floatx80_eq( floatx80 a, floatx80 b )
-{
-
- return ( *( (long double *) &a ) == *( (long double *) &b ) );
-
-}
-
-flag syst_floatx80_le( floatx80 a, floatx80 b )
-{
-
- return ( *( (long double *) &a ) <= *( (long double *) &b ) );
-
-}
-
-flag syst_floatx80_lt( floatx80 a, floatx80 b )
-{
-
- return ( *( (long double *) &a ) < *( (long double *) &b ) );
-
-}
-
-#endif
-
-#if defined( FLOAT128 ) && defined( LONG_DOUBLE_IS_FLOAT128 )
-
-int32 syst_float128_to_int32_round_to_zero( float128 a )
-{
-
- return *( (long double *) &a );
-
-}
-
-#ifdef BITS64
-
-int64 syst_float128_to_int64_round_to_zero( float128 a )
-{
-
- return *( (long double *) &a );
-
-}
-
-#endif
-
-float32 syst_float128_to_float32( float128 a )
-{
- float32 z;
-
- *( (float *) &z ) = *( (long double *) &a );
- return z;
-
-}
-
-float64 syst_float128_to_float64( float128 a )
-{
- float64 z;
-
- *( (double *) &z ) = *( (long double *) &a );
- return z;
-
-}
-
-float128 syst_float128_add( float128 a, float128 b )
-{
- float128 z;
-
- *( (long double *) &z ) =
- *( (long double *) &a ) + *( (long double *) &b );
- return z;
-
-}
-
-float128 syst_float128_sub( float128 a, float128 b )
-{
- float128 z;
-
- *( (long double *) &z ) =
- *( (long double *) &a ) - *( (long double *) &b );
- return z;
-
-}
-
-float128 syst_float128_mul( float128 a, float128 b )
-{
- float128 z;
-
- *( (long double *) &z ) =
- *( (long double *) &a ) * *( (long double *) &b );
- return z;
-
-}
-
-float128 syst_float128_div( float128 a, float128 b )
-{
- float128 z;
-
- *( (long double *) &z ) =
- *( (long double *) &a ) / *( (long double *) &b );
- return z;
-
-}
-
-flag syst_float128_eq( float128 a, float128 b )
-{
-
- return ( *( (long double *) &a ) == *( (long double *) &b ) );
-
-}
-
-flag syst_float128_le( float128 a, float128 b )
-{
-
- return ( *( (long double *) &a ) <= *( (long double *) &b ) );
-
-}
-
-flag syst_float128_lt( float128 a, float128 b )
-{
-
- return ( *( (long double *) &a ) < *( (long double *) &b ) );
-
-}
-
-#endif
-
diff --git a/tools/test/testfloat/systmodes.h b/tools/test/testfloat/systmodes.h
deleted file mode 100644
index b2befa4ad59b..000000000000
--- a/tools/test/testfloat/systmodes.h
+++ /dev/null
@@ -1,42 +0,0 @@
-
-/*
-===============================================================================
-
-This C header file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-/*
--------------------------------------------------------------------------------
-Target-specific function for setting the system's IEC/IEEE floating-point
-rounding mode. Other system modes are also initialized as necessary (for
-example, exception trapping may be disabled).
--------------------------------------------------------------------------------
-*/
-void syst_float_set_rounding_mode( int8 );
-
-/*
--------------------------------------------------------------------------------
-Target-specific function for setting the IEC/IEEE rounding precision of
-subsequent extended double-precision operations performed by the system.
--------------------------------------------------------------------------------
-*/
-void syst_float_set_rounding_precision( int8 );
-
diff --git a/tools/test/testfloat/testCases.c b/tools/test/testfloat/testCases.c
deleted file mode 100644
index e2d8f4215fe1..000000000000
--- a/tools/test/testfloat/testCases.c
+++ /dev/null
@@ -1,3682 +0,0 @@
-
-/*
-===============================================================================
-
-This C source file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include "milieu.h"
-#include "fail.h"
-#include "random.h"
-#include "softfloat.h"
-#include "testCases.h"
-
-typedef struct {
- int16 expNum, term1Num, term2Num;
- flag done;
-} sequenceT;
-
-enum {
- int32NumP1 = 124
-};
-
-static const uint32 int32P1[ int32NumP1 ] = {
- 0x00000000,
- 0x00000001,
- 0x00000002,
- 0x00000004,
- 0x00000008,
- 0x00000010,
- 0x00000020,
- 0x00000040,
- 0x00000080,
- 0x00000100,
- 0x00000200,
- 0x00000400,
- 0x00000800,
- 0x00001000,
- 0x00002000,
- 0x00004000,
- 0x00008000,
- 0x00010000,
- 0x00020000,
- 0x00040000,
- 0x00080000,
- 0x00100000,
- 0x00200000,
- 0x00400000,
- 0x00800000,
- 0x01000000,
- 0x02000000,
- 0x04000000,
- 0x08000000,
- 0x10000000,
- 0x20000000,
- 0x40000000,
- 0x80000000,
- 0xC0000000,
- 0xE0000000,
- 0xF0000000,
- 0xF8000000,
- 0xFC000000,
- 0xFE000000,
- 0xFF000000,
- 0xFF800000,
- 0xFFC00000,
- 0xFFE00000,
- 0xFFF00000,
- 0xFFF80000,
- 0xFFFC0000,
- 0xFFFE0000,
- 0xFFFF0000,
- 0xFFFF8000,
- 0xFFFFC000,
- 0xFFFFE000,
- 0xFFFFF000,
- 0xFFFFF800,
- 0xFFFFFC00,
- 0xFFFFFE00,
- 0xFFFFFF00,
- 0xFFFFFF80,
- 0xFFFFFFC0,
- 0xFFFFFFE0,
- 0xFFFFFFF0,
- 0xFFFFFFF8,
- 0xFFFFFFFC,
- 0xFFFFFFFE,
- 0xFFFFFFFF,
- 0xFFFFFFFD,
- 0xFFFFFFFB,
- 0xFFFFFFF7,
- 0xFFFFFFEF,
- 0xFFFFFFDF,
- 0xFFFFFFBF,
- 0xFFFFFF7F,
- 0xFFFFFEFF,
- 0xFFFFFDFF,
- 0xFFFFFBFF,
- 0xFFFFF7FF,
- 0xFFFFEFFF,
- 0xFFFFDFFF,
- 0xFFFFBFFF,
- 0xFFFF7FFF,
- 0xFFFEFFFF,
- 0xFFFDFFFF,
- 0xFFFBFFFF,
- 0xFFF7FFFF,
- 0xFFEFFFFF,
- 0xFFDFFFFF,
- 0xFFBFFFFF,
- 0xFF7FFFFF,
- 0xFEFFFFFF,
- 0xFDFFFFFF,
- 0xFBFFFFFF,
- 0xF7FFFFFF,
- 0xEFFFFFFF,
- 0xDFFFFFFF,
- 0xBFFFFFFF,
- 0x7FFFFFFF,
- 0x3FFFFFFF,
- 0x1FFFFFFF,
- 0x0FFFFFFF,
- 0x07FFFFFF,
- 0x03FFFFFF,
- 0x01FFFFFF,
- 0x00FFFFFF,
- 0x007FFFFF,
- 0x003FFFFF,
- 0x001FFFFF,
- 0x000FFFFF,
- 0x0007FFFF,
- 0x0003FFFF,
- 0x0001FFFF,
- 0x0000FFFF,
- 0x00007FFF,
- 0x00003FFF,
- 0x00001FFF,
- 0x00000FFF,
- 0x000007FF,
- 0x000003FF,
- 0x000001FF,
- 0x000000FF,
- 0x0000007F,
- 0x0000003F,
- 0x0000001F,
- 0x0000000F,
- 0x00000007,
- 0x00000003
-};
-
-static int32 int32NextP1( sequenceT *sequencePtr )
-{
- uint8 termNum;
- int32 z;
-
- termNum = sequencePtr->term1Num;
- z = int32P1[ termNum ];
- ++termNum;
- if ( int32NumP1 <= termNum ) {
- termNum = 0;
- sequencePtr->done = TRUE;
- }
- sequencePtr->term1Num = termNum;
- return (sbits32) z;
-
-}
-
-static const int32 int32NumP2 = ( int32NumP1 * int32NumP1 + int32NumP1 ) / 2;
-
-static int32 int32NextP2( sequenceT *sequencePtr )
-{
- uint8 term1Num, term2Num;
- int32 z;
-
- term2Num = sequencePtr->term2Num;
- term1Num = sequencePtr->term1Num;
- z = int32P1[ term1Num ] + int32P1[ term2Num ];
- ++term2Num;
- if ( int32NumP1 <= term2Num ) {
- ++term1Num;
- if ( int32NumP1 <= term1Num ) {
- term1Num = 0;
- sequencePtr->done = TRUE;
- }
- term2Num = term1Num;
- sequencePtr->term1Num = term1Num;
- }
- sequencePtr->term2Num = term2Num;
- return (sbits32) z;
-
-}
-
-static int32 int32RandomP3( void )
-{
-
- return
- (sbits32) (
- int32P1[ randomUint8() % int32NumP1 ]
- + int32P1[ randomUint8() % int32NumP1 ]
- + int32P1[ randomUint8() % int32NumP1 ]
- );
-
-}
-
-enum {
- int32NumPInfWeightMasks = 29
-};
-
-static const uint32 int32PInfWeightMasks[ int32NumPInfWeightMasks ] = {
- 0xFFFFFFFF,
- 0x7FFFFFFF,
- 0x3FFFFFFF,
- 0x1FFFFFFF,
- 0x0FFFFFFF,
- 0x07FFFFFF,
- 0x03FFFFFF,
- 0x01FFFFFF,
- 0x00FFFFFF,
- 0x007FFFFF,
- 0x003FFFFF,
- 0x001FFFFF,
- 0x000FFFFF,
- 0x0007FFFF,
- 0x0003FFFF,
- 0x0001FFFF,
- 0x0000FFFF,
- 0x00007FFF,
- 0x00003FFF,
- 0x00001FFF,
- 0x00000FFF,
- 0x000007FF,
- 0x000003FF,
- 0x000001FF,
- 0x000000FF,
- 0x0000007F,
- 0x0000003F,
- 0x0000001F,
- 0x0000000F
-};
-
-static const uint32 int32PInfWeightOffsets[ int32NumPInfWeightMasks ] = {
- 0x00000000,
- 0xC0000000,
- 0xE0000000,
- 0xF0000000,
- 0xF8000000,
- 0xFC000000,
- 0xFE000000,
- 0xFF000000,
- 0xFF800000,
- 0xFFC00000,
- 0xFFE00000,
- 0xFFF00000,
- 0xFFF80000,
- 0xFFFC0000,
- 0xFFFE0000,
- 0xFFFF0000,
- 0xFFFF8000,
- 0xFFFFC000,
- 0xFFFFE000,
- 0xFFFFF000,
- 0xFFFFF800,
- 0xFFFFFC00,
- 0xFFFFFE00,
- 0xFFFFFF00,
- 0xFFFFFF80,
- 0xFFFFFFC0,
- 0xFFFFFFE0,
- 0xFFFFFFF0,
- 0xFFFFFFF8
-};
-
-static int32 int32RandomPInf( void )
-{
- int8 weightMaskNum;
-
- weightMaskNum = randomUint8() % int32NumPInfWeightMasks;
- return
- (sbits32) (
- ( randomUint32() & int32PInfWeightMasks[ weightMaskNum ] )
- + int32PInfWeightOffsets[ weightMaskNum ]
- );
-
-}
-
-#ifdef BITS64
-
-enum {
- int64NumP1 = 252
-};
-
-static const uint64 int64P1[ int64NumP1 ] = {
- LIT64( 0x0000000000000000 ),
- LIT64( 0x0000000000000001 ),
- LIT64( 0x0000000000000002 ),
- LIT64( 0x0000000000000004 ),
- LIT64( 0x0000000000000008 ),
- LIT64( 0x0000000000000010 ),
- LIT64( 0x0000000000000020 ),
- LIT64( 0x0000000000000040 ),
- LIT64( 0x0000000000000080 ),
- LIT64( 0x0000000000000100 ),
- LIT64( 0x0000000000000200 ),
- LIT64( 0x0000000000000400 ),
- LIT64( 0x0000000000000800 ),
- LIT64( 0x0000000000001000 ),
- LIT64( 0x0000000000002000 ),
- LIT64( 0x0000000000004000 ),
- LIT64( 0x0000000000008000 ),
- LIT64( 0x0000000000010000 ),
- LIT64( 0x0000000000020000 ),
- LIT64( 0x0000000000040000 ),
- LIT64( 0x0000000000080000 ),
- LIT64( 0x0000000000100000 ),
- LIT64( 0x0000000000200000 ),
- LIT64( 0x0000000000400000 ),
- LIT64( 0x0000000000800000 ),
- LIT64( 0x0000000001000000 ),
- LIT64( 0x0000000002000000 ),
- LIT64( 0x0000000004000000 ),
- LIT64( 0x0000000008000000 ),
- LIT64( 0x0000000010000000 ),
- LIT64( 0x0000000020000000 ),
- LIT64( 0x0000000040000000 ),
- LIT64( 0x0000000080000000 ),
- LIT64( 0x0000000100000000 ),
- LIT64( 0x0000000200000000 ),
- LIT64( 0x0000000400000000 ),
- LIT64( 0x0000000800000000 ),
- LIT64( 0x0000001000000000 ),
- LIT64( 0x0000002000000000 ),
- LIT64( 0x0000004000000000 ),
- LIT64( 0x0000008000000000 ),
- LIT64( 0x0000010000000000 ),
- LIT64( 0x0000020000000000 ),
- LIT64( 0x0000040000000000 ),
- LIT64( 0x0000080000000000 ),
- LIT64( 0x0000100000000000 ),
- LIT64( 0x0000200000000000 ),
- LIT64( 0x0000400000000000 ),
- LIT64( 0x0000800000000000 ),
- LIT64( 0x0001000000000000 ),
- LIT64( 0x0002000000000000 ),
- LIT64( 0x0004000000000000 ),
- LIT64( 0x0008000000000000 ),
- LIT64( 0x0010000000000000 ),
- LIT64( 0x0020000000000000 ),
- LIT64( 0x0040000000000000 ),
- LIT64( 0x0080000000000000 ),
- LIT64( 0x0100000000000000 ),
- LIT64( 0x0200000000000000 ),
- LIT64( 0x0400000000000000 ),
- LIT64( 0x0800000000000000 ),
- LIT64( 0x1000000000000000 ),
- LIT64( 0x2000000000000000 ),
- LIT64( 0x4000000000000000 ),
- LIT64( 0x8000000000000000 ),
- LIT64( 0xC000000000000000 ),
- LIT64( 0xE000000000000000 ),
- LIT64( 0xF000000000000000 ),
- LIT64( 0xF800000000000000 ),
- LIT64( 0xFC00000000000000 ),
- LIT64( 0xFE00000000000000 ),
- LIT64( 0xFF00000000000000 ),
- LIT64( 0xFF80000000000000 ),
- LIT64( 0xFFC0000000000000 ),
- LIT64( 0xFFE0000000000000 ),
- LIT64( 0xFFF0000000000000 ),
- LIT64( 0xFFF8000000000000 ),
- LIT64( 0xFFFC000000000000 ),
- LIT64( 0xFFFE000000000000 ),
- LIT64( 0xFFFF000000000000 ),
- LIT64( 0xFFFF800000000000 ),
- LIT64( 0xFFFFC00000000000 ),
- LIT64( 0xFFFFE00000000000 ),
- LIT64( 0xFFFFF00000000000 ),
- LIT64( 0xFFFFF80000000000 ),
- LIT64( 0xFFFFFC0000000000 ),
- LIT64( 0xFFFFFE0000000000 ),
- LIT64( 0xFFFFFF0000000000 ),
- LIT64( 0xFFFFFF8000000000 ),
- LIT64( 0xFFFFFFC000000000 ),
- LIT64( 0xFFFFFFE000000000 ),
- LIT64( 0xFFFFFFF000000000 ),
- LIT64( 0xFFFFFFF800000000 ),
- LIT64( 0xFFFFFFFC00000000 ),
- LIT64( 0xFFFFFFFE00000000 ),
- LIT64( 0xFFFFFFFF00000000 ),
- LIT64( 0xFFFFFFFF80000000 ),
- LIT64( 0xFFFFFFFFC0000000 ),
- LIT64( 0xFFFFFFFFE0000000 ),
- LIT64( 0xFFFFFFFFF0000000 ),
- LIT64( 0xFFFFFFFFF8000000 ),
- LIT64( 0xFFFFFFFFFC000000 ),
- LIT64( 0xFFFFFFFFFE000000 ),
- LIT64( 0xFFFFFFFFFF000000 ),
- LIT64( 0xFFFFFFFFFF800000 ),
- LIT64( 0xFFFFFFFFFFC00000 ),
- LIT64( 0xFFFFFFFFFFE00000 ),
- LIT64( 0xFFFFFFFFFFF00000 ),
- LIT64( 0xFFFFFFFFFFF80000 ),
- LIT64( 0xFFFFFFFFFFFC0000 ),
- LIT64( 0xFFFFFFFFFFFE0000 ),
- LIT64( 0xFFFFFFFFFFFF0000 ),
- LIT64( 0xFFFFFFFFFFFF8000 ),
- LIT64( 0xFFFFFFFFFFFFC000 ),
- LIT64( 0xFFFFFFFFFFFFE000 ),
- LIT64( 0xFFFFFFFFFFFFF000 ),
- LIT64( 0xFFFFFFFFFFFFF800 ),
- LIT64( 0xFFFFFFFFFFFFFC00 ),
- LIT64( 0xFFFFFFFFFFFFFE00 ),
- LIT64( 0xFFFFFFFFFFFFFF00 ),
- LIT64( 0xFFFFFFFFFFFFFF80 ),
- LIT64( 0xFFFFFFFFFFFFFFC0 ),
- LIT64( 0xFFFFFFFFFFFFFFE0 ),
- LIT64( 0xFFFFFFFFFFFFFFF0 ),
- LIT64( 0xFFFFFFFFFFFFFFF8 ),
- LIT64( 0xFFFFFFFFFFFFFFFC ),
- LIT64( 0xFFFFFFFFFFFFFFFE ),
- LIT64( 0xFFFFFFFFFFFFFFFF ),
- LIT64( 0xFFFFFFFFFFFFFFFD ),
- LIT64( 0xFFFFFFFFFFFFFFFB ),
- LIT64( 0xFFFFFFFFFFFFFFF7 ),
- LIT64( 0xFFFFFFFFFFFFFFEF ),
- LIT64( 0xFFFFFFFFFFFFFFDF ),
- LIT64( 0xFFFFFFFFFFFFFFBF ),
- LIT64( 0xFFFFFFFFFFFFFF7F ),
- LIT64( 0xFFFFFFFFFFFFFEFF ),
- LIT64( 0xFFFFFFFFFFFFFDFF ),
- LIT64( 0xFFFFFFFFFFFFFBFF ),
- LIT64( 0xFFFFFFFFFFFFF7FF ),
- LIT64( 0xFFFFFFFFFFFFEFFF ),
- LIT64( 0xFFFFFFFFFFFFDFFF ),
- LIT64( 0xFFFFFFFFFFFFBFFF ),
- LIT64( 0xFFFFFFFFFFFF7FFF ),
- LIT64( 0xFFFFFFFFFFFEFFFF ),
- LIT64( 0xFFFFFFFFFFFDFFFF ),
- LIT64( 0xFFFFFFFFFFFBFFFF ),
- LIT64( 0xFFFFFFFFFFF7FFFF ),
- LIT64( 0xFFFFFFFFFFEFFFFF ),
- LIT64( 0xFFFFFFFFFFDFFFFF ),
- LIT64( 0xFFFFFFFFFFBFFFFF ),
- LIT64( 0xFFFFFFFFFF7FFFFF ),
- LIT64( 0xFFFFFFFFFEFFFFFF ),
- LIT64( 0xFFFFFFFFFDFFFFFF ),
- LIT64( 0xFFFFFFFFFBFFFFFF ),
- LIT64( 0xFFFFFFFFF7FFFFFF ),
- LIT64( 0xFFFFFFFFEFFFFFFF ),
- LIT64( 0xFFFFFFFFDFFFFFFF ),
- LIT64( 0xFFFFFFFFBFFFFFFF ),
- LIT64( 0xFFFFFFFF7FFFFFFF ),
- LIT64( 0xFFFFFFFEFFFFFFFF ),
- LIT64( 0xFFFFFFFDFFFFFFFF ),
- LIT64( 0xFFFFFFFBFFFFFFFF ),
- LIT64( 0xFFFFFFF7FFFFFFFF ),
- LIT64( 0xFFFFFFEFFFFFFFFF ),
- LIT64( 0xFFFFFFDFFFFFFFFF ),
- LIT64( 0xFFFFFFBFFFFFFFFF ),
- LIT64( 0xFFFFFF7FFFFFFFFF ),
- LIT64( 0xFFFFFEFFFFFFFFFF ),
- LIT64( 0xFFFFFDFFFFFFFFFF ),
- LIT64( 0xFFFFFBFFFFFFFFFF ),
- LIT64( 0xFFFFF7FFFFFFFFFF ),
- LIT64( 0xFFFFEFFFFFFFFFFF ),
- LIT64( 0xFFFFDFFFFFFFFFFF ),
- LIT64( 0xFFFFBFFFFFFFFFFF ),
- LIT64( 0xFFFF7FFFFFFFFFFF ),
- LIT64( 0xFFFEFFFFFFFFFFFF ),
- LIT64( 0xFFFDFFFFFFFFFFFF ),
- LIT64( 0xFFFBFFFFFFFFFFFF ),
- LIT64( 0xFFF7FFFFFFFFFFFF ),
- LIT64( 0xFFEFFFFFFFFFFFFF ),
- LIT64( 0xFFDFFFFFFFFFFFFF ),
- LIT64( 0xFFBFFFFFFFFFFFFF ),
- LIT64( 0xFF7FFFFFFFFFFFFF ),
- LIT64( 0xFEFFFFFFFFFFFFFF ),
- LIT64( 0xFDFFFFFFFFFFFFFF ),
- LIT64( 0xFBFFFFFFFFFFFFFF ),
- LIT64( 0xF7FFFFFFFFFFFFFF ),
- LIT64( 0xEFFFFFFFFFFFFFFF ),
- LIT64( 0xDFFFFFFFFFFFFFFF ),
- LIT64( 0xBFFFFFFFFFFFFFFF ),
- LIT64( 0x7FFFFFFFFFFFFFFF ),
- LIT64( 0x3FFFFFFFFFFFFFFF ),
- LIT64( 0x1FFFFFFFFFFFFFFF ),
- LIT64( 0x0FFFFFFFFFFFFFFF ),
- LIT64( 0x07FFFFFFFFFFFFFF ),
- LIT64( 0x03FFFFFFFFFFFFFF ),
- LIT64( 0x01FFFFFFFFFFFFFF ),
- LIT64( 0x00FFFFFFFFFFFFFF ),
- LIT64( 0x007FFFFFFFFFFFFF ),
- LIT64( 0x003FFFFFFFFFFFFF ),
- LIT64( 0x001FFFFFFFFFFFFF ),
- LIT64( 0x000FFFFFFFFFFFFF ),
- LIT64( 0x0007FFFFFFFFFFFF ),
- LIT64( 0x0003FFFFFFFFFFFF ),
- LIT64( 0x0001FFFFFFFFFFFF ),
- LIT64( 0x0000FFFFFFFFFFFF ),
- LIT64( 0x00007FFFFFFFFFFF ),
- LIT64( 0x00003FFFFFFFFFFF ),
- LIT64( 0x00001FFFFFFFFFFF ),
- LIT64( 0x00000FFFFFFFFFFF ),
- LIT64( 0x000007FFFFFFFFFF ),
- LIT64( 0x000003FFFFFFFFFF ),
- LIT64( 0x000001FFFFFFFFFF ),
- LIT64( 0x000000FFFFFFFFFF ),
- LIT64( 0x0000007FFFFFFFFF ),
- LIT64( 0x0000003FFFFFFFFF ),
- LIT64( 0x0000001FFFFFFFFF ),
- LIT64( 0x0000000FFFFFFFFF ),
- LIT64( 0x00000007FFFFFFFF ),
- LIT64( 0x00000003FFFFFFFF ),
- LIT64( 0x00000001FFFFFFFF ),
- LIT64( 0x00000000FFFFFFFF ),
- LIT64( 0x000000007FFFFFFF ),
- LIT64( 0x000000003FFFFFFF ),
- LIT64( 0x000000001FFFFFFF ),
- LIT64( 0x000000000FFFFFFF ),
- LIT64( 0x0000000007FFFFFF ),
- LIT64( 0x0000000003FFFFFF ),
- LIT64( 0x0000000001FFFFFF ),
- LIT64( 0x0000000000FFFFFF ),
- LIT64( 0x00000000007FFFFF ),
- LIT64( 0x00000000003FFFFF ),
- LIT64( 0x00000000001FFFFF ),
- LIT64( 0x00000000000FFFFF ),
- LIT64( 0x000000000007FFFF ),
- LIT64( 0x000000000003FFFF ),
- LIT64( 0x000000000001FFFF ),
- LIT64( 0x000000000000FFFF ),
- LIT64( 0x0000000000007FFF ),
- LIT64( 0x0000000000003FFF ),
- LIT64( 0x0000000000001FFF ),
- LIT64( 0x0000000000000FFF ),
- LIT64( 0x00000000000007FF ),
- LIT64( 0x00000000000003FF ),
- LIT64( 0x00000000000001FF ),
- LIT64( 0x00000000000000FF ),
- LIT64( 0x000000000000007F ),
- LIT64( 0x000000000000003F ),
- LIT64( 0x000000000000001F ),
- LIT64( 0x000000000000000F ),
- LIT64( 0x0000000000000007 ),
- LIT64( 0x0000000000000003 )
-};
-
-static int64 int64NextP1( sequenceT *sequencePtr )
-{
- uint8 termNum;
- int64 z;
-
- termNum = sequencePtr->term1Num;
- z = int64P1[ termNum ];
- ++termNum;
- if ( int64NumP1 <= termNum ) {
- termNum = 0;
- sequencePtr->done = TRUE;
- }
- sequencePtr->term1Num = termNum;
- return (sbits64) z;
-
-}
-
-static const int64 int64NumP2 = ( int64NumP1 * int64NumP1 + int64NumP1 ) / 2;
-
-static int64 int64NextP2( sequenceT *sequencePtr )
-{
- uint8 term1Num, term2Num;
- int64 z;
-
- term2Num = sequencePtr->term2Num;
- term1Num = sequencePtr->term1Num;
- z = int64P1[ term1Num ] + int64P1[ term2Num ];
- ++term2Num;
- if ( int64NumP1 <= term2Num ) {
- ++term1Num;
- if ( int64NumP1 <= term1Num ) {
- term1Num = 0;
- sequencePtr->done = TRUE;
- }
- term2Num = term1Num;
- sequencePtr->term1Num = term1Num;
- }
- sequencePtr->term2Num = term2Num;
- return (sbits64) z;
-
-}
-
-static int64 int64RandomP3( void )
-{
-
- return
- (sbits64) (
- int64P1[ randomUint8() % int64NumP1 ]
- + int64P1[ randomUint8() % int64NumP1 ]
- + int64P1[ randomUint8() % int64NumP1 ]
- );
-
-}
-
-enum {
- int64NumPInfWeightMasks = 61
-};
-
-static const uint64 int64PInfWeightMasks[ int64NumPInfWeightMasks ] = {
- LIT64( 0xFFFFFFFFFFFFFFFF ),
- LIT64( 0x7FFFFFFFFFFFFFFF ),
- LIT64( 0x3FFFFFFFFFFFFFFF ),
- LIT64( 0x1FFFFFFFFFFFFFFF ),
- LIT64( 0x0FFFFFFFFFFFFFFF ),
- LIT64( 0x07FFFFFFFFFFFFFF ),
- LIT64( 0x03FFFFFFFFFFFFFF ),
- LIT64( 0x01FFFFFFFFFFFFFF ),
- LIT64( 0x00FFFFFFFFFFFFFF ),
- LIT64( 0x007FFFFFFFFFFFFF ),
- LIT64( 0x003FFFFFFFFFFFFF ),
- LIT64( 0x001FFFFFFFFFFFFF ),
- LIT64( 0x000FFFFFFFFFFFFF ),
- LIT64( 0x0007FFFFFFFFFFFF ),
- LIT64( 0x0003FFFFFFFFFFFF ),
- LIT64( 0x0001FFFFFFFFFFFF ),
- LIT64( 0x0000FFFFFFFFFFFF ),
- LIT64( 0x00007FFFFFFFFFFF ),
- LIT64( 0x00003FFFFFFFFFFF ),
- LIT64( 0x00001FFFFFFFFFFF ),
- LIT64( 0x00000FFFFFFFFFFF ),
- LIT64( 0x000007FFFFFFFFFF ),
- LIT64( 0x000003FFFFFFFFFF ),
- LIT64( 0x000001FFFFFFFFFF ),
- LIT64( 0x000000FFFFFFFFFF ),
- LIT64( 0x0000007FFFFFFFFF ),
- LIT64( 0x0000003FFFFFFFFF ),
- LIT64( 0x0000001FFFFFFFFF ),
- LIT64( 0x0000000FFFFFFFFF ),
- LIT64( 0x00000007FFFFFFFF ),
- LIT64( 0x00000003FFFFFFFF ),
- LIT64( 0x00000001FFFFFFFF ),
- LIT64( 0x00000000FFFFFFFF ),
- LIT64( 0x000000007FFFFFFF ),
- LIT64( 0x000000003FFFFFFF ),
- LIT64( 0x000000001FFFFFFF ),
- LIT64( 0x000000000FFFFFFF ),
- LIT64( 0x0000000007FFFFFF ),
- LIT64( 0x0000000003FFFFFF ),
- LIT64( 0x0000000001FFFFFF ),
- LIT64( 0x0000000000FFFFFF ),
- LIT64( 0x00000000007FFFFF ),
- LIT64( 0x00000000003FFFFF ),
- LIT64( 0x00000000001FFFFF ),
- LIT64( 0x00000000000FFFFF ),
- LIT64( 0x000000000007FFFF ),
- LIT64( 0x000000000003FFFF ),
- LIT64( 0x000000000001FFFF ),
- LIT64( 0x000000000000FFFF ),
- LIT64( 0x0000000000007FFF ),
- LIT64( 0x0000000000003FFF ),
- LIT64( 0x0000000000001FFF ),
- LIT64( 0x0000000000000FFF ),
- LIT64( 0x00000000000007FF ),
- LIT64( 0x00000000000003FF ),
- LIT64( 0x00000000000001FF ),
- LIT64( 0x00000000000000FF ),
- LIT64( 0x000000000000007F ),
- LIT64( 0x000000000000003F ),
- LIT64( 0x000000000000001F ),
- LIT64( 0x000000000000000F )
-};
-
-static const uint64 int64PInfWeightOffsets[ int64NumPInfWeightMasks ] = {
- LIT64( 0x0000000000000000 ),
- LIT64( 0xC000000000000000 ),
- LIT64( 0xE000000000000000 ),
- LIT64( 0xF000000000000000 ),
- LIT64( 0xF800000000000000 ),
- LIT64( 0xFC00000000000000 ),
- LIT64( 0xFE00000000000000 ),
- LIT64( 0xFF00000000000000 ),
- LIT64( 0xFF80000000000000 ),
- LIT64( 0xFFC0000000000000 ),
- LIT64( 0xFFE0000000000000 ),
- LIT64( 0xFFF0000000000000 ),
- LIT64( 0xFFF8000000000000 ),
- LIT64( 0xFFFC000000000000 ),
- LIT64( 0xFFFE000000000000 ),
- LIT64( 0xFFFF000000000000 ),
- LIT64( 0xFFFF800000000000 ),
- LIT64( 0xFFFFC00000000000 ),
- LIT64( 0xFFFFE00000000000 ),
- LIT64( 0xFFFFF00000000000 ),
- LIT64( 0xFFFFF80000000000 ),
- LIT64( 0xFFFFFC0000000000 ),
- LIT64( 0xFFFFFE0000000000 ),
- LIT64( 0xFFFFFF0000000000 ),
- LIT64( 0xFFFFFF8000000000 ),
- LIT64( 0xFFFFFFC000000000 ),
- LIT64( 0xFFFFFFE000000000 ),
- LIT64( 0xFFFFFFF000000000 ),
- LIT64( 0xFFFFFFF800000000 ),
- LIT64( 0xFFFFFFFC00000000 ),
- LIT64( 0xFFFFFFFE00000000 ),
- LIT64( 0xFFFFFFFF00000000 ),
- LIT64( 0xFFFFFFFF80000000 ),
- LIT64( 0xFFFFFFFFC0000000 ),
- LIT64( 0xFFFFFFFFE0000000 ),
- LIT64( 0xFFFFFFFFF0000000 ),
- LIT64( 0xFFFFFFFFF8000000 ),
- LIT64( 0xFFFFFFFFFC000000 ),
- LIT64( 0xFFFFFFFFFE000000 ),
- LIT64( 0xFFFFFFFFFF000000 ),
- LIT64( 0xFFFFFFFFFF800000 ),
- LIT64( 0xFFFFFFFFFFC00000 ),
- LIT64( 0xFFFFFFFFFFE00000 ),
- LIT64( 0xFFFFFFFFFFF00000 ),
- LIT64( 0xFFFFFFFFFFF80000 ),
- LIT64( 0xFFFFFFFFFFFC0000 ),
- LIT64( 0xFFFFFFFFFFFE0000 ),
- LIT64( 0xFFFFFFFFFFFF0000 ),
- LIT64( 0xFFFFFFFFFFFF8000 ),
- LIT64( 0xFFFFFFFFFFFFC000 ),
- LIT64( 0xFFFFFFFFFFFFE000 ),
- LIT64( 0xFFFFFFFFFFFFF000 ),
- LIT64( 0xFFFFFFFFFFFFF800 ),
- LIT64( 0xFFFFFFFFFFFFFC00 ),
- LIT64( 0xFFFFFFFFFFFFFE00 ),
- LIT64( 0xFFFFFFFFFFFFFF00 ),
- LIT64( 0xFFFFFFFFFFFFFF80 ),
- LIT64( 0xFFFFFFFFFFFFFFC0 ),
- LIT64( 0xFFFFFFFFFFFFFFE0 ),
- LIT64( 0xFFFFFFFFFFFFFFF0 ),
- LIT64( 0xFFFFFFFFFFFFFFF8 )
-};
-
-static int64 int64RandomPInf( void )
-{
- int8 weightMaskNum;
-
- weightMaskNum = randomUint8() % int64NumPInfWeightMasks;
- return
- (sbits64) (
- ( randomUint64() & int64PInfWeightMasks[ weightMaskNum ] )
- + int64PInfWeightOffsets[ weightMaskNum ]
- );
-
-}
-
-#endif
-
-enum {
- float32NumQIn = 22,
- float32NumQOut = 50,
- float32NumP1 = 4,
- float32NumP2 = 88
-};
-
-static const uint32 float32QIn[ float32NumQIn ] = {
- 0x00000000, /* positive, subnormal */
- 0x00800000, /* positive, -126 */
- 0x33800000, /* positive, -24 */
- 0x3E800000, /* positive, -2 */
- 0x3F000000, /* positive, -1 */
- 0x3F800000, /* positive, 0 */
- 0x40000000, /* positive, 1 */
- 0x40800000, /* positive, 2 */
- 0x4B800000, /* positive, 24 */
- 0x7F000000, /* positive, 127 */
- 0x7F800000, /* positive, infinity or NaN */
- 0x80000000, /* negative, subnormal */
- 0x80800000, /* negative, -126 */
- 0xB3800000, /* negative, -24 */
- 0xBE800000, /* negative, -2 */
- 0xBF000000, /* negative, -1 */
- 0xBF800000, /* negative, 0 */
- 0xC0000000, /* negative, 1 */
- 0xC0800000, /* negative, 2 */
- 0xCB800000, /* negative, 24 */
- 0xFE800000, /* negative, 126 */
- 0xFF800000 /* negative, infinity or NaN */
-};
-
-static const uint32 float32QOut[ float32NumQOut ] = {
- 0x00000000, /* positive, subnormal */
- 0x00800000, /* positive, -126 */
- 0x01000000, /* positive, -125 */
- 0x33800000, /* positive, -24 */
- 0x3D800000, /* positive, -4 */
- 0x3E000000, /* positive, -3 */
- 0x3E800000, /* positive, -2 */
- 0x3F000000, /* positive, -1 */
- 0x3F800000, /* positive, 0 */
- 0x40000000, /* positive, 1 */
- 0x40800000, /* positive, 2 */
- 0x41000000, /* positive, 3 */
- 0x41800000, /* positive, 4 */
- 0x4B800000, /* positive, 24 */
- 0x4E000000, /* positive, 29 */
- 0x4E800000, /* positive, 30 */
- 0x4F000000, /* positive, 31 */
- 0x4F800000, /* positive, 32 */
- 0x5E000000, /* positive, 61 */
- 0x5E800000, /* positive, 62 */
- 0x5F000000, /* positive, 63 */
- 0x5F800000, /* positive, 64 */
- 0x7E800000, /* positive, 126 */
- 0x7F000000, /* positive, 127 */
- 0x7F800000, /* positive, infinity or NaN */
- 0x80000000, /* negative, subnormal */
- 0x80800000, /* negative, -126 */
- 0x81000000, /* negative, -125 */
- 0xB3800000, /* negative, -24 */
- 0xBD800000, /* negative, -4 */
- 0xBE000000, /* negative, -3 */
- 0xBE800000, /* negative, -2 */
- 0xBF000000, /* negative, -1 */
- 0xBF800000, /* negative, 0 */
- 0xC0000000, /* negative, 1 */
- 0xC0800000, /* negative, 2 */
- 0xC1000000, /* negative, 3 */
- 0xC1800000, /* negative, 4 */
- 0xCB800000, /* negative, 24 */
- 0xCE000000, /* negative, 29 */
- 0xCE800000, /* negative, 30 */
- 0xCF000000, /* negative, 31 */
- 0xCF800000, /* negative, 32 */
- 0xDE000000, /* negative, 61 */
- 0xDE800000, /* negative, 62 */
- 0xDF000000, /* negative, 63 */
- 0xDF800000, /* negative, 64 */
- 0xFE800000, /* negative, 126 */
- 0xFF000000, /* negative, 127 */
- 0xFF800000 /* negative, infinity or NaN */
-};
-
-static const uint32 float32P1[ float32NumP1 ] = {
- 0x00000000,
- 0x00000001,
- 0x007FFFFF,
- 0x007FFFFE
-};
-
-static const uint32 float32P2[ float32NumP2 ] = {
- 0x00000000,
- 0x00000001,
- 0x00000002,
- 0x00000004,
- 0x00000008,
- 0x00000010,
- 0x00000020,
- 0x00000040,
- 0x00000080,
- 0x00000100,
- 0x00000200,
- 0x00000400,
- 0x00000800,
- 0x00001000,
- 0x00002000,
- 0x00004000,
- 0x00008000,
- 0x00010000,
- 0x00020000,
- 0x00040000,
- 0x00080000,
- 0x00100000,
- 0x00200000,
- 0x00400000,
- 0x00600000,
- 0x00700000,
- 0x00780000,
- 0x007C0000,
- 0x007E0000,
- 0x007F0000,
- 0x007F8000,
- 0x007FC000,
- 0x007FE000,
- 0x007FF000,
- 0x007FF800,
- 0x007FFC00,
- 0x007FFE00,
- 0x007FFF00,
- 0x007FFF80,
- 0x007FFFC0,
- 0x007FFFE0,
- 0x007FFFF0,
- 0x007FFFF8,
- 0x007FFFFC,
- 0x007FFFFE,
- 0x007FFFFF,
- 0x007FFFFD,
- 0x007FFFFB,
- 0x007FFFF7,
- 0x007FFFEF,
- 0x007FFFDF,
- 0x007FFFBF,
- 0x007FFF7F,
- 0x007FFEFF,
- 0x007FFDFF,
- 0x007FFBFF,
- 0x007FF7FF,
- 0x007FEFFF,
- 0x007FDFFF,
- 0x007FBFFF,
- 0x007F7FFF,
- 0x007EFFFF,
- 0x007DFFFF,
- 0x007BFFFF,
- 0x0077FFFF,
- 0x006FFFFF,
- 0x005FFFFF,
- 0x003FFFFF,
- 0x001FFFFF,
- 0x000FFFFF,
- 0x0007FFFF,
- 0x0003FFFF,
- 0x0001FFFF,
- 0x0000FFFF,
- 0x00007FFF,
- 0x00003FFF,
- 0x00001FFF,
- 0x00000FFF,
- 0x000007FF,
- 0x000003FF,
- 0x000001FF,
- 0x000000FF,
- 0x0000007F,
- 0x0000003F,
- 0x0000001F,
- 0x0000000F,
- 0x00000007,
- 0x00000003
-};
-
-static const uint32 float32NumQInP1 = float32NumQIn * float32NumP1;
-static const uint32 float32NumQOutP1 = float32NumQOut * float32NumP1;
-
-static float32 float32NextQInP1( sequenceT *sequencePtr )
-{
- uint8 expNum, sigNum;
- float32 z;
-
- sigNum = sequencePtr->term1Num;
- expNum = sequencePtr->expNum;
- z = float32QIn[ expNum ] | float32P1[ sigNum ];
- ++sigNum;
- if ( float32NumP1 <= sigNum ) {
- sigNum = 0;
- ++expNum;
- if ( float32NumQIn <= expNum ) {
- expNum = 0;
- sequencePtr->done = TRUE;
- }
- sequencePtr->expNum = expNum;
- }
- sequencePtr->term1Num = sigNum;
- return z;
-
-}
-
-static float32 float32NextQOutP1( sequenceT *sequencePtr )
-{
- uint8 expNum, sigNum;
- float32 z;
-
- sigNum = sequencePtr->term1Num;
- expNum = sequencePtr->expNum;
- z = float32QOut[ expNum ] | float32P1[ sigNum ];
- ++sigNum;
- if ( float32NumP1 <= sigNum ) {
- sigNum = 0;
- ++expNum;
- if ( float32NumQOut <= expNum ) {
- expNum = 0;
- sequencePtr->done = TRUE;
- }
- sequencePtr->expNum = expNum;
- }
- sequencePtr->term1Num = sigNum;
- return z;
-
-}
-
-static const uint32 float32NumQInP2 = float32NumQIn * float32NumP2;
-static const uint32 float32NumQOutP2 = float32NumQOut * float32NumP2;
-
-static float32 float32NextQInP2( sequenceT *sequencePtr )
-{
- uint8 expNum, sigNum;
- float32 z;
-
- sigNum = sequencePtr->term1Num;
- expNum = sequencePtr->expNum;
- z = float32QIn[ expNum ] | float32P2[ sigNum ];
- ++sigNum;
- if ( float32NumP2 <= sigNum ) {
- sigNum = 0;
- ++expNum;
- if ( float32NumQIn <= expNum ) {
- expNum = 0;
- sequencePtr->done = TRUE;
- }
- sequencePtr->expNum = expNum;
- }
- sequencePtr->term1Num = sigNum;
- return z;
-
-}
-
-static float32 float32NextQOutP2( sequenceT *sequencePtr )
-{
- uint8 expNum, sigNum;
- float32 z;
-
- sigNum = sequencePtr->term1Num;
- expNum = sequencePtr->expNum;
- z = float32QOut[ expNum ] | float32P2[ sigNum ];
- ++sigNum;
- if ( float32NumP2 <= sigNum ) {
- sigNum = 0;
- ++expNum;
- if ( float32NumQOut <= expNum ) {
- expNum = 0;
- sequencePtr->done = TRUE;
- }
- sequencePtr->expNum = expNum;
- }
- sequencePtr->term1Num = sigNum;
- return z;
-
-}
-
-static float32 float32RandomQOutP3( void )
-{
-
- return
- float32QOut[ randomUint8() % float32NumQOut ]
- | ( ( float32P2[ randomUint8() % float32NumP2 ]
- + float32P2[ randomUint8() % float32NumP2 ] )
- & 0x007FFFFF );
-
-}
-
-static float32 float32RandomQOutPInf( void )
-{
-
- return
- float32QOut[ randomUint8() % float32NumQOut ]
- | ( randomUint32() & 0x007FFFFF );
-
-}
-
-enum {
- float32NumQInfWeightMasks = 7
-};
-
-static const uint32 float32QInfWeightMasks[ float32NumQInfWeightMasks ] = {
- 0x7F800000,
- 0x7F800000,
- 0x3F800000,
- 0x1F800000,
- 0x0F800000,
- 0x07800000,
- 0x03800000
-};
-
-static const uint32 float32QInfWeightOffsets[ float32NumQInfWeightMasks ] = {
- 0x00000000,
- 0x00000000,
- 0x20000000,
- 0x30000000,
- 0x38000000,
- 0x3C000000,
- 0x3E000000
-};
-
-static float32 float32RandomQInfP3( void )
-{
- int8 weightMaskNum;
-
- weightMaskNum = randomUint8() % float32NumQInfWeightMasks;
- return
- ( ( (uint32) ( randomUint8() & 1 ) )<<31 )
- | ( ( ( ( (uint32) ( randomUint16() & 0x1FF ) )<<23 )
- & float32QInfWeightMasks[ weightMaskNum ] )
- + float32QInfWeightOffsets[ weightMaskNum ]
- )
- | ( ( float32P2[ randomUint8() % float32NumP2 ]
- + float32P2[ randomUint8() % float32NumP2 ] )
- & 0x007FFFFF );
-
-}
-
-static float32 float32RandomQInfPInf( void )
-{
- int8 weightMaskNum;
-
- weightMaskNum = randomUint8() % float32NumQInfWeightMasks;
- return
- ( ( (uint32) ( randomUint8() & 1 ) )<<31 )
- | ( ( ( ( (uint32) ( randomUint16() & 0x1FF ) )<<23 )
- & float32QInfWeightMasks[ weightMaskNum ] )
- + float32QInfWeightOffsets[ weightMaskNum ]
- )
- | ( randomUint32() & 0x007FFFFF );
-
-}
-
-static float32 float32Random( void )
-{
-
- switch ( randomUint8() & 7 ) {
- case 0:
- case 1:
- case 2:
- return float32RandomQOutP3();
- case 3:
- return float32RandomQOutPInf();
- case 4:
- case 5:
- case 6:
- return float32RandomQInfP3();
- default:
- return float32RandomQInfPInf();
- }
-
-}
-
-#ifdef BITS64
-#define SETFLOAT64( z, zHigh, zLow ) z = ( ( (float64) zHigh )<<32 ) | zLow
-#else
-#define SETFLOAT64( z, zHigh, zLow ) z.low = zLow; z.high = zHigh
-#endif
-
-enum {
- float64NumQIn = 22,
- float64NumQOut = 64,
- float64NumP1 = 4,
- float64NumP2 = 204
-};
-
-static const uint32 float64QIn[ float64NumQIn ] = {
- 0x00000000, /* positive, subnormal */
- 0x00100000, /* positive, -1022 */
- 0x3CA00000, /* positive, -53 */
- 0x3FD00000, /* positive, -2 */
- 0x3FE00000, /* positive, -1 */
- 0x3FF00000, /* positive, 0 */
- 0x40000000, /* positive, 1 */
- 0x40100000, /* positive, 2 */
- 0x43400000, /* positive, 53 */
- 0x7FE00000, /* positive, 1023 */
- 0x7FF00000, /* positive, infinity or NaN */
- 0x80000000, /* negative, subnormal */
- 0x80100000, /* negative, -1022 */
- 0xBCA00000, /* negative, -53 */
- 0xBFD00000, /* negative, -2 */
- 0xBFE00000, /* negative, -1 */
- 0xBFF00000, /* negative, 0 */
- 0xC0000000, /* negative, 1 */
- 0xC0100000, /* negative, 2 */
- 0xC3400000, /* negative, 53 */
- 0xFFE00000, /* negative, 1023 */
- 0xFFF00000 /* negative, infinity or NaN */
-};
-
-static const uint32 float64QOut[ float64NumQOut ] = {
- 0x00000000, /* positive, subnormal */
- 0x00100000, /* positive, -1022 */
- 0x00200000, /* positive, -1021 */
- 0x37E00000, /* positive, -129 */
- 0x37F00000, /* positive, -128 */
- 0x38000000, /* positive, -127 */
- 0x38100000, /* positive, -126 */
- 0x3CA00000, /* positive, -53 */
- 0x3FB00000, /* positive, -4 */
- 0x3FC00000, /* positive, -3 */
- 0x3FD00000, /* positive, -2 */
- 0x3FE00000, /* positive, -1 */
- 0x3FF00000, /* positive, 0 */
- 0x40000000, /* positive, 1 */
- 0x40100000, /* positive, 2 */
- 0x40200000, /* positive, 3 */
- 0x40300000, /* positive, 4 */
- 0x41C00000, /* positive, 29 */
- 0x41D00000, /* positive, 30 */
- 0x41E00000, /* positive, 31 */
- 0x41F00000, /* positive, 32 */
- 0x43400000, /* positive, 53 */
- 0x43C00000, /* positive, 61 */
- 0x43D00000, /* positive, 62 */
- 0x43E00000, /* positive, 63 */
- 0x43F00000, /* positive, 64 */
- 0x47E00000, /* positive, 127 */
- 0x47F00000, /* positive, 128 */
- 0x48000000, /* positive, 129 */
- 0x7FD00000, /* positive, 1022 */
- 0x7FE00000, /* positive, 1023 */
- 0x7FF00000, /* positive, infinity or NaN */
- 0x80000000, /* negative, subnormal */
- 0x80100000, /* negative, -1022 */
- 0x80200000, /* negative, -1021 */
- 0xB7E00000, /* negative, -129 */
- 0xB7F00000, /* negative, -128 */
- 0xB8000000, /* negative, -127 */
- 0xB8100000, /* negative, -126 */
- 0xBCA00000, /* negative, -53 */
- 0xBFB00000, /* negative, -4 */
- 0xBFC00000, /* negative, -3 */
- 0xBFD00000, /* negative, -2 */
- 0xBFE00000, /* negative, -1 */
- 0xBFF00000, /* negative, 0 */
- 0xC0000000, /* negative, 1 */
- 0xC0100000, /* negative, 2 */
- 0xC0200000, /* negative, 3 */
- 0xC0300000, /* negative, 4 */
- 0xC1C00000, /* negative, 29 */
- 0xC1D00000, /* negative, 30 */
- 0xC1E00000, /* negative, 31 */
- 0xC1F00000, /* negative, 32 */
- 0xC3400000, /* negative, 53 */
- 0xC3C00000, /* negative, 61 */
- 0xC3D00000, /* negative, 62 */
- 0xC3E00000, /* negative, 63 */
- 0xC3F00000, /* negative, 64 */
- 0xC7E00000, /* negative, 127 */
- 0xC7F00000, /* negative, 128 */
- 0xC8000000, /* negative, 129 */
- 0xFFD00000, /* negative, 1022 */
- 0xFFE00000, /* negative, 1023 */
- 0xFFF00000 /* negative, infinity or NaN */
-};
-
-static const struct { bits32 high, low; } float64P1[ float64NumP1 ] = {
- { 0x00000000, 0x00000000 },
- { 0x00000000, 0x00000001 },
- { 0x000FFFFF, 0xFFFFFFFF },
- { 0x000FFFFF, 0xFFFFFFFE }
-};
-
-static const struct { bits32 high, low; } float64P2[ float64NumP2 ] = {
- { 0x00000000, 0x00000000 },
- { 0x00000000, 0x00000001 },
- { 0x00000000, 0x00000002 },
- { 0x00000000, 0x00000004 },
- { 0x00000000, 0x00000008 },
- { 0x00000000, 0x00000010 },
- { 0x00000000, 0x00000020 },
- { 0x00000000, 0x00000040 },
- { 0x00000000, 0x00000080 },
- { 0x00000000, 0x00000100 },
- { 0x00000000, 0x00000200 },
- { 0x00000000, 0x00000400 },
- { 0x00000000, 0x00000800 },
- { 0x00000000, 0x00001000 },
- { 0x00000000, 0x00002000 },
- { 0x00000000, 0x00004000 },
- { 0x00000000, 0x00008000 },
- { 0x00000000, 0x00010000 },
- { 0x00000000, 0x00020000 },
- { 0x00000000, 0x00040000 },
- { 0x00000000, 0x00080000 },
- { 0x00000000, 0x00100000 },
- { 0x00000000, 0x00200000 },
- { 0x00000000, 0x00400000 },
- { 0x00000000, 0x00800000 },
- { 0x00000000, 0x01000000 },
- { 0x00000000, 0x02000000 },
- { 0x00000000, 0x04000000 },
- { 0x00000000, 0x08000000 },
- { 0x00000000, 0x10000000 },
- { 0x00000000, 0x20000000 },
- { 0x00000000, 0x40000000 },
- { 0x00000000, 0x80000000 },
- { 0x00000001, 0x00000000 },
- { 0x00000002, 0x00000000 },
- { 0x00000004, 0x00000000 },
- { 0x00000008, 0x00000000 },
- { 0x00000010, 0x00000000 },
- { 0x00000020, 0x00000000 },
- { 0x00000040, 0x00000000 },
- { 0x00000080, 0x00000000 },
- { 0x00000100, 0x00000000 },
- { 0x00000200, 0x00000000 },
- { 0x00000400, 0x00000000 },
- { 0x00000800, 0x00000000 },
- { 0x00001000, 0x00000000 },
- { 0x00002000, 0x00000000 },
- { 0x00004000, 0x00000000 },
- { 0x00008000, 0x00000000 },
- { 0x00010000, 0x00000000 },
- { 0x00020000, 0x00000000 },
- { 0x00040000, 0x00000000 },
- { 0x00080000, 0x00000000 },
- { 0x000C0000, 0x00000000 },
- { 0x000E0000, 0x00000000 },
- { 0x000F0000, 0x00000000 },
- { 0x000F8000, 0x00000000 },
- { 0x000FC000, 0x00000000 },
- { 0x000FE000, 0x00000000 },
- { 0x000FF000, 0x00000000 },
- { 0x000FF800, 0x00000000 },
- { 0x000FFC00, 0x00000000 },
- { 0x000FFE00, 0x00000000 },
- { 0x000FFF00, 0x00000000 },
- { 0x000FFF80, 0x00000000 },
- { 0x000FFFC0, 0x00000000 },
- { 0x000FFFE0, 0x00000000 },
- { 0x000FFFF0, 0x00000000 },
- { 0x000FFFF8, 0x00000000 },
- { 0x000FFFFC, 0x00000000 },
- { 0x000FFFFE, 0x00000000 },
- { 0x000FFFFF, 0x00000000 },
- { 0x000FFFFF, 0x80000000 },
- { 0x000FFFFF, 0xC0000000 },
- { 0x000FFFFF, 0xE0000000 },
- { 0x000FFFFF, 0xF0000000 },
- { 0x000FFFFF, 0xF8000000 },
- { 0x000FFFFF, 0xFC000000 },
- { 0x000FFFFF, 0xFE000000 },
- { 0x000FFFFF, 0xFF000000 },
- { 0x000FFFFF, 0xFF800000 },
- { 0x000FFFFF, 0xFFC00000 },
- { 0x000FFFFF, 0xFFE00000 },
- { 0x000FFFFF, 0xFFF00000 },
- { 0x000FFFFF, 0xFFF80000 },
- { 0x000FFFFF, 0xFFFC0000 },
- { 0x000FFFFF, 0xFFFE0000 },
- { 0x000FFFFF, 0xFFFF0000 },
- { 0x000FFFFF, 0xFFFF8000 },
- { 0x000FFFFF, 0xFFFFC000 },
- { 0x000FFFFF, 0xFFFFE000 },
- { 0x000FFFFF, 0xFFFFF000 },
- { 0x000FFFFF, 0xFFFFF800 },
- { 0x000FFFFF, 0xFFFFFC00 },
- { 0x000FFFFF, 0xFFFFFE00 },
- { 0x000FFFFF, 0xFFFFFF00 },
- { 0x000FFFFF, 0xFFFFFF80 },
- { 0x000FFFFF, 0xFFFFFFC0 },
- { 0x000FFFFF, 0xFFFFFFE0 },
- { 0x000FFFFF, 0xFFFFFFF0 },
- { 0x000FFFFF, 0xFFFFFFF8 },
- { 0x000FFFFF, 0xFFFFFFFC },
- { 0x000FFFFF, 0xFFFFFFFE },
- { 0x000FFFFF, 0xFFFFFFFF },
- { 0x000FFFFF, 0xFFFFFFFD },
- { 0x000FFFFF, 0xFFFFFFFB },
- { 0x000FFFFF, 0xFFFFFFF7 },
- { 0x000FFFFF, 0xFFFFFFEF },
- { 0x000FFFFF, 0xFFFFFFDF },
- { 0x000FFFFF, 0xFFFFFFBF },
- { 0x000FFFFF, 0xFFFFFF7F },
- { 0x000FFFFF, 0xFFFFFEFF },
- { 0x000FFFFF, 0xFFFFFDFF },
- { 0x000FFFFF, 0xFFFFFBFF },
- { 0x000FFFFF, 0xFFFFF7FF },
- { 0x000FFFFF, 0xFFFFEFFF },
- { 0x000FFFFF, 0xFFFFDFFF },
- { 0x000FFFFF, 0xFFFFBFFF },
- { 0x000FFFFF, 0xFFFF7FFF },
- { 0x000FFFFF, 0xFFFEFFFF },
- { 0x000FFFFF, 0xFFFDFFFF },
- { 0x000FFFFF, 0xFFFBFFFF },
- { 0x000FFFFF, 0xFFF7FFFF },
- { 0x000FFFFF, 0xFFEFFFFF },
- { 0x000FFFFF, 0xFFDFFFFF },
- { 0x000FFFFF, 0xFFBFFFFF },
- { 0x000FFFFF, 0xFF7FFFFF },
- { 0x000FFFFF, 0xFEFFFFFF },
- { 0x000FFFFF, 0xFDFFFFFF },
- { 0x000FFFFF, 0xFBFFFFFF },
- { 0x000FFFFF, 0xF7FFFFFF },
- { 0x000FFFFF, 0xEFFFFFFF },
- { 0x000FFFFF, 0xDFFFFFFF },
- { 0x000FFFFF, 0xBFFFFFFF },
- { 0x000FFFFF, 0x7FFFFFFF },
- { 0x000FFFFE, 0xFFFFFFFF },
- { 0x000FFFFD, 0xFFFFFFFF },
- { 0x000FFFFB, 0xFFFFFFFF },
- { 0x000FFFF7, 0xFFFFFFFF },
- { 0x000FFFEF, 0xFFFFFFFF },
- { 0x000FFFDF, 0xFFFFFFFF },
- { 0x000FFFBF, 0xFFFFFFFF },
- { 0x000FFF7F, 0xFFFFFFFF },
- { 0x000FFEFF, 0xFFFFFFFF },
- { 0x000FFDFF, 0xFFFFFFFF },
- { 0x000FFBFF, 0xFFFFFFFF },
- { 0x000FF7FF, 0xFFFFFFFF },
- { 0x000FEFFF, 0xFFFFFFFF },
- { 0x000FDFFF, 0xFFFFFFFF },
- { 0x000FBFFF, 0xFFFFFFFF },
- { 0x000F7FFF, 0xFFFFFFFF },
- { 0x000EFFFF, 0xFFFFFFFF },
- { 0x000DFFFF, 0xFFFFFFFF },
- { 0x000BFFFF, 0xFFFFFFFF },
- { 0x0007FFFF, 0xFFFFFFFF },
- { 0x0003FFFF, 0xFFFFFFFF },
- { 0x0001FFFF, 0xFFFFFFFF },
- { 0x0000FFFF, 0xFFFFFFFF },
- { 0x00007FFF, 0xFFFFFFFF },
- { 0x00003FFF, 0xFFFFFFFF },
- { 0x00001FFF, 0xFFFFFFFF },
- { 0x00000FFF, 0xFFFFFFFF },
- { 0x000007FF, 0xFFFFFFFF },
- { 0x000003FF, 0xFFFFFFFF },
- { 0x000001FF, 0xFFFFFFFF },
- { 0x000000FF, 0xFFFFFFFF },
- { 0x0000007F, 0xFFFFFFFF },
- { 0x0000003F, 0xFFFFFFFF },
- { 0x0000001F, 0xFFFFFFFF },
- { 0x0000000F, 0xFFFFFFFF },
- { 0x00000007, 0xFFFFFFFF },
- { 0x00000003, 0xFFFFFFFF },
- { 0x00000001, 0xFFFFFFFF },
- { 0x00000000, 0xFFFFFFFF },
- { 0x00000000, 0x7FFFFFFF },
- { 0x00000000, 0x3FFFFFFF },
- { 0x00000000, 0x1FFFFFFF },
- { 0x00000000, 0x0FFFFFFF },
- { 0x00000000, 0x07FFFFFF },
- { 0x00000000, 0x03FFFFFF },
- { 0x00000000, 0x01FFFFFF },
- { 0x00000000, 0x00FFFFFF },
- { 0x00000000, 0x007FFFFF },
- { 0x00000000, 0x003FFFFF },
- { 0x00000000, 0x001FFFFF },
- { 0x00000000, 0x000FFFFF },
- { 0x00000000, 0x0007FFFF },
- { 0x00000000, 0x0003FFFF },
- { 0x00000000, 0x0001FFFF },
- { 0x00000000, 0x0000FFFF },
- { 0x00000000, 0x00007FFF },
- { 0x00000000, 0x00003FFF },
- { 0x00000000, 0x00001FFF },
- { 0x00000000, 0x00000FFF },
- { 0x00000000, 0x000007FF },
- { 0x00000000, 0x000003FF },
- { 0x00000000, 0x000001FF },
- { 0x00000000, 0x000000FF },
- { 0x00000000, 0x0000007F },
- { 0x00000000, 0x0000003F },
- { 0x00000000, 0x0000001F },
- { 0x00000000, 0x0000000F },
- { 0x00000000, 0x00000007 },
- { 0x00000000, 0x00000003 }
-};
-
-static const uint32 float64NumQInP1 = float64NumQIn * float64NumP1;
-static const uint32 float64NumQOutP1 = float64NumQOut * float64NumP1;
-
-static float64 float64NextQInP1( sequenceT *sequencePtr )
-{
- uint8 expNum, sigNum;
- float64 z;
-
- sigNum = sequencePtr->term1Num;
- expNum = sequencePtr->expNum;
- SETFLOAT64(
- z,
- float64QIn[ expNum ] | float64P1[ sigNum ].high,
- float64P1[ sigNum ].low
- );
- ++sigNum;
- if ( float64NumP1 <= sigNum ) {
- sigNum = 0;
- ++expNum;
- if ( float64NumQIn <= expNum ) {
- expNum = 0;
- sequencePtr->done = TRUE;
- }
- sequencePtr->expNum = expNum;
- }
- sequencePtr->term1Num = sigNum;
- return z;
-
-}
-
-static float64 float64NextQOutP1( sequenceT *sequencePtr )
-{
- uint8 expNum, sigNum;
- float64 z;
-
- sigNum = sequencePtr->term1Num;
- expNum = sequencePtr->expNum;
- SETFLOAT64(
- z,
- float64QOut[ expNum ] | float64P1[ sigNum ].high,
- float64P1[ sigNum ].low
- );
- ++sigNum;
- if ( float64NumP1 <= sigNum ) {
- sigNum = 0;
- ++expNum;
- if ( float64NumQOut <= expNum ) {
- expNum = 0;
- sequencePtr->done = TRUE;
- }
- sequencePtr->expNum = expNum;
- }
- sequencePtr->term1Num = sigNum;
- return z;
-
-}
-
-static const uint32 float64NumQInP2 = float64NumQIn * float64NumP2;
-static const uint32 float64NumQOutP2 = float64NumQOut * float64NumP2;
-
-static float64 float64NextQInP2( sequenceT *sequencePtr )
-{
- uint8 expNum, sigNum;
- float64 z;
-
- sigNum = sequencePtr->term1Num;
- expNum = sequencePtr->expNum;
- SETFLOAT64(
- z,
- float64QIn[ expNum ] | float64P2[ sigNum ].high,
- float64P2[ sigNum ].low
- );
- ++sigNum;
- if ( float64NumP2 <= sigNum ) {
- sigNum = 0;
- ++expNum;
- if ( float64NumQIn <= expNum ) {
- expNum = 0;
- sequencePtr->done = TRUE;
- }
- sequencePtr->expNum = expNum;
- }
- sequencePtr->term1Num = sigNum;
- return z;
-
-}
-
-static float64 float64NextQOutP2( sequenceT *sequencePtr )
-{
- uint8 expNum, sigNum;
- float64 z;
-
- sigNum = sequencePtr->term1Num;
- expNum = sequencePtr->expNum;
- SETFLOAT64(
- z,
- float64QOut[ expNum ] | float64P2[ sigNum ].high,
- float64P2[ sigNum ].low
- );
- ++sigNum;
- if ( float64NumP2 <= sigNum ) {
- sigNum = 0;
- ++expNum;
- if ( float64NumQOut <= expNum ) {
- expNum = 0;
- sequencePtr->done = TRUE;
- }
- sequencePtr->expNum = expNum;
- }
- sequencePtr->term1Num = sigNum;
- return z;
-
-}
-
-static float64 float64RandomQOutP3( void )
-{
- int8 sigNum1, sigNum2;
- uint32 sig1Low, sig2Low, zLow;
- float64 z;
-
- sigNum1 = randomUint8() % float64NumP2;
- sigNum2 = randomUint8() % float64NumP2;
- sig1Low = float64P2[ sigNum1 ].low;
- sig2Low = float64P2[ sigNum2 ].low;
- zLow = sig1Low + sig2Low;
- SETFLOAT64(
- z,
- float64QOut[ randomUint8() % float64NumQOut ]
- | ( ( float64P2[ sigNum1 ].high
- + float64P2[ sigNum2 ].high
- + ( zLow < sig1Low )
- )
- & 0x000FFFFF
- ),
- zLow
- );
- return z;
-
-}
-
-static float64 float64RandomQOutPInf( void )
-{
- float64 z;
-
- SETFLOAT64(
- z,
- float64QOut[ randomUint8() % float64NumQOut ]
- | ( randomUint32() & 0x000FFFFF ),
- randomUint32()
- );
- return z;
-
-}
-
-enum {
- float64NumQInfWeightMasks = 10
-};
-
-static const uint32 float64QInfWeightMasks[ float64NumQInfWeightMasks ] = {
- 0x7FF00000,
- 0x7FF00000,
- 0x3FF00000,
- 0x1FF00000,
- 0x0FF00000,
- 0x07F00000,
- 0x03F00000,
- 0x01F00000,
- 0x00F00000,
- 0x00700000
-};
-
-static const uint32 float64QInfWeightOffsets[ float64NumQInfWeightMasks ] = {
- 0x00000000,
- 0x00000000,
- 0x20000000,
- 0x30000000,
- 0x38000000,
- 0x3C000000,
- 0x3E000000,
- 0x3F000000,
- 0x3F800000,
- 0x3FC00000
-};
-
-static float64 float64RandomQInfP3( void )
-{
- int8 sigNum1, sigNum2;
- uint32 sig1Low, sig2Low, zLow;
- int8 weightMaskNum;
- float64 z;
-
- sigNum1 = randomUint8() % float64NumP2;
- sigNum2 = randomUint8() % float64NumP2;
- sig1Low = float64P2[ sigNum1 ].low;
- sig2Low = float64P2[ sigNum2 ].low;
- zLow = sig1Low + sig2Low;
- weightMaskNum = randomUint8() % float64NumQInfWeightMasks;
- SETFLOAT64(
- z,
- ( ( (uint32) ( randomUint8() & 1 ) )<<31 )
- | ( ( ( ( (uint32) ( randomUint16() & 0xFFF ) )<<20 )
- & float64QInfWeightMasks[ weightMaskNum ] )
- + float64QInfWeightOffsets[ weightMaskNum ]
- )
- | ( ( float64P2[ sigNum1 ].high
- + float64P2[ sigNum2 ].high
- + ( zLow < sig1Low )
- )
- & 0x000FFFFF
- ),
- zLow
- );
- return z;
-
-}
-
-static float64 float64RandomQInfPInf( void )
-{
- int8 weightMaskNum;
- float64 z;
-
- weightMaskNum = randomUint8() % float64NumQInfWeightMasks;
- SETFLOAT64(
- z,
- ( ( (uint32) ( randomUint8() & 1 ) )<<31 )
- | ( ( ( ( (uint32) ( randomUint16() & 0xFFF ) )<<20 )
- & float64QInfWeightMasks[ weightMaskNum ] )
- + float64QInfWeightOffsets[ weightMaskNum ]
- )
- | ( randomUint32() & 0x000FFFFF ),
- randomUint32()
- );
- return z;
-
-}
-
-static float64 float64Random( void )
-{
-
- switch ( randomUint8() & 7 ) {
- case 0:
- case 1:
- case 2:
- return float64RandomQOutP3();
- case 3:
- return float64RandomQOutPInf();
- case 4:
- case 5:
- case 6:
- return float64RandomQInfP3();
- default:
- return float64RandomQInfPInf();
- }
-
-}
-
-#ifdef FLOATX80
-
-enum {
- floatx80NumQIn = 22,
- floatx80NumQOut = 76,
- floatx80NumP1 = 4,
- floatx80NumP2 = 248
-};
-
-static const uint16 floatx80QIn[ floatx80NumQIn ] = {
- 0x0000, /* positive, subnormal */
- 0x0001, /* positive, -16382 */
- 0x3FBF, /* positive, -64 */
- 0x3FFD, /* positive, -2 */
- 0x3FFE, /* positive, -1 */
- 0x3FFF, /* positive, 0 */
- 0x4000, /* positive, 1 */
- 0x4001, /* positive, 2 */
- 0x403F, /* positive, 64 */
- 0x7FFE, /* positive, 16383 */
- 0x7FFF, /* positive, infinity or NaN */
- 0x8000, /* negative, subnormal */
- 0x8001, /* negative, -16382 */
- 0xBFBF, /* negative, -64 */
- 0xBFFD, /* negative, -2 */
- 0xBFFE, /* negative, -1 */
- 0xBFFF, /* negative, 0 */
- 0xC000, /* negative, 1 */
- 0xC001, /* negative, 2 */
- 0xC03F, /* negative, 64 */
- 0xFFFE, /* negative, 16383 */
- 0xFFFF /* negative, infinity or NaN */
-};
-
-static const uint16 floatx80QOut[ floatx80NumQOut ] = {
- 0x0000, /* positive, subnormal */
- 0x0001, /* positive, -16382 */
- 0x0002, /* positive, -16381 */
- 0x3BFE, /* positive, -1025 */
- 0x3BFF, /* positive, -1024 */
- 0x3C00, /* positive, -1023 */
- 0x3C01, /* positive, -1022 */
- 0x3F7E, /* positive, -129 */
- 0x3F7F, /* positive, -128 */
- 0x3F80, /* positive, -127 */
- 0x3F81, /* positive, -126 */
- 0x3FBF, /* positive, -64 */
- 0x3FFB, /* positive, -4 */
- 0x3FFC, /* positive, -3 */
- 0x3FFD, /* positive, -2 */
- 0x3FFE, /* positive, -1 */
- 0x3FFF, /* positive, 0 */
- 0x4000, /* positive, 1 */
- 0x4001, /* positive, 2 */
- 0x4002, /* positive, 3 */
- 0x4003, /* positive, 4 */
- 0x401C, /* positive, 29 */
- 0x401D, /* positive, 30 */
- 0x401E, /* positive, 31 */
- 0x401F, /* positive, 32 */
- 0x403C, /* positive, 61 */
- 0x403D, /* positive, 62 */
- 0x403E, /* positive, 63 */
- 0x403F, /* positive, 64 */
- 0x407E, /* positive, 127 */
- 0x407F, /* positive, 128 */
- 0x4080, /* positive, 129 */
- 0x43FE, /* positive, 1023 */
- 0x43FF, /* positive, 1024 */
- 0x4400, /* positive, 1025 */
- 0x7FFD, /* positive, 16382 */
- 0x7FFE, /* positive, 16383 */
- 0x7FFF, /* positive, infinity or NaN */
- 0x8000, /* negative, subnormal */
- 0x8001, /* negative, -16382 */
- 0x8002, /* negative, -16381 */
- 0xBBFE, /* negative, -1025 */
- 0xBBFF, /* negative, -1024 */
- 0xBC00, /* negative, -1023 */
- 0xBC01, /* negative, -1022 */
- 0xBF7E, /* negative, -129 */
- 0xBF7F, /* negative, -128 */
- 0xBF80, /* negative, -127 */
- 0xBF81, /* negative, -126 */
- 0xBFBF, /* negative, -64 */
- 0xBFFB, /* negative, -4 */
- 0xBFFC, /* negative, -3 */
- 0xBFFD, /* negative, -2 */
- 0xBFFE, /* negative, -1 */
- 0xBFFF, /* negative, 0 */
- 0xC000, /* negative, 1 */
- 0xC001, /* negative, 2 */
- 0xC002, /* negative, 3 */
- 0xC003, /* negative, 4 */
- 0xC01C, /* negative, 29 */
- 0xC01D, /* negative, 30 */
- 0xC01E, /* negative, 31 */
- 0xC01F, /* negative, 32 */
- 0xC03C, /* negative, 61 */
- 0xC03D, /* negative, 62 */
- 0xC03E, /* negative, 63 */
- 0xC03F, /* negative, 64 */
- 0xC07E, /* negative, 127 */
- 0xC07F, /* negative, 128 */
- 0xC080, /* negative, 129 */
- 0xC3FE, /* negative, 1023 */
- 0xC3FF, /* negative, 1024 */
- 0xC400, /* negative, 1025 */
- 0xFFFD, /* negative, 16382 */
- 0xFFFE, /* negative, 16383 */
- 0xFFFF /* negative, infinity or NaN */
-};
-
-static const bits64 floatx80P1[ floatx80NumP1 ] = {
- LIT64( 0x0000000000000000 ),
- LIT64( 0x0000000000000001 ),
- LIT64( 0x7FFFFFFFFFFFFFFF ),
- LIT64( 0x7FFFFFFFFFFFFFFE )
-};
-
-static const bits64 floatx80P2[ floatx80NumP2 ] = {
- LIT64( 0x0000000000000000 ),
- LIT64( 0x0000000000000001 ),
- LIT64( 0x0000000000000002 ),
- LIT64( 0x0000000000000004 ),
- LIT64( 0x0000000000000008 ),
- LIT64( 0x0000000000000010 ),
- LIT64( 0x0000000000000020 ),
- LIT64( 0x0000000000000040 ),
- LIT64( 0x0000000000000080 ),
- LIT64( 0x0000000000000100 ),
- LIT64( 0x0000000000000200 ),
- LIT64( 0x0000000000000400 ),
- LIT64( 0x0000000000000800 ),
- LIT64( 0x0000000000001000 ),
- LIT64( 0x0000000000002000 ),
- LIT64( 0x0000000000004000 ),
- LIT64( 0x0000000000008000 ),
- LIT64( 0x0000000000010000 ),
- LIT64( 0x0000000000020000 ),
- LIT64( 0x0000000000040000 ),
- LIT64( 0x0000000000080000 ),
- LIT64( 0x0000000000100000 ),
- LIT64( 0x0000000000200000 ),
- LIT64( 0x0000000000400000 ),
- LIT64( 0x0000000000800000 ),
- LIT64( 0x0000000001000000 ),
- LIT64( 0x0000000002000000 ),
- LIT64( 0x0000000004000000 ),
- LIT64( 0x0000000008000000 ),
- LIT64( 0x0000000010000000 ),
- LIT64( 0x0000000020000000 ),
- LIT64( 0x0000000040000000 ),
- LIT64( 0x0000000080000000 ),
- LIT64( 0x0000000100000000 ),
- LIT64( 0x0000000200000000 ),
- LIT64( 0x0000000400000000 ),
- LIT64( 0x0000000800000000 ),
- LIT64( 0x0000001000000000 ),
- LIT64( 0x0000002000000000 ),
- LIT64( 0x0000004000000000 ),
- LIT64( 0x0000008000000000 ),
- LIT64( 0x0000010000000000 ),
- LIT64( 0x0000020000000000 ),
- LIT64( 0x0000040000000000 ),
- LIT64( 0x0000080000000000 ),
- LIT64( 0x0000100000000000 ),
- LIT64( 0x0000200000000000 ),
- LIT64( 0x0000400000000000 ),
- LIT64( 0x0000800000000000 ),
- LIT64( 0x0001000000000000 ),
- LIT64( 0x0002000000000000 ),
- LIT64( 0x0004000000000000 ),
- LIT64( 0x0008000000000000 ),
- LIT64( 0x0010000000000000 ),
- LIT64( 0x0020000000000000 ),
- LIT64( 0x0040000000000000 ),
- LIT64( 0x0080000000000000 ),
- LIT64( 0x0100000000000000 ),
- LIT64( 0x0200000000000000 ),
- LIT64( 0x0400000000000000 ),
- LIT64( 0x0800000000000000 ),
- LIT64( 0x1000000000000000 ),
- LIT64( 0x2000000000000000 ),
- LIT64( 0x4000000000000000 ),
- LIT64( 0x6000000000000000 ),
- LIT64( 0x7000000000000000 ),
- LIT64( 0x7800000000000000 ),
- LIT64( 0x7C00000000000000 ),
- LIT64( 0x7E00000000000000 ),
- LIT64( 0x7F00000000000000 ),
- LIT64( 0x7F80000000000000 ),
- LIT64( 0x7FC0000000000000 ),
- LIT64( 0x7FE0000000000000 ),
- LIT64( 0x7FF0000000000000 ),
- LIT64( 0x7FF8000000000000 ),
- LIT64( 0x7FFC000000000000 ),
- LIT64( 0x7FFE000000000000 ),
- LIT64( 0x7FFF000000000000 ),
- LIT64( 0x7FFF800000000000 ),
- LIT64( 0x7FFFC00000000000 ),
- LIT64( 0x7FFFE00000000000 ),
- LIT64( 0x7FFFF00000000000 ),
- LIT64( 0x7FFFF80000000000 ),
- LIT64( 0x7FFFFC0000000000 ),
- LIT64( 0x7FFFFE0000000000 ),
- LIT64( 0x7FFFFF0000000000 ),
- LIT64( 0x7FFFFF8000000000 ),
- LIT64( 0x7FFFFFC000000000 ),
- LIT64( 0x7FFFFFE000000000 ),
- LIT64( 0x7FFFFFF000000000 ),
- LIT64( 0x7FFFFFF800000000 ),
- LIT64( 0x7FFFFFFC00000000 ),
- LIT64( 0x7FFFFFFE00000000 ),
- LIT64( 0x7FFFFFFF00000000 ),
- LIT64( 0x7FFFFFFF80000000 ),
- LIT64( 0x7FFFFFFFC0000000 ),
- LIT64( 0x7FFFFFFFE0000000 ),
- LIT64( 0x7FFFFFFFF0000000 ),
- LIT64( 0x7FFFFFFFF8000000 ),
- LIT64( 0x7FFFFFFFFC000000 ),
- LIT64( 0x7FFFFFFFFE000000 ),
- LIT64( 0x7FFFFFFFFF000000 ),
- LIT64( 0x7FFFFFFFFF800000 ),
- LIT64( 0x7FFFFFFFFFC00000 ),
- LIT64( 0x7FFFFFFFFFE00000 ),
- LIT64( 0x7FFFFFFFFFF00000 ),
- LIT64( 0x7FFFFFFFFFF80000 ),
- LIT64( 0x7FFFFFFFFFFC0000 ),
- LIT64( 0x7FFFFFFFFFFE0000 ),
- LIT64( 0x7FFFFFFFFFFF0000 ),
- LIT64( 0x7FFFFFFFFFFF8000 ),
- LIT64( 0x7FFFFFFFFFFFC000 ),
- LIT64( 0x7FFFFFFFFFFFE000 ),
- LIT64( 0x7FFFFFFFFFFFF000 ),
- LIT64( 0x7FFFFFFFFFFFF800 ),
- LIT64( 0x7FFFFFFFFFFFFC00 ),
- LIT64( 0x7FFFFFFFFFFFFE00 ),
- LIT64( 0x7FFFFFFFFFFFFF00 ),
- LIT64( 0x7FFFFFFFFFFFFF80 ),
- LIT64( 0x7FFFFFFFFFFFFFC0 ),
- LIT64( 0x7FFFFFFFFFFFFFE0 ),
- LIT64( 0x7FFFFFFFFFFFFFF0 ),
- LIT64( 0x7FFFFFFFFFFFFFF8 ),
- LIT64( 0x7FFFFFFFFFFFFFFC ),
- LIT64( 0x7FFFFFFFFFFFFFFE ),
- LIT64( 0x7FFFFFFFFFFFFFFF ),
- LIT64( 0x7FFFFFFFFFFFFFFD ),
- LIT64( 0x7FFFFFFFFFFFFFFB ),
- LIT64( 0x7FFFFFFFFFFFFFF7 ),
- LIT64( 0x7FFFFFFFFFFFFFEF ),
- LIT64( 0x7FFFFFFFFFFFFFDF ),
- LIT64( 0x7FFFFFFFFFFFFFBF ),
- LIT64( 0x7FFFFFFFFFFFFF7F ),
- LIT64( 0x7FFFFFFFFFFFFEFF ),
- LIT64( 0x7FFFFFFFFFFFFDFF ),
- LIT64( 0x7FFFFFFFFFFFFBFF ),
- LIT64( 0x7FFFFFFFFFFFF7FF ),
- LIT64( 0x7FFFFFFFFFFFEFFF ),
- LIT64( 0x7FFFFFFFFFFFDFFF ),
- LIT64( 0x7FFFFFFFFFFFBFFF ),
- LIT64( 0x7FFFFFFFFFFF7FFF ),
- LIT64( 0x7FFFFFFFFFFEFFFF ),
- LIT64( 0x7FFFFFFFFFFDFFFF ),
- LIT64( 0x7FFFFFFFFFFBFFFF ),
- LIT64( 0x7FFFFFFFFFF7FFFF ),
- LIT64( 0x7FFFFFFFFFEFFFFF ),
- LIT64( 0x7FFFFFFFFFDFFFFF ),
- LIT64( 0x7FFFFFFFFFBFFFFF ),
- LIT64( 0x7FFFFFFFFF7FFFFF ),
- LIT64( 0x7FFFFFFFFEFFFFFF ),
- LIT64( 0x7FFFFFFFFDFFFFFF ),
- LIT64( 0x7FFFFFFFFBFFFFFF ),
- LIT64( 0x7FFFFFFFF7FFFFFF ),
- LIT64( 0x7FFFFFFFEFFFFFFF ),
- LIT64( 0x7FFFFFFFDFFFFFFF ),
- LIT64( 0x7FFFFFFFBFFFFFFF ),
- LIT64( 0x7FFFFFFF7FFFFFFF ),
- LIT64( 0x7FFFFFFEFFFFFFFF ),
- LIT64( 0x7FFFFFFDFFFFFFFF ),
- LIT64( 0x7FFFFFFBFFFFFFFF ),
- LIT64( 0x7FFFFFF7FFFFFFFF ),
- LIT64( 0x7FFFFFEFFFFFFFFF ),
- LIT64( 0x7FFFFFDFFFFFFFFF ),
- LIT64( 0x7FFFFFBFFFFFFFFF ),
- LIT64( 0x7FFFFF7FFFFFFFFF ),
- LIT64( 0x7FFFFEFFFFFFFFFF ),
- LIT64( 0x7FFFFDFFFFFFFFFF ),
- LIT64( 0x7FFFFBFFFFFFFFFF ),
- LIT64( 0x7FFFF7FFFFFFFFFF ),
- LIT64( 0x7FFFEFFFFFFFFFFF ),
- LIT64( 0x7FFFDFFFFFFFFFFF ),
- LIT64( 0x7FFFBFFFFFFFFFFF ),
- LIT64( 0x7FFF7FFFFFFFFFFF ),
- LIT64( 0x7FFEFFFFFFFFFFFF ),
- LIT64( 0x7FFDFFFFFFFFFFFF ),
- LIT64( 0x7FFBFFFFFFFFFFFF ),
- LIT64( 0x7FF7FFFFFFFFFFFF ),
- LIT64( 0x7FEFFFFFFFFFFFFF ),
- LIT64( 0x7FDFFFFFFFFFFFFF ),
- LIT64( 0x7FBFFFFFFFFFFFFF ),
- LIT64( 0x7F7FFFFFFFFFFFFF ),
- LIT64( 0x7EFFFFFFFFFFFFFF ),
- LIT64( 0x7DFFFFFFFFFFFFFF ),
- LIT64( 0x7BFFFFFFFFFFFFFF ),
- LIT64( 0x77FFFFFFFFFFFFFF ),
- LIT64( 0x6FFFFFFFFFFFFFFF ),
- LIT64( 0x5FFFFFFFFFFFFFFF ),
- LIT64( 0x3FFFFFFFFFFFFFFF ),
- LIT64( 0x1FFFFFFFFFFFFFFF ),
- LIT64( 0x0FFFFFFFFFFFFFFF ),
- LIT64( 0x07FFFFFFFFFFFFFF ),
- LIT64( 0x03FFFFFFFFFFFFFF ),
- LIT64( 0x01FFFFFFFFFFFFFF ),
- LIT64( 0x00FFFFFFFFFFFFFF ),
- LIT64( 0x007FFFFFFFFFFFFF ),
- LIT64( 0x003FFFFFFFFFFFFF ),
- LIT64( 0x001FFFFFFFFFFFFF ),
- LIT64( 0x000FFFFFFFFFFFFF ),
- LIT64( 0x0007FFFFFFFFFFFF ),
- LIT64( 0x0003FFFFFFFFFFFF ),
- LIT64( 0x0001FFFFFFFFFFFF ),
- LIT64( 0x0000FFFFFFFFFFFF ),
- LIT64( 0x00007FFFFFFFFFFF ),
- LIT64( 0x00003FFFFFFFFFFF ),
- LIT64( 0x00001FFFFFFFFFFF ),
- LIT64( 0x00000FFFFFFFFFFF ),
- LIT64( 0x000007FFFFFFFFFF ),
- LIT64( 0x000003FFFFFFFFFF ),
- LIT64( 0x000001FFFFFFFFFF ),
- LIT64( 0x000000FFFFFFFFFF ),
- LIT64( 0x0000007FFFFFFFFF ),
- LIT64( 0x0000003FFFFFFFFF ),
- LIT64( 0x0000001FFFFFFFFF ),
- LIT64( 0x0000000FFFFFFFFF ),
- LIT64( 0x00000007FFFFFFFF ),
- LIT64( 0x00000003FFFFFFFF ),
- LIT64( 0x00000001FFFFFFFF ),
- LIT64( 0x00000000FFFFFFFF ),
- LIT64( 0x000000007FFFFFFF ),
- LIT64( 0x000000003FFFFFFF ),
- LIT64( 0x000000001FFFFFFF ),
- LIT64( 0x000000000FFFFFFF ),
- LIT64( 0x0000000007FFFFFF ),
- LIT64( 0x0000000003FFFFFF ),
- LIT64( 0x0000000001FFFFFF ),
- LIT64( 0x0000000000FFFFFF ),
- LIT64( 0x00000000007FFFFF ),
- LIT64( 0x00000000003FFFFF ),
- LIT64( 0x00000000001FFFFF ),
- LIT64( 0x00000000000FFFFF ),
- LIT64( 0x000000000007FFFF ),
- LIT64( 0x000000000003FFFF ),
- LIT64( 0x000000000001FFFF ),
- LIT64( 0x000000000000FFFF ),
- LIT64( 0x0000000000007FFF ),
- LIT64( 0x0000000000003FFF ),
- LIT64( 0x0000000000001FFF ),
- LIT64( 0x0000000000000FFF ),
- LIT64( 0x00000000000007FF ),
- LIT64( 0x00000000000003FF ),
- LIT64( 0x00000000000001FF ),
- LIT64( 0x00000000000000FF ),
- LIT64( 0x000000000000007F ),
- LIT64( 0x000000000000003F ),
- LIT64( 0x000000000000001F ),
- LIT64( 0x000000000000000F ),
- LIT64( 0x0000000000000007 ),
- LIT64( 0x0000000000000003 )
-};
-
-static const uint32 floatx80NumQInP1 = floatx80NumQIn * floatx80NumP1;
-static const uint32 floatx80NumQOutP1 = floatx80NumQOut * floatx80NumP1;
-
-static floatx80 floatx80NextQInP1( sequenceT *sequencePtr )
-{
- int16 expNum, sigNum;
- floatx80 z;
-
- sigNum = sequencePtr->term1Num;
- expNum = sequencePtr->expNum;
- z.low = floatx80P1[ sigNum ];
- z.high = floatx80QIn[ expNum ];
- if ( z.high & 0x7FFF ) z.low |= LIT64( 0x8000000000000000 );
- ++sigNum;
- if ( floatx80NumP1 <= sigNum ) {
- sigNum = 0;
- ++expNum;
- if ( floatx80NumQIn <= expNum ) {
- expNum = 0;
- sequencePtr->done = TRUE;
- }
- sequencePtr->expNum = expNum;
- }
- sequencePtr->term1Num = sigNum;
- return z;
-
-}
-
-static floatx80 floatx80NextQOutP1( sequenceT *sequencePtr )
-{
- int16 expNum, sigNum;
- floatx80 z;
-
- sigNum = sequencePtr->term1Num;
- expNum = sequencePtr->expNum;
- z.low = floatx80P1[ sigNum ];
- z.high = floatx80QOut[ expNum ];
- if ( z.high & 0x7FFF ) z.low |= LIT64( 0x8000000000000000 );
- ++sigNum;
- if ( floatx80NumP1 <= sigNum ) {
- sigNum = 0;
- ++expNum;
- if ( floatx80NumQOut <= expNum ) {
- expNum = 0;
- sequencePtr->done = TRUE;
- }
- sequencePtr->expNum = expNum;
- }
- sequencePtr->term1Num = sigNum;
- return z;
-
-}
-
-static const uint32 floatx80NumQInP2 = floatx80NumQIn * floatx80NumP2;
-static const uint32 floatx80NumQOutP2 = floatx80NumQOut * floatx80NumP2;
-
-static floatx80 floatx80NextQInP2( sequenceT *sequencePtr )
-{
- int16 expNum, sigNum;
- floatx80 z;
-
- sigNum = sequencePtr->term1Num;
- expNum = sequencePtr->expNum;
- z.low = floatx80P2[ sigNum ];
- z.high = floatx80QIn[ expNum ];
- if ( z.high & 0x7FFF ) z.low |= LIT64( 0x8000000000000000 );
- ++sigNum;
- if ( floatx80NumP2 <= sigNum ) {
- sigNum = 0;
- ++expNum;
- if ( floatx80NumQIn <= expNum ) {
- expNum = 0;
- sequencePtr->done = TRUE;
- }
- sequencePtr->expNum = expNum;
- }
- sequencePtr->term1Num = sigNum;
- return z;
-
-}
-
-static floatx80 floatx80NextQOutP2( sequenceT *sequencePtr )
-{
- int16 expNum, sigNum;
- floatx80 z;
-
- sigNum = sequencePtr->term1Num;
- expNum = sequencePtr->expNum;
- z.low = floatx80P2[ sigNum ];
- z.high = floatx80QOut[ expNum ];
- if ( z.high & 0x7FFF ) z.low |= LIT64( 0x8000000000000000 );
- ++sigNum;
- if ( floatx80NumP2 <= sigNum ) {
- sigNum = 0;
- ++expNum;
- if ( floatx80NumQOut <= expNum ) {
- expNum = 0;
- sequencePtr->done = TRUE;
- }
- sequencePtr->expNum = expNum;
- }
- sequencePtr->term1Num = sigNum;
- return z;
-
-}
-
-static floatx80 floatx80RandomQOutP3( void )
-{
- floatx80 z;
-
- z.low =
- ( floatx80P2[ randomUint8() % floatx80NumP2 ]
- + floatx80P2[ randomUint8() % floatx80NumP2 ] )
- & LIT64( 0x7FFFFFFFFFFFFFFF );
- z.high = floatx80QOut[ randomUint8() % floatx80NumQOut ];
- if ( z.high & 0x7FFF ) z.low |= LIT64( 0x8000000000000000 );
- return z;
-
-}
-
-static floatx80 floatx80RandomQOutPInf( void )
-{
- floatx80 z;
-
- z.low = randomUint64() & LIT64( 0x7FFFFFFFFFFFFFFF );
- z.high = floatx80QOut[ randomUint8() % floatx80NumQOut ];
- if ( z.high & 0x7FFF ) z.low |= LIT64( 0x8000000000000000 );
- return z;
-
-}
-
-enum {
- floatx80NumQInfWeightMasks = 14
-};
-
-static const uint16 floatx80QInfWeightMasks[ floatx80NumQInfWeightMasks ] = {
- 0x7FFF,
- 0x7FFF,
- 0x3FFF,
- 0x1FFF,
- 0x07FF,
- 0x07FF,
- 0x03FF,
- 0x01FF,
- 0x00FF,
- 0x007F,
- 0x003F,
- 0x001F,
- 0x000F,
- 0x0007
-};
-
-static const uint16 floatx80QInfWeightOffsets[ floatx80NumQInfWeightMasks ] = {
- 0x0000,
- 0x0000,
- 0x2000,
- 0x3000,
- 0x3800,
- 0x3C00,
- 0x3E00,
- 0x3F00,
- 0x3F80,
- 0x3FC0,
- 0x3FE0,
- 0x3FF0,
- 0x3FF8,
- 0x3FFC
-};
-
-static floatx80 floatx80RandomQInfP3( void )
-{
- int8 weightMaskNum;
- floatx80 z;
-
- z.low =
- ( floatx80P2[ randomUint8() % floatx80NumP2 ]
- + floatx80P2[ randomUint8() % floatx80NumP2 ] )
- & LIT64( 0x7FFFFFFFFFFFFFFF );
- weightMaskNum = randomUint8() % floatx80NumQInfWeightMasks;
- z.high =
- ( randomUint16() & floatx80QInfWeightMasks[ weightMaskNum ] )
- + floatx80QInfWeightOffsets[ weightMaskNum ];
- if ( z.high ) z.low |= LIT64( 0x8000000000000000 );
- z.high |= ( (uint16) ( randomUint8() & 1 ) )<<15;
- return z;
-
-}
-
-static floatx80 floatx80RandomQInfPInf( void )
-{
- int8 weightMaskNum;
- floatx80 z;
-
- z.low = randomUint64() & LIT64( 0x7FFFFFFFFFFFFFFF );
- weightMaskNum = randomUint8() % floatx80NumQInfWeightMasks;
- z.high =
- ( randomUint16() & floatx80QInfWeightMasks[ weightMaskNum ] )
- + floatx80QInfWeightOffsets[ weightMaskNum ];
- if ( z.high ) z.low |= LIT64( 0x8000000000000000 );
- z.high |= ( (uint16) ( randomUint8() & 1 ) )<<15;
- return z;
-
-}
-
-static floatx80 floatx80Random( void )
-{
-
- switch ( randomUint8() & 7 ) {
- case 0:
- case 1:
- case 2:
- return floatx80RandomQOutP3();
- case 3:
- return floatx80RandomQOutPInf();
- case 4:
- case 5:
- case 6:
- return floatx80RandomQInfP3();
- default:
- return floatx80RandomQInfPInf();
- }
-
-}
-
-#endif
-
-#ifdef FLOAT128
-
-enum {
- float128NumQIn = 22,
- float128NumQOut = 78,
- float128NumP1 = 4,
- float128NumP2 = 443
-};
-
-static const uint64 float128QIn[ float128NumQIn ] = {
- LIT64( 0x0000000000000000 ), /* positive, subnormal */
- LIT64( 0x0001000000000000 ), /* positive, -16382 */
- LIT64( 0x3F8E000000000000 ), /* positive, -113 */
- LIT64( 0x3FFD000000000000 ), /* positive, -2 */
- LIT64( 0x3FFE000000000000 ), /* positive, -1 */
- LIT64( 0x3FFF000000000000 ), /* positive, 0 */
- LIT64( 0x4000000000000000 ), /* positive, 1 */
- LIT64( 0x4001000000000000 ), /* positive, 2 */
- LIT64( 0x4070000000000000 ), /* positive, 113 */
- LIT64( 0x7FFE000000000000 ), /* positive, 16383 */
- LIT64( 0x7FFF000000000000 ), /* positive, infinity or NaN */
- LIT64( 0x8000000000000000 ), /* negative, subnormal */
- LIT64( 0x8001000000000000 ), /* negative, -16382 */
- LIT64( 0xBF8E000000000000 ), /* negative, -113 */
- LIT64( 0xBFFD000000000000 ), /* negative, -2 */
- LIT64( 0xBFFE000000000000 ), /* negative, -1 */
- LIT64( 0xBFFF000000000000 ), /* negative, 0 */
- LIT64( 0xC000000000000000 ), /* negative, 1 */
- LIT64( 0xC001000000000000 ), /* negative, 2 */
- LIT64( 0xC070000000000000 ), /* negative, 113 */
- LIT64( 0xFFFE000000000000 ), /* negative, 16383 */
- LIT64( 0xFFFF000000000000 ) /* negative, infinity or NaN */
-};
-
-static const uint64 float128QOut[ float128NumQOut ] = {
- LIT64( 0x0000000000000000 ), /* positive, subnormal */
- LIT64( 0x0001000000000000 ), /* positive, -16382 */
- LIT64( 0x0002000000000000 ), /* positive, -16381 */
- LIT64( 0x3BFE000000000000 ), /* positive, -1025 */
- LIT64( 0x3BFF000000000000 ), /* positive, -1024 */
- LIT64( 0x3C00000000000000 ), /* positive, -1023 */
- LIT64( 0x3C01000000000000 ), /* positive, -1022 */
- LIT64( 0x3F7E000000000000 ), /* positive, -129 */
- LIT64( 0x3F7F000000000000 ), /* positive, -128 */
- LIT64( 0x3F80000000000000 ), /* positive, -127 */
- LIT64( 0x3F81000000000000 ), /* positive, -126 */
- LIT64( 0x3F8E000000000000 ), /* positive, -113 */
- LIT64( 0x3FFB000000000000 ), /* positive, -4 */
- LIT64( 0x3FFC000000000000 ), /* positive, -3 */
- LIT64( 0x3FFD000000000000 ), /* positive, -2 */
- LIT64( 0x3FFE000000000000 ), /* positive, -1 */
- LIT64( 0x3FFF000000000000 ), /* positive, 0 */
- LIT64( 0x4000000000000000 ), /* positive, 1 */
- LIT64( 0x4001000000000000 ), /* positive, 2 */
- LIT64( 0x4002000000000000 ), /* positive, 3 */
- LIT64( 0x4003000000000000 ), /* positive, 4 */
- LIT64( 0x401C000000000000 ), /* positive, 29 */
- LIT64( 0x401D000000000000 ), /* positive, 30 */
- LIT64( 0x401E000000000000 ), /* positive, 31 */
- LIT64( 0x401F000000000000 ), /* positive, 32 */
- LIT64( 0x403C000000000000 ), /* positive, 61 */
- LIT64( 0x403D000000000000 ), /* positive, 62 */
- LIT64( 0x403E000000000000 ), /* positive, 63 */
- LIT64( 0x403F000000000000 ), /* positive, 64 */
- LIT64( 0x4070000000000000 ), /* positive, 113 */
- LIT64( 0x407E000000000000 ), /* positive, 127 */
- LIT64( 0x407F000000000000 ), /* positive, 128 */
- LIT64( 0x4080000000000000 ), /* positive, 129 */
- LIT64( 0x43FE000000000000 ), /* positive, 1023 */
- LIT64( 0x43FF000000000000 ), /* positive, 1024 */
- LIT64( 0x4400000000000000 ), /* positive, 1025 */
- LIT64( 0x7FFD000000000000 ), /* positive, 16382 */
- LIT64( 0x7FFE000000000000 ), /* positive, 16383 */
- LIT64( 0x7FFF000000000000 ), /* positive, infinity or NaN */
- LIT64( 0x8000000000000000 ), /* negative, subnormal */
- LIT64( 0x8001000000000000 ), /* negative, -16382 */
- LIT64( 0x8002000000000000 ), /* negative, -16381 */
- LIT64( 0xBBFE000000000000 ), /* negative, -1025 */
- LIT64( 0xBBFF000000000000 ), /* negative, -1024 */
- LIT64( 0xBC00000000000000 ), /* negative, -1023 */
- LIT64( 0xBC01000000000000 ), /* negative, -1022 */
- LIT64( 0xBF7E000000000000 ), /* negative, -129 */
- LIT64( 0xBF7F000000000000 ), /* negative, -128 */
- LIT64( 0xBF80000000000000 ), /* negative, -127 */
- LIT64( 0xBF81000000000000 ), /* negative, -126 */
- LIT64( 0xBF8E000000000000 ), /* negative, -113 */
- LIT64( 0xBFFB000000000000 ), /* negative, -4 */
- LIT64( 0xBFFC000000000000 ), /* negative, -3 */
- LIT64( 0xBFFD000000000000 ), /* negative, -2 */
- LIT64( 0xBFFE000000000000 ), /* negative, -1 */
- LIT64( 0xBFFF000000000000 ), /* negative, 0 */
- LIT64( 0xC000000000000000 ), /* negative, 1 */
- LIT64( 0xC001000000000000 ), /* negative, 2 */
- LIT64( 0xC002000000000000 ), /* negative, 3 */
- LIT64( 0xC003000000000000 ), /* negative, 4 */
- LIT64( 0xC01C000000000000 ), /* negative, 29 */
- LIT64( 0xC01D000000000000 ), /* negative, 30 */
- LIT64( 0xC01E000000000000 ), /* negative, 31 */
- LIT64( 0xC01F000000000000 ), /* negative, 32 */
- LIT64( 0xC03C000000000000 ), /* negative, 61 */
- LIT64( 0xC03D000000000000 ), /* negative, 62 */
- LIT64( 0xC03E000000000000 ), /* negative, 63 */
- LIT64( 0xC03F000000000000 ), /* negative, 64 */
- LIT64( 0xC070000000000000 ), /* negative, 113 */
- LIT64( 0xC07E000000000000 ), /* negative, 127 */
- LIT64( 0xC07F000000000000 ), /* negative, 128 */
- LIT64( 0xC080000000000000 ), /* negative, 129 */
- LIT64( 0xC3FE000000000000 ), /* negative, 1023 */
- LIT64( 0xC3FF000000000000 ), /* negative, 1024 */
- LIT64( 0xC400000000000000 ), /* negative, 1025 */
- LIT64( 0xFFFD000000000000 ), /* negative, 16382 */
- LIT64( 0xFFFE000000000000 ), /* negative, 16383 */
- LIT64( 0xFFFF000000000000 ) /* negative, infinity or NaN */
-};
-
-static const struct { bits64 high, low; } float128P1[ float128NumP1 ] = {
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000001 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFE ) }
-};
-
-static const struct { bits64 high, low; } float128P2[ float128NumP2 ] = {
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000001 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000002 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000004 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000008 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000010 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000020 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000040 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000080 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000100 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000200 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000400 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000800 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000001000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000002000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000004000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000008000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000010000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000020000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000040000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000080000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000100000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000200000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000400000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000800000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000001000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000002000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000004000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000008000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000010000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000020000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000040000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000080000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000100000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000200000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000400000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000800000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000001000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000002000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000004000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000008000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000010000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000020000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000040000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000080000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000100000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000200000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000400000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000800000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0001000000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0002000000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0004000000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0008000000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0010000000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0020000000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0040000000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0080000000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0100000000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0200000000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0400000000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0800000000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x1000000000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x2000000000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x4000000000000000 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x8000000000000000 ) },
- { LIT64( 0x0000000000000001 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000000002 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000000004 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000000008 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000000010 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000000020 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000000040 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000000080 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000000100 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000000200 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000000400 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000000800 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000001000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000002000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000004000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000008000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000010000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000020000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000040000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000080000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000100000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000200000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000400000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000000800000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000001000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000002000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000004000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000008000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000010000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000020000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000040000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000080000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000100000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000200000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000400000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000000800000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000001000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000002000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000004000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000008000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000010000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000020000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000040000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000080000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000100000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000200000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000400000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000800000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000C00000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000E00000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000F00000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000F80000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FC0000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FE0000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FF0000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FF8000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFC000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFE000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFF000000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFF800000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFC00000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFE00000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFF00000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFF80000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFC0000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFE0000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFF0000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFF8000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFC000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFE000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFF000000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFF800000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFC00000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFE00000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFF00000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFF80000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFC0000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFE0000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFF0000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFF8000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFC000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFE000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFF000 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFF800 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFC00 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFE00 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFF00 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFF80 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFC0 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFE0 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFF0 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFF8 ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFC ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFE ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0x0000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0x8000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xC000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xE000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xF000000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xF800000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFC00000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFE00000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFF00000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFF80000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFC0000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFE0000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFF0000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFF8000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFC000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFE000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFF000000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFF800000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFC00000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFE00000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFF00000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFF80000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFC0000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFE0000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFF0000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFF8000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFC000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFE000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFF000000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFF800000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFC00000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFE00000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFF00000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFF80000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFC0000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFE0000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFF0000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFF8000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFC000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFE000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFF000000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFF800000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFC00000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFE00000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFF00000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFF80000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFC0000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFE0000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFF0000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFF8000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFC000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFE000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFF000 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFF800 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFC00 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFE00 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFF00 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFF80 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFC0 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFE0 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFF0 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFF8 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFC ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFE ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFD ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFB ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFF7 ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFEF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFDF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFBF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFF7F ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFEFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFDFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFBFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFF7FF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFEFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFDFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFBFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFF7FFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFEFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFDFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFBFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFF7FFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFEFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFDFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFBFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFF7FFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFEFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFDFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFBFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFF7FFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFEFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFDFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFBFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFF7FFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFEFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFDFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFBFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFF7FFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFEFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFDFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFBFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFF7FFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFEFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFDFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFBFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFF7FFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFEFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFDFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFBFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFF7FFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFEFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFDFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFBFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFF7FFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFEFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFDFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFBFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFF7FFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFEFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFDFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFBFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xF7FFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xEFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xDFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xBFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0x7FFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFD ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFFB ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFF7 ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFEF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFDF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFFBF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFF7F ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFEFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFDFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFFBFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFF7FF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFEFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFDFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFFBFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFF7FFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFEFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFDFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFFBFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFF7FFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFEFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFDFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFFBFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFF7FFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFEFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFDFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFFBFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFF7FFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFEFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFDFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFFBFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFF7FFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFEFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFDFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFFBFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFF7FFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFEFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFDFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FFBFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FF7FFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FEFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FDFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000FBFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000F7FFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000EFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000DFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000BFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x00007FFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x00003FFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x00001FFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x00000FFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x000007FFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x000003FFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x000001FFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x000000FFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000007FFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000003FFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000001FFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000FFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x00000007FFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x00000003FFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x00000001FFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x00000000FFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x000000007FFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x000000003FFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x000000001FFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x000000000FFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000007FFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000003FFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000001FFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000FFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x00000000007FFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x00000000003FFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x00000000001FFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x00000000000FFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x000000000007FFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x000000000003FFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x000000000001FFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x000000000000FFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000007FFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000003FFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000001FFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000FFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x00000000000007FF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x00000000000003FF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x00000000000001FF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x00000000000000FF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x000000000000007F ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x000000000000003F ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x000000000000001F ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x000000000000000F ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000007 ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000003 ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000001 ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x7FFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x3FFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x1FFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0FFFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x07FFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x03FFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x01FFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x00FFFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x007FFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x003FFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x001FFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x000FFFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0007FFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0003FFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0001FFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000FFFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x00007FFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x00003FFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x00001FFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x00000FFFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x000007FFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x000003FFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x000001FFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x000000FFFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000007FFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000003FFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000001FFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000FFFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x00000007FFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x00000003FFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x00000001FFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x00000000FFFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x000000007FFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x000000003FFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x000000001FFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x000000000FFFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000007FFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000003FFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000001FFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000FFFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x00000000007FFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x00000000003FFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x00000000001FFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x00000000000FFFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x000000000007FFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x000000000003FFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x000000000001FFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x000000000000FFFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000007FFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000003FFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000001FFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000FFF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x00000000000007FF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x00000000000003FF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x00000000000001FF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x00000000000000FF ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x000000000000007F ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x000000000000003F ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x000000000000001F ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x000000000000000F ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000007 ) },
- { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000003 ) }
-};
-
-static const uint32 float128NumQInP1 = float128NumQIn * float128NumP1;
-static const uint32 float128NumQOutP1 = float128NumQOut * float128NumP1;
-
-static float128 float128NextQInP1( sequenceT *sequencePtr )
-{
- int16 expNum, sigNum;
- float128 z;
-
- sigNum = sequencePtr->term1Num;
- expNum = sequencePtr->expNum;
- z.low = float128P1[ sigNum ].low;
- z.high = float128QIn[ expNum ] | float128P1[ sigNum ].high;
- ++sigNum;
- if ( float128NumP1 <= sigNum ) {
- sigNum = 0;
- ++expNum;
- if ( float128NumQIn <= expNum ) {
- expNum = 0;
- sequencePtr->done = TRUE;
- }
- sequencePtr->expNum = expNum;
- }
- sequencePtr->term1Num = sigNum;
- return z;
-
-}
-
-static float128 float128NextQOutP1( sequenceT *sequencePtr )
-{
- int16 expNum, sigNum;
- float128 z;
-
- sigNum = sequencePtr->term1Num;
- expNum = sequencePtr->expNum;
- z.low = float128P1[ sigNum ].low;
- z.high = float128QOut[ expNum ] | float128P1[ sigNum ].high;
- ++sigNum;
- if ( float128NumP1 <= sigNum ) {
- sigNum = 0;
- ++expNum;
- if ( float128NumQOut <= expNum ) {
- expNum = 0;
- sequencePtr->done = TRUE;
- }
- sequencePtr->expNum = expNum;
- }
- sequencePtr->term1Num = sigNum;
- return z;
-
-}
-
-static const uint32 float128NumQInP2 = float128NumQIn * float128NumP2;
-static const uint32 float128NumQOutP2 = float128NumQOut * float128NumP2;
-
-static float128 float128NextQInP2( sequenceT *sequencePtr )
-{
- int16 expNum, sigNum;
- float128 z;
-
- sigNum = sequencePtr->term1Num;
- expNum = sequencePtr->expNum;
- z.low = float128P2[ sigNum ].low;
- z.high = float128QIn[ expNum ] | float128P2[ sigNum ].high;
- ++sigNum;
- if ( float128NumP2 <= sigNum ) {
- sigNum = 0;
- ++expNum;
- if ( float128NumQIn <= expNum ) {
- expNum = 0;
- sequencePtr->done = TRUE;
- }
- sequencePtr->expNum = expNum;
- }
- sequencePtr->term1Num = sigNum;
- return z;
-
-}
-
-static float128 float128NextQOutP2( sequenceT *sequencePtr )
-{
- int16 expNum, sigNum;
- float128 z;
-
- sigNum = sequencePtr->term1Num;
- expNum = sequencePtr->expNum;
- z.low = float128P2[ sigNum ].low;
- z.high = float128QOut[ expNum ] | float128P2[ sigNum ].high;
- ++sigNum;
- if ( float128NumP2 <= sigNum ) {
- sigNum = 0;
- ++expNum;
- if ( float128NumQOut <= expNum ) {
- expNum = 0;
- sequencePtr->done = TRUE;
- }
- sequencePtr->expNum = expNum;
- }
- sequencePtr->term1Num = sigNum;
- return z;
-
-}
-
-static float128 float128RandomQOutP3( void )
-{
- int16 sigNum1, sigNum2;
- uint64 sig1Low, sig2Low;
- float128 z;
-
- sigNum1 = randomUint8() % float128NumP2;
- sigNum2 = randomUint8() % float128NumP2;
- sig1Low = float128P2[ sigNum1 ].low;
- sig2Low = float128P2[ sigNum2 ].low;
- z.low = sig1Low + sig2Low;
- z.high =
- float128QOut[ randomUint8() % float128NumQOut ]
- | ( ( float128P2[ sigNum1 ].high
- + float128P2[ sigNum2 ].high
- + ( z.low < sig1Low )
- )
- & LIT64( 0x0000FFFFFFFFFFFF )
- );
- return z;
-
-}
-
-static float128 float128RandomQOutPInf( void )
-{
- float128 z;
-
- z.low = randomUint64();
- z.high =
- float128QOut[ randomUint8() % float128NumQOut ]
- | ( randomUint64() & LIT64( 0x0000FFFFFFFFFFFF ) );
- return z;
-
-}
-
-enum {
- float128NumQInfWeightMasks = 14
-};
-
-static const uint64 float128QInfWeightMasks[ float128NumQInfWeightMasks ] = {
- LIT64( 0x7FFF000000000000 ),
- LIT64( 0x7FFF000000000000 ),
- LIT64( 0x3FFF000000000000 ),
- LIT64( 0x1FFF000000000000 ),
- LIT64( 0x07FF000000000000 ),
- LIT64( 0x07FF000000000000 ),
- LIT64( 0x03FF000000000000 ),
- LIT64( 0x01FF000000000000 ),
- LIT64( 0x00FF000000000000 ),
- LIT64( 0x007F000000000000 ),
- LIT64( 0x003F000000000000 ),
- LIT64( 0x001F000000000000 ),
- LIT64( 0x000F000000000000 ),
- LIT64( 0x0007000000000000 )
-};
-
-static const uint64 float128QInfWeightOffsets[ float128NumQInfWeightMasks ] = {
- LIT64( 0x0000000000000000 ),
- LIT64( 0x0000000000000000 ),
- LIT64( 0x2000000000000000 ),
- LIT64( 0x3000000000000000 ),
- LIT64( 0x3800000000000000 ),
- LIT64( 0x3C00000000000000 ),
- LIT64( 0x3E00000000000000 ),
- LIT64( 0x3F00000000000000 ),
- LIT64( 0x3F80000000000000 ),
- LIT64( 0x3FC0000000000000 ),
- LIT64( 0x3FE0000000000000 ),
- LIT64( 0x3FF0000000000000 ),
- LIT64( 0x3FF8000000000000 ),
- LIT64( 0x3FFC000000000000 )
-};
-
-static float128 float128RandomQInfP3( void )
-{
- int16 sigNum1, sigNum2;
- uint64 sig1Low, sig2Low;
- int8 weightMaskNum;
- float128 z;
-
- sigNum1 = randomUint8() % float128NumP2;
- sigNum2 = randomUint8() % float128NumP2;
- sig1Low = float128P2[ sigNum1 ].low;
- sig2Low = float128P2[ sigNum2 ].low;
- z.low = sig1Low + sig2Low;
- weightMaskNum = randomUint8() % float128NumQInfWeightMasks;
- z.high =
- ( ( (uint64) ( randomUint8() & 1 ) )<<63 )
- | ( ( ( ( (uint64) randomUint16() )<<48 )
- & float128QInfWeightMasks[ weightMaskNum ] )
- + float128QInfWeightOffsets[ weightMaskNum ]
- )
- | ( ( float128P2[ sigNum1 ].high
- + float128P2[ sigNum2 ].high
- + ( z.low < sig1Low )
- )
- & LIT64( 0x0000FFFFFFFFFFFF )
- );
- return z;
-
-}
-
-static float128 float128RandomQInfPInf( void )
-{
- int8 weightMaskNum;
- float128 z;
-
- weightMaskNum = randomUint8() % float128NumQInfWeightMasks;
- z.low = randomUint64();
- z.high =
- ( ( (uint64) ( randomUint8() & 1 ) )<<63 )
- | ( ( ( ( (uint64) randomUint16() )<<48 )
- & float128QInfWeightMasks[ weightMaskNum ] )
- + float128QInfWeightOffsets[ weightMaskNum ]
- )
- | ( randomUint64() & LIT64( 0x0000FFFFFFFFFFFF ) );
- return z;
-
-}
-
-static float128 float128Random( void )
-{
-
- switch ( randomUint8() & 7 ) {
- case 0:
- case 1:
- case 2:
- return float128RandomQOutP3();
- case 3:
- return float128RandomQOutPInf();
- case 4:
- case 5:
- case 6:
- return float128RandomQInfP3();
- default:
- return float128RandomQInfPInf();
- }
-
-}
-
-#endif
-
-static int8 level = 0;
-
-void testCases_setLevel( int8 levelIn )
-{
-
- if ( ( levelIn < 1 ) || ( 2 < levelIn ) ) {
- fail( "Invalid testing level: %d", levelIn );
- }
- level = levelIn;
-
-}
-
-static int8 sequenceType;
-static sequenceT sequenceA, sequenceB;
-static int8 subcase;
-
-uint32 testCases_total;
-flag testCases_done;
-
-static float32 current_a_float32;
-static float32 current_b_float32;
-static float64 current_a_float64;
-static float64 current_b_float64;
-#ifdef FLOATX80
-static floatx80 current_a_floatx80;
-static floatx80 current_b_floatx80;
-#endif
-#ifdef FLOAT128
-static float128 current_a_float128;
-static float128 current_b_float128;
-#endif
-
-void testCases_initSequence( int8 sequenceTypeIn )
-{
-
- sequenceType = sequenceTypeIn;
- sequenceA.term2Num = 0;
- sequenceA.term1Num = 0;
- sequenceA.expNum = 0;
- sequenceA.done = FALSE;
- sequenceB.term2Num = 0;
- sequenceB.term1Num = 0;
- sequenceB.expNum = 0;
- sequenceB.done = FALSE;
- subcase = 0;
- switch ( level ) {
- case 1:
- switch ( sequenceTypeIn ) {
- case testCases_sequence_a_int32:
- testCases_total = 3 * int32NumP1;
- break;
-#ifdef BITS64
- case testCases_sequence_a_int64:
- testCases_total = 3 * int64NumP1;
- break;
-#endif
- case testCases_sequence_a_float32:
- testCases_total = 3 * float32NumQOutP1;
- break;
- case testCases_sequence_ab_float32:
- testCases_total = 6 * float32NumQInP1 * float32NumQInP1;
- current_a_float32 = float32NextQInP1( &sequenceA );
- break;
- case testCases_sequence_a_float64:
- testCases_total = 3 * float64NumQOutP1;
- break;
- case testCases_sequence_ab_float64:
- testCases_total = 6 * float64NumQInP1 * float64NumQInP1;
- current_a_float64 = float64NextQInP1( &sequenceA );
- break;
-#ifdef FLOATX80
- case testCases_sequence_a_floatx80:
- testCases_total = 3 * floatx80NumQOutP1;
- break;
- case testCases_sequence_ab_floatx80:
- testCases_total = 6 * floatx80NumQInP1 * floatx80NumQInP1;
- current_a_floatx80 = floatx80NextQInP1( &sequenceA );
- break;
-#endif
-#ifdef FLOAT128
- case testCases_sequence_a_float128:
- testCases_total = 3 * float128NumQOutP1;
- break;
- case testCases_sequence_ab_float128:
- testCases_total = 6 * float128NumQInP1 * float128NumQInP1;
- current_a_float128 = float128NextQInP1( &sequenceA );
- break;
-#endif
- }
- break;
- case 2:
- switch ( sequenceTypeIn ) {
- case testCases_sequence_a_int32:
- testCases_total = 2 * int32NumP2;
- break;
-#ifdef BITS64
- case testCases_sequence_a_int64:
- testCases_total = 2 * int64NumP2;
- break;
-#endif
- case testCases_sequence_a_float32:
- testCases_total = 2 * float32NumQOutP2;
- break;
- case testCases_sequence_ab_float32:
- testCases_total = 2 * float32NumQInP2 * float32NumQInP2;
- current_a_float32 = float32NextQInP2( &sequenceA );
- break;
- case testCases_sequence_a_float64:
- testCases_total = 2 * float64NumQOutP2;
- break;
- case testCases_sequence_ab_float64:
- testCases_total = 2 * float64NumQInP2 * float64NumQInP2;
- current_a_float64 = float64NextQInP2( &sequenceA );
- break;
-#ifdef FLOATX80
- case testCases_sequence_a_floatx80:
- testCases_total = 2 * floatx80NumQOutP2;
- break;
- case testCases_sequence_ab_floatx80:
- testCases_total = 2 * floatx80NumQInP2 * floatx80NumQInP2;
- current_a_floatx80 = floatx80NextQInP2( &sequenceA );
- break;
-#endif
-#ifdef FLOAT128
- case testCases_sequence_a_float128:
- testCases_total = 2 * float128NumQOutP2;
- break;
- case testCases_sequence_ab_float128:
- testCases_total = 2 * float128NumQInP2 * float128NumQInP2;
- current_a_float128 = float128NextQInP2( &sequenceA );
- break;
-#endif
- }
- break;
- }
- testCases_done = FALSE;
-
-}
-
-int32 testCases_a_int32;
-#ifdef BITS64
-int64 testCases_a_int64;
-#endif
-float32 testCases_a_float32;
-float32 testCases_b_float32;
-float64 testCases_a_float64;
-float64 testCases_b_float64;
-#ifdef FLOATX80
-floatx80 testCases_a_floatx80;
-floatx80 testCases_b_floatx80;
-#endif
-#ifdef FLOAT128
-float128 testCases_a_float128;
-float128 testCases_b_float128;
-#endif
-
-void testCases_next( void )
-{
-
- switch ( level ) {
- case 1:
- switch ( sequenceType ) {
- case testCases_sequence_a_int32:
- switch ( subcase ) {
- case 0:
- testCases_a_int32 = int32RandomP3();
- break;
- case 1:
- testCases_a_int32 = int32RandomPInf();
- break;
- case 2:
- testCases_a_int32 = int32NextP1( &sequenceA );
- testCases_done = sequenceA.done;
- subcase = -1;
- break;
- }
- ++subcase;
- break;
-#ifdef BITS64
- case testCases_sequence_a_int64:
- switch ( subcase ) {
- case 0:
- testCases_a_int64 = int64RandomP3();
- break;
- case 1:
- testCases_a_int64 = int64RandomPInf();
- break;
- case 2:
- testCases_a_int64 = int64NextP1( &sequenceA );
- testCases_done = sequenceA.done;
- subcase = -1;
- break;
- }
- ++subcase;
- break;
-#endif
- case testCases_sequence_a_float32:
- switch ( subcase ) {
- case 0:
- case 1:
- testCases_a_float32 = float32Random();
- break;
- case 2:
- testCases_a_float32 = float32NextQOutP1( &sequenceA );
- testCases_done = sequenceA.done;
- subcase = -1;
- break;
- }
- ++subcase;
- break;
- case testCases_sequence_ab_float32:
- switch ( subcase ) {
- case 0:
- if ( sequenceB.done ) {
- sequenceB.done = FALSE;
- current_a_float32 = float32NextQInP1( &sequenceA );
- }
- current_b_float32 = float32NextQInP1( &sequenceB );
- case 2:
- case 4:
- testCases_a_float32 = float32Random();
- testCases_b_float32 = float32Random();
- break;
- case 1:
- testCases_a_float32 = current_a_float32;
- testCases_b_float32 = float32Random();
- break;
- case 3:
- testCases_a_float32 = float32Random();
- testCases_b_float32 = current_b_float32;
- break;
- case 5:
- testCases_a_float32 = current_a_float32;
- testCases_b_float32 = current_b_float32;
- testCases_done = sequenceA.done & sequenceB.done;
- subcase = -1;
- break;
- }
- ++subcase;
- break;
- case testCases_sequence_a_float64:
- switch ( subcase ) {
- case 0:
- case 1:
- testCases_a_float64 = float64Random();
- break;
- case 2:
- testCases_a_float64 = float64NextQOutP1( &sequenceA );
- testCases_done = sequenceA.done;
- subcase = -1;
- break;
- }
- ++subcase;
- break;
- case testCases_sequence_ab_float64:
- switch ( subcase ) {
- case 0:
- if ( sequenceB.done ) {
- sequenceB.done = FALSE;
- current_a_float64 = float64NextQInP1( &sequenceA );
- }
- current_b_float64 = float64NextQInP1( &sequenceB );
- case 2:
- case 4:
- testCases_a_float64 = float64Random();
- testCases_b_float64 = float64Random();
- break;
- case 1:
- testCases_a_float64 = current_a_float64;
- testCases_b_float64 = float64Random();
- break;
- case 3:
- testCases_a_float64 = float64Random();
- testCases_b_float64 = current_b_float64;
- break;
- case 5:
- testCases_a_float64 = current_a_float64;
- testCases_b_float64 = current_b_float64;
- testCases_done = sequenceA.done & sequenceB.done;
- subcase = -1;
- break;
- }
- ++subcase;
- break;
-#ifdef FLOATX80
- case testCases_sequence_a_floatx80:
- switch ( subcase ) {
- case 0:
- case 1:
- testCases_a_floatx80 = floatx80Random();
- break;
- case 2:
- testCases_a_floatx80 = floatx80NextQOutP1( &sequenceA );
- testCases_done = sequenceA.done;
- subcase = -1;
- break;
- }
- ++subcase;
- break;
- case testCases_sequence_ab_floatx80:
- switch ( subcase ) {
- case 0:
- if ( sequenceB.done ) {
- sequenceB.done = FALSE;
- current_a_floatx80 = floatx80NextQInP1( &sequenceA );
- }
- current_b_floatx80 = floatx80NextQInP1( &sequenceB );
- case 2:
- case 4:
- testCases_a_floatx80 = floatx80Random();
- testCases_b_floatx80 = floatx80Random();
- break;
- case 1:
- testCases_a_floatx80 = current_a_floatx80;
- testCases_b_floatx80 = floatx80Random();
- break;
- case 3:
- testCases_a_floatx80 = floatx80Random();
- testCases_b_floatx80 = current_b_floatx80;
- break;
- case 5:
- testCases_a_floatx80 = current_a_floatx80;
- testCases_b_floatx80 = current_b_floatx80;
- testCases_done = sequenceA.done & sequenceB.done;
- subcase = -1;
- break;
- }
- ++subcase;
- break;
-#endif
-#ifdef FLOAT128
- case testCases_sequence_a_float128:
- switch ( subcase ) {
- case 0:
- case 1:
- testCases_a_float128 = float128Random();
- break;
- case 2:
- testCases_a_float128 = float128NextQOutP1( &sequenceA );
- testCases_done = sequenceA.done;
- subcase = -1;
- break;
- }
- ++subcase;
- break;
- case testCases_sequence_ab_float128:
- switch ( subcase ) {
- case 0:
- if ( sequenceB.done ) {
- sequenceB.done = FALSE;
- current_a_float128 = float128NextQInP1( &sequenceA );
- }
- current_b_float128 = float128NextQInP1( &sequenceB );
- case 2:
- case 4:
- testCases_a_float128 = float128Random();
- testCases_b_float128 = float128Random();
- break;
- case 1:
- testCases_a_float128 = current_a_float128;
- testCases_b_float128 = float128Random();
- break;
- case 3:
- testCases_a_float128 = float128Random();
- testCases_b_float128 = current_b_float128;
- break;
- case 5:
- testCases_a_float128 = current_a_float128;
- testCases_b_float128 = current_b_float128;
- testCases_done = sequenceA.done & sequenceB.done;
- subcase = -1;
- break;
- }
- ++subcase;
- break;
-#endif
- }
- break;
- case 2:
- switch ( sequenceType ) {
- case testCases_sequence_a_int32:
- switch ( subcase ) {
- case 0:
- testCases_a_int32 = int32RandomP3();
- break;
- case 2:
- testCases_a_int32 = int32RandomPInf();
- break;
- case 3:
- subcase = -1;
- case 1:
- testCases_a_int32 = int32NextP2( &sequenceA );
- testCases_done = sequenceA.done;
- break;
- }
- ++subcase;
- break;
-#ifdef BITS64
- case testCases_sequence_a_int64:
- switch ( subcase ) {
- case 0:
- testCases_a_int64 = int64RandomP3();
- break;
- case 2:
- testCases_a_int64 = int64RandomPInf();
- break;
- case 3:
- subcase = -1;
- case 1:
- testCases_a_int64 = int64NextP2( &sequenceA );
- testCases_done = sequenceA.done;
- break;
- }
- ++subcase;
- break;
-#endif
- case testCases_sequence_a_float32:
- switch ( subcase ) {
- case 0:
- testCases_a_float32 = float32Random();
- break;
- case 1:
- testCases_a_float32 = float32NextQOutP2( &sequenceA );
- testCases_done = sequenceA.done;
- subcase = -1;
- break;
- }
- ++subcase;
- break;
- case testCases_sequence_ab_float32:
- switch ( subcase ) {
- case 0:
- testCases_a_float32 = float32Random();
- testCases_b_float32 = float32Random();
- break;
- case 1:
- if ( sequenceB.done ) {
- sequenceB.done = FALSE;
- current_a_float32 = float32NextQInP2( &sequenceA );
- }
- testCases_a_float32 = current_a_float32;
- testCases_b_float32 = float32NextQInP2( &sequenceB );
- testCases_done = sequenceA.done & sequenceB.done;
- subcase = -1;
- break;
- }
- ++subcase;
- break;
- case testCases_sequence_a_float64:
- switch ( subcase ) {
- case 0:
- testCases_a_float64 = float64Random();
- break;
- case 1:
- testCases_a_float64 = float64NextQOutP2( &sequenceA );
- testCases_done = sequenceA.done;
- subcase = -1;
- break;
- }
- ++subcase;
- break;
- case testCases_sequence_ab_float64:
- switch ( subcase ) {
- case 0:
- testCases_a_float64 = float64Random();
- testCases_b_float64 = float64Random();
- break;
- case 1:
- if ( sequenceB.done ) {
- sequenceB.done = FALSE;
- current_a_float64 = float64NextQInP2( &sequenceA );
- }
- testCases_a_float64 = current_a_float64;
- testCases_b_float64 = float64NextQInP2( &sequenceB );
- testCases_done = sequenceA.done & sequenceB.done;
- subcase = -1;
- break;
- }
- ++subcase;
- break;
-#ifdef FLOATX80
- case testCases_sequence_a_floatx80:
- switch ( subcase ) {
- case 0:
- testCases_a_floatx80 = floatx80Random();
- break;
- case 1:
- testCases_a_floatx80 = floatx80NextQOutP2( &sequenceA );
- testCases_done = sequenceA.done;
- subcase = -1;
- break;
- }
- ++subcase;
- break;
- case testCases_sequence_ab_floatx80:
- switch ( subcase ) {
- case 0:
- testCases_a_floatx80 = floatx80Random();
- testCases_b_floatx80 = floatx80Random();
- break;
- case 1:
- if ( sequenceB.done ) {
- sequenceB.done = FALSE;
- current_a_floatx80 = floatx80NextQInP2( &sequenceA );
- }
- testCases_a_floatx80 = current_a_floatx80;
- testCases_b_floatx80 = floatx80NextQInP2( &sequenceB );
- testCases_done = sequenceA.done & sequenceB.done;
- subcase = -1;
- break;
- }
- ++subcase;
- break;
-#endif
-#ifdef FLOAT128
- case testCases_sequence_a_float128:
- switch ( subcase ) {
- case 0:
- testCases_a_float128 = float128Random();
- break;
- case 1:
- testCases_a_float128 = float128NextQOutP2( &sequenceA );
- testCases_done = sequenceA.done;
- subcase = -1;
- break;
- }
- ++subcase;
- break;
- case testCases_sequence_ab_float128:
- switch ( subcase ) {
- case 0:
- testCases_a_float128 = float128Random();
- testCases_b_float128 = float128Random();
- break;
- case 1:
- if ( sequenceB.done ) {
- sequenceB.done = FALSE;
- current_a_float128 = float128NextQInP2( &sequenceA );
- }
- testCases_a_float128 = current_a_float128;
- testCases_b_float128 = float128NextQInP2( &sequenceB );
- testCases_done = sequenceA.done & sequenceB.done;
- subcase = -1;
- break;
- }
- ++subcase;
- break;
-#endif
- }
- break;
- }
-
-}
-
diff --git a/tools/test/testfloat/testCases.h b/tools/test/testfloat/testCases.h
deleted file mode 100644
index ed6ea2be46ba..000000000000
--- a/tools/test/testfloat/testCases.h
+++ /dev/null
@@ -1,69 +0,0 @@
-
-/*
-===============================================================================
-
-This C header file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-void testCases_setLevel( int8 );
-
-void testCases_initSequence( int8 );
-enum {
- testCases_sequence_a_int32,
-#ifdef BITS64
- testCases_sequence_a_int64,
-#endif
- testCases_sequence_a_float32,
- testCases_sequence_ab_float32,
- testCases_sequence_a_float64,
- testCases_sequence_ab_float64,
-#ifdef FLOATX80
- testCases_sequence_a_floatx80,
- testCases_sequence_ab_floatx80,
-#endif
-#ifdef FLOAT128
- testCases_sequence_a_float128,
- testCases_sequence_ab_float128,
-#endif
-};
-
-extern uint32 testCases_total;
-extern flag testCases_done;
-
-void testCases_next( void );
-
-extern int32 testCases_a_int32;
-#ifdef BITS64
-extern int64 testCases_a_int64;
-#endif
-extern float32 testCases_a_float32;
-extern float32 testCases_b_float32;
-extern float64 testCases_a_float64;
-extern float64 testCases_b_float64;
-#ifdef FLOATX80
-extern floatx80 testCases_a_floatx80;
-extern floatx80 testCases_b_floatx80;
-#endif
-#ifdef FLOAT128
-extern float128 testCases_a_float128;
-extern float128 testCases_b_float128;
-#endif
-
diff --git a/tools/test/testfloat/testFunction.c b/tools/test/testfloat/testFunction.c
deleted file mode 100644
index 687563b0d750..000000000000
--- a/tools/test/testfloat/testFunction.c
+++ /dev/null
@@ -1,1149 +0,0 @@
-
-/*
-===============================================================================
-
-This C source file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-#include "milieu.h"
-#include "softfloat.h"
-#include "testCases.h"
-#include "testLoops.h"
-#include "systmodes.h"
-#include "systflags.h"
-#include "systfloat.h"
-#include "testFunction.h"
-
-const functionT functions[ NUM_FUNCTIONS ] = {
- { 0, 0, 0, 0 },
- { "int32_to_float32", 1, FALSE, TRUE },
- { "int32_to_float64", 1, FALSE, FALSE },
- { "int32_to_floatx80", 1, FALSE, FALSE },
- { "int32_to_float128", 1, FALSE, FALSE },
- { "int64_to_float32", 1, FALSE, TRUE },
- { "int64_to_float64", 1, FALSE, TRUE },
- { "int64_to_floatx80", 1, FALSE, FALSE },
- { "int64_to_float128", 1, FALSE, FALSE },
- { "float32_to_int32", 1, FALSE, TRUE },
- { "float32_to_int32_round_to_zero", 1, FALSE, FALSE },
- { "float32_to_int64", 1, FALSE, TRUE },
- { "float32_to_int64_round_to_zero", 1, FALSE, FALSE },
- { "float32_to_float64", 1, FALSE, FALSE },
- { "float32_to_floatx80", 1, FALSE, FALSE },
- { "float32_to_float128", 1, FALSE, FALSE },
- { "float32_round_to_int", 1, FALSE, TRUE },
- { "float32_add", 2, FALSE, TRUE },
- { "float32_sub", 2, FALSE, TRUE },
- { "float32_mul", 2, FALSE, TRUE },
- { "float32_div", 2, FALSE, TRUE },
- { "float32_rem", 2, FALSE, FALSE },
- { "float32_sqrt", 1, FALSE, TRUE },
- { "float32_eq", 2, FALSE, FALSE },
- { "float32_le", 2, FALSE, FALSE },
- { "float32_lt", 2, FALSE, FALSE },
- { "float32_eq_signaling", 2, FALSE, FALSE },
- { "float32_le_quiet", 2, FALSE, FALSE },
- { "float32_lt_quiet", 2, FALSE, FALSE },
- { "float64_to_int32", 1, FALSE, TRUE },
- { "float64_to_int32_round_to_zero", 1, FALSE, FALSE },
- { "float64_to_int64", 1, FALSE, TRUE },
- { "float64_to_int64_round_to_zero", 1, FALSE, FALSE },
- { "float64_to_float32", 1, FALSE, TRUE },
- { "float64_to_floatx80", 1, FALSE, FALSE },
- { "float64_to_float128", 1, FALSE, FALSE },
- { "float64_round_to_int", 1, FALSE, TRUE },
- { "float64_add", 2, FALSE, TRUE },
- { "float64_sub", 2, FALSE, TRUE },
- { "float64_mul", 2, FALSE, TRUE },
- { "float64_div", 2, FALSE, TRUE },
- { "float64_rem", 2, FALSE, FALSE },
- { "float64_sqrt", 1, FALSE, TRUE },
- { "float64_eq", 2, FALSE, FALSE },
- { "float64_le", 2, FALSE, FALSE },
- { "float64_lt", 2, FALSE, FALSE },
- { "float64_eq_signaling", 2, FALSE, FALSE },
- { "float64_le_quiet", 2, FALSE, FALSE },
- { "float64_lt_quiet", 2, FALSE, FALSE },
- { "floatx80_to_int32", 1, FALSE, TRUE },
- { "floatx80_to_int32_round_to_zero", 1, FALSE, FALSE },
- { "floatx80_to_int64", 1, FALSE, TRUE },
- { "floatx80_to_int64_round_to_zero", 1, FALSE, FALSE },
- { "floatx80_to_float32", 1, FALSE, TRUE },
- { "floatx80_to_float64", 1, FALSE, TRUE },
- { "floatx80_to_float128", 1, FALSE, FALSE },
- { "floatx80_round_to_int", 1, FALSE, TRUE },
- { "floatx80_add", 2, TRUE, TRUE },
- { "floatx80_sub", 2, TRUE, TRUE },
- { "floatx80_mul", 2, TRUE, TRUE },
- { "floatx80_div", 2, TRUE, TRUE },
- { "floatx80_rem", 2, FALSE, FALSE },
- { "floatx80_sqrt", 1, TRUE, TRUE },
- { "floatx80_eq", 2, FALSE, FALSE },
- { "floatx80_le", 2, FALSE, FALSE },
- { "floatx80_lt", 2, FALSE, FALSE },
- { "floatx80_eq_signaling", 2, FALSE, FALSE },
- { "floatx80_le_quiet", 2, FALSE, FALSE },
- { "floatx80_lt_quiet", 2, FALSE, FALSE },
- { "float128_to_int32", 1, FALSE, TRUE },
- { "float128_to_int32_round_to_zero", 1, FALSE, FALSE },
- { "float128_to_int64", 1, FALSE, TRUE },
- { "float128_to_int64_round_to_zero", 1, FALSE, FALSE },
- { "float128_to_float32", 1, FALSE, TRUE },
- { "float128_to_float64", 1, FALSE, TRUE },
- { "float128_to_floatx80", 1, FALSE, TRUE },
- { "float128_round_to_int", 1, FALSE, TRUE },
- { "float128_add", 2, FALSE, TRUE },
- { "float128_sub", 2, FALSE, TRUE },
- { "float128_mul", 2, FALSE, TRUE },
- { "float128_div", 2, FALSE, TRUE },
- { "float128_rem", 2, FALSE, FALSE },
- { "float128_sqrt", 1, FALSE, TRUE },
- { "float128_eq", 2, FALSE, FALSE },
- { "float128_le", 2, FALSE, FALSE },
- { "float128_lt", 2, FALSE, FALSE },
- { "float128_eq_signaling", 2, FALSE, FALSE },
- { "float128_le_quiet", 2, FALSE, FALSE },
- { "float128_lt_quiet", 2, FALSE, FALSE },
-};
-
-const flag functionExists[ NUM_FUNCTIONS ] = {
- 0,
-#ifdef SYST_INT32_TO_FLOAT32
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_INT32_TO_FLOAT64
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_INT32_TO_FLOATX80
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_INT32_TO_FLOAT128
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_INT64_TO_FLOAT32
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_INT64_TO_FLOAT64
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_INT64_TO_FLOATX80
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_INT64_TO_FLOAT128
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_TO_INT32
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_TO_INT32_ROUND_TO_ZERO
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_TO_INT64
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_TO_INT64_ROUND_TO_ZERO
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_TO_FLOAT64
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_TO_FLOATX80
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_TO_FLOAT128
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_ROUND_TO_INT
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_ADD
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_SUB
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_MUL
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_DIV
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_REM
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_SQRT
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_EQ
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_LE
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_LT
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_EQ_SIGNALING
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_LE_QUIET
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT32_LT_QUIET
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_TO_INT32
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_TO_INT32_ROUND_TO_ZERO
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_TO_INT64
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_TO_INT64_ROUND_TO_ZERO
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_TO_FLOAT32
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_TO_FLOATX80
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_TO_FLOAT128
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_ROUND_TO_INT
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_ADD
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_SUB
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_MUL
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_DIV
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_REM
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_SQRT
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_EQ
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_LE
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_LT
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_EQ_SIGNALING
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_LE_QUIET
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT64_LT_QUIET
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_TO_INT32
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_TO_INT32_ROUND_TO_ZERO
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_TO_INT64
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_TO_INT64_ROUND_TO_ZERO
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_TO_FLOAT32
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_TO_FLOAT64
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_TO_FLOAT128
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_ROUND_TO_INT
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_ADD
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_SUB
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_MUL
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_DIV
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_REM
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_SQRT
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_EQ
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_LE
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_LT
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_EQ_SIGNALING
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_LE_QUIET
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOATX80_LT_QUIET
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_TO_INT32
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_TO_INT32_ROUND_TO_ZERO
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_TO_INT64
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_TO_INT64_ROUND_TO_ZERO
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_TO_FLOAT32
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_TO_FLOAT64
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_TO_FLOATX80
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_ROUND_TO_INT
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_ADD
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_SUB
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_MUL
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_DIV
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_REM
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_SQRT
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_EQ
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_LE
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_LT
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_EQ_SIGNALING
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_LE_QUIET
- 1,
-#else
- 0,
-#endif
-#ifdef SYST_FLOAT128_LT_QUIET
- 1,
-#else
- 0,
-#endif
-};
-
-static void
- testFunctionVariety(
- uint8 functionCode, int8 roundingPrecision, int8 roundingMode )
-{
- uint8 roundingCode;
-
- functionName = functions[ functionCode ].name;
-#ifdef FLOATX80
- if ( roundingPrecision == 32 ) {
- roundingPrecisionName = "32";
- }
- else if ( roundingPrecision == 64 ) {
- roundingPrecisionName = "64";
- }
- else if ( roundingPrecision == 80 ) {
- roundingPrecisionName = "80";
- }
- else {
- roundingPrecision = 80;
- roundingPrecisionName = 0;
- }
- floatx80_rounding_precision = roundingPrecision;
- syst_float_set_rounding_precision( roundingPrecision );
-#endif
- switch ( roundingMode ) {
- case 0:
- roundingModeName = 0;
- roundingCode = float_round_nearest_even;
- break;
- case ROUND_NEAREST_EVEN:
- roundingModeName = "nearest_even";
- roundingCode = float_round_nearest_even;
- break;
- case ROUND_TO_ZERO:
- roundingModeName = "to_zero";
- roundingCode = float_round_to_zero;
- break;
- case ROUND_DOWN:
- roundingModeName = "down";
- roundingCode = float_round_down;
- break;
- case ROUND_UP:
- roundingModeName = "up";
- roundingCode = float_round_up;
- break;
- }
- float_rounding_mode = roundingCode;
- syst_float_set_rounding_mode( roundingCode );
- fputs( "Testing ", stderr );
- writeFunctionName( stderr );
- fputs( ".\n", stderr );
- switch ( functionCode ) {
-#ifdef SYST_INT32_TO_FLOAT32
- case INT32_TO_FLOAT32:
- test_a_int32_z_float32( int32_to_float32, syst_int32_to_float32 );
- break;
-#endif
-#ifdef SYST_INT32_TO_FLOAT64
- case INT32_TO_FLOAT64:
- test_a_int32_z_float64( int32_to_float64, syst_int32_to_float64 );
- break;
-#endif
-#ifdef SYST_INT32_TO_FLOATX80
- case INT32_TO_FLOATX80:
- test_a_int32_z_floatx80( int32_to_floatx80, syst_int32_to_floatx80 );
- break;
-#endif
-#ifdef SYST_INT32_TO_FLOAT128
- case INT32_TO_FLOAT128:
- test_a_int32_z_float128( int32_to_float128, syst_int32_to_float128 );
- break;
-#endif
-#ifdef SYST_INT64_TO_FLOAT32
- case INT64_TO_FLOAT32:
- test_a_int64_z_float32( int64_to_float32, syst_int64_to_float32 );
- break;
-#endif
-#ifdef SYST_INT64_TO_FLOAT64
- case INT64_TO_FLOAT64:
- test_a_int64_z_float64( int64_to_float64, syst_int64_to_float64 );
- break;
-#endif
-#ifdef SYST_INT64_TO_FLOATX80
- case INT64_TO_FLOATX80:
- test_a_int64_z_floatx80( int64_to_floatx80, syst_int64_to_floatx80 );
- break;
-#endif
-#ifdef SYST_INT64_TO_FLOAT128
- case INT64_TO_FLOAT128:
- test_a_int64_z_float128( int64_to_float128, syst_int64_to_float128 );
- break;
-#endif
-#ifdef SYST_FLOAT32_TO_INT32
- case FLOAT32_TO_INT32:
- test_a_float32_z_int32( float32_to_int32, syst_float32_to_int32 );
- break;
-#endif
-#ifdef SYST_FLOAT32_TO_INT32_ROUND_TO_ZERO
- case FLOAT32_TO_INT32_ROUND_TO_ZERO:
- test_a_float32_z_int32(
- float32_to_int32_round_to_zero,
- syst_float32_to_int32_round_to_zero
- );
- break;
-#endif
-#ifdef SYST_FLOAT32_TO_INT64
- case FLOAT32_TO_INT64:
- test_a_float32_z_int64( float32_to_int64, syst_float32_to_int64 );
- break;
-#endif
-#ifdef SYST_FLOAT32_TO_INT64_ROUND_TO_ZERO
- case FLOAT32_TO_INT64_ROUND_TO_ZERO:
- test_a_float32_z_int64(
- float32_to_int64_round_to_zero,
- syst_float32_to_int64_round_to_zero
- );
- break;
-#endif
-#ifdef SYST_FLOAT32_TO_FLOAT64
- case FLOAT32_TO_FLOAT64:
- test_a_float32_z_float64(
- float32_to_float64, syst_float32_to_float64 );
- break;
-#endif
-#ifdef SYST_FLOAT32_TO_FLOATX80
- case FLOAT32_TO_FLOATX80:
- test_a_float32_z_floatx80(
- float32_to_floatx80, syst_float32_to_floatx80 );
- break;
-#endif
-#ifdef SYST_FLOAT32_TO_FLOAT128
- case FLOAT32_TO_FLOAT128:
- test_a_float32_z_float128(
- float32_to_float128, syst_float32_to_float128 );
- break;
-#endif
-#ifdef SYST_FLOAT32_ROUND_TO_INT
- case FLOAT32_ROUND_TO_INT:
- test_az_float32( float32_round_to_int, syst_float32_round_to_int );
- break;
-#endif
-#ifdef SYST_FLOAT32_ADD
- case FLOAT32_ADD:
- test_abz_float32( float32_add, syst_float32_add );
- break;
-#endif
-#ifdef SYST_FLOAT32_SUB
- case FLOAT32_SUB:
- test_abz_float32( float32_sub, syst_float32_sub );
- break;
-#endif
-#ifdef SYST_FLOAT32_MUL
- case FLOAT32_MUL:
- test_abz_float32( float32_mul, syst_float32_mul );
- break;
-#endif
-#ifdef SYST_FLOAT32_DIV
- case FLOAT32_DIV:
- test_abz_float32( float32_div, syst_float32_div );
- break;
-#endif
-#ifdef SYST_FLOAT32_REM
- case FLOAT32_REM:
- test_abz_float32( float32_rem, syst_float32_rem );
- break;
-#endif
-#ifdef SYST_FLOAT32_SQRT
- case FLOAT32_SQRT:
- test_az_float32( float32_sqrt, syst_float32_sqrt );
- break;
-#endif
-#ifdef SYST_FLOAT32_EQ
- case FLOAT32_EQ:
- test_ab_float32_z_flag( float32_eq, syst_float32_eq );
- break;
-#endif
-#ifdef SYST_FLOAT32_LE
- case FLOAT32_LE:
- test_ab_float32_z_flag( float32_le, syst_float32_le );
- break;
-#endif
-#ifdef SYST_FLOAT32_LT
- case FLOAT32_LT:
- test_ab_float32_z_flag( float32_lt, syst_float32_lt );
- break;
-#endif
-#ifdef SYST_FLOAT32_EQ_SIGNALING
- case FLOAT32_EQ_SIGNALING:
- test_ab_float32_z_flag(
- float32_eq_signaling, syst_float32_eq_signaling );
- break;
-#endif
-#ifdef SYST_FLOAT32_LE_QUIET
- case FLOAT32_LE_QUIET:
- test_ab_float32_z_flag( float32_le_quiet, syst_float32_le_quiet );
- break;
-#endif
-#ifdef SYST_FLOAT32_LT_QUIET
- case FLOAT32_LT_QUIET:
- test_ab_float32_z_flag( float32_lt_quiet, syst_float32_lt_quiet );
- break;
-#endif
-#ifdef SYST_FLOAT64_TO_INT32
- case FLOAT64_TO_INT32:
- test_a_float64_z_int32( float64_to_int32, syst_float64_to_int32 );
- break;
-#endif
-#ifdef SYST_FLOAT64_TO_INT32_ROUND_TO_ZERO
- case FLOAT64_TO_INT32_ROUND_TO_ZERO:
- test_a_float64_z_int32(
- float64_to_int32_round_to_zero,
- syst_float64_to_int32_round_to_zero
- );
- break;
-#endif
-#ifdef SYST_FLOAT64_TO_INT64
- case FLOAT64_TO_INT64:
- test_a_float64_z_int64( float64_to_int64, syst_float64_to_int64 );
- break;
-#endif
-#ifdef SYST_FLOAT64_TO_INT64_ROUND_TO_ZERO
- case FLOAT64_TO_INT64_ROUND_TO_ZERO:
- test_a_float64_z_int64(
- float64_to_int64_round_to_zero,
- syst_float64_to_int64_round_to_zero
- );
- break;
-#endif
-#ifdef SYST_FLOAT64_TO_FLOAT32
- case FLOAT64_TO_FLOAT32:
- test_a_float64_z_float32(
- float64_to_float32, syst_float64_to_float32 );
- break;
-#endif
-#ifdef SYST_FLOAT64_TO_FLOATX80
- case FLOAT64_TO_FLOATX80:
- test_a_float64_z_floatx80(
- float64_to_floatx80, syst_float64_to_floatx80 );
- break;
-#endif
-#ifdef SYST_FLOAT64_TO_FLOAT128
- case FLOAT64_TO_FLOAT128:
- test_a_float64_z_float128(
- float64_to_float128, syst_float64_to_float128 );
- break;
-#endif
-#ifdef SYST_FLOAT64_ROUND_TO_INT
- case FLOAT64_ROUND_TO_INT:
- test_az_float64( float64_round_to_int, syst_float64_round_to_int );
- break;
-#endif
-#ifdef SYST_FLOAT64_ADD
- case FLOAT64_ADD:
- test_abz_float64( float64_add, syst_float64_add );
- break;
-#endif
-#ifdef SYST_FLOAT64_SUB
- case FLOAT64_SUB:
- test_abz_float64( float64_sub, syst_float64_sub );
- break;
-#endif
-#ifdef SYST_FLOAT64_MUL
- case FLOAT64_MUL:
- test_abz_float64( float64_mul, syst_float64_mul );
- break;
-#endif
-#ifdef SYST_FLOAT64_DIV
- case FLOAT64_DIV:
- test_abz_float64( float64_div, syst_float64_div );
- break;
-#endif
-#ifdef SYST_FLOAT64_REM
- case FLOAT64_REM:
- test_abz_float64( float64_rem, syst_float64_rem );
- break;
-#endif
-#ifdef SYST_FLOAT64_SQRT
- case FLOAT64_SQRT:
- test_az_float64( float64_sqrt, syst_float64_sqrt );
- break;
-#endif
-#ifdef SYST_FLOAT64_EQ
- case FLOAT64_EQ:
- test_ab_float64_z_flag( float64_eq, syst_float64_eq );
- break;
-#endif
-#ifdef SYST_FLOAT64_LE
- case FLOAT64_LE:
- test_ab_float64_z_flag( float64_le, syst_float64_le );
- break;
-#endif
-#ifdef SYST_FLOAT64_LT
- case FLOAT64_LT:
- test_ab_float64_z_flag( float64_lt, syst_float64_lt );
- break;
-#endif
-#ifdef SYST_FLOAT64_EQ_SIGNALING
- case FLOAT64_EQ_SIGNALING:
- test_ab_float64_z_flag(
- float64_eq_signaling, syst_float64_eq_signaling );
- break;
-#endif
-#ifdef SYST_FLOAT64_LE_QUIET
- case FLOAT64_LE_QUIET:
- test_ab_float64_z_flag( float64_le_quiet, syst_float64_le_quiet );
- break;
-#endif
-#ifdef SYST_FLOAT64_LT_QUIET
- case FLOAT64_LT_QUIET:
- test_ab_float64_z_flag( float64_lt_quiet, syst_float64_lt_quiet );
- break;
-#endif
-#ifdef SYST_FLOATX80_TO_INT32
- case FLOATX80_TO_INT32:
- test_a_floatx80_z_int32( floatx80_to_int32, syst_floatx80_to_int32 );
- break;
-#endif
-#ifdef SYST_FLOATX80_TO_INT32_ROUND_TO_ZERO
- case FLOATX80_TO_INT32_ROUND_TO_ZERO:
- test_a_floatx80_z_int32(
- floatx80_to_int32_round_to_zero,
- syst_floatx80_to_int32_round_to_zero
- );
- break;
-#endif
-#ifdef SYST_FLOATX80_TO_INT64
- case FLOATX80_TO_INT64:
- test_a_floatx80_z_int64( floatx80_to_int64, syst_floatx80_to_int64 );
- break;
-#endif
-#ifdef SYST_FLOATX80_TO_INT64_ROUND_TO_ZERO
- case FLOATX80_TO_INT64_ROUND_TO_ZERO:
- test_a_floatx80_z_int64(
- floatx80_to_int64_round_to_zero,
- syst_floatx80_to_int64_round_to_zero
- );
- break;
-#endif
-#ifdef SYST_FLOATX80_TO_FLOAT32
- case FLOATX80_TO_FLOAT32:
- test_a_floatx80_z_float32(
- floatx80_to_float32, syst_floatx80_to_float32 );
- break;
-#endif
-#ifdef SYST_FLOATX80_TO_FLOAT64
- case FLOATX80_TO_FLOAT64:
- test_a_floatx80_z_float64(
- floatx80_to_float64, syst_floatx80_to_float64 );
- break;
-#endif
-#ifdef SYST_FLOATX80_TO_FLOAT128
- case FLOATX80_TO_FLOAT128:
- test_a_floatx80_z_float128(
- floatx80_to_float128, syst_floatx80_to_float128 );
- break;
-#endif
-#ifdef SYST_FLOATX80_ROUND_TO_INT
- case FLOATX80_ROUND_TO_INT:
- test_az_floatx80( floatx80_round_to_int, syst_floatx80_round_to_int );
- break;
-#endif
-#ifdef SYST_FLOATX80_ADD
- case FLOATX80_ADD:
- test_abz_floatx80( floatx80_add, syst_floatx80_add );
- break;
-#endif
-#ifdef SYST_FLOATX80_SUB
- case FLOATX80_SUB:
- test_abz_floatx80( floatx80_sub, syst_floatx80_sub );
- break;
-#endif
-#ifdef SYST_FLOATX80_MUL
- case FLOATX80_MUL:
- test_abz_floatx80( floatx80_mul, syst_floatx80_mul );
- break;
-#endif
-#ifdef SYST_FLOATX80_DIV
- case FLOATX80_DIV:
- test_abz_floatx80( floatx80_div, syst_floatx80_div );
- break;
-#endif
-#ifdef SYST_FLOATX80_REM
- case FLOATX80_REM:
- test_abz_floatx80( floatx80_rem, syst_floatx80_rem );
- break;
-#endif
-#ifdef SYST_FLOATX80_SQRT
- case FLOATX80_SQRT:
- test_az_floatx80( floatx80_sqrt, syst_floatx80_sqrt );
- break;
-#endif
-#ifdef SYST_FLOATX80_EQ
- case FLOATX80_EQ:
- test_ab_floatx80_z_flag( floatx80_eq, syst_floatx80_eq );
- break;
-#endif
-#ifdef SYST_FLOATX80_LE
- case FLOATX80_LE:
- test_ab_floatx80_z_flag( floatx80_le, syst_floatx80_le );
- break;
-#endif
-#ifdef SYST_FLOATX80_LT
- case FLOATX80_LT:
- test_ab_floatx80_z_flag( floatx80_lt, syst_floatx80_lt );
- break;
-#endif
-#ifdef SYST_FLOATX80_EQ_SIGNALING
- case FLOATX80_EQ_SIGNALING:
- test_ab_floatx80_z_flag(
- floatx80_eq_signaling, syst_floatx80_eq_signaling );
- break;
-#endif
-#ifdef SYST_FLOATX80_LE_QUIET
- case FLOATX80_LE_QUIET:
- test_ab_floatx80_z_flag( floatx80_le_quiet, syst_floatx80_le_quiet );
- break;
-#endif
-#ifdef SYST_FLOATX80_LT_QUIET
- case FLOATX80_LT_QUIET:
- test_ab_floatx80_z_flag( floatx80_lt_quiet, syst_floatx80_lt_quiet );
- break;
-#endif
-#ifdef SYST_FLOAT128_TO_INT32
- case FLOAT128_TO_INT32:
- test_a_float128_z_int32( float128_to_int32, syst_float128_to_int32 );
- break;
-#endif
-#ifdef SYST_FLOAT128_TO_INT32_ROUND_TO_ZERO
- case FLOAT128_TO_INT32_ROUND_TO_ZERO:
- test_a_float128_z_int32(
- float128_to_int32_round_to_zero,
- syst_float128_to_int32_round_to_zero
- );
- break;
-#endif
-#ifdef SYST_FLOAT128_TO_INT64
- case FLOAT128_TO_INT64:
- test_a_float128_z_int64( float128_to_int64, syst_float128_to_int64 );
- break;
-#endif
-#ifdef SYST_FLOAT128_TO_INT64_ROUND_TO_ZERO
- case FLOAT128_TO_INT64_ROUND_TO_ZERO:
- test_a_float128_z_int64(
- float128_to_int64_round_to_zero,
- syst_float128_to_int64_round_to_zero
- );
- break;
-#endif
-#ifdef SYST_FLOAT128_TO_FLOAT32
- case FLOAT128_TO_FLOAT32:
- test_a_float128_z_float32(
- float128_to_float32, syst_float128_to_float32 );
- break;
-#endif
-#ifdef SYST_FLOAT128_TO_FLOAT64
- case FLOAT128_TO_FLOAT64:
- test_a_float128_z_float64(
- float128_to_float64, syst_float128_to_float64 );
- break;
-#endif
-#ifdef SYST_FLOAT128_TO_FLOATX80
- case FLOAT128_TO_FLOATX80:
- test_a_float128_z_floatx80(
- float128_to_floatx80, syst_float128_to_floatx80 );
- break;
-#endif
-#ifdef SYST_FLOAT128_ROUND_TO_INT
- case FLOAT128_ROUND_TO_INT:
- test_az_float128( float128_round_to_int, syst_float128_round_to_int );
- break;
-#endif
-#ifdef SYST_FLOAT128_ADD
- case FLOAT128_ADD:
- test_abz_float128( float128_add, syst_float128_add );
- break;
-#endif
-#ifdef SYST_FLOAT128_SUB
- case FLOAT128_SUB:
- test_abz_float128( float128_sub, syst_float128_sub );
- break;
-#endif
-#ifdef SYST_FLOAT128_MUL
- case FLOAT128_MUL:
- test_abz_float128( float128_mul, syst_float128_mul );
- break;
-#endif
-#ifdef SYST_FLOAT128_DIV
- case FLOAT128_DIV:
- test_abz_float128( float128_div, syst_float128_div );
- break;
-#endif
-#ifdef SYST_FLOAT128_REM
- case FLOAT128_REM:
- test_abz_float128( float128_rem, syst_float128_rem );
- break;
-#endif
-#ifdef SYST_FLOAT128_SQRT
- case FLOAT128_SQRT:
- test_az_float128( float128_sqrt, syst_float128_sqrt );
- break;
-#endif
-#ifdef SYST_FLOAT128_EQ
- case FLOAT128_EQ:
- test_ab_float128_z_flag( float128_eq, syst_float128_eq );
- break;
-#endif
-#ifdef SYST_FLOAT128_LE
- case FLOAT128_LE:
- test_ab_float128_z_flag( float128_le, syst_float128_le );
- break;
-#endif
-#ifdef SYST_FLOAT128_LT
- case FLOAT128_LT:
- test_ab_float128_z_flag( float128_lt, syst_float128_lt );
- break;
-#endif
-#ifdef SYST_FLOAT128_EQ_SIGNALING
- case FLOAT128_EQ_SIGNALING:
- test_ab_float128_z_flag(
- float128_eq_signaling, syst_float128_eq_signaling );
- break;
-#endif
-#ifdef SYST_FLOAT128_LE_QUIET
- case FLOAT128_LE_QUIET:
- test_ab_float128_z_flag( float128_le_quiet, syst_float128_le_quiet );
- break;
-#endif
-#ifdef SYST_FLOAT128_LT_QUIET
- case FLOAT128_LT_QUIET:
- test_ab_float128_z_flag( float128_lt_quiet, syst_float128_lt_quiet );
- break;
-#endif
- }
- if ( ( errorStop && anyErrors ) || stop ) exitWithStatus();
-
-}
-
-void
- testFunction(
- uint8 functionCode, int8 roundingPrecisionIn, int8 roundingModeIn )
-{
- int8 roundingPrecision, roundingMode;
-
- roundingPrecision = 32;
- for (;;) {
- if ( ! functions[ functionCode ].roundingPrecision ) {
- roundingPrecision = 0;
- }
- else if ( roundingPrecisionIn ) {
- roundingPrecision = roundingPrecisionIn;
- }
- for ( roundingMode = 1;
- roundingMode < NUM_ROUNDINGMODES;
- ++roundingMode
- ) {
- if ( ! functions[ functionCode ].roundingMode ) {
- roundingMode = 0;
- }
- else if ( roundingModeIn ) {
- roundingMode = roundingModeIn;
- }
- testFunctionVariety(
- functionCode, roundingPrecision, roundingMode );
- if ( roundingModeIn || ! roundingMode ) break;
- }
- if ( roundingPrecisionIn || ! roundingPrecision ) break;
- if ( roundingPrecision == 80 ) {
- break;
- }
- else if ( roundingPrecision == 64 ) {
- roundingPrecision = 80;
- }
- else if ( roundingPrecision == 32 ) {
- roundingPrecision = 64;
- }
- }
-
-}
-
diff --git a/tools/test/testfloat/testFunction.h b/tools/test/testfloat/testFunction.h
deleted file mode 100644
index 04bf856046d4..000000000000
--- a/tools/test/testfloat/testFunction.h
+++ /dev/null
@@ -1,135 +0,0 @@
-
-/*
-===============================================================================
-
-This C header file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-enum {
- INT32_TO_FLOAT32 = 1,
- INT32_TO_FLOAT64,
- INT32_TO_FLOATX80,
- INT32_TO_FLOAT128,
- INT64_TO_FLOAT32,
- INT64_TO_FLOAT64,
- INT64_TO_FLOATX80,
- INT64_TO_FLOAT128,
- FLOAT32_TO_INT32,
- FLOAT32_TO_INT32_ROUND_TO_ZERO,
- FLOAT32_TO_INT64,
- FLOAT32_TO_INT64_ROUND_TO_ZERO,
- FLOAT32_TO_FLOAT64,
- FLOAT32_TO_FLOATX80,
- FLOAT32_TO_FLOAT128,
- FLOAT32_ROUND_TO_INT,
- FLOAT32_ADD,
- FLOAT32_SUB,
- FLOAT32_MUL,
- FLOAT32_DIV,
- FLOAT32_REM,
- FLOAT32_SQRT,
- FLOAT32_EQ,
- FLOAT32_LE,
- FLOAT32_LT,
- FLOAT32_EQ_SIGNALING,
- FLOAT32_LE_QUIET,
- FLOAT32_LT_QUIET,
- FLOAT64_TO_INT32,
- FLOAT64_TO_INT32_ROUND_TO_ZERO,
- FLOAT64_TO_INT64,
- FLOAT64_TO_INT64_ROUND_TO_ZERO,
- FLOAT64_TO_FLOAT32,
- FLOAT64_TO_FLOATX80,
- FLOAT64_TO_FLOAT128,
- FLOAT64_ROUND_TO_INT,
- FLOAT64_ADD,
- FLOAT64_SUB,
- FLOAT64_MUL,
- FLOAT64_DIV,
- FLOAT64_REM,
- FLOAT64_SQRT,
- FLOAT64_EQ,
- FLOAT64_LE,
- FLOAT64_LT,
- FLOAT64_EQ_SIGNALING,
- FLOAT64_LE_QUIET,
- FLOAT64_LT_QUIET,
- FLOATX80_TO_INT32,
- FLOATX80_TO_INT32_ROUND_TO_ZERO,
- FLOATX80_TO_INT64,
- FLOATX80_TO_INT64_ROUND_TO_ZERO,
- FLOATX80_TO_FLOAT32,
- FLOATX80_TO_FLOAT64,
- FLOATX80_TO_FLOAT128,
- FLOATX80_ROUND_TO_INT,
- FLOATX80_ADD,
- FLOATX80_SUB,
- FLOATX80_MUL,
- FLOATX80_DIV,
- FLOATX80_REM,
- FLOATX80_SQRT,
- FLOATX80_EQ,
- FLOATX80_LE,
- FLOATX80_LT,
- FLOATX80_EQ_SIGNALING,
- FLOATX80_LE_QUIET,
- FLOATX80_LT_QUIET,
- FLOAT128_TO_INT32,
- FLOAT128_TO_INT32_ROUND_TO_ZERO,
- FLOAT128_TO_INT64,
- FLOAT128_TO_INT64_ROUND_TO_ZERO,
- FLOAT128_TO_FLOAT32,
- FLOAT128_TO_FLOAT64,
- FLOAT128_TO_FLOATX80,
- FLOAT128_ROUND_TO_INT,
- FLOAT128_ADD,
- FLOAT128_SUB,
- FLOAT128_MUL,
- FLOAT128_DIV,
- FLOAT128_REM,
- FLOAT128_SQRT,
- FLOAT128_EQ,
- FLOAT128_LE,
- FLOAT128_LT,
- FLOAT128_EQ_SIGNALING,
- FLOAT128_LE_QUIET,
- FLOAT128_LT_QUIET,
- NUM_FUNCTIONS
-};
-
-typedef struct {
- char *name;
- int8 numInputs;
- flag roundingPrecision, roundingMode;
-} functionT;
-extern const functionT functions[ NUM_FUNCTIONS ];
-extern const flag functionExists[ NUM_FUNCTIONS ];
-
-enum {
- ROUND_NEAREST_EVEN = 1,
- ROUND_TO_ZERO,
- ROUND_DOWN,
- ROUND_UP,
- NUM_ROUNDINGMODES
-};
-
-void testFunction( uint8, int8, int8 );
-
diff --git a/tools/test/testfloat/testLoops.c b/tools/test/testfloat/testLoops.c
deleted file mode 100644
index 8ba92f313a41..000000000000
--- a/tools/test/testfloat/testLoops.c
+++ /dev/null
@@ -1,2713 +0,0 @@
-
-/*
-===============================================================================
-
-This C source file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "milieu.h"
-#include "softfloat.h"
-#include "testCases.h"
-#include "writeHex.h"
-#include "testLoops.h"
-
-volatile flag stop = FALSE;
-
-char *trueName, *testName;
-flag forever, errorStop;
-uint32 maxErrorCount = 0;
-flag checkNaNs = FALSE;
-int8 *trueFlagsPtr;
-int8 ( *testFlagsFunctionPtr )( void );
-char *functionName;
-char *roundingPrecisionName, *roundingModeName, *tininessModeName;
-flag anyErrors = FALSE;
-
-void writeFunctionName( FILE *stream )
-{
-
- fputs( functionName, stream );
- if ( roundingModeName ) {
- if ( roundingPrecisionName ) {
- fputs( ", precision ", stream );
- fputs( roundingPrecisionName, stream );
- }
- fputs( ", rounding ", stream );
- fputs( roundingModeName, stream );
- if ( tininessModeName ) {
- fputs( ", tininess ", stream );
- fputs( tininessModeName, stream );
- fputs( " rounding", stream );
- }
- }
-
-}
-
-void exitWithStatus( void )
-{
-
- exit( anyErrors ? EXIT_FAILURE : EXIT_SUCCESS );
-
-}
-
-static uint32 tenthousandsCount, errorCount = 0;
-
-static void writeTestsTotal( void )
-{
-
- if ( forever ) {
- fputs( "Unbounded tests.\n", stderr );
- }
- else {
- fprintf( stderr, "\r%d tests total.\n", testCases_total );
- }
-
-}
-
-static void writeTestsPerformed( int16 count )
-{
-
- if ( tenthousandsCount ) {
- fprintf(
- stderr, "\r%d%04d tests performed", tenthousandsCount, count );
- }
- else {
- fprintf( stderr, "\r%d tests performed", count );
- }
- if ( errorCount ) {
- fprintf(
- stderr,
- "; %d error%s found.\n",
- errorCount,
- ( errorCount == 1 ) ? "" : "s"
- );
- }
- else {
- fputs( ".\n", stderr );
- fputs( "No errors found in ", stdout );
- writeFunctionName( stdout );
- fputs( ".\n", stdout );
- fflush( stdout );
- }
-
-}
-
-static void checkEarlyExit( void )
-{
-
- ++tenthousandsCount;
- if ( stop ) {
- writeTestsPerformed( 0 );
- exitWithStatus();
- }
- fprintf( stderr, "\r%3d0000", tenthousandsCount );
-
-}
-
-static void writeErrorFound( int16 count )
-{
-
- fputc( '\r', stderr );
- if ( errorCount == 1 ) {
- fputs( "Errors found in ", stdout );
- writeFunctionName( stdout );
- fputs( ":\n", stdout );
- }
- if ( stop ) {
- writeTestsPerformed( count );
- exitWithStatus();
- }
- anyErrors = TRUE;
-
-}
-
-INLINE void writeInput_a_int32( void )
-{
-
- writeHex_bits32( testCases_a_int32, stdout );
-
-}
-
-#ifdef BITS64
-
-INLINE void writeInput_a_int64( void )
-{
-
- writeHex_bits64( testCases_a_int64, stdout );
-
-}
-
-#endif
-
-INLINE void writeInput_a_float32( void )
-{
-
- writeHex_float32( testCases_a_float32, stdout );
-
-}
-
-static void writeInputs_ab_float32( void )
-{
-
- writeHex_float32( testCases_a_float32, stdout );
- fputs( " ", stdout );
- writeHex_float32( testCases_b_float32, stdout );
-
-}
-
-INLINE void writeInput_a_float64( void )
-{
-
- writeHex_float64( testCases_a_float64, stdout );
-
-}
-
-static void writeInputs_ab_float64( void )
-{
-
- writeHex_float64( testCases_a_float64, stdout );
- fputs( " ", stdout );
- writeHex_float64( testCases_b_float64, stdout );
-
-}
-
-#ifdef FLOATX80
-
-INLINE void writeInput_a_floatx80( void )
-{
-
- writeHex_floatx80( testCases_a_floatx80, stdout );
-
-}
-
-static void writeInputs_ab_floatx80( void )
-{
-
- writeHex_floatx80( testCases_a_floatx80, stdout );
- fputs( " ", stdout );
- writeHex_floatx80( testCases_b_floatx80, stdout );
-
-}
-
-#endif
-
-#ifdef FLOAT128
-
-INLINE void writeInput_a_float128( void )
-{
-
- writeHex_float128( testCases_a_float128, stdout );
-
-}
-
-static void writeInputs_ab_float128( void )
-{
-
- writeHex_float128( testCases_a_float128, stdout );
- fputs( " ", stdout );
- writeHex_float128( testCases_b_float128, stdout );
-
-}
-
-#endif
-
-static void
- writeOutputs_z_flag(
- flag trueZ, uint8 trueFlags, flag testZ, uint8 testFlags )
-{
-
- fputs( trueName, stdout );
- fputs( ": ", stdout );
- writeHex_flag( trueZ, stdout );
- fputc( ' ', stdout );
- writeHex_float_flags( trueFlags, stdout );
- fputs( " ", stdout );
- fputs( testName, stdout );
- fputs( ": ", stdout );
- writeHex_flag( testZ, stdout );
- fputc( ' ', stdout );
- writeHex_float_flags( testFlags, stdout );
- fputc( '\n', stdout );
-
-}
-
-static void
- writeOutputs_z_int32(
- int32 trueZ, uint8 trueFlags, int32 testZ, uint8 testFlags )
-{
-
- fputs( trueName, stdout );
- fputs( ": ", stdout );
- writeHex_bits32( trueZ, stdout );
- fputc( ' ', stdout );
- writeHex_float_flags( trueFlags, stdout );
- fputs( " ", stdout );
- fputs( testName, stdout );
- fputs( ": ", stdout );
- writeHex_bits32( testZ, stdout );
- fputc( ' ', stdout );
- writeHex_float_flags( testFlags, stdout );
- fputc( '\n', stdout );
-
-}
-
-#ifdef BITS64
-
-static void
- writeOutputs_z_int64(
- int64 trueZ, uint8 trueFlags, int64 testZ, uint8 testFlags )
-{
-
- fputs( trueName, stdout );
- fputs( ": ", stdout );
- writeHex_bits64( trueZ, stdout );
- fputc( ' ', stdout );
- writeHex_float_flags( trueFlags, stdout );
- fputs( " ", stdout );
- fputs( testName, stdout );
- fputs( ": ", stdout );
- writeHex_bits64( testZ, stdout );
- fputc( ' ', stdout );
- writeHex_float_flags( testFlags, stdout );
- fputc( '\n', stdout );
-
-}
-
-#endif
-
-static void
- writeOutputs_z_float32(
- float32 trueZ, uint8 trueFlags, float32 testZ, uint8 testFlags )
-{
-
- fputs( trueName, stdout );
- fputs( ": ", stdout );
- writeHex_float32( trueZ, stdout );
- fputc( ' ', stdout );
- writeHex_float_flags( trueFlags, stdout );
- fputs( " ", stdout );
- fputs( testName, stdout );
- fputs( ": ", stdout );
- writeHex_float32( testZ, stdout );
- fputc( ' ', stdout );
- writeHex_float_flags( testFlags, stdout );
- fputc( '\n', stdout );
-
-}
-
-static void
- writeOutputs_z_float64(
- float64 trueZ, uint8 trueFlags, float64 testZ, uint8 testFlags )
-{
-
- fputs( trueName, stdout );
- fputs( ": ", stdout );
- writeHex_float64( trueZ, stdout );
- fputc( ' ', stdout );
- writeHex_float_flags( trueFlags, stdout );
- fputs( " ", stdout );
- fputs( testName, stdout );
- fputs( ": ", stdout );
- writeHex_float64( testZ, stdout );
- fputc( ' ', stdout );
- writeHex_float_flags( testFlags, stdout );
- fputc( '\n', stdout );
-
-}
-
-#ifdef FLOATX80
-
-static void
- writeOutputs_z_floatx80(
- floatx80 trueZ, uint8 trueFlags, floatx80 testZ, uint8 testFlags )
-{
-
- fputs( trueName, stdout );
- fputs( ": ", stdout );
- writeHex_floatx80( trueZ, stdout );
- fputc( ' ', stdout );
- writeHex_float_flags( trueFlags, stdout );
- fputs( " ", stdout );
- fputs( testName, stdout );
- fputs( ": ", stdout );
- writeHex_floatx80( testZ, stdout );
- fputc( ' ', stdout );
- writeHex_float_flags( testFlags, stdout );
- fputc( '\n', stdout );
-
-}
-
-#endif
-
-#ifdef FLOAT128
-
-static void
- writeOutputs_z_float128(
- float128 trueZ, uint8 trueFlags, float128 testZ, uint8 testFlags )
-{
-
- fputs( trueName, stdout );
- fputs( ": ", stdout );
- writeHex_float128( trueZ, stdout );
- fputc( ' ', stdout );
- writeHex_float_flags( trueFlags, stdout );
- fputs( "\n\t", stdout );
- fputs( testName, stdout );
- fputs( ": ", stdout );
- writeHex_float128( testZ, stdout );
- fputc( ' ', stdout );
- writeHex_float_flags( testFlags, stdout );
- fputc( '\n', stdout );
-
-}
-
-#endif
-
-INLINE flag float32_isNaN( float32 a )
-{
-
- return 0x7F800000 < ( a & 0x7FFFFFFF );
-
-}
-
-#ifdef BITS64
-
-INLINE flag float64_same( float64 a, float64 b )
-{
-
- return a == b;
-
-}
-
-INLINE flag float64_isNaN( float64 a )
-{
-
- return LIT64( 0x7FF0000000000000 ) < ( a & LIT64( 0x7FFFFFFFFFFFFFFF ) );
-
-}
-
-#else
-
-INLINE flag float64_same( float64 a, float64 b )
-{
-
- return ( a.high == b.high ) && ( a.low == b.low );
-
-}
-
-INLINE flag float64_isNaN( float64 a )
-{
- bits32 absAHigh;
-
- absAHigh = a.high & 0x7FFFFFFF;
- return
- ( 0x7FF00000 < absAHigh ) || ( ( absAHigh == 0x7FF00000 ) && a.low );
-
-}
-
-#endif
-
-#ifdef FLOATX80
-
-INLINE flag floatx80_same( floatx80 a, floatx80 b )
-{
-
- return ( a.high == b.high ) && ( a.low == b.low );
-
-}
-
-INLINE flag floatx80_isNaN( floatx80 a )
-{
-
- return ( ( a.high & 0x7FFF ) == 0x7FFF ) && a.low;
-
-}
-
-#endif
-
-#ifdef FLOAT128
-
-INLINE flag float128_same( float128 a, float128 b )
-{
-
- return ( a.high == b.high ) && ( a.low == b.low );
-
-}
-
-INLINE flag float128_isNaN( float128 a )
-{
- bits64 absAHigh;
-
- absAHigh = a.high & LIT64( 0x7FFFFFFFFFFFFFFF );
- return
- ( LIT64( 0x7FFF000000000000 ) < absAHigh )
- || ( ( absAHigh == LIT64( 0x7FFF000000000000 ) ) && a.low );
-
-}
-
-#endif
-
-void
- test_a_int32_z_float32(
- float32 trueFunction( int32 ), float32 testFunction( int32 ) )
-{
- int16 count;
- float32 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_int32 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_int32 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_int32 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float32_isNaN( trueZ )
- && float32_isNaN( testZ )
- && ! float32_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_int32();
- fputs( " ", stdout );
- writeOutputs_z_float32( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-void
- test_a_int32_z_float64(
- float64 trueFunction( int32 ), float64 testFunction( int32 ) )
-{
- int16 count;
- float64 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_int32 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_int32 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_int32 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! float64_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float64_isNaN( trueZ )
- && float64_isNaN( testZ )
- && ! float64_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_int32();
- fputs( " ", stdout );
- writeOutputs_z_float64( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#ifdef FLOATX80
-
-void
- test_a_int32_z_floatx80(
- floatx80 trueFunction( int32 ), floatx80 testFunction( int32 ) )
-{
- int16 count;
- floatx80 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_int32 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_int32 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_int32 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! floatx80_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && floatx80_isNaN( trueZ )
- && floatx80_isNaN( testZ )
- && ! floatx80_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_int32();
- fputs( " ", stdout );
- writeOutputs_z_floatx80( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#endif
-
-#ifdef FLOAT128
-
-void
- test_a_int32_z_float128(
- float128 trueFunction( int32 ), float128 testFunction( int32 ) )
-{
- int16 count;
- float128 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_int32 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_int32 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_int32 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! float128_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float128_isNaN( trueZ )
- && float128_isNaN( testZ )
- && ! float128_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_int32();
- fputs( "\n\t", stdout );
- writeOutputs_z_float128( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#endif
-
-#ifdef BITS64
-
-void
- test_a_int64_z_float32(
- float32 trueFunction( int64 ), float32 testFunction( int64 ) )
-{
- int16 count;
- float32 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_int64 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_int64 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_int64 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float32_isNaN( trueZ )
- && float32_isNaN( testZ )
- && ! float32_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_int64();
- fputs( " ", stdout );
- writeOutputs_z_float32( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-void
- test_a_int64_z_float64(
- float64 trueFunction( int64 ), float64 testFunction( int64 ) )
-{
- int16 count;
- float64 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_int64 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_int64 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_int64 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! float64_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float64_isNaN( trueZ )
- && float64_isNaN( testZ )
- && ! float64_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_int64();
- fputs( " ", stdout );
- writeOutputs_z_float64( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#ifdef FLOATX80
-
-void
- test_a_int64_z_floatx80(
- floatx80 trueFunction( int64 ), floatx80 testFunction( int64 ) )
-{
- int16 count;
- floatx80 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_int64 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_int64 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_int64 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! floatx80_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && floatx80_isNaN( trueZ )
- && floatx80_isNaN( testZ )
- && ! floatx80_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_int64();
- fputs( " ", stdout );
- writeOutputs_z_floatx80( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#endif
-
-#ifdef FLOAT128
-
-void
- test_a_int64_z_float128(
- float128 trueFunction( int64 ), float128 testFunction( int64 ) )
-{
- int16 count;
- float128 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_int64 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_int64 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_int64 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! float128_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float128_isNaN( trueZ )
- && float128_isNaN( testZ )
- && ! float128_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_int64();
- fputs( "\n\t", stdout );
- writeOutputs_z_float128( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#endif
-
-#endif
-
-void
- test_a_float32_z_int32(
- int32 trueFunction( float32 ), int32 testFunction( float32 ) )
-{
- int16 count;
- int32 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_float32 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float32 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float32 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float32_is_signaling_nan( testCases_a_float32 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ( trueZ == 0x7FFFFFFF )
- && ( ( testZ == 0x7FFFFFFF )
- || ( testZ == (sbits32) 0x80000000 ) )
- && ( trueFlags == float_flag_invalid )
- && ( testFlags == float_flag_invalid )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_float32();
- fputs( " ", stdout );
- writeOutputs_z_int32( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#ifdef BITS64
-
-void
- test_a_float32_z_int64(
- int64 trueFunction( float32 ), int64 testFunction( float32 ) )
-{
- int16 count;
- int64 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_float32 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float32 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float32 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float32_is_signaling_nan( testCases_a_float32 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ( trueZ == LIT64( 0x7FFFFFFFFFFFFFFF ) )
- && ( ( testZ == LIT64( 0x7FFFFFFFFFFFFFFF ) )
- || ( testZ == (sbits64) LIT64( 0x8000000000000000 ) ) )
- && ( trueFlags == float_flag_invalid )
- && ( testFlags == float_flag_invalid )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_float32();
- fputs( " ", stdout );
- writeOutputs_z_int64( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#endif
-
-void
- test_a_float32_z_float64(
- float64 trueFunction( float32 ), float64 testFunction( float32 ) )
-{
- int16 count;
- float64 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_float32 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float32 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float32 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! float64_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float32_is_signaling_nan( testCases_a_float32 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && float64_isNaN( trueZ )
- && float64_isNaN( testZ )
- && ! float64_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_float32();
- fputs( " ", stdout );
- writeOutputs_z_float64( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#ifdef FLOATX80
-
-void
- test_a_float32_z_floatx80(
- floatx80 trueFunction( float32 ), floatx80 testFunction( float32 ) )
-{
- int16 count;
- floatx80 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_float32 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float32 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float32 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! floatx80_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float32_is_signaling_nan( testCases_a_float32 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && floatx80_isNaN( trueZ )
- && floatx80_isNaN( testZ )
- && ! floatx80_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_float32();
- fputs( "\n\t", stdout );
- writeOutputs_z_floatx80( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#endif
-
-#ifdef FLOAT128
-
-void
- test_a_float32_z_float128(
- float128 trueFunction( float32 ), float128 testFunction( float32 ) )
-{
- int16 count;
- float128 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_float32 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float32 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float32 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! float128_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float32_is_signaling_nan( testCases_a_float32 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && float128_isNaN( trueZ )
- && float128_isNaN( testZ )
- && ! float128_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_float32();
- fputs( "\n\t", stdout );
- writeOutputs_z_float128( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#endif
-
-void
- test_az_float32(
- float32 trueFunction( float32 ), float32 testFunction( float32 ) )
-{
- int16 count;
- float32 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_float32 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float32 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float32 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float32_is_signaling_nan( testCases_a_float32 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && float32_isNaN( trueZ )
- && float32_isNaN( testZ )
- && ! float32_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_float32();
- fputs( " ", stdout );
- writeOutputs_z_float32( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-void
- test_ab_float32_z_flag(
- flag trueFunction( float32, float32 ),
- flag testFunction( float32, float32 )
- )
-{
- int16 count;
- flag trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_ab_float32 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float32, testCases_b_float32 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float32, testCases_b_float32 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && ( float32_is_signaling_nan( testCases_a_float32 )
- || float32_is_signaling_nan( testCases_b_float32 ) )
- ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInputs_ab_float32();
- fputs( " ", stdout );
- writeOutputs_z_flag( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
- return;
-
-}
-
-void
- test_abz_float32(
- float32 trueFunction( float32, float32 ),
- float32 testFunction( float32, float32 )
- )
-{
- int16 count;
- float32 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_ab_float32 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float32, testCases_b_float32 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float32, testCases_b_float32 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && ( float32_is_signaling_nan( testCases_a_float32 )
- || float32_is_signaling_nan( testCases_b_float32 ) )
- ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && float32_isNaN( trueZ )
- && float32_isNaN( testZ )
- && ! float32_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInputs_ab_float32();
- fputs( " ", stdout );
- writeOutputs_z_float32( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
- return;
-
-}
-
-void
- test_a_float64_z_int32(
- int32 trueFunction( float64 ), int32 testFunction( float64 ) )
-{
- int16 count;
- int32 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_float64 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float64 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float64 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float64_is_signaling_nan( testCases_a_float64 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ( trueZ == 0x7FFFFFFF )
- && ( ( testZ == 0x7FFFFFFF )
- || ( testZ == (sbits32) 0x80000000 ) )
- && ( trueFlags == float_flag_invalid )
- && ( testFlags == float_flag_invalid )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_float64();
- fputs( " ", stdout );
- writeOutputs_z_int32( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#ifdef BITS64
-
-void
- test_a_float64_z_int64(
- int64 trueFunction( float64 ), int64 testFunction( float64 ) )
-{
- int16 count;
- int64 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_float64 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float64 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float64 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float64_is_signaling_nan( testCases_a_float64 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ( trueZ == LIT64( 0x7FFFFFFFFFFFFFFF ) )
- && ( ( testZ == LIT64( 0x7FFFFFFFFFFFFFFF ) )
- || ( testZ == (sbits64) LIT64( 0x8000000000000000 ) ) )
- && ( trueFlags == float_flag_invalid )
- && ( testFlags == float_flag_invalid )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_float64();
- fputs( " ", stdout );
- writeOutputs_z_int64( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#endif
-
-void
- test_a_float64_z_float32(
- float32 trueFunction( float64 ), float32 testFunction( float64 ) )
-{
- int16 count;
- float32 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_float64 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float64 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float64 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float64_is_signaling_nan( testCases_a_float64 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && float32_isNaN( trueZ )
- && float32_isNaN( testZ )
- && ! float32_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_float64();
- fputs( " ", stdout );
- writeOutputs_z_float32( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#ifdef FLOATX80
-
-void
- test_a_float64_z_floatx80(
- floatx80 trueFunction( float64 ), floatx80 testFunction( float64 ) )
-{
- int16 count;
- floatx80 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_float64 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float64 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float64 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! floatx80_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float64_is_signaling_nan( testCases_a_float64 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && floatx80_isNaN( trueZ )
- && floatx80_isNaN( testZ )
- && ! floatx80_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_float64();
- fputs( "\n\t", stdout );
- writeOutputs_z_floatx80( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#endif
-
-#ifdef FLOAT128
-
-void
- test_a_float64_z_float128(
- float128 trueFunction( float64 ), float128 testFunction( float64 ) )
-{
- int16 count;
- float128 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_float64 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float64 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float64 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! float128_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float64_is_signaling_nan( testCases_a_float64 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && float128_isNaN( trueZ )
- && float128_isNaN( testZ )
- && ! float128_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_float64();
- fputs( "\n\t", stdout );
- writeOutputs_z_float128( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#endif
-
-void
- test_az_float64(
- float64 trueFunction( float64 ), float64 testFunction( float64 ) )
-{
- int16 count;
- float64 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_float64 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float64 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float64 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! float64_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float64_is_signaling_nan( testCases_a_float64 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && float64_isNaN( trueZ )
- && float64_isNaN( testZ )
- && ! float64_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_float64();
- fputs( " ", stdout );
- writeOutputs_z_float64( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-void
- test_ab_float64_z_flag(
- flag trueFunction( float64, float64 ),
- flag testFunction( float64, float64 )
- )
-{
- int16 count;
- flag trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_ab_float64 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float64, testCases_b_float64 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float64, testCases_b_float64 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && ( float64_is_signaling_nan( testCases_a_float64 )
- || float64_is_signaling_nan( testCases_b_float64 ) )
- ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInputs_ab_float64();
- fputs( " ", stdout );
- writeOutputs_z_flag( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
- return;
-
-}
-
-void
- test_abz_float64(
- float64 trueFunction( float64, float64 ),
- float64 testFunction( float64, float64 )
- )
-{
- int16 count;
- float64 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_ab_float64 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float64, testCases_b_float64 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float64, testCases_b_float64 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! float64_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && ( float64_is_signaling_nan( testCases_a_float64 )
- || float64_is_signaling_nan( testCases_b_float64 ) )
- ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && float64_isNaN( trueZ )
- && float64_isNaN( testZ )
- && ! float64_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInputs_ab_float64();
- fputs( "\n\t", stdout );
- writeOutputs_z_float64( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
- return;
-
-}
-
-#ifdef FLOATX80
-
-void
- test_a_floatx80_z_int32(
- int32 trueFunction( floatx80 ), int32 testFunction( floatx80 ) )
-{
- int16 count;
- int32 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_floatx80 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_floatx80 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_floatx80 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && floatx80_is_signaling_nan( testCases_a_floatx80 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ( trueZ == 0x7FFFFFFF )
- && ( ( testZ == 0x7FFFFFFF )
- || ( testZ == (sbits32) 0x80000000 ) )
- && ( trueFlags == float_flag_invalid )
- && ( testFlags == float_flag_invalid )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_floatx80();
- fputs( " ", stdout );
- writeOutputs_z_int32( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#ifdef BITS64
-
-void
- test_a_floatx80_z_int64(
- int64 trueFunction( floatx80 ), int64 testFunction( floatx80 ) )
-{
- int16 count;
- int64 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_floatx80 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_floatx80 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_floatx80 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && floatx80_is_signaling_nan( testCases_a_floatx80 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ( trueZ == LIT64( 0x7FFFFFFFFFFFFFFF ) )
- && ( ( testZ == LIT64( 0x7FFFFFFFFFFFFFFF ) )
- || ( testZ == (sbits64) LIT64( 0x8000000000000000 ) ) )
- && ( trueFlags == float_flag_invalid )
- && ( testFlags == float_flag_invalid )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_floatx80();
- fputs( " ", stdout );
- writeOutputs_z_int64( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#endif
-
-void
- test_a_floatx80_z_float32(
- float32 trueFunction( floatx80 ), float32 testFunction( floatx80 ) )
-{
- int16 count;
- float32 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_floatx80 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_floatx80 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_floatx80 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && floatx80_is_signaling_nan( testCases_a_floatx80 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && float32_isNaN( trueZ )
- && float32_isNaN( testZ )
- && ! float32_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_floatx80();
- fputs( " ", stdout );
- writeOutputs_z_float32( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-void
- test_a_floatx80_z_float64(
- float64 trueFunction( floatx80 ), float64 testFunction( floatx80 ) )
-{
- int16 count;
- float64 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_floatx80 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_floatx80 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_floatx80 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! float64_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && floatx80_is_signaling_nan( testCases_a_floatx80 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && float64_isNaN( trueZ )
- && float64_isNaN( testZ )
- && ! float64_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_floatx80();
- fputs( "\n\t", stdout );
- writeOutputs_z_float64( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#ifdef FLOAT128
-
-void
- test_a_floatx80_z_float128(
- float128 trueFunction( floatx80 ), float128 testFunction( floatx80 ) )
-{
- int16 count;
- float128 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_floatx80 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_floatx80 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_floatx80 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! float128_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && floatx80_is_signaling_nan( testCases_a_floatx80 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && float128_isNaN( trueZ )
- && float128_isNaN( testZ )
- && ! float128_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_floatx80();
- fputs( "\n\t", stdout );
- writeOutputs_z_float128( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#endif
-
-void
- test_az_floatx80(
- floatx80 trueFunction( floatx80 ), floatx80 testFunction( floatx80 ) )
-{
- int16 count;
- floatx80 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_floatx80 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_floatx80 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_floatx80 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! floatx80_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && floatx80_is_signaling_nan( testCases_a_floatx80 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && floatx80_isNaN( trueZ )
- && floatx80_isNaN( testZ )
- && ! floatx80_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_floatx80();
- fputs( "\n\t", stdout );
- writeOutputs_z_floatx80( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-void
- test_ab_floatx80_z_flag(
- flag trueFunction( floatx80, floatx80 ),
- flag testFunction( floatx80, floatx80 )
- )
-{
- int16 count;
- flag trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_ab_floatx80 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_floatx80, testCases_b_floatx80 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_floatx80, testCases_b_floatx80 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && ( floatx80_is_signaling_nan( testCases_a_floatx80 )
- || floatx80_is_signaling_nan( testCases_b_floatx80 ) )
- ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInputs_ab_floatx80();
- fputs( " ", stdout );
- writeOutputs_z_flag( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
- return;
-
-}
-
-void
- test_abz_floatx80(
- floatx80 trueFunction( floatx80, floatx80 ),
- floatx80 testFunction( floatx80, floatx80 )
- )
-{
- int16 count;
- floatx80 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_ab_floatx80 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_floatx80, testCases_b_floatx80 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_floatx80, testCases_b_floatx80 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! floatx80_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && ( floatx80_is_signaling_nan( testCases_a_floatx80 )
- || floatx80_is_signaling_nan( testCases_b_floatx80 ) )
- ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && floatx80_isNaN( trueZ )
- && floatx80_isNaN( testZ )
- && ! floatx80_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInputs_ab_floatx80();
- fputs( "\n\t", stdout );
- writeOutputs_z_floatx80( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
- return;
-
-}
-
-#endif
-
-#ifdef FLOAT128
-
-void
- test_a_float128_z_int32(
- int32 trueFunction( float128 ), int32 testFunction( float128 ) )
-{
- int16 count;
- int32 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_float128 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float128 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float128 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float128_is_signaling_nan( testCases_a_float128 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ( trueZ == 0x7FFFFFFF )
- && ( ( testZ == 0x7FFFFFFF )
- || ( testZ == (sbits32) 0x80000000 ) )
- && ( trueFlags == float_flag_invalid )
- && ( testFlags == float_flag_invalid )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_float128();
- fputs( " ", stdout );
- writeOutputs_z_int32( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#ifdef BITS64
-
-void
- test_a_float128_z_int64(
- int64 trueFunction( float128 ), int64 testFunction( float128 ) )
-{
- int16 count;
- int64 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_float128 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float128 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float128 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float128_is_signaling_nan( testCases_a_float128 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ( trueZ == LIT64( 0x7FFFFFFFFFFFFFFF ) )
- && ( ( testZ == LIT64( 0x7FFFFFFFFFFFFFFF ) )
- || ( testZ == (sbits64) LIT64( 0x8000000000000000 ) ) )
- && ( trueFlags == float_flag_invalid )
- && ( testFlags == float_flag_invalid )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_float128();
- fputs( "\n\t", stdout );
- writeOutputs_z_int64( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#endif
-
-void
- test_a_float128_z_float32(
- float32 trueFunction( float128 ), float32 testFunction( float128 ) )
-{
- int16 count;
- float32 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_float128 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float128 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float128 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float128_is_signaling_nan( testCases_a_float128 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && float32_isNaN( trueZ )
- && float32_isNaN( testZ )
- && ! float32_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_float128();
- fputs( " ", stdout );
- writeOutputs_z_float32( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-void
- test_a_float128_z_float64(
- float64 trueFunction( float128 ), float64 testFunction( float128 ) )
-{
- int16 count;
- float64 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_float128 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float128 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float128 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! float64_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float128_is_signaling_nan( testCases_a_float128 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && float64_isNaN( trueZ )
- && float64_isNaN( testZ )
- && ! float64_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_float128();
- fputs( "\n\t", stdout );
- writeOutputs_z_float64( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#ifdef FLOATX80
-
-void
- test_a_float128_z_floatx80(
- floatx80 trueFunction( float128 ), floatx80 testFunction( float128 ) )
-{
- int16 count;
- floatx80 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_float128 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float128 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float128 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! floatx80_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float128_is_signaling_nan( testCases_a_float128 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && floatx80_isNaN( trueZ )
- && floatx80_isNaN( testZ )
- && ! floatx80_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_float128();
- fputs( "\n\t", stdout );
- writeOutputs_z_floatx80( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-#endif
-
-void
- test_az_float128(
- float128 trueFunction( float128 ), float128 testFunction( float128 ) )
-{
- int16 count;
- float128 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_a_float128 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float128 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float128 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! float128_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && float128_is_signaling_nan( testCases_a_float128 ) ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && float128_isNaN( trueZ )
- && float128_isNaN( testZ )
- && ! float128_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInput_a_float128();
- fputs( "\n\t", stdout );
- writeOutputs_z_float128( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
-
-}
-
-void
- test_ab_float128_z_flag(
- flag trueFunction( float128, float128 ),
- flag testFunction( float128, float128 )
- )
-{
- int16 count;
- flag trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_ab_float128 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float128, testCases_b_float128 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float128, testCases_b_float128 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && ( float128_is_signaling_nan( testCases_a_float128 )
- || float128_is_signaling_nan( testCases_b_float128 ) )
- ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ( trueZ != testZ ) || ( trueFlags != testFlags ) ) {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInputs_ab_float128();
- fputs( "\n\t", stdout );
- writeOutputs_z_flag( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
- return;
-
-}
-
-void
- test_abz_float128(
- float128 trueFunction( float128, float128 ),
- float128 testFunction( float128, float128 )
- )
-{
- int16 count;
- float128 trueZ, testZ;
- uint8 trueFlags, testFlags;
-
- errorCount = 0;
- tenthousandsCount = 0;
- count = 10000;
- testCases_initSequence( testCases_sequence_ab_float128 );
- writeTestsTotal();
- while ( ! testCases_done || forever ) {
- testCases_next();
- *trueFlagsPtr = 0;
- trueZ = trueFunction( testCases_a_float128, testCases_b_float128 );
- trueFlags = *trueFlagsPtr;
- (void) testFlagsFunctionPtr();
- testZ = testFunction( testCases_a_float128, testCases_b_float128 );
- testFlags = testFlagsFunctionPtr();
- --count;
- if ( count == 0 ) {
- checkEarlyExit();
- count = 10000;
- }
- if ( ! float128_same( trueZ, testZ ) || ( trueFlags != testFlags ) ) {
- if ( ! checkNaNs
- && ( float128_is_signaling_nan( testCases_a_float128 )
- || float128_is_signaling_nan( testCases_b_float128 ) )
- ) {
- trueFlags |= float_flag_invalid;
- }
- if ( ! checkNaNs
- && float128_isNaN( trueZ )
- && float128_isNaN( testZ )
- && ! float128_is_signaling_nan( testZ )
- && ( trueFlags == testFlags )
- ) {
- /* no problem */
- }
- else {
- ++errorCount;
- writeErrorFound( 10000 - count );
- writeInputs_ab_float128();
- fputs( "\n\t", stdout );
- writeOutputs_z_float128( trueZ, trueFlags, testZ, testFlags );
- fflush( stdout );
- if ( errorCount == maxErrorCount ) goto exit;
- }
- }
- }
- exit:
- writeTestsPerformed( 10000 - count );
- return;
-
-}
-
-#endif
-
diff --git a/tools/test/testfloat/testLoops.h b/tools/test/testfloat/testLoops.h
deleted file mode 100644
index c3b08477f0ed..000000000000
--- a/tools/test/testfloat/testLoops.h
+++ /dev/null
@@ -1,143 +0,0 @@
-
-/*
-===============================================================================
-
-This C header file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-#include <stdio.h>
-
-extern volatile flag stop;
-
-extern char *trueName, *testName;
-extern flag forever, errorStop;
-extern uint32 maxErrorCount;
-extern flag checkNaNs;
-extern int8 *trueFlagsPtr;
-extern int8 ( *testFlagsFunctionPtr )( void );
-extern char *functionName;
-extern char *roundingPrecisionName, *roundingModeName, *tininessModeName;
-extern flag anyErrors;
-
-void writeFunctionName( FILE * );
-void exitWithStatus( void );
-
-void test_a_int32_z_float32( float32 ( int32 ), float32 ( int32 ) );
-void test_a_int32_z_float64( float64 ( int32 ), float64 ( int32 ) );
-#ifdef FLOATX80
-void test_a_int32_z_floatx80( floatx80 ( int32 ), floatx80 ( int32 ) );
-#endif
-#ifdef FLOAT128
-void test_a_int32_z_float128( float128 ( int32 ), float128 ( int32 ) );
-#endif
-#ifdef BITS64
-void test_a_int64_z_float32( float32 ( int64 ), float32 ( int64 ) );
-void test_a_int64_z_float64( float64 ( int64 ), float64 ( int64 ) );
-#ifdef FLOATX80
-void test_a_int64_z_floatx80( floatx80 ( int64 ), floatx80 ( int64 ) );
-#endif
-#ifdef FLOAT128
-void test_a_int64_z_float128( float128 ( int64 ), float128 ( int64 ) );
-#endif
-#endif
-
-void test_a_float32_z_int32( int32 ( float32 ), int32 ( float32 ) );
-#ifdef BITS64
-void test_a_float32_z_int64( int64 ( float32 ), int64 ( float32 ) );
-#endif
-void test_a_float32_z_float64( float64 ( float32 ), float64 ( float32 ) );
-#ifdef FLOATX80
-void test_a_float32_z_floatx80( floatx80 ( float32 ), floatx80 ( float32 ) );
-#endif
-#ifdef FLOAT128
-void test_a_float32_z_float128( float128 ( float32 ), float128 ( float32 ) );
-#endif
-void test_az_float32( float32 ( float32 ), float32 ( float32 ) );
-void
- test_ab_float32_z_flag(
- flag ( float32, float32 ), flag ( float32, float32 ) );
-void
- test_abz_float32(
- float32 ( float32, float32 ), float32 ( float32, float32 ) );
-
-void test_a_float64_z_int32( int32 ( float64 ), int32 ( float64 ) );
-#ifdef BITS64
-void test_a_float64_z_int64( int64 ( float64 ), int64 ( float64 ) );
-#endif
-void test_a_float64_z_float32( float32 ( float64 ), float32 ( float64 ) );
-#ifdef FLOATX80
-void test_a_float64_z_floatx80( floatx80 ( float64 ), floatx80 ( float64 ) );
-#endif
-#ifdef FLOAT128
-void test_a_float64_z_float128( float128 ( float64 ), float128 ( float64 ) );
-#endif
-void test_az_float64( float64 ( float64 ), float64 ( float64 ) );
-void
- test_ab_float64_z_flag(
- flag ( float64, float64 ), flag ( float64, float64 ) );
-void
- test_abz_float64(
- float64 ( float64, float64 ), float64 ( float64, float64 ) );
-
-#ifdef FLOATX80
-
-void test_a_floatx80_z_int32( int32 ( floatx80 ), int32 ( floatx80 ) );
-#ifdef BITS64
-void test_a_floatx80_z_int64( int64 ( floatx80 ), int64 ( floatx80 ) );
-#endif
-void test_a_floatx80_z_float32( float32 ( floatx80 ), float32 ( floatx80 ) );
-void test_a_floatx80_z_float64( float64 ( floatx80 ), float64 ( floatx80 ) );
-#ifdef FLOAT128
-void
- test_a_floatx80_z_float128( float128 ( floatx80 ), float128 ( floatx80 ) );
-#endif
-void test_az_floatx80( floatx80 ( floatx80 ), floatx80 ( floatx80 ) );
-void
- test_ab_floatx80_z_flag(
- flag ( floatx80, floatx80 ), flag ( floatx80, floatx80 ) );
-void
- test_abz_floatx80(
- floatx80 ( floatx80, floatx80 ), floatx80 ( floatx80, floatx80 ) );
-
-#endif
-
-#ifdef FLOAT128
-
-void test_a_float128_z_int32( int32 ( float128 ), int32 ( float128 ) );
-#ifdef BITS64
-void test_a_float128_z_int64( int64 ( float128 ), int64 ( float128 ) );
-#endif
-void test_a_float128_z_float32( float32 ( float128 ), float32 ( float128 ) );
-void test_a_float128_z_float64( float64 ( float128 ), float64 ( float128 ) );
-#ifdef FLOATX80
-void
- test_a_float128_z_floatx80( floatx80 ( float128 ), floatx80 ( float128 ) );
-#endif
-void test_az_float128( float128 ( float128 ), float128 ( float128 ) );
-void
- test_ab_float128_z_flag(
- flag ( float128, float128 ), flag ( float128, float128 ) );
-void
- test_abz_float128(
- float128 ( float128, float128 ), float128 ( float128, float128 ) );
-
-#endif
-
diff --git a/tools/test/testfloat/testfloat-history.txt b/tools/test/testfloat/testfloat-history.txt
deleted file mode 100644
index 61520b3b678a..000000000000
--- a/tools/test/testfloat/testfloat-history.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-
-History of Major Changes to TestFloat, up to Release 2a
-
-John R. Hauser
-1998 December 17
-
-
-The TestFloat releases parallel those of SoftFloat, on which TestFloat is
-based. Each TestFloat release also incorporates all bug fixes from the
-corresponding release of SoftFloat.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Release 2a (1998 December)
-
--- Added support for testing conversions between floating-point and 64-bit
- integers.
-
--- Improved the makefiles.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Release 2 (1997 June)
-
--- Integrated the generation of test cases and the checking of system
- results into a single program. (Before they were separate programs,
- normally joined by explicit command-line pipes.)
-
--- Improved the sequence of test cases.
-
--- Added support for testing extended double precision and quadruple
- precision.
-
--- Made program output more readable, and added new command arguments.
-
--- Reduced dependence on the quality of the standard `random' function for
- generating test cases. (Previously naively expected `random' to be able
- to generate good random bits for the entire machine word width.)
-
--- Created `testsoftfloat', with its own simpler complete software floating-
- point (``slowfloat'') for comparison purposes.
-
--- Made some changes to the source file structure, including renaming
- `environment.h' to `milieu.h' (to avoid confusion with environment
- variables).
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Release 1a (1996 July)
-
--- Added the `-tininessbefore' and `-tininessafter' options to control
- whether tininess should be detected before or after rounding.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Release 1 (1996 July)
-
--- Original release.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
diff --git a/tools/test/testfloat/testfloat-source.txt b/tools/test/testfloat/testfloat-source.txt
deleted file mode 100644
index 8c5efa9136f1..000000000000
--- a/tools/test/testfloat/testfloat-source.txt
+++ /dev/null
@@ -1,444 +0,0 @@
-
-TestFloat Release 2a Source Documentation
-
-John R. Hauser
-1998 December 16
-
-
--------------------------------------------------------------------------------
-Introduction
-
-TestFloat is a program for testing that a floating-point implementation
-conforms to the IEC/IEEE Standard for Binary Floating-Point Arithmetic.
-All standard operations supported by the system can be tested, except for
-conversions to and from decimal. Any of the following machine formats can
-be tested: single precision, double precision, extended double precision,
-and/or quadruple precision. Testing extended double-precision or quadruple-
-precision formats requires a C compiler that supports 64-bit integer
-arithmetic.
-
-This document gives information needed for compiling and/or porting
-TestFloat.
-
-The source code for TestFloat is intended to be relatively machine-
-independent. TestFloat is written in C, and should be compilable using
-any ISO/ANSI C compiler. At the time of this writing, the program has
-been successfully compiled using the GNU C Compiler (`gcc') for several
-platforms. Because ISO/ANSI C does not provide access to some features
-of IEC/IEEE floating-point such as the exception flags, porting TestFloat
-unfortunately involves some machine-dependent coding.
-
-TestFloat depends on SoftFloat, which is a software implementation of
-floating-point that conforms to the IEC/IEEE Standard. SoftFloat is not
-included with the TestFloat sources. It can be obtained from the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/SoftFloat.html'.
-
-In addition to a program for testing a machine's floating-point, the
-TestFloat package includes a variant for testing SoftFloat called
-`testsoftfloat'. The sources for both programs are intermixed, and both are
-described here.
-
-The first release of TestFloat (Release 1) was called _FloatTest_. The old
-name has been obsolete for some time.
-
-
--------------------------------------------------------------------------------
-Limitations
-
-TestFloat as written requires an ISO/ANSI-style C compiler. No attempt has
-been made to accommodate compilers that are not ISO-conformant. Older ``K&R-
-style'' compilers are not adequate for compiling TestFloat. All testing I
-have done so far has been with the GNU C Compiler. Compilation with other
-compilers should be possible but has not been tested.
-
-The TestFloat sources assume that source code file names can be longer than
-8 characters. In order to compile under an MS-DOS-style system, many of the
-source files will need to be renamed, and the source and makefiles edited
-appropriately. Once compiled, the TestFloat program does not depend on the
-existence of long file names.
-
-The underlying machine is assumed to be binary with a word size that is a
-power of 2. Bytes are 8 bits. Testing of extended double-precision and
-quadruple-precision formats depends on the C compiler implementing a 64-bit
-integer type. If the largest integer type supported by the C compiler is
-32 bits, only single- and double-precision operations can be tested.
-
-
--------------------------------------------------------------------------------
-Contents
-
- Introduction
- Limitations
- Contents
- Legal Notice
- TestFloat Source Directory Structure
- Target-Independent Modules
- Target-Specific Modules
- Target-Specific Header Files
- processors/*.h
- testfloat/*/milieu.h
- Target-Specific Floating-Point Subroutines
- Steps to Creating the TestFloat Executables
- Improving the Random Number Generator
- Contact Information
-
-
-
--------------------------------------------------------------------------------
-Legal Notice
-
-TestFloat was written by John R. Hauser.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-
--------------------------------------------------------------------------------
-TestFloat Source Directory Structure
-
-Because TestFloat is targeted to multiple platforms, its source code
-is slightly scattered between target-specific and target-independent
-directories and files. The directory structure is as follows:
-
- processors
- testfloat
- templates
- 386-Win32-gcc
- SPARC-Solaris-gcc
-
-The two topmost directories and their contents are:
-
- testfloat - Most of the source code needed for TestFloat.
- processors - Target-specific header files that are not specific to
- TestFloat.
-
-Within the `testfloat' directory are subdirectories for each of the
-targeted platforms. The TestFloat source code is distributed with targets
-`386-Win32-gcc' and `SPARC-Solaris-gcc' (and perhaps others) already
-prepared. These can be used as examples for porting to new targets. Source
-files that are not within these target-specific subdirectories are intended
-to be target-independent.
-
-The naming convention used for the target-specific directories is
-`<processor>-<executable-type>-<compiler>'. The names of the supplied
-target directories should be interpreted as follows:
-
- <processor>:
- 386 - Intel 386-compatible processor.
- SPARC - SPARC processor (as used by Sun machines).
- <executable-type>:
- Win32 - Microsoft Win32 executable.
- Solaris - Sun Solaris executable.
- <compiler>:
- gcc - GNU C Compiler.
-
-You do not need to maintain this convention if you do not want to.
-
-Alongside the supplied target-specific directories there is a `templates'
-directory containing a set of ``generic'' target-specific source files.
-A new target directory can be created by copying the `templates' directory
-and editing the files inside. (Complete instructions for porting TestFloat
-to a new target are in the section _Steps_to_Creating_the_TestFloat_
-_Executables_.) Note that the `templates' directory will not work as a
-target directory without some editing. To avoid confusion, it would be wise
-to refrain from editing the files inside `templates' directly.
-
-In addition to the distributed sources, TestFloat depends on the existence
-of an appropriately-compiled SoftFloat binary and the corresponding header
-file `softfloat.h'. SoftFloat is not included with the TestFloat sources.
-It can be obtained from the Web page `http://HTTP.CS.Berkeley.EDU/~jhauser/
-arithmetic/SoftFloat.html'.
-
-As distributed, the makefiles for TestFloat assume the existence of three
-sibling directories:
-
- processors
- softfloat
- testfloat
-
-Only the `processors' and `testfloat' directories are included in the
-TestFloat package. The `softfloat' directory is assumed to contain a
-target-specific subdirectory within which the SoftFloat header file and
-compiled binary can be found. (See the source documentation accompanying
-SoftFloat.) The `processors' directory distributed with TestFloat is
-intended to be identical to that included with the SoftFloat source.
-
-These are the defaults, but other organizations of the sources are possible.
-The TestFloat makefiles and `milieu.h' files (see below) are easily edited
-to accommodate other arrangements.
-
-
--------------------------------------------------------------------------------
-Target-Independent Modules
-
-The TestFloat program is composed of a number of modules, some target-
-specific and some target-independent. The target-independent modules are as
-follows:
-
--- The `fail' module provides a common routine for writing an error message
- and aborting.
-
--- The `random' module generates random integer values.
-
--- The `writeHex' module defines routines for writing the various types in
- the hexadecimal form used by TestFloat.
-
--- The `testCases' module generates test cases for the various types.
-
--- The `testLoops' module contains various routines for exercising two
- implementations of a function and reporting any differences observed.
-
--- The `slowfloat' module provides the simple floating-point implementation
- used by `testsoftfloat' for comparing against SoftFloat. The heart
- of `slowfloat' is found in either `slowfloat-32' or `slowfloat-64',
- depending on whether the `BITS64' macro is defined.
-
--- The `systfloat' module gives a SoftFloat-like interface to the machine's
- floating-point.
-
--- The `testFunction' module implements `testfloat's main loop for testing a
- function for all of the relevant rounding modes and rounding precisions.
- (The `testsoftfloat' program contains its own version of this code.)
-
--- The `testfloat' and `testsoftfloat' modules are the main modules for the
- `testfloat' and `testsoftfloat' programs.
-
-Except possibly for `systfloat', these modules should not need to be
-modified.
-
-The `systfloat' module uses the floating-point operations of the C language
-to access a machine's floating-point. Unfortunately, some IEC/IEEE
-floating-point operations are not accessible within ISO/ANSI C. The
-following machine functions cannot be tested unless an alternate `systfloat'
-module is provided:
-
- <float>_to_int32 (rounded according to rounding mode)
- <float>_to_int64 (rounded according to rounding mode)
- <float>_round_to_int
- <float>_rem
- <float>_sqrt, except float64_sqrt
- <float>_eq_signaling
- <float>_le_quiet
- <float>_lt_quiet
-
-The `-list' option to `testfloat' will show the operations the program is
-prepared to test. The section _Target-Specific_Floating-Point_Subroutines_
-later in this document explains how to create a target-specific `systfloat'
-module to change the set of testable functions.
-
-
--------------------------------------------------------------------------------
-Target-Specific Modules
-
-No target-specific modules are needed for `testsoftfloat'.
-
-The `testfloat' program uses two target-specific modules:
-
--- The `systmodes' module defines functions for setting the modes
- controlling the system's floating-point, including the rounding mode and
- the rounding precision for extended double precision.
-
--- The `systflags' module provides a function for clearing and examining the
- system's floating-point exception flags.
-
-These modules must be supplied for each target. They can be implemented in
-any way desired, so long as all is reflected in the target's makefile. For
-the targets that come with the distributed source, each of these modules is
-implemented as a single assembly language or C language source file.
-
-
--------------------------------------------------------------------------------
-Target-Specific Header Files
-
-The purpose of the two target-specific header files is detailed below.
-In the following, the `*' symbol is used in place of the name of a specific
-target, such as `386-Win32-gcc' or `SPARC-Solaris-gcc', or in place of some
-other text as explained below.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-processors/*.h
-
-The target-specific `processors' header file defines integer types
-of various sizes, and also defines certain C preprocessor macros that
-characterize the target. The two examples supplied are `386-gcc.h' and
-`SPARC-gcc.h'. The naming convention used for processor header files is
-`<processor>-<compiler>.h'. The `processors' header file used to compile
-TestFloat should be the same as that used to compile SoftFloat.
-
-If 64-bit integers are supported by the compiler, the macro name `BITS64'
-should be defined here along with the corresponding 64-bit integer
-types. In addition, the function-like macro `LIT64' must be defined for
-constructing 64-bit integer literals (constants). The `LIT64' macro is used
-consistently in the TestFloat code to annotate 64-bit literals.
-
-If an inlining attribute (such as an `inline' keyword) is provided by the
-compiler, the macro `INLINE' should be defined to the appropriate keyword.
-If not, `INLINE' can be set to the keyword `static'. The `INLINE' macro
-appears in the TestFloat source code before every function that should be
-inlined by the compiler.
-
-For maximum flexibility, the TestFloat source files do not include the
-`processors' header file directly; rather, this file is included by the
-target-specific `milieu.h' header, and `milieu.h' is included by the source
-files.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-testfloat/*/milieu.h
-
-The `milieu.h' header file provides declarations that are needed to
-compile TestFloat. In particular, it is through this header file that
-the appropriate `processors' header is included to characterize the target
-processor. In addition, deviations from ISO/ANSI C by the compiler (such as
-names not properly declared in system header files) are corrected in this
-header if possible.
-
-If the preprocessor macro `BITS64' is defined in the `processors' header
-file but only the 32-bit version of SoftFloat is actually used, the `BITS64'
-macro should be undefined here after the `processors' header has defined it.
-
-If the C compiler implements the `long double' floating-point type of C
-as extended double precision, then `LONG_DOUBLE_IS_FLOATX80' should be
-defined here. Alternatively, if the C `long double' type is implemented as
-quadruple precision, `LONG_DOUBLE_IS_FLOAT128' should be defined. At most
-one of these macros should be defined. A C compiler is allowed to implement
-`long double' the same as `double', in which case neither of these macros
-should be defined.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
--------------------------------------------------------------------------------
-Target-Specific Floating-Point Subroutines
-
-This section applies only to `testfloat' and not to `testsoftfloat'.
-
-By default, TestFloat tests a machine's floating-point by testing the
-floating-point operations of the C language. Unfortunately, some IEC/IEEE
-floating-point operations are not defined within ISO/ANSI C. If a machine
-implements such ``non-C'' operations, target-specific subroutines for
-the operations can be supplied to allow TestFloat to test these machine
-features. Typically, such subroutines will need to be written in assembly
-language, although equivalent functions can sometimes be found among the
-system's software libraries.
-
-The following machine functions cannot be tested by TestFloat unless target-
-specific subroutines are supplied for them:
-
- <float>_to_int32 (rounded according to rounding mode)
- <float>_to_int64 (rounded according to rounding mode)
- <float>_round_to_int
- <float>_rem
- <float>_sqrt, except float64_sqrt
- <float>_eq_signaling
- <float>_le_quiet
- <float>_lt_quiet
-
-In addition to these, none of the `floatx80' functions can be tested by
-default if the C `long double' type is something other than extended double
-precision; and likewise, none of the `float128' functions can be tested by
-default if `long double' is not quadruple precision. Since `long double'
-cannot be both extended double precision and quadruple precision at the
-same time, at least one of these types cannot be tested by TestFloat without
-appropriate subroutines being supplied for that type. (On the other hand,
-few systems implement _both_ extended double-precision and quadruple-
-precision floating-point; and unless a system does implement both, it does
-not need both tested.)
-
-Note that the `-list' option to `testfloat' will show the operations
-TestFloat is prepared to test.
-
-TestFloat's `systfloat' module supplies the system version of the functions
-to be tested. The names of the `systfloat' subroutines are the same as the
-function names used as arguments to the `testfloat' command but with `syst_'
-prefixed--thus, for example, `syst_float32_add' and `syst_int32_to_float32'.
-The default `systfloat' module maps these system functions to the standard
-C operations; so `syst_float32_add', for example, is implemented using the
-C `+' operation for the single-precision `float' type. For each system
-function supplied by `systfloat', a corresponding `SYST_<function>'
-preprocessor macro is defined in `systfloat.h' to indicate that the function
-exists to be tested (e.g., `SYST_FLOAT32_ADD'). The `systfloat.h' header
-file also declares function prototypes for the `systfloat' functions.
-
-(The `systfloat.h' file that comes with the TestFloat package declares
-prototypes for all of the possible `systfloat' functions, whether defined in
-`systfloat' or not. There is no penalty for declaring a function prototype
-that is never used.)
-
-A target-specific version of the `systfloat' module can easily be created to
-replace the generic one. This in fact has been done for the example targets
-`386-Win32-gcc' and `SPARC-Solaris-gcc'. For each target, an assembly
-language `systfloat.S' has been created in the target directory along with
-a corresponding `systfloat.h' header file defining the `SYST_<function>'
-macros for the functions implemented. The makefiles of the targets have
-been edited to use these target-specific versions of `systfloat' rather than
-the generic one.
-
-The `systfloat' modules of the example targets have been written entirely
-in assembly language in order to bypass any peculiarities of the C compiler.
-Although this is probably a good idea, it is certainly not required.
-
-
--------------------------------------------------------------------------------
-Steps to Creating the TestFloat Executables
-
-Porting and/or compiling TestFloat involves the following steps:
-
-1. Port SoftFloat and create a SoftFloat binary. (Refer to the
- documentation accompanying SoftFloat.)
-
-2. If one does not already exist, create an appropriate target-specific
- subdirectory under `testfloat' by copying the given `templates'
- directory. The remaining steps occur within the target-specific
- subdirectory.
-
-3. Edit the files `milieu.h' and `Makefile' to reflect the current
- environment.
-
-4. Make `testsoftfloat' by executing `make testsoftfloat' (or `make
- testsoftfloat.exe', or whatever the `testsoftfloat' executable is
- called). Verify that SoftFloat is working correctly by testing it with
- `testsoftfloat'.
-
-If you only wanted `testsoftfloat', you are done. The steps for `testfloat'
-continue:
-
-5. In the target-specific subdirectory, implement the `systmodes' and
- `systflags' modules. (The `syst_float_set_rounding_precision' function
- need not do anything if the system does not support extended double
- precision.)
-
-6. If the target machine supports standard floating-point functions that are
- not accessible within ISO/ANSI C, or if the C compiler cannot be trusted
- to use the machine's floating-point directly, create a target-specific
- `systfloat' module.
-
-7. In the target-specific subdirectory, execute `make'.
-
-
--------------------------------------------------------------------------------
-Improving the Random Number Generator
-
-If you are serious about using TestFloat for testing floating-point, you
-should consider replacing the supplied `random.c' with a better target-
-specific one. The standard C `rand' function is rather poor on some
-systems, and consequently `random.c' has been written to assume very little
-about the quality of `rand'. As a result, the `rand' function is called
-more frequently than it might need to be, shortening the time before
-the random number generator repeats, and possibly wasting time as well.
-If `rand' is better on your system, or if another better random number
-generator is available (such as `rand48' on most Unix systems), TestFloat
-can be improved by overriding the given `random.c' with a target-specific
-one.
-
-
--------------------------------------------------------------------------------
-Contact Information
-
-At the time of this writing, the most up-to-date information about
-TestFloat and the latest release can be found at the Web page `http://
-HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-
diff --git a/tools/test/testfloat/testfloat.c b/tools/test/testfloat/testfloat.c
deleted file mode 100644
index 5a19d8811b69..000000000000
--- a/tools/test/testfloat/testfloat.c
+++ /dev/null
@@ -1,299 +0,0 @@
-
-/*
-===============================================================================
-
-This C source file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stdlib.h>
-#include <signal.h>
-#include <string.h>
-#include "milieu.h"
-#include "fail.h"
-#include "softfloat.h"
-#include "testCases.h"
-#include "testLoops.h"
-#include "systflags.h"
-#include "testFunction.h"
-
-static void catchSIGINT( int signalCode )
-{
-
- if ( stop ) exit( EXIT_FAILURE );
- stop = TRUE;
-
-}
-
-int
-main( int argc, char **argv )
-{
- char *argPtr;
- flag functionArgument;
- uint8 functionCode;
- int8 operands, roundingPrecision, roundingMode;
-
- fail_programName = "testfloat";
- if ( argc <= 1 ) goto writeHelpMessage;
- testCases_setLevel( 1 );
- trueName = "soft";
- testName = "syst";
- errorStop = FALSE;
- forever = FALSE;
- maxErrorCount = 20;
- trueFlagsPtr = &float_exception_flags;
- testFlagsFunctionPtr = syst_float_flags_clear;
- tininessModeName = 0;
- functionArgument = FALSE;
- functionCode = 0;
- operands = 0;
- roundingPrecision = 0;
- roundingMode = 0;
- --argc;
- ++argv;
- while ( argc && ( argPtr = argv[ 0 ] ) ) {
- if ( argPtr[ 0 ] == '-' ) ++argPtr;
- if ( strcmp( argPtr, "help" ) == 0 ) {
- writeHelpMessage:
- fputs(
-"testfloat [<option>...] <function>\n"
-" <option>: (* is default)\n"
-" -help --Write this message and exit.\n"
-" -list --List all testable functions and exit.\n"
-" -level <num> --Testing level <num> (1 or 2).\n"
-" * -level 1\n"
-" -errors <num> --Stop each function test after <num> errors.\n"
-" * -errors 20\n"
-" -errorstop --Exit after first function with any error.\n"
-" -forever --Test one function repeatedly (implies `-level 2').\n"
-" -checkNaNs --Check for bitwise correctness of NaN results.\n"
-#ifdef FLOATX80
-" -precision32 --Only test rounding precision equivalent to float32.\n"
-" -precision64 --Only test rounding precision equivalent to float64.\n"
-" -precision80 --Only test maximum rounding precision.\n"
-#endif
-" -nearesteven --Only test rounding to nearest/even.\n"
-" -tozero --Only test rounding to zero.\n"
-" -down --Only test rounding down.\n"
-" -up --Only test rounding up.\n"
-" -tininessbefore --Underflow tininess detected before rounding.\n"
-" -tininessafter --Underflow tininess detected after rounding.\n"
-" <function>:\n"
-" int32_to_<float> <float>_add <float>_eq\n"
-" <float>_to_int32 <float>_sub <float>_le\n"
-" <float>_to_int32_round_to_zero <float>_mul <float>_lt\n"
-#ifdef BITS64
-" int64_to_<float> <float>_div <float>_eq_signaling\n"
-" <float>_to_int64 <float>_rem <float>_le_quiet\n"
-" <float>_to_int64_round_to_zero <float>_lt_quiet\n"
-" <float>_to_<float>\n"
-" <float>_round_to_int\n"
-" <float>_sqrt\n"
-#else
-" <float>_to_<float> <float>_div <float>_eq_signaling\n"
-" <float>_round_to_int <float>_rem <float>_le_quiet\n"
-" <float>_sqrt <float>_lt_quiet\n"
-#endif
-" -all1 --All 1-operand functions.\n"
-" -all2 --All 2-operand functions.\n"
-" -all --All functions.\n"
-" <float>:\n"
-" float32 --Single precision.\n"
-" float64 --Double precision.\n"
-#ifdef FLOATX80
-" floatx80 --Extended double precision.\n"
-#endif
-#ifdef FLOAT128
-" float128 --Quadruple precision.\n"
-#endif
- ,
- stdout
- );
- return EXIT_SUCCESS;
- }
- else if ( strcmp( argPtr, "list" ) == 0 ) {
- for ( functionCode = 1;
- functionCode < NUM_FUNCTIONS;
- ++functionCode
- ) {
- if ( functionExists[ functionCode ] ) {
- puts( functions[ functionCode ].name );
- }
- }
- return EXIT_SUCCESS;
- }
- else if ( strcmp( argPtr, "level" ) == 0 ) {
- if ( argc < 2 ) goto optionError;
- testCases_setLevel( atoi( argv[ 1 ] ) );
- --argc;
- ++argv;
- }
- else if ( strcmp( argPtr, "level1" ) == 0 ) {
- testCases_setLevel( 1 );
- }
- else if ( strcmp( argPtr, "level2" ) == 0 ) {
- testCases_setLevel( 2 );
- }
- else if ( strcmp( argPtr, "errors" ) == 0 ) {
- if ( argc < 2 ) {
- optionError:
- fail( "`%s' option requires numeric argument", argv[ 0 ] );
- }
- maxErrorCount = atoi( argv[ 1 ] );
- --argc;
- ++argv;
- }
- else if ( strcmp( argPtr, "errorstop" ) == 0 ) {
- errorStop = TRUE;
- }
- else if ( strcmp( argPtr, "forever" ) == 0 ) {
- testCases_setLevel( 2 );
- forever = TRUE;
- }
- else if ( ( strcmp( argPtr, "checkNaNs" ) == 0 )
- || ( strcmp( argPtr, "checknans" ) == 0 ) ) {
- checkNaNs = TRUE;
- }
-#ifdef FLOATX80
- else if ( strcmp( argPtr, "precision32" ) == 0 ) {
- roundingPrecision = 32;
- }
- else if ( strcmp( argPtr, "precision64" ) == 0 ) {
- roundingPrecision = 64;
- }
- else if ( strcmp( argPtr, "precision80" ) == 0 ) {
- roundingPrecision = 80;
- }
-#endif
- else if ( ( strcmp( argPtr, "nearesteven" ) == 0 )
- || ( strcmp( argPtr, "nearest_even" ) == 0 ) ) {
- roundingMode = ROUND_NEAREST_EVEN;
- }
- else if ( ( strcmp( argPtr, "tozero" ) == 0 )
- || ( strcmp( argPtr, "to_zero" ) == 0 ) ) {
- roundingMode = ROUND_TO_ZERO;
- }
- else if ( strcmp( argPtr, "down" ) == 0 ) {
- roundingMode = ROUND_DOWN;
- }
- else if ( strcmp( argPtr, "up" ) == 0 ) {
- roundingMode = ROUND_UP;
- }
- else if ( strcmp( argPtr, "tininessbefore" ) == 0 ) {
- float_detect_tininess = float_tininess_before_rounding;
- }
- else if ( strcmp( argPtr, "tininessafter" ) == 0 ) {
- float_detect_tininess = float_tininess_after_rounding;
- }
- else if ( strcmp( argPtr, "all1" ) == 0 ) {
- functionArgument = TRUE;
- functionCode = 0;
- operands = 1;
- }
- else if ( strcmp( argPtr, "all2" ) == 0 ) {
- functionArgument = TRUE;
- functionCode = 0;
- operands = 2;
- }
- else if ( strcmp( argPtr, "all" ) == 0 ) {
- functionArgument = TRUE;
- functionCode = 0;
- operands = 0;
- }
- else {
- for ( functionCode = 1;
- functionCode < NUM_FUNCTIONS;
- ++functionCode
- ) {
- if ( strcmp( argPtr, functions[ functionCode ].name ) == 0 ) {
- break;
- }
- }
- if ( functionCode == NUM_FUNCTIONS ) {
- fail( "Invalid option or function `%s'", argv[ 0 ] );
- }
- if ( ! functionExists[ functionCode ] ) {
- fail(
- "Function `%s' is not supported or cannot be tested",
- argPtr
- );
- }
- functionArgument = TRUE;
- }
- --argc;
- ++argv;
- }
- if ( ! functionArgument ) fail( "Function argument required" );
- (void) signal( SIGINT, catchSIGINT );
- (void) signal( SIGTERM, catchSIGINT );
- if ( functionCode ) {
- if ( forever ) {
- if ( ! roundingPrecision ) roundingPrecision = 80;
- if ( ! roundingMode ) roundingMode = ROUND_NEAREST_EVEN;
- }
- testFunction( functionCode, roundingPrecision, roundingMode );
- }
- else {
- if ( forever ) {
- fail( "Can only test one function with `-forever' option" );
- }
- if ( operands == 1 ) {
- for ( functionCode = 1;
- functionCode < NUM_FUNCTIONS;
- ++functionCode
- ) {
- if ( functionExists[ functionCode ]
- && ( functions[ functionCode ].numInputs == 1 ) ) {
- testFunction(
- functionCode, roundingPrecision, roundingMode );
- }
- }
- }
- else if ( operands == 2 ) {
- for ( functionCode = 1;
- functionCode < NUM_FUNCTIONS;
- ++functionCode
- ) {
- if ( functionExists[ functionCode ]
- && ( functions[ functionCode ].numInputs == 2 ) ) {
- testFunction(
- functionCode, roundingPrecision, roundingMode );
- }
- }
- }
- else {
- for ( functionCode = 1;
- functionCode < NUM_FUNCTIONS;
- ++functionCode
- ) {
- if ( functionExists[ functionCode ] ) {
- testFunction(
- functionCode, roundingPrecision, roundingMode );
- }
- }
- }
- }
- exitWithStatus();
-
-}
-
diff --git a/tools/test/testfloat/testfloat.txt b/tools/test/testfloat/testfloat.txt
deleted file mode 100644
index 3c5e837d7bd9..000000000000
--- a/tools/test/testfloat/testfloat.txt
+++ /dev/null
@@ -1,771 +0,0 @@
-
-TestFloat Release 2a General Documentation
-
-John R. Hauser
-1998 December 16
-
-
--------------------------------------------------------------------------------
-Introduction
-
-TestFloat is a program for testing that a floating-point implementation
-conforms to the IEC/IEEE Standard for Binary Floating-Point Arithmetic.
-All standard operations supported by the system can be tested, except for
-conversions to and from decimal. Any of the following machine formats can
-be tested: single precision, double precision, extended double precision,
-and/or quadruple precision.
-
-TestFloat actually comes in two variants: one is a program for testing
-a machine's floating-point, and the other is a program for testing
-the SoftFloat software implementation of floating-point. (Information
-about SoftFloat can be found at the SoftFloat Web page, `http://
-HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/SoftFloat.html'.) The version that
-tests SoftFloat is expected to be of interest only to people compiling the
-SoftFloat sources. However, because the two versions share much in common,
-they are discussed together in all the TestFloat documentation.
-
-This document explains how to use the TestFloat programs. It does not
-attempt to define or explain the IEC/IEEE Standard for floating-point.
-Details about the standard are available elsewhere.
-
-The first release of TestFloat (Release 1) was called _FloatTest_. The old
-name has been obsolete for some time.
-
-
--------------------------------------------------------------------------------
-Limitations
-
-TestFloat's output is not always easily interpreted. Detailed knowledge
-of the IEC/IEEE Standard and its vagaries is needed to use TestFloat
-responsibly.
-
-TestFloat performs relatively simple tests designed to check the fundamental
-soundness of the floating-point under test. TestFloat may also at times
-manage to find rarer and more subtle bugs, but it will probably only find
-such bugs by accident. Software that purposefully seeks out various kinds
-of subtle floating-point bugs can be found through links posted on the
-TestFloat Web page (`http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/
-TestFloat.html').
-
-
--------------------------------------------------------------------------------
-Contents
-
- Introduction
- Limitations
- Contents
- Legal Notice
- What TestFloat Does
- Executing TestFloat
- Functions Tested by TestFloat
- Conversion Functions
- Standard Arithmetic Functions
- Remainder and Round-to-Integer Functions
- Comparison Functions
- Interpreting TestFloat Output
- Variations Allowed by the IEC/IEEE Standard
- Underflow
- NaNs
- Conversions to Integer
- TestFloat Options
- -help
- -list
- -level <num>
- -errors <num>
- -errorstop
- -forever
- -checkNaNs
- -precision32, -precision64, -precision80
- -nearesteven, -tozero, -down, -up
- -tininessbefore, -tininessafter
- Function Sets
- Contact Information
-
-
-
--------------------------------------------------------------------------------
-Legal Notice
-
-TestFloat was written by John R. Hauser.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-
--------------------------------------------------------------------------------
-What TestFloat Does
-
-TestFloat tests a system's floating-point by comparing its behavior with
-that of TestFloat's own internal floating-point implemented in software.
-For each operation tested, TestFloat generates a large number of test cases,
-made up of simple pattern tests intermixed with weighted random inputs.
-The cases generated should be adequate for testing carry chain propagations,
-plus the rounding of adds, subtracts, multiplies, and simple operations like
-conversions. TestFloat makes a point of checking all boundary cases of the
-arithmetic, including underflows, overflows, invalid operations, subnormal
-inputs, zeros (positive and negative), infinities, and NaNs. For the
-interesting operations like adds and multiplies, literally millions of test
-cases can be checked.
-
-TestFloat is not remarkably good at testing difficult rounding cases for
-divisions and square roots. It also makes no attempt to find bugs specific
-to SRT divisions and the like (such as the infamous Pentium divide bug).
-Software that tests for such failures can be found through links on the
-TestFloat Web page, `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/
-TestFloat.html'.
-
-NOTE!
-It is the responsibility of the user to verify that the discrepancies
-TestFloat finds actually represent faults in the system being tested.
-Advice to help with this task is provided later in this document.
-Furthermore, even if TestFloat finds no fault with a floating-point
-implementation, that in no way guarantees that the implementation is bug-
-free.
-
-For each operation, TestFloat can test all four rounding modes required
-by the IEC/IEEE Standard. TestFloat verifies not only that the numeric
-results of an operation are correct, but also that the proper floating-point
-exception flags are raised. All five exception flags are tested, including
-the inexact flag. TestFloat does not attempt to verify that the floating-
-point exception flags are actually implemented as sticky flags.
-
-For machines that implement extended double precision with rounding
-precision control (such as Intel's 80x86), TestFloat can test the add,
-subtract, multiply, divide, and square root functions at all the standard
-rounding precisions. The rounding precision can be set equivalent to single
-precision, to double precision, or to the full extended double precision.
-Rounding precision control can only be applied to the extended double-
-precision format and only for the five standard arithmetic operations: add,
-subtract, multiply, divide, and square root. Other functions can be tested
-only at full precision.
-
-As a rule, TestFloat is not particular about the bit patterns of NaNs that
-appear as function results. Any NaN is considered as good a result as
-another. This laxness can be overridden so that TestFloat checks for
-particular bit patterns within NaN results. See the sections _Variations_
-_Allowed_by_the_IEC/IEEE_Standard_ and _TestFloat_Options_ for details.
-
-Not all IEC/IEEE Standard functions are supported by all machines.
-TestFloat can only test functions that exist on the machine. But even if
-a function is supported by the machine, TestFloat may still not be able
-to test the function if it is not accessible through standard ISO C (the
-programming language in which TestFloat is written) and if the person who
-compiled TestFloat did not provide an alternate means for TestFloat to
-invoke the machine function.
-
-TestFloat compares a machine's floating-point against the SoftFloat software
-implementation of floating-point, also written by me. SoftFloat is built
-into the TestFloat executable and does not need to be supplied by the user.
-If SoftFloat is wanted for some other reason (to compile a new version
-of TestFloat, for instance), it can be found separately at the Web page
-`http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/SoftFloat.html'.
-
-For testing SoftFloat itself, the TestFloat package includes a program that
-compares SoftFloat's floating-point against _another_ software floating-
-point implementation. The second software floating-point is simpler and
-slower than SoftFloat, and is completely independent of SoftFloat. Although
-the second software floating-point cannot be guaranteed to be bug-free, the
-chance that it would mimic any of SoftFloat's bugs is remote. Consequently,
-an error in one or the other floating-point version should appear as an
-unexpected discrepancy between the two implementations. Note that testing
-SoftFloat should only be necessary when compiling a new TestFloat executable
-or when compiling SoftFloat for some other reason.
-
-
--------------------------------------------------------------------------------
-Executing TestFloat
-
-TestFloat is intended to be executed from a command line interpreter. The
-`testfloat' program is invoked as follows:
-
- testfloat [<option>...] <function>
-
-Here square brackets ([]) indicate optional items, while angled brackets
-(<>) denote parameters to be filled in.
-
-The `<function>' argument is a name like `float32_add' or `float64_to_int32'.
-The complete list of function names is given in the next section,
-_Functions_Tested_by_TestFloat_. It is also possible to test all machine
-functions in a single invocation. The various options to TestFloat are
-detailed in the section _TestFloat_Options_ later in this document. If
-`testfloat' is executed without any arguments, a summary of TestFloat usage
-is written.
-
-TestFloat will ordinarily test a function for all four rounding modes, one
-after the other. If the rounding mode is not supposed to have any affect
-on the results--for instance, some operations do not require rounding--only
-the nearest/even rounding mode is checked. For extended double-precision
-operations affected by rounding precision control, TestFloat also tests all
-three rounding precision modes, one after the other. Testing can be limited
-to a single rounding mode and/or rounding precision with appropriate options
-(see _TestFloat_Options_).
-
-As it executes, TestFloat writes status information to the standard error
-output, which should be the screen by default. In order for this status to
-be displayed properly, the standard error stream should not be redirected
-to a file. The discrepancies TestFloat finds are written to the standard
-output stream, which is easily redirected to a file if desired. Ordinarily,
-the errors TestFloat reports and the ongoing status information appear
-intermixed on the same screen.
-
-The version of TestFloat for testing SoftFloat is called `testsoftfloat'.
-It is invoked the same as `testfloat',
-
- testsoftfloat [<option>...] <function>
-
-and operates similarly.
-
-
--------------------------------------------------------------------------------
-Functions Tested by TestFloat
-
-TestFloat tests all operations required by the IEC/IEEE Standard except for
-conversions to and from decimal. The operations are
-
--- Conversions among the supported floating-point formats, and also between
- integers (32-bit and 64-bit) and any of the floating-point formats.
-
--- The usual add, subtract, multiply, divide, and square root operations
- for all supported floating-point formats.
-
--- For each format, the floating-point remainder operation defined by the
- IEC/IEEE Standard.
-
--- For each floating-point format, a ``round to integer'' operation that
- rounds to the nearest integer value in the same format. (The floating-
- point formats can hold integer values, of course.)
-
--- Comparisons between two values in the same floating-point format.
-
-Detailed information about these functions is given below. In the function
-names used by TestFloat, single precision is called `float32', double
-precision is `float64', extended double precision is `floatx80', and
-quadruple precision is `float128'. TestFloat uses the same names for
-functions as SoftFloat.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Conversion Functions
-
-All conversions among the floating-point formats and all conversion between
-a floating-point format and 32-bit and 64-bit signed integers can be tested.
-The conversion functions are:
-
- int32_to_float32 int64_to_float32
- int32_to_float64 int64_to_float32
- int32_to_floatx80 int64_to_floatx80
- int32_to_float128 int64_to_float128
-
- float32_to_int32 float32_to_int64
- float32_to_int32 float64_to_int64
- floatx80_to_int32 floatx80_to_int64
- float128_to_int32 float128_to_int64
-
- float32_to_float64 float32_to_floatx80 float32_to_float128
- float64_to_float32 float64_to_floatx80 float64_to_float128
- floatx80_to_float32 floatx80_to_float64 floatx80_to_float128
- float128_to_float32 float128_to_float64 float128_to_floatx80
-
-These conversions all round according to the current rounding mode as
-necessary. Conversions from a smaller to a larger floating-point format are
-always exact and so require no rounding. Conversions from 32-bit integers
-to double precision or to any larger floating-point format are also exact,
-and likewise for conversions from 64-bit integers to extended double and
-quadruple precisions.
-
-ISO/ANSI C requires that conversions to integers be rounded toward zero.
-Such conversions can be tested with the following functions that ignore any
-rounding mode:
-
- float32_to_int32_round_to_zero float32_to_int64_round_to_zero
- float64_to_int32_round_to_zero float64_to_int64_round_to_zero
- floatx80_to_int32_round_to_zero floatx80_to_int64_round_to_zero
- float128_to_int32_round_to_zero float128_to_int64_round_to_zero
-
-TestFloat assumes that conversions from floating-point to integer should
-raise the invalid exception if the source value cannot be rounded to a
-representable integer of the desired size (32 or 64 bits). If such a
-conversion overflows, TestFloat expects the largest integer with the same
-sign as the operand to be returned. If the floating-point operand is a NaN,
-TestFloat allows either the largest positive or largest negative integer to
-be returned.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Standard Arithmetic Functions
-
-The following standard arithmetic functions can be tested:
-
- float32_add float32_sub float32_mul float32_div float32_sqrt
- float64_add float64_sub float64_mul float64_div float64_sqrt
- floatx80_add floatx80_sub floatx80_mul floatx80_div floatx80_sqrt
- float128_add float128_sub float128_mul float128_div float128_sqrt
-
-The extended double-precision (`floatx80') functions can be rounded to
-reduced precision under rounding precision control.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Remainder and Round-to-Integer Functions
-
-For each format, TestFloat can test the IEC/IEEE Standard remainder and
-round-to-integer functions. The remainder functions are:
-
- float32_rem
- float64_rem
- floatx80_rem
- float128_rem
-
-The round-to-integer functions are:
-
- float32_round_to_int
- float64_round_to_int
- floatx80_round_to_int
- float128_round_to_int
-
-The remainder functions are always exact and so do not require rounding.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Comparison Functions
-
-The following floating-point comparison functions can be tested:
-
- float32_eq float32_le float32_lt
- float64_eq float64_le float64_lt
- floatx80_eq floatx80_le floatx80_lt
- float128_eq float128_le float128_lt
-
-The abbreviation `eq' stands for ``equal'' (=); `le' stands for ``less than
-or equal'' (<=); and `lt' stands for ``less than'' (<).
-
-The IEC/IEEE Standard specifies that the less-than-or-equal and less-than
-functions raise the invalid exception if either input is any kind of NaN.
-The equal functions, for their part, are defined not to raise the invalid
-exception on quiet NaNs. For completeness, the following additional
-functions can be tested if supported:
-
- float32_eq_signaling float32_le_quiet float32_lt_quiet
- float64_eq_signaling float64_le_quiet float64_lt_quiet
- floatx80_eq_signaling floatx80_le_quiet floatx80_lt_quiet
- float128_eq_signaling float128_le_quiet float128_lt_quiet
-
-The `signaling' equal functions are identical to the standard functions
-except that the invalid exception should be raised for any NaN input.
-Likewise, the `quiet' comparison functions should be identical to their
-counterparts except that the invalid exception is not raised for quiet NaNs.
-
-Obviously, no comparison functions ever require rounding. Any rounding mode
-is ignored.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
--------------------------------------------------------------------------------
-Interpreting TestFloat Output
-
-The ``errors'' reported by TestFloat may or may not really represent errors
-in the system being tested. For each test case tried, TestFloat performs
-the same floating-point operation for the two implementations being compared
-and reports any unexpected difference in the results. The two results could
-differ for several reasons:
-
--- The IEC/IEEE Standard allows for some variation in how conforming
- floating-point behaves. Two implementations can occasionally give
- different results without either being incorrect.
-
--- The trusted floating-point emulation could be faulty. This could be
- because there is a bug in the way the enulation is coded, or because a
- mistake was made when the code was compiled for the current system.
-
--- TestFloat may not work properly, reporting discrepancies that do not
- exist.
-
--- Lastly, the floating-point being tested could actually be faulty.
-
-It is the responsibility of the user to determine the causes for the
-discrepancies TestFloat reports. Making this determination can require
-detailed knowledge about the IEC/IEEE Standard. Assuming TestFloat is
-working properly, any differences found will be due to either the first or
-last of these reasons. Variations in the IEC/IEEE Standard that could lead
-to false error reports are discussed in the section _Variations_Allowed_by_
-_the_IEC/IEEE_Standard_.
-
-For each error (or apparent error) TestFloat reports, a line of text
-is written to the default output. If a line would be longer than 79
-characters, it is divided. The first part of each error line begins in the
-leftmost column, and any subsequent ``continuation'' lines are indented with
-a tab.
-
-Each error reported by `testfloat' is of the form:
-
- <inputs> soft: <output-from-emulation> syst: <output-from-system>
-
-The `<inputs>' are the inputs to the operation. Each output is shown as a
-pair: the result value first, followed by the exception flags. The `soft'
-label stands for ``software'' (or ``SoftFloat''), while `syst' stands for
-``system,'' the machine's floating-point.
-
-For example, two typical error lines could be
-
- 800.7FFF00 87F.000100 soft: 001.000000 ....x syst: 001.000000 ...ux
- 081.000004 000.1FFFFF soft: 001.000000 ....x syst: 001.000000 ...ux
-
-In the first line, the inputs are `800.7FFF00' and `87F.000100'. The
-internal emulation result is `001.000000' with flags `....x', and the
-system result is the same but with flags `...ux'. All the items composed of
-hexadecimal digits and a single period represent floating-point values (here
-single precision). These cases were reported as errors because the flag
-results differ.
-
-In addition to the exception flags, there are seven data types that may
-be represented. Four are floating-point types: single precision, double
-precision, extended double precision, and quadruple precision. The
-remaining three types are 32-bit and 64-bit two's-complement integers and
-Boolean values (the results of comparison operations). Boolean values are
-represented as a single character, either a `0' or a `1'. 32-bit integers
-are written as 8 hexadecimal digits in two's-complement form. Thus,
-`FFFFFFFF' is -1, and `7FFFFFFF' is the largest positive 32-bit integer.
-64-bit integers are the same except with 16 hexadecimal digits.
-
-Floating-point values are written in a correspondingly primitive form.
-Double-precision values are represented by 16 hexadecimal digits that give
-the raw bits of the floating-point encoding. A period separates the 3rd and
-4th hexadecimal digits to mark the division between the exponent bits and
-fraction bits. Some notable double-precision values include:
-
- 000.0000000000000 +0
- 3FF.0000000000000 1
- 400.0000000000000 2
- 7FF.0000000000000 +infinity
-
- 800.0000000000000 -0
- BFF.0000000000000 -1
- C00.0000000000000 -2
- FFF.0000000000000 -infinity
-
- 3FE.FFFFFFFFFFFFF largest representable number preceding +1
-
-The following categories are easily distinguished (assuming the `x's are not
-all 0):
-
- 000.xxxxxxxxxxxxx positive subnormal (denormalized) numbers
- 7FF.xxxxxxxxxxxxx positive NaNs
- 800.xxxxxxxxxxxxx negative subnormal numbers
- FFF.xxxxxxxxxxxxx negative NaNs
-
-Quadruple-precision values are written the same except with 4 hexadecimal
-digits for the sign and exponent and 28 for the fraction. Notable values
-include:
-
- 0000.0000000000000000000000000000 +0
- 3FFF.0000000000000000000000000000 1
- 4000.0000000000000000000000000000 2
- 7FFF.0000000000000000000000000000 +infinity
-
- 8000.0000000000000000000000000000 -0
- BFFF.0000000000000000000000000000 -1
- C000.0000000000000000000000000000 -2
- FFFF.0000000000000000000000000000 -infinity
-
- 3FFE.FFFFFFFFFFFFFFFFFFFFFFFFFFFF largest representable number
- preceding +1
-
-Extended double-precision values are a little unusual in that the leading
-significand bit is not hidden as with other formats. When correctly
-encoded, the leading significand bit of an extended double-precision value
-will be 0 if the value is zero or subnormal, and will be 1 otherwise.
-Hence, the same values listed above appear in extended double-precision as
-follows (note the leading `8' digit in the significands):
-
- 0000.0000000000000000 +0
- 3FFF.8000000000000000 1
- 4000.8000000000000000 2
- 7FFF.8000000000000000 +infinity
-
- 8000.0000000000000000 -0
- BFFF.8000000000000000 -1
- C000.8000000000000000 -2
- FFFF.8000000000000000 -infinity
-
- 3FFE.FFFFFFFFFFFFFFFF largest representable number preceding +1
-
-The representation of single-precision values is unusual for a different
-reason. Because the subfields of standard single-precision do not fall
-on neat 4-bit boundaries, single-precision outputs are slightly perturbed.
-These are written as 9 hexadecimal digits, with a period separating the 3rd
-and 4th hexadecimal digits. Broken out into bits, the 9 hexademical digits
-cover the single-precision subfields as follows:
-
- x000 .... .... . .... .... .... .... .... .... sign (1 bit)
- .... xxxx xxxx . .... .... .... .... .... .... exponent (8 bits)
- .... .... .... . 0xxx xxxx xxxx xxxx xxxx xxxx fraction (23 bits)
-
-As shown in this schematic, the first hexadecimal digit contains only
-the sign, and will be either `0' or `8'. The next two digits give the
-biased exponent as an 8-bit integer. This is followed by a period and
-6 hexadecimal digits of fraction. The most significant hexadecimal digit
-of the fraction can be at most a `7'.
-
-Notable single-precision values include:
-
- 000.000000 +0
- 07F.000000 1
- 080.000000 2
- 0FF.000000 +infinity
-
- 800.000000 -0
- 87F.000000 -1
- 880.000000 -2
- 8FF.000000 -infinity
-
- 07E.7FFFFF largest representable number preceding +1
-
-Again, certain categories are easily distinguished (assuming the `x's are
-not all 0):
-
- 000.xxxxxx positive subnormal (denormalized) numbers
- 0FF.xxxxxx positive NaNs
- 800.xxxxxx negative subnormal numbers
- 8FF.xxxxxx negative NaNs
-
-Lastly, exception flag values are represented by five characters, one
-character per flag. Each flag is written as either a letter or a period
-(`.') according to whether the flag was set or not by the operation. A
-period indicates the flag was not set. The letter used to indicate a set
-flag depends on the flag:
-
- v invalid flag
- z division-by-zero flag
- o overflow flag
- u underflow flag
- x inexact flag
-
-For example, the notation `...ux' indicates that the underflow and inexact
-exception flags were set and that the other three flags (invalid, division-
-by-zero, and overflow) were not set. The exception flags are always shown
-following the value returned as the result of the operation.
-
-The output from `testsoftfloat' is of the same form, except that the results
-are labeled `true' and `soft':
-
- <inputs> true: <simple-software-result> soft: <SoftFloat-result>
-
-The ``true'' result is from the simpler, slower software floating-point,
-which, although not necessarily correct, is more likely to be right than
-the SoftFloat (`soft') result.
-
-
--------------------------------------------------------------------------------
-Variations Allowed by the IEC/IEEE Standard
-
-The IEC/IEEE Standard admits some variation among conforming
-implementations. Because TestFloat expects the two implementations being
-compared to deliver bit-for-bit identical results under most circumstances,
-this leeway in the standard can result in false errors being reported if
-the two implementations do not make the same choices everywhere the standard
-provides an option.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Underflow
-
-The standard specifies that the underflow exception flag is to be raised
-when two conditions are met simultaneously: (1) _tininess_ and (2) _loss_
-_of_accuracy_. A result is tiny when its magnitude is nonzero yet smaller
-than any normalized floating-point number. The standard allows tininess to
-be determined either before or after a result is rounded to the destination
-precision. If tininess is detected before rounding, some borderline cases
-will be flagged as underflows even though the result after rounding actually
-lies within the normal floating-point range. By detecting tininess after
-rounding, a system can avoid some unnecessary signaling of underflow.
-
-Loss of accuracy occurs when the subnormal format is not sufficient
-to represent an underflowed result accurately. The standard allows
-loss of accuracy to be detected either as an _inexact_result_ or as a
-_denormalization_loss_. If loss of accuracy is detected as an inexact
-result, the underflow flag is raised whenever an underflowed quantity
-cannot be exactly represented in the subnormal format (that is, whenever the
-inexact flag is also raised). A denormalization loss, on the other hand,
-occurs only when the subnormal format is not able to represent the result
-that would have been returned if the destination format had infinite range.
-Some underflowed results are inexact but do not suffer a denormalization
-loss. By detecting loss of accuracy as a denormalization loss, a system can
-once again avoid some unnecessary signaling of underflow.
-
-The `-tininessbefore' and `-tininessafter' options can be used to control
-whether TestFloat expects tininess on underflow to be detected before or
-after rounding. (See _TestFloat_Options_ below.) One or the other is
-selected as the default when TestFloat is compiled, but these command
-options allow the default to be overridden.
-
-Most (possibly all) systems detect loss of accuracy as an inexact result.
-The current version of TestFloat can only test for this case.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-NaNs
-
-The IEC/IEEE Standard gives the floating-point formats a large number of
-NaN encodings and specifies that NaNs are to be returned as results under
-certain conditions. However, the standard allows an implementation almost
-complete freedom over _which_ NaN to return in each situation.
-
-By default, TestFloat does not check the bit patterns of NaN results. When
-the result of an operation should be a NaN, any NaN is considered as good
-as another. This laxness can be overridden with the `-checkNaNs' option.
-(See _TestFloat_Options_ below.) In order for this option to be sensible,
-TestFloat must have been compiled so that its internal floating-point
-implementation (SoftFloat) generates the proper NaN results for the system
-being tested.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Conversions to Integer
-
-Conversion of a floating-point value to an integer format will fail if the
-source value is a NaN or if it is too large. The IEC/IEEE Standard does not
-specify what value should be returned as the integer result in these cases.
-Moreover, according to the standard, the invalid exception can be raised or
-an unspecified alternative mechanism may be used to signal such cases.
-
-TestFloat assumes that conversions to integer will raise the invalid
-exception if the source value cannot be rounded to a representable integer.
-When the conversion overflows, TestFloat expects the largest integer with
-the same sign as the operand to be returned. If the floating-point operand
-is a NaN, TestFloat allows either the largest positive or largest negative
-integer to be returned. The current version of TestFloat provides no means
-to alter these conventions.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
--------------------------------------------------------------------------------
-TestFloat Options
-
-The `testfloat' (and `testsoftfloat') program accepts several command
-options. If mutually contradictory options are given, the last one has
-priority.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--help
-
-The `-help' option causes a summary of program usage to be written, after
-which the program exits.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--list
-
-The `-list' option causes a list of testable functions to be written,
-after which the program exits. Some machines do not implement all of the
-functions TestFloat can test, plus it may not be possible to test functions
-that are inaccessible from the C language.
-
-The `testsoftfloat' program does not have this option. All SoftFloat
-functions can be tested by `testsoftfloat'.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--level <num>
-
-The `-level' option sets the level of testing. The argument to `-level' can
-be either 1 or 2. The default is level 1. Level 2 performs many more tests
-than level 1. Testing at level 2 can take as much as a day (even longer for
-`testsoftfloat'), but can reveal bugs not found by level 1.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--errors <num>
-
-The `-errors' option instructs TestFloat to report no more than the
-specified number of errors for any combination of function, rounding mode,
-etc. The argument to `-errors' must be a nonnegative decimal number. Once
-the specified number of error reports has been generated, TestFloat ends the
-current test and begins the next one, if any. The default is `-errors 20'.
-
-Against intuition, `-errors 0' causes TestFloat to report every error it
-finds.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--errorstop
-
-The `-errorstop' option causes the program to exit after the first function
-for which any errors are reported.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--forever
-
-The `-forever' option causes a single operation to be repeatedly tested.
-Only one rounding mode and/or rounding precision can be tested in a single
-invocation. If not specified, the rounding mode defaults to nearest/even.
-For extended double-precision operations, the rounding precision defaults
-to full extended double precision. The testing level is set to 2 by this
-option.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--checkNaNs
-
-The `-checkNaNs' option causes TestFloat to verify the bitwise correctness
-of NaN results. In order for this option to be sensible, TestFloat must
-have been compiled so that its internal floating-point implementation
-(SoftFloat) generates the proper NaN results for the system being tested.
-
-This option is not available to `testsoftfloat'.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--precision32, -precision64, -precision80
-
-For extended double-precision functions affected by rounding precision
-control, the `-precision32' option restricts testing to only the cases
-in which rounding precision is equivalent to single precision. The other
-rounding precision options are not tested. Likewise, the `-precision64'
-and `-precision80' options fix the rounding precision equivalent to double
-precision or extended double precision, respectively. These options are
-ignored for functions not affected by rounding precision control.
-
-These options are not available if extended double precision is not
-supported by the machine or if extended double precision functions cannot be
-tested.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--nearesteven, -tozero, -down, -up
-
-The `-nearesteven' option restricts testing to only the cases in which the
-rounding mode is nearest/even. The other rounding mode options are not
-tested. Likewise, `-tozero' forces rounding to zero; `-down' forces
-rounding down; and `-up' forces rounding up. These options are ignored for
-functions that are exact and thus do not round.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--tininessbefore, -tininessafter
-
-The `-tininessbefore' option indicates that the system detects tininess
-on underflow before rounding. The `-tininessafter' option indicates that
-tininess is detected after rounding. TestFloat alters its expectations
-accordingly. These options override the default selected when TestFloat was
-compiled. Choosing the wrong one of these two options should cause error
-reports for some (not all) functions.
-
-For `testsoftfloat', these options operate more like the rounding precision
-and rounding mode options, in that they restrict the tests performed by
-`testsoftfloat'. By default, `testsoftfloat' tests both cases for any
-function for which there is a difference.
-
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
--------------------------------------------------------------------------------
-Function Sets
-
-Just as TestFloat can test an operation for all four rounding modes in
-sequence, multiple operations can be tested with a single invocation of
-TestFloat. Three sets are recognized: `-all1', `-all2', and `-all'. The
-set `-all1' comprises all one-operand functions; `-all2' is all two-operand
-functions; and `-all' is all functions. A function set can be used in place
-of a function name in the TestFloat command line, such as
-
- testfloat [<option>...] -all
-
-
--------------------------------------------------------------------------------
-Contact Information
-
-At the time of this writing, the most up-to-date information about
-TestFloat and the latest release can be found at the Web page `http://
-HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-
diff --git a/tools/test/testfloat/testsoftfloat.c b/tools/test/testfloat/testsoftfloat.c
deleted file mode 100644
index 2689ee38777a..000000000000
--- a/tools/test/testfloat/testsoftfloat.c
+++ /dev/null
@@ -1,1044 +0,0 @@
-
-/*
-===============================================================================
-
-This C source file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stdlib.h>
-#include <signal.h>
-#include <string.h>
-#include "milieu.h"
-#include "fail.h"
-#include "softfloat.h"
-#include "slowfloat.h"
-#include "testCases.h"
-#include "testLoops.h"
-
-static void catchSIGINT( int signalCode )
-{
-
- if ( stop ) exit( EXIT_FAILURE );
- stop = TRUE;
-
-}
-
-int8 clearFlags( void )
-{
- int8 flags;
-
- flags = float_exception_flags;
- float_exception_flags = 0;
- return flags;
-
-}
-
-enum {
- INT32_TO_FLOAT32 = 1,
- INT32_TO_FLOAT64,
-#ifdef FLOATX80
- INT32_TO_FLOATX80,
-#endif
-#ifdef FLOAT128
- INT32_TO_FLOAT128,
-#endif
-#ifdef BITS64
- INT64_TO_FLOAT32,
- INT64_TO_FLOAT64,
-#ifdef FLOATX80
- INT64_TO_FLOATX80,
-#endif
-#ifdef FLOAT128
- INT64_TO_FLOAT128,
-#endif
-#endif
- FLOAT32_TO_INT32,
- FLOAT32_TO_INT32_ROUND_TO_ZERO,
-#ifdef BITS64
- FLOAT32_TO_INT64,
- FLOAT32_TO_INT64_ROUND_TO_ZERO,
-#endif
- FLOAT32_TO_FLOAT64,
-#ifdef FLOATX80
- FLOAT32_TO_FLOATX80,
-#endif
-#ifdef FLOAT128
- FLOAT32_TO_FLOAT128,
-#endif
- FLOAT32_ROUND_TO_INT,
- FLOAT32_ADD,
- FLOAT32_SUB,
- FLOAT32_MUL,
- FLOAT32_DIV,
- FLOAT32_REM,
- FLOAT32_SQRT,
- FLOAT32_EQ,
- FLOAT32_LE,
- FLOAT32_LT,
- FLOAT32_EQ_SIGNALING,
- FLOAT32_LE_QUIET,
- FLOAT32_LT_QUIET,
- FLOAT64_TO_INT32,
- FLOAT64_TO_INT32_ROUND_TO_ZERO,
-#ifdef BITS64
- FLOAT64_TO_INT64,
- FLOAT64_TO_INT64_ROUND_TO_ZERO,
-#endif
- FLOAT64_TO_FLOAT32,
-#ifdef FLOATX80
- FLOAT64_TO_FLOATX80,
-#endif
-#ifdef FLOAT128
- FLOAT64_TO_FLOAT128,
-#endif
- FLOAT64_ROUND_TO_INT,
- FLOAT64_ADD,
- FLOAT64_SUB,
- FLOAT64_MUL,
- FLOAT64_DIV,
- FLOAT64_REM,
- FLOAT64_SQRT,
- FLOAT64_EQ,
- FLOAT64_LE,
- FLOAT64_LT,
- FLOAT64_EQ_SIGNALING,
- FLOAT64_LE_QUIET,
- FLOAT64_LT_QUIET,
-#ifdef FLOATX80
- FLOATX80_TO_INT32,
- FLOATX80_TO_INT32_ROUND_TO_ZERO,
-#ifdef BITS64
- FLOATX80_TO_INT64,
- FLOATX80_TO_INT64_ROUND_TO_ZERO,
-#endif
- FLOATX80_TO_FLOAT32,
- FLOATX80_TO_FLOAT64,
-#ifdef FLOAT128
- FLOATX80_TO_FLOAT128,
-#endif
- FLOATX80_ROUND_TO_INT,
- FLOATX80_ADD,
- FLOATX80_SUB,
- FLOATX80_MUL,
- FLOATX80_DIV,
- FLOATX80_REM,
- FLOATX80_SQRT,
- FLOATX80_EQ,
- FLOATX80_LE,
- FLOATX80_LT,
- FLOATX80_EQ_SIGNALING,
- FLOATX80_LE_QUIET,
- FLOATX80_LT_QUIET,
-#endif
-#ifdef FLOAT128
- FLOAT128_TO_INT32,
- FLOAT128_TO_INT32_ROUND_TO_ZERO,
-#ifdef BITS64
- FLOAT128_TO_INT64,
- FLOAT128_TO_INT64_ROUND_TO_ZERO,
-#endif
- FLOAT128_TO_FLOAT32,
- FLOAT128_TO_FLOAT64,
-#ifdef FLOATX80
- FLOAT128_TO_FLOATX80,
-#endif
- FLOAT128_ROUND_TO_INT,
- FLOAT128_ADD,
- FLOAT128_SUB,
- FLOAT128_MUL,
- FLOAT128_DIV,
- FLOAT128_REM,
- FLOAT128_SQRT,
- FLOAT128_EQ,
- FLOAT128_LE,
- FLOAT128_LT,
- FLOAT128_EQ_SIGNALING,
- FLOAT128_LE_QUIET,
- FLOAT128_LT_QUIET,
-#endif
- NUM_FUNCTIONS
-};
-static struct {
- char *name;
- int8 numInputs;
- flag roundingPrecision, roundingMode;
- flag tininessMode, tininessModeAtReducedPrecision;
-} functions[ NUM_FUNCTIONS ] = {
- { 0, 0, 0, 0, 0, 0 },
- { "int32_to_float32", 1, FALSE, TRUE, FALSE, FALSE },
- { "int32_to_float64", 1, FALSE, FALSE, FALSE, FALSE },
-#ifdef FLOATX80
- { "int32_to_floatx80", 1, FALSE, FALSE, FALSE, FALSE },
-#endif
-#ifdef FLOAT128
- { "int32_to_float128", 1, FALSE, FALSE, FALSE, FALSE },
-#endif
-#ifdef BITS64
- { "int64_to_float32", 1, FALSE, TRUE, FALSE, FALSE },
- { "int64_to_float64", 1, FALSE, TRUE, FALSE, FALSE },
-#ifdef FLOATX80
- { "int64_to_floatx80", 1, FALSE, FALSE, FALSE, FALSE },
-#endif
-#ifdef FLOAT128
- { "int64_to_float128", 1, FALSE, FALSE, FALSE, FALSE },
-#endif
-#endif
- { "float32_to_int32", 1, FALSE, TRUE, FALSE, FALSE },
- { "float32_to_int32_round_to_zero", 1, FALSE, FALSE, FALSE, FALSE },
-#ifdef BITS64
- { "float32_to_int64", 1, FALSE, TRUE, FALSE, FALSE },
- { "float32_to_int64_round_to_zero", 1, FALSE, FALSE, FALSE, FALSE },
-#endif
- { "float32_to_float64", 1, FALSE, FALSE, FALSE, FALSE },
-#ifdef FLOATX80
- { "float32_to_floatx80", 1, FALSE, FALSE, FALSE, FALSE },
-#endif
-#ifdef FLOAT128
- { "float32_to_float128", 1, FALSE, FALSE, FALSE, FALSE },
-#endif
- { "float32_round_to_int", 1, FALSE, TRUE, FALSE, FALSE },
- { "float32_add", 2, FALSE, TRUE, FALSE, FALSE },
- { "float32_sub", 2, FALSE, TRUE, FALSE, FALSE },
- { "float32_mul", 2, FALSE, TRUE, TRUE, FALSE },
- { "float32_div", 2, FALSE, TRUE, FALSE, FALSE },
- { "float32_rem", 2, FALSE, FALSE, FALSE, FALSE },
- { "float32_sqrt", 1, FALSE, TRUE, FALSE, FALSE },
- { "float32_eq", 2, FALSE, FALSE, FALSE, FALSE },
- { "float32_le", 2, FALSE, FALSE, FALSE, FALSE },
- { "float32_lt", 2, FALSE, FALSE, FALSE, FALSE },
- { "float32_eq_signaling", 2, FALSE, FALSE, FALSE, FALSE },
- { "float32_le_quiet", 2, FALSE, FALSE, FALSE, FALSE },
- { "float32_lt_quiet", 2, FALSE, FALSE, FALSE, FALSE },
- { "float64_to_int32", 1, FALSE, TRUE, FALSE, FALSE },
- { "float64_to_int32_round_to_zero", 1, FALSE, FALSE, FALSE, FALSE },
-#ifdef BITS64
- { "float64_to_int64", 1, FALSE, TRUE, FALSE, FALSE },
- { "float64_to_int64_round_to_zero", 1, FALSE, FALSE, FALSE, FALSE },
-#endif
- { "float64_to_float32", 1, FALSE, TRUE, TRUE, FALSE },
-#ifdef FLOATX80
- { "float64_to_floatx80", 1, FALSE, FALSE, FALSE, FALSE },
-#endif
-#ifdef FLOAT128
- { "float64_to_float128", 1, FALSE, FALSE, FALSE, FALSE },
-#endif
- { "float64_round_to_int", 1, FALSE, TRUE, FALSE, FALSE },
- { "float64_add", 2, FALSE, TRUE, FALSE, FALSE },
- { "float64_sub", 2, FALSE, TRUE, FALSE, FALSE },
- { "float64_mul", 2, FALSE, TRUE, TRUE, FALSE },
- { "float64_div", 2, FALSE, TRUE, FALSE, FALSE },
- { "float64_rem", 2, FALSE, FALSE, FALSE, FALSE },
- { "float64_sqrt", 1, FALSE, TRUE, FALSE, FALSE },
- { "float64_eq", 2, FALSE, FALSE, FALSE, FALSE },
- { "float64_le", 2, FALSE, FALSE, FALSE, FALSE },
- { "float64_lt", 2, FALSE, FALSE, FALSE, FALSE },
- { "float64_eq_signaling", 2, FALSE, FALSE, FALSE, FALSE },
- { "float64_le_quiet", 2, FALSE, FALSE, FALSE, FALSE },
- { "float64_lt_quiet", 2, FALSE, FALSE, FALSE, FALSE },
-#ifdef FLOATX80
- { "floatx80_to_int32", 1, FALSE, TRUE, FALSE, FALSE },
- { "floatx80_to_int32_round_to_zero", 1, FALSE, FALSE, FALSE, FALSE },
-#ifdef BITS64
- { "floatx80_to_int64", 1, FALSE, TRUE, FALSE, FALSE },
- { "floatx80_to_int64_round_to_zero", 1, FALSE, FALSE, FALSE, FALSE },
-#endif
- { "floatx80_to_float32", 1, FALSE, TRUE, TRUE, FALSE },
- { "floatx80_to_float64", 1, FALSE, TRUE, TRUE, FALSE },
-#ifdef FLOAT128
- { "floatx80_to_float128", 1, FALSE, FALSE, FALSE, FALSE },
-#endif
- { "floatx80_round_to_int", 1, FALSE, TRUE, FALSE, FALSE },
- { "floatx80_add", 2, TRUE, TRUE, FALSE, TRUE },
- { "floatx80_sub", 2, TRUE, TRUE, FALSE, TRUE },
- { "floatx80_mul", 2, TRUE, TRUE, TRUE, TRUE },
- { "floatx80_div", 2, TRUE, TRUE, FALSE, TRUE },
- { "floatx80_rem", 2, FALSE, FALSE, FALSE, FALSE },
- { "floatx80_sqrt", 1, TRUE, TRUE, FALSE, FALSE },
- { "floatx80_eq", 2, FALSE, FALSE, FALSE, FALSE },
- { "floatx80_le", 2, FALSE, FALSE, FALSE, FALSE },
- { "floatx80_lt", 2, FALSE, FALSE, FALSE, FALSE },
- { "floatx80_eq_signaling", 2, FALSE, FALSE, FALSE, FALSE },
- { "floatx80_le_quiet", 2, FALSE, FALSE, FALSE, FALSE },
- { "floatx80_lt_quiet", 2, FALSE, FALSE, FALSE, FALSE },
-#endif
-#ifdef FLOAT128
- { "float128_to_int32", 1, FALSE, TRUE, FALSE, FALSE },
- { "float128_to_int32_round_to_zero", 1, FALSE, FALSE, FALSE, FALSE },
-#ifdef BITS64
- { "float128_to_int64", 1, FALSE, TRUE, FALSE, FALSE },
- { "float128_to_int64_round_to_zero", 1, FALSE, FALSE, FALSE, FALSE },
-#endif
- { "float128_to_float32", 1, FALSE, TRUE, TRUE, FALSE },
- { "float128_to_float64", 1, FALSE, TRUE, TRUE, FALSE },
-#ifdef FLOATX80
- { "float128_to_floatx80", 1, FALSE, TRUE, TRUE, FALSE },
-#endif
- { "float128_round_to_int", 1, FALSE, TRUE, FALSE, FALSE },
- { "float128_add", 2, FALSE, TRUE, FALSE, FALSE },
- { "float128_sub", 2, FALSE, TRUE, FALSE, FALSE },
- { "float128_mul", 2, FALSE, TRUE, TRUE, FALSE },
- { "float128_div", 2, FALSE, TRUE, FALSE, FALSE },
- { "float128_rem", 2, FALSE, FALSE, FALSE, FALSE },
- { "float128_sqrt", 1, FALSE, TRUE, FALSE, FALSE },
- { "float128_eq", 2, FALSE, FALSE, FALSE, FALSE },
- { "float128_le", 2, FALSE, FALSE, FALSE, FALSE },
- { "float128_lt", 2, FALSE, FALSE, FALSE, FALSE },
- { "float128_eq_signaling", 2, FALSE, FALSE, FALSE, FALSE },
- { "float128_le_quiet", 2, FALSE, FALSE, FALSE, FALSE },
- { "float128_lt_quiet", 2, FALSE, FALSE, FALSE, FALSE },
-#endif
-};
-
-enum {
- ROUND_NEAREST_EVEN = 1,
- ROUND_TO_ZERO,
- ROUND_DOWN,
- ROUND_UP,
- NUM_ROUNDINGMODES
-};
-enum {
- TININESS_BEFORE_ROUNDING = 1,
- TININESS_AFTER_ROUNDING,
- NUM_TININESSMODES
-};
-
-static void
- testFunctionVariety(
- uint8 functionCode,
- int8 roundingPrecision,
- int8 roundingMode,
- int8 tininessMode
- )
-{
- uint8 roundingCode;
- int8 tininessCode;
-
- functionName = functions[ functionCode ].name;
- if ( roundingPrecision == 32 ) {
- roundingPrecisionName = "32";
- }
- else if ( roundingPrecision == 64 ) {
- roundingPrecisionName = "64";
- }
- else if ( roundingPrecision == 80 ) {
- roundingPrecisionName = "80";
- }
- else {
- roundingPrecisionName = 0;
- }
-#ifdef FLOATX80
- floatx80_rounding_precision = roundingPrecision;
- slow_floatx80_rounding_precision = roundingPrecision;
-#endif
- switch ( roundingMode ) {
- default:
- roundingModeName = 0;
- roundingCode = float_round_nearest_even;
- break;
- case ROUND_NEAREST_EVEN:
- roundingModeName = "nearest_even";
- roundingCode = float_round_nearest_even;
- break;
- case ROUND_TO_ZERO:
- roundingModeName = "to_zero";
- roundingCode = float_round_to_zero;
- break;
- case ROUND_DOWN:
- roundingModeName = "down";
- roundingCode = float_round_down;
- break;
- case ROUND_UP:
- roundingModeName = "up";
- roundingCode = float_round_up;
- break;
- }
- float_rounding_mode = roundingCode;
- slow_float_rounding_mode = roundingCode;
- switch ( tininessMode ) {
- default:
- tininessModeName = 0;
- tininessCode = float_tininess_after_rounding;
- break;
- case TININESS_BEFORE_ROUNDING:
- tininessModeName = "before";
- tininessCode = float_tininess_before_rounding;
- break;
- case TININESS_AFTER_ROUNDING:
- tininessModeName = "after";
- tininessCode = float_tininess_after_rounding;
- break;
- }
- float_detect_tininess = tininessCode;
- slow_float_detect_tininess = tininessCode;
- fputs( "Testing ", stderr );
- writeFunctionName( stderr );
- fputs( ".\n", stderr );
- switch ( functionCode ) {
- case INT32_TO_FLOAT32:
- test_a_int32_z_float32( slow_int32_to_float32, int32_to_float32 );
- break;
- case INT32_TO_FLOAT64:
- test_a_int32_z_float64( slow_int32_to_float64, int32_to_float64 );
- break;
-#ifdef FLOATX80
- case INT32_TO_FLOATX80:
- test_a_int32_z_floatx80( slow_int32_to_floatx80, int32_to_floatx80 );
- break;
-#endif
-#ifdef FLOAT128
- case INT32_TO_FLOAT128:
- test_a_int32_z_float128( slow_int32_to_float128, int32_to_float128 );
- break;
-#endif
-#ifdef BITS64
- case INT64_TO_FLOAT32:
- test_a_int64_z_float32( slow_int64_to_float32, int64_to_float32 );
- break;
- case INT64_TO_FLOAT64:
- test_a_int64_z_float64( slow_int64_to_float64, int64_to_float64 );
- break;
-#ifdef FLOATX80
- case INT64_TO_FLOATX80:
- test_a_int64_z_floatx80( slow_int64_to_floatx80, int64_to_floatx80 );
- break;
-#endif
-#ifdef FLOAT128
- case INT64_TO_FLOAT128:
- test_a_int64_z_float128( slow_int64_to_float128, int64_to_float128 );
- break;
-#endif
-#endif
- case FLOAT32_TO_INT32:
- test_a_float32_z_int32( slow_float32_to_int32, float32_to_int32 );
- break;
- case FLOAT32_TO_INT32_ROUND_TO_ZERO:
- test_a_float32_z_int32(
- slow_float32_to_int32_round_to_zero,
- float32_to_int32_round_to_zero
- );
- break;
-#ifdef BITS64
- case FLOAT32_TO_INT64:
- test_a_float32_z_int64( slow_float32_to_int64, float32_to_int64 );
- break;
- case FLOAT32_TO_INT64_ROUND_TO_ZERO:
- test_a_float32_z_int64(
- slow_float32_to_int64_round_to_zero,
- float32_to_int64_round_to_zero
- );
- break;
-#endif
- case FLOAT32_TO_FLOAT64:
- test_a_float32_z_float64(
- slow_float32_to_float64, float32_to_float64 );
- break;
-#ifdef FLOATX80
- case FLOAT32_TO_FLOATX80:
- test_a_float32_z_floatx80(
- slow_float32_to_floatx80, float32_to_floatx80 );
- break;
-#endif
-#ifdef FLOAT128
- case FLOAT32_TO_FLOAT128:
- test_a_float32_z_float128(
- slow_float32_to_float128, float32_to_float128 );
- break;
-#endif
- case FLOAT32_ROUND_TO_INT:
- test_az_float32( slow_float32_round_to_int, float32_round_to_int );
- break;
- case FLOAT32_ADD:
- test_abz_float32( slow_float32_add, float32_add );
- break;
- case FLOAT32_SUB:
- test_abz_float32( slow_float32_sub, float32_sub );
- break;
- case FLOAT32_MUL:
- test_abz_float32( slow_float32_mul, float32_mul );
- break;
- case FLOAT32_DIV:
- test_abz_float32( slow_float32_div, float32_div );
- break;
- case FLOAT32_REM:
- test_abz_float32( slow_float32_rem, float32_rem );
- break;
- case FLOAT32_SQRT:
- test_az_float32( slow_float32_sqrt, float32_sqrt );
- break;
- case FLOAT32_EQ:
- test_ab_float32_z_flag( slow_float32_eq, float32_eq );
- break;
- case FLOAT32_LE:
- test_ab_float32_z_flag( slow_float32_le, float32_le );
- break;
- case FLOAT32_LT:
- test_ab_float32_z_flag( slow_float32_lt, float32_lt );
- break;
- case FLOAT32_EQ_SIGNALING:
- test_ab_float32_z_flag(
- slow_float32_eq_signaling, float32_eq_signaling );
- break;
- case FLOAT32_LE_QUIET:
- test_ab_float32_z_flag( slow_float32_le_quiet, float32_le_quiet );
- break;
- case FLOAT32_LT_QUIET:
- test_ab_float32_z_flag( slow_float32_lt_quiet, float32_lt_quiet );
- break;
- case FLOAT64_TO_INT32:
- test_a_float64_z_int32( slow_float64_to_int32, float64_to_int32 );
- break;
- case FLOAT64_TO_INT32_ROUND_TO_ZERO:
- test_a_float64_z_int32(
- slow_float64_to_int32_round_to_zero,
- float64_to_int32_round_to_zero
- );
- break;
-#ifdef BITS64
- case FLOAT64_TO_INT64:
- test_a_float64_z_int64( slow_float64_to_int64, float64_to_int64 );
- break;
- case FLOAT64_TO_INT64_ROUND_TO_ZERO:
- test_a_float64_z_int64(
- slow_float64_to_int64_round_to_zero,
- float64_to_int64_round_to_zero
- );
- break;
-#endif
- case FLOAT64_TO_FLOAT32:
- test_a_float64_z_float32(
- slow_float64_to_float32, float64_to_float32 );
- break;
-#ifdef FLOATX80
- case FLOAT64_TO_FLOATX80:
- test_a_float64_z_floatx80(
- slow_float64_to_floatx80, float64_to_floatx80 );
- break;
-#endif
-#ifdef FLOAT128
- case FLOAT64_TO_FLOAT128:
- test_a_float64_z_float128(
- slow_float64_to_float128, float64_to_float128 );
- break;
-#endif
- case FLOAT64_ROUND_TO_INT:
- test_az_float64( slow_float64_round_to_int, float64_round_to_int );
- break;
- case FLOAT64_ADD:
- test_abz_float64( slow_float64_add, float64_add );
- break;
- case FLOAT64_SUB:
- test_abz_float64( slow_float64_sub, float64_sub );
- break;
- case FLOAT64_MUL:
- test_abz_float64( slow_float64_mul, float64_mul );
- break;
- case FLOAT64_DIV:
- test_abz_float64( slow_float64_div, float64_div );
- break;
- case FLOAT64_REM:
- test_abz_float64( slow_float64_rem, float64_rem );
- break;
- case FLOAT64_SQRT:
- test_az_float64( slow_float64_sqrt, float64_sqrt );
- break;
- case FLOAT64_EQ:
- test_ab_float64_z_flag( slow_float64_eq, float64_eq );
- break;
- case FLOAT64_LE:
- test_ab_float64_z_flag( slow_float64_le, float64_le );
- break;
- case FLOAT64_LT:
- test_ab_float64_z_flag( slow_float64_lt, float64_lt );
- break;
- case FLOAT64_EQ_SIGNALING:
- test_ab_float64_z_flag(
- slow_float64_eq_signaling, float64_eq_signaling );
- break;
- case FLOAT64_LE_QUIET:
- test_ab_float64_z_flag( slow_float64_le_quiet, float64_le_quiet );
- break;
- case FLOAT64_LT_QUIET:
- test_ab_float64_z_flag( slow_float64_lt_quiet, float64_lt_quiet );
- break;
-#ifdef FLOATX80
- case FLOATX80_TO_INT32:
- test_a_floatx80_z_int32( slow_floatx80_to_int32, floatx80_to_int32 );
- break;
- case FLOATX80_TO_INT32_ROUND_TO_ZERO:
- test_a_floatx80_z_int32(
- slow_floatx80_to_int32_round_to_zero,
- floatx80_to_int32_round_to_zero
- );
- break;
-#ifdef BITS64
- case FLOATX80_TO_INT64:
- test_a_floatx80_z_int64( slow_floatx80_to_int64, floatx80_to_int64 );
- break;
- case FLOATX80_TO_INT64_ROUND_TO_ZERO:
- test_a_floatx80_z_int64(
- slow_floatx80_to_int64_round_to_zero,
- floatx80_to_int64_round_to_zero
- );
- break;
-#endif
- case FLOATX80_TO_FLOAT32:
- test_a_floatx80_z_float32(
- slow_floatx80_to_float32, floatx80_to_float32 );
- break;
- case FLOATX80_TO_FLOAT64:
- test_a_floatx80_z_float64(
- slow_floatx80_to_float64, floatx80_to_float64 );
- break;
-#ifdef FLOAT128
- case FLOATX80_TO_FLOAT128:
- test_a_floatx80_z_float128(
- slow_floatx80_to_float128, floatx80_to_float128 );
- break;
-#endif
- case FLOATX80_ROUND_TO_INT:
- test_az_floatx80( slow_floatx80_round_to_int, floatx80_round_to_int );
- break;
- case FLOATX80_ADD:
- test_abz_floatx80( slow_floatx80_add, floatx80_add );
- break;
- case FLOATX80_SUB:
- test_abz_floatx80( slow_floatx80_sub, floatx80_sub );
- break;
- case FLOATX80_MUL:
- test_abz_floatx80( slow_floatx80_mul, floatx80_mul );
- break;
- case FLOATX80_DIV:
- test_abz_floatx80( slow_floatx80_div, floatx80_div );
- break;
- case FLOATX80_REM:
- test_abz_floatx80( slow_floatx80_rem, floatx80_rem );
- break;
- case FLOATX80_SQRT:
- test_az_floatx80( slow_floatx80_sqrt, floatx80_sqrt );
- break;
- case FLOATX80_EQ:
- test_ab_floatx80_z_flag( slow_floatx80_eq, floatx80_eq );
- break;
- case FLOATX80_LE:
- test_ab_floatx80_z_flag( slow_floatx80_le, floatx80_le );
- break;
- case FLOATX80_LT:
- test_ab_floatx80_z_flag( slow_floatx80_lt, floatx80_lt );
- break;
- case FLOATX80_EQ_SIGNALING:
- test_ab_floatx80_z_flag(
- slow_floatx80_eq_signaling, floatx80_eq_signaling );
- break;
- case FLOATX80_LE_QUIET:
- test_ab_floatx80_z_flag( slow_floatx80_le_quiet, floatx80_le_quiet );
- break;
- case FLOATX80_LT_QUIET:
- test_ab_floatx80_z_flag( slow_floatx80_lt_quiet, floatx80_lt_quiet );
- break;
-#endif
-#ifdef FLOAT128
- case FLOAT128_TO_INT32:
- test_a_float128_z_int32( slow_float128_to_int32, float128_to_int32 );
- break;
- case FLOAT128_TO_INT32_ROUND_TO_ZERO:
- test_a_float128_z_int32(
- slow_float128_to_int32_round_to_zero,
- float128_to_int32_round_to_zero
- );
- break;
-#ifdef BITS64
- case FLOAT128_TO_INT64:
- test_a_float128_z_int64( slow_float128_to_int64, float128_to_int64 );
- break;
- case FLOAT128_TO_INT64_ROUND_TO_ZERO:
- test_a_float128_z_int64(
- slow_float128_to_int64_round_to_zero,
- float128_to_int64_round_to_zero
- );
- break;
-#endif
- case FLOAT128_TO_FLOAT32:
- test_a_float128_z_float32(
- slow_float128_to_float32, float128_to_float32 );
- break;
- case FLOAT128_TO_FLOAT64:
- test_a_float128_z_float64(
- slow_float128_to_float64, float128_to_float64 );
- break;
-#ifdef FLOATX80
- case FLOAT128_TO_FLOATX80:
- test_a_float128_z_floatx80(
- slow_float128_to_floatx80, float128_to_floatx80 );
- break;
-#endif
- case FLOAT128_ROUND_TO_INT:
- test_az_float128( slow_float128_round_to_int, float128_round_to_int );
- break;
- case FLOAT128_ADD:
- test_abz_float128( slow_float128_add, float128_add );
- break;
- case FLOAT128_SUB:
- test_abz_float128( slow_float128_sub, float128_sub );
- break;
- case FLOAT128_MUL:
- test_abz_float128( slow_float128_mul, float128_mul );
- break;
- case FLOAT128_DIV:
- test_abz_float128( slow_float128_div, float128_div );
- break;
- case FLOAT128_REM:
- test_abz_float128( slow_float128_rem, float128_rem );
- break;
- case FLOAT128_SQRT:
- test_az_float128( slow_float128_sqrt, float128_sqrt );
- break;
- case FLOAT128_EQ:
- test_ab_float128_z_flag( slow_float128_eq, float128_eq );
- break;
- case FLOAT128_LE:
- test_ab_float128_z_flag( slow_float128_le, float128_le );
- break;
- case FLOAT128_LT:
- test_ab_float128_z_flag( slow_float128_lt, float128_lt );
- break;
- case FLOAT128_EQ_SIGNALING:
- test_ab_float128_z_flag(
- slow_float128_eq_signaling, float128_eq_signaling );
- break;
- case FLOAT128_LE_QUIET:
- test_ab_float128_z_flag( slow_float128_le_quiet, float128_le_quiet );
- break;
- case FLOAT128_LT_QUIET:
- test_ab_float128_z_flag( slow_float128_lt_quiet, float128_lt_quiet );
- break;
-#endif
- }
- if ( ( errorStop && anyErrors ) || stop ) exitWithStatus();
-
-}
-
-static void
- testFunction(
- uint8 functionCode,
- int8 roundingPrecisionIn,
- int8 roundingModeIn,
- int8 tininessModeIn
- )
-{
- int8 roundingPrecision, roundingMode, tininessMode;
-
- roundingPrecision = 32;
- for (;;) {
- if ( ! functions[ functionCode ].roundingPrecision ) {
- roundingPrecision = 0;
- }
- else if ( roundingPrecisionIn ) {
- roundingPrecision = roundingPrecisionIn;
- }
- for ( roundingMode = 1;
- roundingMode < NUM_ROUNDINGMODES;
- ++roundingMode
- ) {
- if ( ! functions[ functionCode ].roundingMode ) {
- roundingMode = 0;
- }
- else if ( roundingModeIn ) {
- roundingMode = roundingModeIn;
- }
- for ( tininessMode = 1;
- tininessMode < NUM_TININESSMODES;
- ++tininessMode
- ) {
- if ( ( roundingPrecision == 32 )
- || ( roundingPrecision == 64 ) ) {
- if ( ! functions[ functionCode ]
- .tininessModeAtReducedPrecision
- ) {
- tininessMode = 0;
- }
- else if ( tininessModeIn ) {
- tininessMode = tininessModeIn;
- }
- }
- else {
- if ( ! functions[ functionCode ].tininessMode ) {
- tininessMode = 0;
- }
- else if ( tininessModeIn ) {
- tininessMode = tininessModeIn;
- }
- }
- testFunctionVariety(
- functionCode, roundingPrecision, roundingMode, tininessMode
- );
- if ( tininessModeIn || ! tininessMode ) break;
- }
- if ( roundingModeIn || ! roundingMode ) break;
- }
- if ( roundingPrecisionIn || ! roundingPrecision ) break;
- if ( roundingPrecision == 80 ) {
- break;
- }
- else if ( roundingPrecision == 64 ) {
- roundingPrecision = 80;
- }
- else if ( roundingPrecision == 32 ) {
- roundingPrecision = 64;
- }
- }
-
-}
-
-int
-main( int argc, char **argv )
-{
- char *argPtr;
- flag functionArgument;
- uint8 functionCode;
- int8 operands, roundingPrecision, roundingMode, tininessMode;
-
- fail_programName = "testsoftfloat";
- if ( argc <= 1 ) goto writeHelpMessage;
- testCases_setLevel( 1 );
- trueName = "true";
- testName = "soft";
- errorStop = FALSE;
- forever = FALSE;
- maxErrorCount = 20;
- trueFlagsPtr = &slow_float_exception_flags;
- testFlagsFunctionPtr = clearFlags;
- functionArgument = FALSE;
- functionCode = 0;
- operands = 0;
- roundingPrecision = 0;
- roundingMode = 0;
- tininessMode = 0;
- --argc;
- ++argv;
- while ( argc && ( argPtr = argv[ 0 ] ) ) {
- if ( argPtr[ 0 ] == '-' ) ++argPtr;
- if ( strcmp( argPtr, "help" ) == 0 ) {
- writeHelpMessage:
- fputs(
-"testsoftfloat [<option>...] <function>\n"
-" <option>: (* is default)\n"
-" -help --Write this message and exit.\n"
-" -level <num> --Testing level <num> (1 or 2).\n"
-" * -level 1\n"
-" -errors <num> --Stop each function test after <num> errors.\n"
-" * -errors 20\n"
-" -errorstop --Exit after first function with any error.\n"
-" -forever --Test one function repeatedly (implies `-level 2').\n"
-#ifdef FLOATX80
-" -precision32 --Only test rounding precision equivalent to float32.\n"
-" -precision64 --Only test rounding precision equivalent to float64.\n"
-" -precision80 --Only test maximum rounding precision.\n"
-#endif
-" -nearesteven --Only test rounding to nearest/even.\n"
-" -tozero --Only test rounding to zero.\n"
-" -down --Only test rounding down.\n"
-" -up --Only test rounding up.\n"
-" -tininessbefore --Only test underflow tininess before rounding.\n"
-" -tininessafter --Only test underflow tininess after rounding.\n"
-" <function>:\n"
-" int32_to_<float> <float>_add <float>_eq\n"
-" <float>_to_int32 <float>_sub <float>_le\n"
-" <float>_to_int32_round_to_zero <float>_mul <float>_lt\n"
-#ifdef BITS64
-" int64_to_<float> <float>_div <float>_eq_signaling\n"
-" <float>_to_int64 <float>_rem <float>_le_quiet\n"
-" <float>_to_int64_round_to_zero <float>_lt_quiet\n"
-" <float>_to_<float>\n"
-" <float>_round_to_int\n"
-" <float>_sqrt\n"
-#else
-" <float>_to_<float> <float>_div <float>_eq_signaling\n"
-" <float>_round_to_int <float>_rem <float>_le_quiet\n"
-" <float>_sqrt <float>_lt_quiet\n"
-#endif
-" -all1 --All 1-operand functions.\n"
-" -all2 --All 2-operand functions.\n"
-" -all --All functions.\n"
-" <float>:\n"
-" float32 --Single precision.\n"
-" float64 --Double precision.\n"
-#ifdef FLOATX80
-" floatx80 --Extended double precision.\n"
-#endif
-#ifdef FLOAT128
-" float128 --Quadruple precision.\n"
-#endif
- ,
- stdout
- );
- return EXIT_SUCCESS;
- }
- else if ( strcmp( argPtr, "level" ) == 0 ) {
- if ( argc < 2 ) goto optionError;
- testCases_setLevel( atoi( argv[ 1 ] ) );
- --argc;
- ++argv;
- }
- else if ( strcmp( argPtr, "level1" ) == 0 ) {
- testCases_setLevel( 1 );
- }
- else if ( strcmp( argPtr, "level2" ) == 0 ) {
- testCases_setLevel( 2 );
- }
- else if ( strcmp( argPtr, "errors" ) == 0 ) {
- if ( argc < 2 ) {
- optionError:
- fail( "`%s' option requires numeric argument", argv[ 0 ] );
- }
- maxErrorCount = atoi( argv[ 1 ] );
- --argc;
- ++argv;
- }
- else if ( strcmp( argPtr, "errorstop" ) == 0 ) {
- errorStop = TRUE;
- }
- else if ( strcmp( argPtr, "forever" ) == 0 ) {
- testCases_setLevel( 2 );
- forever = TRUE;
- }
-#ifdef FLOATX80
- else if ( strcmp( argPtr, "precision32" ) == 0 ) {
- roundingPrecision = 32;
- }
- else if ( strcmp( argPtr, "precision64" ) == 0 ) {
- roundingPrecision = 64;
- }
- else if ( strcmp( argPtr, "precision80" ) == 0 ) {
- roundingPrecision = 80;
- }
-#endif
- else if ( ( strcmp( argPtr, "nearesteven" ) == 0 )
- || ( strcmp( argPtr, "nearest_even" ) == 0 ) ) {
- roundingMode = ROUND_NEAREST_EVEN;
- }
- else if ( ( strcmp( argPtr, "tozero" ) == 0 )
- || ( strcmp( argPtr, "to_zero" ) == 0 ) ) {
- roundingMode = ROUND_TO_ZERO;
- }
- else if ( strcmp( argPtr, "down" ) == 0 ) {
- roundingMode = ROUND_DOWN;
- }
- else if ( strcmp( argPtr, "up" ) == 0 ) {
- roundingMode = ROUND_UP;
- }
- else if ( strcmp( argPtr, "tininessbefore" ) == 0 ) {
- tininessMode = TININESS_BEFORE_ROUNDING;
- }
- else if ( strcmp( argPtr, "tininessafter" ) == 0 ) {
- tininessMode = TININESS_AFTER_ROUNDING;
- }
- else if ( strcmp( argPtr, "all1" ) == 0 ) {
- functionArgument = TRUE;
- functionCode = 0;
- operands = 1;
- }
- else if ( strcmp( argPtr, "all2" ) == 0 ) {
- functionArgument = TRUE;
- functionCode = 0;
- operands = 2;
- }
- else if ( strcmp( argPtr, "all" ) == 0 ) {
- functionArgument = TRUE;
- functionCode = 0;
- operands = 0;
- }
- else {
- for ( functionCode = 1;
- functionCode < NUM_FUNCTIONS;
- ++functionCode
- ) {
- if ( strcmp( argPtr, functions[ functionCode ].name ) == 0 ) {
- break;
- }
- }
- if ( functionCode == NUM_FUNCTIONS ) {
- fail( "Invalid option or function `%s'", argv[ 0 ] );
- }
- functionArgument = TRUE;
- }
- --argc;
- ++argv;
- }
- if ( ! functionArgument ) fail( "Function argument required" );
- (void) signal( SIGINT, catchSIGINT );
- (void) signal( SIGTERM, catchSIGINT );
- if ( functionCode ) {
- if ( forever ) {
- if ( ! roundingPrecision ) roundingPrecision = 80;
- if ( ! roundingMode ) roundingMode = ROUND_NEAREST_EVEN;
- }
- testFunction(
- functionCode, roundingPrecision, roundingMode, tininessMode );
- }
- else {
- if ( operands == 1 ) {
- for ( functionCode = 1;
- functionCode < NUM_FUNCTIONS;
- ++functionCode
- ) {
- if ( functions[ functionCode ].numInputs == 1 ) {
- testFunction(
- functionCode,
- roundingPrecision,
- roundingMode,
- tininessMode
- );
- }
- }
- }
- else if ( operands == 2 ) {
- for ( functionCode = 1;
- functionCode < NUM_FUNCTIONS;
- ++functionCode
- ) {
- if ( functions[ functionCode ].numInputs == 2 ) {
- testFunction(
- functionCode,
- roundingPrecision,
- roundingMode,
- tininessMode
- );
- }
- }
- }
- else {
- for ( functionCode = 1;
- functionCode < NUM_FUNCTIONS;
- ++functionCode
- ) {
- testFunction(
- functionCode, roundingPrecision, roundingMode, tininessMode
- );
- }
- }
- }
- exitWithStatus();
-
-}
-
diff --git a/tools/test/testfloat/writeHex.c b/tools/test/testfloat/writeHex.c
deleted file mode 100644
index f304aed631d5..000000000000
--- a/tools/test/testfloat/writeHex.c
+++ /dev/null
@@ -1,183 +0,0 @@
-
-/*
-===============================================================================
-
-This C source file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-#include <stdio.h>
-#include "milieu.h"
-#include "softfloat.h"
-#include "writeHex.h"
-
-void writeHex_flag( flag a, FILE *stream )
-{
-
- fputc( a ? '1' : '0', stream );
-
-}
-
-static void writeHex_bits8( bits8 a, FILE *stream )
-{
- int digit;
-
- digit = ( a>>4 ) & 0xF;
- if ( 9 < digit ) digit += 'A' - ( '0' + 10 );
- fputc( '0' + digit, stream );
- digit = a & 0xF;
- if ( 9 < digit ) digit += 'A' - ( '0' + 10 );
- fputc( '0' + digit, stream );
-
-}
-
-static void writeHex_bits12( int16 a, FILE *stream )
-{
- int digit;
-
- digit = ( a>>8 ) & 0xF;
- if ( 9 < digit ) digit += 'A' - ( '0' + 10 );
- fputc( '0' + digit, stream );
- digit = ( a>>4 ) & 0xF;
- if ( 9 < digit ) digit += 'A' - ( '0' + 10 );
- fputc( '0' + digit, stream );
- digit = a & 0xF;
- if ( 9 < digit ) digit += 'A' - ( '0' + 10 );
- fputc( '0' + digit, stream );
-
-}
-
-static void writeHex_bits16( bits16 a, FILE *stream )
-{
- int digit;
-
- digit = ( a>>12 ) & 0xF;
- if ( 9 < digit ) digit += 'A' - ( '0' + 10 );
- fputc( '0' + digit, stream );
- digit = ( a>>8 ) & 0xF;
- if ( 9 < digit ) digit += 'A' - ( '0' + 10 );
- fputc( '0' + digit, stream );
- digit = ( a>>4 ) & 0xF;
- if ( 9 < digit ) digit += 'A' - ( '0' + 10 );
- fputc( '0' + digit, stream );
- digit = a & 0xF;
- if ( 9 < digit ) digit += 'A' - ( '0' + 10 );
- fputc( '0' + digit, stream );
-
-}
-
-void writeHex_bits32( bits32 a, FILE *stream )
-{
-
- writeHex_bits16( a>>16, stream );
- writeHex_bits16( a, stream );
-
-}
-
-#ifdef BITS64
-
-void writeHex_bits64( bits64 a, FILE *stream )
-{
-
- writeHex_bits32( a>>32, stream );
- writeHex_bits32( a, stream );
-
-}
-
-#endif
-
-void writeHex_float32( float32 a, FILE *stream )
-{
-
- fputc( ( ( (sbits32) a ) < 0 ) ? '8' : '0', stream );
- writeHex_bits8( a>>23, stream );
- fputc( '.', stream );
- writeHex_bits8( ( a>>16 ) & 0x7F, stream );
- writeHex_bits16( a, stream );
-
-}
-
-#ifdef BITS64
-
-void writeHex_float64( float64 a, FILE *stream )
-{
-
- writeHex_bits12( a>>52, stream );
- fputc( '.', stream );
- writeHex_bits12( a>>40, stream );
- writeHex_bits8( a>>32, stream );
- writeHex_bits32( a, stream );
-
-}
-
-#else
-
-void writeHex_float64( float64 a, FILE *stream )
-{
-
- writeHex_bits12( a.high>>20, stream );
- fputc( '.', stream );
- writeHex_bits12( a.high>>8, stream );
- writeHex_bits8( a.high, stream );
- writeHex_bits32( a.low, stream );
-
-}
-
-#endif
-
-#ifdef FLOATX80
-
-void writeHex_floatx80( floatx80 a, FILE *stream )
-{
-
- writeHex_bits16( a.high, stream );
- fputc( '.', stream );
- writeHex_bits64( a.low, stream );
-
-}
-
-#endif
-
-#ifdef FLOAT128
-
-void writeHex_float128( float128 a, FILE *stream )
-{
-
- writeHex_bits16( a.high>>48, stream );
- fputc( '.', stream );
- writeHex_bits16( a.high>>32, stream );
- writeHex_bits32( a.high, stream );
- writeHex_bits64( a.low, stream );
-
-}
-
-#endif
-
-void writeHex_float_flags( uint8 flags, FILE *stream )
-{
-
- fputc( flags & float_flag_invalid ? 'v' : '.', stream );
- fputc( flags & float_flag_divbyzero ? 'z' : '.', stream );
- fputc( flags & float_flag_overflow ? 'o' : '.', stream );
- fputc( flags & float_flag_underflow ? 'u' : '.', stream );
- fputc( flags & float_flag_inexact ? 'x' : '.', stream );
-
-}
-
diff --git a/tools/test/testfloat/writeHex.h b/tools/test/testfloat/writeHex.h
deleted file mode 100644
index 0dde44c43d34..000000000000
--- a/tools/test/testfloat/writeHex.h
+++ /dev/null
@@ -1,42 +0,0 @@
-
-/*
-===============================================================================
-
-This C header file is part of TestFloat, Release 2a, a package of programs
-for testing the correctness of floating-point arithmetic complying to the
-IEC/IEEE Standard for Floating-Point.
-
-Written by John R. Hauser. More information is available through the Web
-page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
-
-THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
-has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
-TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
-PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
-AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
-
-Derivative works are acceptable, even for commercial purposes, so long as
-(1) they include prominent notice that the work is derivative, and (2) they
-include prominent notice akin to these four paragraphs for those parts of
-this code that are retained.
-
-===============================================================================
-*/
-
-#include <stdio.h>
-
-void writeHex_flag( flag, FILE * );
-void writeHex_bits32( bits32, FILE * );
-#ifdef BITS64
-void writeHex_bits64( bits64, FILE * );
-#endif
-void writeHex_float32( float32, FILE * );
-void writeHex_float64( float64, FILE * );
-#ifdef FLOATX80
-void writeHex_floatx80( floatx80, FILE * );
-#endif
-#ifdef FLOAT128
-void writeHex_float128( float128, FILE * );
-#endif
-void writeHex_float_flags( uint8, FILE * );
-
diff --git a/tools/test/upsdl/Makefile b/tools/test/upsdl/Makefile
index 448cb7a02b4f..2e58b42c0945 100644
--- a/tools/test/upsdl/Makefile
+++ b/tools/test/upsdl/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= upsdl
MAN=
diff --git a/tools/test/upsdl/upsdl.c b/tools/test/upsdl/upsdl.c
index 960b034ffcfe..e091d9d55b50 100644
--- a/tools/test/upsdl/upsdl.c
+++ b/tools/test/upsdl/upsdl.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
diff --git a/tools/test/vm86/Makefile b/tools/test/vm86/Makefile
index e895b3f85498..a275cc638b66 100644
--- a/tools/test/vm86/Makefile
+++ b/tools/test/vm86/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
all: vm86_test
diff --git a/tools/test/vm86/vm86_test.c b/tools/test/vm86/vm86_test.c
index 8744213b8652..1057fc5c83d6 100644
--- a/tools/test/vm86/vm86_test.c
+++ b/tools/test/vm86/vm86_test.c
@@ -1,5 +1,5 @@
/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ * SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (c) 2018 The FreeBSD Foundation
* All rights reserved.
@@ -30,7 +30,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
/* $Id: vm86_test.c,v 1.10 2018/05/12 11:35:58 kostik Exp kostik $ */
#include <sys/param.h>
diff --git a/tools/test/vm86/vm86_test_asm.s b/tools/test/vm86/vm86_test_asm.s
index bf032bdd232a..22e5cf70b7f7 100644
--- a/tools/test/vm86/vm86_test_asm.s
+++ b/tools/test/vm86/vm86_test_asm.s
@@ -1,5 +1,5 @@
/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ * SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (c) 2018 The FreeBSD Foundation
* All rights reserved.
@@ -27,8 +27,6 @@
* 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.
- *
- * $FreeBSD$
* $Id: vm86_test_asm.s,v 1.2 2018/05/12 11:39:00 kostik Exp kostik $
*/
diff --git a/tools/test/xregs_sig/Makefile b/tools/test/xregs_sig/Makefile
new file mode 100644
index 000000000000..a8817c372840
--- /dev/null
+++ b/tools/test/xregs_sig/Makefile
@@ -0,0 +1,11 @@
+
+.include <src.opts.mk>
+
+PROG= xregs_sig
+SRCS= xregs_sig.c c2x2c_${MACHINE_CPUARCH}.S
+
+MAN=
+
+LIBADD= pthread
+
+.include <bsd.prog.mk>
diff --git a/tools/test/xregs_sig/c2x2c_aarch64.S b/tools/test/xregs_sig/c2x2c_aarch64.S
new file mode 100644
index 000000000000..2bb73c114b26
--- /dev/null
+++ b/tools/test/xregs_sig/c2x2c_aarch64.S
@@ -0,0 +1,64 @@
+/*
+ * This file is in public domain.
+ * Written by Dmitry Chagin <dchagin@FreeBSD.org>
+ */
+
+ .text
+
+ .globl xregs_banks_max
+ .type xregs_banks_max, @function
+xregs_banks_max:
+ mov x0, #0
+ ret
+
+ .size xregs_banks_max, . - xregs_banks_max
+
+
+ .globl cpu_to_vfp
+ .type cpu_to_vfp, @function
+cpu_to_vfp:
+ stp q0, q1, [x0, #( 0 * 16)]
+ stp q2, q3, [x0, #( 2 * 16)]
+ stp q4, q5, [x0, #( 4 * 16)]
+ stp q6, q7, [x0, #( 6 * 16)]
+ stp q8, q9, [x0, #( 8 * 16)]
+ stp q10, q11, [x0, #(10 * 16)]
+ stp q12, q13, [x0, #(12 * 16)]
+ stp q14, q15, [x0, #(14 * 16)]
+ stp q16, q17, [x0, #(16 * 16)]
+ stp q18, q19, [x0, #(18 * 16)]
+ stp q20, q21, [x0, #(20 * 16)]
+ stp q22, q23, [x0, #(22 * 16)]
+ stp q24, q25, [x0, #(24 * 16)]
+ stp q26, q27, [x0, #(26 * 16)]
+ stp q28, q29, [x0, #(28 * 16)]
+ stp q30, q31, [x0, #(30 * 16)]
+ ret
+
+ .size cpu_to_vfp, . - cpu_to_vfp
+
+
+ .globl vfp_to_cpu
+ .type vfp_to_cpu, @function
+vfp_to_cpu:
+ ldp q0, q1, [x0, #( 0 * 16)]
+ ldp q2, q3, [x0, #( 2 * 16)]
+ ldp q4, q5, [x0, #( 4 * 16)]
+ ldp q6, q7, [x0, #( 6 * 16)]
+ ldp q8, q9, [x0, #( 8 * 16)]
+ ldp q10, q11, [x0, #(10 * 16)]
+ ldp q12, q13, [x0, #(12 * 16)]
+ ldp q14, q15, [x0, #(14 * 16)]
+ ldp q16, q17, [x0, #(16 * 16)]
+ ldp q18, q19, [x0, #(18 * 16)]
+ ldp q20, q21, [x0, #(20 * 16)]
+ ldp q22, q23, [x0, #(22 * 16)]
+ ldp q24, q25, [x0, #(24 * 16)]
+ ldp q26, q27, [x0, #(26 * 16)]
+ ldp q28, q29, [x0, #(28 * 16)]
+ ldp q30, q31, [x0, #(30 * 16)]
+ ret
+
+ .size vfp_to_cpu, . - vfp_to_cpu
+
+ .section .note.GNU-stack,"",@progbits
diff --git a/tools/test/xregs_sig/c2x2c_amd64.S b/tools/test/xregs_sig/c2x2c_amd64.S
new file mode 100644
index 000000000000..637090d53f46
--- /dev/null
+++ b/tools/test/xregs_sig/c2x2c_amd64.S
@@ -0,0 +1,140 @@
+/*
+ * This file is in public domain.
+ * Written by Dmitry Chagin <dchagin@FreeBSD.org>
+ */
+
+#if defined(__FreeBSD__)
+#include <machine/specialreg.h>
+#else
+#define CPUID2_OSXSAVE 0x08000000
+#define CPUID2_AVX 0x10000000
+#define XFEATURE_ENABLED_X87 0x00000001
+#define XFEATURE_ENABLED_SSE 0x00000002
+#define XFEATURE_ENABLED_AVX 0x00000004
+#define XFEATURE_AVX \
+ (XFEATURE_ENABLED_X87 | XFEATURE_ENABLED_SSE | XFEATURE_ENABLED_AVX)
+#endif
+
+ .text
+
+ .globl xregs_banks_max
+ .type xregs_banks_max, @function
+xregs_banks_max:
+ pushq %rbx
+ movl $1, %eax
+ cpuid
+ andl $(CPUID2_AVX|CPUID2_OSXSAVE), %ecx
+ cmpl $(CPUID2_AVX|CPUID2_OSXSAVE), %ecx
+ jne sse
+ xorl %ecx, %ecx
+ xgetbv
+ andl $XFEATURE_AVX, %eax
+ cmpl $XFEATURE_AVX, %eax
+ jne sse
+ movl $1, %eax
+ jmp out
+sse:
+ xorl %eax, %eax
+out:
+ popq %rbx
+ retq
+
+ .size xregs_banks_max, . - xregs_banks_max
+
+
+ .globl cpu_to_xmm
+ .type cpu_to_xmm, @function
+cpu_to_xmm:
+ movdqu %xmm0, (%rdi)
+ movdqu %xmm1, 1 * 16(%rdi)
+ movdqu %xmm2, 2 * 16(%rdi)
+ movdqu %xmm3, 3 * 16(%rdi)
+ movdqu %xmm4, 4 * 16(%rdi)
+ movdqu %xmm5, 5 * 16(%rdi)
+ movdqu %xmm6, 6 * 16(%rdi)
+ movdqu %xmm7, 7 * 16(%rdi)
+ movdqu %xmm8, 8 * 16(%rdi)
+ movdqu %xmm9, 9 * 16(%rdi)
+ movdqu %xmm10, 10 * 16(%rdi)
+ movdqu %xmm11, 11 * 16(%rdi)
+ movdqu %xmm12, 12 * 16(%rdi)
+ movdqu %xmm13, 13 * 16(%rdi)
+ movdqu %xmm14, 14 * 16(%rdi)
+ movdqu %xmm15, 15 * 16(%rdi)
+ retq
+
+ .size cpu_to_xmm, . - cpu_to_xmm
+
+
+ .globl xmm_to_cpu
+ .type xmm_to_cpu, @function
+xmm_to_cpu:
+ movdqu (%rdi), %xmm0
+ movdqu 1 * 16(%rdi), %xmm1
+ movdqu 2 * 16(%rdi), %xmm2
+ movdqu 3 * 16(%rdi), %xmm3
+ movdqu 4 * 16(%rdi), %xmm4
+ movdqu 5 * 16(%rdi), %xmm5
+ movdqu 6 * 16(%rdi), %xmm6
+ movdqu 7 * 16(%rdi), %xmm7
+ movdqu 8 * 16(%rdi), %xmm8
+ movdqu 9 * 16(%rdi), %xmm9
+ movdqu 10 * 16(%rdi), %xmm10
+ movdqu 11 * 16(%rdi), %xmm11
+ movdqu 12 * 16(%rdi), %xmm12
+ movdqu 13 * 16(%rdi), %xmm13
+ movdqu 14 * 16(%rdi), %xmm14
+ movdqu 15 * 16(%rdi), %xmm15
+ retq
+
+ .size xmm_to_cpu, . - xmm_to_cpu
+
+
+ .globl cpu_to_avx
+ .type cpu_to_avx, @function
+cpu_to_avx:
+ vmovdqu %ymm0, (%rdi)
+ vmovdqu %ymm1, 1 * 32(%rdi)
+ vmovdqu %ymm2, 2 * 32(%rdi)
+ vmovdqu %ymm3, 3 * 32(%rdi)
+ vmovdqu %ymm4, 4 * 32(%rdi)
+ vmovdqu %ymm5, 5 * 32(%rdi)
+ vmovdqu %ymm6, 6 * 32(%rdi)
+ vmovdqu %ymm7, 7 * 32(%rdi)
+ vmovdqu %ymm8, 8 * 32(%rdi)
+ vmovdqu %ymm9, 9 * 32(%rdi)
+ vmovdqu %ymm10, 10 * 32(%rdi)
+ vmovdqu %ymm11, 11 * 32(%rdi)
+ vmovdqu %ymm12, 12 * 32(%rdi)
+ vmovdqu %ymm13, 13 * 32(%rdi)
+ vmovdqu %ymm14, 14 * 32(%rdi)
+ vmovdqu %ymm15, 15 * 32(%rdi)
+ retq
+
+ .size cpu_to_avx, . - cpu_to_avx
+
+
+ .globl avx_to_cpu
+ .type avx_to_cpu, @function
+avx_to_cpu:
+ vmovdqu (%rdi), %ymm0
+ vmovdqu 1 * 32(%rdi), %ymm1
+ vmovdqu 2 * 32(%rdi), %ymm2
+ vmovdqu 3 * 32(%rdi), %ymm3
+ vmovdqu 4 * 32(%rdi), %ymm4
+ vmovdqu 5 * 32(%rdi), %ymm5
+ vmovdqu 6 * 32(%rdi), %ymm6
+ vmovdqu 7 * 32(%rdi), %ymm7
+ vmovdqu 8 * 32(%rdi), %ymm8
+ vmovdqu 9 * 32(%rdi), %ymm9
+ vmovdqu 10 * 32(%rdi), %ymm10
+ vmovdqu 11 * 32(%rdi), %ymm11
+ vmovdqu 12 * 32(%rdi), %ymm12
+ vmovdqu 13 * 32(%rdi), %ymm13
+ vmovdqu 14 * 32(%rdi), %ymm14
+ vmovdqu 15 * 32(%rdi), %ymm15
+ retq
+
+ .size avx_to_cpu, . - avx_to_cpu
+
+ .section .note.GNU-stack,"",@progbits
diff --git a/tools/test/xregs_sig/xregs_sig.c b/tools/test/xregs_sig/xregs_sig.c
new file mode 100644
index 000000000000..2ed47b4eb3bc
--- /dev/null
+++ b/tools/test/xregs_sig/xregs_sig.c
@@ -0,0 +1,262 @@
+/* $Id: avx_sig.c,v 1.12 2021/12/11 22:47:09 kostik Exp $ */
+/*
+ * Naive test to check that context switches and signal delivery do
+ * not corrupt AVX registers file (%xmm). Run until some
+ * inconsistency detected, then aborts.
+ *
+ * FreeBSD:
+ * ${CC} -Wall -Wextra -O -g -o avx_sig avx_sig.c -lpthread
+ * Linux
+ * ${CC} -D_GNU_SOURCE -Wall -Wextra -O -g -o avx_sig avx_sig.c -lbsd -lpthread
+ */
+
+#include <sys/param.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <sys/syscall.h>
+#include <errno.h>
+#include <pthread.h>
+#ifdef __FreeBSD__
+#include <pthread_np.h>
+#endif
+#ifdef __linux__
+#ifdef __GLIBC__
+#include <gnu/libc-version.h>
+#endif
+#if !defined(__GLIBC__) || (__GLIBC__ * 100 + __GLIBC_MINOR__) < 236
+#include <bsd/stdlib.h>
+#endif
+#endif
+#include <signal.h>
+#include <stdatomic.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+/* SIGALRM interval in seconds. */
+#ifndef TIMO
+#define TIMO 5
+#endif
+
+#ifndef __unused
+#define __unused __attribute__((__unused__))
+#endif
+
+struct xregs_bank {
+ const char *b_name;
+ const char *r_name;
+ uint32_t regs;
+ uint32_t bytes;
+ void (*x2c)(uint8_t *);
+ void (*c2x)(uint8_t *);
+};
+
+int xregs_banks_max(void);
+
+#if defined(__amd64__)
+void cpu_to_xmm(uint8_t *);
+void xmm_to_cpu(uint8_t *);
+void cpu_to_avx(uint8_t *);
+void avx_to_cpu(uint8_t *);
+
+static const struct xregs_bank xregs_banks[] = {
+ {
+ .b_name = "SSE",
+ .r_name = "xmm",
+ .regs = 16,
+ .bytes = 16,
+ .x2c = xmm_to_cpu,
+ .c2x = cpu_to_xmm,
+ },
+ {
+ .b_name = "AVX",
+ .r_name = "ymm",
+ .regs = 16,
+ .bytes = 32,
+ .x2c = avx_to_cpu,
+ .c2x = cpu_to_avx,
+ },
+};
+#elif defined(__aarch64__)
+void cpu_to_vfp(uint8_t *);
+void vfp_to_cpu(uint8_t *);
+
+static const struct xregs_bank xregs_banks[] = {
+ {
+ .b_name = "VFP",
+ .r_name = "q",
+ .regs = 32,
+ .bytes = 16,
+ .x2c = vfp_to_cpu,
+ .c2x = cpu_to_vfp,
+ },
+};
+#endif
+
+static atomic_uint sigs;
+static int max_bank_idx;
+
+
+static void
+sigusr1_handler(int sig __unused, siginfo_t *si __unused, void *m __unused)
+{
+ atomic_fetch_add_explicit(&sigs, 1, memory_order_relaxed);
+}
+
+static void
+sigalrm_handler(int sig __unused)
+{
+ struct rusage r;
+
+ if (getrusage(RUSAGE_SELF, &r) == 0) {
+ printf("%lu vctx %lu nvctx %lu nsigs %u SIGUSR1\n",
+ r.ru_nvcsw, r.ru_nivcsw, r.ru_nsignals, sigs);
+ }
+ alarm(TIMO);
+}
+
+
+static void
+fill_xregs(uint8_t *xregs, int bank)
+{
+ arc4random_buf(xregs, xregs_banks[bank].regs * xregs_banks[bank].bytes);
+}
+
+static void
+dump_xregs(const uint8_t *r, int bank)
+{
+ unsigned k;
+
+ for (k = 0; k < xregs_banks[bank].bytes; k++) {
+ if (k != 0)
+ printf(" ");
+ printf("%02x", r[k]);
+ }
+ printf("\n");
+}
+
+static pthread_mutex_t show_lock;
+
+static void
+show_diff(const uint8_t *xregs1, const uint8_t *xregs2, int bank)
+{
+ const uint8_t *r1, *r2;
+ unsigned i, j;
+
+#if defined(__FreeBSD__)
+ printf("thr %d\n", pthread_getthreadid_np());
+#elif defined(__linux__)
+ printf("thr %ld\n", syscall(SYS_gettid));
+#endif
+ for (i = 0; i < xregs_banks[bank].regs; i++) {
+ r1 = xregs1 + i * xregs_banks[bank].bytes;
+ r2 = xregs2 + i * xregs_banks[bank].bytes;
+ for (j = 0; j < xregs_banks[bank].bytes; j++) {
+ if (r1[j] != r2[j]) {
+ printf("%%%s%u\n", xregs_banks[bank].r_name, i);
+ dump_xregs(r1, bank);
+ dump_xregs(r2, bank);
+ break;
+ }
+ }
+ }
+}
+
+static void
+my_pause(void)
+{
+ usleep(0);
+}
+
+static void *
+worker_thread(void *arg)
+{
+ int bank = (uintptr_t)arg;
+ int sz = xregs_banks[bank].regs * xregs_banks[bank].bytes;
+ uint8_t xregs[sz], xregs_cpu[sz], zero_xregs[sz];
+
+ memset(zero_xregs, 0, sz);
+
+ fill_xregs(xregs, bank);
+ for (;;) {
+ xregs_banks[bank].x2c(xregs);
+ my_pause();
+ xregs_banks[bank].c2x(xregs_cpu);
+ if (memcmp(xregs, xregs_cpu, sz) != 0) {
+ pthread_mutex_lock(&show_lock);
+ show_diff(xregs, xregs_cpu, bank);
+ abort();
+ pthread_mutex_unlock(&show_lock);
+ }
+
+ xregs_banks[bank].x2c(zero_xregs);
+ my_pause();
+ xregs_banks[bank].c2x(xregs_cpu);
+ if (memcmp(zero_xregs, xregs_cpu, sz) != 0) {
+ pthread_mutex_lock(&show_lock);
+ show_diff(zero_xregs, xregs_cpu, bank);
+ abort();
+ pthread_mutex_unlock(&show_lock);
+ }
+ }
+ return (NULL);
+}
+
+int
+main(void)
+{
+ struct sigaction sa;
+ int error, i, ncpu, bank;
+
+ max_bank_idx = xregs_banks_max();
+
+ bzero(&sa, sizeof(sa));
+ sa.sa_handler = sigalrm_handler;
+ if (sigaction(SIGALRM, &sa, NULL) == -1) {
+ fprintf(stderr, "sigaction SIGALRM %s\n", strerror(errno));
+ exit(1);
+ }
+
+ bzero(&sa, sizeof(sa));
+ sa.sa_sigaction = sigusr1_handler;
+ sa.sa_flags = SA_SIGINFO;
+ if (sigaction(SIGUSR1, &sa, NULL) == -1) {
+ fprintf(stderr, "sigaction SIGUSR1 %s\n", strerror(errno));
+ exit(1);
+ }
+
+ error = pthread_mutex_init(&show_lock, NULL);
+ if (error != 0) {
+ fprintf(stderr, "pthread_mutex_init %s\n", strerror(error));
+ exit(1);
+ }
+
+ ncpu = sysconf(_SC_NPROCESSORS_ONLN);
+ if (max_bank_idx == 0)
+ ncpu *= 2;
+ bank = 0;
+ pthread_t wt[ncpu];
+nextbank:
+ printf("Starting %d threads for registers bank %s sized [%d][%d]\n", ncpu,
+ xregs_banks[bank].b_name, xregs_banks[bank].regs, xregs_banks[bank].bytes);
+ for (i = 0; i < ncpu; i++) {
+ error = pthread_create(&wt[i], NULL, worker_thread,
+ (void *)(uintptr_t)bank);
+ if (error != 0) {
+ fprintf(stderr, "pthread_create %s\n", strerror(error));
+ }
+ }
+ if (++bank <= max_bank_idx)
+ goto nextbank;
+
+ alarm(TIMO);
+ for (;;) {
+ for (i = 0; i < ncpu; i++) {
+ my_pause();
+ pthread_kill(wt[i], SIGUSR1);
+ }
+ }
+}
diff --git a/tools/tinder.sh b/tools/tinder.sh
index aaca7c8f35b9..615f0d2311af 100755
--- a/tools/tinder.sh
+++ b/tools/tinder.sh
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/tools/README b/tools/tools/README
index 88658f043d4d..45f1d09f2d21 100644
--- a/tools/tools/README
+++ b/tools/tools/README
@@ -1,4 +1,3 @@
-# $FreeBSD$
This directory is for tools.
@@ -18,7 +17,6 @@ cxgbetool A tool for the cxgbe(4) driver.
cxgbtool A tool for the cxgb(4) driver.
drm Tools specific to the DRM/KMS device drivers.
editing Editor modes and the like to help editing FreeBSD code.
-epfe Extract printing filter examples from printing.sgml.
ether_reflect An Ethernet packet reflector for low level testing.
find-sb Scan a disk for possible filesystem superblocks.
gdb_regofs A simple tool that prints out a register offset table
@@ -29,7 +27,6 @@ genericize Turn a kernel config into something that can more easily
be diffed against the appropriate GENERIC.
git Tools to simplify the use of git by committers.
hcomp Compress header files by removing comments and whitespace.
-html-mv Rename HTML generated filenames to human readable filenames.
ifinfo Uses the interface MIB to print out all the information
an interface exports in an ugly form.
indent_wrapper Tool for style(9) checking SVN/GIT patches.
@@ -46,7 +43,6 @@ kernxref Shellscript to cross reference symbols in the LINT kernel.
kttcp An in-kernel version of the ttcp network performance tool
man Scripts useful for working on man pages.
mctest A multicast test program
-mid Create a Message-ID database for mailing lists.
mwl Tools specific to the Marvell 88W8363 support
ncpus Count the number of processors
netmap Test applications for netmap(4)
@@ -55,11 +51,9 @@ npe Tools specific to the Intel IXP4XXX NPE device
pciid Generate src/share/misc/pci_vendors.
pciroms A tool for dumping PCI ROM images. WARNING: alpha quality.
pirtool A tool for dumping the $PIR table on i386 machines at runtime.
-portsinfo Generate list of new ports for last two weeks.
scsi-defects Get at the primary or grown defect list of a SCSI disk.
sysdoc Build a manual page with available sysctls for a specific
kernel configuration.
-tinybsd Script to build FreeBSD embedded systems.
track Track the progress of a world / kernel build
vimage An interim utility for managing the virtualized network
stack infrastructure.
diff --git a/tools/tools/aac/Makefile b/tools/tools/aac/Makefile
index 9f2f4a7249cd..b55c90e832ba 100644
--- a/tools/tools/aac/Makefile
+++ b/tools/tools/aac/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= aac_checkq
MAN=
diff --git a/tools/tools/aac/aac_checkq.c b/tools/tools/aac/aac_checkq.c
index 62eedb20aa51..007f224ba003 100644
--- a/tools/tools/aac/aac_checkq.c
+++ b/tools/tools/aac/aac_checkq.c
@@ -23,9 +23,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/fcntl.h>
#include <sys/ioctl.h>
diff --git a/tools/tools/ansify/Makefile b/tools/tools/ansify/Makefile
index 9519a4ce9fb2..9acbb961830f 100644
--- a/tools/tools/ansify/Makefile
+++ b/tools/tools/ansify/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SCRIPTS= ansify.pl
BINDIR?= /usr/local/bin
diff --git a/tools/tools/ansify/ansify.pl b/tools/tools/ansify/ansify.pl
index e35546548425..3664c7fcb484 100644
--- a/tools/tools/ansify/ansify.pl
+++ b/tools/tools/ansify/ansify.pl
@@ -1,6 +1,6 @@
#!/usr/bin/perl -w
#-
-# Copyright (c) 2005 Dag-Erling Coïdan Smørgrav
+# Copyright (c) 2005 Dag-Erling Smørgrav
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
use v5.6.0;
diff --git a/tools/tools/ath/Makefile b/tools/tools/ath/Makefile
index 1b5543909b63..33dd5b0fe3ba 100644
--- a/tools/tools/ath/Makefile
+++ b/tools/tools/ath/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SUBDIR= arcode athdebug athdecode athkey athpoke athprom athrd athregs athalq
SUBDIR+= athstats ath_prom_read athradar athaggrstats
diff --git a/tools/tools/ath/Makefile.inc b/tools/tools/ath/Makefile.inc
index 0eb8bb998aee..19fde77051c5 100644
--- a/tools/tools/ath/Makefile.inc
+++ b/tools/tools/ath/Makefile.inc
@@ -1,4 +1,3 @@
-# $FreeBSD$
BINDIR= /usr/local/bin
MAN=
diff --git a/tools/tools/ath/arcode/Makefile b/tools/tools/ath/arcode/Makefile
index b18fad426027..9073e1dc2c86 100644
--- a/tools/tools/ath/arcode/Makefile
+++ b/tools/tools/ath/arcode/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= arcode
MAN=
diff --git a/tools/tools/ath/arcode/arcode.c b/tools/tools/ath/arcode/arcode.c
index 463b954637a8..9fc2f98d2308 100644
--- a/tools/tools/ath/arcode/arcode.c
+++ b/tools/tools/ath/arcode/arcode.c
@@ -12,8 +12,6 @@
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $FreeBSD$
*/
#include <stdio.h>
diff --git a/tools/tools/ath/ath_ee_9287_print/9287.c b/tools/tools/ath/ath_ee_9287_print/9287.c
index 3ed970cba65d..149f2c54c375 100644
--- a/tools/tools/ath/ath_ee_9287_print/9287.c
+++ b/tools/tools/ath/ath_ee_9287_print/9287.c
@@ -21,8 +21,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <stdio.h>
diff --git a/tools/tools/ath/ath_ee_9287_print/9287.h b/tools/tools/ath/ath_ee_9287_print/9287.h
index 4cfc4241fdf3..ff14b72c8a91 100644
--- a/tools/tools/ath/ath_ee_9287_print/9287.h
+++ b/tools/tools/ath/ath_ee_9287_print/9287.h
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
#ifndef __9287_H__
#define __9287_H__
diff --git a/tools/tools/ath/ath_ee_9287_print/Makefile b/tools/tools/ath/ath_ee_9287_print/Makefile
index e6765c48a47e..200dbba6052f 100644
--- a/tools/tools/ath/ath_ee_9287_print/Makefile
+++ b/tools/tools/ath/ath_ee_9287_print/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.PATH: ${.CURDIR}/../../../../sys/dev/ath/ath_hal
diff --git a/tools/tools/ath/ath_ee_9287_print/eeprom.c b/tools/tools/ath/ath_ee_9287_print/eeprom.c
index 9e5c865a48da..4c9aec948547 100644
--- a/tools/tools/ath/ath_ee_9287_print/eeprom.c
+++ b/tools/tools/ath/ath_ee_9287_print/eeprom.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <stdio.h>
diff --git a/tools/tools/ath/ath_ee_9287_print/eeprom.h b/tools/tools/ath/ath_ee_9287_print/eeprom.h
index a5fc76a9b58d..3eb8e0da912d 100644
--- a/tools/tools/ath/ath_ee_9287_print/eeprom.h
+++ b/tools/tools/ath/ath_ee_9287_print/eeprom.h
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
#ifndef __EEPROM_H__
#define __EEPROM_H__
diff --git a/tools/tools/ath/ath_ee_9287_print/main.c b/tools/tools/ath/ath_ee_9287_print/main.c
index 128b01fe4092..3e9bc5f3d77e 100644
--- a/tools/tools/ath/ath_ee_9287_print/main.c
+++ b/tools/tools/ath/ath_ee_9287_print/main.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <stdio.h>
diff --git a/tools/tools/ath/ath_ee_9300_print/Makefile b/tools/tools/ath/ath_ee_9300_print/Makefile
index ad68eac3f9fb..3df47a96efa8 100644
--- a/tools/tools/ath/ath_ee_9300_print/Makefile
+++ b/tools/tools/ath/ath_ee_9300_print/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.PATH: ${.CURDIR}/../../../../sys/dev/ath/ath_hal
diff --git a/tools/tools/ath/ath_ee_9300_print/Makefile.depend b/tools/tools/ath/ath_ee_9300_print/Makefile.depend
index 8d409f5263ac..6ef78fac5cbf 100644
--- a/tools/tools/ath/ath_ee_9300_print/Makefile.depend
+++ b/tools/tools/ath/ath_ee_9300_print/Makefile.depend
@@ -1,4 +1,3 @@
-# $FreeBSD$
# Autogenerated - do NOT edit!
DIRDEPS = \
diff --git a/tools/tools/ath/ath_ee_9300_print/main.c b/tools/tools/ath/ath_ee_9300_print/main.c
index 38dd879b55a1..82ecd982a85d 100644
--- a/tools/tools/ath/ath_ee_9300_print/main.c
+++ b/tools/tools/ath/ath_ee_9300_print/main.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <stdio.h>
diff --git a/tools/tools/ath/ath_ee_v14_print/Makefile b/tools/tools/ath/ath_ee_v14_print/Makefile
index 34e87782897c..ebb126388cfc 100644
--- a/tools/tools/ath/ath_ee_v14_print/Makefile
+++ b/tools/tools/ath/ath_ee_v14_print/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.PATH: ${.CURDIR}/../../../../sys/dev/ath/ath_hal
diff --git a/tools/tools/ath/ath_ee_v14_print/ath_ee_v14_print.c b/tools/tools/ath/ath_ee_v14_print/ath_ee_v14_print.c
index 1340c78a814a..84587331269f 100644
--- a/tools/tools/ath/ath_ee_v14_print/ath_ee_v14_print.c
+++ b/tools/tools/ath/ath_ee_v14_print/ath_ee_v14_print.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <stdio.h>
diff --git a/tools/tools/ath/ath_ee_v4k_print/Makefile b/tools/tools/ath/ath_ee_v4k_print/Makefile
index 89e415603bb9..2bf0d969b1ca 100644
--- a/tools/tools/ath/ath_ee_v4k_print/Makefile
+++ b/tools/tools/ath/ath_ee_v4k_print/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.PATH: ${.CURDIR}/../../../../sys/dev/ath/ath_hal
diff --git a/tools/tools/ath/ath_ee_v4k_print/eeprom.c b/tools/tools/ath/ath_ee_v4k_print/eeprom.c
index 9e5c865a48da..4c9aec948547 100644
--- a/tools/tools/ath/ath_ee_v4k_print/eeprom.c
+++ b/tools/tools/ath/ath_ee_v4k_print/eeprom.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <stdio.h>
diff --git a/tools/tools/ath/ath_ee_v4k_print/eeprom.h b/tools/tools/ath/ath_ee_v4k_print/eeprom.h
index a5fc76a9b58d..3eb8e0da912d 100644
--- a/tools/tools/ath/ath_ee_v4k_print/eeprom.h
+++ b/tools/tools/ath/ath_ee_v4k_print/eeprom.h
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
#ifndef __EEPROM_H__
#define __EEPROM_H__
diff --git a/tools/tools/ath/ath_ee_v4k_print/main.c b/tools/tools/ath/ath_ee_v4k_print/main.c
index 5ce3c3347766..b7dd1789f9ee 100644
--- a/tools/tools/ath/ath_ee_v4k_print/main.c
+++ b/tools/tools/ath/ath_ee_v4k_print/main.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <stdio.h>
diff --git a/tools/tools/ath/ath_ee_v4k_print/v4k.c b/tools/tools/ath/ath_ee_v4k_print/v4k.c
index 72dc142fcc01..92ef0ebaf7dd 100644
--- a/tools/tools/ath/ath_ee_v4k_print/v4k.c
+++ b/tools/tools/ath/ath_ee_v4k_print/v4k.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/tools/ath/ath_ee_v4k_print/v4k.h b/tools/tools/ath/ath_ee_v4k_print/v4k.h
index efe2dc945b86..356312dc1aa8 100644
--- a/tools/tools/ath/ath_ee_v4k_print/v4k.h
+++ b/tools/tools/ath/ath_ee_v4k_print/v4k.h
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
#ifndef __V4K_H__
#define __V4K_H__
diff --git a/tools/tools/ath/ath_prom_read/Makefile b/tools/tools/ath/ath_prom_read/Makefile
index 52512fc7a860..bc6fdd7dd246 100644
--- a/tools/tools/ath/ath_prom_read/Makefile
+++ b/tools/tools/ath/ath_prom_read/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= ath_prom_read
diff --git a/tools/tools/ath/ath_prom_read/ath_prom_read.c b/tools/tools/ath/ath_prom_read/ath_prom_read.c
index 3111021f56e6..40a7884a2903 100644
--- a/tools/tools/ath/ath_prom_read/ath_prom_read.c
+++ b/tools/tools/ath/ath_prom_read/ath_prom_read.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include "diag.h"
diff --git a/tools/tools/ath/athaggrstats/Makefile b/tools/tools/ath/athaggrstats/Makefile
index 42b195cb440e..a615a3c3f1ec 100644
--- a/tools/tools/ath/athaggrstats/Makefile
+++ b/tools/tools/ath/athaggrstats/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.PATH: ${.CURDIR}/../../../../sys/dev/ath/ath_hal
diff --git a/tools/tools/ath/athaggrstats/athaggrstats.c b/tools/tools/ath/athaggrstats/athaggrstats.c
index 345ff9a419c9..30a214d65e36 100644
--- a/tools/tools/ath/athaggrstats/athaggrstats.c
+++ b/tools/tools/ath/athaggrstats/athaggrstats.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
diff --git a/tools/tools/ath/athaggrstats/athaggrstats.h b/tools/tools/ath/athaggrstats/athaggrstats.h
index c58a2eecb343..8bafd36ceaa8 100644
--- a/tools/tools/ath/athaggrstats/athaggrstats.h
+++ b/tools/tools/ath/athaggrstats/athaggrstats.h
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#ifndef _ATHAGGRSTATS_H_
diff --git a/tools/tools/ath/athaggrstats/main.c b/tools/tools/ath/athaggrstats/main.c
index 6a0de98b0069..0e4e718ff593 100644
--- a/tools/tools/ath/athaggrstats/main.c
+++ b/tools/tools/ath/athaggrstats/main.c
@@ -26,8 +26,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/tools/ath/athalq/Makefile b/tools/tools/ath/athalq/Makefile
index 7370b7ac90b7..e8f27327e706 100644
--- a/tools/tools/ath/athalq/Makefile
+++ b/tools/tools/ath/athalq/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= athalq
MAN=
diff --git a/tools/tools/ath/athalq/ar5210_ds.c b/tools/tools/ath/athalq/ar5210_ds.c
index 624092ec45e3..5db5dcaf9bcf 100644
--- a/tools/tools/ath/athalq/ar5210_ds.c
+++ b/tools/tools/ath/athalq/ar5210_ds.c
@@ -16,8 +16,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
diff --git a/tools/tools/ath/athalq/ar5210_ds.h b/tools/tools/ath/athalq/ar5210_ds.h
index 754a1372c521..76c368707ff6 100644
--- a/tools/tools/ath/athalq/ar5210_ds.h
+++ b/tools/tools/ath/athalq/ar5210_ds.h
@@ -13,8 +13,6 @@
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $FreeBSD$
*/
#ifndef __AR5210_DS_H__
#define __AR5210_DS_H__
diff --git a/tools/tools/ath/athalq/ar5211_ds.c b/tools/tools/ath/athalq/ar5211_ds.c
index d389b5a55ca8..844da8f1cf8b 100644
--- a/tools/tools/ath/athalq/ar5211_ds.c
+++ b/tools/tools/ath/athalq/ar5211_ds.c
@@ -16,8 +16,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
diff --git a/tools/tools/ath/athalq/ar5211_ds.h b/tools/tools/ath/athalq/ar5211_ds.h
index 96d22ac5c2b0..04b15edc6726 100644
--- a/tools/tools/ath/athalq/ar5211_ds.h
+++ b/tools/tools/ath/athalq/ar5211_ds.h
@@ -13,8 +13,6 @@
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $FreeBSD$
*/
#ifndef __AR5211_DS_H__
#define __AR5211_DS_H__
diff --git a/tools/tools/ath/athalq/ar5212_ds.c b/tools/tools/ath/athalq/ar5212_ds.c
index f752f151d416..b8eb978a2d0e 100644
--- a/tools/tools/ath/athalq/ar5212_ds.c
+++ b/tools/tools/ath/athalq/ar5212_ds.c
@@ -16,8 +16,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
diff --git a/tools/tools/ath/athalq/ar5212_ds.h b/tools/tools/ath/athalq/ar5212_ds.h
index 508046cd0536..af1ee61e1246 100644
--- a/tools/tools/ath/athalq/ar5212_ds.h
+++ b/tools/tools/ath/athalq/ar5212_ds.h
@@ -13,8 +13,6 @@
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $FreeBSD$
*/
#ifndef __AR5212_DS_H__
#define __AR5212_DS_H__
diff --git a/tools/tools/ath/athalq/ar5416_ds.c b/tools/tools/ath/athalq/ar5416_ds.c
index c7d1bb42ec59..bb1d7e9e56d7 100644
--- a/tools/tools/ath/athalq/ar5416_ds.c
+++ b/tools/tools/ath/athalq/ar5416_ds.c
@@ -16,8 +16,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
diff --git a/tools/tools/ath/athalq/ar5416_ds.h b/tools/tools/ath/athalq/ar5416_ds.h
index 76d816346203..e5a6b981e039 100644
--- a/tools/tools/ath/athalq/ar5416_ds.h
+++ b/tools/tools/ath/athalq/ar5416_ds.h
@@ -13,8 +13,6 @@
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $FreeBSD$
*/
#ifndef __AR5416_DS_H__
#define __AR5416_DS_H__
diff --git a/tools/tools/ath/athalq/ar5416_ds_tdma.c b/tools/tools/ath/athalq/ar5416_ds_tdma.c
index 42a61cb58642..febea0f8ef3d 100644
--- a/tools/tools/ath/athalq/ar5416_ds_tdma.c
+++ b/tools/tools/ath/athalq/ar5416_ds_tdma.c
@@ -16,8 +16,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
diff --git a/tools/tools/ath/athalq/ar9300_ds.c b/tools/tools/ath/athalq/ar9300_ds.c
index 541ee39eaf7c..18a077e8594e 100644
--- a/tools/tools/ath/athalq/ar9300_ds.c
+++ b/tools/tools/ath/athalq/ar9300_ds.c
@@ -15,8 +15,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
diff --git a/tools/tools/ath/athalq/ar9300_ds.h b/tools/tools/ath/athalq/ar9300_ds.h
index d0394cb3fe22..e4971539b42d 100644
--- a/tools/tools/ath/athalq/ar9300_ds.h
+++ b/tools/tools/ath/athalq/ar9300_ds.h
@@ -12,8 +12,6 @@
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $FreeBSD$
*/
#ifndef __AR9300_DS_H__
#define __AR9300_DS_H__
diff --git a/tools/tools/ath/athalq/main.c b/tools/tools/ath/athalq/main.c
index c8c2c335f561..5319942e0026 100644
--- a/tools/tools/ath/athalq/main.c
+++ b/tools/tools/ath/athalq/main.c
@@ -15,8 +15,6 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
diff --git a/tools/tools/ath/athalq/tdma.c b/tools/tools/ath/athalq/tdma.c
index 55772de33f9d..8f18fa1b0628 100644
--- a/tools/tools/ath/athalq/tdma.c
+++ b/tools/tools/ath/athalq/tdma.c
@@ -16,8 +16,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
diff --git a/tools/tools/ath/athalq/tdma.h b/tools/tools/ath/athalq/tdma.h
index 25fa7dea44eb..3cdda97f8277 100644
--- a/tools/tools/ath/athalq/tdma.h
+++ b/tools/tools/ath/athalq/tdma.h
@@ -13,8 +13,6 @@
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $FreeBSD$
*/
#ifndef __TDMA_H__
#define __TDMA_H__
diff --git a/tools/tools/ath/athalq/txdiff.pl b/tools/tools/ath/athalq/txdiff.pl
index dff940503a31..a3980f23e6a1 100755
--- a/tools/tools/ath/athalq/txdiff.pl
+++ b/tools/tools/ath/athalq/txdiff.pl
@@ -2,8 +2,6 @@
use strict;
-# $FreeBSD$
-
# [1360537229.753890] [100494] TXD
# [1360537229.754292] [100494] TXSTATUS: TxDone=1, TS=0x5ccfa5c7
diff --git a/tools/tools/ath/athani/Makefile b/tools/tools/ath/athani/Makefile
index b475a6b0ed63..ba233de9aafa 100644
--- a/tools/tools/ath/athani/Makefile
+++ b/tools/tools/ath/athani/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= athani
MAN=
diff --git a/tools/tools/ath/athani/main.c b/tools/tools/ath/athani/main.c
index 5c29a0665f62..85ecaa49b160 100644
--- a/tools/tools/ath/athani/main.c
+++ b/tools/tools/ath/athani/main.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include "diag.h"
diff --git a/tools/tools/ath/athctrl.sh b/tools/tools/ath/athctrl.sh
index 5adee1c3c4a4..82710a74809e 100644
--- a/tools/tools/ath/athctrl.sh
+++ b/tools/tools/ath/athctrl.sh
@@ -4,7 +4,6 @@
# point-to-point use at a specific distance. Based on a
# program by Gunter Burchardt.
#
-# $FreeBSD$
#
DEV=ath0
d=0
diff --git a/tools/tools/ath/athdebug/Makefile b/tools/tools/ath/athdebug/Makefile
index 0b75f26662b0..b50c63891e20 100644
--- a/tools/tools/ath/athdebug/Makefile
+++ b/tools/tools/ath/athdebug/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= athdebug
diff --git a/tools/tools/ath/athdebug/athdebug.c b/tools/tools/ath/athdebug/athdebug.c
index 5dba663ecb76..27e3b73b68ea 100644
--- a/tools/tools/ath/athdebug/athdebug.c
+++ b/tools/tools/ath/athdebug/athdebug.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/tools/ath/athdecode/Makefile b/tools/tools/ath/athdecode/Makefile
index d829b52890c8..5687e445c6a9 100644
--- a/tools/tools/ath/athdecode/Makefile
+++ b/tools/tools/ath/athdecode/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
PROG= athdecode
diff --git a/tools/tools/ath/athdecode/main.c b/tools/tools/ath/athdecode/main.c
index e565698f4fbf..5693f04ca9a2 100644
--- a/tools/tools/ath/athdecode/main.c
+++ b/tools/tools/ath/athdecode/main.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include "diag.h"
diff --git a/tools/tools/ath/athkey/Makefile b/tools/tools/ath/athkey/Makefile
index 071caa686fd4..ef129fa5ecf8 100644
--- a/tools/tools/ath/athkey/Makefile
+++ b/tools/tools/ath/athkey/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= athkey
diff --git a/tools/tools/ath/athkey/athkey.c b/tools/tools/ath/athkey/athkey.c
index 7604e4e6da7c..5a7db3a9283b 100644
--- a/tools/tools/ath/athkey/athkey.c
+++ b/tools/tools/ath/athkey/athkey.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include "diag.h"
diff --git a/tools/tools/ath/athpoke/Makefile b/tools/tools/ath/athpoke/Makefile
index 39295606318a..aede5d191135 100644
--- a/tools/tools/ath/athpoke/Makefile
+++ b/tools/tools/ath/athpoke/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= athpoke
LINKS= ${BINDIR}/${PROG} ${BINDIR}/athpeek
diff --git a/tools/tools/ath/athpoke/athpoke.c b/tools/tools/ath/athpoke/athpoke.c
index 9f19f47d60d6..e54388587ca8 100644
--- a/tools/tools/ath/athpoke/athpoke.c
+++ b/tools/tools/ath/athpoke/athpoke.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include "diag.h"
diff --git a/tools/tools/ath/athpow/Makefile b/tools/tools/ath/athpow/Makefile
index f3b36731db16..6ed6f9d455f4 100644
--- a/tools/tools/ath/athpow/Makefile
+++ b/tools/tools/ath/athpow/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= athpow
diff --git a/tools/tools/ath/athpow/athpow.c b/tools/tools/ath/athpow/athpow.c
index 2b2683d9e6da..85e0275b952a 100644
--- a/tools/tools/ath/athpow/athpow.c
+++ b/tools/tools/ath/athpow/athpow.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include "diag.h"
diff --git a/tools/tools/ath/athprom/Makefile b/tools/tools/ath/athprom/Makefile
index 82a5d2bb294d..6af0225d5f3c 100644
--- a/tools/tools/ath/athprom/Makefile
+++ b/tools/tools/ath/athprom/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= athprom
diff --git a/tools/tools/ath/athprom/athprom.c b/tools/tools/ath/athprom/athprom.c
index 1010c0bf5315..015035a151f3 100644
--- a/tools/tools/ath/athprom/athprom.c
+++ b/tools/tools/ath/athprom/athprom.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include "diag.h"
diff --git a/tools/tools/ath/athprom/eeprom-14 b/tools/tools/ath/athprom/eeprom-14
index ef2b1c69dd03..33087edcf186 100644
--- a/tools/tools/ath/athprom/eeprom-14
+++ b/tools/tools/ath/athprom/eeprom-14
@@ -1,4 +1,3 @@
-# $FreeBSD$
#
# v14 format EEPROM template (AR5416 and later 11n parts)
#
diff --git a/tools/tools/ath/athprom/eeprom-3 b/tools/tools/ath/athprom/eeprom-3
index 73c7033705d6..af1e9a01aa60 100644
--- a/tools/tools/ath/athprom/eeprom-3
+++ b/tools/tools/ath/athprom/eeprom-3
@@ -1,4 +1,3 @@
-# $FreeBSD$
#
# v3 format EEPROM template
#
diff --git a/tools/tools/ath/athprom/eeprom-4 b/tools/tools/ath/athprom/eeprom-4
index 0d4708bebc63..0fe2fcd9d3f4 100644
--- a/tools/tools/ath/athprom/eeprom-4
+++ b/tools/tools/ath/athprom/eeprom-4
@@ -1,4 +1,3 @@
-# $FreeBSD$
#
# v4 format EEPROM template
#
diff --git a/tools/tools/ath/athprom/eeprom-5 b/tools/tools/ath/athprom/eeprom-5
index b48a42ad3e91..6675a3a09ff3 100644
--- a/tools/tools/ath/athprom/eeprom-5
+++ b/tools/tools/ath/athprom/eeprom-5
@@ -1,4 +1,3 @@
-# $FreeBSD$
#
# v5 format EEPROM template
#
diff --git a/tools/tools/ath/athradar/Makefile b/tools/tools/ath/athradar/Makefile
index 3e24a438fe69..0b1604a0239a 100644
--- a/tools/tools/ath/athradar/Makefile
+++ b/tools/tools/ath/athradar/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= athradar
diff --git a/tools/tools/ath/athradar/athradar.c b/tools/tools/ath/athradar/athradar.c
index 69f441658a85..f04ada9697f6 100644
--- a/tools/tools/ath/athradar/athradar.c
+++ b/tools/tools/ath/athradar/athradar.c
@@ -21,8 +21,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include "diag.h"
diff --git a/tools/tools/ath/athratestats/Makefile b/tools/tools/ath/athratestats/Makefile
index c924370a31e7..96a49433a698 100644
--- a/tools/tools/ath/athratestats/Makefile
+++ b/tools/tools/ath/athratestats/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.PATH: ${.CURDIR}/../../../../sys/dev/ath/ath_hal
.PATH: ${.CURDIR}/../../../../sys/dev/ath/
diff --git a/tools/tools/ath/athratestats/main.c b/tools/tools/ath/athratestats/main.c
index 317b025c1854..c3b101442155 100644
--- a/tools/tools/ath/athratestats/main.c
+++ b/tools/tools/ath/athratestats/main.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include "opt_ah.h"
diff --git a/tools/tools/ath/athrd/Makefile b/tools/tools/ath/athrd/Makefile
index 352d712e621a..eb8d42c84028 100644
--- a/tools/tools/ath/athrd/Makefile
+++ b/tools/tools/ath/athrd/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.PATH: ${.CURDIR}/../../../../sys/dev/ath/ath_hal
diff --git a/tools/tools/ath/athrd/athrd.1 b/tools/tools/ath/athrd/athrd.1
index 9f72fc10da15..346727366cf3 100644
--- a/tools/tools/ath/athrd/athrd.1
+++ b/tools/tools/ath/athrd/athrd.1
@@ -25,8 +25,6 @@
.\" 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 DAMAGES.
-.\"
-.\" $FreeBSD$
.\"/
.Dd January 27, 2009
.Dt ATHRD 1
diff --git a/tools/tools/ath/athrd/athrd.c b/tools/tools/ath/athrd/athrd.c
index feb020eb9291..ec69937b0e12 100644
--- a/tools/tools/ath/athrd/athrd.c
+++ b/tools/tools/ath/athrd/athrd.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include "opt_ah.h"
diff --git a/tools/tools/ath/athrd/run.sh b/tools/tools/ath/athrd/run.sh
index 3e1e01a27be4..d7dbf9c0dda8 100755
--- a/tools/tools/ath/athrd/run.sh
+++ b/tools/tools/ath/athrd/run.sh
@@ -1,4 +1,3 @@
-# $FreeBSD$
COUNTRIES=${@:-"
DB NA AL DZ AR AM AU AT AZ BH BY BE BZ BO BR BN BG
diff --git a/tools/tools/ath/athregs/Makefile b/tools/tools/ath/athregs/Makefile
index 886354ae9cd2..8248b193f36e 100644
--- a/tools/tools/ath/athregs/Makefile
+++ b/tools/tools/ath/athregs/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= athregs
diff --git a/tools/tools/ath/athregs/dumpregs.c b/tools/tools/ath/athregs/dumpregs.c
index a5f510af165f..15b08f4bd3b8 100644
--- a/tools/tools/ath/athregs/dumpregs.c
+++ b/tools/tools/ath/athregs/dumpregs.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include "diag.h"
diff --git a/tools/tools/ath/athspectral/Makefile b/tools/tools/ath/athspectral/Makefile
index e13891fec72c..0311d4a673f5 100644
--- a/tools/tools/ath/athspectral/Makefile
+++ b/tools/tools/ath/athspectral/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= athspectral
diff --git a/tools/tools/ath/athspectral/athspectral.c b/tools/tools/ath/athspectral/athspectral.c
index 48c497c481b6..66011c87a5dc 100644
--- a/tools/tools/ath/athspectral/athspectral.c
+++ b/tools/tools/ath/athspectral/athspectral.c
@@ -21,8 +21,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include "diag.h"
diff --git a/tools/tools/ath/athstats/Makefile b/tools/tools/ath/athstats/Makefile
index f0243f75379d..0c2b74967b9f 100644
--- a/tools/tools/ath/athstats/Makefile
+++ b/tools/tools/ath/athstats/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
MAN=
diff --git a/tools/tools/ath/athstats/athstats.c b/tools/tools/ath/athstats/athstats.c
index 34e95b7c3885..d4bc004383d0 100644
--- a/tools/tools/ath/athstats/athstats.c
+++ b/tools/tools/ath/athstats/athstats.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include "opt_ah.h"
diff --git a/tools/tools/ath/athstats/athstats.h b/tools/tools/ath/athstats/athstats.h
index 543bec92cfb9..f65db171ce3c 100644
--- a/tools/tools/ath/athstats/athstats.h
+++ b/tools/tools/ath/athstats/athstats.h
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#ifndef _ATHSTATS_H_
diff --git a/tools/tools/ath/athstats/main.c b/tools/tools/ath/athstats/main.c
index 23bdb25981d5..0bfce9342cd7 100644
--- a/tools/tools/ath/athstats/main.c
+++ b/tools/tools/ath/athstats/main.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/tools/ath/athsurvey/Makefile b/tools/tools/ath/athsurvey/Makefile
index 6c0106095016..125fa6a839e2 100644
--- a/tools/tools/ath/athsurvey/Makefile
+++ b/tools/tools/ath/athsurvey/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= athsurvey
diff --git a/tools/tools/ath/athsurvey/athsurvey.c b/tools/tools/ath/athsurvey/athsurvey.c
index df2ae4d4dc8b..4918259b4c43 100644
--- a/tools/tools/ath/athsurvey/athsurvey.c
+++ b/tools/tools/ath/athsurvey/athsurvey.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include "diag.h"
diff --git a/tools/tools/ath/common/ah_osdep.h b/tools/tools/ath/common/ah_osdep.h
index 93b018503def..b5819e1ced34 100644
--- a/tools/tools/ath/common/ah_osdep.h
+++ b/tools/tools/ath/common/ah_osdep.h
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#ifndef _ATH_AH_OSDEP_H_
#define _ATH_AH_OSDEP_H_
diff --git a/tools/tools/ath/common/ctrl.c b/tools/tools/ath/common/ctrl.c
index e5de77d980f8..419e6fe8277e 100644
--- a/tools/tools/ath/common/ctrl.c
+++ b/tools/tools/ath/common/ctrl.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/tools/ath/common/ctrl.h b/tools/tools/ath/common/ctrl.h
index ca95e58959a5..a24b46608c76 100644
--- a/tools/tools/ath/common/ctrl.h
+++ b/tools/tools/ath/common/ctrl.h
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#ifndef __ATH_CTRL_H__
#define __ATH_CTRL_H__
diff --git a/tools/tools/ath/common/diag.h b/tools/tools/ath/common/diag.h
index c2af7b0f70b6..5eb2970f5ab6 100644
--- a/tools/tools/ath/common/diag.h
+++ b/tools/tools/ath/common/diag.h
@@ -27,8 +27,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
#include <sys/file.h>
diff --git a/tools/tools/ath/common/dumpregs.h b/tools/tools/ath/common/dumpregs.h
index 88689cf766a3..68f759405c91 100644
--- a/tools/tools/ath/common/dumpregs.h
+++ b/tools/tools/ath/common/dumpregs.h
@@ -27,8 +27,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#define __constructor __attribute__((constructor))
diff --git a/tools/tools/ath/common/dumpregs_5210.c b/tools/tools/ath/common/dumpregs_5210.c
index ac6e8041e08e..19fc46bd1ba6 100644
--- a/tools/tools/ath/common/dumpregs_5210.c
+++ b/tools/tools/ath/common/dumpregs_5210.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
diff --git a/tools/tools/ath/common/dumpregs_5211.c b/tools/tools/ath/common/dumpregs_5211.c
index ae8e2329f2a7..e6e9d1acd564 100644
--- a/tools/tools/ath/common/dumpregs_5211.c
+++ b/tools/tools/ath/common/dumpregs_5211.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
diff --git a/tools/tools/ath/common/dumpregs_5212.c b/tools/tools/ath/common/dumpregs_5212.c
index 33f67d41d945..bfef374b0ea2 100644
--- a/tools/tools/ath/common/dumpregs_5212.c
+++ b/tools/tools/ath/common/dumpregs_5212.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
diff --git a/tools/tools/ath/common/dumpregs_5416.c b/tools/tools/ath/common/dumpregs_5416.c
index 31bf21cdc2c9..985f5b5588ac 100644
--- a/tools/tools/ath/common/dumpregs_5416.c
+++ b/tools/tools/ath/common/dumpregs_5416.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
diff --git a/tools/tools/atsectl/Makefile b/tools/tools/atsectl/Makefile
deleted file mode 100644
index afe79a91af22..000000000000
--- a/tools/tools/atsectl/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-# $FreeBSD$
-
-PROG= atsectl
-
-LIBADD= md
-
-BINDIR?= /usr/sbin
-
-MAN=
-
-.include <bsd.prog.mk>
diff --git a/tools/tools/atsectl/atsectl.c b/tools/tools/atsectl/atsectl.c
deleted file mode 100644
index 6e593c93382b..000000000000
--- a/tools/tools/atsectl/atsectl.c
+++ /dev/null
@@ -1,327 +0,0 @@
-/*-
- * Copyright (c) 2012 SRI International
- * Copyright (c) 2013 Bjoern A. Zeeb
- * All rights reserved.
- *
- * This software was developed by SRI International and the University of
- * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
- * ("CTSRD"), as part of the DARPA CRASH research programme.
- *
- * This software was developed by SRI International and the University of
- * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-11-C-0249)
- * ("MRC2"), as part of the DARPA MRC research programme.
- *
- * 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.
- *
- * $ FreeBSD: head/usr.sbin/isfctl/isfctl.c 239685 2012-08-25 18:08:20Z brooks $
- * $FreeBSD$
- */
-
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <sys/endian.h>
-#include <sys/errno.h>
-#include <sys/socket.h>
-
-#include <assert.h>
-#include <err.h>
-#include <fcntl.h>
-#include <inttypes.h>
-#include <kenv.h>
-#include <md5.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <net/if_dl.h>
-#include <net/ethernet.h>
-
-
-#define CONFIG_BLOCK (128 * 1024)
-#define DEV_CFI0_PATH "/dev/cfi0"
-
-static u_char block[CONFIG_BLOCK];
-
-#define UNKNOWN 0
-#define CFI 1
-static int fdev = UNKNOWN;
-static const char *fdevs[] = {
- "UNKNOWN",
- "CFI"
-};
-static int gflag;
-
-/* XXX-BZ should include if_atsereg.h. */
-#define ALTERA_ETHERNET_OPTION_BITS_OFF 0x00008000
-#define ALTERA_ETHERNET_OPTION_BITS_LEN 0x00007fff
-
-
-static void
-usage(int rc)
-{
-
- fprintf(stderr, "usage: atsectl [-ghlu] [-s <etheraddr>]\n");
- exit(rc);
-}
-
-static void
-read_block(void)
-{
- int fd;
-
- fd = open(DEV_CFI0_PATH, O_RDONLY, 0);
- if (fd == -1)
- errx(1, "Failed to open " DEV_CFI0_PATH);
- else
- fdev = CFI;
-
- if (read(fd, block, sizeof(block)) != CONFIG_BLOCK)
- errx(1, "Short read from %s", fdevs[fdev]);
-
- close(fd);
-}
-
-static void
-write_block(void)
-{
- int fd;
-
- assert(fdev == CFI);
-
- fd = open(DEV_CFI0_PATH, O_WRONLY, 0);
- if (fd == -1)
- errx(1, "Failed to open " DEV_CFI0_PATH);
-
- if (write(fd, block, sizeof(block)) != CONFIG_BLOCK)
- errx(1, "Short write on %s", fdevs[fdev]);
-
- close(fd);
-}
-
-static void
-print_eaddr(void)
-{
- uint32_t safe;
-
- /*
- * XXX-BZ we are on our own: keep in sync with atse(4).
- * Everything past the first address is a guess currently.
- * So we will always only write one address into there.
- */
-#if 0
-root@cheri1:/root # dd if=/dev/isf0 bs=32k skip=1 count=1 | hd
-00000000 fe 5a 00 00 00 07 ed ff ed 15 ff ff c0 a8 01 ea |.Z..............|
-00000010 ff ff ff ff ff ff ff 00 c0 a8 01 ff ff ff ff ff |................|
-00000020 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
-*
-1+0 records in
-1+0 records out
-32768 bytes transferred in 0.053036 secs (617845 bytes/sec)
-00008000
-#endif
-
- safe = block[ALTERA_ETHERNET_OPTION_BITS_OFF + 0] << 24;
- safe |= block[ALTERA_ETHERNET_OPTION_BITS_OFF + 1] << 16;
- safe |= block[ALTERA_ETHERNET_OPTION_BITS_OFF + 2] << 8;
- safe |= block[ALTERA_ETHERNET_OPTION_BITS_OFF + 3];
-
- printf("%02x:%02x:%02x:%02x:%02x:%02x%s\n",
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 4],
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 5],
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 6],
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 7],
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 8],
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 9],
- (safe != le32toh(0x00005afe)) ?
- " (invalid control pattern)" : "");
-}
-
-static void
-list(void)
-{
-
- read_block();
- print_eaddr();
- exit(0);
-}
-
-static void
-_set(uint8_t *eaddr)
-{
- uint8_t buf[32];
- MD5_CTX ctx;
- int rc;
-
- printf("Original:\n");
- read_block();
- print_eaddr();
-
- if (eaddr == NULL) {
- /* cfi0.factory_ppr="0x0123456789abcdef" */
- rc = kenv(KENV_GET, "cfi0.factory_ppr", buf, sizeof(buf));
- if (rc == -1)
- err(1, "Could not find Intel flash PPR serial\n");
-
- MD5Init(&ctx);
- MD5Update(&ctx, buf+2, 16);
- MD5Final(buf, &ctx);
-
- /* Set the device specifc address (prefix). */
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 7] =
- buf[14] << 4 | buf[13] >> 4;
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 8] =
- buf[13] << 4 | buf[12] >> 4;
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 9] = buf[12] << 4;
- /* Just make sure the last half-byte is really zero. */
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 9] &= ~0x0f;
-
- /* Set (or clear) locally administred flag. */
- if (gflag == 0)
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 4] |= 2;
- else
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 4] &= ~2;
- /* Make sure it is not a MC address by accident we start with. */
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 4] &= ~1;
- } else {
- int e;
-
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 4] = eaddr[0];
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 5] = eaddr[1];
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 6] = eaddr[2];
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 7] = eaddr[3];
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 8] = eaddr[4];
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 9] = eaddr[5];
-
- e = 0;
- if ((eaddr[5] & 0xf) != 0x0) {
- e++;
- warnx("WARN: Selected Ethernet Address is "
- "not multi-MAC compatible.\n");
- }
- if (gflag == 0 && ((eaddr[0] & 0x2) == 0x0)) {
- e++;
- warnx("WARN: Locally administered bit not set.\n");
- }
- if ((eaddr[0] & 0x1) != 0x0) {
- e++;
- warnx("WARN: You are setting a Multicast address.\n");
- }
- if (e != 0)
- warnx("Suggesting to re-run with: "
- "%02x:%02x:%02x:%02x:%02x:%02x",
- (eaddr[0] & 0xfe) | 0x2,
- eaddr[1], eaddr[2], eaddr[3], eaddr[4],
- eaddr[5] & 0xf0);
- }
-
- /* Write the "safe" out, just to be sure. */
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 0] = 0xfe;
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 1] = 0x5a;
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 2] = 0x00;
- block[ALTERA_ETHERNET_OPTION_BITS_OFF + 3] = 0x00;
-
- write_block();
-
- printf("Updated to:\n");
- read_block();
- print_eaddr();
- exit(0);
-}
-
-static void
-update(void)
-{
-
- _set(NULL);
- exit(0);
-}
-
-static void
-set(char *eaddrstr)
-{
- uint8_t eaddr[ETHER_ADDR_LEN];
- char *p;
- long l;
- int i;
-
- memset(eaddr, 0x00, ETHER_ADDR_LEN);
- i = 0;
- while ((p = strsep(&eaddrstr, ":")) != NULL && i < ETHER_ADDR_LEN) {
- errno = 0;
- l = strtol(p, (char **)NULL, 16);
- if (l == 0 && errno != 0)
- errx(1, "Failed to parse Ethernet address given: %s\n", p);
- if (l < 0x00 || l > 0xff)
- errx(1, "Failed to parse Ethernet address given: %lx\n", l);
- eaddr[i++] = strtol(p, (char **)NULL, 16);
- }
-
- if (i != ETHER_ADDR_LEN)
- errx(1, "Failed to parse Ethernet address given\n");
-
- _set(eaddr);
- exit(0);
-}
-
-int
-main(int argc, char **argv)
-{
- char ch, *s;
-
- s = NULL;
- while ((ch = getopt(argc, argv, "ghlus:")) != -1) {
- switch (ch) {
- case 'g':
- gflag = 1;
- break;
- case 'h':
- usage(0);
- /* NOTREACHED */
- break;
- case 'l':
- list();
- /* NOTREACHED */
- break;
- case 'u':
- update();
- /* NOTREACHED */
- break;
-
- case 's':
- set(optarg);
- /* NOTREACHED */
- break;
-
- case '?':
- default:
- usage(1);
- /* NOTREACHED */
- break;
- }
- }
-
- usage(1);
- /* NOTREACHED */
-
- return (0);
-}
diff --git a/tools/tools/bhyve/Makefile b/tools/tools/bhyve/Makefile
new file mode 100644
index 000000000000..3d9ea4167bab
--- /dev/null
+++ b/tools/tools/bhyve/Makefile
@@ -0,0 +1,8 @@
+PROGS= fwctl_fetch
+MAN=
+BINDIR?= /usr/local/bin
+
+# fwctl_fetch: fetch the value of fwctl nodes from a guest
+LIBADD.fwctl_fetch+= util
+
+.include <bsd.progs.mk>
diff --git a/tools/tools/bhyve/fwctl_fetch.c b/tools/tools/bhyve/fwctl_fetch.c
new file mode 100644
index 000000000000..1f504dc499cf
--- /dev/null
+++ b/tools/tools/bhyve/fwctl_fetch.c
@@ -0,0 +1,143 @@
+/*-
+ * Copyright (c) 2023 John Baldwin <jhb@FreeBSD.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+/*
+ * Fetch the value of fwctl nodes from a guest.
+ *
+ * Usage: fwctl_fetch <node>
+ */
+
+#include <sys/param.h>
+#include <err.h>
+#include <fcntl.h>
+#include <libutil.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <machine/cpufunc.h>
+
+#define OP_GET 3
+#define OP_GET_LEN 4
+
+/* I/O ports */
+#define FWCTL_OUT 0x510
+#define FWCTL_IN 0x511
+
+static void
+reset_fwctl(void)
+{
+ char buf[4];
+
+ outw(FWCTL_OUT, 0);
+ for (u_int i = 0; i < 4; i++)
+ buf[i] = inb(FWCTL_IN);
+ if (memcmp(buf, "BHYV", 4) != 0)
+ errx(1, "Signature mismatch: %.4s", buf);
+}
+
+static void
+send_node_name(const char *name)
+{
+ uint32_t value;
+ size_t len;
+
+ len = strlen(name) + 1;
+ while (len > 4) {
+ memcpy(&value, name, 4);
+ outl(FWCTL_OUT, value);
+ name += 4;
+ len -= 4;
+ }
+
+ if (len > 0) {
+ value = 0;
+ memcpy(&value, name, len);
+ outl(FWCTL_OUT, value);
+ }
+}
+
+static void
+fwctl_op(uint32_t op, uint32_t id, const char *name, void *buf, size_t len)
+{
+ char *cp;
+ uint32_t value, rsplen;
+
+ /* Length */
+ outl(FWCTL_OUT, 12 + strlen(name) + 1);
+
+ /* Operation */
+ outl(FWCTL_OUT, op);
+
+ /* Transaction ID */
+ outl(FWCTL_OUT, id);
+
+ send_node_name(name);
+
+ /* Length */
+ rsplen = inl(FWCTL_IN);
+
+ /* If there is an error, the response will have no payload. */
+ if (rsplen < 4 * sizeof(value))
+ errx(1, "Invalid response length (%u): %u", id, rsplen);
+
+ /* Operation */
+ value = inl(FWCTL_IN);
+ if (value != op)
+ errx(1, "Invalid response type (%u): %u", id, value);
+
+ /* Transaction ID */
+ value = inl(FWCTL_IN);
+ if (value != id)
+ errx(1, "Invalid response ID (%u): %u", id, value);
+
+ /* Error */
+ value = inl(FWCTL_IN);
+ if (value != 0)
+ errx(1, "Error from op %u (%u): %u", op, id, value);
+
+ /* If there wasn't an error, require payload length to match */
+ if (rsplen != 4 * sizeof(value) + len)
+ errx(1, "Response payload length mismatch (%u): %zu vs %zu", id,
+ rsplen - 4 * sizeof(value), len);
+
+ cp = buf;
+ while (len > 0) {
+ value = inl(FWCTL_IN);
+ memcpy(cp, &value, 4);
+ cp += 4;
+ len -= 4;
+ }
+}
+
+int
+main(int ac, char **av)
+{
+ char *p;
+ size_t len, buflen, len2;
+
+ if (ac != 2)
+ errx(1, "Need node name");
+
+ if (open("/dev/io", O_RDWR) == -1)
+ err(1, "Failed to open /dev/io");
+
+ reset_fwctl();
+
+ fwctl_op(OP_GET_LEN, 1, av[1], &len, sizeof(len));
+ if (len == 0)
+ errx(1, "Node has length of 0");
+
+ /* Buffer includes embedded length followed by value. */
+ buflen = sizeof(size_t) + roundup2(len, 4);
+ p = malloc(buflen);
+ fwctl_op(OP_GET, 2, av[1], p, buflen);
+ memcpy(&len2, p, sizeof(len2));
+ if (len2 != len)
+ errx(1, "Length mismatch: %zu vs %zu", len, len2);
+ hexdump(p + sizeof(len2), len, NULL, 0);
+
+ return (0);
+}
diff --git a/tools/tools/bootparttest/Makefile b/tools/tools/bootparttest/Makefile
index 7d54dfca0427..dcf5cddfd84b 100644
--- a/tools/tools/bootparttest/Makefile
+++ b/tools/tools/bootparttest/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.PATH: ${SRCTOP}/stand/common
diff --git a/tools/tools/bootparttest/bootparttest.c b/tools/tools/bootparttest/bootparttest.c
index 82e991c6776e..7556f02929f8 100644
--- a/tools/tools/bootparttest/bootparttest.c
+++ b/tools/tools/bootparttest/bootparttest.c
@@ -24,9 +24,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/stat.h>
diff --git a/tools/tools/bootparttest/stub.c b/tools/tools/bootparttest/stub.c
index 88e31d48ae51..660b1d39c9b3 100644
--- a/tools/tools/bootparttest/stub.c
+++ b/tools/tools/bootparttest/stub.c
@@ -25,8 +25,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <stdlib.h>
#include <stdio.h>
diff --git a/tools/tools/build_option_survey/listallopts.sh b/tools/tools/build_option_survey/listallopts.sh
index 77c859aaee48..771bbfa084f2 100644
--- a/tools/tools/build_option_survey/listallopts.sh
+++ b/tools/tools/build_option_survey/listallopts.sh
@@ -1,6 +1,5 @@
#!/bin/sh
#
-# $FreeBSD$
#
# This file is in the public domain
diff --git a/tools/tools/build_option_survey/mkhtml.sh b/tools/tools/build_option_survey/mkhtml.sh
index 9ae4683576f6..26a4a8120ac8 100644
--- a/tools/tools/build_option_survey/mkhtml.sh
+++ b/tools/tools/build_option_survey/mkhtml.sh
@@ -1,6 +1,5 @@
#!/bin/sh
# This file is in the public domain
-# $FreeBSD$
set -e
diff --git a/tools/tools/build_option_survey/option_survey.sh b/tools/tools/build_option_survey/option_survey.sh
index 2ebfcc7fd59e..46ce167c49d9 100644
--- a/tools/tools/build_option_survey/option_survey.sh
+++ b/tools/tools/build_option_survey/option_survey.sh
@@ -1,6 +1,5 @@
#!/bin/sh
# This file is in the public domain
-# $FreeBSD$
set -ex
diff --git a/tools/tools/build_option_survey/reduce.sh b/tools/tools/build_option_survey/reduce.sh
index 375574987574..26f8579beed9 100644
--- a/tools/tools/build_option_survey/reduce.sh
+++ b/tools/tools/build_option_survey/reduce.sh
@@ -1,6 +1,5 @@
#!/bin/sh
# This file is in the public domain
-# $FreeBSD$
set -e
diff --git a/tools/tools/cd2dvd/cd2dvd.sh b/tools/tools/cd2dvd/cd2dvd.sh
index 8032c2f141f1..13dfe4e30754 100755
--- a/tools/tools/cd2dvd/cd2dvd.sh
+++ b/tools/tools/cd2dvd/cd2dvd.sh
@@ -25,7 +25,6 @@
#
# Merges FreeBSD's several CD installation medias to the single DVD disk.
#
-# $FreeBSD$
## Helper functions
usage () {
diff --git a/tools/tools/cfi/Makefile b/tools/tools/cfi/Makefile
index 9f4dd10a2828..967a5850ccfd 100644
--- a/tools/tools/cfi/Makefile
+++ b/tools/tools/cfi/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= cfi
BINDIR= /usr/local/bin
diff --git a/tools/tools/cfi/cfi.c b/tools/tools/cfi/cfi.c
index e80ac7f3ccea..485c2270cbad 100644
--- a/tools/tools/cfi/cfi.c
+++ b/tools/tools/cfi/cfi.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/tools/commitsdb/make_commit_db b/tools/tools/commitsdb/make_commit_db
index d33d47806fcf..46a8309effe8 100644
--- a/tools/tools/commitsdb/make_commit_db
+++ b/tools/tools/commitsdb/make_commit_db
@@ -1,7 +1,5 @@
#!/usr/bin/perl -w
-# $FreeBSD$
-
# This script walks the tree from the current directory
# and spits out a database generated by md5'ing the cvs log
# messages of each revision of every file in the tree.
diff --git a/tools/tools/commitsdb/query_commit_db b/tools/tools/commitsdb/query_commit_db
index e855efb06766..cd2e02e3ccac 100644
--- a/tools/tools/commitsdb/query_commit_db
+++ b/tools/tools/commitsdb/query_commit_db
@@ -1,7 +1,5 @@
#!/usr/bin/perl -w
-# $FreeBSD$
-
# This script takes a filename and revision number as arguments
# and spits out a list of other files and their revisions that share
# the same log message. This is done by referring to the database
diff --git a/tools/tools/crypto/Makefile b/tools/tools/crypto/Makefile
index 6d9daaa17f15..d1aa55526248 100644
--- a/tools/tools/crypto/Makefile
+++ b/tools/tools/crypto/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
#
# Copyright (c) 2018 Conrad Meyer <cem@FreeBSD.org>
# Copyright (c) 2002, 2003 Sam Leffler, Errno Consulting
diff --git a/tools/tools/crypto/README b/tools/tools/crypto/README
index 16b6bdb0d8ca..afe6d2851271 100644
--- a/tools/tools/crypto/README
+++ b/tools/tools/crypto/README
@@ -1,4 +1,3 @@
-$FreeBSD$
The cryptotest program repeatedly encrypts and decrypts a buffer
with the built-in iv and key, using hardware crypto. At the end,
diff --git a/tools/tools/crypto/cryptocheck.c b/tools/tools/crypto/cryptocheck.c
index 05b761a0c87a..2db283e4f65b 100644
--- a/tools/tools/crypto/cryptocheck.c
+++ b/tools/tools/crypto/cryptocheck.c
@@ -58,8 +58,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
/*
@@ -86,6 +84,7 @@
* tests
*
* Hashes:
+ * ripemd160 160-bit RIPEMD
* sha1 SHA-1
* sha224 224-bit SHA-2
* sha256 256-bit SHA-2
@@ -95,35 +94,46 @@
* blake2s Blake2-S
*
* MACs:
+ * ripemd160hmac 160-bit RIPEMD HMAC
* sha1hmac SHA-1 HMAC
* sha224hmac 224-bit SHA-2 HMAC
* sha256hmac 256-bit SHA-2 HMAC
* sha384hmac 384-bit SHA-2 HMAC
* sha512hmac 512-bit SHA-2 HMAC
- * gmac 128-bit GMAC
+ * gmac 128/192/256-bit GMAC
+ * gmac128 128-bit GMAC
* gmac192 192-bit GMAC
* gmac256 256-bit GMAC
* poly1305
*
* Ciphers:
- * aes-cbc 128-bit AES-CBC
+ * aes-cbc 128/192/256-bit AES-CBC
+ * aes-cbc128 128-bit AES-CBC
* aes-cbc192 192-bit AES-CBC
* aes-cbc256 256-bit AES-CBC
- * aes-ctr 128-bit AES-CTR
+ * aes-ctr 128/192/256-bit AES-CTR
+ * aes-ctr128 128-bit AES-CTR
* aes-ctr192 192-bit AES-CTR
* aes-ctr256 256-bit AES-CTR
- * aes-xts 128-bit AES-XTS
+ * aes-xts 128/256-bit AES-XTS
+ * aes-xts128 128-bit AES-XTS
* aes-xts256 256-bit AES-XTS
+ * camellia-cbc 128/192/256-bit Camellia-CBC
+ * camellia-cbc128 128-bit Camellia-CBC
+ * camellia-cbc192 192-bit Camellia-CBC
+ * camellia-cbc256 256-bit Camellia-CBC
* chacha20
*
* Encrypt then Authenticate:
* <cipher>+<mac>
*
* Authenticated Encryption with Associated Data:
- * aes-gcm 128-bit AES-GCM
+ * aes-gcm 128/192/256-bit AES-GCM
+ * aes-gcm128 128-bit AES-GCM
* aes-gcm192 192-bit AES-GCM
* aes-gcm256 256-bit AES-GCM
- * aes-ccm 128-bit AES-CCM
+ * aes-ccm 128/192/256-bit AES-CCM
+ * aes-ccm128 128-bit AES-CCM
* aes-ccm192 192-bit AES-CCM
* aes-ccm256 256-bit AES-CCM
* chacha20-poly1305 Chacha20 with Poly1305 per RFC 8439
@@ -163,6 +173,8 @@ static const struct alg {
const EVP_MD *(*evp_md)(void);
int pkey;
} algs[] = {
+ { .name = "ripemd160", .mac = CRYPTO_RIPEMD160, .type = T_HASH,
+ .evp_md = EVP_ripemd160 },
{ .name = "sha1", .mac = CRYPTO_SHA1, .type = T_HASH,
.evp_md = EVP_sha1 },
{ .name = "sha224", .mac = CRYPTO_SHA2_224, .type = T_HASH,
@@ -173,6 +185,8 @@ static const struct alg {
.evp_md = EVP_sha384 },
{ .name = "sha512", .mac = CRYPTO_SHA2_512, .type = T_HASH,
.evp_md = EVP_sha512 },
+ { .name = "ripemd160hmac", .mac = CRYPTO_RIPEMD160_HMAC, .type = T_HMAC,
+ .evp_md = EVP_ripemd160 },
{ .name = "sha1hmac", .mac = CRYPTO_SHA1_HMAC, .type = T_HMAC,
.evp_md = EVP_sha1 },
{ .name = "sha224hmac", .mac = CRYPTO_SHA2_224_HMAC, .type = T_HMAC,
@@ -187,7 +201,7 @@ static const struct alg {
.evp_md = EVP_blake2b512 },
{ .name = "blake2s", .mac = CRYPTO_BLAKE2S, .type = T_HASH,
.evp_md = EVP_blake2s256 },
- { .name = "gmac", .mac = CRYPTO_AES_NIST_GMAC, .type = T_GMAC,
+ { .name = "gmac128", .mac = CRYPTO_AES_NIST_GMAC, .type = T_GMAC,
.tag_len = AES_GMAC_HASH_LEN, .evp_cipher = EVP_aes_128_gcm },
{ .name = "gmac192", .mac = CRYPTO_AES_NIST_GMAC, .type = T_GMAC,
.tag_len = AES_GMAC_HASH_LEN, .evp_cipher = EVP_aes_192_gcm },
@@ -195,34 +209,40 @@ static const struct alg {
.tag_len = AES_GMAC_HASH_LEN, .evp_cipher = EVP_aes_256_gcm },
{ .name = "poly1305", .mac = CRYPTO_POLY1305, .type = T_DIGEST,
.key_len = POLY1305_KEY_LEN, .pkey = EVP_PKEY_POLY1305 },
- { .name = "aes-cbc", .cipher = CRYPTO_AES_CBC, .type = T_CIPHER,
+ { .name = "aes-cbc128", .cipher = CRYPTO_AES_CBC, .type = T_CIPHER,
.evp_cipher = EVP_aes_128_cbc },
{ .name = "aes-cbc192", .cipher = CRYPTO_AES_CBC, .type = T_CIPHER,
.evp_cipher = EVP_aes_192_cbc },
{ .name = "aes-cbc256", .cipher = CRYPTO_AES_CBC, .type = T_CIPHER,
.evp_cipher = EVP_aes_256_cbc },
- { .name = "aes-ctr", .cipher = CRYPTO_AES_ICM, .type = T_CIPHER,
+ { .name = "aes-ctr128", .cipher = CRYPTO_AES_ICM, .type = T_CIPHER,
.evp_cipher = EVP_aes_128_ctr },
{ .name = "aes-ctr192", .cipher = CRYPTO_AES_ICM, .type = T_CIPHER,
.evp_cipher = EVP_aes_192_ctr },
{ .name = "aes-ctr256", .cipher = CRYPTO_AES_ICM, .type = T_CIPHER,
.evp_cipher = EVP_aes_256_ctr },
- { .name = "aes-xts", .cipher = CRYPTO_AES_XTS, .type = T_CIPHER,
+ { .name = "aes-xts128", .cipher = CRYPTO_AES_XTS, .type = T_CIPHER,
.evp_cipher = EVP_aes_128_xts },
{ .name = "aes-xts256", .cipher = CRYPTO_AES_XTS, .type = T_CIPHER,
.evp_cipher = EVP_aes_256_xts },
+ { .name = "camellia-cbc128", .cipher = CRYPTO_CAMELLIA_CBC,
+ .type = T_CIPHER, .evp_cipher = EVP_camellia_128_cbc },
+ { .name = "camellia-cbc192", .cipher = CRYPTO_CAMELLIA_CBC,
+ .type = T_CIPHER, .evp_cipher = EVP_camellia_192_cbc },
+ { .name = "camellia-cbc256", .cipher = CRYPTO_CAMELLIA_CBC,
+ .type = T_CIPHER, .evp_cipher = EVP_camellia_256_cbc },
{ .name = "chacha20", .cipher = CRYPTO_CHACHA20, .type = T_CIPHER,
.evp_cipher = EVP_chacha20 },
- { .name = "aes-gcm", .cipher = CRYPTO_AES_NIST_GCM_16, .type = T_AEAD,
- .tag_len = AES_GMAC_HASH_LEN, .iv_sizes = { AES_GCM_IV_LEN },
- .evp_cipher = EVP_aes_128_gcm },
+ { .name = "aes-gcm128", .cipher = CRYPTO_AES_NIST_GCM_16,
+ .type = T_AEAD, .tag_len = AES_GMAC_HASH_LEN,
+ .iv_sizes = { AES_GCM_IV_LEN }, .evp_cipher = EVP_aes_128_gcm },
{ .name = "aes-gcm192", .cipher = CRYPTO_AES_NIST_GCM_16,
.type = T_AEAD, .tag_len = AES_GMAC_HASH_LEN,
.iv_sizes = { AES_GCM_IV_LEN }, .evp_cipher = EVP_aes_192_gcm },
{ .name = "aes-gcm256", .cipher = CRYPTO_AES_NIST_GCM_16,
.type = T_AEAD, .tag_len = AES_GMAC_HASH_LEN,
.iv_sizes = { AES_GCM_IV_LEN }, .evp_cipher = EVP_aes_256_gcm },
- { .name = "aes-ccm", .cipher = CRYPTO_AES_CCM_16, .type = T_AEAD,
+ { .name = "aes-ccm128", .cipher = CRYPTO_AES_CCM_16, .type = T_AEAD,
.tag_len = AES_CBC_MAC_HASH_LEN, .iv_sizes = { 12, 7, 8, 9, 10, 11, 13 },
.evp_cipher = EVP_aes_128_ccm },
{ .name = "aes-ccm192", .cipher = CRYPTO_AES_CCM_16, .type = T_AEAD,
@@ -1716,6 +1736,19 @@ run_aead_tests(void)
run_test_sizes(&algs[i]);
}
+static void
+run_prefix_tests(const char *prefix)
+{
+ size_t prefix_len;
+ u_int i;
+
+ prefix_len = strlen(prefix);
+ for (i = 0; i < nitems(algs); i++)
+ if (strlen(algs[i].name) >= prefix_len &&
+ memcmp(algs[i].name, prefix, prefix_len) == 0)
+ run_test_sizes(&algs[i]);
+}
+
int
main(int ac, char **av)
{
@@ -1845,6 +1878,14 @@ main(int ac, char **av)
run_eta_tests();
else if (strcasecmp(algname, "aead") == 0)
run_aead_tests();
+ else if (strcasecmp(algname, "gmac") == 0 ||
+ strcasecmp(algname, "aes-cbc") == 0 ||
+ strcasecmp(algname, "aes-ctr") == 0 ||
+ strcasecmp(algname, "aes-xts") == 0 ||
+ strcasecmp(algname, "camellia-cbc") == 0 ||
+ strcasecmp(algname, "aes-gcm") == 0 ||
+ strcasecmp(algname, "aes-ccm") == 0)
+ run_prefix_tests(algname);
else if (strcasecmp(algname, "all") == 0) {
run_hash_tests();
run_mac_tests();
diff --git a/tools/tools/crypto/cryptorun.sh b/tools/tools/crypto/cryptorun.sh
index bd457f6443ad..8761b16c4d96 100755
--- a/tools/tools/crypto/cryptorun.sh
+++ b/tools/tools/crypto/cryptorun.sh
@@ -11,7 +11,6 @@
#
# Test aes with 1, 2 and 4 processes, and at sizes of 256 and 512 bytes.
#
-# $FreeBSD$
#
threads=1
diff --git a/tools/tools/crypto/cryptostats.c b/tools/tools/crypto/cryptostats.c
index b69938d5ae92..99b0364bae4d 100644
--- a/tools/tools/crypto/cryptostats.c
+++ b/tools/tools/crypto/cryptostats.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/tools/crypto/cryptotest.c b/tools/tools/crypto/cryptotest.c
index 83473e883b17..7845c3994d0c 100644
--- a/tools/tools/crypto/cryptotest.c
+++ b/tools/tools/crypto/cryptotest.c
@@ -28,8 +28,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/tools/crypto/hifnstats.c b/tools/tools/crypto/hifnstats.c
index f073d86d7395..71c826f8e66e 100644
--- a/tools/tools/crypto/hifnstats.c
+++ b/tools/tools/crypto/hifnstats.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/tools/crypto/ipsecstats.c b/tools/tools/crypto/ipsecstats.c
index 760200f46112..108360c91cf0 100644
--- a/tools/tools/crypto/ipsecstats.c
+++ b/tools/tools/crypto/ipsecstats.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
diff --git a/tools/tools/crypto/safestats.c b/tools/tools/crypto/safestats.c
index acaab6e1e483..ace3050778bf 100644
--- a/tools/tools/crypto/safestats.c
+++ b/tools/tools/crypto/safestats.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/tools/cxgbtool/Makefile b/tools/tools/cxgbtool/Makefile
index 2fb608d2f410..ce21555fedcf 100644
--- a/tools/tools/cxgbtool/Makefile
+++ b/tools/tools/cxgbtool/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= cxgbtool
SRCS= cxgbtool.c
diff --git a/tools/tools/cxgbtool/cxgbtool.c b/tools/tools/cxgbtool/cxgbtool.c
index a78c7931eebd..b871d67700f3 100644
--- a/tools/tools/cxgbtool/cxgbtool.c
+++ b/tools/tools/cxgbtool/cxgbtool.c
@@ -33,8 +33,6 @@ POSSIBILITY OF SUCH DAMAGE.
***************************************************************************/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
diff --git a/tools/tools/cxgbtool/reg_defs.c b/tools/tools/cxgbtool/reg_defs.c
index 687bb75cee9f..fc65a652601a 100644
--- a/tools/tools/cxgbtool/reg_defs.c
+++ b/tools/tools/cxgbtool/reg_defs.c
@@ -1,5 +1,4 @@
/*
- * $FreeBSD$
*/
/* This file is automatically generated --- do not edit */
diff --git a/tools/tools/cxgbtool/reg_defs_t3.c b/tools/tools/cxgbtool/reg_defs_t3.c
index 6e9b8b1176f0..d4259b4e5434 100644
--- a/tools/tools/cxgbtool/reg_defs_t3.c
+++ b/tools/tools/cxgbtool/reg_defs_t3.c
@@ -1,5 +1,4 @@
/*
- * $FreeBSD$
*/
diff --git a/tools/tools/cxgbtool/reg_defs_t3b.c b/tools/tools/cxgbtool/reg_defs_t3b.c
index cd85d840a1dd..31942e335ebc 100644
--- a/tools/tools/cxgbtool/reg_defs_t3b.c
+++ b/tools/tools/cxgbtool/reg_defs_t3b.c
@@ -1,5 +1,4 @@
/*
- * $FreeBSD$
*/
/* This file is automatically generated --- do not edit */
diff --git a/tools/tools/cxgbtool/reg_defs_t3c.c b/tools/tools/cxgbtool/reg_defs_t3c.c
index b9181b68e9a9..75c89a90b0b9 100644
--- a/tools/tools/cxgbtool/reg_defs_t3c.c
+++ b/tools/tools/cxgbtool/reg_defs_t3c.c
@@ -1,5 +1,4 @@
/*
- * $FreeBSD$
*/
/* This file is automatically generated --- do not edit */
diff --git a/tools/tools/cxgbtool/version.h b/tools/tools/cxgbtool/version.h
index 403a8beeafc2..183684bdb188 100644
--- a/tools/tools/cxgbtool/version.h
+++ b/tools/tools/cxgbtool/version.h
@@ -19,7 +19,6 @@
/* $Date: 2007/02/05 18:46:24 $ $RCSfile: version.h,v $ $Revision: 1.9 $ */
/*
- * $FreeBSD$
*/
#ifndef __CXGBTOOL_VERSION_H
diff --git a/tools/tools/decioctl/Makefile b/tools/tools/decioctl/Makefile
index 55aa78550e60..ffbc4b49f736 100644
--- a/tools/tools/decioctl/Makefile
+++ b/tools/tools/decioctl/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= decioctl
SRCS= decioctl.c
diff --git a/tools/tools/decioctl/decioctl.c b/tools/tools/decioctl/decioctl.c
index f9af0f5a3a92..2be99e9f9f4e 100644
--- a/tools/tools/decioctl/decioctl.c
+++ b/tools/tools/decioctl/decioctl.c
@@ -24,8 +24,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/ioccom.h>
#include <ctype.h>
#include <errno.h>
diff --git a/tools/tools/dmardump/Makefile b/tools/tools/dmardump/Makefile
index 67b32438ef95..2181072927b7 100644
--- a/tools/tools/dmardump/Makefile
+++ b/tools/tools/dmardump/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= dmardump
SRCS= dmardump.c
diff --git a/tools/tools/dmardump/dmardump.c b/tools/tools/dmardump/dmardump.c
index 43a2779dd6b8..6888200983bc 100644
--- a/tools/tools/dmardump/dmardump.c
+++ b/tools/tools/dmardump/dmardump.c
@@ -25,9 +25,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/param.h>
#include <sys/endian.h>
#include <sys/pciio.h>
diff --git a/tools/tools/drm/README b/tools/tools/drm/README
index 35660ed08279..555536c7fd9e 100644
--- a/tools/tools/drm/README
+++ b/tools/tools/drm/README
@@ -1,4 +1,3 @@
-# $FreeBSD$
gen-drm_pciids Generate drm_pciids.h based on Linux' drm_pciids.h, FreeBSD's
drm_pciids.h and misc/pciids database.
diff --git a/tools/tools/drm/gen-drm_pciids b/tools/tools/drm/gen-drm_pciids
index 02ed5620e2f0..472c75cb80dc 100755
--- a/tools/tools/drm/gen-drm_pciids
+++ b/tools/tools/drm/gen-drm_pciids
@@ -1,5 +1,4 @@
#!/usr/bin/perl
-# $FreeBSD$
use strict;
use warnings;
@@ -158,10 +157,6 @@ foreach my $vendor_define (sort keys(%linux_pciids)) {
print STDERR "\nWrite FreeBSD header to stdout...\n";
print <<"EOF";
/*
- * \$FreeBSD\$
- */
-
-/*
* Generated by $progname from:
* o previous FreeBSD's drm_pciids.h
* o Linux' drm_pciids.h
diff --git a/tools/tools/drm/radeon/README b/tools/tools/drm/radeon/README
index a05878ebb9e9..a77c3220934e 100644
--- a/tools/tools/drm/radeon/README
+++ b/tools/tools/drm/radeon/README
@@ -1,4 +1,3 @@
-# $FreeBSD$
firmwares Tools to handle Radeon firmwares imported into the tree.
mkregtable Generate headers used to build the Radeon driver.
diff --git a/tools/tools/drm/radeon/firmwares/README b/tools/tools/drm/radeon/firmwares/README
index 1a28c83941da..9d03202a111a 100644
--- a/tools/tools/drm/radeon/firmwares/README
+++ b/tools/tools/drm/radeon/firmwares/README
@@ -1,4 +1,3 @@
-# $FreeBSD$
To update firmwares:
diff --git a/tools/tools/drm/radeon/firmwares/encode-firmwares b/tools/tools/drm/radeon/firmwares/encode-firmwares
index e95c0d2393f6..8e8b873c199a 100755
--- a/tools/tools/drm/radeon/firmwares/encode-firmwares
+++ b/tools/tools/drm/radeon/firmwares/encode-firmwares
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
set -e
diff --git a/tools/tools/drm/radeon/mkregtable/Makefile b/tools/tools/drm/radeon/mkregtable/Makefile
index 49bc2ec16e3c..0d346eb6eb2e 100644
--- a/tools/tools/drm/radeon/mkregtable/Makefile
+++ b/tools/tools/drm/radeon/mkregtable/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
all: regtables
diff --git a/tools/tools/drm/radeon/mkregtable/Makefile.depend b/tools/tools/drm/radeon/mkregtable/Makefile.depend
index 8d409f5263ac..6ef78fac5cbf 100644
--- a/tools/tools/drm/radeon/mkregtable/Makefile.depend
+++ b/tools/tools/drm/radeon/mkregtable/Makefile.depend
@@ -1,4 +1,3 @@
-# $FreeBSD$
# Autogenerated - do NOT edit!
DIRDEPS = \
diff --git a/tools/tools/drm/radeon/mkregtable/README b/tools/tools/drm/radeon/mkregtable/README
index 12b86994b1ba..f9f1a67418f7 100644
--- a/tools/tools/drm/radeon/mkregtable/README
+++ b/tools/tools/drm/radeon/mkregtable/README
@@ -1,4 +1,3 @@
-# $FreeBSD$
"mkregtable" is a tool used to generate headers for the radeonkms
driver. Headers are regenerated by running "make" in this directory.
diff --git a/tools/tools/drm/radeon/mkregtable/mkregtable.c b/tools/tools/drm/radeon/mkregtable/mkregtable.c
index 51b8f909cd2a..5a82b6b75849 100644
--- a/tools/tools/drm/radeon/mkregtable/mkregtable.c
+++ b/tools/tools/drm/radeon/mkregtable/mkregtable.c
@@ -9,9 +9,6 @@
* Dave Airlie
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <stdlib.h>
#include <string.h>
@@ -595,11 +592,6 @@ static void table_print(struct table *t)
nlloop = (t->nentry + 3) / 4;
c = t->nentry;
- printf(
- "#include <sys/cdefs.h>\n"
- "__FBSDID(\"$" "FreeBSD" "$\");\n"
- "\n"
- );
printf("static const unsigned %s_reg_safe_bm[%d] = {\n", t->gpu_prefix,
t->nentry);
for (i = 0, id = 0; i < nlloop; i++) {
diff --git a/tools/tools/editing/freebsd.vim b/tools/tools/editing/freebsd.vim
index fa7977b30361..e515f81890df 100644
--- a/tools/tools/editing/freebsd.vim
+++ b/tools/tools/editing/freebsd.vim
@@ -21,8 +21,6 @@
" 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.
-"
-" $FreeBSD$
" This is a plugin for Vim (tested with Vim v7.1) to follow the FreeBSD style(9)
" indentation. It registers a macro (see below) for changing a buffer's
diff --git a/tools/tools/epfe/epfe.pl b/tools/tools/epfe/epfe.pl
deleted file mode 100644
index 0aea2c247a64..000000000000
--- a/tools/tools/epfe/epfe.pl
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/perl
-# Copyright (c) 1996 Wolfram Schneider <wosch@FreeBSD.org>. Berlin.
-#
-# epfe - extract printing filter examples from printing.sgml
-#
-# usage:
-# $ cd /usr/share/examples/printing
-# $ epfe < ../../doc/handbook/printing.sgml
-#
-# $FreeBSD$
-
-$in = 0; @a = ();
-sub Print { s/\&amp\;/&/g; push(@a,$_); }
-sub out {
- local($name, *lines) = @_;
- open(F, "> $name") || die "open $_[0]: $!\n";
- print F @lines;
- close F;
-}
-
-while(<>) {
- if (/^<code>/) {
- $in = 1;
- } elsif (m%</code>% && $in > 0) {
- if ($in > 1) {
- $name = 'unknown' if !$name;
- while(1) { if ($d{$name}) { $name .= 'X'; } else { last } }
- &out("$name", *a);
- $d{$name} = $name;
- }
- $in = 0; $name = ''; @a = ();
- } elsif ($in == 1 && /^\#\s*!/) {
- $in++; &Print;
- } elsif ($in > 1) {
- $name = $1 if (!$name && /^\#\s+(\S+)\s+-\s+/);
- $in++; &Print;
- }
-}
diff --git a/tools/tools/ether_reflect/Makefile b/tools/tools/ether_reflect/Makefile
index 040a5bd5fba6..9bff3abb7be0 100644
--- a/tools/tools/ether_reflect/Makefile
+++ b/tools/tools/ether_reflect/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# A Makefile that builds both the ether_reflect program and its manual page.
diff --git a/tools/tools/ether_reflect/ether_reflect.1 b/tools/tools/ether_reflect/ether_reflect.1
index 95fe60f762aa..617ee0b78378 100644
--- a/tools/tools/ether_reflect/ether_reflect.1
+++ b/tools/tools/ether_reflect/ether_reflect.1
@@ -22,8 +22,6 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD$
-.\"
.Dd December 23, 2008
.Dt ETHER_REFLECT 1
.Os
@@ -42,7 +40,7 @@
The
.Nm
command implements a simple ethernet packet reflector using the
-.Xr PCAP 3
+.Xr pcap 3
library and
.Xr bpf 4 ,
the Berkeley Packet Filter.
@@ -96,8 +94,8 @@ Rewrite the destination address in each packet to 00:00:00:aa:bb:cc
before reflecting the packet.
.Sh SEE ALSO
.Xr tcpdump 1 ,
-.Xr bpf 2 ,
-.Xr pcap 4 ,
+.Xr bpf 4 ,
+.Xr pcap 3 ,
.Xr ifconfig 8
.Sh HISTORY
The
diff --git a/tools/tools/ether_reflect/ether_reflect.c b/tools/tools/ether_reflect/ether_reflect.c
index bb6d865ec2d2..ade6ea132a6a 100644
--- a/tools/tools/ether_reflect/ether_reflect.c
+++ b/tools/tools/ether_reflect/ether_reflect.c
@@ -32,8 +32,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <unistd.h>
#include <stdlib.h>
#include <strings.h>
diff --git a/tools/tools/fetchbench/fetchbench b/tools/tools/fetchbench/fetchbench
index 1a50f050381e..1c5fb8451b8b 100755
--- a/tools/tools/fetchbench/fetchbench
+++ b/tools/tools/fetchbench/fetchbench
@@ -27,7 +27,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
# This is a simple HTTP benchmark. It works by running a number of fetch(1)
# instances in parallel, 10 by default, each performing a number of fetches,
diff --git a/tools/tools/find-sb/Makefile b/tools/tools/find-sb/Makefile
index 428a79e29200..413ac2a3c1cb 100644
--- a/tools/tools/find-sb/Makefile
+++ b/tools/tools/find-sb/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= find-sb
MAN=
diff --git a/tools/tools/find-sb/README b/tools/tools/find-sb/README
index fae701c816c3..bf35ceba3cad 100644
--- a/tools/tools/find-sb/README
+++ b/tools/tools/find-sb/README
@@ -1,4 +1,3 @@
-$FreeBSD$
find-sb is a program which scans the input file you specify (normally a
raw disk slice) for filesystems. It's not very smart, nor particularly
diff --git a/tools/tools/find-sb/find-sb.c b/tools/tools/find-sb/find-sb.c
index fd4de42194b8..b914f177f663 100644
--- a/tools/tools/find-sb/find-sb.c
+++ b/tools/tools/find-sb/find-sb.c
@@ -1,8 +1,6 @@
/*
* This program, created 2002-10-03 by Garrett A. Wollman
* <wollman@FreeBSD.org>, is in the public domain. Use at your own risk.
- *
- * $FreeBSD$
*/
#ifdef __FreeBSD__
diff --git a/tools/tools/find-sb/mini_ufs.h b/tools/tools/find-sb/mini_ufs.h
index 82a864dd6a8e..0fd340ab29f5 100644
--- a/tools/tools/find-sb/mini_ufs.h
+++ b/tools/tools/find-sb/mini_ufs.h
@@ -1,8 +1,6 @@
/*
* This program, created 2002-10-03 by Garrett A. Wollman
* <wollman@FreeBSD.org>, is in the public domain. Use at your own risk.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/tools/fixwhite/Makefile b/tools/tools/fixwhite/Makefile
index 235d5c7b9e34..f8932cfb77de 100644
--- a/tools/tools/fixwhite/Makefile
+++ b/tools/tools/fixwhite/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= fixwhite
BINDIR= /usr/bin
diff --git a/tools/tools/fixwhite/fixwhite.1 b/tools/tools/fixwhite/fixwhite.1
index 016e24bc59cd..36cae97171e4 100644
--- a/tools/tools/fixwhite/fixwhite.1
+++ b/tools/tools/fixwhite/fixwhite.1
@@ -22,8 +22,6 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD$
-.\"
.Dd February 6, 2012
.Dt FIXWHITE 1
.Os
diff --git a/tools/tools/fixwhite/fixwhite.c b/tools/tools/fixwhite/fixwhite.c
index 2b1763060e06..4cfe49e4ed35 100644
--- a/tools/tools/fixwhite/fixwhite.c
+++ b/tools/tools/fixwhite/fixwhite.c
@@ -25,8 +25,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <ctype.h>
#include <stdbool.h>
#include <stdio.h>
diff --git a/tools/tools/gdb_regofs/Makefile b/tools/tools/gdb_regofs/Makefile
index a23b171c9740..c22a107b8553 100644
--- a/tools/tools/gdb_regofs/Makefile
+++ b/tools/tools/gdb_regofs/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG=gdb_regofs
SRCS=${MACHINE_ARCH}.c
MAN=
diff --git a/tools/tools/genericize/Makefile b/tools/tools/genericize/Makefile
index 5df77b99f910..25fe89a51668 100644
--- a/tools/tools/genericize/Makefile
+++ b/tools/tools/genericize/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SCRIPTS= genericize.pl
BINDIR?= /usr/local/bin
diff --git a/tools/tools/genericize/genericize.pl b/tools/tools/genericize/genericize.pl
index 6ba135e4432a..6ed2d1d60e85 100755
--- a/tools/tools/genericize/genericize.pl
+++ b/tools/tools/genericize/genericize.pl
@@ -1,6 +1,6 @@
#!/usr/bin/perl -w
#-
-# Copyright (c) 2004 Dag-Erling Coïdan Smørgrav
+# Copyright (c) 2004 Dag-Erling Smørgrav
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -26,7 +26,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
use strict;
diff --git a/tools/tools/gensnmpdef/Makefile b/tools/tools/gensnmpdef/Makefile
index 104c97d66f45..fd06ee5a64e0 100644
--- a/tools/tools/gensnmpdef/Makefile
+++ b/tools/tools/gensnmpdef/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
#
# NB: Install ports/net-mgmt/libsmi
diff --git a/tools/tools/git/HOWTO b/tools/tools/git/HOWTO
index 160696c4d236..7595376564c4 100644
--- a/tools/tools/git/HOWTO
+++ b/tools/tools/git/HOWTO
@@ -1,4 +1,3 @@
-# $FreeBSD$
This directory contains tools intended to help committers use git when
interacting with standard FreeBSD project resources like Differential.
@@ -28,7 +27,7 @@ commits. The intended workflow is:
Differential, so try to give each commit a meaningful commit message that
gives your reviewers the necessary context to understand your change.
-2. Create your reviews bu running this command in your git repo:
+2. Create your reviews by running this command in your git repo:
$ arcgit -r C1~..C2 -R reviewer -T testplan
C1 should be the first commit that you want reviewed, and C2 should be the
@@ -36,7 +35,7 @@ commits. The intended workflow is:
specifying the -R option multiple times. You can CC (AKA subscribe) people
to a review with the -C option. Note that if you subscribe a mailing list
to a review, the mailing list will be emailed for every comment or change
- made to each review. Please be judicious when subscibing mailing lists to
+ made to each review. Please be judicious when subscribing mailing lists to
reviews. It may be better to instead send a single email to the appropriate
list announcing all of the reviews and giving a short summary of the change
as a whole, along with a link to the individual reviews.
@@ -75,7 +74,7 @@ commits. The intended workflow is:
4. Once the reviews have been approved, you need to prepare your patch series
to be committed. This involves squashing the fixes made in code review
back into the original commit that they applied to. This gives you a clean
- series of commits that are ready to be commited back to svn.
+ series of commits that are ready to be pushed to git.
First, merge each of your review branches back into your main development
branch. For example:
diff --git a/tools/tools/git/arcgit b/tools/tools/git/arcgit
index 60d9abe58595..adf64a11e7a4 100755
--- a/tools/tools/git/arcgit
+++ b/tools/tools/git/arcgit
@@ -23,7 +23,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
# This script is used to submit a series of git commits to Differential. Each
# commit is submitted as a separate review. For each review, this script will
@@ -35,8 +34,8 @@
#
# When your reviews are complete, merge all of the review_DXXXX branches
# together, and then do a git rebase -ik to meld the code review fixes into the
-# commit that they fixed. Now you have a clean series of patches to commit to
-# svn.
+# commit that they fixed. Now you have a clean series of patches to push to
+# git.
usage()
{
diff --git a/tools/tools/git/git-arc.1 b/tools/tools/git/git-arc.1
index 21399aef8e0e..e449875c5043 100644
--- a/tools/tools/git/git-arc.1
+++ b/tools/tools/git/git-arc.1
@@ -1,5 +1,5 @@
.\"
-.\" SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+.\" SPDX-License-Identifier: BSD-2-Clause
.\"
.\" Copyright (c) 2021 Daniel Ebdrup Jensen
.\"
@@ -24,30 +24,34 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd May 14, 2021
+.Dd May 5, 2023
.Dt GIT-ARC 1
.Os
.Sh NAME
.Nm git arc
-.Nd a wrapper to improve integration betwen git and arcanist
+.Nd a wrapper to improve integration between git and arcanist
.Sh SYNOPSIS
.Nm
.Cm create
.Op Fl l
.Op Fl r Ar reviewer1 Ns Op Cm \&, Ns Ar reviewer2 ...
.Op Fl s Ar subscriber1 Ns Op Cm \&, Ns Ar subscriber2 ...
-.Op Ar commit Ns | Ns Ar commit-range
+.Op Fl p Ar parent
+.Op Ar commit ... Ns | Ns Ar commit-range
.Nm
-.Cm list Ar commit Ns | Ns Ar commit-range
+.Cm list Ar commit ... Ns | Ns Ar commit-range
.Nm
-.Cm patch Ar diff1 Ns Op Cm \&, Ns Ar diff2
+.Cm patch
+.Op Fl c
+.Ar diff1 Ns Op Cm \&, Ns Ar diff2
.Nm
.Cm stage
.Op Fl b Ar branch
-.Op Ar commit Ns | Ns Ar commit-range
+.Op Ar commit ... Ns | Ns Ar commit-range
.Nm
.Cm update
-.Op Ar commit Ns | Ns Ar commit-range Oc
+.Op Fl m Ar message
+.Op Ar commit ... Ns | Ns Ar commit-range
.Sh DESCRIPTION
The
.Nm
@@ -60,17 +64,33 @@ assumes a one-to-one relationship between git commits and
Differential Revisions, and the Differential Revision title must match
the summary line of the corresponding commit.
In particular, the commit summaries must be unique across all open
-Differential Revisions authored the submitter.
+Differential Revisions authored by the submitter.
.Pp
The first parameter must be a verb.
The available verbs are:
.Bl -tag -width "create"
.It Cm create
Create new Differential Revisions from the specified commits.
+Accepts options:
+.Bl -tag -width subscriber
+.It Fl l
+Before processing commit(s) display list of commits to be processed
+and wait for confirmation.
+.It Fl r Ar reviewer
+Add one or more reviewers, separated by commas, to revision(s) being created.
+Argument(s) must be existing Phabricator user or group.
+.It Fl s Ar subscriber
+Add one or more subscribers, separated by commas, to revision(s) being created.
+Each argument must be an existing Phabricator user or group.
+.It Fl p Ar parent
+Specify the parent of the first commit in the list.
+This is useful when adding more commits on top of the already existing
+stack in Phabricator.
+.El
.It Cm list
Print the associated Differential Revisions for the specified commits.
.It Cm patch
-Try to apply a patch from a Differential revision to the currently
+Try to apply a patch from a Differential Revision to the currently
checked out tree.
.It Cm stage
Prepare a series of commits to be pushed to the upstream
@@ -87,7 +107,16 @@ Revisions.
Synchronize the Differential Revisions associated with the
specified commits.
Currently only the diff is updated; the review description and other
-metadata is not synchronized.
+metadata are not synchronized.
+If a message is specified with
+.Fl m ,
+that message is added as a note to the Differential Revision.
+If no message is supplied,
+the user's editor will be opened to provide an update message for
+each revision.
+If an empty message is supplied via
+.Fl m ,
+then no notes will be added when updating Differential Revisions.
.El
.Sh CONFIGURATION
These are manipulated by
@@ -124,14 +153,14 @@ Defaults to false.
.Sh EXAMPLES
The typical end-to-end usage looks something like this.
.Pp
-Commit changes with a message and create a Differential review:
+Commit changes with a message and create a Differential Review:
.Bd -literal -offset indent
$ git commit -m "kern: Rewrite in Rust"
$ git arc create HEAD
.Ed
.Pp
Make changes to the diff based on review feedback, then amend the
-changes to the existing commit and update the Differential review:
+changes to the existing commit and update the Differential Review:
.Bd -literal -offset indent
$ git commit --amend
$ git arc update HEAD
@@ -164,6 +193,11 @@ $ git arc create HEAD~3..HEAD
Pairs of consecutive commits are linked into a patch stack.
Note that the first commit in the specified range is excluded.
.Pp
+Create a series of separate reviews for each of the following commits:
+.Bd -literal -offset indent
+$ git arc create b409afcfedcdda ca03ed1345aff0
+.Ed
+.Pp
Update the review corresponding to commit b409afcfedcdda:
.Bd -literal -offset indent
$ git arc update b409afcfedcdda
@@ -179,6 +213,15 @@ and stage it:
$ git arc patch D12345
.Ed
.Pp
+Apply the patch in review D23456 to the currently checked-out tree,
+and commit it to the tree with the commit message in the review and
+make the best guess for what to use for author.
+If the guess is considered unreliable, the user is prompted to see
+if they wish to use it (or abort).
+.Bd -literal -offset indent
+$ git arc patch -c D23456
+.Ed
+.Pp
List the status of reviews for all the commits in the branch
.Dq feature :
.Bd -literal -offset indent
diff --git a/tools/tools/git/git-arc.sh b/tools/tools/git/git-arc.sh
index 0c288e7ac6e2..1c828f3194af 100644
--- a/tools/tools/git/git-arc.sh
+++ b/tools/tools/git/git-arc.sh
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2019-2021 Mark Johnston <markj@FreeBSD.org>
# Copyright (c) 2021 John Baldwin <jhb@FreeBSD.org>
@@ -51,9 +51,9 @@ Usage: git arc [-vy] <command> <arguments>
Commands:
create [-l] [-r <reviewer1>[,<reviewer2>...]] [-s subscriber[,...]] [<commit>|<commit range>]
list <commit>|<commit range>
- patch <diff1> [<diff2> ...]
+ patch [-c] <diff1> [<diff2> ...]
stage [-b branch] [<commit>|<commit range>]
- update [<commit>|<commit range>]
+ update [-m message] [<commit>|<commit range>]
Description:
Create or manage FreeBSD Phabricator reviews based on git commits. There
@@ -133,6 +133,11 @@ Examples:
$ git arc patch D12345
+ Apply the patch in review D12345 to the currently checked-out tree, and
+ commit it using the review's title, summary and author.
+
+ $ git arc patch -c D12345
+
List the status of reviews for all the commits in the branch "feature":
$ git arc list main..feature
@@ -142,6 +147,26 @@ __EOF__
exit 1
}
+#
+# Filter the output of call-conduit to remove the warnings that are generated
+# for some installations where openssl module is mysteriously installed twice so
+# a warning is generated. It's likely a local config error, but we should work
+# in the face of that.
+#
+arc_call_conduit()
+{
+ arc call-conduit "$@" | grep -v '^Warning: '
+}
+
+#
+# Filter the output of arc list to remove the warnings as above, as well as
+# the bolding sequence (the color sequence remains intact).
+#
+arc_list()
+{
+ arc list "$@" | grep -v '^Warning: ' | sed -E 's/\x1b\[1m//g;s/\x1b\[m//g'
+}
+
diff2phid()
{
local diff
@@ -152,7 +177,7 @@ diff2phid()
fi
echo '{"names":["'"$diff"'"]}' |
- arc call-conduit -- phid.lookup |
+ arc_call_conduit -- phid.lookup |
jq -r "select(.response != []) | .response.${diff}.phid"
}
@@ -167,7 +192,7 @@ diff2status()
tmp=$(mktemp)
echo '{"names":["'"$diff"'"]}' |
- arc call-conduit -- phid.lookup > "$tmp"
+ arc_call_conduit -- phid.lookup > "$tmp"
status=$(jq -r "select(.response != []) | .response.${diff}.status" < "$tmp")
summary=$(jq -r "select(.response != []) |
.response.${diff}.fullName" < "$tmp")
@@ -187,6 +212,21 @@ log2diff()
fi
}
+# Look for an open revision with a title equal to the input string. Return
+# a possibly empty list of Differential revision IDs.
+title2diff()
+{
+ local title
+
+ title=$(echo $1 | sed 's/"/\\"/g')
+ arc_list --no-ansi |
+ awk -F': ' '{
+ if (substr($0, index($0, FS) + length(FS)) == "'"$title"'") {
+ print substr($1, match($1, "D[1-9][0-9]*"))
+ }
+ }'
+}
+
commit2diff()
{
local commit diff title
@@ -204,7 +244,7 @@ commit2diff()
# Second, search the open reviews returned by 'arc list' looking
# for a subject match.
title=$(git show -s --format=%s "$commit")
- diff=$(arc list | grep -F "$title" | grep -E -o 'D[1-9][0-9]*:' | tr -d ':')
+ diff=$(title2diff "$title")
if [ -z "$diff" ]; then
err "could not find review for '${title}'"
elif [ "$(echo "$diff" | wc -l)" -ne 1 ]; then
@@ -229,8 +269,6 @@ create_one_review()
return 1
fi
- git checkout -q "$commit"
-
msg=$(mktemp)
git show -s --format='%B' "$commit" > "$msg"
printf "\nTest Plan:\n" >> "$msg"
@@ -240,7 +278,8 @@ create_one_review()
printf "%s\n" "${subscribers}" >> "$msg"
yes | env EDITOR=true \
- arc diff --message-file "$msg" --never-apply-patches --create --allow-untracked $BROWSE HEAD~
+ arc diff --message-file "$msg" --never-apply-patches --create \
+ --allow-untracked $BROWSE --head "$commit" "${commit}~"
[ $? -eq 0 ] || err "could not create Phabricator diff"
if [ -n "$parent" ]; then
@@ -257,7 +296,7 @@ create_one_review()
"value": ["'"${parentphid}"'"]
}
]}' |
- arc call-conduit -- differential.revision.edit >&3
+ arc_call_conduit -- differential.revision.edit >&3
fi
rm -f "$msg"
return 0
@@ -275,13 +314,13 @@ diff2reviewers()
"constraints": {"phids": ["'"$reviewid"'"]},
"attachments": {"reviewers": true}
}' |
- arc call-conduit -- differential.revision.search |
+ arc_call_conduit -- differential.revision.search |
jq '.response.data[0].attachments.reviewers.reviewers[] | select(.status == "accepted").reviewerPHID')
if [ -n "$userids" ]; then
echo '{
"constraints": {"phids": ['"$(echo -n "$userids" | tr '[:space:]' ',')"']}
}' |
- arc call-conduit -- user.search |
+ arc_call_conduit -- user.search |
jq -r '.response.data[].fields.username'
fi
}
@@ -291,7 +330,7 @@ prompt()
local resp
if [ "$ASSUME_YES" ]; then
- return 1
+ return 0
fi
printf "\nDoes this look OK? [y/N] "
@@ -317,24 +356,6 @@ show_and_prompt()
prompt
}
-save_head()
-{
- local orig
-
- if ! orig=$(git symbolic-ref --short -q HEAD); then
- orig=$(git show -s --pretty=%H HEAD)
- fi
- SAVED_HEAD=$orig
-}
-
-restore_head()
-{
- if [ -n "$SAVED_HEAD" ]; then
- git checkout -q "$SAVED_HEAD"
- SAVED_HEAD=
- fi
-}
-
build_commit_list()
{
local chash _commits commits
@@ -343,7 +364,7 @@ build_commit_list()
_commits=$(git rev-parse "${chash}")
if ! git cat-file -e "${chash}"'^{commit}' >/dev/null 2>&1; then
# shellcheck disable=SC2086
- _commits=$(git rev-list $_commits | tail -r)
+ _commits=$(git rev-list --reverse $_commits)
fi
[ -n "$_commits" ] || err "invalid commit ID ${chash}"
commits="$commits $_commits"
@@ -356,15 +377,19 @@ gitarc__create()
local commit commits doprompt list o prev reviewers subscribers
list=
+ prev=""
if [ "$(git config --bool --get arc.list 2>/dev/null || echo false)" != "false" ]; then
list=1
fi
doprompt=1
- while getopts lr:s: o; do
+ while getopts lp:r:s: o; do
case "$o" in
l)
list=1
;;
+ p)
+ prev="$OPTARG"
+ ;;
r)
reviewers="$OPTARG"
;;
@@ -390,8 +415,6 @@ gitarc__create()
doprompt=
fi
- save_head
- prev=""
for commit in ${commits}; do
if create_one_review "$commit" "$reviewers" "$subscribers" "$prev" \
"$doprompt"; then
@@ -400,14 +423,14 @@ gitarc__create()
prev=""
fi
done
- restore_head
}
gitarc__list()
{
- local chash commit commits diff title
+ local chash commit commits diff openrevs title
commits=$(build_commit_list "$@")
+ openrevs=$(arc_list --ansi)
for commit in $commits; do
chash=$(git show -s --format='%C(auto)%h' "$commit")
@@ -420,12 +443,13 @@ gitarc__list()
fi
# This does not use commit2diff as it needs to handle errors
- # differently and keep the entire status. The extra 'cat'
- # after 'fgrep' avoids erroring due to -e.
+ # differently and keep the entire status.
title=$(git show -s --format=%s "$commit")
- diff=$(arc list | grep -F "$title" | cat)
+ diff=$(echo "$openrevs" | \
+ awk -F'D[1-9][0-9]*: ' \
+ '{if ($2 == "'"$(echo $title | sed 's/"/\\"/g')"'") print $0}')
if [ -z "$diff" ]; then
- echo "No Review : $title"
+ echo "No Review : $title"
elif [ "$(echo "$diff" | wc -l)" -ne 1 ]; then
echo -n "Ambiguous Reviews: "
echo "$diff" | grep -E -o 'D[1-9][0-9]*:' | tr -d ':' \
@@ -436,24 +460,168 @@ gitarc__list()
done
}
+# Try to guess our way to a good author name. The DWIM is strong in this
+# function, but these heuristics seem to generally produce the right results, in
+# the sample of src commits I checked out.
+find_author()
+{
+ local addr name email author_addr author_name
+
+ addr="$1"
+ name="$2"
+ author_addr="$3"
+ author_name="$4"
+
+ # The Phabricator interface doesn't have a simple way to get author name and
+ # address, so we have to try a number of heuristics to get the right result.
+
+ # Choice 1: It's a FreeBSD committer. These folks have no '.' in their phab
+ # username/addr. Sampled data in phab suggests that there's a high rate of
+ # these people having their local config pointing at something other than
+ # freebsd.org (which isn't surprising for ports committers getting src
+ # commits reviewed).
+ case "${addr}" in
+ *.*) ;; # external user
+ *)
+ echo "${name} <${addr}@FreeBSD.org>"
+ return
+ ;;
+ esac
+
+ # Choice 2: author_addr and author_name were set in the bundle, so use
+ # that. We may need to filter some known bogus ones, should they crop up.
+ if [ -n "$author_name" -a -n "$author_addr" ]; then
+ echo "${author_name} <${author_addr}>"
+ return
+ fi
+
+ # Choice 3: We can find this user in the FreeBSD repo. They've submited
+ # something before, and they happened to use an email that's somewhat
+ # similar to their phab username.
+ email=$(git log -1 --author "$(echo ${addr} | tr _ .)" --pretty="%aN <%aE>")
+ if [ -n "${email}" ]; then
+ echo "${email}"
+ return
+ fi
+
+ # Choice 4: We know this user. They've committed before, and they happened
+ # to use the same name, unless the name has the word 'user' in it. This
+ # might not be a good idea, since names can be somewhat common (there
+ # are two Andrew Turners that have contributed to FreeBSD, for example).
+ if ! (echo "${name}" | grep -w "[Uu]ser" -q); then
+ email=$(git log -1 --author "${name}" --pretty="%aN <%aE>")
+ if [ -n "$email" ]; then
+ echo "$email"
+ return
+ fi
+ fi
+
+ # Choice 5: Wing it as best we can. In this scenario, we replace the last _
+ # with a @, and call it the email address...
+ # Annoying fun fact: Phab replaces all non alpha-numerics with _, so we
+ # don't know if the prior _ are _ or + or any number of other characters.
+ # Since there's issues here, prompt
+ a=$(printf "%s <%s>\n" "${name}" $(echo "$addr" | sed -e 's/\(.*\)_/\1@/'))
+ echo "Making best guess: Truning ${addr} to ${a}"
+ if ! prompt; then
+ echo "ABORT"
+ return
+ fi
+ echo "${a}"
+}
+
+patch_commit()
+{
+ local diff reviewid review_data authorid user_data user_addr user_name author
+ local tmp author_addr author_name
+
+ diff=$1
+ reviewid=$(diff2phid "$diff")
+ # Get the author phid for this patch
+ review_data=$(echo '{
+ "constraints": {"phids": ["'"$reviewid"'"]}
+ }' |
+ arc_call_conduit -- differential.revision.search)
+ authorid=$(echo "$review_data" | jq -r '.response.data[].fields.authorPHID' )
+ # Get metadata about the user that submitted this patch
+ user_data=$(echo '{
+ "constraints": {"phids": ["'"$authorid"'"]}
+ }' |
+ arc call-conduit -- user.search | grep -v ^Warning: |
+ jq -r '.response.data[].fields')
+ user_addr=$(echo "$user_data" | jq -r '.username')
+ user_name=$(echo "$user_data" | jq -r '.realName')
+ # Dig the data out of querydiffs api endpoint, although it's deprecated,
+ # since it's one of the few places we can get email addresses. It's unclear
+ # if we can expect multiple difference ones of these. Some records don't
+ # have this data, so we remove all the 'null's. We sort the results and
+ # remove duplicates 'just to be sure' since we've not seen multiple
+ # records that match.
+ diff_data=$(echo '{
+ "revisionIDs": [ '"${diff#D}"' ]
+ }' | arc_call_conduit -- differential.querydiffs |
+ jq -r '.response | flatten | .[]')
+ author_addr=$(echo "$diff_data" | jq -r ".authorEmail?" | sort -u)
+ author_name=$(echo "$diff_data" | jq -r ".authorName?" | sort -u)
+ author=$(find_author "$user_addr" "$user_name" "$author_addr" "$author_name")
+
+ # If we had to guess, and the user didn't want to guess, abort
+ if [ "${author}" = "ABORT" ]; then
+ warn "Not committing due to uncertainty over author name"
+ exit 1
+ fi
+
+ tmp=$(mktemp)
+ echo "$review_data" | jq -r '.response.data[].fields.title' > $tmp
+ echo >> $tmp
+ echo "$review_data" | jq -r '.response.data[].fields.summary' >> $tmp
+ echo >> $tmp
+ # XXX this leaves an extra newline in some cases.
+ reviewers=$(diff2reviewers "$diff" | sed '/^$/d' | paste -sd ',' - | sed 's/,/, /g')
+ if [ -n "$reviewers" ]; then
+ printf "Reviewed by:\t%s\n" "${reviewers}" >> "$tmp"
+ fi
+ # XXX TODO refactor with gitarc__stage maybe?
+ printf "Differential Revision:\thttps://reviews.freebsd.org/%s\n" "${diff}" >> "$tmp"
+ git commit --author "${author}" --file "$tmp"
+ rm "$tmp"
+}
+
gitarc__patch()
{
- local rev
+ local rev commit
if [ $# -eq 0 ]; then
err_usage
fi
+ commit=false
+ while getopts c o; do
+ case "$o" in
+ c)
+ require_clean_work_tree "patch -c"
+ commit=true
+ ;;
+ *)
+ err_usage
+ ;;
+ esac
+ done
+ shift $((OPTIND-1))
+
for rev in "$@"; do
arc patch --skip-dependencies --nocommit --nobranch --force "$rev"
echo "Applying ${rev}..."
[ $? -eq 0 ] || break
+ if ${commit}; then
+ patch_commit $rev
+ fi
done
}
gitarc__stage()
{
- local author branch commit commits diff reviewers tmp
+ local author branch commit commits diff reviewers title tmp
branch=main
while getopts b: o; do
@@ -479,8 +647,8 @@ gitarc__stage()
tmp=$(mktemp)
for commit in $commits; do
git show -s --format=%B "$commit" > "$tmp"
- diff=$(arc list | grep -F "$(git show -s --format=%s "$commit")" |
- grep -E -o 'D[1-9][0-9]*:' | tr -d ':')
+ title=$(git show -s --format=%s "$commit")
+ diff=$(title2diff "$title")
if [ -n "$diff" ]; then
# XXX this leaves an extra newline in some cases.
reviewers=$(diff2reviewers "$diff" | sed '/^$/d' | paste -sd ',' - | sed 's/,/, /g')
@@ -501,10 +669,22 @@ gitarc__stage()
gitarc__update()
{
- local commit commits diff
+ local commit commits diff have_msg msg
+
+ while getopts m: o; do
+ case "$o" in
+ m)
+ msg="$OPTARG"
+ have_msg=1
+ ;;
+ *)
+ err_usage
+ ;;
+ esac
+ done
+ shift $((OPTIND-1))
commits=$(build_commit_list "$@")
- save_head
for commit in ${commits}; do
diff=$(commit2diff "$commit")
@@ -512,14 +692,17 @@ gitarc__update()
break
fi
- git checkout -q "$commit"
-
# The linter is stupid and applies patches to the working copy.
# This would be tolerable if it didn't try to correct "misspelled" variable
# names.
- arc diff --allow-untracked --never-apply-patches --update "$diff" HEAD~
+ if [ -n "$have_msg" ]; then
+ arc diff --message "$msg" --allow-untracked --never-apply-patches \
+ --update "$diff" --head "$commit" "${commit}~"
+ else
+ arc diff --allow-untracked --never-apply-patches --update "$diff" \
+ --head "$commit" "${commit}~"
+ fi
done
- restore_head
}
set -e
@@ -579,6 +762,16 @@ USAGE=
# shellcheck disable=SC1090
. "$git_sh_setup"
+# git commands use GIT_EDITOR instead of EDITOR, so try to provide consistent
+# behaviour. Ditto for PAGER. This makes git-arc play nicer with editor
+# plugins like vim-fugitive.
+if [ -n "$GIT_EDITOR" ]; then
+ EDITOR=$GIT_EDITOR
+fi
+if [ -n "$GIT_PAGER" ]; then
+ PAGER=$GIT_PAGER
+fi
+
# Bail if the working tree is unclean, except for "list" and "patch"
# operations.
case $verb in
@@ -593,6 +786,4 @@ if [ "$(git config --bool --get arc.browse 2>/dev/null || echo false)" != "false
BROWSE=--browse
fi
-trap restore_head EXIT INT
-
gitarc__"${verb}" "$@"
diff --git a/tools/tools/git/hooks/prepare-commit-msg b/tools/tools/git/hooks/prepare-commit-msg
index 761b4443cfd8..ac3844accec2 100755
--- a/tools/tools/git/hooks/prepare-commit-msg
+++ b/tools/tools/git/hooks/prepare-commit-msg
@@ -50,9 +50,9 @@ $(awk '1;/^#$/{exit}' $1)
# Obtained from: <If the change is from a third party.>
# Fixes: <Short hash and title line of commit fixed by this change>
# MFC after: <N [day[s]|week[s]|month[s]]. Request a reminder email>
-# MFH: <Ports tree branch name. Request approval for merge.>
# Relnotes: <Set to 'yes' for mention in release notes.>
# Security: <Vulnerability reference (one per line) or description.>
+# Event: <If this was done at a conference.>
# Sponsored by: <If the change was sponsored by an organization.>
# Pull Request: <https://github.com/freebsd/<repo>/pull/###>
# Differential Revision: <https://reviews.freebsd.org/D###>
diff --git a/tools/tools/git/mfc-candidates.sh b/tools/tools/git/mfc-candidates.sh
new file mode 100644
index 000000000000..d7fd4b5ded13
--- /dev/null
+++ b/tools/tools/git/mfc-candidates.sh
@@ -0,0 +1,179 @@
+#!/bin/sh
+
+#-
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright 2022 The FreeBSD Foundation
+#
+# This software was developed by Ed Maste
+# under sponsorship from the FreeBSD Foundation.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted providing 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.
+
+from_branch=freebsd/main
+author="${USER}"
+
+# Get the FreeBSD repository
+repo=$(basename "$(git remote get-url freebsd 2>/dev/null)" 2>/dev/null)
+
+if [ "${repo}" = "ports.git" ]; then
+ year=$(date '+%Y')
+ month=$(date '+%m')
+ qtr=$(((month-1) / 3 + 1))
+ to_branch="freebsd/${year}Q${qtr}"
+elif [ "${repo}" = "src.git" ]; then
+ to_branch=freebsd/stable/13
+ # If pwd is a stable or release branch tree, default to it.
+ cur_branch=$(git symbolic-ref --short HEAD 2>/dev/null)
+ case $cur_branch in
+ stable/*)
+ to_branch=$cur_branch
+ ;;
+ releng/*)
+ to_branch=$cur_branch
+ major=${cur_branch#releng/}
+ major=${major%.*}
+ from_branch=freebsd/stable/$major
+ esac
+else
+ echo "pwd is not under a ports or src repository."
+ exit 0
+fi
+
+params()
+{
+ echo "from: $from_branch"
+ echo "to: $to_branch"
+ if [ -n "$author" ]; then
+ echo "author/committer: $author"
+ else
+ echo "author/committer: <all>"
+ fi
+}
+
+usage()
+{
+ echo "usage: $(basename $0) [-ah] [-f from_branch] [-t to_branch] [-u user] [-X exclude_file] [path ...]"
+ echo
+ params
+ exit 0
+}
+
+while getopts "af:ht:u:vX:" opt; do
+ case $opt in
+ a)
+ # All authors/committers
+ author=
+ ;;
+ f)
+ from_branch=$OPTARG
+ ;;
+ h)
+ usage
+ ;;
+ t)
+ to_branch=$OPTARG
+ ;;
+ u)
+ author=$OPTARG
+ ;;
+ v)
+ verbose=1
+ ;;
+ X)
+ if [ ! -r "$OPTARG" ]; then
+ echo "Exclude file $OPTARG not readable" >&2
+ exit 1
+ fi
+ exclude_file=$OPTARG
+ ;;
+ esac
+done
+shift $(($OPTIND - 1))
+
+if [ $verbose ]; then
+ params
+ echo
+fi
+
+authorarg=
+if [ -n "$author" ]; then
+ # Match user ID in the email portion of author or committer
+ authorarg="--committer <${author}@"
+fi
+
+# Commits in from_branch after branch point
+commits_from()
+{
+ git rev-list --first-parent $authorarg $to_branch..$from_branch "$@" |\
+ sort
+}
+
+# "cherry picked from" hashes from commits in to_branch after branch point
+commits_to()
+{
+ git log $from_branch..$to_branch --grep 'cherry picked from' "$@" |\
+ sed -E -n 's/^[[:space:]]*\(cherry picked from commit ([0-9a-f]+)\)[[:space:]]*$/\1/p' |\
+ sort
+}
+
+# Turn a list of short hashes (and optional descriptions) into a list of full
+# hashes.
+canonicalize_hashes()
+{
+ while read hash rest; do
+ case "${hash}" in
+ "#"*) continue ;;
+ esac
+ if ! git show --pretty=%H --no-patch $hash; then
+ echo "error parsing hash list" >&2
+ exit 1
+ fi
+ done | sort
+}
+
+workdir=$(mktemp -d /tmp/find-mfc.XXXXXXXXXX)
+from_list=$workdir/commits-from
+to_list=$workdir/commits-to
+candidate_list=$workdir/candidates
+
+if [ -n "$exclude_file" ]; then
+ exclude_list=$workdir/commits-exclude
+ canonicalize_hashes < $exclude_file > $exclude_list
+fi
+
+commits_from "$@" > $from_list
+commits_to "$@" > $to_list
+
+comm -23 $from_list $to_list > $candidate_list
+
+if [ -n "$exclude_file" ]; then
+ mv $candidate_list $candidate_list.bak
+ comm -23 $candidate_list.bak $exclude_list > $candidate_list
+fi
+
+# Sort by (but do not print) commit time
+while read hash; do
+ git show --pretty='%ct %h %s' --no-patch $hash
+done < $candidate_list | sort -n | cut -d ' ' -f 2-
+
+rm -rf "$workdir"
diff --git a/tools/tools/hcomp/Makefile b/tools/tools/hcomp/Makefile
index 06029b7a90d0..6adaa3456bf9 100644
--- a/tools/tools/hcomp/Makefile
+++ b/tools/tools/hcomp/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
BINDIR ?= ${HOME}/bin
BINOWN ?= ${USER}
diff --git a/tools/tools/hcomp/hcomp.pl b/tools/tools/hcomp/hcomp.pl
index 36e3bda1009c..6d15eef08542 100644
--- a/tools/tools/hcomp/hcomp.pl
+++ b/tools/tools/hcomp/hcomp.pl
@@ -1,6 +1,6 @@
#!/usr/bin/perl -w
#-
-# Copyright (c) 2003 Dag-Erling Coïdan Smørgrav
+# Copyright (c) 2003 Dag-Erling Smørgrav
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -26,7 +26,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
use strict;
diff --git a/tools/tools/html-mv/html-mv b/tools/tools/html-mv/html-mv
deleted file mode 100644
index 29ea1f2db81d..000000000000
--- a/tools/tools/html-mv/html-mv
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 1997 Wolfram Schneider <wosch@FreeBSD.org>. Berlin.
-# All rights reserved.
-#
-# rename sgml/html generated file names to human readable file names
-#
-# $ cd FAQ
-# $ make FORMATS=html
-# $ html-mv FAQ
-# $ ls
-# FAQ_ACKNOWLEDGMENTS.html
-# FAQ_Any_restrictions_on_how_I_divide_the_disk_up_.html
-# FAQ_Are_there_any_Database_systems_for_FreeBSD_.html
-# FAQ_Are_there_any_commercial_high-performance_X_servers_.html
-# FAQ_Books_on_FreeBSD.html
-# FAQ_Can_FreeBSD_handle_multiport_serial_cards_sharing_irqs_.html
-# [...]
-#
-# $FreeBSD$
-
-case $# in 0)
- echo "usage `basename $0` file"
- exit 1
-esac
-
-file=$1; export file
-
-if [ -f "$file.html" ]; then :
-else
- echo "$file.html does not exist"
- exit 1
-fi
-
-# search for title name
-egrep -i '^<title' $file[1-9]*.html |
- perl -npe 's/<TITLE>[\*\s]*//; s%\s*</TITLE>.*%%;
- s/[^a-zA-Z0-9\_\-\.:\n]/_/g' > .list
-
-# create sed commands
-awk -F: '{print "s/" $1 "/'$file'_" $2 ".html/g;"}' .list > .sed
-
-# create mv(1) shell script
-perl -ne 'chop;($a,$b)=split(/:/);
- print qq[rename ("$a", "$ENV{'file'}_$b.html") || ] .
- qq[die "rename $a $ENV{'file'}_$b.html:\$\!";\n]' .list > .mv
-
-# replace links
-if [ -f "$file.ln" ]; then
- perl -i -p .sed $file.ln
-fi
-
-# replace links
-perl -i -p .sed $file*.html
-
-# rename file names
-perl .mv
-
-rm -f .mv .sed .list
diff --git a/tools/tools/ifinfo/Makefile b/tools/tools/ifinfo/Makefile
index 21c2981fdb6d..9b0c60733563 100644
--- a/tools/tools/ifinfo/Makefile
+++ b/tools/tools/ifinfo/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= ifinfo
SRCS= ifinfo.c rfc1650.c
diff --git a/tools/tools/ifinfo/ifinfo.c b/tools/tools/ifinfo/ifinfo.c
index dea7d6ff8244..89d17f0c75fa 100644
--- a/tools/tools/ifinfo/ifinfo.c
+++ b/tools/tools/ifinfo/ifinfo.c
@@ -25,8 +25,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
#include <sys/socket.h> /* for PF_LINK */
diff --git a/tools/tools/ifinfo/ifinfo.h b/tools/tools/ifinfo/ifinfo.h
index c05a8b82eca5..764d623dec2d 100644
--- a/tools/tools/ifinfo/ifinfo.h
+++ b/tools/tools/ifinfo/ifinfo.h
@@ -25,8 +25,6 @@
* 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.
- *
- * $FreeBSD$
*/
#ifndef ifinfo_h
#define ifinfo_h 1
diff --git a/tools/tools/ifpifa/Makefile b/tools/tools/ifpifa/Makefile
index 92321cad57d0..b822022defd2 100644
--- a/tools/tools/ifpifa/Makefile
+++ b/tools/tools/ifpifa/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= ifpifa
MAN=
diff --git a/tools/tools/ifpifa/ifpifa.c b/tools/tools/ifpifa/ifpifa.c
index 3f2a8190fdef..bc8f7352bbb6 100644
--- a/tools/tools/ifpifa/ifpifa.c
+++ b/tools/tools/ifpifa/ifpifa.c
@@ -28,7 +28,7 @@
#include <sys/types.h>
#include <sys/callout.h>
-#include <sys/cdefs.h>
+
#include <sys/param.h>
#include <sys/protosw.h>
#include <sys/queue.h>
@@ -52,9 +52,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-
-__FBSDID("$FreeBSD$");
-
static struct nlist nl[] = {
#define N_IFNET 0
{ .n_name = "_ifnet", },
diff --git a/tools/tools/indent_wrapper/Makefile b/tools/tools/indent_wrapper/Makefile
index 87aa812b8049..9cdbcc95b238 100644
--- a/tools/tools/indent_wrapper/Makefile
+++ b/tools/tools/indent_wrapper/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PREFIX?= /usr/local
LOCALBASE?= /usr/local
BINDIR= ${PREFIX}/sbin
diff --git a/tools/tools/indent_wrapper/indent_wrapper.c b/tools/tools/indent_wrapper/indent_wrapper.c
index d9aab17a0894..8a6dbca146a2 100644
--- a/tools/tools/indent_wrapper/indent_wrapper.c
+++ b/tools/tools/indent_wrapper/indent_wrapper.c
@@ -21,8 +21,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <stdio.h>
diff --git a/tools/tools/intel-ucode-split/Makefile b/tools/tools/intel-ucode-split/Makefile
index 7f20c18834b9..61a61d79445e 100644
--- a/tools/tools/intel-ucode-split/Makefile
+++ b/tools/tools/intel-ucode-split/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= intel-ucode-split
MAN=
diff --git a/tools/tools/intel-ucode-split/intel-ucode-split.c b/tools/tools/intel-ucode-split/intel-ucode-split.c
index 214b61af5328..2fec7c9df07d 100644
--- a/tools/tools/intel-ucode-split/intel-ucode-split.c
+++ b/tools/tools/intel-ucode-split/intel-ucode-split.c
@@ -1,5 +1,5 @@
/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ * SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (C) 2018 The FreeBSD Foundation.
*
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <err.h>
diff --git a/tools/tools/ioat/Makefile b/tools/tools/ioat/Makefile
index 32a0478eb0a3..50601d250de5 100644
--- a/tools/tools/ioat/Makefile
+++ b/tools/tools/ioat/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= ioatcontrol
MAN= ioatcontrol.8
diff --git a/tools/tools/ioat/ioatcontrol.8 b/tools/tools/ioat/ioatcontrol.8
index 35f8d1fecc28..aeb0bc7d0b21 100644
--- a/tools/tools/ioat/ioatcontrol.8
+++ b/tools/tools/ioat/ioatcontrol.8
@@ -22,8 +22,6 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD$
-.\"
.Dd May 27, 2016
.Dt IOATCONTROL 8
.Os
diff --git a/tools/tools/ioat/ioatcontrol.c b/tools/tools/ioat/ioatcontrol.c
index f76af5b0e766..4c4358539420 100644
--- a/tools/tools/ioat/ioatcontrol.c
+++ b/tools/tools/ioat/ioatcontrol.c
@@ -25,8 +25,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/ioctl.h>
#include <sys/queue.h>
diff --git a/tools/tools/ipw/Makefile b/tools/tools/ipw/Makefile
index f952d8807802..f10ec3a03e35 100644
--- a/tools/tools/ipw/Makefile
+++ b/tools/tools/ipw/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= ipwstats
MAN=
diff --git a/tools/tools/ipw/ipwstats.c b/tools/tools/ipw/ipwstats.c
index fe8c5a83ab1a..8b95607397b0 100644
--- a/tools/tools/ipw/ipwstats.c
+++ b/tools/tools/ipw/ipwstats.c
@@ -25,9 +25,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/sysctl.h>
diff --git a/tools/tools/iso/check-iso3166.pl b/tools/tools/iso/check-iso3166.pl
index a8baf4ee6a78..3acdcdaf177d 100755
--- a/tools/tools/iso/check-iso3166.pl
+++ b/tools/tools/iso/check-iso3166.pl
@@ -1,7 +1,6 @@
#!/usr/bin/perl -w
#
-# $FreeBSD$
#
# This script compares the file iso3166 (from head/share/misc) with the files
# list-en1-semic-3.txt (from
diff --git a/tools/tools/iso/check-iso639.pl b/tools/tools/iso/check-iso639.pl
index 9350df09102c..aa41724ce076 100755
--- a/tools/tools/iso/check-iso639.pl
+++ b/tools/tools/iso/check-iso639.pl
@@ -1,7 +1,6 @@
#!/usr/bin/perl -w
#
-# $FreeBSD$
#
# This script compares the file iso639 (from head/share/misc) with the file
# ISO-639-2_8859-1.txt (from
diff --git a/tools/tools/iwi/Makefile b/tools/tools/iwi/Makefile
index 8ebdd60ebc05..42a72a901ada 100644
--- a/tools/tools/iwi/Makefile
+++ b/tools/tools/iwi/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= iwistats
MAN=
diff --git a/tools/tools/iwi/iwistats.c b/tools/tools/iwi/iwistats.c
index 1034dac7701f..48572e44a875 100644
--- a/tools/tools/iwi/iwistats.c
+++ b/tools/tools/iwi/iwistats.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
/*-
* Copyright (c) 2005
@@ -27,9 +26,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/sysctl.h>
diff --git a/tools/tools/iwn/Makefile b/tools/tools/iwn/Makefile
index 1f9e93a34fbe..948299d6c434 100644
--- a/tools/tools/iwn/Makefile
+++ b/tools/tools/iwn/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SUBDIR= iwnstats
diff --git a/tools/tools/iwn/iwnstats/Makefile b/tools/tools/iwn/iwnstats/Makefile
index 685e40759fb2..ccf1617c64b2 100644
--- a/tools/tools/iwn/iwnstats/Makefile
+++ b/tools/tools/iwn/iwnstats/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
MAN=
diff --git a/tools/tools/iwn/iwnstats/iwn_ioctl.c b/tools/tools/iwn/iwnstats/iwn_ioctl.c
index 4446886285d4..b1a889f74d46 100644
--- a/tools/tools/iwn/iwnstats/iwn_ioctl.c
+++ b/tools/tools/iwn/iwnstats/iwn_ioctl.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/tools/iwn/iwnstats/iwn_ioctl.h b/tools/tools/iwn/iwnstats/iwn_ioctl.h
index bc368ee4a34a..7f406785408b 100644
--- a/tools/tools/iwn/iwnstats/iwn_ioctl.h
+++ b/tools/tools/iwn/iwnstats/iwn_ioctl.h
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#ifndef __IWN_IOCTL_H__
#define __IWN_IOCTL_H__
diff --git a/tools/tools/iwn/iwnstats/iwnstats.h b/tools/tools/iwn/iwnstats/iwnstats.h
index 372a2aa6eb31..3c5b7d52de7e 100644
--- a/tools/tools/iwn/iwnstats/iwnstats.h
+++ b/tools/tools/iwn/iwnstats/iwnstats.h
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#ifndef __IWNSTATS_H__
#define __IWNSTATS_H__
diff --git a/tools/tools/iwn/iwnstats/main.c b/tools/tools/iwn/iwnstats/main.c
index 8717bc48f824..00a7da41d6a0 100644
--- a/tools/tools/iwn/iwnstats/main.c
+++ b/tools/tools/iwn/iwnstats/main.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include <stdbool.h>
diff --git a/tools/tools/kdrv/KernelDriver b/tools/tools/kdrv/KernelDriver
index 60f89d82bf39..8376c951f058 100755
--- a/tools/tools/kdrv/KernelDriver
+++ b/tools/tools/kdrv/KernelDriver
@@ -73,7 +73,6 @@ exec tclsh $0 $*
#
################################################################################
#
-# $FreeBSD$
#
################################################################################
diff --git a/tools/tools/kdrv/sample.drvinfo b/tools/tools/kdrv/sample.drvinfo
index 4941b07082c4..7ffe093656cf 100644
--- a/tools/tools/kdrv/sample.drvinfo
+++ b/tools/tools/kdrv/sample.drvinfo
@@ -2,7 +2,6 @@
# Sample driver information file for KernelDriver. See the top of
# the KernelDriver script for a more exact definition of the syntax.
#
-# $FreeBSD$
# Device driver name
#
diff --git a/tools/tools/kernelcruft/kernelcruft.sh b/tools/tools/kernelcruft/kernelcruft.sh
index 87288c54bd21..5d475d0a5b2e 100644
--- a/tools/tools/kernelcruft/kernelcruft.sh
+++ b/tools/tools/kernelcruft/kernelcruft.sh
@@ -4,7 +4,6 @@
#
# Try to find *.c files in /sys which are orphaned
#
-# $FreeBSD$
cd /sys/conf
cat files* | sed '
diff --git a/tools/tools/kerninclude/kerninclude.sh b/tools/tools/kerninclude/kerninclude.sh
index fd3e4fd4e072..120bd8c5caec 100644
--- a/tools/tools/kerninclude/kerninclude.sh
+++ b/tools/tools/kerninclude/kerninclude.sh
@@ -6,7 +6,6 @@
# this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
# ----------------------------------------------------------------------------
#
-# $FreeBSD$
#
# This script tries to find #include statements which are not needed in
# the FreeBSD kernel tree.
diff --git a/tools/tools/kernxref/kernxref.sh b/tools/tools/kernxref/kernxref.sh
index e729a100b7be..bfb5145f36ca 100644
--- a/tools/tools/kernxref/kernxref.sh
+++ b/tools/tools/kernxref/kernxref.sh
@@ -11,7 +11,6 @@
#
# Sort options by "Matthew Emmerton" <matt@gsicomp.on.ca>
#
-# $FreeBSD$
#
# This shell script will make a cross reference of the symbols of a kernel.
#
diff --git a/tools/tools/kttcp/Makefile b/tools/tools/kttcp/Makefile
index 2f2feb3709bb..fe332e3c048f 100644
--- a/tools/tools/kttcp/Makefile
+++ b/tools/tools/kttcp/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SHELL= /bin/sh
diff --git a/tools/tools/kttcp/README b/tools/tools/kttcp/README
index f78c8d66b07a..c2a39465d4fa 100644
--- a/tools/tools/kttcp/README
+++ b/tools/tools/kttcp/README
@@ -1,4 +1,3 @@
-$FreeBSD$
This is a port of Jason Thorpe's kttcp tool for testing network
performance for in-kernel applications (like NFS). The tool consists
diff --git a/tools/tools/kttcp/kttcp.c b/tools/tools/kttcp/kttcp.c
index 44c6613fa90b..52dc1eff7bc5 100644
--- a/tools/tools/kttcp/kttcp.c
+++ b/tools/tools/kttcp/kttcp.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
/* $NetBSD: kttcp.c,v 1.5 2002/07/11 23:32:35 simonb Exp $ */
/*
diff --git a/tools/tools/kttcp/sys/Makefile b/tools/tools/kttcp/sys/Makefile
index d7815306b4ab..851921a54e93 100644
--- a/tools/tools/kttcp/sys/Makefile
+++ b/tools/tools/kttcp/sys/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
KMOD = kttcp
SRCS = kttcp.c
diff --git a/tools/tools/kttcp/sys/kttcp.c b/tools/tools/kttcp/sys/kttcp.c
index 09739600feaf..2adca499b4d1 100644
--- a/tools/tools/kttcp/sys/kttcp.c
+++ b/tools/tools/kttcp/sys/kttcp.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
/* $NetBSD: kttcp.c,v 1.3 2002/07/03 19:36:52 thorpej Exp $ */
/*
diff --git a/tools/tools/kttcp/sys/kttcpio.h b/tools/tools/kttcp/sys/kttcpio.h
index 1375f6ef6c9d..6b0756528a27 100644
--- a/tools/tools/kttcp/sys/kttcpio.h
+++ b/tools/tools/kttcp/sys/kttcpio.h
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
/* $NetBSD$ */
/*
diff --git a/tools/tools/locale/Makefile b/tools/tools/locale/Makefile
index b66e39ec07aa..f3b399b50551 100644
--- a/tools/tools/locale/Makefile
+++ b/tools/tools/locale/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
# See https://wiki.freebsd.org/LocaleNewApproach
# Taken from FreeBSD svn [base]/user/edwin/locale/cldr
#
@@ -7,6 +6,10 @@
#
# Modified by John Marino to suit DragonFly needs
#
+
+CLDRVERSION= 43.0
+UCDVERSION= 15.0.0
+
.if ${.CURDIR} == ${.OBJDIR}
.error Do make obj first.
.endif
@@ -20,13 +23,9 @@ TOOLSDIR= ${BASEDIR}/tools
PATCHDIR= ${BASEDIR}/patch
UNIDIR= ${.OBJDIR:tA}/unicode
-PKGS= openjdk8 \
- p5-XML-Parser \
- p5-Tie-IxHash \
- p5-Text-Iconv
+PKGS= openjdk11 p5-XML-Parser p5-Tie-IxHash p5-Text-Iconv utf8proc
tools-test:
- pkg info -e ${PKGS}
- @echo tools ok.
+ @pkg info -e ${PKGS} || ( echo required packages: ${PKGS}; exit 1 )
KNOWN= monetdef numericdef msgdef colldef ctypedef # timedef
TYPES?= ${KNOWN}
@@ -39,8 +38,8 @@ SETENV= env -i \
TOOLSDIR="${TOOLSDIR}" \
ETCDIR="${ETCDIR}"
-all: posix build afterbuild
-.ORDER: posix build afterbuild
+all: tools-test posix build afterbuild widths
+.ORDER: tools-test posix build afterbuild widths
afterbuild: build
@echo ""
@@ -123,11 +122,10 @@ ENCODINGS= UTF-8 \
UTF-32
# CLDR files
-CLDRVERSION= 39.0
CLDRFILES_CORE= https://unicode.org/Public/cldr/${CLDRVERSION:R}/core.zip
CLDRFILES_KEY= https://unicode.org/Public/cldr/${CLDRVERSION:R}/cldr-keyboards-${CLDRVERSION}.zip
CLDRFILES_TOOLS=https://unicode.org/Public/cldr/${CLDRVERSION:R}/cldr-tools-${CLDRVERSION}.jar
-CLDRFILES_UCD= http://www.unicode.org/Public/zipped/13.0.0/UCD.zip
+CLDRFILES_UCD= https://www.unicode.org/Public/zipped/${UCDVERSION}/UCD.zip
# fetch and extract targets
${UNIDIR}:
@@ -141,12 +139,13 @@ extract-${CLDRFILES_${N}:T}:: ${CLDRFILES_${N}:T} ${UNIDIR}
extract: extract-${CLDRFILES_${N}:T}
.endfor
echo ${CLDRVERSION} > ${UNIDIR}/cldr-version
+ mkdir -p ${UNIDIR}/seed/main
patch::
.if exists(${PATCHDIR})
cd ${UNIDIR} && cat ${PATCHDIR}/patch-* | patch
.endif
-JAVA_CLDR= java -DCLDR_DIR=${UNIDIR:Q} -jar ${.OBJDIR:tA}//${CLDRFILES_TOOLS:T}
+JAVA_CLDR= java -DCLDR_DIR=${UNIDIR:Q} -jar ${.OBJDIR:tA}/${CLDRFILES_TOOLS:T}
posix: posixcm post-posixcm posixsrc
.ORDER: posixcm post-posixcm posixsrc
diff --git a/tools/tools/locale/README b/tools/tools/locale/README
index 380786929b7c..58cf6aff82d6 100644
--- a/tools/tools/locale/README
+++ b/tools/tools/locale/README
@@ -1,12 +1,12 @@
-# $FreeBSD$
-
Files in this directory are used to generate locale source files
-from files in CLDR (Unicode Common Locale Data Repository).
+from files in CLDR (Unicode Common Locale Data Repository).
To generate the files, do the following:
cd /usr/src/tools/tools/locale
make obj (mandatory)
+ make fetch (download the CLDR source)
+ make extract (and extract it)
make -j16 (-jN recommended)
make diff (check if the changes are reasonable)
make install
diff --git a/tools/tools/locale/etc/charmaps.xml b/tools/tools/locale/etc/charmaps.xml
index dcf1644e4371..0193912b9a01 100644
--- a/tools/tools/locale/etc/charmaps.xml
+++ b/tools/tools/locale/etc/charmaps.xml
@@ -1,4 +1,3 @@
-<!-- $FreeBSD$ -->
<data>
<languages>
<!-- Attributes known:
diff --git a/tools/tools/locale/etc/charmaps/ARMSCII-8.TXT b/tools/tools/locale/etc/charmaps/ARMSCII-8.TXT
index cad0c1c89a62..4d56d1d511f0 100644
--- a/tools/tools/locale/etc/charmaps/ARMSCII-8.TXT
+++ b/tools/tools/locale/etc/charmaps/ARMSCII-8.TXT
@@ -5,7 +5,6 @@
#
# Updated with libiconv-1.13.1/tests/ARMSCII-8.TXT
#
-# $FreeBSD$
#
0x00 0x0000
0x01 0x0001
diff --git a/tools/tools/locale/etc/charmaps/Big5.TXT b/tools/tools/locale/etc/charmaps/Big5.TXT
index 7a3f927a04a5..6593c8057f61 100644
--- a/tools/tools/locale/etc/charmaps/Big5.TXT
+++ b/tools/tools/locale/etc/charmaps/Big5.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Name: BIG5 to Unicode table (complete)
# Unicode version: 1.1
diff --git a/tools/tools/locale/etc/charmaps/CP1131.TXT b/tools/tools/locale/etc/charmaps/CP1131.TXT
index c865ae74427a..cf72e95683e6 100644
--- a/tools/tools/locale/etc/charmaps/CP1131.TXT
+++ b/tools/tools/locale/etc/charmaps/CP1131.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Obtained from
# http://haible.de/bruno/charsets/conversion-tables/CP1131.html
diff --git a/tools/tools/locale/etc/charmaps/CP1251.TXT b/tools/tools/locale/etc/charmaps/CP1251.TXT
index ca3e8f026277..de666c43357b 100644
--- a/tools/tools/locale/etc/charmaps/CP1251.TXT
+++ b/tools/tools/locale/etc/charmaps/CP1251.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Name: cp1251 to Unicode table
# Unicode version: 2.0
diff --git a/tools/tools/locale/etc/charmaps/CP866.TXT b/tools/tools/locale/etc/charmaps/CP866.TXT
index f38b16812055..d071385fc3b1 100644
--- a/tools/tools/locale/etc/charmaps/CP866.TXT
+++ b/tools/tools/locale/etc/charmaps/CP866.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Name: cp866_DOSCyrillicRussian to Unicode table
# Unicode version: 2.0
diff --git a/tools/tools/locale/etc/charmaps/GB18030.TXT b/tools/tools/locale/etc/charmaps/GB18030.TXT
index b9706cbf8bde..476df831e172 100644
--- a/tools/tools/locale/etc/charmaps/GB18030.TXT
+++ b/tools/tools/locale/etc/charmaps/GB18030.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Obtained from libiconv-0.13.1
#
diff --git a/tools/tools/locale/etc/charmaps/GB2312.TXT b/tools/tools/locale/etc/charmaps/GB2312.TXT
index be2c3989a7b5..f2f796746da1 100644
--- a/tools/tools/locale/etc/charmaps/GB2312.TXT
+++ b/tools/tools/locale/etc/charmaps/GB2312.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Name: GB2312-80 to Unicode table (complete, hex format)
# Unicode version: 3.0
diff --git a/tools/tools/locale/etc/charmaps/GBK.TXT b/tools/tools/locale/etc/charmaps/GBK.TXT
index e342b86d9c5f..818f6eb17794 100644
--- a/tools/tools/locale/etc/charmaps/GBK.TXT
+++ b/tools/tools/locale/etc/charmaps/GBK.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Obtained from libiconv-0.13.1
#
diff --git a/tools/tools/locale/etc/charmaps/ISCII-DEV.TXT b/tools/tools/locale/etc/charmaps/ISCII-DEV.TXT
index 7de1f76ca483..77fd05e87277 100644
--- a/tools/tools/locale/etc/charmaps/ISCII-DEV.TXT
+++ b/tools/tools/locale/etc/charmaps/ISCII-DEV.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
#=======================================================================
# File name: DEVANAGA.TXT
diff --git a/tools/tools/locale/etc/charmaps/ISO8859-1.TXT b/tools/tools/locale/etc/charmaps/ISO8859-1.TXT
index 5771a8b5d3a4..b7fbcb7be24f 100644
--- a/tools/tools/locale/etc/charmaps/ISO8859-1.TXT
+++ b/tools/tools/locale/etc/charmaps/ISO8859-1.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Name: ISO/IEC 8859-1:1998 to Unicode
# Unicode version: 3.0
diff --git a/tools/tools/locale/etc/charmaps/ISO8859-13.TXT b/tools/tools/locale/etc/charmaps/ISO8859-13.TXT
index 76d7e6e065a5..4992046d10c6 100644
--- a/tools/tools/locale/etc/charmaps/ISO8859-13.TXT
+++ b/tools/tools/locale/etc/charmaps/ISO8859-13.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Name: ISO/IEC 8859-13:1998 to Unicode
# Unicode version: 3.0
diff --git a/tools/tools/locale/etc/charmaps/ISO8859-15.TXT b/tools/tools/locale/etc/charmaps/ISO8859-15.TXT
index 6c251b2594a1..ecbae7700b54 100644
--- a/tools/tools/locale/etc/charmaps/ISO8859-15.TXT
+++ b/tools/tools/locale/etc/charmaps/ISO8859-15.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Name: ISO/IEC 8859-15:1999 to Unicode
# Unicode version: 3.0
diff --git a/tools/tools/locale/etc/charmaps/ISO8859-2.TXT b/tools/tools/locale/etc/charmaps/ISO8859-2.TXT
index 130a16a6aef6..e40685cd83b7 100644
--- a/tools/tools/locale/etc/charmaps/ISO8859-2.TXT
+++ b/tools/tools/locale/etc/charmaps/ISO8859-2.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Name: ISO 8859-2:1999 to Unicode
# Unicode version: 3.0
diff --git a/tools/tools/locale/etc/charmaps/ISO8859-4.TXT b/tools/tools/locale/etc/charmaps/ISO8859-4.TXT
index 7e24ab384bd3..2128e686ea11 100644
--- a/tools/tools/locale/etc/charmaps/ISO8859-4.TXT
+++ b/tools/tools/locale/etc/charmaps/ISO8859-4.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Name: ISO/IEC 8859-4:1998 to Unicode
# Unicode version: 3.0
diff --git a/tools/tools/locale/etc/charmaps/ISO8859-5.TXT b/tools/tools/locale/etc/charmaps/ISO8859-5.TXT
index 895153671f4e..cda5eec0fc96 100644
--- a/tools/tools/locale/etc/charmaps/ISO8859-5.TXT
+++ b/tools/tools/locale/etc/charmaps/ISO8859-5.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Name: ISO 8859-5:1999 to Unicode
# Unicode version: 3.0
diff --git a/tools/tools/locale/etc/charmaps/ISO8859-7.TXT b/tools/tools/locale/etc/charmaps/ISO8859-7.TXT
index 05dae5ef22c6..42e4b3065ca0 100644
--- a/tools/tools/locale/etc/charmaps/ISO8859-7.TXT
+++ b/tools/tools/locale/etc/charmaps/ISO8859-7.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Name: ISO 8859-7:2003 to Unicode
# Unicode version: 4.0
diff --git a/tools/tools/locale/etc/charmaps/ISO8859-9.TXT b/tools/tools/locale/etc/charmaps/ISO8859-9.TXT
index ea563b2994a6..f65493eee5a7 100644
--- a/tools/tools/locale/etc/charmaps/ISO8859-9.TXT
+++ b/tools/tools/locale/etc/charmaps/ISO8859-9.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Name: ISO/IEC 8859-9:1999 to Unicode
# Unicode version: 3.0
diff --git a/tools/tools/locale/etc/charmaps/KOI8-R.TXT b/tools/tools/locale/etc/charmaps/KOI8-R.TXT
index 55d53bbebbb1..9c9d1a1c02ea 100644
--- a/tools/tools/locale/etc/charmaps/KOI8-R.TXT
+++ b/tools/tools/locale/etc/charmaps/KOI8-R.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Name: KOI8-R (RFC1489) to Unicode
# Unicode version: 3.0
diff --git a/tools/tools/locale/etc/charmaps/KOI8-U.TXT b/tools/tools/locale/etc/charmaps/KOI8-U.TXT
index 4570af2fab2c..c9c8add11fe0 100644
--- a/tools/tools/locale/etc/charmaps/KOI8-U.TXT
+++ b/tools/tools/locale/etc/charmaps/KOI8-U.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Name: KOI8-U (RFC2319) to Unicode
# Unicode version: 5.1
diff --git a/tools/tools/locale/etc/charmaps/PT154.TXT b/tools/tools/locale/etc/charmaps/PT154.TXT
index df6acbe624d8..40ca39e8d707 100644
--- a/tools/tools/locale/etc/charmaps/PT154.TXT
+++ b/tools/tools/locale/etc/charmaps/PT154.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Charset name:
# PTCP154
diff --git a/tools/tools/locale/etc/charmaps/SJIS.TXT b/tools/tools/locale/etc/charmaps/SJIS.TXT
index ce5dc3455ab4..293eb1695c37 100644
--- a/tools/tools/locale/etc/charmaps/SJIS.TXT
+++ b/tools/tools/locale/etc/charmaps/SJIS.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Obtained from libiconv-0.13.1
#
diff --git a/tools/tools/locale/etc/charmaps/US-ASCII.TXT b/tools/tools/locale/etc/charmaps/US-ASCII.TXT
index c9ce43def3a1..52ffbe236976 100644
--- a/tools/tools/locale/etc/charmaps/US-ASCII.TXT
+++ b/tools/tools/locale/etc/charmaps/US-ASCII.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Format: Three tab-separated columns
# Column #1 is the US-ASCII code (in hex as 0xXX)
diff --git a/tools/tools/locale/etc/charmaps/charmaps.txt b/tools/tools/locale/etc/charmaps/charmaps.txt
index d8f8bb8190b3..876d990f1e06 100644
--- a/tools/tools/locale/etc/charmaps/charmaps.txt
+++ b/tools/tools/locale/etc/charmaps/charmaps.txt
@@ -1,4 +1,3 @@
-$FreeBSD$
Sources:
diff --git a/tools/tools/locale/etc/charmaps/eucCN.TXT b/tools/tools/locale/etc/charmaps/eucCN.TXT
index 1cec36cbb4d8..ebf4d8db5331 100644
--- a/tools/tools/locale/etc/charmaps/eucCN.TXT
+++ b/tools/tools/locale/etc/charmaps/eucCN.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Name: eucCN-80 to Unicode table (complete, hex format)
# Based on the GB2312.TXT
diff --git a/tools/tools/locale/etc/charmaps/eucJP.TXT b/tools/tools/locale/etc/charmaps/eucJP.TXT
index 0124883d0fe0..ffca30d999fd 100644
--- a/tools/tools/locale/etc/charmaps/eucJP.TXT
+++ b/tools/tools/locale/etc/charmaps/eucJP.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Obtained from libiconv-0.13.1
#
diff --git a/tools/tools/locale/etc/charmaps/eucKR.TXT b/tools/tools/locale/etc/charmaps/eucKR.TXT
index 335079170378..fb5b18e50f21 100644
--- a/tools/tools/locale/etc/charmaps/eucKR.TXT
+++ b/tools/tools/locale/etc/charmaps/eucKR.TXT
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Name: cp949 to Unicode table
# Unicode version: 2.0
diff --git a/tools/tools/locale/etc/final-maps/map.UTF-8 b/tools/tools/locale/etc/final-maps/map.UTF-8
index f49b7f56acd2..6cf3951aca38 100644
--- a/tools/tools/locale/etc/final-maps/map.UTF-8
+++ b/tools/tools/locale/etc/final-maps/map.UTF-8
@@ -5,29 +5,10 @@
# charset: UTF-8
######################
#################################################################################################
-# Copyright 1991-2011 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in #
-# http://www.unicode.org/copyright.html. #
-# #
-# Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode #
-# data files and any associated documentation (the "Data Files") or Unicode software and any #
-# associated documentation (the "Software") to deal in the Data Files or Software without #
-# restriction, including without limitation the rights to use, copy, modify, merge, publish, #
-# distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom #
-# the Data Files or Software are furnished to do so, provided that (a) the above copyright #
-# notice(s) and this permission notice appear with all copies of the Data Files or Software, #
-# (b) both the above copyright notice(s) and this permission notice appear in associated #
-# documentation, and (c) there is clear notice in each modified Data File or in the Software as #
-# well as in the documentation associated with the Data File(s) or Software that the data or #
-# software has been modified. #
-# #
-# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A #
-# PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT #
-# HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR #
-# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, #
-# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN #
-# CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. #
-#################################################################################################
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
<code_set_name> "UTF-8"
<mb_cur_min> 1
@@ -1685,6 +1666,7 @@ CHARMAP
<ARABIC_SMALL_KASRA> \xD8\x9A
<ARABIC_SEMICOLON> \xD8\x9B
<ARABIC_LETTER_MARK> \xD8\x9C
+<ARABIC_END_OF_TEXT_MARK> \xD8\x9D
<ARABIC_TRIPLE_DOT_PUNCTUATION_MARK> \xD8\x9E
<ARABIC_QUESTION_MARK> \xD8\x9F
<ARABIC_LETTER_KASHMIRI_YEH> \xD8\xA0
@@ -2249,6 +2231,47 @@ CHARMAP
<SYRIAC_LETTER_MALAYALAM_LLA> \xE0\xA1\xA8
<SYRIAC_LETTER_MALAYALAM_LLLA> \xE0\xA1\xA9
<SYRIAC_LETTER_MALAYALAM_SSA> \xE0\xA1\xAA
+<ARABIC_LETTER_ALEF_WITH_ATTACHED_FATHA> \xE0\xA1\xB0
+<ARABIC_LETTER_ALEF_WITH_ATTACHED_TOP_RIGHT_FATHA> \xE0\xA1\xB1
+<ARABIC_LETTER_ALEF_WITH_RIGHT_MIDDLE_STROKE> \xE0\xA1\xB2
+<ARABIC_LETTER_ALEF_WITH_LEFT_MIDDLE_STROKE> \xE0\xA1\xB3
+<ARABIC_LETTER_ALEF_WITH_ATTACHED_KASRA> \xE0\xA1\xB4
+<ARABIC_LETTER_ALEF_WITH_ATTACHED_BOTTOM_RIGHT_KASRA> \xE0\xA1\xB5
+<ARABIC_LETTER_ALEF_WITH_ATTACHED_ROUND_DOT_ABOVE> \xE0\xA1\xB6
+<ARABIC_LETTER_ALEF_WITH_ATTACHED_RIGHT_ROUND_DOT> \xE0\xA1\xB7
+<ARABIC_LETTER_ALEF_WITH_ATTACHED_LEFT_ROUND_DOT> \xE0\xA1\xB8
+<ARABIC_LETTER_ALEF_WITH_ATTACHED_ROUND_DOT_BELOW> \xE0\xA1\xB9
+<ARABIC_LETTER_ALEF_WITH_DOT_ABOVE> \xE0\xA1\xBA
+<ARABIC_LETTER_ALEF_WITH_ATTACHED_TOP_RIGHT_FATHA_AND_DOT_ABOVE> \xE0\xA1\xBB
+<ARABIC_LETTER_ALEF_WITH_RIGHT_MIDDLE_STROKE_AND_DOT_ABOVE> \xE0\xA1\xBC
+<ARABIC_LETTER_ALEF_WITH_ATTACHED_BOTTOM_RIGHT_KASRA_AND_DOT_ABOVE> \xE0\xA1\xBD
+<ARABIC_LETTER_ALEF_WITH_ATTACHED_TOP_RIGHT_FATHA_AND_LEFT_RING> \xE0\xA1\xBE
+<ARABIC_LETTER_ALEF_WITH_RIGHT_MIDDLE_STROKE_AND_LEFT_RING> \xE0\xA1\xBF
+<ARABIC_LETTER_ALEF_WITH_ATTACHED_BOTTOM_RIGHT_KASRA_AND_LEFT_RING> \xE0\xA2\x80
+<ARABIC_LETTER_ALEF_WITH_ATTACHED_RIGHT_HAMZA> \xE0\xA2\x81
+<ARABIC_LETTER_ALEF_WITH_ATTACHED_LEFT_HAMZA> \xE0\xA2\x82
+<ARABIC_TATWEEL_WITH_OVERSTRUCK_HAMZA> \xE0\xA2\x83
+<ARABIC_TATWEEL_WITH_OVERSTRUCK_WAW> \xE0\xA2\x84
+<ARABIC_TATWEEL_WITH_TWO_DOTS_BELOW> \xE0\xA2\x85
+<ARABIC_LETTER_THIN_YEH> \xE0\xA2\x86
+<ARABIC_BASELINE_ROUND_DOT> \xE0\xA2\x87
+<ARABIC_RAISED_ROUND_DOT> \xE0\xA2\x88
+<ARABIC_LETTER_NOON_WITH_INVERTED_SMALL_V> \xE0\xA2\x89
+<ARABIC_LETTER_HAH_WITH_INVERTED_SMALL_V_BELOW> \xE0\xA2\x8A
+<ARABIC_LETTER_TAH_WITH_DOT_BELOW> \xE0\xA2\x8B
+<ARABIC_LETTER_TAH_WITH_THREE_DOTS_BELOW> \xE0\xA2\x8C
+<ARABIC_LETTER_KEHEH_WITH_TWO_DOTS_VERTICALLY_BELOW> \xE0\xA2\x8D
+<ARABIC_VERTICAL_TAIL> \xE0\xA2\x8E
+<ARABIC_POUND_MARK_ABOVE> \xE0\xA2\x90
+<ARABIC_PIASTRE_MARK_ABOVE> \xE0\xA2\x91
+<ARABIC_SMALL_HIGH_WORD_AL-JUZ> \xE0\xA2\x98
+<ARABIC_SMALL_LOW_WORD_ISHMAAM> \xE0\xA2\x99
+<ARABIC_SMALL_LOW_WORD_IMAALA> \xE0\xA2\x9A
+<ARABIC_SMALL_LOW_WORD_TASHEEL> \xE0\xA2\x9B
+<ARABIC_MADDA_WAAJIB> \xE0\xA2\x9C
+<ARABIC_SUPERSCRIPT_ALEF_MOKHASSAS> \xE0\xA2\x9D
+<ARABIC_DOUBLED_MADDA> \xE0\xA2\x9E
+<ARABIC_HALF_MADDA_OVER_MADDA> \xE0\xA2\x9F
<ARABIC_LETTER_BEH_WITH_SMALL_V_BELOW> \xE0\xA2\xA0
<ARABIC_LETTER_BEH_WITH_HAMZA_ABOVE> \xE0\xA2\xA1
<ARABIC_LETTER_JEEM_WITH_TWO_DOTS_ABOVE> \xE0\xA2\xA2
@@ -2270,6 +2293,7 @@ CHARMAP
<ARABIC_LETTER_ZAIN_WITH_INVERTED_V_ABOVE> \xE0\xA2\xB2
<ARABIC_LETTER_AIN_WITH_THREE_DOTS_BELOW> \xE0\xA2\xB3
<ARABIC_LETTER_KAF_WITH_DOT_BELOW> \xE0\xA2\xB4
+<ARABIC_LETTER_QAF_WITH_DOT_BELOW_AND_NO_DOTS_ABOVE> \xE0\xA2\xB5
<ARABIC_LETTER_BEH_WITH_SMALL_MEEM_ABOVE> \xE0\xA2\xB6
<ARABIC_LETTER_PEH_WITH_SMALL_MEEM_ABOVE> \xE0\xA2\xB7
<ARABIC_LETTER_TEH_WITH_SMALL_TEH_ABOVE> \xE0\xA2\xB8
@@ -2288,6 +2312,17 @@ CHARMAP
<ARABIC_LETTER_JEEM_WITH_THREE_DOTS_ABOVE> \xE0\xA3\x85
<ARABIC_LETTER_JEEM_WITH_THREE_DOTS_BELOW> \xE0\xA3\x86
<ARABIC_LETTER_LAM_WITH_SMALL_ARABIC_LETTER_TAH_ABOVE> \xE0\xA3\x87
+<ARABIC_LETTER_GRAF> \xE0\xA3\x88
+<ARABIC_SMALL_FARSI_YEH> \xE0\xA3\x89
+<ARABIC_SMALL_HIGH_FARSI_YEH> \xE0\xA3\x8A
+<ARABIC_SMALL_HIGH_YEH_BARREE_WITH_TWO_DOTS_BELOW> \xE0\xA3\x8B
+<ARABIC_SMALL_HIGH_WORD_SAH> \xE0\xA3\x8C
+<ARABIC_SMALL_HIGH_ZAH> \xE0\xA3\x8D
+<ARABIC_LARGE_ROUND_DOT_ABOVE> \xE0\xA3\x8E
+<ARABIC_LARGE_ROUND_DOT_BELOW> \xE0\xA3\x8F
+<ARABIC_SUKUN_BELOW> \xE0\xA3\x90
+<ARABIC_LARGE_CIRCLE_BELOW> \xE0\xA3\x91
+<ARABIC_LARGE_ROUND_DOT_INSIDE_CIRCLE_BELOW> \xE0\xA3\x92
<ARABIC_SMALL_LOW_WAW> \xE0\xA3\x93
<ARABIC_SMALL_HIGH_WORD_AR-RUB> \xE0\xA3\x94
<ARABIC_SMALL_HIGH_SAD> \xE0\xA3\x95
@@ -2946,6 +2981,7 @@ CHARMAP
<TELUGU_LETTER_SSA> \xE0\xB0\xB7
<TELUGU_LETTER_SA> \xE0\xB0\xB8
<TELUGU_LETTER_HA> \xE0\xB0\xB9
+<TELUGU_SIGN_NUKTA> \xE0\xB0\xBC
<TELUGU_SIGN_AVAGRAHA> \xE0\xB0\xBD
<TELUGU_VOWEL_SIGN_AA> \xE0\xB0\xBE
<TELUGU_VOWEL_SIGN_I> \xE0\xB0\xBF
@@ -2966,6 +3002,7 @@ CHARMAP
<TELUGU_LETTER_TSA> \xE0\xB1\x98
<TELUGU_LETTER_DZA> \xE0\xB1\x99
<TELUGU_LETTER_RRRA> \xE0\xB1\x9A
+<TELUGU_LETTER_NAKAARA_POLLU> \xE0\xB1\x9D
<TELUGU_LETTER_VOCALIC_RR> \xE0\xB1\xA0
<TELUGU_LETTER_VOCALIC_LL> \xE0\xB1\xA1
<TELUGU_VOWEL_SIGN_VOCALIC_L> \xE0\xB1\xA2
@@ -3061,6 +3098,7 @@ CHARMAP
<KANNADA_SIGN_VIRAMA> \xE0\xB3\x8D
<KANNADA_LENGTH_MARK> \xE0\xB3\x95
<KANNADA_AI_LENGTH_MARK> \xE0\xB3\x96
+<KANNADA_LETTER_NAKAARA_POLLU> \xE0\xB3\x9D
<KANNADA_LETTER_FA> \xE0\xB3\x9E
<KANNADA_LETTER_VOCALIC_RR> \xE0\xB3\xA0
<KANNADA_LETTER_VOCALIC_LL> \xE0\xB3\xA1
@@ -3078,6 +3116,7 @@ CHARMAP
<KANNADA_DIGIT_NINE> \xE0\xB3\xAF
<KANNADA_SIGN_JIHVAMULIYA> \xE0\xB3\xB1
<KANNADA_SIGN_UPADHMANIYA> \xE0\xB3\xB2
+<KANNADA_SIGN_COMBINING_ANUSVARA_ABOVE_RIGHT> \xE0\xB3\xB3
<MALAYALAM_SIGN_COMBINING_ANUSVARA_ABOVE> \xE0\xB4\x80
<MALAYALAM_SIGN_CANDRABINDU> \xE0\xB4\x81
<MALAYALAM_SIGN_ANUSVARA> \xE0\xB4\x82
@@ -3442,6 +3481,7 @@ CHARMAP
<LAO_TONE_MAI_CATAWA> \xE0\xBB\x8B
<LAO_CANCELLATION_MARK> \xE0\xBB\x8C
<LAO_NIGGAHITA> \xE0\xBB\x8D
+<LAO_YAMAKKAN> \xE0\xBB\x8E
<LAO_DIGIT_ZERO> \xE0\xBB\x90
<LAO_DIGIT_ONE> \xE0\xBB\x91
<LAO_DIGIT_TWO> \xE0\xBB\x92
@@ -5418,6 +5458,7 @@ CHARMAP
<TAGALOG_LETTER_BA> \xE1\x9C\x8A
<TAGALOG_LETTER_MA> \xE1\x9C\x8B
<TAGALOG_LETTER_YA> \xE1\x9C\x8C
+<TAGALOG_LETTER_RA> \xE1\x9C\x8D
<TAGALOG_LETTER_LA> \xE1\x9C\x8E
<TAGALOG_LETTER_WA> \xE1\x9C\x8F
<TAGALOG_LETTER_SA> \xE1\x9C\x90
@@ -5425,6 +5466,8 @@ CHARMAP
<TAGALOG_VOWEL_SIGN_I> \xE1\x9C\x92
<TAGALOG_VOWEL_SIGN_U> \xE1\x9C\x93
<TAGALOG_SIGN_VIRAMA> \xE1\x9C\x94
+<TAGALOG_SIGN_PAMUDPOD> \xE1\x9C\x95
+<TAGALOG_LETTER_ARCHAIC_RA> \xE1\x9C\x9F
<HANUNOO_LETTER_A> \xE1\x9C\xA0
<HANUNOO_LETTER_I> \xE1\x9C\xA1
<HANUNOO_LETTER_U> \xE1\x9C\xA2
@@ -5615,6 +5658,7 @@ CHARMAP
<MONGOLIAN_FREE_VARIATION_SELECTOR_TWO> \xE1\xA0\x8C
<MONGOLIAN_FREE_VARIATION_SELECTOR_THREE> \xE1\xA0\x8D
<MONGOLIAN_VOWEL_SEPARATOR> \xE1\xA0\x8E
+<MONGOLIAN_FREE_VARIATION_SELECTOR_FOUR> \xE1\xA0\x8F
<MONGOLIAN_DIGIT_ZERO> \xE1\xA0\x90
<MONGOLIAN_DIGIT_ONE> \xE1\xA0\x91
<MONGOLIAN_DIGIT_TWO> \xE1\xA0\x92
@@ -6219,6 +6263,20 @@ CHARMAP
<COMBINING_PARENTHESES_OVERLAY> \xE1\xAA\xBE
<COMBINING_LATIN_SMALL_LETTER_W_BELOW> \xE1\xAA\xBF
<COMBINING_LATIN_SMALL_LETTER_TURNED_W_BELOW> \xE1\xAB\x80
+<COMBINING_LEFT_PARENTHESIS_ABOVE_LEFT> \xE1\xAB\x81
+<COMBINING_RIGHT_PARENTHESIS_ABOVE_RIGHT> \xE1\xAB\x82
+<COMBINING_LEFT_PARENTHESIS_BELOW_LEFT> \xE1\xAB\x83
+<COMBINING_RIGHT_PARENTHESIS_BELOW_RIGHT> \xE1\xAB\x84
+<COMBINING_SQUARE_BRACKETS_ABOVE> \xE1\xAB\x85
+<COMBINING_NUMBER_SIGN_ABOVE> \xE1\xAB\x86
+<COMBINING_INVERTED_DOUBLE_ARCH_ABOVE> \xE1\xAB\x87
+<COMBINING_PLUS_SIGN_ABOVE> \xE1\xAB\x88
+<COMBINING_DOUBLE_PLUS_SIGN_ABOVE> \xE1\xAB\x89
+<COMBINING_DOUBLE_PLUS_SIGN_BELOW> \xE1\xAB\x8A
+<COMBINING_TRIPLE_ACUTE_ACCENT> \xE1\xAB\x8B
+<COMBINING_LATIN_SMALL_LETTER_INSULAR_G> \xE1\xAB\x8C
+<COMBINING_LATIN_SMALL_LETTER_INSULAR_R> \xE1\xAB\x8D
+<COMBINING_LATIN_SMALL_LETTER_INSULAR_T> \xE1\xAB\x8E
<BALINESE_SIGN_ULU_RICEM> \xE1\xAC\x80
<BALINESE_SIGN_ULU_CANDRA> \xE1\xAC\x81
<BALINESE_SIGN_CECEK> \xE1\xAC\x82
@@ -6295,6 +6353,7 @@ CHARMAP
<BALINESE_LETTER_VE_SASAK> \xE1\xAD\x89
<BALINESE_LETTER_ZAL_SASAK> \xE1\xAD\x8A
<BALINESE_LETTER_ASYURA_SASAK> \xE1\xAD\x8B
+<BALINESE_LETTER_ARCHAIC_JNYA> \xE1\xAD\x8C
<BALINESE_DIGIT_ZERO> \xE1\xAD\x90
<BALINESE_DIGIT_ONE> \xE1\xAD\x91
<BALINESE_DIGIT_TWO> \xE1\xAD\x92
@@ -6340,6 +6399,8 @@ CHARMAP
<BALINESE_MUSICAL_SYMBOL_LEFT-HAND_CLOSED_PLAK> \xE1\xAD\xBA
<BALINESE_MUSICAL_SYMBOL_LEFT-HAND_CLOSED_PLUK> \xE1\xAD\xBB
<BALINESE_MUSICAL_SYMBOL_LEFT-HAND_OPEN_PING> \xE1\xAD\xBC
+<BALINESE_PANTI_LANTANG> \xE1\xAD\xBD
+<BALINESE_PAMADA_LANTANG> \xE1\xAD\xBE
<SUNDANESE_SIGN_PANYECEK> \xE1\xAE\x80
<SUNDANESE_SIGN_PANGLAYAR> \xE1\xAE\x81
<SUNDANESE_SIGN_PANGWISAD> \xE1\xAE\x82
@@ -6938,6 +6999,7 @@ CHARMAP
<COMBINING_KAVYKA_ABOVE_LEFT> \xE1\xB7\xB7
<COMBINING_DOT_ABOVE_LEFT> \xE1\xB7\xB8
<COMBINING_WIDE_INVERTED_BRIDGE_BELOW> \xE1\xB7\xB9
+<COMBINING_DOT_BELOW_LEFT> \xE1\xB7\xBA
<COMBINING_DELETION_MARK> \xE1\xB7\xBB
<COMBINING_DOUBLE_INVERTED_BREVE_BELOW> \xE1\xB7\xBC
<COMBINING_ALMOST_EQUAL_TO_BELOW> \xE1\xB7\xBD
@@ -7617,6 +7679,7 @@ CHARMAP
<RUBLE_SIGN> \xE2\x82\xBD
<LARI_SIGN> \xE2\x82\xBE
<BITCOIN_SIGN> \xE2\x82\xBF
+<SOM_SIGN> \xE2\x83\x80
<COMBINING_LEFT_HARPOON_ABOVE> \xE2\x83\x90
<COMBINING_RIGHT_HARPOON_ABOVE> \xE2\x83\x91
<COMBINING_LONG_VERTICAL_LINE_OVERLAY> \xE2\x83\x92
@@ -10460,6 +10523,7 @@ CHARMAP
<GLAGOLITIC_CAPITAL_LETTER_SHTAPIC> \xE2\xB0\xAC
<GLAGOLITIC_CAPITAL_LETTER_TROKUTASTI_A> \xE2\xB0\xAD
<GLAGOLITIC_CAPITAL_LETTER_LATINATE_MYSLITE> \xE2\xB0\xAE
+<GLAGOLITIC_CAPITAL_LETTER_CAUDATE_CHRIVI> \xE2\xB0\xAF
<GLAGOLITIC_SMALL_LETTER_AZU> \xE2\xB0\xB0
<GLAGOLITIC_SMALL_LETTER_BUKY> \xE2\xB0\xB1
<GLAGOLITIC_SMALL_LETTER_VEDE> \xE2\xB0\xB2
@@ -10507,6 +10571,7 @@ CHARMAP
<GLAGOLITIC_SMALL_LETTER_SHTAPIC> \xE2\xB1\x9C
<GLAGOLITIC_SMALL_LETTER_TROKUTASTI_A> \xE2\xB1\x9D
<GLAGOLITIC_SMALL_LETTER_LATINATE_MYSLITE> \xE2\xB1\x9E
+<GLAGOLITIC_SMALL_LETTER_CAUDATE_CHRIVI> \xE2\xB1\x9F
<LATIN_CAPITAL_LETTER_L_WITH_DOUBLE_BAR> \xE2\xB1\xA0
<LATIN_SMALL_LETTER_L_WITH_DOUBLE_BAR> \xE2\xB1\xA1
<LATIN_CAPITAL_LETTER_L_WITH_MIDDLE_TILDE> \xE2\xB1\xA2
@@ -10955,6 +11020,17 @@ CHARMAP
<CROSS_PATTY_WITH_RIGHT_CROSSBAR> \xE2\xB9\x90
<CROSS_PATTY_WITH_LEFT_CROSSBAR> \xE2\xB9\x91
<TIRONIAN_SIGN_CAPITAL_ET> \xE2\xB9\x92
+<MEDIEVAL_EXCLAMATION_MARK> \xE2\xB9\x93
+<MEDIEVAL_QUESTION_MARK> \xE2\xB9\x94
+<LEFT_SQUARE_BRACKET_WITH_STROKE> \xE2\xB9\x95
+<RIGHT_SQUARE_BRACKET_WITH_STROKE> \xE2\xB9\x96
+<LEFT_SQUARE_BRACKET_WITH_DOUBLE_STROKE> \xE2\xB9\x97
+<RIGHT_SQUARE_BRACKET_WITH_DOUBLE_STROKE> \xE2\xB9\x98
+<TOP_HALF_LEFT_PARENTHESIS> \xE2\xB9\x99
+<TOP_HALF_RIGHT_PARENTHESIS> \xE2\xB9\x9A
+<BOTTOM_HALF_LEFT_PARENTHESIS> \xE2\xB9\x9B
+<BOTTOM_HALF_RIGHT_PARENTHESIS> \xE2\xB9\x9C
+<OBLIQUE_HYPHEN> \xE2\xB9\x9D
<CJK_RADICAL_REPEAT> \xE2\xBA\x80
<CJK_RADICAL_CLIFF> \xE2\xBA\x81
<CJK_RADICAL_SECOND_ONE> \xE2\xBA\x82
@@ -39942,6 +40018,9 @@ CHARMAP
<CJK_UNIFIED_IDEOGRAPH-9FFA> \xE9\xBF\xBA
<CJK_UNIFIED_IDEOGRAPH-9FFB> \xE9\xBF\xBB
<CJK_UNIFIED_IDEOGRAPH-9FFC> \xE9\xBF\xBC
+<CJK_UNIFIED_IDEOGRAPH-9FFD> \xE9\xBF\xBD
+<CJK_UNIFIED_IDEOGRAPH-9FFE> \xE9\xBF\xBE
+<CJK_UNIFIED_IDEOGRAPH-9FFF> \xE9\xBF\xBF
<YI_SYLLABLE_IT> \xEA\x80\x80
<YI_SYLLABLE_IX> \xEA\x80\x81
<YI_SYLLABLE_I> \xEA\x80\x82
@@ -41886,6 +41965,8 @@ CHARMAP
<LATIN_SMALL_LETTER_GLOTTAL_I> \xEA\x9E\xBD
<LATIN_CAPITAL_LETTER_GLOTTAL_U> \xEA\x9E\xBE
<LATIN_SMALL_LETTER_GLOTTAL_U> \xEA\x9E\xBF
+<LATIN_CAPITAL_LETTER_OLD_POLISH_O> \xEA\x9F\x80
+<LATIN_SMALL_LETTER_OLD_POLISH_O> \xEA\x9F\x81
<LATIN_CAPITAL_LETTER_ANGLICANA_W> \xEA\x9F\x82
<LATIN_SMALL_LETTER_ANGLICANA_W> \xEA\x9F\x83
<LATIN_CAPITAL_LETTER_C_WITH_PALATAL_HOOK> \xEA\x9F\x84
@@ -41895,6 +41976,17 @@ CHARMAP
<LATIN_SMALL_LETTER_D_WITH_SHORT_STROKE_OVERLAY> \xEA\x9F\x88
<LATIN_CAPITAL_LETTER_S_WITH_SHORT_STROKE_OVERLAY> \xEA\x9F\x89
<LATIN_SMALL_LETTER_S_WITH_SHORT_STROKE_OVERLAY> \xEA\x9F\x8A
+<LATIN_CAPITAL_LETTER_CLOSED_INSULAR_G> \xEA\x9F\x90
+<LATIN_SMALL_LETTER_CLOSED_INSULAR_G> \xEA\x9F\x91
+<LATIN_SMALL_LETTER_DOUBLE_THORN> \xEA\x9F\x93
+<LATIN_SMALL_LETTER_DOUBLE_WYNN> \xEA\x9F\x95
+<LATIN_CAPITAL_LETTER_MIDDLE_SCOTS_S> \xEA\x9F\x96
+<LATIN_SMALL_LETTER_MIDDLE_SCOTS_S> \xEA\x9F\x97
+<LATIN_CAPITAL_LETTER_SIGMOID_S> \xEA\x9F\x98
+<LATIN_SMALL_LETTER_SIGMOID_S> \xEA\x9F\x99
+<MODIFIER_LETTER_CAPITAL_C> \xEA\x9F\xB2
+<MODIFIER_LETTER_CAPITAL_F> \xEA\x9F\xB3
+<MODIFIER_LETTER_CAPITAL_Q> \xEA\x9F\xB4
<LATIN_CAPITAL_LETTER_REVERSED_HALF_H> \xEA\x9F\xB5
<LATIN_SMALL_LETTER_REVERSED_HALF_H> \xEA\x9F\xB6
<LATIN_EPIGRAPHIC_LETTER_SIDEWAYS_I> \xEA\x9F\xB7
@@ -61093,6 +61185,7 @@ CHARMAP
<ARABIC_SYMBOL_RING> \xEF\xAE\xBF
<ARABIC_SYMBOL_SMALL_TAH_ABOVE> \xEF\xAF\x80
<ARABIC_SYMBOL_SMALL_TAH_BELOW> \xEF\xAF\x81
+<ARABIC_SYMBOL_WASLA_ABOVE> \xEF\xAF\x82
<ARABIC_LETTER_NG_ISOLATED_FORM> \xEF\xAF\x93
<ARABIC_LETTER_NG_FINAL_FORM> \xEF\xAF\x94
<ARABIC_LETTER_NG_INITIAL_FORM> \xEF\xAF\x95
@@ -61458,6 +61551,22 @@ CHARMAP
<ARABIC_LIGATURE_ALEF_WITH_FATHATAN_ISOLATED_FORM> \xEF\xB4\xBD
<ORNATE_LEFT_PARENTHESIS> \xEF\xB4\xBE
<ORNATE_RIGHT_PARENTHESIS> \xEF\xB4\xBF
+<ARABIC_LIGATURE_RAHIMAHU_ALLAAH> \xEF\xB5\x80
+<ARABIC_LIGATURE_RADI_ALLAAHU_ANH> \xEF\xB5\x81
+<ARABIC_LIGATURE_RADI_ALLAAHU_ANHAA> \xEF\xB5\x82
+<ARABIC_LIGATURE_RADI_ALLAAHU_ANHUM> \xEF\xB5\x83
+<ARABIC_LIGATURE_RADI_ALLAAHU_ANHUMAA> \xEF\xB5\x84
+<ARABIC_LIGATURE_RADI_ALLAAHU_ANHUNNA> \xEF\xB5\x85
+<ARABIC_LIGATURE_SALLALLAAHU_ALAYHI_WA-AALIH> \xEF\xB5\x86
+<ARABIC_LIGATURE_ALAYHI_AS-SALAAM> \xEF\xB5\x87
+<ARABIC_LIGATURE_ALAYHIM_AS-SALAAM> \xEF\xB5\x88
+<ARABIC_LIGATURE_ALAYHIMAA_AS-SALAAM> \xEF\xB5\x89
+<ARABIC_LIGATURE_ALAYHI_AS-SALAATU_WAS-SALAAM> \xEF\xB5\x8A
+<ARABIC_LIGATURE_QUDDISA_SIRRAH> \xEF\xB5\x8B
+<ARABIC_LIGATURE_SALLALLAHU_ALAYHI_WAAALIHEE_WA-SALLAM> \xEF\xB5\x8C
+<ARABIC_LIGATURE_ALAYHAA_AS-SALAAM> \xEF\xB5\x8D
+<ARABIC_LIGATURE_TABAARAKA_WA-TAAALAA> \xEF\xB5\x8E
+<ARABIC_LIGATURE_RAHIMAHUM_ALLAAH> \xEF\xB5\x8F
<ARABIC_LIGATURE_TEH_WITH_JEEM_WITH_MEEM_INITIAL_FORM> \xEF\xB5\x90
<ARABIC_LIGATURE_TEH_WITH_HAH_WITH_JEEM_FINAL_FORM> \xEF\xB5\x91
<ARABIC_LIGATURE_TEH_WITH_HAH_WITH_JEEM_INITIAL_FORM> \xEF\xB5\x92
@@ -61576,6 +61685,7 @@ CHARMAP
<ARABIC_LIGATURE_SAD_WITH_MEEM_WITH_MEEM_INITIAL_FORM> \xEF\xB7\x85
<ARABIC_LIGATURE_SEEN_WITH_KHAH_WITH_YEH_FINAL_FORM> \xEF\xB7\x86
<ARABIC_LIGATURE_NOON_WITH_JEEM_WITH_YEH_FINAL_FORM> \xEF\xB7\x87
+<ARABIC_LIGATURE_SALAAMUHU_ALAYNAA> \xEF\xB7\x8F
<ARABIC_LIGATURE_SALLA_USED_AS_KORANIC_STOP_SIGN_ISOLATED_FORM> \xEF\xB7\xB0
<ARABIC_LIGATURE_QALA_USED_AS_KORANIC_STOP_SIGN_ISOLATED_FORM> \xEF\xB7\xB1
<ARABIC_LIGATURE_ALLAH_ISOLATED_FORM> \xEF\xB7\xB2
@@ -61590,6 +61700,8 @@ CHARMAP
<ARABIC_LIGATURE_JALLAJALALOUHOU> \xEF\xB7\xBB
<RIAL_SIGN> \xEF\xB7\xBC
<ARABIC_LIGATURE_BISMILLAH_AR-RAHMAN_AR-RAHEEM> \xEF\xB7\xBD
+<ARABIC_LIGATURE_SUBHAANAHU_WA_TAAALAA> \xEF\xB7\xBE
+<ARABIC_LIGATURE_AZZA_WA_JALL> \xEF\xB7\xBF
<VARIATION_SELECTOR-1> \xEF\xB8\x80
<VARIATION_SELECTOR-2> \xEF\xB8\x81
<VARIATION_SELECTOR-3> \xEF\xB8\x82
@@ -63097,6 +63209,76 @@ CHARMAP
<CAUCASIAN_ALBANIAN_LETTER_PIWR> \xF0\x90\x95\xA2
<CAUCASIAN_ALBANIAN_LETTER_KIW> \xF0\x90\x95\xA3
<CAUCASIAN_ALBANIAN_CITATION_MARK> \xF0\x90\x95\xAF
+<VITHKUQI_CAPITAL_LETTER_A> \xF0\x90\x95\xB0
+<VITHKUQI_CAPITAL_LETTER_BBE> \xF0\x90\x95\xB1
+<VITHKUQI_CAPITAL_LETTER_BE> \xF0\x90\x95\xB2
+<VITHKUQI_CAPITAL_LETTER_CE> \xF0\x90\x95\xB3
+<VITHKUQI_CAPITAL_LETTER_CHE> \xF0\x90\x95\xB4
+<VITHKUQI_CAPITAL_LETTER_DE> \xF0\x90\x95\xB5
+<VITHKUQI_CAPITAL_LETTER_DHE> \xF0\x90\x95\xB6
+<VITHKUQI_CAPITAL_LETTER_EI> \xF0\x90\x95\xB7
+<VITHKUQI_CAPITAL_LETTER_E> \xF0\x90\x95\xB8
+<VITHKUQI_CAPITAL_LETTER_FE> \xF0\x90\x95\xB9
+<VITHKUQI_CAPITAL_LETTER_GA> \xF0\x90\x95\xBA
+<VITHKUQI_CAPITAL_LETTER_HA> \xF0\x90\x95\xBC
+<VITHKUQI_CAPITAL_LETTER_HHA> \xF0\x90\x95\xBD
+<VITHKUQI_CAPITAL_LETTER_I> \xF0\x90\x95\xBE
+<VITHKUQI_CAPITAL_LETTER_IJE> \xF0\x90\x95\xBF
+<VITHKUQI_CAPITAL_LETTER_JE> \xF0\x90\x96\x80
+<VITHKUQI_CAPITAL_LETTER_KA> \xF0\x90\x96\x81
+<VITHKUQI_CAPITAL_LETTER_LA> \xF0\x90\x96\x82
+<VITHKUQI_CAPITAL_LETTER_LLA> \xF0\x90\x96\x83
+<VITHKUQI_CAPITAL_LETTER_ME> \xF0\x90\x96\x84
+<VITHKUQI_CAPITAL_LETTER_NE> \xF0\x90\x96\x85
+<VITHKUQI_CAPITAL_LETTER_NJE> \xF0\x90\x96\x86
+<VITHKUQI_CAPITAL_LETTER_O> \xF0\x90\x96\x87
+<VITHKUQI_CAPITAL_LETTER_PE> \xF0\x90\x96\x88
+<VITHKUQI_CAPITAL_LETTER_QA> \xF0\x90\x96\x89
+<VITHKUQI_CAPITAL_LETTER_RE> \xF0\x90\x96\x8A
+<VITHKUQI_CAPITAL_LETTER_SE> \xF0\x90\x96\x8C
+<VITHKUQI_CAPITAL_LETTER_SHE> \xF0\x90\x96\x8D
+<VITHKUQI_CAPITAL_LETTER_TE> \xF0\x90\x96\x8E
+<VITHKUQI_CAPITAL_LETTER_THE> \xF0\x90\x96\x8F
+<VITHKUQI_CAPITAL_LETTER_U> \xF0\x90\x96\x90
+<VITHKUQI_CAPITAL_LETTER_VE> \xF0\x90\x96\x91
+<VITHKUQI_CAPITAL_LETTER_XE> \xF0\x90\x96\x92
+<VITHKUQI_CAPITAL_LETTER_Y> \xF0\x90\x96\x94
+<VITHKUQI_CAPITAL_LETTER_ZE> \xF0\x90\x96\x95
+<VITHKUQI_SMALL_LETTER_A> \xF0\x90\x96\x97
+<VITHKUQI_SMALL_LETTER_BBE> \xF0\x90\x96\x98
+<VITHKUQI_SMALL_LETTER_BE> \xF0\x90\x96\x99
+<VITHKUQI_SMALL_LETTER_CE> \xF0\x90\x96\x9A
+<VITHKUQI_SMALL_LETTER_CHE> \xF0\x90\x96\x9B
+<VITHKUQI_SMALL_LETTER_DE> \xF0\x90\x96\x9C
+<VITHKUQI_SMALL_LETTER_DHE> \xF0\x90\x96\x9D
+<VITHKUQI_SMALL_LETTER_EI> \xF0\x90\x96\x9E
+<VITHKUQI_SMALL_LETTER_E> \xF0\x90\x96\x9F
+<VITHKUQI_SMALL_LETTER_FE> \xF0\x90\x96\xA0
+<VITHKUQI_SMALL_LETTER_GA> \xF0\x90\x96\xA1
+<VITHKUQI_SMALL_LETTER_HA> \xF0\x90\x96\xA3
+<VITHKUQI_SMALL_LETTER_HHA> \xF0\x90\x96\xA4
+<VITHKUQI_SMALL_LETTER_I> \xF0\x90\x96\xA5
+<VITHKUQI_SMALL_LETTER_IJE> \xF0\x90\x96\xA6
+<VITHKUQI_SMALL_LETTER_JE> \xF0\x90\x96\xA7
+<VITHKUQI_SMALL_LETTER_KA> \xF0\x90\x96\xA8
+<VITHKUQI_SMALL_LETTER_LA> \xF0\x90\x96\xA9
+<VITHKUQI_SMALL_LETTER_LLA> \xF0\x90\x96\xAA
+<VITHKUQI_SMALL_LETTER_ME> \xF0\x90\x96\xAB
+<VITHKUQI_SMALL_LETTER_NE> \xF0\x90\x96\xAC
+<VITHKUQI_SMALL_LETTER_NJE> \xF0\x90\x96\xAD
+<VITHKUQI_SMALL_LETTER_O> \xF0\x90\x96\xAE
+<VITHKUQI_SMALL_LETTER_PE> \xF0\x90\x96\xAF
+<VITHKUQI_SMALL_LETTER_QA> \xF0\x90\x96\xB0
+<VITHKUQI_SMALL_LETTER_RE> \xF0\x90\x96\xB1
+<VITHKUQI_SMALL_LETTER_SE> \xF0\x90\x96\xB3
+<VITHKUQI_SMALL_LETTER_SHE> \xF0\x90\x96\xB4
+<VITHKUQI_SMALL_LETTER_TE> \xF0\x90\x96\xB5
+<VITHKUQI_SMALL_LETTER_THE> \xF0\x90\x96\xB6
+<VITHKUQI_SMALL_LETTER_U> \xF0\x90\x96\xB7
+<VITHKUQI_SMALL_LETTER_VE> \xF0\x90\x96\xB8
+<VITHKUQI_SMALL_LETTER_XE> \xF0\x90\x96\xB9
+<VITHKUQI_SMALL_LETTER_Y> \xF0\x90\x96\xBB
+<VITHKUQI_SMALL_LETTER_ZE> \xF0\x90\x96\xBC
<LINEAR_A_SIGN_AB001> \xF0\x90\x98\x80
<LINEAR_A_SIGN_AB002> \xF0\x90\x98\x81
<LINEAR_A_SIGN_AB003> \xF0\x90\x98\x82
@@ -63438,6 +63620,63 @@ CHARMAP
<LINEAR_A_SIGN_A805> \xF0\x90\x9D\xA5
<LINEAR_A_SIGN_A806> \xF0\x90\x9D\xA6
<LINEAR_A_SIGN_A807> \xF0\x90\x9D\xA7
+<MODIFIER_LETTER_SMALL_CAPITAL_AA> \xF0\x90\x9E\x80
+<MODIFIER_LETTER_SUPERSCRIPT_TRIANGULAR_COLON> \xF0\x90\x9E\x81
+<MODIFIER_LETTER_SUPERSCRIPT_HALF_TRIANGULAR_COLON> \xF0\x90\x9E\x82
+<MODIFIER_LETTER_SMALL_AE> \xF0\x90\x9E\x83
+<MODIFIER_LETTER_SMALL_CAPITAL_B> \xF0\x90\x9E\x84
+<MODIFIER_LETTER_SMALL_B_WITH_HOOK> \xF0\x90\x9E\x85
+<MODIFIER_LETTER_SMALL_DZ_DIGRAPH> \xF0\x90\x9E\x87
+<MODIFIER_LETTER_SMALL_DZ_DIGRAPH_WITH_RETROFLEX_HOOK> \xF0\x90\x9E\x88
+<MODIFIER_LETTER_SMALL_DZ_DIGRAPH_WITH_CURL> \xF0\x90\x9E\x89
+<MODIFIER_LETTER_SMALL_DEZH_DIGRAPH> \xF0\x90\x9E\x8A
+<MODIFIER_LETTER_SMALL_D_WITH_TAIL> \xF0\x90\x9E\x8B
+<MODIFIER_LETTER_SMALL_D_WITH_HOOK> \xF0\x90\x9E\x8C
+<MODIFIER_LETTER_SMALL_D_WITH_HOOK_AND_TAIL> \xF0\x90\x9E\x8D
+<MODIFIER_LETTER_SMALL_REVERSED_E> \xF0\x90\x9E\x8E
+<MODIFIER_LETTER_SMALL_CLOSED_REVERSED_OPEN_E> \xF0\x90\x9E\x8F
+<MODIFIER_LETTER_SMALL_FENG_DIGRAPH> \xF0\x90\x9E\x90
+<MODIFIER_LETTER_SMALL_RAMS_HORN> \xF0\x90\x9E\x91
+<MODIFIER_LETTER_SMALL_CAPITAL_G> \xF0\x90\x9E\x92
+<MODIFIER_LETTER_SMALL_G_WITH_HOOK> \xF0\x90\x9E\x93
+<MODIFIER_LETTER_SMALL_CAPITAL_G_WITH_HOOK> \xF0\x90\x9E\x94
+<MODIFIER_LETTER_SMALL_H_WITH_STROKE> \xF0\x90\x9E\x95
+<MODIFIER_LETTER_SMALL_CAPITAL_H> \xF0\x90\x9E\x96
+<MODIFIER_LETTER_SMALL_HENG_WITH_HOOK> \xF0\x90\x9E\x97
+<MODIFIER_LETTER_SMALL_DOTLESS_J_WITH_STROKE_AND_HOOK> \xF0\x90\x9E\x98
+<MODIFIER_LETTER_SMALL_LS_DIGRAPH> \xF0\x90\x9E\x99
+<MODIFIER_LETTER_SMALL_LZ_DIGRAPH> \xF0\x90\x9E\x9A
+<MODIFIER_LETTER_SMALL_L_WITH_BELT> \xF0\x90\x9E\x9B
+<MODIFIER_LETTER_SMALL_CAPITAL_L_WITH_BELT> \xF0\x90\x9E\x9C
+<MODIFIER_LETTER_SMALL_L_WITH_RETROFLEX_HOOK_AND_BELT> \xF0\x90\x9E\x9D
+<MODIFIER_LETTER_SMALL_LEZH> \xF0\x90\x9E\x9E
+<MODIFIER_LETTER_SMALL_LEZH_WITH_RETROFLEX_HOOK> \xF0\x90\x9E\x9F
+<MODIFIER_LETTER_SMALL_TURNED_Y> \xF0\x90\x9E\xA0
+<MODIFIER_LETTER_SMALL_TURNED_Y_WITH_BELT> \xF0\x90\x9E\xA1
+<MODIFIER_LETTER_SMALL_O_WITH_STROKE> \xF0\x90\x9E\xA2
+<MODIFIER_LETTER_SMALL_CAPITAL_OE> \xF0\x90\x9E\xA3
+<MODIFIER_LETTER_SMALL_CLOSED_OMEGA> \xF0\x90\x9E\xA4
+<MODIFIER_LETTER_SMALL_Q> \xF0\x90\x9E\xA5
+<MODIFIER_LETTER_SMALL_TURNED_R_WITH_LONG_LEG> \xF0\x90\x9E\xA6
+<MODIFIER_LETTER_SMALL_TURNED_R_WITH_LONG_LEG_AND_RETROFLEX_HOOK> \xF0\x90\x9E\xA7
+<MODIFIER_LETTER_SMALL_R_WITH_TAIL> \xF0\x90\x9E\xA8
+<MODIFIER_LETTER_SMALL_R_WITH_FISHHOOK> \xF0\x90\x9E\xA9
+<MODIFIER_LETTER_SMALL_CAPITAL_R> \xF0\x90\x9E\xAA
+<MODIFIER_LETTER_SMALL_TC_DIGRAPH_WITH_CURL> \xF0\x90\x9E\xAB
+<MODIFIER_LETTER_SMALL_TS_DIGRAPH> \xF0\x90\x9E\xAC
+<MODIFIER_LETTER_SMALL_TS_DIGRAPH_WITH_RETROFLEX_HOOK> \xF0\x90\x9E\xAD
+<MODIFIER_LETTER_SMALL_TESH_DIGRAPH> \xF0\x90\x9E\xAE
+<MODIFIER_LETTER_SMALL_T_WITH_RETROFLEX_HOOK> \xF0\x90\x9E\xAF
+<MODIFIER_LETTER_SMALL_V_WITH_RIGHT_HOOK> \xF0\x90\x9E\xB0
+<MODIFIER_LETTER_SMALL_CAPITAL_Y> \xF0\x90\x9E\xB2
+<MODIFIER_LETTER_GLOTTAL_STOP_WITH_STROKE> \xF0\x90\x9E\xB3
+<MODIFIER_LETTER_REVERSED_GLOTTAL_STOP_WITH_STROKE> \xF0\x90\x9E\xB4
+<MODIFIER_LETTER_BILABIAL_CLICK> \xF0\x90\x9E\xB5
+<MODIFIER_LETTER_DENTAL_CLICK> \xF0\x90\x9E\xB6
+<MODIFIER_LETTER_LATERAL_CLICK> \xF0\x90\x9E\xB7
+<MODIFIER_LETTER_ALVEOLAR_CLICK> \xF0\x90\x9E\xB8
+<MODIFIER_LETTER_RETROFLEX_CLICK_WITH_RETROFLEX_HOOK> \xF0\x90\x9E\xB9
+<MODIFIER_LETTER_SMALL_S_WITH_CURL> \xF0\x90\x9E\xBA
<CYPRIOT_SYLLABLE_A> \xF0\x90\xA0\x80
<CYPRIOT_SYLLABLE_E> \xF0\x90\xA0\x81
<CYPRIOT_SYLLABLE_I> \xF0\x90\xA0\x82
@@ -64439,6 +64678,9 @@ CHARMAP
<YEZIDI_HYPHENATION_MARK> \xF0\x90\xBA\xAD
<YEZIDI_LETTER_LAM_WITH_DOT_ABOVE> \xF0\x90\xBA\xB0
<YEZIDI_LETTER_YOT_WITH_CIRCUMFLEX_ABOVE> \xF0\x90\xBA\xB1
+<ARABIC_SMALL_LOW_WORD_SAKTA> \xF0\x90\xBB\xBD
+<ARABIC_SMALL_LOW_WORD_QASR> \xF0\x90\xBB\xBE
+<ARABIC_SMALL_LOW_WORD_MADDA> \xF0\x90\xBB\xBF
<OLD_SOGDIAN_LETTER_ALEPH> \xF0\x90\xBC\x80
<OLD_SOGDIAN_LETTER_FINAL_ALEPH> \xF0\x90\xBC\x81
<OLD_SOGDIAN_LETTER_BETH> \xF0\x90\xBC\x82
@@ -64521,6 +64763,32 @@ CHARMAP
<SOGDIAN_PUNCTUATION_CIRCLE_WITH_DOT> \xF0\x90\xBD\x97
<SOGDIAN_PUNCTUATION_TWO_CIRCLES_WITH_DOTS> \xF0\x90\xBD\x98
<SOGDIAN_PUNCTUATION_HALF_CIRCLE_WITH_DOT> \xF0\x90\xBD\x99
+<OLD_UYGHUR_LETTER_ALEPH> \xF0\x90\xBD\xB0
+<OLD_UYGHUR_LETTER_BETH> \xF0\x90\xBD\xB1
+<OLD_UYGHUR_LETTER_GIMEL-HETH> \xF0\x90\xBD\xB2
+<OLD_UYGHUR_LETTER_WAW> \xF0\x90\xBD\xB3
+<OLD_UYGHUR_LETTER_ZAYIN> \xF0\x90\xBD\xB4
+<OLD_UYGHUR_LETTER_FINAL_HETH> \xF0\x90\xBD\xB5
+<OLD_UYGHUR_LETTER_YODH> \xF0\x90\xBD\xB6
+<OLD_UYGHUR_LETTER_KAPH> \xF0\x90\xBD\xB7
+<OLD_UYGHUR_LETTER_LAMEDH> \xF0\x90\xBD\xB8
+<OLD_UYGHUR_LETTER_MEM> \xF0\x90\xBD\xB9
+<OLD_UYGHUR_LETTER_NUN> \xF0\x90\xBD\xBA
+<OLD_UYGHUR_LETTER_SAMEKH> \xF0\x90\xBD\xBB
+<OLD_UYGHUR_LETTER_PE> \xF0\x90\xBD\xBC
+<OLD_UYGHUR_LETTER_SADHE> \xF0\x90\xBD\xBD
+<OLD_UYGHUR_LETTER_RESH> \xF0\x90\xBD\xBE
+<OLD_UYGHUR_LETTER_SHIN> \xF0\x90\xBD\xBF
+<OLD_UYGHUR_LETTER_TAW> \xF0\x90\xBE\x80
+<OLD_UYGHUR_LETTER_LESH> \xF0\x90\xBE\x81
+<OLD_UYGHUR_COMBINING_DOT_ABOVE> \xF0\x90\xBE\x82
+<OLD_UYGHUR_COMBINING_DOT_BELOW> \xF0\x90\xBE\x83
+<OLD_UYGHUR_COMBINING_TWO_DOTS_ABOVE> \xF0\x90\xBE\x84
+<OLD_UYGHUR_COMBINING_TWO_DOTS_BELOW> \xF0\x90\xBE\x85
+<OLD_UYGHUR_PUNCTUATION_BAR> \xF0\x90\xBE\x86
+<OLD_UYGHUR_PUNCTUATION_TWO_BARS> \xF0\x90\xBE\x87
+<OLD_UYGHUR_PUNCTUATION_TWO_DOTS> \xF0\x90\xBE\x88
+<OLD_UYGHUR_PUNCTUATION_FOUR_DOTS> \xF0\x90\xBE\x89
<CHORASMIAN_LETTER_ALEPH> \xF0\x90\xBE\xB0
<CHORASMIAN_LETTER_SMALL_ALEPH> \xF0\x90\xBE\xB1
<CHORASMIAN_LETTER_BETH> \xF0\x90\xBE\xB2
@@ -64680,6 +64948,12 @@ CHARMAP
<BRAHMI_DIGIT_SEVEN> \xF0\x91\x81\xAD
<BRAHMI_DIGIT_EIGHT> \xF0\x91\x81\xAE
<BRAHMI_DIGIT_NINE> \xF0\x91\x81\xAF
+<BRAHMI_SIGN_OLD_TAMIL_VIRAMA> \xF0\x91\x81\xB0
+<BRAHMI_LETTER_OLD_TAMIL_SHORT_E> \xF0\x91\x81\xB1
+<BRAHMI_LETTER_OLD_TAMIL_SHORT_O> \xF0\x91\x81\xB2
+<BRAHMI_VOWEL_SIGN_OLD_TAMIL_SHORT_E> \xF0\x91\x81\xB3
+<BRAHMI_VOWEL_SIGN_OLD_TAMIL_SHORT_O> \xF0\x91\x81\xB4
+<BRAHMI_LETTER_OLD_TAMIL_LLA> \xF0\x91\x81\xB5
<BRAHMI_NUMBER_JOINER> \xF0\x91\x81\xBF
<KAITHI_SIGN_CANDRABINDU> \xF0\x91\x82\x80
<KAITHI_SIGN_ANUSVARA> \xF0\x91\x82\x81
@@ -64747,6 +65021,7 @@ CHARMAP
<KAITHI_DOUBLE_SECTION_MARK> \xF0\x91\x82\xBF
<KAITHI_DANDA> \xF0\x91\x83\x80
<KAITHI_DOUBLE_DANDA> \xF0\x91\x83\x81
+<KAITHI_VOWEL_SIGN_VOCALIC_R> \xF0\x91\x83\x82
<KAITHI_NUMBER_SIGN_ABOVE> \xF0\x91\x83\x8D
<SORA_SOMPENG_LETTER_SAH> \xF0\x91\x83\x90
<SORA_SOMPENG_LETTER_TAH> \xF0\x91\x83\x91
@@ -65071,6 +65346,9 @@ CHARMAP
<KHOJKI_DOUBLE_SECTION_MARK> \xF0\x91\x88\xBC
<KHOJKI_ABBREVIATION_SIGN> \xF0\x91\x88\xBD
<KHOJKI_SIGN_SUKUN> \xF0\x91\x88\xBE
+<KHOJKI_LETTER_QA> \xF0\x91\x88\xBF
+<KHOJKI_LETTER_SHORT_I> \xF0\x91\x89\x80
+<KHOJKI_VOWEL_SIGN_VOCALIC_R> \xF0\x91\x89\x81
<MULTANI_LETTER_A> \xF0\x91\x8A\x80
<MULTANI_LETTER_I> \xF0\x91\x8A\x81
<MULTANI_LETTER_U> \xF0\x91\x8A\x82
@@ -65684,6 +65962,7 @@ CHARMAP
<TAKRI_SIGN_VIRAMA> \xF0\x91\x9A\xB6
<TAKRI_SIGN_NUKTA> \xF0\x91\x9A\xB7
<TAKRI_LETTER_ARCHAIC_KHA> \xF0\x91\x9A\xB8
+<TAKRI_ABBREVIATION_SIGN> \xF0\x91\x9A\xB9
<TAKRI_DIGIT_ZERO> \xF0\x91\x9B\x80
<TAKRI_DIGIT_ONE> \xF0\x91\x9B\x81
<TAKRI_DIGIT_TWO> \xF0\x91\x9B\x82
@@ -65752,6 +66031,13 @@ CHARMAP
<AHOM_SIGN_SECTION> \xF0\x91\x9C\xBD
<AHOM_SIGN_RULAI> \xF0\x91\x9C\xBE
<AHOM_SYMBOL_VI> \xF0\x91\x9C\xBF
+<AHOM_LETTER_CA> \xF0\x91\x9D\x80
+<AHOM_LETTER_TTA> \xF0\x91\x9D\x81
+<AHOM_LETTER_TTHA> \xF0\x91\x9D\x82
+<AHOM_LETTER_DDA> \xF0\x91\x9D\x83
+<AHOM_LETTER_DDHA> \xF0\x91\x9D\x84
+<AHOM_LETTER_NNA> \xF0\x91\x9D\x85
+<AHOM_LETTER_LLA> \xF0\x91\x9D\x86
<DOGRA_LETTER_A> \xF0\x91\xA0\x80
<DOGRA_LETTER_AA> \xF0\x91\xA0\x81
<DOGRA_LETTER_I> \xF0\x91\xA0\x82
@@ -66188,6 +66474,22 @@ CHARMAP
<SOYOMBO_HEAD_MARK_WITH_MOON_AND_SUN> \xF0\x91\xAA\xA0
<SOYOMBO_TERMINAL_MARK-1> \xF0\x91\xAA\xA1
<SOYOMBO_TERMINAL_MARK-2> \xF0\x91\xAA\xA2
+<CANADIAN_SYLLABICS_NATTILIK_HI> \xF0\x91\xAA\xB0
+<CANADIAN_SYLLABICS_NATTILIK_HII> \xF0\x91\xAA\xB1
+<CANADIAN_SYLLABICS_NATTILIK_HO> \xF0\x91\xAA\xB2
+<CANADIAN_SYLLABICS_NATTILIK_HOO> \xF0\x91\xAA\xB3
+<CANADIAN_SYLLABICS_NATTILIK_HA> \xF0\x91\xAA\xB4
+<CANADIAN_SYLLABICS_NATTILIK_HAA> \xF0\x91\xAA\xB5
+<CANADIAN_SYLLABICS_NATTILIK_SHRI> \xF0\x91\xAA\xB6
+<CANADIAN_SYLLABICS_NATTILIK_SHRII> \xF0\x91\xAA\xB7
+<CANADIAN_SYLLABICS_NATTILIK_SHRO> \xF0\x91\xAA\xB8
+<CANADIAN_SYLLABICS_NATTILIK_SHROO> \xF0\x91\xAA\xB9
+<CANADIAN_SYLLABICS_NATTILIK_SHRA> \xF0\x91\xAA\xBA
+<CANADIAN_SYLLABICS_NATTILIK_SHRAA> \xF0\x91\xAA\xBB
+<CANADIAN_SYLLABICS_SPE> \xF0\x91\xAA\xBC
+<CANADIAN_SYLLABICS_SPI> \xF0\x91\xAA\xBD
+<CANADIAN_SYLLABICS_SPO> \xF0\x91\xAA\xBE
+<CANADIAN_SYLLABICS_SPA> \xF0\x91\xAA\xBF
<PAU_CIN_HAU_LETTER_PA> \xF0\x91\xAB\x80
<PAU_CIN_HAU_LETTER_KA> \xF0\x91\xAB\x81
<PAU_CIN_HAU_LETTER_LA> \xF0\x91\xAB\x82
@@ -66245,6 +66547,16 @@ CHARMAP
<PAU_CIN_HAU_LOW-FALLING_TONE_LONG_FINAL> \xF0\x91\xAB\xB6
<PAU_CIN_HAU_LOW-FALLING_TONE_FINAL> \xF0\x91\xAB\xB7
<PAU_CIN_HAU_GLOTTAL_STOP_FINAL> \xF0\x91\xAB\xB8
+<DEVANAGARI_HEAD_MARK> \xF0\x91\xAC\x80
+<DEVANAGARI_HEAD_MARK_WITH_HEADSTROKE> \xF0\x91\xAC\x81
+<DEVANAGARI_SIGN_BHALE> \xF0\x91\xAC\x82
+<DEVANAGARI_SIGN_BHALE_WITH_HOOK> \xF0\x91\xAC\x83
+<DEVANAGARI_SIGN_EXTENDED_BHALE> \xF0\x91\xAC\x84
+<DEVANAGARI_SIGN_EXTENDED_BHALE_WITH_HOOK> \xF0\x91\xAC\x85
+<DEVANAGARI_SIGN_WESTERN_FIVE-LIKE_BHALE> \xF0\x91\xAC\x86
+<DEVANAGARI_SIGN_WESTERN_NINE-LIKE_BHALE> \xF0\x91\xAC\x87
+<DEVANAGARI_SIGN_REVERSED_NINE-LIKE_BHALE> \xF0\x91\xAC\x88
+<DEVANAGARI_SIGN_MINDU> \xF0\x91\xAC\x89
<BHAIKSUKI_LETTER_A> \xF0\x91\xB0\x80
<BHAIKSUKI_LETTER_AA> \xF0\x91\xB0\x81
<BHAIKSUKI_LETTER_I> \xF0\x91\xB0\x82
@@ -66573,6 +66885,92 @@ CHARMAP
<MAKASAR_VOWEL_SIGN_O> \xF0\x91\xBB\xB6
<MAKASAR_PASSIMBANG> \xF0\x91\xBB\xB7
<MAKASAR_END_OF_SECTION> \xF0\x91\xBB\xB8
+<KAWI_SIGN_CANDRABINDU> \xF0\x91\xBC\x80
+<KAWI_SIGN_ANUSVARA> \xF0\x91\xBC\x81
+<KAWI_SIGN_REPHA> \xF0\x91\xBC\x82
+<KAWI_SIGN_VISARGA> \xF0\x91\xBC\x83
+<KAWI_LETTER_A> \xF0\x91\xBC\x84
+<KAWI_LETTER_AA> \xF0\x91\xBC\x85
+<KAWI_LETTER_I> \xF0\x91\xBC\x86
+<KAWI_LETTER_II> \xF0\x91\xBC\x87
+<KAWI_LETTER_U> \xF0\x91\xBC\x88
+<KAWI_LETTER_UU> \xF0\x91\xBC\x89
+<KAWI_LETTER_VOCALIC_R> \xF0\x91\xBC\x8A
+<KAWI_LETTER_VOCALIC_RR> \xF0\x91\xBC\x8B
+<KAWI_LETTER_VOCALIC_L> \xF0\x91\xBC\x8C
+<KAWI_LETTER_VOCALIC_LL> \xF0\x91\xBC\x8D
+<KAWI_LETTER_E> \xF0\x91\xBC\x8E
+<KAWI_LETTER_AI> \xF0\x91\xBC\x8F
+<KAWI_LETTER_O> \xF0\x91\xBC\x90
+<KAWI_LETTER_KA> \xF0\x91\xBC\x92
+<KAWI_LETTER_KHA> \xF0\x91\xBC\x93
+<KAWI_LETTER_GA> \xF0\x91\xBC\x94
+<KAWI_LETTER_GHA> \xF0\x91\xBC\x95
+<KAWI_LETTER_NGA> \xF0\x91\xBC\x96
+<KAWI_LETTER_CA> \xF0\x91\xBC\x97
+<KAWI_LETTER_CHA> \xF0\x91\xBC\x98
+<KAWI_LETTER_JA> \xF0\x91\xBC\x99
+<KAWI_LETTER_JHA> \xF0\x91\xBC\x9A
+<KAWI_LETTER_NYA> \xF0\x91\xBC\x9B
+<KAWI_LETTER_TTA> \xF0\x91\xBC\x9C
+<KAWI_LETTER_TTHA> \xF0\x91\xBC\x9D
+<KAWI_LETTER_DDA> \xF0\x91\xBC\x9E
+<KAWI_LETTER_DDHA> \xF0\x91\xBC\x9F
+<KAWI_LETTER_NNA> \xF0\x91\xBC\xA0
+<KAWI_LETTER_TA> \xF0\x91\xBC\xA1
+<KAWI_LETTER_THA> \xF0\x91\xBC\xA2
+<KAWI_LETTER_DA> \xF0\x91\xBC\xA3
+<KAWI_LETTER_DHA> \xF0\x91\xBC\xA4
+<KAWI_LETTER_NA> \xF0\x91\xBC\xA5
+<KAWI_LETTER_PA> \xF0\x91\xBC\xA6
+<KAWI_LETTER_PHA> \xF0\x91\xBC\xA7
+<KAWI_LETTER_BA> \xF0\x91\xBC\xA8
+<KAWI_LETTER_BHA> \xF0\x91\xBC\xA9
+<KAWI_LETTER_MA> \xF0\x91\xBC\xAA
+<KAWI_LETTER_YA> \xF0\x91\xBC\xAB
+<KAWI_LETTER_RA> \xF0\x91\xBC\xAC
+<KAWI_LETTER_LA> \xF0\x91\xBC\xAD
+<KAWI_LETTER_WA> \xF0\x91\xBC\xAE
+<KAWI_LETTER_SHA> \xF0\x91\xBC\xAF
+<KAWI_LETTER_SSA> \xF0\x91\xBC\xB0
+<KAWI_LETTER_SA> \xF0\x91\xBC\xB1
+<KAWI_LETTER_HA> \xF0\x91\xBC\xB2
+<KAWI_LETTER_JNYA> \xF0\x91\xBC\xB3
+<KAWI_VOWEL_SIGN_AA> \xF0\x91\xBC\xB4
+<KAWI_VOWEL_SIGN_ALTERNATE_AA> \xF0\x91\xBC\xB5
+<KAWI_VOWEL_SIGN_I> \xF0\x91\xBC\xB6
+<KAWI_VOWEL_SIGN_II> \xF0\x91\xBC\xB7
+<KAWI_VOWEL_SIGN_U> \xF0\x91\xBC\xB8
+<KAWI_VOWEL_SIGN_UU> \xF0\x91\xBC\xB9
+<KAWI_VOWEL_SIGN_VOCALIC_R> \xF0\x91\xBC\xBA
+<KAWI_VOWEL_SIGN_E> \xF0\x91\xBC\xBE
+<KAWI_VOWEL_SIGN_AI> \xF0\x91\xBC\xBF
+<KAWI_VOWEL_SIGN_EU> \xF0\x91\xBD\x80
+<KAWI_SIGN_KILLER> \xF0\x91\xBD\x81
+<KAWI_CONJOINER> \xF0\x91\xBD\x82
+<KAWI_DANDA> \xF0\x91\xBD\x83
+<KAWI_DOUBLE_DANDA> \xF0\x91\xBD\x84
+<KAWI_PUNCTUATION_SECTION_MARKER> \xF0\x91\xBD\x85
+<KAWI_PUNCTUATION_ALTERNATE_SECTION_MARKER> \xF0\x91\xBD\x86
+<KAWI_PUNCTUATION_FLOWER> \xF0\x91\xBD\x87
+<KAWI_PUNCTUATION_SPACE_FILLER> \xF0\x91\xBD\x88
+<KAWI_PUNCTUATION_DOT> \xF0\x91\xBD\x89
+<KAWI_PUNCTUATION_DOUBLE_DOT> \xF0\x91\xBD\x8A
+<KAWI_PUNCTUATION_TRIPLE_DOT> \xF0\x91\xBD\x8B
+<KAWI_PUNCTUATION_CIRCLE> \xF0\x91\xBD\x8C
+<KAWI_PUNCTUATION_FILLED_CIRCLE> \xF0\x91\xBD\x8D
+<KAWI_PUNCTUATION_SPIRAL> \xF0\x91\xBD\x8E
+<KAWI_PUNCTUATION_CLOSING_SPIRAL> \xF0\x91\xBD\x8F
+<KAWI_DIGIT_ZERO> \xF0\x91\xBD\x90
+<KAWI_DIGIT_ONE> \xF0\x91\xBD\x91
+<KAWI_DIGIT_TWO> \xF0\x91\xBD\x92
+<KAWI_DIGIT_THREE> \xF0\x91\xBD\x93
+<KAWI_DIGIT_FOUR> \xF0\x91\xBD\x94
+<KAWI_DIGIT_FIVE> \xF0\x91\xBD\x95
+<KAWI_DIGIT_SIX> \xF0\x91\xBD\x96
+<KAWI_DIGIT_SEVEN> \xF0\x91\xBD\x97
+<KAWI_DIGIT_EIGHT> \xF0\x91\xBD\x98
+<KAWI_DIGIT_NINE> \xF0\x91\xBD\x99
<LISU_LETTER_YHA> \xF0\x91\xBE\xB0
<TAMIL_FRACTION_ONE_THREE-HUNDRED-AND-TWENTIETH> \xF0\x91\xBF\x80
<TAMIL_FRACTION_ONE_ONE-HUNDRED-AND-SIXTIETH> \xF0\x91\xBF\x81
@@ -67859,6 +68257,105 @@ CHARMAP
<CUNEIFORM_SIGN_ZA7> \xF0\x92\x95\x81
<CUNEIFORM_SIGN_ZU_OVER_ZU_PLUS_SAR> \xF0\x92\x95\x82
<CUNEIFORM_SIGN_ZU5_TIMES_THREE_DISH_TENU> \xF0\x92\x95\x83
+<CYPRO-MINOAN_SIGN_CM001> \xF0\x92\xBE\x90
+<CYPRO-MINOAN_SIGN_CM002> \xF0\x92\xBE\x91
+<CYPRO-MINOAN_SIGN_CM004> \xF0\x92\xBE\x92
+<CYPRO-MINOAN_SIGN_CM005> \xF0\x92\xBE\x93
+<CYPRO-MINOAN_SIGN_CM006> \xF0\x92\xBE\x94
+<CYPRO-MINOAN_SIGN_CM007> \xF0\x92\xBE\x95
+<CYPRO-MINOAN_SIGN_CM008> \xF0\x92\xBE\x96
+<CYPRO-MINOAN_SIGN_CM009> \xF0\x92\xBE\x97
+<CYPRO-MINOAN_SIGN_CM010> \xF0\x92\xBE\x98
+<CYPRO-MINOAN_SIGN_CM011> \xF0\x92\xBE\x99
+<CYPRO-MINOAN_SIGN_CM012> \xF0\x92\xBE\x9A
+<CYPRO-MINOAN_SIGN_CM012B> \xF0\x92\xBE\x9B
+<CYPRO-MINOAN_SIGN_CM013> \xF0\x92\xBE\x9C
+<CYPRO-MINOAN_SIGN_CM015> \xF0\x92\xBE\x9D
+<CYPRO-MINOAN_SIGN_CM017> \xF0\x92\xBE\x9E
+<CYPRO-MINOAN_SIGN_CM019> \xF0\x92\xBE\x9F
+<CYPRO-MINOAN_SIGN_CM021> \xF0\x92\xBE\xA0
+<CYPRO-MINOAN_SIGN_CM023> \xF0\x92\xBE\xA1
+<CYPRO-MINOAN_SIGN_CM024> \xF0\x92\xBE\xA2
+<CYPRO-MINOAN_SIGN_CM025> \xF0\x92\xBE\xA3
+<CYPRO-MINOAN_SIGN_CM026> \xF0\x92\xBE\xA4
+<CYPRO-MINOAN_SIGN_CM027> \xF0\x92\xBE\xA5
+<CYPRO-MINOAN_SIGN_CM028> \xF0\x92\xBE\xA6
+<CYPRO-MINOAN_SIGN_CM029> \xF0\x92\xBE\xA7
+<CYPRO-MINOAN_SIGN_CM030> \xF0\x92\xBE\xA8
+<CYPRO-MINOAN_SIGN_CM033> \xF0\x92\xBE\xA9
+<CYPRO-MINOAN_SIGN_CM034> \xF0\x92\xBE\xAA
+<CYPRO-MINOAN_SIGN_CM035> \xF0\x92\xBE\xAB
+<CYPRO-MINOAN_SIGN_CM036> \xF0\x92\xBE\xAC
+<CYPRO-MINOAN_SIGN_CM037> \xF0\x92\xBE\xAD
+<CYPRO-MINOAN_SIGN_CM038> \xF0\x92\xBE\xAE
+<CYPRO-MINOAN_SIGN_CM039> \xF0\x92\xBE\xAF
+<CYPRO-MINOAN_SIGN_CM040> \xF0\x92\xBE\xB0
+<CYPRO-MINOAN_SIGN_CM041> \xF0\x92\xBE\xB1
+<CYPRO-MINOAN_SIGN_CM044> \xF0\x92\xBE\xB2
+<CYPRO-MINOAN_SIGN_CM046> \xF0\x92\xBE\xB3
+<CYPRO-MINOAN_SIGN_CM047> \xF0\x92\xBE\xB4
+<CYPRO-MINOAN_SIGN_CM049> \xF0\x92\xBE\xB5
+<CYPRO-MINOAN_SIGN_CM050> \xF0\x92\xBE\xB6
+<CYPRO-MINOAN_SIGN_CM051> \xF0\x92\xBE\xB7
+<CYPRO-MINOAN_SIGN_CM052> \xF0\x92\xBE\xB8
+<CYPRO-MINOAN_SIGN_CM053> \xF0\x92\xBE\xB9
+<CYPRO-MINOAN_SIGN_CM054> \xF0\x92\xBE\xBA
+<CYPRO-MINOAN_SIGN_CM055> \xF0\x92\xBE\xBB
+<CYPRO-MINOAN_SIGN_CM056> \xF0\x92\xBE\xBC
+<CYPRO-MINOAN_SIGN_CM058> \xF0\x92\xBE\xBD
+<CYPRO-MINOAN_SIGN_CM059> \xF0\x92\xBE\xBE
+<CYPRO-MINOAN_SIGN_CM060> \xF0\x92\xBE\xBF
+<CYPRO-MINOAN_SIGN_CM061> \xF0\x92\xBF\x80
+<CYPRO-MINOAN_SIGN_CM062> \xF0\x92\xBF\x81
+<CYPRO-MINOAN_SIGN_CM063> \xF0\x92\xBF\x82
+<CYPRO-MINOAN_SIGN_CM064> \xF0\x92\xBF\x83
+<CYPRO-MINOAN_SIGN_CM066> \xF0\x92\xBF\x84
+<CYPRO-MINOAN_SIGN_CM067> \xF0\x92\xBF\x85
+<CYPRO-MINOAN_SIGN_CM068> \xF0\x92\xBF\x86
+<CYPRO-MINOAN_SIGN_CM069> \xF0\x92\xBF\x87
+<CYPRO-MINOAN_SIGN_CM070> \xF0\x92\xBF\x88
+<CYPRO-MINOAN_SIGN_CM071> \xF0\x92\xBF\x89
+<CYPRO-MINOAN_SIGN_CM072> \xF0\x92\xBF\x8A
+<CYPRO-MINOAN_SIGN_CM073> \xF0\x92\xBF\x8B
+<CYPRO-MINOAN_SIGN_CM074> \xF0\x92\xBF\x8C
+<CYPRO-MINOAN_SIGN_CM075> \xF0\x92\xBF\x8D
+<CYPRO-MINOAN_SIGN_CM075B> \xF0\x92\xBF\x8E
+<CYPRO-MINOAN_SIGN_CM076> \xF0\x92\xBF\x8F
+<CYPRO-MINOAN_SIGN_CM078> \xF0\x92\xBF\x90
+<CYPRO-MINOAN_SIGN_CM079> \xF0\x92\xBF\x91
+<CYPRO-MINOAN_SIGN_CM080> \xF0\x92\xBF\x92
+<CYPRO-MINOAN_SIGN_CM081> \xF0\x92\xBF\x93
+<CYPRO-MINOAN_SIGN_CM082> \xF0\x92\xBF\x94
+<CYPRO-MINOAN_SIGN_CM083> \xF0\x92\xBF\x95
+<CYPRO-MINOAN_SIGN_CM084> \xF0\x92\xBF\x96
+<CYPRO-MINOAN_SIGN_CM085> \xF0\x92\xBF\x97
+<CYPRO-MINOAN_SIGN_CM086> \xF0\x92\xBF\x98
+<CYPRO-MINOAN_SIGN_CM087> \xF0\x92\xBF\x99
+<CYPRO-MINOAN_SIGN_CM088> \xF0\x92\xBF\x9A
+<CYPRO-MINOAN_SIGN_CM089> \xF0\x92\xBF\x9B
+<CYPRO-MINOAN_SIGN_CM090> \xF0\x92\xBF\x9C
+<CYPRO-MINOAN_SIGN_CM091> \xF0\x92\xBF\x9D
+<CYPRO-MINOAN_SIGN_CM092> \xF0\x92\xBF\x9E
+<CYPRO-MINOAN_SIGN_CM094> \xF0\x92\xBF\x9F
+<CYPRO-MINOAN_SIGN_CM095> \xF0\x92\xBF\xA0
+<CYPRO-MINOAN_SIGN_CM096> \xF0\x92\xBF\xA1
+<CYPRO-MINOAN_SIGN_CM097> \xF0\x92\xBF\xA2
+<CYPRO-MINOAN_SIGN_CM098> \xF0\x92\xBF\xA3
+<CYPRO-MINOAN_SIGN_CM099> \xF0\x92\xBF\xA4
+<CYPRO-MINOAN_SIGN_CM100> \xF0\x92\xBF\xA5
+<CYPRO-MINOAN_SIGN_CM101> \xF0\x92\xBF\xA6
+<CYPRO-MINOAN_SIGN_CM102> \xF0\x92\xBF\xA7
+<CYPRO-MINOAN_SIGN_CM103> \xF0\x92\xBF\xA8
+<CYPRO-MINOAN_SIGN_CM104> \xF0\x92\xBF\xA9
+<CYPRO-MINOAN_SIGN_CM105> \xF0\x92\xBF\xAA
+<CYPRO-MINOAN_SIGN_CM107> \xF0\x92\xBF\xAB
+<CYPRO-MINOAN_SIGN_CM108> \xF0\x92\xBF\xAC
+<CYPRO-MINOAN_SIGN_CM109> \xF0\x92\xBF\xAD
+<CYPRO-MINOAN_SIGN_CM110> \xF0\x92\xBF\xAE
+<CYPRO-MINOAN_SIGN_CM112> \xF0\x92\xBF\xAF
+<CYPRO-MINOAN_SIGN_CM114> \xF0\x92\xBF\xB0
+<CYPRO-MINOAN_SIGN_CM301> \xF0\x92\xBF\xB1
+<CYPRO-MINOAN_SIGN_CM302> \xF0\x92\xBF\xB2
<EGYPTIAN_HIEROGLYPH_A001> \xF0\x93\x80\x80
<EGYPTIAN_HIEROGLYPH_A002> \xF0\x93\x80\x81
<EGYPTIAN_HIEROGLYPH_A003> \xF0\x93\x80\x82
@@ -68930,6 +69427,7 @@ CHARMAP
<EGYPTIAN_HIEROGLYPH_AA030> \xF0\x93\x90\xAC
<EGYPTIAN_HIEROGLYPH_AA031> \xF0\x93\x90\xAD
<EGYPTIAN_HIEROGLYPH_AA032> \xF0\x93\x90\xAE
+<EGYPTIAN_HIEROGLYPH_V011D> \xF0\x93\x90\xAF
<EGYPTIAN_HIEROGLYPH_VERTICAL_JOINER> \xF0\x93\x90\xB0
<EGYPTIAN_HIEROGLYPH_HORIZONTAL_JOINER> \xF0\x93\x90\xB1
<EGYPTIAN_HIEROGLYPH_INSERT_AT_TOP_START> \xF0\x93\x90\xB2
@@ -68939,6 +69437,35 @@ CHARMAP
<EGYPTIAN_HIEROGLYPH_OVERLAY_MIDDLE> \xF0\x93\x90\xB6
<EGYPTIAN_HIEROGLYPH_BEGIN_SEGMENT> \xF0\x93\x90\xB7
<EGYPTIAN_HIEROGLYPH_END_SEGMENT> \xF0\x93\x90\xB8
+<EGYPTIAN_HIEROGLYPH_INSERT_AT_MIDDLE> \xF0\x93\x90\xB9
+<EGYPTIAN_HIEROGLYPH_INSERT_AT_TOP> \xF0\x93\x90\xBA
+<EGYPTIAN_HIEROGLYPH_INSERT_AT_BOTTOM> \xF0\x93\x90\xBB
+<EGYPTIAN_HIEROGLYPH_BEGIN_ENCLOSURE> \xF0\x93\x90\xBC
+<EGYPTIAN_HIEROGLYPH_END_ENCLOSURE> \xF0\x93\x90\xBD
+<EGYPTIAN_HIEROGLYPH_BEGIN_WALLED_ENCLOSURE> \xF0\x93\x90\xBE
+<EGYPTIAN_HIEROGLYPH_END_WALLED_ENCLOSURE> \xF0\x93\x90\xBF
+<EGYPTIAN_HIEROGLYPH_MIRROR_HORIZONTALLY> \xF0\x93\x91\x80
+<EGYPTIAN_HIEROGLYPH_FULL_BLANK> \xF0\x93\x91\x81
+<EGYPTIAN_HIEROGLYPH_HALF_BLANK> \xF0\x93\x91\x82
+<EGYPTIAN_HIEROGLYPH_LOST_SIGN> \xF0\x93\x91\x83
+<EGYPTIAN_HIEROGLYPH_HALF_LOST_SIGN> \xF0\x93\x91\x84
+<EGYPTIAN_HIEROGLYPH_TALL_LOST_SIGN> \xF0\x93\x91\x85
+<EGYPTIAN_HIEROGLYPH_WIDE_LOST_SIGN> \xF0\x93\x91\x86
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_TOP_START> \xF0\x93\x91\x87
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_BOTTOM_START> \xF0\x93\x91\x88
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_START> \xF0\x93\x91\x89
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_TOP_END> \xF0\x93\x91\x8A
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_TOP> \xF0\x93\x91\x8B
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_BOTTOM_START_AND_TOP_END> \xF0\x93\x91\x8C
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_START_AND_TOP> \xF0\x93\x91\x8D
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_BOTTOM_END> \xF0\x93\x91\x8E
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_TOP_START_AND_BOTTOM_END> \xF0\x93\x91\x8F
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_BOTTOM> \xF0\x93\x91\x90
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_START_AND_BOTTOM> \xF0\x93\x91\x91
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_END> \xF0\x93\x91\x92
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_TOP_AND_END> \xF0\x93\x91\x93
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_BOTTOM_AND_END> \xF0\x93\x91\x94
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED> \xF0\x93\x91\x95
<ANATOLIAN_HIEROGLYPH_A001> \xF0\x94\x90\x80
<ANATOLIAN_HIEROGLYPH_A002> \xF0\x94\x90\x81
<ANATOLIAN_HIEROGLYPH_A003> \xF0\x94\x90\x82
@@ -70134,6 +70661,95 @@ CHARMAP
<MRO_DIGIT_NINE> \xF0\x96\xA9\xA9
<MRO_DANDA> \xF0\x96\xA9\xAE
<MRO_DOUBLE_DANDA> \xF0\x96\xA9\xAF
+<TANGSA_LETTER_OZ> \xF0\x96\xA9\xB0
+<TANGSA_LETTER_OC> \xF0\x96\xA9\xB1
+<TANGSA_LETTER_OQ> \xF0\x96\xA9\xB2
+<TANGSA_LETTER_OX> \xF0\x96\xA9\xB3
+<TANGSA_LETTER_AZ> \xF0\x96\xA9\xB4
+<TANGSA_LETTER_AC> \xF0\x96\xA9\xB5
+<TANGSA_LETTER_AQ> \xF0\x96\xA9\xB6
+<TANGSA_LETTER_AX> \xF0\x96\xA9\xB7
+<TANGSA_LETTER_VZ> \xF0\x96\xA9\xB8
+<TANGSA_LETTER_VC> \xF0\x96\xA9\xB9
+<TANGSA_LETTER_VQ> \xF0\x96\xA9\xBA
+<TANGSA_LETTER_VX> \xF0\x96\xA9\xBB
+<TANGSA_LETTER_EZ> \xF0\x96\xA9\xBC
+<TANGSA_LETTER_EC> \xF0\x96\xA9\xBD
+<TANGSA_LETTER_EQ> \xF0\x96\xA9\xBE
+<TANGSA_LETTER_EX> \xF0\x96\xA9\xBF
+<TANGSA_LETTER_IZ> \xF0\x96\xAA\x80
+<TANGSA_LETTER_IC> \xF0\x96\xAA\x81
+<TANGSA_LETTER_IQ> \xF0\x96\xAA\x82
+<TANGSA_LETTER_IX> \xF0\x96\xAA\x83
+<TANGSA_LETTER_UZ> \xF0\x96\xAA\x84
+<TANGSA_LETTER_UC> \xF0\x96\xAA\x85
+<TANGSA_LETTER_UQ> \xF0\x96\xAA\x86
+<TANGSA_LETTER_UX> \xF0\x96\xAA\x87
+<TANGSA_LETTER_AWZ> \xF0\x96\xAA\x88
+<TANGSA_LETTER_AWC> \xF0\x96\xAA\x89
+<TANGSA_LETTER_AWQ> \xF0\x96\xAA\x8A
+<TANGSA_LETTER_AWX> \xF0\x96\xAA\x8B
+<TANGSA_LETTER_UIZ> \xF0\x96\xAA\x8C
+<TANGSA_LETTER_UIC> \xF0\x96\xAA\x8D
+<TANGSA_LETTER_UIQ> \xF0\x96\xAA\x8E
+<TANGSA_LETTER_UIX> \xF0\x96\xAA\x8F
+<TANGSA_LETTER_FINAL_NG> \xF0\x96\xAA\x90
+<TANGSA_LETTER_LONG_UEX> \xF0\x96\xAA\x91
+<TANGSA_LETTER_SHORT_UEZ> \xF0\x96\xAA\x92
+<TANGSA_LETTER_SHORT_AWX> \xF0\x96\xAA\x93
+<TANGSA_LETTER_UEC> \xF0\x96\xAA\x94
+<TANGSA_LETTER_UEZ> \xF0\x96\xAA\x95
+<TANGSA_LETTER_UEQ> \xF0\x96\xAA\x96
+<TANGSA_LETTER_UEX> \xF0\x96\xAA\x97
+<TANGSA_LETTER_UIUZ> \xF0\x96\xAA\x98
+<TANGSA_LETTER_UIUC> \xF0\x96\xAA\x99
+<TANGSA_LETTER_UIUQ> \xF0\x96\xAA\x9A
+<TANGSA_LETTER_UIUX> \xF0\x96\xAA\x9B
+<TANGSA_LETTER_MZ> \xF0\x96\xAA\x9C
+<TANGSA_LETTER_MC> \xF0\x96\xAA\x9D
+<TANGSA_LETTER_MQ> \xF0\x96\xAA\x9E
+<TANGSA_LETTER_MX> \xF0\x96\xAA\x9F
+<TANGSA_LETTER_KA> \xF0\x96\xAA\xA0
+<TANGSA_LETTER_KHA> \xF0\x96\xAA\xA1
+<TANGSA_LETTER_GA> \xF0\x96\xAA\xA2
+<TANGSA_LETTER_NGA> \xF0\x96\xAA\xA3
+<TANGSA_LETTER_SA> \xF0\x96\xAA\xA4
+<TANGSA_LETTER_YA> \xF0\x96\xAA\xA5
+<TANGSA_LETTER_WA> \xF0\x96\xAA\xA6
+<TANGSA_LETTER_PA> \xF0\x96\xAA\xA7
+<TANGSA_LETTER_NYA> \xF0\x96\xAA\xA8
+<TANGSA_LETTER_PHA> \xF0\x96\xAA\xA9
+<TANGSA_LETTER_BA> \xF0\x96\xAA\xAA
+<TANGSA_LETTER_MA> \xF0\x96\xAA\xAB
+<TANGSA_LETTER_NA> \xF0\x96\xAA\xAC
+<TANGSA_LETTER_HA> \xF0\x96\xAA\xAD
+<TANGSA_LETTER_LA> \xF0\x96\xAA\xAE
+<TANGSA_LETTER_HTA> \xF0\x96\xAA\xAF
+<TANGSA_LETTER_TA> \xF0\x96\xAA\xB0
+<TANGSA_LETTER_DA> \xF0\x96\xAA\xB1
+<TANGSA_LETTER_RA> \xF0\x96\xAA\xB2
+<TANGSA_LETTER_NHA> \xF0\x96\xAA\xB3
+<TANGSA_LETTER_SHA> \xF0\x96\xAA\xB4
+<TANGSA_LETTER_CA> \xF0\x96\xAA\xB5
+<TANGSA_LETTER_TSA> \xF0\x96\xAA\xB6
+<TANGSA_LETTER_GHA> \xF0\x96\xAA\xB7
+<TANGSA_LETTER_HTTA> \xF0\x96\xAA\xB8
+<TANGSA_LETTER_THA> \xF0\x96\xAA\xB9
+<TANGSA_LETTER_XA> \xF0\x96\xAA\xBA
+<TANGSA_LETTER_FA> \xF0\x96\xAA\xBB
+<TANGSA_LETTER_DHA> \xF0\x96\xAA\xBC
+<TANGSA_LETTER_CHA> \xF0\x96\xAA\xBD
+<TANGSA_LETTER_ZA> \xF0\x96\xAA\xBE
+<TANGSA_DIGIT_ZERO> \xF0\x96\xAB\x80
+<TANGSA_DIGIT_ONE> \xF0\x96\xAB\x81
+<TANGSA_DIGIT_TWO> \xF0\x96\xAB\x82
+<TANGSA_DIGIT_THREE> \xF0\x96\xAB\x83
+<TANGSA_DIGIT_FOUR> \xF0\x96\xAB\x84
+<TANGSA_DIGIT_FIVE> \xF0\x96\xAB\x85
+<TANGSA_DIGIT_SIX> \xF0\x96\xAB\x86
+<TANGSA_DIGIT_SEVEN> \xF0\x96\xAB\x87
+<TANGSA_DIGIT_EIGHT> \xF0\x96\xAB\x88
+<TANGSA_DIGIT_NINE> \xF0\x96\xAB\x89
<BASSA_VAH_LETTER_ENNI> \xF0\x96\xAB\x90
<BASSA_VAH_LETTER_KA> \xF0\x96\xAB\x91
<BASSA_VAH_LETTER_SE> \xF0\x96\xAB\x92
@@ -77927,6 +78543,19 @@ CHARMAP
<TANGUT_IDEOGRAPH-18D06> \xF0\x98\xB4\x86
<TANGUT_IDEOGRAPH-18D07> \xF0\x98\xB4\x87
<TANGUT_IDEOGRAPH-18D08> \xF0\x98\xB4\x88
+<KATAKANA_LETTER_MINNAN_TONE-2> \xF0\x9A\xBF\xB0
+<KATAKANA_LETTER_MINNAN_TONE-3> \xF0\x9A\xBF\xB1
+<KATAKANA_LETTER_MINNAN_TONE-4> \xF0\x9A\xBF\xB2
+<KATAKANA_LETTER_MINNAN_TONE-5> \xF0\x9A\xBF\xB3
+<KATAKANA_LETTER_MINNAN_TONE-7> \xF0\x9A\xBF\xB5
+<KATAKANA_LETTER_MINNAN_TONE-8> \xF0\x9A\xBF\xB6
+<KATAKANA_LETTER_MINNAN_NASALIZED_TONE-1> \xF0\x9A\xBF\xB7
+<KATAKANA_LETTER_MINNAN_NASALIZED_TONE-2> \xF0\x9A\xBF\xB8
+<KATAKANA_LETTER_MINNAN_NASALIZED_TONE-3> \xF0\x9A\xBF\xB9
+<KATAKANA_LETTER_MINNAN_NASALIZED_TONE-4> \xF0\x9A\xBF\xBA
+<KATAKANA_LETTER_MINNAN_NASALIZED_TONE-5> \xF0\x9A\xBF\xBB
+<KATAKANA_LETTER_MINNAN_NASALIZED_TONE-7> \xF0\x9A\xBF\xBD
+<KATAKANA_LETTER_MINNAN_NASALIZED_TONE-8> \xF0\x9A\xBF\xBE
<KATAKANA_LETTER_ARCHAIC_E> \xF0\x9B\x80\x80
<HIRAGANA_LETTER_ARCHAIC_YE> \xF0\x9B\x80\x81
<HENTAIGANA_LETTER_A-1> \xF0\x9B\x80\x82
@@ -78214,9 +78843,15 @@ CHARMAP
<HENTAIGANA_LETTER_WO-7> \xF0\x9B\x84\x9C
<HENTAIGANA_LETTER_N-MU-MO-1> \xF0\x9B\x84\x9D
<HENTAIGANA_LETTER_N-MU-MO-2> \xF0\x9B\x84\x9E
+<HIRAGANA_LETTER_ARCHAIC_WU> \xF0\x9B\x84\x9F
+<KATAKANA_LETTER_ARCHAIC_YI> \xF0\x9B\x84\xA0
+<KATAKANA_LETTER_ARCHAIC_YE> \xF0\x9B\x84\xA1
+<KATAKANA_LETTER_ARCHAIC_WU> \xF0\x9B\x84\xA2
+<HIRAGANA_LETTER_SMALL_KO> \xF0\x9B\x84\xB2
<HIRAGANA_LETTER_SMALL_WI> \xF0\x9B\x85\x90
<HIRAGANA_LETTER_SMALL_WE> \xF0\x9B\x85\x91
<HIRAGANA_LETTER_SMALL_WO> \xF0\x9B\x85\x92
+<KATAKANA_LETTER_SMALL_KO> \xF0\x9B\x85\x95
<KATAKANA_LETTER_SMALL_WI> \xF0\x9B\x85\xA4
<KATAKANA_LETTER_SMALL_WE> \xF0\x9B\x85\xA5
<KATAKANA_LETTER_SMALL_WO> \xF0\x9B\x85\xA6
@@ -78764,6 +79399,191 @@ CHARMAP
<SHORTHAND_FORMAT_CONTINUING_OVERLAP> \xF0\x9B\xB2\xA1
<SHORTHAND_FORMAT_DOWN_STEP> \xF0\x9B\xB2\xA2
<SHORTHAND_FORMAT_UP_STEP> \xF0\x9B\xB2\xA3
+<ZNAMENNY_COMBINING_MARK_GORAZDO_NIZKO_S_KRYZHEM_ON_LEFT> \xF0\x9C\xBC\x80
+<ZNAMENNY_COMBINING_MARK_NIZKO_S_KRYZHEM_ON_LEFT> \xF0\x9C\xBC\x81
+<ZNAMENNY_COMBINING_MARK_TSATA_ON_LEFT> \xF0\x9C\xBC\x82
+<ZNAMENNY_COMBINING_MARK_GORAZDO_NIZKO_ON_LEFT> \xF0\x9C\xBC\x83
+<ZNAMENNY_COMBINING_MARK_NIZKO_ON_LEFT> \xF0\x9C\xBC\x84
+<ZNAMENNY_COMBINING_MARK_SREDNE_ON_LEFT> \xF0\x9C\xBC\x85
+<ZNAMENNY_COMBINING_MARK_MALO_POVYSHE_ON_LEFT> \xF0\x9C\xBC\x86
+<ZNAMENNY_COMBINING_MARK_POVYSHE_ON_LEFT> \xF0\x9C\xBC\x87
+<ZNAMENNY_COMBINING_MARK_VYSOKO_ON_LEFT> \xF0\x9C\xBC\x88
+<ZNAMENNY_COMBINING_MARK_MALO_POVYSHE_S_KHOKHLOM_ON_LEFT> \xF0\x9C\xBC\x89
+<ZNAMENNY_COMBINING_MARK_POVYSHE_S_KHOKHLOM_ON_LEFT> \xF0\x9C\xBC\x8A
+<ZNAMENNY_COMBINING_MARK_VYSOKO_S_KHOKHLOM_ON_LEFT> \xF0\x9C\xBC\x8B
+<ZNAMENNY_COMBINING_MARK_GORAZDO_NIZKO_S_KRYZHEM_ON_RIGHT> \xF0\x9C\xBC\x8C
+<ZNAMENNY_COMBINING_MARK_NIZKO_S_KRYZHEM_ON_RIGHT> \xF0\x9C\xBC\x8D
+<ZNAMENNY_COMBINING_MARK_TSATA_ON_RIGHT> \xF0\x9C\xBC\x8E
+<ZNAMENNY_COMBINING_MARK_GORAZDO_NIZKO_ON_RIGHT> \xF0\x9C\xBC\x8F
+<ZNAMENNY_COMBINING_MARK_NIZKO_ON_RIGHT> \xF0\x9C\xBC\x90
+<ZNAMENNY_COMBINING_MARK_SREDNE_ON_RIGHT> \xF0\x9C\xBC\x91
+<ZNAMENNY_COMBINING_MARK_MALO_POVYSHE_ON_RIGHT> \xF0\x9C\xBC\x92
+<ZNAMENNY_COMBINING_MARK_POVYSHE_ON_RIGHT> \xF0\x9C\xBC\x93
+<ZNAMENNY_COMBINING_MARK_VYSOKO_ON_RIGHT> \xF0\x9C\xBC\x94
+<ZNAMENNY_COMBINING_MARK_MALO_POVYSHE_S_KHOKHLOM_ON_RIGHT> \xF0\x9C\xBC\x95
+<ZNAMENNY_COMBINING_MARK_POVYSHE_S_KHOKHLOM_ON_RIGHT> \xF0\x9C\xBC\x96
+<ZNAMENNY_COMBINING_MARK_VYSOKO_S_KHOKHLOM_ON_RIGHT> \xF0\x9C\xBC\x97
+<ZNAMENNY_COMBINING_MARK_TSATA_S_KRYZHEM> \xF0\x9C\xBC\x98
+<ZNAMENNY_COMBINING_MARK_MALO_POVYSHE_S_KRYZHEM> \xF0\x9C\xBC\x99
+<ZNAMENNY_COMBINING_MARK_STRANNO_MALO_POVYSHE> \xF0\x9C\xBC\x9A
+<ZNAMENNY_COMBINING_MARK_POVYSHE_S_KRYZHEM> \xF0\x9C\xBC\x9B
+<ZNAMENNY_COMBINING_MARK_POVYSHE_STRANNO> \xF0\x9C\xBC\x9C
+<ZNAMENNY_COMBINING_MARK_VYSOKO_S_KRYZHEM> \xF0\x9C\xBC\x9D
+<ZNAMENNY_COMBINING_MARK_MALO_POVYSHE_STRANNO> \xF0\x9C\xBC\x9E
+<ZNAMENNY_COMBINING_MARK_GORAZDO_VYSOKO> \xF0\x9C\xBC\x9F
+<ZNAMENNY_COMBINING_MARK_ZELO> \xF0\x9C\xBC\xA0
+<ZNAMENNY_COMBINING_MARK_ON> \xF0\x9C\xBC\xA1
+<ZNAMENNY_COMBINING_MARK_RAVNO> \xF0\x9C\xBC\xA2
+<ZNAMENNY_COMBINING_MARK_TIKHAYA> \xF0\x9C\xBC\xA3
+<ZNAMENNY_COMBINING_MARK_BORZAYA> \xF0\x9C\xBC\xA4
+<ZNAMENNY_COMBINING_MARK_UDARKA> \xF0\x9C\xBC\xA5
+<ZNAMENNY_COMBINING_MARK_PODVERTKA> \xF0\x9C\xBC\xA6
+<ZNAMENNY_COMBINING_MARK_LOMKA> \xF0\x9C\xBC\xA7
+<ZNAMENNY_COMBINING_MARK_KUPNAYA> \xF0\x9C\xBC\xA8
+<ZNAMENNY_COMBINING_MARK_KACHKA> \xF0\x9C\xBC\xA9
+<ZNAMENNY_COMBINING_MARK_ZEVOK> \xF0\x9C\xBC\xAA
+<ZNAMENNY_COMBINING_MARK_SKOBA> \xF0\x9C\xBC\xAB
+<ZNAMENNY_COMBINING_MARK_RAZSEKA> \xF0\x9C\xBC\xAC
+<ZNAMENNY_COMBINING_MARK_KRYZH_ON_LEFT> \xF0\x9C\xBC\xAD
+<ZNAMENNY_COMBINING_TONAL_RANGE_MARK_MRACHNO> \xF0\x9C\xBC\xB0
+<ZNAMENNY_COMBINING_TONAL_RANGE_MARK_SVETLO> \xF0\x9C\xBC\xB1
+<ZNAMENNY_COMBINING_TONAL_RANGE_MARK_TRESVETLO> \xF0\x9C\xBC\xB2
+<ZNAMENNY_COMBINING_MARK_ZADERZHKA> \xF0\x9C\xBC\xB3
+<ZNAMENNY_COMBINING_MARK_DEMESTVENNY_ZADERZHKA> \xF0\x9C\xBC\xB4
+<ZNAMENNY_COMBINING_MARK_OTSECHKA> \xF0\x9C\xBC\xB5
+<ZNAMENNY_COMBINING_MARK_PODCHASHIE> \xF0\x9C\xBC\xB6
+<ZNAMENNY_COMBINING_MARK_PODCHASHIE_WITH_VERTICAL_STROKE> \xF0\x9C\xBC\xB7
+<ZNAMENNY_COMBINING_MARK_CHASHKA> \xF0\x9C\xBC\xB8
+<ZNAMENNY_COMBINING_MARK_CHASHKA_POLNAYA> \xF0\x9C\xBC\xB9
+<ZNAMENNY_COMBINING_MARK_OBLACHKO> \xF0\x9C\xBC\xBA
+<ZNAMENNY_COMBINING_MARK_SOROCHYA_NOZHKA> \xF0\x9C\xBC\xBB
+<ZNAMENNY_COMBINING_MARK_TOCHKA> \xF0\x9C\xBC\xBC
+<ZNAMENNY_COMBINING_MARK_DVOETOCHIE> \xF0\x9C\xBC\xBD
+<ZNAMENNY_COMBINING_ATTACHING_VERTICAL_OMET> \xF0\x9C\xBC\xBE
+<ZNAMENNY_COMBINING_MARK_CURVED_OMET> \xF0\x9C\xBC\xBF
+<ZNAMENNY_COMBINING_MARK_KRYZH> \xF0\x9C\xBD\x80
+<ZNAMENNY_COMBINING_LOWER_TONAL_RANGE_INDICATOR> \xF0\x9C\xBD\x81
+<ZNAMENNY_PRIZNAK_MODIFIER_LEVEL-2> \xF0\x9C\xBD\x82
+<ZNAMENNY_PRIZNAK_MODIFIER_LEVEL-3> \xF0\x9C\xBD\x83
+<ZNAMENNY_PRIZNAK_MODIFIER_DIRECTION_FLIP> \xF0\x9C\xBD\x84
+<ZNAMENNY_PRIZNAK_MODIFIER_KRYZH> \xF0\x9C\xBD\x85
+<ZNAMENNY_PRIZNAK_MODIFIER_ROG> \xF0\x9C\xBD\x86
+<ZNAMENNY_NEUME_KRYUK> \xF0\x9C\xBD\x90
+<ZNAMENNY_NEUME_KRYUK_TIKHY> \xF0\x9C\xBD\x91
+<ZNAMENNY_NEUME_PARAKLIT> \xF0\x9C\xBD\x92
+<ZNAMENNY_NEUME_DVA_V_CHELNU> \xF0\x9C\xBD\x93
+<ZNAMENNY_NEUME_KLYUCH> \xF0\x9C\xBD\x94
+<ZNAMENNY_NEUME_ZANOZHEK> \xF0\x9C\xBD\x95
+<ZNAMENNY_NEUME_STOPITSA> \xF0\x9C\xBD\x96
+<ZNAMENNY_NEUME_STOPITSA_S_OCHKOM> \xF0\x9C\xBD\x97
+<ZNAMENNY_NEUME_PEREVODKA> \xF0\x9C\xBD\x98
+<ZNAMENNY_NEUME_PEREVODKA_NEPOSTOYANNAYA> \xF0\x9C\xBD\x99
+<ZNAMENNY_NEUME_STOPITSA_WITH_SOROCHYA_NOZHKA> \xF0\x9C\xBD\x9A
+<ZNAMENNY_NEUME_CHELYUSTKA> \xF0\x9C\xBD\x9B
+<ZNAMENNY_NEUME_PALKA> \xF0\x9C\xBD\x9C
+<ZNAMENNY_NEUME_ZAPYATAYA> \xF0\x9C\xBD\x9D
+<ZNAMENNY_NEUME_GOLUBCHIK_BORZY> \xF0\x9C\xBD\x9E
+<ZNAMENNY_NEUME_GOLUBCHIK_TIKHY> \xF0\x9C\xBD\x9F
+<ZNAMENNY_NEUME_GOLUBCHIK_MRACHNY> \xF0\x9C\xBD\xA0
+<ZNAMENNY_NEUME_GOLUBCHIK_SVETLY> \xF0\x9C\xBD\xA1
+<ZNAMENNY_NEUME_GOLUBCHIK_TRESVETLY> \xF0\x9C\xBD\xA2
+<ZNAMENNY_NEUME_VRAKHIYA_PROSTAYA> \xF0\x9C\xBD\xA3
+<ZNAMENNY_NEUME_VRAKHIYA_MRACHNAYA> \xF0\x9C\xBD\xA4
+<ZNAMENNY_NEUME_VRAKHIYA_SVETLAYA> \xF0\x9C\xBD\xA5
+<ZNAMENNY_NEUME_VRAKHIYA_TRESVETLAYA> \xF0\x9C\xBD\xA6
+<ZNAMENNY_NEUME_VRAKHIYA_KLYUCHEVAYA_PROSTAYA> \xF0\x9C\xBD\xA7
+<ZNAMENNY_NEUME_VRAKHIYA_KLYUCHEVAYA_MRACHNAYA> \xF0\x9C\xBD\xA8
+<ZNAMENNY_NEUME_VRAKHIYA_KLYUCHEVAYA_SVETLAYA> \xF0\x9C\xBD\xA9
+<ZNAMENNY_NEUME_VRAKHIYA_KLYUCHEVAYA_TRESVETLAYA> \xF0\x9C\xBD\xAA
+<ZNAMENNY_NEUME_DOUBLE_ZAPYATAYA> \xF0\x9C\xBD\xAB
+<ZNAMENNY_NEUME_REVERSED_CHELYUSTKA> \xF0\x9C\xBD\xAC
+<ZNAMENNY_NEUME_DERBITSA> \xF0\x9C\xBD\xAD
+<ZNAMENNY_NEUME_KHAMILO> \xF0\x9C\xBD\xAE
+<ZNAMENNY_NEUME_CHASHKA> \xF0\x9C\xBD\xAF
+<ZNAMENNY_NEUME_PODCHASHIE> \xF0\x9C\xBD\xB0
+<ZNAMENNY_NEUME_SKAMEYTSA_MRACHNAYA> \xF0\x9C\xBD\xB1
+<ZNAMENNY_NEUME_SKAMEYTSA_SVETLAYA> \xF0\x9C\xBD\xB2
+<ZNAMENNY_NEUME_SKAMEYTSA_TRESVETLAYA> \xF0\x9C\xBD\xB3
+<ZNAMENNY_NEUME_SKAMEYTSA_TIKHAYA> \xF0\x9C\xBD\xB4
+<ZNAMENNY_NEUME_DEMESTVENNY_KLYUCH> \xF0\x9C\xBD\xB5
+<ZNAMENNY_NEUME_SKAMEYTSA_KLYUCHEVAYA_SVETLAYA> \xF0\x9C\xBD\xB6
+<ZNAMENNY_NEUME_SKAMEYTSA_KLYUCHENEPOSTOYANNAYA> \xF0\x9C\xBD\xB7
+<ZNAMENNY_NEUME_SKAMEYTSA_KLYUCHEVAYA_TIKHAYA> \xF0\x9C\xBD\xB8
+<ZNAMENNY_NEUME_SKAMEYTSA_DVOECHELNAYA_PROSTAYA> \xF0\x9C\xBD\xB9
+<ZNAMENNY_NEUME_SKAMEYTSA_DVOECHELNAYA_SVETLAYA> \xF0\x9C\xBD\xBA
+<ZNAMENNY_NEUME_SKAMEYTSA_DVOECHELNAYA_NEPOSTOYANNAYA> \xF0\x9C\xBD\xBB
+<ZNAMENNY_NEUME_SKAMEYTSA_DVOECHELNAYA_KLYUCHEVAYA> \xF0\x9C\xBD\xBC
+<ZNAMENNY_NEUME_SLOZHITIE> \xF0\x9C\xBD\xBD
+<ZNAMENNY_NEUME_SLOZHITIE_S_ZAPYATOY> \xF0\x9C\xBD\xBE
+<ZNAMENNY_NEUME_SLOZHITIE_ZAKRYTOE> \xF0\x9C\xBD\xBF
+<ZNAMENNY_NEUME_SLOZHITIE_S_KRYZHEM> \xF0\x9C\xBE\x80
+<ZNAMENNY_NEUME_KRYZH> \xF0\x9C\xBE\x81
+<ZNAMENNY_NEUME_ROG> \xF0\x9C\xBE\x82
+<ZNAMENNY_NEUME_FITA> \xF0\x9C\xBE\x83
+<ZNAMENNY_NEUME_KOBYLA> \xF0\x9C\xBE\x84
+<ZNAMENNY_NEUME_ZMEYTSA> \xF0\x9C\xBE\x85
+<ZNAMENNY_NEUME_STATYA> \xF0\x9C\xBE\x86
+<ZNAMENNY_NEUME_STATYA_S_ZAPYATOY> \xF0\x9C\xBE\x87
+<ZNAMENNY_NEUME_STATYA_S_KRYZHEM> \xF0\x9C\xBE\x88
+<ZNAMENNY_NEUME_STATYA_S_ZAPYATOY_I_KRYZHEM> \xF0\x9C\xBE\x89
+<ZNAMENNY_NEUME_STATYA_S_KRYZHEM_I_ZAPYATOY> \xF0\x9C\xBE\x8A
+<ZNAMENNY_NEUME_STATYA_ZAKRYTAYA> \xF0\x9C\xBE\x8B
+<ZNAMENNY_NEUME_STATYA_ZAKRYTAYA_S_ZAPYATOY> \xF0\x9C\xBE\x8C
+<ZNAMENNY_NEUME_STATYA_S_ROGOM> \xF0\x9C\xBE\x8D
+<ZNAMENNY_NEUME_STATYA_S_DVUMYA_ZAPYATYMI> \xF0\x9C\xBE\x8E
+<ZNAMENNY_NEUME_STATYA_S_ZAPYATOY_I_PODCHASHIEM> \xF0\x9C\xBE\x8F
+<ZNAMENNY_NEUME_POLKULIZMY> \xF0\x9C\xBE\x90
+<ZNAMENNY_NEUME_STATYA_NEPOSTOYANNAYA> \xF0\x9C\xBE\x91
+<ZNAMENNY_NEUME_STRELA_PROSTAYA> \xF0\x9C\xBE\x92
+<ZNAMENNY_NEUME_STRELA_MRACHNOTIKHAYA> \xF0\x9C\xBE\x93
+<ZNAMENNY_NEUME_STRELA_KRYZHEVAYA> \xF0\x9C\xBE\x94
+<ZNAMENNY_NEUME_STRELA_POLUPOVODNAYA> \xF0\x9C\xBE\x95
+<ZNAMENNY_NEUME_STRELA_POVODNAYA> \xF0\x9C\xBE\x96
+<ZNAMENNY_NEUME_STRELA_NEPOSTOYANNAYA> \xF0\x9C\xBE\x97
+<ZNAMENNY_NEUME_STRELA_KLYUCHEPOVODNAYA> \xF0\x9C\xBE\x98
+<ZNAMENNY_NEUME_STRELA_KLYUCHENEPOSTOYANNAYA> \xF0\x9C\xBE\x99
+<ZNAMENNY_NEUME_STRELA_TIKHAYA_PUTNAYA> \xF0\x9C\xBE\x9A
+<ZNAMENNY_NEUME_STRELA_DVOECHELNAYA> \xF0\x9C\xBE\x9B
+<ZNAMENNY_NEUME_STRELA_DVOECHELNOKRYZHEVAYA> \xF0\x9C\xBE\x9C
+<ZNAMENNY_NEUME_STRELA_DVOECHELNOPOVODNAYA> \xF0\x9C\xBE\x9D
+<ZNAMENNY_NEUME_STRELA_DVOECHELNAYA_KLYUCHEVAYA> \xF0\x9C\xBE\x9E
+<ZNAMENNY_NEUME_STRELA_DVOECHELNOPOVODNAYA_KLYUCHEVAYA> \xF0\x9C\xBE\x9F
+<ZNAMENNY_NEUME_STRELA_GROMNAYA_WITH_SINGLE_ZAPYATAYA> \xF0\x9C\xBE\xA0
+<ZNAMENNY_NEUME_STRELA_GROMOPOVODNAYA_WITH_SINGLE_ZAPYATAYA> \xF0\x9C\xBE\xA1
+<ZNAMENNY_NEUME_STRELA_GROMNAYA> \xF0\x9C\xBE\xA2
+<ZNAMENNY_NEUME_STRELA_GROMOPOVODNAYA> \xF0\x9C\xBE\xA3
+<ZNAMENNY_NEUME_STRELA_GROMOPOVODNAYA_WITH_DOUBLE_ZAPYATAYA> \xF0\x9C\xBE\xA4
+<ZNAMENNY_NEUME_STRELA_GROMOKRYZHEVAYA> \xF0\x9C\xBE\xA5
+<ZNAMENNY_NEUME_STRELA_GROMOKRYZHEVAYA_POVODNAYA> \xF0\x9C\xBE\xA6
+<ZNAMENNY_NEUME_MECHIK> \xF0\x9C\xBE\xA7
+<ZNAMENNY_NEUME_MECHIK_POVODNY> \xF0\x9C\xBE\xA8
+<ZNAMENNY_NEUME_MECHIK_KLYUCHEVOY> \xF0\x9C\xBE\xA9
+<ZNAMENNY_NEUME_MECHIK_KLYUCHEPOVODNY> \xF0\x9C\xBE\xAA
+<ZNAMENNY_NEUME_MECHIK_KLYUCHENEPOSTOYANNY> \xF0\x9C\xBE\xAB
+<ZNAMENNY_NEUME_STRELA_TRYASOGLASNAYA> \xF0\x9C\xBE\xAC
+<ZNAMENNY_NEUME_STRELA_TRYASOPOVODNAYA> \xF0\x9C\xBE\xAD
+<ZNAMENNY_NEUME_STRELA_TRYASOSTRELNAYA> \xF0\x9C\xBE\xAE
+<ZNAMENNY_NEUME_OSOKA> \xF0\x9C\xBE\xAF
+<ZNAMENNY_NEUME_OSOKA_SVETLAYA> \xF0\x9C\xBE\xB0
+<ZNAMENNY_NEUME_OSOKA_TRESVETLAYA> \xF0\x9C\xBE\xB1
+<ZNAMENNY_NEUME_OSOKA_KRYUKOVAYA_SVETLAYA> \xF0\x9C\xBE\xB2
+<ZNAMENNY_NEUME_OSOKA_KLYUCHEVAYA_SVETLAYA> \xF0\x9C\xBE\xB3
+<ZNAMENNY_NEUME_OSOKA_KLYUCHEVAYA_NEPOSTOYANNAYA> \xF0\x9C\xBE\xB4
+<ZNAMENNY_NEUME_STRELA_KRYUKOVAYA> \xF0\x9C\xBE\xB5
+<ZNAMENNY_NEUME_STRELA_KRYUKOVAYA_POVODNAYA> \xF0\x9C\xBE\xB6
+<ZNAMENNY_NEUME_STRELA_KRYUKOVAYA_GROMNAYA_WITH_SINGLE_ZAPYATAYA> \xF0\x9C\xBE\xB7
+<ZNAMENNY_NEUME_STRELA_KRYUKOVAYA_GROMOPOVODNAYA_WITH_SINGLE_ZAPYATAYA> \xF0\x9C\xBE\xB8
+<ZNAMENNY_NEUME_STRELA_KRYUKOVAYA_GROMNAYA> \xF0\x9C\xBE\xB9
+<ZNAMENNY_NEUME_STRELA_KRYUKOVAYA_GROMOPOVODNAYA> \xF0\x9C\xBE\xBA
+<ZNAMENNY_NEUME_STRELA_KRYUKOVAYA_GROMOPOVODNAYA_WITH_DOUBLE_ZAPYATAYA> \xF0\x9C\xBE\xBB
+<ZNAMENNY_NEUME_STRELA_KRYUKOVAYA_GROMOKRYZHEVAYA> \xF0\x9C\xBE\xBC
+<ZNAMENNY_NEUME_STRELA_KRYUKOVAYA_GROMOKRYZHEVAYA_POVODNAYA> \xF0\x9C\xBE\xBD
+<ZNAMENNY_NEUME_STRELA_KRYUKOVAYA_TRYASKA> \xF0\x9C\xBE\xBE
+<ZNAMENNY_NEUME_KUFISMA> \xF0\x9C\xBE\xBF
+<ZNAMENNY_NEUME_OBLAKO> \xF0\x9C\xBF\x80
+<ZNAMENNY_NEUME_DUDA> \xF0\x9C\xBF\x81
+<ZNAMENNY_NEUME_NEMKA> \xF0\x9C\xBF\x82
+<ZNAMENNY_NEUME_PAUK> \xF0\x9C\xBF\x83
<BYZANTINE_MUSICAL_SYMBOL_PSILI> \xF0\x9D\x80\x80
<BYZANTINE_MUSICAL_SYMBOL_DASEIA> \xF0\x9D\x80\x81
<BYZANTINE_MUSICAL_SYMBOL_PERISPOMENI> \xF0\x9D\x80\x82
@@ -79241,6 +80061,8 @@ CHARMAP
<MUSICAL_SYMBOL_KIEVAN_EIGHTH_NOTE_STEM_DOWN> \xF0\x9D\x87\xA6
<MUSICAL_SYMBOL_KIEVAN_EIGHTH_NOTE_STEM_UP> \xF0\x9D\x87\xA7
<MUSICAL_SYMBOL_KIEVAN_FLAT_SIGN> \xF0\x9D\x87\xA8
+<MUSICAL_SYMBOL_SORI> \xF0\x9D\x87\xA9
+<MUSICAL_SYMBOL_KORON> \xF0\x9D\x87\xAA
<GREEK_VOCAL_NOTATION_SYMBOL-1> \xF0\x9D\x88\x80
<GREEK_VOCAL_NOTATION_SYMBOL-2> \xF0\x9D\x88\x81
<GREEK_VOCAL_NOTATION_SYMBOL-3> \xF0\x9D\x88\x82
@@ -79311,6 +80133,26 @@ CHARMAP
<COMBINING_GREEK_MUSICAL_TETRASEME> \xF0\x9D\x89\x83
<COMBINING_GREEK_MUSICAL_PENTASEME> \xF0\x9D\x89\x84
<GREEK_MUSICAL_LEIMMA> \xF0\x9D\x89\x85
+<KAKTOVIK_NUMERAL_ZERO> \xF0\x9D\x8B\x80
+<KAKTOVIK_NUMERAL_ONE> \xF0\x9D\x8B\x81
+<KAKTOVIK_NUMERAL_TWO> \xF0\x9D\x8B\x82
+<KAKTOVIK_NUMERAL_THREE> \xF0\x9D\x8B\x83
+<KAKTOVIK_NUMERAL_FOUR> \xF0\x9D\x8B\x84
+<KAKTOVIK_NUMERAL_FIVE> \xF0\x9D\x8B\x85
+<KAKTOVIK_NUMERAL_SIX> \xF0\x9D\x8B\x86
+<KAKTOVIK_NUMERAL_SEVEN> \xF0\x9D\x8B\x87
+<KAKTOVIK_NUMERAL_EIGHT> \xF0\x9D\x8B\x88
+<KAKTOVIK_NUMERAL_NINE> \xF0\x9D\x8B\x89
+<KAKTOVIK_NUMERAL_TEN> \xF0\x9D\x8B\x8A
+<KAKTOVIK_NUMERAL_ELEVEN> \xF0\x9D\x8B\x8B
+<KAKTOVIK_NUMERAL_TWELVE> \xF0\x9D\x8B\x8C
+<KAKTOVIK_NUMERAL_THIRTEEN> \xF0\x9D\x8B\x8D
+<KAKTOVIK_NUMERAL_FOURTEEN> \xF0\x9D\x8B\x8E
+<KAKTOVIK_NUMERAL_FIFTEEN> \xF0\x9D\x8B\x8F
+<KAKTOVIK_NUMERAL_SIXTEEN> \xF0\x9D\x8B\x90
+<KAKTOVIK_NUMERAL_SEVENTEEN> \xF0\x9D\x8B\x91
+<KAKTOVIK_NUMERAL_EIGHTEEN> \xF0\x9D\x8B\x92
+<KAKTOVIK_NUMERAL_NINETEEN> \xF0\x9D\x8B\x93
<MAYAN_NUMERAL_ZERO> \xF0\x9D\x8B\xA0
<MAYAN_NUMERAL_ONE> \xF0\x9D\x8B\xA1
<MAYAN_NUMERAL_TWO> \xF0\x9D\x8B\xA2
@@ -81111,6 +81953,43 @@ CHARMAP
<SIGNWRITING_ROTATION_MODIFIER-14> \xF0\x9D\xAA\xAD
<SIGNWRITING_ROTATION_MODIFIER-15> \xF0\x9D\xAA\xAE
<SIGNWRITING_ROTATION_MODIFIER-16> \xF0\x9D\xAA\xAF
+<LATIN_SMALL_LETTER_FENG_DIGRAPH_WITH_TRILL> \xF0\x9D\xBC\x80
+<LATIN_SMALL_LETTER_REVERSED_SCRIPT_G> \xF0\x9D\xBC\x81
+<LATIN_LETTER_SMALL_CAPITAL_TURNED_G> \xF0\x9D\xBC\x82
+<LATIN_SMALL_LETTER_REVERSED_K> \xF0\x9D\xBC\x83
+<LATIN_LETTER_SMALL_CAPITAL_L_WITH_BELT> \xF0\x9D\xBC\x84
+<LATIN_SMALL_LETTER_LEZH_WITH_RETROFLEX_HOOK> \xF0\x9D\xBC\x85
+<LATIN_SMALL_LETTER_TURNED_Y_WITH_BELT> \xF0\x9D\xBC\x86
+<LATIN_SMALL_LETTER_REVERSED_ENG> \xF0\x9D\xBC\x87
+<LATIN_SMALL_LETTER_TURNED_R_WITH_LONG_LEG_AND_RETROFLEX_HOOK> \xF0\x9D\xBC\x88
+<LATIN_SMALL_LETTER_T_WITH_HOOK_AND_RETROFLEX_HOOK> \xF0\x9D\xBC\x89
+<LATIN_LETTER_RETROFLEX_CLICK_WITH_RETROFLEX_HOOK> \xF0\x9D\xBC\x8A
+<LATIN_SMALL_LETTER_ESH_WITH_DOUBLE_BAR> \xF0\x9D\xBC\x8B
+<LATIN_SMALL_LETTER_ESH_WITH_DOUBLE_BAR_AND_CURL> \xF0\x9D\xBC\x8C
+<LATIN_SMALL_LETTER_TURNED_T_WITH_CURL> \xF0\x9D\xBC\x8D
+<LATIN_LETTER_INVERTED_GLOTTAL_STOP_WITH_CURL> \xF0\x9D\xBC\x8E
+<LATIN_LETTER_STRETCHED_C_WITH_CURL> \xF0\x9D\xBC\x8F
+<LATIN_LETTER_SMALL_CAPITAL_TURNED_K> \xF0\x9D\xBC\x90
+<LATIN_SMALL_LETTER_L_WITH_FISHHOOK> \xF0\x9D\xBC\x91
+<LATIN_SMALL_LETTER_DEZH_DIGRAPH_WITH_PALATAL_HOOK> \xF0\x9D\xBC\x92
+<LATIN_SMALL_LETTER_L_WITH_BELT_AND_PALATAL_HOOK> \xF0\x9D\xBC\x93
+<LATIN_SMALL_LETTER_ENG_WITH_PALATAL_HOOK> \xF0\x9D\xBC\x94
+<LATIN_SMALL_LETTER_TURNED_R_WITH_PALATAL_HOOK> \xF0\x9D\xBC\x95
+<LATIN_SMALL_LETTER_R_WITH_FISHHOOK_AND_PALATAL_HOOK> \xF0\x9D\xBC\x96
+<LATIN_SMALL_LETTER_TESH_DIGRAPH_WITH_PALATAL_HOOK> \xF0\x9D\xBC\x97
+<LATIN_SMALL_LETTER_EZH_WITH_PALATAL_HOOK> \xF0\x9D\xBC\x98
+<LATIN_SMALL_LETTER_DEZH_DIGRAPH_WITH_RETROFLEX_HOOK> \xF0\x9D\xBC\x99
+<LATIN_SMALL_LETTER_I_WITH_STROKE_AND_RETROFLEX_HOOK> \xF0\x9D\xBC\x9A
+<LATIN_SMALL_LETTER_O_WITH_RETROFLEX_HOOK> \xF0\x9D\xBC\x9B
+<LATIN_SMALL_LETTER_TESH_DIGRAPH_WITH_RETROFLEX_HOOK> \xF0\x9D\xBC\x9C
+<LATIN_SMALL_LETTER_C_WITH_RETROFLEX_HOOK> \xF0\x9D\xBC\x9D
+<LATIN_SMALL_LETTER_S_WITH_CURL> \xF0\x9D\xBC\x9E
+<LATIN_SMALL_LETTER_D_WITH_MID-HEIGHT_LEFT_HOOK> \xF0\x9D\xBC\xA5
+<LATIN_SMALL_LETTER_L_WITH_MID-HEIGHT_LEFT_HOOK> \xF0\x9D\xBC\xA6
+<LATIN_SMALL_LETTER_N_WITH_MID-HEIGHT_LEFT_HOOK> \xF0\x9D\xBC\xA7
+<LATIN_SMALL_LETTER_R_WITH_MID-HEIGHT_LEFT_HOOK> \xF0\x9D\xBC\xA8
+<LATIN_SMALL_LETTER_S_WITH_MID-HEIGHT_LEFT_HOOK> \xF0\x9D\xBC\xA9
+<LATIN_SMALL_LETTER_T_WITH_MID-HEIGHT_LEFT_HOOK> \xF0\x9D\xBC\xAA
<COMBINING_GLAGOLITIC_LETTER_AZU> \xF0\x9E\x80\x80
<COMBINING_GLAGOLITIC_LETTER_BUKY> \xF0\x9E\x80\x81
<COMBINING_GLAGOLITIC_LETTER_VEDE> \xF0\x9E\x80\x82
@@ -81149,6 +82028,69 @@ CHARMAP
<COMBINING_GLAGOLITIC_LETTER_BIG_YUS> \xF0\x9E\x80\xA8
<COMBINING_GLAGOLITIC_LETTER_IOTATED_BIG_YUS> \xF0\x9E\x80\xA9
<COMBINING_GLAGOLITIC_LETTER_FITA> \xF0\x9E\x80\xAA
+<MODIFIER_LETTER_CYRILLIC_SMALL_A> \xF0\x9E\x80\xB0
+<MODIFIER_LETTER_CYRILLIC_SMALL_BE> \xF0\x9E\x80\xB1
+<MODIFIER_LETTER_CYRILLIC_SMALL_VE> \xF0\x9E\x80\xB2
+<MODIFIER_LETTER_CYRILLIC_SMALL_GHE> \xF0\x9E\x80\xB3
+<MODIFIER_LETTER_CYRILLIC_SMALL_DE> \xF0\x9E\x80\xB4
+<MODIFIER_LETTER_CYRILLIC_SMALL_IE> \xF0\x9E\x80\xB5
+<MODIFIER_LETTER_CYRILLIC_SMALL_ZHE> \xF0\x9E\x80\xB6
+<MODIFIER_LETTER_CYRILLIC_SMALL_ZE> \xF0\x9E\x80\xB7
+<MODIFIER_LETTER_CYRILLIC_SMALL_I> \xF0\x9E\x80\xB8
+<MODIFIER_LETTER_CYRILLIC_SMALL_KA> \xF0\x9E\x80\xB9
+<MODIFIER_LETTER_CYRILLIC_SMALL_EL> \xF0\x9E\x80\xBA
+<MODIFIER_LETTER_CYRILLIC_SMALL_EM> \xF0\x9E\x80\xBB
+<MODIFIER_LETTER_CYRILLIC_SMALL_O> \xF0\x9E\x80\xBC
+<MODIFIER_LETTER_CYRILLIC_SMALL_PE> \xF0\x9E\x80\xBD
+<MODIFIER_LETTER_CYRILLIC_SMALL_ER> \xF0\x9E\x80\xBE
+<MODIFIER_LETTER_CYRILLIC_SMALL_ES> \xF0\x9E\x80\xBF
+<MODIFIER_LETTER_CYRILLIC_SMALL_TE> \xF0\x9E\x81\x80
+<MODIFIER_LETTER_CYRILLIC_SMALL_U> \xF0\x9E\x81\x81
+<MODIFIER_LETTER_CYRILLIC_SMALL_EF> \xF0\x9E\x81\x82
+<MODIFIER_LETTER_CYRILLIC_SMALL_HA> \xF0\x9E\x81\x83
+<MODIFIER_LETTER_CYRILLIC_SMALL_TSE> \xF0\x9E\x81\x84
+<MODIFIER_LETTER_CYRILLIC_SMALL_CHE> \xF0\x9E\x81\x85
+<MODIFIER_LETTER_CYRILLIC_SMALL_SHA> \xF0\x9E\x81\x86
+<MODIFIER_LETTER_CYRILLIC_SMALL_YERU> \xF0\x9E\x81\x87
+<MODIFIER_LETTER_CYRILLIC_SMALL_E> \xF0\x9E\x81\x88
+<MODIFIER_LETTER_CYRILLIC_SMALL_YU> \xF0\x9E\x81\x89
+<MODIFIER_LETTER_CYRILLIC_SMALL_DZZE> \xF0\x9E\x81\x8A
+<MODIFIER_LETTER_CYRILLIC_SMALL_SCHWA> \xF0\x9E\x81\x8B
+<MODIFIER_LETTER_CYRILLIC_SMALL_BYELORUSSIAN-UKRAINIAN_I> \xF0\x9E\x81\x8C
+<MODIFIER_LETTER_CYRILLIC_SMALL_JE> \xF0\x9E\x81\x8D
+<MODIFIER_LETTER_CYRILLIC_SMALL_BARRED_O> \xF0\x9E\x81\x8E
+<MODIFIER_LETTER_CYRILLIC_SMALL_STRAIGHT_U> \xF0\x9E\x81\x8F
+<MODIFIER_LETTER_CYRILLIC_SMALL_PALOCHKA> \xF0\x9E\x81\x90
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_A> \xF0\x9E\x81\x91
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_BE> \xF0\x9E\x81\x92
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_VE> \xF0\x9E\x81\x93
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_GHE> \xF0\x9E\x81\x94
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_DE> \xF0\x9E\x81\x95
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_IE> \xF0\x9E\x81\x96
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_ZHE> \xF0\x9E\x81\x97
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_ZE> \xF0\x9E\x81\x98
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_I> \xF0\x9E\x81\x99
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_KA> \xF0\x9E\x81\x9A
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_EL> \xF0\x9E\x81\x9B
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_O> \xF0\x9E\x81\x9C
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_PE> \xF0\x9E\x81\x9D
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_ES> \xF0\x9E\x81\x9E
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_U> \xF0\x9E\x81\x9F
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_EF> \xF0\x9E\x81\xA0
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_HA> \xF0\x9E\x81\xA1
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_TSE> \xF0\x9E\x81\xA2
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_CHE> \xF0\x9E\x81\xA3
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_SHA> \xF0\x9E\x81\xA4
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_HARD_SIGN> \xF0\x9E\x81\xA5
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_YERU> \xF0\x9E\x81\xA6
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_GHE_WITH_UPTURN> \xF0\x9E\x81\xA7
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_BYELORUSSIAN-UKRAINIAN_I> \xF0\x9E\x81\xA8
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_DZE> \xF0\x9E\x81\xA9
+<CYRILLIC_SUBSCRIPT_SMALL_LETTER_DZHE> \xF0\x9E\x81\xAA
+<MODIFIER_LETTER_CYRILLIC_SMALL_ES_WITH_DESCENDER> \xF0\x9E\x81\xAB
+<MODIFIER_LETTER_CYRILLIC_SMALL_YERU_WITH_BACK_YER> \xF0\x9E\x81\xAC
+<MODIFIER_LETTER_CYRILLIC_SMALL_STRAIGHT_U_WITH_STROKE> \xF0\x9E\x81\xAD
+<COMBINING_CYRILLIC_SMALL_LETTER_BYELORUSSIAN-UKRAINIAN_I> \xF0\x9E\x82\x8F
<NYIAKENG_PUACHUE_HMONG_LETTER_MA> \xF0\x9E\x84\x80
<NYIAKENG_PUACHUE_HMONG_LETTER_TSA> \xF0\x9E\x84\x81
<NYIAKENG_PUACHUE_HMONG_LETTER_NTA> \xF0\x9E\x84\x82
@@ -81220,6 +82162,37 @@ CHARMAP
<NYIAKENG_PUACHUE_HMONG_DIGIT_NINE> \xF0\x9E\x85\x89
<NYIAKENG_PUACHUE_HMONG_LOGOGRAM_NYAJ> \xF0\x9E\x85\x8E
<NYIAKENG_PUACHUE_HMONG_CIRCLED_CA> \xF0\x9E\x85\x8F
+<TOTO_LETTER_PA> \xF0\x9E\x8A\x90
+<TOTO_LETTER_BA> \xF0\x9E\x8A\x91
+<TOTO_LETTER_TA> \xF0\x9E\x8A\x92
+<TOTO_LETTER_DA> \xF0\x9E\x8A\x93
+<TOTO_LETTER_KA> \xF0\x9E\x8A\x94
+<TOTO_LETTER_GA> \xF0\x9E\x8A\x95
+<TOTO_LETTER_MA> \xF0\x9E\x8A\x96
+<TOTO_LETTER_NA> \xF0\x9E\x8A\x97
+<TOTO_LETTER_NGA> \xF0\x9E\x8A\x98
+<TOTO_LETTER_SA> \xF0\x9E\x8A\x99
+<TOTO_LETTER_CHA> \xF0\x9E\x8A\x9A
+<TOTO_LETTER_YA> \xF0\x9E\x8A\x9B
+<TOTO_LETTER_WA> \xF0\x9E\x8A\x9C
+<TOTO_LETTER_JA> \xF0\x9E\x8A\x9D
+<TOTO_LETTER_HA> \xF0\x9E\x8A\x9E
+<TOTO_LETTER_RA> \xF0\x9E\x8A\x9F
+<TOTO_LETTER_LA> \xF0\x9E\x8A\xA0
+<TOTO_LETTER_I> \xF0\x9E\x8A\xA1
+<TOTO_LETTER_BREATHY_I> \xF0\x9E\x8A\xA2
+<TOTO_LETTER_IU> \xF0\x9E\x8A\xA3
+<TOTO_LETTER_BREATHY_IU> \xF0\x9E\x8A\xA4
+<TOTO_LETTER_U> \xF0\x9E\x8A\xA5
+<TOTO_LETTER_E> \xF0\x9E\x8A\xA6
+<TOTO_LETTER_BREATHY_E> \xF0\x9E\x8A\xA7
+<TOTO_LETTER_EO> \xF0\x9E\x8A\xA8
+<TOTO_LETTER_BREATHY_EO> \xF0\x9E\x8A\xA9
+<TOTO_LETTER_O> \xF0\x9E\x8A\xAA
+<TOTO_LETTER_AE> \xF0\x9E\x8A\xAB
+<TOTO_LETTER_BREATHY_AE> \xF0\x9E\x8A\xAC
+<TOTO_LETTER_A> \xF0\x9E\x8A\xAD
+<TOTO_SIGN_RISING_TONE> \xF0\x9E\x8A\xAE
<WANCHO_LETTER_AA> \xF0\x9E\x8B\x80
<WANCHO_LETTER_A> \xF0\x9E\x8B\x81
<WANCHO_LETTER_BA> \xF0\x9E\x8B\x82
@@ -81279,6 +82252,76 @@ CHARMAP
<WANCHO_DIGIT_EIGHT> \xF0\x9E\x8B\xB8
<WANCHO_DIGIT_NINE> \xF0\x9E\x8B\xB9
<WANCHO_NGUN_SIGN> \xF0\x9E\x8B\xBF
+<NAG_MUNDARI_LETTER_O> \xF0\x9E\x93\x90
+<NAG_MUNDARI_LETTER_OP> \xF0\x9E\x93\x91
+<NAG_MUNDARI_LETTER_OL> \xF0\x9E\x93\x92
+<NAG_MUNDARI_LETTER_OY> \xF0\x9E\x93\x93
+<NAG_MUNDARI_LETTER_ONG> \xF0\x9E\x93\x94
+<NAG_MUNDARI_LETTER_A> \xF0\x9E\x93\x95
+<NAG_MUNDARI_LETTER_AJ> \xF0\x9E\x93\x96
+<NAG_MUNDARI_LETTER_AB> \xF0\x9E\x93\x97
+<NAG_MUNDARI_LETTER_ANY> \xF0\x9E\x93\x98
+<NAG_MUNDARI_LETTER_AH> \xF0\x9E\x93\x99
+<NAG_MUNDARI_LETTER_I> \xF0\x9E\x93\x9A
+<NAG_MUNDARI_LETTER_IS> \xF0\x9E\x93\x9B
+<NAG_MUNDARI_LETTER_IDD> \xF0\x9E\x93\x9C
+<NAG_MUNDARI_LETTER_IT> \xF0\x9E\x93\x9D
+<NAG_MUNDARI_LETTER_IH> \xF0\x9E\x93\x9E
+<NAG_MUNDARI_LETTER_U> \xF0\x9E\x93\x9F
+<NAG_MUNDARI_LETTER_UC> \xF0\x9E\x93\xA0
+<NAG_MUNDARI_LETTER_UD> \xF0\x9E\x93\xA1
+<NAG_MUNDARI_LETTER_UK> \xF0\x9E\x93\xA2
+<NAG_MUNDARI_LETTER_UR> \xF0\x9E\x93\xA3
+<NAG_MUNDARI_LETTER_E> \xF0\x9E\x93\xA4
+<NAG_MUNDARI_LETTER_ENN> \xF0\x9E\x93\xA5
+<NAG_MUNDARI_LETTER_EG> \xF0\x9E\x93\xA6
+<NAG_MUNDARI_LETTER_EM> \xF0\x9E\x93\xA7
+<NAG_MUNDARI_LETTER_EN> \xF0\x9E\x93\xA8
+<NAG_MUNDARI_LETTER_ETT> \xF0\x9E\x93\xA9
+<NAG_MUNDARI_LETTER_ELL> \xF0\x9E\x93\xAA
+<NAG_MUNDARI_SIGN_OJOD> \xF0\x9E\x93\xAB
+<NAG_MUNDARI_SIGN_MUHOR> \xF0\x9E\x93\xAC
+<NAG_MUNDARI_SIGN_TOYOR> \xF0\x9E\x93\xAD
+<NAG_MUNDARI_SIGN_IKIR> \xF0\x9E\x93\xAE
+<NAG_MUNDARI_SIGN_SUTUH> \xF0\x9E\x93\xAF
+<NAG_MUNDARI_DIGIT_ZERO> \xF0\x9E\x93\xB0
+<NAG_MUNDARI_DIGIT_ONE> \xF0\x9E\x93\xB1
+<NAG_MUNDARI_DIGIT_TWO> \xF0\x9E\x93\xB2
+<NAG_MUNDARI_DIGIT_THREE> \xF0\x9E\x93\xB3
+<NAG_MUNDARI_DIGIT_FOUR> \xF0\x9E\x93\xB4
+<NAG_MUNDARI_DIGIT_FIVE> \xF0\x9E\x93\xB5
+<NAG_MUNDARI_DIGIT_SIX> \xF0\x9E\x93\xB6
+<NAG_MUNDARI_DIGIT_SEVEN> \xF0\x9E\x93\xB7
+<NAG_MUNDARI_DIGIT_EIGHT> \xF0\x9E\x93\xB8
+<NAG_MUNDARI_DIGIT_NINE> \xF0\x9E\x93\xB9
+<ETHIOPIC_SYLLABLE_HHYA> \xF0\x9E\x9F\xA0
+<ETHIOPIC_SYLLABLE_HHYU> \xF0\x9E\x9F\xA1
+<ETHIOPIC_SYLLABLE_HHYI> \xF0\x9E\x9F\xA2
+<ETHIOPIC_SYLLABLE_HHYAA> \xF0\x9E\x9F\xA3
+<ETHIOPIC_SYLLABLE_HHYEE> \xF0\x9E\x9F\xA4
+<ETHIOPIC_SYLLABLE_HHYE> \xF0\x9E\x9F\xA5
+<ETHIOPIC_SYLLABLE_HHYO> \xF0\x9E\x9F\xA6
+<ETHIOPIC_SYLLABLE_GURAGE_HHWA> \xF0\x9E\x9F\xA8
+<ETHIOPIC_SYLLABLE_HHWI> \xF0\x9E\x9F\xA9
+<ETHIOPIC_SYLLABLE_HHWEE> \xF0\x9E\x9F\xAA
+<ETHIOPIC_SYLLABLE_HHWE> \xF0\x9E\x9F\xAB
+<ETHIOPIC_SYLLABLE_GURAGE_MWI> \xF0\x9E\x9F\xAD
+<ETHIOPIC_SYLLABLE_GURAGE_MWEE> \xF0\x9E\x9F\xAE
+<ETHIOPIC_SYLLABLE_GURAGE_QWI> \xF0\x9E\x9F\xB0
+<ETHIOPIC_SYLLABLE_GURAGE_QWEE> \xF0\x9E\x9F\xB1
+<ETHIOPIC_SYLLABLE_GURAGE_QWE> \xF0\x9E\x9F\xB2
+<ETHIOPIC_SYLLABLE_GURAGE_BWI> \xF0\x9E\x9F\xB3
+<ETHIOPIC_SYLLABLE_GURAGE_BWEE> \xF0\x9E\x9F\xB4
+<ETHIOPIC_SYLLABLE_GURAGE_KWI> \xF0\x9E\x9F\xB5
+<ETHIOPIC_SYLLABLE_GURAGE_KWEE> \xF0\x9E\x9F\xB6
+<ETHIOPIC_SYLLABLE_GURAGE_KWE> \xF0\x9E\x9F\xB7
+<ETHIOPIC_SYLLABLE_GURAGE_GWI> \xF0\x9E\x9F\xB8
+<ETHIOPIC_SYLLABLE_GURAGE_GWEE> \xF0\x9E\x9F\xB9
+<ETHIOPIC_SYLLABLE_GURAGE_GWE> \xF0\x9E\x9F\xBA
+<ETHIOPIC_SYLLABLE_GURAGE_FWI> \xF0\x9E\x9F\xBB
+<ETHIOPIC_SYLLABLE_GURAGE_FWEE> \xF0\x9E\x9F\xBC
+<ETHIOPIC_SYLLABLE_GURAGE_PWI> \xF0\x9E\x9F\xBD
+<ETHIOPIC_SYLLABLE_GURAGE_PWEE> \xF0\x9E\x9F\xBE
<MENDE_KIKAKUI_SYLLABLE_M001_KI> \xF0\x9E\xA0\x80
<MENDE_KIKAKUI_SYLLABLE_M002_KA> \xF0\x9E\xA0\x81
<MENDE_KIKAKUI_SYLLABLE_M003_KU> \xF0\x9E\xA0\x82
@@ -83326,6 +84369,10 @@ CHARMAP
<HINDU_TEMPLE> \xF0\x9F\x9B\x95
<HUT> \xF0\x9F\x9B\x96
<ELEVATOR> \xF0\x9F\x9B\x97
+<WIRELESS> \xF0\x9F\x9B\x9C
+<PLAYGROUND_SLIDE> \xF0\x9F\x9B\x9D
+<WHEEL> \xF0\x9F\x9B\x9E
+<RING_BUOY> \xF0\x9F\x9B\x9F
<HAMMER_AND_WRENCH> \xF0\x9F\x9B\xA0
<SHIELD> \xF0\x9F\x9B\xA1
<OIL_DRUM> \xF0\x9F\x9B\xA2
@@ -83468,6 +84515,14 @@ CHARMAP
<ALCHEMICAL_SYMBOL_FOR_MONTH> \xF0\x9F\x9D\xB1
<ALCHEMICAL_SYMBOL_FOR_HALF_DRAM> \xF0\x9F\x9D\xB2
<ALCHEMICAL_SYMBOL_FOR_HALF_OUNCE> \xF0\x9F\x9D\xB3
+<LOT_OF_FORTUNE> \xF0\x9F\x9D\xB4
+<OCCULTATION> \xF0\x9F\x9D\xB5
+<LUNAR_ECLIPSE> \xF0\x9F\x9D\xB6
+<HAUMEA> \xF0\x9F\x9D\xBB
+<MAKEMAKE> \xF0\x9F\x9D\xBC
+<GONGGONG> \xF0\x9F\x9D\xBD
+<QUAOAR> \xF0\x9F\x9D\xBE
+<ORCUS> \xF0\x9F\x9D\xBF
<BLACK_LEFT-POINTING_ISOSCELES_RIGHT_TRIANGLE> \xF0\x9F\x9E\x80
<BLACK_UP-POINTING_ISOSCELES_RIGHT_TRIANGLE> \xF0\x9F\x9E\x81
<BLACK_RIGHT-POINTING_ISOSCELES_RIGHT_TRIANGLE> \xF0\x9F\x9E\x82
@@ -83557,6 +84612,7 @@ CHARMAP
<NEGATIVE_CIRCLED_TRIANGLE> \xF0\x9F\x9F\x96
<CIRCLED_SQUARE> \xF0\x9F\x9F\x97
<NEGATIVE_CIRCLED_SQUARE> \xF0\x9F\x9F\x98
+<NINE_POINTED_WHITE_STAR> \xF0\x9F\x9F\x99
<LARGE_ORANGE_CIRCLE> \xF0\x9F\x9F\xA0
<LARGE_YELLOW_CIRCLE> \xF0\x9F\x9F\xA1
<LARGE_GREEN_CIRCLE> \xF0\x9F\x9F\xA2
@@ -83569,6 +84625,7 @@ CHARMAP
<LARGE_GREEN_SQUARE> \xF0\x9F\x9F\xA9
<LARGE_PURPLE_SQUARE> \xF0\x9F\x9F\xAA
<LARGE_BROWN_SQUARE> \xF0\x9F\x9F\xAB
+<HEAVY_EQUALS_SIGN> \xF0\x9F\x9F\xB0
<LEFTWARDS_ARROW_WITH_SMALL_TRIANGLE_ARROWHEAD> \xF0\x9F\xA0\x80
<UPWARDS_ARROW_WITH_SMALL_TRIANGLE_ARROWHEAD> \xF0\x9F\xA0\x81
<RIGHTWARDS_ARROW_WITH_SMALL_TRIANGLE_ARROWHEAD> \xF0\x9F\xA0\x82
@@ -83840,6 +84897,7 @@ CHARMAP
<FREEZING_FACE> \xF0\x9F\xA5\xB6
<NINJA> \xF0\x9F\xA5\xB7
<DISGUISED_FACE> \xF0\x9F\xA5\xB8
+<FACE_HOLDING_BACK_TEARS> \xF0\x9F\xA5\xB9
<FACE_WITH_PLEADING_EYES> \xF0\x9F\xA5\xBA
<SARI> \xF0\x9F\xA5\xBB
<LAB_COAT> \xF0\x9F\xA5\xBC
@@ -83922,6 +84980,7 @@ CHARMAP
<MATE_DRINK> \xF0\x9F\xA7\x89
<ICE_CUBE> \xF0\x9F\xA7\x8A
<BUBBLE_TEA> \xF0\x9F\xA7\x8B
+<TROLL> \xF0\x9F\xA7\x8C
<STANDING_PERSON> \xF0\x9F\xA7\x8D
<KNEELING_PERSON> \xF0\x9F\xA7\x8E
<DEAF_PERSON> \xF0\x9F\xA7\x8F
@@ -84076,9 +85135,14 @@ CHARMAP
<BRIEFS> \xF0\x9F\xA9\xB2
<SHORTS> \xF0\x9F\xA9\xB3
<THONG_SANDAL> \xF0\x9F\xA9\xB4
+<LIGHT_BLUE_HEART> \xF0\x9F\xA9\xB5
+<GREY_HEART> \xF0\x9F\xA9\xB6
+<PINK_HEART> \xF0\x9F\xA9\xB7
<DROP_OF_BLOOD> \xF0\x9F\xA9\xB8
<ADHESIVE_BANDAGE> \xF0\x9F\xA9\xB9
<STETHOSCOPE> \xF0\x9F\xA9\xBA
+<X-RAY> \xF0\x9F\xA9\xBB
+<CRUTCH> \xF0\x9F\xA9\xBC
<YO-YO> \xF0\x9F\xAA\x80
<KITE> \xF0\x9F\xAA\x81
<PARACHUTE> \xF0\x9F\xAA\x82
@@ -84086,6 +85150,8 @@ CHARMAP
<MAGIC_WAND> \xF0\x9F\xAA\x84
<PINATA> \xF0\x9F\xAA\x85
<NESTING_DOLLS> \xF0\x9F\xAA\x86
+<MARACAS> \xF0\x9F\xAA\x87
+<FLUTE> \xF0\x9F\xAA\x88
<RINGED_PLANET> \xF0\x9F\xAA\x90
<CHAIR> \xF0\x9F\xAA\x91
<RAZOR> \xF0\x9F\xAA\x92
@@ -84111,6 +85177,13 @@ CHARMAP
<HEADSTONE> \xF0\x9F\xAA\xA6
<PLACARD> \xF0\x9F\xAA\xA7
<ROCK> \xF0\x9F\xAA\xA8
+<MIRROR_BALL> \xF0\x9F\xAA\xA9
+<IDENTIFICATION_CARD> \xF0\x9F\xAA\xAA
+<LOW_BATTERY> \xF0\x9F\xAA\xAB
+<HAMSA> \xF0\x9F\xAA\xAC
+<FOLDING_HAND_FAN> \xF0\x9F\xAA\xAD
+<HAIR_PICK> \xF0\x9F\xAA\xAE
+<KHANDA> \xF0\x9F\xAA\xAF
<FLY> \xF0\x9F\xAA\xB0
<WORM> \xF0\x9F\xAA\xB1
<BEETLE> \xF0\x9F\xAA\xB2
@@ -84118,9 +85191,22 @@ CHARMAP
<POTTED_PLANT> \xF0\x9F\xAA\xB4
<WOOD> \xF0\x9F\xAA\xB5
<FEATHER> \xF0\x9F\xAA\xB6
+<LOTUS> \xF0\x9F\xAA\xB7
+<CORAL> \xF0\x9F\xAA\xB8
+<EMPTY_NEST> \xF0\x9F\xAA\xB9
+<NEST_WITH_EGGS> \xF0\x9F\xAA\xBA
+<HYACINTH> \xF0\x9F\xAA\xBB
+<JELLYFISH> \xF0\x9F\xAA\xBC
+<WING> \xF0\x9F\xAA\xBD
+<GOOSE> \xF0\x9F\xAA\xBF
<ANATOMICAL_HEART> \xF0\x9F\xAB\x80
<LUNGS> \xF0\x9F\xAB\x81
<PEOPLE_HUGGING> \xF0\x9F\xAB\x82
+<PREGNANT_MAN> \xF0\x9F\xAB\x83
+<PREGNANT_PERSON> \xF0\x9F\xAB\x84
+<PERSON_WITH_CROWN> \xF0\x9F\xAB\x85
+<MOOSE> \xF0\x9F\xAB\x8E
+<DONKEY> \xF0\x9F\xAB\x8F
<BLUEBERRIES> \xF0\x9F\xAB\x90
<BELL_PEPPER> \xF0\x9F\xAB\x91
<OLIVE> \xF0\x9F\xAB\x92
@@ -84128,6 +85214,29 @@ CHARMAP
<TAMALE> \xF0\x9F\xAB\x94
<FONDUE> \xF0\x9F\xAB\x95
<TEAPOT> \xF0\x9F\xAB\x96
+<POURING_LIQUID> \xF0\x9F\xAB\x97
+<BEANS> \xF0\x9F\xAB\x98
+<JAR> \xF0\x9F\xAB\x99
+<GINGER_ROOT> \xF0\x9F\xAB\x9A
+<PEA_POD> \xF0\x9F\xAB\x9B
+<MELTING_FACE> \xF0\x9F\xAB\xA0
+<SALUTING_FACE> \xF0\x9F\xAB\xA1
+<FACE_WITH_OPEN_EYES_AND_HAND_OVER_MOUTH> \xF0\x9F\xAB\xA2
+<FACE_WITH_PEEKING_EYE> \xF0\x9F\xAB\xA3
+<FACE_WITH_DIAGONAL_MOUTH> \xF0\x9F\xAB\xA4
+<DOTTED_LINE_FACE> \xF0\x9F\xAB\xA5
+<BITING_LIP> \xF0\x9F\xAB\xA6
+<BUBBLES> \xF0\x9F\xAB\xA7
+<SHAKING_FACE> \xF0\x9F\xAB\xA8
+<HAND_WITH_INDEX_FINGER_AND_THUMB_CROSSED> \xF0\x9F\xAB\xB0
+<RIGHTWARDS_HAND> \xF0\x9F\xAB\xB1
+<LEFTWARDS_HAND> \xF0\x9F\xAB\xB2
+<PALM_DOWN_HAND> \xF0\x9F\xAB\xB3
+<PALM_UP_HAND> \xF0\x9F\xAB\xB4
+<INDEX_POINTING_AT_THE_VIEWER> \xF0\x9F\xAB\xB5
+<HEART_HANDS> \xF0\x9F\xAB\xB6
+<LEFTWARDS_PUSHING_HAND> \xF0\x9F\xAB\xB7
+<RIGHTWARDS_PUSHING_HAND> \xF0\x9F\xAB\xB8
<BLOCK_SEXTANT-1> \xF0\x9F\xAC\x80
<BLOCK_SEXTANT-2> \xF0\x9F\xAC\x81
<BLOCK_SEXTANT-12> \xF0\x9F\xAC\x82
@@ -127058,6 +128167,8 @@ CHARMAP
<CJK_UNIFIED_IDEOGRAPH-2A6DB> \xF0\xAA\x9B\x9B
<CJK_UNIFIED_IDEOGRAPH-2A6DC> \xF0\xAA\x9B\x9C
<CJK_UNIFIED_IDEOGRAPH-2A6DD> \xF0\xAA\x9B\x9D
+<CJK_UNIFIED_IDEOGRAPH-2A6DE> \xF0\xAA\x9B\x9E
+<CJK_UNIFIED_IDEOGRAPH-2A6DF> \xF0\xAA\x9B\x9F
<CJK_UNIFIED_IDEOGRAPH-2A700> \xF0\xAA\x9C\x80
<CJK_UNIFIED_IDEOGRAPH-2A701> \xF0\xAA\x9C\x81
<CJK_UNIFIED_IDEOGRAPH-2A702> \xF0\xAA\x9C\x82
@@ -131207,6 +132318,11 @@ CHARMAP
<CJK_UNIFIED_IDEOGRAPH-2B732> \xF0\xAB\x9C\xB2
<CJK_UNIFIED_IDEOGRAPH-2B733> \xF0\xAB\x9C\xB3
<CJK_UNIFIED_IDEOGRAPH-2B734> \xF0\xAB\x9C\xB4
+<CJK_UNIFIED_IDEOGRAPH-2B735> \xF0\xAB\x9C\xB5
+<CJK_UNIFIED_IDEOGRAPH-2B736> \xF0\xAB\x9C\xB6
+<CJK_UNIFIED_IDEOGRAPH-2B737> \xF0\xAB\x9C\xB7
+<CJK_UNIFIED_IDEOGRAPH-2B738> \xF0\xAB\x9C\xB8
+<CJK_UNIFIED_IDEOGRAPH-2B739> \xF0\xAB\x9C\xB9
<CJK_UNIFIED_IDEOGRAPH-2B740> \xF0\xAB\x9D\x80
<CJK_UNIFIED_IDEOGRAPH-2B741> \xF0\xAB\x9D\x81
<CJK_UNIFIED_IDEOGRAPH-2B742> \xF0\xAB\x9D\x82
@@ -150145,6 +151261,4198 @@ CHARMAP
<CJK_UNIFIED_IDEOGRAPH-31348> \xF0\xB1\x8D\x88
<CJK_UNIFIED_IDEOGRAPH-31349> \xF0\xB1\x8D\x89
<CJK_UNIFIED_IDEOGRAPH-3134A> \xF0\xB1\x8D\x8A
+<CJK_UNIFIED_IDEOGRAPH-31350> \xF0\xB1\x8D\x90
+<CJK_UNIFIED_IDEOGRAPH-31351> \xF0\xB1\x8D\x91
+<CJK_UNIFIED_IDEOGRAPH-31352> \xF0\xB1\x8D\x92
+<CJK_UNIFIED_IDEOGRAPH-31353> \xF0\xB1\x8D\x93
+<CJK_UNIFIED_IDEOGRAPH-31354> \xF0\xB1\x8D\x94
+<CJK_UNIFIED_IDEOGRAPH-31355> \xF0\xB1\x8D\x95
+<CJK_UNIFIED_IDEOGRAPH-31356> \xF0\xB1\x8D\x96
+<CJK_UNIFIED_IDEOGRAPH-31357> \xF0\xB1\x8D\x97
+<CJK_UNIFIED_IDEOGRAPH-31358> \xF0\xB1\x8D\x98
+<CJK_UNIFIED_IDEOGRAPH-31359> \xF0\xB1\x8D\x99
+<CJK_UNIFIED_IDEOGRAPH-3135A> \xF0\xB1\x8D\x9A
+<CJK_UNIFIED_IDEOGRAPH-3135B> \xF0\xB1\x8D\x9B
+<CJK_UNIFIED_IDEOGRAPH-3135C> \xF0\xB1\x8D\x9C
+<CJK_UNIFIED_IDEOGRAPH-3135D> \xF0\xB1\x8D\x9D
+<CJK_UNIFIED_IDEOGRAPH-3135E> \xF0\xB1\x8D\x9E
+<CJK_UNIFIED_IDEOGRAPH-3135F> \xF0\xB1\x8D\x9F
+<CJK_UNIFIED_IDEOGRAPH-31360> \xF0\xB1\x8D\xA0
+<CJK_UNIFIED_IDEOGRAPH-31361> \xF0\xB1\x8D\xA1
+<CJK_UNIFIED_IDEOGRAPH-31362> \xF0\xB1\x8D\xA2
+<CJK_UNIFIED_IDEOGRAPH-31363> \xF0\xB1\x8D\xA3
+<CJK_UNIFIED_IDEOGRAPH-31364> \xF0\xB1\x8D\xA4
+<CJK_UNIFIED_IDEOGRAPH-31365> \xF0\xB1\x8D\xA5
+<CJK_UNIFIED_IDEOGRAPH-31366> \xF0\xB1\x8D\xA6
+<CJK_UNIFIED_IDEOGRAPH-31367> \xF0\xB1\x8D\xA7
+<CJK_UNIFIED_IDEOGRAPH-31368> \xF0\xB1\x8D\xA8
+<CJK_UNIFIED_IDEOGRAPH-31369> \xF0\xB1\x8D\xA9
+<CJK_UNIFIED_IDEOGRAPH-3136A> \xF0\xB1\x8D\xAA
+<CJK_UNIFIED_IDEOGRAPH-3136B> \xF0\xB1\x8D\xAB
+<CJK_UNIFIED_IDEOGRAPH-3136C> \xF0\xB1\x8D\xAC
+<CJK_UNIFIED_IDEOGRAPH-3136D> \xF0\xB1\x8D\xAD
+<CJK_UNIFIED_IDEOGRAPH-3136E> \xF0\xB1\x8D\xAE
+<CJK_UNIFIED_IDEOGRAPH-3136F> \xF0\xB1\x8D\xAF
+<CJK_UNIFIED_IDEOGRAPH-31370> \xF0\xB1\x8D\xB0
+<CJK_UNIFIED_IDEOGRAPH-31371> \xF0\xB1\x8D\xB1
+<CJK_UNIFIED_IDEOGRAPH-31372> \xF0\xB1\x8D\xB2
+<CJK_UNIFIED_IDEOGRAPH-31373> \xF0\xB1\x8D\xB3
+<CJK_UNIFIED_IDEOGRAPH-31374> \xF0\xB1\x8D\xB4
+<CJK_UNIFIED_IDEOGRAPH-31375> \xF0\xB1\x8D\xB5
+<CJK_UNIFIED_IDEOGRAPH-31376> \xF0\xB1\x8D\xB6
+<CJK_UNIFIED_IDEOGRAPH-31377> \xF0\xB1\x8D\xB7
+<CJK_UNIFIED_IDEOGRAPH-31378> \xF0\xB1\x8D\xB8
+<CJK_UNIFIED_IDEOGRAPH-31379> \xF0\xB1\x8D\xB9
+<CJK_UNIFIED_IDEOGRAPH-3137A> \xF0\xB1\x8D\xBA
+<CJK_UNIFIED_IDEOGRAPH-3137B> \xF0\xB1\x8D\xBB
+<CJK_UNIFIED_IDEOGRAPH-3137C> \xF0\xB1\x8D\xBC
+<CJK_UNIFIED_IDEOGRAPH-3137D> \xF0\xB1\x8D\xBD
+<CJK_UNIFIED_IDEOGRAPH-3137E> \xF0\xB1\x8D\xBE
+<CJK_UNIFIED_IDEOGRAPH-3137F> \xF0\xB1\x8D\xBF
+<CJK_UNIFIED_IDEOGRAPH-31380> \xF0\xB1\x8E\x80
+<CJK_UNIFIED_IDEOGRAPH-31381> \xF0\xB1\x8E\x81
+<CJK_UNIFIED_IDEOGRAPH-31382> \xF0\xB1\x8E\x82
+<CJK_UNIFIED_IDEOGRAPH-31383> \xF0\xB1\x8E\x83
+<CJK_UNIFIED_IDEOGRAPH-31384> \xF0\xB1\x8E\x84
+<CJK_UNIFIED_IDEOGRAPH-31385> \xF0\xB1\x8E\x85
+<CJK_UNIFIED_IDEOGRAPH-31386> \xF0\xB1\x8E\x86
+<CJK_UNIFIED_IDEOGRAPH-31387> \xF0\xB1\x8E\x87
+<CJK_UNIFIED_IDEOGRAPH-31388> \xF0\xB1\x8E\x88
+<CJK_UNIFIED_IDEOGRAPH-31389> \xF0\xB1\x8E\x89
+<CJK_UNIFIED_IDEOGRAPH-3138A> \xF0\xB1\x8E\x8A
+<CJK_UNIFIED_IDEOGRAPH-3138B> \xF0\xB1\x8E\x8B
+<CJK_UNIFIED_IDEOGRAPH-3138C> \xF0\xB1\x8E\x8C
+<CJK_UNIFIED_IDEOGRAPH-3138D> \xF0\xB1\x8E\x8D
+<CJK_UNIFIED_IDEOGRAPH-3138E> \xF0\xB1\x8E\x8E
+<CJK_UNIFIED_IDEOGRAPH-3138F> \xF0\xB1\x8E\x8F
+<CJK_UNIFIED_IDEOGRAPH-31390> \xF0\xB1\x8E\x90
+<CJK_UNIFIED_IDEOGRAPH-31391> \xF0\xB1\x8E\x91
+<CJK_UNIFIED_IDEOGRAPH-31392> \xF0\xB1\x8E\x92
+<CJK_UNIFIED_IDEOGRAPH-31393> \xF0\xB1\x8E\x93
+<CJK_UNIFIED_IDEOGRAPH-31394> \xF0\xB1\x8E\x94
+<CJK_UNIFIED_IDEOGRAPH-31395> \xF0\xB1\x8E\x95
+<CJK_UNIFIED_IDEOGRAPH-31396> \xF0\xB1\x8E\x96
+<CJK_UNIFIED_IDEOGRAPH-31397> \xF0\xB1\x8E\x97
+<CJK_UNIFIED_IDEOGRAPH-31398> \xF0\xB1\x8E\x98
+<CJK_UNIFIED_IDEOGRAPH-31399> \xF0\xB1\x8E\x99
+<CJK_UNIFIED_IDEOGRAPH-3139A> \xF0\xB1\x8E\x9A
+<CJK_UNIFIED_IDEOGRAPH-3139B> \xF0\xB1\x8E\x9B
+<CJK_UNIFIED_IDEOGRAPH-3139C> \xF0\xB1\x8E\x9C
+<CJK_UNIFIED_IDEOGRAPH-3139D> \xF0\xB1\x8E\x9D
+<CJK_UNIFIED_IDEOGRAPH-3139E> \xF0\xB1\x8E\x9E
+<CJK_UNIFIED_IDEOGRAPH-3139F> \xF0\xB1\x8E\x9F
+<CJK_UNIFIED_IDEOGRAPH-313A0> \xF0\xB1\x8E\xA0
+<CJK_UNIFIED_IDEOGRAPH-313A1> \xF0\xB1\x8E\xA1
+<CJK_UNIFIED_IDEOGRAPH-313A2> \xF0\xB1\x8E\xA2
+<CJK_UNIFIED_IDEOGRAPH-313A3> \xF0\xB1\x8E\xA3
+<CJK_UNIFIED_IDEOGRAPH-313A4> \xF0\xB1\x8E\xA4
+<CJK_UNIFIED_IDEOGRAPH-313A5> \xF0\xB1\x8E\xA5
+<CJK_UNIFIED_IDEOGRAPH-313A6> \xF0\xB1\x8E\xA6
+<CJK_UNIFIED_IDEOGRAPH-313A7> \xF0\xB1\x8E\xA7
+<CJK_UNIFIED_IDEOGRAPH-313A8> \xF0\xB1\x8E\xA8
+<CJK_UNIFIED_IDEOGRAPH-313A9> \xF0\xB1\x8E\xA9
+<CJK_UNIFIED_IDEOGRAPH-313AA> \xF0\xB1\x8E\xAA
+<CJK_UNIFIED_IDEOGRAPH-313AB> \xF0\xB1\x8E\xAB
+<CJK_UNIFIED_IDEOGRAPH-313AC> \xF0\xB1\x8E\xAC
+<CJK_UNIFIED_IDEOGRAPH-313AD> \xF0\xB1\x8E\xAD
+<CJK_UNIFIED_IDEOGRAPH-313AE> \xF0\xB1\x8E\xAE
+<CJK_UNIFIED_IDEOGRAPH-313AF> \xF0\xB1\x8E\xAF
+<CJK_UNIFIED_IDEOGRAPH-313B0> \xF0\xB1\x8E\xB0
+<CJK_UNIFIED_IDEOGRAPH-313B1> \xF0\xB1\x8E\xB1
+<CJK_UNIFIED_IDEOGRAPH-313B2> \xF0\xB1\x8E\xB2
+<CJK_UNIFIED_IDEOGRAPH-313B3> \xF0\xB1\x8E\xB3
+<CJK_UNIFIED_IDEOGRAPH-313B4> \xF0\xB1\x8E\xB4
+<CJK_UNIFIED_IDEOGRAPH-313B5> \xF0\xB1\x8E\xB5
+<CJK_UNIFIED_IDEOGRAPH-313B6> \xF0\xB1\x8E\xB6
+<CJK_UNIFIED_IDEOGRAPH-313B7> \xF0\xB1\x8E\xB7
+<CJK_UNIFIED_IDEOGRAPH-313B8> \xF0\xB1\x8E\xB8
+<CJK_UNIFIED_IDEOGRAPH-313B9> \xF0\xB1\x8E\xB9
+<CJK_UNIFIED_IDEOGRAPH-313BA> \xF0\xB1\x8E\xBA
+<CJK_UNIFIED_IDEOGRAPH-313BB> \xF0\xB1\x8E\xBB
+<CJK_UNIFIED_IDEOGRAPH-313BC> \xF0\xB1\x8E\xBC
+<CJK_UNIFIED_IDEOGRAPH-313BD> \xF0\xB1\x8E\xBD
+<CJK_UNIFIED_IDEOGRAPH-313BE> \xF0\xB1\x8E\xBE
+<CJK_UNIFIED_IDEOGRAPH-313BF> \xF0\xB1\x8E\xBF
+<CJK_UNIFIED_IDEOGRAPH-313C0> \xF0\xB1\x8F\x80
+<CJK_UNIFIED_IDEOGRAPH-313C1> \xF0\xB1\x8F\x81
+<CJK_UNIFIED_IDEOGRAPH-313C2> \xF0\xB1\x8F\x82
+<CJK_UNIFIED_IDEOGRAPH-313C3> \xF0\xB1\x8F\x83
+<CJK_UNIFIED_IDEOGRAPH-313C4> \xF0\xB1\x8F\x84
+<CJK_UNIFIED_IDEOGRAPH-313C5> \xF0\xB1\x8F\x85
+<CJK_UNIFIED_IDEOGRAPH-313C6> \xF0\xB1\x8F\x86
+<CJK_UNIFIED_IDEOGRAPH-313C7> \xF0\xB1\x8F\x87
+<CJK_UNIFIED_IDEOGRAPH-313C8> \xF0\xB1\x8F\x88
+<CJK_UNIFIED_IDEOGRAPH-313C9> \xF0\xB1\x8F\x89
+<CJK_UNIFIED_IDEOGRAPH-313CA> \xF0\xB1\x8F\x8A
+<CJK_UNIFIED_IDEOGRAPH-313CB> \xF0\xB1\x8F\x8B
+<CJK_UNIFIED_IDEOGRAPH-313CC> \xF0\xB1\x8F\x8C
+<CJK_UNIFIED_IDEOGRAPH-313CD> \xF0\xB1\x8F\x8D
+<CJK_UNIFIED_IDEOGRAPH-313CE> \xF0\xB1\x8F\x8E
+<CJK_UNIFIED_IDEOGRAPH-313CF> \xF0\xB1\x8F\x8F
+<CJK_UNIFIED_IDEOGRAPH-313D0> \xF0\xB1\x8F\x90
+<CJK_UNIFIED_IDEOGRAPH-313D1> \xF0\xB1\x8F\x91
+<CJK_UNIFIED_IDEOGRAPH-313D2> \xF0\xB1\x8F\x92
+<CJK_UNIFIED_IDEOGRAPH-313D3> \xF0\xB1\x8F\x93
+<CJK_UNIFIED_IDEOGRAPH-313D4> \xF0\xB1\x8F\x94
+<CJK_UNIFIED_IDEOGRAPH-313D5> \xF0\xB1\x8F\x95
+<CJK_UNIFIED_IDEOGRAPH-313D6> \xF0\xB1\x8F\x96
+<CJK_UNIFIED_IDEOGRAPH-313D7> \xF0\xB1\x8F\x97
+<CJK_UNIFIED_IDEOGRAPH-313D8> \xF0\xB1\x8F\x98
+<CJK_UNIFIED_IDEOGRAPH-313D9> \xF0\xB1\x8F\x99
+<CJK_UNIFIED_IDEOGRAPH-313DA> \xF0\xB1\x8F\x9A
+<CJK_UNIFIED_IDEOGRAPH-313DB> \xF0\xB1\x8F\x9B
+<CJK_UNIFIED_IDEOGRAPH-313DC> \xF0\xB1\x8F\x9C
+<CJK_UNIFIED_IDEOGRAPH-313DD> \xF0\xB1\x8F\x9D
+<CJK_UNIFIED_IDEOGRAPH-313DE> \xF0\xB1\x8F\x9E
+<CJK_UNIFIED_IDEOGRAPH-313DF> \xF0\xB1\x8F\x9F
+<CJK_UNIFIED_IDEOGRAPH-313E0> \xF0\xB1\x8F\xA0
+<CJK_UNIFIED_IDEOGRAPH-313E1> \xF0\xB1\x8F\xA1
+<CJK_UNIFIED_IDEOGRAPH-313E2> \xF0\xB1\x8F\xA2
+<CJK_UNIFIED_IDEOGRAPH-313E3> \xF0\xB1\x8F\xA3
+<CJK_UNIFIED_IDEOGRAPH-313E4> \xF0\xB1\x8F\xA4
+<CJK_UNIFIED_IDEOGRAPH-313E5> \xF0\xB1\x8F\xA5
+<CJK_UNIFIED_IDEOGRAPH-313E6> \xF0\xB1\x8F\xA6
+<CJK_UNIFIED_IDEOGRAPH-313E7> \xF0\xB1\x8F\xA7
+<CJK_UNIFIED_IDEOGRAPH-313E8> \xF0\xB1\x8F\xA8
+<CJK_UNIFIED_IDEOGRAPH-313E9> \xF0\xB1\x8F\xA9
+<CJK_UNIFIED_IDEOGRAPH-313EA> \xF0\xB1\x8F\xAA
+<CJK_UNIFIED_IDEOGRAPH-313EB> \xF0\xB1\x8F\xAB
+<CJK_UNIFIED_IDEOGRAPH-313EC> \xF0\xB1\x8F\xAC
+<CJK_UNIFIED_IDEOGRAPH-313ED> \xF0\xB1\x8F\xAD
+<CJK_UNIFIED_IDEOGRAPH-313EE> \xF0\xB1\x8F\xAE
+<CJK_UNIFIED_IDEOGRAPH-313EF> \xF0\xB1\x8F\xAF
+<CJK_UNIFIED_IDEOGRAPH-313F0> \xF0\xB1\x8F\xB0
+<CJK_UNIFIED_IDEOGRAPH-313F1> \xF0\xB1\x8F\xB1
+<CJK_UNIFIED_IDEOGRAPH-313F2> \xF0\xB1\x8F\xB2
+<CJK_UNIFIED_IDEOGRAPH-313F3> \xF0\xB1\x8F\xB3
+<CJK_UNIFIED_IDEOGRAPH-313F4> \xF0\xB1\x8F\xB4
+<CJK_UNIFIED_IDEOGRAPH-313F5> \xF0\xB1\x8F\xB5
+<CJK_UNIFIED_IDEOGRAPH-313F6> \xF0\xB1\x8F\xB6
+<CJK_UNIFIED_IDEOGRAPH-313F7> \xF0\xB1\x8F\xB7
+<CJK_UNIFIED_IDEOGRAPH-313F8> \xF0\xB1\x8F\xB8
+<CJK_UNIFIED_IDEOGRAPH-313F9> \xF0\xB1\x8F\xB9
+<CJK_UNIFIED_IDEOGRAPH-313FA> \xF0\xB1\x8F\xBA
+<CJK_UNIFIED_IDEOGRAPH-313FB> \xF0\xB1\x8F\xBB
+<CJK_UNIFIED_IDEOGRAPH-313FC> \xF0\xB1\x8F\xBC
+<CJK_UNIFIED_IDEOGRAPH-313FD> \xF0\xB1\x8F\xBD
+<CJK_UNIFIED_IDEOGRAPH-313FE> \xF0\xB1\x8F\xBE
+<CJK_UNIFIED_IDEOGRAPH-313FF> \xF0\xB1\x8F\xBF
+<CJK_UNIFIED_IDEOGRAPH-31400> \xF0\xB1\x90\x80
+<CJK_UNIFIED_IDEOGRAPH-31401> \xF0\xB1\x90\x81
+<CJK_UNIFIED_IDEOGRAPH-31402> \xF0\xB1\x90\x82
+<CJK_UNIFIED_IDEOGRAPH-31403> \xF0\xB1\x90\x83
+<CJK_UNIFIED_IDEOGRAPH-31404> \xF0\xB1\x90\x84
+<CJK_UNIFIED_IDEOGRAPH-31405> \xF0\xB1\x90\x85
+<CJK_UNIFIED_IDEOGRAPH-31406> \xF0\xB1\x90\x86
+<CJK_UNIFIED_IDEOGRAPH-31407> \xF0\xB1\x90\x87
+<CJK_UNIFIED_IDEOGRAPH-31408> \xF0\xB1\x90\x88
+<CJK_UNIFIED_IDEOGRAPH-31409> \xF0\xB1\x90\x89
+<CJK_UNIFIED_IDEOGRAPH-3140A> \xF0\xB1\x90\x8A
+<CJK_UNIFIED_IDEOGRAPH-3140B> \xF0\xB1\x90\x8B
+<CJK_UNIFIED_IDEOGRAPH-3140C> \xF0\xB1\x90\x8C
+<CJK_UNIFIED_IDEOGRAPH-3140D> \xF0\xB1\x90\x8D
+<CJK_UNIFIED_IDEOGRAPH-3140E> \xF0\xB1\x90\x8E
+<CJK_UNIFIED_IDEOGRAPH-3140F> \xF0\xB1\x90\x8F
+<CJK_UNIFIED_IDEOGRAPH-31410> \xF0\xB1\x90\x90
+<CJK_UNIFIED_IDEOGRAPH-31411> \xF0\xB1\x90\x91
+<CJK_UNIFIED_IDEOGRAPH-31412> \xF0\xB1\x90\x92
+<CJK_UNIFIED_IDEOGRAPH-31413> \xF0\xB1\x90\x93
+<CJK_UNIFIED_IDEOGRAPH-31414> \xF0\xB1\x90\x94
+<CJK_UNIFIED_IDEOGRAPH-31415> \xF0\xB1\x90\x95
+<CJK_UNIFIED_IDEOGRAPH-31416> \xF0\xB1\x90\x96
+<CJK_UNIFIED_IDEOGRAPH-31417> \xF0\xB1\x90\x97
+<CJK_UNIFIED_IDEOGRAPH-31418> \xF0\xB1\x90\x98
+<CJK_UNIFIED_IDEOGRAPH-31419> \xF0\xB1\x90\x99
+<CJK_UNIFIED_IDEOGRAPH-3141A> \xF0\xB1\x90\x9A
+<CJK_UNIFIED_IDEOGRAPH-3141B> \xF0\xB1\x90\x9B
+<CJK_UNIFIED_IDEOGRAPH-3141C> \xF0\xB1\x90\x9C
+<CJK_UNIFIED_IDEOGRAPH-3141D> \xF0\xB1\x90\x9D
+<CJK_UNIFIED_IDEOGRAPH-3141E> \xF0\xB1\x90\x9E
+<CJK_UNIFIED_IDEOGRAPH-3141F> \xF0\xB1\x90\x9F
+<CJK_UNIFIED_IDEOGRAPH-31420> \xF0\xB1\x90\xA0
+<CJK_UNIFIED_IDEOGRAPH-31421> \xF0\xB1\x90\xA1
+<CJK_UNIFIED_IDEOGRAPH-31422> \xF0\xB1\x90\xA2
+<CJK_UNIFIED_IDEOGRAPH-31423> \xF0\xB1\x90\xA3
+<CJK_UNIFIED_IDEOGRAPH-31424> \xF0\xB1\x90\xA4
+<CJK_UNIFIED_IDEOGRAPH-31425> \xF0\xB1\x90\xA5
+<CJK_UNIFIED_IDEOGRAPH-31426> \xF0\xB1\x90\xA6
+<CJK_UNIFIED_IDEOGRAPH-31427> \xF0\xB1\x90\xA7
+<CJK_UNIFIED_IDEOGRAPH-31428> \xF0\xB1\x90\xA8
+<CJK_UNIFIED_IDEOGRAPH-31429> \xF0\xB1\x90\xA9
+<CJK_UNIFIED_IDEOGRAPH-3142A> \xF0\xB1\x90\xAA
+<CJK_UNIFIED_IDEOGRAPH-3142B> \xF0\xB1\x90\xAB
+<CJK_UNIFIED_IDEOGRAPH-3142C> \xF0\xB1\x90\xAC
+<CJK_UNIFIED_IDEOGRAPH-3142D> \xF0\xB1\x90\xAD
+<CJK_UNIFIED_IDEOGRAPH-3142E> \xF0\xB1\x90\xAE
+<CJK_UNIFIED_IDEOGRAPH-3142F> \xF0\xB1\x90\xAF
+<CJK_UNIFIED_IDEOGRAPH-31430> \xF0\xB1\x90\xB0
+<CJK_UNIFIED_IDEOGRAPH-31431> \xF0\xB1\x90\xB1
+<CJK_UNIFIED_IDEOGRAPH-31432> \xF0\xB1\x90\xB2
+<CJK_UNIFIED_IDEOGRAPH-31433> \xF0\xB1\x90\xB3
+<CJK_UNIFIED_IDEOGRAPH-31434> \xF0\xB1\x90\xB4
+<CJK_UNIFIED_IDEOGRAPH-31435> \xF0\xB1\x90\xB5
+<CJK_UNIFIED_IDEOGRAPH-31436> \xF0\xB1\x90\xB6
+<CJK_UNIFIED_IDEOGRAPH-31437> \xF0\xB1\x90\xB7
+<CJK_UNIFIED_IDEOGRAPH-31438> \xF0\xB1\x90\xB8
+<CJK_UNIFIED_IDEOGRAPH-31439> \xF0\xB1\x90\xB9
+<CJK_UNIFIED_IDEOGRAPH-3143A> \xF0\xB1\x90\xBA
+<CJK_UNIFIED_IDEOGRAPH-3143B> \xF0\xB1\x90\xBB
+<CJK_UNIFIED_IDEOGRAPH-3143C> \xF0\xB1\x90\xBC
+<CJK_UNIFIED_IDEOGRAPH-3143D> \xF0\xB1\x90\xBD
+<CJK_UNIFIED_IDEOGRAPH-3143E> \xF0\xB1\x90\xBE
+<CJK_UNIFIED_IDEOGRAPH-3143F> \xF0\xB1\x90\xBF
+<CJK_UNIFIED_IDEOGRAPH-31440> \xF0\xB1\x91\x80
+<CJK_UNIFIED_IDEOGRAPH-31441> \xF0\xB1\x91\x81
+<CJK_UNIFIED_IDEOGRAPH-31442> \xF0\xB1\x91\x82
+<CJK_UNIFIED_IDEOGRAPH-31443> \xF0\xB1\x91\x83
+<CJK_UNIFIED_IDEOGRAPH-31444> \xF0\xB1\x91\x84
+<CJK_UNIFIED_IDEOGRAPH-31445> \xF0\xB1\x91\x85
+<CJK_UNIFIED_IDEOGRAPH-31446> \xF0\xB1\x91\x86
+<CJK_UNIFIED_IDEOGRAPH-31447> \xF0\xB1\x91\x87
+<CJK_UNIFIED_IDEOGRAPH-31448> \xF0\xB1\x91\x88
+<CJK_UNIFIED_IDEOGRAPH-31449> \xF0\xB1\x91\x89
+<CJK_UNIFIED_IDEOGRAPH-3144A> \xF0\xB1\x91\x8A
+<CJK_UNIFIED_IDEOGRAPH-3144B> \xF0\xB1\x91\x8B
+<CJK_UNIFIED_IDEOGRAPH-3144C> \xF0\xB1\x91\x8C
+<CJK_UNIFIED_IDEOGRAPH-3144D> \xF0\xB1\x91\x8D
+<CJK_UNIFIED_IDEOGRAPH-3144E> \xF0\xB1\x91\x8E
+<CJK_UNIFIED_IDEOGRAPH-3144F> \xF0\xB1\x91\x8F
+<CJK_UNIFIED_IDEOGRAPH-31450> \xF0\xB1\x91\x90
+<CJK_UNIFIED_IDEOGRAPH-31451> \xF0\xB1\x91\x91
+<CJK_UNIFIED_IDEOGRAPH-31452> \xF0\xB1\x91\x92
+<CJK_UNIFIED_IDEOGRAPH-31453> \xF0\xB1\x91\x93
+<CJK_UNIFIED_IDEOGRAPH-31454> \xF0\xB1\x91\x94
+<CJK_UNIFIED_IDEOGRAPH-31455> \xF0\xB1\x91\x95
+<CJK_UNIFIED_IDEOGRAPH-31456> \xF0\xB1\x91\x96
+<CJK_UNIFIED_IDEOGRAPH-31457> \xF0\xB1\x91\x97
+<CJK_UNIFIED_IDEOGRAPH-31458> \xF0\xB1\x91\x98
+<CJK_UNIFIED_IDEOGRAPH-31459> \xF0\xB1\x91\x99
+<CJK_UNIFIED_IDEOGRAPH-3145A> \xF0\xB1\x91\x9A
+<CJK_UNIFIED_IDEOGRAPH-3145B> \xF0\xB1\x91\x9B
+<CJK_UNIFIED_IDEOGRAPH-3145C> \xF0\xB1\x91\x9C
+<CJK_UNIFIED_IDEOGRAPH-3145D> \xF0\xB1\x91\x9D
+<CJK_UNIFIED_IDEOGRAPH-3145E> \xF0\xB1\x91\x9E
+<CJK_UNIFIED_IDEOGRAPH-3145F> \xF0\xB1\x91\x9F
+<CJK_UNIFIED_IDEOGRAPH-31460> \xF0\xB1\x91\xA0
+<CJK_UNIFIED_IDEOGRAPH-31461> \xF0\xB1\x91\xA1
+<CJK_UNIFIED_IDEOGRAPH-31462> \xF0\xB1\x91\xA2
+<CJK_UNIFIED_IDEOGRAPH-31463> \xF0\xB1\x91\xA3
+<CJK_UNIFIED_IDEOGRAPH-31464> \xF0\xB1\x91\xA4
+<CJK_UNIFIED_IDEOGRAPH-31465> \xF0\xB1\x91\xA5
+<CJK_UNIFIED_IDEOGRAPH-31466> \xF0\xB1\x91\xA6
+<CJK_UNIFIED_IDEOGRAPH-31467> \xF0\xB1\x91\xA7
+<CJK_UNIFIED_IDEOGRAPH-31468> \xF0\xB1\x91\xA8
+<CJK_UNIFIED_IDEOGRAPH-31469> \xF0\xB1\x91\xA9
+<CJK_UNIFIED_IDEOGRAPH-3146A> \xF0\xB1\x91\xAA
+<CJK_UNIFIED_IDEOGRAPH-3146B> \xF0\xB1\x91\xAB
+<CJK_UNIFIED_IDEOGRAPH-3146C> \xF0\xB1\x91\xAC
+<CJK_UNIFIED_IDEOGRAPH-3146D> \xF0\xB1\x91\xAD
+<CJK_UNIFIED_IDEOGRAPH-3146E> \xF0\xB1\x91\xAE
+<CJK_UNIFIED_IDEOGRAPH-3146F> \xF0\xB1\x91\xAF
+<CJK_UNIFIED_IDEOGRAPH-31470> \xF0\xB1\x91\xB0
+<CJK_UNIFIED_IDEOGRAPH-31471> \xF0\xB1\x91\xB1
+<CJK_UNIFIED_IDEOGRAPH-31472> \xF0\xB1\x91\xB2
+<CJK_UNIFIED_IDEOGRAPH-31473> \xF0\xB1\x91\xB3
+<CJK_UNIFIED_IDEOGRAPH-31474> \xF0\xB1\x91\xB4
+<CJK_UNIFIED_IDEOGRAPH-31475> \xF0\xB1\x91\xB5
+<CJK_UNIFIED_IDEOGRAPH-31476> \xF0\xB1\x91\xB6
+<CJK_UNIFIED_IDEOGRAPH-31477> \xF0\xB1\x91\xB7
+<CJK_UNIFIED_IDEOGRAPH-31478> \xF0\xB1\x91\xB8
+<CJK_UNIFIED_IDEOGRAPH-31479> \xF0\xB1\x91\xB9
+<CJK_UNIFIED_IDEOGRAPH-3147A> \xF0\xB1\x91\xBA
+<CJK_UNIFIED_IDEOGRAPH-3147B> \xF0\xB1\x91\xBB
+<CJK_UNIFIED_IDEOGRAPH-3147C> \xF0\xB1\x91\xBC
+<CJK_UNIFIED_IDEOGRAPH-3147D> \xF0\xB1\x91\xBD
+<CJK_UNIFIED_IDEOGRAPH-3147E> \xF0\xB1\x91\xBE
+<CJK_UNIFIED_IDEOGRAPH-3147F> \xF0\xB1\x91\xBF
+<CJK_UNIFIED_IDEOGRAPH-31480> \xF0\xB1\x92\x80
+<CJK_UNIFIED_IDEOGRAPH-31481> \xF0\xB1\x92\x81
+<CJK_UNIFIED_IDEOGRAPH-31482> \xF0\xB1\x92\x82
+<CJK_UNIFIED_IDEOGRAPH-31483> \xF0\xB1\x92\x83
+<CJK_UNIFIED_IDEOGRAPH-31484> \xF0\xB1\x92\x84
+<CJK_UNIFIED_IDEOGRAPH-31485> \xF0\xB1\x92\x85
+<CJK_UNIFIED_IDEOGRAPH-31486> \xF0\xB1\x92\x86
+<CJK_UNIFIED_IDEOGRAPH-31487> \xF0\xB1\x92\x87
+<CJK_UNIFIED_IDEOGRAPH-31488> \xF0\xB1\x92\x88
+<CJK_UNIFIED_IDEOGRAPH-31489> \xF0\xB1\x92\x89
+<CJK_UNIFIED_IDEOGRAPH-3148A> \xF0\xB1\x92\x8A
+<CJK_UNIFIED_IDEOGRAPH-3148B> \xF0\xB1\x92\x8B
+<CJK_UNIFIED_IDEOGRAPH-3148C> \xF0\xB1\x92\x8C
+<CJK_UNIFIED_IDEOGRAPH-3148D> \xF0\xB1\x92\x8D
+<CJK_UNIFIED_IDEOGRAPH-3148E> \xF0\xB1\x92\x8E
+<CJK_UNIFIED_IDEOGRAPH-3148F> \xF0\xB1\x92\x8F
+<CJK_UNIFIED_IDEOGRAPH-31490> \xF0\xB1\x92\x90
+<CJK_UNIFIED_IDEOGRAPH-31491> \xF0\xB1\x92\x91
+<CJK_UNIFIED_IDEOGRAPH-31492> \xF0\xB1\x92\x92
+<CJK_UNIFIED_IDEOGRAPH-31493> \xF0\xB1\x92\x93
+<CJK_UNIFIED_IDEOGRAPH-31494> \xF0\xB1\x92\x94
+<CJK_UNIFIED_IDEOGRAPH-31495> \xF0\xB1\x92\x95
+<CJK_UNIFIED_IDEOGRAPH-31496> \xF0\xB1\x92\x96
+<CJK_UNIFIED_IDEOGRAPH-31497> \xF0\xB1\x92\x97
+<CJK_UNIFIED_IDEOGRAPH-31498> \xF0\xB1\x92\x98
+<CJK_UNIFIED_IDEOGRAPH-31499> \xF0\xB1\x92\x99
+<CJK_UNIFIED_IDEOGRAPH-3149A> \xF0\xB1\x92\x9A
+<CJK_UNIFIED_IDEOGRAPH-3149B> \xF0\xB1\x92\x9B
+<CJK_UNIFIED_IDEOGRAPH-3149C> \xF0\xB1\x92\x9C
+<CJK_UNIFIED_IDEOGRAPH-3149D> \xF0\xB1\x92\x9D
+<CJK_UNIFIED_IDEOGRAPH-3149E> \xF0\xB1\x92\x9E
+<CJK_UNIFIED_IDEOGRAPH-3149F> \xF0\xB1\x92\x9F
+<CJK_UNIFIED_IDEOGRAPH-314A0> \xF0\xB1\x92\xA0
+<CJK_UNIFIED_IDEOGRAPH-314A1> \xF0\xB1\x92\xA1
+<CJK_UNIFIED_IDEOGRAPH-314A2> \xF0\xB1\x92\xA2
+<CJK_UNIFIED_IDEOGRAPH-314A3> \xF0\xB1\x92\xA3
+<CJK_UNIFIED_IDEOGRAPH-314A4> \xF0\xB1\x92\xA4
+<CJK_UNIFIED_IDEOGRAPH-314A5> \xF0\xB1\x92\xA5
+<CJK_UNIFIED_IDEOGRAPH-314A6> \xF0\xB1\x92\xA6
+<CJK_UNIFIED_IDEOGRAPH-314A7> \xF0\xB1\x92\xA7
+<CJK_UNIFIED_IDEOGRAPH-314A8> \xF0\xB1\x92\xA8
+<CJK_UNIFIED_IDEOGRAPH-314A9> \xF0\xB1\x92\xA9
+<CJK_UNIFIED_IDEOGRAPH-314AA> \xF0\xB1\x92\xAA
+<CJK_UNIFIED_IDEOGRAPH-314AB> \xF0\xB1\x92\xAB
+<CJK_UNIFIED_IDEOGRAPH-314AC> \xF0\xB1\x92\xAC
+<CJK_UNIFIED_IDEOGRAPH-314AD> \xF0\xB1\x92\xAD
+<CJK_UNIFIED_IDEOGRAPH-314AE> \xF0\xB1\x92\xAE
+<CJK_UNIFIED_IDEOGRAPH-314AF> \xF0\xB1\x92\xAF
+<CJK_UNIFIED_IDEOGRAPH-314B0> \xF0\xB1\x92\xB0
+<CJK_UNIFIED_IDEOGRAPH-314B1> \xF0\xB1\x92\xB1
+<CJK_UNIFIED_IDEOGRAPH-314B2> \xF0\xB1\x92\xB2
+<CJK_UNIFIED_IDEOGRAPH-314B3> \xF0\xB1\x92\xB3
+<CJK_UNIFIED_IDEOGRAPH-314B4> \xF0\xB1\x92\xB4
+<CJK_UNIFIED_IDEOGRAPH-314B5> \xF0\xB1\x92\xB5
+<CJK_UNIFIED_IDEOGRAPH-314B6> \xF0\xB1\x92\xB6
+<CJK_UNIFIED_IDEOGRAPH-314B7> \xF0\xB1\x92\xB7
+<CJK_UNIFIED_IDEOGRAPH-314B8> \xF0\xB1\x92\xB8
+<CJK_UNIFIED_IDEOGRAPH-314B9> \xF0\xB1\x92\xB9
+<CJK_UNIFIED_IDEOGRAPH-314BA> \xF0\xB1\x92\xBA
+<CJK_UNIFIED_IDEOGRAPH-314BB> \xF0\xB1\x92\xBB
+<CJK_UNIFIED_IDEOGRAPH-314BC> \xF0\xB1\x92\xBC
+<CJK_UNIFIED_IDEOGRAPH-314BD> \xF0\xB1\x92\xBD
+<CJK_UNIFIED_IDEOGRAPH-314BE> \xF0\xB1\x92\xBE
+<CJK_UNIFIED_IDEOGRAPH-314BF> \xF0\xB1\x92\xBF
+<CJK_UNIFIED_IDEOGRAPH-314C0> \xF0\xB1\x93\x80
+<CJK_UNIFIED_IDEOGRAPH-314C1> \xF0\xB1\x93\x81
+<CJK_UNIFIED_IDEOGRAPH-314C2> \xF0\xB1\x93\x82
+<CJK_UNIFIED_IDEOGRAPH-314C3> \xF0\xB1\x93\x83
+<CJK_UNIFIED_IDEOGRAPH-314C4> \xF0\xB1\x93\x84
+<CJK_UNIFIED_IDEOGRAPH-314C5> \xF0\xB1\x93\x85
+<CJK_UNIFIED_IDEOGRAPH-314C6> \xF0\xB1\x93\x86
+<CJK_UNIFIED_IDEOGRAPH-314C7> \xF0\xB1\x93\x87
+<CJK_UNIFIED_IDEOGRAPH-314C8> \xF0\xB1\x93\x88
+<CJK_UNIFIED_IDEOGRAPH-314C9> \xF0\xB1\x93\x89
+<CJK_UNIFIED_IDEOGRAPH-314CA> \xF0\xB1\x93\x8A
+<CJK_UNIFIED_IDEOGRAPH-314CB> \xF0\xB1\x93\x8B
+<CJK_UNIFIED_IDEOGRAPH-314CC> \xF0\xB1\x93\x8C
+<CJK_UNIFIED_IDEOGRAPH-314CD> \xF0\xB1\x93\x8D
+<CJK_UNIFIED_IDEOGRAPH-314CE> \xF0\xB1\x93\x8E
+<CJK_UNIFIED_IDEOGRAPH-314CF> \xF0\xB1\x93\x8F
+<CJK_UNIFIED_IDEOGRAPH-314D0> \xF0\xB1\x93\x90
+<CJK_UNIFIED_IDEOGRAPH-314D1> \xF0\xB1\x93\x91
+<CJK_UNIFIED_IDEOGRAPH-314D2> \xF0\xB1\x93\x92
+<CJK_UNIFIED_IDEOGRAPH-314D3> \xF0\xB1\x93\x93
+<CJK_UNIFIED_IDEOGRAPH-314D4> \xF0\xB1\x93\x94
+<CJK_UNIFIED_IDEOGRAPH-314D5> \xF0\xB1\x93\x95
+<CJK_UNIFIED_IDEOGRAPH-314D6> \xF0\xB1\x93\x96
+<CJK_UNIFIED_IDEOGRAPH-314D7> \xF0\xB1\x93\x97
+<CJK_UNIFIED_IDEOGRAPH-314D8> \xF0\xB1\x93\x98
+<CJK_UNIFIED_IDEOGRAPH-314D9> \xF0\xB1\x93\x99
+<CJK_UNIFIED_IDEOGRAPH-314DA> \xF0\xB1\x93\x9A
+<CJK_UNIFIED_IDEOGRAPH-314DB> \xF0\xB1\x93\x9B
+<CJK_UNIFIED_IDEOGRAPH-314DC> \xF0\xB1\x93\x9C
+<CJK_UNIFIED_IDEOGRAPH-314DD> \xF0\xB1\x93\x9D
+<CJK_UNIFIED_IDEOGRAPH-314DE> \xF0\xB1\x93\x9E
+<CJK_UNIFIED_IDEOGRAPH-314DF> \xF0\xB1\x93\x9F
+<CJK_UNIFIED_IDEOGRAPH-314E0> \xF0\xB1\x93\xA0
+<CJK_UNIFIED_IDEOGRAPH-314E1> \xF0\xB1\x93\xA1
+<CJK_UNIFIED_IDEOGRAPH-314E2> \xF0\xB1\x93\xA2
+<CJK_UNIFIED_IDEOGRAPH-314E3> \xF0\xB1\x93\xA3
+<CJK_UNIFIED_IDEOGRAPH-314E4> \xF0\xB1\x93\xA4
+<CJK_UNIFIED_IDEOGRAPH-314E5> \xF0\xB1\x93\xA5
+<CJK_UNIFIED_IDEOGRAPH-314E6> \xF0\xB1\x93\xA6
+<CJK_UNIFIED_IDEOGRAPH-314E7> \xF0\xB1\x93\xA7
+<CJK_UNIFIED_IDEOGRAPH-314E8> \xF0\xB1\x93\xA8
+<CJK_UNIFIED_IDEOGRAPH-314E9> \xF0\xB1\x93\xA9
+<CJK_UNIFIED_IDEOGRAPH-314EA> \xF0\xB1\x93\xAA
+<CJK_UNIFIED_IDEOGRAPH-314EB> \xF0\xB1\x93\xAB
+<CJK_UNIFIED_IDEOGRAPH-314EC> \xF0\xB1\x93\xAC
+<CJK_UNIFIED_IDEOGRAPH-314ED> \xF0\xB1\x93\xAD
+<CJK_UNIFIED_IDEOGRAPH-314EE> \xF0\xB1\x93\xAE
+<CJK_UNIFIED_IDEOGRAPH-314EF> \xF0\xB1\x93\xAF
+<CJK_UNIFIED_IDEOGRAPH-314F0> \xF0\xB1\x93\xB0
+<CJK_UNIFIED_IDEOGRAPH-314F1> \xF0\xB1\x93\xB1
+<CJK_UNIFIED_IDEOGRAPH-314F2> \xF0\xB1\x93\xB2
+<CJK_UNIFIED_IDEOGRAPH-314F3> \xF0\xB1\x93\xB3
+<CJK_UNIFIED_IDEOGRAPH-314F4> \xF0\xB1\x93\xB4
+<CJK_UNIFIED_IDEOGRAPH-314F5> \xF0\xB1\x93\xB5
+<CJK_UNIFIED_IDEOGRAPH-314F6> \xF0\xB1\x93\xB6
+<CJK_UNIFIED_IDEOGRAPH-314F7> \xF0\xB1\x93\xB7
+<CJK_UNIFIED_IDEOGRAPH-314F8> \xF0\xB1\x93\xB8
+<CJK_UNIFIED_IDEOGRAPH-314F9> \xF0\xB1\x93\xB9
+<CJK_UNIFIED_IDEOGRAPH-314FA> \xF0\xB1\x93\xBA
+<CJK_UNIFIED_IDEOGRAPH-314FB> \xF0\xB1\x93\xBB
+<CJK_UNIFIED_IDEOGRAPH-314FC> \xF0\xB1\x93\xBC
+<CJK_UNIFIED_IDEOGRAPH-314FD> \xF0\xB1\x93\xBD
+<CJK_UNIFIED_IDEOGRAPH-314FE> \xF0\xB1\x93\xBE
+<CJK_UNIFIED_IDEOGRAPH-314FF> \xF0\xB1\x93\xBF
+<CJK_UNIFIED_IDEOGRAPH-31500> \xF0\xB1\x94\x80
+<CJK_UNIFIED_IDEOGRAPH-31501> \xF0\xB1\x94\x81
+<CJK_UNIFIED_IDEOGRAPH-31502> \xF0\xB1\x94\x82
+<CJK_UNIFIED_IDEOGRAPH-31503> \xF0\xB1\x94\x83
+<CJK_UNIFIED_IDEOGRAPH-31504> \xF0\xB1\x94\x84
+<CJK_UNIFIED_IDEOGRAPH-31505> \xF0\xB1\x94\x85
+<CJK_UNIFIED_IDEOGRAPH-31506> \xF0\xB1\x94\x86
+<CJK_UNIFIED_IDEOGRAPH-31507> \xF0\xB1\x94\x87
+<CJK_UNIFIED_IDEOGRAPH-31508> \xF0\xB1\x94\x88
+<CJK_UNIFIED_IDEOGRAPH-31509> \xF0\xB1\x94\x89
+<CJK_UNIFIED_IDEOGRAPH-3150A> \xF0\xB1\x94\x8A
+<CJK_UNIFIED_IDEOGRAPH-3150B> \xF0\xB1\x94\x8B
+<CJK_UNIFIED_IDEOGRAPH-3150C> \xF0\xB1\x94\x8C
+<CJK_UNIFIED_IDEOGRAPH-3150D> \xF0\xB1\x94\x8D
+<CJK_UNIFIED_IDEOGRAPH-3150E> \xF0\xB1\x94\x8E
+<CJK_UNIFIED_IDEOGRAPH-3150F> \xF0\xB1\x94\x8F
+<CJK_UNIFIED_IDEOGRAPH-31510> \xF0\xB1\x94\x90
+<CJK_UNIFIED_IDEOGRAPH-31511> \xF0\xB1\x94\x91
+<CJK_UNIFIED_IDEOGRAPH-31512> \xF0\xB1\x94\x92
+<CJK_UNIFIED_IDEOGRAPH-31513> \xF0\xB1\x94\x93
+<CJK_UNIFIED_IDEOGRAPH-31514> \xF0\xB1\x94\x94
+<CJK_UNIFIED_IDEOGRAPH-31515> \xF0\xB1\x94\x95
+<CJK_UNIFIED_IDEOGRAPH-31516> \xF0\xB1\x94\x96
+<CJK_UNIFIED_IDEOGRAPH-31517> \xF0\xB1\x94\x97
+<CJK_UNIFIED_IDEOGRAPH-31518> \xF0\xB1\x94\x98
+<CJK_UNIFIED_IDEOGRAPH-31519> \xF0\xB1\x94\x99
+<CJK_UNIFIED_IDEOGRAPH-3151A> \xF0\xB1\x94\x9A
+<CJK_UNIFIED_IDEOGRAPH-3151B> \xF0\xB1\x94\x9B
+<CJK_UNIFIED_IDEOGRAPH-3151C> \xF0\xB1\x94\x9C
+<CJK_UNIFIED_IDEOGRAPH-3151D> \xF0\xB1\x94\x9D
+<CJK_UNIFIED_IDEOGRAPH-3151E> \xF0\xB1\x94\x9E
+<CJK_UNIFIED_IDEOGRAPH-3151F> \xF0\xB1\x94\x9F
+<CJK_UNIFIED_IDEOGRAPH-31520> \xF0\xB1\x94\xA0
+<CJK_UNIFIED_IDEOGRAPH-31521> \xF0\xB1\x94\xA1
+<CJK_UNIFIED_IDEOGRAPH-31522> \xF0\xB1\x94\xA2
+<CJK_UNIFIED_IDEOGRAPH-31523> \xF0\xB1\x94\xA3
+<CJK_UNIFIED_IDEOGRAPH-31524> \xF0\xB1\x94\xA4
+<CJK_UNIFIED_IDEOGRAPH-31525> \xF0\xB1\x94\xA5
+<CJK_UNIFIED_IDEOGRAPH-31526> \xF0\xB1\x94\xA6
+<CJK_UNIFIED_IDEOGRAPH-31527> \xF0\xB1\x94\xA7
+<CJK_UNIFIED_IDEOGRAPH-31528> \xF0\xB1\x94\xA8
+<CJK_UNIFIED_IDEOGRAPH-31529> \xF0\xB1\x94\xA9
+<CJK_UNIFIED_IDEOGRAPH-3152A> \xF0\xB1\x94\xAA
+<CJK_UNIFIED_IDEOGRAPH-3152B> \xF0\xB1\x94\xAB
+<CJK_UNIFIED_IDEOGRAPH-3152C> \xF0\xB1\x94\xAC
+<CJK_UNIFIED_IDEOGRAPH-3152D> \xF0\xB1\x94\xAD
+<CJK_UNIFIED_IDEOGRAPH-3152E> \xF0\xB1\x94\xAE
+<CJK_UNIFIED_IDEOGRAPH-3152F> \xF0\xB1\x94\xAF
+<CJK_UNIFIED_IDEOGRAPH-31530> \xF0\xB1\x94\xB0
+<CJK_UNIFIED_IDEOGRAPH-31531> \xF0\xB1\x94\xB1
+<CJK_UNIFIED_IDEOGRAPH-31532> \xF0\xB1\x94\xB2
+<CJK_UNIFIED_IDEOGRAPH-31533> \xF0\xB1\x94\xB3
+<CJK_UNIFIED_IDEOGRAPH-31534> \xF0\xB1\x94\xB4
+<CJK_UNIFIED_IDEOGRAPH-31535> \xF0\xB1\x94\xB5
+<CJK_UNIFIED_IDEOGRAPH-31536> \xF0\xB1\x94\xB6
+<CJK_UNIFIED_IDEOGRAPH-31537> \xF0\xB1\x94\xB7
+<CJK_UNIFIED_IDEOGRAPH-31538> \xF0\xB1\x94\xB8
+<CJK_UNIFIED_IDEOGRAPH-31539> \xF0\xB1\x94\xB9
+<CJK_UNIFIED_IDEOGRAPH-3153A> \xF0\xB1\x94\xBA
+<CJK_UNIFIED_IDEOGRAPH-3153B> \xF0\xB1\x94\xBB
+<CJK_UNIFIED_IDEOGRAPH-3153C> \xF0\xB1\x94\xBC
+<CJK_UNIFIED_IDEOGRAPH-3153D> \xF0\xB1\x94\xBD
+<CJK_UNIFIED_IDEOGRAPH-3153E> \xF0\xB1\x94\xBE
+<CJK_UNIFIED_IDEOGRAPH-3153F> \xF0\xB1\x94\xBF
+<CJK_UNIFIED_IDEOGRAPH-31540> \xF0\xB1\x95\x80
+<CJK_UNIFIED_IDEOGRAPH-31541> \xF0\xB1\x95\x81
+<CJK_UNIFIED_IDEOGRAPH-31542> \xF0\xB1\x95\x82
+<CJK_UNIFIED_IDEOGRAPH-31543> \xF0\xB1\x95\x83
+<CJK_UNIFIED_IDEOGRAPH-31544> \xF0\xB1\x95\x84
+<CJK_UNIFIED_IDEOGRAPH-31545> \xF0\xB1\x95\x85
+<CJK_UNIFIED_IDEOGRAPH-31546> \xF0\xB1\x95\x86
+<CJK_UNIFIED_IDEOGRAPH-31547> \xF0\xB1\x95\x87
+<CJK_UNIFIED_IDEOGRAPH-31548> \xF0\xB1\x95\x88
+<CJK_UNIFIED_IDEOGRAPH-31549> \xF0\xB1\x95\x89
+<CJK_UNIFIED_IDEOGRAPH-3154A> \xF0\xB1\x95\x8A
+<CJK_UNIFIED_IDEOGRAPH-3154B> \xF0\xB1\x95\x8B
+<CJK_UNIFIED_IDEOGRAPH-3154C> \xF0\xB1\x95\x8C
+<CJK_UNIFIED_IDEOGRAPH-3154D> \xF0\xB1\x95\x8D
+<CJK_UNIFIED_IDEOGRAPH-3154E> \xF0\xB1\x95\x8E
+<CJK_UNIFIED_IDEOGRAPH-3154F> \xF0\xB1\x95\x8F
+<CJK_UNIFIED_IDEOGRAPH-31550> \xF0\xB1\x95\x90
+<CJK_UNIFIED_IDEOGRAPH-31551> \xF0\xB1\x95\x91
+<CJK_UNIFIED_IDEOGRAPH-31552> \xF0\xB1\x95\x92
+<CJK_UNIFIED_IDEOGRAPH-31553> \xF0\xB1\x95\x93
+<CJK_UNIFIED_IDEOGRAPH-31554> \xF0\xB1\x95\x94
+<CJK_UNIFIED_IDEOGRAPH-31555> \xF0\xB1\x95\x95
+<CJK_UNIFIED_IDEOGRAPH-31556> \xF0\xB1\x95\x96
+<CJK_UNIFIED_IDEOGRAPH-31557> \xF0\xB1\x95\x97
+<CJK_UNIFIED_IDEOGRAPH-31558> \xF0\xB1\x95\x98
+<CJK_UNIFIED_IDEOGRAPH-31559> \xF0\xB1\x95\x99
+<CJK_UNIFIED_IDEOGRAPH-3155A> \xF0\xB1\x95\x9A
+<CJK_UNIFIED_IDEOGRAPH-3155B> \xF0\xB1\x95\x9B
+<CJK_UNIFIED_IDEOGRAPH-3155C> \xF0\xB1\x95\x9C
+<CJK_UNIFIED_IDEOGRAPH-3155D> \xF0\xB1\x95\x9D
+<CJK_UNIFIED_IDEOGRAPH-3155E> \xF0\xB1\x95\x9E
+<CJK_UNIFIED_IDEOGRAPH-3155F> \xF0\xB1\x95\x9F
+<CJK_UNIFIED_IDEOGRAPH-31560> \xF0\xB1\x95\xA0
+<CJK_UNIFIED_IDEOGRAPH-31561> \xF0\xB1\x95\xA1
+<CJK_UNIFIED_IDEOGRAPH-31562> \xF0\xB1\x95\xA2
+<CJK_UNIFIED_IDEOGRAPH-31563> \xF0\xB1\x95\xA3
+<CJK_UNIFIED_IDEOGRAPH-31564> \xF0\xB1\x95\xA4
+<CJK_UNIFIED_IDEOGRAPH-31565> \xF0\xB1\x95\xA5
+<CJK_UNIFIED_IDEOGRAPH-31566> \xF0\xB1\x95\xA6
+<CJK_UNIFIED_IDEOGRAPH-31567> \xF0\xB1\x95\xA7
+<CJK_UNIFIED_IDEOGRAPH-31568> \xF0\xB1\x95\xA8
+<CJK_UNIFIED_IDEOGRAPH-31569> \xF0\xB1\x95\xA9
+<CJK_UNIFIED_IDEOGRAPH-3156A> \xF0\xB1\x95\xAA
+<CJK_UNIFIED_IDEOGRAPH-3156B> \xF0\xB1\x95\xAB
+<CJK_UNIFIED_IDEOGRAPH-3156C> \xF0\xB1\x95\xAC
+<CJK_UNIFIED_IDEOGRAPH-3156D> \xF0\xB1\x95\xAD
+<CJK_UNIFIED_IDEOGRAPH-3156E> \xF0\xB1\x95\xAE
+<CJK_UNIFIED_IDEOGRAPH-3156F> \xF0\xB1\x95\xAF
+<CJK_UNIFIED_IDEOGRAPH-31570> \xF0\xB1\x95\xB0
+<CJK_UNIFIED_IDEOGRAPH-31571> \xF0\xB1\x95\xB1
+<CJK_UNIFIED_IDEOGRAPH-31572> \xF0\xB1\x95\xB2
+<CJK_UNIFIED_IDEOGRAPH-31573> \xF0\xB1\x95\xB3
+<CJK_UNIFIED_IDEOGRAPH-31574> \xF0\xB1\x95\xB4
+<CJK_UNIFIED_IDEOGRAPH-31575> \xF0\xB1\x95\xB5
+<CJK_UNIFIED_IDEOGRAPH-31576> \xF0\xB1\x95\xB6
+<CJK_UNIFIED_IDEOGRAPH-31577> \xF0\xB1\x95\xB7
+<CJK_UNIFIED_IDEOGRAPH-31578> \xF0\xB1\x95\xB8
+<CJK_UNIFIED_IDEOGRAPH-31579> \xF0\xB1\x95\xB9
+<CJK_UNIFIED_IDEOGRAPH-3157A> \xF0\xB1\x95\xBA
+<CJK_UNIFIED_IDEOGRAPH-3157B> \xF0\xB1\x95\xBB
+<CJK_UNIFIED_IDEOGRAPH-3157C> \xF0\xB1\x95\xBC
+<CJK_UNIFIED_IDEOGRAPH-3157D> \xF0\xB1\x95\xBD
+<CJK_UNIFIED_IDEOGRAPH-3157E> \xF0\xB1\x95\xBE
+<CJK_UNIFIED_IDEOGRAPH-3157F> \xF0\xB1\x95\xBF
+<CJK_UNIFIED_IDEOGRAPH-31580> \xF0\xB1\x96\x80
+<CJK_UNIFIED_IDEOGRAPH-31581> \xF0\xB1\x96\x81
+<CJK_UNIFIED_IDEOGRAPH-31582> \xF0\xB1\x96\x82
+<CJK_UNIFIED_IDEOGRAPH-31583> \xF0\xB1\x96\x83
+<CJK_UNIFIED_IDEOGRAPH-31584> \xF0\xB1\x96\x84
+<CJK_UNIFIED_IDEOGRAPH-31585> \xF0\xB1\x96\x85
+<CJK_UNIFIED_IDEOGRAPH-31586> \xF0\xB1\x96\x86
+<CJK_UNIFIED_IDEOGRAPH-31587> \xF0\xB1\x96\x87
+<CJK_UNIFIED_IDEOGRAPH-31588> \xF0\xB1\x96\x88
+<CJK_UNIFIED_IDEOGRAPH-31589> \xF0\xB1\x96\x89
+<CJK_UNIFIED_IDEOGRAPH-3158A> \xF0\xB1\x96\x8A
+<CJK_UNIFIED_IDEOGRAPH-3158B> \xF0\xB1\x96\x8B
+<CJK_UNIFIED_IDEOGRAPH-3158C> \xF0\xB1\x96\x8C
+<CJK_UNIFIED_IDEOGRAPH-3158D> \xF0\xB1\x96\x8D
+<CJK_UNIFIED_IDEOGRAPH-3158E> \xF0\xB1\x96\x8E
+<CJK_UNIFIED_IDEOGRAPH-3158F> \xF0\xB1\x96\x8F
+<CJK_UNIFIED_IDEOGRAPH-31590> \xF0\xB1\x96\x90
+<CJK_UNIFIED_IDEOGRAPH-31591> \xF0\xB1\x96\x91
+<CJK_UNIFIED_IDEOGRAPH-31592> \xF0\xB1\x96\x92
+<CJK_UNIFIED_IDEOGRAPH-31593> \xF0\xB1\x96\x93
+<CJK_UNIFIED_IDEOGRAPH-31594> \xF0\xB1\x96\x94
+<CJK_UNIFIED_IDEOGRAPH-31595> \xF0\xB1\x96\x95
+<CJK_UNIFIED_IDEOGRAPH-31596> \xF0\xB1\x96\x96
+<CJK_UNIFIED_IDEOGRAPH-31597> \xF0\xB1\x96\x97
+<CJK_UNIFIED_IDEOGRAPH-31598> \xF0\xB1\x96\x98
+<CJK_UNIFIED_IDEOGRAPH-31599> \xF0\xB1\x96\x99
+<CJK_UNIFIED_IDEOGRAPH-3159A> \xF0\xB1\x96\x9A
+<CJK_UNIFIED_IDEOGRAPH-3159B> \xF0\xB1\x96\x9B
+<CJK_UNIFIED_IDEOGRAPH-3159C> \xF0\xB1\x96\x9C
+<CJK_UNIFIED_IDEOGRAPH-3159D> \xF0\xB1\x96\x9D
+<CJK_UNIFIED_IDEOGRAPH-3159E> \xF0\xB1\x96\x9E
+<CJK_UNIFIED_IDEOGRAPH-3159F> \xF0\xB1\x96\x9F
+<CJK_UNIFIED_IDEOGRAPH-315A0> \xF0\xB1\x96\xA0
+<CJK_UNIFIED_IDEOGRAPH-315A1> \xF0\xB1\x96\xA1
+<CJK_UNIFIED_IDEOGRAPH-315A2> \xF0\xB1\x96\xA2
+<CJK_UNIFIED_IDEOGRAPH-315A3> \xF0\xB1\x96\xA3
+<CJK_UNIFIED_IDEOGRAPH-315A4> \xF0\xB1\x96\xA4
+<CJK_UNIFIED_IDEOGRAPH-315A5> \xF0\xB1\x96\xA5
+<CJK_UNIFIED_IDEOGRAPH-315A6> \xF0\xB1\x96\xA6
+<CJK_UNIFIED_IDEOGRAPH-315A7> \xF0\xB1\x96\xA7
+<CJK_UNIFIED_IDEOGRAPH-315A8> \xF0\xB1\x96\xA8
+<CJK_UNIFIED_IDEOGRAPH-315A9> \xF0\xB1\x96\xA9
+<CJK_UNIFIED_IDEOGRAPH-315AA> \xF0\xB1\x96\xAA
+<CJK_UNIFIED_IDEOGRAPH-315AB> \xF0\xB1\x96\xAB
+<CJK_UNIFIED_IDEOGRAPH-315AC> \xF0\xB1\x96\xAC
+<CJK_UNIFIED_IDEOGRAPH-315AD> \xF0\xB1\x96\xAD
+<CJK_UNIFIED_IDEOGRAPH-315AE> \xF0\xB1\x96\xAE
+<CJK_UNIFIED_IDEOGRAPH-315AF> \xF0\xB1\x96\xAF
+<CJK_UNIFIED_IDEOGRAPH-315B0> \xF0\xB1\x96\xB0
+<CJK_UNIFIED_IDEOGRAPH-315B1> \xF0\xB1\x96\xB1
+<CJK_UNIFIED_IDEOGRAPH-315B2> \xF0\xB1\x96\xB2
+<CJK_UNIFIED_IDEOGRAPH-315B3> \xF0\xB1\x96\xB3
+<CJK_UNIFIED_IDEOGRAPH-315B4> \xF0\xB1\x96\xB4
+<CJK_UNIFIED_IDEOGRAPH-315B5> \xF0\xB1\x96\xB5
+<CJK_UNIFIED_IDEOGRAPH-315B6> \xF0\xB1\x96\xB6
+<CJK_UNIFIED_IDEOGRAPH-315B7> \xF0\xB1\x96\xB7
+<CJK_UNIFIED_IDEOGRAPH-315B8> \xF0\xB1\x96\xB8
+<CJK_UNIFIED_IDEOGRAPH-315B9> \xF0\xB1\x96\xB9
+<CJK_UNIFIED_IDEOGRAPH-315BA> \xF0\xB1\x96\xBA
+<CJK_UNIFIED_IDEOGRAPH-315BB> \xF0\xB1\x96\xBB
+<CJK_UNIFIED_IDEOGRAPH-315BC> \xF0\xB1\x96\xBC
+<CJK_UNIFIED_IDEOGRAPH-315BD> \xF0\xB1\x96\xBD
+<CJK_UNIFIED_IDEOGRAPH-315BE> \xF0\xB1\x96\xBE
+<CJK_UNIFIED_IDEOGRAPH-315BF> \xF0\xB1\x96\xBF
+<CJK_UNIFIED_IDEOGRAPH-315C0> \xF0\xB1\x97\x80
+<CJK_UNIFIED_IDEOGRAPH-315C1> \xF0\xB1\x97\x81
+<CJK_UNIFIED_IDEOGRAPH-315C2> \xF0\xB1\x97\x82
+<CJK_UNIFIED_IDEOGRAPH-315C3> \xF0\xB1\x97\x83
+<CJK_UNIFIED_IDEOGRAPH-315C4> \xF0\xB1\x97\x84
+<CJK_UNIFIED_IDEOGRAPH-315C5> \xF0\xB1\x97\x85
+<CJK_UNIFIED_IDEOGRAPH-315C6> \xF0\xB1\x97\x86
+<CJK_UNIFIED_IDEOGRAPH-315C7> \xF0\xB1\x97\x87
+<CJK_UNIFIED_IDEOGRAPH-315C8> \xF0\xB1\x97\x88
+<CJK_UNIFIED_IDEOGRAPH-315C9> \xF0\xB1\x97\x89
+<CJK_UNIFIED_IDEOGRAPH-315CA> \xF0\xB1\x97\x8A
+<CJK_UNIFIED_IDEOGRAPH-315CB> \xF0\xB1\x97\x8B
+<CJK_UNIFIED_IDEOGRAPH-315CC> \xF0\xB1\x97\x8C
+<CJK_UNIFIED_IDEOGRAPH-315CD> \xF0\xB1\x97\x8D
+<CJK_UNIFIED_IDEOGRAPH-315CE> \xF0\xB1\x97\x8E
+<CJK_UNIFIED_IDEOGRAPH-315CF> \xF0\xB1\x97\x8F
+<CJK_UNIFIED_IDEOGRAPH-315D0> \xF0\xB1\x97\x90
+<CJK_UNIFIED_IDEOGRAPH-315D1> \xF0\xB1\x97\x91
+<CJK_UNIFIED_IDEOGRAPH-315D2> \xF0\xB1\x97\x92
+<CJK_UNIFIED_IDEOGRAPH-315D3> \xF0\xB1\x97\x93
+<CJK_UNIFIED_IDEOGRAPH-315D4> \xF0\xB1\x97\x94
+<CJK_UNIFIED_IDEOGRAPH-315D5> \xF0\xB1\x97\x95
+<CJK_UNIFIED_IDEOGRAPH-315D6> \xF0\xB1\x97\x96
+<CJK_UNIFIED_IDEOGRAPH-315D7> \xF0\xB1\x97\x97
+<CJK_UNIFIED_IDEOGRAPH-315D8> \xF0\xB1\x97\x98
+<CJK_UNIFIED_IDEOGRAPH-315D9> \xF0\xB1\x97\x99
+<CJK_UNIFIED_IDEOGRAPH-315DA> \xF0\xB1\x97\x9A
+<CJK_UNIFIED_IDEOGRAPH-315DB> \xF0\xB1\x97\x9B
+<CJK_UNIFIED_IDEOGRAPH-315DC> \xF0\xB1\x97\x9C
+<CJK_UNIFIED_IDEOGRAPH-315DD> \xF0\xB1\x97\x9D
+<CJK_UNIFIED_IDEOGRAPH-315DE> \xF0\xB1\x97\x9E
+<CJK_UNIFIED_IDEOGRAPH-315DF> \xF0\xB1\x97\x9F
+<CJK_UNIFIED_IDEOGRAPH-315E0> \xF0\xB1\x97\xA0
+<CJK_UNIFIED_IDEOGRAPH-315E1> \xF0\xB1\x97\xA1
+<CJK_UNIFIED_IDEOGRAPH-315E2> \xF0\xB1\x97\xA2
+<CJK_UNIFIED_IDEOGRAPH-315E3> \xF0\xB1\x97\xA3
+<CJK_UNIFIED_IDEOGRAPH-315E4> \xF0\xB1\x97\xA4
+<CJK_UNIFIED_IDEOGRAPH-315E5> \xF0\xB1\x97\xA5
+<CJK_UNIFIED_IDEOGRAPH-315E6> \xF0\xB1\x97\xA6
+<CJK_UNIFIED_IDEOGRAPH-315E7> \xF0\xB1\x97\xA7
+<CJK_UNIFIED_IDEOGRAPH-315E8> \xF0\xB1\x97\xA8
+<CJK_UNIFIED_IDEOGRAPH-315E9> \xF0\xB1\x97\xA9
+<CJK_UNIFIED_IDEOGRAPH-315EA> \xF0\xB1\x97\xAA
+<CJK_UNIFIED_IDEOGRAPH-315EB> \xF0\xB1\x97\xAB
+<CJK_UNIFIED_IDEOGRAPH-315EC> \xF0\xB1\x97\xAC
+<CJK_UNIFIED_IDEOGRAPH-315ED> \xF0\xB1\x97\xAD
+<CJK_UNIFIED_IDEOGRAPH-315EE> \xF0\xB1\x97\xAE
+<CJK_UNIFIED_IDEOGRAPH-315EF> \xF0\xB1\x97\xAF
+<CJK_UNIFIED_IDEOGRAPH-315F0> \xF0\xB1\x97\xB0
+<CJK_UNIFIED_IDEOGRAPH-315F1> \xF0\xB1\x97\xB1
+<CJK_UNIFIED_IDEOGRAPH-315F2> \xF0\xB1\x97\xB2
+<CJK_UNIFIED_IDEOGRAPH-315F3> \xF0\xB1\x97\xB3
+<CJK_UNIFIED_IDEOGRAPH-315F4> \xF0\xB1\x97\xB4
+<CJK_UNIFIED_IDEOGRAPH-315F5> \xF0\xB1\x97\xB5
+<CJK_UNIFIED_IDEOGRAPH-315F6> \xF0\xB1\x97\xB6
+<CJK_UNIFIED_IDEOGRAPH-315F7> \xF0\xB1\x97\xB7
+<CJK_UNIFIED_IDEOGRAPH-315F8> \xF0\xB1\x97\xB8
+<CJK_UNIFIED_IDEOGRAPH-315F9> \xF0\xB1\x97\xB9
+<CJK_UNIFIED_IDEOGRAPH-315FA> \xF0\xB1\x97\xBA
+<CJK_UNIFIED_IDEOGRAPH-315FB> \xF0\xB1\x97\xBB
+<CJK_UNIFIED_IDEOGRAPH-315FC> \xF0\xB1\x97\xBC
+<CJK_UNIFIED_IDEOGRAPH-315FD> \xF0\xB1\x97\xBD
+<CJK_UNIFIED_IDEOGRAPH-315FE> \xF0\xB1\x97\xBE
+<CJK_UNIFIED_IDEOGRAPH-315FF> \xF0\xB1\x97\xBF
+<CJK_UNIFIED_IDEOGRAPH-31600> \xF0\xB1\x98\x80
+<CJK_UNIFIED_IDEOGRAPH-31601> \xF0\xB1\x98\x81
+<CJK_UNIFIED_IDEOGRAPH-31602> \xF0\xB1\x98\x82
+<CJK_UNIFIED_IDEOGRAPH-31603> \xF0\xB1\x98\x83
+<CJK_UNIFIED_IDEOGRAPH-31604> \xF0\xB1\x98\x84
+<CJK_UNIFIED_IDEOGRAPH-31605> \xF0\xB1\x98\x85
+<CJK_UNIFIED_IDEOGRAPH-31606> \xF0\xB1\x98\x86
+<CJK_UNIFIED_IDEOGRAPH-31607> \xF0\xB1\x98\x87
+<CJK_UNIFIED_IDEOGRAPH-31608> \xF0\xB1\x98\x88
+<CJK_UNIFIED_IDEOGRAPH-31609> \xF0\xB1\x98\x89
+<CJK_UNIFIED_IDEOGRAPH-3160A> \xF0\xB1\x98\x8A
+<CJK_UNIFIED_IDEOGRAPH-3160B> \xF0\xB1\x98\x8B
+<CJK_UNIFIED_IDEOGRAPH-3160C> \xF0\xB1\x98\x8C
+<CJK_UNIFIED_IDEOGRAPH-3160D> \xF0\xB1\x98\x8D
+<CJK_UNIFIED_IDEOGRAPH-3160E> \xF0\xB1\x98\x8E
+<CJK_UNIFIED_IDEOGRAPH-3160F> \xF0\xB1\x98\x8F
+<CJK_UNIFIED_IDEOGRAPH-31610> \xF0\xB1\x98\x90
+<CJK_UNIFIED_IDEOGRAPH-31611> \xF0\xB1\x98\x91
+<CJK_UNIFIED_IDEOGRAPH-31612> \xF0\xB1\x98\x92
+<CJK_UNIFIED_IDEOGRAPH-31613> \xF0\xB1\x98\x93
+<CJK_UNIFIED_IDEOGRAPH-31614> \xF0\xB1\x98\x94
+<CJK_UNIFIED_IDEOGRAPH-31615> \xF0\xB1\x98\x95
+<CJK_UNIFIED_IDEOGRAPH-31616> \xF0\xB1\x98\x96
+<CJK_UNIFIED_IDEOGRAPH-31617> \xF0\xB1\x98\x97
+<CJK_UNIFIED_IDEOGRAPH-31618> \xF0\xB1\x98\x98
+<CJK_UNIFIED_IDEOGRAPH-31619> \xF0\xB1\x98\x99
+<CJK_UNIFIED_IDEOGRAPH-3161A> \xF0\xB1\x98\x9A
+<CJK_UNIFIED_IDEOGRAPH-3161B> \xF0\xB1\x98\x9B
+<CJK_UNIFIED_IDEOGRAPH-3161C> \xF0\xB1\x98\x9C
+<CJK_UNIFIED_IDEOGRAPH-3161D> \xF0\xB1\x98\x9D
+<CJK_UNIFIED_IDEOGRAPH-3161E> \xF0\xB1\x98\x9E
+<CJK_UNIFIED_IDEOGRAPH-3161F> \xF0\xB1\x98\x9F
+<CJK_UNIFIED_IDEOGRAPH-31620> \xF0\xB1\x98\xA0
+<CJK_UNIFIED_IDEOGRAPH-31621> \xF0\xB1\x98\xA1
+<CJK_UNIFIED_IDEOGRAPH-31622> \xF0\xB1\x98\xA2
+<CJK_UNIFIED_IDEOGRAPH-31623> \xF0\xB1\x98\xA3
+<CJK_UNIFIED_IDEOGRAPH-31624> \xF0\xB1\x98\xA4
+<CJK_UNIFIED_IDEOGRAPH-31625> \xF0\xB1\x98\xA5
+<CJK_UNIFIED_IDEOGRAPH-31626> \xF0\xB1\x98\xA6
+<CJK_UNIFIED_IDEOGRAPH-31627> \xF0\xB1\x98\xA7
+<CJK_UNIFIED_IDEOGRAPH-31628> \xF0\xB1\x98\xA8
+<CJK_UNIFIED_IDEOGRAPH-31629> \xF0\xB1\x98\xA9
+<CJK_UNIFIED_IDEOGRAPH-3162A> \xF0\xB1\x98\xAA
+<CJK_UNIFIED_IDEOGRAPH-3162B> \xF0\xB1\x98\xAB
+<CJK_UNIFIED_IDEOGRAPH-3162C> \xF0\xB1\x98\xAC
+<CJK_UNIFIED_IDEOGRAPH-3162D> \xF0\xB1\x98\xAD
+<CJK_UNIFIED_IDEOGRAPH-3162E> \xF0\xB1\x98\xAE
+<CJK_UNIFIED_IDEOGRAPH-3162F> \xF0\xB1\x98\xAF
+<CJK_UNIFIED_IDEOGRAPH-31630> \xF0\xB1\x98\xB0
+<CJK_UNIFIED_IDEOGRAPH-31631> \xF0\xB1\x98\xB1
+<CJK_UNIFIED_IDEOGRAPH-31632> \xF0\xB1\x98\xB2
+<CJK_UNIFIED_IDEOGRAPH-31633> \xF0\xB1\x98\xB3
+<CJK_UNIFIED_IDEOGRAPH-31634> \xF0\xB1\x98\xB4
+<CJK_UNIFIED_IDEOGRAPH-31635> \xF0\xB1\x98\xB5
+<CJK_UNIFIED_IDEOGRAPH-31636> \xF0\xB1\x98\xB6
+<CJK_UNIFIED_IDEOGRAPH-31637> \xF0\xB1\x98\xB7
+<CJK_UNIFIED_IDEOGRAPH-31638> \xF0\xB1\x98\xB8
+<CJK_UNIFIED_IDEOGRAPH-31639> \xF0\xB1\x98\xB9
+<CJK_UNIFIED_IDEOGRAPH-3163A> \xF0\xB1\x98\xBA
+<CJK_UNIFIED_IDEOGRAPH-3163B> \xF0\xB1\x98\xBB
+<CJK_UNIFIED_IDEOGRAPH-3163C> \xF0\xB1\x98\xBC
+<CJK_UNIFIED_IDEOGRAPH-3163D> \xF0\xB1\x98\xBD
+<CJK_UNIFIED_IDEOGRAPH-3163E> \xF0\xB1\x98\xBE
+<CJK_UNIFIED_IDEOGRAPH-3163F> \xF0\xB1\x98\xBF
+<CJK_UNIFIED_IDEOGRAPH-31640> \xF0\xB1\x99\x80
+<CJK_UNIFIED_IDEOGRAPH-31641> \xF0\xB1\x99\x81
+<CJK_UNIFIED_IDEOGRAPH-31642> \xF0\xB1\x99\x82
+<CJK_UNIFIED_IDEOGRAPH-31643> \xF0\xB1\x99\x83
+<CJK_UNIFIED_IDEOGRAPH-31644> \xF0\xB1\x99\x84
+<CJK_UNIFIED_IDEOGRAPH-31645> \xF0\xB1\x99\x85
+<CJK_UNIFIED_IDEOGRAPH-31646> \xF0\xB1\x99\x86
+<CJK_UNIFIED_IDEOGRAPH-31647> \xF0\xB1\x99\x87
+<CJK_UNIFIED_IDEOGRAPH-31648> \xF0\xB1\x99\x88
+<CJK_UNIFIED_IDEOGRAPH-31649> \xF0\xB1\x99\x89
+<CJK_UNIFIED_IDEOGRAPH-3164A> \xF0\xB1\x99\x8A
+<CJK_UNIFIED_IDEOGRAPH-3164B> \xF0\xB1\x99\x8B
+<CJK_UNIFIED_IDEOGRAPH-3164C> \xF0\xB1\x99\x8C
+<CJK_UNIFIED_IDEOGRAPH-3164D> \xF0\xB1\x99\x8D
+<CJK_UNIFIED_IDEOGRAPH-3164E> \xF0\xB1\x99\x8E
+<CJK_UNIFIED_IDEOGRAPH-3164F> \xF0\xB1\x99\x8F
+<CJK_UNIFIED_IDEOGRAPH-31650> \xF0\xB1\x99\x90
+<CJK_UNIFIED_IDEOGRAPH-31651> \xF0\xB1\x99\x91
+<CJK_UNIFIED_IDEOGRAPH-31652> \xF0\xB1\x99\x92
+<CJK_UNIFIED_IDEOGRAPH-31653> \xF0\xB1\x99\x93
+<CJK_UNIFIED_IDEOGRAPH-31654> \xF0\xB1\x99\x94
+<CJK_UNIFIED_IDEOGRAPH-31655> \xF0\xB1\x99\x95
+<CJK_UNIFIED_IDEOGRAPH-31656> \xF0\xB1\x99\x96
+<CJK_UNIFIED_IDEOGRAPH-31657> \xF0\xB1\x99\x97
+<CJK_UNIFIED_IDEOGRAPH-31658> \xF0\xB1\x99\x98
+<CJK_UNIFIED_IDEOGRAPH-31659> \xF0\xB1\x99\x99
+<CJK_UNIFIED_IDEOGRAPH-3165A> \xF0\xB1\x99\x9A
+<CJK_UNIFIED_IDEOGRAPH-3165B> \xF0\xB1\x99\x9B
+<CJK_UNIFIED_IDEOGRAPH-3165C> \xF0\xB1\x99\x9C
+<CJK_UNIFIED_IDEOGRAPH-3165D> \xF0\xB1\x99\x9D
+<CJK_UNIFIED_IDEOGRAPH-3165E> \xF0\xB1\x99\x9E
+<CJK_UNIFIED_IDEOGRAPH-3165F> \xF0\xB1\x99\x9F
+<CJK_UNIFIED_IDEOGRAPH-31660> \xF0\xB1\x99\xA0
+<CJK_UNIFIED_IDEOGRAPH-31661> \xF0\xB1\x99\xA1
+<CJK_UNIFIED_IDEOGRAPH-31662> \xF0\xB1\x99\xA2
+<CJK_UNIFIED_IDEOGRAPH-31663> \xF0\xB1\x99\xA3
+<CJK_UNIFIED_IDEOGRAPH-31664> \xF0\xB1\x99\xA4
+<CJK_UNIFIED_IDEOGRAPH-31665> \xF0\xB1\x99\xA5
+<CJK_UNIFIED_IDEOGRAPH-31666> \xF0\xB1\x99\xA6
+<CJK_UNIFIED_IDEOGRAPH-31667> \xF0\xB1\x99\xA7
+<CJK_UNIFIED_IDEOGRAPH-31668> \xF0\xB1\x99\xA8
+<CJK_UNIFIED_IDEOGRAPH-31669> \xF0\xB1\x99\xA9
+<CJK_UNIFIED_IDEOGRAPH-3166A> \xF0\xB1\x99\xAA
+<CJK_UNIFIED_IDEOGRAPH-3166B> \xF0\xB1\x99\xAB
+<CJK_UNIFIED_IDEOGRAPH-3166C> \xF0\xB1\x99\xAC
+<CJK_UNIFIED_IDEOGRAPH-3166D> \xF0\xB1\x99\xAD
+<CJK_UNIFIED_IDEOGRAPH-3166E> \xF0\xB1\x99\xAE
+<CJK_UNIFIED_IDEOGRAPH-3166F> \xF0\xB1\x99\xAF
+<CJK_UNIFIED_IDEOGRAPH-31670> \xF0\xB1\x99\xB0
+<CJK_UNIFIED_IDEOGRAPH-31671> \xF0\xB1\x99\xB1
+<CJK_UNIFIED_IDEOGRAPH-31672> \xF0\xB1\x99\xB2
+<CJK_UNIFIED_IDEOGRAPH-31673> \xF0\xB1\x99\xB3
+<CJK_UNIFIED_IDEOGRAPH-31674> \xF0\xB1\x99\xB4
+<CJK_UNIFIED_IDEOGRAPH-31675> \xF0\xB1\x99\xB5
+<CJK_UNIFIED_IDEOGRAPH-31676> \xF0\xB1\x99\xB6
+<CJK_UNIFIED_IDEOGRAPH-31677> \xF0\xB1\x99\xB7
+<CJK_UNIFIED_IDEOGRAPH-31678> \xF0\xB1\x99\xB8
+<CJK_UNIFIED_IDEOGRAPH-31679> \xF0\xB1\x99\xB9
+<CJK_UNIFIED_IDEOGRAPH-3167A> \xF0\xB1\x99\xBA
+<CJK_UNIFIED_IDEOGRAPH-3167B> \xF0\xB1\x99\xBB
+<CJK_UNIFIED_IDEOGRAPH-3167C> \xF0\xB1\x99\xBC
+<CJK_UNIFIED_IDEOGRAPH-3167D> \xF0\xB1\x99\xBD
+<CJK_UNIFIED_IDEOGRAPH-3167E> \xF0\xB1\x99\xBE
+<CJK_UNIFIED_IDEOGRAPH-3167F> \xF0\xB1\x99\xBF
+<CJK_UNIFIED_IDEOGRAPH-31680> \xF0\xB1\x9A\x80
+<CJK_UNIFIED_IDEOGRAPH-31681> \xF0\xB1\x9A\x81
+<CJK_UNIFIED_IDEOGRAPH-31682> \xF0\xB1\x9A\x82
+<CJK_UNIFIED_IDEOGRAPH-31683> \xF0\xB1\x9A\x83
+<CJK_UNIFIED_IDEOGRAPH-31684> \xF0\xB1\x9A\x84
+<CJK_UNIFIED_IDEOGRAPH-31685> \xF0\xB1\x9A\x85
+<CJK_UNIFIED_IDEOGRAPH-31686> \xF0\xB1\x9A\x86
+<CJK_UNIFIED_IDEOGRAPH-31687> \xF0\xB1\x9A\x87
+<CJK_UNIFIED_IDEOGRAPH-31688> \xF0\xB1\x9A\x88
+<CJK_UNIFIED_IDEOGRAPH-31689> \xF0\xB1\x9A\x89
+<CJK_UNIFIED_IDEOGRAPH-3168A> \xF0\xB1\x9A\x8A
+<CJK_UNIFIED_IDEOGRAPH-3168B> \xF0\xB1\x9A\x8B
+<CJK_UNIFIED_IDEOGRAPH-3168C> \xF0\xB1\x9A\x8C
+<CJK_UNIFIED_IDEOGRAPH-3168D> \xF0\xB1\x9A\x8D
+<CJK_UNIFIED_IDEOGRAPH-3168E> \xF0\xB1\x9A\x8E
+<CJK_UNIFIED_IDEOGRAPH-3168F> \xF0\xB1\x9A\x8F
+<CJK_UNIFIED_IDEOGRAPH-31690> \xF0\xB1\x9A\x90
+<CJK_UNIFIED_IDEOGRAPH-31691> \xF0\xB1\x9A\x91
+<CJK_UNIFIED_IDEOGRAPH-31692> \xF0\xB1\x9A\x92
+<CJK_UNIFIED_IDEOGRAPH-31693> \xF0\xB1\x9A\x93
+<CJK_UNIFIED_IDEOGRAPH-31694> \xF0\xB1\x9A\x94
+<CJK_UNIFIED_IDEOGRAPH-31695> \xF0\xB1\x9A\x95
+<CJK_UNIFIED_IDEOGRAPH-31696> \xF0\xB1\x9A\x96
+<CJK_UNIFIED_IDEOGRAPH-31697> \xF0\xB1\x9A\x97
+<CJK_UNIFIED_IDEOGRAPH-31698> \xF0\xB1\x9A\x98
+<CJK_UNIFIED_IDEOGRAPH-31699> \xF0\xB1\x9A\x99
+<CJK_UNIFIED_IDEOGRAPH-3169A> \xF0\xB1\x9A\x9A
+<CJK_UNIFIED_IDEOGRAPH-3169B> \xF0\xB1\x9A\x9B
+<CJK_UNIFIED_IDEOGRAPH-3169C> \xF0\xB1\x9A\x9C
+<CJK_UNIFIED_IDEOGRAPH-3169D> \xF0\xB1\x9A\x9D
+<CJK_UNIFIED_IDEOGRAPH-3169E> \xF0\xB1\x9A\x9E
+<CJK_UNIFIED_IDEOGRAPH-3169F> \xF0\xB1\x9A\x9F
+<CJK_UNIFIED_IDEOGRAPH-316A0> \xF0\xB1\x9A\xA0
+<CJK_UNIFIED_IDEOGRAPH-316A1> \xF0\xB1\x9A\xA1
+<CJK_UNIFIED_IDEOGRAPH-316A2> \xF0\xB1\x9A\xA2
+<CJK_UNIFIED_IDEOGRAPH-316A3> \xF0\xB1\x9A\xA3
+<CJK_UNIFIED_IDEOGRAPH-316A4> \xF0\xB1\x9A\xA4
+<CJK_UNIFIED_IDEOGRAPH-316A5> \xF0\xB1\x9A\xA5
+<CJK_UNIFIED_IDEOGRAPH-316A6> \xF0\xB1\x9A\xA6
+<CJK_UNIFIED_IDEOGRAPH-316A7> \xF0\xB1\x9A\xA7
+<CJK_UNIFIED_IDEOGRAPH-316A8> \xF0\xB1\x9A\xA8
+<CJK_UNIFIED_IDEOGRAPH-316A9> \xF0\xB1\x9A\xA9
+<CJK_UNIFIED_IDEOGRAPH-316AA> \xF0\xB1\x9A\xAA
+<CJK_UNIFIED_IDEOGRAPH-316AB> \xF0\xB1\x9A\xAB
+<CJK_UNIFIED_IDEOGRAPH-316AC> \xF0\xB1\x9A\xAC
+<CJK_UNIFIED_IDEOGRAPH-316AD> \xF0\xB1\x9A\xAD
+<CJK_UNIFIED_IDEOGRAPH-316AE> \xF0\xB1\x9A\xAE
+<CJK_UNIFIED_IDEOGRAPH-316AF> \xF0\xB1\x9A\xAF
+<CJK_UNIFIED_IDEOGRAPH-316B0> \xF0\xB1\x9A\xB0
+<CJK_UNIFIED_IDEOGRAPH-316B1> \xF0\xB1\x9A\xB1
+<CJK_UNIFIED_IDEOGRAPH-316B2> \xF0\xB1\x9A\xB2
+<CJK_UNIFIED_IDEOGRAPH-316B3> \xF0\xB1\x9A\xB3
+<CJK_UNIFIED_IDEOGRAPH-316B4> \xF0\xB1\x9A\xB4
+<CJK_UNIFIED_IDEOGRAPH-316B5> \xF0\xB1\x9A\xB5
+<CJK_UNIFIED_IDEOGRAPH-316B6> \xF0\xB1\x9A\xB6
+<CJK_UNIFIED_IDEOGRAPH-316B7> \xF0\xB1\x9A\xB7
+<CJK_UNIFIED_IDEOGRAPH-316B8> \xF0\xB1\x9A\xB8
+<CJK_UNIFIED_IDEOGRAPH-316B9> \xF0\xB1\x9A\xB9
+<CJK_UNIFIED_IDEOGRAPH-316BA> \xF0\xB1\x9A\xBA
+<CJK_UNIFIED_IDEOGRAPH-316BB> \xF0\xB1\x9A\xBB
+<CJK_UNIFIED_IDEOGRAPH-316BC> \xF0\xB1\x9A\xBC
+<CJK_UNIFIED_IDEOGRAPH-316BD> \xF0\xB1\x9A\xBD
+<CJK_UNIFIED_IDEOGRAPH-316BE> \xF0\xB1\x9A\xBE
+<CJK_UNIFIED_IDEOGRAPH-316BF> \xF0\xB1\x9A\xBF
+<CJK_UNIFIED_IDEOGRAPH-316C0> \xF0\xB1\x9B\x80
+<CJK_UNIFIED_IDEOGRAPH-316C1> \xF0\xB1\x9B\x81
+<CJK_UNIFIED_IDEOGRAPH-316C2> \xF0\xB1\x9B\x82
+<CJK_UNIFIED_IDEOGRAPH-316C3> \xF0\xB1\x9B\x83
+<CJK_UNIFIED_IDEOGRAPH-316C4> \xF0\xB1\x9B\x84
+<CJK_UNIFIED_IDEOGRAPH-316C5> \xF0\xB1\x9B\x85
+<CJK_UNIFIED_IDEOGRAPH-316C6> \xF0\xB1\x9B\x86
+<CJK_UNIFIED_IDEOGRAPH-316C7> \xF0\xB1\x9B\x87
+<CJK_UNIFIED_IDEOGRAPH-316C8> \xF0\xB1\x9B\x88
+<CJK_UNIFIED_IDEOGRAPH-316C9> \xF0\xB1\x9B\x89
+<CJK_UNIFIED_IDEOGRAPH-316CA> \xF0\xB1\x9B\x8A
+<CJK_UNIFIED_IDEOGRAPH-316CB> \xF0\xB1\x9B\x8B
+<CJK_UNIFIED_IDEOGRAPH-316CC> \xF0\xB1\x9B\x8C
+<CJK_UNIFIED_IDEOGRAPH-316CD> \xF0\xB1\x9B\x8D
+<CJK_UNIFIED_IDEOGRAPH-316CE> \xF0\xB1\x9B\x8E
+<CJK_UNIFIED_IDEOGRAPH-316CF> \xF0\xB1\x9B\x8F
+<CJK_UNIFIED_IDEOGRAPH-316D0> \xF0\xB1\x9B\x90
+<CJK_UNIFIED_IDEOGRAPH-316D1> \xF0\xB1\x9B\x91
+<CJK_UNIFIED_IDEOGRAPH-316D2> \xF0\xB1\x9B\x92
+<CJK_UNIFIED_IDEOGRAPH-316D3> \xF0\xB1\x9B\x93
+<CJK_UNIFIED_IDEOGRAPH-316D4> \xF0\xB1\x9B\x94
+<CJK_UNIFIED_IDEOGRAPH-316D5> \xF0\xB1\x9B\x95
+<CJK_UNIFIED_IDEOGRAPH-316D6> \xF0\xB1\x9B\x96
+<CJK_UNIFIED_IDEOGRAPH-316D7> \xF0\xB1\x9B\x97
+<CJK_UNIFIED_IDEOGRAPH-316D8> \xF0\xB1\x9B\x98
+<CJK_UNIFIED_IDEOGRAPH-316D9> \xF0\xB1\x9B\x99
+<CJK_UNIFIED_IDEOGRAPH-316DA> \xF0\xB1\x9B\x9A
+<CJK_UNIFIED_IDEOGRAPH-316DB> \xF0\xB1\x9B\x9B
+<CJK_UNIFIED_IDEOGRAPH-316DC> \xF0\xB1\x9B\x9C
+<CJK_UNIFIED_IDEOGRAPH-316DD> \xF0\xB1\x9B\x9D
+<CJK_UNIFIED_IDEOGRAPH-316DE> \xF0\xB1\x9B\x9E
+<CJK_UNIFIED_IDEOGRAPH-316DF> \xF0\xB1\x9B\x9F
+<CJK_UNIFIED_IDEOGRAPH-316E0> \xF0\xB1\x9B\xA0
+<CJK_UNIFIED_IDEOGRAPH-316E1> \xF0\xB1\x9B\xA1
+<CJK_UNIFIED_IDEOGRAPH-316E2> \xF0\xB1\x9B\xA2
+<CJK_UNIFIED_IDEOGRAPH-316E3> \xF0\xB1\x9B\xA3
+<CJK_UNIFIED_IDEOGRAPH-316E4> \xF0\xB1\x9B\xA4
+<CJK_UNIFIED_IDEOGRAPH-316E5> \xF0\xB1\x9B\xA5
+<CJK_UNIFIED_IDEOGRAPH-316E6> \xF0\xB1\x9B\xA6
+<CJK_UNIFIED_IDEOGRAPH-316E7> \xF0\xB1\x9B\xA7
+<CJK_UNIFIED_IDEOGRAPH-316E8> \xF0\xB1\x9B\xA8
+<CJK_UNIFIED_IDEOGRAPH-316E9> \xF0\xB1\x9B\xA9
+<CJK_UNIFIED_IDEOGRAPH-316EA> \xF0\xB1\x9B\xAA
+<CJK_UNIFIED_IDEOGRAPH-316EB> \xF0\xB1\x9B\xAB
+<CJK_UNIFIED_IDEOGRAPH-316EC> \xF0\xB1\x9B\xAC
+<CJK_UNIFIED_IDEOGRAPH-316ED> \xF0\xB1\x9B\xAD
+<CJK_UNIFIED_IDEOGRAPH-316EE> \xF0\xB1\x9B\xAE
+<CJK_UNIFIED_IDEOGRAPH-316EF> \xF0\xB1\x9B\xAF
+<CJK_UNIFIED_IDEOGRAPH-316F0> \xF0\xB1\x9B\xB0
+<CJK_UNIFIED_IDEOGRAPH-316F1> \xF0\xB1\x9B\xB1
+<CJK_UNIFIED_IDEOGRAPH-316F2> \xF0\xB1\x9B\xB2
+<CJK_UNIFIED_IDEOGRAPH-316F3> \xF0\xB1\x9B\xB3
+<CJK_UNIFIED_IDEOGRAPH-316F4> \xF0\xB1\x9B\xB4
+<CJK_UNIFIED_IDEOGRAPH-316F5> \xF0\xB1\x9B\xB5
+<CJK_UNIFIED_IDEOGRAPH-316F6> \xF0\xB1\x9B\xB6
+<CJK_UNIFIED_IDEOGRAPH-316F7> \xF0\xB1\x9B\xB7
+<CJK_UNIFIED_IDEOGRAPH-316F8> \xF0\xB1\x9B\xB8
+<CJK_UNIFIED_IDEOGRAPH-316F9> \xF0\xB1\x9B\xB9
+<CJK_UNIFIED_IDEOGRAPH-316FA> \xF0\xB1\x9B\xBA
+<CJK_UNIFIED_IDEOGRAPH-316FB> \xF0\xB1\x9B\xBB
+<CJK_UNIFIED_IDEOGRAPH-316FC> \xF0\xB1\x9B\xBC
+<CJK_UNIFIED_IDEOGRAPH-316FD> \xF0\xB1\x9B\xBD
+<CJK_UNIFIED_IDEOGRAPH-316FE> \xF0\xB1\x9B\xBE
+<CJK_UNIFIED_IDEOGRAPH-316FF> \xF0\xB1\x9B\xBF
+<CJK_UNIFIED_IDEOGRAPH-31700> \xF0\xB1\x9C\x80
+<CJK_UNIFIED_IDEOGRAPH-31701> \xF0\xB1\x9C\x81
+<CJK_UNIFIED_IDEOGRAPH-31702> \xF0\xB1\x9C\x82
+<CJK_UNIFIED_IDEOGRAPH-31703> \xF0\xB1\x9C\x83
+<CJK_UNIFIED_IDEOGRAPH-31704> \xF0\xB1\x9C\x84
+<CJK_UNIFIED_IDEOGRAPH-31705> \xF0\xB1\x9C\x85
+<CJK_UNIFIED_IDEOGRAPH-31706> \xF0\xB1\x9C\x86
+<CJK_UNIFIED_IDEOGRAPH-31707> \xF0\xB1\x9C\x87
+<CJK_UNIFIED_IDEOGRAPH-31708> \xF0\xB1\x9C\x88
+<CJK_UNIFIED_IDEOGRAPH-31709> \xF0\xB1\x9C\x89
+<CJK_UNIFIED_IDEOGRAPH-3170A> \xF0\xB1\x9C\x8A
+<CJK_UNIFIED_IDEOGRAPH-3170B> \xF0\xB1\x9C\x8B
+<CJK_UNIFIED_IDEOGRAPH-3170C> \xF0\xB1\x9C\x8C
+<CJK_UNIFIED_IDEOGRAPH-3170D> \xF0\xB1\x9C\x8D
+<CJK_UNIFIED_IDEOGRAPH-3170E> \xF0\xB1\x9C\x8E
+<CJK_UNIFIED_IDEOGRAPH-3170F> \xF0\xB1\x9C\x8F
+<CJK_UNIFIED_IDEOGRAPH-31710> \xF0\xB1\x9C\x90
+<CJK_UNIFIED_IDEOGRAPH-31711> \xF0\xB1\x9C\x91
+<CJK_UNIFIED_IDEOGRAPH-31712> \xF0\xB1\x9C\x92
+<CJK_UNIFIED_IDEOGRAPH-31713> \xF0\xB1\x9C\x93
+<CJK_UNIFIED_IDEOGRAPH-31714> \xF0\xB1\x9C\x94
+<CJK_UNIFIED_IDEOGRAPH-31715> \xF0\xB1\x9C\x95
+<CJK_UNIFIED_IDEOGRAPH-31716> \xF0\xB1\x9C\x96
+<CJK_UNIFIED_IDEOGRAPH-31717> \xF0\xB1\x9C\x97
+<CJK_UNIFIED_IDEOGRAPH-31718> \xF0\xB1\x9C\x98
+<CJK_UNIFIED_IDEOGRAPH-31719> \xF0\xB1\x9C\x99
+<CJK_UNIFIED_IDEOGRAPH-3171A> \xF0\xB1\x9C\x9A
+<CJK_UNIFIED_IDEOGRAPH-3171B> \xF0\xB1\x9C\x9B
+<CJK_UNIFIED_IDEOGRAPH-3171C> \xF0\xB1\x9C\x9C
+<CJK_UNIFIED_IDEOGRAPH-3171D> \xF0\xB1\x9C\x9D
+<CJK_UNIFIED_IDEOGRAPH-3171E> \xF0\xB1\x9C\x9E
+<CJK_UNIFIED_IDEOGRAPH-3171F> \xF0\xB1\x9C\x9F
+<CJK_UNIFIED_IDEOGRAPH-31720> \xF0\xB1\x9C\xA0
+<CJK_UNIFIED_IDEOGRAPH-31721> \xF0\xB1\x9C\xA1
+<CJK_UNIFIED_IDEOGRAPH-31722> \xF0\xB1\x9C\xA2
+<CJK_UNIFIED_IDEOGRAPH-31723> \xF0\xB1\x9C\xA3
+<CJK_UNIFIED_IDEOGRAPH-31724> \xF0\xB1\x9C\xA4
+<CJK_UNIFIED_IDEOGRAPH-31725> \xF0\xB1\x9C\xA5
+<CJK_UNIFIED_IDEOGRAPH-31726> \xF0\xB1\x9C\xA6
+<CJK_UNIFIED_IDEOGRAPH-31727> \xF0\xB1\x9C\xA7
+<CJK_UNIFIED_IDEOGRAPH-31728> \xF0\xB1\x9C\xA8
+<CJK_UNIFIED_IDEOGRAPH-31729> \xF0\xB1\x9C\xA9
+<CJK_UNIFIED_IDEOGRAPH-3172A> \xF0\xB1\x9C\xAA
+<CJK_UNIFIED_IDEOGRAPH-3172B> \xF0\xB1\x9C\xAB
+<CJK_UNIFIED_IDEOGRAPH-3172C> \xF0\xB1\x9C\xAC
+<CJK_UNIFIED_IDEOGRAPH-3172D> \xF0\xB1\x9C\xAD
+<CJK_UNIFIED_IDEOGRAPH-3172E> \xF0\xB1\x9C\xAE
+<CJK_UNIFIED_IDEOGRAPH-3172F> \xF0\xB1\x9C\xAF
+<CJK_UNIFIED_IDEOGRAPH-31730> \xF0\xB1\x9C\xB0
+<CJK_UNIFIED_IDEOGRAPH-31731> \xF0\xB1\x9C\xB1
+<CJK_UNIFIED_IDEOGRAPH-31732> \xF0\xB1\x9C\xB2
+<CJK_UNIFIED_IDEOGRAPH-31733> \xF0\xB1\x9C\xB3
+<CJK_UNIFIED_IDEOGRAPH-31734> \xF0\xB1\x9C\xB4
+<CJK_UNIFIED_IDEOGRAPH-31735> \xF0\xB1\x9C\xB5
+<CJK_UNIFIED_IDEOGRAPH-31736> \xF0\xB1\x9C\xB6
+<CJK_UNIFIED_IDEOGRAPH-31737> \xF0\xB1\x9C\xB7
+<CJK_UNIFIED_IDEOGRAPH-31738> \xF0\xB1\x9C\xB8
+<CJK_UNIFIED_IDEOGRAPH-31739> \xF0\xB1\x9C\xB9
+<CJK_UNIFIED_IDEOGRAPH-3173A> \xF0\xB1\x9C\xBA
+<CJK_UNIFIED_IDEOGRAPH-3173B> \xF0\xB1\x9C\xBB
+<CJK_UNIFIED_IDEOGRAPH-3173C> \xF0\xB1\x9C\xBC
+<CJK_UNIFIED_IDEOGRAPH-3173D> \xF0\xB1\x9C\xBD
+<CJK_UNIFIED_IDEOGRAPH-3173E> \xF0\xB1\x9C\xBE
+<CJK_UNIFIED_IDEOGRAPH-3173F> \xF0\xB1\x9C\xBF
+<CJK_UNIFIED_IDEOGRAPH-31740> \xF0\xB1\x9D\x80
+<CJK_UNIFIED_IDEOGRAPH-31741> \xF0\xB1\x9D\x81
+<CJK_UNIFIED_IDEOGRAPH-31742> \xF0\xB1\x9D\x82
+<CJK_UNIFIED_IDEOGRAPH-31743> \xF0\xB1\x9D\x83
+<CJK_UNIFIED_IDEOGRAPH-31744> \xF0\xB1\x9D\x84
+<CJK_UNIFIED_IDEOGRAPH-31745> \xF0\xB1\x9D\x85
+<CJK_UNIFIED_IDEOGRAPH-31746> \xF0\xB1\x9D\x86
+<CJK_UNIFIED_IDEOGRAPH-31747> \xF0\xB1\x9D\x87
+<CJK_UNIFIED_IDEOGRAPH-31748> \xF0\xB1\x9D\x88
+<CJK_UNIFIED_IDEOGRAPH-31749> \xF0\xB1\x9D\x89
+<CJK_UNIFIED_IDEOGRAPH-3174A> \xF0\xB1\x9D\x8A
+<CJK_UNIFIED_IDEOGRAPH-3174B> \xF0\xB1\x9D\x8B
+<CJK_UNIFIED_IDEOGRAPH-3174C> \xF0\xB1\x9D\x8C
+<CJK_UNIFIED_IDEOGRAPH-3174D> \xF0\xB1\x9D\x8D
+<CJK_UNIFIED_IDEOGRAPH-3174E> \xF0\xB1\x9D\x8E
+<CJK_UNIFIED_IDEOGRAPH-3174F> \xF0\xB1\x9D\x8F
+<CJK_UNIFIED_IDEOGRAPH-31750> \xF0\xB1\x9D\x90
+<CJK_UNIFIED_IDEOGRAPH-31751> \xF0\xB1\x9D\x91
+<CJK_UNIFIED_IDEOGRAPH-31752> \xF0\xB1\x9D\x92
+<CJK_UNIFIED_IDEOGRAPH-31753> \xF0\xB1\x9D\x93
+<CJK_UNIFIED_IDEOGRAPH-31754> \xF0\xB1\x9D\x94
+<CJK_UNIFIED_IDEOGRAPH-31755> \xF0\xB1\x9D\x95
+<CJK_UNIFIED_IDEOGRAPH-31756> \xF0\xB1\x9D\x96
+<CJK_UNIFIED_IDEOGRAPH-31757> \xF0\xB1\x9D\x97
+<CJK_UNIFIED_IDEOGRAPH-31758> \xF0\xB1\x9D\x98
+<CJK_UNIFIED_IDEOGRAPH-31759> \xF0\xB1\x9D\x99
+<CJK_UNIFIED_IDEOGRAPH-3175A> \xF0\xB1\x9D\x9A
+<CJK_UNIFIED_IDEOGRAPH-3175B> \xF0\xB1\x9D\x9B
+<CJK_UNIFIED_IDEOGRAPH-3175C> \xF0\xB1\x9D\x9C
+<CJK_UNIFIED_IDEOGRAPH-3175D> \xF0\xB1\x9D\x9D
+<CJK_UNIFIED_IDEOGRAPH-3175E> \xF0\xB1\x9D\x9E
+<CJK_UNIFIED_IDEOGRAPH-3175F> \xF0\xB1\x9D\x9F
+<CJK_UNIFIED_IDEOGRAPH-31760> \xF0\xB1\x9D\xA0
+<CJK_UNIFIED_IDEOGRAPH-31761> \xF0\xB1\x9D\xA1
+<CJK_UNIFIED_IDEOGRAPH-31762> \xF0\xB1\x9D\xA2
+<CJK_UNIFIED_IDEOGRAPH-31763> \xF0\xB1\x9D\xA3
+<CJK_UNIFIED_IDEOGRAPH-31764> \xF0\xB1\x9D\xA4
+<CJK_UNIFIED_IDEOGRAPH-31765> \xF0\xB1\x9D\xA5
+<CJK_UNIFIED_IDEOGRAPH-31766> \xF0\xB1\x9D\xA6
+<CJK_UNIFIED_IDEOGRAPH-31767> \xF0\xB1\x9D\xA7
+<CJK_UNIFIED_IDEOGRAPH-31768> \xF0\xB1\x9D\xA8
+<CJK_UNIFIED_IDEOGRAPH-31769> \xF0\xB1\x9D\xA9
+<CJK_UNIFIED_IDEOGRAPH-3176A> \xF0\xB1\x9D\xAA
+<CJK_UNIFIED_IDEOGRAPH-3176B> \xF0\xB1\x9D\xAB
+<CJK_UNIFIED_IDEOGRAPH-3176C> \xF0\xB1\x9D\xAC
+<CJK_UNIFIED_IDEOGRAPH-3176D> \xF0\xB1\x9D\xAD
+<CJK_UNIFIED_IDEOGRAPH-3176E> \xF0\xB1\x9D\xAE
+<CJK_UNIFIED_IDEOGRAPH-3176F> \xF0\xB1\x9D\xAF
+<CJK_UNIFIED_IDEOGRAPH-31770> \xF0\xB1\x9D\xB0
+<CJK_UNIFIED_IDEOGRAPH-31771> \xF0\xB1\x9D\xB1
+<CJK_UNIFIED_IDEOGRAPH-31772> \xF0\xB1\x9D\xB2
+<CJK_UNIFIED_IDEOGRAPH-31773> \xF0\xB1\x9D\xB3
+<CJK_UNIFIED_IDEOGRAPH-31774> \xF0\xB1\x9D\xB4
+<CJK_UNIFIED_IDEOGRAPH-31775> \xF0\xB1\x9D\xB5
+<CJK_UNIFIED_IDEOGRAPH-31776> \xF0\xB1\x9D\xB6
+<CJK_UNIFIED_IDEOGRAPH-31777> \xF0\xB1\x9D\xB7
+<CJK_UNIFIED_IDEOGRAPH-31778> \xF0\xB1\x9D\xB8
+<CJK_UNIFIED_IDEOGRAPH-31779> \xF0\xB1\x9D\xB9
+<CJK_UNIFIED_IDEOGRAPH-3177A> \xF0\xB1\x9D\xBA
+<CJK_UNIFIED_IDEOGRAPH-3177B> \xF0\xB1\x9D\xBB
+<CJK_UNIFIED_IDEOGRAPH-3177C> \xF0\xB1\x9D\xBC
+<CJK_UNIFIED_IDEOGRAPH-3177D> \xF0\xB1\x9D\xBD
+<CJK_UNIFIED_IDEOGRAPH-3177E> \xF0\xB1\x9D\xBE
+<CJK_UNIFIED_IDEOGRAPH-3177F> \xF0\xB1\x9D\xBF
+<CJK_UNIFIED_IDEOGRAPH-31780> \xF0\xB1\x9E\x80
+<CJK_UNIFIED_IDEOGRAPH-31781> \xF0\xB1\x9E\x81
+<CJK_UNIFIED_IDEOGRAPH-31782> \xF0\xB1\x9E\x82
+<CJK_UNIFIED_IDEOGRAPH-31783> \xF0\xB1\x9E\x83
+<CJK_UNIFIED_IDEOGRAPH-31784> \xF0\xB1\x9E\x84
+<CJK_UNIFIED_IDEOGRAPH-31785> \xF0\xB1\x9E\x85
+<CJK_UNIFIED_IDEOGRAPH-31786> \xF0\xB1\x9E\x86
+<CJK_UNIFIED_IDEOGRAPH-31787> \xF0\xB1\x9E\x87
+<CJK_UNIFIED_IDEOGRAPH-31788> \xF0\xB1\x9E\x88
+<CJK_UNIFIED_IDEOGRAPH-31789> \xF0\xB1\x9E\x89
+<CJK_UNIFIED_IDEOGRAPH-3178A> \xF0\xB1\x9E\x8A
+<CJK_UNIFIED_IDEOGRAPH-3178B> \xF0\xB1\x9E\x8B
+<CJK_UNIFIED_IDEOGRAPH-3178C> \xF0\xB1\x9E\x8C
+<CJK_UNIFIED_IDEOGRAPH-3178D> \xF0\xB1\x9E\x8D
+<CJK_UNIFIED_IDEOGRAPH-3178E> \xF0\xB1\x9E\x8E
+<CJK_UNIFIED_IDEOGRAPH-3178F> \xF0\xB1\x9E\x8F
+<CJK_UNIFIED_IDEOGRAPH-31790> \xF0\xB1\x9E\x90
+<CJK_UNIFIED_IDEOGRAPH-31791> \xF0\xB1\x9E\x91
+<CJK_UNIFIED_IDEOGRAPH-31792> \xF0\xB1\x9E\x92
+<CJK_UNIFIED_IDEOGRAPH-31793> \xF0\xB1\x9E\x93
+<CJK_UNIFIED_IDEOGRAPH-31794> \xF0\xB1\x9E\x94
+<CJK_UNIFIED_IDEOGRAPH-31795> \xF0\xB1\x9E\x95
+<CJK_UNIFIED_IDEOGRAPH-31796> \xF0\xB1\x9E\x96
+<CJK_UNIFIED_IDEOGRAPH-31797> \xF0\xB1\x9E\x97
+<CJK_UNIFIED_IDEOGRAPH-31798> \xF0\xB1\x9E\x98
+<CJK_UNIFIED_IDEOGRAPH-31799> \xF0\xB1\x9E\x99
+<CJK_UNIFIED_IDEOGRAPH-3179A> \xF0\xB1\x9E\x9A
+<CJK_UNIFIED_IDEOGRAPH-3179B> \xF0\xB1\x9E\x9B
+<CJK_UNIFIED_IDEOGRAPH-3179C> \xF0\xB1\x9E\x9C
+<CJK_UNIFIED_IDEOGRAPH-3179D> \xF0\xB1\x9E\x9D
+<CJK_UNIFIED_IDEOGRAPH-3179E> \xF0\xB1\x9E\x9E
+<CJK_UNIFIED_IDEOGRAPH-3179F> \xF0\xB1\x9E\x9F
+<CJK_UNIFIED_IDEOGRAPH-317A0> \xF0\xB1\x9E\xA0
+<CJK_UNIFIED_IDEOGRAPH-317A1> \xF0\xB1\x9E\xA1
+<CJK_UNIFIED_IDEOGRAPH-317A2> \xF0\xB1\x9E\xA2
+<CJK_UNIFIED_IDEOGRAPH-317A3> \xF0\xB1\x9E\xA3
+<CJK_UNIFIED_IDEOGRAPH-317A4> \xF0\xB1\x9E\xA4
+<CJK_UNIFIED_IDEOGRAPH-317A5> \xF0\xB1\x9E\xA5
+<CJK_UNIFIED_IDEOGRAPH-317A6> \xF0\xB1\x9E\xA6
+<CJK_UNIFIED_IDEOGRAPH-317A7> \xF0\xB1\x9E\xA7
+<CJK_UNIFIED_IDEOGRAPH-317A8> \xF0\xB1\x9E\xA8
+<CJK_UNIFIED_IDEOGRAPH-317A9> \xF0\xB1\x9E\xA9
+<CJK_UNIFIED_IDEOGRAPH-317AA> \xF0\xB1\x9E\xAA
+<CJK_UNIFIED_IDEOGRAPH-317AB> \xF0\xB1\x9E\xAB
+<CJK_UNIFIED_IDEOGRAPH-317AC> \xF0\xB1\x9E\xAC
+<CJK_UNIFIED_IDEOGRAPH-317AD> \xF0\xB1\x9E\xAD
+<CJK_UNIFIED_IDEOGRAPH-317AE> \xF0\xB1\x9E\xAE
+<CJK_UNIFIED_IDEOGRAPH-317AF> \xF0\xB1\x9E\xAF
+<CJK_UNIFIED_IDEOGRAPH-317B0> \xF0\xB1\x9E\xB0
+<CJK_UNIFIED_IDEOGRAPH-317B1> \xF0\xB1\x9E\xB1
+<CJK_UNIFIED_IDEOGRAPH-317B2> \xF0\xB1\x9E\xB2
+<CJK_UNIFIED_IDEOGRAPH-317B3> \xF0\xB1\x9E\xB3
+<CJK_UNIFIED_IDEOGRAPH-317B4> \xF0\xB1\x9E\xB4
+<CJK_UNIFIED_IDEOGRAPH-317B5> \xF0\xB1\x9E\xB5
+<CJK_UNIFIED_IDEOGRAPH-317B6> \xF0\xB1\x9E\xB6
+<CJK_UNIFIED_IDEOGRAPH-317B7> \xF0\xB1\x9E\xB7
+<CJK_UNIFIED_IDEOGRAPH-317B8> \xF0\xB1\x9E\xB8
+<CJK_UNIFIED_IDEOGRAPH-317B9> \xF0\xB1\x9E\xB9
+<CJK_UNIFIED_IDEOGRAPH-317BA> \xF0\xB1\x9E\xBA
+<CJK_UNIFIED_IDEOGRAPH-317BB> \xF0\xB1\x9E\xBB
+<CJK_UNIFIED_IDEOGRAPH-317BC> \xF0\xB1\x9E\xBC
+<CJK_UNIFIED_IDEOGRAPH-317BD> \xF0\xB1\x9E\xBD
+<CJK_UNIFIED_IDEOGRAPH-317BE> \xF0\xB1\x9E\xBE
+<CJK_UNIFIED_IDEOGRAPH-317BF> \xF0\xB1\x9E\xBF
+<CJK_UNIFIED_IDEOGRAPH-317C0> \xF0\xB1\x9F\x80
+<CJK_UNIFIED_IDEOGRAPH-317C1> \xF0\xB1\x9F\x81
+<CJK_UNIFIED_IDEOGRAPH-317C2> \xF0\xB1\x9F\x82
+<CJK_UNIFIED_IDEOGRAPH-317C3> \xF0\xB1\x9F\x83
+<CJK_UNIFIED_IDEOGRAPH-317C4> \xF0\xB1\x9F\x84
+<CJK_UNIFIED_IDEOGRAPH-317C5> \xF0\xB1\x9F\x85
+<CJK_UNIFIED_IDEOGRAPH-317C6> \xF0\xB1\x9F\x86
+<CJK_UNIFIED_IDEOGRAPH-317C7> \xF0\xB1\x9F\x87
+<CJK_UNIFIED_IDEOGRAPH-317C8> \xF0\xB1\x9F\x88
+<CJK_UNIFIED_IDEOGRAPH-317C9> \xF0\xB1\x9F\x89
+<CJK_UNIFIED_IDEOGRAPH-317CA> \xF0\xB1\x9F\x8A
+<CJK_UNIFIED_IDEOGRAPH-317CB> \xF0\xB1\x9F\x8B
+<CJK_UNIFIED_IDEOGRAPH-317CC> \xF0\xB1\x9F\x8C
+<CJK_UNIFIED_IDEOGRAPH-317CD> \xF0\xB1\x9F\x8D
+<CJK_UNIFIED_IDEOGRAPH-317CE> \xF0\xB1\x9F\x8E
+<CJK_UNIFIED_IDEOGRAPH-317CF> \xF0\xB1\x9F\x8F
+<CJK_UNIFIED_IDEOGRAPH-317D0> \xF0\xB1\x9F\x90
+<CJK_UNIFIED_IDEOGRAPH-317D1> \xF0\xB1\x9F\x91
+<CJK_UNIFIED_IDEOGRAPH-317D2> \xF0\xB1\x9F\x92
+<CJK_UNIFIED_IDEOGRAPH-317D3> \xF0\xB1\x9F\x93
+<CJK_UNIFIED_IDEOGRAPH-317D4> \xF0\xB1\x9F\x94
+<CJK_UNIFIED_IDEOGRAPH-317D5> \xF0\xB1\x9F\x95
+<CJK_UNIFIED_IDEOGRAPH-317D6> \xF0\xB1\x9F\x96
+<CJK_UNIFIED_IDEOGRAPH-317D7> \xF0\xB1\x9F\x97
+<CJK_UNIFIED_IDEOGRAPH-317D8> \xF0\xB1\x9F\x98
+<CJK_UNIFIED_IDEOGRAPH-317D9> \xF0\xB1\x9F\x99
+<CJK_UNIFIED_IDEOGRAPH-317DA> \xF0\xB1\x9F\x9A
+<CJK_UNIFIED_IDEOGRAPH-317DB> \xF0\xB1\x9F\x9B
+<CJK_UNIFIED_IDEOGRAPH-317DC> \xF0\xB1\x9F\x9C
+<CJK_UNIFIED_IDEOGRAPH-317DD> \xF0\xB1\x9F\x9D
+<CJK_UNIFIED_IDEOGRAPH-317DE> \xF0\xB1\x9F\x9E
+<CJK_UNIFIED_IDEOGRAPH-317DF> \xF0\xB1\x9F\x9F
+<CJK_UNIFIED_IDEOGRAPH-317E0> \xF0\xB1\x9F\xA0
+<CJK_UNIFIED_IDEOGRAPH-317E1> \xF0\xB1\x9F\xA1
+<CJK_UNIFIED_IDEOGRAPH-317E2> \xF0\xB1\x9F\xA2
+<CJK_UNIFIED_IDEOGRAPH-317E3> \xF0\xB1\x9F\xA3
+<CJK_UNIFIED_IDEOGRAPH-317E4> \xF0\xB1\x9F\xA4
+<CJK_UNIFIED_IDEOGRAPH-317E5> \xF0\xB1\x9F\xA5
+<CJK_UNIFIED_IDEOGRAPH-317E6> \xF0\xB1\x9F\xA6
+<CJK_UNIFIED_IDEOGRAPH-317E7> \xF0\xB1\x9F\xA7
+<CJK_UNIFIED_IDEOGRAPH-317E8> \xF0\xB1\x9F\xA8
+<CJK_UNIFIED_IDEOGRAPH-317E9> \xF0\xB1\x9F\xA9
+<CJK_UNIFIED_IDEOGRAPH-317EA> \xF0\xB1\x9F\xAA
+<CJK_UNIFIED_IDEOGRAPH-317EB> \xF0\xB1\x9F\xAB
+<CJK_UNIFIED_IDEOGRAPH-317EC> \xF0\xB1\x9F\xAC
+<CJK_UNIFIED_IDEOGRAPH-317ED> \xF0\xB1\x9F\xAD
+<CJK_UNIFIED_IDEOGRAPH-317EE> \xF0\xB1\x9F\xAE
+<CJK_UNIFIED_IDEOGRAPH-317EF> \xF0\xB1\x9F\xAF
+<CJK_UNIFIED_IDEOGRAPH-317F0> \xF0\xB1\x9F\xB0
+<CJK_UNIFIED_IDEOGRAPH-317F1> \xF0\xB1\x9F\xB1
+<CJK_UNIFIED_IDEOGRAPH-317F2> \xF0\xB1\x9F\xB2
+<CJK_UNIFIED_IDEOGRAPH-317F3> \xF0\xB1\x9F\xB3
+<CJK_UNIFIED_IDEOGRAPH-317F4> \xF0\xB1\x9F\xB4
+<CJK_UNIFIED_IDEOGRAPH-317F5> \xF0\xB1\x9F\xB5
+<CJK_UNIFIED_IDEOGRAPH-317F6> \xF0\xB1\x9F\xB6
+<CJK_UNIFIED_IDEOGRAPH-317F7> \xF0\xB1\x9F\xB7
+<CJK_UNIFIED_IDEOGRAPH-317F8> \xF0\xB1\x9F\xB8
+<CJK_UNIFIED_IDEOGRAPH-317F9> \xF0\xB1\x9F\xB9
+<CJK_UNIFIED_IDEOGRAPH-317FA> \xF0\xB1\x9F\xBA
+<CJK_UNIFIED_IDEOGRAPH-317FB> \xF0\xB1\x9F\xBB
+<CJK_UNIFIED_IDEOGRAPH-317FC> \xF0\xB1\x9F\xBC
+<CJK_UNIFIED_IDEOGRAPH-317FD> \xF0\xB1\x9F\xBD
+<CJK_UNIFIED_IDEOGRAPH-317FE> \xF0\xB1\x9F\xBE
+<CJK_UNIFIED_IDEOGRAPH-317FF> \xF0\xB1\x9F\xBF
+<CJK_UNIFIED_IDEOGRAPH-31800> \xF0\xB1\xA0\x80
+<CJK_UNIFIED_IDEOGRAPH-31801> \xF0\xB1\xA0\x81
+<CJK_UNIFIED_IDEOGRAPH-31802> \xF0\xB1\xA0\x82
+<CJK_UNIFIED_IDEOGRAPH-31803> \xF0\xB1\xA0\x83
+<CJK_UNIFIED_IDEOGRAPH-31804> \xF0\xB1\xA0\x84
+<CJK_UNIFIED_IDEOGRAPH-31805> \xF0\xB1\xA0\x85
+<CJK_UNIFIED_IDEOGRAPH-31806> \xF0\xB1\xA0\x86
+<CJK_UNIFIED_IDEOGRAPH-31807> \xF0\xB1\xA0\x87
+<CJK_UNIFIED_IDEOGRAPH-31808> \xF0\xB1\xA0\x88
+<CJK_UNIFIED_IDEOGRAPH-31809> \xF0\xB1\xA0\x89
+<CJK_UNIFIED_IDEOGRAPH-3180A> \xF0\xB1\xA0\x8A
+<CJK_UNIFIED_IDEOGRAPH-3180B> \xF0\xB1\xA0\x8B
+<CJK_UNIFIED_IDEOGRAPH-3180C> \xF0\xB1\xA0\x8C
+<CJK_UNIFIED_IDEOGRAPH-3180D> \xF0\xB1\xA0\x8D
+<CJK_UNIFIED_IDEOGRAPH-3180E> \xF0\xB1\xA0\x8E
+<CJK_UNIFIED_IDEOGRAPH-3180F> \xF0\xB1\xA0\x8F
+<CJK_UNIFIED_IDEOGRAPH-31810> \xF0\xB1\xA0\x90
+<CJK_UNIFIED_IDEOGRAPH-31811> \xF0\xB1\xA0\x91
+<CJK_UNIFIED_IDEOGRAPH-31812> \xF0\xB1\xA0\x92
+<CJK_UNIFIED_IDEOGRAPH-31813> \xF0\xB1\xA0\x93
+<CJK_UNIFIED_IDEOGRAPH-31814> \xF0\xB1\xA0\x94
+<CJK_UNIFIED_IDEOGRAPH-31815> \xF0\xB1\xA0\x95
+<CJK_UNIFIED_IDEOGRAPH-31816> \xF0\xB1\xA0\x96
+<CJK_UNIFIED_IDEOGRAPH-31817> \xF0\xB1\xA0\x97
+<CJK_UNIFIED_IDEOGRAPH-31818> \xF0\xB1\xA0\x98
+<CJK_UNIFIED_IDEOGRAPH-31819> \xF0\xB1\xA0\x99
+<CJK_UNIFIED_IDEOGRAPH-3181A> \xF0\xB1\xA0\x9A
+<CJK_UNIFIED_IDEOGRAPH-3181B> \xF0\xB1\xA0\x9B
+<CJK_UNIFIED_IDEOGRAPH-3181C> \xF0\xB1\xA0\x9C
+<CJK_UNIFIED_IDEOGRAPH-3181D> \xF0\xB1\xA0\x9D
+<CJK_UNIFIED_IDEOGRAPH-3181E> \xF0\xB1\xA0\x9E
+<CJK_UNIFIED_IDEOGRAPH-3181F> \xF0\xB1\xA0\x9F
+<CJK_UNIFIED_IDEOGRAPH-31820> \xF0\xB1\xA0\xA0
+<CJK_UNIFIED_IDEOGRAPH-31821> \xF0\xB1\xA0\xA1
+<CJK_UNIFIED_IDEOGRAPH-31822> \xF0\xB1\xA0\xA2
+<CJK_UNIFIED_IDEOGRAPH-31823> \xF0\xB1\xA0\xA3
+<CJK_UNIFIED_IDEOGRAPH-31824> \xF0\xB1\xA0\xA4
+<CJK_UNIFIED_IDEOGRAPH-31825> \xF0\xB1\xA0\xA5
+<CJK_UNIFIED_IDEOGRAPH-31826> \xF0\xB1\xA0\xA6
+<CJK_UNIFIED_IDEOGRAPH-31827> \xF0\xB1\xA0\xA7
+<CJK_UNIFIED_IDEOGRAPH-31828> \xF0\xB1\xA0\xA8
+<CJK_UNIFIED_IDEOGRAPH-31829> \xF0\xB1\xA0\xA9
+<CJK_UNIFIED_IDEOGRAPH-3182A> \xF0\xB1\xA0\xAA
+<CJK_UNIFIED_IDEOGRAPH-3182B> \xF0\xB1\xA0\xAB
+<CJK_UNIFIED_IDEOGRAPH-3182C> \xF0\xB1\xA0\xAC
+<CJK_UNIFIED_IDEOGRAPH-3182D> \xF0\xB1\xA0\xAD
+<CJK_UNIFIED_IDEOGRAPH-3182E> \xF0\xB1\xA0\xAE
+<CJK_UNIFIED_IDEOGRAPH-3182F> \xF0\xB1\xA0\xAF
+<CJK_UNIFIED_IDEOGRAPH-31830> \xF0\xB1\xA0\xB0
+<CJK_UNIFIED_IDEOGRAPH-31831> \xF0\xB1\xA0\xB1
+<CJK_UNIFIED_IDEOGRAPH-31832> \xF0\xB1\xA0\xB2
+<CJK_UNIFIED_IDEOGRAPH-31833> \xF0\xB1\xA0\xB3
+<CJK_UNIFIED_IDEOGRAPH-31834> \xF0\xB1\xA0\xB4
+<CJK_UNIFIED_IDEOGRAPH-31835> \xF0\xB1\xA0\xB5
+<CJK_UNIFIED_IDEOGRAPH-31836> \xF0\xB1\xA0\xB6
+<CJK_UNIFIED_IDEOGRAPH-31837> \xF0\xB1\xA0\xB7
+<CJK_UNIFIED_IDEOGRAPH-31838> \xF0\xB1\xA0\xB8
+<CJK_UNIFIED_IDEOGRAPH-31839> \xF0\xB1\xA0\xB9
+<CJK_UNIFIED_IDEOGRAPH-3183A> \xF0\xB1\xA0\xBA
+<CJK_UNIFIED_IDEOGRAPH-3183B> \xF0\xB1\xA0\xBB
+<CJK_UNIFIED_IDEOGRAPH-3183C> \xF0\xB1\xA0\xBC
+<CJK_UNIFIED_IDEOGRAPH-3183D> \xF0\xB1\xA0\xBD
+<CJK_UNIFIED_IDEOGRAPH-3183E> \xF0\xB1\xA0\xBE
+<CJK_UNIFIED_IDEOGRAPH-3183F> \xF0\xB1\xA0\xBF
+<CJK_UNIFIED_IDEOGRAPH-31840> \xF0\xB1\xA1\x80
+<CJK_UNIFIED_IDEOGRAPH-31841> \xF0\xB1\xA1\x81
+<CJK_UNIFIED_IDEOGRAPH-31842> \xF0\xB1\xA1\x82
+<CJK_UNIFIED_IDEOGRAPH-31843> \xF0\xB1\xA1\x83
+<CJK_UNIFIED_IDEOGRAPH-31844> \xF0\xB1\xA1\x84
+<CJK_UNIFIED_IDEOGRAPH-31845> \xF0\xB1\xA1\x85
+<CJK_UNIFIED_IDEOGRAPH-31846> \xF0\xB1\xA1\x86
+<CJK_UNIFIED_IDEOGRAPH-31847> \xF0\xB1\xA1\x87
+<CJK_UNIFIED_IDEOGRAPH-31848> \xF0\xB1\xA1\x88
+<CJK_UNIFIED_IDEOGRAPH-31849> \xF0\xB1\xA1\x89
+<CJK_UNIFIED_IDEOGRAPH-3184A> \xF0\xB1\xA1\x8A
+<CJK_UNIFIED_IDEOGRAPH-3184B> \xF0\xB1\xA1\x8B
+<CJK_UNIFIED_IDEOGRAPH-3184C> \xF0\xB1\xA1\x8C
+<CJK_UNIFIED_IDEOGRAPH-3184D> \xF0\xB1\xA1\x8D
+<CJK_UNIFIED_IDEOGRAPH-3184E> \xF0\xB1\xA1\x8E
+<CJK_UNIFIED_IDEOGRAPH-3184F> \xF0\xB1\xA1\x8F
+<CJK_UNIFIED_IDEOGRAPH-31850> \xF0\xB1\xA1\x90
+<CJK_UNIFIED_IDEOGRAPH-31851> \xF0\xB1\xA1\x91
+<CJK_UNIFIED_IDEOGRAPH-31852> \xF0\xB1\xA1\x92
+<CJK_UNIFIED_IDEOGRAPH-31853> \xF0\xB1\xA1\x93
+<CJK_UNIFIED_IDEOGRAPH-31854> \xF0\xB1\xA1\x94
+<CJK_UNIFIED_IDEOGRAPH-31855> \xF0\xB1\xA1\x95
+<CJK_UNIFIED_IDEOGRAPH-31856> \xF0\xB1\xA1\x96
+<CJK_UNIFIED_IDEOGRAPH-31857> \xF0\xB1\xA1\x97
+<CJK_UNIFIED_IDEOGRAPH-31858> \xF0\xB1\xA1\x98
+<CJK_UNIFIED_IDEOGRAPH-31859> \xF0\xB1\xA1\x99
+<CJK_UNIFIED_IDEOGRAPH-3185A> \xF0\xB1\xA1\x9A
+<CJK_UNIFIED_IDEOGRAPH-3185B> \xF0\xB1\xA1\x9B
+<CJK_UNIFIED_IDEOGRAPH-3185C> \xF0\xB1\xA1\x9C
+<CJK_UNIFIED_IDEOGRAPH-3185D> \xF0\xB1\xA1\x9D
+<CJK_UNIFIED_IDEOGRAPH-3185E> \xF0\xB1\xA1\x9E
+<CJK_UNIFIED_IDEOGRAPH-3185F> \xF0\xB1\xA1\x9F
+<CJK_UNIFIED_IDEOGRAPH-31860> \xF0\xB1\xA1\xA0
+<CJK_UNIFIED_IDEOGRAPH-31861> \xF0\xB1\xA1\xA1
+<CJK_UNIFIED_IDEOGRAPH-31862> \xF0\xB1\xA1\xA2
+<CJK_UNIFIED_IDEOGRAPH-31863> \xF0\xB1\xA1\xA3
+<CJK_UNIFIED_IDEOGRAPH-31864> \xF0\xB1\xA1\xA4
+<CJK_UNIFIED_IDEOGRAPH-31865> \xF0\xB1\xA1\xA5
+<CJK_UNIFIED_IDEOGRAPH-31866> \xF0\xB1\xA1\xA6
+<CJK_UNIFIED_IDEOGRAPH-31867> \xF0\xB1\xA1\xA7
+<CJK_UNIFIED_IDEOGRAPH-31868> \xF0\xB1\xA1\xA8
+<CJK_UNIFIED_IDEOGRAPH-31869> \xF0\xB1\xA1\xA9
+<CJK_UNIFIED_IDEOGRAPH-3186A> \xF0\xB1\xA1\xAA
+<CJK_UNIFIED_IDEOGRAPH-3186B> \xF0\xB1\xA1\xAB
+<CJK_UNIFIED_IDEOGRAPH-3186C> \xF0\xB1\xA1\xAC
+<CJK_UNIFIED_IDEOGRAPH-3186D> \xF0\xB1\xA1\xAD
+<CJK_UNIFIED_IDEOGRAPH-3186E> \xF0\xB1\xA1\xAE
+<CJK_UNIFIED_IDEOGRAPH-3186F> \xF0\xB1\xA1\xAF
+<CJK_UNIFIED_IDEOGRAPH-31870> \xF0\xB1\xA1\xB0
+<CJK_UNIFIED_IDEOGRAPH-31871> \xF0\xB1\xA1\xB1
+<CJK_UNIFIED_IDEOGRAPH-31872> \xF0\xB1\xA1\xB2
+<CJK_UNIFIED_IDEOGRAPH-31873> \xF0\xB1\xA1\xB3
+<CJK_UNIFIED_IDEOGRAPH-31874> \xF0\xB1\xA1\xB4
+<CJK_UNIFIED_IDEOGRAPH-31875> \xF0\xB1\xA1\xB5
+<CJK_UNIFIED_IDEOGRAPH-31876> \xF0\xB1\xA1\xB6
+<CJK_UNIFIED_IDEOGRAPH-31877> \xF0\xB1\xA1\xB7
+<CJK_UNIFIED_IDEOGRAPH-31878> \xF0\xB1\xA1\xB8
+<CJK_UNIFIED_IDEOGRAPH-31879> \xF0\xB1\xA1\xB9
+<CJK_UNIFIED_IDEOGRAPH-3187A> \xF0\xB1\xA1\xBA
+<CJK_UNIFIED_IDEOGRAPH-3187B> \xF0\xB1\xA1\xBB
+<CJK_UNIFIED_IDEOGRAPH-3187C> \xF0\xB1\xA1\xBC
+<CJK_UNIFIED_IDEOGRAPH-3187D> \xF0\xB1\xA1\xBD
+<CJK_UNIFIED_IDEOGRAPH-3187E> \xF0\xB1\xA1\xBE
+<CJK_UNIFIED_IDEOGRAPH-3187F> \xF0\xB1\xA1\xBF
+<CJK_UNIFIED_IDEOGRAPH-31880> \xF0\xB1\xA2\x80
+<CJK_UNIFIED_IDEOGRAPH-31881> \xF0\xB1\xA2\x81
+<CJK_UNIFIED_IDEOGRAPH-31882> \xF0\xB1\xA2\x82
+<CJK_UNIFIED_IDEOGRAPH-31883> \xF0\xB1\xA2\x83
+<CJK_UNIFIED_IDEOGRAPH-31884> \xF0\xB1\xA2\x84
+<CJK_UNIFIED_IDEOGRAPH-31885> \xF0\xB1\xA2\x85
+<CJK_UNIFIED_IDEOGRAPH-31886> \xF0\xB1\xA2\x86
+<CJK_UNIFIED_IDEOGRAPH-31887> \xF0\xB1\xA2\x87
+<CJK_UNIFIED_IDEOGRAPH-31888> \xF0\xB1\xA2\x88
+<CJK_UNIFIED_IDEOGRAPH-31889> \xF0\xB1\xA2\x89
+<CJK_UNIFIED_IDEOGRAPH-3188A> \xF0\xB1\xA2\x8A
+<CJK_UNIFIED_IDEOGRAPH-3188B> \xF0\xB1\xA2\x8B
+<CJK_UNIFIED_IDEOGRAPH-3188C> \xF0\xB1\xA2\x8C
+<CJK_UNIFIED_IDEOGRAPH-3188D> \xF0\xB1\xA2\x8D
+<CJK_UNIFIED_IDEOGRAPH-3188E> \xF0\xB1\xA2\x8E
+<CJK_UNIFIED_IDEOGRAPH-3188F> \xF0\xB1\xA2\x8F
+<CJK_UNIFIED_IDEOGRAPH-31890> \xF0\xB1\xA2\x90
+<CJK_UNIFIED_IDEOGRAPH-31891> \xF0\xB1\xA2\x91
+<CJK_UNIFIED_IDEOGRAPH-31892> \xF0\xB1\xA2\x92
+<CJK_UNIFIED_IDEOGRAPH-31893> \xF0\xB1\xA2\x93
+<CJK_UNIFIED_IDEOGRAPH-31894> \xF0\xB1\xA2\x94
+<CJK_UNIFIED_IDEOGRAPH-31895> \xF0\xB1\xA2\x95
+<CJK_UNIFIED_IDEOGRAPH-31896> \xF0\xB1\xA2\x96
+<CJK_UNIFIED_IDEOGRAPH-31897> \xF0\xB1\xA2\x97
+<CJK_UNIFIED_IDEOGRAPH-31898> \xF0\xB1\xA2\x98
+<CJK_UNIFIED_IDEOGRAPH-31899> \xF0\xB1\xA2\x99
+<CJK_UNIFIED_IDEOGRAPH-3189A> \xF0\xB1\xA2\x9A
+<CJK_UNIFIED_IDEOGRAPH-3189B> \xF0\xB1\xA2\x9B
+<CJK_UNIFIED_IDEOGRAPH-3189C> \xF0\xB1\xA2\x9C
+<CJK_UNIFIED_IDEOGRAPH-3189D> \xF0\xB1\xA2\x9D
+<CJK_UNIFIED_IDEOGRAPH-3189E> \xF0\xB1\xA2\x9E
+<CJK_UNIFIED_IDEOGRAPH-3189F> \xF0\xB1\xA2\x9F
+<CJK_UNIFIED_IDEOGRAPH-318A0> \xF0\xB1\xA2\xA0
+<CJK_UNIFIED_IDEOGRAPH-318A1> \xF0\xB1\xA2\xA1
+<CJK_UNIFIED_IDEOGRAPH-318A2> \xF0\xB1\xA2\xA2
+<CJK_UNIFIED_IDEOGRAPH-318A3> \xF0\xB1\xA2\xA3
+<CJK_UNIFIED_IDEOGRAPH-318A4> \xF0\xB1\xA2\xA4
+<CJK_UNIFIED_IDEOGRAPH-318A5> \xF0\xB1\xA2\xA5
+<CJK_UNIFIED_IDEOGRAPH-318A6> \xF0\xB1\xA2\xA6
+<CJK_UNIFIED_IDEOGRAPH-318A7> \xF0\xB1\xA2\xA7
+<CJK_UNIFIED_IDEOGRAPH-318A8> \xF0\xB1\xA2\xA8
+<CJK_UNIFIED_IDEOGRAPH-318A9> \xF0\xB1\xA2\xA9
+<CJK_UNIFIED_IDEOGRAPH-318AA> \xF0\xB1\xA2\xAA
+<CJK_UNIFIED_IDEOGRAPH-318AB> \xF0\xB1\xA2\xAB
+<CJK_UNIFIED_IDEOGRAPH-318AC> \xF0\xB1\xA2\xAC
+<CJK_UNIFIED_IDEOGRAPH-318AD> \xF0\xB1\xA2\xAD
+<CJK_UNIFIED_IDEOGRAPH-318AE> \xF0\xB1\xA2\xAE
+<CJK_UNIFIED_IDEOGRAPH-318AF> \xF0\xB1\xA2\xAF
+<CJK_UNIFIED_IDEOGRAPH-318B0> \xF0\xB1\xA2\xB0
+<CJK_UNIFIED_IDEOGRAPH-318B1> \xF0\xB1\xA2\xB1
+<CJK_UNIFIED_IDEOGRAPH-318B2> \xF0\xB1\xA2\xB2
+<CJK_UNIFIED_IDEOGRAPH-318B3> \xF0\xB1\xA2\xB3
+<CJK_UNIFIED_IDEOGRAPH-318B4> \xF0\xB1\xA2\xB4
+<CJK_UNIFIED_IDEOGRAPH-318B5> \xF0\xB1\xA2\xB5
+<CJK_UNIFIED_IDEOGRAPH-318B6> \xF0\xB1\xA2\xB6
+<CJK_UNIFIED_IDEOGRAPH-318B7> \xF0\xB1\xA2\xB7
+<CJK_UNIFIED_IDEOGRAPH-318B8> \xF0\xB1\xA2\xB8
+<CJK_UNIFIED_IDEOGRAPH-318B9> \xF0\xB1\xA2\xB9
+<CJK_UNIFIED_IDEOGRAPH-318BA> \xF0\xB1\xA2\xBA
+<CJK_UNIFIED_IDEOGRAPH-318BB> \xF0\xB1\xA2\xBB
+<CJK_UNIFIED_IDEOGRAPH-318BC> \xF0\xB1\xA2\xBC
+<CJK_UNIFIED_IDEOGRAPH-318BD> \xF0\xB1\xA2\xBD
+<CJK_UNIFIED_IDEOGRAPH-318BE> \xF0\xB1\xA2\xBE
+<CJK_UNIFIED_IDEOGRAPH-318BF> \xF0\xB1\xA2\xBF
+<CJK_UNIFIED_IDEOGRAPH-318C0> \xF0\xB1\xA3\x80
+<CJK_UNIFIED_IDEOGRAPH-318C1> \xF0\xB1\xA3\x81
+<CJK_UNIFIED_IDEOGRAPH-318C2> \xF0\xB1\xA3\x82
+<CJK_UNIFIED_IDEOGRAPH-318C3> \xF0\xB1\xA3\x83
+<CJK_UNIFIED_IDEOGRAPH-318C4> \xF0\xB1\xA3\x84
+<CJK_UNIFIED_IDEOGRAPH-318C5> \xF0\xB1\xA3\x85
+<CJK_UNIFIED_IDEOGRAPH-318C6> \xF0\xB1\xA3\x86
+<CJK_UNIFIED_IDEOGRAPH-318C7> \xF0\xB1\xA3\x87
+<CJK_UNIFIED_IDEOGRAPH-318C8> \xF0\xB1\xA3\x88
+<CJK_UNIFIED_IDEOGRAPH-318C9> \xF0\xB1\xA3\x89
+<CJK_UNIFIED_IDEOGRAPH-318CA> \xF0\xB1\xA3\x8A
+<CJK_UNIFIED_IDEOGRAPH-318CB> \xF0\xB1\xA3\x8B
+<CJK_UNIFIED_IDEOGRAPH-318CC> \xF0\xB1\xA3\x8C
+<CJK_UNIFIED_IDEOGRAPH-318CD> \xF0\xB1\xA3\x8D
+<CJK_UNIFIED_IDEOGRAPH-318CE> \xF0\xB1\xA3\x8E
+<CJK_UNIFIED_IDEOGRAPH-318CF> \xF0\xB1\xA3\x8F
+<CJK_UNIFIED_IDEOGRAPH-318D0> \xF0\xB1\xA3\x90
+<CJK_UNIFIED_IDEOGRAPH-318D1> \xF0\xB1\xA3\x91
+<CJK_UNIFIED_IDEOGRAPH-318D2> \xF0\xB1\xA3\x92
+<CJK_UNIFIED_IDEOGRAPH-318D3> \xF0\xB1\xA3\x93
+<CJK_UNIFIED_IDEOGRAPH-318D4> \xF0\xB1\xA3\x94
+<CJK_UNIFIED_IDEOGRAPH-318D5> \xF0\xB1\xA3\x95
+<CJK_UNIFIED_IDEOGRAPH-318D6> \xF0\xB1\xA3\x96
+<CJK_UNIFIED_IDEOGRAPH-318D7> \xF0\xB1\xA3\x97
+<CJK_UNIFIED_IDEOGRAPH-318D8> \xF0\xB1\xA3\x98
+<CJK_UNIFIED_IDEOGRAPH-318D9> \xF0\xB1\xA3\x99
+<CJK_UNIFIED_IDEOGRAPH-318DA> \xF0\xB1\xA3\x9A
+<CJK_UNIFIED_IDEOGRAPH-318DB> \xF0\xB1\xA3\x9B
+<CJK_UNIFIED_IDEOGRAPH-318DC> \xF0\xB1\xA3\x9C
+<CJK_UNIFIED_IDEOGRAPH-318DD> \xF0\xB1\xA3\x9D
+<CJK_UNIFIED_IDEOGRAPH-318DE> \xF0\xB1\xA3\x9E
+<CJK_UNIFIED_IDEOGRAPH-318DF> \xF0\xB1\xA3\x9F
+<CJK_UNIFIED_IDEOGRAPH-318E0> \xF0\xB1\xA3\xA0
+<CJK_UNIFIED_IDEOGRAPH-318E1> \xF0\xB1\xA3\xA1
+<CJK_UNIFIED_IDEOGRAPH-318E2> \xF0\xB1\xA3\xA2
+<CJK_UNIFIED_IDEOGRAPH-318E3> \xF0\xB1\xA3\xA3
+<CJK_UNIFIED_IDEOGRAPH-318E4> \xF0\xB1\xA3\xA4
+<CJK_UNIFIED_IDEOGRAPH-318E5> \xF0\xB1\xA3\xA5
+<CJK_UNIFIED_IDEOGRAPH-318E6> \xF0\xB1\xA3\xA6
+<CJK_UNIFIED_IDEOGRAPH-318E7> \xF0\xB1\xA3\xA7
+<CJK_UNIFIED_IDEOGRAPH-318E8> \xF0\xB1\xA3\xA8
+<CJK_UNIFIED_IDEOGRAPH-318E9> \xF0\xB1\xA3\xA9
+<CJK_UNIFIED_IDEOGRAPH-318EA> \xF0\xB1\xA3\xAA
+<CJK_UNIFIED_IDEOGRAPH-318EB> \xF0\xB1\xA3\xAB
+<CJK_UNIFIED_IDEOGRAPH-318EC> \xF0\xB1\xA3\xAC
+<CJK_UNIFIED_IDEOGRAPH-318ED> \xF0\xB1\xA3\xAD
+<CJK_UNIFIED_IDEOGRAPH-318EE> \xF0\xB1\xA3\xAE
+<CJK_UNIFIED_IDEOGRAPH-318EF> \xF0\xB1\xA3\xAF
+<CJK_UNIFIED_IDEOGRAPH-318F0> \xF0\xB1\xA3\xB0
+<CJK_UNIFIED_IDEOGRAPH-318F1> \xF0\xB1\xA3\xB1
+<CJK_UNIFIED_IDEOGRAPH-318F2> \xF0\xB1\xA3\xB2
+<CJK_UNIFIED_IDEOGRAPH-318F3> \xF0\xB1\xA3\xB3
+<CJK_UNIFIED_IDEOGRAPH-318F4> \xF0\xB1\xA3\xB4
+<CJK_UNIFIED_IDEOGRAPH-318F5> \xF0\xB1\xA3\xB5
+<CJK_UNIFIED_IDEOGRAPH-318F6> \xF0\xB1\xA3\xB6
+<CJK_UNIFIED_IDEOGRAPH-318F7> \xF0\xB1\xA3\xB7
+<CJK_UNIFIED_IDEOGRAPH-318F8> \xF0\xB1\xA3\xB8
+<CJK_UNIFIED_IDEOGRAPH-318F9> \xF0\xB1\xA3\xB9
+<CJK_UNIFIED_IDEOGRAPH-318FA> \xF0\xB1\xA3\xBA
+<CJK_UNIFIED_IDEOGRAPH-318FB> \xF0\xB1\xA3\xBB
+<CJK_UNIFIED_IDEOGRAPH-318FC> \xF0\xB1\xA3\xBC
+<CJK_UNIFIED_IDEOGRAPH-318FD> \xF0\xB1\xA3\xBD
+<CJK_UNIFIED_IDEOGRAPH-318FE> \xF0\xB1\xA3\xBE
+<CJK_UNIFIED_IDEOGRAPH-318FF> \xF0\xB1\xA3\xBF
+<CJK_UNIFIED_IDEOGRAPH-31900> \xF0\xB1\xA4\x80
+<CJK_UNIFIED_IDEOGRAPH-31901> \xF0\xB1\xA4\x81
+<CJK_UNIFIED_IDEOGRAPH-31902> \xF0\xB1\xA4\x82
+<CJK_UNIFIED_IDEOGRAPH-31903> \xF0\xB1\xA4\x83
+<CJK_UNIFIED_IDEOGRAPH-31904> \xF0\xB1\xA4\x84
+<CJK_UNIFIED_IDEOGRAPH-31905> \xF0\xB1\xA4\x85
+<CJK_UNIFIED_IDEOGRAPH-31906> \xF0\xB1\xA4\x86
+<CJK_UNIFIED_IDEOGRAPH-31907> \xF0\xB1\xA4\x87
+<CJK_UNIFIED_IDEOGRAPH-31908> \xF0\xB1\xA4\x88
+<CJK_UNIFIED_IDEOGRAPH-31909> \xF0\xB1\xA4\x89
+<CJK_UNIFIED_IDEOGRAPH-3190A> \xF0\xB1\xA4\x8A
+<CJK_UNIFIED_IDEOGRAPH-3190B> \xF0\xB1\xA4\x8B
+<CJK_UNIFIED_IDEOGRAPH-3190C> \xF0\xB1\xA4\x8C
+<CJK_UNIFIED_IDEOGRAPH-3190D> \xF0\xB1\xA4\x8D
+<CJK_UNIFIED_IDEOGRAPH-3190E> \xF0\xB1\xA4\x8E
+<CJK_UNIFIED_IDEOGRAPH-3190F> \xF0\xB1\xA4\x8F
+<CJK_UNIFIED_IDEOGRAPH-31910> \xF0\xB1\xA4\x90
+<CJK_UNIFIED_IDEOGRAPH-31911> \xF0\xB1\xA4\x91
+<CJK_UNIFIED_IDEOGRAPH-31912> \xF0\xB1\xA4\x92
+<CJK_UNIFIED_IDEOGRAPH-31913> \xF0\xB1\xA4\x93
+<CJK_UNIFIED_IDEOGRAPH-31914> \xF0\xB1\xA4\x94
+<CJK_UNIFIED_IDEOGRAPH-31915> \xF0\xB1\xA4\x95
+<CJK_UNIFIED_IDEOGRAPH-31916> \xF0\xB1\xA4\x96
+<CJK_UNIFIED_IDEOGRAPH-31917> \xF0\xB1\xA4\x97
+<CJK_UNIFIED_IDEOGRAPH-31918> \xF0\xB1\xA4\x98
+<CJK_UNIFIED_IDEOGRAPH-31919> \xF0\xB1\xA4\x99
+<CJK_UNIFIED_IDEOGRAPH-3191A> \xF0\xB1\xA4\x9A
+<CJK_UNIFIED_IDEOGRAPH-3191B> \xF0\xB1\xA4\x9B
+<CJK_UNIFIED_IDEOGRAPH-3191C> \xF0\xB1\xA4\x9C
+<CJK_UNIFIED_IDEOGRAPH-3191D> \xF0\xB1\xA4\x9D
+<CJK_UNIFIED_IDEOGRAPH-3191E> \xF0\xB1\xA4\x9E
+<CJK_UNIFIED_IDEOGRAPH-3191F> \xF0\xB1\xA4\x9F
+<CJK_UNIFIED_IDEOGRAPH-31920> \xF0\xB1\xA4\xA0
+<CJK_UNIFIED_IDEOGRAPH-31921> \xF0\xB1\xA4\xA1
+<CJK_UNIFIED_IDEOGRAPH-31922> \xF0\xB1\xA4\xA2
+<CJK_UNIFIED_IDEOGRAPH-31923> \xF0\xB1\xA4\xA3
+<CJK_UNIFIED_IDEOGRAPH-31924> \xF0\xB1\xA4\xA4
+<CJK_UNIFIED_IDEOGRAPH-31925> \xF0\xB1\xA4\xA5
+<CJK_UNIFIED_IDEOGRAPH-31926> \xF0\xB1\xA4\xA6
+<CJK_UNIFIED_IDEOGRAPH-31927> \xF0\xB1\xA4\xA7
+<CJK_UNIFIED_IDEOGRAPH-31928> \xF0\xB1\xA4\xA8
+<CJK_UNIFIED_IDEOGRAPH-31929> \xF0\xB1\xA4\xA9
+<CJK_UNIFIED_IDEOGRAPH-3192A> \xF0\xB1\xA4\xAA
+<CJK_UNIFIED_IDEOGRAPH-3192B> \xF0\xB1\xA4\xAB
+<CJK_UNIFIED_IDEOGRAPH-3192C> \xF0\xB1\xA4\xAC
+<CJK_UNIFIED_IDEOGRAPH-3192D> \xF0\xB1\xA4\xAD
+<CJK_UNIFIED_IDEOGRAPH-3192E> \xF0\xB1\xA4\xAE
+<CJK_UNIFIED_IDEOGRAPH-3192F> \xF0\xB1\xA4\xAF
+<CJK_UNIFIED_IDEOGRAPH-31930> \xF0\xB1\xA4\xB0
+<CJK_UNIFIED_IDEOGRAPH-31931> \xF0\xB1\xA4\xB1
+<CJK_UNIFIED_IDEOGRAPH-31932> \xF0\xB1\xA4\xB2
+<CJK_UNIFIED_IDEOGRAPH-31933> \xF0\xB1\xA4\xB3
+<CJK_UNIFIED_IDEOGRAPH-31934> \xF0\xB1\xA4\xB4
+<CJK_UNIFIED_IDEOGRAPH-31935> \xF0\xB1\xA4\xB5
+<CJK_UNIFIED_IDEOGRAPH-31936> \xF0\xB1\xA4\xB6
+<CJK_UNIFIED_IDEOGRAPH-31937> \xF0\xB1\xA4\xB7
+<CJK_UNIFIED_IDEOGRAPH-31938> \xF0\xB1\xA4\xB8
+<CJK_UNIFIED_IDEOGRAPH-31939> \xF0\xB1\xA4\xB9
+<CJK_UNIFIED_IDEOGRAPH-3193A> \xF0\xB1\xA4\xBA
+<CJK_UNIFIED_IDEOGRAPH-3193B> \xF0\xB1\xA4\xBB
+<CJK_UNIFIED_IDEOGRAPH-3193C> \xF0\xB1\xA4\xBC
+<CJK_UNIFIED_IDEOGRAPH-3193D> \xF0\xB1\xA4\xBD
+<CJK_UNIFIED_IDEOGRAPH-3193E> \xF0\xB1\xA4\xBE
+<CJK_UNIFIED_IDEOGRAPH-3193F> \xF0\xB1\xA4\xBF
+<CJK_UNIFIED_IDEOGRAPH-31940> \xF0\xB1\xA5\x80
+<CJK_UNIFIED_IDEOGRAPH-31941> \xF0\xB1\xA5\x81
+<CJK_UNIFIED_IDEOGRAPH-31942> \xF0\xB1\xA5\x82
+<CJK_UNIFIED_IDEOGRAPH-31943> \xF0\xB1\xA5\x83
+<CJK_UNIFIED_IDEOGRAPH-31944> \xF0\xB1\xA5\x84
+<CJK_UNIFIED_IDEOGRAPH-31945> \xF0\xB1\xA5\x85
+<CJK_UNIFIED_IDEOGRAPH-31946> \xF0\xB1\xA5\x86
+<CJK_UNIFIED_IDEOGRAPH-31947> \xF0\xB1\xA5\x87
+<CJK_UNIFIED_IDEOGRAPH-31948> \xF0\xB1\xA5\x88
+<CJK_UNIFIED_IDEOGRAPH-31949> \xF0\xB1\xA5\x89
+<CJK_UNIFIED_IDEOGRAPH-3194A> \xF0\xB1\xA5\x8A
+<CJK_UNIFIED_IDEOGRAPH-3194B> \xF0\xB1\xA5\x8B
+<CJK_UNIFIED_IDEOGRAPH-3194C> \xF0\xB1\xA5\x8C
+<CJK_UNIFIED_IDEOGRAPH-3194D> \xF0\xB1\xA5\x8D
+<CJK_UNIFIED_IDEOGRAPH-3194E> \xF0\xB1\xA5\x8E
+<CJK_UNIFIED_IDEOGRAPH-3194F> \xF0\xB1\xA5\x8F
+<CJK_UNIFIED_IDEOGRAPH-31950> \xF0\xB1\xA5\x90
+<CJK_UNIFIED_IDEOGRAPH-31951> \xF0\xB1\xA5\x91
+<CJK_UNIFIED_IDEOGRAPH-31952> \xF0\xB1\xA5\x92
+<CJK_UNIFIED_IDEOGRAPH-31953> \xF0\xB1\xA5\x93
+<CJK_UNIFIED_IDEOGRAPH-31954> \xF0\xB1\xA5\x94
+<CJK_UNIFIED_IDEOGRAPH-31955> \xF0\xB1\xA5\x95
+<CJK_UNIFIED_IDEOGRAPH-31956> \xF0\xB1\xA5\x96
+<CJK_UNIFIED_IDEOGRAPH-31957> \xF0\xB1\xA5\x97
+<CJK_UNIFIED_IDEOGRAPH-31958> \xF0\xB1\xA5\x98
+<CJK_UNIFIED_IDEOGRAPH-31959> \xF0\xB1\xA5\x99
+<CJK_UNIFIED_IDEOGRAPH-3195A> \xF0\xB1\xA5\x9A
+<CJK_UNIFIED_IDEOGRAPH-3195B> \xF0\xB1\xA5\x9B
+<CJK_UNIFIED_IDEOGRAPH-3195C> \xF0\xB1\xA5\x9C
+<CJK_UNIFIED_IDEOGRAPH-3195D> \xF0\xB1\xA5\x9D
+<CJK_UNIFIED_IDEOGRAPH-3195E> \xF0\xB1\xA5\x9E
+<CJK_UNIFIED_IDEOGRAPH-3195F> \xF0\xB1\xA5\x9F
+<CJK_UNIFIED_IDEOGRAPH-31960> \xF0\xB1\xA5\xA0
+<CJK_UNIFIED_IDEOGRAPH-31961> \xF0\xB1\xA5\xA1
+<CJK_UNIFIED_IDEOGRAPH-31962> \xF0\xB1\xA5\xA2
+<CJK_UNIFIED_IDEOGRAPH-31963> \xF0\xB1\xA5\xA3
+<CJK_UNIFIED_IDEOGRAPH-31964> \xF0\xB1\xA5\xA4
+<CJK_UNIFIED_IDEOGRAPH-31965> \xF0\xB1\xA5\xA5
+<CJK_UNIFIED_IDEOGRAPH-31966> \xF0\xB1\xA5\xA6
+<CJK_UNIFIED_IDEOGRAPH-31967> \xF0\xB1\xA5\xA7
+<CJK_UNIFIED_IDEOGRAPH-31968> \xF0\xB1\xA5\xA8
+<CJK_UNIFIED_IDEOGRAPH-31969> \xF0\xB1\xA5\xA9
+<CJK_UNIFIED_IDEOGRAPH-3196A> \xF0\xB1\xA5\xAA
+<CJK_UNIFIED_IDEOGRAPH-3196B> \xF0\xB1\xA5\xAB
+<CJK_UNIFIED_IDEOGRAPH-3196C> \xF0\xB1\xA5\xAC
+<CJK_UNIFIED_IDEOGRAPH-3196D> \xF0\xB1\xA5\xAD
+<CJK_UNIFIED_IDEOGRAPH-3196E> \xF0\xB1\xA5\xAE
+<CJK_UNIFIED_IDEOGRAPH-3196F> \xF0\xB1\xA5\xAF
+<CJK_UNIFIED_IDEOGRAPH-31970> \xF0\xB1\xA5\xB0
+<CJK_UNIFIED_IDEOGRAPH-31971> \xF0\xB1\xA5\xB1
+<CJK_UNIFIED_IDEOGRAPH-31972> \xF0\xB1\xA5\xB2
+<CJK_UNIFIED_IDEOGRAPH-31973> \xF0\xB1\xA5\xB3
+<CJK_UNIFIED_IDEOGRAPH-31974> \xF0\xB1\xA5\xB4
+<CJK_UNIFIED_IDEOGRAPH-31975> \xF0\xB1\xA5\xB5
+<CJK_UNIFIED_IDEOGRAPH-31976> \xF0\xB1\xA5\xB6
+<CJK_UNIFIED_IDEOGRAPH-31977> \xF0\xB1\xA5\xB7
+<CJK_UNIFIED_IDEOGRAPH-31978> \xF0\xB1\xA5\xB8
+<CJK_UNIFIED_IDEOGRAPH-31979> \xF0\xB1\xA5\xB9
+<CJK_UNIFIED_IDEOGRAPH-3197A> \xF0\xB1\xA5\xBA
+<CJK_UNIFIED_IDEOGRAPH-3197B> \xF0\xB1\xA5\xBB
+<CJK_UNIFIED_IDEOGRAPH-3197C> \xF0\xB1\xA5\xBC
+<CJK_UNIFIED_IDEOGRAPH-3197D> \xF0\xB1\xA5\xBD
+<CJK_UNIFIED_IDEOGRAPH-3197E> \xF0\xB1\xA5\xBE
+<CJK_UNIFIED_IDEOGRAPH-3197F> \xF0\xB1\xA5\xBF
+<CJK_UNIFIED_IDEOGRAPH-31980> \xF0\xB1\xA6\x80
+<CJK_UNIFIED_IDEOGRAPH-31981> \xF0\xB1\xA6\x81
+<CJK_UNIFIED_IDEOGRAPH-31982> \xF0\xB1\xA6\x82
+<CJK_UNIFIED_IDEOGRAPH-31983> \xF0\xB1\xA6\x83
+<CJK_UNIFIED_IDEOGRAPH-31984> \xF0\xB1\xA6\x84
+<CJK_UNIFIED_IDEOGRAPH-31985> \xF0\xB1\xA6\x85
+<CJK_UNIFIED_IDEOGRAPH-31986> \xF0\xB1\xA6\x86
+<CJK_UNIFIED_IDEOGRAPH-31987> \xF0\xB1\xA6\x87
+<CJK_UNIFIED_IDEOGRAPH-31988> \xF0\xB1\xA6\x88
+<CJK_UNIFIED_IDEOGRAPH-31989> \xF0\xB1\xA6\x89
+<CJK_UNIFIED_IDEOGRAPH-3198A> \xF0\xB1\xA6\x8A
+<CJK_UNIFIED_IDEOGRAPH-3198B> \xF0\xB1\xA6\x8B
+<CJK_UNIFIED_IDEOGRAPH-3198C> \xF0\xB1\xA6\x8C
+<CJK_UNIFIED_IDEOGRAPH-3198D> \xF0\xB1\xA6\x8D
+<CJK_UNIFIED_IDEOGRAPH-3198E> \xF0\xB1\xA6\x8E
+<CJK_UNIFIED_IDEOGRAPH-3198F> \xF0\xB1\xA6\x8F
+<CJK_UNIFIED_IDEOGRAPH-31990> \xF0\xB1\xA6\x90
+<CJK_UNIFIED_IDEOGRAPH-31991> \xF0\xB1\xA6\x91
+<CJK_UNIFIED_IDEOGRAPH-31992> \xF0\xB1\xA6\x92
+<CJK_UNIFIED_IDEOGRAPH-31993> \xF0\xB1\xA6\x93
+<CJK_UNIFIED_IDEOGRAPH-31994> \xF0\xB1\xA6\x94
+<CJK_UNIFIED_IDEOGRAPH-31995> \xF0\xB1\xA6\x95
+<CJK_UNIFIED_IDEOGRAPH-31996> \xF0\xB1\xA6\x96
+<CJK_UNIFIED_IDEOGRAPH-31997> \xF0\xB1\xA6\x97
+<CJK_UNIFIED_IDEOGRAPH-31998> \xF0\xB1\xA6\x98
+<CJK_UNIFIED_IDEOGRAPH-31999> \xF0\xB1\xA6\x99
+<CJK_UNIFIED_IDEOGRAPH-3199A> \xF0\xB1\xA6\x9A
+<CJK_UNIFIED_IDEOGRAPH-3199B> \xF0\xB1\xA6\x9B
+<CJK_UNIFIED_IDEOGRAPH-3199C> \xF0\xB1\xA6\x9C
+<CJK_UNIFIED_IDEOGRAPH-3199D> \xF0\xB1\xA6\x9D
+<CJK_UNIFIED_IDEOGRAPH-3199E> \xF0\xB1\xA6\x9E
+<CJK_UNIFIED_IDEOGRAPH-3199F> \xF0\xB1\xA6\x9F
+<CJK_UNIFIED_IDEOGRAPH-319A0> \xF0\xB1\xA6\xA0
+<CJK_UNIFIED_IDEOGRAPH-319A1> \xF0\xB1\xA6\xA1
+<CJK_UNIFIED_IDEOGRAPH-319A2> \xF0\xB1\xA6\xA2
+<CJK_UNIFIED_IDEOGRAPH-319A3> \xF0\xB1\xA6\xA3
+<CJK_UNIFIED_IDEOGRAPH-319A4> \xF0\xB1\xA6\xA4
+<CJK_UNIFIED_IDEOGRAPH-319A5> \xF0\xB1\xA6\xA5
+<CJK_UNIFIED_IDEOGRAPH-319A6> \xF0\xB1\xA6\xA6
+<CJK_UNIFIED_IDEOGRAPH-319A7> \xF0\xB1\xA6\xA7
+<CJK_UNIFIED_IDEOGRAPH-319A8> \xF0\xB1\xA6\xA8
+<CJK_UNIFIED_IDEOGRAPH-319A9> \xF0\xB1\xA6\xA9
+<CJK_UNIFIED_IDEOGRAPH-319AA> \xF0\xB1\xA6\xAA
+<CJK_UNIFIED_IDEOGRAPH-319AB> \xF0\xB1\xA6\xAB
+<CJK_UNIFIED_IDEOGRAPH-319AC> \xF0\xB1\xA6\xAC
+<CJK_UNIFIED_IDEOGRAPH-319AD> \xF0\xB1\xA6\xAD
+<CJK_UNIFIED_IDEOGRAPH-319AE> \xF0\xB1\xA6\xAE
+<CJK_UNIFIED_IDEOGRAPH-319AF> \xF0\xB1\xA6\xAF
+<CJK_UNIFIED_IDEOGRAPH-319B0> \xF0\xB1\xA6\xB0
+<CJK_UNIFIED_IDEOGRAPH-319B1> \xF0\xB1\xA6\xB1
+<CJK_UNIFIED_IDEOGRAPH-319B2> \xF0\xB1\xA6\xB2
+<CJK_UNIFIED_IDEOGRAPH-319B3> \xF0\xB1\xA6\xB3
+<CJK_UNIFIED_IDEOGRAPH-319B4> \xF0\xB1\xA6\xB4
+<CJK_UNIFIED_IDEOGRAPH-319B5> \xF0\xB1\xA6\xB5
+<CJK_UNIFIED_IDEOGRAPH-319B6> \xF0\xB1\xA6\xB6
+<CJK_UNIFIED_IDEOGRAPH-319B7> \xF0\xB1\xA6\xB7
+<CJK_UNIFIED_IDEOGRAPH-319B8> \xF0\xB1\xA6\xB8
+<CJK_UNIFIED_IDEOGRAPH-319B9> \xF0\xB1\xA6\xB9
+<CJK_UNIFIED_IDEOGRAPH-319BA> \xF0\xB1\xA6\xBA
+<CJK_UNIFIED_IDEOGRAPH-319BB> \xF0\xB1\xA6\xBB
+<CJK_UNIFIED_IDEOGRAPH-319BC> \xF0\xB1\xA6\xBC
+<CJK_UNIFIED_IDEOGRAPH-319BD> \xF0\xB1\xA6\xBD
+<CJK_UNIFIED_IDEOGRAPH-319BE> \xF0\xB1\xA6\xBE
+<CJK_UNIFIED_IDEOGRAPH-319BF> \xF0\xB1\xA6\xBF
+<CJK_UNIFIED_IDEOGRAPH-319C0> \xF0\xB1\xA7\x80
+<CJK_UNIFIED_IDEOGRAPH-319C1> \xF0\xB1\xA7\x81
+<CJK_UNIFIED_IDEOGRAPH-319C2> \xF0\xB1\xA7\x82
+<CJK_UNIFIED_IDEOGRAPH-319C3> \xF0\xB1\xA7\x83
+<CJK_UNIFIED_IDEOGRAPH-319C4> \xF0\xB1\xA7\x84
+<CJK_UNIFIED_IDEOGRAPH-319C5> \xF0\xB1\xA7\x85
+<CJK_UNIFIED_IDEOGRAPH-319C6> \xF0\xB1\xA7\x86
+<CJK_UNIFIED_IDEOGRAPH-319C7> \xF0\xB1\xA7\x87
+<CJK_UNIFIED_IDEOGRAPH-319C8> \xF0\xB1\xA7\x88
+<CJK_UNIFIED_IDEOGRAPH-319C9> \xF0\xB1\xA7\x89
+<CJK_UNIFIED_IDEOGRAPH-319CA> \xF0\xB1\xA7\x8A
+<CJK_UNIFIED_IDEOGRAPH-319CB> \xF0\xB1\xA7\x8B
+<CJK_UNIFIED_IDEOGRAPH-319CC> \xF0\xB1\xA7\x8C
+<CJK_UNIFIED_IDEOGRAPH-319CD> \xF0\xB1\xA7\x8D
+<CJK_UNIFIED_IDEOGRAPH-319CE> \xF0\xB1\xA7\x8E
+<CJK_UNIFIED_IDEOGRAPH-319CF> \xF0\xB1\xA7\x8F
+<CJK_UNIFIED_IDEOGRAPH-319D0> \xF0\xB1\xA7\x90
+<CJK_UNIFIED_IDEOGRAPH-319D1> \xF0\xB1\xA7\x91
+<CJK_UNIFIED_IDEOGRAPH-319D2> \xF0\xB1\xA7\x92
+<CJK_UNIFIED_IDEOGRAPH-319D3> \xF0\xB1\xA7\x93
+<CJK_UNIFIED_IDEOGRAPH-319D4> \xF0\xB1\xA7\x94
+<CJK_UNIFIED_IDEOGRAPH-319D5> \xF0\xB1\xA7\x95
+<CJK_UNIFIED_IDEOGRAPH-319D6> \xF0\xB1\xA7\x96
+<CJK_UNIFIED_IDEOGRAPH-319D7> \xF0\xB1\xA7\x97
+<CJK_UNIFIED_IDEOGRAPH-319D8> \xF0\xB1\xA7\x98
+<CJK_UNIFIED_IDEOGRAPH-319D9> \xF0\xB1\xA7\x99
+<CJK_UNIFIED_IDEOGRAPH-319DA> \xF0\xB1\xA7\x9A
+<CJK_UNIFIED_IDEOGRAPH-319DB> \xF0\xB1\xA7\x9B
+<CJK_UNIFIED_IDEOGRAPH-319DC> \xF0\xB1\xA7\x9C
+<CJK_UNIFIED_IDEOGRAPH-319DD> \xF0\xB1\xA7\x9D
+<CJK_UNIFIED_IDEOGRAPH-319DE> \xF0\xB1\xA7\x9E
+<CJK_UNIFIED_IDEOGRAPH-319DF> \xF0\xB1\xA7\x9F
+<CJK_UNIFIED_IDEOGRAPH-319E0> \xF0\xB1\xA7\xA0
+<CJK_UNIFIED_IDEOGRAPH-319E1> \xF0\xB1\xA7\xA1
+<CJK_UNIFIED_IDEOGRAPH-319E2> \xF0\xB1\xA7\xA2
+<CJK_UNIFIED_IDEOGRAPH-319E3> \xF0\xB1\xA7\xA3
+<CJK_UNIFIED_IDEOGRAPH-319E4> \xF0\xB1\xA7\xA4
+<CJK_UNIFIED_IDEOGRAPH-319E5> \xF0\xB1\xA7\xA5
+<CJK_UNIFIED_IDEOGRAPH-319E6> \xF0\xB1\xA7\xA6
+<CJK_UNIFIED_IDEOGRAPH-319E7> \xF0\xB1\xA7\xA7
+<CJK_UNIFIED_IDEOGRAPH-319E8> \xF0\xB1\xA7\xA8
+<CJK_UNIFIED_IDEOGRAPH-319E9> \xF0\xB1\xA7\xA9
+<CJK_UNIFIED_IDEOGRAPH-319EA> \xF0\xB1\xA7\xAA
+<CJK_UNIFIED_IDEOGRAPH-319EB> \xF0\xB1\xA7\xAB
+<CJK_UNIFIED_IDEOGRAPH-319EC> \xF0\xB1\xA7\xAC
+<CJK_UNIFIED_IDEOGRAPH-319ED> \xF0\xB1\xA7\xAD
+<CJK_UNIFIED_IDEOGRAPH-319EE> \xF0\xB1\xA7\xAE
+<CJK_UNIFIED_IDEOGRAPH-319EF> \xF0\xB1\xA7\xAF
+<CJK_UNIFIED_IDEOGRAPH-319F0> \xF0\xB1\xA7\xB0
+<CJK_UNIFIED_IDEOGRAPH-319F1> \xF0\xB1\xA7\xB1
+<CJK_UNIFIED_IDEOGRAPH-319F2> \xF0\xB1\xA7\xB2
+<CJK_UNIFIED_IDEOGRAPH-319F3> \xF0\xB1\xA7\xB3
+<CJK_UNIFIED_IDEOGRAPH-319F4> \xF0\xB1\xA7\xB4
+<CJK_UNIFIED_IDEOGRAPH-319F5> \xF0\xB1\xA7\xB5
+<CJK_UNIFIED_IDEOGRAPH-319F6> \xF0\xB1\xA7\xB6
+<CJK_UNIFIED_IDEOGRAPH-319F7> \xF0\xB1\xA7\xB7
+<CJK_UNIFIED_IDEOGRAPH-319F8> \xF0\xB1\xA7\xB8
+<CJK_UNIFIED_IDEOGRAPH-319F9> \xF0\xB1\xA7\xB9
+<CJK_UNIFIED_IDEOGRAPH-319FA> \xF0\xB1\xA7\xBA
+<CJK_UNIFIED_IDEOGRAPH-319FB> \xF0\xB1\xA7\xBB
+<CJK_UNIFIED_IDEOGRAPH-319FC> \xF0\xB1\xA7\xBC
+<CJK_UNIFIED_IDEOGRAPH-319FD> \xF0\xB1\xA7\xBD
+<CJK_UNIFIED_IDEOGRAPH-319FE> \xF0\xB1\xA7\xBE
+<CJK_UNIFIED_IDEOGRAPH-319FF> \xF0\xB1\xA7\xBF
+<CJK_UNIFIED_IDEOGRAPH-31A00> \xF0\xB1\xA8\x80
+<CJK_UNIFIED_IDEOGRAPH-31A01> \xF0\xB1\xA8\x81
+<CJK_UNIFIED_IDEOGRAPH-31A02> \xF0\xB1\xA8\x82
+<CJK_UNIFIED_IDEOGRAPH-31A03> \xF0\xB1\xA8\x83
+<CJK_UNIFIED_IDEOGRAPH-31A04> \xF0\xB1\xA8\x84
+<CJK_UNIFIED_IDEOGRAPH-31A05> \xF0\xB1\xA8\x85
+<CJK_UNIFIED_IDEOGRAPH-31A06> \xF0\xB1\xA8\x86
+<CJK_UNIFIED_IDEOGRAPH-31A07> \xF0\xB1\xA8\x87
+<CJK_UNIFIED_IDEOGRAPH-31A08> \xF0\xB1\xA8\x88
+<CJK_UNIFIED_IDEOGRAPH-31A09> \xF0\xB1\xA8\x89
+<CJK_UNIFIED_IDEOGRAPH-31A0A> \xF0\xB1\xA8\x8A
+<CJK_UNIFIED_IDEOGRAPH-31A0B> \xF0\xB1\xA8\x8B
+<CJK_UNIFIED_IDEOGRAPH-31A0C> \xF0\xB1\xA8\x8C
+<CJK_UNIFIED_IDEOGRAPH-31A0D> \xF0\xB1\xA8\x8D
+<CJK_UNIFIED_IDEOGRAPH-31A0E> \xF0\xB1\xA8\x8E
+<CJK_UNIFIED_IDEOGRAPH-31A0F> \xF0\xB1\xA8\x8F
+<CJK_UNIFIED_IDEOGRAPH-31A10> \xF0\xB1\xA8\x90
+<CJK_UNIFIED_IDEOGRAPH-31A11> \xF0\xB1\xA8\x91
+<CJK_UNIFIED_IDEOGRAPH-31A12> \xF0\xB1\xA8\x92
+<CJK_UNIFIED_IDEOGRAPH-31A13> \xF0\xB1\xA8\x93
+<CJK_UNIFIED_IDEOGRAPH-31A14> \xF0\xB1\xA8\x94
+<CJK_UNIFIED_IDEOGRAPH-31A15> \xF0\xB1\xA8\x95
+<CJK_UNIFIED_IDEOGRAPH-31A16> \xF0\xB1\xA8\x96
+<CJK_UNIFIED_IDEOGRAPH-31A17> \xF0\xB1\xA8\x97
+<CJK_UNIFIED_IDEOGRAPH-31A18> \xF0\xB1\xA8\x98
+<CJK_UNIFIED_IDEOGRAPH-31A19> \xF0\xB1\xA8\x99
+<CJK_UNIFIED_IDEOGRAPH-31A1A> \xF0\xB1\xA8\x9A
+<CJK_UNIFIED_IDEOGRAPH-31A1B> \xF0\xB1\xA8\x9B
+<CJK_UNIFIED_IDEOGRAPH-31A1C> \xF0\xB1\xA8\x9C
+<CJK_UNIFIED_IDEOGRAPH-31A1D> \xF0\xB1\xA8\x9D
+<CJK_UNIFIED_IDEOGRAPH-31A1E> \xF0\xB1\xA8\x9E
+<CJK_UNIFIED_IDEOGRAPH-31A1F> \xF0\xB1\xA8\x9F
+<CJK_UNIFIED_IDEOGRAPH-31A20> \xF0\xB1\xA8\xA0
+<CJK_UNIFIED_IDEOGRAPH-31A21> \xF0\xB1\xA8\xA1
+<CJK_UNIFIED_IDEOGRAPH-31A22> \xF0\xB1\xA8\xA2
+<CJK_UNIFIED_IDEOGRAPH-31A23> \xF0\xB1\xA8\xA3
+<CJK_UNIFIED_IDEOGRAPH-31A24> \xF0\xB1\xA8\xA4
+<CJK_UNIFIED_IDEOGRAPH-31A25> \xF0\xB1\xA8\xA5
+<CJK_UNIFIED_IDEOGRAPH-31A26> \xF0\xB1\xA8\xA6
+<CJK_UNIFIED_IDEOGRAPH-31A27> \xF0\xB1\xA8\xA7
+<CJK_UNIFIED_IDEOGRAPH-31A28> \xF0\xB1\xA8\xA8
+<CJK_UNIFIED_IDEOGRAPH-31A29> \xF0\xB1\xA8\xA9
+<CJK_UNIFIED_IDEOGRAPH-31A2A> \xF0\xB1\xA8\xAA
+<CJK_UNIFIED_IDEOGRAPH-31A2B> \xF0\xB1\xA8\xAB
+<CJK_UNIFIED_IDEOGRAPH-31A2C> \xF0\xB1\xA8\xAC
+<CJK_UNIFIED_IDEOGRAPH-31A2D> \xF0\xB1\xA8\xAD
+<CJK_UNIFIED_IDEOGRAPH-31A2E> \xF0\xB1\xA8\xAE
+<CJK_UNIFIED_IDEOGRAPH-31A2F> \xF0\xB1\xA8\xAF
+<CJK_UNIFIED_IDEOGRAPH-31A30> \xF0\xB1\xA8\xB0
+<CJK_UNIFIED_IDEOGRAPH-31A31> \xF0\xB1\xA8\xB1
+<CJK_UNIFIED_IDEOGRAPH-31A32> \xF0\xB1\xA8\xB2
+<CJK_UNIFIED_IDEOGRAPH-31A33> \xF0\xB1\xA8\xB3
+<CJK_UNIFIED_IDEOGRAPH-31A34> \xF0\xB1\xA8\xB4
+<CJK_UNIFIED_IDEOGRAPH-31A35> \xF0\xB1\xA8\xB5
+<CJK_UNIFIED_IDEOGRAPH-31A36> \xF0\xB1\xA8\xB6
+<CJK_UNIFIED_IDEOGRAPH-31A37> \xF0\xB1\xA8\xB7
+<CJK_UNIFIED_IDEOGRAPH-31A38> \xF0\xB1\xA8\xB8
+<CJK_UNIFIED_IDEOGRAPH-31A39> \xF0\xB1\xA8\xB9
+<CJK_UNIFIED_IDEOGRAPH-31A3A> \xF0\xB1\xA8\xBA
+<CJK_UNIFIED_IDEOGRAPH-31A3B> \xF0\xB1\xA8\xBB
+<CJK_UNIFIED_IDEOGRAPH-31A3C> \xF0\xB1\xA8\xBC
+<CJK_UNIFIED_IDEOGRAPH-31A3D> \xF0\xB1\xA8\xBD
+<CJK_UNIFIED_IDEOGRAPH-31A3E> \xF0\xB1\xA8\xBE
+<CJK_UNIFIED_IDEOGRAPH-31A3F> \xF0\xB1\xA8\xBF
+<CJK_UNIFIED_IDEOGRAPH-31A40> \xF0\xB1\xA9\x80
+<CJK_UNIFIED_IDEOGRAPH-31A41> \xF0\xB1\xA9\x81
+<CJK_UNIFIED_IDEOGRAPH-31A42> \xF0\xB1\xA9\x82
+<CJK_UNIFIED_IDEOGRAPH-31A43> \xF0\xB1\xA9\x83
+<CJK_UNIFIED_IDEOGRAPH-31A44> \xF0\xB1\xA9\x84
+<CJK_UNIFIED_IDEOGRAPH-31A45> \xF0\xB1\xA9\x85
+<CJK_UNIFIED_IDEOGRAPH-31A46> \xF0\xB1\xA9\x86
+<CJK_UNIFIED_IDEOGRAPH-31A47> \xF0\xB1\xA9\x87
+<CJK_UNIFIED_IDEOGRAPH-31A48> \xF0\xB1\xA9\x88
+<CJK_UNIFIED_IDEOGRAPH-31A49> \xF0\xB1\xA9\x89
+<CJK_UNIFIED_IDEOGRAPH-31A4A> \xF0\xB1\xA9\x8A
+<CJK_UNIFIED_IDEOGRAPH-31A4B> \xF0\xB1\xA9\x8B
+<CJK_UNIFIED_IDEOGRAPH-31A4C> \xF0\xB1\xA9\x8C
+<CJK_UNIFIED_IDEOGRAPH-31A4D> \xF0\xB1\xA9\x8D
+<CJK_UNIFIED_IDEOGRAPH-31A4E> \xF0\xB1\xA9\x8E
+<CJK_UNIFIED_IDEOGRAPH-31A4F> \xF0\xB1\xA9\x8F
+<CJK_UNIFIED_IDEOGRAPH-31A50> \xF0\xB1\xA9\x90
+<CJK_UNIFIED_IDEOGRAPH-31A51> \xF0\xB1\xA9\x91
+<CJK_UNIFIED_IDEOGRAPH-31A52> \xF0\xB1\xA9\x92
+<CJK_UNIFIED_IDEOGRAPH-31A53> \xF0\xB1\xA9\x93
+<CJK_UNIFIED_IDEOGRAPH-31A54> \xF0\xB1\xA9\x94
+<CJK_UNIFIED_IDEOGRAPH-31A55> \xF0\xB1\xA9\x95
+<CJK_UNIFIED_IDEOGRAPH-31A56> \xF0\xB1\xA9\x96
+<CJK_UNIFIED_IDEOGRAPH-31A57> \xF0\xB1\xA9\x97
+<CJK_UNIFIED_IDEOGRAPH-31A58> \xF0\xB1\xA9\x98
+<CJK_UNIFIED_IDEOGRAPH-31A59> \xF0\xB1\xA9\x99
+<CJK_UNIFIED_IDEOGRAPH-31A5A> \xF0\xB1\xA9\x9A
+<CJK_UNIFIED_IDEOGRAPH-31A5B> \xF0\xB1\xA9\x9B
+<CJK_UNIFIED_IDEOGRAPH-31A5C> \xF0\xB1\xA9\x9C
+<CJK_UNIFIED_IDEOGRAPH-31A5D> \xF0\xB1\xA9\x9D
+<CJK_UNIFIED_IDEOGRAPH-31A5E> \xF0\xB1\xA9\x9E
+<CJK_UNIFIED_IDEOGRAPH-31A5F> \xF0\xB1\xA9\x9F
+<CJK_UNIFIED_IDEOGRAPH-31A60> \xF0\xB1\xA9\xA0
+<CJK_UNIFIED_IDEOGRAPH-31A61> \xF0\xB1\xA9\xA1
+<CJK_UNIFIED_IDEOGRAPH-31A62> \xF0\xB1\xA9\xA2
+<CJK_UNIFIED_IDEOGRAPH-31A63> \xF0\xB1\xA9\xA3
+<CJK_UNIFIED_IDEOGRAPH-31A64> \xF0\xB1\xA9\xA4
+<CJK_UNIFIED_IDEOGRAPH-31A65> \xF0\xB1\xA9\xA5
+<CJK_UNIFIED_IDEOGRAPH-31A66> \xF0\xB1\xA9\xA6
+<CJK_UNIFIED_IDEOGRAPH-31A67> \xF0\xB1\xA9\xA7
+<CJK_UNIFIED_IDEOGRAPH-31A68> \xF0\xB1\xA9\xA8
+<CJK_UNIFIED_IDEOGRAPH-31A69> \xF0\xB1\xA9\xA9
+<CJK_UNIFIED_IDEOGRAPH-31A6A> \xF0\xB1\xA9\xAA
+<CJK_UNIFIED_IDEOGRAPH-31A6B> \xF0\xB1\xA9\xAB
+<CJK_UNIFIED_IDEOGRAPH-31A6C> \xF0\xB1\xA9\xAC
+<CJK_UNIFIED_IDEOGRAPH-31A6D> \xF0\xB1\xA9\xAD
+<CJK_UNIFIED_IDEOGRAPH-31A6E> \xF0\xB1\xA9\xAE
+<CJK_UNIFIED_IDEOGRAPH-31A6F> \xF0\xB1\xA9\xAF
+<CJK_UNIFIED_IDEOGRAPH-31A70> \xF0\xB1\xA9\xB0
+<CJK_UNIFIED_IDEOGRAPH-31A71> \xF0\xB1\xA9\xB1
+<CJK_UNIFIED_IDEOGRAPH-31A72> \xF0\xB1\xA9\xB2
+<CJK_UNIFIED_IDEOGRAPH-31A73> \xF0\xB1\xA9\xB3
+<CJK_UNIFIED_IDEOGRAPH-31A74> \xF0\xB1\xA9\xB4
+<CJK_UNIFIED_IDEOGRAPH-31A75> \xF0\xB1\xA9\xB5
+<CJK_UNIFIED_IDEOGRAPH-31A76> \xF0\xB1\xA9\xB6
+<CJK_UNIFIED_IDEOGRAPH-31A77> \xF0\xB1\xA9\xB7
+<CJK_UNIFIED_IDEOGRAPH-31A78> \xF0\xB1\xA9\xB8
+<CJK_UNIFIED_IDEOGRAPH-31A79> \xF0\xB1\xA9\xB9
+<CJK_UNIFIED_IDEOGRAPH-31A7A> \xF0\xB1\xA9\xBA
+<CJK_UNIFIED_IDEOGRAPH-31A7B> \xF0\xB1\xA9\xBB
+<CJK_UNIFIED_IDEOGRAPH-31A7C> \xF0\xB1\xA9\xBC
+<CJK_UNIFIED_IDEOGRAPH-31A7D> \xF0\xB1\xA9\xBD
+<CJK_UNIFIED_IDEOGRAPH-31A7E> \xF0\xB1\xA9\xBE
+<CJK_UNIFIED_IDEOGRAPH-31A7F> \xF0\xB1\xA9\xBF
+<CJK_UNIFIED_IDEOGRAPH-31A80> \xF0\xB1\xAA\x80
+<CJK_UNIFIED_IDEOGRAPH-31A81> \xF0\xB1\xAA\x81
+<CJK_UNIFIED_IDEOGRAPH-31A82> \xF0\xB1\xAA\x82
+<CJK_UNIFIED_IDEOGRAPH-31A83> \xF0\xB1\xAA\x83
+<CJK_UNIFIED_IDEOGRAPH-31A84> \xF0\xB1\xAA\x84
+<CJK_UNIFIED_IDEOGRAPH-31A85> \xF0\xB1\xAA\x85
+<CJK_UNIFIED_IDEOGRAPH-31A86> \xF0\xB1\xAA\x86
+<CJK_UNIFIED_IDEOGRAPH-31A87> \xF0\xB1\xAA\x87
+<CJK_UNIFIED_IDEOGRAPH-31A88> \xF0\xB1\xAA\x88
+<CJK_UNIFIED_IDEOGRAPH-31A89> \xF0\xB1\xAA\x89
+<CJK_UNIFIED_IDEOGRAPH-31A8A> \xF0\xB1\xAA\x8A
+<CJK_UNIFIED_IDEOGRAPH-31A8B> \xF0\xB1\xAA\x8B
+<CJK_UNIFIED_IDEOGRAPH-31A8C> \xF0\xB1\xAA\x8C
+<CJK_UNIFIED_IDEOGRAPH-31A8D> \xF0\xB1\xAA\x8D
+<CJK_UNIFIED_IDEOGRAPH-31A8E> \xF0\xB1\xAA\x8E
+<CJK_UNIFIED_IDEOGRAPH-31A8F> \xF0\xB1\xAA\x8F
+<CJK_UNIFIED_IDEOGRAPH-31A90> \xF0\xB1\xAA\x90
+<CJK_UNIFIED_IDEOGRAPH-31A91> \xF0\xB1\xAA\x91
+<CJK_UNIFIED_IDEOGRAPH-31A92> \xF0\xB1\xAA\x92
+<CJK_UNIFIED_IDEOGRAPH-31A93> \xF0\xB1\xAA\x93
+<CJK_UNIFIED_IDEOGRAPH-31A94> \xF0\xB1\xAA\x94
+<CJK_UNIFIED_IDEOGRAPH-31A95> \xF0\xB1\xAA\x95
+<CJK_UNIFIED_IDEOGRAPH-31A96> \xF0\xB1\xAA\x96
+<CJK_UNIFIED_IDEOGRAPH-31A97> \xF0\xB1\xAA\x97
+<CJK_UNIFIED_IDEOGRAPH-31A98> \xF0\xB1\xAA\x98
+<CJK_UNIFIED_IDEOGRAPH-31A99> \xF0\xB1\xAA\x99
+<CJK_UNIFIED_IDEOGRAPH-31A9A> \xF0\xB1\xAA\x9A
+<CJK_UNIFIED_IDEOGRAPH-31A9B> \xF0\xB1\xAA\x9B
+<CJK_UNIFIED_IDEOGRAPH-31A9C> \xF0\xB1\xAA\x9C
+<CJK_UNIFIED_IDEOGRAPH-31A9D> \xF0\xB1\xAA\x9D
+<CJK_UNIFIED_IDEOGRAPH-31A9E> \xF0\xB1\xAA\x9E
+<CJK_UNIFIED_IDEOGRAPH-31A9F> \xF0\xB1\xAA\x9F
+<CJK_UNIFIED_IDEOGRAPH-31AA0> \xF0\xB1\xAA\xA0
+<CJK_UNIFIED_IDEOGRAPH-31AA1> \xF0\xB1\xAA\xA1
+<CJK_UNIFIED_IDEOGRAPH-31AA2> \xF0\xB1\xAA\xA2
+<CJK_UNIFIED_IDEOGRAPH-31AA3> \xF0\xB1\xAA\xA3
+<CJK_UNIFIED_IDEOGRAPH-31AA4> \xF0\xB1\xAA\xA4
+<CJK_UNIFIED_IDEOGRAPH-31AA5> \xF0\xB1\xAA\xA5
+<CJK_UNIFIED_IDEOGRAPH-31AA6> \xF0\xB1\xAA\xA6
+<CJK_UNIFIED_IDEOGRAPH-31AA7> \xF0\xB1\xAA\xA7
+<CJK_UNIFIED_IDEOGRAPH-31AA8> \xF0\xB1\xAA\xA8
+<CJK_UNIFIED_IDEOGRAPH-31AA9> \xF0\xB1\xAA\xA9
+<CJK_UNIFIED_IDEOGRAPH-31AAA> \xF0\xB1\xAA\xAA
+<CJK_UNIFIED_IDEOGRAPH-31AAB> \xF0\xB1\xAA\xAB
+<CJK_UNIFIED_IDEOGRAPH-31AAC> \xF0\xB1\xAA\xAC
+<CJK_UNIFIED_IDEOGRAPH-31AAD> \xF0\xB1\xAA\xAD
+<CJK_UNIFIED_IDEOGRAPH-31AAE> \xF0\xB1\xAA\xAE
+<CJK_UNIFIED_IDEOGRAPH-31AAF> \xF0\xB1\xAA\xAF
+<CJK_UNIFIED_IDEOGRAPH-31AB0> \xF0\xB1\xAA\xB0
+<CJK_UNIFIED_IDEOGRAPH-31AB1> \xF0\xB1\xAA\xB1
+<CJK_UNIFIED_IDEOGRAPH-31AB2> \xF0\xB1\xAA\xB2
+<CJK_UNIFIED_IDEOGRAPH-31AB3> \xF0\xB1\xAA\xB3
+<CJK_UNIFIED_IDEOGRAPH-31AB4> \xF0\xB1\xAA\xB4
+<CJK_UNIFIED_IDEOGRAPH-31AB5> \xF0\xB1\xAA\xB5
+<CJK_UNIFIED_IDEOGRAPH-31AB6> \xF0\xB1\xAA\xB6
+<CJK_UNIFIED_IDEOGRAPH-31AB7> \xF0\xB1\xAA\xB7
+<CJK_UNIFIED_IDEOGRAPH-31AB8> \xF0\xB1\xAA\xB8
+<CJK_UNIFIED_IDEOGRAPH-31AB9> \xF0\xB1\xAA\xB9
+<CJK_UNIFIED_IDEOGRAPH-31ABA> \xF0\xB1\xAA\xBA
+<CJK_UNIFIED_IDEOGRAPH-31ABB> \xF0\xB1\xAA\xBB
+<CJK_UNIFIED_IDEOGRAPH-31ABC> \xF0\xB1\xAA\xBC
+<CJK_UNIFIED_IDEOGRAPH-31ABD> \xF0\xB1\xAA\xBD
+<CJK_UNIFIED_IDEOGRAPH-31ABE> \xF0\xB1\xAA\xBE
+<CJK_UNIFIED_IDEOGRAPH-31ABF> \xF0\xB1\xAA\xBF
+<CJK_UNIFIED_IDEOGRAPH-31AC0> \xF0\xB1\xAB\x80
+<CJK_UNIFIED_IDEOGRAPH-31AC1> \xF0\xB1\xAB\x81
+<CJK_UNIFIED_IDEOGRAPH-31AC2> \xF0\xB1\xAB\x82
+<CJK_UNIFIED_IDEOGRAPH-31AC3> \xF0\xB1\xAB\x83
+<CJK_UNIFIED_IDEOGRAPH-31AC4> \xF0\xB1\xAB\x84
+<CJK_UNIFIED_IDEOGRAPH-31AC5> \xF0\xB1\xAB\x85
+<CJK_UNIFIED_IDEOGRAPH-31AC6> \xF0\xB1\xAB\x86
+<CJK_UNIFIED_IDEOGRAPH-31AC7> \xF0\xB1\xAB\x87
+<CJK_UNIFIED_IDEOGRAPH-31AC8> \xF0\xB1\xAB\x88
+<CJK_UNIFIED_IDEOGRAPH-31AC9> \xF0\xB1\xAB\x89
+<CJK_UNIFIED_IDEOGRAPH-31ACA> \xF0\xB1\xAB\x8A
+<CJK_UNIFIED_IDEOGRAPH-31ACB> \xF0\xB1\xAB\x8B
+<CJK_UNIFIED_IDEOGRAPH-31ACC> \xF0\xB1\xAB\x8C
+<CJK_UNIFIED_IDEOGRAPH-31ACD> \xF0\xB1\xAB\x8D
+<CJK_UNIFIED_IDEOGRAPH-31ACE> \xF0\xB1\xAB\x8E
+<CJK_UNIFIED_IDEOGRAPH-31ACF> \xF0\xB1\xAB\x8F
+<CJK_UNIFIED_IDEOGRAPH-31AD0> \xF0\xB1\xAB\x90
+<CJK_UNIFIED_IDEOGRAPH-31AD1> \xF0\xB1\xAB\x91
+<CJK_UNIFIED_IDEOGRAPH-31AD2> \xF0\xB1\xAB\x92
+<CJK_UNIFIED_IDEOGRAPH-31AD3> \xF0\xB1\xAB\x93
+<CJK_UNIFIED_IDEOGRAPH-31AD4> \xF0\xB1\xAB\x94
+<CJK_UNIFIED_IDEOGRAPH-31AD5> \xF0\xB1\xAB\x95
+<CJK_UNIFIED_IDEOGRAPH-31AD6> \xF0\xB1\xAB\x96
+<CJK_UNIFIED_IDEOGRAPH-31AD7> \xF0\xB1\xAB\x97
+<CJK_UNIFIED_IDEOGRAPH-31AD8> \xF0\xB1\xAB\x98
+<CJK_UNIFIED_IDEOGRAPH-31AD9> \xF0\xB1\xAB\x99
+<CJK_UNIFIED_IDEOGRAPH-31ADA> \xF0\xB1\xAB\x9A
+<CJK_UNIFIED_IDEOGRAPH-31ADB> \xF0\xB1\xAB\x9B
+<CJK_UNIFIED_IDEOGRAPH-31ADC> \xF0\xB1\xAB\x9C
+<CJK_UNIFIED_IDEOGRAPH-31ADD> \xF0\xB1\xAB\x9D
+<CJK_UNIFIED_IDEOGRAPH-31ADE> \xF0\xB1\xAB\x9E
+<CJK_UNIFIED_IDEOGRAPH-31ADF> \xF0\xB1\xAB\x9F
+<CJK_UNIFIED_IDEOGRAPH-31AE0> \xF0\xB1\xAB\xA0
+<CJK_UNIFIED_IDEOGRAPH-31AE1> \xF0\xB1\xAB\xA1
+<CJK_UNIFIED_IDEOGRAPH-31AE2> \xF0\xB1\xAB\xA2
+<CJK_UNIFIED_IDEOGRAPH-31AE3> \xF0\xB1\xAB\xA3
+<CJK_UNIFIED_IDEOGRAPH-31AE4> \xF0\xB1\xAB\xA4
+<CJK_UNIFIED_IDEOGRAPH-31AE5> \xF0\xB1\xAB\xA5
+<CJK_UNIFIED_IDEOGRAPH-31AE6> \xF0\xB1\xAB\xA6
+<CJK_UNIFIED_IDEOGRAPH-31AE7> \xF0\xB1\xAB\xA7
+<CJK_UNIFIED_IDEOGRAPH-31AE8> \xF0\xB1\xAB\xA8
+<CJK_UNIFIED_IDEOGRAPH-31AE9> \xF0\xB1\xAB\xA9
+<CJK_UNIFIED_IDEOGRAPH-31AEA> \xF0\xB1\xAB\xAA
+<CJK_UNIFIED_IDEOGRAPH-31AEB> \xF0\xB1\xAB\xAB
+<CJK_UNIFIED_IDEOGRAPH-31AEC> \xF0\xB1\xAB\xAC
+<CJK_UNIFIED_IDEOGRAPH-31AED> \xF0\xB1\xAB\xAD
+<CJK_UNIFIED_IDEOGRAPH-31AEE> \xF0\xB1\xAB\xAE
+<CJK_UNIFIED_IDEOGRAPH-31AEF> \xF0\xB1\xAB\xAF
+<CJK_UNIFIED_IDEOGRAPH-31AF0> \xF0\xB1\xAB\xB0
+<CJK_UNIFIED_IDEOGRAPH-31AF1> \xF0\xB1\xAB\xB1
+<CJK_UNIFIED_IDEOGRAPH-31AF2> \xF0\xB1\xAB\xB2
+<CJK_UNIFIED_IDEOGRAPH-31AF3> \xF0\xB1\xAB\xB3
+<CJK_UNIFIED_IDEOGRAPH-31AF4> \xF0\xB1\xAB\xB4
+<CJK_UNIFIED_IDEOGRAPH-31AF5> \xF0\xB1\xAB\xB5
+<CJK_UNIFIED_IDEOGRAPH-31AF6> \xF0\xB1\xAB\xB6
+<CJK_UNIFIED_IDEOGRAPH-31AF7> \xF0\xB1\xAB\xB7
+<CJK_UNIFIED_IDEOGRAPH-31AF8> \xF0\xB1\xAB\xB8
+<CJK_UNIFIED_IDEOGRAPH-31AF9> \xF0\xB1\xAB\xB9
+<CJK_UNIFIED_IDEOGRAPH-31AFA> \xF0\xB1\xAB\xBA
+<CJK_UNIFIED_IDEOGRAPH-31AFB> \xF0\xB1\xAB\xBB
+<CJK_UNIFIED_IDEOGRAPH-31AFC> \xF0\xB1\xAB\xBC
+<CJK_UNIFIED_IDEOGRAPH-31AFD> \xF0\xB1\xAB\xBD
+<CJK_UNIFIED_IDEOGRAPH-31AFE> \xF0\xB1\xAB\xBE
+<CJK_UNIFIED_IDEOGRAPH-31AFF> \xF0\xB1\xAB\xBF
+<CJK_UNIFIED_IDEOGRAPH-31B00> \xF0\xB1\xAC\x80
+<CJK_UNIFIED_IDEOGRAPH-31B01> \xF0\xB1\xAC\x81
+<CJK_UNIFIED_IDEOGRAPH-31B02> \xF0\xB1\xAC\x82
+<CJK_UNIFIED_IDEOGRAPH-31B03> \xF0\xB1\xAC\x83
+<CJK_UNIFIED_IDEOGRAPH-31B04> \xF0\xB1\xAC\x84
+<CJK_UNIFIED_IDEOGRAPH-31B05> \xF0\xB1\xAC\x85
+<CJK_UNIFIED_IDEOGRAPH-31B06> \xF0\xB1\xAC\x86
+<CJK_UNIFIED_IDEOGRAPH-31B07> \xF0\xB1\xAC\x87
+<CJK_UNIFIED_IDEOGRAPH-31B08> \xF0\xB1\xAC\x88
+<CJK_UNIFIED_IDEOGRAPH-31B09> \xF0\xB1\xAC\x89
+<CJK_UNIFIED_IDEOGRAPH-31B0A> \xF0\xB1\xAC\x8A
+<CJK_UNIFIED_IDEOGRAPH-31B0B> \xF0\xB1\xAC\x8B
+<CJK_UNIFIED_IDEOGRAPH-31B0C> \xF0\xB1\xAC\x8C
+<CJK_UNIFIED_IDEOGRAPH-31B0D> \xF0\xB1\xAC\x8D
+<CJK_UNIFIED_IDEOGRAPH-31B0E> \xF0\xB1\xAC\x8E
+<CJK_UNIFIED_IDEOGRAPH-31B0F> \xF0\xB1\xAC\x8F
+<CJK_UNIFIED_IDEOGRAPH-31B10> \xF0\xB1\xAC\x90
+<CJK_UNIFIED_IDEOGRAPH-31B11> \xF0\xB1\xAC\x91
+<CJK_UNIFIED_IDEOGRAPH-31B12> \xF0\xB1\xAC\x92
+<CJK_UNIFIED_IDEOGRAPH-31B13> \xF0\xB1\xAC\x93
+<CJK_UNIFIED_IDEOGRAPH-31B14> \xF0\xB1\xAC\x94
+<CJK_UNIFIED_IDEOGRAPH-31B15> \xF0\xB1\xAC\x95
+<CJK_UNIFIED_IDEOGRAPH-31B16> \xF0\xB1\xAC\x96
+<CJK_UNIFIED_IDEOGRAPH-31B17> \xF0\xB1\xAC\x97
+<CJK_UNIFIED_IDEOGRAPH-31B18> \xF0\xB1\xAC\x98
+<CJK_UNIFIED_IDEOGRAPH-31B19> \xF0\xB1\xAC\x99
+<CJK_UNIFIED_IDEOGRAPH-31B1A> \xF0\xB1\xAC\x9A
+<CJK_UNIFIED_IDEOGRAPH-31B1B> \xF0\xB1\xAC\x9B
+<CJK_UNIFIED_IDEOGRAPH-31B1C> \xF0\xB1\xAC\x9C
+<CJK_UNIFIED_IDEOGRAPH-31B1D> \xF0\xB1\xAC\x9D
+<CJK_UNIFIED_IDEOGRAPH-31B1E> \xF0\xB1\xAC\x9E
+<CJK_UNIFIED_IDEOGRAPH-31B1F> \xF0\xB1\xAC\x9F
+<CJK_UNIFIED_IDEOGRAPH-31B20> \xF0\xB1\xAC\xA0
+<CJK_UNIFIED_IDEOGRAPH-31B21> \xF0\xB1\xAC\xA1
+<CJK_UNIFIED_IDEOGRAPH-31B22> \xF0\xB1\xAC\xA2
+<CJK_UNIFIED_IDEOGRAPH-31B23> \xF0\xB1\xAC\xA3
+<CJK_UNIFIED_IDEOGRAPH-31B24> \xF0\xB1\xAC\xA4
+<CJK_UNIFIED_IDEOGRAPH-31B25> \xF0\xB1\xAC\xA5
+<CJK_UNIFIED_IDEOGRAPH-31B26> \xF0\xB1\xAC\xA6
+<CJK_UNIFIED_IDEOGRAPH-31B27> \xF0\xB1\xAC\xA7
+<CJK_UNIFIED_IDEOGRAPH-31B28> \xF0\xB1\xAC\xA8
+<CJK_UNIFIED_IDEOGRAPH-31B29> \xF0\xB1\xAC\xA9
+<CJK_UNIFIED_IDEOGRAPH-31B2A> \xF0\xB1\xAC\xAA
+<CJK_UNIFIED_IDEOGRAPH-31B2B> \xF0\xB1\xAC\xAB
+<CJK_UNIFIED_IDEOGRAPH-31B2C> \xF0\xB1\xAC\xAC
+<CJK_UNIFIED_IDEOGRAPH-31B2D> \xF0\xB1\xAC\xAD
+<CJK_UNIFIED_IDEOGRAPH-31B2E> \xF0\xB1\xAC\xAE
+<CJK_UNIFIED_IDEOGRAPH-31B2F> \xF0\xB1\xAC\xAF
+<CJK_UNIFIED_IDEOGRAPH-31B30> \xF0\xB1\xAC\xB0
+<CJK_UNIFIED_IDEOGRAPH-31B31> \xF0\xB1\xAC\xB1
+<CJK_UNIFIED_IDEOGRAPH-31B32> \xF0\xB1\xAC\xB2
+<CJK_UNIFIED_IDEOGRAPH-31B33> \xF0\xB1\xAC\xB3
+<CJK_UNIFIED_IDEOGRAPH-31B34> \xF0\xB1\xAC\xB4
+<CJK_UNIFIED_IDEOGRAPH-31B35> \xF0\xB1\xAC\xB5
+<CJK_UNIFIED_IDEOGRAPH-31B36> \xF0\xB1\xAC\xB6
+<CJK_UNIFIED_IDEOGRAPH-31B37> \xF0\xB1\xAC\xB7
+<CJK_UNIFIED_IDEOGRAPH-31B38> \xF0\xB1\xAC\xB8
+<CJK_UNIFIED_IDEOGRAPH-31B39> \xF0\xB1\xAC\xB9
+<CJK_UNIFIED_IDEOGRAPH-31B3A> \xF0\xB1\xAC\xBA
+<CJK_UNIFIED_IDEOGRAPH-31B3B> \xF0\xB1\xAC\xBB
+<CJK_UNIFIED_IDEOGRAPH-31B3C> \xF0\xB1\xAC\xBC
+<CJK_UNIFIED_IDEOGRAPH-31B3D> \xF0\xB1\xAC\xBD
+<CJK_UNIFIED_IDEOGRAPH-31B3E> \xF0\xB1\xAC\xBE
+<CJK_UNIFIED_IDEOGRAPH-31B3F> \xF0\xB1\xAC\xBF
+<CJK_UNIFIED_IDEOGRAPH-31B40> \xF0\xB1\xAD\x80
+<CJK_UNIFIED_IDEOGRAPH-31B41> \xF0\xB1\xAD\x81
+<CJK_UNIFIED_IDEOGRAPH-31B42> \xF0\xB1\xAD\x82
+<CJK_UNIFIED_IDEOGRAPH-31B43> \xF0\xB1\xAD\x83
+<CJK_UNIFIED_IDEOGRAPH-31B44> \xF0\xB1\xAD\x84
+<CJK_UNIFIED_IDEOGRAPH-31B45> \xF0\xB1\xAD\x85
+<CJK_UNIFIED_IDEOGRAPH-31B46> \xF0\xB1\xAD\x86
+<CJK_UNIFIED_IDEOGRAPH-31B47> \xF0\xB1\xAD\x87
+<CJK_UNIFIED_IDEOGRAPH-31B48> \xF0\xB1\xAD\x88
+<CJK_UNIFIED_IDEOGRAPH-31B49> \xF0\xB1\xAD\x89
+<CJK_UNIFIED_IDEOGRAPH-31B4A> \xF0\xB1\xAD\x8A
+<CJK_UNIFIED_IDEOGRAPH-31B4B> \xF0\xB1\xAD\x8B
+<CJK_UNIFIED_IDEOGRAPH-31B4C> \xF0\xB1\xAD\x8C
+<CJK_UNIFIED_IDEOGRAPH-31B4D> \xF0\xB1\xAD\x8D
+<CJK_UNIFIED_IDEOGRAPH-31B4E> \xF0\xB1\xAD\x8E
+<CJK_UNIFIED_IDEOGRAPH-31B4F> \xF0\xB1\xAD\x8F
+<CJK_UNIFIED_IDEOGRAPH-31B50> \xF0\xB1\xAD\x90
+<CJK_UNIFIED_IDEOGRAPH-31B51> \xF0\xB1\xAD\x91
+<CJK_UNIFIED_IDEOGRAPH-31B52> \xF0\xB1\xAD\x92
+<CJK_UNIFIED_IDEOGRAPH-31B53> \xF0\xB1\xAD\x93
+<CJK_UNIFIED_IDEOGRAPH-31B54> \xF0\xB1\xAD\x94
+<CJK_UNIFIED_IDEOGRAPH-31B55> \xF0\xB1\xAD\x95
+<CJK_UNIFIED_IDEOGRAPH-31B56> \xF0\xB1\xAD\x96
+<CJK_UNIFIED_IDEOGRAPH-31B57> \xF0\xB1\xAD\x97
+<CJK_UNIFIED_IDEOGRAPH-31B58> \xF0\xB1\xAD\x98
+<CJK_UNIFIED_IDEOGRAPH-31B59> \xF0\xB1\xAD\x99
+<CJK_UNIFIED_IDEOGRAPH-31B5A> \xF0\xB1\xAD\x9A
+<CJK_UNIFIED_IDEOGRAPH-31B5B> \xF0\xB1\xAD\x9B
+<CJK_UNIFIED_IDEOGRAPH-31B5C> \xF0\xB1\xAD\x9C
+<CJK_UNIFIED_IDEOGRAPH-31B5D> \xF0\xB1\xAD\x9D
+<CJK_UNIFIED_IDEOGRAPH-31B5E> \xF0\xB1\xAD\x9E
+<CJK_UNIFIED_IDEOGRAPH-31B5F> \xF0\xB1\xAD\x9F
+<CJK_UNIFIED_IDEOGRAPH-31B60> \xF0\xB1\xAD\xA0
+<CJK_UNIFIED_IDEOGRAPH-31B61> \xF0\xB1\xAD\xA1
+<CJK_UNIFIED_IDEOGRAPH-31B62> \xF0\xB1\xAD\xA2
+<CJK_UNIFIED_IDEOGRAPH-31B63> \xF0\xB1\xAD\xA3
+<CJK_UNIFIED_IDEOGRAPH-31B64> \xF0\xB1\xAD\xA4
+<CJK_UNIFIED_IDEOGRAPH-31B65> \xF0\xB1\xAD\xA5
+<CJK_UNIFIED_IDEOGRAPH-31B66> \xF0\xB1\xAD\xA6
+<CJK_UNIFIED_IDEOGRAPH-31B67> \xF0\xB1\xAD\xA7
+<CJK_UNIFIED_IDEOGRAPH-31B68> \xF0\xB1\xAD\xA8
+<CJK_UNIFIED_IDEOGRAPH-31B69> \xF0\xB1\xAD\xA9
+<CJK_UNIFIED_IDEOGRAPH-31B6A> \xF0\xB1\xAD\xAA
+<CJK_UNIFIED_IDEOGRAPH-31B6B> \xF0\xB1\xAD\xAB
+<CJK_UNIFIED_IDEOGRAPH-31B6C> \xF0\xB1\xAD\xAC
+<CJK_UNIFIED_IDEOGRAPH-31B6D> \xF0\xB1\xAD\xAD
+<CJK_UNIFIED_IDEOGRAPH-31B6E> \xF0\xB1\xAD\xAE
+<CJK_UNIFIED_IDEOGRAPH-31B6F> \xF0\xB1\xAD\xAF
+<CJK_UNIFIED_IDEOGRAPH-31B70> \xF0\xB1\xAD\xB0
+<CJK_UNIFIED_IDEOGRAPH-31B71> \xF0\xB1\xAD\xB1
+<CJK_UNIFIED_IDEOGRAPH-31B72> \xF0\xB1\xAD\xB2
+<CJK_UNIFIED_IDEOGRAPH-31B73> \xF0\xB1\xAD\xB3
+<CJK_UNIFIED_IDEOGRAPH-31B74> \xF0\xB1\xAD\xB4
+<CJK_UNIFIED_IDEOGRAPH-31B75> \xF0\xB1\xAD\xB5
+<CJK_UNIFIED_IDEOGRAPH-31B76> \xF0\xB1\xAD\xB6
+<CJK_UNIFIED_IDEOGRAPH-31B77> \xF0\xB1\xAD\xB7
+<CJK_UNIFIED_IDEOGRAPH-31B78> \xF0\xB1\xAD\xB8
+<CJK_UNIFIED_IDEOGRAPH-31B79> \xF0\xB1\xAD\xB9
+<CJK_UNIFIED_IDEOGRAPH-31B7A> \xF0\xB1\xAD\xBA
+<CJK_UNIFIED_IDEOGRAPH-31B7B> \xF0\xB1\xAD\xBB
+<CJK_UNIFIED_IDEOGRAPH-31B7C> \xF0\xB1\xAD\xBC
+<CJK_UNIFIED_IDEOGRAPH-31B7D> \xF0\xB1\xAD\xBD
+<CJK_UNIFIED_IDEOGRAPH-31B7E> \xF0\xB1\xAD\xBE
+<CJK_UNIFIED_IDEOGRAPH-31B7F> \xF0\xB1\xAD\xBF
+<CJK_UNIFIED_IDEOGRAPH-31B80> \xF0\xB1\xAE\x80
+<CJK_UNIFIED_IDEOGRAPH-31B81> \xF0\xB1\xAE\x81
+<CJK_UNIFIED_IDEOGRAPH-31B82> \xF0\xB1\xAE\x82
+<CJK_UNIFIED_IDEOGRAPH-31B83> \xF0\xB1\xAE\x83
+<CJK_UNIFIED_IDEOGRAPH-31B84> \xF0\xB1\xAE\x84
+<CJK_UNIFIED_IDEOGRAPH-31B85> \xF0\xB1\xAE\x85
+<CJK_UNIFIED_IDEOGRAPH-31B86> \xF0\xB1\xAE\x86
+<CJK_UNIFIED_IDEOGRAPH-31B87> \xF0\xB1\xAE\x87
+<CJK_UNIFIED_IDEOGRAPH-31B88> \xF0\xB1\xAE\x88
+<CJK_UNIFIED_IDEOGRAPH-31B89> \xF0\xB1\xAE\x89
+<CJK_UNIFIED_IDEOGRAPH-31B8A> \xF0\xB1\xAE\x8A
+<CJK_UNIFIED_IDEOGRAPH-31B8B> \xF0\xB1\xAE\x8B
+<CJK_UNIFIED_IDEOGRAPH-31B8C> \xF0\xB1\xAE\x8C
+<CJK_UNIFIED_IDEOGRAPH-31B8D> \xF0\xB1\xAE\x8D
+<CJK_UNIFIED_IDEOGRAPH-31B8E> \xF0\xB1\xAE\x8E
+<CJK_UNIFIED_IDEOGRAPH-31B8F> \xF0\xB1\xAE\x8F
+<CJK_UNIFIED_IDEOGRAPH-31B90> \xF0\xB1\xAE\x90
+<CJK_UNIFIED_IDEOGRAPH-31B91> \xF0\xB1\xAE\x91
+<CJK_UNIFIED_IDEOGRAPH-31B92> \xF0\xB1\xAE\x92
+<CJK_UNIFIED_IDEOGRAPH-31B93> \xF0\xB1\xAE\x93
+<CJK_UNIFIED_IDEOGRAPH-31B94> \xF0\xB1\xAE\x94
+<CJK_UNIFIED_IDEOGRAPH-31B95> \xF0\xB1\xAE\x95
+<CJK_UNIFIED_IDEOGRAPH-31B96> \xF0\xB1\xAE\x96
+<CJK_UNIFIED_IDEOGRAPH-31B97> \xF0\xB1\xAE\x97
+<CJK_UNIFIED_IDEOGRAPH-31B98> \xF0\xB1\xAE\x98
+<CJK_UNIFIED_IDEOGRAPH-31B99> \xF0\xB1\xAE\x99
+<CJK_UNIFIED_IDEOGRAPH-31B9A> \xF0\xB1\xAE\x9A
+<CJK_UNIFIED_IDEOGRAPH-31B9B> \xF0\xB1\xAE\x9B
+<CJK_UNIFIED_IDEOGRAPH-31B9C> \xF0\xB1\xAE\x9C
+<CJK_UNIFIED_IDEOGRAPH-31B9D> \xF0\xB1\xAE\x9D
+<CJK_UNIFIED_IDEOGRAPH-31B9E> \xF0\xB1\xAE\x9E
+<CJK_UNIFIED_IDEOGRAPH-31B9F> \xF0\xB1\xAE\x9F
+<CJK_UNIFIED_IDEOGRAPH-31BA0> \xF0\xB1\xAE\xA0
+<CJK_UNIFIED_IDEOGRAPH-31BA1> \xF0\xB1\xAE\xA1
+<CJK_UNIFIED_IDEOGRAPH-31BA2> \xF0\xB1\xAE\xA2
+<CJK_UNIFIED_IDEOGRAPH-31BA3> \xF0\xB1\xAE\xA3
+<CJK_UNIFIED_IDEOGRAPH-31BA4> \xF0\xB1\xAE\xA4
+<CJK_UNIFIED_IDEOGRAPH-31BA5> \xF0\xB1\xAE\xA5
+<CJK_UNIFIED_IDEOGRAPH-31BA6> \xF0\xB1\xAE\xA6
+<CJK_UNIFIED_IDEOGRAPH-31BA7> \xF0\xB1\xAE\xA7
+<CJK_UNIFIED_IDEOGRAPH-31BA8> \xF0\xB1\xAE\xA8
+<CJK_UNIFIED_IDEOGRAPH-31BA9> \xF0\xB1\xAE\xA9
+<CJK_UNIFIED_IDEOGRAPH-31BAA> \xF0\xB1\xAE\xAA
+<CJK_UNIFIED_IDEOGRAPH-31BAB> \xF0\xB1\xAE\xAB
+<CJK_UNIFIED_IDEOGRAPH-31BAC> \xF0\xB1\xAE\xAC
+<CJK_UNIFIED_IDEOGRAPH-31BAD> \xF0\xB1\xAE\xAD
+<CJK_UNIFIED_IDEOGRAPH-31BAE> \xF0\xB1\xAE\xAE
+<CJK_UNIFIED_IDEOGRAPH-31BAF> \xF0\xB1\xAE\xAF
+<CJK_UNIFIED_IDEOGRAPH-31BB0> \xF0\xB1\xAE\xB0
+<CJK_UNIFIED_IDEOGRAPH-31BB1> \xF0\xB1\xAE\xB1
+<CJK_UNIFIED_IDEOGRAPH-31BB2> \xF0\xB1\xAE\xB2
+<CJK_UNIFIED_IDEOGRAPH-31BB3> \xF0\xB1\xAE\xB3
+<CJK_UNIFIED_IDEOGRAPH-31BB4> \xF0\xB1\xAE\xB4
+<CJK_UNIFIED_IDEOGRAPH-31BB5> \xF0\xB1\xAE\xB5
+<CJK_UNIFIED_IDEOGRAPH-31BB6> \xF0\xB1\xAE\xB6
+<CJK_UNIFIED_IDEOGRAPH-31BB7> \xF0\xB1\xAE\xB7
+<CJK_UNIFIED_IDEOGRAPH-31BB8> \xF0\xB1\xAE\xB8
+<CJK_UNIFIED_IDEOGRAPH-31BB9> \xF0\xB1\xAE\xB9
+<CJK_UNIFIED_IDEOGRAPH-31BBA> \xF0\xB1\xAE\xBA
+<CJK_UNIFIED_IDEOGRAPH-31BBB> \xF0\xB1\xAE\xBB
+<CJK_UNIFIED_IDEOGRAPH-31BBC> \xF0\xB1\xAE\xBC
+<CJK_UNIFIED_IDEOGRAPH-31BBD> \xF0\xB1\xAE\xBD
+<CJK_UNIFIED_IDEOGRAPH-31BBE> \xF0\xB1\xAE\xBE
+<CJK_UNIFIED_IDEOGRAPH-31BBF> \xF0\xB1\xAE\xBF
+<CJK_UNIFIED_IDEOGRAPH-31BC0> \xF0\xB1\xAF\x80
+<CJK_UNIFIED_IDEOGRAPH-31BC1> \xF0\xB1\xAF\x81
+<CJK_UNIFIED_IDEOGRAPH-31BC2> \xF0\xB1\xAF\x82
+<CJK_UNIFIED_IDEOGRAPH-31BC3> \xF0\xB1\xAF\x83
+<CJK_UNIFIED_IDEOGRAPH-31BC4> \xF0\xB1\xAF\x84
+<CJK_UNIFIED_IDEOGRAPH-31BC5> \xF0\xB1\xAF\x85
+<CJK_UNIFIED_IDEOGRAPH-31BC6> \xF0\xB1\xAF\x86
+<CJK_UNIFIED_IDEOGRAPH-31BC7> \xF0\xB1\xAF\x87
+<CJK_UNIFIED_IDEOGRAPH-31BC8> \xF0\xB1\xAF\x88
+<CJK_UNIFIED_IDEOGRAPH-31BC9> \xF0\xB1\xAF\x89
+<CJK_UNIFIED_IDEOGRAPH-31BCA> \xF0\xB1\xAF\x8A
+<CJK_UNIFIED_IDEOGRAPH-31BCB> \xF0\xB1\xAF\x8B
+<CJK_UNIFIED_IDEOGRAPH-31BCC> \xF0\xB1\xAF\x8C
+<CJK_UNIFIED_IDEOGRAPH-31BCD> \xF0\xB1\xAF\x8D
+<CJK_UNIFIED_IDEOGRAPH-31BCE> \xF0\xB1\xAF\x8E
+<CJK_UNIFIED_IDEOGRAPH-31BCF> \xF0\xB1\xAF\x8F
+<CJK_UNIFIED_IDEOGRAPH-31BD0> \xF0\xB1\xAF\x90
+<CJK_UNIFIED_IDEOGRAPH-31BD1> \xF0\xB1\xAF\x91
+<CJK_UNIFIED_IDEOGRAPH-31BD2> \xF0\xB1\xAF\x92
+<CJK_UNIFIED_IDEOGRAPH-31BD3> \xF0\xB1\xAF\x93
+<CJK_UNIFIED_IDEOGRAPH-31BD4> \xF0\xB1\xAF\x94
+<CJK_UNIFIED_IDEOGRAPH-31BD5> \xF0\xB1\xAF\x95
+<CJK_UNIFIED_IDEOGRAPH-31BD6> \xF0\xB1\xAF\x96
+<CJK_UNIFIED_IDEOGRAPH-31BD7> \xF0\xB1\xAF\x97
+<CJK_UNIFIED_IDEOGRAPH-31BD8> \xF0\xB1\xAF\x98
+<CJK_UNIFIED_IDEOGRAPH-31BD9> \xF0\xB1\xAF\x99
+<CJK_UNIFIED_IDEOGRAPH-31BDA> \xF0\xB1\xAF\x9A
+<CJK_UNIFIED_IDEOGRAPH-31BDB> \xF0\xB1\xAF\x9B
+<CJK_UNIFIED_IDEOGRAPH-31BDC> \xF0\xB1\xAF\x9C
+<CJK_UNIFIED_IDEOGRAPH-31BDD> \xF0\xB1\xAF\x9D
+<CJK_UNIFIED_IDEOGRAPH-31BDE> \xF0\xB1\xAF\x9E
+<CJK_UNIFIED_IDEOGRAPH-31BDF> \xF0\xB1\xAF\x9F
+<CJK_UNIFIED_IDEOGRAPH-31BE0> \xF0\xB1\xAF\xA0
+<CJK_UNIFIED_IDEOGRAPH-31BE1> \xF0\xB1\xAF\xA1
+<CJK_UNIFIED_IDEOGRAPH-31BE2> \xF0\xB1\xAF\xA2
+<CJK_UNIFIED_IDEOGRAPH-31BE3> \xF0\xB1\xAF\xA3
+<CJK_UNIFIED_IDEOGRAPH-31BE4> \xF0\xB1\xAF\xA4
+<CJK_UNIFIED_IDEOGRAPH-31BE5> \xF0\xB1\xAF\xA5
+<CJK_UNIFIED_IDEOGRAPH-31BE6> \xF0\xB1\xAF\xA6
+<CJK_UNIFIED_IDEOGRAPH-31BE7> \xF0\xB1\xAF\xA7
+<CJK_UNIFIED_IDEOGRAPH-31BE8> \xF0\xB1\xAF\xA8
+<CJK_UNIFIED_IDEOGRAPH-31BE9> \xF0\xB1\xAF\xA9
+<CJK_UNIFIED_IDEOGRAPH-31BEA> \xF0\xB1\xAF\xAA
+<CJK_UNIFIED_IDEOGRAPH-31BEB> \xF0\xB1\xAF\xAB
+<CJK_UNIFIED_IDEOGRAPH-31BEC> \xF0\xB1\xAF\xAC
+<CJK_UNIFIED_IDEOGRAPH-31BED> \xF0\xB1\xAF\xAD
+<CJK_UNIFIED_IDEOGRAPH-31BEE> \xF0\xB1\xAF\xAE
+<CJK_UNIFIED_IDEOGRAPH-31BEF> \xF0\xB1\xAF\xAF
+<CJK_UNIFIED_IDEOGRAPH-31BF0> \xF0\xB1\xAF\xB0
+<CJK_UNIFIED_IDEOGRAPH-31BF1> \xF0\xB1\xAF\xB1
+<CJK_UNIFIED_IDEOGRAPH-31BF2> \xF0\xB1\xAF\xB2
+<CJK_UNIFIED_IDEOGRAPH-31BF3> \xF0\xB1\xAF\xB3
+<CJK_UNIFIED_IDEOGRAPH-31BF4> \xF0\xB1\xAF\xB4
+<CJK_UNIFIED_IDEOGRAPH-31BF5> \xF0\xB1\xAF\xB5
+<CJK_UNIFIED_IDEOGRAPH-31BF6> \xF0\xB1\xAF\xB6
+<CJK_UNIFIED_IDEOGRAPH-31BF7> \xF0\xB1\xAF\xB7
+<CJK_UNIFIED_IDEOGRAPH-31BF8> \xF0\xB1\xAF\xB8
+<CJK_UNIFIED_IDEOGRAPH-31BF9> \xF0\xB1\xAF\xB9
+<CJK_UNIFIED_IDEOGRAPH-31BFA> \xF0\xB1\xAF\xBA
+<CJK_UNIFIED_IDEOGRAPH-31BFB> \xF0\xB1\xAF\xBB
+<CJK_UNIFIED_IDEOGRAPH-31BFC> \xF0\xB1\xAF\xBC
+<CJK_UNIFIED_IDEOGRAPH-31BFD> \xF0\xB1\xAF\xBD
+<CJK_UNIFIED_IDEOGRAPH-31BFE> \xF0\xB1\xAF\xBE
+<CJK_UNIFIED_IDEOGRAPH-31BFF> \xF0\xB1\xAF\xBF
+<CJK_UNIFIED_IDEOGRAPH-31C00> \xF0\xB1\xB0\x80
+<CJK_UNIFIED_IDEOGRAPH-31C01> \xF0\xB1\xB0\x81
+<CJK_UNIFIED_IDEOGRAPH-31C02> \xF0\xB1\xB0\x82
+<CJK_UNIFIED_IDEOGRAPH-31C03> \xF0\xB1\xB0\x83
+<CJK_UNIFIED_IDEOGRAPH-31C04> \xF0\xB1\xB0\x84
+<CJK_UNIFIED_IDEOGRAPH-31C05> \xF0\xB1\xB0\x85
+<CJK_UNIFIED_IDEOGRAPH-31C06> \xF0\xB1\xB0\x86
+<CJK_UNIFIED_IDEOGRAPH-31C07> \xF0\xB1\xB0\x87
+<CJK_UNIFIED_IDEOGRAPH-31C08> \xF0\xB1\xB0\x88
+<CJK_UNIFIED_IDEOGRAPH-31C09> \xF0\xB1\xB0\x89
+<CJK_UNIFIED_IDEOGRAPH-31C0A> \xF0\xB1\xB0\x8A
+<CJK_UNIFIED_IDEOGRAPH-31C0B> \xF0\xB1\xB0\x8B
+<CJK_UNIFIED_IDEOGRAPH-31C0C> \xF0\xB1\xB0\x8C
+<CJK_UNIFIED_IDEOGRAPH-31C0D> \xF0\xB1\xB0\x8D
+<CJK_UNIFIED_IDEOGRAPH-31C0E> \xF0\xB1\xB0\x8E
+<CJK_UNIFIED_IDEOGRAPH-31C0F> \xF0\xB1\xB0\x8F
+<CJK_UNIFIED_IDEOGRAPH-31C10> \xF0\xB1\xB0\x90
+<CJK_UNIFIED_IDEOGRAPH-31C11> \xF0\xB1\xB0\x91
+<CJK_UNIFIED_IDEOGRAPH-31C12> \xF0\xB1\xB0\x92
+<CJK_UNIFIED_IDEOGRAPH-31C13> \xF0\xB1\xB0\x93
+<CJK_UNIFIED_IDEOGRAPH-31C14> \xF0\xB1\xB0\x94
+<CJK_UNIFIED_IDEOGRAPH-31C15> \xF0\xB1\xB0\x95
+<CJK_UNIFIED_IDEOGRAPH-31C16> \xF0\xB1\xB0\x96
+<CJK_UNIFIED_IDEOGRAPH-31C17> \xF0\xB1\xB0\x97
+<CJK_UNIFIED_IDEOGRAPH-31C18> \xF0\xB1\xB0\x98
+<CJK_UNIFIED_IDEOGRAPH-31C19> \xF0\xB1\xB0\x99
+<CJK_UNIFIED_IDEOGRAPH-31C1A> \xF0\xB1\xB0\x9A
+<CJK_UNIFIED_IDEOGRAPH-31C1B> \xF0\xB1\xB0\x9B
+<CJK_UNIFIED_IDEOGRAPH-31C1C> \xF0\xB1\xB0\x9C
+<CJK_UNIFIED_IDEOGRAPH-31C1D> \xF0\xB1\xB0\x9D
+<CJK_UNIFIED_IDEOGRAPH-31C1E> \xF0\xB1\xB0\x9E
+<CJK_UNIFIED_IDEOGRAPH-31C1F> \xF0\xB1\xB0\x9F
+<CJK_UNIFIED_IDEOGRAPH-31C20> \xF0\xB1\xB0\xA0
+<CJK_UNIFIED_IDEOGRAPH-31C21> \xF0\xB1\xB0\xA1
+<CJK_UNIFIED_IDEOGRAPH-31C22> \xF0\xB1\xB0\xA2
+<CJK_UNIFIED_IDEOGRAPH-31C23> \xF0\xB1\xB0\xA3
+<CJK_UNIFIED_IDEOGRAPH-31C24> \xF0\xB1\xB0\xA4
+<CJK_UNIFIED_IDEOGRAPH-31C25> \xF0\xB1\xB0\xA5
+<CJK_UNIFIED_IDEOGRAPH-31C26> \xF0\xB1\xB0\xA6
+<CJK_UNIFIED_IDEOGRAPH-31C27> \xF0\xB1\xB0\xA7
+<CJK_UNIFIED_IDEOGRAPH-31C28> \xF0\xB1\xB0\xA8
+<CJK_UNIFIED_IDEOGRAPH-31C29> \xF0\xB1\xB0\xA9
+<CJK_UNIFIED_IDEOGRAPH-31C2A> \xF0\xB1\xB0\xAA
+<CJK_UNIFIED_IDEOGRAPH-31C2B> \xF0\xB1\xB0\xAB
+<CJK_UNIFIED_IDEOGRAPH-31C2C> \xF0\xB1\xB0\xAC
+<CJK_UNIFIED_IDEOGRAPH-31C2D> \xF0\xB1\xB0\xAD
+<CJK_UNIFIED_IDEOGRAPH-31C2E> \xF0\xB1\xB0\xAE
+<CJK_UNIFIED_IDEOGRAPH-31C2F> \xF0\xB1\xB0\xAF
+<CJK_UNIFIED_IDEOGRAPH-31C30> \xF0\xB1\xB0\xB0
+<CJK_UNIFIED_IDEOGRAPH-31C31> \xF0\xB1\xB0\xB1
+<CJK_UNIFIED_IDEOGRAPH-31C32> \xF0\xB1\xB0\xB2
+<CJK_UNIFIED_IDEOGRAPH-31C33> \xF0\xB1\xB0\xB3
+<CJK_UNIFIED_IDEOGRAPH-31C34> \xF0\xB1\xB0\xB4
+<CJK_UNIFIED_IDEOGRAPH-31C35> \xF0\xB1\xB0\xB5
+<CJK_UNIFIED_IDEOGRAPH-31C36> \xF0\xB1\xB0\xB6
+<CJK_UNIFIED_IDEOGRAPH-31C37> \xF0\xB1\xB0\xB7
+<CJK_UNIFIED_IDEOGRAPH-31C38> \xF0\xB1\xB0\xB8
+<CJK_UNIFIED_IDEOGRAPH-31C39> \xF0\xB1\xB0\xB9
+<CJK_UNIFIED_IDEOGRAPH-31C3A> \xF0\xB1\xB0\xBA
+<CJK_UNIFIED_IDEOGRAPH-31C3B> \xF0\xB1\xB0\xBB
+<CJK_UNIFIED_IDEOGRAPH-31C3C> \xF0\xB1\xB0\xBC
+<CJK_UNIFIED_IDEOGRAPH-31C3D> \xF0\xB1\xB0\xBD
+<CJK_UNIFIED_IDEOGRAPH-31C3E> \xF0\xB1\xB0\xBE
+<CJK_UNIFIED_IDEOGRAPH-31C3F> \xF0\xB1\xB0\xBF
+<CJK_UNIFIED_IDEOGRAPH-31C40> \xF0\xB1\xB1\x80
+<CJK_UNIFIED_IDEOGRAPH-31C41> \xF0\xB1\xB1\x81
+<CJK_UNIFIED_IDEOGRAPH-31C42> \xF0\xB1\xB1\x82
+<CJK_UNIFIED_IDEOGRAPH-31C43> \xF0\xB1\xB1\x83
+<CJK_UNIFIED_IDEOGRAPH-31C44> \xF0\xB1\xB1\x84
+<CJK_UNIFIED_IDEOGRAPH-31C45> \xF0\xB1\xB1\x85
+<CJK_UNIFIED_IDEOGRAPH-31C46> \xF0\xB1\xB1\x86
+<CJK_UNIFIED_IDEOGRAPH-31C47> \xF0\xB1\xB1\x87
+<CJK_UNIFIED_IDEOGRAPH-31C48> \xF0\xB1\xB1\x88
+<CJK_UNIFIED_IDEOGRAPH-31C49> \xF0\xB1\xB1\x89
+<CJK_UNIFIED_IDEOGRAPH-31C4A> \xF0\xB1\xB1\x8A
+<CJK_UNIFIED_IDEOGRAPH-31C4B> \xF0\xB1\xB1\x8B
+<CJK_UNIFIED_IDEOGRAPH-31C4C> \xF0\xB1\xB1\x8C
+<CJK_UNIFIED_IDEOGRAPH-31C4D> \xF0\xB1\xB1\x8D
+<CJK_UNIFIED_IDEOGRAPH-31C4E> \xF0\xB1\xB1\x8E
+<CJK_UNIFIED_IDEOGRAPH-31C4F> \xF0\xB1\xB1\x8F
+<CJK_UNIFIED_IDEOGRAPH-31C50> \xF0\xB1\xB1\x90
+<CJK_UNIFIED_IDEOGRAPH-31C51> \xF0\xB1\xB1\x91
+<CJK_UNIFIED_IDEOGRAPH-31C52> \xF0\xB1\xB1\x92
+<CJK_UNIFIED_IDEOGRAPH-31C53> \xF0\xB1\xB1\x93
+<CJK_UNIFIED_IDEOGRAPH-31C54> \xF0\xB1\xB1\x94
+<CJK_UNIFIED_IDEOGRAPH-31C55> \xF0\xB1\xB1\x95
+<CJK_UNIFIED_IDEOGRAPH-31C56> \xF0\xB1\xB1\x96
+<CJK_UNIFIED_IDEOGRAPH-31C57> \xF0\xB1\xB1\x97
+<CJK_UNIFIED_IDEOGRAPH-31C58> \xF0\xB1\xB1\x98
+<CJK_UNIFIED_IDEOGRAPH-31C59> \xF0\xB1\xB1\x99
+<CJK_UNIFIED_IDEOGRAPH-31C5A> \xF0\xB1\xB1\x9A
+<CJK_UNIFIED_IDEOGRAPH-31C5B> \xF0\xB1\xB1\x9B
+<CJK_UNIFIED_IDEOGRAPH-31C5C> \xF0\xB1\xB1\x9C
+<CJK_UNIFIED_IDEOGRAPH-31C5D> \xF0\xB1\xB1\x9D
+<CJK_UNIFIED_IDEOGRAPH-31C5E> \xF0\xB1\xB1\x9E
+<CJK_UNIFIED_IDEOGRAPH-31C5F> \xF0\xB1\xB1\x9F
+<CJK_UNIFIED_IDEOGRAPH-31C60> \xF0\xB1\xB1\xA0
+<CJK_UNIFIED_IDEOGRAPH-31C61> \xF0\xB1\xB1\xA1
+<CJK_UNIFIED_IDEOGRAPH-31C62> \xF0\xB1\xB1\xA2
+<CJK_UNIFIED_IDEOGRAPH-31C63> \xF0\xB1\xB1\xA3
+<CJK_UNIFIED_IDEOGRAPH-31C64> \xF0\xB1\xB1\xA4
+<CJK_UNIFIED_IDEOGRAPH-31C65> \xF0\xB1\xB1\xA5
+<CJK_UNIFIED_IDEOGRAPH-31C66> \xF0\xB1\xB1\xA6
+<CJK_UNIFIED_IDEOGRAPH-31C67> \xF0\xB1\xB1\xA7
+<CJK_UNIFIED_IDEOGRAPH-31C68> \xF0\xB1\xB1\xA8
+<CJK_UNIFIED_IDEOGRAPH-31C69> \xF0\xB1\xB1\xA9
+<CJK_UNIFIED_IDEOGRAPH-31C6A> \xF0\xB1\xB1\xAA
+<CJK_UNIFIED_IDEOGRAPH-31C6B> \xF0\xB1\xB1\xAB
+<CJK_UNIFIED_IDEOGRAPH-31C6C> \xF0\xB1\xB1\xAC
+<CJK_UNIFIED_IDEOGRAPH-31C6D> \xF0\xB1\xB1\xAD
+<CJK_UNIFIED_IDEOGRAPH-31C6E> \xF0\xB1\xB1\xAE
+<CJK_UNIFIED_IDEOGRAPH-31C6F> \xF0\xB1\xB1\xAF
+<CJK_UNIFIED_IDEOGRAPH-31C70> \xF0\xB1\xB1\xB0
+<CJK_UNIFIED_IDEOGRAPH-31C71> \xF0\xB1\xB1\xB1
+<CJK_UNIFIED_IDEOGRAPH-31C72> \xF0\xB1\xB1\xB2
+<CJK_UNIFIED_IDEOGRAPH-31C73> \xF0\xB1\xB1\xB3
+<CJK_UNIFIED_IDEOGRAPH-31C74> \xF0\xB1\xB1\xB4
+<CJK_UNIFIED_IDEOGRAPH-31C75> \xF0\xB1\xB1\xB5
+<CJK_UNIFIED_IDEOGRAPH-31C76> \xF0\xB1\xB1\xB6
+<CJK_UNIFIED_IDEOGRAPH-31C77> \xF0\xB1\xB1\xB7
+<CJK_UNIFIED_IDEOGRAPH-31C78> \xF0\xB1\xB1\xB8
+<CJK_UNIFIED_IDEOGRAPH-31C79> \xF0\xB1\xB1\xB9
+<CJK_UNIFIED_IDEOGRAPH-31C7A> \xF0\xB1\xB1\xBA
+<CJK_UNIFIED_IDEOGRAPH-31C7B> \xF0\xB1\xB1\xBB
+<CJK_UNIFIED_IDEOGRAPH-31C7C> \xF0\xB1\xB1\xBC
+<CJK_UNIFIED_IDEOGRAPH-31C7D> \xF0\xB1\xB1\xBD
+<CJK_UNIFIED_IDEOGRAPH-31C7E> \xF0\xB1\xB1\xBE
+<CJK_UNIFIED_IDEOGRAPH-31C7F> \xF0\xB1\xB1\xBF
+<CJK_UNIFIED_IDEOGRAPH-31C80> \xF0\xB1\xB2\x80
+<CJK_UNIFIED_IDEOGRAPH-31C81> \xF0\xB1\xB2\x81
+<CJK_UNIFIED_IDEOGRAPH-31C82> \xF0\xB1\xB2\x82
+<CJK_UNIFIED_IDEOGRAPH-31C83> \xF0\xB1\xB2\x83
+<CJK_UNIFIED_IDEOGRAPH-31C84> \xF0\xB1\xB2\x84
+<CJK_UNIFIED_IDEOGRAPH-31C85> \xF0\xB1\xB2\x85
+<CJK_UNIFIED_IDEOGRAPH-31C86> \xF0\xB1\xB2\x86
+<CJK_UNIFIED_IDEOGRAPH-31C87> \xF0\xB1\xB2\x87
+<CJK_UNIFIED_IDEOGRAPH-31C88> \xF0\xB1\xB2\x88
+<CJK_UNIFIED_IDEOGRAPH-31C89> \xF0\xB1\xB2\x89
+<CJK_UNIFIED_IDEOGRAPH-31C8A> \xF0\xB1\xB2\x8A
+<CJK_UNIFIED_IDEOGRAPH-31C8B> \xF0\xB1\xB2\x8B
+<CJK_UNIFIED_IDEOGRAPH-31C8C> \xF0\xB1\xB2\x8C
+<CJK_UNIFIED_IDEOGRAPH-31C8D> \xF0\xB1\xB2\x8D
+<CJK_UNIFIED_IDEOGRAPH-31C8E> \xF0\xB1\xB2\x8E
+<CJK_UNIFIED_IDEOGRAPH-31C8F> \xF0\xB1\xB2\x8F
+<CJK_UNIFIED_IDEOGRAPH-31C90> \xF0\xB1\xB2\x90
+<CJK_UNIFIED_IDEOGRAPH-31C91> \xF0\xB1\xB2\x91
+<CJK_UNIFIED_IDEOGRAPH-31C92> \xF0\xB1\xB2\x92
+<CJK_UNIFIED_IDEOGRAPH-31C93> \xF0\xB1\xB2\x93
+<CJK_UNIFIED_IDEOGRAPH-31C94> \xF0\xB1\xB2\x94
+<CJK_UNIFIED_IDEOGRAPH-31C95> \xF0\xB1\xB2\x95
+<CJK_UNIFIED_IDEOGRAPH-31C96> \xF0\xB1\xB2\x96
+<CJK_UNIFIED_IDEOGRAPH-31C97> \xF0\xB1\xB2\x97
+<CJK_UNIFIED_IDEOGRAPH-31C98> \xF0\xB1\xB2\x98
+<CJK_UNIFIED_IDEOGRAPH-31C99> \xF0\xB1\xB2\x99
+<CJK_UNIFIED_IDEOGRAPH-31C9A> \xF0\xB1\xB2\x9A
+<CJK_UNIFIED_IDEOGRAPH-31C9B> \xF0\xB1\xB2\x9B
+<CJK_UNIFIED_IDEOGRAPH-31C9C> \xF0\xB1\xB2\x9C
+<CJK_UNIFIED_IDEOGRAPH-31C9D> \xF0\xB1\xB2\x9D
+<CJK_UNIFIED_IDEOGRAPH-31C9E> \xF0\xB1\xB2\x9E
+<CJK_UNIFIED_IDEOGRAPH-31C9F> \xF0\xB1\xB2\x9F
+<CJK_UNIFIED_IDEOGRAPH-31CA0> \xF0\xB1\xB2\xA0
+<CJK_UNIFIED_IDEOGRAPH-31CA1> \xF0\xB1\xB2\xA1
+<CJK_UNIFIED_IDEOGRAPH-31CA2> \xF0\xB1\xB2\xA2
+<CJK_UNIFIED_IDEOGRAPH-31CA3> \xF0\xB1\xB2\xA3
+<CJK_UNIFIED_IDEOGRAPH-31CA4> \xF0\xB1\xB2\xA4
+<CJK_UNIFIED_IDEOGRAPH-31CA5> \xF0\xB1\xB2\xA5
+<CJK_UNIFIED_IDEOGRAPH-31CA6> \xF0\xB1\xB2\xA6
+<CJK_UNIFIED_IDEOGRAPH-31CA7> \xF0\xB1\xB2\xA7
+<CJK_UNIFIED_IDEOGRAPH-31CA8> \xF0\xB1\xB2\xA8
+<CJK_UNIFIED_IDEOGRAPH-31CA9> \xF0\xB1\xB2\xA9
+<CJK_UNIFIED_IDEOGRAPH-31CAA> \xF0\xB1\xB2\xAA
+<CJK_UNIFIED_IDEOGRAPH-31CAB> \xF0\xB1\xB2\xAB
+<CJK_UNIFIED_IDEOGRAPH-31CAC> \xF0\xB1\xB2\xAC
+<CJK_UNIFIED_IDEOGRAPH-31CAD> \xF0\xB1\xB2\xAD
+<CJK_UNIFIED_IDEOGRAPH-31CAE> \xF0\xB1\xB2\xAE
+<CJK_UNIFIED_IDEOGRAPH-31CAF> \xF0\xB1\xB2\xAF
+<CJK_UNIFIED_IDEOGRAPH-31CB0> \xF0\xB1\xB2\xB0
+<CJK_UNIFIED_IDEOGRAPH-31CB1> \xF0\xB1\xB2\xB1
+<CJK_UNIFIED_IDEOGRAPH-31CB2> \xF0\xB1\xB2\xB2
+<CJK_UNIFIED_IDEOGRAPH-31CB3> \xF0\xB1\xB2\xB3
+<CJK_UNIFIED_IDEOGRAPH-31CB4> \xF0\xB1\xB2\xB4
+<CJK_UNIFIED_IDEOGRAPH-31CB5> \xF0\xB1\xB2\xB5
+<CJK_UNIFIED_IDEOGRAPH-31CB6> \xF0\xB1\xB2\xB6
+<CJK_UNIFIED_IDEOGRAPH-31CB7> \xF0\xB1\xB2\xB7
+<CJK_UNIFIED_IDEOGRAPH-31CB8> \xF0\xB1\xB2\xB8
+<CJK_UNIFIED_IDEOGRAPH-31CB9> \xF0\xB1\xB2\xB9
+<CJK_UNIFIED_IDEOGRAPH-31CBA> \xF0\xB1\xB2\xBA
+<CJK_UNIFIED_IDEOGRAPH-31CBB> \xF0\xB1\xB2\xBB
+<CJK_UNIFIED_IDEOGRAPH-31CBC> \xF0\xB1\xB2\xBC
+<CJK_UNIFIED_IDEOGRAPH-31CBD> \xF0\xB1\xB2\xBD
+<CJK_UNIFIED_IDEOGRAPH-31CBE> \xF0\xB1\xB2\xBE
+<CJK_UNIFIED_IDEOGRAPH-31CBF> \xF0\xB1\xB2\xBF
+<CJK_UNIFIED_IDEOGRAPH-31CC0> \xF0\xB1\xB3\x80
+<CJK_UNIFIED_IDEOGRAPH-31CC1> \xF0\xB1\xB3\x81
+<CJK_UNIFIED_IDEOGRAPH-31CC2> \xF0\xB1\xB3\x82
+<CJK_UNIFIED_IDEOGRAPH-31CC3> \xF0\xB1\xB3\x83
+<CJK_UNIFIED_IDEOGRAPH-31CC4> \xF0\xB1\xB3\x84
+<CJK_UNIFIED_IDEOGRAPH-31CC5> \xF0\xB1\xB3\x85
+<CJK_UNIFIED_IDEOGRAPH-31CC6> \xF0\xB1\xB3\x86
+<CJK_UNIFIED_IDEOGRAPH-31CC7> \xF0\xB1\xB3\x87
+<CJK_UNIFIED_IDEOGRAPH-31CC8> \xF0\xB1\xB3\x88
+<CJK_UNIFIED_IDEOGRAPH-31CC9> \xF0\xB1\xB3\x89
+<CJK_UNIFIED_IDEOGRAPH-31CCA> \xF0\xB1\xB3\x8A
+<CJK_UNIFIED_IDEOGRAPH-31CCB> \xF0\xB1\xB3\x8B
+<CJK_UNIFIED_IDEOGRAPH-31CCC> \xF0\xB1\xB3\x8C
+<CJK_UNIFIED_IDEOGRAPH-31CCD> \xF0\xB1\xB3\x8D
+<CJK_UNIFIED_IDEOGRAPH-31CCE> \xF0\xB1\xB3\x8E
+<CJK_UNIFIED_IDEOGRAPH-31CCF> \xF0\xB1\xB3\x8F
+<CJK_UNIFIED_IDEOGRAPH-31CD0> \xF0\xB1\xB3\x90
+<CJK_UNIFIED_IDEOGRAPH-31CD1> \xF0\xB1\xB3\x91
+<CJK_UNIFIED_IDEOGRAPH-31CD2> \xF0\xB1\xB3\x92
+<CJK_UNIFIED_IDEOGRAPH-31CD3> \xF0\xB1\xB3\x93
+<CJK_UNIFIED_IDEOGRAPH-31CD4> \xF0\xB1\xB3\x94
+<CJK_UNIFIED_IDEOGRAPH-31CD5> \xF0\xB1\xB3\x95
+<CJK_UNIFIED_IDEOGRAPH-31CD6> \xF0\xB1\xB3\x96
+<CJK_UNIFIED_IDEOGRAPH-31CD7> \xF0\xB1\xB3\x97
+<CJK_UNIFIED_IDEOGRAPH-31CD8> \xF0\xB1\xB3\x98
+<CJK_UNIFIED_IDEOGRAPH-31CD9> \xF0\xB1\xB3\x99
+<CJK_UNIFIED_IDEOGRAPH-31CDA> \xF0\xB1\xB3\x9A
+<CJK_UNIFIED_IDEOGRAPH-31CDB> \xF0\xB1\xB3\x9B
+<CJK_UNIFIED_IDEOGRAPH-31CDC> \xF0\xB1\xB3\x9C
+<CJK_UNIFIED_IDEOGRAPH-31CDD> \xF0\xB1\xB3\x9D
+<CJK_UNIFIED_IDEOGRAPH-31CDE> \xF0\xB1\xB3\x9E
+<CJK_UNIFIED_IDEOGRAPH-31CDF> \xF0\xB1\xB3\x9F
+<CJK_UNIFIED_IDEOGRAPH-31CE0> \xF0\xB1\xB3\xA0
+<CJK_UNIFIED_IDEOGRAPH-31CE1> \xF0\xB1\xB3\xA1
+<CJK_UNIFIED_IDEOGRAPH-31CE2> \xF0\xB1\xB3\xA2
+<CJK_UNIFIED_IDEOGRAPH-31CE3> \xF0\xB1\xB3\xA3
+<CJK_UNIFIED_IDEOGRAPH-31CE4> \xF0\xB1\xB3\xA4
+<CJK_UNIFIED_IDEOGRAPH-31CE5> \xF0\xB1\xB3\xA5
+<CJK_UNIFIED_IDEOGRAPH-31CE6> \xF0\xB1\xB3\xA6
+<CJK_UNIFIED_IDEOGRAPH-31CE7> \xF0\xB1\xB3\xA7
+<CJK_UNIFIED_IDEOGRAPH-31CE8> \xF0\xB1\xB3\xA8
+<CJK_UNIFIED_IDEOGRAPH-31CE9> \xF0\xB1\xB3\xA9
+<CJK_UNIFIED_IDEOGRAPH-31CEA> \xF0\xB1\xB3\xAA
+<CJK_UNIFIED_IDEOGRAPH-31CEB> \xF0\xB1\xB3\xAB
+<CJK_UNIFIED_IDEOGRAPH-31CEC> \xF0\xB1\xB3\xAC
+<CJK_UNIFIED_IDEOGRAPH-31CED> \xF0\xB1\xB3\xAD
+<CJK_UNIFIED_IDEOGRAPH-31CEE> \xF0\xB1\xB3\xAE
+<CJK_UNIFIED_IDEOGRAPH-31CEF> \xF0\xB1\xB3\xAF
+<CJK_UNIFIED_IDEOGRAPH-31CF0> \xF0\xB1\xB3\xB0
+<CJK_UNIFIED_IDEOGRAPH-31CF1> \xF0\xB1\xB3\xB1
+<CJK_UNIFIED_IDEOGRAPH-31CF2> \xF0\xB1\xB3\xB2
+<CJK_UNIFIED_IDEOGRAPH-31CF3> \xF0\xB1\xB3\xB3
+<CJK_UNIFIED_IDEOGRAPH-31CF4> \xF0\xB1\xB3\xB4
+<CJK_UNIFIED_IDEOGRAPH-31CF5> \xF0\xB1\xB3\xB5
+<CJK_UNIFIED_IDEOGRAPH-31CF6> \xF0\xB1\xB3\xB6
+<CJK_UNIFIED_IDEOGRAPH-31CF7> \xF0\xB1\xB3\xB7
+<CJK_UNIFIED_IDEOGRAPH-31CF8> \xF0\xB1\xB3\xB8
+<CJK_UNIFIED_IDEOGRAPH-31CF9> \xF0\xB1\xB3\xB9
+<CJK_UNIFIED_IDEOGRAPH-31CFA> \xF0\xB1\xB3\xBA
+<CJK_UNIFIED_IDEOGRAPH-31CFB> \xF0\xB1\xB3\xBB
+<CJK_UNIFIED_IDEOGRAPH-31CFC> \xF0\xB1\xB3\xBC
+<CJK_UNIFIED_IDEOGRAPH-31CFD> \xF0\xB1\xB3\xBD
+<CJK_UNIFIED_IDEOGRAPH-31CFE> \xF0\xB1\xB3\xBE
+<CJK_UNIFIED_IDEOGRAPH-31CFF> \xF0\xB1\xB3\xBF
+<CJK_UNIFIED_IDEOGRAPH-31D00> \xF0\xB1\xB4\x80
+<CJK_UNIFIED_IDEOGRAPH-31D01> \xF0\xB1\xB4\x81
+<CJK_UNIFIED_IDEOGRAPH-31D02> \xF0\xB1\xB4\x82
+<CJK_UNIFIED_IDEOGRAPH-31D03> \xF0\xB1\xB4\x83
+<CJK_UNIFIED_IDEOGRAPH-31D04> \xF0\xB1\xB4\x84
+<CJK_UNIFIED_IDEOGRAPH-31D05> \xF0\xB1\xB4\x85
+<CJK_UNIFIED_IDEOGRAPH-31D06> \xF0\xB1\xB4\x86
+<CJK_UNIFIED_IDEOGRAPH-31D07> \xF0\xB1\xB4\x87
+<CJK_UNIFIED_IDEOGRAPH-31D08> \xF0\xB1\xB4\x88
+<CJK_UNIFIED_IDEOGRAPH-31D09> \xF0\xB1\xB4\x89
+<CJK_UNIFIED_IDEOGRAPH-31D0A> \xF0\xB1\xB4\x8A
+<CJK_UNIFIED_IDEOGRAPH-31D0B> \xF0\xB1\xB4\x8B
+<CJK_UNIFIED_IDEOGRAPH-31D0C> \xF0\xB1\xB4\x8C
+<CJK_UNIFIED_IDEOGRAPH-31D0D> \xF0\xB1\xB4\x8D
+<CJK_UNIFIED_IDEOGRAPH-31D0E> \xF0\xB1\xB4\x8E
+<CJK_UNIFIED_IDEOGRAPH-31D0F> \xF0\xB1\xB4\x8F
+<CJK_UNIFIED_IDEOGRAPH-31D10> \xF0\xB1\xB4\x90
+<CJK_UNIFIED_IDEOGRAPH-31D11> \xF0\xB1\xB4\x91
+<CJK_UNIFIED_IDEOGRAPH-31D12> \xF0\xB1\xB4\x92
+<CJK_UNIFIED_IDEOGRAPH-31D13> \xF0\xB1\xB4\x93
+<CJK_UNIFIED_IDEOGRAPH-31D14> \xF0\xB1\xB4\x94
+<CJK_UNIFIED_IDEOGRAPH-31D15> \xF0\xB1\xB4\x95
+<CJK_UNIFIED_IDEOGRAPH-31D16> \xF0\xB1\xB4\x96
+<CJK_UNIFIED_IDEOGRAPH-31D17> \xF0\xB1\xB4\x97
+<CJK_UNIFIED_IDEOGRAPH-31D18> \xF0\xB1\xB4\x98
+<CJK_UNIFIED_IDEOGRAPH-31D19> \xF0\xB1\xB4\x99
+<CJK_UNIFIED_IDEOGRAPH-31D1A> \xF0\xB1\xB4\x9A
+<CJK_UNIFIED_IDEOGRAPH-31D1B> \xF0\xB1\xB4\x9B
+<CJK_UNIFIED_IDEOGRAPH-31D1C> \xF0\xB1\xB4\x9C
+<CJK_UNIFIED_IDEOGRAPH-31D1D> \xF0\xB1\xB4\x9D
+<CJK_UNIFIED_IDEOGRAPH-31D1E> \xF0\xB1\xB4\x9E
+<CJK_UNIFIED_IDEOGRAPH-31D1F> \xF0\xB1\xB4\x9F
+<CJK_UNIFIED_IDEOGRAPH-31D20> \xF0\xB1\xB4\xA0
+<CJK_UNIFIED_IDEOGRAPH-31D21> \xF0\xB1\xB4\xA1
+<CJK_UNIFIED_IDEOGRAPH-31D22> \xF0\xB1\xB4\xA2
+<CJK_UNIFIED_IDEOGRAPH-31D23> \xF0\xB1\xB4\xA3
+<CJK_UNIFIED_IDEOGRAPH-31D24> \xF0\xB1\xB4\xA4
+<CJK_UNIFIED_IDEOGRAPH-31D25> \xF0\xB1\xB4\xA5
+<CJK_UNIFIED_IDEOGRAPH-31D26> \xF0\xB1\xB4\xA6
+<CJK_UNIFIED_IDEOGRAPH-31D27> \xF0\xB1\xB4\xA7
+<CJK_UNIFIED_IDEOGRAPH-31D28> \xF0\xB1\xB4\xA8
+<CJK_UNIFIED_IDEOGRAPH-31D29> \xF0\xB1\xB4\xA9
+<CJK_UNIFIED_IDEOGRAPH-31D2A> \xF0\xB1\xB4\xAA
+<CJK_UNIFIED_IDEOGRAPH-31D2B> \xF0\xB1\xB4\xAB
+<CJK_UNIFIED_IDEOGRAPH-31D2C> \xF0\xB1\xB4\xAC
+<CJK_UNIFIED_IDEOGRAPH-31D2D> \xF0\xB1\xB4\xAD
+<CJK_UNIFIED_IDEOGRAPH-31D2E> \xF0\xB1\xB4\xAE
+<CJK_UNIFIED_IDEOGRAPH-31D2F> \xF0\xB1\xB4\xAF
+<CJK_UNIFIED_IDEOGRAPH-31D30> \xF0\xB1\xB4\xB0
+<CJK_UNIFIED_IDEOGRAPH-31D31> \xF0\xB1\xB4\xB1
+<CJK_UNIFIED_IDEOGRAPH-31D32> \xF0\xB1\xB4\xB2
+<CJK_UNIFIED_IDEOGRAPH-31D33> \xF0\xB1\xB4\xB3
+<CJK_UNIFIED_IDEOGRAPH-31D34> \xF0\xB1\xB4\xB4
+<CJK_UNIFIED_IDEOGRAPH-31D35> \xF0\xB1\xB4\xB5
+<CJK_UNIFIED_IDEOGRAPH-31D36> \xF0\xB1\xB4\xB6
+<CJK_UNIFIED_IDEOGRAPH-31D37> \xF0\xB1\xB4\xB7
+<CJK_UNIFIED_IDEOGRAPH-31D38> \xF0\xB1\xB4\xB8
+<CJK_UNIFIED_IDEOGRAPH-31D39> \xF0\xB1\xB4\xB9
+<CJK_UNIFIED_IDEOGRAPH-31D3A> \xF0\xB1\xB4\xBA
+<CJK_UNIFIED_IDEOGRAPH-31D3B> \xF0\xB1\xB4\xBB
+<CJK_UNIFIED_IDEOGRAPH-31D3C> \xF0\xB1\xB4\xBC
+<CJK_UNIFIED_IDEOGRAPH-31D3D> \xF0\xB1\xB4\xBD
+<CJK_UNIFIED_IDEOGRAPH-31D3E> \xF0\xB1\xB4\xBE
+<CJK_UNIFIED_IDEOGRAPH-31D3F> \xF0\xB1\xB4\xBF
+<CJK_UNIFIED_IDEOGRAPH-31D40> \xF0\xB1\xB5\x80
+<CJK_UNIFIED_IDEOGRAPH-31D41> \xF0\xB1\xB5\x81
+<CJK_UNIFIED_IDEOGRAPH-31D42> \xF0\xB1\xB5\x82
+<CJK_UNIFIED_IDEOGRAPH-31D43> \xF0\xB1\xB5\x83
+<CJK_UNIFIED_IDEOGRAPH-31D44> \xF0\xB1\xB5\x84
+<CJK_UNIFIED_IDEOGRAPH-31D45> \xF0\xB1\xB5\x85
+<CJK_UNIFIED_IDEOGRAPH-31D46> \xF0\xB1\xB5\x86
+<CJK_UNIFIED_IDEOGRAPH-31D47> \xF0\xB1\xB5\x87
+<CJK_UNIFIED_IDEOGRAPH-31D48> \xF0\xB1\xB5\x88
+<CJK_UNIFIED_IDEOGRAPH-31D49> \xF0\xB1\xB5\x89
+<CJK_UNIFIED_IDEOGRAPH-31D4A> \xF0\xB1\xB5\x8A
+<CJK_UNIFIED_IDEOGRAPH-31D4B> \xF0\xB1\xB5\x8B
+<CJK_UNIFIED_IDEOGRAPH-31D4C> \xF0\xB1\xB5\x8C
+<CJK_UNIFIED_IDEOGRAPH-31D4D> \xF0\xB1\xB5\x8D
+<CJK_UNIFIED_IDEOGRAPH-31D4E> \xF0\xB1\xB5\x8E
+<CJK_UNIFIED_IDEOGRAPH-31D4F> \xF0\xB1\xB5\x8F
+<CJK_UNIFIED_IDEOGRAPH-31D50> \xF0\xB1\xB5\x90
+<CJK_UNIFIED_IDEOGRAPH-31D51> \xF0\xB1\xB5\x91
+<CJK_UNIFIED_IDEOGRAPH-31D52> \xF0\xB1\xB5\x92
+<CJK_UNIFIED_IDEOGRAPH-31D53> \xF0\xB1\xB5\x93
+<CJK_UNIFIED_IDEOGRAPH-31D54> \xF0\xB1\xB5\x94
+<CJK_UNIFIED_IDEOGRAPH-31D55> \xF0\xB1\xB5\x95
+<CJK_UNIFIED_IDEOGRAPH-31D56> \xF0\xB1\xB5\x96
+<CJK_UNIFIED_IDEOGRAPH-31D57> \xF0\xB1\xB5\x97
+<CJK_UNIFIED_IDEOGRAPH-31D58> \xF0\xB1\xB5\x98
+<CJK_UNIFIED_IDEOGRAPH-31D59> \xF0\xB1\xB5\x99
+<CJK_UNIFIED_IDEOGRAPH-31D5A> \xF0\xB1\xB5\x9A
+<CJK_UNIFIED_IDEOGRAPH-31D5B> \xF0\xB1\xB5\x9B
+<CJK_UNIFIED_IDEOGRAPH-31D5C> \xF0\xB1\xB5\x9C
+<CJK_UNIFIED_IDEOGRAPH-31D5D> \xF0\xB1\xB5\x9D
+<CJK_UNIFIED_IDEOGRAPH-31D5E> \xF0\xB1\xB5\x9E
+<CJK_UNIFIED_IDEOGRAPH-31D5F> \xF0\xB1\xB5\x9F
+<CJK_UNIFIED_IDEOGRAPH-31D60> \xF0\xB1\xB5\xA0
+<CJK_UNIFIED_IDEOGRAPH-31D61> \xF0\xB1\xB5\xA1
+<CJK_UNIFIED_IDEOGRAPH-31D62> \xF0\xB1\xB5\xA2
+<CJK_UNIFIED_IDEOGRAPH-31D63> \xF0\xB1\xB5\xA3
+<CJK_UNIFIED_IDEOGRAPH-31D64> \xF0\xB1\xB5\xA4
+<CJK_UNIFIED_IDEOGRAPH-31D65> \xF0\xB1\xB5\xA5
+<CJK_UNIFIED_IDEOGRAPH-31D66> \xF0\xB1\xB5\xA6
+<CJK_UNIFIED_IDEOGRAPH-31D67> \xF0\xB1\xB5\xA7
+<CJK_UNIFIED_IDEOGRAPH-31D68> \xF0\xB1\xB5\xA8
+<CJK_UNIFIED_IDEOGRAPH-31D69> \xF0\xB1\xB5\xA9
+<CJK_UNIFIED_IDEOGRAPH-31D6A> \xF0\xB1\xB5\xAA
+<CJK_UNIFIED_IDEOGRAPH-31D6B> \xF0\xB1\xB5\xAB
+<CJK_UNIFIED_IDEOGRAPH-31D6C> \xF0\xB1\xB5\xAC
+<CJK_UNIFIED_IDEOGRAPH-31D6D> \xF0\xB1\xB5\xAD
+<CJK_UNIFIED_IDEOGRAPH-31D6E> \xF0\xB1\xB5\xAE
+<CJK_UNIFIED_IDEOGRAPH-31D6F> \xF0\xB1\xB5\xAF
+<CJK_UNIFIED_IDEOGRAPH-31D70> \xF0\xB1\xB5\xB0
+<CJK_UNIFIED_IDEOGRAPH-31D71> \xF0\xB1\xB5\xB1
+<CJK_UNIFIED_IDEOGRAPH-31D72> \xF0\xB1\xB5\xB2
+<CJK_UNIFIED_IDEOGRAPH-31D73> \xF0\xB1\xB5\xB3
+<CJK_UNIFIED_IDEOGRAPH-31D74> \xF0\xB1\xB5\xB4
+<CJK_UNIFIED_IDEOGRAPH-31D75> \xF0\xB1\xB5\xB5
+<CJK_UNIFIED_IDEOGRAPH-31D76> \xF0\xB1\xB5\xB6
+<CJK_UNIFIED_IDEOGRAPH-31D77> \xF0\xB1\xB5\xB7
+<CJK_UNIFIED_IDEOGRAPH-31D78> \xF0\xB1\xB5\xB8
+<CJK_UNIFIED_IDEOGRAPH-31D79> \xF0\xB1\xB5\xB9
+<CJK_UNIFIED_IDEOGRAPH-31D7A> \xF0\xB1\xB5\xBA
+<CJK_UNIFIED_IDEOGRAPH-31D7B> \xF0\xB1\xB5\xBB
+<CJK_UNIFIED_IDEOGRAPH-31D7C> \xF0\xB1\xB5\xBC
+<CJK_UNIFIED_IDEOGRAPH-31D7D> \xF0\xB1\xB5\xBD
+<CJK_UNIFIED_IDEOGRAPH-31D7E> \xF0\xB1\xB5\xBE
+<CJK_UNIFIED_IDEOGRAPH-31D7F> \xF0\xB1\xB5\xBF
+<CJK_UNIFIED_IDEOGRAPH-31D80> \xF0\xB1\xB6\x80
+<CJK_UNIFIED_IDEOGRAPH-31D81> \xF0\xB1\xB6\x81
+<CJK_UNIFIED_IDEOGRAPH-31D82> \xF0\xB1\xB6\x82
+<CJK_UNIFIED_IDEOGRAPH-31D83> \xF0\xB1\xB6\x83
+<CJK_UNIFIED_IDEOGRAPH-31D84> \xF0\xB1\xB6\x84
+<CJK_UNIFIED_IDEOGRAPH-31D85> \xF0\xB1\xB6\x85
+<CJK_UNIFIED_IDEOGRAPH-31D86> \xF0\xB1\xB6\x86
+<CJK_UNIFIED_IDEOGRAPH-31D87> \xF0\xB1\xB6\x87
+<CJK_UNIFIED_IDEOGRAPH-31D88> \xF0\xB1\xB6\x88
+<CJK_UNIFIED_IDEOGRAPH-31D89> \xF0\xB1\xB6\x89
+<CJK_UNIFIED_IDEOGRAPH-31D8A> \xF0\xB1\xB6\x8A
+<CJK_UNIFIED_IDEOGRAPH-31D8B> \xF0\xB1\xB6\x8B
+<CJK_UNIFIED_IDEOGRAPH-31D8C> \xF0\xB1\xB6\x8C
+<CJK_UNIFIED_IDEOGRAPH-31D8D> \xF0\xB1\xB6\x8D
+<CJK_UNIFIED_IDEOGRAPH-31D8E> \xF0\xB1\xB6\x8E
+<CJK_UNIFIED_IDEOGRAPH-31D8F> \xF0\xB1\xB6\x8F
+<CJK_UNIFIED_IDEOGRAPH-31D90> \xF0\xB1\xB6\x90
+<CJK_UNIFIED_IDEOGRAPH-31D91> \xF0\xB1\xB6\x91
+<CJK_UNIFIED_IDEOGRAPH-31D92> \xF0\xB1\xB6\x92
+<CJK_UNIFIED_IDEOGRAPH-31D93> \xF0\xB1\xB6\x93
+<CJK_UNIFIED_IDEOGRAPH-31D94> \xF0\xB1\xB6\x94
+<CJK_UNIFIED_IDEOGRAPH-31D95> \xF0\xB1\xB6\x95
+<CJK_UNIFIED_IDEOGRAPH-31D96> \xF0\xB1\xB6\x96
+<CJK_UNIFIED_IDEOGRAPH-31D97> \xF0\xB1\xB6\x97
+<CJK_UNIFIED_IDEOGRAPH-31D98> \xF0\xB1\xB6\x98
+<CJK_UNIFIED_IDEOGRAPH-31D99> \xF0\xB1\xB6\x99
+<CJK_UNIFIED_IDEOGRAPH-31D9A> \xF0\xB1\xB6\x9A
+<CJK_UNIFIED_IDEOGRAPH-31D9B> \xF0\xB1\xB6\x9B
+<CJK_UNIFIED_IDEOGRAPH-31D9C> \xF0\xB1\xB6\x9C
+<CJK_UNIFIED_IDEOGRAPH-31D9D> \xF0\xB1\xB6\x9D
+<CJK_UNIFIED_IDEOGRAPH-31D9E> \xF0\xB1\xB6\x9E
+<CJK_UNIFIED_IDEOGRAPH-31D9F> \xF0\xB1\xB6\x9F
+<CJK_UNIFIED_IDEOGRAPH-31DA0> \xF0\xB1\xB6\xA0
+<CJK_UNIFIED_IDEOGRAPH-31DA1> \xF0\xB1\xB6\xA1
+<CJK_UNIFIED_IDEOGRAPH-31DA2> \xF0\xB1\xB6\xA2
+<CJK_UNIFIED_IDEOGRAPH-31DA3> \xF0\xB1\xB6\xA3
+<CJK_UNIFIED_IDEOGRAPH-31DA4> \xF0\xB1\xB6\xA4
+<CJK_UNIFIED_IDEOGRAPH-31DA5> \xF0\xB1\xB6\xA5
+<CJK_UNIFIED_IDEOGRAPH-31DA6> \xF0\xB1\xB6\xA6
+<CJK_UNIFIED_IDEOGRAPH-31DA7> \xF0\xB1\xB6\xA7
+<CJK_UNIFIED_IDEOGRAPH-31DA8> \xF0\xB1\xB6\xA8
+<CJK_UNIFIED_IDEOGRAPH-31DA9> \xF0\xB1\xB6\xA9
+<CJK_UNIFIED_IDEOGRAPH-31DAA> \xF0\xB1\xB6\xAA
+<CJK_UNIFIED_IDEOGRAPH-31DAB> \xF0\xB1\xB6\xAB
+<CJK_UNIFIED_IDEOGRAPH-31DAC> \xF0\xB1\xB6\xAC
+<CJK_UNIFIED_IDEOGRAPH-31DAD> \xF0\xB1\xB6\xAD
+<CJK_UNIFIED_IDEOGRAPH-31DAE> \xF0\xB1\xB6\xAE
+<CJK_UNIFIED_IDEOGRAPH-31DAF> \xF0\xB1\xB6\xAF
+<CJK_UNIFIED_IDEOGRAPH-31DB0> \xF0\xB1\xB6\xB0
+<CJK_UNIFIED_IDEOGRAPH-31DB1> \xF0\xB1\xB6\xB1
+<CJK_UNIFIED_IDEOGRAPH-31DB2> \xF0\xB1\xB6\xB2
+<CJK_UNIFIED_IDEOGRAPH-31DB3> \xF0\xB1\xB6\xB3
+<CJK_UNIFIED_IDEOGRAPH-31DB4> \xF0\xB1\xB6\xB4
+<CJK_UNIFIED_IDEOGRAPH-31DB5> \xF0\xB1\xB6\xB5
+<CJK_UNIFIED_IDEOGRAPH-31DB6> \xF0\xB1\xB6\xB6
+<CJK_UNIFIED_IDEOGRAPH-31DB7> \xF0\xB1\xB6\xB7
+<CJK_UNIFIED_IDEOGRAPH-31DB8> \xF0\xB1\xB6\xB8
+<CJK_UNIFIED_IDEOGRAPH-31DB9> \xF0\xB1\xB6\xB9
+<CJK_UNIFIED_IDEOGRAPH-31DBA> \xF0\xB1\xB6\xBA
+<CJK_UNIFIED_IDEOGRAPH-31DBB> \xF0\xB1\xB6\xBB
+<CJK_UNIFIED_IDEOGRAPH-31DBC> \xF0\xB1\xB6\xBC
+<CJK_UNIFIED_IDEOGRAPH-31DBD> \xF0\xB1\xB6\xBD
+<CJK_UNIFIED_IDEOGRAPH-31DBE> \xF0\xB1\xB6\xBE
+<CJK_UNIFIED_IDEOGRAPH-31DBF> \xF0\xB1\xB6\xBF
+<CJK_UNIFIED_IDEOGRAPH-31DC0> \xF0\xB1\xB7\x80
+<CJK_UNIFIED_IDEOGRAPH-31DC1> \xF0\xB1\xB7\x81
+<CJK_UNIFIED_IDEOGRAPH-31DC2> \xF0\xB1\xB7\x82
+<CJK_UNIFIED_IDEOGRAPH-31DC3> \xF0\xB1\xB7\x83
+<CJK_UNIFIED_IDEOGRAPH-31DC4> \xF0\xB1\xB7\x84
+<CJK_UNIFIED_IDEOGRAPH-31DC5> \xF0\xB1\xB7\x85
+<CJK_UNIFIED_IDEOGRAPH-31DC6> \xF0\xB1\xB7\x86
+<CJK_UNIFIED_IDEOGRAPH-31DC7> \xF0\xB1\xB7\x87
+<CJK_UNIFIED_IDEOGRAPH-31DC8> \xF0\xB1\xB7\x88
+<CJK_UNIFIED_IDEOGRAPH-31DC9> \xF0\xB1\xB7\x89
+<CJK_UNIFIED_IDEOGRAPH-31DCA> \xF0\xB1\xB7\x8A
+<CJK_UNIFIED_IDEOGRAPH-31DCB> \xF0\xB1\xB7\x8B
+<CJK_UNIFIED_IDEOGRAPH-31DCC> \xF0\xB1\xB7\x8C
+<CJK_UNIFIED_IDEOGRAPH-31DCD> \xF0\xB1\xB7\x8D
+<CJK_UNIFIED_IDEOGRAPH-31DCE> \xF0\xB1\xB7\x8E
+<CJK_UNIFIED_IDEOGRAPH-31DCF> \xF0\xB1\xB7\x8F
+<CJK_UNIFIED_IDEOGRAPH-31DD0> \xF0\xB1\xB7\x90
+<CJK_UNIFIED_IDEOGRAPH-31DD1> \xF0\xB1\xB7\x91
+<CJK_UNIFIED_IDEOGRAPH-31DD2> \xF0\xB1\xB7\x92
+<CJK_UNIFIED_IDEOGRAPH-31DD3> \xF0\xB1\xB7\x93
+<CJK_UNIFIED_IDEOGRAPH-31DD4> \xF0\xB1\xB7\x94
+<CJK_UNIFIED_IDEOGRAPH-31DD5> \xF0\xB1\xB7\x95
+<CJK_UNIFIED_IDEOGRAPH-31DD6> \xF0\xB1\xB7\x96
+<CJK_UNIFIED_IDEOGRAPH-31DD7> \xF0\xB1\xB7\x97
+<CJK_UNIFIED_IDEOGRAPH-31DD8> \xF0\xB1\xB7\x98
+<CJK_UNIFIED_IDEOGRAPH-31DD9> \xF0\xB1\xB7\x99
+<CJK_UNIFIED_IDEOGRAPH-31DDA> \xF0\xB1\xB7\x9A
+<CJK_UNIFIED_IDEOGRAPH-31DDB> \xF0\xB1\xB7\x9B
+<CJK_UNIFIED_IDEOGRAPH-31DDC> \xF0\xB1\xB7\x9C
+<CJK_UNIFIED_IDEOGRAPH-31DDD> \xF0\xB1\xB7\x9D
+<CJK_UNIFIED_IDEOGRAPH-31DDE> \xF0\xB1\xB7\x9E
+<CJK_UNIFIED_IDEOGRAPH-31DDF> \xF0\xB1\xB7\x9F
+<CJK_UNIFIED_IDEOGRAPH-31DE0> \xF0\xB1\xB7\xA0
+<CJK_UNIFIED_IDEOGRAPH-31DE1> \xF0\xB1\xB7\xA1
+<CJK_UNIFIED_IDEOGRAPH-31DE2> \xF0\xB1\xB7\xA2
+<CJK_UNIFIED_IDEOGRAPH-31DE3> \xF0\xB1\xB7\xA3
+<CJK_UNIFIED_IDEOGRAPH-31DE4> \xF0\xB1\xB7\xA4
+<CJK_UNIFIED_IDEOGRAPH-31DE5> \xF0\xB1\xB7\xA5
+<CJK_UNIFIED_IDEOGRAPH-31DE6> \xF0\xB1\xB7\xA6
+<CJK_UNIFIED_IDEOGRAPH-31DE7> \xF0\xB1\xB7\xA7
+<CJK_UNIFIED_IDEOGRAPH-31DE8> \xF0\xB1\xB7\xA8
+<CJK_UNIFIED_IDEOGRAPH-31DE9> \xF0\xB1\xB7\xA9
+<CJK_UNIFIED_IDEOGRAPH-31DEA> \xF0\xB1\xB7\xAA
+<CJK_UNIFIED_IDEOGRAPH-31DEB> \xF0\xB1\xB7\xAB
+<CJK_UNIFIED_IDEOGRAPH-31DEC> \xF0\xB1\xB7\xAC
+<CJK_UNIFIED_IDEOGRAPH-31DED> \xF0\xB1\xB7\xAD
+<CJK_UNIFIED_IDEOGRAPH-31DEE> \xF0\xB1\xB7\xAE
+<CJK_UNIFIED_IDEOGRAPH-31DEF> \xF0\xB1\xB7\xAF
+<CJK_UNIFIED_IDEOGRAPH-31DF0> \xF0\xB1\xB7\xB0
+<CJK_UNIFIED_IDEOGRAPH-31DF1> \xF0\xB1\xB7\xB1
+<CJK_UNIFIED_IDEOGRAPH-31DF2> \xF0\xB1\xB7\xB2
+<CJK_UNIFIED_IDEOGRAPH-31DF3> \xF0\xB1\xB7\xB3
+<CJK_UNIFIED_IDEOGRAPH-31DF4> \xF0\xB1\xB7\xB4
+<CJK_UNIFIED_IDEOGRAPH-31DF5> \xF0\xB1\xB7\xB5
+<CJK_UNIFIED_IDEOGRAPH-31DF6> \xF0\xB1\xB7\xB6
+<CJK_UNIFIED_IDEOGRAPH-31DF7> \xF0\xB1\xB7\xB7
+<CJK_UNIFIED_IDEOGRAPH-31DF8> \xF0\xB1\xB7\xB8
+<CJK_UNIFIED_IDEOGRAPH-31DF9> \xF0\xB1\xB7\xB9
+<CJK_UNIFIED_IDEOGRAPH-31DFA> \xF0\xB1\xB7\xBA
+<CJK_UNIFIED_IDEOGRAPH-31DFB> \xF0\xB1\xB7\xBB
+<CJK_UNIFIED_IDEOGRAPH-31DFC> \xF0\xB1\xB7\xBC
+<CJK_UNIFIED_IDEOGRAPH-31DFD> \xF0\xB1\xB7\xBD
+<CJK_UNIFIED_IDEOGRAPH-31DFE> \xF0\xB1\xB7\xBE
+<CJK_UNIFIED_IDEOGRAPH-31DFF> \xF0\xB1\xB7\xBF
+<CJK_UNIFIED_IDEOGRAPH-31E00> \xF0\xB1\xB8\x80
+<CJK_UNIFIED_IDEOGRAPH-31E01> \xF0\xB1\xB8\x81
+<CJK_UNIFIED_IDEOGRAPH-31E02> \xF0\xB1\xB8\x82
+<CJK_UNIFIED_IDEOGRAPH-31E03> \xF0\xB1\xB8\x83
+<CJK_UNIFIED_IDEOGRAPH-31E04> \xF0\xB1\xB8\x84
+<CJK_UNIFIED_IDEOGRAPH-31E05> \xF0\xB1\xB8\x85
+<CJK_UNIFIED_IDEOGRAPH-31E06> \xF0\xB1\xB8\x86
+<CJK_UNIFIED_IDEOGRAPH-31E07> \xF0\xB1\xB8\x87
+<CJK_UNIFIED_IDEOGRAPH-31E08> \xF0\xB1\xB8\x88
+<CJK_UNIFIED_IDEOGRAPH-31E09> \xF0\xB1\xB8\x89
+<CJK_UNIFIED_IDEOGRAPH-31E0A> \xF0\xB1\xB8\x8A
+<CJK_UNIFIED_IDEOGRAPH-31E0B> \xF0\xB1\xB8\x8B
+<CJK_UNIFIED_IDEOGRAPH-31E0C> \xF0\xB1\xB8\x8C
+<CJK_UNIFIED_IDEOGRAPH-31E0D> \xF0\xB1\xB8\x8D
+<CJK_UNIFIED_IDEOGRAPH-31E0E> \xF0\xB1\xB8\x8E
+<CJK_UNIFIED_IDEOGRAPH-31E0F> \xF0\xB1\xB8\x8F
+<CJK_UNIFIED_IDEOGRAPH-31E10> \xF0\xB1\xB8\x90
+<CJK_UNIFIED_IDEOGRAPH-31E11> \xF0\xB1\xB8\x91
+<CJK_UNIFIED_IDEOGRAPH-31E12> \xF0\xB1\xB8\x92
+<CJK_UNIFIED_IDEOGRAPH-31E13> \xF0\xB1\xB8\x93
+<CJK_UNIFIED_IDEOGRAPH-31E14> \xF0\xB1\xB8\x94
+<CJK_UNIFIED_IDEOGRAPH-31E15> \xF0\xB1\xB8\x95
+<CJK_UNIFIED_IDEOGRAPH-31E16> \xF0\xB1\xB8\x96
+<CJK_UNIFIED_IDEOGRAPH-31E17> \xF0\xB1\xB8\x97
+<CJK_UNIFIED_IDEOGRAPH-31E18> \xF0\xB1\xB8\x98
+<CJK_UNIFIED_IDEOGRAPH-31E19> \xF0\xB1\xB8\x99
+<CJK_UNIFIED_IDEOGRAPH-31E1A> \xF0\xB1\xB8\x9A
+<CJK_UNIFIED_IDEOGRAPH-31E1B> \xF0\xB1\xB8\x9B
+<CJK_UNIFIED_IDEOGRAPH-31E1C> \xF0\xB1\xB8\x9C
+<CJK_UNIFIED_IDEOGRAPH-31E1D> \xF0\xB1\xB8\x9D
+<CJK_UNIFIED_IDEOGRAPH-31E1E> \xF0\xB1\xB8\x9E
+<CJK_UNIFIED_IDEOGRAPH-31E1F> \xF0\xB1\xB8\x9F
+<CJK_UNIFIED_IDEOGRAPH-31E20> \xF0\xB1\xB8\xA0
+<CJK_UNIFIED_IDEOGRAPH-31E21> \xF0\xB1\xB8\xA1
+<CJK_UNIFIED_IDEOGRAPH-31E22> \xF0\xB1\xB8\xA2
+<CJK_UNIFIED_IDEOGRAPH-31E23> \xF0\xB1\xB8\xA3
+<CJK_UNIFIED_IDEOGRAPH-31E24> \xF0\xB1\xB8\xA4
+<CJK_UNIFIED_IDEOGRAPH-31E25> \xF0\xB1\xB8\xA5
+<CJK_UNIFIED_IDEOGRAPH-31E26> \xF0\xB1\xB8\xA6
+<CJK_UNIFIED_IDEOGRAPH-31E27> \xF0\xB1\xB8\xA7
+<CJK_UNIFIED_IDEOGRAPH-31E28> \xF0\xB1\xB8\xA8
+<CJK_UNIFIED_IDEOGRAPH-31E29> \xF0\xB1\xB8\xA9
+<CJK_UNIFIED_IDEOGRAPH-31E2A> \xF0\xB1\xB8\xAA
+<CJK_UNIFIED_IDEOGRAPH-31E2B> \xF0\xB1\xB8\xAB
+<CJK_UNIFIED_IDEOGRAPH-31E2C> \xF0\xB1\xB8\xAC
+<CJK_UNIFIED_IDEOGRAPH-31E2D> \xF0\xB1\xB8\xAD
+<CJK_UNIFIED_IDEOGRAPH-31E2E> \xF0\xB1\xB8\xAE
+<CJK_UNIFIED_IDEOGRAPH-31E2F> \xF0\xB1\xB8\xAF
+<CJK_UNIFIED_IDEOGRAPH-31E30> \xF0\xB1\xB8\xB0
+<CJK_UNIFIED_IDEOGRAPH-31E31> \xF0\xB1\xB8\xB1
+<CJK_UNIFIED_IDEOGRAPH-31E32> \xF0\xB1\xB8\xB2
+<CJK_UNIFIED_IDEOGRAPH-31E33> \xF0\xB1\xB8\xB3
+<CJK_UNIFIED_IDEOGRAPH-31E34> \xF0\xB1\xB8\xB4
+<CJK_UNIFIED_IDEOGRAPH-31E35> \xF0\xB1\xB8\xB5
+<CJK_UNIFIED_IDEOGRAPH-31E36> \xF0\xB1\xB8\xB6
+<CJK_UNIFIED_IDEOGRAPH-31E37> \xF0\xB1\xB8\xB7
+<CJK_UNIFIED_IDEOGRAPH-31E38> \xF0\xB1\xB8\xB8
+<CJK_UNIFIED_IDEOGRAPH-31E39> \xF0\xB1\xB8\xB9
+<CJK_UNIFIED_IDEOGRAPH-31E3A> \xF0\xB1\xB8\xBA
+<CJK_UNIFIED_IDEOGRAPH-31E3B> \xF0\xB1\xB8\xBB
+<CJK_UNIFIED_IDEOGRAPH-31E3C> \xF0\xB1\xB8\xBC
+<CJK_UNIFIED_IDEOGRAPH-31E3D> \xF0\xB1\xB8\xBD
+<CJK_UNIFIED_IDEOGRAPH-31E3E> \xF0\xB1\xB8\xBE
+<CJK_UNIFIED_IDEOGRAPH-31E3F> \xF0\xB1\xB8\xBF
+<CJK_UNIFIED_IDEOGRAPH-31E40> \xF0\xB1\xB9\x80
+<CJK_UNIFIED_IDEOGRAPH-31E41> \xF0\xB1\xB9\x81
+<CJK_UNIFIED_IDEOGRAPH-31E42> \xF0\xB1\xB9\x82
+<CJK_UNIFIED_IDEOGRAPH-31E43> \xF0\xB1\xB9\x83
+<CJK_UNIFIED_IDEOGRAPH-31E44> \xF0\xB1\xB9\x84
+<CJK_UNIFIED_IDEOGRAPH-31E45> \xF0\xB1\xB9\x85
+<CJK_UNIFIED_IDEOGRAPH-31E46> \xF0\xB1\xB9\x86
+<CJK_UNIFIED_IDEOGRAPH-31E47> \xF0\xB1\xB9\x87
+<CJK_UNIFIED_IDEOGRAPH-31E48> \xF0\xB1\xB9\x88
+<CJK_UNIFIED_IDEOGRAPH-31E49> \xF0\xB1\xB9\x89
+<CJK_UNIFIED_IDEOGRAPH-31E4A> \xF0\xB1\xB9\x8A
+<CJK_UNIFIED_IDEOGRAPH-31E4B> \xF0\xB1\xB9\x8B
+<CJK_UNIFIED_IDEOGRAPH-31E4C> \xF0\xB1\xB9\x8C
+<CJK_UNIFIED_IDEOGRAPH-31E4D> \xF0\xB1\xB9\x8D
+<CJK_UNIFIED_IDEOGRAPH-31E4E> \xF0\xB1\xB9\x8E
+<CJK_UNIFIED_IDEOGRAPH-31E4F> \xF0\xB1\xB9\x8F
+<CJK_UNIFIED_IDEOGRAPH-31E50> \xF0\xB1\xB9\x90
+<CJK_UNIFIED_IDEOGRAPH-31E51> \xF0\xB1\xB9\x91
+<CJK_UNIFIED_IDEOGRAPH-31E52> \xF0\xB1\xB9\x92
+<CJK_UNIFIED_IDEOGRAPH-31E53> \xF0\xB1\xB9\x93
+<CJK_UNIFIED_IDEOGRAPH-31E54> \xF0\xB1\xB9\x94
+<CJK_UNIFIED_IDEOGRAPH-31E55> \xF0\xB1\xB9\x95
+<CJK_UNIFIED_IDEOGRAPH-31E56> \xF0\xB1\xB9\x96
+<CJK_UNIFIED_IDEOGRAPH-31E57> \xF0\xB1\xB9\x97
+<CJK_UNIFIED_IDEOGRAPH-31E58> \xF0\xB1\xB9\x98
+<CJK_UNIFIED_IDEOGRAPH-31E59> \xF0\xB1\xB9\x99
+<CJK_UNIFIED_IDEOGRAPH-31E5A> \xF0\xB1\xB9\x9A
+<CJK_UNIFIED_IDEOGRAPH-31E5B> \xF0\xB1\xB9\x9B
+<CJK_UNIFIED_IDEOGRAPH-31E5C> \xF0\xB1\xB9\x9C
+<CJK_UNIFIED_IDEOGRAPH-31E5D> \xF0\xB1\xB9\x9D
+<CJK_UNIFIED_IDEOGRAPH-31E5E> \xF0\xB1\xB9\x9E
+<CJK_UNIFIED_IDEOGRAPH-31E5F> \xF0\xB1\xB9\x9F
+<CJK_UNIFIED_IDEOGRAPH-31E60> \xF0\xB1\xB9\xA0
+<CJK_UNIFIED_IDEOGRAPH-31E61> \xF0\xB1\xB9\xA1
+<CJK_UNIFIED_IDEOGRAPH-31E62> \xF0\xB1\xB9\xA2
+<CJK_UNIFIED_IDEOGRAPH-31E63> \xF0\xB1\xB9\xA3
+<CJK_UNIFIED_IDEOGRAPH-31E64> \xF0\xB1\xB9\xA4
+<CJK_UNIFIED_IDEOGRAPH-31E65> \xF0\xB1\xB9\xA5
+<CJK_UNIFIED_IDEOGRAPH-31E66> \xF0\xB1\xB9\xA6
+<CJK_UNIFIED_IDEOGRAPH-31E67> \xF0\xB1\xB9\xA7
+<CJK_UNIFIED_IDEOGRAPH-31E68> \xF0\xB1\xB9\xA8
+<CJK_UNIFIED_IDEOGRAPH-31E69> \xF0\xB1\xB9\xA9
+<CJK_UNIFIED_IDEOGRAPH-31E6A> \xF0\xB1\xB9\xAA
+<CJK_UNIFIED_IDEOGRAPH-31E6B> \xF0\xB1\xB9\xAB
+<CJK_UNIFIED_IDEOGRAPH-31E6C> \xF0\xB1\xB9\xAC
+<CJK_UNIFIED_IDEOGRAPH-31E6D> \xF0\xB1\xB9\xAD
+<CJK_UNIFIED_IDEOGRAPH-31E6E> \xF0\xB1\xB9\xAE
+<CJK_UNIFIED_IDEOGRAPH-31E6F> \xF0\xB1\xB9\xAF
+<CJK_UNIFIED_IDEOGRAPH-31E70> \xF0\xB1\xB9\xB0
+<CJK_UNIFIED_IDEOGRAPH-31E71> \xF0\xB1\xB9\xB1
+<CJK_UNIFIED_IDEOGRAPH-31E72> \xF0\xB1\xB9\xB2
+<CJK_UNIFIED_IDEOGRAPH-31E73> \xF0\xB1\xB9\xB3
+<CJK_UNIFIED_IDEOGRAPH-31E74> \xF0\xB1\xB9\xB4
+<CJK_UNIFIED_IDEOGRAPH-31E75> \xF0\xB1\xB9\xB5
+<CJK_UNIFIED_IDEOGRAPH-31E76> \xF0\xB1\xB9\xB6
+<CJK_UNIFIED_IDEOGRAPH-31E77> \xF0\xB1\xB9\xB7
+<CJK_UNIFIED_IDEOGRAPH-31E78> \xF0\xB1\xB9\xB8
+<CJK_UNIFIED_IDEOGRAPH-31E79> \xF0\xB1\xB9\xB9
+<CJK_UNIFIED_IDEOGRAPH-31E7A> \xF0\xB1\xB9\xBA
+<CJK_UNIFIED_IDEOGRAPH-31E7B> \xF0\xB1\xB9\xBB
+<CJK_UNIFIED_IDEOGRAPH-31E7C> \xF0\xB1\xB9\xBC
+<CJK_UNIFIED_IDEOGRAPH-31E7D> \xF0\xB1\xB9\xBD
+<CJK_UNIFIED_IDEOGRAPH-31E7E> \xF0\xB1\xB9\xBE
+<CJK_UNIFIED_IDEOGRAPH-31E7F> \xF0\xB1\xB9\xBF
+<CJK_UNIFIED_IDEOGRAPH-31E80> \xF0\xB1\xBA\x80
+<CJK_UNIFIED_IDEOGRAPH-31E81> \xF0\xB1\xBA\x81
+<CJK_UNIFIED_IDEOGRAPH-31E82> \xF0\xB1\xBA\x82
+<CJK_UNIFIED_IDEOGRAPH-31E83> \xF0\xB1\xBA\x83
+<CJK_UNIFIED_IDEOGRAPH-31E84> \xF0\xB1\xBA\x84
+<CJK_UNIFIED_IDEOGRAPH-31E85> \xF0\xB1\xBA\x85
+<CJK_UNIFIED_IDEOGRAPH-31E86> \xF0\xB1\xBA\x86
+<CJK_UNIFIED_IDEOGRAPH-31E87> \xF0\xB1\xBA\x87
+<CJK_UNIFIED_IDEOGRAPH-31E88> \xF0\xB1\xBA\x88
+<CJK_UNIFIED_IDEOGRAPH-31E89> \xF0\xB1\xBA\x89
+<CJK_UNIFIED_IDEOGRAPH-31E8A> \xF0\xB1\xBA\x8A
+<CJK_UNIFIED_IDEOGRAPH-31E8B> \xF0\xB1\xBA\x8B
+<CJK_UNIFIED_IDEOGRAPH-31E8C> \xF0\xB1\xBA\x8C
+<CJK_UNIFIED_IDEOGRAPH-31E8D> \xF0\xB1\xBA\x8D
+<CJK_UNIFIED_IDEOGRAPH-31E8E> \xF0\xB1\xBA\x8E
+<CJK_UNIFIED_IDEOGRAPH-31E8F> \xF0\xB1\xBA\x8F
+<CJK_UNIFIED_IDEOGRAPH-31E90> \xF0\xB1\xBA\x90
+<CJK_UNIFIED_IDEOGRAPH-31E91> \xF0\xB1\xBA\x91
+<CJK_UNIFIED_IDEOGRAPH-31E92> \xF0\xB1\xBA\x92
+<CJK_UNIFIED_IDEOGRAPH-31E93> \xF0\xB1\xBA\x93
+<CJK_UNIFIED_IDEOGRAPH-31E94> \xF0\xB1\xBA\x94
+<CJK_UNIFIED_IDEOGRAPH-31E95> \xF0\xB1\xBA\x95
+<CJK_UNIFIED_IDEOGRAPH-31E96> \xF0\xB1\xBA\x96
+<CJK_UNIFIED_IDEOGRAPH-31E97> \xF0\xB1\xBA\x97
+<CJK_UNIFIED_IDEOGRAPH-31E98> \xF0\xB1\xBA\x98
+<CJK_UNIFIED_IDEOGRAPH-31E99> \xF0\xB1\xBA\x99
+<CJK_UNIFIED_IDEOGRAPH-31E9A> \xF0\xB1\xBA\x9A
+<CJK_UNIFIED_IDEOGRAPH-31E9B> \xF0\xB1\xBA\x9B
+<CJK_UNIFIED_IDEOGRAPH-31E9C> \xF0\xB1\xBA\x9C
+<CJK_UNIFIED_IDEOGRAPH-31E9D> \xF0\xB1\xBA\x9D
+<CJK_UNIFIED_IDEOGRAPH-31E9E> \xF0\xB1\xBA\x9E
+<CJK_UNIFIED_IDEOGRAPH-31E9F> \xF0\xB1\xBA\x9F
+<CJK_UNIFIED_IDEOGRAPH-31EA0> \xF0\xB1\xBA\xA0
+<CJK_UNIFIED_IDEOGRAPH-31EA1> \xF0\xB1\xBA\xA1
+<CJK_UNIFIED_IDEOGRAPH-31EA2> \xF0\xB1\xBA\xA2
+<CJK_UNIFIED_IDEOGRAPH-31EA3> \xF0\xB1\xBA\xA3
+<CJK_UNIFIED_IDEOGRAPH-31EA4> \xF0\xB1\xBA\xA4
+<CJK_UNIFIED_IDEOGRAPH-31EA5> \xF0\xB1\xBA\xA5
+<CJK_UNIFIED_IDEOGRAPH-31EA6> \xF0\xB1\xBA\xA6
+<CJK_UNIFIED_IDEOGRAPH-31EA7> \xF0\xB1\xBA\xA7
+<CJK_UNIFIED_IDEOGRAPH-31EA8> \xF0\xB1\xBA\xA8
+<CJK_UNIFIED_IDEOGRAPH-31EA9> \xF0\xB1\xBA\xA9
+<CJK_UNIFIED_IDEOGRAPH-31EAA> \xF0\xB1\xBA\xAA
+<CJK_UNIFIED_IDEOGRAPH-31EAB> \xF0\xB1\xBA\xAB
+<CJK_UNIFIED_IDEOGRAPH-31EAC> \xF0\xB1\xBA\xAC
+<CJK_UNIFIED_IDEOGRAPH-31EAD> \xF0\xB1\xBA\xAD
+<CJK_UNIFIED_IDEOGRAPH-31EAE> \xF0\xB1\xBA\xAE
+<CJK_UNIFIED_IDEOGRAPH-31EAF> \xF0\xB1\xBA\xAF
+<CJK_UNIFIED_IDEOGRAPH-31EB0> \xF0\xB1\xBA\xB0
+<CJK_UNIFIED_IDEOGRAPH-31EB1> \xF0\xB1\xBA\xB1
+<CJK_UNIFIED_IDEOGRAPH-31EB2> \xF0\xB1\xBA\xB2
+<CJK_UNIFIED_IDEOGRAPH-31EB3> \xF0\xB1\xBA\xB3
+<CJK_UNIFIED_IDEOGRAPH-31EB4> \xF0\xB1\xBA\xB4
+<CJK_UNIFIED_IDEOGRAPH-31EB5> \xF0\xB1\xBA\xB5
+<CJK_UNIFIED_IDEOGRAPH-31EB6> \xF0\xB1\xBA\xB6
+<CJK_UNIFIED_IDEOGRAPH-31EB7> \xF0\xB1\xBA\xB7
+<CJK_UNIFIED_IDEOGRAPH-31EB8> \xF0\xB1\xBA\xB8
+<CJK_UNIFIED_IDEOGRAPH-31EB9> \xF0\xB1\xBA\xB9
+<CJK_UNIFIED_IDEOGRAPH-31EBA> \xF0\xB1\xBA\xBA
+<CJK_UNIFIED_IDEOGRAPH-31EBB> \xF0\xB1\xBA\xBB
+<CJK_UNIFIED_IDEOGRAPH-31EBC> \xF0\xB1\xBA\xBC
+<CJK_UNIFIED_IDEOGRAPH-31EBD> \xF0\xB1\xBA\xBD
+<CJK_UNIFIED_IDEOGRAPH-31EBE> \xF0\xB1\xBA\xBE
+<CJK_UNIFIED_IDEOGRAPH-31EBF> \xF0\xB1\xBA\xBF
+<CJK_UNIFIED_IDEOGRAPH-31EC0> \xF0\xB1\xBB\x80
+<CJK_UNIFIED_IDEOGRAPH-31EC1> \xF0\xB1\xBB\x81
+<CJK_UNIFIED_IDEOGRAPH-31EC2> \xF0\xB1\xBB\x82
+<CJK_UNIFIED_IDEOGRAPH-31EC3> \xF0\xB1\xBB\x83
+<CJK_UNIFIED_IDEOGRAPH-31EC4> \xF0\xB1\xBB\x84
+<CJK_UNIFIED_IDEOGRAPH-31EC5> \xF0\xB1\xBB\x85
+<CJK_UNIFIED_IDEOGRAPH-31EC6> \xF0\xB1\xBB\x86
+<CJK_UNIFIED_IDEOGRAPH-31EC7> \xF0\xB1\xBB\x87
+<CJK_UNIFIED_IDEOGRAPH-31EC8> \xF0\xB1\xBB\x88
+<CJK_UNIFIED_IDEOGRAPH-31EC9> \xF0\xB1\xBB\x89
+<CJK_UNIFIED_IDEOGRAPH-31ECA> \xF0\xB1\xBB\x8A
+<CJK_UNIFIED_IDEOGRAPH-31ECB> \xF0\xB1\xBB\x8B
+<CJK_UNIFIED_IDEOGRAPH-31ECC> \xF0\xB1\xBB\x8C
+<CJK_UNIFIED_IDEOGRAPH-31ECD> \xF0\xB1\xBB\x8D
+<CJK_UNIFIED_IDEOGRAPH-31ECE> \xF0\xB1\xBB\x8E
+<CJK_UNIFIED_IDEOGRAPH-31ECF> \xF0\xB1\xBB\x8F
+<CJK_UNIFIED_IDEOGRAPH-31ED0> \xF0\xB1\xBB\x90
+<CJK_UNIFIED_IDEOGRAPH-31ED1> \xF0\xB1\xBB\x91
+<CJK_UNIFIED_IDEOGRAPH-31ED2> \xF0\xB1\xBB\x92
+<CJK_UNIFIED_IDEOGRAPH-31ED3> \xF0\xB1\xBB\x93
+<CJK_UNIFIED_IDEOGRAPH-31ED4> \xF0\xB1\xBB\x94
+<CJK_UNIFIED_IDEOGRAPH-31ED5> \xF0\xB1\xBB\x95
+<CJK_UNIFIED_IDEOGRAPH-31ED6> \xF0\xB1\xBB\x96
+<CJK_UNIFIED_IDEOGRAPH-31ED7> \xF0\xB1\xBB\x97
+<CJK_UNIFIED_IDEOGRAPH-31ED8> \xF0\xB1\xBB\x98
+<CJK_UNIFIED_IDEOGRAPH-31ED9> \xF0\xB1\xBB\x99
+<CJK_UNIFIED_IDEOGRAPH-31EDA> \xF0\xB1\xBB\x9A
+<CJK_UNIFIED_IDEOGRAPH-31EDB> \xF0\xB1\xBB\x9B
+<CJK_UNIFIED_IDEOGRAPH-31EDC> \xF0\xB1\xBB\x9C
+<CJK_UNIFIED_IDEOGRAPH-31EDD> \xF0\xB1\xBB\x9D
+<CJK_UNIFIED_IDEOGRAPH-31EDE> \xF0\xB1\xBB\x9E
+<CJK_UNIFIED_IDEOGRAPH-31EDF> \xF0\xB1\xBB\x9F
+<CJK_UNIFIED_IDEOGRAPH-31EE0> \xF0\xB1\xBB\xA0
+<CJK_UNIFIED_IDEOGRAPH-31EE1> \xF0\xB1\xBB\xA1
+<CJK_UNIFIED_IDEOGRAPH-31EE2> \xF0\xB1\xBB\xA2
+<CJK_UNIFIED_IDEOGRAPH-31EE3> \xF0\xB1\xBB\xA3
+<CJK_UNIFIED_IDEOGRAPH-31EE4> \xF0\xB1\xBB\xA4
+<CJK_UNIFIED_IDEOGRAPH-31EE5> \xF0\xB1\xBB\xA5
+<CJK_UNIFIED_IDEOGRAPH-31EE6> \xF0\xB1\xBB\xA6
+<CJK_UNIFIED_IDEOGRAPH-31EE7> \xF0\xB1\xBB\xA7
+<CJK_UNIFIED_IDEOGRAPH-31EE8> \xF0\xB1\xBB\xA8
+<CJK_UNIFIED_IDEOGRAPH-31EE9> \xF0\xB1\xBB\xA9
+<CJK_UNIFIED_IDEOGRAPH-31EEA> \xF0\xB1\xBB\xAA
+<CJK_UNIFIED_IDEOGRAPH-31EEB> \xF0\xB1\xBB\xAB
+<CJK_UNIFIED_IDEOGRAPH-31EEC> \xF0\xB1\xBB\xAC
+<CJK_UNIFIED_IDEOGRAPH-31EED> \xF0\xB1\xBB\xAD
+<CJK_UNIFIED_IDEOGRAPH-31EEE> \xF0\xB1\xBB\xAE
+<CJK_UNIFIED_IDEOGRAPH-31EEF> \xF0\xB1\xBB\xAF
+<CJK_UNIFIED_IDEOGRAPH-31EF0> \xF0\xB1\xBB\xB0
+<CJK_UNIFIED_IDEOGRAPH-31EF1> \xF0\xB1\xBB\xB1
+<CJK_UNIFIED_IDEOGRAPH-31EF2> \xF0\xB1\xBB\xB2
+<CJK_UNIFIED_IDEOGRAPH-31EF3> \xF0\xB1\xBB\xB3
+<CJK_UNIFIED_IDEOGRAPH-31EF4> \xF0\xB1\xBB\xB4
+<CJK_UNIFIED_IDEOGRAPH-31EF5> \xF0\xB1\xBB\xB5
+<CJK_UNIFIED_IDEOGRAPH-31EF6> \xF0\xB1\xBB\xB6
+<CJK_UNIFIED_IDEOGRAPH-31EF7> \xF0\xB1\xBB\xB7
+<CJK_UNIFIED_IDEOGRAPH-31EF8> \xF0\xB1\xBB\xB8
+<CJK_UNIFIED_IDEOGRAPH-31EF9> \xF0\xB1\xBB\xB9
+<CJK_UNIFIED_IDEOGRAPH-31EFA> \xF0\xB1\xBB\xBA
+<CJK_UNIFIED_IDEOGRAPH-31EFB> \xF0\xB1\xBB\xBB
+<CJK_UNIFIED_IDEOGRAPH-31EFC> \xF0\xB1\xBB\xBC
+<CJK_UNIFIED_IDEOGRAPH-31EFD> \xF0\xB1\xBB\xBD
+<CJK_UNIFIED_IDEOGRAPH-31EFE> \xF0\xB1\xBB\xBE
+<CJK_UNIFIED_IDEOGRAPH-31EFF> \xF0\xB1\xBB\xBF
+<CJK_UNIFIED_IDEOGRAPH-31F00> \xF0\xB1\xBC\x80
+<CJK_UNIFIED_IDEOGRAPH-31F01> \xF0\xB1\xBC\x81
+<CJK_UNIFIED_IDEOGRAPH-31F02> \xF0\xB1\xBC\x82
+<CJK_UNIFIED_IDEOGRAPH-31F03> \xF0\xB1\xBC\x83
+<CJK_UNIFIED_IDEOGRAPH-31F04> \xF0\xB1\xBC\x84
+<CJK_UNIFIED_IDEOGRAPH-31F05> \xF0\xB1\xBC\x85
+<CJK_UNIFIED_IDEOGRAPH-31F06> \xF0\xB1\xBC\x86
+<CJK_UNIFIED_IDEOGRAPH-31F07> \xF0\xB1\xBC\x87
+<CJK_UNIFIED_IDEOGRAPH-31F08> \xF0\xB1\xBC\x88
+<CJK_UNIFIED_IDEOGRAPH-31F09> \xF0\xB1\xBC\x89
+<CJK_UNIFIED_IDEOGRAPH-31F0A> \xF0\xB1\xBC\x8A
+<CJK_UNIFIED_IDEOGRAPH-31F0B> \xF0\xB1\xBC\x8B
+<CJK_UNIFIED_IDEOGRAPH-31F0C> \xF0\xB1\xBC\x8C
+<CJK_UNIFIED_IDEOGRAPH-31F0D> \xF0\xB1\xBC\x8D
+<CJK_UNIFIED_IDEOGRAPH-31F0E> \xF0\xB1\xBC\x8E
+<CJK_UNIFIED_IDEOGRAPH-31F0F> \xF0\xB1\xBC\x8F
+<CJK_UNIFIED_IDEOGRAPH-31F10> \xF0\xB1\xBC\x90
+<CJK_UNIFIED_IDEOGRAPH-31F11> \xF0\xB1\xBC\x91
+<CJK_UNIFIED_IDEOGRAPH-31F12> \xF0\xB1\xBC\x92
+<CJK_UNIFIED_IDEOGRAPH-31F13> \xF0\xB1\xBC\x93
+<CJK_UNIFIED_IDEOGRAPH-31F14> \xF0\xB1\xBC\x94
+<CJK_UNIFIED_IDEOGRAPH-31F15> \xF0\xB1\xBC\x95
+<CJK_UNIFIED_IDEOGRAPH-31F16> \xF0\xB1\xBC\x96
+<CJK_UNIFIED_IDEOGRAPH-31F17> \xF0\xB1\xBC\x97
+<CJK_UNIFIED_IDEOGRAPH-31F18> \xF0\xB1\xBC\x98
+<CJK_UNIFIED_IDEOGRAPH-31F19> \xF0\xB1\xBC\x99
+<CJK_UNIFIED_IDEOGRAPH-31F1A> \xF0\xB1\xBC\x9A
+<CJK_UNIFIED_IDEOGRAPH-31F1B> \xF0\xB1\xBC\x9B
+<CJK_UNIFIED_IDEOGRAPH-31F1C> \xF0\xB1\xBC\x9C
+<CJK_UNIFIED_IDEOGRAPH-31F1D> \xF0\xB1\xBC\x9D
+<CJK_UNIFIED_IDEOGRAPH-31F1E> \xF0\xB1\xBC\x9E
+<CJK_UNIFIED_IDEOGRAPH-31F1F> \xF0\xB1\xBC\x9F
+<CJK_UNIFIED_IDEOGRAPH-31F20> \xF0\xB1\xBC\xA0
+<CJK_UNIFIED_IDEOGRAPH-31F21> \xF0\xB1\xBC\xA1
+<CJK_UNIFIED_IDEOGRAPH-31F22> \xF0\xB1\xBC\xA2
+<CJK_UNIFIED_IDEOGRAPH-31F23> \xF0\xB1\xBC\xA3
+<CJK_UNIFIED_IDEOGRAPH-31F24> \xF0\xB1\xBC\xA4
+<CJK_UNIFIED_IDEOGRAPH-31F25> \xF0\xB1\xBC\xA5
+<CJK_UNIFIED_IDEOGRAPH-31F26> \xF0\xB1\xBC\xA6
+<CJK_UNIFIED_IDEOGRAPH-31F27> \xF0\xB1\xBC\xA7
+<CJK_UNIFIED_IDEOGRAPH-31F28> \xF0\xB1\xBC\xA8
+<CJK_UNIFIED_IDEOGRAPH-31F29> \xF0\xB1\xBC\xA9
+<CJK_UNIFIED_IDEOGRAPH-31F2A> \xF0\xB1\xBC\xAA
+<CJK_UNIFIED_IDEOGRAPH-31F2B> \xF0\xB1\xBC\xAB
+<CJK_UNIFIED_IDEOGRAPH-31F2C> \xF0\xB1\xBC\xAC
+<CJK_UNIFIED_IDEOGRAPH-31F2D> \xF0\xB1\xBC\xAD
+<CJK_UNIFIED_IDEOGRAPH-31F2E> \xF0\xB1\xBC\xAE
+<CJK_UNIFIED_IDEOGRAPH-31F2F> \xF0\xB1\xBC\xAF
+<CJK_UNIFIED_IDEOGRAPH-31F30> \xF0\xB1\xBC\xB0
+<CJK_UNIFIED_IDEOGRAPH-31F31> \xF0\xB1\xBC\xB1
+<CJK_UNIFIED_IDEOGRAPH-31F32> \xF0\xB1\xBC\xB2
+<CJK_UNIFIED_IDEOGRAPH-31F33> \xF0\xB1\xBC\xB3
+<CJK_UNIFIED_IDEOGRAPH-31F34> \xF0\xB1\xBC\xB4
+<CJK_UNIFIED_IDEOGRAPH-31F35> \xF0\xB1\xBC\xB5
+<CJK_UNIFIED_IDEOGRAPH-31F36> \xF0\xB1\xBC\xB6
+<CJK_UNIFIED_IDEOGRAPH-31F37> \xF0\xB1\xBC\xB7
+<CJK_UNIFIED_IDEOGRAPH-31F38> \xF0\xB1\xBC\xB8
+<CJK_UNIFIED_IDEOGRAPH-31F39> \xF0\xB1\xBC\xB9
+<CJK_UNIFIED_IDEOGRAPH-31F3A> \xF0\xB1\xBC\xBA
+<CJK_UNIFIED_IDEOGRAPH-31F3B> \xF0\xB1\xBC\xBB
+<CJK_UNIFIED_IDEOGRAPH-31F3C> \xF0\xB1\xBC\xBC
+<CJK_UNIFIED_IDEOGRAPH-31F3D> \xF0\xB1\xBC\xBD
+<CJK_UNIFIED_IDEOGRAPH-31F3E> \xF0\xB1\xBC\xBE
+<CJK_UNIFIED_IDEOGRAPH-31F3F> \xF0\xB1\xBC\xBF
+<CJK_UNIFIED_IDEOGRAPH-31F40> \xF0\xB1\xBD\x80
+<CJK_UNIFIED_IDEOGRAPH-31F41> \xF0\xB1\xBD\x81
+<CJK_UNIFIED_IDEOGRAPH-31F42> \xF0\xB1\xBD\x82
+<CJK_UNIFIED_IDEOGRAPH-31F43> \xF0\xB1\xBD\x83
+<CJK_UNIFIED_IDEOGRAPH-31F44> \xF0\xB1\xBD\x84
+<CJK_UNIFIED_IDEOGRAPH-31F45> \xF0\xB1\xBD\x85
+<CJK_UNIFIED_IDEOGRAPH-31F46> \xF0\xB1\xBD\x86
+<CJK_UNIFIED_IDEOGRAPH-31F47> \xF0\xB1\xBD\x87
+<CJK_UNIFIED_IDEOGRAPH-31F48> \xF0\xB1\xBD\x88
+<CJK_UNIFIED_IDEOGRAPH-31F49> \xF0\xB1\xBD\x89
+<CJK_UNIFIED_IDEOGRAPH-31F4A> \xF0\xB1\xBD\x8A
+<CJK_UNIFIED_IDEOGRAPH-31F4B> \xF0\xB1\xBD\x8B
+<CJK_UNIFIED_IDEOGRAPH-31F4C> \xF0\xB1\xBD\x8C
+<CJK_UNIFIED_IDEOGRAPH-31F4D> \xF0\xB1\xBD\x8D
+<CJK_UNIFIED_IDEOGRAPH-31F4E> \xF0\xB1\xBD\x8E
+<CJK_UNIFIED_IDEOGRAPH-31F4F> \xF0\xB1\xBD\x8F
+<CJK_UNIFIED_IDEOGRAPH-31F50> \xF0\xB1\xBD\x90
+<CJK_UNIFIED_IDEOGRAPH-31F51> \xF0\xB1\xBD\x91
+<CJK_UNIFIED_IDEOGRAPH-31F52> \xF0\xB1\xBD\x92
+<CJK_UNIFIED_IDEOGRAPH-31F53> \xF0\xB1\xBD\x93
+<CJK_UNIFIED_IDEOGRAPH-31F54> \xF0\xB1\xBD\x94
+<CJK_UNIFIED_IDEOGRAPH-31F55> \xF0\xB1\xBD\x95
+<CJK_UNIFIED_IDEOGRAPH-31F56> \xF0\xB1\xBD\x96
+<CJK_UNIFIED_IDEOGRAPH-31F57> \xF0\xB1\xBD\x97
+<CJK_UNIFIED_IDEOGRAPH-31F58> \xF0\xB1\xBD\x98
+<CJK_UNIFIED_IDEOGRAPH-31F59> \xF0\xB1\xBD\x99
+<CJK_UNIFIED_IDEOGRAPH-31F5A> \xF0\xB1\xBD\x9A
+<CJK_UNIFIED_IDEOGRAPH-31F5B> \xF0\xB1\xBD\x9B
+<CJK_UNIFIED_IDEOGRAPH-31F5C> \xF0\xB1\xBD\x9C
+<CJK_UNIFIED_IDEOGRAPH-31F5D> \xF0\xB1\xBD\x9D
+<CJK_UNIFIED_IDEOGRAPH-31F5E> \xF0\xB1\xBD\x9E
+<CJK_UNIFIED_IDEOGRAPH-31F5F> \xF0\xB1\xBD\x9F
+<CJK_UNIFIED_IDEOGRAPH-31F60> \xF0\xB1\xBD\xA0
+<CJK_UNIFIED_IDEOGRAPH-31F61> \xF0\xB1\xBD\xA1
+<CJK_UNIFIED_IDEOGRAPH-31F62> \xF0\xB1\xBD\xA2
+<CJK_UNIFIED_IDEOGRAPH-31F63> \xF0\xB1\xBD\xA3
+<CJK_UNIFIED_IDEOGRAPH-31F64> \xF0\xB1\xBD\xA4
+<CJK_UNIFIED_IDEOGRAPH-31F65> \xF0\xB1\xBD\xA5
+<CJK_UNIFIED_IDEOGRAPH-31F66> \xF0\xB1\xBD\xA6
+<CJK_UNIFIED_IDEOGRAPH-31F67> \xF0\xB1\xBD\xA7
+<CJK_UNIFIED_IDEOGRAPH-31F68> \xF0\xB1\xBD\xA8
+<CJK_UNIFIED_IDEOGRAPH-31F69> \xF0\xB1\xBD\xA9
+<CJK_UNIFIED_IDEOGRAPH-31F6A> \xF0\xB1\xBD\xAA
+<CJK_UNIFIED_IDEOGRAPH-31F6B> \xF0\xB1\xBD\xAB
+<CJK_UNIFIED_IDEOGRAPH-31F6C> \xF0\xB1\xBD\xAC
+<CJK_UNIFIED_IDEOGRAPH-31F6D> \xF0\xB1\xBD\xAD
+<CJK_UNIFIED_IDEOGRAPH-31F6E> \xF0\xB1\xBD\xAE
+<CJK_UNIFIED_IDEOGRAPH-31F6F> \xF0\xB1\xBD\xAF
+<CJK_UNIFIED_IDEOGRAPH-31F70> \xF0\xB1\xBD\xB0
+<CJK_UNIFIED_IDEOGRAPH-31F71> \xF0\xB1\xBD\xB1
+<CJK_UNIFIED_IDEOGRAPH-31F72> \xF0\xB1\xBD\xB2
+<CJK_UNIFIED_IDEOGRAPH-31F73> \xF0\xB1\xBD\xB3
+<CJK_UNIFIED_IDEOGRAPH-31F74> \xF0\xB1\xBD\xB4
+<CJK_UNIFIED_IDEOGRAPH-31F75> \xF0\xB1\xBD\xB5
+<CJK_UNIFIED_IDEOGRAPH-31F76> \xF0\xB1\xBD\xB6
+<CJK_UNIFIED_IDEOGRAPH-31F77> \xF0\xB1\xBD\xB7
+<CJK_UNIFIED_IDEOGRAPH-31F78> \xF0\xB1\xBD\xB8
+<CJK_UNIFIED_IDEOGRAPH-31F79> \xF0\xB1\xBD\xB9
+<CJK_UNIFIED_IDEOGRAPH-31F7A> \xF0\xB1\xBD\xBA
+<CJK_UNIFIED_IDEOGRAPH-31F7B> \xF0\xB1\xBD\xBB
+<CJK_UNIFIED_IDEOGRAPH-31F7C> \xF0\xB1\xBD\xBC
+<CJK_UNIFIED_IDEOGRAPH-31F7D> \xF0\xB1\xBD\xBD
+<CJK_UNIFIED_IDEOGRAPH-31F7E> \xF0\xB1\xBD\xBE
+<CJK_UNIFIED_IDEOGRAPH-31F7F> \xF0\xB1\xBD\xBF
+<CJK_UNIFIED_IDEOGRAPH-31F80> \xF0\xB1\xBE\x80
+<CJK_UNIFIED_IDEOGRAPH-31F81> \xF0\xB1\xBE\x81
+<CJK_UNIFIED_IDEOGRAPH-31F82> \xF0\xB1\xBE\x82
+<CJK_UNIFIED_IDEOGRAPH-31F83> \xF0\xB1\xBE\x83
+<CJK_UNIFIED_IDEOGRAPH-31F84> \xF0\xB1\xBE\x84
+<CJK_UNIFIED_IDEOGRAPH-31F85> \xF0\xB1\xBE\x85
+<CJK_UNIFIED_IDEOGRAPH-31F86> \xF0\xB1\xBE\x86
+<CJK_UNIFIED_IDEOGRAPH-31F87> \xF0\xB1\xBE\x87
+<CJK_UNIFIED_IDEOGRAPH-31F88> \xF0\xB1\xBE\x88
+<CJK_UNIFIED_IDEOGRAPH-31F89> \xF0\xB1\xBE\x89
+<CJK_UNIFIED_IDEOGRAPH-31F8A> \xF0\xB1\xBE\x8A
+<CJK_UNIFIED_IDEOGRAPH-31F8B> \xF0\xB1\xBE\x8B
+<CJK_UNIFIED_IDEOGRAPH-31F8C> \xF0\xB1\xBE\x8C
+<CJK_UNIFIED_IDEOGRAPH-31F8D> \xF0\xB1\xBE\x8D
+<CJK_UNIFIED_IDEOGRAPH-31F8E> \xF0\xB1\xBE\x8E
+<CJK_UNIFIED_IDEOGRAPH-31F8F> \xF0\xB1\xBE\x8F
+<CJK_UNIFIED_IDEOGRAPH-31F90> \xF0\xB1\xBE\x90
+<CJK_UNIFIED_IDEOGRAPH-31F91> \xF0\xB1\xBE\x91
+<CJK_UNIFIED_IDEOGRAPH-31F92> \xF0\xB1\xBE\x92
+<CJK_UNIFIED_IDEOGRAPH-31F93> \xF0\xB1\xBE\x93
+<CJK_UNIFIED_IDEOGRAPH-31F94> \xF0\xB1\xBE\x94
+<CJK_UNIFIED_IDEOGRAPH-31F95> \xF0\xB1\xBE\x95
+<CJK_UNIFIED_IDEOGRAPH-31F96> \xF0\xB1\xBE\x96
+<CJK_UNIFIED_IDEOGRAPH-31F97> \xF0\xB1\xBE\x97
+<CJK_UNIFIED_IDEOGRAPH-31F98> \xF0\xB1\xBE\x98
+<CJK_UNIFIED_IDEOGRAPH-31F99> \xF0\xB1\xBE\x99
+<CJK_UNIFIED_IDEOGRAPH-31F9A> \xF0\xB1\xBE\x9A
+<CJK_UNIFIED_IDEOGRAPH-31F9B> \xF0\xB1\xBE\x9B
+<CJK_UNIFIED_IDEOGRAPH-31F9C> \xF0\xB1\xBE\x9C
+<CJK_UNIFIED_IDEOGRAPH-31F9D> \xF0\xB1\xBE\x9D
+<CJK_UNIFIED_IDEOGRAPH-31F9E> \xF0\xB1\xBE\x9E
+<CJK_UNIFIED_IDEOGRAPH-31F9F> \xF0\xB1\xBE\x9F
+<CJK_UNIFIED_IDEOGRAPH-31FA0> \xF0\xB1\xBE\xA0
+<CJK_UNIFIED_IDEOGRAPH-31FA1> \xF0\xB1\xBE\xA1
+<CJK_UNIFIED_IDEOGRAPH-31FA2> \xF0\xB1\xBE\xA2
+<CJK_UNIFIED_IDEOGRAPH-31FA3> \xF0\xB1\xBE\xA3
+<CJK_UNIFIED_IDEOGRAPH-31FA4> \xF0\xB1\xBE\xA4
+<CJK_UNIFIED_IDEOGRAPH-31FA5> \xF0\xB1\xBE\xA5
+<CJK_UNIFIED_IDEOGRAPH-31FA6> \xF0\xB1\xBE\xA6
+<CJK_UNIFIED_IDEOGRAPH-31FA7> \xF0\xB1\xBE\xA7
+<CJK_UNIFIED_IDEOGRAPH-31FA8> \xF0\xB1\xBE\xA8
+<CJK_UNIFIED_IDEOGRAPH-31FA9> \xF0\xB1\xBE\xA9
+<CJK_UNIFIED_IDEOGRAPH-31FAA> \xF0\xB1\xBE\xAA
+<CJK_UNIFIED_IDEOGRAPH-31FAB> \xF0\xB1\xBE\xAB
+<CJK_UNIFIED_IDEOGRAPH-31FAC> \xF0\xB1\xBE\xAC
+<CJK_UNIFIED_IDEOGRAPH-31FAD> \xF0\xB1\xBE\xAD
+<CJK_UNIFIED_IDEOGRAPH-31FAE> \xF0\xB1\xBE\xAE
+<CJK_UNIFIED_IDEOGRAPH-31FAF> \xF0\xB1\xBE\xAF
+<CJK_UNIFIED_IDEOGRAPH-31FB0> \xF0\xB1\xBE\xB0
+<CJK_UNIFIED_IDEOGRAPH-31FB1> \xF0\xB1\xBE\xB1
+<CJK_UNIFIED_IDEOGRAPH-31FB2> \xF0\xB1\xBE\xB2
+<CJK_UNIFIED_IDEOGRAPH-31FB3> \xF0\xB1\xBE\xB3
+<CJK_UNIFIED_IDEOGRAPH-31FB4> \xF0\xB1\xBE\xB4
+<CJK_UNIFIED_IDEOGRAPH-31FB5> \xF0\xB1\xBE\xB5
+<CJK_UNIFIED_IDEOGRAPH-31FB6> \xF0\xB1\xBE\xB6
+<CJK_UNIFIED_IDEOGRAPH-31FB7> \xF0\xB1\xBE\xB7
+<CJK_UNIFIED_IDEOGRAPH-31FB8> \xF0\xB1\xBE\xB8
+<CJK_UNIFIED_IDEOGRAPH-31FB9> \xF0\xB1\xBE\xB9
+<CJK_UNIFIED_IDEOGRAPH-31FBA> \xF0\xB1\xBE\xBA
+<CJK_UNIFIED_IDEOGRAPH-31FBB> \xF0\xB1\xBE\xBB
+<CJK_UNIFIED_IDEOGRAPH-31FBC> \xF0\xB1\xBE\xBC
+<CJK_UNIFIED_IDEOGRAPH-31FBD> \xF0\xB1\xBE\xBD
+<CJK_UNIFIED_IDEOGRAPH-31FBE> \xF0\xB1\xBE\xBE
+<CJK_UNIFIED_IDEOGRAPH-31FBF> \xF0\xB1\xBE\xBF
+<CJK_UNIFIED_IDEOGRAPH-31FC0> \xF0\xB1\xBF\x80
+<CJK_UNIFIED_IDEOGRAPH-31FC1> \xF0\xB1\xBF\x81
+<CJK_UNIFIED_IDEOGRAPH-31FC2> \xF0\xB1\xBF\x82
+<CJK_UNIFIED_IDEOGRAPH-31FC3> \xF0\xB1\xBF\x83
+<CJK_UNIFIED_IDEOGRAPH-31FC4> \xF0\xB1\xBF\x84
+<CJK_UNIFIED_IDEOGRAPH-31FC5> \xF0\xB1\xBF\x85
+<CJK_UNIFIED_IDEOGRAPH-31FC6> \xF0\xB1\xBF\x86
+<CJK_UNIFIED_IDEOGRAPH-31FC7> \xF0\xB1\xBF\x87
+<CJK_UNIFIED_IDEOGRAPH-31FC8> \xF0\xB1\xBF\x88
+<CJK_UNIFIED_IDEOGRAPH-31FC9> \xF0\xB1\xBF\x89
+<CJK_UNIFIED_IDEOGRAPH-31FCA> \xF0\xB1\xBF\x8A
+<CJK_UNIFIED_IDEOGRAPH-31FCB> \xF0\xB1\xBF\x8B
+<CJK_UNIFIED_IDEOGRAPH-31FCC> \xF0\xB1\xBF\x8C
+<CJK_UNIFIED_IDEOGRAPH-31FCD> \xF0\xB1\xBF\x8D
+<CJK_UNIFIED_IDEOGRAPH-31FCE> \xF0\xB1\xBF\x8E
+<CJK_UNIFIED_IDEOGRAPH-31FCF> \xF0\xB1\xBF\x8F
+<CJK_UNIFIED_IDEOGRAPH-31FD0> \xF0\xB1\xBF\x90
+<CJK_UNIFIED_IDEOGRAPH-31FD1> \xF0\xB1\xBF\x91
+<CJK_UNIFIED_IDEOGRAPH-31FD2> \xF0\xB1\xBF\x92
+<CJK_UNIFIED_IDEOGRAPH-31FD3> \xF0\xB1\xBF\x93
+<CJK_UNIFIED_IDEOGRAPH-31FD4> \xF0\xB1\xBF\x94
+<CJK_UNIFIED_IDEOGRAPH-31FD5> \xF0\xB1\xBF\x95
+<CJK_UNIFIED_IDEOGRAPH-31FD6> \xF0\xB1\xBF\x96
+<CJK_UNIFIED_IDEOGRAPH-31FD7> \xF0\xB1\xBF\x97
+<CJK_UNIFIED_IDEOGRAPH-31FD8> \xF0\xB1\xBF\x98
+<CJK_UNIFIED_IDEOGRAPH-31FD9> \xF0\xB1\xBF\x99
+<CJK_UNIFIED_IDEOGRAPH-31FDA> \xF0\xB1\xBF\x9A
+<CJK_UNIFIED_IDEOGRAPH-31FDB> \xF0\xB1\xBF\x9B
+<CJK_UNIFIED_IDEOGRAPH-31FDC> \xF0\xB1\xBF\x9C
+<CJK_UNIFIED_IDEOGRAPH-31FDD> \xF0\xB1\xBF\x9D
+<CJK_UNIFIED_IDEOGRAPH-31FDE> \xF0\xB1\xBF\x9E
+<CJK_UNIFIED_IDEOGRAPH-31FDF> \xF0\xB1\xBF\x9F
+<CJK_UNIFIED_IDEOGRAPH-31FE0> \xF0\xB1\xBF\xA0
+<CJK_UNIFIED_IDEOGRAPH-31FE1> \xF0\xB1\xBF\xA1
+<CJK_UNIFIED_IDEOGRAPH-31FE2> \xF0\xB1\xBF\xA2
+<CJK_UNIFIED_IDEOGRAPH-31FE3> \xF0\xB1\xBF\xA3
+<CJK_UNIFIED_IDEOGRAPH-31FE4> \xF0\xB1\xBF\xA4
+<CJK_UNIFIED_IDEOGRAPH-31FE5> \xF0\xB1\xBF\xA5
+<CJK_UNIFIED_IDEOGRAPH-31FE6> \xF0\xB1\xBF\xA6
+<CJK_UNIFIED_IDEOGRAPH-31FE7> \xF0\xB1\xBF\xA7
+<CJK_UNIFIED_IDEOGRAPH-31FE8> \xF0\xB1\xBF\xA8
+<CJK_UNIFIED_IDEOGRAPH-31FE9> \xF0\xB1\xBF\xA9
+<CJK_UNIFIED_IDEOGRAPH-31FEA> \xF0\xB1\xBF\xAA
+<CJK_UNIFIED_IDEOGRAPH-31FEB> \xF0\xB1\xBF\xAB
+<CJK_UNIFIED_IDEOGRAPH-31FEC> \xF0\xB1\xBF\xAC
+<CJK_UNIFIED_IDEOGRAPH-31FED> \xF0\xB1\xBF\xAD
+<CJK_UNIFIED_IDEOGRAPH-31FEE> \xF0\xB1\xBF\xAE
+<CJK_UNIFIED_IDEOGRAPH-31FEF> \xF0\xB1\xBF\xAF
+<CJK_UNIFIED_IDEOGRAPH-31FF0> \xF0\xB1\xBF\xB0
+<CJK_UNIFIED_IDEOGRAPH-31FF1> \xF0\xB1\xBF\xB1
+<CJK_UNIFIED_IDEOGRAPH-31FF2> \xF0\xB1\xBF\xB2
+<CJK_UNIFIED_IDEOGRAPH-31FF3> \xF0\xB1\xBF\xB3
+<CJK_UNIFIED_IDEOGRAPH-31FF4> \xF0\xB1\xBF\xB4
+<CJK_UNIFIED_IDEOGRAPH-31FF5> \xF0\xB1\xBF\xB5
+<CJK_UNIFIED_IDEOGRAPH-31FF6> \xF0\xB1\xBF\xB6
+<CJK_UNIFIED_IDEOGRAPH-31FF7> \xF0\xB1\xBF\xB7
+<CJK_UNIFIED_IDEOGRAPH-31FF8> \xF0\xB1\xBF\xB8
+<CJK_UNIFIED_IDEOGRAPH-31FF9> \xF0\xB1\xBF\xB9
+<CJK_UNIFIED_IDEOGRAPH-31FFA> \xF0\xB1\xBF\xBA
+<CJK_UNIFIED_IDEOGRAPH-31FFB> \xF0\xB1\xBF\xBB
+<CJK_UNIFIED_IDEOGRAPH-31FFC> \xF0\xB1\xBF\xBC
+<CJK_UNIFIED_IDEOGRAPH-31FFD> \xF0\xB1\xBF\xBD
+<CJK_UNIFIED_IDEOGRAPH-31FFE> \xF0\xB1\xBF\xBE
+<CJK_UNIFIED_IDEOGRAPH-31FFF> \xF0\xB1\xBF\xBF
+<CJK_UNIFIED_IDEOGRAPH-32000> \xF0\xB2\x80\x80
+<CJK_UNIFIED_IDEOGRAPH-32001> \xF0\xB2\x80\x81
+<CJK_UNIFIED_IDEOGRAPH-32002> \xF0\xB2\x80\x82
+<CJK_UNIFIED_IDEOGRAPH-32003> \xF0\xB2\x80\x83
+<CJK_UNIFIED_IDEOGRAPH-32004> \xF0\xB2\x80\x84
+<CJK_UNIFIED_IDEOGRAPH-32005> \xF0\xB2\x80\x85
+<CJK_UNIFIED_IDEOGRAPH-32006> \xF0\xB2\x80\x86
+<CJK_UNIFIED_IDEOGRAPH-32007> \xF0\xB2\x80\x87
+<CJK_UNIFIED_IDEOGRAPH-32008> \xF0\xB2\x80\x88
+<CJK_UNIFIED_IDEOGRAPH-32009> \xF0\xB2\x80\x89
+<CJK_UNIFIED_IDEOGRAPH-3200A> \xF0\xB2\x80\x8A
+<CJK_UNIFIED_IDEOGRAPH-3200B> \xF0\xB2\x80\x8B
+<CJK_UNIFIED_IDEOGRAPH-3200C> \xF0\xB2\x80\x8C
+<CJK_UNIFIED_IDEOGRAPH-3200D> \xF0\xB2\x80\x8D
+<CJK_UNIFIED_IDEOGRAPH-3200E> \xF0\xB2\x80\x8E
+<CJK_UNIFIED_IDEOGRAPH-3200F> \xF0\xB2\x80\x8F
+<CJK_UNIFIED_IDEOGRAPH-32010> \xF0\xB2\x80\x90
+<CJK_UNIFIED_IDEOGRAPH-32011> \xF0\xB2\x80\x91
+<CJK_UNIFIED_IDEOGRAPH-32012> \xF0\xB2\x80\x92
+<CJK_UNIFIED_IDEOGRAPH-32013> \xF0\xB2\x80\x93
+<CJK_UNIFIED_IDEOGRAPH-32014> \xF0\xB2\x80\x94
+<CJK_UNIFIED_IDEOGRAPH-32015> \xF0\xB2\x80\x95
+<CJK_UNIFIED_IDEOGRAPH-32016> \xF0\xB2\x80\x96
+<CJK_UNIFIED_IDEOGRAPH-32017> \xF0\xB2\x80\x97
+<CJK_UNIFIED_IDEOGRAPH-32018> \xF0\xB2\x80\x98
+<CJK_UNIFIED_IDEOGRAPH-32019> \xF0\xB2\x80\x99
+<CJK_UNIFIED_IDEOGRAPH-3201A> \xF0\xB2\x80\x9A
+<CJK_UNIFIED_IDEOGRAPH-3201B> \xF0\xB2\x80\x9B
+<CJK_UNIFIED_IDEOGRAPH-3201C> \xF0\xB2\x80\x9C
+<CJK_UNIFIED_IDEOGRAPH-3201D> \xF0\xB2\x80\x9D
+<CJK_UNIFIED_IDEOGRAPH-3201E> \xF0\xB2\x80\x9E
+<CJK_UNIFIED_IDEOGRAPH-3201F> \xF0\xB2\x80\x9F
+<CJK_UNIFIED_IDEOGRAPH-32020> \xF0\xB2\x80\xA0
+<CJK_UNIFIED_IDEOGRAPH-32021> \xF0\xB2\x80\xA1
+<CJK_UNIFIED_IDEOGRAPH-32022> \xF0\xB2\x80\xA2
+<CJK_UNIFIED_IDEOGRAPH-32023> \xF0\xB2\x80\xA3
+<CJK_UNIFIED_IDEOGRAPH-32024> \xF0\xB2\x80\xA4
+<CJK_UNIFIED_IDEOGRAPH-32025> \xF0\xB2\x80\xA5
+<CJK_UNIFIED_IDEOGRAPH-32026> \xF0\xB2\x80\xA6
+<CJK_UNIFIED_IDEOGRAPH-32027> \xF0\xB2\x80\xA7
+<CJK_UNIFIED_IDEOGRAPH-32028> \xF0\xB2\x80\xA8
+<CJK_UNIFIED_IDEOGRAPH-32029> \xF0\xB2\x80\xA9
+<CJK_UNIFIED_IDEOGRAPH-3202A> \xF0\xB2\x80\xAA
+<CJK_UNIFIED_IDEOGRAPH-3202B> \xF0\xB2\x80\xAB
+<CJK_UNIFIED_IDEOGRAPH-3202C> \xF0\xB2\x80\xAC
+<CJK_UNIFIED_IDEOGRAPH-3202D> \xF0\xB2\x80\xAD
+<CJK_UNIFIED_IDEOGRAPH-3202E> \xF0\xB2\x80\xAE
+<CJK_UNIFIED_IDEOGRAPH-3202F> \xF0\xB2\x80\xAF
+<CJK_UNIFIED_IDEOGRAPH-32030> \xF0\xB2\x80\xB0
+<CJK_UNIFIED_IDEOGRAPH-32031> \xF0\xB2\x80\xB1
+<CJK_UNIFIED_IDEOGRAPH-32032> \xF0\xB2\x80\xB2
+<CJK_UNIFIED_IDEOGRAPH-32033> \xF0\xB2\x80\xB3
+<CJK_UNIFIED_IDEOGRAPH-32034> \xF0\xB2\x80\xB4
+<CJK_UNIFIED_IDEOGRAPH-32035> \xF0\xB2\x80\xB5
+<CJK_UNIFIED_IDEOGRAPH-32036> \xF0\xB2\x80\xB6
+<CJK_UNIFIED_IDEOGRAPH-32037> \xF0\xB2\x80\xB7
+<CJK_UNIFIED_IDEOGRAPH-32038> \xF0\xB2\x80\xB8
+<CJK_UNIFIED_IDEOGRAPH-32039> \xF0\xB2\x80\xB9
+<CJK_UNIFIED_IDEOGRAPH-3203A> \xF0\xB2\x80\xBA
+<CJK_UNIFIED_IDEOGRAPH-3203B> \xF0\xB2\x80\xBB
+<CJK_UNIFIED_IDEOGRAPH-3203C> \xF0\xB2\x80\xBC
+<CJK_UNIFIED_IDEOGRAPH-3203D> \xF0\xB2\x80\xBD
+<CJK_UNIFIED_IDEOGRAPH-3203E> \xF0\xB2\x80\xBE
+<CJK_UNIFIED_IDEOGRAPH-3203F> \xF0\xB2\x80\xBF
+<CJK_UNIFIED_IDEOGRAPH-32040> \xF0\xB2\x81\x80
+<CJK_UNIFIED_IDEOGRAPH-32041> \xF0\xB2\x81\x81
+<CJK_UNIFIED_IDEOGRAPH-32042> \xF0\xB2\x81\x82
+<CJK_UNIFIED_IDEOGRAPH-32043> \xF0\xB2\x81\x83
+<CJK_UNIFIED_IDEOGRAPH-32044> \xF0\xB2\x81\x84
+<CJK_UNIFIED_IDEOGRAPH-32045> \xF0\xB2\x81\x85
+<CJK_UNIFIED_IDEOGRAPH-32046> \xF0\xB2\x81\x86
+<CJK_UNIFIED_IDEOGRAPH-32047> \xF0\xB2\x81\x87
+<CJK_UNIFIED_IDEOGRAPH-32048> \xF0\xB2\x81\x88
+<CJK_UNIFIED_IDEOGRAPH-32049> \xF0\xB2\x81\x89
+<CJK_UNIFIED_IDEOGRAPH-3204A> \xF0\xB2\x81\x8A
+<CJK_UNIFIED_IDEOGRAPH-3204B> \xF0\xB2\x81\x8B
+<CJK_UNIFIED_IDEOGRAPH-3204C> \xF0\xB2\x81\x8C
+<CJK_UNIFIED_IDEOGRAPH-3204D> \xF0\xB2\x81\x8D
+<CJK_UNIFIED_IDEOGRAPH-3204E> \xF0\xB2\x81\x8E
+<CJK_UNIFIED_IDEOGRAPH-3204F> \xF0\xB2\x81\x8F
+<CJK_UNIFIED_IDEOGRAPH-32050> \xF0\xB2\x81\x90
+<CJK_UNIFIED_IDEOGRAPH-32051> \xF0\xB2\x81\x91
+<CJK_UNIFIED_IDEOGRAPH-32052> \xF0\xB2\x81\x92
+<CJK_UNIFIED_IDEOGRAPH-32053> \xF0\xB2\x81\x93
+<CJK_UNIFIED_IDEOGRAPH-32054> \xF0\xB2\x81\x94
+<CJK_UNIFIED_IDEOGRAPH-32055> \xF0\xB2\x81\x95
+<CJK_UNIFIED_IDEOGRAPH-32056> \xF0\xB2\x81\x96
+<CJK_UNIFIED_IDEOGRAPH-32057> \xF0\xB2\x81\x97
+<CJK_UNIFIED_IDEOGRAPH-32058> \xF0\xB2\x81\x98
+<CJK_UNIFIED_IDEOGRAPH-32059> \xF0\xB2\x81\x99
+<CJK_UNIFIED_IDEOGRAPH-3205A> \xF0\xB2\x81\x9A
+<CJK_UNIFIED_IDEOGRAPH-3205B> \xF0\xB2\x81\x9B
+<CJK_UNIFIED_IDEOGRAPH-3205C> \xF0\xB2\x81\x9C
+<CJK_UNIFIED_IDEOGRAPH-3205D> \xF0\xB2\x81\x9D
+<CJK_UNIFIED_IDEOGRAPH-3205E> \xF0\xB2\x81\x9E
+<CJK_UNIFIED_IDEOGRAPH-3205F> \xF0\xB2\x81\x9F
+<CJK_UNIFIED_IDEOGRAPH-32060> \xF0\xB2\x81\xA0
+<CJK_UNIFIED_IDEOGRAPH-32061> \xF0\xB2\x81\xA1
+<CJK_UNIFIED_IDEOGRAPH-32062> \xF0\xB2\x81\xA2
+<CJK_UNIFIED_IDEOGRAPH-32063> \xF0\xB2\x81\xA3
+<CJK_UNIFIED_IDEOGRAPH-32064> \xF0\xB2\x81\xA4
+<CJK_UNIFIED_IDEOGRAPH-32065> \xF0\xB2\x81\xA5
+<CJK_UNIFIED_IDEOGRAPH-32066> \xF0\xB2\x81\xA6
+<CJK_UNIFIED_IDEOGRAPH-32067> \xF0\xB2\x81\xA7
+<CJK_UNIFIED_IDEOGRAPH-32068> \xF0\xB2\x81\xA8
+<CJK_UNIFIED_IDEOGRAPH-32069> \xF0\xB2\x81\xA9
+<CJK_UNIFIED_IDEOGRAPH-3206A> \xF0\xB2\x81\xAA
+<CJK_UNIFIED_IDEOGRAPH-3206B> \xF0\xB2\x81\xAB
+<CJK_UNIFIED_IDEOGRAPH-3206C> \xF0\xB2\x81\xAC
+<CJK_UNIFIED_IDEOGRAPH-3206D> \xF0\xB2\x81\xAD
+<CJK_UNIFIED_IDEOGRAPH-3206E> \xF0\xB2\x81\xAE
+<CJK_UNIFIED_IDEOGRAPH-3206F> \xF0\xB2\x81\xAF
+<CJK_UNIFIED_IDEOGRAPH-32070> \xF0\xB2\x81\xB0
+<CJK_UNIFIED_IDEOGRAPH-32071> \xF0\xB2\x81\xB1
+<CJK_UNIFIED_IDEOGRAPH-32072> \xF0\xB2\x81\xB2
+<CJK_UNIFIED_IDEOGRAPH-32073> \xF0\xB2\x81\xB3
+<CJK_UNIFIED_IDEOGRAPH-32074> \xF0\xB2\x81\xB4
+<CJK_UNIFIED_IDEOGRAPH-32075> \xF0\xB2\x81\xB5
+<CJK_UNIFIED_IDEOGRAPH-32076> \xF0\xB2\x81\xB6
+<CJK_UNIFIED_IDEOGRAPH-32077> \xF0\xB2\x81\xB7
+<CJK_UNIFIED_IDEOGRAPH-32078> \xF0\xB2\x81\xB8
+<CJK_UNIFIED_IDEOGRAPH-32079> \xF0\xB2\x81\xB9
+<CJK_UNIFIED_IDEOGRAPH-3207A> \xF0\xB2\x81\xBA
+<CJK_UNIFIED_IDEOGRAPH-3207B> \xF0\xB2\x81\xBB
+<CJK_UNIFIED_IDEOGRAPH-3207C> \xF0\xB2\x81\xBC
+<CJK_UNIFIED_IDEOGRAPH-3207D> \xF0\xB2\x81\xBD
+<CJK_UNIFIED_IDEOGRAPH-3207E> \xF0\xB2\x81\xBE
+<CJK_UNIFIED_IDEOGRAPH-3207F> \xF0\xB2\x81\xBF
+<CJK_UNIFIED_IDEOGRAPH-32080> \xF0\xB2\x82\x80
+<CJK_UNIFIED_IDEOGRAPH-32081> \xF0\xB2\x82\x81
+<CJK_UNIFIED_IDEOGRAPH-32082> \xF0\xB2\x82\x82
+<CJK_UNIFIED_IDEOGRAPH-32083> \xF0\xB2\x82\x83
+<CJK_UNIFIED_IDEOGRAPH-32084> \xF0\xB2\x82\x84
+<CJK_UNIFIED_IDEOGRAPH-32085> \xF0\xB2\x82\x85
+<CJK_UNIFIED_IDEOGRAPH-32086> \xF0\xB2\x82\x86
+<CJK_UNIFIED_IDEOGRAPH-32087> \xF0\xB2\x82\x87
+<CJK_UNIFIED_IDEOGRAPH-32088> \xF0\xB2\x82\x88
+<CJK_UNIFIED_IDEOGRAPH-32089> \xF0\xB2\x82\x89
+<CJK_UNIFIED_IDEOGRAPH-3208A> \xF0\xB2\x82\x8A
+<CJK_UNIFIED_IDEOGRAPH-3208B> \xF0\xB2\x82\x8B
+<CJK_UNIFIED_IDEOGRAPH-3208C> \xF0\xB2\x82\x8C
+<CJK_UNIFIED_IDEOGRAPH-3208D> \xF0\xB2\x82\x8D
+<CJK_UNIFIED_IDEOGRAPH-3208E> \xF0\xB2\x82\x8E
+<CJK_UNIFIED_IDEOGRAPH-3208F> \xF0\xB2\x82\x8F
+<CJK_UNIFIED_IDEOGRAPH-32090> \xF0\xB2\x82\x90
+<CJK_UNIFIED_IDEOGRAPH-32091> \xF0\xB2\x82\x91
+<CJK_UNIFIED_IDEOGRAPH-32092> \xF0\xB2\x82\x92
+<CJK_UNIFIED_IDEOGRAPH-32093> \xF0\xB2\x82\x93
+<CJK_UNIFIED_IDEOGRAPH-32094> \xF0\xB2\x82\x94
+<CJK_UNIFIED_IDEOGRAPH-32095> \xF0\xB2\x82\x95
+<CJK_UNIFIED_IDEOGRAPH-32096> \xF0\xB2\x82\x96
+<CJK_UNIFIED_IDEOGRAPH-32097> \xF0\xB2\x82\x97
+<CJK_UNIFIED_IDEOGRAPH-32098> \xF0\xB2\x82\x98
+<CJK_UNIFIED_IDEOGRAPH-32099> \xF0\xB2\x82\x99
+<CJK_UNIFIED_IDEOGRAPH-3209A> \xF0\xB2\x82\x9A
+<CJK_UNIFIED_IDEOGRAPH-3209B> \xF0\xB2\x82\x9B
+<CJK_UNIFIED_IDEOGRAPH-3209C> \xF0\xB2\x82\x9C
+<CJK_UNIFIED_IDEOGRAPH-3209D> \xF0\xB2\x82\x9D
+<CJK_UNIFIED_IDEOGRAPH-3209E> \xF0\xB2\x82\x9E
+<CJK_UNIFIED_IDEOGRAPH-3209F> \xF0\xB2\x82\x9F
+<CJK_UNIFIED_IDEOGRAPH-320A0> \xF0\xB2\x82\xA0
+<CJK_UNIFIED_IDEOGRAPH-320A1> \xF0\xB2\x82\xA1
+<CJK_UNIFIED_IDEOGRAPH-320A2> \xF0\xB2\x82\xA2
+<CJK_UNIFIED_IDEOGRAPH-320A3> \xF0\xB2\x82\xA3
+<CJK_UNIFIED_IDEOGRAPH-320A4> \xF0\xB2\x82\xA4
+<CJK_UNIFIED_IDEOGRAPH-320A5> \xF0\xB2\x82\xA5
+<CJK_UNIFIED_IDEOGRAPH-320A6> \xF0\xB2\x82\xA6
+<CJK_UNIFIED_IDEOGRAPH-320A7> \xF0\xB2\x82\xA7
+<CJK_UNIFIED_IDEOGRAPH-320A8> \xF0\xB2\x82\xA8
+<CJK_UNIFIED_IDEOGRAPH-320A9> \xF0\xB2\x82\xA9
+<CJK_UNIFIED_IDEOGRAPH-320AA> \xF0\xB2\x82\xAA
+<CJK_UNIFIED_IDEOGRAPH-320AB> \xF0\xB2\x82\xAB
+<CJK_UNIFIED_IDEOGRAPH-320AC> \xF0\xB2\x82\xAC
+<CJK_UNIFIED_IDEOGRAPH-320AD> \xF0\xB2\x82\xAD
+<CJK_UNIFIED_IDEOGRAPH-320AE> \xF0\xB2\x82\xAE
+<CJK_UNIFIED_IDEOGRAPH-320AF> \xF0\xB2\x82\xAF
+<CJK_UNIFIED_IDEOGRAPH-320B0> \xF0\xB2\x82\xB0
+<CJK_UNIFIED_IDEOGRAPH-320B1> \xF0\xB2\x82\xB1
+<CJK_UNIFIED_IDEOGRAPH-320B2> \xF0\xB2\x82\xB2
+<CJK_UNIFIED_IDEOGRAPH-320B3> \xF0\xB2\x82\xB3
+<CJK_UNIFIED_IDEOGRAPH-320B4> \xF0\xB2\x82\xB4
+<CJK_UNIFIED_IDEOGRAPH-320B5> \xF0\xB2\x82\xB5
+<CJK_UNIFIED_IDEOGRAPH-320B6> \xF0\xB2\x82\xB6
+<CJK_UNIFIED_IDEOGRAPH-320B7> \xF0\xB2\x82\xB7
+<CJK_UNIFIED_IDEOGRAPH-320B8> \xF0\xB2\x82\xB8
+<CJK_UNIFIED_IDEOGRAPH-320B9> \xF0\xB2\x82\xB9
+<CJK_UNIFIED_IDEOGRAPH-320BA> \xF0\xB2\x82\xBA
+<CJK_UNIFIED_IDEOGRAPH-320BB> \xF0\xB2\x82\xBB
+<CJK_UNIFIED_IDEOGRAPH-320BC> \xF0\xB2\x82\xBC
+<CJK_UNIFIED_IDEOGRAPH-320BD> \xF0\xB2\x82\xBD
+<CJK_UNIFIED_IDEOGRAPH-320BE> \xF0\xB2\x82\xBE
+<CJK_UNIFIED_IDEOGRAPH-320BF> \xF0\xB2\x82\xBF
+<CJK_UNIFIED_IDEOGRAPH-320C0> \xF0\xB2\x83\x80
+<CJK_UNIFIED_IDEOGRAPH-320C1> \xF0\xB2\x83\x81
+<CJK_UNIFIED_IDEOGRAPH-320C2> \xF0\xB2\x83\x82
+<CJK_UNIFIED_IDEOGRAPH-320C3> \xF0\xB2\x83\x83
+<CJK_UNIFIED_IDEOGRAPH-320C4> \xF0\xB2\x83\x84
+<CJK_UNIFIED_IDEOGRAPH-320C5> \xF0\xB2\x83\x85
+<CJK_UNIFIED_IDEOGRAPH-320C6> \xF0\xB2\x83\x86
+<CJK_UNIFIED_IDEOGRAPH-320C7> \xF0\xB2\x83\x87
+<CJK_UNIFIED_IDEOGRAPH-320C8> \xF0\xB2\x83\x88
+<CJK_UNIFIED_IDEOGRAPH-320C9> \xF0\xB2\x83\x89
+<CJK_UNIFIED_IDEOGRAPH-320CA> \xF0\xB2\x83\x8A
+<CJK_UNIFIED_IDEOGRAPH-320CB> \xF0\xB2\x83\x8B
+<CJK_UNIFIED_IDEOGRAPH-320CC> \xF0\xB2\x83\x8C
+<CJK_UNIFIED_IDEOGRAPH-320CD> \xF0\xB2\x83\x8D
+<CJK_UNIFIED_IDEOGRAPH-320CE> \xF0\xB2\x83\x8E
+<CJK_UNIFIED_IDEOGRAPH-320CF> \xF0\xB2\x83\x8F
+<CJK_UNIFIED_IDEOGRAPH-320D0> \xF0\xB2\x83\x90
+<CJK_UNIFIED_IDEOGRAPH-320D1> \xF0\xB2\x83\x91
+<CJK_UNIFIED_IDEOGRAPH-320D2> \xF0\xB2\x83\x92
+<CJK_UNIFIED_IDEOGRAPH-320D3> \xF0\xB2\x83\x93
+<CJK_UNIFIED_IDEOGRAPH-320D4> \xF0\xB2\x83\x94
+<CJK_UNIFIED_IDEOGRAPH-320D5> \xF0\xB2\x83\x95
+<CJK_UNIFIED_IDEOGRAPH-320D6> \xF0\xB2\x83\x96
+<CJK_UNIFIED_IDEOGRAPH-320D7> \xF0\xB2\x83\x97
+<CJK_UNIFIED_IDEOGRAPH-320D8> \xF0\xB2\x83\x98
+<CJK_UNIFIED_IDEOGRAPH-320D9> \xF0\xB2\x83\x99
+<CJK_UNIFIED_IDEOGRAPH-320DA> \xF0\xB2\x83\x9A
+<CJK_UNIFIED_IDEOGRAPH-320DB> \xF0\xB2\x83\x9B
+<CJK_UNIFIED_IDEOGRAPH-320DC> \xF0\xB2\x83\x9C
+<CJK_UNIFIED_IDEOGRAPH-320DD> \xF0\xB2\x83\x9D
+<CJK_UNIFIED_IDEOGRAPH-320DE> \xF0\xB2\x83\x9E
+<CJK_UNIFIED_IDEOGRAPH-320DF> \xF0\xB2\x83\x9F
+<CJK_UNIFIED_IDEOGRAPH-320E0> \xF0\xB2\x83\xA0
+<CJK_UNIFIED_IDEOGRAPH-320E1> \xF0\xB2\x83\xA1
+<CJK_UNIFIED_IDEOGRAPH-320E2> \xF0\xB2\x83\xA2
+<CJK_UNIFIED_IDEOGRAPH-320E3> \xF0\xB2\x83\xA3
+<CJK_UNIFIED_IDEOGRAPH-320E4> \xF0\xB2\x83\xA4
+<CJK_UNIFIED_IDEOGRAPH-320E5> \xF0\xB2\x83\xA5
+<CJK_UNIFIED_IDEOGRAPH-320E6> \xF0\xB2\x83\xA6
+<CJK_UNIFIED_IDEOGRAPH-320E7> \xF0\xB2\x83\xA7
+<CJK_UNIFIED_IDEOGRAPH-320E8> \xF0\xB2\x83\xA8
+<CJK_UNIFIED_IDEOGRAPH-320E9> \xF0\xB2\x83\xA9
+<CJK_UNIFIED_IDEOGRAPH-320EA> \xF0\xB2\x83\xAA
+<CJK_UNIFIED_IDEOGRAPH-320EB> \xF0\xB2\x83\xAB
+<CJK_UNIFIED_IDEOGRAPH-320EC> \xF0\xB2\x83\xAC
+<CJK_UNIFIED_IDEOGRAPH-320ED> \xF0\xB2\x83\xAD
+<CJK_UNIFIED_IDEOGRAPH-320EE> \xF0\xB2\x83\xAE
+<CJK_UNIFIED_IDEOGRAPH-320EF> \xF0\xB2\x83\xAF
+<CJK_UNIFIED_IDEOGRAPH-320F0> \xF0\xB2\x83\xB0
+<CJK_UNIFIED_IDEOGRAPH-320F1> \xF0\xB2\x83\xB1
+<CJK_UNIFIED_IDEOGRAPH-320F2> \xF0\xB2\x83\xB2
+<CJK_UNIFIED_IDEOGRAPH-320F3> \xF0\xB2\x83\xB3
+<CJK_UNIFIED_IDEOGRAPH-320F4> \xF0\xB2\x83\xB4
+<CJK_UNIFIED_IDEOGRAPH-320F5> \xF0\xB2\x83\xB5
+<CJK_UNIFIED_IDEOGRAPH-320F6> \xF0\xB2\x83\xB6
+<CJK_UNIFIED_IDEOGRAPH-320F7> \xF0\xB2\x83\xB7
+<CJK_UNIFIED_IDEOGRAPH-320F8> \xF0\xB2\x83\xB8
+<CJK_UNIFIED_IDEOGRAPH-320F9> \xF0\xB2\x83\xB9
+<CJK_UNIFIED_IDEOGRAPH-320FA> \xF0\xB2\x83\xBA
+<CJK_UNIFIED_IDEOGRAPH-320FB> \xF0\xB2\x83\xBB
+<CJK_UNIFIED_IDEOGRAPH-320FC> \xF0\xB2\x83\xBC
+<CJK_UNIFIED_IDEOGRAPH-320FD> \xF0\xB2\x83\xBD
+<CJK_UNIFIED_IDEOGRAPH-320FE> \xF0\xB2\x83\xBE
+<CJK_UNIFIED_IDEOGRAPH-320FF> \xF0\xB2\x83\xBF
+<CJK_UNIFIED_IDEOGRAPH-32100> \xF0\xB2\x84\x80
+<CJK_UNIFIED_IDEOGRAPH-32101> \xF0\xB2\x84\x81
+<CJK_UNIFIED_IDEOGRAPH-32102> \xF0\xB2\x84\x82
+<CJK_UNIFIED_IDEOGRAPH-32103> \xF0\xB2\x84\x83
+<CJK_UNIFIED_IDEOGRAPH-32104> \xF0\xB2\x84\x84
+<CJK_UNIFIED_IDEOGRAPH-32105> \xF0\xB2\x84\x85
+<CJK_UNIFIED_IDEOGRAPH-32106> \xF0\xB2\x84\x86
+<CJK_UNIFIED_IDEOGRAPH-32107> \xF0\xB2\x84\x87
+<CJK_UNIFIED_IDEOGRAPH-32108> \xF0\xB2\x84\x88
+<CJK_UNIFIED_IDEOGRAPH-32109> \xF0\xB2\x84\x89
+<CJK_UNIFIED_IDEOGRAPH-3210A> \xF0\xB2\x84\x8A
+<CJK_UNIFIED_IDEOGRAPH-3210B> \xF0\xB2\x84\x8B
+<CJK_UNIFIED_IDEOGRAPH-3210C> \xF0\xB2\x84\x8C
+<CJK_UNIFIED_IDEOGRAPH-3210D> \xF0\xB2\x84\x8D
+<CJK_UNIFIED_IDEOGRAPH-3210E> \xF0\xB2\x84\x8E
+<CJK_UNIFIED_IDEOGRAPH-3210F> \xF0\xB2\x84\x8F
+<CJK_UNIFIED_IDEOGRAPH-32110> \xF0\xB2\x84\x90
+<CJK_UNIFIED_IDEOGRAPH-32111> \xF0\xB2\x84\x91
+<CJK_UNIFIED_IDEOGRAPH-32112> \xF0\xB2\x84\x92
+<CJK_UNIFIED_IDEOGRAPH-32113> \xF0\xB2\x84\x93
+<CJK_UNIFIED_IDEOGRAPH-32114> \xF0\xB2\x84\x94
+<CJK_UNIFIED_IDEOGRAPH-32115> \xF0\xB2\x84\x95
+<CJK_UNIFIED_IDEOGRAPH-32116> \xF0\xB2\x84\x96
+<CJK_UNIFIED_IDEOGRAPH-32117> \xF0\xB2\x84\x97
+<CJK_UNIFIED_IDEOGRAPH-32118> \xF0\xB2\x84\x98
+<CJK_UNIFIED_IDEOGRAPH-32119> \xF0\xB2\x84\x99
+<CJK_UNIFIED_IDEOGRAPH-3211A> \xF0\xB2\x84\x9A
+<CJK_UNIFIED_IDEOGRAPH-3211B> \xF0\xB2\x84\x9B
+<CJK_UNIFIED_IDEOGRAPH-3211C> \xF0\xB2\x84\x9C
+<CJK_UNIFIED_IDEOGRAPH-3211D> \xF0\xB2\x84\x9D
+<CJK_UNIFIED_IDEOGRAPH-3211E> \xF0\xB2\x84\x9E
+<CJK_UNIFIED_IDEOGRAPH-3211F> \xF0\xB2\x84\x9F
+<CJK_UNIFIED_IDEOGRAPH-32120> \xF0\xB2\x84\xA0
+<CJK_UNIFIED_IDEOGRAPH-32121> \xF0\xB2\x84\xA1
+<CJK_UNIFIED_IDEOGRAPH-32122> \xF0\xB2\x84\xA2
+<CJK_UNIFIED_IDEOGRAPH-32123> \xF0\xB2\x84\xA3
+<CJK_UNIFIED_IDEOGRAPH-32124> \xF0\xB2\x84\xA4
+<CJK_UNIFIED_IDEOGRAPH-32125> \xF0\xB2\x84\xA5
+<CJK_UNIFIED_IDEOGRAPH-32126> \xF0\xB2\x84\xA6
+<CJK_UNIFIED_IDEOGRAPH-32127> \xF0\xB2\x84\xA7
+<CJK_UNIFIED_IDEOGRAPH-32128> \xF0\xB2\x84\xA8
+<CJK_UNIFIED_IDEOGRAPH-32129> \xF0\xB2\x84\xA9
+<CJK_UNIFIED_IDEOGRAPH-3212A> \xF0\xB2\x84\xAA
+<CJK_UNIFIED_IDEOGRAPH-3212B> \xF0\xB2\x84\xAB
+<CJK_UNIFIED_IDEOGRAPH-3212C> \xF0\xB2\x84\xAC
+<CJK_UNIFIED_IDEOGRAPH-3212D> \xF0\xB2\x84\xAD
+<CJK_UNIFIED_IDEOGRAPH-3212E> \xF0\xB2\x84\xAE
+<CJK_UNIFIED_IDEOGRAPH-3212F> \xF0\xB2\x84\xAF
+<CJK_UNIFIED_IDEOGRAPH-32130> \xF0\xB2\x84\xB0
+<CJK_UNIFIED_IDEOGRAPH-32131> \xF0\xB2\x84\xB1
+<CJK_UNIFIED_IDEOGRAPH-32132> \xF0\xB2\x84\xB2
+<CJK_UNIFIED_IDEOGRAPH-32133> \xF0\xB2\x84\xB3
+<CJK_UNIFIED_IDEOGRAPH-32134> \xF0\xB2\x84\xB4
+<CJK_UNIFIED_IDEOGRAPH-32135> \xF0\xB2\x84\xB5
+<CJK_UNIFIED_IDEOGRAPH-32136> \xF0\xB2\x84\xB6
+<CJK_UNIFIED_IDEOGRAPH-32137> \xF0\xB2\x84\xB7
+<CJK_UNIFIED_IDEOGRAPH-32138> \xF0\xB2\x84\xB8
+<CJK_UNIFIED_IDEOGRAPH-32139> \xF0\xB2\x84\xB9
+<CJK_UNIFIED_IDEOGRAPH-3213A> \xF0\xB2\x84\xBA
+<CJK_UNIFIED_IDEOGRAPH-3213B> \xF0\xB2\x84\xBB
+<CJK_UNIFIED_IDEOGRAPH-3213C> \xF0\xB2\x84\xBC
+<CJK_UNIFIED_IDEOGRAPH-3213D> \xF0\xB2\x84\xBD
+<CJK_UNIFIED_IDEOGRAPH-3213E> \xF0\xB2\x84\xBE
+<CJK_UNIFIED_IDEOGRAPH-3213F> \xF0\xB2\x84\xBF
+<CJK_UNIFIED_IDEOGRAPH-32140> \xF0\xB2\x85\x80
+<CJK_UNIFIED_IDEOGRAPH-32141> \xF0\xB2\x85\x81
+<CJK_UNIFIED_IDEOGRAPH-32142> \xF0\xB2\x85\x82
+<CJK_UNIFIED_IDEOGRAPH-32143> \xF0\xB2\x85\x83
+<CJK_UNIFIED_IDEOGRAPH-32144> \xF0\xB2\x85\x84
+<CJK_UNIFIED_IDEOGRAPH-32145> \xF0\xB2\x85\x85
+<CJK_UNIFIED_IDEOGRAPH-32146> \xF0\xB2\x85\x86
+<CJK_UNIFIED_IDEOGRAPH-32147> \xF0\xB2\x85\x87
+<CJK_UNIFIED_IDEOGRAPH-32148> \xF0\xB2\x85\x88
+<CJK_UNIFIED_IDEOGRAPH-32149> \xF0\xB2\x85\x89
+<CJK_UNIFIED_IDEOGRAPH-3214A> \xF0\xB2\x85\x8A
+<CJK_UNIFIED_IDEOGRAPH-3214B> \xF0\xB2\x85\x8B
+<CJK_UNIFIED_IDEOGRAPH-3214C> \xF0\xB2\x85\x8C
+<CJK_UNIFIED_IDEOGRAPH-3214D> \xF0\xB2\x85\x8D
+<CJK_UNIFIED_IDEOGRAPH-3214E> \xF0\xB2\x85\x8E
+<CJK_UNIFIED_IDEOGRAPH-3214F> \xF0\xB2\x85\x8F
+<CJK_UNIFIED_IDEOGRAPH-32150> \xF0\xB2\x85\x90
+<CJK_UNIFIED_IDEOGRAPH-32151> \xF0\xB2\x85\x91
+<CJK_UNIFIED_IDEOGRAPH-32152> \xF0\xB2\x85\x92
+<CJK_UNIFIED_IDEOGRAPH-32153> \xF0\xB2\x85\x93
+<CJK_UNIFIED_IDEOGRAPH-32154> \xF0\xB2\x85\x94
+<CJK_UNIFIED_IDEOGRAPH-32155> \xF0\xB2\x85\x95
+<CJK_UNIFIED_IDEOGRAPH-32156> \xF0\xB2\x85\x96
+<CJK_UNIFIED_IDEOGRAPH-32157> \xF0\xB2\x85\x97
+<CJK_UNIFIED_IDEOGRAPH-32158> \xF0\xB2\x85\x98
+<CJK_UNIFIED_IDEOGRAPH-32159> \xF0\xB2\x85\x99
+<CJK_UNIFIED_IDEOGRAPH-3215A> \xF0\xB2\x85\x9A
+<CJK_UNIFIED_IDEOGRAPH-3215B> \xF0\xB2\x85\x9B
+<CJK_UNIFIED_IDEOGRAPH-3215C> \xF0\xB2\x85\x9C
+<CJK_UNIFIED_IDEOGRAPH-3215D> \xF0\xB2\x85\x9D
+<CJK_UNIFIED_IDEOGRAPH-3215E> \xF0\xB2\x85\x9E
+<CJK_UNIFIED_IDEOGRAPH-3215F> \xF0\xB2\x85\x9F
+<CJK_UNIFIED_IDEOGRAPH-32160> \xF0\xB2\x85\xA0
+<CJK_UNIFIED_IDEOGRAPH-32161> \xF0\xB2\x85\xA1
+<CJK_UNIFIED_IDEOGRAPH-32162> \xF0\xB2\x85\xA2
+<CJK_UNIFIED_IDEOGRAPH-32163> \xF0\xB2\x85\xA3
+<CJK_UNIFIED_IDEOGRAPH-32164> \xF0\xB2\x85\xA4
+<CJK_UNIFIED_IDEOGRAPH-32165> \xF0\xB2\x85\xA5
+<CJK_UNIFIED_IDEOGRAPH-32166> \xF0\xB2\x85\xA6
+<CJK_UNIFIED_IDEOGRAPH-32167> \xF0\xB2\x85\xA7
+<CJK_UNIFIED_IDEOGRAPH-32168> \xF0\xB2\x85\xA8
+<CJK_UNIFIED_IDEOGRAPH-32169> \xF0\xB2\x85\xA9
+<CJK_UNIFIED_IDEOGRAPH-3216A> \xF0\xB2\x85\xAA
+<CJK_UNIFIED_IDEOGRAPH-3216B> \xF0\xB2\x85\xAB
+<CJK_UNIFIED_IDEOGRAPH-3216C> \xF0\xB2\x85\xAC
+<CJK_UNIFIED_IDEOGRAPH-3216D> \xF0\xB2\x85\xAD
+<CJK_UNIFIED_IDEOGRAPH-3216E> \xF0\xB2\x85\xAE
+<CJK_UNIFIED_IDEOGRAPH-3216F> \xF0\xB2\x85\xAF
+<CJK_UNIFIED_IDEOGRAPH-32170> \xF0\xB2\x85\xB0
+<CJK_UNIFIED_IDEOGRAPH-32171> \xF0\xB2\x85\xB1
+<CJK_UNIFIED_IDEOGRAPH-32172> \xF0\xB2\x85\xB2
+<CJK_UNIFIED_IDEOGRAPH-32173> \xF0\xB2\x85\xB3
+<CJK_UNIFIED_IDEOGRAPH-32174> \xF0\xB2\x85\xB4
+<CJK_UNIFIED_IDEOGRAPH-32175> \xF0\xB2\x85\xB5
+<CJK_UNIFIED_IDEOGRAPH-32176> \xF0\xB2\x85\xB6
+<CJK_UNIFIED_IDEOGRAPH-32177> \xF0\xB2\x85\xB7
+<CJK_UNIFIED_IDEOGRAPH-32178> \xF0\xB2\x85\xB8
+<CJK_UNIFIED_IDEOGRAPH-32179> \xF0\xB2\x85\xB9
+<CJK_UNIFIED_IDEOGRAPH-3217A> \xF0\xB2\x85\xBA
+<CJK_UNIFIED_IDEOGRAPH-3217B> \xF0\xB2\x85\xBB
+<CJK_UNIFIED_IDEOGRAPH-3217C> \xF0\xB2\x85\xBC
+<CJK_UNIFIED_IDEOGRAPH-3217D> \xF0\xB2\x85\xBD
+<CJK_UNIFIED_IDEOGRAPH-3217E> \xF0\xB2\x85\xBE
+<CJK_UNIFIED_IDEOGRAPH-3217F> \xF0\xB2\x85\xBF
+<CJK_UNIFIED_IDEOGRAPH-32180> \xF0\xB2\x86\x80
+<CJK_UNIFIED_IDEOGRAPH-32181> \xF0\xB2\x86\x81
+<CJK_UNIFIED_IDEOGRAPH-32182> \xF0\xB2\x86\x82
+<CJK_UNIFIED_IDEOGRAPH-32183> \xF0\xB2\x86\x83
+<CJK_UNIFIED_IDEOGRAPH-32184> \xF0\xB2\x86\x84
+<CJK_UNIFIED_IDEOGRAPH-32185> \xF0\xB2\x86\x85
+<CJK_UNIFIED_IDEOGRAPH-32186> \xF0\xB2\x86\x86
+<CJK_UNIFIED_IDEOGRAPH-32187> \xF0\xB2\x86\x87
+<CJK_UNIFIED_IDEOGRAPH-32188> \xF0\xB2\x86\x88
+<CJK_UNIFIED_IDEOGRAPH-32189> \xF0\xB2\x86\x89
+<CJK_UNIFIED_IDEOGRAPH-3218A> \xF0\xB2\x86\x8A
+<CJK_UNIFIED_IDEOGRAPH-3218B> \xF0\xB2\x86\x8B
+<CJK_UNIFIED_IDEOGRAPH-3218C> \xF0\xB2\x86\x8C
+<CJK_UNIFIED_IDEOGRAPH-3218D> \xF0\xB2\x86\x8D
+<CJK_UNIFIED_IDEOGRAPH-3218E> \xF0\xB2\x86\x8E
+<CJK_UNIFIED_IDEOGRAPH-3218F> \xF0\xB2\x86\x8F
+<CJK_UNIFIED_IDEOGRAPH-32190> \xF0\xB2\x86\x90
+<CJK_UNIFIED_IDEOGRAPH-32191> \xF0\xB2\x86\x91
+<CJK_UNIFIED_IDEOGRAPH-32192> \xF0\xB2\x86\x92
+<CJK_UNIFIED_IDEOGRAPH-32193> \xF0\xB2\x86\x93
+<CJK_UNIFIED_IDEOGRAPH-32194> \xF0\xB2\x86\x94
+<CJK_UNIFIED_IDEOGRAPH-32195> \xF0\xB2\x86\x95
+<CJK_UNIFIED_IDEOGRAPH-32196> \xF0\xB2\x86\x96
+<CJK_UNIFIED_IDEOGRAPH-32197> \xF0\xB2\x86\x97
+<CJK_UNIFIED_IDEOGRAPH-32198> \xF0\xB2\x86\x98
+<CJK_UNIFIED_IDEOGRAPH-32199> \xF0\xB2\x86\x99
+<CJK_UNIFIED_IDEOGRAPH-3219A> \xF0\xB2\x86\x9A
+<CJK_UNIFIED_IDEOGRAPH-3219B> \xF0\xB2\x86\x9B
+<CJK_UNIFIED_IDEOGRAPH-3219C> \xF0\xB2\x86\x9C
+<CJK_UNIFIED_IDEOGRAPH-3219D> \xF0\xB2\x86\x9D
+<CJK_UNIFIED_IDEOGRAPH-3219E> \xF0\xB2\x86\x9E
+<CJK_UNIFIED_IDEOGRAPH-3219F> \xF0\xB2\x86\x9F
+<CJK_UNIFIED_IDEOGRAPH-321A0> \xF0\xB2\x86\xA0
+<CJK_UNIFIED_IDEOGRAPH-321A1> \xF0\xB2\x86\xA1
+<CJK_UNIFIED_IDEOGRAPH-321A2> \xF0\xB2\x86\xA2
+<CJK_UNIFIED_IDEOGRAPH-321A3> \xF0\xB2\x86\xA3
+<CJK_UNIFIED_IDEOGRAPH-321A4> \xF0\xB2\x86\xA4
+<CJK_UNIFIED_IDEOGRAPH-321A5> \xF0\xB2\x86\xA5
+<CJK_UNIFIED_IDEOGRAPH-321A6> \xF0\xB2\x86\xA6
+<CJK_UNIFIED_IDEOGRAPH-321A7> \xF0\xB2\x86\xA7
+<CJK_UNIFIED_IDEOGRAPH-321A8> \xF0\xB2\x86\xA8
+<CJK_UNIFIED_IDEOGRAPH-321A9> \xF0\xB2\x86\xA9
+<CJK_UNIFIED_IDEOGRAPH-321AA> \xF0\xB2\x86\xAA
+<CJK_UNIFIED_IDEOGRAPH-321AB> \xF0\xB2\x86\xAB
+<CJK_UNIFIED_IDEOGRAPH-321AC> \xF0\xB2\x86\xAC
+<CJK_UNIFIED_IDEOGRAPH-321AD> \xF0\xB2\x86\xAD
+<CJK_UNIFIED_IDEOGRAPH-321AE> \xF0\xB2\x86\xAE
+<CJK_UNIFIED_IDEOGRAPH-321AF> \xF0\xB2\x86\xAF
+<CJK_UNIFIED_IDEOGRAPH-321B0> \xF0\xB2\x86\xB0
+<CJK_UNIFIED_IDEOGRAPH-321B1> \xF0\xB2\x86\xB1
+<CJK_UNIFIED_IDEOGRAPH-321B2> \xF0\xB2\x86\xB2
+<CJK_UNIFIED_IDEOGRAPH-321B3> \xF0\xB2\x86\xB3
+<CJK_UNIFIED_IDEOGRAPH-321B4> \xF0\xB2\x86\xB4
+<CJK_UNIFIED_IDEOGRAPH-321B5> \xF0\xB2\x86\xB5
+<CJK_UNIFIED_IDEOGRAPH-321B6> \xF0\xB2\x86\xB6
+<CJK_UNIFIED_IDEOGRAPH-321B7> \xF0\xB2\x86\xB7
+<CJK_UNIFIED_IDEOGRAPH-321B8> \xF0\xB2\x86\xB8
+<CJK_UNIFIED_IDEOGRAPH-321B9> \xF0\xB2\x86\xB9
+<CJK_UNIFIED_IDEOGRAPH-321BA> \xF0\xB2\x86\xBA
+<CJK_UNIFIED_IDEOGRAPH-321BB> \xF0\xB2\x86\xBB
+<CJK_UNIFIED_IDEOGRAPH-321BC> \xF0\xB2\x86\xBC
+<CJK_UNIFIED_IDEOGRAPH-321BD> \xF0\xB2\x86\xBD
+<CJK_UNIFIED_IDEOGRAPH-321BE> \xF0\xB2\x86\xBE
+<CJK_UNIFIED_IDEOGRAPH-321BF> \xF0\xB2\x86\xBF
+<CJK_UNIFIED_IDEOGRAPH-321C0> \xF0\xB2\x87\x80
+<CJK_UNIFIED_IDEOGRAPH-321C1> \xF0\xB2\x87\x81
+<CJK_UNIFIED_IDEOGRAPH-321C2> \xF0\xB2\x87\x82
+<CJK_UNIFIED_IDEOGRAPH-321C3> \xF0\xB2\x87\x83
+<CJK_UNIFIED_IDEOGRAPH-321C4> \xF0\xB2\x87\x84
+<CJK_UNIFIED_IDEOGRAPH-321C5> \xF0\xB2\x87\x85
+<CJK_UNIFIED_IDEOGRAPH-321C6> \xF0\xB2\x87\x86
+<CJK_UNIFIED_IDEOGRAPH-321C7> \xF0\xB2\x87\x87
+<CJK_UNIFIED_IDEOGRAPH-321C8> \xF0\xB2\x87\x88
+<CJK_UNIFIED_IDEOGRAPH-321C9> \xF0\xB2\x87\x89
+<CJK_UNIFIED_IDEOGRAPH-321CA> \xF0\xB2\x87\x8A
+<CJK_UNIFIED_IDEOGRAPH-321CB> \xF0\xB2\x87\x8B
+<CJK_UNIFIED_IDEOGRAPH-321CC> \xF0\xB2\x87\x8C
+<CJK_UNIFIED_IDEOGRAPH-321CD> \xF0\xB2\x87\x8D
+<CJK_UNIFIED_IDEOGRAPH-321CE> \xF0\xB2\x87\x8E
+<CJK_UNIFIED_IDEOGRAPH-321CF> \xF0\xB2\x87\x8F
+<CJK_UNIFIED_IDEOGRAPH-321D0> \xF0\xB2\x87\x90
+<CJK_UNIFIED_IDEOGRAPH-321D1> \xF0\xB2\x87\x91
+<CJK_UNIFIED_IDEOGRAPH-321D2> \xF0\xB2\x87\x92
+<CJK_UNIFIED_IDEOGRAPH-321D3> \xF0\xB2\x87\x93
+<CJK_UNIFIED_IDEOGRAPH-321D4> \xF0\xB2\x87\x94
+<CJK_UNIFIED_IDEOGRAPH-321D5> \xF0\xB2\x87\x95
+<CJK_UNIFIED_IDEOGRAPH-321D6> \xF0\xB2\x87\x96
+<CJK_UNIFIED_IDEOGRAPH-321D7> \xF0\xB2\x87\x97
+<CJK_UNIFIED_IDEOGRAPH-321D8> \xF0\xB2\x87\x98
+<CJK_UNIFIED_IDEOGRAPH-321D9> \xF0\xB2\x87\x99
+<CJK_UNIFIED_IDEOGRAPH-321DA> \xF0\xB2\x87\x9A
+<CJK_UNIFIED_IDEOGRAPH-321DB> \xF0\xB2\x87\x9B
+<CJK_UNIFIED_IDEOGRAPH-321DC> \xF0\xB2\x87\x9C
+<CJK_UNIFIED_IDEOGRAPH-321DD> \xF0\xB2\x87\x9D
+<CJK_UNIFIED_IDEOGRAPH-321DE> \xF0\xB2\x87\x9E
+<CJK_UNIFIED_IDEOGRAPH-321DF> \xF0\xB2\x87\x9F
+<CJK_UNIFIED_IDEOGRAPH-321E0> \xF0\xB2\x87\xA0
+<CJK_UNIFIED_IDEOGRAPH-321E1> \xF0\xB2\x87\xA1
+<CJK_UNIFIED_IDEOGRAPH-321E2> \xF0\xB2\x87\xA2
+<CJK_UNIFIED_IDEOGRAPH-321E3> \xF0\xB2\x87\xA3
+<CJK_UNIFIED_IDEOGRAPH-321E4> \xF0\xB2\x87\xA4
+<CJK_UNIFIED_IDEOGRAPH-321E5> \xF0\xB2\x87\xA5
+<CJK_UNIFIED_IDEOGRAPH-321E6> \xF0\xB2\x87\xA6
+<CJK_UNIFIED_IDEOGRAPH-321E7> \xF0\xB2\x87\xA7
+<CJK_UNIFIED_IDEOGRAPH-321E8> \xF0\xB2\x87\xA8
+<CJK_UNIFIED_IDEOGRAPH-321E9> \xF0\xB2\x87\xA9
+<CJK_UNIFIED_IDEOGRAPH-321EA> \xF0\xB2\x87\xAA
+<CJK_UNIFIED_IDEOGRAPH-321EB> \xF0\xB2\x87\xAB
+<CJK_UNIFIED_IDEOGRAPH-321EC> \xF0\xB2\x87\xAC
+<CJK_UNIFIED_IDEOGRAPH-321ED> \xF0\xB2\x87\xAD
+<CJK_UNIFIED_IDEOGRAPH-321EE> \xF0\xB2\x87\xAE
+<CJK_UNIFIED_IDEOGRAPH-321EF> \xF0\xB2\x87\xAF
+<CJK_UNIFIED_IDEOGRAPH-321F0> \xF0\xB2\x87\xB0
+<CJK_UNIFIED_IDEOGRAPH-321F1> \xF0\xB2\x87\xB1
+<CJK_UNIFIED_IDEOGRAPH-321F2> \xF0\xB2\x87\xB2
+<CJK_UNIFIED_IDEOGRAPH-321F3> \xF0\xB2\x87\xB3
+<CJK_UNIFIED_IDEOGRAPH-321F4> \xF0\xB2\x87\xB4
+<CJK_UNIFIED_IDEOGRAPH-321F5> \xF0\xB2\x87\xB5
+<CJK_UNIFIED_IDEOGRAPH-321F6> \xF0\xB2\x87\xB6
+<CJK_UNIFIED_IDEOGRAPH-321F7> \xF0\xB2\x87\xB7
+<CJK_UNIFIED_IDEOGRAPH-321F8> \xF0\xB2\x87\xB8
+<CJK_UNIFIED_IDEOGRAPH-321F9> \xF0\xB2\x87\xB9
+<CJK_UNIFIED_IDEOGRAPH-321FA> \xF0\xB2\x87\xBA
+<CJK_UNIFIED_IDEOGRAPH-321FB> \xF0\xB2\x87\xBB
+<CJK_UNIFIED_IDEOGRAPH-321FC> \xF0\xB2\x87\xBC
+<CJK_UNIFIED_IDEOGRAPH-321FD> \xF0\xB2\x87\xBD
+<CJK_UNIFIED_IDEOGRAPH-321FE> \xF0\xB2\x87\xBE
+<CJK_UNIFIED_IDEOGRAPH-321FF> \xF0\xB2\x87\xBF
+<CJK_UNIFIED_IDEOGRAPH-32200> \xF0\xB2\x88\x80
+<CJK_UNIFIED_IDEOGRAPH-32201> \xF0\xB2\x88\x81
+<CJK_UNIFIED_IDEOGRAPH-32202> \xF0\xB2\x88\x82
+<CJK_UNIFIED_IDEOGRAPH-32203> \xF0\xB2\x88\x83
+<CJK_UNIFIED_IDEOGRAPH-32204> \xF0\xB2\x88\x84
+<CJK_UNIFIED_IDEOGRAPH-32205> \xF0\xB2\x88\x85
+<CJK_UNIFIED_IDEOGRAPH-32206> \xF0\xB2\x88\x86
+<CJK_UNIFIED_IDEOGRAPH-32207> \xF0\xB2\x88\x87
+<CJK_UNIFIED_IDEOGRAPH-32208> \xF0\xB2\x88\x88
+<CJK_UNIFIED_IDEOGRAPH-32209> \xF0\xB2\x88\x89
+<CJK_UNIFIED_IDEOGRAPH-3220A> \xF0\xB2\x88\x8A
+<CJK_UNIFIED_IDEOGRAPH-3220B> \xF0\xB2\x88\x8B
+<CJK_UNIFIED_IDEOGRAPH-3220C> \xF0\xB2\x88\x8C
+<CJK_UNIFIED_IDEOGRAPH-3220D> \xF0\xB2\x88\x8D
+<CJK_UNIFIED_IDEOGRAPH-3220E> \xF0\xB2\x88\x8E
+<CJK_UNIFIED_IDEOGRAPH-3220F> \xF0\xB2\x88\x8F
+<CJK_UNIFIED_IDEOGRAPH-32210> \xF0\xB2\x88\x90
+<CJK_UNIFIED_IDEOGRAPH-32211> \xF0\xB2\x88\x91
+<CJK_UNIFIED_IDEOGRAPH-32212> \xF0\xB2\x88\x92
+<CJK_UNIFIED_IDEOGRAPH-32213> \xF0\xB2\x88\x93
+<CJK_UNIFIED_IDEOGRAPH-32214> \xF0\xB2\x88\x94
+<CJK_UNIFIED_IDEOGRAPH-32215> \xF0\xB2\x88\x95
+<CJK_UNIFIED_IDEOGRAPH-32216> \xF0\xB2\x88\x96
+<CJK_UNIFIED_IDEOGRAPH-32217> \xF0\xB2\x88\x97
+<CJK_UNIFIED_IDEOGRAPH-32218> \xF0\xB2\x88\x98
+<CJK_UNIFIED_IDEOGRAPH-32219> \xF0\xB2\x88\x99
+<CJK_UNIFIED_IDEOGRAPH-3221A> \xF0\xB2\x88\x9A
+<CJK_UNIFIED_IDEOGRAPH-3221B> \xF0\xB2\x88\x9B
+<CJK_UNIFIED_IDEOGRAPH-3221C> \xF0\xB2\x88\x9C
+<CJK_UNIFIED_IDEOGRAPH-3221D> \xF0\xB2\x88\x9D
+<CJK_UNIFIED_IDEOGRAPH-3221E> \xF0\xB2\x88\x9E
+<CJK_UNIFIED_IDEOGRAPH-3221F> \xF0\xB2\x88\x9F
+<CJK_UNIFIED_IDEOGRAPH-32220> \xF0\xB2\x88\xA0
+<CJK_UNIFIED_IDEOGRAPH-32221> \xF0\xB2\x88\xA1
+<CJK_UNIFIED_IDEOGRAPH-32222> \xF0\xB2\x88\xA2
+<CJK_UNIFIED_IDEOGRAPH-32223> \xF0\xB2\x88\xA3
+<CJK_UNIFIED_IDEOGRAPH-32224> \xF0\xB2\x88\xA4
+<CJK_UNIFIED_IDEOGRAPH-32225> \xF0\xB2\x88\xA5
+<CJK_UNIFIED_IDEOGRAPH-32226> \xF0\xB2\x88\xA6
+<CJK_UNIFIED_IDEOGRAPH-32227> \xF0\xB2\x88\xA7
+<CJK_UNIFIED_IDEOGRAPH-32228> \xF0\xB2\x88\xA8
+<CJK_UNIFIED_IDEOGRAPH-32229> \xF0\xB2\x88\xA9
+<CJK_UNIFIED_IDEOGRAPH-3222A> \xF0\xB2\x88\xAA
+<CJK_UNIFIED_IDEOGRAPH-3222B> \xF0\xB2\x88\xAB
+<CJK_UNIFIED_IDEOGRAPH-3222C> \xF0\xB2\x88\xAC
+<CJK_UNIFIED_IDEOGRAPH-3222D> \xF0\xB2\x88\xAD
+<CJK_UNIFIED_IDEOGRAPH-3222E> \xF0\xB2\x88\xAE
+<CJK_UNIFIED_IDEOGRAPH-3222F> \xF0\xB2\x88\xAF
+<CJK_UNIFIED_IDEOGRAPH-32230> \xF0\xB2\x88\xB0
+<CJK_UNIFIED_IDEOGRAPH-32231> \xF0\xB2\x88\xB1
+<CJK_UNIFIED_IDEOGRAPH-32232> \xF0\xB2\x88\xB2
+<CJK_UNIFIED_IDEOGRAPH-32233> \xF0\xB2\x88\xB3
+<CJK_UNIFIED_IDEOGRAPH-32234> \xF0\xB2\x88\xB4
+<CJK_UNIFIED_IDEOGRAPH-32235> \xF0\xB2\x88\xB5
+<CJK_UNIFIED_IDEOGRAPH-32236> \xF0\xB2\x88\xB6
+<CJK_UNIFIED_IDEOGRAPH-32237> \xF0\xB2\x88\xB7
+<CJK_UNIFIED_IDEOGRAPH-32238> \xF0\xB2\x88\xB8
+<CJK_UNIFIED_IDEOGRAPH-32239> \xF0\xB2\x88\xB9
+<CJK_UNIFIED_IDEOGRAPH-3223A> \xF0\xB2\x88\xBA
+<CJK_UNIFIED_IDEOGRAPH-3223B> \xF0\xB2\x88\xBB
+<CJK_UNIFIED_IDEOGRAPH-3223C> \xF0\xB2\x88\xBC
+<CJK_UNIFIED_IDEOGRAPH-3223D> \xF0\xB2\x88\xBD
+<CJK_UNIFIED_IDEOGRAPH-3223E> \xF0\xB2\x88\xBE
+<CJK_UNIFIED_IDEOGRAPH-3223F> \xF0\xB2\x88\xBF
+<CJK_UNIFIED_IDEOGRAPH-32240> \xF0\xB2\x89\x80
+<CJK_UNIFIED_IDEOGRAPH-32241> \xF0\xB2\x89\x81
+<CJK_UNIFIED_IDEOGRAPH-32242> \xF0\xB2\x89\x82
+<CJK_UNIFIED_IDEOGRAPH-32243> \xF0\xB2\x89\x83
+<CJK_UNIFIED_IDEOGRAPH-32244> \xF0\xB2\x89\x84
+<CJK_UNIFIED_IDEOGRAPH-32245> \xF0\xB2\x89\x85
+<CJK_UNIFIED_IDEOGRAPH-32246> \xF0\xB2\x89\x86
+<CJK_UNIFIED_IDEOGRAPH-32247> \xF0\xB2\x89\x87
+<CJK_UNIFIED_IDEOGRAPH-32248> \xF0\xB2\x89\x88
+<CJK_UNIFIED_IDEOGRAPH-32249> \xF0\xB2\x89\x89
+<CJK_UNIFIED_IDEOGRAPH-3224A> \xF0\xB2\x89\x8A
+<CJK_UNIFIED_IDEOGRAPH-3224B> \xF0\xB2\x89\x8B
+<CJK_UNIFIED_IDEOGRAPH-3224C> \xF0\xB2\x89\x8C
+<CJK_UNIFIED_IDEOGRAPH-3224D> \xF0\xB2\x89\x8D
+<CJK_UNIFIED_IDEOGRAPH-3224E> \xF0\xB2\x89\x8E
+<CJK_UNIFIED_IDEOGRAPH-3224F> \xF0\xB2\x89\x8F
+<CJK_UNIFIED_IDEOGRAPH-32250> \xF0\xB2\x89\x90
+<CJK_UNIFIED_IDEOGRAPH-32251> \xF0\xB2\x89\x91
+<CJK_UNIFIED_IDEOGRAPH-32252> \xF0\xB2\x89\x92
+<CJK_UNIFIED_IDEOGRAPH-32253> \xF0\xB2\x89\x93
+<CJK_UNIFIED_IDEOGRAPH-32254> \xF0\xB2\x89\x94
+<CJK_UNIFIED_IDEOGRAPH-32255> \xF0\xB2\x89\x95
+<CJK_UNIFIED_IDEOGRAPH-32256> \xF0\xB2\x89\x96
+<CJK_UNIFIED_IDEOGRAPH-32257> \xF0\xB2\x89\x97
+<CJK_UNIFIED_IDEOGRAPH-32258> \xF0\xB2\x89\x98
+<CJK_UNIFIED_IDEOGRAPH-32259> \xF0\xB2\x89\x99
+<CJK_UNIFIED_IDEOGRAPH-3225A> \xF0\xB2\x89\x9A
+<CJK_UNIFIED_IDEOGRAPH-3225B> \xF0\xB2\x89\x9B
+<CJK_UNIFIED_IDEOGRAPH-3225C> \xF0\xB2\x89\x9C
+<CJK_UNIFIED_IDEOGRAPH-3225D> \xF0\xB2\x89\x9D
+<CJK_UNIFIED_IDEOGRAPH-3225E> \xF0\xB2\x89\x9E
+<CJK_UNIFIED_IDEOGRAPH-3225F> \xF0\xB2\x89\x9F
+<CJK_UNIFIED_IDEOGRAPH-32260> \xF0\xB2\x89\xA0
+<CJK_UNIFIED_IDEOGRAPH-32261> \xF0\xB2\x89\xA1
+<CJK_UNIFIED_IDEOGRAPH-32262> \xF0\xB2\x89\xA2
+<CJK_UNIFIED_IDEOGRAPH-32263> \xF0\xB2\x89\xA3
+<CJK_UNIFIED_IDEOGRAPH-32264> \xF0\xB2\x89\xA4
+<CJK_UNIFIED_IDEOGRAPH-32265> \xF0\xB2\x89\xA5
+<CJK_UNIFIED_IDEOGRAPH-32266> \xF0\xB2\x89\xA6
+<CJK_UNIFIED_IDEOGRAPH-32267> \xF0\xB2\x89\xA7
+<CJK_UNIFIED_IDEOGRAPH-32268> \xF0\xB2\x89\xA8
+<CJK_UNIFIED_IDEOGRAPH-32269> \xF0\xB2\x89\xA9
+<CJK_UNIFIED_IDEOGRAPH-3226A> \xF0\xB2\x89\xAA
+<CJK_UNIFIED_IDEOGRAPH-3226B> \xF0\xB2\x89\xAB
+<CJK_UNIFIED_IDEOGRAPH-3226C> \xF0\xB2\x89\xAC
+<CJK_UNIFIED_IDEOGRAPH-3226D> \xF0\xB2\x89\xAD
+<CJK_UNIFIED_IDEOGRAPH-3226E> \xF0\xB2\x89\xAE
+<CJK_UNIFIED_IDEOGRAPH-3226F> \xF0\xB2\x89\xAF
+<CJK_UNIFIED_IDEOGRAPH-32270> \xF0\xB2\x89\xB0
+<CJK_UNIFIED_IDEOGRAPH-32271> \xF0\xB2\x89\xB1
+<CJK_UNIFIED_IDEOGRAPH-32272> \xF0\xB2\x89\xB2
+<CJK_UNIFIED_IDEOGRAPH-32273> \xF0\xB2\x89\xB3
+<CJK_UNIFIED_IDEOGRAPH-32274> \xF0\xB2\x89\xB4
+<CJK_UNIFIED_IDEOGRAPH-32275> \xF0\xB2\x89\xB5
+<CJK_UNIFIED_IDEOGRAPH-32276> \xF0\xB2\x89\xB6
+<CJK_UNIFIED_IDEOGRAPH-32277> \xF0\xB2\x89\xB7
+<CJK_UNIFIED_IDEOGRAPH-32278> \xF0\xB2\x89\xB8
+<CJK_UNIFIED_IDEOGRAPH-32279> \xF0\xB2\x89\xB9
+<CJK_UNIFIED_IDEOGRAPH-3227A> \xF0\xB2\x89\xBA
+<CJK_UNIFIED_IDEOGRAPH-3227B> \xF0\xB2\x89\xBB
+<CJK_UNIFIED_IDEOGRAPH-3227C> \xF0\xB2\x89\xBC
+<CJK_UNIFIED_IDEOGRAPH-3227D> \xF0\xB2\x89\xBD
+<CJK_UNIFIED_IDEOGRAPH-3227E> \xF0\xB2\x89\xBE
+<CJK_UNIFIED_IDEOGRAPH-3227F> \xF0\xB2\x89\xBF
+<CJK_UNIFIED_IDEOGRAPH-32280> \xF0\xB2\x8A\x80
+<CJK_UNIFIED_IDEOGRAPH-32281> \xF0\xB2\x8A\x81
+<CJK_UNIFIED_IDEOGRAPH-32282> \xF0\xB2\x8A\x82
+<CJK_UNIFIED_IDEOGRAPH-32283> \xF0\xB2\x8A\x83
+<CJK_UNIFIED_IDEOGRAPH-32284> \xF0\xB2\x8A\x84
+<CJK_UNIFIED_IDEOGRAPH-32285> \xF0\xB2\x8A\x85
+<CJK_UNIFIED_IDEOGRAPH-32286> \xF0\xB2\x8A\x86
+<CJK_UNIFIED_IDEOGRAPH-32287> \xF0\xB2\x8A\x87
+<CJK_UNIFIED_IDEOGRAPH-32288> \xF0\xB2\x8A\x88
+<CJK_UNIFIED_IDEOGRAPH-32289> \xF0\xB2\x8A\x89
+<CJK_UNIFIED_IDEOGRAPH-3228A> \xF0\xB2\x8A\x8A
+<CJK_UNIFIED_IDEOGRAPH-3228B> \xF0\xB2\x8A\x8B
+<CJK_UNIFIED_IDEOGRAPH-3228C> \xF0\xB2\x8A\x8C
+<CJK_UNIFIED_IDEOGRAPH-3228D> \xF0\xB2\x8A\x8D
+<CJK_UNIFIED_IDEOGRAPH-3228E> \xF0\xB2\x8A\x8E
+<CJK_UNIFIED_IDEOGRAPH-3228F> \xF0\xB2\x8A\x8F
+<CJK_UNIFIED_IDEOGRAPH-32290> \xF0\xB2\x8A\x90
+<CJK_UNIFIED_IDEOGRAPH-32291> \xF0\xB2\x8A\x91
+<CJK_UNIFIED_IDEOGRAPH-32292> \xF0\xB2\x8A\x92
+<CJK_UNIFIED_IDEOGRAPH-32293> \xF0\xB2\x8A\x93
+<CJK_UNIFIED_IDEOGRAPH-32294> \xF0\xB2\x8A\x94
+<CJK_UNIFIED_IDEOGRAPH-32295> \xF0\xB2\x8A\x95
+<CJK_UNIFIED_IDEOGRAPH-32296> \xF0\xB2\x8A\x96
+<CJK_UNIFIED_IDEOGRAPH-32297> \xF0\xB2\x8A\x97
+<CJK_UNIFIED_IDEOGRAPH-32298> \xF0\xB2\x8A\x98
+<CJK_UNIFIED_IDEOGRAPH-32299> \xF0\xB2\x8A\x99
+<CJK_UNIFIED_IDEOGRAPH-3229A> \xF0\xB2\x8A\x9A
+<CJK_UNIFIED_IDEOGRAPH-3229B> \xF0\xB2\x8A\x9B
+<CJK_UNIFIED_IDEOGRAPH-3229C> \xF0\xB2\x8A\x9C
+<CJK_UNIFIED_IDEOGRAPH-3229D> \xF0\xB2\x8A\x9D
+<CJK_UNIFIED_IDEOGRAPH-3229E> \xF0\xB2\x8A\x9E
+<CJK_UNIFIED_IDEOGRAPH-3229F> \xF0\xB2\x8A\x9F
+<CJK_UNIFIED_IDEOGRAPH-322A0> \xF0\xB2\x8A\xA0
+<CJK_UNIFIED_IDEOGRAPH-322A1> \xF0\xB2\x8A\xA1
+<CJK_UNIFIED_IDEOGRAPH-322A2> \xF0\xB2\x8A\xA2
+<CJK_UNIFIED_IDEOGRAPH-322A3> \xF0\xB2\x8A\xA3
+<CJK_UNIFIED_IDEOGRAPH-322A4> \xF0\xB2\x8A\xA4
+<CJK_UNIFIED_IDEOGRAPH-322A5> \xF0\xB2\x8A\xA5
+<CJK_UNIFIED_IDEOGRAPH-322A6> \xF0\xB2\x8A\xA6
+<CJK_UNIFIED_IDEOGRAPH-322A7> \xF0\xB2\x8A\xA7
+<CJK_UNIFIED_IDEOGRAPH-322A8> \xF0\xB2\x8A\xA8
+<CJK_UNIFIED_IDEOGRAPH-322A9> \xF0\xB2\x8A\xA9
+<CJK_UNIFIED_IDEOGRAPH-322AA> \xF0\xB2\x8A\xAA
+<CJK_UNIFIED_IDEOGRAPH-322AB> \xF0\xB2\x8A\xAB
+<CJK_UNIFIED_IDEOGRAPH-322AC> \xF0\xB2\x8A\xAC
+<CJK_UNIFIED_IDEOGRAPH-322AD> \xF0\xB2\x8A\xAD
+<CJK_UNIFIED_IDEOGRAPH-322AE> \xF0\xB2\x8A\xAE
+<CJK_UNIFIED_IDEOGRAPH-322AF> \xF0\xB2\x8A\xAF
+<CJK_UNIFIED_IDEOGRAPH-322B0> \xF0\xB2\x8A\xB0
+<CJK_UNIFIED_IDEOGRAPH-322B1> \xF0\xB2\x8A\xB1
+<CJK_UNIFIED_IDEOGRAPH-322B2> \xF0\xB2\x8A\xB2
+<CJK_UNIFIED_IDEOGRAPH-322B3> \xF0\xB2\x8A\xB3
+<CJK_UNIFIED_IDEOGRAPH-322B4> \xF0\xB2\x8A\xB4
+<CJK_UNIFIED_IDEOGRAPH-322B5> \xF0\xB2\x8A\xB5
+<CJK_UNIFIED_IDEOGRAPH-322B6> \xF0\xB2\x8A\xB6
+<CJK_UNIFIED_IDEOGRAPH-322B7> \xF0\xB2\x8A\xB7
+<CJK_UNIFIED_IDEOGRAPH-322B8> \xF0\xB2\x8A\xB8
+<CJK_UNIFIED_IDEOGRAPH-322B9> \xF0\xB2\x8A\xB9
+<CJK_UNIFIED_IDEOGRAPH-322BA> \xF0\xB2\x8A\xBA
+<CJK_UNIFIED_IDEOGRAPH-322BB> \xF0\xB2\x8A\xBB
+<CJK_UNIFIED_IDEOGRAPH-322BC> \xF0\xB2\x8A\xBC
+<CJK_UNIFIED_IDEOGRAPH-322BD> \xF0\xB2\x8A\xBD
+<CJK_UNIFIED_IDEOGRAPH-322BE> \xF0\xB2\x8A\xBE
+<CJK_UNIFIED_IDEOGRAPH-322BF> \xF0\xB2\x8A\xBF
+<CJK_UNIFIED_IDEOGRAPH-322C0> \xF0\xB2\x8B\x80
+<CJK_UNIFIED_IDEOGRAPH-322C1> \xF0\xB2\x8B\x81
+<CJK_UNIFIED_IDEOGRAPH-322C2> \xF0\xB2\x8B\x82
+<CJK_UNIFIED_IDEOGRAPH-322C3> \xF0\xB2\x8B\x83
+<CJK_UNIFIED_IDEOGRAPH-322C4> \xF0\xB2\x8B\x84
+<CJK_UNIFIED_IDEOGRAPH-322C5> \xF0\xB2\x8B\x85
+<CJK_UNIFIED_IDEOGRAPH-322C6> \xF0\xB2\x8B\x86
+<CJK_UNIFIED_IDEOGRAPH-322C7> \xF0\xB2\x8B\x87
+<CJK_UNIFIED_IDEOGRAPH-322C8> \xF0\xB2\x8B\x88
+<CJK_UNIFIED_IDEOGRAPH-322C9> \xF0\xB2\x8B\x89
+<CJK_UNIFIED_IDEOGRAPH-322CA> \xF0\xB2\x8B\x8A
+<CJK_UNIFIED_IDEOGRAPH-322CB> \xF0\xB2\x8B\x8B
+<CJK_UNIFIED_IDEOGRAPH-322CC> \xF0\xB2\x8B\x8C
+<CJK_UNIFIED_IDEOGRAPH-322CD> \xF0\xB2\x8B\x8D
+<CJK_UNIFIED_IDEOGRAPH-322CE> \xF0\xB2\x8B\x8E
+<CJK_UNIFIED_IDEOGRAPH-322CF> \xF0\xB2\x8B\x8F
+<CJK_UNIFIED_IDEOGRAPH-322D0> \xF0\xB2\x8B\x90
+<CJK_UNIFIED_IDEOGRAPH-322D1> \xF0\xB2\x8B\x91
+<CJK_UNIFIED_IDEOGRAPH-322D2> \xF0\xB2\x8B\x92
+<CJK_UNIFIED_IDEOGRAPH-322D3> \xF0\xB2\x8B\x93
+<CJK_UNIFIED_IDEOGRAPH-322D4> \xF0\xB2\x8B\x94
+<CJK_UNIFIED_IDEOGRAPH-322D5> \xF0\xB2\x8B\x95
+<CJK_UNIFIED_IDEOGRAPH-322D6> \xF0\xB2\x8B\x96
+<CJK_UNIFIED_IDEOGRAPH-322D7> \xF0\xB2\x8B\x97
+<CJK_UNIFIED_IDEOGRAPH-322D8> \xF0\xB2\x8B\x98
+<CJK_UNIFIED_IDEOGRAPH-322D9> \xF0\xB2\x8B\x99
+<CJK_UNIFIED_IDEOGRAPH-322DA> \xF0\xB2\x8B\x9A
+<CJK_UNIFIED_IDEOGRAPH-322DB> \xF0\xB2\x8B\x9B
+<CJK_UNIFIED_IDEOGRAPH-322DC> \xF0\xB2\x8B\x9C
+<CJK_UNIFIED_IDEOGRAPH-322DD> \xF0\xB2\x8B\x9D
+<CJK_UNIFIED_IDEOGRAPH-322DE> \xF0\xB2\x8B\x9E
+<CJK_UNIFIED_IDEOGRAPH-322DF> \xF0\xB2\x8B\x9F
+<CJK_UNIFIED_IDEOGRAPH-322E0> \xF0\xB2\x8B\xA0
+<CJK_UNIFIED_IDEOGRAPH-322E1> \xF0\xB2\x8B\xA1
+<CJK_UNIFIED_IDEOGRAPH-322E2> \xF0\xB2\x8B\xA2
+<CJK_UNIFIED_IDEOGRAPH-322E3> \xF0\xB2\x8B\xA3
+<CJK_UNIFIED_IDEOGRAPH-322E4> \xF0\xB2\x8B\xA4
+<CJK_UNIFIED_IDEOGRAPH-322E5> \xF0\xB2\x8B\xA5
+<CJK_UNIFIED_IDEOGRAPH-322E6> \xF0\xB2\x8B\xA6
+<CJK_UNIFIED_IDEOGRAPH-322E7> \xF0\xB2\x8B\xA7
+<CJK_UNIFIED_IDEOGRAPH-322E8> \xF0\xB2\x8B\xA8
+<CJK_UNIFIED_IDEOGRAPH-322E9> \xF0\xB2\x8B\xA9
+<CJK_UNIFIED_IDEOGRAPH-322EA> \xF0\xB2\x8B\xAA
+<CJK_UNIFIED_IDEOGRAPH-322EB> \xF0\xB2\x8B\xAB
+<CJK_UNIFIED_IDEOGRAPH-322EC> \xF0\xB2\x8B\xAC
+<CJK_UNIFIED_IDEOGRAPH-322ED> \xF0\xB2\x8B\xAD
+<CJK_UNIFIED_IDEOGRAPH-322EE> \xF0\xB2\x8B\xAE
+<CJK_UNIFIED_IDEOGRAPH-322EF> \xF0\xB2\x8B\xAF
+<CJK_UNIFIED_IDEOGRAPH-322F0> \xF0\xB2\x8B\xB0
+<CJK_UNIFIED_IDEOGRAPH-322F1> \xF0\xB2\x8B\xB1
+<CJK_UNIFIED_IDEOGRAPH-322F2> \xF0\xB2\x8B\xB2
+<CJK_UNIFIED_IDEOGRAPH-322F3> \xF0\xB2\x8B\xB3
+<CJK_UNIFIED_IDEOGRAPH-322F4> \xF0\xB2\x8B\xB4
+<CJK_UNIFIED_IDEOGRAPH-322F5> \xF0\xB2\x8B\xB5
+<CJK_UNIFIED_IDEOGRAPH-322F6> \xF0\xB2\x8B\xB6
+<CJK_UNIFIED_IDEOGRAPH-322F7> \xF0\xB2\x8B\xB7
+<CJK_UNIFIED_IDEOGRAPH-322F8> \xF0\xB2\x8B\xB8
+<CJK_UNIFIED_IDEOGRAPH-322F9> \xF0\xB2\x8B\xB9
+<CJK_UNIFIED_IDEOGRAPH-322FA> \xF0\xB2\x8B\xBA
+<CJK_UNIFIED_IDEOGRAPH-322FB> \xF0\xB2\x8B\xBB
+<CJK_UNIFIED_IDEOGRAPH-322FC> \xF0\xB2\x8B\xBC
+<CJK_UNIFIED_IDEOGRAPH-322FD> \xF0\xB2\x8B\xBD
+<CJK_UNIFIED_IDEOGRAPH-322FE> \xF0\xB2\x8B\xBE
+<CJK_UNIFIED_IDEOGRAPH-322FF> \xF0\xB2\x8B\xBF
+<CJK_UNIFIED_IDEOGRAPH-32300> \xF0\xB2\x8C\x80
+<CJK_UNIFIED_IDEOGRAPH-32301> \xF0\xB2\x8C\x81
+<CJK_UNIFIED_IDEOGRAPH-32302> \xF0\xB2\x8C\x82
+<CJK_UNIFIED_IDEOGRAPH-32303> \xF0\xB2\x8C\x83
+<CJK_UNIFIED_IDEOGRAPH-32304> \xF0\xB2\x8C\x84
+<CJK_UNIFIED_IDEOGRAPH-32305> \xF0\xB2\x8C\x85
+<CJK_UNIFIED_IDEOGRAPH-32306> \xF0\xB2\x8C\x86
+<CJK_UNIFIED_IDEOGRAPH-32307> \xF0\xB2\x8C\x87
+<CJK_UNIFIED_IDEOGRAPH-32308> \xF0\xB2\x8C\x88
+<CJK_UNIFIED_IDEOGRAPH-32309> \xF0\xB2\x8C\x89
+<CJK_UNIFIED_IDEOGRAPH-3230A> \xF0\xB2\x8C\x8A
+<CJK_UNIFIED_IDEOGRAPH-3230B> \xF0\xB2\x8C\x8B
+<CJK_UNIFIED_IDEOGRAPH-3230C> \xF0\xB2\x8C\x8C
+<CJK_UNIFIED_IDEOGRAPH-3230D> \xF0\xB2\x8C\x8D
+<CJK_UNIFIED_IDEOGRAPH-3230E> \xF0\xB2\x8C\x8E
+<CJK_UNIFIED_IDEOGRAPH-3230F> \xF0\xB2\x8C\x8F
+<CJK_UNIFIED_IDEOGRAPH-32310> \xF0\xB2\x8C\x90
+<CJK_UNIFIED_IDEOGRAPH-32311> \xF0\xB2\x8C\x91
+<CJK_UNIFIED_IDEOGRAPH-32312> \xF0\xB2\x8C\x92
+<CJK_UNIFIED_IDEOGRAPH-32313> \xF0\xB2\x8C\x93
+<CJK_UNIFIED_IDEOGRAPH-32314> \xF0\xB2\x8C\x94
+<CJK_UNIFIED_IDEOGRAPH-32315> \xF0\xB2\x8C\x95
+<CJK_UNIFIED_IDEOGRAPH-32316> \xF0\xB2\x8C\x96
+<CJK_UNIFIED_IDEOGRAPH-32317> \xF0\xB2\x8C\x97
+<CJK_UNIFIED_IDEOGRAPH-32318> \xF0\xB2\x8C\x98
+<CJK_UNIFIED_IDEOGRAPH-32319> \xF0\xB2\x8C\x99
+<CJK_UNIFIED_IDEOGRAPH-3231A> \xF0\xB2\x8C\x9A
+<CJK_UNIFIED_IDEOGRAPH-3231B> \xF0\xB2\x8C\x9B
+<CJK_UNIFIED_IDEOGRAPH-3231C> \xF0\xB2\x8C\x9C
+<CJK_UNIFIED_IDEOGRAPH-3231D> \xF0\xB2\x8C\x9D
+<CJK_UNIFIED_IDEOGRAPH-3231E> \xF0\xB2\x8C\x9E
+<CJK_UNIFIED_IDEOGRAPH-3231F> \xF0\xB2\x8C\x9F
+<CJK_UNIFIED_IDEOGRAPH-32320> \xF0\xB2\x8C\xA0
+<CJK_UNIFIED_IDEOGRAPH-32321> \xF0\xB2\x8C\xA1
+<CJK_UNIFIED_IDEOGRAPH-32322> \xF0\xB2\x8C\xA2
+<CJK_UNIFIED_IDEOGRAPH-32323> \xF0\xB2\x8C\xA3
+<CJK_UNIFIED_IDEOGRAPH-32324> \xF0\xB2\x8C\xA4
+<CJK_UNIFIED_IDEOGRAPH-32325> \xF0\xB2\x8C\xA5
+<CJK_UNIFIED_IDEOGRAPH-32326> \xF0\xB2\x8C\xA6
+<CJK_UNIFIED_IDEOGRAPH-32327> \xF0\xB2\x8C\xA7
+<CJK_UNIFIED_IDEOGRAPH-32328> \xF0\xB2\x8C\xA8
+<CJK_UNIFIED_IDEOGRAPH-32329> \xF0\xB2\x8C\xA9
+<CJK_UNIFIED_IDEOGRAPH-3232A> \xF0\xB2\x8C\xAA
+<CJK_UNIFIED_IDEOGRAPH-3232B> \xF0\xB2\x8C\xAB
+<CJK_UNIFIED_IDEOGRAPH-3232C> \xF0\xB2\x8C\xAC
+<CJK_UNIFIED_IDEOGRAPH-3232D> \xF0\xB2\x8C\xAD
+<CJK_UNIFIED_IDEOGRAPH-3232E> \xF0\xB2\x8C\xAE
+<CJK_UNIFIED_IDEOGRAPH-3232F> \xF0\xB2\x8C\xAF
+<CJK_UNIFIED_IDEOGRAPH-32330> \xF0\xB2\x8C\xB0
+<CJK_UNIFIED_IDEOGRAPH-32331> \xF0\xB2\x8C\xB1
+<CJK_UNIFIED_IDEOGRAPH-32332> \xF0\xB2\x8C\xB2
+<CJK_UNIFIED_IDEOGRAPH-32333> \xF0\xB2\x8C\xB3
+<CJK_UNIFIED_IDEOGRAPH-32334> \xF0\xB2\x8C\xB4
+<CJK_UNIFIED_IDEOGRAPH-32335> \xF0\xB2\x8C\xB5
+<CJK_UNIFIED_IDEOGRAPH-32336> \xF0\xB2\x8C\xB6
+<CJK_UNIFIED_IDEOGRAPH-32337> \xF0\xB2\x8C\xB7
+<CJK_UNIFIED_IDEOGRAPH-32338> \xF0\xB2\x8C\xB8
+<CJK_UNIFIED_IDEOGRAPH-32339> \xF0\xB2\x8C\xB9
+<CJK_UNIFIED_IDEOGRAPH-3233A> \xF0\xB2\x8C\xBA
+<CJK_UNIFIED_IDEOGRAPH-3233B> \xF0\xB2\x8C\xBB
+<CJK_UNIFIED_IDEOGRAPH-3233C> \xF0\xB2\x8C\xBC
+<CJK_UNIFIED_IDEOGRAPH-3233D> \xF0\xB2\x8C\xBD
+<CJK_UNIFIED_IDEOGRAPH-3233E> \xF0\xB2\x8C\xBE
+<CJK_UNIFIED_IDEOGRAPH-3233F> \xF0\xB2\x8C\xBF
+<CJK_UNIFIED_IDEOGRAPH-32340> \xF0\xB2\x8D\x80
+<CJK_UNIFIED_IDEOGRAPH-32341> \xF0\xB2\x8D\x81
+<CJK_UNIFIED_IDEOGRAPH-32342> \xF0\xB2\x8D\x82
+<CJK_UNIFIED_IDEOGRAPH-32343> \xF0\xB2\x8D\x83
+<CJK_UNIFIED_IDEOGRAPH-32344> \xF0\xB2\x8D\x84
+<CJK_UNIFIED_IDEOGRAPH-32345> \xF0\xB2\x8D\x85
+<CJK_UNIFIED_IDEOGRAPH-32346> \xF0\xB2\x8D\x86
+<CJK_UNIFIED_IDEOGRAPH-32347> \xF0\xB2\x8D\x87
+<CJK_UNIFIED_IDEOGRAPH-32348> \xF0\xB2\x8D\x88
+<CJK_UNIFIED_IDEOGRAPH-32349> \xF0\xB2\x8D\x89
+<CJK_UNIFIED_IDEOGRAPH-3234A> \xF0\xB2\x8D\x8A
+<CJK_UNIFIED_IDEOGRAPH-3234B> \xF0\xB2\x8D\x8B
+<CJK_UNIFIED_IDEOGRAPH-3234C> \xF0\xB2\x8D\x8C
+<CJK_UNIFIED_IDEOGRAPH-3234D> \xF0\xB2\x8D\x8D
+<CJK_UNIFIED_IDEOGRAPH-3234E> \xF0\xB2\x8D\x8E
+<CJK_UNIFIED_IDEOGRAPH-3234F> \xF0\xB2\x8D\x8F
+<CJK_UNIFIED_IDEOGRAPH-32350> \xF0\xB2\x8D\x90
+<CJK_UNIFIED_IDEOGRAPH-32351> \xF0\xB2\x8D\x91
+<CJK_UNIFIED_IDEOGRAPH-32352> \xF0\xB2\x8D\x92
+<CJK_UNIFIED_IDEOGRAPH-32353> \xF0\xB2\x8D\x93
+<CJK_UNIFIED_IDEOGRAPH-32354> \xF0\xB2\x8D\x94
+<CJK_UNIFIED_IDEOGRAPH-32355> \xF0\xB2\x8D\x95
+<CJK_UNIFIED_IDEOGRAPH-32356> \xF0\xB2\x8D\x96
+<CJK_UNIFIED_IDEOGRAPH-32357> \xF0\xB2\x8D\x97
+<CJK_UNIFIED_IDEOGRAPH-32358> \xF0\xB2\x8D\x98
+<CJK_UNIFIED_IDEOGRAPH-32359> \xF0\xB2\x8D\x99
+<CJK_UNIFIED_IDEOGRAPH-3235A> \xF0\xB2\x8D\x9A
+<CJK_UNIFIED_IDEOGRAPH-3235B> \xF0\xB2\x8D\x9B
+<CJK_UNIFIED_IDEOGRAPH-3235C> \xF0\xB2\x8D\x9C
+<CJK_UNIFIED_IDEOGRAPH-3235D> \xF0\xB2\x8D\x9D
+<CJK_UNIFIED_IDEOGRAPH-3235E> \xF0\xB2\x8D\x9E
+<CJK_UNIFIED_IDEOGRAPH-3235F> \xF0\xB2\x8D\x9F
+<CJK_UNIFIED_IDEOGRAPH-32360> \xF0\xB2\x8D\xA0
+<CJK_UNIFIED_IDEOGRAPH-32361> \xF0\xB2\x8D\xA1
+<CJK_UNIFIED_IDEOGRAPH-32362> \xF0\xB2\x8D\xA2
+<CJK_UNIFIED_IDEOGRAPH-32363> \xF0\xB2\x8D\xA3
+<CJK_UNIFIED_IDEOGRAPH-32364> \xF0\xB2\x8D\xA4
+<CJK_UNIFIED_IDEOGRAPH-32365> \xF0\xB2\x8D\xA5
+<CJK_UNIFIED_IDEOGRAPH-32366> \xF0\xB2\x8D\xA6
+<CJK_UNIFIED_IDEOGRAPH-32367> \xF0\xB2\x8D\xA7
+<CJK_UNIFIED_IDEOGRAPH-32368> \xF0\xB2\x8D\xA8
+<CJK_UNIFIED_IDEOGRAPH-32369> \xF0\xB2\x8D\xA9
+<CJK_UNIFIED_IDEOGRAPH-3236A> \xF0\xB2\x8D\xAA
+<CJK_UNIFIED_IDEOGRAPH-3236B> \xF0\xB2\x8D\xAB
+<CJK_UNIFIED_IDEOGRAPH-3236C> \xF0\xB2\x8D\xAC
+<CJK_UNIFIED_IDEOGRAPH-3236D> \xF0\xB2\x8D\xAD
+<CJK_UNIFIED_IDEOGRAPH-3236E> \xF0\xB2\x8D\xAE
+<CJK_UNIFIED_IDEOGRAPH-3236F> \xF0\xB2\x8D\xAF
+<CJK_UNIFIED_IDEOGRAPH-32370> \xF0\xB2\x8D\xB0
+<CJK_UNIFIED_IDEOGRAPH-32371> \xF0\xB2\x8D\xB1
+<CJK_UNIFIED_IDEOGRAPH-32372> \xF0\xB2\x8D\xB2
+<CJK_UNIFIED_IDEOGRAPH-32373> \xF0\xB2\x8D\xB3
+<CJK_UNIFIED_IDEOGRAPH-32374> \xF0\xB2\x8D\xB4
+<CJK_UNIFIED_IDEOGRAPH-32375> \xF0\xB2\x8D\xB5
+<CJK_UNIFIED_IDEOGRAPH-32376> \xF0\xB2\x8D\xB6
+<CJK_UNIFIED_IDEOGRAPH-32377> \xF0\xB2\x8D\xB7
+<CJK_UNIFIED_IDEOGRAPH-32378> \xF0\xB2\x8D\xB8
+<CJK_UNIFIED_IDEOGRAPH-32379> \xF0\xB2\x8D\xB9
+<CJK_UNIFIED_IDEOGRAPH-3237A> \xF0\xB2\x8D\xBA
+<CJK_UNIFIED_IDEOGRAPH-3237B> \xF0\xB2\x8D\xBB
+<CJK_UNIFIED_IDEOGRAPH-3237C> \xF0\xB2\x8D\xBC
+<CJK_UNIFIED_IDEOGRAPH-3237D> \xF0\xB2\x8D\xBD
+<CJK_UNIFIED_IDEOGRAPH-3237E> \xF0\xB2\x8D\xBE
+<CJK_UNIFIED_IDEOGRAPH-3237F> \xF0\xB2\x8D\xBF
+<CJK_UNIFIED_IDEOGRAPH-32380> \xF0\xB2\x8E\x80
+<CJK_UNIFIED_IDEOGRAPH-32381> \xF0\xB2\x8E\x81
+<CJK_UNIFIED_IDEOGRAPH-32382> \xF0\xB2\x8E\x82
+<CJK_UNIFIED_IDEOGRAPH-32383> \xF0\xB2\x8E\x83
+<CJK_UNIFIED_IDEOGRAPH-32384> \xF0\xB2\x8E\x84
+<CJK_UNIFIED_IDEOGRAPH-32385> \xF0\xB2\x8E\x85
+<CJK_UNIFIED_IDEOGRAPH-32386> \xF0\xB2\x8E\x86
+<CJK_UNIFIED_IDEOGRAPH-32387> \xF0\xB2\x8E\x87
+<CJK_UNIFIED_IDEOGRAPH-32388> \xF0\xB2\x8E\x88
+<CJK_UNIFIED_IDEOGRAPH-32389> \xF0\xB2\x8E\x89
+<CJK_UNIFIED_IDEOGRAPH-3238A> \xF0\xB2\x8E\x8A
+<CJK_UNIFIED_IDEOGRAPH-3238B> \xF0\xB2\x8E\x8B
+<CJK_UNIFIED_IDEOGRAPH-3238C> \xF0\xB2\x8E\x8C
+<CJK_UNIFIED_IDEOGRAPH-3238D> \xF0\xB2\x8E\x8D
+<CJK_UNIFIED_IDEOGRAPH-3238E> \xF0\xB2\x8E\x8E
+<CJK_UNIFIED_IDEOGRAPH-3238F> \xF0\xB2\x8E\x8F
+<CJK_UNIFIED_IDEOGRAPH-32390> \xF0\xB2\x8E\x90
+<CJK_UNIFIED_IDEOGRAPH-32391> \xF0\xB2\x8E\x91
+<CJK_UNIFIED_IDEOGRAPH-32392> \xF0\xB2\x8E\x92
+<CJK_UNIFIED_IDEOGRAPH-32393> \xF0\xB2\x8E\x93
+<CJK_UNIFIED_IDEOGRAPH-32394> \xF0\xB2\x8E\x94
+<CJK_UNIFIED_IDEOGRAPH-32395> \xF0\xB2\x8E\x95
+<CJK_UNIFIED_IDEOGRAPH-32396> \xF0\xB2\x8E\x96
+<CJK_UNIFIED_IDEOGRAPH-32397> \xF0\xB2\x8E\x97
+<CJK_UNIFIED_IDEOGRAPH-32398> \xF0\xB2\x8E\x98
+<CJK_UNIFIED_IDEOGRAPH-32399> \xF0\xB2\x8E\x99
+<CJK_UNIFIED_IDEOGRAPH-3239A> \xF0\xB2\x8E\x9A
+<CJK_UNIFIED_IDEOGRAPH-3239B> \xF0\xB2\x8E\x9B
+<CJK_UNIFIED_IDEOGRAPH-3239C> \xF0\xB2\x8E\x9C
+<CJK_UNIFIED_IDEOGRAPH-3239D> \xF0\xB2\x8E\x9D
+<CJK_UNIFIED_IDEOGRAPH-3239E> \xF0\xB2\x8E\x9E
+<CJK_UNIFIED_IDEOGRAPH-3239F> \xF0\xB2\x8E\x9F
+<CJK_UNIFIED_IDEOGRAPH-323A0> \xF0\xB2\x8E\xA0
+<CJK_UNIFIED_IDEOGRAPH-323A1> \xF0\xB2\x8E\xA1
+<CJK_UNIFIED_IDEOGRAPH-323A2> \xF0\xB2\x8E\xA2
+<CJK_UNIFIED_IDEOGRAPH-323A3> \xF0\xB2\x8E\xA3
+<CJK_UNIFIED_IDEOGRAPH-323A4> \xF0\xB2\x8E\xA4
+<CJK_UNIFIED_IDEOGRAPH-323A5> \xF0\xB2\x8E\xA5
+<CJK_UNIFIED_IDEOGRAPH-323A6> \xF0\xB2\x8E\xA6
+<CJK_UNIFIED_IDEOGRAPH-323A7> \xF0\xB2\x8E\xA7
+<CJK_UNIFIED_IDEOGRAPH-323A8> \xF0\xB2\x8E\xA8
+<CJK_UNIFIED_IDEOGRAPH-323A9> \xF0\xB2\x8E\xA9
+<CJK_UNIFIED_IDEOGRAPH-323AA> \xF0\xB2\x8E\xAA
+<CJK_UNIFIED_IDEOGRAPH-323AB> \xF0\xB2\x8E\xAB
+<CJK_UNIFIED_IDEOGRAPH-323AC> \xF0\xB2\x8E\xAC
+<CJK_UNIFIED_IDEOGRAPH-323AD> \xF0\xB2\x8E\xAD
+<CJK_UNIFIED_IDEOGRAPH-323AE> \xF0\xB2\x8E\xAE
+<CJK_UNIFIED_IDEOGRAPH-323AF> \xF0\xB2\x8E\xAF
<LANGUAGE_TAG> \xF3\xA0\x80\x81
<TAG_SPACE> \xF3\xA0\x80\xA0
<TAG_EXCLAMATION_MARK> \xF3\xA0\x80\xA1
diff --git a/tools/tools/locale/etc/final-maps/widths.txt b/tools/tools/locale/etc/final-maps/widths.txt
index 74c28ac58463..d8f0ab1888f0 100644
--- a/tools/tools/locale/etc/final-maps/widths.txt
+++ b/tools/tools/locale/etc/final-maps/widths.txt
@@ -1,6 +1,6 @@
# Warning: Do not edit. This file is automatically generated from the
# tools in /usr/src/tools/tools/locale. The data is obtained from the
-# utf8proc 2.5.0.
+# utf8proc 2.8.0.
# -----------------------------------------------------------------------------
WIDTH
<COMBINING_GRAVE_ACCENT> 0
@@ -307,6 +307,25 @@ WIDTH
<MANDAIC_AFFRICATION_MARK> 0
<MANDAIC_VOCALIZATION_MARK> 0
<MANDAIC_GEMINATION_MARK> 0
+<ARABIC_POUND_MARK_ABOVE> 0
+<ARABIC_PIASTRE_MARK_ABOVE> 0
+<ARABIC_SMALL_HIGH_WORD_AL-JUZ> 0
+<ARABIC_SMALL_LOW_WORD_ISHMAAM> 0
+<ARABIC_SMALL_LOW_WORD_IMAALA> 0
+<ARABIC_SMALL_LOW_WORD_TASHEEL> 0
+<ARABIC_MADDA_WAAJIB> 0
+<ARABIC_SUPERSCRIPT_ALEF_MOKHASSAS> 0
+<ARABIC_DOUBLED_MADDA> 0
+<ARABIC_HALF_MADDA_OVER_MADDA> 0
+<ARABIC_SMALL_HIGH_FARSI_YEH> 0
+<ARABIC_SMALL_HIGH_YEH_BARREE_WITH_TWO_DOTS_BELOW> 0
+<ARABIC_SMALL_HIGH_WORD_SAH> 0
+<ARABIC_SMALL_HIGH_ZAH> 0
+<ARABIC_LARGE_ROUND_DOT_ABOVE> 0
+<ARABIC_LARGE_ROUND_DOT_BELOW> 0
+<ARABIC_SUKUN_BELOW> 0
+<ARABIC_LARGE_CIRCLE_BELOW> 0
+<ARABIC_LARGE_ROUND_DOT_INSIDE_CIRCLE_BELOW> 0
<ARABIC_SMALL_LOW_WAW> 0
<ARABIC_SMALL_HIGH_WORD_AR-RUB> 0
<ARABIC_SMALL_HIGH_SAD> 0
@@ -466,6 +485,7 @@ WIDTH
<ORIYA_VOWEL_SIGN_O> 0
<ORIYA_VOWEL_SIGN_AU> 0
<ORIYA_SIGN_VIRAMA> 0
+<ORIYA_SIGN_OVERLINE> 0
<ORIYA_AI_LENGTH_MARK> 0
<ORIYA_AU_LENGTH_MARK> 0
<ORIYA_VOWEL_SIGN_VOCALIC_L> 0
@@ -489,6 +509,7 @@ WIDTH
<TELUGU_SIGN_ANUSVARA> 0
<TELUGU_SIGN_VISARGA> 0
<TELUGU_SIGN_COMBINING_ANUSVARA_ABOVE> 0
+<TELUGU_SIGN_NUKTA> 0
<TELUGU_VOWEL_SIGN_AA> 0
<TELUGU_VOWEL_SIGN_I> 0
<TELUGU_VOWEL_SIGN_II> 0
@@ -529,6 +550,7 @@ WIDTH
<KANNADA_AI_LENGTH_MARK> 0
<KANNADA_VOWEL_SIGN_VOCALIC_L> 0
<KANNADA_VOWEL_SIGN_VOCALIC_LL> 0
+<KANNADA_SIGN_COMBINING_ANUSVARA_ABOVE_RIGHT> 0
<MALAYALAM_SIGN_COMBINING_ANUSVARA_ABOVE> 0
<MALAYALAM_SIGN_CANDRABINDU> 0
<MALAYALAM_SIGN_ANUSVARA> 0
@@ -552,6 +574,7 @@ WIDTH
<MALAYALAM_AU_LENGTH_MARK> 0
<MALAYALAM_VOWEL_SIGN_VOCALIC_L> 0
<MALAYALAM_VOWEL_SIGN_VOCALIC_LL> 0
+<SINHALA_SIGN_CANDRABINDU> 0
<SINHALA_SIGN_ANUSVARAYA> 0
<SINHALA_SIGN_VISARGAYA> 0
<SINHALA_SIGN_AL-LAKUNA> 0
@@ -604,6 +627,7 @@ WIDTH
<LAO_TONE_MAI_CATAWA> 0
<LAO_CANCELLATION_MARK> 0
<LAO_NIGGAHITA> 0
+<LAO_YAMAKKAN> 0
<TIBETAN_ASTROLOGICAL_SIGN_-KHYUD_PA> 0
<TIBETAN_ASTROLOGICAL_SIGN_SDONG_TSHUGS> 0
<TIBETAN_MARK_NGAS_BZUNG_NYI_ZLA> 0
@@ -841,6 +865,7 @@ WIDTH
<TAGALOG_VOWEL_SIGN_I> 0
<TAGALOG_VOWEL_SIGN_U> 0
<TAGALOG_SIGN_VIRAMA> 0
+<TAGALOG_SIGN_PAMUDPOD> 0
<HANUNOO_VOWEL_SIGN_I> 0
<HANUNOO_VOWEL_SIGN_U> 0
<HANUNOO_SIGN_PAMUDPOD> 0
@@ -885,6 +910,7 @@ WIDTH
<MONGOLIAN_FREE_VARIATION_SELECTOR_TWO> 0
<MONGOLIAN_FREE_VARIATION_SELECTOR_THREE> 0
<MONGOLIAN_VOWEL_SEPARATOR> 0
+<MONGOLIAN_FREE_VARIATION_SELECTOR_FOUR> 0
<MONGOLIAN_LETTER_ALI_GALI_BALUDA> 0
<MONGOLIAN_LETTER_ALI_GALI_THREE_BALUDA> 0
<MONGOLIAN_LETTER_ALI_GALI_DAGALGA> 0
@@ -972,6 +998,22 @@ WIDTH
<COMBINING_DOUBLE_PARENTHESES_ABOVE> 0
<COMBINING_PARENTHESES_BELOW> 0
<COMBINING_PARENTHESES_OVERLAY> 0
+<COMBINING_LATIN_SMALL_LETTER_W_BELOW> 0
+<COMBINING_LATIN_SMALL_LETTER_TURNED_W_BELOW> 0
+<COMBINING_LEFT_PARENTHESIS_ABOVE_LEFT> 0
+<COMBINING_RIGHT_PARENTHESIS_ABOVE_RIGHT> 0
+<COMBINING_LEFT_PARENTHESIS_BELOW_LEFT> 0
+<COMBINING_RIGHT_PARENTHESIS_BELOW_RIGHT> 0
+<COMBINING_SQUARE_BRACKETS_ABOVE> 0
+<COMBINING_NUMBER_SIGN_ABOVE> 0
+<COMBINING_INVERTED_DOUBLE_ARCH_ABOVE> 0
+<COMBINING_PLUS_SIGN_ABOVE> 0
+<COMBINING_DOUBLE_PLUS_SIGN_ABOVE> 0
+<COMBINING_DOUBLE_PLUS_SIGN_BELOW> 0
+<COMBINING_TRIPLE_ACUTE_ACCENT> 0
+<COMBINING_LATIN_SMALL_LETTER_INSULAR_G> 0
+<COMBINING_LATIN_SMALL_LETTER_INSULAR_R> 0
+<COMBINING_LATIN_SMALL_LETTER_INSULAR_T> 0
<BALINESE_SIGN_ULU_RICEM> 0
<BALINESE_SIGN_ULU_CANDRA> 0
<BALINESE_SIGN_CECEK> 0
@@ -1140,6 +1182,7 @@ WIDTH
<COMBINING_KAVYKA_ABOVE_LEFT> 0
<COMBINING_DOT_ABOVE_LEFT> 0
<COMBINING_WIDE_INVERTED_BRIDGE_BELOW> 0
+<COMBINING_DOT_BELOW_LEFT> 0
<COMBINING_DELETION_MARK> 0
<COMBINING_DOUBLE_INVERTED_BREVE_BELOW> 0
<COMBINING_ALMOST_EQUAL_TO_BELOW> 0
@@ -2076,6 +2119,11 @@ WIDTH
<BOPOMOFO_LETTER_GH> 2
<BOPOMOFO_LETTER_LH> 2
<BOPOMOFO_LETTER_ZY> 2
+<BOPOMOFO_FINAL_LETTER_G> 2
+<BOPOMOFO_LETTER_GW> 2
+<BOPOMOFO_LETTER_KW> 2
+<BOPOMOFO_LETTER_OE> 2
+<BOPOMOFO_LETTER_AH> 2
<CJK_STROKE_T> 2
<CJK_STROKE_WG> 2
<CJK_STROKE_XG> 2
@@ -2374,6 +2422,7 @@ WIDTH
<CIRCLED_KATAKANA_WI> 2
<CIRCLED_KATAKANA_WE> 2
<CIRCLED_KATAKANA_WO> 2
+<SQUARE_ERA_NAME_REIWA> 2
<SQUARE_APAATO> 2
<SQUARE_ARUHUA> 2
<SQUARE_ANPEA> 2
@@ -9212,6 +9261,16 @@ WIDTH
<CJK_UNIFIED_IDEOGRAPH-4DB3> 2
<CJK_UNIFIED_IDEOGRAPH-4DB4> 2
<CJK_UNIFIED_IDEOGRAPH-4DB5> 2
+<CJK_UNIFIED_IDEOGRAPH-4DB6> 2
+<CJK_UNIFIED_IDEOGRAPH-4DB7> 2
+<CJK_UNIFIED_IDEOGRAPH-4DB8> 2
+<CJK_UNIFIED_IDEOGRAPH-4DB9> 2
+<CJK_UNIFIED_IDEOGRAPH-4DBA> 2
+<CJK_UNIFIED_IDEOGRAPH-4DBB> 2
+<CJK_UNIFIED_IDEOGRAPH-4DBC> 2
+<CJK_UNIFIED_IDEOGRAPH-4DBD> 2
+<CJK_UNIFIED_IDEOGRAPH-4DBE> 2
+<CJK_UNIFIED_IDEOGRAPH-4DBF> 2
<CJK_UNIFIED_IDEOGRAPH-4E00> 2
<CJK_UNIFIED_IDEOGRAPH-4E01> 2
<CJK_UNIFIED_IDEOGRAPH-4E02> 2
@@ -30188,6 +30247,22 @@ WIDTH
<CJK_UNIFIED_IDEOGRAPH-9FED> 2
<CJK_UNIFIED_IDEOGRAPH-9FEE> 2
<CJK_UNIFIED_IDEOGRAPH-9FEF> 2
+<CJK_UNIFIED_IDEOGRAPH-9FF0> 2
+<CJK_UNIFIED_IDEOGRAPH-9FF1> 2
+<CJK_UNIFIED_IDEOGRAPH-9FF2> 2
+<CJK_UNIFIED_IDEOGRAPH-9FF3> 2
+<CJK_UNIFIED_IDEOGRAPH-9FF4> 2
+<CJK_UNIFIED_IDEOGRAPH-9FF5> 2
+<CJK_UNIFIED_IDEOGRAPH-9FF6> 2
+<CJK_UNIFIED_IDEOGRAPH-9FF7> 2
+<CJK_UNIFIED_IDEOGRAPH-9FF8> 2
+<CJK_UNIFIED_IDEOGRAPH-9FF9> 2
+<CJK_UNIFIED_IDEOGRAPH-9FFA> 2
+<CJK_UNIFIED_IDEOGRAPH-9FFB> 2
+<CJK_UNIFIED_IDEOGRAPH-9FFC> 2
+<CJK_UNIFIED_IDEOGRAPH-9FFD> 2
+<CJK_UNIFIED_IDEOGRAPH-9FFE> 2
+<CJK_UNIFIED_IDEOGRAPH-9FFF> 2
<YI_SYLLABLE_IT> 2
<YI_SYLLABLE_IX> 2
<YI_SYLLABLE_I> 2
@@ -31434,6 +31509,7 @@ WIDTH
<SYLOTI_NAGRI_VOWEL_SIGN_U> 0
<SYLOTI_NAGRI_VOWEL_SIGN_E> 0
<SYLOTI_NAGRI_VOWEL_SIGN_OO> 0
+<SYLOTI_NAGRI_SIGN_ALTERNATE_HASANTA> 0
<SAURASHTRA_SIGN_ANUSVARA> 0
<SAURASHTRA_SIGN_VISARGA> 0
<SAURASHTRA_CONSONANT_SIGN_HAARU> 0
@@ -43465,6 +43541,11 @@ WIDTH
<HANIFI_ROHINGYA_SIGN_TAHALA> 0
<HANIFI_ROHINGYA_SIGN_TANA> 0
<HANIFI_ROHINGYA_SIGN_TASSI> 0
+<YEZIDI_COMBINING_HAMZA_MARK> 0
+<YEZIDI_COMBINING_MADDA_MARK> 0
+<ARABIC_SMALL_LOW_WORD_SAKTA> 0
+<ARABIC_SMALL_LOW_WORD_QASR> 0
+<ARABIC_SMALL_LOW_WORD_MADDA> 0
<SOGDIAN_COMBINING_DOT_BELOW> 0
<SOGDIAN_COMBINING_TWO_DOTS_BELOW> 0
<SOGDIAN_COMBINING_DOT_ABOVE> 0
@@ -43476,6 +43557,10 @@ WIDTH
<SOGDIAN_COMBINING_LONG_HOOK_BELOW> 0
<SOGDIAN_COMBINING_RESH_BELOW> 0
<SOGDIAN_COMBINING_STROKE_BELOW> 0
+<OLD_UYGHUR_COMBINING_DOT_ABOVE> 0
+<OLD_UYGHUR_COMBINING_DOT_BELOW> 0
+<OLD_UYGHUR_COMBINING_TWO_DOTS_ABOVE> 0
+<OLD_UYGHUR_COMBINING_TWO_DOTS_BELOW> 0
<BRAHMI_SIGN_CANDRABINDU> 0
<BRAHMI_SIGN_ANUSVARA> 0
<BRAHMI_SIGN_VISARGA> 0
@@ -43494,6 +43579,9 @@ WIDTH
<BRAHMI_VOWEL_SIGN_O> 0
<BRAHMI_VOWEL_SIGN_AU> 0
<BRAHMI_VIRAMA> 0
+<BRAHMI_SIGN_OLD_TAMIL_VIRAMA> 0
+<BRAHMI_VOWEL_SIGN_OLD_TAMIL_SHORT_E> 0
+<BRAHMI_VOWEL_SIGN_OLD_TAMIL_SHORT_O> 0
<BRAHMI_NUMBER_JOINER> 0
<KAITHI_SIGN_CANDRABINDU> 0
<KAITHI_SIGN_ANUSVARA> 0
@@ -43510,6 +43598,7 @@ WIDTH
<KAITHI_SIGN_VIRAMA> 0
<KAITHI_SIGN_NUKTA> 0
<KAITHI_NUMBER_SIGN> 0
+<KAITHI_VOWEL_SIGN_VOCALIC_R> 0
<KAITHI_NUMBER_SIGN_ABOVE> 0
<CHAKMA_SIGN_CANDRABINDU> 0
<CHAKMA_SIGN_ANUSVARA> 0
@@ -43552,6 +43641,8 @@ WIDTH
<SHARADA_SIGN_NUKTA> 0
<SHARADA_VOWEL_MODIFIER_MARK> 0
<SHARADA_EXTRA_SHORT_VOWEL_MARK> 0
+<SHARADA_VOWEL_SIGN_PRISHTHAMATRA_E> 0
+<SHARADA_SIGN_INVERTED_CANDRABINDU> 0
<KHOJKI_VOWEL_SIGN_AA> 0
<KHOJKI_VOWEL_SIGN_I> 0
<KHOJKI_VOWEL_SIGN_II> 0
@@ -43565,6 +43656,7 @@ WIDTH
<KHOJKI_SIGN_NUKTA> 0
<KHOJKI_SIGN_SHADDA> 0
<KHOJKI_SIGN_SUKUN> 0
+<KHOJKI_VOWEL_SIGN_VOCALIC_R> 0
<KHUDAWADI_SIGN_ANUSVARA> 0
<KHUDAWADI_VOWEL_SIGN_AA> 0
<KHUDAWADI_VOWEL_SIGN_I> 0
@@ -43727,6 +43819,21 @@ WIDTH
<DOGRA_SIGN_VISARGA> 0
<DOGRA_SIGN_VIRAMA> 0
<DOGRA_SIGN_NUKTA> 0
+<DIVES_AKURU_VOWEL_SIGN_AA> 0
+<DIVES_AKURU_VOWEL_SIGN_I> 0
+<DIVES_AKURU_VOWEL_SIGN_II> 0
+<DIVES_AKURU_VOWEL_SIGN_U> 0
+<DIVES_AKURU_VOWEL_SIGN_UU> 0
+<DIVES_AKURU_VOWEL_SIGN_E> 0
+<DIVES_AKURU_VOWEL_SIGN_AI> 0
+<DIVES_AKURU_VOWEL_SIGN_O> 0
+<DIVES_AKURU_SIGN_ANUSVARA> 0
+<DIVES_AKURU_SIGN_CANDRABINDU> 0
+<DIVES_AKURU_SIGN_HALANTA> 0
+<DIVES_AKURU_VIRAMA> 0
+<DIVES_AKURU_MEDIAL_YA> 0
+<DIVES_AKURU_MEDIAL_RA> 0
+<DIVES_AKURU_SIGN_NUKTA> 0
<NANDINAGARI_VOWEL_SIGN_AA> 0
<NANDINAGARI_VOWEL_SIGN_I> 0
<NANDINAGARI_VOWEL_SIGN_II> 0
@@ -43876,6 +43983,21 @@ WIDTH
<MAKASAR_VOWEL_SIGN_U> 0
<MAKASAR_VOWEL_SIGN_E> 0
<MAKASAR_VOWEL_SIGN_O> 0
+<KAWI_SIGN_CANDRABINDU> 0
+<KAWI_SIGN_ANUSVARA> 0
+<KAWI_SIGN_VISARGA> 0
+<KAWI_VOWEL_SIGN_AA> 0
+<KAWI_VOWEL_SIGN_ALTERNATE_AA> 0
+<KAWI_VOWEL_SIGN_I> 0
+<KAWI_VOWEL_SIGN_II> 0
+<KAWI_VOWEL_SIGN_U> 0
+<KAWI_VOWEL_SIGN_UU> 0
+<KAWI_VOWEL_SIGN_VOCALIC_R> 0
+<KAWI_VOWEL_SIGN_E> 0
+<KAWI_VOWEL_SIGN_AI> 0
+<KAWI_VOWEL_SIGN_EU> 0
+<KAWI_SIGN_KILLER> 0
+<KAWI_CONJOINER> 0
<EGYPTIAN_HIEROGLYPH_VERTICAL_JOINER> 0
<EGYPTIAN_HIEROGLYPH_HORIZONTAL_JOINER> 0
<EGYPTIAN_HIEROGLYPH_INSERT_AT_TOP_START> 0
@@ -43885,6 +44007,29 @@ WIDTH
<EGYPTIAN_HIEROGLYPH_OVERLAY_MIDDLE> 0
<EGYPTIAN_HIEROGLYPH_BEGIN_SEGMENT> 0
<EGYPTIAN_HIEROGLYPH_END_SEGMENT> 0
+<EGYPTIAN_HIEROGLYPH_INSERT_AT_MIDDLE> 0
+<EGYPTIAN_HIEROGLYPH_INSERT_AT_TOP> 0
+<EGYPTIAN_HIEROGLYPH_INSERT_AT_BOTTOM> 0
+<EGYPTIAN_HIEROGLYPH_BEGIN_ENCLOSURE> 0
+<EGYPTIAN_HIEROGLYPH_END_ENCLOSURE> 0
+<EGYPTIAN_HIEROGLYPH_BEGIN_WALLED_ENCLOSURE> 0
+<EGYPTIAN_HIEROGLYPH_END_WALLED_ENCLOSURE> 0
+<EGYPTIAN_HIEROGLYPH_MIRROR_HORIZONTALLY> 0
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_TOP_START> 0
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_BOTTOM_START> 0
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_START> 0
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_TOP_END> 0
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_TOP> 0
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_BOTTOM_START_AND_TOP_END> 0
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_START_AND_TOP> 0
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_BOTTOM_END> 0
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_TOP_START_AND_BOTTOM_END> 0
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_BOTTOM> 0
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_START_AND_BOTTOM> 0
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_END> 0
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_TOP_AND_END> 0
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED_AT_BOTTOM_AND_END> 0
+<EGYPTIAN_HIEROGLYPH_MODIFIER_DAMAGED> 0
<BASSA_VAH_COMBINING_HIGH_TONE> 0
<BASSA_VAH_COMBINING_LOW_TONE> 0
<BASSA_VAH_COMBINING_MID_TONE> 0
@@ -43961,6 +44106,9 @@ WIDTH
<NUSHU_ITERATION_MARK> 2
<OLD_CHINESE_HOOK_MARK> 2
<OLD_CHINESE_ITERATION_MARK> 2
+<KHITAN_SMALL_SCRIPT_FILLER> 0
+<VIETNAMESE_ALTERNATE_READING_MARK_CA> 2
+<VIETNAMESE_ALTERNATE_READING_MARK_NHAY> 2
<TANGUT_IDEOGRAPH-17000> 2
<TANGUT_IDEOGRAPH-17001> 2
<TANGUT_IDEOGRAPH-17002> 2
@@ -50852,6 +51000,511 @@ WIDTH
<TANGUT_COMPONENT-753> 2
<TANGUT_COMPONENT-754> 2
<TANGUT_COMPONENT-755> 2
+<TANGUT_COMPONENT-756> 2
+<TANGUT_COMPONENT-757> 2
+<TANGUT_COMPONENT-758> 2
+<TANGUT_COMPONENT-759> 2
+<TANGUT_COMPONENT-760> 2
+<TANGUT_COMPONENT-761> 2
+<TANGUT_COMPONENT-762> 2
+<TANGUT_COMPONENT-763> 2
+<TANGUT_COMPONENT-764> 2
+<TANGUT_COMPONENT-765> 2
+<TANGUT_COMPONENT-766> 2
+<TANGUT_COMPONENT-767> 2
+<TANGUT_COMPONENT-768> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B00> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B01> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B02> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B03> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B04> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B05> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B06> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B07> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B08> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B09> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B0A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B0B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B0C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B0D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B0E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B0F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B10> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B11> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B12> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B13> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B14> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B15> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B16> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B17> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B18> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B19> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B1A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B1B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B1C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B1D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B1E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B1F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B20> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B21> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B22> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B23> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B24> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B25> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B26> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B27> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B28> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B29> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B2A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B2B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B2C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B2D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B2E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B2F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B30> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B31> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B32> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B33> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B34> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B35> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B36> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B37> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B38> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B39> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B3A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B3B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B3C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B3D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B3E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B3F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B40> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B41> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B42> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B43> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B44> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B45> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B46> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B47> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B48> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B49> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B4A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B4B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B4C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B4D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B4E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B4F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B50> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B51> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B52> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B53> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B54> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B55> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B56> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B57> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B58> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B59> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B5A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B5B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B5C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B5D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B5E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B5F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B60> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B61> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B62> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B63> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B64> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B65> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B66> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B67> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B68> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B69> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B6A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B6B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B6C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B6D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B6E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B6F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B70> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B71> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B72> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B73> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B74> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B75> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B76> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B77> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B78> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B79> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B7A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B7B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B7C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B7D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B7E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B7F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B80> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B81> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B82> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B83> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B84> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B85> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B86> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B87> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B88> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B89> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B8A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B8B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B8C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B8D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B8E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B8F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B90> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B91> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B92> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B93> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B94> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B95> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B96> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B97> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B98> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B99> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B9A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B9B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B9C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B9D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B9E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18B9F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BA0> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BA1> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BA2> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BA3> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BA4> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BA5> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BA6> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BA7> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BA8> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BA9> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BAA> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BAB> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BAC> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BAD> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BAE> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BAF> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BB0> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BB1> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BB2> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BB3> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BB4> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BB5> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BB6> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BB7> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BB8> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BB9> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BBA> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BBB> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BBC> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BBD> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BBE> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BBF> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BC0> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BC1> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BC2> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BC3> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BC4> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BC5> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BC6> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BC7> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BC8> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BC9> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BCA> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BCB> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BCC> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BCD> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BCE> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BCF> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BD0> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BD1> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BD2> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BD3> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BD4> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BD5> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BD6> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BD7> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BD8> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BD9> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BDA> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BDB> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BDC> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BDD> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BDE> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BDF> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BE0> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BE1> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BE2> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BE3> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BE4> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BE5> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BE6> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BE7> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BE8> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BE9> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BEA> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BEB> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BEC> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BED> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BEE> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BEF> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BF0> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BF1> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BF2> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BF3> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BF4> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BF5> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BF6> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BF7> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BF8> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BF9> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BFA> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BFB> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BFC> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BFD> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BFE> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18BFF> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C00> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C01> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C02> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C03> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C04> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C05> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C06> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C07> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C08> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C09> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C0A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C0B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C0C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C0D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C0E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C0F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C10> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C11> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C12> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C13> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C14> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C15> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C16> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C17> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C18> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C19> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C1A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C1B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C1C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C1D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C1E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C1F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C20> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C21> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C22> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C23> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C24> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C25> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C26> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C27> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C28> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C29> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C2A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C2B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C2C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C2D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C2E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C2F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C30> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C31> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C32> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C33> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C34> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C35> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C36> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C37> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C38> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C39> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C3A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C3B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C3C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C3D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C3E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C3F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C40> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C41> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C42> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C43> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C44> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C45> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C46> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C47> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C48> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C49> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C4A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C4B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C4C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C4D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C4E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C4F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C50> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C51> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C52> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C53> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C54> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C55> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C56> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C57> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C58> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C59> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C5A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C5B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C5C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C5D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C5E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C5F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C60> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C61> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C62> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C63> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C64> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C65> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C66> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C67> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C68> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C69> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C6A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C6B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C6C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C6D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C6E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C6F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C70> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C71> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C72> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C73> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C74> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C75> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C76> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C77> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C78> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C79> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C7A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C7B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C7C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C7D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C7E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C7F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C80> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C81> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C82> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C83> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C84> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C85> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C86> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C87> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C88> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C89> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C8A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C8B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C8C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C8D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C8E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C8F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C90> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C91> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C92> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C93> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C94> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C95> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C96> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C97> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C98> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C99> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C9A> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C9B> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C9C> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C9D> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C9E> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18C9F> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CA0> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CA1> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CA2> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CA3> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CA4> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CA5> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CA6> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CA7> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CA8> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CA9> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CAA> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CAB> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CAC> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CAD> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CAE> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CAF> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CB0> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CB1> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CB2> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CB3> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CB4> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CB5> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CB6> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CB7> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CB8> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CB9> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CBA> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CBB> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CBC> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CBD> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CBE> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CBF> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CC0> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CC1> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CC2> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CC3> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CC4> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CC5> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CC6> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CC7> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CC8> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CC9> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CCA> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CCB> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CCC> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CCD> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CCE> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CCF> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CD0> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CD1> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CD2> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CD3> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CD4> 2
+<KHITAN_SMALL_SCRIPT_CHARACTER-18CD5> 2
+<TANGUT_IDEOGRAPH-18D00> 2
+<TANGUT_IDEOGRAPH-18D01> 2
+<TANGUT_IDEOGRAPH-18D02> 2
+<TANGUT_IDEOGRAPH-18D03> 2
+<TANGUT_IDEOGRAPH-18D04> 2
+<TANGUT_IDEOGRAPH-18D05> 2
+<TANGUT_IDEOGRAPH-18D06> 2
+<TANGUT_IDEOGRAPH-18D07> 2
+<TANGUT_IDEOGRAPH-18D08> 2
+<KATAKANA_LETTER_MINNAN_TONE-2> 2
+<KATAKANA_LETTER_MINNAN_TONE-3> 2
+<KATAKANA_LETTER_MINNAN_TONE-4> 2
+<KATAKANA_LETTER_MINNAN_TONE-5> 2
+<KATAKANA_LETTER_MINNAN_TONE-7> 2
+<KATAKANA_LETTER_MINNAN_TONE-8> 2
+<KATAKANA_LETTER_MINNAN_NASALIZED_TONE-1> 2
+<KATAKANA_LETTER_MINNAN_NASALIZED_TONE-2> 2
+<KATAKANA_LETTER_MINNAN_NASALIZED_TONE-3> 2
+<KATAKANA_LETTER_MINNAN_NASALIZED_TONE-4> 2
+<KATAKANA_LETTER_MINNAN_NASALIZED_TONE-5> 2
+<KATAKANA_LETTER_MINNAN_NASALIZED_TONE-7> 2
+<KATAKANA_LETTER_MINNAN_NASALIZED_TONE-8> 2
<KATAKANA_LETTER_ARCHAIC_E> 2
<HIRAGANA_LETTER_ARCHAIC_YE> 2
<HENTAIGANA_LETTER_A-1> 2
@@ -51139,9 +51792,15 @@ WIDTH
<HENTAIGANA_LETTER_WO-7> 2
<HENTAIGANA_LETTER_N-MU-MO-1> 2
<HENTAIGANA_LETTER_N-MU-MO-2> 2
+<HIRAGANA_LETTER_ARCHAIC_WU> 2
+<KATAKANA_LETTER_ARCHAIC_YI> 2
+<KATAKANA_LETTER_ARCHAIC_YE> 2
+<KATAKANA_LETTER_ARCHAIC_WU> 2
+<HIRAGANA_LETTER_SMALL_KO> 2
<HIRAGANA_LETTER_SMALL_WI> 2
<HIRAGANA_LETTER_SMALL_WE> 2
<HIRAGANA_LETTER_SMALL_WO> 2
+<KATAKANA_LETTER_SMALL_KO> 2
<KATAKANA_LETTER_SMALL_WI> 2
<KATAKANA_LETTER_SMALL_WE> 2
<KATAKANA_LETTER_SMALL_WO> 2
@@ -51548,6 +52207,75 @@ WIDTH
<SHORTHAND_FORMAT_CONTINUING_OVERLAP> 0
<SHORTHAND_FORMAT_DOWN_STEP> 0
<SHORTHAND_FORMAT_UP_STEP> 0
+<ZNAMENNY_COMBINING_MARK_GORAZDO_NIZKO_S_KRYZHEM_ON_LEFT> 0
+<ZNAMENNY_COMBINING_MARK_NIZKO_S_KRYZHEM_ON_LEFT> 0
+<ZNAMENNY_COMBINING_MARK_TSATA_ON_LEFT> 0
+<ZNAMENNY_COMBINING_MARK_GORAZDO_NIZKO_ON_LEFT> 0
+<ZNAMENNY_COMBINING_MARK_NIZKO_ON_LEFT> 0
+<ZNAMENNY_COMBINING_MARK_SREDNE_ON_LEFT> 0
+<ZNAMENNY_COMBINING_MARK_MALO_POVYSHE_ON_LEFT> 0
+<ZNAMENNY_COMBINING_MARK_POVYSHE_ON_LEFT> 0
+<ZNAMENNY_COMBINING_MARK_VYSOKO_ON_LEFT> 0
+<ZNAMENNY_COMBINING_MARK_MALO_POVYSHE_S_KHOKHLOM_ON_LEFT> 0
+<ZNAMENNY_COMBINING_MARK_POVYSHE_S_KHOKHLOM_ON_LEFT> 0
+<ZNAMENNY_COMBINING_MARK_VYSOKO_S_KHOKHLOM_ON_LEFT> 0
+<ZNAMENNY_COMBINING_MARK_GORAZDO_NIZKO_S_KRYZHEM_ON_RIGHT> 0
+<ZNAMENNY_COMBINING_MARK_NIZKO_S_KRYZHEM_ON_RIGHT> 0
+<ZNAMENNY_COMBINING_MARK_TSATA_ON_RIGHT> 0
+<ZNAMENNY_COMBINING_MARK_GORAZDO_NIZKO_ON_RIGHT> 0
+<ZNAMENNY_COMBINING_MARK_NIZKO_ON_RIGHT> 0
+<ZNAMENNY_COMBINING_MARK_SREDNE_ON_RIGHT> 0
+<ZNAMENNY_COMBINING_MARK_MALO_POVYSHE_ON_RIGHT> 0
+<ZNAMENNY_COMBINING_MARK_POVYSHE_ON_RIGHT> 0
+<ZNAMENNY_COMBINING_MARK_VYSOKO_ON_RIGHT> 0
+<ZNAMENNY_COMBINING_MARK_MALO_POVYSHE_S_KHOKHLOM_ON_RIGHT> 0
+<ZNAMENNY_COMBINING_MARK_POVYSHE_S_KHOKHLOM_ON_RIGHT> 0
+<ZNAMENNY_COMBINING_MARK_VYSOKO_S_KHOKHLOM_ON_RIGHT> 0
+<ZNAMENNY_COMBINING_MARK_TSATA_S_KRYZHEM> 0
+<ZNAMENNY_COMBINING_MARK_MALO_POVYSHE_S_KRYZHEM> 0
+<ZNAMENNY_COMBINING_MARK_STRANNO_MALO_POVYSHE> 0
+<ZNAMENNY_COMBINING_MARK_POVYSHE_S_KRYZHEM> 0
+<ZNAMENNY_COMBINING_MARK_POVYSHE_STRANNO> 0
+<ZNAMENNY_COMBINING_MARK_VYSOKO_S_KRYZHEM> 0
+<ZNAMENNY_COMBINING_MARK_MALO_POVYSHE_STRANNO> 0
+<ZNAMENNY_COMBINING_MARK_GORAZDO_VYSOKO> 0
+<ZNAMENNY_COMBINING_MARK_ZELO> 0
+<ZNAMENNY_COMBINING_MARK_ON> 0
+<ZNAMENNY_COMBINING_MARK_RAVNO> 0
+<ZNAMENNY_COMBINING_MARK_TIKHAYA> 0
+<ZNAMENNY_COMBINING_MARK_BORZAYA> 0
+<ZNAMENNY_COMBINING_MARK_UDARKA> 0
+<ZNAMENNY_COMBINING_MARK_PODVERTKA> 0
+<ZNAMENNY_COMBINING_MARK_LOMKA> 0
+<ZNAMENNY_COMBINING_MARK_KUPNAYA> 0
+<ZNAMENNY_COMBINING_MARK_KACHKA> 0
+<ZNAMENNY_COMBINING_MARK_ZEVOK> 0
+<ZNAMENNY_COMBINING_MARK_SKOBA> 0
+<ZNAMENNY_COMBINING_MARK_RAZSEKA> 0
+<ZNAMENNY_COMBINING_MARK_KRYZH_ON_LEFT> 0
+<ZNAMENNY_COMBINING_TONAL_RANGE_MARK_MRACHNO> 0
+<ZNAMENNY_COMBINING_TONAL_RANGE_MARK_SVETLO> 0
+<ZNAMENNY_COMBINING_TONAL_RANGE_MARK_TRESVETLO> 0
+<ZNAMENNY_COMBINING_MARK_ZADERZHKA> 0
+<ZNAMENNY_COMBINING_MARK_DEMESTVENNY_ZADERZHKA> 0
+<ZNAMENNY_COMBINING_MARK_OTSECHKA> 0
+<ZNAMENNY_COMBINING_MARK_PODCHASHIE> 0
+<ZNAMENNY_COMBINING_MARK_PODCHASHIE_WITH_VERTICAL_STROKE> 0
+<ZNAMENNY_COMBINING_MARK_CHASHKA> 0
+<ZNAMENNY_COMBINING_MARK_CHASHKA_POLNAYA> 0
+<ZNAMENNY_COMBINING_MARK_OBLACHKO> 0
+<ZNAMENNY_COMBINING_MARK_SOROCHYA_NOZHKA> 0
+<ZNAMENNY_COMBINING_MARK_TOCHKA> 0
+<ZNAMENNY_COMBINING_MARK_DVOETOCHIE> 0
+<ZNAMENNY_COMBINING_ATTACHING_VERTICAL_OMET> 0
+<ZNAMENNY_COMBINING_MARK_CURVED_OMET> 0
+<ZNAMENNY_COMBINING_MARK_KRYZH> 0
+<ZNAMENNY_COMBINING_LOWER_TONAL_RANGE_INDICATOR> 0
+<ZNAMENNY_PRIZNAK_MODIFIER_LEVEL-2> 0
+<ZNAMENNY_PRIZNAK_MODIFIER_LEVEL-3> 0
+<ZNAMENNY_PRIZNAK_MODIFIER_DIRECTION_FLIP> 0
+<ZNAMENNY_PRIZNAK_MODIFIER_KRYZH> 0
+<ZNAMENNY_PRIZNAK_MODIFIER_ROG> 0
<MUSICAL_SYMBOL_COMBINING_STEM> 0
<MUSICAL_SYMBOL_COMBINING_SPRECHGESANG_STEM> 0
<MUSICAL_SYMBOL_COMBINING_TREMOLO-1> 0
@@ -51754,6 +52482,7 @@ WIDTH
<COMBINING_GLAGOLITIC_LETTER_BIG_YUS> 0
<COMBINING_GLAGOLITIC_LETTER_IOTATED_BIG_YUS> 0
<COMBINING_GLAGOLITIC_LETTER_FITA> 0
+<COMBINING_CYRILLIC_SMALL_LETTER_BYELORUSSIAN-UKRAINIAN_I> 0
<NYIAKENG_PUACHUE_HMONG_TONE-B> 0
<NYIAKENG_PUACHUE_HMONG_TONE-M> 0
<NYIAKENG_PUACHUE_HMONG_TONE-J> 0
@@ -51761,10 +52490,15 @@ WIDTH
<NYIAKENG_PUACHUE_HMONG_TONE-S> 0
<NYIAKENG_PUACHUE_HMONG_TONE-G> 0
<NYIAKENG_PUACHUE_HMONG_TONE-D> 0
+<TOTO_SIGN_RISING_TONE> 0
<WANCHO_TONE_TUP> 0
<WANCHO_TONE_TUPNI> 0
<WANCHO_TONE_KOI> 0
<WANCHO_TONE_KOINI> 0
+<NAG_MUNDARI_SIGN_MUHOR> 0
+<NAG_MUNDARI_SIGN_TOYOR> 0
+<NAG_MUNDARI_SIGN_IKIR> 0
+<NAG_MUNDARI_SIGN_SUTUH> 0
<MENDE_KIKAKUI_COMBINING_NUMBER_TEENS> 0
<MENDE_KIKAKUI_COMBINING_NUMBER_TENS> 0
<MENDE_KIKAKUI_COMBINING_NUMBER_HUNDREDS> 0
@@ -52570,6 +53304,12 @@ WIDTH
<OCTAGONAL_SIGN> 2
<SHOPPING_TROLLEY> 2
<HINDU_TEMPLE> 2
+<HUT> 2
+<ELEVATOR> 2
+<WIRELESS> 2
+<PLAYGROUND_SLIDE> 2
+<WHEEL> 2
+<RING_BUOY> 2
<AIRPLANE_DEPARTURE> 2
<AIRPLANE_ARRIVING> 2
<SCOOTER> 2
@@ -52579,6 +53319,8 @@ WIDTH
<FLYING_SAUCER> 2
<SKATEBOARD> 2
<AUTO_RICKSHAW> 2
+<PICKUP_TRUCK> 2
+<ROLLER_SKATE> 2
<LARGE_ORANGE_CIRCLE> 2
<LARGE_YELLOW_CIRCLE> 2
<LARGE_GREEN_CIRCLE> 2
@@ -52591,6 +53333,8 @@ WIDTH
<LARGE_GREEN_SQUARE> 2
<LARGE_PURPLE_SQUARE> 2
<LARGE_BROWN_SQUARE> 2
+<HEAVY_EQUALS_SIGN> 2
+<PINCHED_FINGERS> 2
<WHITE_HEART> 2
<BROWN_HEART> 2
<PINCHING_HAND> 2
@@ -52690,10 +53434,14 @@ WIDTH
<BAGEL> 2
<SMILING_FACE_WITH_SMILING_EYES_AND_THREE_HEARTS> 2
<YAWNING_FACE> 2
+<SMILING_FACE_WITH_TEAR> 2
<FACE_WITH_PARTY_HORN_AND_PARTY_HAT> 2
<FACE_WITH_UNEVEN_EYES_AND_WAVY_MOUTH> 2
<OVERHEATED_FACE> 2
<FREEZING_FACE> 2
+<NINJA> 2
+<DISGUISED_FACE> 2
+<FACE_HOLDING_BACK_TEARS> 2
<FACE_WITH_PLEADING_EYES> 2
<SARI> 2
<LAB_COAT> 2
@@ -52735,12 +53483,17 @@ WIDTH
<MICROBE> 2
<BADGER> 2
<SWAN> 2
+<MAMMOTH> 2
+<DODO> 2
<SLOTH> 2
<OTTER> 2
<ORANGUTAN> 2
<SKUNK> 2
<FLAMINGO> 2
<OYSTER> 2
+<BEAVER> 2
+<BISON> 2
+<SEAL> 2
<GUIDE_DOG> 2
<PROBING_CANE> 2
<EMOJI_COMPONENT_RED_HAIR> 2
@@ -52770,6 +53523,8 @@ WIDTH
<BUTTER> 2
<MATE_DRINK> 2
<ICE_CUBE> 2
+<BUBBLE_TEA> 2
+<TROLL> 2
<STANDING_PERSON> 2
<KNEELING_PERSON> 2
<DEAF_PERSON> 2
@@ -52825,18 +53580,109 @@ WIDTH
<ONE-PIECE_SWIMSUIT> 2
<BRIEFS> 2
<SHORTS> 2
+<THONG_SANDAL> 2
+<LIGHT_BLUE_HEART> 2
+<GREY_HEART> 2
+<PINK_HEART> 2
<DROP_OF_BLOOD> 2
<ADHESIVE_BANDAGE> 2
<STETHOSCOPE> 2
+<X-RAY> 2
+<CRUTCH> 2
<YO-YO> 2
<KITE> 2
<PARACHUTE> 2
+<BOOMERANG> 2
+<MAGIC_WAND> 2
+<PINATA> 2
+<NESTING_DOLLS> 2
+<MARACAS> 2
+<FLUTE> 2
<RINGED_PLANET> 2
<CHAIR> 2
<RAZOR> 2
<AXE> 2
<DIYA_LAMP> 2
<BANJO> 2
+<MILITARY_HELMET> 2
+<ACCORDION> 2
+<LONG_DRUM> 2
+<COIN> 2
+<CARPENTRY_SAW> 2
+<SCREWDRIVER> 2
+<LADDER> 2
+<HOOK> 2
+<MIRROR> 2
+<WINDOW> 2
+<PLUNGER> 2
+<SEWING_NEEDLE> 2
+<KNOT> 2
+<BUCKET> 2
+<MOUSE_TRAP> 2
+<TOOTHBRUSH> 2
+<HEADSTONE> 2
+<PLACARD> 2
+<ROCK> 2
+<MIRROR_BALL> 2
+<IDENTIFICATION_CARD> 2
+<LOW_BATTERY> 2
+<HAMSA> 2
+<FOLDING_HAND_FAN> 2
+<HAIR_PICK> 2
+<KHANDA> 2
+<FLY> 2
+<WORM> 2
+<BEETLE> 2
+<COCKROACH> 2
+<POTTED_PLANT> 2
+<WOOD> 2
+<FEATHER> 2
+<LOTUS> 2
+<CORAL> 2
+<EMPTY_NEST> 2
+<NEST_WITH_EGGS> 2
+<HYACINTH> 2
+<JELLYFISH> 2
+<WING> 2
+<GOOSE> 2
+<ANATOMICAL_HEART> 2
+<LUNGS> 2
+<PEOPLE_HUGGING> 2
+<PREGNANT_MAN> 2
+<PREGNANT_PERSON> 2
+<PERSON_WITH_CROWN> 2
+<MOOSE> 2
+<DONKEY> 2
+<BLUEBERRIES> 2
+<BELL_PEPPER> 2
+<OLIVE> 2
+<FLATBREAD> 2
+<TAMALE> 2
+<FONDUE> 2
+<TEAPOT> 2
+<POURING_LIQUID> 2
+<BEANS> 2
+<JAR> 2
+<GINGER_ROOT> 2
+<PEA_POD> 2
+<MELTING_FACE> 2
+<SALUTING_FACE> 2
+<FACE_WITH_OPEN_EYES_AND_HAND_OVER_MOUTH> 2
+<FACE_WITH_PEEKING_EYE> 2
+<FACE_WITH_DIAGONAL_MOUTH> 2
+<DOTTED_LINE_FACE> 2
+<BITING_LIP> 2
+<BUBBLES> 2
+<SHAKING_FACE> 2
+<HAND_WITH_INDEX_FINGER_AND_THUMB_CROSSED> 2
+<RIGHTWARDS_HAND> 2
+<LEFTWARDS_HAND> 2
+<PALM_DOWN_HAND> 2
+<PALM_UP_HAND> 2
+<INDEX_POINTING_AT_THE_VIEWER> 2
+<HEART_HANDS> 2
+<LEFTWARDS_PUSHING_HAND> 2
+<RIGHTWARDS_PUSHING_HAND> 2
<CJK_UNIFIED_IDEOGRAPH-20000> 2
<CJK_UNIFIED_IDEOGRAPH-20001> 2
<CJK_UNIFIED_IDEOGRAPH-20002> 2
@@ -95548,6 +96394,15 @@ WIDTH
<CJK_UNIFIED_IDEOGRAPH-2A6D4> 2
<CJK_UNIFIED_IDEOGRAPH-2A6D5> 2
<CJK_UNIFIED_IDEOGRAPH-2A6D6> 2
+<CJK_UNIFIED_IDEOGRAPH-2A6D7> 2
+<CJK_UNIFIED_IDEOGRAPH-2A6D8> 2
+<CJK_UNIFIED_IDEOGRAPH-2A6D9> 2
+<CJK_UNIFIED_IDEOGRAPH-2A6DA> 2
+<CJK_UNIFIED_IDEOGRAPH-2A6DB> 2
+<CJK_UNIFIED_IDEOGRAPH-2A6DC> 2
+<CJK_UNIFIED_IDEOGRAPH-2A6DD> 2
+<CJK_UNIFIED_IDEOGRAPH-2A6DE> 2
+<CJK_UNIFIED_IDEOGRAPH-2A6DF> 2
<CJK_UNIFIED_IDEOGRAPH-2A700> 2
<CJK_UNIFIED_IDEOGRAPH-2A701> 2
<CJK_UNIFIED_IDEOGRAPH-2A702> 2
@@ -99697,6 +100552,11 @@ WIDTH
<CJK_UNIFIED_IDEOGRAPH-2B732> 2
<CJK_UNIFIED_IDEOGRAPH-2B733> 2
<CJK_UNIFIED_IDEOGRAPH-2B734> 2
+<CJK_UNIFIED_IDEOGRAPH-2B735> 2
+<CJK_UNIFIED_IDEOGRAPH-2B736> 2
+<CJK_UNIFIED_IDEOGRAPH-2B737> 2
+<CJK_UNIFIED_IDEOGRAPH-2B738> 2
+<CJK_UNIFIED_IDEOGRAPH-2B739> 2
<CJK_UNIFIED_IDEOGRAPH-2B740> 2
<CJK_UNIFIED_IDEOGRAPH-2B741> 2
<CJK_UNIFIED_IDEOGRAPH-2B742> 2
@@ -113696,6 +114556,9137 @@ WIDTH
<CJK_COMPATIBILITY_IDEOGRAPH-2FA1B> 2
<CJK_COMPATIBILITY_IDEOGRAPH-2FA1C> 2
<CJK_COMPATIBILITY_IDEOGRAPH-2FA1D> 2
+<CJK_UNIFIED_IDEOGRAPH-30000> 2
+<CJK_UNIFIED_IDEOGRAPH-30001> 2
+<CJK_UNIFIED_IDEOGRAPH-30002> 2
+<CJK_UNIFIED_IDEOGRAPH-30003> 2
+<CJK_UNIFIED_IDEOGRAPH-30004> 2
+<CJK_UNIFIED_IDEOGRAPH-30005> 2
+<CJK_UNIFIED_IDEOGRAPH-30006> 2
+<CJK_UNIFIED_IDEOGRAPH-30007> 2
+<CJK_UNIFIED_IDEOGRAPH-30008> 2
+<CJK_UNIFIED_IDEOGRAPH-30009> 2
+<CJK_UNIFIED_IDEOGRAPH-3000A> 2
+<CJK_UNIFIED_IDEOGRAPH-3000B> 2
+<CJK_UNIFIED_IDEOGRAPH-3000C> 2
+<CJK_UNIFIED_IDEOGRAPH-3000D> 2
+<CJK_UNIFIED_IDEOGRAPH-3000E> 2
+<CJK_UNIFIED_IDEOGRAPH-3000F> 2
+<CJK_UNIFIED_IDEOGRAPH-30010> 2
+<CJK_UNIFIED_IDEOGRAPH-30011> 2
+<CJK_UNIFIED_IDEOGRAPH-30012> 2
+<CJK_UNIFIED_IDEOGRAPH-30013> 2
+<CJK_UNIFIED_IDEOGRAPH-30014> 2
+<CJK_UNIFIED_IDEOGRAPH-30015> 2
+<CJK_UNIFIED_IDEOGRAPH-30016> 2
+<CJK_UNIFIED_IDEOGRAPH-30017> 2
+<CJK_UNIFIED_IDEOGRAPH-30018> 2
+<CJK_UNIFIED_IDEOGRAPH-30019> 2
+<CJK_UNIFIED_IDEOGRAPH-3001A> 2
+<CJK_UNIFIED_IDEOGRAPH-3001B> 2
+<CJK_UNIFIED_IDEOGRAPH-3001C> 2
+<CJK_UNIFIED_IDEOGRAPH-3001D> 2
+<CJK_UNIFIED_IDEOGRAPH-3001E> 2
+<CJK_UNIFIED_IDEOGRAPH-3001F> 2
+<CJK_UNIFIED_IDEOGRAPH-30020> 2
+<CJK_UNIFIED_IDEOGRAPH-30021> 2
+<CJK_UNIFIED_IDEOGRAPH-30022> 2
+<CJK_UNIFIED_IDEOGRAPH-30023> 2
+<CJK_UNIFIED_IDEOGRAPH-30024> 2
+<CJK_UNIFIED_IDEOGRAPH-30025> 2
+<CJK_UNIFIED_IDEOGRAPH-30026> 2
+<CJK_UNIFIED_IDEOGRAPH-30027> 2
+<CJK_UNIFIED_IDEOGRAPH-30028> 2
+<CJK_UNIFIED_IDEOGRAPH-30029> 2
+<CJK_UNIFIED_IDEOGRAPH-3002A> 2
+<CJK_UNIFIED_IDEOGRAPH-3002B> 2
+<CJK_UNIFIED_IDEOGRAPH-3002C> 2
+<CJK_UNIFIED_IDEOGRAPH-3002D> 2
+<CJK_UNIFIED_IDEOGRAPH-3002E> 2
+<CJK_UNIFIED_IDEOGRAPH-3002F> 2
+<CJK_UNIFIED_IDEOGRAPH-30030> 2
+<CJK_UNIFIED_IDEOGRAPH-30031> 2
+<CJK_UNIFIED_IDEOGRAPH-30032> 2
+<CJK_UNIFIED_IDEOGRAPH-30033> 2
+<CJK_UNIFIED_IDEOGRAPH-30034> 2
+<CJK_UNIFIED_IDEOGRAPH-30035> 2
+<CJK_UNIFIED_IDEOGRAPH-30036> 2
+<CJK_UNIFIED_IDEOGRAPH-30037> 2
+<CJK_UNIFIED_IDEOGRAPH-30038> 2
+<CJK_UNIFIED_IDEOGRAPH-30039> 2
+<CJK_UNIFIED_IDEOGRAPH-3003A> 2
+<CJK_UNIFIED_IDEOGRAPH-3003B> 2
+<CJK_UNIFIED_IDEOGRAPH-3003C> 2
+<CJK_UNIFIED_IDEOGRAPH-3003D> 2
+<CJK_UNIFIED_IDEOGRAPH-3003E> 2
+<CJK_UNIFIED_IDEOGRAPH-3003F> 2
+<CJK_UNIFIED_IDEOGRAPH-30040> 2
+<CJK_UNIFIED_IDEOGRAPH-30041> 2
+<CJK_UNIFIED_IDEOGRAPH-30042> 2
+<CJK_UNIFIED_IDEOGRAPH-30043> 2
+<CJK_UNIFIED_IDEOGRAPH-30044> 2
+<CJK_UNIFIED_IDEOGRAPH-30045> 2
+<CJK_UNIFIED_IDEOGRAPH-30046> 2
+<CJK_UNIFIED_IDEOGRAPH-30047> 2
+<CJK_UNIFIED_IDEOGRAPH-30048> 2
+<CJK_UNIFIED_IDEOGRAPH-30049> 2
+<CJK_UNIFIED_IDEOGRAPH-3004A> 2
+<CJK_UNIFIED_IDEOGRAPH-3004B> 2
+<CJK_UNIFIED_IDEOGRAPH-3004C> 2
+<CJK_UNIFIED_IDEOGRAPH-3004D> 2
+<CJK_UNIFIED_IDEOGRAPH-3004E> 2
+<CJK_UNIFIED_IDEOGRAPH-3004F> 2
+<CJK_UNIFIED_IDEOGRAPH-30050> 2
+<CJK_UNIFIED_IDEOGRAPH-30051> 2
+<CJK_UNIFIED_IDEOGRAPH-30052> 2
+<CJK_UNIFIED_IDEOGRAPH-30053> 2
+<CJK_UNIFIED_IDEOGRAPH-30054> 2
+<CJK_UNIFIED_IDEOGRAPH-30055> 2
+<CJK_UNIFIED_IDEOGRAPH-30056> 2
+<CJK_UNIFIED_IDEOGRAPH-30057> 2
+<CJK_UNIFIED_IDEOGRAPH-30058> 2
+<CJK_UNIFIED_IDEOGRAPH-30059> 2
+<CJK_UNIFIED_IDEOGRAPH-3005A> 2
+<CJK_UNIFIED_IDEOGRAPH-3005B> 2
+<CJK_UNIFIED_IDEOGRAPH-3005C> 2
+<CJK_UNIFIED_IDEOGRAPH-3005D> 2
+<CJK_UNIFIED_IDEOGRAPH-3005E> 2
+<CJK_UNIFIED_IDEOGRAPH-3005F> 2
+<CJK_UNIFIED_IDEOGRAPH-30060> 2
+<CJK_UNIFIED_IDEOGRAPH-30061> 2
+<CJK_UNIFIED_IDEOGRAPH-30062> 2
+<CJK_UNIFIED_IDEOGRAPH-30063> 2
+<CJK_UNIFIED_IDEOGRAPH-30064> 2
+<CJK_UNIFIED_IDEOGRAPH-30065> 2
+<CJK_UNIFIED_IDEOGRAPH-30066> 2
+<CJK_UNIFIED_IDEOGRAPH-30067> 2
+<CJK_UNIFIED_IDEOGRAPH-30068> 2
+<CJK_UNIFIED_IDEOGRAPH-30069> 2
+<CJK_UNIFIED_IDEOGRAPH-3006A> 2
+<CJK_UNIFIED_IDEOGRAPH-3006B> 2
+<CJK_UNIFIED_IDEOGRAPH-3006C> 2
+<CJK_UNIFIED_IDEOGRAPH-3006D> 2
+<CJK_UNIFIED_IDEOGRAPH-3006E> 2
+<CJK_UNIFIED_IDEOGRAPH-3006F> 2
+<CJK_UNIFIED_IDEOGRAPH-30070> 2
+<CJK_UNIFIED_IDEOGRAPH-30071> 2
+<CJK_UNIFIED_IDEOGRAPH-30072> 2
+<CJK_UNIFIED_IDEOGRAPH-30073> 2
+<CJK_UNIFIED_IDEOGRAPH-30074> 2
+<CJK_UNIFIED_IDEOGRAPH-30075> 2
+<CJK_UNIFIED_IDEOGRAPH-30076> 2
+<CJK_UNIFIED_IDEOGRAPH-30077> 2
+<CJK_UNIFIED_IDEOGRAPH-30078> 2
+<CJK_UNIFIED_IDEOGRAPH-30079> 2
+<CJK_UNIFIED_IDEOGRAPH-3007A> 2
+<CJK_UNIFIED_IDEOGRAPH-3007B> 2
+<CJK_UNIFIED_IDEOGRAPH-3007C> 2
+<CJK_UNIFIED_IDEOGRAPH-3007D> 2
+<CJK_UNIFIED_IDEOGRAPH-3007E> 2
+<CJK_UNIFIED_IDEOGRAPH-3007F> 2
+<CJK_UNIFIED_IDEOGRAPH-30080> 2
+<CJK_UNIFIED_IDEOGRAPH-30081> 2
+<CJK_UNIFIED_IDEOGRAPH-30082> 2
+<CJK_UNIFIED_IDEOGRAPH-30083> 2
+<CJK_UNIFIED_IDEOGRAPH-30084> 2
+<CJK_UNIFIED_IDEOGRAPH-30085> 2
+<CJK_UNIFIED_IDEOGRAPH-30086> 2
+<CJK_UNIFIED_IDEOGRAPH-30087> 2
+<CJK_UNIFIED_IDEOGRAPH-30088> 2
+<CJK_UNIFIED_IDEOGRAPH-30089> 2
+<CJK_UNIFIED_IDEOGRAPH-3008A> 2
+<CJK_UNIFIED_IDEOGRAPH-3008B> 2
+<CJK_UNIFIED_IDEOGRAPH-3008C> 2
+<CJK_UNIFIED_IDEOGRAPH-3008D> 2
+<CJK_UNIFIED_IDEOGRAPH-3008E> 2
+<CJK_UNIFIED_IDEOGRAPH-3008F> 2
+<CJK_UNIFIED_IDEOGRAPH-30090> 2
+<CJK_UNIFIED_IDEOGRAPH-30091> 2
+<CJK_UNIFIED_IDEOGRAPH-30092> 2
+<CJK_UNIFIED_IDEOGRAPH-30093> 2
+<CJK_UNIFIED_IDEOGRAPH-30094> 2
+<CJK_UNIFIED_IDEOGRAPH-30095> 2
+<CJK_UNIFIED_IDEOGRAPH-30096> 2
+<CJK_UNIFIED_IDEOGRAPH-30097> 2
+<CJK_UNIFIED_IDEOGRAPH-30098> 2
+<CJK_UNIFIED_IDEOGRAPH-30099> 2
+<CJK_UNIFIED_IDEOGRAPH-3009A> 2
+<CJK_UNIFIED_IDEOGRAPH-3009B> 2
+<CJK_UNIFIED_IDEOGRAPH-3009C> 2
+<CJK_UNIFIED_IDEOGRAPH-3009D> 2
+<CJK_UNIFIED_IDEOGRAPH-3009E> 2
+<CJK_UNIFIED_IDEOGRAPH-3009F> 2
+<CJK_UNIFIED_IDEOGRAPH-300A0> 2
+<CJK_UNIFIED_IDEOGRAPH-300A1> 2
+<CJK_UNIFIED_IDEOGRAPH-300A2> 2
+<CJK_UNIFIED_IDEOGRAPH-300A3> 2
+<CJK_UNIFIED_IDEOGRAPH-300A4> 2
+<CJK_UNIFIED_IDEOGRAPH-300A5> 2
+<CJK_UNIFIED_IDEOGRAPH-300A6> 2
+<CJK_UNIFIED_IDEOGRAPH-300A7> 2
+<CJK_UNIFIED_IDEOGRAPH-300A8> 2
+<CJK_UNIFIED_IDEOGRAPH-300A9> 2
+<CJK_UNIFIED_IDEOGRAPH-300AA> 2
+<CJK_UNIFIED_IDEOGRAPH-300AB> 2
+<CJK_UNIFIED_IDEOGRAPH-300AC> 2
+<CJK_UNIFIED_IDEOGRAPH-300AD> 2
+<CJK_UNIFIED_IDEOGRAPH-300AE> 2
+<CJK_UNIFIED_IDEOGRAPH-300AF> 2
+<CJK_UNIFIED_IDEOGRAPH-300B0> 2
+<CJK_UNIFIED_IDEOGRAPH-300B1> 2
+<CJK_UNIFIED_IDEOGRAPH-300B2> 2
+<CJK_UNIFIED_IDEOGRAPH-300B3> 2
+<CJK_UNIFIED_IDEOGRAPH-300B4> 2
+<CJK_UNIFIED_IDEOGRAPH-300B5> 2
+<CJK_UNIFIED_IDEOGRAPH-300B6> 2
+<CJK_UNIFIED_IDEOGRAPH-300B7> 2
+<CJK_UNIFIED_IDEOGRAPH-300B8> 2
+<CJK_UNIFIED_IDEOGRAPH-300B9> 2
+<CJK_UNIFIED_IDEOGRAPH-300BA> 2
+<CJK_UNIFIED_IDEOGRAPH-300BB> 2
+<CJK_UNIFIED_IDEOGRAPH-300BC> 2
+<CJK_UNIFIED_IDEOGRAPH-300BD> 2
+<CJK_UNIFIED_IDEOGRAPH-300BE> 2
+<CJK_UNIFIED_IDEOGRAPH-300BF> 2
+<CJK_UNIFIED_IDEOGRAPH-300C0> 2
+<CJK_UNIFIED_IDEOGRAPH-300C1> 2
+<CJK_UNIFIED_IDEOGRAPH-300C2> 2
+<CJK_UNIFIED_IDEOGRAPH-300C3> 2
+<CJK_UNIFIED_IDEOGRAPH-300C4> 2
+<CJK_UNIFIED_IDEOGRAPH-300C5> 2
+<CJK_UNIFIED_IDEOGRAPH-300C6> 2
+<CJK_UNIFIED_IDEOGRAPH-300C7> 2
+<CJK_UNIFIED_IDEOGRAPH-300C8> 2
+<CJK_UNIFIED_IDEOGRAPH-300C9> 2
+<CJK_UNIFIED_IDEOGRAPH-300CA> 2
+<CJK_UNIFIED_IDEOGRAPH-300CB> 2
+<CJK_UNIFIED_IDEOGRAPH-300CC> 2
+<CJK_UNIFIED_IDEOGRAPH-300CD> 2
+<CJK_UNIFIED_IDEOGRAPH-300CE> 2
+<CJK_UNIFIED_IDEOGRAPH-300CF> 2
+<CJK_UNIFIED_IDEOGRAPH-300D0> 2
+<CJK_UNIFIED_IDEOGRAPH-300D1> 2
+<CJK_UNIFIED_IDEOGRAPH-300D2> 2
+<CJK_UNIFIED_IDEOGRAPH-300D3> 2
+<CJK_UNIFIED_IDEOGRAPH-300D4> 2
+<CJK_UNIFIED_IDEOGRAPH-300D5> 2
+<CJK_UNIFIED_IDEOGRAPH-300D6> 2
+<CJK_UNIFIED_IDEOGRAPH-300D7> 2
+<CJK_UNIFIED_IDEOGRAPH-300D8> 2
+<CJK_UNIFIED_IDEOGRAPH-300D9> 2
+<CJK_UNIFIED_IDEOGRAPH-300DA> 2
+<CJK_UNIFIED_IDEOGRAPH-300DB> 2
+<CJK_UNIFIED_IDEOGRAPH-300DC> 2
+<CJK_UNIFIED_IDEOGRAPH-300DD> 2
+<CJK_UNIFIED_IDEOGRAPH-300DE> 2
+<CJK_UNIFIED_IDEOGRAPH-300DF> 2
+<CJK_UNIFIED_IDEOGRAPH-300E0> 2
+<CJK_UNIFIED_IDEOGRAPH-300E1> 2
+<CJK_UNIFIED_IDEOGRAPH-300E2> 2
+<CJK_UNIFIED_IDEOGRAPH-300E3> 2
+<CJK_UNIFIED_IDEOGRAPH-300E4> 2
+<CJK_UNIFIED_IDEOGRAPH-300E5> 2
+<CJK_UNIFIED_IDEOGRAPH-300E6> 2
+<CJK_UNIFIED_IDEOGRAPH-300E7> 2
+<CJK_UNIFIED_IDEOGRAPH-300E8> 2
+<CJK_UNIFIED_IDEOGRAPH-300E9> 2
+<CJK_UNIFIED_IDEOGRAPH-300EA> 2
+<CJK_UNIFIED_IDEOGRAPH-300EB> 2
+<CJK_UNIFIED_IDEOGRAPH-300EC> 2
+<CJK_UNIFIED_IDEOGRAPH-300ED> 2
+<CJK_UNIFIED_IDEOGRAPH-300EE> 2
+<CJK_UNIFIED_IDEOGRAPH-300EF> 2
+<CJK_UNIFIED_IDEOGRAPH-300F0> 2
+<CJK_UNIFIED_IDEOGRAPH-300F1> 2
+<CJK_UNIFIED_IDEOGRAPH-300F2> 2
+<CJK_UNIFIED_IDEOGRAPH-300F3> 2
+<CJK_UNIFIED_IDEOGRAPH-300F4> 2
+<CJK_UNIFIED_IDEOGRAPH-300F5> 2
+<CJK_UNIFIED_IDEOGRAPH-300F6> 2
+<CJK_UNIFIED_IDEOGRAPH-300F7> 2
+<CJK_UNIFIED_IDEOGRAPH-300F8> 2
+<CJK_UNIFIED_IDEOGRAPH-300F9> 2
+<CJK_UNIFIED_IDEOGRAPH-300FA> 2
+<CJK_UNIFIED_IDEOGRAPH-300FB> 2
+<CJK_UNIFIED_IDEOGRAPH-300FC> 2
+<CJK_UNIFIED_IDEOGRAPH-300FD> 2
+<CJK_UNIFIED_IDEOGRAPH-300FE> 2
+<CJK_UNIFIED_IDEOGRAPH-300FF> 2
+<CJK_UNIFIED_IDEOGRAPH-30100> 2
+<CJK_UNIFIED_IDEOGRAPH-30101> 2
+<CJK_UNIFIED_IDEOGRAPH-30102> 2
+<CJK_UNIFIED_IDEOGRAPH-30103> 2
+<CJK_UNIFIED_IDEOGRAPH-30104> 2
+<CJK_UNIFIED_IDEOGRAPH-30105> 2
+<CJK_UNIFIED_IDEOGRAPH-30106> 2
+<CJK_UNIFIED_IDEOGRAPH-30107> 2
+<CJK_UNIFIED_IDEOGRAPH-30108> 2
+<CJK_UNIFIED_IDEOGRAPH-30109> 2
+<CJK_UNIFIED_IDEOGRAPH-3010A> 2
+<CJK_UNIFIED_IDEOGRAPH-3010B> 2
+<CJK_UNIFIED_IDEOGRAPH-3010C> 2
+<CJK_UNIFIED_IDEOGRAPH-3010D> 2
+<CJK_UNIFIED_IDEOGRAPH-3010E> 2
+<CJK_UNIFIED_IDEOGRAPH-3010F> 2
+<CJK_UNIFIED_IDEOGRAPH-30110> 2
+<CJK_UNIFIED_IDEOGRAPH-30111> 2
+<CJK_UNIFIED_IDEOGRAPH-30112> 2
+<CJK_UNIFIED_IDEOGRAPH-30113> 2
+<CJK_UNIFIED_IDEOGRAPH-30114> 2
+<CJK_UNIFIED_IDEOGRAPH-30115> 2
+<CJK_UNIFIED_IDEOGRAPH-30116> 2
+<CJK_UNIFIED_IDEOGRAPH-30117> 2
+<CJK_UNIFIED_IDEOGRAPH-30118> 2
+<CJK_UNIFIED_IDEOGRAPH-30119> 2
+<CJK_UNIFIED_IDEOGRAPH-3011A> 2
+<CJK_UNIFIED_IDEOGRAPH-3011B> 2
+<CJK_UNIFIED_IDEOGRAPH-3011C> 2
+<CJK_UNIFIED_IDEOGRAPH-3011D> 2
+<CJK_UNIFIED_IDEOGRAPH-3011E> 2
+<CJK_UNIFIED_IDEOGRAPH-3011F> 2
+<CJK_UNIFIED_IDEOGRAPH-30120> 2
+<CJK_UNIFIED_IDEOGRAPH-30121> 2
+<CJK_UNIFIED_IDEOGRAPH-30122> 2
+<CJK_UNIFIED_IDEOGRAPH-30123> 2
+<CJK_UNIFIED_IDEOGRAPH-30124> 2
+<CJK_UNIFIED_IDEOGRAPH-30125> 2
+<CJK_UNIFIED_IDEOGRAPH-30126> 2
+<CJK_UNIFIED_IDEOGRAPH-30127> 2
+<CJK_UNIFIED_IDEOGRAPH-30128> 2
+<CJK_UNIFIED_IDEOGRAPH-30129> 2
+<CJK_UNIFIED_IDEOGRAPH-3012A> 2
+<CJK_UNIFIED_IDEOGRAPH-3012B> 2
+<CJK_UNIFIED_IDEOGRAPH-3012C> 2
+<CJK_UNIFIED_IDEOGRAPH-3012D> 2
+<CJK_UNIFIED_IDEOGRAPH-3012E> 2
+<CJK_UNIFIED_IDEOGRAPH-3012F> 2
+<CJK_UNIFIED_IDEOGRAPH-30130> 2
+<CJK_UNIFIED_IDEOGRAPH-30131> 2
+<CJK_UNIFIED_IDEOGRAPH-30132> 2
+<CJK_UNIFIED_IDEOGRAPH-30133> 2
+<CJK_UNIFIED_IDEOGRAPH-30134> 2
+<CJK_UNIFIED_IDEOGRAPH-30135> 2
+<CJK_UNIFIED_IDEOGRAPH-30136> 2
+<CJK_UNIFIED_IDEOGRAPH-30137> 2
+<CJK_UNIFIED_IDEOGRAPH-30138> 2
+<CJK_UNIFIED_IDEOGRAPH-30139> 2
+<CJK_UNIFIED_IDEOGRAPH-3013A> 2
+<CJK_UNIFIED_IDEOGRAPH-3013B> 2
+<CJK_UNIFIED_IDEOGRAPH-3013C> 2
+<CJK_UNIFIED_IDEOGRAPH-3013D> 2
+<CJK_UNIFIED_IDEOGRAPH-3013E> 2
+<CJK_UNIFIED_IDEOGRAPH-3013F> 2
+<CJK_UNIFIED_IDEOGRAPH-30140> 2
+<CJK_UNIFIED_IDEOGRAPH-30141> 2
+<CJK_UNIFIED_IDEOGRAPH-30142> 2
+<CJK_UNIFIED_IDEOGRAPH-30143> 2
+<CJK_UNIFIED_IDEOGRAPH-30144> 2
+<CJK_UNIFIED_IDEOGRAPH-30145> 2
+<CJK_UNIFIED_IDEOGRAPH-30146> 2
+<CJK_UNIFIED_IDEOGRAPH-30147> 2
+<CJK_UNIFIED_IDEOGRAPH-30148> 2
+<CJK_UNIFIED_IDEOGRAPH-30149> 2
+<CJK_UNIFIED_IDEOGRAPH-3014A> 2
+<CJK_UNIFIED_IDEOGRAPH-3014B> 2
+<CJK_UNIFIED_IDEOGRAPH-3014C> 2
+<CJK_UNIFIED_IDEOGRAPH-3014D> 2
+<CJK_UNIFIED_IDEOGRAPH-3014E> 2
+<CJK_UNIFIED_IDEOGRAPH-3014F> 2
+<CJK_UNIFIED_IDEOGRAPH-30150> 2
+<CJK_UNIFIED_IDEOGRAPH-30151> 2
+<CJK_UNIFIED_IDEOGRAPH-30152> 2
+<CJK_UNIFIED_IDEOGRAPH-30153> 2
+<CJK_UNIFIED_IDEOGRAPH-30154> 2
+<CJK_UNIFIED_IDEOGRAPH-30155> 2
+<CJK_UNIFIED_IDEOGRAPH-30156> 2
+<CJK_UNIFIED_IDEOGRAPH-30157> 2
+<CJK_UNIFIED_IDEOGRAPH-30158> 2
+<CJK_UNIFIED_IDEOGRAPH-30159> 2
+<CJK_UNIFIED_IDEOGRAPH-3015A> 2
+<CJK_UNIFIED_IDEOGRAPH-3015B> 2
+<CJK_UNIFIED_IDEOGRAPH-3015C> 2
+<CJK_UNIFIED_IDEOGRAPH-3015D> 2
+<CJK_UNIFIED_IDEOGRAPH-3015E> 2
+<CJK_UNIFIED_IDEOGRAPH-3015F> 2
+<CJK_UNIFIED_IDEOGRAPH-30160> 2
+<CJK_UNIFIED_IDEOGRAPH-30161> 2
+<CJK_UNIFIED_IDEOGRAPH-30162> 2
+<CJK_UNIFIED_IDEOGRAPH-30163> 2
+<CJK_UNIFIED_IDEOGRAPH-30164> 2
+<CJK_UNIFIED_IDEOGRAPH-30165> 2
+<CJK_UNIFIED_IDEOGRAPH-30166> 2
+<CJK_UNIFIED_IDEOGRAPH-30167> 2
+<CJK_UNIFIED_IDEOGRAPH-30168> 2
+<CJK_UNIFIED_IDEOGRAPH-30169> 2
+<CJK_UNIFIED_IDEOGRAPH-3016A> 2
+<CJK_UNIFIED_IDEOGRAPH-3016B> 2
+<CJK_UNIFIED_IDEOGRAPH-3016C> 2
+<CJK_UNIFIED_IDEOGRAPH-3016D> 2
+<CJK_UNIFIED_IDEOGRAPH-3016E> 2
+<CJK_UNIFIED_IDEOGRAPH-3016F> 2
+<CJK_UNIFIED_IDEOGRAPH-30170> 2
+<CJK_UNIFIED_IDEOGRAPH-30171> 2
+<CJK_UNIFIED_IDEOGRAPH-30172> 2
+<CJK_UNIFIED_IDEOGRAPH-30173> 2
+<CJK_UNIFIED_IDEOGRAPH-30174> 2
+<CJK_UNIFIED_IDEOGRAPH-30175> 2
+<CJK_UNIFIED_IDEOGRAPH-30176> 2
+<CJK_UNIFIED_IDEOGRAPH-30177> 2
+<CJK_UNIFIED_IDEOGRAPH-30178> 2
+<CJK_UNIFIED_IDEOGRAPH-30179> 2
+<CJK_UNIFIED_IDEOGRAPH-3017A> 2
+<CJK_UNIFIED_IDEOGRAPH-3017B> 2
+<CJK_UNIFIED_IDEOGRAPH-3017C> 2
+<CJK_UNIFIED_IDEOGRAPH-3017D> 2
+<CJK_UNIFIED_IDEOGRAPH-3017E> 2
+<CJK_UNIFIED_IDEOGRAPH-3017F> 2
+<CJK_UNIFIED_IDEOGRAPH-30180> 2
+<CJK_UNIFIED_IDEOGRAPH-30181> 2
+<CJK_UNIFIED_IDEOGRAPH-30182> 2
+<CJK_UNIFIED_IDEOGRAPH-30183> 2
+<CJK_UNIFIED_IDEOGRAPH-30184> 2
+<CJK_UNIFIED_IDEOGRAPH-30185> 2
+<CJK_UNIFIED_IDEOGRAPH-30186> 2
+<CJK_UNIFIED_IDEOGRAPH-30187> 2
+<CJK_UNIFIED_IDEOGRAPH-30188> 2
+<CJK_UNIFIED_IDEOGRAPH-30189> 2
+<CJK_UNIFIED_IDEOGRAPH-3018A> 2
+<CJK_UNIFIED_IDEOGRAPH-3018B> 2
+<CJK_UNIFIED_IDEOGRAPH-3018C> 2
+<CJK_UNIFIED_IDEOGRAPH-3018D> 2
+<CJK_UNIFIED_IDEOGRAPH-3018E> 2
+<CJK_UNIFIED_IDEOGRAPH-3018F> 2
+<CJK_UNIFIED_IDEOGRAPH-30190> 2
+<CJK_UNIFIED_IDEOGRAPH-30191> 2
+<CJK_UNIFIED_IDEOGRAPH-30192> 2
+<CJK_UNIFIED_IDEOGRAPH-30193> 2
+<CJK_UNIFIED_IDEOGRAPH-30194> 2
+<CJK_UNIFIED_IDEOGRAPH-30195> 2
+<CJK_UNIFIED_IDEOGRAPH-30196> 2
+<CJK_UNIFIED_IDEOGRAPH-30197> 2
+<CJK_UNIFIED_IDEOGRAPH-30198> 2
+<CJK_UNIFIED_IDEOGRAPH-30199> 2
+<CJK_UNIFIED_IDEOGRAPH-3019A> 2
+<CJK_UNIFIED_IDEOGRAPH-3019B> 2
+<CJK_UNIFIED_IDEOGRAPH-3019C> 2
+<CJK_UNIFIED_IDEOGRAPH-3019D> 2
+<CJK_UNIFIED_IDEOGRAPH-3019E> 2
+<CJK_UNIFIED_IDEOGRAPH-3019F> 2
+<CJK_UNIFIED_IDEOGRAPH-301A0> 2
+<CJK_UNIFIED_IDEOGRAPH-301A1> 2
+<CJK_UNIFIED_IDEOGRAPH-301A2> 2
+<CJK_UNIFIED_IDEOGRAPH-301A3> 2
+<CJK_UNIFIED_IDEOGRAPH-301A4> 2
+<CJK_UNIFIED_IDEOGRAPH-301A5> 2
+<CJK_UNIFIED_IDEOGRAPH-301A6> 2
+<CJK_UNIFIED_IDEOGRAPH-301A7> 2
+<CJK_UNIFIED_IDEOGRAPH-301A8> 2
+<CJK_UNIFIED_IDEOGRAPH-301A9> 2
+<CJK_UNIFIED_IDEOGRAPH-301AA> 2
+<CJK_UNIFIED_IDEOGRAPH-301AB> 2
+<CJK_UNIFIED_IDEOGRAPH-301AC> 2
+<CJK_UNIFIED_IDEOGRAPH-301AD> 2
+<CJK_UNIFIED_IDEOGRAPH-301AE> 2
+<CJK_UNIFIED_IDEOGRAPH-301AF> 2
+<CJK_UNIFIED_IDEOGRAPH-301B0> 2
+<CJK_UNIFIED_IDEOGRAPH-301B1> 2
+<CJK_UNIFIED_IDEOGRAPH-301B2> 2
+<CJK_UNIFIED_IDEOGRAPH-301B3> 2
+<CJK_UNIFIED_IDEOGRAPH-301B4> 2
+<CJK_UNIFIED_IDEOGRAPH-301B5> 2
+<CJK_UNIFIED_IDEOGRAPH-301B6> 2
+<CJK_UNIFIED_IDEOGRAPH-301B7> 2
+<CJK_UNIFIED_IDEOGRAPH-301B8> 2
+<CJK_UNIFIED_IDEOGRAPH-301B9> 2
+<CJK_UNIFIED_IDEOGRAPH-301BA> 2
+<CJK_UNIFIED_IDEOGRAPH-301BB> 2
+<CJK_UNIFIED_IDEOGRAPH-301BC> 2
+<CJK_UNIFIED_IDEOGRAPH-301BD> 2
+<CJK_UNIFIED_IDEOGRAPH-301BE> 2
+<CJK_UNIFIED_IDEOGRAPH-301BF> 2
+<CJK_UNIFIED_IDEOGRAPH-301C0> 2
+<CJK_UNIFIED_IDEOGRAPH-301C1> 2
+<CJK_UNIFIED_IDEOGRAPH-301C2> 2
+<CJK_UNIFIED_IDEOGRAPH-301C3> 2
+<CJK_UNIFIED_IDEOGRAPH-301C4> 2
+<CJK_UNIFIED_IDEOGRAPH-301C5> 2
+<CJK_UNIFIED_IDEOGRAPH-301C6> 2
+<CJK_UNIFIED_IDEOGRAPH-301C7> 2
+<CJK_UNIFIED_IDEOGRAPH-301C8> 2
+<CJK_UNIFIED_IDEOGRAPH-301C9> 2
+<CJK_UNIFIED_IDEOGRAPH-301CA> 2
+<CJK_UNIFIED_IDEOGRAPH-301CB> 2
+<CJK_UNIFIED_IDEOGRAPH-301CC> 2
+<CJK_UNIFIED_IDEOGRAPH-301CD> 2
+<CJK_UNIFIED_IDEOGRAPH-301CE> 2
+<CJK_UNIFIED_IDEOGRAPH-301CF> 2
+<CJK_UNIFIED_IDEOGRAPH-301D0> 2
+<CJK_UNIFIED_IDEOGRAPH-301D1> 2
+<CJK_UNIFIED_IDEOGRAPH-301D2> 2
+<CJK_UNIFIED_IDEOGRAPH-301D3> 2
+<CJK_UNIFIED_IDEOGRAPH-301D4> 2
+<CJK_UNIFIED_IDEOGRAPH-301D5> 2
+<CJK_UNIFIED_IDEOGRAPH-301D6> 2
+<CJK_UNIFIED_IDEOGRAPH-301D7> 2
+<CJK_UNIFIED_IDEOGRAPH-301D8> 2
+<CJK_UNIFIED_IDEOGRAPH-301D9> 2
+<CJK_UNIFIED_IDEOGRAPH-301DA> 2
+<CJK_UNIFIED_IDEOGRAPH-301DB> 2
+<CJK_UNIFIED_IDEOGRAPH-301DC> 2
+<CJK_UNIFIED_IDEOGRAPH-301DD> 2
+<CJK_UNIFIED_IDEOGRAPH-301DE> 2
+<CJK_UNIFIED_IDEOGRAPH-301DF> 2
+<CJK_UNIFIED_IDEOGRAPH-301E0> 2
+<CJK_UNIFIED_IDEOGRAPH-301E1> 2
+<CJK_UNIFIED_IDEOGRAPH-301E2> 2
+<CJK_UNIFIED_IDEOGRAPH-301E3> 2
+<CJK_UNIFIED_IDEOGRAPH-301E4> 2
+<CJK_UNIFIED_IDEOGRAPH-301E5> 2
+<CJK_UNIFIED_IDEOGRAPH-301E6> 2
+<CJK_UNIFIED_IDEOGRAPH-301E7> 2
+<CJK_UNIFIED_IDEOGRAPH-301E8> 2
+<CJK_UNIFIED_IDEOGRAPH-301E9> 2
+<CJK_UNIFIED_IDEOGRAPH-301EA> 2
+<CJK_UNIFIED_IDEOGRAPH-301EB> 2
+<CJK_UNIFIED_IDEOGRAPH-301EC> 2
+<CJK_UNIFIED_IDEOGRAPH-301ED> 2
+<CJK_UNIFIED_IDEOGRAPH-301EE> 2
+<CJK_UNIFIED_IDEOGRAPH-301EF> 2
+<CJK_UNIFIED_IDEOGRAPH-301F0> 2
+<CJK_UNIFIED_IDEOGRAPH-301F1> 2
+<CJK_UNIFIED_IDEOGRAPH-301F2> 2
+<CJK_UNIFIED_IDEOGRAPH-301F3> 2
+<CJK_UNIFIED_IDEOGRAPH-301F4> 2
+<CJK_UNIFIED_IDEOGRAPH-301F5> 2
+<CJK_UNIFIED_IDEOGRAPH-301F6> 2
+<CJK_UNIFIED_IDEOGRAPH-301F7> 2
+<CJK_UNIFIED_IDEOGRAPH-301F8> 2
+<CJK_UNIFIED_IDEOGRAPH-301F9> 2
+<CJK_UNIFIED_IDEOGRAPH-301FA> 2
+<CJK_UNIFIED_IDEOGRAPH-301FB> 2
+<CJK_UNIFIED_IDEOGRAPH-301FC> 2
+<CJK_UNIFIED_IDEOGRAPH-301FD> 2
+<CJK_UNIFIED_IDEOGRAPH-301FE> 2
+<CJK_UNIFIED_IDEOGRAPH-301FF> 2
+<CJK_UNIFIED_IDEOGRAPH-30200> 2
+<CJK_UNIFIED_IDEOGRAPH-30201> 2
+<CJK_UNIFIED_IDEOGRAPH-30202> 2
+<CJK_UNIFIED_IDEOGRAPH-30203> 2
+<CJK_UNIFIED_IDEOGRAPH-30204> 2
+<CJK_UNIFIED_IDEOGRAPH-30205> 2
+<CJK_UNIFIED_IDEOGRAPH-30206> 2
+<CJK_UNIFIED_IDEOGRAPH-30207> 2
+<CJK_UNIFIED_IDEOGRAPH-30208> 2
+<CJK_UNIFIED_IDEOGRAPH-30209> 2
+<CJK_UNIFIED_IDEOGRAPH-3020A> 2
+<CJK_UNIFIED_IDEOGRAPH-3020B> 2
+<CJK_UNIFIED_IDEOGRAPH-3020C> 2
+<CJK_UNIFIED_IDEOGRAPH-3020D> 2
+<CJK_UNIFIED_IDEOGRAPH-3020E> 2
+<CJK_UNIFIED_IDEOGRAPH-3020F> 2
+<CJK_UNIFIED_IDEOGRAPH-30210> 2
+<CJK_UNIFIED_IDEOGRAPH-30211> 2
+<CJK_UNIFIED_IDEOGRAPH-30212> 2
+<CJK_UNIFIED_IDEOGRAPH-30213> 2
+<CJK_UNIFIED_IDEOGRAPH-30214> 2
+<CJK_UNIFIED_IDEOGRAPH-30215> 2
+<CJK_UNIFIED_IDEOGRAPH-30216> 2
+<CJK_UNIFIED_IDEOGRAPH-30217> 2
+<CJK_UNIFIED_IDEOGRAPH-30218> 2
+<CJK_UNIFIED_IDEOGRAPH-30219> 2
+<CJK_UNIFIED_IDEOGRAPH-3021A> 2
+<CJK_UNIFIED_IDEOGRAPH-3021B> 2
+<CJK_UNIFIED_IDEOGRAPH-3021C> 2
+<CJK_UNIFIED_IDEOGRAPH-3021D> 2
+<CJK_UNIFIED_IDEOGRAPH-3021E> 2
+<CJK_UNIFIED_IDEOGRAPH-3021F> 2
+<CJK_UNIFIED_IDEOGRAPH-30220> 2
+<CJK_UNIFIED_IDEOGRAPH-30221> 2
+<CJK_UNIFIED_IDEOGRAPH-30222> 2
+<CJK_UNIFIED_IDEOGRAPH-30223> 2
+<CJK_UNIFIED_IDEOGRAPH-30224> 2
+<CJK_UNIFIED_IDEOGRAPH-30225> 2
+<CJK_UNIFIED_IDEOGRAPH-30226> 2
+<CJK_UNIFIED_IDEOGRAPH-30227> 2
+<CJK_UNIFIED_IDEOGRAPH-30228> 2
+<CJK_UNIFIED_IDEOGRAPH-30229> 2
+<CJK_UNIFIED_IDEOGRAPH-3022A> 2
+<CJK_UNIFIED_IDEOGRAPH-3022B> 2
+<CJK_UNIFIED_IDEOGRAPH-3022C> 2
+<CJK_UNIFIED_IDEOGRAPH-3022D> 2
+<CJK_UNIFIED_IDEOGRAPH-3022E> 2
+<CJK_UNIFIED_IDEOGRAPH-3022F> 2
+<CJK_UNIFIED_IDEOGRAPH-30230> 2
+<CJK_UNIFIED_IDEOGRAPH-30231> 2
+<CJK_UNIFIED_IDEOGRAPH-30232> 2
+<CJK_UNIFIED_IDEOGRAPH-30233> 2
+<CJK_UNIFIED_IDEOGRAPH-30234> 2
+<CJK_UNIFIED_IDEOGRAPH-30235> 2
+<CJK_UNIFIED_IDEOGRAPH-30236> 2
+<CJK_UNIFIED_IDEOGRAPH-30237> 2
+<CJK_UNIFIED_IDEOGRAPH-30238> 2
+<CJK_UNIFIED_IDEOGRAPH-30239> 2
+<CJK_UNIFIED_IDEOGRAPH-3023A> 2
+<CJK_UNIFIED_IDEOGRAPH-3023B> 2
+<CJK_UNIFIED_IDEOGRAPH-3023C> 2
+<CJK_UNIFIED_IDEOGRAPH-3023D> 2
+<CJK_UNIFIED_IDEOGRAPH-3023E> 2
+<CJK_UNIFIED_IDEOGRAPH-3023F> 2
+<CJK_UNIFIED_IDEOGRAPH-30240> 2
+<CJK_UNIFIED_IDEOGRAPH-30241> 2
+<CJK_UNIFIED_IDEOGRAPH-30242> 2
+<CJK_UNIFIED_IDEOGRAPH-30243> 2
+<CJK_UNIFIED_IDEOGRAPH-30244> 2
+<CJK_UNIFIED_IDEOGRAPH-30245> 2
+<CJK_UNIFIED_IDEOGRAPH-30246> 2
+<CJK_UNIFIED_IDEOGRAPH-30247> 2
+<CJK_UNIFIED_IDEOGRAPH-30248> 2
+<CJK_UNIFIED_IDEOGRAPH-30249> 2
+<CJK_UNIFIED_IDEOGRAPH-3024A> 2
+<CJK_UNIFIED_IDEOGRAPH-3024B> 2
+<CJK_UNIFIED_IDEOGRAPH-3024C> 2
+<CJK_UNIFIED_IDEOGRAPH-3024D> 2
+<CJK_UNIFIED_IDEOGRAPH-3024E> 2
+<CJK_UNIFIED_IDEOGRAPH-3024F> 2
+<CJK_UNIFIED_IDEOGRAPH-30250> 2
+<CJK_UNIFIED_IDEOGRAPH-30251> 2
+<CJK_UNIFIED_IDEOGRAPH-30252> 2
+<CJK_UNIFIED_IDEOGRAPH-30253> 2
+<CJK_UNIFIED_IDEOGRAPH-30254> 2
+<CJK_UNIFIED_IDEOGRAPH-30255> 2
+<CJK_UNIFIED_IDEOGRAPH-30256> 2
+<CJK_UNIFIED_IDEOGRAPH-30257> 2
+<CJK_UNIFIED_IDEOGRAPH-30258> 2
+<CJK_UNIFIED_IDEOGRAPH-30259> 2
+<CJK_UNIFIED_IDEOGRAPH-3025A> 2
+<CJK_UNIFIED_IDEOGRAPH-3025B> 2
+<CJK_UNIFIED_IDEOGRAPH-3025C> 2
+<CJK_UNIFIED_IDEOGRAPH-3025D> 2
+<CJK_UNIFIED_IDEOGRAPH-3025E> 2
+<CJK_UNIFIED_IDEOGRAPH-3025F> 2
+<CJK_UNIFIED_IDEOGRAPH-30260> 2
+<CJK_UNIFIED_IDEOGRAPH-30261> 2
+<CJK_UNIFIED_IDEOGRAPH-30262> 2
+<CJK_UNIFIED_IDEOGRAPH-30263> 2
+<CJK_UNIFIED_IDEOGRAPH-30264> 2
+<CJK_UNIFIED_IDEOGRAPH-30265> 2
+<CJK_UNIFIED_IDEOGRAPH-30266> 2
+<CJK_UNIFIED_IDEOGRAPH-30267> 2
+<CJK_UNIFIED_IDEOGRAPH-30268> 2
+<CJK_UNIFIED_IDEOGRAPH-30269> 2
+<CJK_UNIFIED_IDEOGRAPH-3026A> 2
+<CJK_UNIFIED_IDEOGRAPH-3026B> 2
+<CJK_UNIFIED_IDEOGRAPH-3026C> 2
+<CJK_UNIFIED_IDEOGRAPH-3026D> 2
+<CJK_UNIFIED_IDEOGRAPH-3026E> 2
+<CJK_UNIFIED_IDEOGRAPH-3026F> 2
+<CJK_UNIFIED_IDEOGRAPH-30270> 2
+<CJK_UNIFIED_IDEOGRAPH-30271> 2
+<CJK_UNIFIED_IDEOGRAPH-30272> 2
+<CJK_UNIFIED_IDEOGRAPH-30273> 2
+<CJK_UNIFIED_IDEOGRAPH-30274> 2
+<CJK_UNIFIED_IDEOGRAPH-30275> 2
+<CJK_UNIFIED_IDEOGRAPH-30276> 2
+<CJK_UNIFIED_IDEOGRAPH-30277> 2
+<CJK_UNIFIED_IDEOGRAPH-30278> 2
+<CJK_UNIFIED_IDEOGRAPH-30279> 2
+<CJK_UNIFIED_IDEOGRAPH-3027A> 2
+<CJK_UNIFIED_IDEOGRAPH-3027B> 2
+<CJK_UNIFIED_IDEOGRAPH-3027C> 2
+<CJK_UNIFIED_IDEOGRAPH-3027D> 2
+<CJK_UNIFIED_IDEOGRAPH-3027E> 2
+<CJK_UNIFIED_IDEOGRAPH-3027F> 2
+<CJK_UNIFIED_IDEOGRAPH-30280> 2
+<CJK_UNIFIED_IDEOGRAPH-30281> 2
+<CJK_UNIFIED_IDEOGRAPH-30282> 2
+<CJK_UNIFIED_IDEOGRAPH-30283> 2
+<CJK_UNIFIED_IDEOGRAPH-30284> 2
+<CJK_UNIFIED_IDEOGRAPH-30285> 2
+<CJK_UNIFIED_IDEOGRAPH-30286> 2
+<CJK_UNIFIED_IDEOGRAPH-30287> 2
+<CJK_UNIFIED_IDEOGRAPH-30288> 2
+<CJK_UNIFIED_IDEOGRAPH-30289> 2
+<CJK_UNIFIED_IDEOGRAPH-3028A> 2
+<CJK_UNIFIED_IDEOGRAPH-3028B> 2
+<CJK_UNIFIED_IDEOGRAPH-3028C> 2
+<CJK_UNIFIED_IDEOGRAPH-3028D> 2
+<CJK_UNIFIED_IDEOGRAPH-3028E> 2
+<CJK_UNIFIED_IDEOGRAPH-3028F> 2
+<CJK_UNIFIED_IDEOGRAPH-30290> 2
+<CJK_UNIFIED_IDEOGRAPH-30291> 2
+<CJK_UNIFIED_IDEOGRAPH-30292> 2
+<CJK_UNIFIED_IDEOGRAPH-30293> 2
+<CJK_UNIFIED_IDEOGRAPH-30294> 2
+<CJK_UNIFIED_IDEOGRAPH-30295> 2
+<CJK_UNIFIED_IDEOGRAPH-30296> 2
+<CJK_UNIFIED_IDEOGRAPH-30297> 2
+<CJK_UNIFIED_IDEOGRAPH-30298> 2
+<CJK_UNIFIED_IDEOGRAPH-30299> 2
+<CJK_UNIFIED_IDEOGRAPH-3029A> 2
+<CJK_UNIFIED_IDEOGRAPH-3029B> 2
+<CJK_UNIFIED_IDEOGRAPH-3029C> 2
+<CJK_UNIFIED_IDEOGRAPH-3029D> 2
+<CJK_UNIFIED_IDEOGRAPH-3029E> 2
+<CJK_UNIFIED_IDEOGRAPH-3029F> 2
+<CJK_UNIFIED_IDEOGRAPH-302A0> 2
+<CJK_UNIFIED_IDEOGRAPH-302A1> 2
+<CJK_UNIFIED_IDEOGRAPH-302A2> 2
+<CJK_UNIFIED_IDEOGRAPH-302A3> 2
+<CJK_UNIFIED_IDEOGRAPH-302A4> 2
+<CJK_UNIFIED_IDEOGRAPH-302A5> 2
+<CJK_UNIFIED_IDEOGRAPH-302A6> 2
+<CJK_UNIFIED_IDEOGRAPH-302A7> 2
+<CJK_UNIFIED_IDEOGRAPH-302A8> 2
+<CJK_UNIFIED_IDEOGRAPH-302A9> 2
+<CJK_UNIFIED_IDEOGRAPH-302AA> 2
+<CJK_UNIFIED_IDEOGRAPH-302AB> 2
+<CJK_UNIFIED_IDEOGRAPH-302AC> 2
+<CJK_UNIFIED_IDEOGRAPH-302AD> 2
+<CJK_UNIFIED_IDEOGRAPH-302AE> 2
+<CJK_UNIFIED_IDEOGRAPH-302AF> 2
+<CJK_UNIFIED_IDEOGRAPH-302B0> 2
+<CJK_UNIFIED_IDEOGRAPH-302B1> 2
+<CJK_UNIFIED_IDEOGRAPH-302B2> 2
+<CJK_UNIFIED_IDEOGRAPH-302B3> 2
+<CJK_UNIFIED_IDEOGRAPH-302B4> 2
+<CJK_UNIFIED_IDEOGRAPH-302B5> 2
+<CJK_UNIFIED_IDEOGRAPH-302B6> 2
+<CJK_UNIFIED_IDEOGRAPH-302B7> 2
+<CJK_UNIFIED_IDEOGRAPH-302B8> 2
+<CJK_UNIFIED_IDEOGRAPH-302B9> 2
+<CJK_UNIFIED_IDEOGRAPH-302BA> 2
+<CJK_UNIFIED_IDEOGRAPH-302BB> 2
+<CJK_UNIFIED_IDEOGRAPH-302BC> 2
+<CJK_UNIFIED_IDEOGRAPH-302BD> 2
+<CJK_UNIFIED_IDEOGRAPH-302BE> 2
+<CJK_UNIFIED_IDEOGRAPH-302BF> 2
+<CJK_UNIFIED_IDEOGRAPH-302C0> 2
+<CJK_UNIFIED_IDEOGRAPH-302C1> 2
+<CJK_UNIFIED_IDEOGRAPH-302C2> 2
+<CJK_UNIFIED_IDEOGRAPH-302C3> 2
+<CJK_UNIFIED_IDEOGRAPH-302C4> 2
+<CJK_UNIFIED_IDEOGRAPH-302C5> 2
+<CJK_UNIFIED_IDEOGRAPH-302C6> 2
+<CJK_UNIFIED_IDEOGRAPH-302C7> 2
+<CJK_UNIFIED_IDEOGRAPH-302C8> 2
+<CJK_UNIFIED_IDEOGRAPH-302C9> 2
+<CJK_UNIFIED_IDEOGRAPH-302CA> 2
+<CJK_UNIFIED_IDEOGRAPH-302CB> 2
+<CJK_UNIFIED_IDEOGRAPH-302CC> 2
+<CJK_UNIFIED_IDEOGRAPH-302CD> 2
+<CJK_UNIFIED_IDEOGRAPH-302CE> 2
+<CJK_UNIFIED_IDEOGRAPH-302CF> 2
+<CJK_UNIFIED_IDEOGRAPH-302D0> 2
+<CJK_UNIFIED_IDEOGRAPH-302D1> 2
+<CJK_UNIFIED_IDEOGRAPH-302D2> 2
+<CJK_UNIFIED_IDEOGRAPH-302D3> 2
+<CJK_UNIFIED_IDEOGRAPH-302D4> 2
+<CJK_UNIFIED_IDEOGRAPH-302D5> 2
+<CJK_UNIFIED_IDEOGRAPH-302D6> 2
+<CJK_UNIFIED_IDEOGRAPH-302D7> 2
+<CJK_UNIFIED_IDEOGRAPH-302D8> 2
+<CJK_UNIFIED_IDEOGRAPH-302D9> 2
+<CJK_UNIFIED_IDEOGRAPH-302DA> 2
+<CJK_UNIFIED_IDEOGRAPH-302DB> 2
+<CJK_UNIFIED_IDEOGRAPH-302DC> 2
+<CJK_UNIFIED_IDEOGRAPH-302DD> 2
+<CJK_UNIFIED_IDEOGRAPH-302DE> 2
+<CJK_UNIFIED_IDEOGRAPH-302DF> 2
+<CJK_UNIFIED_IDEOGRAPH-302E0> 2
+<CJK_UNIFIED_IDEOGRAPH-302E1> 2
+<CJK_UNIFIED_IDEOGRAPH-302E2> 2
+<CJK_UNIFIED_IDEOGRAPH-302E3> 2
+<CJK_UNIFIED_IDEOGRAPH-302E4> 2
+<CJK_UNIFIED_IDEOGRAPH-302E5> 2
+<CJK_UNIFIED_IDEOGRAPH-302E6> 2
+<CJK_UNIFIED_IDEOGRAPH-302E7> 2
+<CJK_UNIFIED_IDEOGRAPH-302E8> 2
+<CJK_UNIFIED_IDEOGRAPH-302E9> 2
+<CJK_UNIFIED_IDEOGRAPH-302EA> 2
+<CJK_UNIFIED_IDEOGRAPH-302EB> 2
+<CJK_UNIFIED_IDEOGRAPH-302EC> 2
+<CJK_UNIFIED_IDEOGRAPH-302ED> 2
+<CJK_UNIFIED_IDEOGRAPH-302EE> 2
+<CJK_UNIFIED_IDEOGRAPH-302EF> 2
+<CJK_UNIFIED_IDEOGRAPH-302F0> 2
+<CJK_UNIFIED_IDEOGRAPH-302F1> 2
+<CJK_UNIFIED_IDEOGRAPH-302F2> 2
+<CJK_UNIFIED_IDEOGRAPH-302F3> 2
+<CJK_UNIFIED_IDEOGRAPH-302F4> 2
+<CJK_UNIFIED_IDEOGRAPH-302F5> 2
+<CJK_UNIFIED_IDEOGRAPH-302F6> 2
+<CJK_UNIFIED_IDEOGRAPH-302F7> 2
+<CJK_UNIFIED_IDEOGRAPH-302F8> 2
+<CJK_UNIFIED_IDEOGRAPH-302F9> 2
+<CJK_UNIFIED_IDEOGRAPH-302FA> 2
+<CJK_UNIFIED_IDEOGRAPH-302FB> 2
+<CJK_UNIFIED_IDEOGRAPH-302FC> 2
+<CJK_UNIFIED_IDEOGRAPH-302FD> 2
+<CJK_UNIFIED_IDEOGRAPH-302FE> 2
+<CJK_UNIFIED_IDEOGRAPH-302FF> 2
+<CJK_UNIFIED_IDEOGRAPH-30300> 2
+<CJK_UNIFIED_IDEOGRAPH-30301> 2
+<CJK_UNIFIED_IDEOGRAPH-30302> 2
+<CJK_UNIFIED_IDEOGRAPH-30303> 2
+<CJK_UNIFIED_IDEOGRAPH-30304> 2
+<CJK_UNIFIED_IDEOGRAPH-30305> 2
+<CJK_UNIFIED_IDEOGRAPH-30306> 2
+<CJK_UNIFIED_IDEOGRAPH-30307> 2
+<CJK_UNIFIED_IDEOGRAPH-30308> 2
+<CJK_UNIFIED_IDEOGRAPH-30309> 2
+<CJK_UNIFIED_IDEOGRAPH-3030A> 2
+<CJK_UNIFIED_IDEOGRAPH-3030B> 2
+<CJK_UNIFIED_IDEOGRAPH-3030C> 2
+<CJK_UNIFIED_IDEOGRAPH-3030D> 2
+<CJK_UNIFIED_IDEOGRAPH-3030E> 2
+<CJK_UNIFIED_IDEOGRAPH-3030F> 2
+<CJK_UNIFIED_IDEOGRAPH-30310> 2
+<CJK_UNIFIED_IDEOGRAPH-30311> 2
+<CJK_UNIFIED_IDEOGRAPH-30312> 2
+<CJK_UNIFIED_IDEOGRAPH-30313> 2
+<CJK_UNIFIED_IDEOGRAPH-30314> 2
+<CJK_UNIFIED_IDEOGRAPH-30315> 2
+<CJK_UNIFIED_IDEOGRAPH-30316> 2
+<CJK_UNIFIED_IDEOGRAPH-30317> 2
+<CJK_UNIFIED_IDEOGRAPH-30318> 2
+<CJK_UNIFIED_IDEOGRAPH-30319> 2
+<CJK_UNIFIED_IDEOGRAPH-3031A> 2
+<CJK_UNIFIED_IDEOGRAPH-3031B> 2
+<CJK_UNIFIED_IDEOGRAPH-3031C> 2
+<CJK_UNIFIED_IDEOGRAPH-3031D> 2
+<CJK_UNIFIED_IDEOGRAPH-3031E> 2
+<CJK_UNIFIED_IDEOGRAPH-3031F> 2
+<CJK_UNIFIED_IDEOGRAPH-30320> 2
+<CJK_UNIFIED_IDEOGRAPH-30321> 2
+<CJK_UNIFIED_IDEOGRAPH-30322> 2
+<CJK_UNIFIED_IDEOGRAPH-30323> 2
+<CJK_UNIFIED_IDEOGRAPH-30324> 2
+<CJK_UNIFIED_IDEOGRAPH-30325> 2
+<CJK_UNIFIED_IDEOGRAPH-30326> 2
+<CJK_UNIFIED_IDEOGRAPH-30327> 2
+<CJK_UNIFIED_IDEOGRAPH-30328> 2
+<CJK_UNIFIED_IDEOGRAPH-30329> 2
+<CJK_UNIFIED_IDEOGRAPH-3032A> 2
+<CJK_UNIFIED_IDEOGRAPH-3032B> 2
+<CJK_UNIFIED_IDEOGRAPH-3032C> 2
+<CJK_UNIFIED_IDEOGRAPH-3032D> 2
+<CJK_UNIFIED_IDEOGRAPH-3032E> 2
+<CJK_UNIFIED_IDEOGRAPH-3032F> 2
+<CJK_UNIFIED_IDEOGRAPH-30330> 2
+<CJK_UNIFIED_IDEOGRAPH-30331> 2
+<CJK_UNIFIED_IDEOGRAPH-30332> 2
+<CJK_UNIFIED_IDEOGRAPH-30333> 2
+<CJK_UNIFIED_IDEOGRAPH-30334> 2
+<CJK_UNIFIED_IDEOGRAPH-30335> 2
+<CJK_UNIFIED_IDEOGRAPH-30336> 2
+<CJK_UNIFIED_IDEOGRAPH-30337> 2
+<CJK_UNIFIED_IDEOGRAPH-30338> 2
+<CJK_UNIFIED_IDEOGRAPH-30339> 2
+<CJK_UNIFIED_IDEOGRAPH-3033A> 2
+<CJK_UNIFIED_IDEOGRAPH-3033B> 2
+<CJK_UNIFIED_IDEOGRAPH-3033C> 2
+<CJK_UNIFIED_IDEOGRAPH-3033D> 2
+<CJK_UNIFIED_IDEOGRAPH-3033E> 2
+<CJK_UNIFIED_IDEOGRAPH-3033F> 2
+<CJK_UNIFIED_IDEOGRAPH-30340> 2
+<CJK_UNIFIED_IDEOGRAPH-30341> 2
+<CJK_UNIFIED_IDEOGRAPH-30342> 2
+<CJK_UNIFIED_IDEOGRAPH-30343> 2
+<CJK_UNIFIED_IDEOGRAPH-30344> 2
+<CJK_UNIFIED_IDEOGRAPH-30345> 2
+<CJK_UNIFIED_IDEOGRAPH-30346> 2
+<CJK_UNIFIED_IDEOGRAPH-30347> 2
+<CJK_UNIFIED_IDEOGRAPH-30348> 2
+<CJK_UNIFIED_IDEOGRAPH-30349> 2
+<CJK_UNIFIED_IDEOGRAPH-3034A> 2
+<CJK_UNIFIED_IDEOGRAPH-3034B> 2
+<CJK_UNIFIED_IDEOGRAPH-3034C> 2
+<CJK_UNIFIED_IDEOGRAPH-3034D> 2
+<CJK_UNIFIED_IDEOGRAPH-3034E> 2
+<CJK_UNIFIED_IDEOGRAPH-3034F> 2
+<CJK_UNIFIED_IDEOGRAPH-30350> 2
+<CJK_UNIFIED_IDEOGRAPH-30351> 2
+<CJK_UNIFIED_IDEOGRAPH-30352> 2
+<CJK_UNIFIED_IDEOGRAPH-30353> 2
+<CJK_UNIFIED_IDEOGRAPH-30354> 2
+<CJK_UNIFIED_IDEOGRAPH-30355> 2
+<CJK_UNIFIED_IDEOGRAPH-30356> 2
+<CJK_UNIFIED_IDEOGRAPH-30357> 2
+<CJK_UNIFIED_IDEOGRAPH-30358> 2
+<CJK_UNIFIED_IDEOGRAPH-30359> 2
+<CJK_UNIFIED_IDEOGRAPH-3035A> 2
+<CJK_UNIFIED_IDEOGRAPH-3035B> 2
+<CJK_UNIFIED_IDEOGRAPH-3035C> 2
+<CJK_UNIFIED_IDEOGRAPH-3035D> 2
+<CJK_UNIFIED_IDEOGRAPH-3035E> 2
+<CJK_UNIFIED_IDEOGRAPH-3035F> 2
+<CJK_UNIFIED_IDEOGRAPH-30360> 2
+<CJK_UNIFIED_IDEOGRAPH-30361> 2
+<CJK_UNIFIED_IDEOGRAPH-30362> 2
+<CJK_UNIFIED_IDEOGRAPH-30363> 2
+<CJK_UNIFIED_IDEOGRAPH-30364> 2
+<CJK_UNIFIED_IDEOGRAPH-30365> 2
+<CJK_UNIFIED_IDEOGRAPH-30366> 2
+<CJK_UNIFIED_IDEOGRAPH-30367> 2
+<CJK_UNIFIED_IDEOGRAPH-30368> 2
+<CJK_UNIFIED_IDEOGRAPH-30369> 2
+<CJK_UNIFIED_IDEOGRAPH-3036A> 2
+<CJK_UNIFIED_IDEOGRAPH-3036B> 2
+<CJK_UNIFIED_IDEOGRAPH-3036C> 2
+<CJK_UNIFIED_IDEOGRAPH-3036D> 2
+<CJK_UNIFIED_IDEOGRAPH-3036E> 2
+<CJK_UNIFIED_IDEOGRAPH-3036F> 2
+<CJK_UNIFIED_IDEOGRAPH-30370> 2
+<CJK_UNIFIED_IDEOGRAPH-30371> 2
+<CJK_UNIFIED_IDEOGRAPH-30372> 2
+<CJK_UNIFIED_IDEOGRAPH-30373> 2
+<CJK_UNIFIED_IDEOGRAPH-30374> 2
+<CJK_UNIFIED_IDEOGRAPH-30375> 2
+<CJK_UNIFIED_IDEOGRAPH-30376> 2
+<CJK_UNIFIED_IDEOGRAPH-30377> 2
+<CJK_UNIFIED_IDEOGRAPH-30378> 2
+<CJK_UNIFIED_IDEOGRAPH-30379> 2
+<CJK_UNIFIED_IDEOGRAPH-3037A> 2
+<CJK_UNIFIED_IDEOGRAPH-3037B> 2
+<CJK_UNIFIED_IDEOGRAPH-3037C> 2
+<CJK_UNIFIED_IDEOGRAPH-3037D> 2
+<CJK_UNIFIED_IDEOGRAPH-3037E> 2
+<CJK_UNIFIED_IDEOGRAPH-3037F> 2
+<CJK_UNIFIED_IDEOGRAPH-30380> 2
+<CJK_UNIFIED_IDEOGRAPH-30381> 2
+<CJK_UNIFIED_IDEOGRAPH-30382> 2
+<CJK_UNIFIED_IDEOGRAPH-30383> 2
+<CJK_UNIFIED_IDEOGRAPH-30384> 2
+<CJK_UNIFIED_IDEOGRAPH-30385> 2
+<CJK_UNIFIED_IDEOGRAPH-30386> 2
+<CJK_UNIFIED_IDEOGRAPH-30387> 2
+<CJK_UNIFIED_IDEOGRAPH-30388> 2
+<CJK_UNIFIED_IDEOGRAPH-30389> 2
+<CJK_UNIFIED_IDEOGRAPH-3038A> 2
+<CJK_UNIFIED_IDEOGRAPH-3038B> 2
+<CJK_UNIFIED_IDEOGRAPH-3038C> 2
+<CJK_UNIFIED_IDEOGRAPH-3038D> 2
+<CJK_UNIFIED_IDEOGRAPH-3038E> 2
+<CJK_UNIFIED_IDEOGRAPH-3038F> 2
+<CJK_UNIFIED_IDEOGRAPH-30390> 2
+<CJK_UNIFIED_IDEOGRAPH-30391> 2
+<CJK_UNIFIED_IDEOGRAPH-30392> 2
+<CJK_UNIFIED_IDEOGRAPH-30393> 2
+<CJK_UNIFIED_IDEOGRAPH-30394> 2
+<CJK_UNIFIED_IDEOGRAPH-30395> 2
+<CJK_UNIFIED_IDEOGRAPH-30396> 2
+<CJK_UNIFIED_IDEOGRAPH-30397> 2
+<CJK_UNIFIED_IDEOGRAPH-30398> 2
+<CJK_UNIFIED_IDEOGRAPH-30399> 2
+<CJK_UNIFIED_IDEOGRAPH-3039A> 2
+<CJK_UNIFIED_IDEOGRAPH-3039B> 2
+<CJK_UNIFIED_IDEOGRAPH-3039C> 2
+<CJK_UNIFIED_IDEOGRAPH-3039D> 2
+<CJK_UNIFIED_IDEOGRAPH-3039E> 2
+<CJK_UNIFIED_IDEOGRAPH-3039F> 2
+<CJK_UNIFIED_IDEOGRAPH-303A0> 2
+<CJK_UNIFIED_IDEOGRAPH-303A1> 2
+<CJK_UNIFIED_IDEOGRAPH-303A2> 2
+<CJK_UNIFIED_IDEOGRAPH-303A3> 2
+<CJK_UNIFIED_IDEOGRAPH-303A4> 2
+<CJK_UNIFIED_IDEOGRAPH-303A5> 2
+<CJK_UNIFIED_IDEOGRAPH-303A6> 2
+<CJK_UNIFIED_IDEOGRAPH-303A7> 2
+<CJK_UNIFIED_IDEOGRAPH-303A8> 2
+<CJK_UNIFIED_IDEOGRAPH-303A9> 2
+<CJK_UNIFIED_IDEOGRAPH-303AA> 2
+<CJK_UNIFIED_IDEOGRAPH-303AB> 2
+<CJK_UNIFIED_IDEOGRAPH-303AC> 2
+<CJK_UNIFIED_IDEOGRAPH-303AD> 2
+<CJK_UNIFIED_IDEOGRAPH-303AE> 2
+<CJK_UNIFIED_IDEOGRAPH-303AF> 2
+<CJK_UNIFIED_IDEOGRAPH-303B0> 2
+<CJK_UNIFIED_IDEOGRAPH-303B1> 2
+<CJK_UNIFIED_IDEOGRAPH-303B2> 2
+<CJK_UNIFIED_IDEOGRAPH-303B3> 2
+<CJK_UNIFIED_IDEOGRAPH-303B4> 2
+<CJK_UNIFIED_IDEOGRAPH-303B5> 2
+<CJK_UNIFIED_IDEOGRAPH-303B6> 2
+<CJK_UNIFIED_IDEOGRAPH-303B7> 2
+<CJK_UNIFIED_IDEOGRAPH-303B8> 2
+<CJK_UNIFIED_IDEOGRAPH-303B9> 2
+<CJK_UNIFIED_IDEOGRAPH-303BA> 2
+<CJK_UNIFIED_IDEOGRAPH-303BB> 2
+<CJK_UNIFIED_IDEOGRAPH-303BC> 2
+<CJK_UNIFIED_IDEOGRAPH-303BD> 2
+<CJK_UNIFIED_IDEOGRAPH-303BE> 2
+<CJK_UNIFIED_IDEOGRAPH-303BF> 2
+<CJK_UNIFIED_IDEOGRAPH-303C0> 2
+<CJK_UNIFIED_IDEOGRAPH-303C1> 2
+<CJK_UNIFIED_IDEOGRAPH-303C2> 2
+<CJK_UNIFIED_IDEOGRAPH-303C3> 2
+<CJK_UNIFIED_IDEOGRAPH-303C4> 2
+<CJK_UNIFIED_IDEOGRAPH-303C5> 2
+<CJK_UNIFIED_IDEOGRAPH-303C6> 2
+<CJK_UNIFIED_IDEOGRAPH-303C7> 2
+<CJK_UNIFIED_IDEOGRAPH-303C8> 2
+<CJK_UNIFIED_IDEOGRAPH-303C9> 2
+<CJK_UNIFIED_IDEOGRAPH-303CA> 2
+<CJK_UNIFIED_IDEOGRAPH-303CB> 2
+<CJK_UNIFIED_IDEOGRAPH-303CC> 2
+<CJK_UNIFIED_IDEOGRAPH-303CD> 2
+<CJK_UNIFIED_IDEOGRAPH-303CE> 2
+<CJK_UNIFIED_IDEOGRAPH-303CF> 2
+<CJK_UNIFIED_IDEOGRAPH-303D0> 2
+<CJK_UNIFIED_IDEOGRAPH-303D1> 2
+<CJK_UNIFIED_IDEOGRAPH-303D2> 2
+<CJK_UNIFIED_IDEOGRAPH-303D3> 2
+<CJK_UNIFIED_IDEOGRAPH-303D4> 2
+<CJK_UNIFIED_IDEOGRAPH-303D5> 2
+<CJK_UNIFIED_IDEOGRAPH-303D6> 2
+<CJK_UNIFIED_IDEOGRAPH-303D7> 2
+<CJK_UNIFIED_IDEOGRAPH-303D8> 2
+<CJK_UNIFIED_IDEOGRAPH-303D9> 2
+<CJK_UNIFIED_IDEOGRAPH-303DA> 2
+<CJK_UNIFIED_IDEOGRAPH-303DB> 2
+<CJK_UNIFIED_IDEOGRAPH-303DC> 2
+<CJK_UNIFIED_IDEOGRAPH-303DD> 2
+<CJK_UNIFIED_IDEOGRAPH-303DE> 2
+<CJK_UNIFIED_IDEOGRAPH-303DF> 2
+<CJK_UNIFIED_IDEOGRAPH-303E0> 2
+<CJK_UNIFIED_IDEOGRAPH-303E1> 2
+<CJK_UNIFIED_IDEOGRAPH-303E2> 2
+<CJK_UNIFIED_IDEOGRAPH-303E3> 2
+<CJK_UNIFIED_IDEOGRAPH-303E4> 2
+<CJK_UNIFIED_IDEOGRAPH-303E5> 2
+<CJK_UNIFIED_IDEOGRAPH-303E6> 2
+<CJK_UNIFIED_IDEOGRAPH-303E7> 2
+<CJK_UNIFIED_IDEOGRAPH-303E8> 2
+<CJK_UNIFIED_IDEOGRAPH-303E9> 2
+<CJK_UNIFIED_IDEOGRAPH-303EA> 2
+<CJK_UNIFIED_IDEOGRAPH-303EB> 2
+<CJK_UNIFIED_IDEOGRAPH-303EC> 2
+<CJK_UNIFIED_IDEOGRAPH-303ED> 2
+<CJK_UNIFIED_IDEOGRAPH-303EE> 2
+<CJK_UNIFIED_IDEOGRAPH-303EF> 2
+<CJK_UNIFIED_IDEOGRAPH-303F0> 2
+<CJK_UNIFIED_IDEOGRAPH-303F1> 2
+<CJK_UNIFIED_IDEOGRAPH-303F2> 2
+<CJK_UNIFIED_IDEOGRAPH-303F3> 2
+<CJK_UNIFIED_IDEOGRAPH-303F4> 2
+<CJK_UNIFIED_IDEOGRAPH-303F5> 2
+<CJK_UNIFIED_IDEOGRAPH-303F6> 2
+<CJK_UNIFIED_IDEOGRAPH-303F7> 2
+<CJK_UNIFIED_IDEOGRAPH-303F8> 2
+<CJK_UNIFIED_IDEOGRAPH-303F9> 2
+<CJK_UNIFIED_IDEOGRAPH-303FA> 2
+<CJK_UNIFIED_IDEOGRAPH-303FB> 2
+<CJK_UNIFIED_IDEOGRAPH-303FC> 2
+<CJK_UNIFIED_IDEOGRAPH-303FD> 2
+<CJK_UNIFIED_IDEOGRAPH-303FE> 2
+<CJK_UNIFIED_IDEOGRAPH-303FF> 2
+<CJK_UNIFIED_IDEOGRAPH-30400> 2
+<CJK_UNIFIED_IDEOGRAPH-30401> 2
+<CJK_UNIFIED_IDEOGRAPH-30402> 2
+<CJK_UNIFIED_IDEOGRAPH-30403> 2
+<CJK_UNIFIED_IDEOGRAPH-30404> 2
+<CJK_UNIFIED_IDEOGRAPH-30405> 2
+<CJK_UNIFIED_IDEOGRAPH-30406> 2
+<CJK_UNIFIED_IDEOGRAPH-30407> 2
+<CJK_UNIFIED_IDEOGRAPH-30408> 2
+<CJK_UNIFIED_IDEOGRAPH-30409> 2
+<CJK_UNIFIED_IDEOGRAPH-3040A> 2
+<CJK_UNIFIED_IDEOGRAPH-3040B> 2
+<CJK_UNIFIED_IDEOGRAPH-3040C> 2
+<CJK_UNIFIED_IDEOGRAPH-3040D> 2
+<CJK_UNIFIED_IDEOGRAPH-3040E> 2
+<CJK_UNIFIED_IDEOGRAPH-3040F> 2
+<CJK_UNIFIED_IDEOGRAPH-30410> 2
+<CJK_UNIFIED_IDEOGRAPH-30411> 2
+<CJK_UNIFIED_IDEOGRAPH-30412> 2
+<CJK_UNIFIED_IDEOGRAPH-30413> 2
+<CJK_UNIFIED_IDEOGRAPH-30414> 2
+<CJK_UNIFIED_IDEOGRAPH-30415> 2
+<CJK_UNIFIED_IDEOGRAPH-30416> 2
+<CJK_UNIFIED_IDEOGRAPH-30417> 2
+<CJK_UNIFIED_IDEOGRAPH-30418> 2
+<CJK_UNIFIED_IDEOGRAPH-30419> 2
+<CJK_UNIFIED_IDEOGRAPH-3041A> 2
+<CJK_UNIFIED_IDEOGRAPH-3041B> 2
+<CJK_UNIFIED_IDEOGRAPH-3041C> 2
+<CJK_UNIFIED_IDEOGRAPH-3041D> 2
+<CJK_UNIFIED_IDEOGRAPH-3041E> 2
+<CJK_UNIFIED_IDEOGRAPH-3041F> 2
+<CJK_UNIFIED_IDEOGRAPH-30420> 2
+<CJK_UNIFIED_IDEOGRAPH-30421> 2
+<CJK_UNIFIED_IDEOGRAPH-30422> 2
+<CJK_UNIFIED_IDEOGRAPH-30423> 2
+<CJK_UNIFIED_IDEOGRAPH-30424> 2
+<CJK_UNIFIED_IDEOGRAPH-30425> 2
+<CJK_UNIFIED_IDEOGRAPH-30426> 2
+<CJK_UNIFIED_IDEOGRAPH-30427> 2
+<CJK_UNIFIED_IDEOGRAPH-30428> 2
+<CJK_UNIFIED_IDEOGRAPH-30429> 2
+<CJK_UNIFIED_IDEOGRAPH-3042A> 2
+<CJK_UNIFIED_IDEOGRAPH-3042B> 2
+<CJK_UNIFIED_IDEOGRAPH-3042C> 2
+<CJK_UNIFIED_IDEOGRAPH-3042D> 2
+<CJK_UNIFIED_IDEOGRAPH-3042E> 2
+<CJK_UNIFIED_IDEOGRAPH-3042F> 2
+<CJK_UNIFIED_IDEOGRAPH-30430> 2
+<CJK_UNIFIED_IDEOGRAPH-30431> 2
+<CJK_UNIFIED_IDEOGRAPH-30432> 2
+<CJK_UNIFIED_IDEOGRAPH-30433> 2
+<CJK_UNIFIED_IDEOGRAPH-30434> 2
+<CJK_UNIFIED_IDEOGRAPH-30435> 2
+<CJK_UNIFIED_IDEOGRAPH-30436> 2
+<CJK_UNIFIED_IDEOGRAPH-30437> 2
+<CJK_UNIFIED_IDEOGRAPH-30438> 2
+<CJK_UNIFIED_IDEOGRAPH-30439> 2
+<CJK_UNIFIED_IDEOGRAPH-3043A> 2
+<CJK_UNIFIED_IDEOGRAPH-3043B> 2
+<CJK_UNIFIED_IDEOGRAPH-3043C> 2
+<CJK_UNIFIED_IDEOGRAPH-3043D> 2
+<CJK_UNIFIED_IDEOGRAPH-3043E> 2
+<CJK_UNIFIED_IDEOGRAPH-3043F> 2
+<CJK_UNIFIED_IDEOGRAPH-30440> 2
+<CJK_UNIFIED_IDEOGRAPH-30441> 2
+<CJK_UNIFIED_IDEOGRAPH-30442> 2
+<CJK_UNIFIED_IDEOGRAPH-30443> 2
+<CJK_UNIFIED_IDEOGRAPH-30444> 2
+<CJK_UNIFIED_IDEOGRAPH-30445> 2
+<CJK_UNIFIED_IDEOGRAPH-30446> 2
+<CJK_UNIFIED_IDEOGRAPH-30447> 2
+<CJK_UNIFIED_IDEOGRAPH-30448> 2
+<CJK_UNIFIED_IDEOGRAPH-30449> 2
+<CJK_UNIFIED_IDEOGRAPH-3044A> 2
+<CJK_UNIFIED_IDEOGRAPH-3044B> 2
+<CJK_UNIFIED_IDEOGRAPH-3044C> 2
+<CJK_UNIFIED_IDEOGRAPH-3044D> 2
+<CJK_UNIFIED_IDEOGRAPH-3044E> 2
+<CJK_UNIFIED_IDEOGRAPH-3044F> 2
+<CJK_UNIFIED_IDEOGRAPH-30450> 2
+<CJK_UNIFIED_IDEOGRAPH-30451> 2
+<CJK_UNIFIED_IDEOGRAPH-30452> 2
+<CJK_UNIFIED_IDEOGRAPH-30453> 2
+<CJK_UNIFIED_IDEOGRAPH-30454> 2
+<CJK_UNIFIED_IDEOGRAPH-30455> 2
+<CJK_UNIFIED_IDEOGRAPH-30456> 2
+<CJK_UNIFIED_IDEOGRAPH-30457> 2
+<CJK_UNIFIED_IDEOGRAPH-30458> 2
+<CJK_UNIFIED_IDEOGRAPH-30459> 2
+<CJK_UNIFIED_IDEOGRAPH-3045A> 2
+<CJK_UNIFIED_IDEOGRAPH-3045B> 2
+<CJK_UNIFIED_IDEOGRAPH-3045C> 2
+<CJK_UNIFIED_IDEOGRAPH-3045D> 2
+<CJK_UNIFIED_IDEOGRAPH-3045E> 2
+<CJK_UNIFIED_IDEOGRAPH-3045F> 2
+<CJK_UNIFIED_IDEOGRAPH-30460> 2
+<CJK_UNIFIED_IDEOGRAPH-30461> 2
+<CJK_UNIFIED_IDEOGRAPH-30462> 2
+<CJK_UNIFIED_IDEOGRAPH-30463> 2
+<CJK_UNIFIED_IDEOGRAPH-30464> 2
+<CJK_UNIFIED_IDEOGRAPH-30465> 2
+<CJK_UNIFIED_IDEOGRAPH-30466> 2
+<CJK_UNIFIED_IDEOGRAPH-30467> 2
+<CJK_UNIFIED_IDEOGRAPH-30468> 2
+<CJK_UNIFIED_IDEOGRAPH-30469> 2
+<CJK_UNIFIED_IDEOGRAPH-3046A> 2
+<CJK_UNIFIED_IDEOGRAPH-3046B> 2
+<CJK_UNIFIED_IDEOGRAPH-3046C> 2
+<CJK_UNIFIED_IDEOGRAPH-3046D> 2
+<CJK_UNIFIED_IDEOGRAPH-3046E> 2
+<CJK_UNIFIED_IDEOGRAPH-3046F> 2
+<CJK_UNIFIED_IDEOGRAPH-30470> 2
+<CJK_UNIFIED_IDEOGRAPH-30471> 2
+<CJK_UNIFIED_IDEOGRAPH-30472> 2
+<CJK_UNIFIED_IDEOGRAPH-30473> 2
+<CJK_UNIFIED_IDEOGRAPH-30474> 2
+<CJK_UNIFIED_IDEOGRAPH-30475> 2
+<CJK_UNIFIED_IDEOGRAPH-30476> 2
+<CJK_UNIFIED_IDEOGRAPH-30477> 2
+<CJK_UNIFIED_IDEOGRAPH-30478> 2
+<CJK_UNIFIED_IDEOGRAPH-30479> 2
+<CJK_UNIFIED_IDEOGRAPH-3047A> 2
+<CJK_UNIFIED_IDEOGRAPH-3047B> 2
+<CJK_UNIFIED_IDEOGRAPH-3047C> 2
+<CJK_UNIFIED_IDEOGRAPH-3047D> 2
+<CJK_UNIFIED_IDEOGRAPH-3047E> 2
+<CJK_UNIFIED_IDEOGRAPH-3047F> 2
+<CJK_UNIFIED_IDEOGRAPH-30480> 2
+<CJK_UNIFIED_IDEOGRAPH-30481> 2
+<CJK_UNIFIED_IDEOGRAPH-30482> 2
+<CJK_UNIFIED_IDEOGRAPH-30483> 2
+<CJK_UNIFIED_IDEOGRAPH-30484> 2
+<CJK_UNIFIED_IDEOGRAPH-30485> 2
+<CJK_UNIFIED_IDEOGRAPH-30486> 2
+<CJK_UNIFIED_IDEOGRAPH-30487> 2
+<CJK_UNIFIED_IDEOGRAPH-30488> 2
+<CJK_UNIFIED_IDEOGRAPH-30489> 2
+<CJK_UNIFIED_IDEOGRAPH-3048A> 2
+<CJK_UNIFIED_IDEOGRAPH-3048B> 2
+<CJK_UNIFIED_IDEOGRAPH-3048C> 2
+<CJK_UNIFIED_IDEOGRAPH-3048D> 2
+<CJK_UNIFIED_IDEOGRAPH-3048E> 2
+<CJK_UNIFIED_IDEOGRAPH-3048F> 2
+<CJK_UNIFIED_IDEOGRAPH-30490> 2
+<CJK_UNIFIED_IDEOGRAPH-30491> 2
+<CJK_UNIFIED_IDEOGRAPH-30492> 2
+<CJK_UNIFIED_IDEOGRAPH-30493> 2
+<CJK_UNIFIED_IDEOGRAPH-30494> 2
+<CJK_UNIFIED_IDEOGRAPH-30495> 2
+<CJK_UNIFIED_IDEOGRAPH-30496> 2
+<CJK_UNIFIED_IDEOGRAPH-30497> 2
+<CJK_UNIFIED_IDEOGRAPH-30498> 2
+<CJK_UNIFIED_IDEOGRAPH-30499> 2
+<CJK_UNIFIED_IDEOGRAPH-3049A> 2
+<CJK_UNIFIED_IDEOGRAPH-3049B> 2
+<CJK_UNIFIED_IDEOGRAPH-3049C> 2
+<CJK_UNIFIED_IDEOGRAPH-3049D> 2
+<CJK_UNIFIED_IDEOGRAPH-3049E> 2
+<CJK_UNIFIED_IDEOGRAPH-3049F> 2
+<CJK_UNIFIED_IDEOGRAPH-304A0> 2
+<CJK_UNIFIED_IDEOGRAPH-304A1> 2
+<CJK_UNIFIED_IDEOGRAPH-304A2> 2
+<CJK_UNIFIED_IDEOGRAPH-304A3> 2
+<CJK_UNIFIED_IDEOGRAPH-304A4> 2
+<CJK_UNIFIED_IDEOGRAPH-304A5> 2
+<CJK_UNIFIED_IDEOGRAPH-304A6> 2
+<CJK_UNIFIED_IDEOGRAPH-304A7> 2
+<CJK_UNIFIED_IDEOGRAPH-304A8> 2
+<CJK_UNIFIED_IDEOGRAPH-304A9> 2
+<CJK_UNIFIED_IDEOGRAPH-304AA> 2
+<CJK_UNIFIED_IDEOGRAPH-304AB> 2
+<CJK_UNIFIED_IDEOGRAPH-304AC> 2
+<CJK_UNIFIED_IDEOGRAPH-304AD> 2
+<CJK_UNIFIED_IDEOGRAPH-304AE> 2
+<CJK_UNIFIED_IDEOGRAPH-304AF> 2
+<CJK_UNIFIED_IDEOGRAPH-304B0> 2
+<CJK_UNIFIED_IDEOGRAPH-304B1> 2
+<CJK_UNIFIED_IDEOGRAPH-304B2> 2
+<CJK_UNIFIED_IDEOGRAPH-304B3> 2
+<CJK_UNIFIED_IDEOGRAPH-304B4> 2
+<CJK_UNIFIED_IDEOGRAPH-304B5> 2
+<CJK_UNIFIED_IDEOGRAPH-304B6> 2
+<CJK_UNIFIED_IDEOGRAPH-304B7> 2
+<CJK_UNIFIED_IDEOGRAPH-304B8> 2
+<CJK_UNIFIED_IDEOGRAPH-304B9> 2
+<CJK_UNIFIED_IDEOGRAPH-304BA> 2
+<CJK_UNIFIED_IDEOGRAPH-304BB> 2
+<CJK_UNIFIED_IDEOGRAPH-304BC> 2
+<CJK_UNIFIED_IDEOGRAPH-304BD> 2
+<CJK_UNIFIED_IDEOGRAPH-304BE> 2
+<CJK_UNIFIED_IDEOGRAPH-304BF> 2
+<CJK_UNIFIED_IDEOGRAPH-304C0> 2
+<CJK_UNIFIED_IDEOGRAPH-304C1> 2
+<CJK_UNIFIED_IDEOGRAPH-304C2> 2
+<CJK_UNIFIED_IDEOGRAPH-304C3> 2
+<CJK_UNIFIED_IDEOGRAPH-304C4> 2
+<CJK_UNIFIED_IDEOGRAPH-304C5> 2
+<CJK_UNIFIED_IDEOGRAPH-304C6> 2
+<CJK_UNIFIED_IDEOGRAPH-304C7> 2
+<CJK_UNIFIED_IDEOGRAPH-304C8> 2
+<CJK_UNIFIED_IDEOGRAPH-304C9> 2
+<CJK_UNIFIED_IDEOGRAPH-304CA> 2
+<CJK_UNIFIED_IDEOGRAPH-304CB> 2
+<CJK_UNIFIED_IDEOGRAPH-304CC> 2
+<CJK_UNIFIED_IDEOGRAPH-304CD> 2
+<CJK_UNIFIED_IDEOGRAPH-304CE> 2
+<CJK_UNIFIED_IDEOGRAPH-304CF> 2
+<CJK_UNIFIED_IDEOGRAPH-304D0> 2
+<CJK_UNIFIED_IDEOGRAPH-304D1> 2
+<CJK_UNIFIED_IDEOGRAPH-304D2> 2
+<CJK_UNIFIED_IDEOGRAPH-304D3> 2
+<CJK_UNIFIED_IDEOGRAPH-304D4> 2
+<CJK_UNIFIED_IDEOGRAPH-304D5> 2
+<CJK_UNIFIED_IDEOGRAPH-304D6> 2
+<CJK_UNIFIED_IDEOGRAPH-304D7> 2
+<CJK_UNIFIED_IDEOGRAPH-304D8> 2
+<CJK_UNIFIED_IDEOGRAPH-304D9> 2
+<CJK_UNIFIED_IDEOGRAPH-304DA> 2
+<CJK_UNIFIED_IDEOGRAPH-304DB> 2
+<CJK_UNIFIED_IDEOGRAPH-304DC> 2
+<CJK_UNIFIED_IDEOGRAPH-304DD> 2
+<CJK_UNIFIED_IDEOGRAPH-304DE> 2
+<CJK_UNIFIED_IDEOGRAPH-304DF> 2
+<CJK_UNIFIED_IDEOGRAPH-304E0> 2
+<CJK_UNIFIED_IDEOGRAPH-304E1> 2
+<CJK_UNIFIED_IDEOGRAPH-304E2> 2
+<CJK_UNIFIED_IDEOGRAPH-304E3> 2
+<CJK_UNIFIED_IDEOGRAPH-304E4> 2
+<CJK_UNIFIED_IDEOGRAPH-304E5> 2
+<CJK_UNIFIED_IDEOGRAPH-304E6> 2
+<CJK_UNIFIED_IDEOGRAPH-304E7> 2
+<CJK_UNIFIED_IDEOGRAPH-304E8> 2
+<CJK_UNIFIED_IDEOGRAPH-304E9> 2
+<CJK_UNIFIED_IDEOGRAPH-304EA> 2
+<CJK_UNIFIED_IDEOGRAPH-304EB> 2
+<CJK_UNIFIED_IDEOGRAPH-304EC> 2
+<CJK_UNIFIED_IDEOGRAPH-304ED> 2
+<CJK_UNIFIED_IDEOGRAPH-304EE> 2
+<CJK_UNIFIED_IDEOGRAPH-304EF> 2
+<CJK_UNIFIED_IDEOGRAPH-304F0> 2
+<CJK_UNIFIED_IDEOGRAPH-304F1> 2
+<CJK_UNIFIED_IDEOGRAPH-304F2> 2
+<CJK_UNIFIED_IDEOGRAPH-304F3> 2
+<CJK_UNIFIED_IDEOGRAPH-304F4> 2
+<CJK_UNIFIED_IDEOGRAPH-304F5> 2
+<CJK_UNIFIED_IDEOGRAPH-304F6> 2
+<CJK_UNIFIED_IDEOGRAPH-304F7> 2
+<CJK_UNIFIED_IDEOGRAPH-304F8> 2
+<CJK_UNIFIED_IDEOGRAPH-304F9> 2
+<CJK_UNIFIED_IDEOGRAPH-304FA> 2
+<CJK_UNIFIED_IDEOGRAPH-304FB> 2
+<CJK_UNIFIED_IDEOGRAPH-304FC> 2
+<CJK_UNIFIED_IDEOGRAPH-304FD> 2
+<CJK_UNIFIED_IDEOGRAPH-304FE> 2
+<CJK_UNIFIED_IDEOGRAPH-304FF> 2
+<CJK_UNIFIED_IDEOGRAPH-30500> 2
+<CJK_UNIFIED_IDEOGRAPH-30501> 2
+<CJK_UNIFIED_IDEOGRAPH-30502> 2
+<CJK_UNIFIED_IDEOGRAPH-30503> 2
+<CJK_UNIFIED_IDEOGRAPH-30504> 2
+<CJK_UNIFIED_IDEOGRAPH-30505> 2
+<CJK_UNIFIED_IDEOGRAPH-30506> 2
+<CJK_UNIFIED_IDEOGRAPH-30507> 2
+<CJK_UNIFIED_IDEOGRAPH-30508> 2
+<CJK_UNIFIED_IDEOGRAPH-30509> 2
+<CJK_UNIFIED_IDEOGRAPH-3050A> 2
+<CJK_UNIFIED_IDEOGRAPH-3050B> 2
+<CJK_UNIFIED_IDEOGRAPH-3050C> 2
+<CJK_UNIFIED_IDEOGRAPH-3050D> 2
+<CJK_UNIFIED_IDEOGRAPH-3050E> 2
+<CJK_UNIFIED_IDEOGRAPH-3050F> 2
+<CJK_UNIFIED_IDEOGRAPH-30510> 2
+<CJK_UNIFIED_IDEOGRAPH-30511> 2
+<CJK_UNIFIED_IDEOGRAPH-30512> 2
+<CJK_UNIFIED_IDEOGRAPH-30513> 2
+<CJK_UNIFIED_IDEOGRAPH-30514> 2
+<CJK_UNIFIED_IDEOGRAPH-30515> 2
+<CJK_UNIFIED_IDEOGRAPH-30516> 2
+<CJK_UNIFIED_IDEOGRAPH-30517> 2
+<CJK_UNIFIED_IDEOGRAPH-30518> 2
+<CJK_UNIFIED_IDEOGRAPH-30519> 2
+<CJK_UNIFIED_IDEOGRAPH-3051A> 2
+<CJK_UNIFIED_IDEOGRAPH-3051B> 2
+<CJK_UNIFIED_IDEOGRAPH-3051C> 2
+<CJK_UNIFIED_IDEOGRAPH-3051D> 2
+<CJK_UNIFIED_IDEOGRAPH-3051E> 2
+<CJK_UNIFIED_IDEOGRAPH-3051F> 2
+<CJK_UNIFIED_IDEOGRAPH-30520> 2
+<CJK_UNIFIED_IDEOGRAPH-30521> 2
+<CJK_UNIFIED_IDEOGRAPH-30522> 2
+<CJK_UNIFIED_IDEOGRAPH-30523> 2
+<CJK_UNIFIED_IDEOGRAPH-30524> 2
+<CJK_UNIFIED_IDEOGRAPH-30525> 2
+<CJK_UNIFIED_IDEOGRAPH-30526> 2
+<CJK_UNIFIED_IDEOGRAPH-30527> 2
+<CJK_UNIFIED_IDEOGRAPH-30528> 2
+<CJK_UNIFIED_IDEOGRAPH-30529> 2
+<CJK_UNIFIED_IDEOGRAPH-3052A> 2
+<CJK_UNIFIED_IDEOGRAPH-3052B> 2
+<CJK_UNIFIED_IDEOGRAPH-3052C> 2
+<CJK_UNIFIED_IDEOGRAPH-3052D> 2
+<CJK_UNIFIED_IDEOGRAPH-3052E> 2
+<CJK_UNIFIED_IDEOGRAPH-3052F> 2
+<CJK_UNIFIED_IDEOGRAPH-30530> 2
+<CJK_UNIFIED_IDEOGRAPH-30531> 2
+<CJK_UNIFIED_IDEOGRAPH-30532> 2
+<CJK_UNIFIED_IDEOGRAPH-30533> 2
+<CJK_UNIFIED_IDEOGRAPH-30534> 2
+<CJK_UNIFIED_IDEOGRAPH-30535> 2
+<CJK_UNIFIED_IDEOGRAPH-30536> 2
+<CJK_UNIFIED_IDEOGRAPH-30537> 2
+<CJK_UNIFIED_IDEOGRAPH-30538> 2
+<CJK_UNIFIED_IDEOGRAPH-30539> 2
+<CJK_UNIFIED_IDEOGRAPH-3053A> 2
+<CJK_UNIFIED_IDEOGRAPH-3053B> 2
+<CJK_UNIFIED_IDEOGRAPH-3053C> 2
+<CJK_UNIFIED_IDEOGRAPH-3053D> 2
+<CJK_UNIFIED_IDEOGRAPH-3053E> 2
+<CJK_UNIFIED_IDEOGRAPH-3053F> 2
+<CJK_UNIFIED_IDEOGRAPH-30540> 2
+<CJK_UNIFIED_IDEOGRAPH-30541> 2
+<CJK_UNIFIED_IDEOGRAPH-30542> 2
+<CJK_UNIFIED_IDEOGRAPH-30543> 2
+<CJK_UNIFIED_IDEOGRAPH-30544> 2
+<CJK_UNIFIED_IDEOGRAPH-30545> 2
+<CJK_UNIFIED_IDEOGRAPH-30546> 2
+<CJK_UNIFIED_IDEOGRAPH-30547> 2
+<CJK_UNIFIED_IDEOGRAPH-30548> 2
+<CJK_UNIFIED_IDEOGRAPH-30549> 2
+<CJK_UNIFIED_IDEOGRAPH-3054A> 2
+<CJK_UNIFIED_IDEOGRAPH-3054B> 2
+<CJK_UNIFIED_IDEOGRAPH-3054C> 2
+<CJK_UNIFIED_IDEOGRAPH-3054D> 2
+<CJK_UNIFIED_IDEOGRAPH-3054E> 2
+<CJK_UNIFIED_IDEOGRAPH-3054F> 2
+<CJK_UNIFIED_IDEOGRAPH-30550> 2
+<CJK_UNIFIED_IDEOGRAPH-30551> 2
+<CJK_UNIFIED_IDEOGRAPH-30552> 2
+<CJK_UNIFIED_IDEOGRAPH-30553> 2
+<CJK_UNIFIED_IDEOGRAPH-30554> 2
+<CJK_UNIFIED_IDEOGRAPH-30555> 2
+<CJK_UNIFIED_IDEOGRAPH-30556> 2
+<CJK_UNIFIED_IDEOGRAPH-30557> 2
+<CJK_UNIFIED_IDEOGRAPH-30558> 2
+<CJK_UNIFIED_IDEOGRAPH-30559> 2
+<CJK_UNIFIED_IDEOGRAPH-3055A> 2
+<CJK_UNIFIED_IDEOGRAPH-3055B> 2
+<CJK_UNIFIED_IDEOGRAPH-3055C> 2
+<CJK_UNIFIED_IDEOGRAPH-3055D> 2
+<CJK_UNIFIED_IDEOGRAPH-3055E> 2
+<CJK_UNIFIED_IDEOGRAPH-3055F> 2
+<CJK_UNIFIED_IDEOGRAPH-30560> 2
+<CJK_UNIFIED_IDEOGRAPH-30561> 2
+<CJK_UNIFIED_IDEOGRAPH-30562> 2
+<CJK_UNIFIED_IDEOGRAPH-30563> 2
+<CJK_UNIFIED_IDEOGRAPH-30564> 2
+<CJK_UNIFIED_IDEOGRAPH-30565> 2
+<CJK_UNIFIED_IDEOGRAPH-30566> 2
+<CJK_UNIFIED_IDEOGRAPH-30567> 2
+<CJK_UNIFIED_IDEOGRAPH-30568> 2
+<CJK_UNIFIED_IDEOGRAPH-30569> 2
+<CJK_UNIFIED_IDEOGRAPH-3056A> 2
+<CJK_UNIFIED_IDEOGRAPH-3056B> 2
+<CJK_UNIFIED_IDEOGRAPH-3056C> 2
+<CJK_UNIFIED_IDEOGRAPH-3056D> 2
+<CJK_UNIFIED_IDEOGRAPH-3056E> 2
+<CJK_UNIFIED_IDEOGRAPH-3056F> 2
+<CJK_UNIFIED_IDEOGRAPH-30570> 2
+<CJK_UNIFIED_IDEOGRAPH-30571> 2
+<CJK_UNIFIED_IDEOGRAPH-30572> 2
+<CJK_UNIFIED_IDEOGRAPH-30573> 2
+<CJK_UNIFIED_IDEOGRAPH-30574> 2
+<CJK_UNIFIED_IDEOGRAPH-30575> 2
+<CJK_UNIFIED_IDEOGRAPH-30576> 2
+<CJK_UNIFIED_IDEOGRAPH-30577> 2
+<CJK_UNIFIED_IDEOGRAPH-30578> 2
+<CJK_UNIFIED_IDEOGRAPH-30579> 2
+<CJK_UNIFIED_IDEOGRAPH-3057A> 2
+<CJK_UNIFIED_IDEOGRAPH-3057B> 2
+<CJK_UNIFIED_IDEOGRAPH-3057C> 2
+<CJK_UNIFIED_IDEOGRAPH-3057D> 2
+<CJK_UNIFIED_IDEOGRAPH-3057E> 2
+<CJK_UNIFIED_IDEOGRAPH-3057F> 2
+<CJK_UNIFIED_IDEOGRAPH-30580> 2
+<CJK_UNIFIED_IDEOGRAPH-30581> 2
+<CJK_UNIFIED_IDEOGRAPH-30582> 2
+<CJK_UNIFIED_IDEOGRAPH-30583> 2
+<CJK_UNIFIED_IDEOGRAPH-30584> 2
+<CJK_UNIFIED_IDEOGRAPH-30585> 2
+<CJK_UNIFIED_IDEOGRAPH-30586> 2
+<CJK_UNIFIED_IDEOGRAPH-30587> 2
+<CJK_UNIFIED_IDEOGRAPH-30588> 2
+<CJK_UNIFIED_IDEOGRAPH-30589> 2
+<CJK_UNIFIED_IDEOGRAPH-3058A> 2
+<CJK_UNIFIED_IDEOGRAPH-3058B> 2
+<CJK_UNIFIED_IDEOGRAPH-3058C> 2
+<CJK_UNIFIED_IDEOGRAPH-3058D> 2
+<CJK_UNIFIED_IDEOGRAPH-3058E> 2
+<CJK_UNIFIED_IDEOGRAPH-3058F> 2
+<CJK_UNIFIED_IDEOGRAPH-30590> 2
+<CJK_UNIFIED_IDEOGRAPH-30591> 2
+<CJK_UNIFIED_IDEOGRAPH-30592> 2
+<CJK_UNIFIED_IDEOGRAPH-30593> 2
+<CJK_UNIFIED_IDEOGRAPH-30594> 2
+<CJK_UNIFIED_IDEOGRAPH-30595> 2
+<CJK_UNIFIED_IDEOGRAPH-30596> 2
+<CJK_UNIFIED_IDEOGRAPH-30597> 2
+<CJK_UNIFIED_IDEOGRAPH-30598> 2
+<CJK_UNIFIED_IDEOGRAPH-30599> 2
+<CJK_UNIFIED_IDEOGRAPH-3059A> 2
+<CJK_UNIFIED_IDEOGRAPH-3059B> 2
+<CJK_UNIFIED_IDEOGRAPH-3059C> 2
+<CJK_UNIFIED_IDEOGRAPH-3059D> 2
+<CJK_UNIFIED_IDEOGRAPH-3059E> 2
+<CJK_UNIFIED_IDEOGRAPH-3059F> 2
+<CJK_UNIFIED_IDEOGRAPH-305A0> 2
+<CJK_UNIFIED_IDEOGRAPH-305A1> 2
+<CJK_UNIFIED_IDEOGRAPH-305A2> 2
+<CJK_UNIFIED_IDEOGRAPH-305A3> 2
+<CJK_UNIFIED_IDEOGRAPH-305A4> 2
+<CJK_UNIFIED_IDEOGRAPH-305A5> 2
+<CJK_UNIFIED_IDEOGRAPH-305A6> 2
+<CJK_UNIFIED_IDEOGRAPH-305A7> 2
+<CJK_UNIFIED_IDEOGRAPH-305A8> 2
+<CJK_UNIFIED_IDEOGRAPH-305A9> 2
+<CJK_UNIFIED_IDEOGRAPH-305AA> 2
+<CJK_UNIFIED_IDEOGRAPH-305AB> 2
+<CJK_UNIFIED_IDEOGRAPH-305AC> 2
+<CJK_UNIFIED_IDEOGRAPH-305AD> 2
+<CJK_UNIFIED_IDEOGRAPH-305AE> 2
+<CJK_UNIFIED_IDEOGRAPH-305AF> 2
+<CJK_UNIFIED_IDEOGRAPH-305B0> 2
+<CJK_UNIFIED_IDEOGRAPH-305B1> 2
+<CJK_UNIFIED_IDEOGRAPH-305B2> 2
+<CJK_UNIFIED_IDEOGRAPH-305B3> 2
+<CJK_UNIFIED_IDEOGRAPH-305B4> 2
+<CJK_UNIFIED_IDEOGRAPH-305B5> 2
+<CJK_UNIFIED_IDEOGRAPH-305B6> 2
+<CJK_UNIFIED_IDEOGRAPH-305B7> 2
+<CJK_UNIFIED_IDEOGRAPH-305B8> 2
+<CJK_UNIFIED_IDEOGRAPH-305B9> 2
+<CJK_UNIFIED_IDEOGRAPH-305BA> 2
+<CJK_UNIFIED_IDEOGRAPH-305BB> 2
+<CJK_UNIFIED_IDEOGRAPH-305BC> 2
+<CJK_UNIFIED_IDEOGRAPH-305BD> 2
+<CJK_UNIFIED_IDEOGRAPH-305BE> 2
+<CJK_UNIFIED_IDEOGRAPH-305BF> 2
+<CJK_UNIFIED_IDEOGRAPH-305C0> 2
+<CJK_UNIFIED_IDEOGRAPH-305C1> 2
+<CJK_UNIFIED_IDEOGRAPH-305C2> 2
+<CJK_UNIFIED_IDEOGRAPH-305C3> 2
+<CJK_UNIFIED_IDEOGRAPH-305C4> 2
+<CJK_UNIFIED_IDEOGRAPH-305C5> 2
+<CJK_UNIFIED_IDEOGRAPH-305C6> 2
+<CJK_UNIFIED_IDEOGRAPH-305C7> 2
+<CJK_UNIFIED_IDEOGRAPH-305C8> 2
+<CJK_UNIFIED_IDEOGRAPH-305C9> 2
+<CJK_UNIFIED_IDEOGRAPH-305CA> 2
+<CJK_UNIFIED_IDEOGRAPH-305CB> 2
+<CJK_UNIFIED_IDEOGRAPH-305CC> 2
+<CJK_UNIFIED_IDEOGRAPH-305CD> 2
+<CJK_UNIFIED_IDEOGRAPH-305CE> 2
+<CJK_UNIFIED_IDEOGRAPH-305CF> 2
+<CJK_UNIFIED_IDEOGRAPH-305D0> 2
+<CJK_UNIFIED_IDEOGRAPH-305D1> 2
+<CJK_UNIFIED_IDEOGRAPH-305D2> 2
+<CJK_UNIFIED_IDEOGRAPH-305D3> 2
+<CJK_UNIFIED_IDEOGRAPH-305D4> 2
+<CJK_UNIFIED_IDEOGRAPH-305D5> 2
+<CJK_UNIFIED_IDEOGRAPH-305D6> 2
+<CJK_UNIFIED_IDEOGRAPH-305D7> 2
+<CJK_UNIFIED_IDEOGRAPH-305D8> 2
+<CJK_UNIFIED_IDEOGRAPH-305D9> 2
+<CJK_UNIFIED_IDEOGRAPH-305DA> 2
+<CJK_UNIFIED_IDEOGRAPH-305DB> 2
+<CJK_UNIFIED_IDEOGRAPH-305DC> 2
+<CJK_UNIFIED_IDEOGRAPH-305DD> 2
+<CJK_UNIFIED_IDEOGRAPH-305DE> 2
+<CJK_UNIFIED_IDEOGRAPH-305DF> 2
+<CJK_UNIFIED_IDEOGRAPH-305E0> 2
+<CJK_UNIFIED_IDEOGRAPH-305E1> 2
+<CJK_UNIFIED_IDEOGRAPH-305E2> 2
+<CJK_UNIFIED_IDEOGRAPH-305E3> 2
+<CJK_UNIFIED_IDEOGRAPH-305E4> 2
+<CJK_UNIFIED_IDEOGRAPH-305E5> 2
+<CJK_UNIFIED_IDEOGRAPH-305E6> 2
+<CJK_UNIFIED_IDEOGRAPH-305E7> 2
+<CJK_UNIFIED_IDEOGRAPH-305E8> 2
+<CJK_UNIFIED_IDEOGRAPH-305E9> 2
+<CJK_UNIFIED_IDEOGRAPH-305EA> 2
+<CJK_UNIFIED_IDEOGRAPH-305EB> 2
+<CJK_UNIFIED_IDEOGRAPH-305EC> 2
+<CJK_UNIFIED_IDEOGRAPH-305ED> 2
+<CJK_UNIFIED_IDEOGRAPH-305EE> 2
+<CJK_UNIFIED_IDEOGRAPH-305EF> 2
+<CJK_UNIFIED_IDEOGRAPH-305F0> 2
+<CJK_UNIFIED_IDEOGRAPH-305F1> 2
+<CJK_UNIFIED_IDEOGRAPH-305F2> 2
+<CJK_UNIFIED_IDEOGRAPH-305F3> 2
+<CJK_UNIFIED_IDEOGRAPH-305F4> 2
+<CJK_UNIFIED_IDEOGRAPH-305F5> 2
+<CJK_UNIFIED_IDEOGRAPH-305F6> 2
+<CJK_UNIFIED_IDEOGRAPH-305F7> 2
+<CJK_UNIFIED_IDEOGRAPH-305F8> 2
+<CJK_UNIFIED_IDEOGRAPH-305F9> 2
+<CJK_UNIFIED_IDEOGRAPH-305FA> 2
+<CJK_UNIFIED_IDEOGRAPH-305FB> 2
+<CJK_UNIFIED_IDEOGRAPH-305FC> 2
+<CJK_UNIFIED_IDEOGRAPH-305FD> 2
+<CJK_UNIFIED_IDEOGRAPH-305FE> 2
+<CJK_UNIFIED_IDEOGRAPH-305FF> 2
+<CJK_UNIFIED_IDEOGRAPH-30600> 2
+<CJK_UNIFIED_IDEOGRAPH-30601> 2
+<CJK_UNIFIED_IDEOGRAPH-30602> 2
+<CJK_UNIFIED_IDEOGRAPH-30603> 2
+<CJK_UNIFIED_IDEOGRAPH-30604> 2
+<CJK_UNIFIED_IDEOGRAPH-30605> 2
+<CJK_UNIFIED_IDEOGRAPH-30606> 2
+<CJK_UNIFIED_IDEOGRAPH-30607> 2
+<CJK_UNIFIED_IDEOGRAPH-30608> 2
+<CJK_UNIFIED_IDEOGRAPH-30609> 2
+<CJK_UNIFIED_IDEOGRAPH-3060A> 2
+<CJK_UNIFIED_IDEOGRAPH-3060B> 2
+<CJK_UNIFIED_IDEOGRAPH-3060C> 2
+<CJK_UNIFIED_IDEOGRAPH-3060D> 2
+<CJK_UNIFIED_IDEOGRAPH-3060E> 2
+<CJK_UNIFIED_IDEOGRAPH-3060F> 2
+<CJK_UNIFIED_IDEOGRAPH-30610> 2
+<CJK_UNIFIED_IDEOGRAPH-30611> 2
+<CJK_UNIFIED_IDEOGRAPH-30612> 2
+<CJK_UNIFIED_IDEOGRAPH-30613> 2
+<CJK_UNIFIED_IDEOGRAPH-30614> 2
+<CJK_UNIFIED_IDEOGRAPH-30615> 2
+<CJK_UNIFIED_IDEOGRAPH-30616> 2
+<CJK_UNIFIED_IDEOGRAPH-30617> 2
+<CJK_UNIFIED_IDEOGRAPH-30618> 2
+<CJK_UNIFIED_IDEOGRAPH-30619> 2
+<CJK_UNIFIED_IDEOGRAPH-3061A> 2
+<CJK_UNIFIED_IDEOGRAPH-3061B> 2
+<CJK_UNIFIED_IDEOGRAPH-3061C> 2
+<CJK_UNIFIED_IDEOGRAPH-3061D> 2
+<CJK_UNIFIED_IDEOGRAPH-3061E> 2
+<CJK_UNIFIED_IDEOGRAPH-3061F> 2
+<CJK_UNIFIED_IDEOGRAPH-30620> 2
+<CJK_UNIFIED_IDEOGRAPH-30621> 2
+<CJK_UNIFIED_IDEOGRAPH-30622> 2
+<CJK_UNIFIED_IDEOGRAPH-30623> 2
+<CJK_UNIFIED_IDEOGRAPH-30624> 2
+<CJK_UNIFIED_IDEOGRAPH-30625> 2
+<CJK_UNIFIED_IDEOGRAPH-30626> 2
+<CJK_UNIFIED_IDEOGRAPH-30627> 2
+<CJK_UNIFIED_IDEOGRAPH-30628> 2
+<CJK_UNIFIED_IDEOGRAPH-30629> 2
+<CJK_UNIFIED_IDEOGRAPH-3062A> 2
+<CJK_UNIFIED_IDEOGRAPH-3062B> 2
+<CJK_UNIFIED_IDEOGRAPH-3062C> 2
+<CJK_UNIFIED_IDEOGRAPH-3062D> 2
+<CJK_UNIFIED_IDEOGRAPH-3062E> 2
+<CJK_UNIFIED_IDEOGRAPH-3062F> 2
+<CJK_UNIFIED_IDEOGRAPH-30630> 2
+<CJK_UNIFIED_IDEOGRAPH-30631> 2
+<CJK_UNIFIED_IDEOGRAPH-30632> 2
+<CJK_UNIFIED_IDEOGRAPH-30633> 2
+<CJK_UNIFIED_IDEOGRAPH-30634> 2
+<CJK_UNIFIED_IDEOGRAPH-30635> 2
+<CJK_UNIFIED_IDEOGRAPH-30636> 2
+<CJK_UNIFIED_IDEOGRAPH-30637> 2
+<CJK_UNIFIED_IDEOGRAPH-30638> 2
+<CJK_UNIFIED_IDEOGRAPH-30639> 2
+<CJK_UNIFIED_IDEOGRAPH-3063A> 2
+<CJK_UNIFIED_IDEOGRAPH-3063B> 2
+<CJK_UNIFIED_IDEOGRAPH-3063C> 2
+<CJK_UNIFIED_IDEOGRAPH-3063D> 2
+<CJK_UNIFIED_IDEOGRAPH-3063E> 2
+<CJK_UNIFIED_IDEOGRAPH-3063F> 2
+<CJK_UNIFIED_IDEOGRAPH-30640> 2
+<CJK_UNIFIED_IDEOGRAPH-30641> 2
+<CJK_UNIFIED_IDEOGRAPH-30642> 2
+<CJK_UNIFIED_IDEOGRAPH-30643> 2
+<CJK_UNIFIED_IDEOGRAPH-30644> 2
+<CJK_UNIFIED_IDEOGRAPH-30645> 2
+<CJK_UNIFIED_IDEOGRAPH-30646> 2
+<CJK_UNIFIED_IDEOGRAPH-30647> 2
+<CJK_UNIFIED_IDEOGRAPH-30648> 2
+<CJK_UNIFIED_IDEOGRAPH-30649> 2
+<CJK_UNIFIED_IDEOGRAPH-3064A> 2
+<CJK_UNIFIED_IDEOGRAPH-3064B> 2
+<CJK_UNIFIED_IDEOGRAPH-3064C> 2
+<CJK_UNIFIED_IDEOGRAPH-3064D> 2
+<CJK_UNIFIED_IDEOGRAPH-3064E> 2
+<CJK_UNIFIED_IDEOGRAPH-3064F> 2
+<CJK_UNIFIED_IDEOGRAPH-30650> 2
+<CJK_UNIFIED_IDEOGRAPH-30651> 2
+<CJK_UNIFIED_IDEOGRAPH-30652> 2
+<CJK_UNIFIED_IDEOGRAPH-30653> 2
+<CJK_UNIFIED_IDEOGRAPH-30654> 2
+<CJK_UNIFIED_IDEOGRAPH-30655> 2
+<CJK_UNIFIED_IDEOGRAPH-30656> 2
+<CJK_UNIFIED_IDEOGRAPH-30657> 2
+<CJK_UNIFIED_IDEOGRAPH-30658> 2
+<CJK_UNIFIED_IDEOGRAPH-30659> 2
+<CJK_UNIFIED_IDEOGRAPH-3065A> 2
+<CJK_UNIFIED_IDEOGRAPH-3065B> 2
+<CJK_UNIFIED_IDEOGRAPH-3065C> 2
+<CJK_UNIFIED_IDEOGRAPH-3065D> 2
+<CJK_UNIFIED_IDEOGRAPH-3065E> 2
+<CJK_UNIFIED_IDEOGRAPH-3065F> 2
+<CJK_UNIFIED_IDEOGRAPH-30660> 2
+<CJK_UNIFIED_IDEOGRAPH-30661> 2
+<CJK_UNIFIED_IDEOGRAPH-30662> 2
+<CJK_UNIFIED_IDEOGRAPH-30663> 2
+<CJK_UNIFIED_IDEOGRAPH-30664> 2
+<CJK_UNIFIED_IDEOGRAPH-30665> 2
+<CJK_UNIFIED_IDEOGRAPH-30666> 2
+<CJK_UNIFIED_IDEOGRAPH-30667> 2
+<CJK_UNIFIED_IDEOGRAPH-30668> 2
+<CJK_UNIFIED_IDEOGRAPH-30669> 2
+<CJK_UNIFIED_IDEOGRAPH-3066A> 2
+<CJK_UNIFIED_IDEOGRAPH-3066B> 2
+<CJK_UNIFIED_IDEOGRAPH-3066C> 2
+<CJK_UNIFIED_IDEOGRAPH-3066D> 2
+<CJK_UNIFIED_IDEOGRAPH-3066E> 2
+<CJK_UNIFIED_IDEOGRAPH-3066F> 2
+<CJK_UNIFIED_IDEOGRAPH-30670> 2
+<CJK_UNIFIED_IDEOGRAPH-30671> 2
+<CJK_UNIFIED_IDEOGRAPH-30672> 2
+<CJK_UNIFIED_IDEOGRAPH-30673> 2
+<CJK_UNIFIED_IDEOGRAPH-30674> 2
+<CJK_UNIFIED_IDEOGRAPH-30675> 2
+<CJK_UNIFIED_IDEOGRAPH-30676> 2
+<CJK_UNIFIED_IDEOGRAPH-30677> 2
+<CJK_UNIFIED_IDEOGRAPH-30678> 2
+<CJK_UNIFIED_IDEOGRAPH-30679> 2
+<CJK_UNIFIED_IDEOGRAPH-3067A> 2
+<CJK_UNIFIED_IDEOGRAPH-3067B> 2
+<CJK_UNIFIED_IDEOGRAPH-3067C> 2
+<CJK_UNIFIED_IDEOGRAPH-3067D> 2
+<CJK_UNIFIED_IDEOGRAPH-3067E> 2
+<CJK_UNIFIED_IDEOGRAPH-3067F> 2
+<CJK_UNIFIED_IDEOGRAPH-30680> 2
+<CJK_UNIFIED_IDEOGRAPH-30681> 2
+<CJK_UNIFIED_IDEOGRAPH-30682> 2
+<CJK_UNIFIED_IDEOGRAPH-30683> 2
+<CJK_UNIFIED_IDEOGRAPH-30684> 2
+<CJK_UNIFIED_IDEOGRAPH-30685> 2
+<CJK_UNIFIED_IDEOGRAPH-30686> 2
+<CJK_UNIFIED_IDEOGRAPH-30687> 2
+<CJK_UNIFIED_IDEOGRAPH-30688> 2
+<CJK_UNIFIED_IDEOGRAPH-30689> 2
+<CJK_UNIFIED_IDEOGRAPH-3068A> 2
+<CJK_UNIFIED_IDEOGRAPH-3068B> 2
+<CJK_UNIFIED_IDEOGRAPH-3068C> 2
+<CJK_UNIFIED_IDEOGRAPH-3068D> 2
+<CJK_UNIFIED_IDEOGRAPH-3068E> 2
+<CJK_UNIFIED_IDEOGRAPH-3068F> 2
+<CJK_UNIFIED_IDEOGRAPH-30690> 2
+<CJK_UNIFIED_IDEOGRAPH-30691> 2
+<CJK_UNIFIED_IDEOGRAPH-30692> 2
+<CJK_UNIFIED_IDEOGRAPH-30693> 2
+<CJK_UNIFIED_IDEOGRAPH-30694> 2
+<CJK_UNIFIED_IDEOGRAPH-30695> 2
+<CJK_UNIFIED_IDEOGRAPH-30696> 2
+<CJK_UNIFIED_IDEOGRAPH-30697> 2
+<CJK_UNIFIED_IDEOGRAPH-30698> 2
+<CJK_UNIFIED_IDEOGRAPH-30699> 2
+<CJK_UNIFIED_IDEOGRAPH-3069A> 2
+<CJK_UNIFIED_IDEOGRAPH-3069B> 2
+<CJK_UNIFIED_IDEOGRAPH-3069C> 2
+<CJK_UNIFIED_IDEOGRAPH-3069D> 2
+<CJK_UNIFIED_IDEOGRAPH-3069E> 2
+<CJK_UNIFIED_IDEOGRAPH-3069F> 2
+<CJK_UNIFIED_IDEOGRAPH-306A0> 2
+<CJK_UNIFIED_IDEOGRAPH-306A1> 2
+<CJK_UNIFIED_IDEOGRAPH-306A2> 2
+<CJK_UNIFIED_IDEOGRAPH-306A3> 2
+<CJK_UNIFIED_IDEOGRAPH-306A4> 2
+<CJK_UNIFIED_IDEOGRAPH-306A5> 2
+<CJK_UNIFIED_IDEOGRAPH-306A6> 2
+<CJK_UNIFIED_IDEOGRAPH-306A7> 2
+<CJK_UNIFIED_IDEOGRAPH-306A8> 2
+<CJK_UNIFIED_IDEOGRAPH-306A9> 2
+<CJK_UNIFIED_IDEOGRAPH-306AA> 2
+<CJK_UNIFIED_IDEOGRAPH-306AB> 2
+<CJK_UNIFIED_IDEOGRAPH-306AC> 2
+<CJK_UNIFIED_IDEOGRAPH-306AD> 2
+<CJK_UNIFIED_IDEOGRAPH-306AE> 2
+<CJK_UNIFIED_IDEOGRAPH-306AF> 2
+<CJK_UNIFIED_IDEOGRAPH-306B0> 2
+<CJK_UNIFIED_IDEOGRAPH-306B1> 2
+<CJK_UNIFIED_IDEOGRAPH-306B2> 2
+<CJK_UNIFIED_IDEOGRAPH-306B3> 2
+<CJK_UNIFIED_IDEOGRAPH-306B4> 2
+<CJK_UNIFIED_IDEOGRAPH-306B5> 2
+<CJK_UNIFIED_IDEOGRAPH-306B6> 2
+<CJK_UNIFIED_IDEOGRAPH-306B7> 2
+<CJK_UNIFIED_IDEOGRAPH-306B8> 2
+<CJK_UNIFIED_IDEOGRAPH-306B9> 2
+<CJK_UNIFIED_IDEOGRAPH-306BA> 2
+<CJK_UNIFIED_IDEOGRAPH-306BB> 2
+<CJK_UNIFIED_IDEOGRAPH-306BC> 2
+<CJK_UNIFIED_IDEOGRAPH-306BD> 2
+<CJK_UNIFIED_IDEOGRAPH-306BE> 2
+<CJK_UNIFIED_IDEOGRAPH-306BF> 2
+<CJK_UNIFIED_IDEOGRAPH-306C0> 2
+<CJK_UNIFIED_IDEOGRAPH-306C1> 2
+<CJK_UNIFIED_IDEOGRAPH-306C2> 2
+<CJK_UNIFIED_IDEOGRAPH-306C3> 2
+<CJK_UNIFIED_IDEOGRAPH-306C4> 2
+<CJK_UNIFIED_IDEOGRAPH-306C5> 2
+<CJK_UNIFIED_IDEOGRAPH-306C6> 2
+<CJK_UNIFIED_IDEOGRAPH-306C7> 2
+<CJK_UNIFIED_IDEOGRAPH-306C8> 2
+<CJK_UNIFIED_IDEOGRAPH-306C9> 2
+<CJK_UNIFIED_IDEOGRAPH-306CA> 2
+<CJK_UNIFIED_IDEOGRAPH-306CB> 2
+<CJK_UNIFIED_IDEOGRAPH-306CC> 2
+<CJK_UNIFIED_IDEOGRAPH-306CD> 2
+<CJK_UNIFIED_IDEOGRAPH-306CE> 2
+<CJK_UNIFIED_IDEOGRAPH-306CF> 2
+<CJK_UNIFIED_IDEOGRAPH-306D0> 2
+<CJK_UNIFIED_IDEOGRAPH-306D1> 2
+<CJK_UNIFIED_IDEOGRAPH-306D2> 2
+<CJK_UNIFIED_IDEOGRAPH-306D3> 2
+<CJK_UNIFIED_IDEOGRAPH-306D4> 2
+<CJK_UNIFIED_IDEOGRAPH-306D5> 2
+<CJK_UNIFIED_IDEOGRAPH-306D6> 2
+<CJK_UNIFIED_IDEOGRAPH-306D7> 2
+<CJK_UNIFIED_IDEOGRAPH-306D8> 2
+<CJK_UNIFIED_IDEOGRAPH-306D9> 2
+<CJK_UNIFIED_IDEOGRAPH-306DA> 2
+<CJK_UNIFIED_IDEOGRAPH-306DB> 2
+<CJK_UNIFIED_IDEOGRAPH-306DC> 2
+<CJK_UNIFIED_IDEOGRAPH-306DD> 2
+<CJK_UNIFIED_IDEOGRAPH-306DE> 2
+<CJK_UNIFIED_IDEOGRAPH-306DF> 2
+<CJK_UNIFIED_IDEOGRAPH-306E0> 2
+<CJK_UNIFIED_IDEOGRAPH-306E1> 2
+<CJK_UNIFIED_IDEOGRAPH-306E2> 2
+<CJK_UNIFIED_IDEOGRAPH-306E3> 2
+<CJK_UNIFIED_IDEOGRAPH-306E4> 2
+<CJK_UNIFIED_IDEOGRAPH-306E5> 2
+<CJK_UNIFIED_IDEOGRAPH-306E6> 2
+<CJK_UNIFIED_IDEOGRAPH-306E7> 2
+<CJK_UNIFIED_IDEOGRAPH-306E8> 2
+<CJK_UNIFIED_IDEOGRAPH-306E9> 2
+<CJK_UNIFIED_IDEOGRAPH-306EA> 2
+<CJK_UNIFIED_IDEOGRAPH-306EB> 2
+<CJK_UNIFIED_IDEOGRAPH-306EC> 2
+<CJK_UNIFIED_IDEOGRAPH-306ED> 2
+<CJK_UNIFIED_IDEOGRAPH-306EE> 2
+<CJK_UNIFIED_IDEOGRAPH-306EF> 2
+<CJK_UNIFIED_IDEOGRAPH-306F0> 2
+<CJK_UNIFIED_IDEOGRAPH-306F1> 2
+<CJK_UNIFIED_IDEOGRAPH-306F2> 2
+<CJK_UNIFIED_IDEOGRAPH-306F3> 2
+<CJK_UNIFIED_IDEOGRAPH-306F4> 2
+<CJK_UNIFIED_IDEOGRAPH-306F5> 2
+<CJK_UNIFIED_IDEOGRAPH-306F6> 2
+<CJK_UNIFIED_IDEOGRAPH-306F7> 2
+<CJK_UNIFIED_IDEOGRAPH-306F8> 2
+<CJK_UNIFIED_IDEOGRAPH-306F9> 2
+<CJK_UNIFIED_IDEOGRAPH-306FA> 2
+<CJK_UNIFIED_IDEOGRAPH-306FB> 2
+<CJK_UNIFIED_IDEOGRAPH-306FC> 2
+<CJK_UNIFIED_IDEOGRAPH-306FD> 2
+<CJK_UNIFIED_IDEOGRAPH-306FE> 2
+<CJK_UNIFIED_IDEOGRAPH-306FF> 2
+<CJK_UNIFIED_IDEOGRAPH-30700> 2
+<CJK_UNIFIED_IDEOGRAPH-30701> 2
+<CJK_UNIFIED_IDEOGRAPH-30702> 2
+<CJK_UNIFIED_IDEOGRAPH-30703> 2
+<CJK_UNIFIED_IDEOGRAPH-30704> 2
+<CJK_UNIFIED_IDEOGRAPH-30705> 2
+<CJK_UNIFIED_IDEOGRAPH-30706> 2
+<CJK_UNIFIED_IDEOGRAPH-30707> 2
+<CJK_UNIFIED_IDEOGRAPH-30708> 2
+<CJK_UNIFIED_IDEOGRAPH-30709> 2
+<CJK_UNIFIED_IDEOGRAPH-3070A> 2
+<CJK_UNIFIED_IDEOGRAPH-3070B> 2
+<CJK_UNIFIED_IDEOGRAPH-3070C> 2
+<CJK_UNIFIED_IDEOGRAPH-3070D> 2
+<CJK_UNIFIED_IDEOGRAPH-3070E> 2
+<CJK_UNIFIED_IDEOGRAPH-3070F> 2
+<CJK_UNIFIED_IDEOGRAPH-30710> 2
+<CJK_UNIFIED_IDEOGRAPH-30711> 2
+<CJK_UNIFIED_IDEOGRAPH-30712> 2
+<CJK_UNIFIED_IDEOGRAPH-30713> 2
+<CJK_UNIFIED_IDEOGRAPH-30714> 2
+<CJK_UNIFIED_IDEOGRAPH-30715> 2
+<CJK_UNIFIED_IDEOGRAPH-30716> 2
+<CJK_UNIFIED_IDEOGRAPH-30717> 2
+<CJK_UNIFIED_IDEOGRAPH-30718> 2
+<CJK_UNIFIED_IDEOGRAPH-30719> 2
+<CJK_UNIFIED_IDEOGRAPH-3071A> 2
+<CJK_UNIFIED_IDEOGRAPH-3071B> 2
+<CJK_UNIFIED_IDEOGRAPH-3071C> 2
+<CJK_UNIFIED_IDEOGRAPH-3071D> 2
+<CJK_UNIFIED_IDEOGRAPH-3071E> 2
+<CJK_UNIFIED_IDEOGRAPH-3071F> 2
+<CJK_UNIFIED_IDEOGRAPH-30720> 2
+<CJK_UNIFIED_IDEOGRAPH-30721> 2
+<CJK_UNIFIED_IDEOGRAPH-30722> 2
+<CJK_UNIFIED_IDEOGRAPH-30723> 2
+<CJK_UNIFIED_IDEOGRAPH-30724> 2
+<CJK_UNIFIED_IDEOGRAPH-30725> 2
+<CJK_UNIFIED_IDEOGRAPH-30726> 2
+<CJK_UNIFIED_IDEOGRAPH-30727> 2
+<CJK_UNIFIED_IDEOGRAPH-30728> 2
+<CJK_UNIFIED_IDEOGRAPH-30729> 2
+<CJK_UNIFIED_IDEOGRAPH-3072A> 2
+<CJK_UNIFIED_IDEOGRAPH-3072B> 2
+<CJK_UNIFIED_IDEOGRAPH-3072C> 2
+<CJK_UNIFIED_IDEOGRAPH-3072D> 2
+<CJK_UNIFIED_IDEOGRAPH-3072E> 2
+<CJK_UNIFIED_IDEOGRAPH-3072F> 2
+<CJK_UNIFIED_IDEOGRAPH-30730> 2
+<CJK_UNIFIED_IDEOGRAPH-30731> 2
+<CJK_UNIFIED_IDEOGRAPH-30732> 2
+<CJK_UNIFIED_IDEOGRAPH-30733> 2
+<CJK_UNIFIED_IDEOGRAPH-30734> 2
+<CJK_UNIFIED_IDEOGRAPH-30735> 2
+<CJK_UNIFIED_IDEOGRAPH-30736> 2
+<CJK_UNIFIED_IDEOGRAPH-30737> 2
+<CJK_UNIFIED_IDEOGRAPH-30738> 2
+<CJK_UNIFIED_IDEOGRAPH-30739> 2
+<CJK_UNIFIED_IDEOGRAPH-3073A> 2
+<CJK_UNIFIED_IDEOGRAPH-3073B> 2
+<CJK_UNIFIED_IDEOGRAPH-3073C> 2
+<CJK_UNIFIED_IDEOGRAPH-3073D> 2
+<CJK_UNIFIED_IDEOGRAPH-3073E> 2
+<CJK_UNIFIED_IDEOGRAPH-3073F> 2
+<CJK_UNIFIED_IDEOGRAPH-30740> 2
+<CJK_UNIFIED_IDEOGRAPH-30741> 2
+<CJK_UNIFIED_IDEOGRAPH-30742> 2
+<CJK_UNIFIED_IDEOGRAPH-30743> 2
+<CJK_UNIFIED_IDEOGRAPH-30744> 2
+<CJK_UNIFIED_IDEOGRAPH-30745> 2
+<CJK_UNIFIED_IDEOGRAPH-30746> 2
+<CJK_UNIFIED_IDEOGRAPH-30747> 2
+<CJK_UNIFIED_IDEOGRAPH-30748> 2
+<CJK_UNIFIED_IDEOGRAPH-30749> 2
+<CJK_UNIFIED_IDEOGRAPH-3074A> 2
+<CJK_UNIFIED_IDEOGRAPH-3074B> 2
+<CJK_UNIFIED_IDEOGRAPH-3074C> 2
+<CJK_UNIFIED_IDEOGRAPH-3074D> 2
+<CJK_UNIFIED_IDEOGRAPH-3074E> 2
+<CJK_UNIFIED_IDEOGRAPH-3074F> 2
+<CJK_UNIFIED_IDEOGRAPH-30750> 2
+<CJK_UNIFIED_IDEOGRAPH-30751> 2
+<CJK_UNIFIED_IDEOGRAPH-30752> 2
+<CJK_UNIFIED_IDEOGRAPH-30753> 2
+<CJK_UNIFIED_IDEOGRAPH-30754> 2
+<CJK_UNIFIED_IDEOGRAPH-30755> 2
+<CJK_UNIFIED_IDEOGRAPH-30756> 2
+<CJK_UNIFIED_IDEOGRAPH-30757> 2
+<CJK_UNIFIED_IDEOGRAPH-30758> 2
+<CJK_UNIFIED_IDEOGRAPH-30759> 2
+<CJK_UNIFIED_IDEOGRAPH-3075A> 2
+<CJK_UNIFIED_IDEOGRAPH-3075B> 2
+<CJK_UNIFIED_IDEOGRAPH-3075C> 2
+<CJK_UNIFIED_IDEOGRAPH-3075D> 2
+<CJK_UNIFIED_IDEOGRAPH-3075E> 2
+<CJK_UNIFIED_IDEOGRAPH-3075F> 2
+<CJK_UNIFIED_IDEOGRAPH-30760> 2
+<CJK_UNIFIED_IDEOGRAPH-30761> 2
+<CJK_UNIFIED_IDEOGRAPH-30762> 2
+<CJK_UNIFIED_IDEOGRAPH-30763> 2
+<CJK_UNIFIED_IDEOGRAPH-30764> 2
+<CJK_UNIFIED_IDEOGRAPH-30765> 2
+<CJK_UNIFIED_IDEOGRAPH-30766> 2
+<CJK_UNIFIED_IDEOGRAPH-30767> 2
+<CJK_UNIFIED_IDEOGRAPH-30768> 2
+<CJK_UNIFIED_IDEOGRAPH-30769> 2
+<CJK_UNIFIED_IDEOGRAPH-3076A> 2
+<CJK_UNIFIED_IDEOGRAPH-3076B> 2
+<CJK_UNIFIED_IDEOGRAPH-3076C> 2
+<CJK_UNIFIED_IDEOGRAPH-3076D> 2
+<CJK_UNIFIED_IDEOGRAPH-3076E> 2
+<CJK_UNIFIED_IDEOGRAPH-3076F> 2
+<CJK_UNIFIED_IDEOGRAPH-30770> 2
+<CJK_UNIFIED_IDEOGRAPH-30771> 2
+<CJK_UNIFIED_IDEOGRAPH-30772> 2
+<CJK_UNIFIED_IDEOGRAPH-30773> 2
+<CJK_UNIFIED_IDEOGRAPH-30774> 2
+<CJK_UNIFIED_IDEOGRAPH-30775> 2
+<CJK_UNIFIED_IDEOGRAPH-30776> 2
+<CJK_UNIFIED_IDEOGRAPH-30777> 2
+<CJK_UNIFIED_IDEOGRAPH-30778> 2
+<CJK_UNIFIED_IDEOGRAPH-30779> 2
+<CJK_UNIFIED_IDEOGRAPH-3077A> 2
+<CJK_UNIFIED_IDEOGRAPH-3077B> 2
+<CJK_UNIFIED_IDEOGRAPH-3077C> 2
+<CJK_UNIFIED_IDEOGRAPH-3077D> 2
+<CJK_UNIFIED_IDEOGRAPH-3077E> 2
+<CJK_UNIFIED_IDEOGRAPH-3077F> 2
+<CJK_UNIFIED_IDEOGRAPH-30780> 2
+<CJK_UNIFIED_IDEOGRAPH-30781> 2
+<CJK_UNIFIED_IDEOGRAPH-30782> 2
+<CJK_UNIFIED_IDEOGRAPH-30783> 2
+<CJK_UNIFIED_IDEOGRAPH-30784> 2
+<CJK_UNIFIED_IDEOGRAPH-30785> 2
+<CJK_UNIFIED_IDEOGRAPH-30786> 2
+<CJK_UNIFIED_IDEOGRAPH-30787> 2
+<CJK_UNIFIED_IDEOGRAPH-30788> 2
+<CJK_UNIFIED_IDEOGRAPH-30789> 2
+<CJK_UNIFIED_IDEOGRAPH-3078A> 2
+<CJK_UNIFIED_IDEOGRAPH-3078B> 2
+<CJK_UNIFIED_IDEOGRAPH-3078C> 2
+<CJK_UNIFIED_IDEOGRAPH-3078D> 2
+<CJK_UNIFIED_IDEOGRAPH-3078E> 2
+<CJK_UNIFIED_IDEOGRAPH-3078F> 2
+<CJK_UNIFIED_IDEOGRAPH-30790> 2
+<CJK_UNIFIED_IDEOGRAPH-30791> 2
+<CJK_UNIFIED_IDEOGRAPH-30792> 2
+<CJK_UNIFIED_IDEOGRAPH-30793> 2
+<CJK_UNIFIED_IDEOGRAPH-30794> 2
+<CJK_UNIFIED_IDEOGRAPH-30795> 2
+<CJK_UNIFIED_IDEOGRAPH-30796> 2
+<CJK_UNIFIED_IDEOGRAPH-30797> 2
+<CJK_UNIFIED_IDEOGRAPH-30798> 2
+<CJK_UNIFIED_IDEOGRAPH-30799> 2
+<CJK_UNIFIED_IDEOGRAPH-3079A> 2
+<CJK_UNIFIED_IDEOGRAPH-3079B> 2
+<CJK_UNIFIED_IDEOGRAPH-3079C> 2
+<CJK_UNIFIED_IDEOGRAPH-3079D> 2
+<CJK_UNIFIED_IDEOGRAPH-3079E> 2
+<CJK_UNIFIED_IDEOGRAPH-3079F> 2
+<CJK_UNIFIED_IDEOGRAPH-307A0> 2
+<CJK_UNIFIED_IDEOGRAPH-307A1> 2
+<CJK_UNIFIED_IDEOGRAPH-307A2> 2
+<CJK_UNIFIED_IDEOGRAPH-307A3> 2
+<CJK_UNIFIED_IDEOGRAPH-307A4> 2
+<CJK_UNIFIED_IDEOGRAPH-307A5> 2
+<CJK_UNIFIED_IDEOGRAPH-307A6> 2
+<CJK_UNIFIED_IDEOGRAPH-307A7> 2
+<CJK_UNIFIED_IDEOGRAPH-307A8> 2
+<CJK_UNIFIED_IDEOGRAPH-307A9> 2
+<CJK_UNIFIED_IDEOGRAPH-307AA> 2
+<CJK_UNIFIED_IDEOGRAPH-307AB> 2
+<CJK_UNIFIED_IDEOGRAPH-307AC> 2
+<CJK_UNIFIED_IDEOGRAPH-307AD> 2
+<CJK_UNIFIED_IDEOGRAPH-307AE> 2
+<CJK_UNIFIED_IDEOGRAPH-307AF> 2
+<CJK_UNIFIED_IDEOGRAPH-307B0> 2
+<CJK_UNIFIED_IDEOGRAPH-307B1> 2
+<CJK_UNIFIED_IDEOGRAPH-307B2> 2
+<CJK_UNIFIED_IDEOGRAPH-307B3> 2
+<CJK_UNIFIED_IDEOGRAPH-307B4> 2
+<CJK_UNIFIED_IDEOGRAPH-307B5> 2
+<CJK_UNIFIED_IDEOGRAPH-307B6> 2
+<CJK_UNIFIED_IDEOGRAPH-307B7> 2
+<CJK_UNIFIED_IDEOGRAPH-307B8> 2
+<CJK_UNIFIED_IDEOGRAPH-307B9> 2
+<CJK_UNIFIED_IDEOGRAPH-307BA> 2
+<CJK_UNIFIED_IDEOGRAPH-307BB> 2
+<CJK_UNIFIED_IDEOGRAPH-307BC> 2
+<CJK_UNIFIED_IDEOGRAPH-307BD> 2
+<CJK_UNIFIED_IDEOGRAPH-307BE> 2
+<CJK_UNIFIED_IDEOGRAPH-307BF> 2
+<CJK_UNIFIED_IDEOGRAPH-307C0> 2
+<CJK_UNIFIED_IDEOGRAPH-307C1> 2
+<CJK_UNIFIED_IDEOGRAPH-307C2> 2
+<CJK_UNIFIED_IDEOGRAPH-307C3> 2
+<CJK_UNIFIED_IDEOGRAPH-307C4> 2
+<CJK_UNIFIED_IDEOGRAPH-307C5> 2
+<CJK_UNIFIED_IDEOGRAPH-307C6> 2
+<CJK_UNIFIED_IDEOGRAPH-307C7> 2
+<CJK_UNIFIED_IDEOGRAPH-307C8> 2
+<CJK_UNIFIED_IDEOGRAPH-307C9> 2
+<CJK_UNIFIED_IDEOGRAPH-307CA> 2
+<CJK_UNIFIED_IDEOGRAPH-307CB> 2
+<CJK_UNIFIED_IDEOGRAPH-307CC> 2
+<CJK_UNIFIED_IDEOGRAPH-307CD> 2
+<CJK_UNIFIED_IDEOGRAPH-307CE> 2
+<CJK_UNIFIED_IDEOGRAPH-307CF> 2
+<CJK_UNIFIED_IDEOGRAPH-307D0> 2
+<CJK_UNIFIED_IDEOGRAPH-307D1> 2
+<CJK_UNIFIED_IDEOGRAPH-307D2> 2
+<CJK_UNIFIED_IDEOGRAPH-307D3> 2
+<CJK_UNIFIED_IDEOGRAPH-307D4> 2
+<CJK_UNIFIED_IDEOGRAPH-307D5> 2
+<CJK_UNIFIED_IDEOGRAPH-307D6> 2
+<CJK_UNIFIED_IDEOGRAPH-307D7> 2
+<CJK_UNIFIED_IDEOGRAPH-307D8> 2
+<CJK_UNIFIED_IDEOGRAPH-307D9> 2
+<CJK_UNIFIED_IDEOGRAPH-307DA> 2
+<CJK_UNIFIED_IDEOGRAPH-307DB> 2
+<CJK_UNIFIED_IDEOGRAPH-307DC> 2
+<CJK_UNIFIED_IDEOGRAPH-307DD> 2
+<CJK_UNIFIED_IDEOGRAPH-307DE> 2
+<CJK_UNIFIED_IDEOGRAPH-307DF> 2
+<CJK_UNIFIED_IDEOGRAPH-307E0> 2
+<CJK_UNIFIED_IDEOGRAPH-307E1> 2
+<CJK_UNIFIED_IDEOGRAPH-307E2> 2
+<CJK_UNIFIED_IDEOGRAPH-307E3> 2
+<CJK_UNIFIED_IDEOGRAPH-307E4> 2
+<CJK_UNIFIED_IDEOGRAPH-307E5> 2
+<CJK_UNIFIED_IDEOGRAPH-307E6> 2
+<CJK_UNIFIED_IDEOGRAPH-307E7> 2
+<CJK_UNIFIED_IDEOGRAPH-307E8> 2
+<CJK_UNIFIED_IDEOGRAPH-307E9> 2
+<CJK_UNIFIED_IDEOGRAPH-307EA> 2
+<CJK_UNIFIED_IDEOGRAPH-307EB> 2
+<CJK_UNIFIED_IDEOGRAPH-307EC> 2
+<CJK_UNIFIED_IDEOGRAPH-307ED> 2
+<CJK_UNIFIED_IDEOGRAPH-307EE> 2
+<CJK_UNIFIED_IDEOGRAPH-307EF> 2
+<CJK_UNIFIED_IDEOGRAPH-307F0> 2
+<CJK_UNIFIED_IDEOGRAPH-307F1> 2
+<CJK_UNIFIED_IDEOGRAPH-307F2> 2
+<CJK_UNIFIED_IDEOGRAPH-307F3> 2
+<CJK_UNIFIED_IDEOGRAPH-307F4> 2
+<CJK_UNIFIED_IDEOGRAPH-307F5> 2
+<CJK_UNIFIED_IDEOGRAPH-307F6> 2
+<CJK_UNIFIED_IDEOGRAPH-307F7> 2
+<CJK_UNIFIED_IDEOGRAPH-307F8> 2
+<CJK_UNIFIED_IDEOGRAPH-307F9> 2
+<CJK_UNIFIED_IDEOGRAPH-307FA> 2
+<CJK_UNIFIED_IDEOGRAPH-307FB> 2
+<CJK_UNIFIED_IDEOGRAPH-307FC> 2
+<CJK_UNIFIED_IDEOGRAPH-307FD> 2
+<CJK_UNIFIED_IDEOGRAPH-307FE> 2
+<CJK_UNIFIED_IDEOGRAPH-307FF> 2
+<CJK_UNIFIED_IDEOGRAPH-30800> 2
+<CJK_UNIFIED_IDEOGRAPH-30801> 2
+<CJK_UNIFIED_IDEOGRAPH-30802> 2
+<CJK_UNIFIED_IDEOGRAPH-30803> 2
+<CJK_UNIFIED_IDEOGRAPH-30804> 2
+<CJK_UNIFIED_IDEOGRAPH-30805> 2
+<CJK_UNIFIED_IDEOGRAPH-30806> 2
+<CJK_UNIFIED_IDEOGRAPH-30807> 2
+<CJK_UNIFIED_IDEOGRAPH-30808> 2
+<CJK_UNIFIED_IDEOGRAPH-30809> 2
+<CJK_UNIFIED_IDEOGRAPH-3080A> 2
+<CJK_UNIFIED_IDEOGRAPH-3080B> 2
+<CJK_UNIFIED_IDEOGRAPH-3080C> 2
+<CJK_UNIFIED_IDEOGRAPH-3080D> 2
+<CJK_UNIFIED_IDEOGRAPH-3080E> 2
+<CJK_UNIFIED_IDEOGRAPH-3080F> 2
+<CJK_UNIFIED_IDEOGRAPH-30810> 2
+<CJK_UNIFIED_IDEOGRAPH-30811> 2
+<CJK_UNIFIED_IDEOGRAPH-30812> 2
+<CJK_UNIFIED_IDEOGRAPH-30813> 2
+<CJK_UNIFIED_IDEOGRAPH-30814> 2
+<CJK_UNIFIED_IDEOGRAPH-30815> 2
+<CJK_UNIFIED_IDEOGRAPH-30816> 2
+<CJK_UNIFIED_IDEOGRAPH-30817> 2
+<CJK_UNIFIED_IDEOGRAPH-30818> 2
+<CJK_UNIFIED_IDEOGRAPH-30819> 2
+<CJK_UNIFIED_IDEOGRAPH-3081A> 2
+<CJK_UNIFIED_IDEOGRAPH-3081B> 2
+<CJK_UNIFIED_IDEOGRAPH-3081C> 2
+<CJK_UNIFIED_IDEOGRAPH-3081D> 2
+<CJK_UNIFIED_IDEOGRAPH-3081E> 2
+<CJK_UNIFIED_IDEOGRAPH-3081F> 2
+<CJK_UNIFIED_IDEOGRAPH-30820> 2
+<CJK_UNIFIED_IDEOGRAPH-30821> 2
+<CJK_UNIFIED_IDEOGRAPH-30822> 2
+<CJK_UNIFIED_IDEOGRAPH-30823> 2
+<CJK_UNIFIED_IDEOGRAPH-30824> 2
+<CJK_UNIFIED_IDEOGRAPH-30825> 2
+<CJK_UNIFIED_IDEOGRAPH-30826> 2
+<CJK_UNIFIED_IDEOGRAPH-30827> 2
+<CJK_UNIFIED_IDEOGRAPH-30828> 2
+<CJK_UNIFIED_IDEOGRAPH-30829> 2
+<CJK_UNIFIED_IDEOGRAPH-3082A> 2
+<CJK_UNIFIED_IDEOGRAPH-3082B> 2
+<CJK_UNIFIED_IDEOGRAPH-3082C> 2
+<CJK_UNIFIED_IDEOGRAPH-3082D> 2
+<CJK_UNIFIED_IDEOGRAPH-3082E> 2
+<CJK_UNIFIED_IDEOGRAPH-3082F> 2
+<CJK_UNIFIED_IDEOGRAPH-30830> 2
+<CJK_UNIFIED_IDEOGRAPH-30831> 2
+<CJK_UNIFIED_IDEOGRAPH-30832> 2
+<CJK_UNIFIED_IDEOGRAPH-30833> 2
+<CJK_UNIFIED_IDEOGRAPH-30834> 2
+<CJK_UNIFIED_IDEOGRAPH-30835> 2
+<CJK_UNIFIED_IDEOGRAPH-30836> 2
+<CJK_UNIFIED_IDEOGRAPH-30837> 2
+<CJK_UNIFIED_IDEOGRAPH-30838> 2
+<CJK_UNIFIED_IDEOGRAPH-30839> 2
+<CJK_UNIFIED_IDEOGRAPH-3083A> 2
+<CJK_UNIFIED_IDEOGRAPH-3083B> 2
+<CJK_UNIFIED_IDEOGRAPH-3083C> 2
+<CJK_UNIFIED_IDEOGRAPH-3083D> 2
+<CJK_UNIFIED_IDEOGRAPH-3083E> 2
+<CJK_UNIFIED_IDEOGRAPH-3083F> 2
+<CJK_UNIFIED_IDEOGRAPH-30840> 2
+<CJK_UNIFIED_IDEOGRAPH-30841> 2
+<CJK_UNIFIED_IDEOGRAPH-30842> 2
+<CJK_UNIFIED_IDEOGRAPH-30843> 2
+<CJK_UNIFIED_IDEOGRAPH-30844> 2
+<CJK_UNIFIED_IDEOGRAPH-30845> 2
+<CJK_UNIFIED_IDEOGRAPH-30846> 2
+<CJK_UNIFIED_IDEOGRAPH-30847> 2
+<CJK_UNIFIED_IDEOGRAPH-30848> 2
+<CJK_UNIFIED_IDEOGRAPH-30849> 2
+<CJK_UNIFIED_IDEOGRAPH-3084A> 2
+<CJK_UNIFIED_IDEOGRAPH-3084B> 2
+<CJK_UNIFIED_IDEOGRAPH-3084C> 2
+<CJK_UNIFIED_IDEOGRAPH-3084D> 2
+<CJK_UNIFIED_IDEOGRAPH-3084E> 2
+<CJK_UNIFIED_IDEOGRAPH-3084F> 2
+<CJK_UNIFIED_IDEOGRAPH-30850> 2
+<CJK_UNIFIED_IDEOGRAPH-30851> 2
+<CJK_UNIFIED_IDEOGRAPH-30852> 2
+<CJK_UNIFIED_IDEOGRAPH-30853> 2
+<CJK_UNIFIED_IDEOGRAPH-30854> 2
+<CJK_UNIFIED_IDEOGRAPH-30855> 2
+<CJK_UNIFIED_IDEOGRAPH-30856> 2
+<CJK_UNIFIED_IDEOGRAPH-30857> 2
+<CJK_UNIFIED_IDEOGRAPH-30858> 2
+<CJK_UNIFIED_IDEOGRAPH-30859> 2
+<CJK_UNIFIED_IDEOGRAPH-3085A> 2
+<CJK_UNIFIED_IDEOGRAPH-3085B> 2
+<CJK_UNIFIED_IDEOGRAPH-3085C> 2
+<CJK_UNIFIED_IDEOGRAPH-3085D> 2
+<CJK_UNIFIED_IDEOGRAPH-3085E> 2
+<CJK_UNIFIED_IDEOGRAPH-3085F> 2
+<CJK_UNIFIED_IDEOGRAPH-30860> 2
+<CJK_UNIFIED_IDEOGRAPH-30861> 2
+<CJK_UNIFIED_IDEOGRAPH-30862> 2
+<CJK_UNIFIED_IDEOGRAPH-30863> 2
+<CJK_UNIFIED_IDEOGRAPH-30864> 2
+<CJK_UNIFIED_IDEOGRAPH-30865> 2
+<CJK_UNIFIED_IDEOGRAPH-30866> 2
+<CJK_UNIFIED_IDEOGRAPH-30867> 2
+<CJK_UNIFIED_IDEOGRAPH-30868> 2
+<CJK_UNIFIED_IDEOGRAPH-30869> 2
+<CJK_UNIFIED_IDEOGRAPH-3086A> 2
+<CJK_UNIFIED_IDEOGRAPH-3086B> 2
+<CJK_UNIFIED_IDEOGRAPH-3086C> 2
+<CJK_UNIFIED_IDEOGRAPH-3086D> 2
+<CJK_UNIFIED_IDEOGRAPH-3086E> 2
+<CJK_UNIFIED_IDEOGRAPH-3086F> 2
+<CJK_UNIFIED_IDEOGRAPH-30870> 2
+<CJK_UNIFIED_IDEOGRAPH-30871> 2
+<CJK_UNIFIED_IDEOGRAPH-30872> 2
+<CJK_UNIFIED_IDEOGRAPH-30873> 2
+<CJK_UNIFIED_IDEOGRAPH-30874> 2
+<CJK_UNIFIED_IDEOGRAPH-30875> 2
+<CJK_UNIFIED_IDEOGRAPH-30876> 2
+<CJK_UNIFIED_IDEOGRAPH-30877> 2
+<CJK_UNIFIED_IDEOGRAPH-30878> 2
+<CJK_UNIFIED_IDEOGRAPH-30879> 2
+<CJK_UNIFIED_IDEOGRAPH-3087A> 2
+<CJK_UNIFIED_IDEOGRAPH-3087B> 2
+<CJK_UNIFIED_IDEOGRAPH-3087C> 2
+<CJK_UNIFIED_IDEOGRAPH-3087D> 2
+<CJK_UNIFIED_IDEOGRAPH-3087E> 2
+<CJK_UNIFIED_IDEOGRAPH-3087F> 2
+<CJK_UNIFIED_IDEOGRAPH-30880> 2
+<CJK_UNIFIED_IDEOGRAPH-30881> 2
+<CJK_UNIFIED_IDEOGRAPH-30882> 2
+<CJK_UNIFIED_IDEOGRAPH-30883> 2
+<CJK_UNIFIED_IDEOGRAPH-30884> 2
+<CJK_UNIFIED_IDEOGRAPH-30885> 2
+<CJK_UNIFIED_IDEOGRAPH-30886> 2
+<CJK_UNIFIED_IDEOGRAPH-30887> 2
+<CJK_UNIFIED_IDEOGRAPH-30888> 2
+<CJK_UNIFIED_IDEOGRAPH-30889> 2
+<CJK_UNIFIED_IDEOGRAPH-3088A> 2
+<CJK_UNIFIED_IDEOGRAPH-3088B> 2
+<CJK_UNIFIED_IDEOGRAPH-3088C> 2
+<CJK_UNIFIED_IDEOGRAPH-3088D> 2
+<CJK_UNIFIED_IDEOGRAPH-3088E> 2
+<CJK_UNIFIED_IDEOGRAPH-3088F> 2
+<CJK_UNIFIED_IDEOGRAPH-30890> 2
+<CJK_UNIFIED_IDEOGRAPH-30891> 2
+<CJK_UNIFIED_IDEOGRAPH-30892> 2
+<CJK_UNIFIED_IDEOGRAPH-30893> 2
+<CJK_UNIFIED_IDEOGRAPH-30894> 2
+<CJK_UNIFIED_IDEOGRAPH-30895> 2
+<CJK_UNIFIED_IDEOGRAPH-30896> 2
+<CJK_UNIFIED_IDEOGRAPH-30897> 2
+<CJK_UNIFIED_IDEOGRAPH-30898> 2
+<CJK_UNIFIED_IDEOGRAPH-30899> 2
+<CJK_UNIFIED_IDEOGRAPH-3089A> 2
+<CJK_UNIFIED_IDEOGRAPH-3089B> 2
+<CJK_UNIFIED_IDEOGRAPH-3089C> 2
+<CJK_UNIFIED_IDEOGRAPH-3089D> 2
+<CJK_UNIFIED_IDEOGRAPH-3089E> 2
+<CJK_UNIFIED_IDEOGRAPH-3089F> 2
+<CJK_UNIFIED_IDEOGRAPH-308A0> 2
+<CJK_UNIFIED_IDEOGRAPH-308A1> 2
+<CJK_UNIFIED_IDEOGRAPH-308A2> 2
+<CJK_UNIFIED_IDEOGRAPH-308A3> 2
+<CJK_UNIFIED_IDEOGRAPH-308A4> 2
+<CJK_UNIFIED_IDEOGRAPH-308A5> 2
+<CJK_UNIFIED_IDEOGRAPH-308A6> 2
+<CJK_UNIFIED_IDEOGRAPH-308A7> 2
+<CJK_UNIFIED_IDEOGRAPH-308A8> 2
+<CJK_UNIFIED_IDEOGRAPH-308A9> 2
+<CJK_UNIFIED_IDEOGRAPH-308AA> 2
+<CJK_UNIFIED_IDEOGRAPH-308AB> 2
+<CJK_UNIFIED_IDEOGRAPH-308AC> 2
+<CJK_UNIFIED_IDEOGRAPH-308AD> 2
+<CJK_UNIFIED_IDEOGRAPH-308AE> 2
+<CJK_UNIFIED_IDEOGRAPH-308AF> 2
+<CJK_UNIFIED_IDEOGRAPH-308B0> 2
+<CJK_UNIFIED_IDEOGRAPH-308B1> 2
+<CJK_UNIFIED_IDEOGRAPH-308B2> 2
+<CJK_UNIFIED_IDEOGRAPH-308B3> 2
+<CJK_UNIFIED_IDEOGRAPH-308B4> 2
+<CJK_UNIFIED_IDEOGRAPH-308B5> 2
+<CJK_UNIFIED_IDEOGRAPH-308B6> 2
+<CJK_UNIFIED_IDEOGRAPH-308B7> 2
+<CJK_UNIFIED_IDEOGRAPH-308B8> 2
+<CJK_UNIFIED_IDEOGRAPH-308B9> 2
+<CJK_UNIFIED_IDEOGRAPH-308BA> 2
+<CJK_UNIFIED_IDEOGRAPH-308BB> 2
+<CJK_UNIFIED_IDEOGRAPH-308BC> 2
+<CJK_UNIFIED_IDEOGRAPH-308BD> 2
+<CJK_UNIFIED_IDEOGRAPH-308BE> 2
+<CJK_UNIFIED_IDEOGRAPH-308BF> 2
+<CJK_UNIFIED_IDEOGRAPH-308C0> 2
+<CJK_UNIFIED_IDEOGRAPH-308C1> 2
+<CJK_UNIFIED_IDEOGRAPH-308C2> 2
+<CJK_UNIFIED_IDEOGRAPH-308C3> 2
+<CJK_UNIFIED_IDEOGRAPH-308C4> 2
+<CJK_UNIFIED_IDEOGRAPH-308C5> 2
+<CJK_UNIFIED_IDEOGRAPH-308C6> 2
+<CJK_UNIFIED_IDEOGRAPH-308C7> 2
+<CJK_UNIFIED_IDEOGRAPH-308C8> 2
+<CJK_UNIFIED_IDEOGRAPH-308C9> 2
+<CJK_UNIFIED_IDEOGRAPH-308CA> 2
+<CJK_UNIFIED_IDEOGRAPH-308CB> 2
+<CJK_UNIFIED_IDEOGRAPH-308CC> 2
+<CJK_UNIFIED_IDEOGRAPH-308CD> 2
+<CJK_UNIFIED_IDEOGRAPH-308CE> 2
+<CJK_UNIFIED_IDEOGRAPH-308CF> 2
+<CJK_UNIFIED_IDEOGRAPH-308D0> 2
+<CJK_UNIFIED_IDEOGRAPH-308D1> 2
+<CJK_UNIFIED_IDEOGRAPH-308D2> 2
+<CJK_UNIFIED_IDEOGRAPH-308D3> 2
+<CJK_UNIFIED_IDEOGRAPH-308D4> 2
+<CJK_UNIFIED_IDEOGRAPH-308D5> 2
+<CJK_UNIFIED_IDEOGRAPH-308D6> 2
+<CJK_UNIFIED_IDEOGRAPH-308D7> 2
+<CJK_UNIFIED_IDEOGRAPH-308D8> 2
+<CJK_UNIFIED_IDEOGRAPH-308D9> 2
+<CJK_UNIFIED_IDEOGRAPH-308DA> 2
+<CJK_UNIFIED_IDEOGRAPH-308DB> 2
+<CJK_UNIFIED_IDEOGRAPH-308DC> 2
+<CJK_UNIFIED_IDEOGRAPH-308DD> 2
+<CJK_UNIFIED_IDEOGRAPH-308DE> 2
+<CJK_UNIFIED_IDEOGRAPH-308DF> 2
+<CJK_UNIFIED_IDEOGRAPH-308E0> 2
+<CJK_UNIFIED_IDEOGRAPH-308E1> 2
+<CJK_UNIFIED_IDEOGRAPH-308E2> 2
+<CJK_UNIFIED_IDEOGRAPH-308E3> 2
+<CJK_UNIFIED_IDEOGRAPH-308E4> 2
+<CJK_UNIFIED_IDEOGRAPH-308E5> 2
+<CJK_UNIFIED_IDEOGRAPH-308E6> 2
+<CJK_UNIFIED_IDEOGRAPH-308E7> 2
+<CJK_UNIFIED_IDEOGRAPH-308E8> 2
+<CJK_UNIFIED_IDEOGRAPH-308E9> 2
+<CJK_UNIFIED_IDEOGRAPH-308EA> 2
+<CJK_UNIFIED_IDEOGRAPH-308EB> 2
+<CJK_UNIFIED_IDEOGRAPH-308EC> 2
+<CJK_UNIFIED_IDEOGRAPH-308ED> 2
+<CJK_UNIFIED_IDEOGRAPH-308EE> 2
+<CJK_UNIFIED_IDEOGRAPH-308EF> 2
+<CJK_UNIFIED_IDEOGRAPH-308F0> 2
+<CJK_UNIFIED_IDEOGRAPH-308F1> 2
+<CJK_UNIFIED_IDEOGRAPH-308F2> 2
+<CJK_UNIFIED_IDEOGRAPH-308F3> 2
+<CJK_UNIFIED_IDEOGRAPH-308F4> 2
+<CJK_UNIFIED_IDEOGRAPH-308F5> 2
+<CJK_UNIFIED_IDEOGRAPH-308F6> 2
+<CJK_UNIFIED_IDEOGRAPH-308F7> 2
+<CJK_UNIFIED_IDEOGRAPH-308F8> 2
+<CJK_UNIFIED_IDEOGRAPH-308F9> 2
+<CJK_UNIFIED_IDEOGRAPH-308FA> 2
+<CJK_UNIFIED_IDEOGRAPH-308FB> 2
+<CJK_UNIFIED_IDEOGRAPH-308FC> 2
+<CJK_UNIFIED_IDEOGRAPH-308FD> 2
+<CJK_UNIFIED_IDEOGRAPH-308FE> 2
+<CJK_UNIFIED_IDEOGRAPH-308FF> 2
+<CJK_UNIFIED_IDEOGRAPH-30900> 2
+<CJK_UNIFIED_IDEOGRAPH-30901> 2
+<CJK_UNIFIED_IDEOGRAPH-30902> 2
+<CJK_UNIFIED_IDEOGRAPH-30903> 2
+<CJK_UNIFIED_IDEOGRAPH-30904> 2
+<CJK_UNIFIED_IDEOGRAPH-30905> 2
+<CJK_UNIFIED_IDEOGRAPH-30906> 2
+<CJK_UNIFIED_IDEOGRAPH-30907> 2
+<CJK_UNIFIED_IDEOGRAPH-30908> 2
+<CJK_UNIFIED_IDEOGRAPH-30909> 2
+<CJK_UNIFIED_IDEOGRAPH-3090A> 2
+<CJK_UNIFIED_IDEOGRAPH-3090B> 2
+<CJK_UNIFIED_IDEOGRAPH-3090C> 2
+<CJK_UNIFIED_IDEOGRAPH-3090D> 2
+<CJK_UNIFIED_IDEOGRAPH-3090E> 2
+<CJK_UNIFIED_IDEOGRAPH-3090F> 2
+<CJK_UNIFIED_IDEOGRAPH-30910> 2
+<CJK_UNIFIED_IDEOGRAPH-30911> 2
+<CJK_UNIFIED_IDEOGRAPH-30912> 2
+<CJK_UNIFIED_IDEOGRAPH-30913> 2
+<CJK_UNIFIED_IDEOGRAPH-30914> 2
+<CJK_UNIFIED_IDEOGRAPH-30915> 2
+<CJK_UNIFIED_IDEOGRAPH-30916> 2
+<CJK_UNIFIED_IDEOGRAPH-30917> 2
+<CJK_UNIFIED_IDEOGRAPH-30918> 2
+<CJK_UNIFIED_IDEOGRAPH-30919> 2
+<CJK_UNIFIED_IDEOGRAPH-3091A> 2
+<CJK_UNIFIED_IDEOGRAPH-3091B> 2
+<CJK_UNIFIED_IDEOGRAPH-3091C> 2
+<CJK_UNIFIED_IDEOGRAPH-3091D> 2
+<CJK_UNIFIED_IDEOGRAPH-3091E> 2
+<CJK_UNIFIED_IDEOGRAPH-3091F> 2
+<CJK_UNIFIED_IDEOGRAPH-30920> 2
+<CJK_UNIFIED_IDEOGRAPH-30921> 2
+<CJK_UNIFIED_IDEOGRAPH-30922> 2
+<CJK_UNIFIED_IDEOGRAPH-30923> 2
+<CJK_UNIFIED_IDEOGRAPH-30924> 2
+<CJK_UNIFIED_IDEOGRAPH-30925> 2
+<CJK_UNIFIED_IDEOGRAPH-30926> 2
+<CJK_UNIFIED_IDEOGRAPH-30927> 2
+<CJK_UNIFIED_IDEOGRAPH-30928> 2
+<CJK_UNIFIED_IDEOGRAPH-30929> 2
+<CJK_UNIFIED_IDEOGRAPH-3092A> 2
+<CJK_UNIFIED_IDEOGRAPH-3092B> 2
+<CJK_UNIFIED_IDEOGRAPH-3092C> 2
+<CJK_UNIFIED_IDEOGRAPH-3092D> 2
+<CJK_UNIFIED_IDEOGRAPH-3092E> 2
+<CJK_UNIFIED_IDEOGRAPH-3092F> 2
+<CJK_UNIFIED_IDEOGRAPH-30930> 2
+<CJK_UNIFIED_IDEOGRAPH-30931> 2
+<CJK_UNIFIED_IDEOGRAPH-30932> 2
+<CJK_UNIFIED_IDEOGRAPH-30933> 2
+<CJK_UNIFIED_IDEOGRAPH-30934> 2
+<CJK_UNIFIED_IDEOGRAPH-30935> 2
+<CJK_UNIFIED_IDEOGRAPH-30936> 2
+<CJK_UNIFIED_IDEOGRAPH-30937> 2
+<CJK_UNIFIED_IDEOGRAPH-30938> 2
+<CJK_UNIFIED_IDEOGRAPH-30939> 2
+<CJK_UNIFIED_IDEOGRAPH-3093A> 2
+<CJK_UNIFIED_IDEOGRAPH-3093B> 2
+<CJK_UNIFIED_IDEOGRAPH-3093C> 2
+<CJK_UNIFIED_IDEOGRAPH-3093D> 2
+<CJK_UNIFIED_IDEOGRAPH-3093E> 2
+<CJK_UNIFIED_IDEOGRAPH-3093F> 2
+<CJK_UNIFIED_IDEOGRAPH-30940> 2
+<CJK_UNIFIED_IDEOGRAPH-30941> 2
+<CJK_UNIFIED_IDEOGRAPH-30942> 2
+<CJK_UNIFIED_IDEOGRAPH-30943> 2
+<CJK_UNIFIED_IDEOGRAPH-30944> 2
+<CJK_UNIFIED_IDEOGRAPH-30945> 2
+<CJK_UNIFIED_IDEOGRAPH-30946> 2
+<CJK_UNIFIED_IDEOGRAPH-30947> 2
+<CJK_UNIFIED_IDEOGRAPH-30948> 2
+<CJK_UNIFIED_IDEOGRAPH-30949> 2
+<CJK_UNIFIED_IDEOGRAPH-3094A> 2
+<CJK_UNIFIED_IDEOGRAPH-3094B> 2
+<CJK_UNIFIED_IDEOGRAPH-3094C> 2
+<CJK_UNIFIED_IDEOGRAPH-3094D> 2
+<CJK_UNIFIED_IDEOGRAPH-3094E> 2
+<CJK_UNIFIED_IDEOGRAPH-3094F> 2
+<CJK_UNIFIED_IDEOGRAPH-30950> 2
+<CJK_UNIFIED_IDEOGRAPH-30951> 2
+<CJK_UNIFIED_IDEOGRAPH-30952> 2
+<CJK_UNIFIED_IDEOGRAPH-30953> 2
+<CJK_UNIFIED_IDEOGRAPH-30954> 2
+<CJK_UNIFIED_IDEOGRAPH-30955> 2
+<CJK_UNIFIED_IDEOGRAPH-30956> 2
+<CJK_UNIFIED_IDEOGRAPH-30957> 2
+<CJK_UNIFIED_IDEOGRAPH-30958> 2
+<CJK_UNIFIED_IDEOGRAPH-30959> 2
+<CJK_UNIFIED_IDEOGRAPH-3095A> 2
+<CJK_UNIFIED_IDEOGRAPH-3095B> 2
+<CJK_UNIFIED_IDEOGRAPH-3095C> 2
+<CJK_UNIFIED_IDEOGRAPH-3095D> 2
+<CJK_UNIFIED_IDEOGRAPH-3095E> 2
+<CJK_UNIFIED_IDEOGRAPH-3095F> 2
+<CJK_UNIFIED_IDEOGRAPH-30960> 2
+<CJK_UNIFIED_IDEOGRAPH-30961> 2
+<CJK_UNIFIED_IDEOGRAPH-30962> 2
+<CJK_UNIFIED_IDEOGRAPH-30963> 2
+<CJK_UNIFIED_IDEOGRAPH-30964> 2
+<CJK_UNIFIED_IDEOGRAPH-30965> 2
+<CJK_UNIFIED_IDEOGRAPH-30966> 2
+<CJK_UNIFIED_IDEOGRAPH-30967> 2
+<CJK_UNIFIED_IDEOGRAPH-30968> 2
+<CJK_UNIFIED_IDEOGRAPH-30969> 2
+<CJK_UNIFIED_IDEOGRAPH-3096A> 2
+<CJK_UNIFIED_IDEOGRAPH-3096B> 2
+<CJK_UNIFIED_IDEOGRAPH-3096C> 2
+<CJK_UNIFIED_IDEOGRAPH-3096D> 2
+<CJK_UNIFIED_IDEOGRAPH-3096E> 2
+<CJK_UNIFIED_IDEOGRAPH-3096F> 2
+<CJK_UNIFIED_IDEOGRAPH-30970> 2
+<CJK_UNIFIED_IDEOGRAPH-30971> 2
+<CJK_UNIFIED_IDEOGRAPH-30972> 2
+<CJK_UNIFIED_IDEOGRAPH-30973> 2
+<CJK_UNIFIED_IDEOGRAPH-30974> 2
+<CJK_UNIFIED_IDEOGRAPH-30975> 2
+<CJK_UNIFIED_IDEOGRAPH-30976> 2
+<CJK_UNIFIED_IDEOGRAPH-30977> 2
+<CJK_UNIFIED_IDEOGRAPH-30978> 2
+<CJK_UNIFIED_IDEOGRAPH-30979> 2
+<CJK_UNIFIED_IDEOGRAPH-3097A> 2
+<CJK_UNIFIED_IDEOGRAPH-3097B> 2
+<CJK_UNIFIED_IDEOGRAPH-3097C> 2
+<CJK_UNIFIED_IDEOGRAPH-3097D> 2
+<CJK_UNIFIED_IDEOGRAPH-3097E> 2
+<CJK_UNIFIED_IDEOGRAPH-3097F> 2
+<CJK_UNIFIED_IDEOGRAPH-30980> 2
+<CJK_UNIFIED_IDEOGRAPH-30981> 2
+<CJK_UNIFIED_IDEOGRAPH-30982> 2
+<CJK_UNIFIED_IDEOGRAPH-30983> 2
+<CJK_UNIFIED_IDEOGRAPH-30984> 2
+<CJK_UNIFIED_IDEOGRAPH-30985> 2
+<CJK_UNIFIED_IDEOGRAPH-30986> 2
+<CJK_UNIFIED_IDEOGRAPH-30987> 2
+<CJK_UNIFIED_IDEOGRAPH-30988> 2
+<CJK_UNIFIED_IDEOGRAPH-30989> 2
+<CJK_UNIFIED_IDEOGRAPH-3098A> 2
+<CJK_UNIFIED_IDEOGRAPH-3098B> 2
+<CJK_UNIFIED_IDEOGRAPH-3098C> 2
+<CJK_UNIFIED_IDEOGRAPH-3098D> 2
+<CJK_UNIFIED_IDEOGRAPH-3098E> 2
+<CJK_UNIFIED_IDEOGRAPH-3098F> 2
+<CJK_UNIFIED_IDEOGRAPH-30990> 2
+<CJK_UNIFIED_IDEOGRAPH-30991> 2
+<CJK_UNIFIED_IDEOGRAPH-30992> 2
+<CJK_UNIFIED_IDEOGRAPH-30993> 2
+<CJK_UNIFIED_IDEOGRAPH-30994> 2
+<CJK_UNIFIED_IDEOGRAPH-30995> 2
+<CJK_UNIFIED_IDEOGRAPH-30996> 2
+<CJK_UNIFIED_IDEOGRAPH-30997> 2
+<CJK_UNIFIED_IDEOGRAPH-30998> 2
+<CJK_UNIFIED_IDEOGRAPH-30999> 2
+<CJK_UNIFIED_IDEOGRAPH-3099A> 2
+<CJK_UNIFIED_IDEOGRAPH-3099B> 2
+<CJK_UNIFIED_IDEOGRAPH-3099C> 2
+<CJK_UNIFIED_IDEOGRAPH-3099D> 2
+<CJK_UNIFIED_IDEOGRAPH-3099E> 2
+<CJK_UNIFIED_IDEOGRAPH-3099F> 2
+<CJK_UNIFIED_IDEOGRAPH-309A0> 2
+<CJK_UNIFIED_IDEOGRAPH-309A1> 2
+<CJK_UNIFIED_IDEOGRAPH-309A2> 2
+<CJK_UNIFIED_IDEOGRAPH-309A3> 2
+<CJK_UNIFIED_IDEOGRAPH-309A4> 2
+<CJK_UNIFIED_IDEOGRAPH-309A5> 2
+<CJK_UNIFIED_IDEOGRAPH-309A6> 2
+<CJK_UNIFIED_IDEOGRAPH-309A7> 2
+<CJK_UNIFIED_IDEOGRAPH-309A8> 2
+<CJK_UNIFIED_IDEOGRAPH-309A9> 2
+<CJK_UNIFIED_IDEOGRAPH-309AA> 2
+<CJK_UNIFIED_IDEOGRAPH-309AB> 2
+<CJK_UNIFIED_IDEOGRAPH-309AC> 2
+<CJK_UNIFIED_IDEOGRAPH-309AD> 2
+<CJK_UNIFIED_IDEOGRAPH-309AE> 2
+<CJK_UNIFIED_IDEOGRAPH-309AF> 2
+<CJK_UNIFIED_IDEOGRAPH-309B0> 2
+<CJK_UNIFIED_IDEOGRAPH-309B1> 2
+<CJK_UNIFIED_IDEOGRAPH-309B2> 2
+<CJK_UNIFIED_IDEOGRAPH-309B3> 2
+<CJK_UNIFIED_IDEOGRAPH-309B4> 2
+<CJK_UNIFIED_IDEOGRAPH-309B5> 2
+<CJK_UNIFIED_IDEOGRAPH-309B6> 2
+<CJK_UNIFIED_IDEOGRAPH-309B7> 2
+<CJK_UNIFIED_IDEOGRAPH-309B8> 2
+<CJK_UNIFIED_IDEOGRAPH-309B9> 2
+<CJK_UNIFIED_IDEOGRAPH-309BA> 2
+<CJK_UNIFIED_IDEOGRAPH-309BB> 2
+<CJK_UNIFIED_IDEOGRAPH-309BC> 2
+<CJK_UNIFIED_IDEOGRAPH-309BD> 2
+<CJK_UNIFIED_IDEOGRAPH-309BE> 2
+<CJK_UNIFIED_IDEOGRAPH-309BF> 2
+<CJK_UNIFIED_IDEOGRAPH-309C0> 2
+<CJK_UNIFIED_IDEOGRAPH-309C1> 2
+<CJK_UNIFIED_IDEOGRAPH-309C2> 2
+<CJK_UNIFIED_IDEOGRAPH-309C3> 2
+<CJK_UNIFIED_IDEOGRAPH-309C4> 2
+<CJK_UNIFIED_IDEOGRAPH-309C5> 2
+<CJK_UNIFIED_IDEOGRAPH-309C6> 2
+<CJK_UNIFIED_IDEOGRAPH-309C7> 2
+<CJK_UNIFIED_IDEOGRAPH-309C8> 2
+<CJK_UNIFIED_IDEOGRAPH-309C9> 2
+<CJK_UNIFIED_IDEOGRAPH-309CA> 2
+<CJK_UNIFIED_IDEOGRAPH-309CB> 2
+<CJK_UNIFIED_IDEOGRAPH-309CC> 2
+<CJK_UNIFIED_IDEOGRAPH-309CD> 2
+<CJK_UNIFIED_IDEOGRAPH-309CE> 2
+<CJK_UNIFIED_IDEOGRAPH-309CF> 2
+<CJK_UNIFIED_IDEOGRAPH-309D0> 2
+<CJK_UNIFIED_IDEOGRAPH-309D1> 2
+<CJK_UNIFIED_IDEOGRAPH-309D2> 2
+<CJK_UNIFIED_IDEOGRAPH-309D3> 2
+<CJK_UNIFIED_IDEOGRAPH-309D4> 2
+<CJK_UNIFIED_IDEOGRAPH-309D5> 2
+<CJK_UNIFIED_IDEOGRAPH-309D6> 2
+<CJK_UNIFIED_IDEOGRAPH-309D7> 2
+<CJK_UNIFIED_IDEOGRAPH-309D8> 2
+<CJK_UNIFIED_IDEOGRAPH-309D9> 2
+<CJK_UNIFIED_IDEOGRAPH-309DA> 2
+<CJK_UNIFIED_IDEOGRAPH-309DB> 2
+<CJK_UNIFIED_IDEOGRAPH-309DC> 2
+<CJK_UNIFIED_IDEOGRAPH-309DD> 2
+<CJK_UNIFIED_IDEOGRAPH-309DE> 2
+<CJK_UNIFIED_IDEOGRAPH-309DF> 2
+<CJK_UNIFIED_IDEOGRAPH-309E0> 2
+<CJK_UNIFIED_IDEOGRAPH-309E1> 2
+<CJK_UNIFIED_IDEOGRAPH-309E2> 2
+<CJK_UNIFIED_IDEOGRAPH-309E3> 2
+<CJK_UNIFIED_IDEOGRAPH-309E4> 2
+<CJK_UNIFIED_IDEOGRAPH-309E5> 2
+<CJK_UNIFIED_IDEOGRAPH-309E6> 2
+<CJK_UNIFIED_IDEOGRAPH-309E7> 2
+<CJK_UNIFIED_IDEOGRAPH-309E8> 2
+<CJK_UNIFIED_IDEOGRAPH-309E9> 2
+<CJK_UNIFIED_IDEOGRAPH-309EA> 2
+<CJK_UNIFIED_IDEOGRAPH-309EB> 2
+<CJK_UNIFIED_IDEOGRAPH-309EC> 2
+<CJK_UNIFIED_IDEOGRAPH-309ED> 2
+<CJK_UNIFIED_IDEOGRAPH-309EE> 2
+<CJK_UNIFIED_IDEOGRAPH-309EF> 2
+<CJK_UNIFIED_IDEOGRAPH-309F0> 2
+<CJK_UNIFIED_IDEOGRAPH-309F1> 2
+<CJK_UNIFIED_IDEOGRAPH-309F2> 2
+<CJK_UNIFIED_IDEOGRAPH-309F3> 2
+<CJK_UNIFIED_IDEOGRAPH-309F4> 2
+<CJK_UNIFIED_IDEOGRAPH-309F5> 2
+<CJK_UNIFIED_IDEOGRAPH-309F6> 2
+<CJK_UNIFIED_IDEOGRAPH-309F7> 2
+<CJK_UNIFIED_IDEOGRAPH-309F8> 2
+<CJK_UNIFIED_IDEOGRAPH-309F9> 2
+<CJK_UNIFIED_IDEOGRAPH-309FA> 2
+<CJK_UNIFIED_IDEOGRAPH-309FB> 2
+<CJK_UNIFIED_IDEOGRAPH-309FC> 2
+<CJK_UNIFIED_IDEOGRAPH-309FD> 2
+<CJK_UNIFIED_IDEOGRAPH-309FE> 2
+<CJK_UNIFIED_IDEOGRAPH-309FF> 2
+<CJK_UNIFIED_IDEOGRAPH-30A00> 2
+<CJK_UNIFIED_IDEOGRAPH-30A01> 2
+<CJK_UNIFIED_IDEOGRAPH-30A02> 2
+<CJK_UNIFIED_IDEOGRAPH-30A03> 2
+<CJK_UNIFIED_IDEOGRAPH-30A04> 2
+<CJK_UNIFIED_IDEOGRAPH-30A05> 2
+<CJK_UNIFIED_IDEOGRAPH-30A06> 2
+<CJK_UNIFIED_IDEOGRAPH-30A07> 2
+<CJK_UNIFIED_IDEOGRAPH-30A08> 2
+<CJK_UNIFIED_IDEOGRAPH-30A09> 2
+<CJK_UNIFIED_IDEOGRAPH-30A0A> 2
+<CJK_UNIFIED_IDEOGRAPH-30A0B> 2
+<CJK_UNIFIED_IDEOGRAPH-30A0C> 2
+<CJK_UNIFIED_IDEOGRAPH-30A0D> 2
+<CJK_UNIFIED_IDEOGRAPH-30A0E> 2
+<CJK_UNIFIED_IDEOGRAPH-30A0F> 2
+<CJK_UNIFIED_IDEOGRAPH-30A10> 2
+<CJK_UNIFIED_IDEOGRAPH-30A11> 2
+<CJK_UNIFIED_IDEOGRAPH-30A12> 2
+<CJK_UNIFIED_IDEOGRAPH-30A13> 2
+<CJK_UNIFIED_IDEOGRAPH-30A14> 2
+<CJK_UNIFIED_IDEOGRAPH-30A15> 2
+<CJK_UNIFIED_IDEOGRAPH-30A16> 2
+<CJK_UNIFIED_IDEOGRAPH-30A17> 2
+<CJK_UNIFIED_IDEOGRAPH-30A18> 2
+<CJK_UNIFIED_IDEOGRAPH-30A19> 2
+<CJK_UNIFIED_IDEOGRAPH-30A1A> 2
+<CJK_UNIFIED_IDEOGRAPH-30A1B> 2
+<CJK_UNIFIED_IDEOGRAPH-30A1C> 2
+<CJK_UNIFIED_IDEOGRAPH-30A1D> 2
+<CJK_UNIFIED_IDEOGRAPH-30A1E> 2
+<CJK_UNIFIED_IDEOGRAPH-30A1F> 2
+<CJK_UNIFIED_IDEOGRAPH-30A20> 2
+<CJK_UNIFIED_IDEOGRAPH-30A21> 2
+<CJK_UNIFIED_IDEOGRAPH-30A22> 2
+<CJK_UNIFIED_IDEOGRAPH-30A23> 2
+<CJK_UNIFIED_IDEOGRAPH-30A24> 2
+<CJK_UNIFIED_IDEOGRAPH-30A25> 2
+<CJK_UNIFIED_IDEOGRAPH-30A26> 2
+<CJK_UNIFIED_IDEOGRAPH-30A27> 2
+<CJK_UNIFIED_IDEOGRAPH-30A28> 2
+<CJK_UNIFIED_IDEOGRAPH-30A29> 2
+<CJK_UNIFIED_IDEOGRAPH-30A2A> 2
+<CJK_UNIFIED_IDEOGRAPH-30A2B> 2
+<CJK_UNIFIED_IDEOGRAPH-30A2C> 2
+<CJK_UNIFIED_IDEOGRAPH-30A2D> 2
+<CJK_UNIFIED_IDEOGRAPH-30A2E> 2
+<CJK_UNIFIED_IDEOGRAPH-30A2F> 2
+<CJK_UNIFIED_IDEOGRAPH-30A30> 2
+<CJK_UNIFIED_IDEOGRAPH-30A31> 2
+<CJK_UNIFIED_IDEOGRAPH-30A32> 2
+<CJK_UNIFIED_IDEOGRAPH-30A33> 2
+<CJK_UNIFIED_IDEOGRAPH-30A34> 2
+<CJK_UNIFIED_IDEOGRAPH-30A35> 2
+<CJK_UNIFIED_IDEOGRAPH-30A36> 2
+<CJK_UNIFIED_IDEOGRAPH-30A37> 2
+<CJK_UNIFIED_IDEOGRAPH-30A38> 2
+<CJK_UNIFIED_IDEOGRAPH-30A39> 2
+<CJK_UNIFIED_IDEOGRAPH-30A3A> 2
+<CJK_UNIFIED_IDEOGRAPH-30A3B> 2
+<CJK_UNIFIED_IDEOGRAPH-30A3C> 2
+<CJK_UNIFIED_IDEOGRAPH-30A3D> 2
+<CJK_UNIFIED_IDEOGRAPH-30A3E> 2
+<CJK_UNIFIED_IDEOGRAPH-30A3F> 2
+<CJK_UNIFIED_IDEOGRAPH-30A40> 2
+<CJK_UNIFIED_IDEOGRAPH-30A41> 2
+<CJK_UNIFIED_IDEOGRAPH-30A42> 2
+<CJK_UNIFIED_IDEOGRAPH-30A43> 2
+<CJK_UNIFIED_IDEOGRAPH-30A44> 2
+<CJK_UNIFIED_IDEOGRAPH-30A45> 2
+<CJK_UNIFIED_IDEOGRAPH-30A46> 2
+<CJK_UNIFIED_IDEOGRAPH-30A47> 2
+<CJK_UNIFIED_IDEOGRAPH-30A48> 2
+<CJK_UNIFIED_IDEOGRAPH-30A49> 2
+<CJK_UNIFIED_IDEOGRAPH-30A4A> 2
+<CJK_UNIFIED_IDEOGRAPH-30A4B> 2
+<CJK_UNIFIED_IDEOGRAPH-30A4C> 2
+<CJK_UNIFIED_IDEOGRAPH-30A4D> 2
+<CJK_UNIFIED_IDEOGRAPH-30A4E> 2
+<CJK_UNIFIED_IDEOGRAPH-30A4F> 2
+<CJK_UNIFIED_IDEOGRAPH-30A50> 2
+<CJK_UNIFIED_IDEOGRAPH-30A51> 2
+<CJK_UNIFIED_IDEOGRAPH-30A52> 2
+<CJK_UNIFIED_IDEOGRAPH-30A53> 2
+<CJK_UNIFIED_IDEOGRAPH-30A54> 2
+<CJK_UNIFIED_IDEOGRAPH-30A55> 2
+<CJK_UNIFIED_IDEOGRAPH-30A56> 2
+<CJK_UNIFIED_IDEOGRAPH-30A57> 2
+<CJK_UNIFIED_IDEOGRAPH-30A58> 2
+<CJK_UNIFIED_IDEOGRAPH-30A59> 2
+<CJK_UNIFIED_IDEOGRAPH-30A5A> 2
+<CJK_UNIFIED_IDEOGRAPH-30A5B> 2
+<CJK_UNIFIED_IDEOGRAPH-30A5C> 2
+<CJK_UNIFIED_IDEOGRAPH-30A5D> 2
+<CJK_UNIFIED_IDEOGRAPH-30A5E> 2
+<CJK_UNIFIED_IDEOGRAPH-30A5F> 2
+<CJK_UNIFIED_IDEOGRAPH-30A60> 2
+<CJK_UNIFIED_IDEOGRAPH-30A61> 2
+<CJK_UNIFIED_IDEOGRAPH-30A62> 2
+<CJK_UNIFIED_IDEOGRAPH-30A63> 2
+<CJK_UNIFIED_IDEOGRAPH-30A64> 2
+<CJK_UNIFIED_IDEOGRAPH-30A65> 2
+<CJK_UNIFIED_IDEOGRAPH-30A66> 2
+<CJK_UNIFIED_IDEOGRAPH-30A67> 2
+<CJK_UNIFIED_IDEOGRAPH-30A68> 2
+<CJK_UNIFIED_IDEOGRAPH-30A69> 2
+<CJK_UNIFIED_IDEOGRAPH-30A6A> 2
+<CJK_UNIFIED_IDEOGRAPH-30A6B> 2
+<CJK_UNIFIED_IDEOGRAPH-30A6C> 2
+<CJK_UNIFIED_IDEOGRAPH-30A6D> 2
+<CJK_UNIFIED_IDEOGRAPH-30A6E> 2
+<CJK_UNIFIED_IDEOGRAPH-30A6F> 2
+<CJK_UNIFIED_IDEOGRAPH-30A70> 2
+<CJK_UNIFIED_IDEOGRAPH-30A71> 2
+<CJK_UNIFIED_IDEOGRAPH-30A72> 2
+<CJK_UNIFIED_IDEOGRAPH-30A73> 2
+<CJK_UNIFIED_IDEOGRAPH-30A74> 2
+<CJK_UNIFIED_IDEOGRAPH-30A75> 2
+<CJK_UNIFIED_IDEOGRAPH-30A76> 2
+<CJK_UNIFIED_IDEOGRAPH-30A77> 2
+<CJK_UNIFIED_IDEOGRAPH-30A78> 2
+<CJK_UNIFIED_IDEOGRAPH-30A79> 2
+<CJK_UNIFIED_IDEOGRAPH-30A7A> 2
+<CJK_UNIFIED_IDEOGRAPH-30A7B> 2
+<CJK_UNIFIED_IDEOGRAPH-30A7C> 2
+<CJK_UNIFIED_IDEOGRAPH-30A7D> 2
+<CJK_UNIFIED_IDEOGRAPH-30A7E> 2
+<CJK_UNIFIED_IDEOGRAPH-30A7F> 2
+<CJK_UNIFIED_IDEOGRAPH-30A80> 2
+<CJK_UNIFIED_IDEOGRAPH-30A81> 2
+<CJK_UNIFIED_IDEOGRAPH-30A82> 2
+<CJK_UNIFIED_IDEOGRAPH-30A83> 2
+<CJK_UNIFIED_IDEOGRAPH-30A84> 2
+<CJK_UNIFIED_IDEOGRAPH-30A85> 2
+<CJK_UNIFIED_IDEOGRAPH-30A86> 2
+<CJK_UNIFIED_IDEOGRAPH-30A87> 2
+<CJK_UNIFIED_IDEOGRAPH-30A88> 2
+<CJK_UNIFIED_IDEOGRAPH-30A89> 2
+<CJK_UNIFIED_IDEOGRAPH-30A8A> 2
+<CJK_UNIFIED_IDEOGRAPH-30A8B> 2
+<CJK_UNIFIED_IDEOGRAPH-30A8C> 2
+<CJK_UNIFIED_IDEOGRAPH-30A8D> 2
+<CJK_UNIFIED_IDEOGRAPH-30A8E> 2
+<CJK_UNIFIED_IDEOGRAPH-30A8F> 2
+<CJK_UNIFIED_IDEOGRAPH-30A90> 2
+<CJK_UNIFIED_IDEOGRAPH-30A91> 2
+<CJK_UNIFIED_IDEOGRAPH-30A92> 2
+<CJK_UNIFIED_IDEOGRAPH-30A93> 2
+<CJK_UNIFIED_IDEOGRAPH-30A94> 2
+<CJK_UNIFIED_IDEOGRAPH-30A95> 2
+<CJK_UNIFIED_IDEOGRAPH-30A96> 2
+<CJK_UNIFIED_IDEOGRAPH-30A97> 2
+<CJK_UNIFIED_IDEOGRAPH-30A98> 2
+<CJK_UNIFIED_IDEOGRAPH-30A99> 2
+<CJK_UNIFIED_IDEOGRAPH-30A9A> 2
+<CJK_UNIFIED_IDEOGRAPH-30A9B> 2
+<CJK_UNIFIED_IDEOGRAPH-30A9C> 2
+<CJK_UNIFIED_IDEOGRAPH-30A9D> 2
+<CJK_UNIFIED_IDEOGRAPH-30A9E> 2
+<CJK_UNIFIED_IDEOGRAPH-30A9F> 2
+<CJK_UNIFIED_IDEOGRAPH-30AA0> 2
+<CJK_UNIFIED_IDEOGRAPH-30AA1> 2
+<CJK_UNIFIED_IDEOGRAPH-30AA2> 2
+<CJK_UNIFIED_IDEOGRAPH-30AA3> 2
+<CJK_UNIFIED_IDEOGRAPH-30AA4> 2
+<CJK_UNIFIED_IDEOGRAPH-30AA5> 2
+<CJK_UNIFIED_IDEOGRAPH-30AA6> 2
+<CJK_UNIFIED_IDEOGRAPH-30AA7> 2
+<CJK_UNIFIED_IDEOGRAPH-30AA8> 2
+<CJK_UNIFIED_IDEOGRAPH-30AA9> 2
+<CJK_UNIFIED_IDEOGRAPH-30AAA> 2
+<CJK_UNIFIED_IDEOGRAPH-30AAB> 2
+<CJK_UNIFIED_IDEOGRAPH-30AAC> 2
+<CJK_UNIFIED_IDEOGRAPH-30AAD> 2
+<CJK_UNIFIED_IDEOGRAPH-30AAE> 2
+<CJK_UNIFIED_IDEOGRAPH-30AAF> 2
+<CJK_UNIFIED_IDEOGRAPH-30AB0> 2
+<CJK_UNIFIED_IDEOGRAPH-30AB1> 2
+<CJK_UNIFIED_IDEOGRAPH-30AB2> 2
+<CJK_UNIFIED_IDEOGRAPH-30AB3> 2
+<CJK_UNIFIED_IDEOGRAPH-30AB4> 2
+<CJK_UNIFIED_IDEOGRAPH-30AB5> 2
+<CJK_UNIFIED_IDEOGRAPH-30AB6> 2
+<CJK_UNIFIED_IDEOGRAPH-30AB7> 2
+<CJK_UNIFIED_IDEOGRAPH-30AB8> 2
+<CJK_UNIFIED_IDEOGRAPH-30AB9> 2
+<CJK_UNIFIED_IDEOGRAPH-30ABA> 2
+<CJK_UNIFIED_IDEOGRAPH-30ABB> 2
+<CJK_UNIFIED_IDEOGRAPH-30ABC> 2
+<CJK_UNIFIED_IDEOGRAPH-30ABD> 2
+<CJK_UNIFIED_IDEOGRAPH-30ABE> 2
+<CJK_UNIFIED_IDEOGRAPH-30ABF> 2
+<CJK_UNIFIED_IDEOGRAPH-30AC0> 2
+<CJK_UNIFIED_IDEOGRAPH-30AC1> 2
+<CJK_UNIFIED_IDEOGRAPH-30AC2> 2
+<CJK_UNIFIED_IDEOGRAPH-30AC3> 2
+<CJK_UNIFIED_IDEOGRAPH-30AC4> 2
+<CJK_UNIFIED_IDEOGRAPH-30AC5> 2
+<CJK_UNIFIED_IDEOGRAPH-30AC6> 2
+<CJK_UNIFIED_IDEOGRAPH-30AC7> 2
+<CJK_UNIFIED_IDEOGRAPH-30AC8> 2
+<CJK_UNIFIED_IDEOGRAPH-30AC9> 2
+<CJK_UNIFIED_IDEOGRAPH-30ACA> 2
+<CJK_UNIFIED_IDEOGRAPH-30ACB> 2
+<CJK_UNIFIED_IDEOGRAPH-30ACC> 2
+<CJK_UNIFIED_IDEOGRAPH-30ACD> 2
+<CJK_UNIFIED_IDEOGRAPH-30ACE> 2
+<CJK_UNIFIED_IDEOGRAPH-30ACF> 2
+<CJK_UNIFIED_IDEOGRAPH-30AD0> 2
+<CJK_UNIFIED_IDEOGRAPH-30AD1> 2
+<CJK_UNIFIED_IDEOGRAPH-30AD2> 2
+<CJK_UNIFIED_IDEOGRAPH-30AD3> 2
+<CJK_UNIFIED_IDEOGRAPH-30AD4> 2
+<CJK_UNIFIED_IDEOGRAPH-30AD5> 2
+<CJK_UNIFIED_IDEOGRAPH-30AD6> 2
+<CJK_UNIFIED_IDEOGRAPH-30AD7> 2
+<CJK_UNIFIED_IDEOGRAPH-30AD8> 2
+<CJK_UNIFIED_IDEOGRAPH-30AD9> 2
+<CJK_UNIFIED_IDEOGRAPH-30ADA> 2
+<CJK_UNIFIED_IDEOGRAPH-30ADB> 2
+<CJK_UNIFIED_IDEOGRAPH-30ADC> 2
+<CJK_UNIFIED_IDEOGRAPH-30ADD> 2
+<CJK_UNIFIED_IDEOGRAPH-30ADE> 2
+<CJK_UNIFIED_IDEOGRAPH-30ADF> 2
+<CJK_UNIFIED_IDEOGRAPH-30AE0> 2
+<CJK_UNIFIED_IDEOGRAPH-30AE1> 2
+<CJK_UNIFIED_IDEOGRAPH-30AE2> 2
+<CJK_UNIFIED_IDEOGRAPH-30AE3> 2
+<CJK_UNIFIED_IDEOGRAPH-30AE4> 2
+<CJK_UNIFIED_IDEOGRAPH-30AE5> 2
+<CJK_UNIFIED_IDEOGRAPH-30AE6> 2
+<CJK_UNIFIED_IDEOGRAPH-30AE7> 2
+<CJK_UNIFIED_IDEOGRAPH-30AE8> 2
+<CJK_UNIFIED_IDEOGRAPH-30AE9> 2
+<CJK_UNIFIED_IDEOGRAPH-30AEA> 2
+<CJK_UNIFIED_IDEOGRAPH-30AEB> 2
+<CJK_UNIFIED_IDEOGRAPH-30AEC> 2
+<CJK_UNIFIED_IDEOGRAPH-30AED> 2
+<CJK_UNIFIED_IDEOGRAPH-30AEE> 2
+<CJK_UNIFIED_IDEOGRAPH-30AEF> 2
+<CJK_UNIFIED_IDEOGRAPH-30AF0> 2
+<CJK_UNIFIED_IDEOGRAPH-30AF1> 2
+<CJK_UNIFIED_IDEOGRAPH-30AF2> 2
+<CJK_UNIFIED_IDEOGRAPH-30AF3> 2
+<CJK_UNIFIED_IDEOGRAPH-30AF4> 2
+<CJK_UNIFIED_IDEOGRAPH-30AF5> 2
+<CJK_UNIFIED_IDEOGRAPH-30AF6> 2
+<CJK_UNIFIED_IDEOGRAPH-30AF7> 2
+<CJK_UNIFIED_IDEOGRAPH-30AF8> 2
+<CJK_UNIFIED_IDEOGRAPH-30AF9> 2
+<CJK_UNIFIED_IDEOGRAPH-30AFA> 2
+<CJK_UNIFIED_IDEOGRAPH-30AFB> 2
+<CJK_UNIFIED_IDEOGRAPH-30AFC> 2
+<CJK_UNIFIED_IDEOGRAPH-30AFD> 2
+<CJK_UNIFIED_IDEOGRAPH-30AFE> 2
+<CJK_UNIFIED_IDEOGRAPH-30AFF> 2
+<CJK_UNIFIED_IDEOGRAPH-30B00> 2
+<CJK_UNIFIED_IDEOGRAPH-30B01> 2
+<CJK_UNIFIED_IDEOGRAPH-30B02> 2
+<CJK_UNIFIED_IDEOGRAPH-30B03> 2
+<CJK_UNIFIED_IDEOGRAPH-30B04> 2
+<CJK_UNIFIED_IDEOGRAPH-30B05> 2
+<CJK_UNIFIED_IDEOGRAPH-30B06> 2
+<CJK_UNIFIED_IDEOGRAPH-30B07> 2
+<CJK_UNIFIED_IDEOGRAPH-30B08> 2
+<CJK_UNIFIED_IDEOGRAPH-30B09> 2
+<CJK_UNIFIED_IDEOGRAPH-30B0A> 2
+<CJK_UNIFIED_IDEOGRAPH-30B0B> 2
+<CJK_UNIFIED_IDEOGRAPH-30B0C> 2
+<CJK_UNIFIED_IDEOGRAPH-30B0D> 2
+<CJK_UNIFIED_IDEOGRAPH-30B0E> 2
+<CJK_UNIFIED_IDEOGRAPH-30B0F> 2
+<CJK_UNIFIED_IDEOGRAPH-30B10> 2
+<CJK_UNIFIED_IDEOGRAPH-30B11> 2
+<CJK_UNIFIED_IDEOGRAPH-30B12> 2
+<CJK_UNIFIED_IDEOGRAPH-30B13> 2
+<CJK_UNIFIED_IDEOGRAPH-30B14> 2
+<CJK_UNIFIED_IDEOGRAPH-30B15> 2
+<CJK_UNIFIED_IDEOGRAPH-30B16> 2
+<CJK_UNIFIED_IDEOGRAPH-30B17> 2
+<CJK_UNIFIED_IDEOGRAPH-30B18> 2
+<CJK_UNIFIED_IDEOGRAPH-30B19> 2
+<CJK_UNIFIED_IDEOGRAPH-30B1A> 2
+<CJK_UNIFIED_IDEOGRAPH-30B1B> 2
+<CJK_UNIFIED_IDEOGRAPH-30B1C> 2
+<CJK_UNIFIED_IDEOGRAPH-30B1D> 2
+<CJK_UNIFIED_IDEOGRAPH-30B1E> 2
+<CJK_UNIFIED_IDEOGRAPH-30B1F> 2
+<CJK_UNIFIED_IDEOGRAPH-30B20> 2
+<CJK_UNIFIED_IDEOGRAPH-30B21> 2
+<CJK_UNIFIED_IDEOGRAPH-30B22> 2
+<CJK_UNIFIED_IDEOGRAPH-30B23> 2
+<CJK_UNIFIED_IDEOGRAPH-30B24> 2
+<CJK_UNIFIED_IDEOGRAPH-30B25> 2
+<CJK_UNIFIED_IDEOGRAPH-30B26> 2
+<CJK_UNIFIED_IDEOGRAPH-30B27> 2
+<CJK_UNIFIED_IDEOGRAPH-30B28> 2
+<CJK_UNIFIED_IDEOGRAPH-30B29> 2
+<CJK_UNIFIED_IDEOGRAPH-30B2A> 2
+<CJK_UNIFIED_IDEOGRAPH-30B2B> 2
+<CJK_UNIFIED_IDEOGRAPH-30B2C> 2
+<CJK_UNIFIED_IDEOGRAPH-30B2D> 2
+<CJK_UNIFIED_IDEOGRAPH-30B2E> 2
+<CJK_UNIFIED_IDEOGRAPH-30B2F> 2
+<CJK_UNIFIED_IDEOGRAPH-30B30> 2
+<CJK_UNIFIED_IDEOGRAPH-30B31> 2
+<CJK_UNIFIED_IDEOGRAPH-30B32> 2
+<CJK_UNIFIED_IDEOGRAPH-30B33> 2
+<CJK_UNIFIED_IDEOGRAPH-30B34> 2
+<CJK_UNIFIED_IDEOGRAPH-30B35> 2
+<CJK_UNIFIED_IDEOGRAPH-30B36> 2
+<CJK_UNIFIED_IDEOGRAPH-30B37> 2
+<CJK_UNIFIED_IDEOGRAPH-30B38> 2
+<CJK_UNIFIED_IDEOGRAPH-30B39> 2
+<CJK_UNIFIED_IDEOGRAPH-30B3A> 2
+<CJK_UNIFIED_IDEOGRAPH-30B3B> 2
+<CJK_UNIFIED_IDEOGRAPH-30B3C> 2
+<CJK_UNIFIED_IDEOGRAPH-30B3D> 2
+<CJK_UNIFIED_IDEOGRAPH-30B3E> 2
+<CJK_UNIFIED_IDEOGRAPH-30B3F> 2
+<CJK_UNIFIED_IDEOGRAPH-30B40> 2
+<CJK_UNIFIED_IDEOGRAPH-30B41> 2
+<CJK_UNIFIED_IDEOGRAPH-30B42> 2
+<CJK_UNIFIED_IDEOGRAPH-30B43> 2
+<CJK_UNIFIED_IDEOGRAPH-30B44> 2
+<CJK_UNIFIED_IDEOGRAPH-30B45> 2
+<CJK_UNIFIED_IDEOGRAPH-30B46> 2
+<CJK_UNIFIED_IDEOGRAPH-30B47> 2
+<CJK_UNIFIED_IDEOGRAPH-30B48> 2
+<CJK_UNIFIED_IDEOGRAPH-30B49> 2
+<CJK_UNIFIED_IDEOGRAPH-30B4A> 2
+<CJK_UNIFIED_IDEOGRAPH-30B4B> 2
+<CJK_UNIFIED_IDEOGRAPH-30B4C> 2
+<CJK_UNIFIED_IDEOGRAPH-30B4D> 2
+<CJK_UNIFIED_IDEOGRAPH-30B4E> 2
+<CJK_UNIFIED_IDEOGRAPH-30B4F> 2
+<CJK_UNIFIED_IDEOGRAPH-30B50> 2
+<CJK_UNIFIED_IDEOGRAPH-30B51> 2
+<CJK_UNIFIED_IDEOGRAPH-30B52> 2
+<CJK_UNIFIED_IDEOGRAPH-30B53> 2
+<CJK_UNIFIED_IDEOGRAPH-30B54> 2
+<CJK_UNIFIED_IDEOGRAPH-30B55> 2
+<CJK_UNIFIED_IDEOGRAPH-30B56> 2
+<CJK_UNIFIED_IDEOGRAPH-30B57> 2
+<CJK_UNIFIED_IDEOGRAPH-30B58> 2
+<CJK_UNIFIED_IDEOGRAPH-30B59> 2
+<CJK_UNIFIED_IDEOGRAPH-30B5A> 2
+<CJK_UNIFIED_IDEOGRAPH-30B5B> 2
+<CJK_UNIFIED_IDEOGRAPH-30B5C> 2
+<CJK_UNIFIED_IDEOGRAPH-30B5D> 2
+<CJK_UNIFIED_IDEOGRAPH-30B5E> 2
+<CJK_UNIFIED_IDEOGRAPH-30B5F> 2
+<CJK_UNIFIED_IDEOGRAPH-30B60> 2
+<CJK_UNIFIED_IDEOGRAPH-30B61> 2
+<CJK_UNIFIED_IDEOGRAPH-30B62> 2
+<CJK_UNIFIED_IDEOGRAPH-30B63> 2
+<CJK_UNIFIED_IDEOGRAPH-30B64> 2
+<CJK_UNIFIED_IDEOGRAPH-30B65> 2
+<CJK_UNIFIED_IDEOGRAPH-30B66> 2
+<CJK_UNIFIED_IDEOGRAPH-30B67> 2
+<CJK_UNIFIED_IDEOGRAPH-30B68> 2
+<CJK_UNIFIED_IDEOGRAPH-30B69> 2
+<CJK_UNIFIED_IDEOGRAPH-30B6A> 2
+<CJK_UNIFIED_IDEOGRAPH-30B6B> 2
+<CJK_UNIFIED_IDEOGRAPH-30B6C> 2
+<CJK_UNIFIED_IDEOGRAPH-30B6D> 2
+<CJK_UNIFIED_IDEOGRAPH-30B6E> 2
+<CJK_UNIFIED_IDEOGRAPH-30B6F> 2
+<CJK_UNIFIED_IDEOGRAPH-30B70> 2
+<CJK_UNIFIED_IDEOGRAPH-30B71> 2
+<CJK_UNIFIED_IDEOGRAPH-30B72> 2
+<CJK_UNIFIED_IDEOGRAPH-30B73> 2
+<CJK_UNIFIED_IDEOGRAPH-30B74> 2
+<CJK_UNIFIED_IDEOGRAPH-30B75> 2
+<CJK_UNIFIED_IDEOGRAPH-30B76> 2
+<CJK_UNIFIED_IDEOGRAPH-30B77> 2
+<CJK_UNIFIED_IDEOGRAPH-30B78> 2
+<CJK_UNIFIED_IDEOGRAPH-30B79> 2
+<CJK_UNIFIED_IDEOGRAPH-30B7A> 2
+<CJK_UNIFIED_IDEOGRAPH-30B7B> 2
+<CJK_UNIFIED_IDEOGRAPH-30B7C> 2
+<CJK_UNIFIED_IDEOGRAPH-30B7D> 2
+<CJK_UNIFIED_IDEOGRAPH-30B7E> 2
+<CJK_UNIFIED_IDEOGRAPH-30B7F> 2
+<CJK_UNIFIED_IDEOGRAPH-30B80> 2
+<CJK_UNIFIED_IDEOGRAPH-30B81> 2
+<CJK_UNIFIED_IDEOGRAPH-30B82> 2
+<CJK_UNIFIED_IDEOGRAPH-30B83> 2
+<CJK_UNIFIED_IDEOGRAPH-30B84> 2
+<CJK_UNIFIED_IDEOGRAPH-30B85> 2
+<CJK_UNIFIED_IDEOGRAPH-30B86> 2
+<CJK_UNIFIED_IDEOGRAPH-30B87> 2
+<CJK_UNIFIED_IDEOGRAPH-30B88> 2
+<CJK_UNIFIED_IDEOGRAPH-30B89> 2
+<CJK_UNIFIED_IDEOGRAPH-30B8A> 2
+<CJK_UNIFIED_IDEOGRAPH-30B8B> 2
+<CJK_UNIFIED_IDEOGRAPH-30B8C> 2
+<CJK_UNIFIED_IDEOGRAPH-30B8D> 2
+<CJK_UNIFIED_IDEOGRAPH-30B8E> 2
+<CJK_UNIFIED_IDEOGRAPH-30B8F> 2
+<CJK_UNIFIED_IDEOGRAPH-30B90> 2
+<CJK_UNIFIED_IDEOGRAPH-30B91> 2
+<CJK_UNIFIED_IDEOGRAPH-30B92> 2
+<CJK_UNIFIED_IDEOGRAPH-30B93> 2
+<CJK_UNIFIED_IDEOGRAPH-30B94> 2
+<CJK_UNIFIED_IDEOGRAPH-30B95> 2
+<CJK_UNIFIED_IDEOGRAPH-30B96> 2
+<CJK_UNIFIED_IDEOGRAPH-30B97> 2
+<CJK_UNIFIED_IDEOGRAPH-30B98> 2
+<CJK_UNIFIED_IDEOGRAPH-30B99> 2
+<CJK_UNIFIED_IDEOGRAPH-30B9A> 2
+<CJK_UNIFIED_IDEOGRAPH-30B9B> 2
+<CJK_UNIFIED_IDEOGRAPH-30B9C> 2
+<CJK_UNIFIED_IDEOGRAPH-30B9D> 2
+<CJK_UNIFIED_IDEOGRAPH-30B9E> 2
+<CJK_UNIFIED_IDEOGRAPH-30B9F> 2
+<CJK_UNIFIED_IDEOGRAPH-30BA0> 2
+<CJK_UNIFIED_IDEOGRAPH-30BA1> 2
+<CJK_UNIFIED_IDEOGRAPH-30BA2> 2
+<CJK_UNIFIED_IDEOGRAPH-30BA3> 2
+<CJK_UNIFIED_IDEOGRAPH-30BA4> 2
+<CJK_UNIFIED_IDEOGRAPH-30BA5> 2
+<CJK_UNIFIED_IDEOGRAPH-30BA6> 2
+<CJK_UNIFIED_IDEOGRAPH-30BA7> 2
+<CJK_UNIFIED_IDEOGRAPH-30BA8> 2
+<CJK_UNIFIED_IDEOGRAPH-30BA9> 2
+<CJK_UNIFIED_IDEOGRAPH-30BAA> 2
+<CJK_UNIFIED_IDEOGRAPH-30BAB> 2
+<CJK_UNIFIED_IDEOGRAPH-30BAC> 2
+<CJK_UNIFIED_IDEOGRAPH-30BAD> 2
+<CJK_UNIFIED_IDEOGRAPH-30BAE> 2
+<CJK_UNIFIED_IDEOGRAPH-30BAF> 2
+<CJK_UNIFIED_IDEOGRAPH-30BB0> 2
+<CJK_UNIFIED_IDEOGRAPH-30BB1> 2
+<CJK_UNIFIED_IDEOGRAPH-30BB2> 2
+<CJK_UNIFIED_IDEOGRAPH-30BB3> 2
+<CJK_UNIFIED_IDEOGRAPH-30BB4> 2
+<CJK_UNIFIED_IDEOGRAPH-30BB5> 2
+<CJK_UNIFIED_IDEOGRAPH-30BB6> 2
+<CJK_UNIFIED_IDEOGRAPH-30BB7> 2
+<CJK_UNIFIED_IDEOGRAPH-30BB8> 2
+<CJK_UNIFIED_IDEOGRAPH-30BB9> 2
+<CJK_UNIFIED_IDEOGRAPH-30BBA> 2
+<CJK_UNIFIED_IDEOGRAPH-30BBB> 2
+<CJK_UNIFIED_IDEOGRAPH-30BBC> 2
+<CJK_UNIFIED_IDEOGRAPH-30BBD> 2
+<CJK_UNIFIED_IDEOGRAPH-30BBE> 2
+<CJK_UNIFIED_IDEOGRAPH-30BBF> 2
+<CJK_UNIFIED_IDEOGRAPH-30BC0> 2
+<CJK_UNIFIED_IDEOGRAPH-30BC1> 2
+<CJK_UNIFIED_IDEOGRAPH-30BC2> 2
+<CJK_UNIFIED_IDEOGRAPH-30BC3> 2
+<CJK_UNIFIED_IDEOGRAPH-30BC4> 2
+<CJK_UNIFIED_IDEOGRAPH-30BC5> 2
+<CJK_UNIFIED_IDEOGRAPH-30BC6> 2
+<CJK_UNIFIED_IDEOGRAPH-30BC7> 2
+<CJK_UNIFIED_IDEOGRAPH-30BC8> 2
+<CJK_UNIFIED_IDEOGRAPH-30BC9> 2
+<CJK_UNIFIED_IDEOGRAPH-30BCA> 2
+<CJK_UNIFIED_IDEOGRAPH-30BCB> 2
+<CJK_UNIFIED_IDEOGRAPH-30BCC> 2
+<CJK_UNIFIED_IDEOGRAPH-30BCD> 2
+<CJK_UNIFIED_IDEOGRAPH-30BCE> 2
+<CJK_UNIFIED_IDEOGRAPH-30BCF> 2
+<CJK_UNIFIED_IDEOGRAPH-30BD0> 2
+<CJK_UNIFIED_IDEOGRAPH-30BD1> 2
+<CJK_UNIFIED_IDEOGRAPH-30BD2> 2
+<CJK_UNIFIED_IDEOGRAPH-30BD3> 2
+<CJK_UNIFIED_IDEOGRAPH-30BD4> 2
+<CJK_UNIFIED_IDEOGRAPH-30BD5> 2
+<CJK_UNIFIED_IDEOGRAPH-30BD6> 2
+<CJK_UNIFIED_IDEOGRAPH-30BD7> 2
+<CJK_UNIFIED_IDEOGRAPH-30BD8> 2
+<CJK_UNIFIED_IDEOGRAPH-30BD9> 2
+<CJK_UNIFIED_IDEOGRAPH-30BDA> 2
+<CJK_UNIFIED_IDEOGRAPH-30BDB> 2
+<CJK_UNIFIED_IDEOGRAPH-30BDC> 2
+<CJK_UNIFIED_IDEOGRAPH-30BDD> 2
+<CJK_UNIFIED_IDEOGRAPH-30BDE> 2
+<CJK_UNIFIED_IDEOGRAPH-30BDF> 2
+<CJK_UNIFIED_IDEOGRAPH-30BE0> 2
+<CJK_UNIFIED_IDEOGRAPH-30BE1> 2
+<CJK_UNIFIED_IDEOGRAPH-30BE2> 2
+<CJK_UNIFIED_IDEOGRAPH-30BE3> 2
+<CJK_UNIFIED_IDEOGRAPH-30BE4> 2
+<CJK_UNIFIED_IDEOGRAPH-30BE5> 2
+<CJK_UNIFIED_IDEOGRAPH-30BE6> 2
+<CJK_UNIFIED_IDEOGRAPH-30BE7> 2
+<CJK_UNIFIED_IDEOGRAPH-30BE8> 2
+<CJK_UNIFIED_IDEOGRAPH-30BE9> 2
+<CJK_UNIFIED_IDEOGRAPH-30BEA> 2
+<CJK_UNIFIED_IDEOGRAPH-30BEB> 2
+<CJK_UNIFIED_IDEOGRAPH-30BEC> 2
+<CJK_UNIFIED_IDEOGRAPH-30BED> 2
+<CJK_UNIFIED_IDEOGRAPH-30BEE> 2
+<CJK_UNIFIED_IDEOGRAPH-30BEF> 2
+<CJK_UNIFIED_IDEOGRAPH-30BF0> 2
+<CJK_UNIFIED_IDEOGRAPH-30BF1> 2
+<CJK_UNIFIED_IDEOGRAPH-30BF2> 2
+<CJK_UNIFIED_IDEOGRAPH-30BF3> 2
+<CJK_UNIFIED_IDEOGRAPH-30BF4> 2
+<CJK_UNIFIED_IDEOGRAPH-30BF5> 2
+<CJK_UNIFIED_IDEOGRAPH-30BF6> 2
+<CJK_UNIFIED_IDEOGRAPH-30BF7> 2
+<CJK_UNIFIED_IDEOGRAPH-30BF8> 2
+<CJK_UNIFIED_IDEOGRAPH-30BF9> 2
+<CJK_UNIFIED_IDEOGRAPH-30BFA> 2
+<CJK_UNIFIED_IDEOGRAPH-30BFB> 2
+<CJK_UNIFIED_IDEOGRAPH-30BFC> 2
+<CJK_UNIFIED_IDEOGRAPH-30BFD> 2
+<CJK_UNIFIED_IDEOGRAPH-30BFE> 2
+<CJK_UNIFIED_IDEOGRAPH-30BFF> 2
+<CJK_UNIFIED_IDEOGRAPH-30C00> 2
+<CJK_UNIFIED_IDEOGRAPH-30C01> 2
+<CJK_UNIFIED_IDEOGRAPH-30C02> 2
+<CJK_UNIFIED_IDEOGRAPH-30C03> 2
+<CJK_UNIFIED_IDEOGRAPH-30C04> 2
+<CJK_UNIFIED_IDEOGRAPH-30C05> 2
+<CJK_UNIFIED_IDEOGRAPH-30C06> 2
+<CJK_UNIFIED_IDEOGRAPH-30C07> 2
+<CJK_UNIFIED_IDEOGRAPH-30C08> 2
+<CJK_UNIFIED_IDEOGRAPH-30C09> 2
+<CJK_UNIFIED_IDEOGRAPH-30C0A> 2
+<CJK_UNIFIED_IDEOGRAPH-30C0B> 2
+<CJK_UNIFIED_IDEOGRAPH-30C0C> 2
+<CJK_UNIFIED_IDEOGRAPH-30C0D> 2
+<CJK_UNIFIED_IDEOGRAPH-30C0E> 2
+<CJK_UNIFIED_IDEOGRAPH-30C0F> 2
+<CJK_UNIFIED_IDEOGRAPH-30C10> 2
+<CJK_UNIFIED_IDEOGRAPH-30C11> 2
+<CJK_UNIFIED_IDEOGRAPH-30C12> 2
+<CJK_UNIFIED_IDEOGRAPH-30C13> 2
+<CJK_UNIFIED_IDEOGRAPH-30C14> 2
+<CJK_UNIFIED_IDEOGRAPH-30C15> 2
+<CJK_UNIFIED_IDEOGRAPH-30C16> 2
+<CJK_UNIFIED_IDEOGRAPH-30C17> 2
+<CJK_UNIFIED_IDEOGRAPH-30C18> 2
+<CJK_UNIFIED_IDEOGRAPH-30C19> 2
+<CJK_UNIFIED_IDEOGRAPH-30C1A> 2
+<CJK_UNIFIED_IDEOGRAPH-30C1B> 2
+<CJK_UNIFIED_IDEOGRAPH-30C1C> 2
+<CJK_UNIFIED_IDEOGRAPH-30C1D> 2
+<CJK_UNIFIED_IDEOGRAPH-30C1E> 2
+<CJK_UNIFIED_IDEOGRAPH-30C1F> 2
+<CJK_UNIFIED_IDEOGRAPH-30C20> 2
+<CJK_UNIFIED_IDEOGRAPH-30C21> 2
+<CJK_UNIFIED_IDEOGRAPH-30C22> 2
+<CJK_UNIFIED_IDEOGRAPH-30C23> 2
+<CJK_UNIFIED_IDEOGRAPH-30C24> 2
+<CJK_UNIFIED_IDEOGRAPH-30C25> 2
+<CJK_UNIFIED_IDEOGRAPH-30C26> 2
+<CJK_UNIFIED_IDEOGRAPH-30C27> 2
+<CJK_UNIFIED_IDEOGRAPH-30C28> 2
+<CJK_UNIFIED_IDEOGRAPH-30C29> 2
+<CJK_UNIFIED_IDEOGRAPH-30C2A> 2
+<CJK_UNIFIED_IDEOGRAPH-30C2B> 2
+<CJK_UNIFIED_IDEOGRAPH-30C2C> 2
+<CJK_UNIFIED_IDEOGRAPH-30C2D> 2
+<CJK_UNIFIED_IDEOGRAPH-30C2E> 2
+<CJK_UNIFIED_IDEOGRAPH-30C2F> 2
+<CJK_UNIFIED_IDEOGRAPH-30C30> 2
+<CJK_UNIFIED_IDEOGRAPH-30C31> 2
+<CJK_UNIFIED_IDEOGRAPH-30C32> 2
+<CJK_UNIFIED_IDEOGRAPH-30C33> 2
+<CJK_UNIFIED_IDEOGRAPH-30C34> 2
+<CJK_UNIFIED_IDEOGRAPH-30C35> 2
+<CJK_UNIFIED_IDEOGRAPH-30C36> 2
+<CJK_UNIFIED_IDEOGRAPH-30C37> 2
+<CJK_UNIFIED_IDEOGRAPH-30C38> 2
+<CJK_UNIFIED_IDEOGRAPH-30C39> 2
+<CJK_UNIFIED_IDEOGRAPH-30C3A> 2
+<CJK_UNIFIED_IDEOGRAPH-30C3B> 2
+<CJK_UNIFIED_IDEOGRAPH-30C3C> 2
+<CJK_UNIFIED_IDEOGRAPH-30C3D> 2
+<CJK_UNIFIED_IDEOGRAPH-30C3E> 2
+<CJK_UNIFIED_IDEOGRAPH-30C3F> 2
+<CJK_UNIFIED_IDEOGRAPH-30C40> 2
+<CJK_UNIFIED_IDEOGRAPH-30C41> 2
+<CJK_UNIFIED_IDEOGRAPH-30C42> 2
+<CJK_UNIFIED_IDEOGRAPH-30C43> 2
+<CJK_UNIFIED_IDEOGRAPH-30C44> 2
+<CJK_UNIFIED_IDEOGRAPH-30C45> 2
+<CJK_UNIFIED_IDEOGRAPH-30C46> 2
+<CJK_UNIFIED_IDEOGRAPH-30C47> 2
+<CJK_UNIFIED_IDEOGRAPH-30C48> 2
+<CJK_UNIFIED_IDEOGRAPH-30C49> 2
+<CJK_UNIFIED_IDEOGRAPH-30C4A> 2
+<CJK_UNIFIED_IDEOGRAPH-30C4B> 2
+<CJK_UNIFIED_IDEOGRAPH-30C4C> 2
+<CJK_UNIFIED_IDEOGRAPH-30C4D> 2
+<CJK_UNIFIED_IDEOGRAPH-30C4E> 2
+<CJK_UNIFIED_IDEOGRAPH-30C4F> 2
+<CJK_UNIFIED_IDEOGRAPH-30C50> 2
+<CJK_UNIFIED_IDEOGRAPH-30C51> 2
+<CJK_UNIFIED_IDEOGRAPH-30C52> 2
+<CJK_UNIFIED_IDEOGRAPH-30C53> 2
+<CJK_UNIFIED_IDEOGRAPH-30C54> 2
+<CJK_UNIFIED_IDEOGRAPH-30C55> 2
+<CJK_UNIFIED_IDEOGRAPH-30C56> 2
+<CJK_UNIFIED_IDEOGRAPH-30C57> 2
+<CJK_UNIFIED_IDEOGRAPH-30C58> 2
+<CJK_UNIFIED_IDEOGRAPH-30C59> 2
+<CJK_UNIFIED_IDEOGRAPH-30C5A> 2
+<CJK_UNIFIED_IDEOGRAPH-30C5B> 2
+<CJK_UNIFIED_IDEOGRAPH-30C5C> 2
+<CJK_UNIFIED_IDEOGRAPH-30C5D> 2
+<CJK_UNIFIED_IDEOGRAPH-30C5E> 2
+<CJK_UNIFIED_IDEOGRAPH-30C5F> 2
+<CJK_UNIFIED_IDEOGRAPH-30C60> 2
+<CJK_UNIFIED_IDEOGRAPH-30C61> 2
+<CJK_UNIFIED_IDEOGRAPH-30C62> 2
+<CJK_UNIFIED_IDEOGRAPH-30C63> 2
+<CJK_UNIFIED_IDEOGRAPH-30C64> 2
+<CJK_UNIFIED_IDEOGRAPH-30C65> 2
+<CJK_UNIFIED_IDEOGRAPH-30C66> 2
+<CJK_UNIFIED_IDEOGRAPH-30C67> 2
+<CJK_UNIFIED_IDEOGRAPH-30C68> 2
+<CJK_UNIFIED_IDEOGRAPH-30C69> 2
+<CJK_UNIFIED_IDEOGRAPH-30C6A> 2
+<CJK_UNIFIED_IDEOGRAPH-30C6B> 2
+<CJK_UNIFIED_IDEOGRAPH-30C6C> 2
+<CJK_UNIFIED_IDEOGRAPH-30C6D> 2
+<CJK_UNIFIED_IDEOGRAPH-30C6E> 2
+<CJK_UNIFIED_IDEOGRAPH-30C6F> 2
+<CJK_UNIFIED_IDEOGRAPH-30C70> 2
+<CJK_UNIFIED_IDEOGRAPH-30C71> 2
+<CJK_UNIFIED_IDEOGRAPH-30C72> 2
+<CJK_UNIFIED_IDEOGRAPH-30C73> 2
+<CJK_UNIFIED_IDEOGRAPH-30C74> 2
+<CJK_UNIFIED_IDEOGRAPH-30C75> 2
+<CJK_UNIFIED_IDEOGRAPH-30C76> 2
+<CJK_UNIFIED_IDEOGRAPH-30C77> 2
+<CJK_UNIFIED_IDEOGRAPH-30C78> 2
+<CJK_UNIFIED_IDEOGRAPH-30C79> 2
+<CJK_UNIFIED_IDEOGRAPH-30C7A> 2
+<CJK_UNIFIED_IDEOGRAPH-30C7B> 2
+<CJK_UNIFIED_IDEOGRAPH-30C7C> 2
+<CJK_UNIFIED_IDEOGRAPH-30C7D> 2
+<CJK_UNIFIED_IDEOGRAPH-30C7E> 2
+<CJK_UNIFIED_IDEOGRAPH-30C7F> 2
+<CJK_UNIFIED_IDEOGRAPH-30C80> 2
+<CJK_UNIFIED_IDEOGRAPH-30C81> 2
+<CJK_UNIFIED_IDEOGRAPH-30C82> 2
+<CJK_UNIFIED_IDEOGRAPH-30C83> 2
+<CJK_UNIFIED_IDEOGRAPH-30C84> 2
+<CJK_UNIFIED_IDEOGRAPH-30C85> 2
+<CJK_UNIFIED_IDEOGRAPH-30C86> 2
+<CJK_UNIFIED_IDEOGRAPH-30C87> 2
+<CJK_UNIFIED_IDEOGRAPH-30C88> 2
+<CJK_UNIFIED_IDEOGRAPH-30C89> 2
+<CJK_UNIFIED_IDEOGRAPH-30C8A> 2
+<CJK_UNIFIED_IDEOGRAPH-30C8B> 2
+<CJK_UNIFIED_IDEOGRAPH-30C8C> 2
+<CJK_UNIFIED_IDEOGRAPH-30C8D> 2
+<CJK_UNIFIED_IDEOGRAPH-30C8E> 2
+<CJK_UNIFIED_IDEOGRAPH-30C8F> 2
+<CJK_UNIFIED_IDEOGRAPH-30C90> 2
+<CJK_UNIFIED_IDEOGRAPH-30C91> 2
+<CJK_UNIFIED_IDEOGRAPH-30C92> 2
+<CJK_UNIFIED_IDEOGRAPH-30C93> 2
+<CJK_UNIFIED_IDEOGRAPH-30C94> 2
+<CJK_UNIFIED_IDEOGRAPH-30C95> 2
+<CJK_UNIFIED_IDEOGRAPH-30C96> 2
+<CJK_UNIFIED_IDEOGRAPH-30C97> 2
+<CJK_UNIFIED_IDEOGRAPH-30C98> 2
+<CJK_UNIFIED_IDEOGRAPH-30C99> 2
+<CJK_UNIFIED_IDEOGRAPH-30C9A> 2
+<CJK_UNIFIED_IDEOGRAPH-30C9B> 2
+<CJK_UNIFIED_IDEOGRAPH-30C9C> 2
+<CJK_UNIFIED_IDEOGRAPH-30C9D> 2
+<CJK_UNIFIED_IDEOGRAPH-30C9E> 2
+<CJK_UNIFIED_IDEOGRAPH-30C9F> 2
+<CJK_UNIFIED_IDEOGRAPH-30CA0> 2
+<CJK_UNIFIED_IDEOGRAPH-30CA1> 2
+<CJK_UNIFIED_IDEOGRAPH-30CA2> 2
+<CJK_UNIFIED_IDEOGRAPH-30CA3> 2
+<CJK_UNIFIED_IDEOGRAPH-30CA4> 2
+<CJK_UNIFIED_IDEOGRAPH-30CA5> 2
+<CJK_UNIFIED_IDEOGRAPH-30CA6> 2
+<CJK_UNIFIED_IDEOGRAPH-30CA7> 2
+<CJK_UNIFIED_IDEOGRAPH-30CA8> 2
+<CJK_UNIFIED_IDEOGRAPH-30CA9> 2
+<CJK_UNIFIED_IDEOGRAPH-30CAA> 2
+<CJK_UNIFIED_IDEOGRAPH-30CAB> 2
+<CJK_UNIFIED_IDEOGRAPH-30CAC> 2
+<CJK_UNIFIED_IDEOGRAPH-30CAD> 2
+<CJK_UNIFIED_IDEOGRAPH-30CAE> 2
+<CJK_UNIFIED_IDEOGRAPH-30CAF> 2
+<CJK_UNIFIED_IDEOGRAPH-30CB0> 2
+<CJK_UNIFIED_IDEOGRAPH-30CB1> 2
+<CJK_UNIFIED_IDEOGRAPH-30CB2> 2
+<CJK_UNIFIED_IDEOGRAPH-30CB3> 2
+<CJK_UNIFIED_IDEOGRAPH-30CB4> 2
+<CJK_UNIFIED_IDEOGRAPH-30CB5> 2
+<CJK_UNIFIED_IDEOGRAPH-30CB6> 2
+<CJK_UNIFIED_IDEOGRAPH-30CB7> 2
+<CJK_UNIFIED_IDEOGRAPH-30CB8> 2
+<CJK_UNIFIED_IDEOGRAPH-30CB9> 2
+<CJK_UNIFIED_IDEOGRAPH-30CBA> 2
+<CJK_UNIFIED_IDEOGRAPH-30CBB> 2
+<CJK_UNIFIED_IDEOGRAPH-30CBC> 2
+<CJK_UNIFIED_IDEOGRAPH-30CBD> 2
+<CJK_UNIFIED_IDEOGRAPH-30CBE> 2
+<CJK_UNIFIED_IDEOGRAPH-30CBF> 2
+<CJK_UNIFIED_IDEOGRAPH-30CC0> 2
+<CJK_UNIFIED_IDEOGRAPH-30CC1> 2
+<CJK_UNIFIED_IDEOGRAPH-30CC2> 2
+<CJK_UNIFIED_IDEOGRAPH-30CC3> 2
+<CJK_UNIFIED_IDEOGRAPH-30CC4> 2
+<CJK_UNIFIED_IDEOGRAPH-30CC5> 2
+<CJK_UNIFIED_IDEOGRAPH-30CC6> 2
+<CJK_UNIFIED_IDEOGRAPH-30CC7> 2
+<CJK_UNIFIED_IDEOGRAPH-30CC8> 2
+<CJK_UNIFIED_IDEOGRAPH-30CC9> 2
+<CJK_UNIFIED_IDEOGRAPH-30CCA> 2
+<CJK_UNIFIED_IDEOGRAPH-30CCB> 2
+<CJK_UNIFIED_IDEOGRAPH-30CCC> 2
+<CJK_UNIFIED_IDEOGRAPH-30CCD> 2
+<CJK_UNIFIED_IDEOGRAPH-30CCE> 2
+<CJK_UNIFIED_IDEOGRAPH-30CCF> 2
+<CJK_UNIFIED_IDEOGRAPH-30CD0> 2
+<CJK_UNIFIED_IDEOGRAPH-30CD1> 2
+<CJK_UNIFIED_IDEOGRAPH-30CD2> 2
+<CJK_UNIFIED_IDEOGRAPH-30CD3> 2
+<CJK_UNIFIED_IDEOGRAPH-30CD4> 2
+<CJK_UNIFIED_IDEOGRAPH-30CD5> 2
+<CJK_UNIFIED_IDEOGRAPH-30CD6> 2
+<CJK_UNIFIED_IDEOGRAPH-30CD7> 2
+<CJK_UNIFIED_IDEOGRAPH-30CD8> 2
+<CJK_UNIFIED_IDEOGRAPH-30CD9> 2
+<CJK_UNIFIED_IDEOGRAPH-30CDA> 2
+<CJK_UNIFIED_IDEOGRAPH-30CDB> 2
+<CJK_UNIFIED_IDEOGRAPH-30CDC> 2
+<CJK_UNIFIED_IDEOGRAPH-30CDD> 2
+<CJK_UNIFIED_IDEOGRAPH-30CDE> 2
+<CJK_UNIFIED_IDEOGRAPH-30CDF> 2
+<CJK_UNIFIED_IDEOGRAPH-30CE0> 2
+<CJK_UNIFIED_IDEOGRAPH-30CE1> 2
+<CJK_UNIFIED_IDEOGRAPH-30CE2> 2
+<CJK_UNIFIED_IDEOGRAPH-30CE3> 2
+<CJK_UNIFIED_IDEOGRAPH-30CE4> 2
+<CJK_UNIFIED_IDEOGRAPH-30CE5> 2
+<CJK_UNIFIED_IDEOGRAPH-30CE6> 2
+<CJK_UNIFIED_IDEOGRAPH-30CE7> 2
+<CJK_UNIFIED_IDEOGRAPH-30CE8> 2
+<CJK_UNIFIED_IDEOGRAPH-30CE9> 2
+<CJK_UNIFIED_IDEOGRAPH-30CEA> 2
+<CJK_UNIFIED_IDEOGRAPH-30CEB> 2
+<CJK_UNIFIED_IDEOGRAPH-30CEC> 2
+<CJK_UNIFIED_IDEOGRAPH-30CED> 2
+<CJK_UNIFIED_IDEOGRAPH-30CEE> 2
+<CJK_UNIFIED_IDEOGRAPH-30CEF> 2
+<CJK_UNIFIED_IDEOGRAPH-30CF0> 2
+<CJK_UNIFIED_IDEOGRAPH-30CF1> 2
+<CJK_UNIFIED_IDEOGRAPH-30CF2> 2
+<CJK_UNIFIED_IDEOGRAPH-30CF3> 2
+<CJK_UNIFIED_IDEOGRAPH-30CF4> 2
+<CJK_UNIFIED_IDEOGRAPH-30CF5> 2
+<CJK_UNIFIED_IDEOGRAPH-30CF6> 2
+<CJK_UNIFIED_IDEOGRAPH-30CF7> 2
+<CJK_UNIFIED_IDEOGRAPH-30CF8> 2
+<CJK_UNIFIED_IDEOGRAPH-30CF9> 2
+<CJK_UNIFIED_IDEOGRAPH-30CFA> 2
+<CJK_UNIFIED_IDEOGRAPH-30CFB> 2
+<CJK_UNIFIED_IDEOGRAPH-30CFC> 2
+<CJK_UNIFIED_IDEOGRAPH-30CFD> 2
+<CJK_UNIFIED_IDEOGRAPH-30CFE> 2
+<CJK_UNIFIED_IDEOGRAPH-30CFF> 2
+<CJK_UNIFIED_IDEOGRAPH-30D00> 2
+<CJK_UNIFIED_IDEOGRAPH-30D01> 2
+<CJK_UNIFIED_IDEOGRAPH-30D02> 2
+<CJK_UNIFIED_IDEOGRAPH-30D03> 2
+<CJK_UNIFIED_IDEOGRAPH-30D04> 2
+<CJK_UNIFIED_IDEOGRAPH-30D05> 2
+<CJK_UNIFIED_IDEOGRAPH-30D06> 2
+<CJK_UNIFIED_IDEOGRAPH-30D07> 2
+<CJK_UNIFIED_IDEOGRAPH-30D08> 2
+<CJK_UNIFIED_IDEOGRAPH-30D09> 2
+<CJK_UNIFIED_IDEOGRAPH-30D0A> 2
+<CJK_UNIFIED_IDEOGRAPH-30D0B> 2
+<CJK_UNIFIED_IDEOGRAPH-30D0C> 2
+<CJK_UNIFIED_IDEOGRAPH-30D0D> 2
+<CJK_UNIFIED_IDEOGRAPH-30D0E> 2
+<CJK_UNIFIED_IDEOGRAPH-30D0F> 2
+<CJK_UNIFIED_IDEOGRAPH-30D10> 2
+<CJK_UNIFIED_IDEOGRAPH-30D11> 2
+<CJK_UNIFIED_IDEOGRAPH-30D12> 2
+<CJK_UNIFIED_IDEOGRAPH-30D13> 2
+<CJK_UNIFIED_IDEOGRAPH-30D14> 2
+<CJK_UNIFIED_IDEOGRAPH-30D15> 2
+<CJK_UNIFIED_IDEOGRAPH-30D16> 2
+<CJK_UNIFIED_IDEOGRAPH-30D17> 2
+<CJK_UNIFIED_IDEOGRAPH-30D18> 2
+<CJK_UNIFIED_IDEOGRAPH-30D19> 2
+<CJK_UNIFIED_IDEOGRAPH-30D1A> 2
+<CJK_UNIFIED_IDEOGRAPH-30D1B> 2
+<CJK_UNIFIED_IDEOGRAPH-30D1C> 2
+<CJK_UNIFIED_IDEOGRAPH-30D1D> 2
+<CJK_UNIFIED_IDEOGRAPH-30D1E> 2
+<CJK_UNIFIED_IDEOGRAPH-30D1F> 2
+<CJK_UNIFIED_IDEOGRAPH-30D20> 2
+<CJK_UNIFIED_IDEOGRAPH-30D21> 2
+<CJK_UNIFIED_IDEOGRAPH-30D22> 2
+<CJK_UNIFIED_IDEOGRAPH-30D23> 2
+<CJK_UNIFIED_IDEOGRAPH-30D24> 2
+<CJK_UNIFIED_IDEOGRAPH-30D25> 2
+<CJK_UNIFIED_IDEOGRAPH-30D26> 2
+<CJK_UNIFIED_IDEOGRAPH-30D27> 2
+<CJK_UNIFIED_IDEOGRAPH-30D28> 2
+<CJK_UNIFIED_IDEOGRAPH-30D29> 2
+<CJK_UNIFIED_IDEOGRAPH-30D2A> 2
+<CJK_UNIFIED_IDEOGRAPH-30D2B> 2
+<CJK_UNIFIED_IDEOGRAPH-30D2C> 2
+<CJK_UNIFIED_IDEOGRAPH-30D2D> 2
+<CJK_UNIFIED_IDEOGRAPH-30D2E> 2
+<CJK_UNIFIED_IDEOGRAPH-30D2F> 2
+<CJK_UNIFIED_IDEOGRAPH-30D30> 2
+<CJK_UNIFIED_IDEOGRAPH-30D31> 2
+<CJK_UNIFIED_IDEOGRAPH-30D32> 2
+<CJK_UNIFIED_IDEOGRAPH-30D33> 2
+<CJK_UNIFIED_IDEOGRAPH-30D34> 2
+<CJK_UNIFIED_IDEOGRAPH-30D35> 2
+<CJK_UNIFIED_IDEOGRAPH-30D36> 2
+<CJK_UNIFIED_IDEOGRAPH-30D37> 2
+<CJK_UNIFIED_IDEOGRAPH-30D38> 2
+<CJK_UNIFIED_IDEOGRAPH-30D39> 2
+<CJK_UNIFIED_IDEOGRAPH-30D3A> 2
+<CJK_UNIFIED_IDEOGRAPH-30D3B> 2
+<CJK_UNIFIED_IDEOGRAPH-30D3C> 2
+<CJK_UNIFIED_IDEOGRAPH-30D3D> 2
+<CJK_UNIFIED_IDEOGRAPH-30D3E> 2
+<CJK_UNIFIED_IDEOGRAPH-30D3F> 2
+<CJK_UNIFIED_IDEOGRAPH-30D40> 2
+<CJK_UNIFIED_IDEOGRAPH-30D41> 2
+<CJK_UNIFIED_IDEOGRAPH-30D42> 2
+<CJK_UNIFIED_IDEOGRAPH-30D43> 2
+<CJK_UNIFIED_IDEOGRAPH-30D44> 2
+<CJK_UNIFIED_IDEOGRAPH-30D45> 2
+<CJK_UNIFIED_IDEOGRAPH-30D46> 2
+<CJK_UNIFIED_IDEOGRAPH-30D47> 2
+<CJK_UNIFIED_IDEOGRAPH-30D48> 2
+<CJK_UNIFIED_IDEOGRAPH-30D49> 2
+<CJK_UNIFIED_IDEOGRAPH-30D4A> 2
+<CJK_UNIFIED_IDEOGRAPH-30D4B> 2
+<CJK_UNIFIED_IDEOGRAPH-30D4C> 2
+<CJK_UNIFIED_IDEOGRAPH-30D4D> 2
+<CJK_UNIFIED_IDEOGRAPH-30D4E> 2
+<CJK_UNIFIED_IDEOGRAPH-30D4F> 2
+<CJK_UNIFIED_IDEOGRAPH-30D50> 2
+<CJK_UNIFIED_IDEOGRAPH-30D51> 2
+<CJK_UNIFIED_IDEOGRAPH-30D52> 2
+<CJK_UNIFIED_IDEOGRAPH-30D53> 2
+<CJK_UNIFIED_IDEOGRAPH-30D54> 2
+<CJK_UNIFIED_IDEOGRAPH-30D55> 2
+<CJK_UNIFIED_IDEOGRAPH-30D56> 2
+<CJK_UNIFIED_IDEOGRAPH-30D57> 2
+<CJK_UNIFIED_IDEOGRAPH-30D58> 2
+<CJK_UNIFIED_IDEOGRAPH-30D59> 2
+<CJK_UNIFIED_IDEOGRAPH-30D5A> 2
+<CJK_UNIFIED_IDEOGRAPH-30D5B> 2
+<CJK_UNIFIED_IDEOGRAPH-30D5C> 2
+<CJK_UNIFIED_IDEOGRAPH-30D5D> 2
+<CJK_UNIFIED_IDEOGRAPH-30D5E> 2
+<CJK_UNIFIED_IDEOGRAPH-30D5F> 2
+<CJK_UNIFIED_IDEOGRAPH-30D60> 2
+<CJK_UNIFIED_IDEOGRAPH-30D61> 2
+<CJK_UNIFIED_IDEOGRAPH-30D62> 2
+<CJK_UNIFIED_IDEOGRAPH-30D63> 2
+<CJK_UNIFIED_IDEOGRAPH-30D64> 2
+<CJK_UNIFIED_IDEOGRAPH-30D65> 2
+<CJK_UNIFIED_IDEOGRAPH-30D66> 2
+<CJK_UNIFIED_IDEOGRAPH-30D67> 2
+<CJK_UNIFIED_IDEOGRAPH-30D68> 2
+<CJK_UNIFIED_IDEOGRAPH-30D69> 2
+<CJK_UNIFIED_IDEOGRAPH-30D6A> 2
+<CJK_UNIFIED_IDEOGRAPH-30D6B> 2
+<CJK_UNIFIED_IDEOGRAPH-30D6C> 2
+<CJK_UNIFIED_IDEOGRAPH-30D6D> 2
+<CJK_UNIFIED_IDEOGRAPH-30D6E> 2
+<CJK_UNIFIED_IDEOGRAPH-30D6F> 2
+<CJK_UNIFIED_IDEOGRAPH-30D70> 2
+<CJK_UNIFIED_IDEOGRAPH-30D71> 2
+<CJK_UNIFIED_IDEOGRAPH-30D72> 2
+<CJK_UNIFIED_IDEOGRAPH-30D73> 2
+<CJK_UNIFIED_IDEOGRAPH-30D74> 2
+<CJK_UNIFIED_IDEOGRAPH-30D75> 2
+<CJK_UNIFIED_IDEOGRAPH-30D76> 2
+<CJK_UNIFIED_IDEOGRAPH-30D77> 2
+<CJK_UNIFIED_IDEOGRAPH-30D78> 2
+<CJK_UNIFIED_IDEOGRAPH-30D79> 2
+<CJK_UNIFIED_IDEOGRAPH-30D7A> 2
+<CJK_UNIFIED_IDEOGRAPH-30D7B> 2
+<CJK_UNIFIED_IDEOGRAPH-30D7C> 2
+<CJK_UNIFIED_IDEOGRAPH-30D7D> 2
+<CJK_UNIFIED_IDEOGRAPH-30D7E> 2
+<CJK_UNIFIED_IDEOGRAPH-30D7F> 2
+<CJK_UNIFIED_IDEOGRAPH-30D80> 2
+<CJK_UNIFIED_IDEOGRAPH-30D81> 2
+<CJK_UNIFIED_IDEOGRAPH-30D82> 2
+<CJK_UNIFIED_IDEOGRAPH-30D83> 2
+<CJK_UNIFIED_IDEOGRAPH-30D84> 2
+<CJK_UNIFIED_IDEOGRAPH-30D85> 2
+<CJK_UNIFIED_IDEOGRAPH-30D86> 2
+<CJK_UNIFIED_IDEOGRAPH-30D87> 2
+<CJK_UNIFIED_IDEOGRAPH-30D88> 2
+<CJK_UNIFIED_IDEOGRAPH-30D89> 2
+<CJK_UNIFIED_IDEOGRAPH-30D8A> 2
+<CJK_UNIFIED_IDEOGRAPH-30D8B> 2
+<CJK_UNIFIED_IDEOGRAPH-30D8C> 2
+<CJK_UNIFIED_IDEOGRAPH-30D8D> 2
+<CJK_UNIFIED_IDEOGRAPH-30D8E> 2
+<CJK_UNIFIED_IDEOGRAPH-30D8F> 2
+<CJK_UNIFIED_IDEOGRAPH-30D90> 2
+<CJK_UNIFIED_IDEOGRAPH-30D91> 2
+<CJK_UNIFIED_IDEOGRAPH-30D92> 2
+<CJK_UNIFIED_IDEOGRAPH-30D93> 2
+<CJK_UNIFIED_IDEOGRAPH-30D94> 2
+<CJK_UNIFIED_IDEOGRAPH-30D95> 2
+<CJK_UNIFIED_IDEOGRAPH-30D96> 2
+<CJK_UNIFIED_IDEOGRAPH-30D97> 2
+<CJK_UNIFIED_IDEOGRAPH-30D98> 2
+<CJK_UNIFIED_IDEOGRAPH-30D99> 2
+<CJK_UNIFIED_IDEOGRAPH-30D9A> 2
+<CJK_UNIFIED_IDEOGRAPH-30D9B> 2
+<CJK_UNIFIED_IDEOGRAPH-30D9C> 2
+<CJK_UNIFIED_IDEOGRAPH-30D9D> 2
+<CJK_UNIFIED_IDEOGRAPH-30D9E> 2
+<CJK_UNIFIED_IDEOGRAPH-30D9F> 2
+<CJK_UNIFIED_IDEOGRAPH-30DA0> 2
+<CJK_UNIFIED_IDEOGRAPH-30DA1> 2
+<CJK_UNIFIED_IDEOGRAPH-30DA2> 2
+<CJK_UNIFIED_IDEOGRAPH-30DA3> 2
+<CJK_UNIFIED_IDEOGRAPH-30DA4> 2
+<CJK_UNIFIED_IDEOGRAPH-30DA5> 2
+<CJK_UNIFIED_IDEOGRAPH-30DA6> 2
+<CJK_UNIFIED_IDEOGRAPH-30DA7> 2
+<CJK_UNIFIED_IDEOGRAPH-30DA8> 2
+<CJK_UNIFIED_IDEOGRAPH-30DA9> 2
+<CJK_UNIFIED_IDEOGRAPH-30DAA> 2
+<CJK_UNIFIED_IDEOGRAPH-30DAB> 2
+<CJK_UNIFIED_IDEOGRAPH-30DAC> 2
+<CJK_UNIFIED_IDEOGRAPH-30DAD> 2
+<CJK_UNIFIED_IDEOGRAPH-30DAE> 2
+<CJK_UNIFIED_IDEOGRAPH-30DAF> 2
+<CJK_UNIFIED_IDEOGRAPH-30DB0> 2
+<CJK_UNIFIED_IDEOGRAPH-30DB1> 2
+<CJK_UNIFIED_IDEOGRAPH-30DB2> 2
+<CJK_UNIFIED_IDEOGRAPH-30DB3> 2
+<CJK_UNIFIED_IDEOGRAPH-30DB4> 2
+<CJK_UNIFIED_IDEOGRAPH-30DB5> 2
+<CJK_UNIFIED_IDEOGRAPH-30DB6> 2
+<CJK_UNIFIED_IDEOGRAPH-30DB7> 2
+<CJK_UNIFIED_IDEOGRAPH-30DB8> 2
+<CJK_UNIFIED_IDEOGRAPH-30DB9> 2
+<CJK_UNIFIED_IDEOGRAPH-30DBA> 2
+<CJK_UNIFIED_IDEOGRAPH-30DBB> 2
+<CJK_UNIFIED_IDEOGRAPH-30DBC> 2
+<CJK_UNIFIED_IDEOGRAPH-30DBD> 2
+<CJK_UNIFIED_IDEOGRAPH-30DBE> 2
+<CJK_UNIFIED_IDEOGRAPH-30DBF> 2
+<CJK_UNIFIED_IDEOGRAPH-30DC0> 2
+<CJK_UNIFIED_IDEOGRAPH-30DC1> 2
+<CJK_UNIFIED_IDEOGRAPH-30DC2> 2
+<CJK_UNIFIED_IDEOGRAPH-30DC3> 2
+<CJK_UNIFIED_IDEOGRAPH-30DC4> 2
+<CJK_UNIFIED_IDEOGRAPH-30DC5> 2
+<CJK_UNIFIED_IDEOGRAPH-30DC6> 2
+<CJK_UNIFIED_IDEOGRAPH-30DC7> 2
+<CJK_UNIFIED_IDEOGRAPH-30DC8> 2
+<CJK_UNIFIED_IDEOGRAPH-30DC9> 2
+<CJK_UNIFIED_IDEOGRAPH-30DCA> 2
+<CJK_UNIFIED_IDEOGRAPH-30DCB> 2
+<CJK_UNIFIED_IDEOGRAPH-30DCC> 2
+<CJK_UNIFIED_IDEOGRAPH-30DCD> 2
+<CJK_UNIFIED_IDEOGRAPH-30DCE> 2
+<CJK_UNIFIED_IDEOGRAPH-30DCF> 2
+<CJK_UNIFIED_IDEOGRAPH-30DD0> 2
+<CJK_UNIFIED_IDEOGRAPH-30DD1> 2
+<CJK_UNIFIED_IDEOGRAPH-30DD2> 2
+<CJK_UNIFIED_IDEOGRAPH-30DD3> 2
+<CJK_UNIFIED_IDEOGRAPH-30DD4> 2
+<CJK_UNIFIED_IDEOGRAPH-30DD5> 2
+<CJK_UNIFIED_IDEOGRAPH-30DD6> 2
+<CJK_UNIFIED_IDEOGRAPH-30DD7> 2
+<CJK_UNIFIED_IDEOGRAPH-30DD8> 2
+<CJK_UNIFIED_IDEOGRAPH-30DD9> 2
+<CJK_UNIFIED_IDEOGRAPH-30DDA> 2
+<CJK_UNIFIED_IDEOGRAPH-30DDB> 2
+<CJK_UNIFIED_IDEOGRAPH-30DDC> 2
+<CJK_UNIFIED_IDEOGRAPH-30DDD> 2
+<CJK_UNIFIED_IDEOGRAPH-30DDE> 2
+<CJK_UNIFIED_IDEOGRAPH-30DDF> 2
+<CJK_UNIFIED_IDEOGRAPH-30DE0> 2
+<CJK_UNIFIED_IDEOGRAPH-30DE1> 2
+<CJK_UNIFIED_IDEOGRAPH-30DE2> 2
+<CJK_UNIFIED_IDEOGRAPH-30DE3> 2
+<CJK_UNIFIED_IDEOGRAPH-30DE4> 2
+<CJK_UNIFIED_IDEOGRAPH-30DE5> 2
+<CJK_UNIFIED_IDEOGRAPH-30DE6> 2
+<CJK_UNIFIED_IDEOGRAPH-30DE7> 2
+<CJK_UNIFIED_IDEOGRAPH-30DE8> 2
+<CJK_UNIFIED_IDEOGRAPH-30DE9> 2
+<CJK_UNIFIED_IDEOGRAPH-30DEA> 2
+<CJK_UNIFIED_IDEOGRAPH-30DEB> 2
+<CJK_UNIFIED_IDEOGRAPH-30DEC> 2
+<CJK_UNIFIED_IDEOGRAPH-30DED> 2
+<CJK_UNIFIED_IDEOGRAPH-30DEE> 2
+<CJK_UNIFIED_IDEOGRAPH-30DEF> 2
+<CJK_UNIFIED_IDEOGRAPH-30DF0> 2
+<CJK_UNIFIED_IDEOGRAPH-30DF1> 2
+<CJK_UNIFIED_IDEOGRAPH-30DF2> 2
+<CJK_UNIFIED_IDEOGRAPH-30DF3> 2
+<CJK_UNIFIED_IDEOGRAPH-30DF4> 2
+<CJK_UNIFIED_IDEOGRAPH-30DF5> 2
+<CJK_UNIFIED_IDEOGRAPH-30DF6> 2
+<CJK_UNIFIED_IDEOGRAPH-30DF7> 2
+<CJK_UNIFIED_IDEOGRAPH-30DF8> 2
+<CJK_UNIFIED_IDEOGRAPH-30DF9> 2
+<CJK_UNIFIED_IDEOGRAPH-30DFA> 2
+<CJK_UNIFIED_IDEOGRAPH-30DFB> 2
+<CJK_UNIFIED_IDEOGRAPH-30DFC> 2
+<CJK_UNIFIED_IDEOGRAPH-30DFD> 2
+<CJK_UNIFIED_IDEOGRAPH-30DFE> 2
+<CJK_UNIFIED_IDEOGRAPH-30DFF> 2
+<CJK_UNIFIED_IDEOGRAPH-30E00> 2
+<CJK_UNIFIED_IDEOGRAPH-30E01> 2
+<CJK_UNIFIED_IDEOGRAPH-30E02> 2
+<CJK_UNIFIED_IDEOGRAPH-30E03> 2
+<CJK_UNIFIED_IDEOGRAPH-30E04> 2
+<CJK_UNIFIED_IDEOGRAPH-30E05> 2
+<CJK_UNIFIED_IDEOGRAPH-30E06> 2
+<CJK_UNIFIED_IDEOGRAPH-30E07> 2
+<CJK_UNIFIED_IDEOGRAPH-30E08> 2
+<CJK_UNIFIED_IDEOGRAPH-30E09> 2
+<CJK_UNIFIED_IDEOGRAPH-30E0A> 2
+<CJK_UNIFIED_IDEOGRAPH-30E0B> 2
+<CJK_UNIFIED_IDEOGRAPH-30E0C> 2
+<CJK_UNIFIED_IDEOGRAPH-30E0D> 2
+<CJK_UNIFIED_IDEOGRAPH-30E0E> 2
+<CJK_UNIFIED_IDEOGRAPH-30E0F> 2
+<CJK_UNIFIED_IDEOGRAPH-30E10> 2
+<CJK_UNIFIED_IDEOGRAPH-30E11> 2
+<CJK_UNIFIED_IDEOGRAPH-30E12> 2
+<CJK_UNIFIED_IDEOGRAPH-30E13> 2
+<CJK_UNIFIED_IDEOGRAPH-30E14> 2
+<CJK_UNIFIED_IDEOGRAPH-30E15> 2
+<CJK_UNIFIED_IDEOGRAPH-30E16> 2
+<CJK_UNIFIED_IDEOGRAPH-30E17> 2
+<CJK_UNIFIED_IDEOGRAPH-30E18> 2
+<CJK_UNIFIED_IDEOGRAPH-30E19> 2
+<CJK_UNIFIED_IDEOGRAPH-30E1A> 2
+<CJK_UNIFIED_IDEOGRAPH-30E1B> 2
+<CJK_UNIFIED_IDEOGRAPH-30E1C> 2
+<CJK_UNIFIED_IDEOGRAPH-30E1D> 2
+<CJK_UNIFIED_IDEOGRAPH-30E1E> 2
+<CJK_UNIFIED_IDEOGRAPH-30E1F> 2
+<CJK_UNIFIED_IDEOGRAPH-30E20> 2
+<CJK_UNIFIED_IDEOGRAPH-30E21> 2
+<CJK_UNIFIED_IDEOGRAPH-30E22> 2
+<CJK_UNIFIED_IDEOGRAPH-30E23> 2
+<CJK_UNIFIED_IDEOGRAPH-30E24> 2
+<CJK_UNIFIED_IDEOGRAPH-30E25> 2
+<CJK_UNIFIED_IDEOGRAPH-30E26> 2
+<CJK_UNIFIED_IDEOGRAPH-30E27> 2
+<CJK_UNIFIED_IDEOGRAPH-30E28> 2
+<CJK_UNIFIED_IDEOGRAPH-30E29> 2
+<CJK_UNIFIED_IDEOGRAPH-30E2A> 2
+<CJK_UNIFIED_IDEOGRAPH-30E2B> 2
+<CJK_UNIFIED_IDEOGRAPH-30E2C> 2
+<CJK_UNIFIED_IDEOGRAPH-30E2D> 2
+<CJK_UNIFIED_IDEOGRAPH-30E2E> 2
+<CJK_UNIFIED_IDEOGRAPH-30E2F> 2
+<CJK_UNIFIED_IDEOGRAPH-30E30> 2
+<CJK_UNIFIED_IDEOGRAPH-30E31> 2
+<CJK_UNIFIED_IDEOGRAPH-30E32> 2
+<CJK_UNIFIED_IDEOGRAPH-30E33> 2
+<CJK_UNIFIED_IDEOGRAPH-30E34> 2
+<CJK_UNIFIED_IDEOGRAPH-30E35> 2
+<CJK_UNIFIED_IDEOGRAPH-30E36> 2
+<CJK_UNIFIED_IDEOGRAPH-30E37> 2
+<CJK_UNIFIED_IDEOGRAPH-30E38> 2
+<CJK_UNIFIED_IDEOGRAPH-30E39> 2
+<CJK_UNIFIED_IDEOGRAPH-30E3A> 2
+<CJK_UNIFIED_IDEOGRAPH-30E3B> 2
+<CJK_UNIFIED_IDEOGRAPH-30E3C> 2
+<CJK_UNIFIED_IDEOGRAPH-30E3D> 2
+<CJK_UNIFIED_IDEOGRAPH-30E3E> 2
+<CJK_UNIFIED_IDEOGRAPH-30E3F> 2
+<CJK_UNIFIED_IDEOGRAPH-30E40> 2
+<CJK_UNIFIED_IDEOGRAPH-30E41> 2
+<CJK_UNIFIED_IDEOGRAPH-30E42> 2
+<CJK_UNIFIED_IDEOGRAPH-30E43> 2
+<CJK_UNIFIED_IDEOGRAPH-30E44> 2
+<CJK_UNIFIED_IDEOGRAPH-30E45> 2
+<CJK_UNIFIED_IDEOGRAPH-30E46> 2
+<CJK_UNIFIED_IDEOGRAPH-30E47> 2
+<CJK_UNIFIED_IDEOGRAPH-30E48> 2
+<CJK_UNIFIED_IDEOGRAPH-30E49> 2
+<CJK_UNIFIED_IDEOGRAPH-30E4A> 2
+<CJK_UNIFIED_IDEOGRAPH-30E4B> 2
+<CJK_UNIFIED_IDEOGRAPH-30E4C> 2
+<CJK_UNIFIED_IDEOGRAPH-30E4D> 2
+<CJK_UNIFIED_IDEOGRAPH-30E4E> 2
+<CJK_UNIFIED_IDEOGRAPH-30E4F> 2
+<CJK_UNIFIED_IDEOGRAPH-30E50> 2
+<CJK_UNIFIED_IDEOGRAPH-30E51> 2
+<CJK_UNIFIED_IDEOGRAPH-30E52> 2
+<CJK_UNIFIED_IDEOGRAPH-30E53> 2
+<CJK_UNIFIED_IDEOGRAPH-30E54> 2
+<CJK_UNIFIED_IDEOGRAPH-30E55> 2
+<CJK_UNIFIED_IDEOGRAPH-30E56> 2
+<CJK_UNIFIED_IDEOGRAPH-30E57> 2
+<CJK_UNIFIED_IDEOGRAPH-30E58> 2
+<CJK_UNIFIED_IDEOGRAPH-30E59> 2
+<CJK_UNIFIED_IDEOGRAPH-30E5A> 2
+<CJK_UNIFIED_IDEOGRAPH-30E5B> 2
+<CJK_UNIFIED_IDEOGRAPH-30E5C> 2
+<CJK_UNIFIED_IDEOGRAPH-30E5D> 2
+<CJK_UNIFIED_IDEOGRAPH-30E5E> 2
+<CJK_UNIFIED_IDEOGRAPH-30E5F> 2
+<CJK_UNIFIED_IDEOGRAPH-30E60> 2
+<CJK_UNIFIED_IDEOGRAPH-30E61> 2
+<CJK_UNIFIED_IDEOGRAPH-30E62> 2
+<CJK_UNIFIED_IDEOGRAPH-30E63> 2
+<CJK_UNIFIED_IDEOGRAPH-30E64> 2
+<CJK_UNIFIED_IDEOGRAPH-30E65> 2
+<CJK_UNIFIED_IDEOGRAPH-30E66> 2
+<CJK_UNIFIED_IDEOGRAPH-30E67> 2
+<CJK_UNIFIED_IDEOGRAPH-30E68> 2
+<CJK_UNIFIED_IDEOGRAPH-30E69> 2
+<CJK_UNIFIED_IDEOGRAPH-30E6A> 2
+<CJK_UNIFIED_IDEOGRAPH-30E6B> 2
+<CJK_UNIFIED_IDEOGRAPH-30E6C> 2
+<CJK_UNIFIED_IDEOGRAPH-30E6D> 2
+<CJK_UNIFIED_IDEOGRAPH-30E6E> 2
+<CJK_UNIFIED_IDEOGRAPH-30E6F> 2
+<CJK_UNIFIED_IDEOGRAPH-30E70> 2
+<CJK_UNIFIED_IDEOGRAPH-30E71> 2
+<CJK_UNIFIED_IDEOGRAPH-30E72> 2
+<CJK_UNIFIED_IDEOGRAPH-30E73> 2
+<CJK_UNIFIED_IDEOGRAPH-30E74> 2
+<CJK_UNIFIED_IDEOGRAPH-30E75> 2
+<CJK_UNIFIED_IDEOGRAPH-30E76> 2
+<CJK_UNIFIED_IDEOGRAPH-30E77> 2
+<CJK_UNIFIED_IDEOGRAPH-30E78> 2
+<CJK_UNIFIED_IDEOGRAPH-30E79> 2
+<CJK_UNIFIED_IDEOGRAPH-30E7A> 2
+<CJK_UNIFIED_IDEOGRAPH-30E7B> 2
+<CJK_UNIFIED_IDEOGRAPH-30E7C> 2
+<CJK_UNIFIED_IDEOGRAPH-30E7D> 2
+<CJK_UNIFIED_IDEOGRAPH-30E7E> 2
+<CJK_UNIFIED_IDEOGRAPH-30E7F> 2
+<CJK_UNIFIED_IDEOGRAPH-30E80> 2
+<CJK_UNIFIED_IDEOGRAPH-30E81> 2
+<CJK_UNIFIED_IDEOGRAPH-30E82> 2
+<CJK_UNIFIED_IDEOGRAPH-30E83> 2
+<CJK_UNIFIED_IDEOGRAPH-30E84> 2
+<CJK_UNIFIED_IDEOGRAPH-30E85> 2
+<CJK_UNIFIED_IDEOGRAPH-30E86> 2
+<CJK_UNIFIED_IDEOGRAPH-30E87> 2
+<CJK_UNIFIED_IDEOGRAPH-30E88> 2
+<CJK_UNIFIED_IDEOGRAPH-30E89> 2
+<CJK_UNIFIED_IDEOGRAPH-30E8A> 2
+<CJK_UNIFIED_IDEOGRAPH-30E8B> 2
+<CJK_UNIFIED_IDEOGRAPH-30E8C> 2
+<CJK_UNIFIED_IDEOGRAPH-30E8D> 2
+<CJK_UNIFIED_IDEOGRAPH-30E8E> 2
+<CJK_UNIFIED_IDEOGRAPH-30E8F> 2
+<CJK_UNIFIED_IDEOGRAPH-30E90> 2
+<CJK_UNIFIED_IDEOGRAPH-30E91> 2
+<CJK_UNIFIED_IDEOGRAPH-30E92> 2
+<CJK_UNIFIED_IDEOGRAPH-30E93> 2
+<CJK_UNIFIED_IDEOGRAPH-30E94> 2
+<CJK_UNIFIED_IDEOGRAPH-30E95> 2
+<CJK_UNIFIED_IDEOGRAPH-30E96> 2
+<CJK_UNIFIED_IDEOGRAPH-30E97> 2
+<CJK_UNIFIED_IDEOGRAPH-30E98> 2
+<CJK_UNIFIED_IDEOGRAPH-30E99> 2
+<CJK_UNIFIED_IDEOGRAPH-30E9A> 2
+<CJK_UNIFIED_IDEOGRAPH-30E9B> 2
+<CJK_UNIFIED_IDEOGRAPH-30E9C> 2
+<CJK_UNIFIED_IDEOGRAPH-30E9D> 2
+<CJK_UNIFIED_IDEOGRAPH-30E9E> 2
+<CJK_UNIFIED_IDEOGRAPH-30E9F> 2
+<CJK_UNIFIED_IDEOGRAPH-30EA0> 2
+<CJK_UNIFIED_IDEOGRAPH-30EA1> 2
+<CJK_UNIFIED_IDEOGRAPH-30EA2> 2
+<CJK_UNIFIED_IDEOGRAPH-30EA3> 2
+<CJK_UNIFIED_IDEOGRAPH-30EA4> 2
+<CJK_UNIFIED_IDEOGRAPH-30EA5> 2
+<CJK_UNIFIED_IDEOGRAPH-30EA6> 2
+<CJK_UNIFIED_IDEOGRAPH-30EA7> 2
+<CJK_UNIFIED_IDEOGRAPH-30EA8> 2
+<CJK_UNIFIED_IDEOGRAPH-30EA9> 2
+<CJK_UNIFIED_IDEOGRAPH-30EAA> 2
+<CJK_UNIFIED_IDEOGRAPH-30EAB> 2
+<CJK_UNIFIED_IDEOGRAPH-30EAC> 2
+<CJK_UNIFIED_IDEOGRAPH-30EAD> 2
+<CJK_UNIFIED_IDEOGRAPH-30EAE> 2
+<CJK_UNIFIED_IDEOGRAPH-30EAF> 2
+<CJK_UNIFIED_IDEOGRAPH-30EB0> 2
+<CJK_UNIFIED_IDEOGRAPH-30EB1> 2
+<CJK_UNIFIED_IDEOGRAPH-30EB2> 2
+<CJK_UNIFIED_IDEOGRAPH-30EB3> 2
+<CJK_UNIFIED_IDEOGRAPH-30EB4> 2
+<CJK_UNIFIED_IDEOGRAPH-30EB5> 2
+<CJK_UNIFIED_IDEOGRAPH-30EB6> 2
+<CJK_UNIFIED_IDEOGRAPH-30EB7> 2
+<CJK_UNIFIED_IDEOGRAPH-30EB8> 2
+<CJK_UNIFIED_IDEOGRAPH-30EB9> 2
+<CJK_UNIFIED_IDEOGRAPH-30EBA> 2
+<CJK_UNIFIED_IDEOGRAPH-30EBB> 2
+<CJK_UNIFIED_IDEOGRAPH-30EBC> 2
+<CJK_UNIFIED_IDEOGRAPH-30EBD> 2
+<CJK_UNIFIED_IDEOGRAPH-30EBE> 2
+<CJK_UNIFIED_IDEOGRAPH-30EBF> 2
+<CJK_UNIFIED_IDEOGRAPH-30EC0> 2
+<CJK_UNIFIED_IDEOGRAPH-30EC1> 2
+<CJK_UNIFIED_IDEOGRAPH-30EC2> 2
+<CJK_UNIFIED_IDEOGRAPH-30EC3> 2
+<CJK_UNIFIED_IDEOGRAPH-30EC4> 2
+<CJK_UNIFIED_IDEOGRAPH-30EC5> 2
+<CJK_UNIFIED_IDEOGRAPH-30EC6> 2
+<CJK_UNIFIED_IDEOGRAPH-30EC7> 2
+<CJK_UNIFIED_IDEOGRAPH-30EC8> 2
+<CJK_UNIFIED_IDEOGRAPH-30EC9> 2
+<CJK_UNIFIED_IDEOGRAPH-30ECA> 2
+<CJK_UNIFIED_IDEOGRAPH-30ECB> 2
+<CJK_UNIFIED_IDEOGRAPH-30ECC> 2
+<CJK_UNIFIED_IDEOGRAPH-30ECD> 2
+<CJK_UNIFIED_IDEOGRAPH-30ECE> 2
+<CJK_UNIFIED_IDEOGRAPH-30ECF> 2
+<CJK_UNIFIED_IDEOGRAPH-30ED0> 2
+<CJK_UNIFIED_IDEOGRAPH-30ED1> 2
+<CJK_UNIFIED_IDEOGRAPH-30ED2> 2
+<CJK_UNIFIED_IDEOGRAPH-30ED3> 2
+<CJK_UNIFIED_IDEOGRAPH-30ED4> 2
+<CJK_UNIFIED_IDEOGRAPH-30ED5> 2
+<CJK_UNIFIED_IDEOGRAPH-30ED6> 2
+<CJK_UNIFIED_IDEOGRAPH-30ED7> 2
+<CJK_UNIFIED_IDEOGRAPH-30ED8> 2
+<CJK_UNIFIED_IDEOGRAPH-30ED9> 2
+<CJK_UNIFIED_IDEOGRAPH-30EDA> 2
+<CJK_UNIFIED_IDEOGRAPH-30EDB> 2
+<CJK_UNIFIED_IDEOGRAPH-30EDC> 2
+<CJK_UNIFIED_IDEOGRAPH-30EDD> 2
+<CJK_UNIFIED_IDEOGRAPH-30EDE> 2
+<CJK_UNIFIED_IDEOGRAPH-30EDF> 2
+<CJK_UNIFIED_IDEOGRAPH-30EE0> 2
+<CJK_UNIFIED_IDEOGRAPH-30EE1> 2
+<CJK_UNIFIED_IDEOGRAPH-30EE2> 2
+<CJK_UNIFIED_IDEOGRAPH-30EE3> 2
+<CJK_UNIFIED_IDEOGRAPH-30EE4> 2
+<CJK_UNIFIED_IDEOGRAPH-30EE5> 2
+<CJK_UNIFIED_IDEOGRAPH-30EE6> 2
+<CJK_UNIFIED_IDEOGRAPH-30EE7> 2
+<CJK_UNIFIED_IDEOGRAPH-30EE8> 2
+<CJK_UNIFIED_IDEOGRAPH-30EE9> 2
+<CJK_UNIFIED_IDEOGRAPH-30EEA> 2
+<CJK_UNIFIED_IDEOGRAPH-30EEB> 2
+<CJK_UNIFIED_IDEOGRAPH-30EEC> 2
+<CJK_UNIFIED_IDEOGRAPH-30EED> 2
+<CJK_UNIFIED_IDEOGRAPH-30EEE> 2
+<CJK_UNIFIED_IDEOGRAPH-30EEF> 2
+<CJK_UNIFIED_IDEOGRAPH-30EF0> 2
+<CJK_UNIFIED_IDEOGRAPH-30EF1> 2
+<CJK_UNIFIED_IDEOGRAPH-30EF2> 2
+<CJK_UNIFIED_IDEOGRAPH-30EF3> 2
+<CJK_UNIFIED_IDEOGRAPH-30EF4> 2
+<CJK_UNIFIED_IDEOGRAPH-30EF5> 2
+<CJK_UNIFIED_IDEOGRAPH-30EF6> 2
+<CJK_UNIFIED_IDEOGRAPH-30EF7> 2
+<CJK_UNIFIED_IDEOGRAPH-30EF8> 2
+<CJK_UNIFIED_IDEOGRAPH-30EF9> 2
+<CJK_UNIFIED_IDEOGRAPH-30EFA> 2
+<CJK_UNIFIED_IDEOGRAPH-30EFB> 2
+<CJK_UNIFIED_IDEOGRAPH-30EFC> 2
+<CJK_UNIFIED_IDEOGRAPH-30EFD> 2
+<CJK_UNIFIED_IDEOGRAPH-30EFE> 2
+<CJK_UNIFIED_IDEOGRAPH-30EFF> 2
+<CJK_UNIFIED_IDEOGRAPH-30F00> 2
+<CJK_UNIFIED_IDEOGRAPH-30F01> 2
+<CJK_UNIFIED_IDEOGRAPH-30F02> 2
+<CJK_UNIFIED_IDEOGRAPH-30F03> 2
+<CJK_UNIFIED_IDEOGRAPH-30F04> 2
+<CJK_UNIFIED_IDEOGRAPH-30F05> 2
+<CJK_UNIFIED_IDEOGRAPH-30F06> 2
+<CJK_UNIFIED_IDEOGRAPH-30F07> 2
+<CJK_UNIFIED_IDEOGRAPH-30F08> 2
+<CJK_UNIFIED_IDEOGRAPH-30F09> 2
+<CJK_UNIFIED_IDEOGRAPH-30F0A> 2
+<CJK_UNIFIED_IDEOGRAPH-30F0B> 2
+<CJK_UNIFIED_IDEOGRAPH-30F0C> 2
+<CJK_UNIFIED_IDEOGRAPH-30F0D> 2
+<CJK_UNIFIED_IDEOGRAPH-30F0E> 2
+<CJK_UNIFIED_IDEOGRAPH-30F0F> 2
+<CJK_UNIFIED_IDEOGRAPH-30F10> 2
+<CJK_UNIFIED_IDEOGRAPH-30F11> 2
+<CJK_UNIFIED_IDEOGRAPH-30F12> 2
+<CJK_UNIFIED_IDEOGRAPH-30F13> 2
+<CJK_UNIFIED_IDEOGRAPH-30F14> 2
+<CJK_UNIFIED_IDEOGRAPH-30F15> 2
+<CJK_UNIFIED_IDEOGRAPH-30F16> 2
+<CJK_UNIFIED_IDEOGRAPH-30F17> 2
+<CJK_UNIFIED_IDEOGRAPH-30F18> 2
+<CJK_UNIFIED_IDEOGRAPH-30F19> 2
+<CJK_UNIFIED_IDEOGRAPH-30F1A> 2
+<CJK_UNIFIED_IDEOGRAPH-30F1B> 2
+<CJK_UNIFIED_IDEOGRAPH-30F1C> 2
+<CJK_UNIFIED_IDEOGRAPH-30F1D> 2
+<CJK_UNIFIED_IDEOGRAPH-30F1E> 2
+<CJK_UNIFIED_IDEOGRAPH-30F1F> 2
+<CJK_UNIFIED_IDEOGRAPH-30F20> 2
+<CJK_UNIFIED_IDEOGRAPH-30F21> 2
+<CJK_UNIFIED_IDEOGRAPH-30F22> 2
+<CJK_UNIFIED_IDEOGRAPH-30F23> 2
+<CJK_UNIFIED_IDEOGRAPH-30F24> 2
+<CJK_UNIFIED_IDEOGRAPH-30F25> 2
+<CJK_UNIFIED_IDEOGRAPH-30F26> 2
+<CJK_UNIFIED_IDEOGRAPH-30F27> 2
+<CJK_UNIFIED_IDEOGRAPH-30F28> 2
+<CJK_UNIFIED_IDEOGRAPH-30F29> 2
+<CJK_UNIFIED_IDEOGRAPH-30F2A> 2
+<CJK_UNIFIED_IDEOGRAPH-30F2B> 2
+<CJK_UNIFIED_IDEOGRAPH-30F2C> 2
+<CJK_UNIFIED_IDEOGRAPH-30F2D> 2
+<CJK_UNIFIED_IDEOGRAPH-30F2E> 2
+<CJK_UNIFIED_IDEOGRAPH-30F2F> 2
+<CJK_UNIFIED_IDEOGRAPH-30F30> 2
+<CJK_UNIFIED_IDEOGRAPH-30F31> 2
+<CJK_UNIFIED_IDEOGRAPH-30F32> 2
+<CJK_UNIFIED_IDEOGRAPH-30F33> 2
+<CJK_UNIFIED_IDEOGRAPH-30F34> 2
+<CJK_UNIFIED_IDEOGRAPH-30F35> 2
+<CJK_UNIFIED_IDEOGRAPH-30F36> 2
+<CJK_UNIFIED_IDEOGRAPH-30F37> 2
+<CJK_UNIFIED_IDEOGRAPH-30F38> 2
+<CJK_UNIFIED_IDEOGRAPH-30F39> 2
+<CJK_UNIFIED_IDEOGRAPH-30F3A> 2
+<CJK_UNIFIED_IDEOGRAPH-30F3B> 2
+<CJK_UNIFIED_IDEOGRAPH-30F3C> 2
+<CJK_UNIFIED_IDEOGRAPH-30F3D> 2
+<CJK_UNIFIED_IDEOGRAPH-30F3E> 2
+<CJK_UNIFIED_IDEOGRAPH-30F3F> 2
+<CJK_UNIFIED_IDEOGRAPH-30F40> 2
+<CJK_UNIFIED_IDEOGRAPH-30F41> 2
+<CJK_UNIFIED_IDEOGRAPH-30F42> 2
+<CJK_UNIFIED_IDEOGRAPH-30F43> 2
+<CJK_UNIFIED_IDEOGRAPH-30F44> 2
+<CJK_UNIFIED_IDEOGRAPH-30F45> 2
+<CJK_UNIFIED_IDEOGRAPH-30F46> 2
+<CJK_UNIFIED_IDEOGRAPH-30F47> 2
+<CJK_UNIFIED_IDEOGRAPH-30F48> 2
+<CJK_UNIFIED_IDEOGRAPH-30F49> 2
+<CJK_UNIFIED_IDEOGRAPH-30F4A> 2
+<CJK_UNIFIED_IDEOGRAPH-30F4B> 2
+<CJK_UNIFIED_IDEOGRAPH-30F4C> 2
+<CJK_UNIFIED_IDEOGRAPH-30F4D> 2
+<CJK_UNIFIED_IDEOGRAPH-30F4E> 2
+<CJK_UNIFIED_IDEOGRAPH-30F4F> 2
+<CJK_UNIFIED_IDEOGRAPH-30F50> 2
+<CJK_UNIFIED_IDEOGRAPH-30F51> 2
+<CJK_UNIFIED_IDEOGRAPH-30F52> 2
+<CJK_UNIFIED_IDEOGRAPH-30F53> 2
+<CJK_UNIFIED_IDEOGRAPH-30F54> 2
+<CJK_UNIFIED_IDEOGRAPH-30F55> 2
+<CJK_UNIFIED_IDEOGRAPH-30F56> 2
+<CJK_UNIFIED_IDEOGRAPH-30F57> 2
+<CJK_UNIFIED_IDEOGRAPH-30F58> 2
+<CJK_UNIFIED_IDEOGRAPH-30F59> 2
+<CJK_UNIFIED_IDEOGRAPH-30F5A> 2
+<CJK_UNIFIED_IDEOGRAPH-30F5B> 2
+<CJK_UNIFIED_IDEOGRAPH-30F5C> 2
+<CJK_UNIFIED_IDEOGRAPH-30F5D> 2
+<CJK_UNIFIED_IDEOGRAPH-30F5E> 2
+<CJK_UNIFIED_IDEOGRAPH-30F5F> 2
+<CJK_UNIFIED_IDEOGRAPH-30F60> 2
+<CJK_UNIFIED_IDEOGRAPH-30F61> 2
+<CJK_UNIFIED_IDEOGRAPH-30F62> 2
+<CJK_UNIFIED_IDEOGRAPH-30F63> 2
+<CJK_UNIFIED_IDEOGRAPH-30F64> 2
+<CJK_UNIFIED_IDEOGRAPH-30F65> 2
+<CJK_UNIFIED_IDEOGRAPH-30F66> 2
+<CJK_UNIFIED_IDEOGRAPH-30F67> 2
+<CJK_UNIFIED_IDEOGRAPH-30F68> 2
+<CJK_UNIFIED_IDEOGRAPH-30F69> 2
+<CJK_UNIFIED_IDEOGRAPH-30F6A> 2
+<CJK_UNIFIED_IDEOGRAPH-30F6B> 2
+<CJK_UNIFIED_IDEOGRAPH-30F6C> 2
+<CJK_UNIFIED_IDEOGRAPH-30F6D> 2
+<CJK_UNIFIED_IDEOGRAPH-30F6E> 2
+<CJK_UNIFIED_IDEOGRAPH-30F6F> 2
+<CJK_UNIFIED_IDEOGRAPH-30F70> 2
+<CJK_UNIFIED_IDEOGRAPH-30F71> 2
+<CJK_UNIFIED_IDEOGRAPH-30F72> 2
+<CJK_UNIFIED_IDEOGRAPH-30F73> 2
+<CJK_UNIFIED_IDEOGRAPH-30F74> 2
+<CJK_UNIFIED_IDEOGRAPH-30F75> 2
+<CJK_UNIFIED_IDEOGRAPH-30F76> 2
+<CJK_UNIFIED_IDEOGRAPH-30F77> 2
+<CJK_UNIFIED_IDEOGRAPH-30F78> 2
+<CJK_UNIFIED_IDEOGRAPH-30F79> 2
+<CJK_UNIFIED_IDEOGRAPH-30F7A> 2
+<CJK_UNIFIED_IDEOGRAPH-30F7B> 2
+<CJK_UNIFIED_IDEOGRAPH-30F7C> 2
+<CJK_UNIFIED_IDEOGRAPH-30F7D> 2
+<CJK_UNIFIED_IDEOGRAPH-30F7E> 2
+<CJK_UNIFIED_IDEOGRAPH-30F7F> 2
+<CJK_UNIFIED_IDEOGRAPH-30F80> 2
+<CJK_UNIFIED_IDEOGRAPH-30F81> 2
+<CJK_UNIFIED_IDEOGRAPH-30F82> 2
+<CJK_UNIFIED_IDEOGRAPH-30F83> 2
+<CJK_UNIFIED_IDEOGRAPH-30F84> 2
+<CJK_UNIFIED_IDEOGRAPH-30F85> 2
+<CJK_UNIFIED_IDEOGRAPH-30F86> 2
+<CJK_UNIFIED_IDEOGRAPH-30F87> 2
+<CJK_UNIFIED_IDEOGRAPH-30F88> 2
+<CJK_UNIFIED_IDEOGRAPH-30F89> 2
+<CJK_UNIFIED_IDEOGRAPH-30F8A> 2
+<CJK_UNIFIED_IDEOGRAPH-30F8B> 2
+<CJK_UNIFIED_IDEOGRAPH-30F8C> 2
+<CJK_UNIFIED_IDEOGRAPH-30F8D> 2
+<CJK_UNIFIED_IDEOGRAPH-30F8E> 2
+<CJK_UNIFIED_IDEOGRAPH-30F8F> 2
+<CJK_UNIFIED_IDEOGRAPH-30F90> 2
+<CJK_UNIFIED_IDEOGRAPH-30F91> 2
+<CJK_UNIFIED_IDEOGRAPH-30F92> 2
+<CJK_UNIFIED_IDEOGRAPH-30F93> 2
+<CJK_UNIFIED_IDEOGRAPH-30F94> 2
+<CJK_UNIFIED_IDEOGRAPH-30F95> 2
+<CJK_UNIFIED_IDEOGRAPH-30F96> 2
+<CJK_UNIFIED_IDEOGRAPH-30F97> 2
+<CJK_UNIFIED_IDEOGRAPH-30F98> 2
+<CJK_UNIFIED_IDEOGRAPH-30F99> 2
+<CJK_UNIFIED_IDEOGRAPH-30F9A> 2
+<CJK_UNIFIED_IDEOGRAPH-30F9B> 2
+<CJK_UNIFIED_IDEOGRAPH-30F9C> 2
+<CJK_UNIFIED_IDEOGRAPH-30F9D> 2
+<CJK_UNIFIED_IDEOGRAPH-30F9E> 2
+<CJK_UNIFIED_IDEOGRAPH-30F9F> 2
+<CJK_UNIFIED_IDEOGRAPH-30FA0> 2
+<CJK_UNIFIED_IDEOGRAPH-30FA1> 2
+<CJK_UNIFIED_IDEOGRAPH-30FA2> 2
+<CJK_UNIFIED_IDEOGRAPH-30FA3> 2
+<CJK_UNIFIED_IDEOGRAPH-30FA4> 2
+<CJK_UNIFIED_IDEOGRAPH-30FA5> 2
+<CJK_UNIFIED_IDEOGRAPH-30FA6> 2
+<CJK_UNIFIED_IDEOGRAPH-30FA7> 2
+<CJK_UNIFIED_IDEOGRAPH-30FA8> 2
+<CJK_UNIFIED_IDEOGRAPH-30FA9> 2
+<CJK_UNIFIED_IDEOGRAPH-30FAA> 2
+<CJK_UNIFIED_IDEOGRAPH-30FAB> 2
+<CJK_UNIFIED_IDEOGRAPH-30FAC> 2
+<CJK_UNIFIED_IDEOGRAPH-30FAD> 2
+<CJK_UNIFIED_IDEOGRAPH-30FAE> 2
+<CJK_UNIFIED_IDEOGRAPH-30FAF> 2
+<CJK_UNIFIED_IDEOGRAPH-30FB0> 2
+<CJK_UNIFIED_IDEOGRAPH-30FB1> 2
+<CJK_UNIFIED_IDEOGRAPH-30FB2> 2
+<CJK_UNIFIED_IDEOGRAPH-30FB3> 2
+<CJK_UNIFIED_IDEOGRAPH-30FB4> 2
+<CJK_UNIFIED_IDEOGRAPH-30FB5> 2
+<CJK_UNIFIED_IDEOGRAPH-30FB6> 2
+<CJK_UNIFIED_IDEOGRAPH-30FB7> 2
+<CJK_UNIFIED_IDEOGRAPH-30FB8> 2
+<CJK_UNIFIED_IDEOGRAPH-30FB9> 2
+<CJK_UNIFIED_IDEOGRAPH-30FBA> 2
+<CJK_UNIFIED_IDEOGRAPH-30FBB> 2
+<CJK_UNIFIED_IDEOGRAPH-30FBC> 2
+<CJK_UNIFIED_IDEOGRAPH-30FBD> 2
+<CJK_UNIFIED_IDEOGRAPH-30FBE> 2
+<CJK_UNIFIED_IDEOGRAPH-30FBF> 2
+<CJK_UNIFIED_IDEOGRAPH-30FC0> 2
+<CJK_UNIFIED_IDEOGRAPH-30FC1> 2
+<CJK_UNIFIED_IDEOGRAPH-30FC2> 2
+<CJK_UNIFIED_IDEOGRAPH-30FC3> 2
+<CJK_UNIFIED_IDEOGRAPH-30FC4> 2
+<CJK_UNIFIED_IDEOGRAPH-30FC5> 2
+<CJK_UNIFIED_IDEOGRAPH-30FC6> 2
+<CJK_UNIFIED_IDEOGRAPH-30FC7> 2
+<CJK_UNIFIED_IDEOGRAPH-30FC8> 2
+<CJK_UNIFIED_IDEOGRAPH-30FC9> 2
+<CJK_UNIFIED_IDEOGRAPH-30FCA> 2
+<CJK_UNIFIED_IDEOGRAPH-30FCB> 2
+<CJK_UNIFIED_IDEOGRAPH-30FCC> 2
+<CJK_UNIFIED_IDEOGRAPH-30FCD> 2
+<CJK_UNIFIED_IDEOGRAPH-30FCE> 2
+<CJK_UNIFIED_IDEOGRAPH-30FCF> 2
+<CJK_UNIFIED_IDEOGRAPH-30FD0> 2
+<CJK_UNIFIED_IDEOGRAPH-30FD1> 2
+<CJK_UNIFIED_IDEOGRAPH-30FD2> 2
+<CJK_UNIFIED_IDEOGRAPH-30FD3> 2
+<CJK_UNIFIED_IDEOGRAPH-30FD4> 2
+<CJK_UNIFIED_IDEOGRAPH-30FD5> 2
+<CJK_UNIFIED_IDEOGRAPH-30FD6> 2
+<CJK_UNIFIED_IDEOGRAPH-30FD7> 2
+<CJK_UNIFIED_IDEOGRAPH-30FD8> 2
+<CJK_UNIFIED_IDEOGRAPH-30FD9> 2
+<CJK_UNIFIED_IDEOGRAPH-30FDA> 2
+<CJK_UNIFIED_IDEOGRAPH-30FDB> 2
+<CJK_UNIFIED_IDEOGRAPH-30FDC> 2
+<CJK_UNIFIED_IDEOGRAPH-30FDD> 2
+<CJK_UNIFIED_IDEOGRAPH-30FDE> 2
+<CJK_UNIFIED_IDEOGRAPH-30FDF> 2
+<CJK_UNIFIED_IDEOGRAPH-30FE0> 2
+<CJK_UNIFIED_IDEOGRAPH-30FE1> 2
+<CJK_UNIFIED_IDEOGRAPH-30FE2> 2
+<CJK_UNIFIED_IDEOGRAPH-30FE3> 2
+<CJK_UNIFIED_IDEOGRAPH-30FE4> 2
+<CJK_UNIFIED_IDEOGRAPH-30FE5> 2
+<CJK_UNIFIED_IDEOGRAPH-30FE6> 2
+<CJK_UNIFIED_IDEOGRAPH-30FE7> 2
+<CJK_UNIFIED_IDEOGRAPH-30FE8> 2
+<CJK_UNIFIED_IDEOGRAPH-30FE9> 2
+<CJK_UNIFIED_IDEOGRAPH-30FEA> 2
+<CJK_UNIFIED_IDEOGRAPH-30FEB> 2
+<CJK_UNIFIED_IDEOGRAPH-30FEC> 2
+<CJK_UNIFIED_IDEOGRAPH-30FED> 2
+<CJK_UNIFIED_IDEOGRAPH-30FEE> 2
+<CJK_UNIFIED_IDEOGRAPH-30FEF> 2
+<CJK_UNIFIED_IDEOGRAPH-30FF0> 2
+<CJK_UNIFIED_IDEOGRAPH-30FF1> 2
+<CJK_UNIFIED_IDEOGRAPH-30FF2> 2
+<CJK_UNIFIED_IDEOGRAPH-30FF3> 2
+<CJK_UNIFIED_IDEOGRAPH-30FF4> 2
+<CJK_UNIFIED_IDEOGRAPH-30FF5> 2
+<CJK_UNIFIED_IDEOGRAPH-30FF6> 2
+<CJK_UNIFIED_IDEOGRAPH-30FF7> 2
+<CJK_UNIFIED_IDEOGRAPH-30FF8> 2
+<CJK_UNIFIED_IDEOGRAPH-30FF9> 2
+<CJK_UNIFIED_IDEOGRAPH-30FFA> 2
+<CJK_UNIFIED_IDEOGRAPH-30FFB> 2
+<CJK_UNIFIED_IDEOGRAPH-30FFC> 2
+<CJK_UNIFIED_IDEOGRAPH-30FFD> 2
+<CJK_UNIFIED_IDEOGRAPH-30FFE> 2
+<CJK_UNIFIED_IDEOGRAPH-30FFF> 2
+<CJK_UNIFIED_IDEOGRAPH-31000> 2
+<CJK_UNIFIED_IDEOGRAPH-31001> 2
+<CJK_UNIFIED_IDEOGRAPH-31002> 2
+<CJK_UNIFIED_IDEOGRAPH-31003> 2
+<CJK_UNIFIED_IDEOGRAPH-31004> 2
+<CJK_UNIFIED_IDEOGRAPH-31005> 2
+<CJK_UNIFIED_IDEOGRAPH-31006> 2
+<CJK_UNIFIED_IDEOGRAPH-31007> 2
+<CJK_UNIFIED_IDEOGRAPH-31008> 2
+<CJK_UNIFIED_IDEOGRAPH-31009> 2
+<CJK_UNIFIED_IDEOGRAPH-3100A> 2
+<CJK_UNIFIED_IDEOGRAPH-3100B> 2
+<CJK_UNIFIED_IDEOGRAPH-3100C> 2
+<CJK_UNIFIED_IDEOGRAPH-3100D> 2
+<CJK_UNIFIED_IDEOGRAPH-3100E> 2
+<CJK_UNIFIED_IDEOGRAPH-3100F> 2
+<CJK_UNIFIED_IDEOGRAPH-31010> 2
+<CJK_UNIFIED_IDEOGRAPH-31011> 2
+<CJK_UNIFIED_IDEOGRAPH-31012> 2
+<CJK_UNIFIED_IDEOGRAPH-31013> 2
+<CJK_UNIFIED_IDEOGRAPH-31014> 2
+<CJK_UNIFIED_IDEOGRAPH-31015> 2
+<CJK_UNIFIED_IDEOGRAPH-31016> 2
+<CJK_UNIFIED_IDEOGRAPH-31017> 2
+<CJK_UNIFIED_IDEOGRAPH-31018> 2
+<CJK_UNIFIED_IDEOGRAPH-31019> 2
+<CJK_UNIFIED_IDEOGRAPH-3101A> 2
+<CJK_UNIFIED_IDEOGRAPH-3101B> 2
+<CJK_UNIFIED_IDEOGRAPH-3101C> 2
+<CJK_UNIFIED_IDEOGRAPH-3101D> 2
+<CJK_UNIFIED_IDEOGRAPH-3101E> 2
+<CJK_UNIFIED_IDEOGRAPH-3101F> 2
+<CJK_UNIFIED_IDEOGRAPH-31020> 2
+<CJK_UNIFIED_IDEOGRAPH-31021> 2
+<CJK_UNIFIED_IDEOGRAPH-31022> 2
+<CJK_UNIFIED_IDEOGRAPH-31023> 2
+<CJK_UNIFIED_IDEOGRAPH-31024> 2
+<CJK_UNIFIED_IDEOGRAPH-31025> 2
+<CJK_UNIFIED_IDEOGRAPH-31026> 2
+<CJK_UNIFIED_IDEOGRAPH-31027> 2
+<CJK_UNIFIED_IDEOGRAPH-31028> 2
+<CJK_UNIFIED_IDEOGRAPH-31029> 2
+<CJK_UNIFIED_IDEOGRAPH-3102A> 2
+<CJK_UNIFIED_IDEOGRAPH-3102B> 2
+<CJK_UNIFIED_IDEOGRAPH-3102C> 2
+<CJK_UNIFIED_IDEOGRAPH-3102D> 2
+<CJK_UNIFIED_IDEOGRAPH-3102E> 2
+<CJK_UNIFIED_IDEOGRAPH-3102F> 2
+<CJK_UNIFIED_IDEOGRAPH-31030> 2
+<CJK_UNIFIED_IDEOGRAPH-31031> 2
+<CJK_UNIFIED_IDEOGRAPH-31032> 2
+<CJK_UNIFIED_IDEOGRAPH-31033> 2
+<CJK_UNIFIED_IDEOGRAPH-31034> 2
+<CJK_UNIFIED_IDEOGRAPH-31035> 2
+<CJK_UNIFIED_IDEOGRAPH-31036> 2
+<CJK_UNIFIED_IDEOGRAPH-31037> 2
+<CJK_UNIFIED_IDEOGRAPH-31038> 2
+<CJK_UNIFIED_IDEOGRAPH-31039> 2
+<CJK_UNIFIED_IDEOGRAPH-3103A> 2
+<CJK_UNIFIED_IDEOGRAPH-3103B> 2
+<CJK_UNIFIED_IDEOGRAPH-3103C> 2
+<CJK_UNIFIED_IDEOGRAPH-3103D> 2
+<CJK_UNIFIED_IDEOGRAPH-3103E> 2
+<CJK_UNIFIED_IDEOGRAPH-3103F> 2
+<CJK_UNIFIED_IDEOGRAPH-31040> 2
+<CJK_UNIFIED_IDEOGRAPH-31041> 2
+<CJK_UNIFIED_IDEOGRAPH-31042> 2
+<CJK_UNIFIED_IDEOGRAPH-31043> 2
+<CJK_UNIFIED_IDEOGRAPH-31044> 2
+<CJK_UNIFIED_IDEOGRAPH-31045> 2
+<CJK_UNIFIED_IDEOGRAPH-31046> 2
+<CJK_UNIFIED_IDEOGRAPH-31047> 2
+<CJK_UNIFIED_IDEOGRAPH-31048> 2
+<CJK_UNIFIED_IDEOGRAPH-31049> 2
+<CJK_UNIFIED_IDEOGRAPH-3104A> 2
+<CJK_UNIFIED_IDEOGRAPH-3104B> 2
+<CJK_UNIFIED_IDEOGRAPH-3104C> 2
+<CJK_UNIFIED_IDEOGRAPH-3104D> 2
+<CJK_UNIFIED_IDEOGRAPH-3104E> 2
+<CJK_UNIFIED_IDEOGRAPH-3104F> 2
+<CJK_UNIFIED_IDEOGRAPH-31050> 2
+<CJK_UNIFIED_IDEOGRAPH-31051> 2
+<CJK_UNIFIED_IDEOGRAPH-31052> 2
+<CJK_UNIFIED_IDEOGRAPH-31053> 2
+<CJK_UNIFIED_IDEOGRAPH-31054> 2
+<CJK_UNIFIED_IDEOGRAPH-31055> 2
+<CJK_UNIFIED_IDEOGRAPH-31056> 2
+<CJK_UNIFIED_IDEOGRAPH-31057> 2
+<CJK_UNIFIED_IDEOGRAPH-31058> 2
+<CJK_UNIFIED_IDEOGRAPH-31059> 2
+<CJK_UNIFIED_IDEOGRAPH-3105A> 2
+<CJK_UNIFIED_IDEOGRAPH-3105B> 2
+<CJK_UNIFIED_IDEOGRAPH-3105C> 2
+<CJK_UNIFIED_IDEOGRAPH-3105D> 2
+<CJK_UNIFIED_IDEOGRAPH-3105E> 2
+<CJK_UNIFIED_IDEOGRAPH-3105F> 2
+<CJK_UNIFIED_IDEOGRAPH-31060> 2
+<CJK_UNIFIED_IDEOGRAPH-31061> 2
+<CJK_UNIFIED_IDEOGRAPH-31062> 2
+<CJK_UNIFIED_IDEOGRAPH-31063> 2
+<CJK_UNIFIED_IDEOGRAPH-31064> 2
+<CJK_UNIFIED_IDEOGRAPH-31065> 2
+<CJK_UNIFIED_IDEOGRAPH-31066> 2
+<CJK_UNIFIED_IDEOGRAPH-31067> 2
+<CJK_UNIFIED_IDEOGRAPH-31068> 2
+<CJK_UNIFIED_IDEOGRAPH-31069> 2
+<CJK_UNIFIED_IDEOGRAPH-3106A> 2
+<CJK_UNIFIED_IDEOGRAPH-3106B> 2
+<CJK_UNIFIED_IDEOGRAPH-3106C> 2
+<CJK_UNIFIED_IDEOGRAPH-3106D> 2
+<CJK_UNIFIED_IDEOGRAPH-3106E> 2
+<CJK_UNIFIED_IDEOGRAPH-3106F> 2
+<CJK_UNIFIED_IDEOGRAPH-31070> 2
+<CJK_UNIFIED_IDEOGRAPH-31071> 2
+<CJK_UNIFIED_IDEOGRAPH-31072> 2
+<CJK_UNIFIED_IDEOGRAPH-31073> 2
+<CJK_UNIFIED_IDEOGRAPH-31074> 2
+<CJK_UNIFIED_IDEOGRAPH-31075> 2
+<CJK_UNIFIED_IDEOGRAPH-31076> 2
+<CJK_UNIFIED_IDEOGRAPH-31077> 2
+<CJK_UNIFIED_IDEOGRAPH-31078> 2
+<CJK_UNIFIED_IDEOGRAPH-31079> 2
+<CJK_UNIFIED_IDEOGRAPH-3107A> 2
+<CJK_UNIFIED_IDEOGRAPH-3107B> 2
+<CJK_UNIFIED_IDEOGRAPH-3107C> 2
+<CJK_UNIFIED_IDEOGRAPH-3107D> 2
+<CJK_UNIFIED_IDEOGRAPH-3107E> 2
+<CJK_UNIFIED_IDEOGRAPH-3107F> 2
+<CJK_UNIFIED_IDEOGRAPH-31080> 2
+<CJK_UNIFIED_IDEOGRAPH-31081> 2
+<CJK_UNIFIED_IDEOGRAPH-31082> 2
+<CJK_UNIFIED_IDEOGRAPH-31083> 2
+<CJK_UNIFIED_IDEOGRAPH-31084> 2
+<CJK_UNIFIED_IDEOGRAPH-31085> 2
+<CJK_UNIFIED_IDEOGRAPH-31086> 2
+<CJK_UNIFIED_IDEOGRAPH-31087> 2
+<CJK_UNIFIED_IDEOGRAPH-31088> 2
+<CJK_UNIFIED_IDEOGRAPH-31089> 2
+<CJK_UNIFIED_IDEOGRAPH-3108A> 2
+<CJK_UNIFIED_IDEOGRAPH-3108B> 2
+<CJK_UNIFIED_IDEOGRAPH-3108C> 2
+<CJK_UNIFIED_IDEOGRAPH-3108D> 2
+<CJK_UNIFIED_IDEOGRAPH-3108E> 2
+<CJK_UNIFIED_IDEOGRAPH-3108F> 2
+<CJK_UNIFIED_IDEOGRAPH-31090> 2
+<CJK_UNIFIED_IDEOGRAPH-31091> 2
+<CJK_UNIFIED_IDEOGRAPH-31092> 2
+<CJK_UNIFIED_IDEOGRAPH-31093> 2
+<CJK_UNIFIED_IDEOGRAPH-31094> 2
+<CJK_UNIFIED_IDEOGRAPH-31095> 2
+<CJK_UNIFIED_IDEOGRAPH-31096> 2
+<CJK_UNIFIED_IDEOGRAPH-31097> 2
+<CJK_UNIFIED_IDEOGRAPH-31098> 2
+<CJK_UNIFIED_IDEOGRAPH-31099> 2
+<CJK_UNIFIED_IDEOGRAPH-3109A> 2
+<CJK_UNIFIED_IDEOGRAPH-3109B> 2
+<CJK_UNIFIED_IDEOGRAPH-3109C> 2
+<CJK_UNIFIED_IDEOGRAPH-3109D> 2
+<CJK_UNIFIED_IDEOGRAPH-3109E> 2
+<CJK_UNIFIED_IDEOGRAPH-3109F> 2
+<CJK_UNIFIED_IDEOGRAPH-310A0> 2
+<CJK_UNIFIED_IDEOGRAPH-310A1> 2
+<CJK_UNIFIED_IDEOGRAPH-310A2> 2
+<CJK_UNIFIED_IDEOGRAPH-310A3> 2
+<CJK_UNIFIED_IDEOGRAPH-310A4> 2
+<CJK_UNIFIED_IDEOGRAPH-310A5> 2
+<CJK_UNIFIED_IDEOGRAPH-310A6> 2
+<CJK_UNIFIED_IDEOGRAPH-310A7> 2
+<CJK_UNIFIED_IDEOGRAPH-310A8> 2
+<CJK_UNIFIED_IDEOGRAPH-310A9> 2
+<CJK_UNIFIED_IDEOGRAPH-310AA> 2
+<CJK_UNIFIED_IDEOGRAPH-310AB> 2
+<CJK_UNIFIED_IDEOGRAPH-310AC> 2
+<CJK_UNIFIED_IDEOGRAPH-310AD> 2
+<CJK_UNIFIED_IDEOGRAPH-310AE> 2
+<CJK_UNIFIED_IDEOGRAPH-310AF> 2
+<CJK_UNIFIED_IDEOGRAPH-310B0> 2
+<CJK_UNIFIED_IDEOGRAPH-310B1> 2
+<CJK_UNIFIED_IDEOGRAPH-310B2> 2
+<CJK_UNIFIED_IDEOGRAPH-310B3> 2
+<CJK_UNIFIED_IDEOGRAPH-310B4> 2
+<CJK_UNIFIED_IDEOGRAPH-310B5> 2
+<CJK_UNIFIED_IDEOGRAPH-310B6> 2
+<CJK_UNIFIED_IDEOGRAPH-310B7> 2
+<CJK_UNIFIED_IDEOGRAPH-310B8> 2
+<CJK_UNIFIED_IDEOGRAPH-310B9> 2
+<CJK_UNIFIED_IDEOGRAPH-310BA> 2
+<CJK_UNIFIED_IDEOGRAPH-310BB> 2
+<CJK_UNIFIED_IDEOGRAPH-310BC> 2
+<CJK_UNIFIED_IDEOGRAPH-310BD> 2
+<CJK_UNIFIED_IDEOGRAPH-310BE> 2
+<CJK_UNIFIED_IDEOGRAPH-310BF> 2
+<CJK_UNIFIED_IDEOGRAPH-310C0> 2
+<CJK_UNIFIED_IDEOGRAPH-310C1> 2
+<CJK_UNIFIED_IDEOGRAPH-310C2> 2
+<CJK_UNIFIED_IDEOGRAPH-310C3> 2
+<CJK_UNIFIED_IDEOGRAPH-310C4> 2
+<CJK_UNIFIED_IDEOGRAPH-310C5> 2
+<CJK_UNIFIED_IDEOGRAPH-310C6> 2
+<CJK_UNIFIED_IDEOGRAPH-310C7> 2
+<CJK_UNIFIED_IDEOGRAPH-310C8> 2
+<CJK_UNIFIED_IDEOGRAPH-310C9> 2
+<CJK_UNIFIED_IDEOGRAPH-310CA> 2
+<CJK_UNIFIED_IDEOGRAPH-310CB> 2
+<CJK_UNIFIED_IDEOGRAPH-310CC> 2
+<CJK_UNIFIED_IDEOGRAPH-310CD> 2
+<CJK_UNIFIED_IDEOGRAPH-310CE> 2
+<CJK_UNIFIED_IDEOGRAPH-310CF> 2
+<CJK_UNIFIED_IDEOGRAPH-310D0> 2
+<CJK_UNIFIED_IDEOGRAPH-310D1> 2
+<CJK_UNIFIED_IDEOGRAPH-310D2> 2
+<CJK_UNIFIED_IDEOGRAPH-310D3> 2
+<CJK_UNIFIED_IDEOGRAPH-310D4> 2
+<CJK_UNIFIED_IDEOGRAPH-310D5> 2
+<CJK_UNIFIED_IDEOGRAPH-310D6> 2
+<CJK_UNIFIED_IDEOGRAPH-310D7> 2
+<CJK_UNIFIED_IDEOGRAPH-310D8> 2
+<CJK_UNIFIED_IDEOGRAPH-310D9> 2
+<CJK_UNIFIED_IDEOGRAPH-310DA> 2
+<CJK_UNIFIED_IDEOGRAPH-310DB> 2
+<CJK_UNIFIED_IDEOGRAPH-310DC> 2
+<CJK_UNIFIED_IDEOGRAPH-310DD> 2
+<CJK_UNIFIED_IDEOGRAPH-310DE> 2
+<CJK_UNIFIED_IDEOGRAPH-310DF> 2
+<CJK_UNIFIED_IDEOGRAPH-310E0> 2
+<CJK_UNIFIED_IDEOGRAPH-310E1> 2
+<CJK_UNIFIED_IDEOGRAPH-310E2> 2
+<CJK_UNIFIED_IDEOGRAPH-310E3> 2
+<CJK_UNIFIED_IDEOGRAPH-310E4> 2
+<CJK_UNIFIED_IDEOGRAPH-310E5> 2
+<CJK_UNIFIED_IDEOGRAPH-310E6> 2
+<CJK_UNIFIED_IDEOGRAPH-310E7> 2
+<CJK_UNIFIED_IDEOGRAPH-310E8> 2
+<CJK_UNIFIED_IDEOGRAPH-310E9> 2
+<CJK_UNIFIED_IDEOGRAPH-310EA> 2
+<CJK_UNIFIED_IDEOGRAPH-310EB> 2
+<CJK_UNIFIED_IDEOGRAPH-310EC> 2
+<CJK_UNIFIED_IDEOGRAPH-310ED> 2
+<CJK_UNIFIED_IDEOGRAPH-310EE> 2
+<CJK_UNIFIED_IDEOGRAPH-310EF> 2
+<CJK_UNIFIED_IDEOGRAPH-310F0> 2
+<CJK_UNIFIED_IDEOGRAPH-310F1> 2
+<CJK_UNIFIED_IDEOGRAPH-310F2> 2
+<CJK_UNIFIED_IDEOGRAPH-310F3> 2
+<CJK_UNIFIED_IDEOGRAPH-310F4> 2
+<CJK_UNIFIED_IDEOGRAPH-310F5> 2
+<CJK_UNIFIED_IDEOGRAPH-310F6> 2
+<CJK_UNIFIED_IDEOGRAPH-310F7> 2
+<CJK_UNIFIED_IDEOGRAPH-310F8> 2
+<CJK_UNIFIED_IDEOGRAPH-310F9> 2
+<CJK_UNIFIED_IDEOGRAPH-310FA> 2
+<CJK_UNIFIED_IDEOGRAPH-310FB> 2
+<CJK_UNIFIED_IDEOGRAPH-310FC> 2
+<CJK_UNIFIED_IDEOGRAPH-310FD> 2
+<CJK_UNIFIED_IDEOGRAPH-310FE> 2
+<CJK_UNIFIED_IDEOGRAPH-310FF> 2
+<CJK_UNIFIED_IDEOGRAPH-31100> 2
+<CJK_UNIFIED_IDEOGRAPH-31101> 2
+<CJK_UNIFIED_IDEOGRAPH-31102> 2
+<CJK_UNIFIED_IDEOGRAPH-31103> 2
+<CJK_UNIFIED_IDEOGRAPH-31104> 2
+<CJK_UNIFIED_IDEOGRAPH-31105> 2
+<CJK_UNIFIED_IDEOGRAPH-31106> 2
+<CJK_UNIFIED_IDEOGRAPH-31107> 2
+<CJK_UNIFIED_IDEOGRAPH-31108> 2
+<CJK_UNIFIED_IDEOGRAPH-31109> 2
+<CJK_UNIFIED_IDEOGRAPH-3110A> 2
+<CJK_UNIFIED_IDEOGRAPH-3110B> 2
+<CJK_UNIFIED_IDEOGRAPH-3110C> 2
+<CJK_UNIFIED_IDEOGRAPH-3110D> 2
+<CJK_UNIFIED_IDEOGRAPH-3110E> 2
+<CJK_UNIFIED_IDEOGRAPH-3110F> 2
+<CJK_UNIFIED_IDEOGRAPH-31110> 2
+<CJK_UNIFIED_IDEOGRAPH-31111> 2
+<CJK_UNIFIED_IDEOGRAPH-31112> 2
+<CJK_UNIFIED_IDEOGRAPH-31113> 2
+<CJK_UNIFIED_IDEOGRAPH-31114> 2
+<CJK_UNIFIED_IDEOGRAPH-31115> 2
+<CJK_UNIFIED_IDEOGRAPH-31116> 2
+<CJK_UNIFIED_IDEOGRAPH-31117> 2
+<CJK_UNIFIED_IDEOGRAPH-31118> 2
+<CJK_UNIFIED_IDEOGRAPH-31119> 2
+<CJK_UNIFIED_IDEOGRAPH-3111A> 2
+<CJK_UNIFIED_IDEOGRAPH-3111B> 2
+<CJK_UNIFIED_IDEOGRAPH-3111C> 2
+<CJK_UNIFIED_IDEOGRAPH-3111D> 2
+<CJK_UNIFIED_IDEOGRAPH-3111E> 2
+<CJK_UNIFIED_IDEOGRAPH-3111F> 2
+<CJK_UNIFIED_IDEOGRAPH-31120> 2
+<CJK_UNIFIED_IDEOGRAPH-31121> 2
+<CJK_UNIFIED_IDEOGRAPH-31122> 2
+<CJK_UNIFIED_IDEOGRAPH-31123> 2
+<CJK_UNIFIED_IDEOGRAPH-31124> 2
+<CJK_UNIFIED_IDEOGRAPH-31125> 2
+<CJK_UNIFIED_IDEOGRAPH-31126> 2
+<CJK_UNIFIED_IDEOGRAPH-31127> 2
+<CJK_UNIFIED_IDEOGRAPH-31128> 2
+<CJK_UNIFIED_IDEOGRAPH-31129> 2
+<CJK_UNIFIED_IDEOGRAPH-3112A> 2
+<CJK_UNIFIED_IDEOGRAPH-3112B> 2
+<CJK_UNIFIED_IDEOGRAPH-3112C> 2
+<CJK_UNIFIED_IDEOGRAPH-3112D> 2
+<CJK_UNIFIED_IDEOGRAPH-3112E> 2
+<CJK_UNIFIED_IDEOGRAPH-3112F> 2
+<CJK_UNIFIED_IDEOGRAPH-31130> 2
+<CJK_UNIFIED_IDEOGRAPH-31131> 2
+<CJK_UNIFIED_IDEOGRAPH-31132> 2
+<CJK_UNIFIED_IDEOGRAPH-31133> 2
+<CJK_UNIFIED_IDEOGRAPH-31134> 2
+<CJK_UNIFIED_IDEOGRAPH-31135> 2
+<CJK_UNIFIED_IDEOGRAPH-31136> 2
+<CJK_UNIFIED_IDEOGRAPH-31137> 2
+<CJK_UNIFIED_IDEOGRAPH-31138> 2
+<CJK_UNIFIED_IDEOGRAPH-31139> 2
+<CJK_UNIFIED_IDEOGRAPH-3113A> 2
+<CJK_UNIFIED_IDEOGRAPH-3113B> 2
+<CJK_UNIFIED_IDEOGRAPH-3113C> 2
+<CJK_UNIFIED_IDEOGRAPH-3113D> 2
+<CJK_UNIFIED_IDEOGRAPH-3113E> 2
+<CJK_UNIFIED_IDEOGRAPH-3113F> 2
+<CJK_UNIFIED_IDEOGRAPH-31140> 2
+<CJK_UNIFIED_IDEOGRAPH-31141> 2
+<CJK_UNIFIED_IDEOGRAPH-31142> 2
+<CJK_UNIFIED_IDEOGRAPH-31143> 2
+<CJK_UNIFIED_IDEOGRAPH-31144> 2
+<CJK_UNIFIED_IDEOGRAPH-31145> 2
+<CJK_UNIFIED_IDEOGRAPH-31146> 2
+<CJK_UNIFIED_IDEOGRAPH-31147> 2
+<CJK_UNIFIED_IDEOGRAPH-31148> 2
+<CJK_UNIFIED_IDEOGRAPH-31149> 2
+<CJK_UNIFIED_IDEOGRAPH-3114A> 2
+<CJK_UNIFIED_IDEOGRAPH-3114B> 2
+<CJK_UNIFIED_IDEOGRAPH-3114C> 2
+<CJK_UNIFIED_IDEOGRAPH-3114D> 2
+<CJK_UNIFIED_IDEOGRAPH-3114E> 2
+<CJK_UNIFIED_IDEOGRAPH-3114F> 2
+<CJK_UNIFIED_IDEOGRAPH-31150> 2
+<CJK_UNIFIED_IDEOGRAPH-31151> 2
+<CJK_UNIFIED_IDEOGRAPH-31152> 2
+<CJK_UNIFIED_IDEOGRAPH-31153> 2
+<CJK_UNIFIED_IDEOGRAPH-31154> 2
+<CJK_UNIFIED_IDEOGRAPH-31155> 2
+<CJK_UNIFIED_IDEOGRAPH-31156> 2
+<CJK_UNIFIED_IDEOGRAPH-31157> 2
+<CJK_UNIFIED_IDEOGRAPH-31158> 2
+<CJK_UNIFIED_IDEOGRAPH-31159> 2
+<CJK_UNIFIED_IDEOGRAPH-3115A> 2
+<CJK_UNIFIED_IDEOGRAPH-3115B> 2
+<CJK_UNIFIED_IDEOGRAPH-3115C> 2
+<CJK_UNIFIED_IDEOGRAPH-3115D> 2
+<CJK_UNIFIED_IDEOGRAPH-3115E> 2
+<CJK_UNIFIED_IDEOGRAPH-3115F> 2
+<CJK_UNIFIED_IDEOGRAPH-31160> 2
+<CJK_UNIFIED_IDEOGRAPH-31161> 2
+<CJK_UNIFIED_IDEOGRAPH-31162> 2
+<CJK_UNIFIED_IDEOGRAPH-31163> 2
+<CJK_UNIFIED_IDEOGRAPH-31164> 2
+<CJK_UNIFIED_IDEOGRAPH-31165> 2
+<CJK_UNIFIED_IDEOGRAPH-31166> 2
+<CJK_UNIFIED_IDEOGRAPH-31167> 2
+<CJK_UNIFIED_IDEOGRAPH-31168> 2
+<CJK_UNIFIED_IDEOGRAPH-31169> 2
+<CJK_UNIFIED_IDEOGRAPH-3116A> 2
+<CJK_UNIFIED_IDEOGRAPH-3116B> 2
+<CJK_UNIFIED_IDEOGRAPH-3116C> 2
+<CJK_UNIFIED_IDEOGRAPH-3116D> 2
+<CJK_UNIFIED_IDEOGRAPH-3116E> 2
+<CJK_UNIFIED_IDEOGRAPH-3116F> 2
+<CJK_UNIFIED_IDEOGRAPH-31170> 2
+<CJK_UNIFIED_IDEOGRAPH-31171> 2
+<CJK_UNIFIED_IDEOGRAPH-31172> 2
+<CJK_UNIFIED_IDEOGRAPH-31173> 2
+<CJK_UNIFIED_IDEOGRAPH-31174> 2
+<CJK_UNIFIED_IDEOGRAPH-31175> 2
+<CJK_UNIFIED_IDEOGRAPH-31176> 2
+<CJK_UNIFIED_IDEOGRAPH-31177> 2
+<CJK_UNIFIED_IDEOGRAPH-31178> 2
+<CJK_UNIFIED_IDEOGRAPH-31179> 2
+<CJK_UNIFIED_IDEOGRAPH-3117A> 2
+<CJK_UNIFIED_IDEOGRAPH-3117B> 2
+<CJK_UNIFIED_IDEOGRAPH-3117C> 2
+<CJK_UNIFIED_IDEOGRAPH-3117D> 2
+<CJK_UNIFIED_IDEOGRAPH-3117E> 2
+<CJK_UNIFIED_IDEOGRAPH-3117F> 2
+<CJK_UNIFIED_IDEOGRAPH-31180> 2
+<CJK_UNIFIED_IDEOGRAPH-31181> 2
+<CJK_UNIFIED_IDEOGRAPH-31182> 2
+<CJK_UNIFIED_IDEOGRAPH-31183> 2
+<CJK_UNIFIED_IDEOGRAPH-31184> 2
+<CJK_UNIFIED_IDEOGRAPH-31185> 2
+<CJK_UNIFIED_IDEOGRAPH-31186> 2
+<CJK_UNIFIED_IDEOGRAPH-31187> 2
+<CJK_UNIFIED_IDEOGRAPH-31188> 2
+<CJK_UNIFIED_IDEOGRAPH-31189> 2
+<CJK_UNIFIED_IDEOGRAPH-3118A> 2
+<CJK_UNIFIED_IDEOGRAPH-3118B> 2
+<CJK_UNIFIED_IDEOGRAPH-3118C> 2
+<CJK_UNIFIED_IDEOGRAPH-3118D> 2
+<CJK_UNIFIED_IDEOGRAPH-3118E> 2
+<CJK_UNIFIED_IDEOGRAPH-3118F> 2
+<CJK_UNIFIED_IDEOGRAPH-31190> 2
+<CJK_UNIFIED_IDEOGRAPH-31191> 2
+<CJK_UNIFIED_IDEOGRAPH-31192> 2
+<CJK_UNIFIED_IDEOGRAPH-31193> 2
+<CJK_UNIFIED_IDEOGRAPH-31194> 2
+<CJK_UNIFIED_IDEOGRAPH-31195> 2
+<CJK_UNIFIED_IDEOGRAPH-31196> 2
+<CJK_UNIFIED_IDEOGRAPH-31197> 2
+<CJK_UNIFIED_IDEOGRAPH-31198> 2
+<CJK_UNIFIED_IDEOGRAPH-31199> 2
+<CJK_UNIFIED_IDEOGRAPH-3119A> 2
+<CJK_UNIFIED_IDEOGRAPH-3119B> 2
+<CJK_UNIFIED_IDEOGRAPH-3119C> 2
+<CJK_UNIFIED_IDEOGRAPH-3119D> 2
+<CJK_UNIFIED_IDEOGRAPH-3119E> 2
+<CJK_UNIFIED_IDEOGRAPH-3119F> 2
+<CJK_UNIFIED_IDEOGRAPH-311A0> 2
+<CJK_UNIFIED_IDEOGRAPH-311A1> 2
+<CJK_UNIFIED_IDEOGRAPH-311A2> 2
+<CJK_UNIFIED_IDEOGRAPH-311A3> 2
+<CJK_UNIFIED_IDEOGRAPH-311A4> 2
+<CJK_UNIFIED_IDEOGRAPH-311A5> 2
+<CJK_UNIFIED_IDEOGRAPH-311A6> 2
+<CJK_UNIFIED_IDEOGRAPH-311A7> 2
+<CJK_UNIFIED_IDEOGRAPH-311A8> 2
+<CJK_UNIFIED_IDEOGRAPH-311A9> 2
+<CJK_UNIFIED_IDEOGRAPH-311AA> 2
+<CJK_UNIFIED_IDEOGRAPH-311AB> 2
+<CJK_UNIFIED_IDEOGRAPH-311AC> 2
+<CJK_UNIFIED_IDEOGRAPH-311AD> 2
+<CJK_UNIFIED_IDEOGRAPH-311AE> 2
+<CJK_UNIFIED_IDEOGRAPH-311AF> 2
+<CJK_UNIFIED_IDEOGRAPH-311B0> 2
+<CJK_UNIFIED_IDEOGRAPH-311B1> 2
+<CJK_UNIFIED_IDEOGRAPH-311B2> 2
+<CJK_UNIFIED_IDEOGRAPH-311B3> 2
+<CJK_UNIFIED_IDEOGRAPH-311B4> 2
+<CJK_UNIFIED_IDEOGRAPH-311B5> 2
+<CJK_UNIFIED_IDEOGRAPH-311B6> 2
+<CJK_UNIFIED_IDEOGRAPH-311B7> 2
+<CJK_UNIFIED_IDEOGRAPH-311B8> 2
+<CJK_UNIFIED_IDEOGRAPH-311B9> 2
+<CJK_UNIFIED_IDEOGRAPH-311BA> 2
+<CJK_UNIFIED_IDEOGRAPH-311BB> 2
+<CJK_UNIFIED_IDEOGRAPH-311BC> 2
+<CJK_UNIFIED_IDEOGRAPH-311BD> 2
+<CJK_UNIFIED_IDEOGRAPH-311BE> 2
+<CJK_UNIFIED_IDEOGRAPH-311BF> 2
+<CJK_UNIFIED_IDEOGRAPH-311C0> 2
+<CJK_UNIFIED_IDEOGRAPH-311C1> 2
+<CJK_UNIFIED_IDEOGRAPH-311C2> 2
+<CJK_UNIFIED_IDEOGRAPH-311C3> 2
+<CJK_UNIFIED_IDEOGRAPH-311C4> 2
+<CJK_UNIFIED_IDEOGRAPH-311C5> 2
+<CJK_UNIFIED_IDEOGRAPH-311C6> 2
+<CJK_UNIFIED_IDEOGRAPH-311C7> 2
+<CJK_UNIFIED_IDEOGRAPH-311C8> 2
+<CJK_UNIFIED_IDEOGRAPH-311C9> 2
+<CJK_UNIFIED_IDEOGRAPH-311CA> 2
+<CJK_UNIFIED_IDEOGRAPH-311CB> 2
+<CJK_UNIFIED_IDEOGRAPH-311CC> 2
+<CJK_UNIFIED_IDEOGRAPH-311CD> 2
+<CJK_UNIFIED_IDEOGRAPH-311CE> 2
+<CJK_UNIFIED_IDEOGRAPH-311CF> 2
+<CJK_UNIFIED_IDEOGRAPH-311D0> 2
+<CJK_UNIFIED_IDEOGRAPH-311D1> 2
+<CJK_UNIFIED_IDEOGRAPH-311D2> 2
+<CJK_UNIFIED_IDEOGRAPH-311D3> 2
+<CJK_UNIFIED_IDEOGRAPH-311D4> 2
+<CJK_UNIFIED_IDEOGRAPH-311D5> 2
+<CJK_UNIFIED_IDEOGRAPH-311D6> 2
+<CJK_UNIFIED_IDEOGRAPH-311D7> 2
+<CJK_UNIFIED_IDEOGRAPH-311D8> 2
+<CJK_UNIFIED_IDEOGRAPH-311D9> 2
+<CJK_UNIFIED_IDEOGRAPH-311DA> 2
+<CJK_UNIFIED_IDEOGRAPH-311DB> 2
+<CJK_UNIFIED_IDEOGRAPH-311DC> 2
+<CJK_UNIFIED_IDEOGRAPH-311DD> 2
+<CJK_UNIFIED_IDEOGRAPH-311DE> 2
+<CJK_UNIFIED_IDEOGRAPH-311DF> 2
+<CJK_UNIFIED_IDEOGRAPH-311E0> 2
+<CJK_UNIFIED_IDEOGRAPH-311E1> 2
+<CJK_UNIFIED_IDEOGRAPH-311E2> 2
+<CJK_UNIFIED_IDEOGRAPH-311E3> 2
+<CJK_UNIFIED_IDEOGRAPH-311E4> 2
+<CJK_UNIFIED_IDEOGRAPH-311E5> 2
+<CJK_UNIFIED_IDEOGRAPH-311E6> 2
+<CJK_UNIFIED_IDEOGRAPH-311E7> 2
+<CJK_UNIFIED_IDEOGRAPH-311E8> 2
+<CJK_UNIFIED_IDEOGRAPH-311E9> 2
+<CJK_UNIFIED_IDEOGRAPH-311EA> 2
+<CJK_UNIFIED_IDEOGRAPH-311EB> 2
+<CJK_UNIFIED_IDEOGRAPH-311EC> 2
+<CJK_UNIFIED_IDEOGRAPH-311ED> 2
+<CJK_UNIFIED_IDEOGRAPH-311EE> 2
+<CJK_UNIFIED_IDEOGRAPH-311EF> 2
+<CJK_UNIFIED_IDEOGRAPH-311F0> 2
+<CJK_UNIFIED_IDEOGRAPH-311F1> 2
+<CJK_UNIFIED_IDEOGRAPH-311F2> 2
+<CJK_UNIFIED_IDEOGRAPH-311F3> 2
+<CJK_UNIFIED_IDEOGRAPH-311F4> 2
+<CJK_UNIFIED_IDEOGRAPH-311F5> 2
+<CJK_UNIFIED_IDEOGRAPH-311F6> 2
+<CJK_UNIFIED_IDEOGRAPH-311F7> 2
+<CJK_UNIFIED_IDEOGRAPH-311F8> 2
+<CJK_UNIFIED_IDEOGRAPH-311F9> 2
+<CJK_UNIFIED_IDEOGRAPH-311FA> 2
+<CJK_UNIFIED_IDEOGRAPH-311FB> 2
+<CJK_UNIFIED_IDEOGRAPH-311FC> 2
+<CJK_UNIFIED_IDEOGRAPH-311FD> 2
+<CJK_UNIFIED_IDEOGRAPH-311FE> 2
+<CJK_UNIFIED_IDEOGRAPH-311FF> 2
+<CJK_UNIFIED_IDEOGRAPH-31200> 2
+<CJK_UNIFIED_IDEOGRAPH-31201> 2
+<CJK_UNIFIED_IDEOGRAPH-31202> 2
+<CJK_UNIFIED_IDEOGRAPH-31203> 2
+<CJK_UNIFIED_IDEOGRAPH-31204> 2
+<CJK_UNIFIED_IDEOGRAPH-31205> 2
+<CJK_UNIFIED_IDEOGRAPH-31206> 2
+<CJK_UNIFIED_IDEOGRAPH-31207> 2
+<CJK_UNIFIED_IDEOGRAPH-31208> 2
+<CJK_UNIFIED_IDEOGRAPH-31209> 2
+<CJK_UNIFIED_IDEOGRAPH-3120A> 2
+<CJK_UNIFIED_IDEOGRAPH-3120B> 2
+<CJK_UNIFIED_IDEOGRAPH-3120C> 2
+<CJK_UNIFIED_IDEOGRAPH-3120D> 2
+<CJK_UNIFIED_IDEOGRAPH-3120E> 2
+<CJK_UNIFIED_IDEOGRAPH-3120F> 2
+<CJK_UNIFIED_IDEOGRAPH-31210> 2
+<CJK_UNIFIED_IDEOGRAPH-31211> 2
+<CJK_UNIFIED_IDEOGRAPH-31212> 2
+<CJK_UNIFIED_IDEOGRAPH-31213> 2
+<CJK_UNIFIED_IDEOGRAPH-31214> 2
+<CJK_UNIFIED_IDEOGRAPH-31215> 2
+<CJK_UNIFIED_IDEOGRAPH-31216> 2
+<CJK_UNIFIED_IDEOGRAPH-31217> 2
+<CJK_UNIFIED_IDEOGRAPH-31218> 2
+<CJK_UNIFIED_IDEOGRAPH-31219> 2
+<CJK_UNIFIED_IDEOGRAPH-3121A> 2
+<CJK_UNIFIED_IDEOGRAPH-3121B> 2
+<CJK_UNIFIED_IDEOGRAPH-3121C> 2
+<CJK_UNIFIED_IDEOGRAPH-3121D> 2
+<CJK_UNIFIED_IDEOGRAPH-3121E> 2
+<CJK_UNIFIED_IDEOGRAPH-3121F> 2
+<CJK_UNIFIED_IDEOGRAPH-31220> 2
+<CJK_UNIFIED_IDEOGRAPH-31221> 2
+<CJK_UNIFIED_IDEOGRAPH-31222> 2
+<CJK_UNIFIED_IDEOGRAPH-31223> 2
+<CJK_UNIFIED_IDEOGRAPH-31224> 2
+<CJK_UNIFIED_IDEOGRAPH-31225> 2
+<CJK_UNIFIED_IDEOGRAPH-31226> 2
+<CJK_UNIFIED_IDEOGRAPH-31227> 2
+<CJK_UNIFIED_IDEOGRAPH-31228> 2
+<CJK_UNIFIED_IDEOGRAPH-31229> 2
+<CJK_UNIFIED_IDEOGRAPH-3122A> 2
+<CJK_UNIFIED_IDEOGRAPH-3122B> 2
+<CJK_UNIFIED_IDEOGRAPH-3122C> 2
+<CJK_UNIFIED_IDEOGRAPH-3122D> 2
+<CJK_UNIFIED_IDEOGRAPH-3122E> 2
+<CJK_UNIFIED_IDEOGRAPH-3122F> 2
+<CJK_UNIFIED_IDEOGRAPH-31230> 2
+<CJK_UNIFIED_IDEOGRAPH-31231> 2
+<CJK_UNIFIED_IDEOGRAPH-31232> 2
+<CJK_UNIFIED_IDEOGRAPH-31233> 2
+<CJK_UNIFIED_IDEOGRAPH-31234> 2
+<CJK_UNIFIED_IDEOGRAPH-31235> 2
+<CJK_UNIFIED_IDEOGRAPH-31236> 2
+<CJK_UNIFIED_IDEOGRAPH-31237> 2
+<CJK_UNIFIED_IDEOGRAPH-31238> 2
+<CJK_UNIFIED_IDEOGRAPH-31239> 2
+<CJK_UNIFIED_IDEOGRAPH-3123A> 2
+<CJK_UNIFIED_IDEOGRAPH-3123B> 2
+<CJK_UNIFIED_IDEOGRAPH-3123C> 2
+<CJK_UNIFIED_IDEOGRAPH-3123D> 2
+<CJK_UNIFIED_IDEOGRAPH-3123E> 2
+<CJK_UNIFIED_IDEOGRAPH-3123F> 2
+<CJK_UNIFIED_IDEOGRAPH-31240> 2
+<CJK_UNIFIED_IDEOGRAPH-31241> 2
+<CJK_UNIFIED_IDEOGRAPH-31242> 2
+<CJK_UNIFIED_IDEOGRAPH-31243> 2
+<CJK_UNIFIED_IDEOGRAPH-31244> 2
+<CJK_UNIFIED_IDEOGRAPH-31245> 2
+<CJK_UNIFIED_IDEOGRAPH-31246> 2
+<CJK_UNIFIED_IDEOGRAPH-31247> 2
+<CJK_UNIFIED_IDEOGRAPH-31248> 2
+<CJK_UNIFIED_IDEOGRAPH-31249> 2
+<CJK_UNIFIED_IDEOGRAPH-3124A> 2
+<CJK_UNIFIED_IDEOGRAPH-3124B> 2
+<CJK_UNIFIED_IDEOGRAPH-3124C> 2
+<CJK_UNIFIED_IDEOGRAPH-3124D> 2
+<CJK_UNIFIED_IDEOGRAPH-3124E> 2
+<CJK_UNIFIED_IDEOGRAPH-3124F> 2
+<CJK_UNIFIED_IDEOGRAPH-31250> 2
+<CJK_UNIFIED_IDEOGRAPH-31251> 2
+<CJK_UNIFIED_IDEOGRAPH-31252> 2
+<CJK_UNIFIED_IDEOGRAPH-31253> 2
+<CJK_UNIFIED_IDEOGRAPH-31254> 2
+<CJK_UNIFIED_IDEOGRAPH-31255> 2
+<CJK_UNIFIED_IDEOGRAPH-31256> 2
+<CJK_UNIFIED_IDEOGRAPH-31257> 2
+<CJK_UNIFIED_IDEOGRAPH-31258> 2
+<CJK_UNIFIED_IDEOGRAPH-31259> 2
+<CJK_UNIFIED_IDEOGRAPH-3125A> 2
+<CJK_UNIFIED_IDEOGRAPH-3125B> 2
+<CJK_UNIFIED_IDEOGRAPH-3125C> 2
+<CJK_UNIFIED_IDEOGRAPH-3125D> 2
+<CJK_UNIFIED_IDEOGRAPH-3125E> 2
+<CJK_UNIFIED_IDEOGRAPH-3125F> 2
+<CJK_UNIFIED_IDEOGRAPH-31260> 2
+<CJK_UNIFIED_IDEOGRAPH-31261> 2
+<CJK_UNIFIED_IDEOGRAPH-31262> 2
+<CJK_UNIFIED_IDEOGRAPH-31263> 2
+<CJK_UNIFIED_IDEOGRAPH-31264> 2
+<CJK_UNIFIED_IDEOGRAPH-31265> 2
+<CJK_UNIFIED_IDEOGRAPH-31266> 2
+<CJK_UNIFIED_IDEOGRAPH-31267> 2
+<CJK_UNIFIED_IDEOGRAPH-31268> 2
+<CJK_UNIFIED_IDEOGRAPH-31269> 2
+<CJK_UNIFIED_IDEOGRAPH-3126A> 2
+<CJK_UNIFIED_IDEOGRAPH-3126B> 2
+<CJK_UNIFIED_IDEOGRAPH-3126C> 2
+<CJK_UNIFIED_IDEOGRAPH-3126D> 2
+<CJK_UNIFIED_IDEOGRAPH-3126E> 2
+<CJK_UNIFIED_IDEOGRAPH-3126F> 2
+<CJK_UNIFIED_IDEOGRAPH-31270> 2
+<CJK_UNIFIED_IDEOGRAPH-31271> 2
+<CJK_UNIFIED_IDEOGRAPH-31272> 2
+<CJK_UNIFIED_IDEOGRAPH-31273> 2
+<CJK_UNIFIED_IDEOGRAPH-31274> 2
+<CJK_UNIFIED_IDEOGRAPH-31275> 2
+<CJK_UNIFIED_IDEOGRAPH-31276> 2
+<CJK_UNIFIED_IDEOGRAPH-31277> 2
+<CJK_UNIFIED_IDEOGRAPH-31278> 2
+<CJK_UNIFIED_IDEOGRAPH-31279> 2
+<CJK_UNIFIED_IDEOGRAPH-3127A> 2
+<CJK_UNIFIED_IDEOGRAPH-3127B> 2
+<CJK_UNIFIED_IDEOGRAPH-3127C> 2
+<CJK_UNIFIED_IDEOGRAPH-3127D> 2
+<CJK_UNIFIED_IDEOGRAPH-3127E> 2
+<CJK_UNIFIED_IDEOGRAPH-3127F> 2
+<CJK_UNIFIED_IDEOGRAPH-31280> 2
+<CJK_UNIFIED_IDEOGRAPH-31281> 2
+<CJK_UNIFIED_IDEOGRAPH-31282> 2
+<CJK_UNIFIED_IDEOGRAPH-31283> 2
+<CJK_UNIFIED_IDEOGRAPH-31284> 2
+<CJK_UNIFIED_IDEOGRAPH-31285> 2
+<CJK_UNIFIED_IDEOGRAPH-31286> 2
+<CJK_UNIFIED_IDEOGRAPH-31287> 2
+<CJK_UNIFIED_IDEOGRAPH-31288> 2
+<CJK_UNIFIED_IDEOGRAPH-31289> 2
+<CJK_UNIFIED_IDEOGRAPH-3128A> 2
+<CJK_UNIFIED_IDEOGRAPH-3128B> 2
+<CJK_UNIFIED_IDEOGRAPH-3128C> 2
+<CJK_UNIFIED_IDEOGRAPH-3128D> 2
+<CJK_UNIFIED_IDEOGRAPH-3128E> 2
+<CJK_UNIFIED_IDEOGRAPH-3128F> 2
+<CJK_UNIFIED_IDEOGRAPH-31290> 2
+<CJK_UNIFIED_IDEOGRAPH-31291> 2
+<CJK_UNIFIED_IDEOGRAPH-31292> 2
+<CJK_UNIFIED_IDEOGRAPH-31293> 2
+<CJK_UNIFIED_IDEOGRAPH-31294> 2
+<CJK_UNIFIED_IDEOGRAPH-31295> 2
+<CJK_UNIFIED_IDEOGRAPH-31296> 2
+<CJK_UNIFIED_IDEOGRAPH-31297> 2
+<CJK_UNIFIED_IDEOGRAPH-31298> 2
+<CJK_UNIFIED_IDEOGRAPH-31299> 2
+<CJK_UNIFIED_IDEOGRAPH-3129A> 2
+<CJK_UNIFIED_IDEOGRAPH-3129B> 2
+<CJK_UNIFIED_IDEOGRAPH-3129C> 2
+<CJK_UNIFIED_IDEOGRAPH-3129D> 2
+<CJK_UNIFIED_IDEOGRAPH-3129E> 2
+<CJK_UNIFIED_IDEOGRAPH-3129F> 2
+<CJK_UNIFIED_IDEOGRAPH-312A0> 2
+<CJK_UNIFIED_IDEOGRAPH-312A1> 2
+<CJK_UNIFIED_IDEOGRAPH-312A2> 2
+<CJK_UNIFIED_IDEOGRAPH-312A3> 2
+<CJK_UNIFIED_IDEOGRAPH-312A4> 2
+<CJK_UNIFIED_IDEOGRAPH-312A5> 2
+<CJK_UNIFIED_IDEOGRAPH-312A6> 2
+<CJK_UNIFIED_IDEOGRAPH-312A7> 2
+<CJK_UNIFIED_IDEOGRAPH-312A8> 2
+<CJK_UNIFIED_IDEOGRAPH-312A9> 2
+<CJK_UNIFIED_IDEOGRAPH-312AA> 2
+<CJK_UNIFIED_IDEOGRAPH-312AB> 2
+<CJK_UNIFIED_IDEOGRAPH-312AC> 2
+<CJK_UNIFIED_IDEOGRAPH-312AD> 2
+<CJK_UNIFIED_IDEOGRAPH-312AE> 2
+<CJK_UNIFIED_IDEOGRAPH-312AF> 2
+<CJK_UNIFIED_IDEOGRAPH-312B0> 2
+<CJK_UNIFIED_IDEOGRAPH-312B1> 2
+<CJK_UNIFIED_IDEOGRAPH-312B2> 2
+<CJK_UNIFIED_IDEOGRAPH-312B3> 2
+<CJK_UNIFIED_IDEOGRAPH-312B4> 2
+<CJK_UNIFIED_IDEOGRAPH-312B5> 2
+<CJK_UNIFIED_IDEOGRAPH-312B6> 2
+<CJK_UNIFIED_IDEOGRAPH-312B7> 2
+<CJK_UNIFIED_IDEOGRAPH-312B8> 2
+<CJK_UNIFIED_IDEOGRAPH-312B9> 2
+<CJK_UNIFIED_IDEOGRAPH-312BA> 2
+<CJK_UNIFIED_IDEOGRAPH-312BB> 2
+<CJK_UNIFIED_IDEOGRAPH-312BC> 2
+<CJK_UNIFIED_IDEOGRAPH-312BD> 2
+<CJK_UNIFIED_IDEOGRAPH-312BE> 2
+<CJK_UNIFIED_IDEOGRAPH-312BF> 2
+<CJK_UNIFIED_IDEOGRAPH-312C0> 2
+<CJK_UNIFIED_IDEOGRAPH-312C1> 2
+<CJK_UNIFIED_IDEOGRAPH-312C2> 2
+<CJK_UNIFIED_IDEOGRAPH-312C3> 2
+<CJK_UNIFIED_IDEOGRAPH-312C4> 2
+<CJK_UNIFIED_IDEOGRAPH-312C5> 2
+<CJK_UNIFIED_IDEOGRAPH-312C6> 2
+<CJK_UNIFIED_IDEOGRAPH-312C7> 2
+<CJK_UNIFIED_IDEOGRAPH-312C8> 2
+<CJK_UNIFIED_IDEOGRAPH-312C9> 2
+<CJK_UNIFIED_IDEOGRAPH-312CA> 2
+<CJK_UNIFIED_IDEOGRAPH-312CB> 2
+<CJK_UNIFIED_IDEOGRAPH-312CC> 2
+<CJK_UNIFIED_IDEOGRAPH-312CD> 2
+<CJK_UNIFIED_IDEOGRAPH-312CE> 2
+<CJK_UNIFIED_IDEOGRAPH-312CF> 2
+<CJK_UNIFIED_IDEOGRAPH-312D0> 2
+<CJK_UNIFIED_IDEOGRAPH-312D1> 2
+<CJK_UNIFIED_IDEOGRAPH-312D2> 2
+<CJK_UNIFIED_IDEOGRAPH-312D3> 2
+<CJK_UNIFIED_IDEOGRAPH-312D4> 2
+<CJK_UNIFIED_IDEOGRAPH-312D5> 2
+<CJK_UNIFIED_IDEOGRAPH-312D6> 2
+<CJK_UNIFIED_IDEOGRAPH-312D7> 2
+<CJK_UNIFIED_IDEOGRAPH-312D8> 2
+<CJK_UNIFIED_IDEOGRAPH-312D9> 2
+<CJK_UNIFIED_IDEOGRAPH-312DA> 2
+<CJK_UNIFIED_IDEOGRAPH-312DB> 2
+<CJK_UNIFIED_IDEOGRAPH-312DC> 2
+<CJK_UNIFIED_IDEOGRAPH-312DD> 2
+<CJK_UNIFIED_IDEOGRAPH-312DE> 2
+<CJK_UNIFIED_IDEOGRAPH-312DF> 2
+<CJK_UNIFIED_IDEOGRAPH-312E0> 2
+<CJK_UNIFIED_IDEOGRAPH-312E1> 2
+<CJK_UNIFIED_IDEOGRAPH-312E2> 2
+<CJK_UNIFIED_IDEOGRAPH-312E3> 2
+<CJK_UNIFIED_IDEOGRAPH-312E4> 2
+<CJK_UNIFIED_IDEOGRAPH-312E5> 2
+<CJK_UNIFIED_IDEOGRAPH-312E6> 2
+<CJK_UNIFIED_IDEOGRAPH-312E7> 2
+<CJK_UNIFIED_IDEOGRAPH-312E8> 2
+<CJK_UNIFIED_IDEOGRAPH-312E9> 2
+<CJK_UNIFIED_IDEOGRAPH-312EA> 2
+<CJK_UNIFIED_IDEOGRAPH-312EB> 2
+<CJK_UNIFIED_IDEOGRAPH-312EC> 2
+<CJK_UNIFIED_IDEOGRAPH-312ED> 2
+<CJK_UNIFIED_IDEOGRAPH-312EE> 2
+<CJK_UNIFIED_IDEOGRAPH-312EF> 2
+<CJK_UNIFIED_IDEOGRAPH-312F0> 2
+<CJK_UNIFIED_IDEOGRAPH-312F1> 2
+<CJK_UNIFIED_IDEOGRAPH-312F2> 2
+<CJK_UNIFIED_IDEOGRAPH-312F3> 2
+<CJK_UNIFIED_IDEOGRAPH-312F4> 2
+<CJK_UNIFIED_IDEOGRAPH-312F5> 2
+<CJK_UNIFIED_IDEOGRAPH-312F6> 2
+<CJK_UNIFIED_IDEOGRAPH-312F7> 2
+<CJK_UNIFIED_IDEOGRAPH-312F8> 2
+<CJK_UNIFIED_IDEOGRAPH-312F9> 2
+<CJK_UNIFIED_IDEOGRAPH-312FA> 2
+<CJK_UNIFIED_IDEOGRAPH-312FB> 2
+<CJK_UNIFIED_IDEOGRAPH-312FC> 2
+<CJK_UNIFIED_IDEOGRAPH-312FD> 2
+<CJK_UNIFIED_IDEOGRAPH-312FE> 2
+<CJK_UNIFIED_IDEOGRAPH-312FF> 2
+<CJK_UNIFIED_IDEOGRAPH-31300> 2
+<CJK_UNIFIED_IDEOGRAPH-31301> 2
+<CJK_UNIFIED_IDEOGRAPH-31302> 2
+<CJK_UNIFIED_IDEOGRAPH-31303> 2
+<CJK_UNIFIED_IDEOGRAPH-31304> 2
+<CJK_UNIFIED_IDEOGRAPH-31305> 2
+<CJK_UNIFIED_IDEOGRAPH-31306> 2
+<CJK_UNIFIED_IDEOGRAPH-31307> 2
+<CJK_UNIFIED_IDEOGRAPH-31308> 2
+<CJK_UNIFIED_IDEOGRAPH-31309> 2
+<CJK_UNIFIED_IDEOGRAPH-3130A> 2
+<CJK_UNIFIED_IDEOGRAPH-3130B> 2
+<CJK_UNIFIED_IDEOGRAPH-3130C> 2
+<CJK_UNIFIED_IDEOGRAPH-3130D> 2
+<CJK_UNIFIED_IDEOGRAPH-3130E> 2
+<CJK_UNIFIED_IDEOGRAPH-3130F> 2
+<CJK_UNIFIED_IDEOGRAPH-31310> 2
+<CJK_UNIFIED_IDEOGRAPH-31311> 2
+<CJK_UNIFIED_IDEOGRAPH-31312> 2
+<CJK_UNIFIED_IDEOGRAPH-31313> 2
+<CJK_UNIFIED_IDEOGRAPH-31314> 2
+<CJK_UNIFIED_IDEOGRAPH-31315> 2
+<CJK_UNIFIED_IDEOGRAPH-31316> 2
+<CJK_UNIFIED_IDEOGRAPH-31317> 2
+<CJK_UNIFIED_IDEOGRAPH-31318> 2
+<CJK_UNIFIED_IDEOGRAPH-31319> 2
+<CJK_UNIFIED_IDEOGRAPH-3131A> 2
+<CJK_UNIFIED_IDEOGRAPH-3131B> 2
+<CJK_UNIFIED_IDEOGRAPH-3131C> 2
+<CJK_UNIFIED_IDEOGRAPH-3131D> 2
+<CJK_UNIFIED_IDEOGRAPH-3131E> 2
+<CJK_UNIFIED_IDEOGRAPH-3131F> 2
+<CJK_UNIFIED_IDEOGRAPH-31320> 2
+<CJK_UNIFIED_IDEOGRAPH-31321> 2
+<CJK_UNIFIED_IDEOGRAPH-31322> 2
+<CJK_UNIFIED_IDEOGRAPH-31323> 2
+<CJK_UNIFIED_IDEOGRAPH-31324> 2
+<CJK_UNIFIED_IDEOGRAPH-31325> 2
+<CJK_UNIFIED_IDEOGRAPH-31326> 2
+<CJK_UNIFIED_IDEOGRAPH-31327> 2
+<CJK_UNIFIED_IDEOGRAPH-31328> 2
+<CJK_UNIFIED_IDEOGRAPH-31329> 2
+<CJK_UNIFIED_IDEOGRAPH-3132A> 2
+<CJK_UNIFIED_IDEOGRAPH-3132B> 2
+<CJK_UNIFIED_IDEOGRAPH-3132C> 2
+<CJK_UNIFIED_IDEOGRAPH-3132D> 2
+<CJK_UNIFIED_IDEOGRAPH-3132E> 2
+<CJK_UNIFIED_IDEOGRAPH-3132F> 2
+<CJK_UNIFIED_IDEOGRAPH-31330> 2
+<CJK_UNIFIED_IDEOGRAPH-31331> 2
+<CJK_UNIFIED_IDEOGRAPH-31332> 2
+<CJK_UNIFIED_IDEOGRAPH-31333> 2
+<CJK_UNIFIED_IDEOGRAPH-31334> 2
+<CJK_UNIFIED_IDEOGRAPH-31335> 2
+<CJK_UNIFIED_IDEOGRAPH-31336> 2
+<CJK_UNIFIED_IDEOGRAPH-31337> 2
+<CJK_UNIFIED_IDEOGRAPH-31338> 2
+<CJK_UNIFIED_IDEOGRAPH-31339> 2
+<CJK_UNIFIED_IDEOGRAPH-3133A> 2
+<CJK_UNIFIED_IDEOGRAPH-3133B> 2
+<CJK_UNIFIED_IDEOGRAPH-3133C> 2
+<CJK_UNIFIED_IDEOGRAPH-3133D> 2
+<CJK_UNIFIED_IDEOGRAPH-3133E> 2
+<CJK_UNIFIED_IDEOGRAPH-3133F> 2
+<CJK_UNIFIED_IDEOGRAPH-31340> 2
+<CJK_UNIFIED_IDEOGRAPH-31341> 2
+<CJK_UNIFIED_IDEOGRAPH-31342> 2
+<CJK_UNIFIED_IDEOGRAPH-31343> 2
+<CJK_UNIFIED_IDEOGRAPH-31344> 2
+<CJK_UNIFIED_IDEOGRAPH-31345> 2
+<CJK_UNIFIED_IDEOGRAPH-31346> 2
+<CJK_UNIFIED_IDEOGRAPH-31347> 2
+<CJK_UNIFIED_IDEOGRAPH-31348> 2
+<CJK_UNIFIED_IDEOGRAPH-31349> 2
+<CJK_UNIFIED_IDEOGRAPH-3134A> 2
+<CJK_UNIFIED_IDEOGRAPH-31350> 2
+<CJK_UNIFIED_IDEOGRAPH-31351> 2
+<CJK_UNIFIED_IDEOGRAPH-31352> 2
+<CJK_UNIFIED_IDEOGRAPH-31353> 2
+<CJK_UNIFIED_IDEOGRAPH-31354> 2
+<CJK_UNIFIED_IDEOGRAPH-31355> 2
+<CJK_UNIFIED_IDEOGRAPH-31356> 2
+<CJK_UNIFIED_IDEOGRAPH-31357> 2
+<CJK_UNIFIED_IDEOGRAPH-31358> 2
+<CJK_UNIFIED_IDEOGRAPH-31359> 2
+<CJK_UNIFIED_IDEOGRAPH-3135A> 2
+<CJK_UNIFIED_IDEOGRAPH-3135B> 2
+<CJK_UNIFIED_IDEOGRAPH-3135C> 2
+<CJK_UNIFIED_IDEOGRAPH-3135D> 2
+<CJK_UNIFIED_IDEOGRAPH-3135E> 2
+<CJK_UNIFIED_IDEOGRAPH-3135F> 2
+<CJK_UNIFIED_IDEOGRAPH-31360> 2
+<CJK_UNIFIED_IDEOGRAPH-31361> 2
+<CJK_UNIFIED_IDEOGRAPH-31362> 2
+<CJK_UNIFIED_IDEOGRAPH-31363> 2
+<CJK_UNIFIED_IDEOGRAPH-31364> 2
+<CJK_UNIFIED_IDEOGRAPH-31365> 2
+<CJK_UNIFIED_IDEOGRAPH-31366> 2
+<CJK_UNIFIED_IDEOGRAPH-31367> 2
+<CJK_UNIFIED_IDEOGRAPH-31368> 2
+<CJK_UNIFIED_IDEOGRAPH-31369> 2
+<CJK_UNIFIED_IDEOGRAPH-3136A> 2
+<CJK_UNIFIED_IDEOGRAPH-3136B> 2
+<CJK_UNIFIED_IDEOGRAPH-3136C> 2
+<CJK_UNIFIED_IDEOGRAPH-3136D> 2
+<CJK_UNIFIED_IDEOGRAPH-3136E> 2
+<CJK_UNIFIED_IDEOGRAPH-3136F> 2
+<CJK_UNIFIED_IDEOGRAPH-31370> 2
+<CJK_UNIFIED_IDEOGRAPH-31371> 2
+<CJK_UNIFIED_IDEOGRAPH-31372> 2
+<CJK_UNIFIED_IDEOGRAPH-31373> 2
+<CJK_UNIFIED_IDEOGRAPH-31374> 2
+<CJK_UNIFIED_IDEOGRAPH-31375> 2
+<CJK_UNIFIED_IDEOGRAPH-31376> 2
+<CJK_UNIFIED_IDEOGRAPH-31377> 2
+<CJK_UNIFIED_IDEOGRAPH-31378> 2
+<CJK_UNIFIED_IDEOGRAPH-31379> 2
+<CJK_UNIFIED_IDEOGRAPH-3137A> 2
+<CJK_UNIFIED_IDEOGRAPH-3137B> 2
+<CJK_UNIFIED_IDEOGRAPH-3137C> 2
+<CJK_UNIFIED_IDEOGRAPH-3137D> 2
+<CJK_UNIFIED_IDEOGRAPH-3137E> 2
+<CJK_UNIFIED_IDEOGRAPH-3137F> 2
+<CJK_UNIFIED_IDEOGRAPH-31380> 2
+<CJK_UNIFIED_IDEOGRAPH-31381> 2
+<CJK_UNIFIED_IDEOGRAPH-31382> 2
+<CJK_UNIFIED_IDEOGRAPH-31383> 2
+<CJK_UNIFIED_IDEOGRAPH-31384> 2
+<CJK_UNIFIED_IDEOGRAPH-31385> 2
+<CJK_UNIFIED_IDEOGRAPH-31386> 2
+<CJK_UNIFIED_IDEOGRAPH-31387> 2
+<CJK_UNIFIED_IDEOGRAPH-31388> 2
+<CJK_UNIFIED_IDEOGRAPH-31389> 2
+<CJK_UNIFIED_IDEOGRAPH-3138A> 2
+<CJK_UNIFIED_IDEOGRAPH-3138B> 2
+<CJK_UNIFIED_IDEOGRAPH-3138C> 2
+<CJK_UNIFIED_IDEOGRAPH-3138D> 2
+<CJK_UNIFIED_IDEOGRAPH-3138E> 2
+<CJK_UNIFIED_IDEOGRAPH-3138F> 2
+<CJK_UNIFIED_IDEOGRAPH-31390> 2
+<CJK_UNIFIED_IDEOGRAPH-31391> 2
+<CJK_UNIFIED_IDEOGRAPH-31392> 2
+<CJK_UNIFIED_IDEOGRAPH-31393> 2
+<CJK_UNIFIED_IDEOGRAPH-31394> 2
+<CJK_UNIFIED_IDEOGRAPH-31395> 2
+<CJK_UNIFIED_IDEOGRAPH-31396> 2
+<CJK_UNIFIED_IDEOGRAPH-31397> 2
+<CJK_UNIFIED_IDEOGRAPH-31398> 2
+<CJK_UNIFIED_IDEOGRAPH-31399> 2
+<CJK_UNIFIED_IDEOGRAPH-3139A> 2
+<CJK_UNIFIED_IDEOGRAPH-3139B> 2
+<CJK_UNIFIED_IDEOGRAPH-3139C> 2
+<CJK_UNIFIED_IDEOGRAPH-3139D> 2
+<CJK_UNIFIED_IDEOGRAPH-3139E> 2
+<CJK_UNIFIED_IDEOGRAPH-3139F> 2
+<CJK_UNIFIED_IDEOGRAPH-313A0> 2
+<CJK_UNIFIED_IDEOGRAPH-313A1> 2
+<CJK_UNIFIED_IDEOGRAPH-313A2> 2
+<CJK_UNIFIED_IDEOGRAPH-313A3> 2
+<CJK_UNIFIED_IDEOGRAPH-313A4> 2
+<CJK_UNIFIED_IDEOGRAPH-313A5> 2
+<CJK_UNIFIED_IDEOGRAPH-313A6> 2
+<CJK_UNIFIED_IDEOGRAPH-313A7> 2
+<CJK_UNIFIED_IDEOGRAPH-313A8> 2
+<CJK_UNIFIED_IDEOGRAPH-313A9> 2
+<CJK_UNIFIED_IDEOGRAPH-313AA> 2
+<CJK_UNIFIED_IDEOGRAPH-313AB> 2
+<CJK_UNIFIED_IDEOGRAPH-313AC> 2
+<CJK_UNIFIED_IDEOGRAPH-313AD> 2
+<CJK_UNIFIED_IDEOGRAPH-313AE> 2
+<CJK_UNIFIED_IDEOGRAPH-313AF> 2
+<CJK_UNIFIED_IDEOGRAPH-313B0> 2
+<CJK_UNIFIED_IDEOGRAPH-313B1> 2
+<CJK_UNIFIED_IDEOGRAPH-313B2> 2
+<CJK_UNIFIED_IDEOGRAPH-313B3> 2
+<CJK_UNIFIED_IDEOGRAPH-313B4> 2
+<CJK_UNIFIED_IDEOGRAPH-313B5> 2
+<CJK_UNIFIED_IDEOGRAPH-313B6> 2
+<CJK_UNIFIED_IDEOGRAPH-313B7> 2
+<CJK_UNIFIED_IDEOGRAPH-313B8> 2
+<CJK_UNIFIED_IDEOGRAPH-313B9> 2
+<CJK_UNIFIED_IDEOGRAPH-313BA> 2
+<CJK_UNIFIED_IDEOGRAPH-313BB> 2
+<CJK_UNIFIED_IDEOGRAPH-313BC> 2
+<CJK_UNIFIED_IDEOGRAPH-313BD> 2
+<CJK_UNIFIED_IDEOGRAPH-313BE> 2
+<CJK_UNIFIED_IDEOGRAPH-313BF> 2
+<CJK_UNIFIED_IDEOGRAPH-313C0> 2
+<CJK_UNIFIED_IDEOGRAPH-313C1> 2
+<CJK_UNIFIED_IDEOGRAPH-313C2> 2
+<CJK_UNIFIED_IDEOGRAPH-313C3> 2
+<CJK_UNIFIED_IDEOGRAPH-313C4> 2
+<CJK_UNIFIED_IDEOGRAPH-313C5> 2
+<CJK_UNIFIED_IDEOGRAPH-313C6> 2
+<CJK_UNIFIED_IDEOGRAPH-313C7> 2
+<CJK_UNIFIED_IDEOGRAPH-313C8> 2
+<CJK_UNIFIED_IDEOGRAPH-313C9> 2
+<CJK_UNIFIED_IDEOGRAPH-313CA> 2
+<CJK_UNIFIED_IDEOGRAPH-313CB> 2
+<CJK_UNIFIED_IDEOGRAPH-313CC> 2
+<CJK_UNIFIED_IDEOGRAPH-313CD> 2
+<CJK_UNIFIED_IDEOGRAPH-313CE> 2
+<CJK_UNIFIED_IDEOGRAPH-313CF> 2
+<CJK_UNIFIED_IDEOGRAPH-313D0> 2
+<CJK_UNIFIED_IDEOGRAPH-313D1> 2
+<CJK_UNIFIED_IDEOGRAPH-313D2> 2
+<CJK_UNIFIED_IDEOGRAPH-313D3> 2
+<CJK_UNIFIED_IDEOGRAPH-313D4> 2
+<CJK_UNIFIED_IDEOGRAPH-313D5> 2
+<CJK_UNIFIED_IDEOGRAPH-313D6> 2
+<CJK_UNIFIED_IDEOGRAPH-313D7> 2
+<CJK_UNIFIED_IDEOGRAPH-313D8> 2
+<CJK_UNIFIED_IDEOGRAPH-313D9> 2
+<CJK_UNIFIED_IDEOGRAPH-313DA> 2
+<CJK_UNIFIED_IDEOGRAPH-313DB> 2
+<CJK_UNIFIED_IDEOGRAPH-313DC> 2
+<CJK_UNIFIED_IDEOGRAPH-313DD> 2
+<CJK_UNIFIED_IDEOGRAPH-313DE> 2
+<CJK_UNIFIED_IDEOGRAPH-313DF> 2
+<CJK_UNIFIED_IDEOGRAPH-313E0> 2
+<CJK_UNIFIED_IDEOGRAPH-313E1> 2
+<CJK_UNIFIED_IDEOGRAPH-313E2> 2
+<CJK_UNIFIED_IDEOGRAPH-313E3> 2
+<CJK_UNIFIED_IDEOGRAPH-313E4> 2
+<CJK_UNIFIED_IDEOGRAPH-313E5> 2
+<CJK_UNIFIED_IDEOGRAPH-313E6> 2
+<CJK_UNIFIED_IDEOGRAPH-313E7> 2
+<CJK_UNIFIED_IDEOGRAPH-313E8> 2
+<CJK_UNIFIED_IDEOGRAPH-313E9> 2
+<CJK_UNIFIED_IDEOGRAPH-313EA> 2
+<CJK_UNIFIED_IDEOGRAPH-313EB> 2
+<CJK_UNIFIED_IDEOGRAPH-313EC> 2
+<CJK_UNIFIED_IDEOGRAPH-313ED> 2
+<CJK_UNIFIED_IDEOGRAPH-313EE> 2
+<CJK_UNIFIED_IDEOGRAPH-313EF> 2
+<CJK_UNIFIED_IDEOGRAPH-313F0> 2
+<CJK_UNIFIED_IDEOGRAPH-313F1> 2
+<CJK_UNIFIED_IDEOGRAPH-313F2> 2
+<CJK_UNIFIED_IDEOGRAPH-313F3> 2
+<CJK_UNIFIED_IDEOGRAPH-313F4> 2
+<CJK_UNIFIED_IDEOGRAPH-313F5> 2
+<CJK_UNIFIED_IDEOGRAPH-313F6> 2
+<CJK_UNIFIED_IDEOGRAPH-313F7> 2
+<CJK_UNIFIED_IDEOGRAPH-313F8> 2
+<CJK_UNIFIED_IDEOGRAPH-313F9> 2
+<CJK_UNIFIED_IDEOGRAPH-313FA> 2
+<CJK_UNIFIED_IDEOGRAPH-313FB> 2
+<CJK_UNIFIED_IDEOGRAPH-313FC> 2
+<CJK_UNIFIED_IDEOGRAPH-313FD> 2
+<CJK_UNIFIED_IDEOGRAPH-313FE> 2
+<CJK_UNIFIED_IDEOGRAPH-313FF> 2
+<CJK_UNIFIED_IDEOGRAPH-31400> 2
+<CJK_UNIFIED_IDEOGRAPH-31401> 2
+<CJK_UNIFIED_IDEOGRAPH-31402> 2
+<CJK_UNIFIED_IDEOGRAPH-31403> 2
+<CJK_UNIFIED_IDEOGRAPH-31404> 2
+<CJK_UNIFIED_IDEOGRAPH-31405> 2
+<CJK_UNIFIED_IDEOGRAPH-31406> 2
+<CJK_UNIFIED_IDEOGRAPH-31407> 2
+<CJK_UNIFIED_IDEOGRAPH-31408> 2
+<CJK_UNIFIED_IDEOGRAPH-31409> 2
+<CJK_UNIFIED_IDEOGRAPH-3140A> 2
+<CJK_UNIFIED_IDEOGRAPH-3140B> 2
+<CJK_UNIFIED_IDEOGRAPH-3140C> 2
+<CJK_UNIFIED_IDEOGRAPH-3140D> 2
+<CJK_UNIFIED_IDEOGRAPH-3140E> 2
+<CJK_UNIFIED_IDEOGRAPH-3140F> 2
+<CJK_UNIFIED_IDEOGRAPH-31410> 2
+<CJK_UNIFIED_IDEOGRAPH-31411> 2
+<CJK_UNIFIED_IDEOGRAPH-31412> 2
+<CJK_UNIFIED_IDEOGRAPH-31413> 2
+<CJK_UNIFIED_IDEOGRAPH-31414> 2
+<CJK_UNIFIED_IDEOGRAPH-31415> 2
+<CJK_UNIFIED_IDEOGRAPH-31416> 2
+<CJK_UNIFIED_IDEOGRAPH-31417> 2
+<CJK_UNIFIED_IDEOGRAPH-31418> 2
+<CJK_UNIFIED_IDEOGRAPH-31419> 2
+<CJK_UNIFIED_IDEOGRAPH-3141A> 2
+<CJK_UNIFIED_IDEOGRAPH-3141B> 2
+<CJK_UNIFIED_IDEOGRAPH-3141C> 2
+<CJK_UNIFIED_IDEOGRAPH-3141D> 2
+<CJK_UNIFIED_IDEOGRAPH-3141E> 2
+<CJK_UNIFIED_IDEOGRAPH-3141F> 2
+<CJK_UNIFIED_IDEOGRAPH-31420> 2
+<CJK_UNIFIED_IDEOGRAPH-31421> 2
+<CJK_UNIFIED_IDEOGRAPH-31422> 2
+<CJK_UNIFIED_IDEOGRAPH-31423> 2
+<CJK_UNIFIED_IDEOGRAPH-31424> 2
+<CJK_UNIFIED_IDEOGRAPH-31425> 2
+<CJK_UNIFIED_IDEOGRAPH-31426> 2
+<CJK_UNIFIED_IDEOGRAPH-31427> 2
+<CJK_UNIFIED_IDEOGRAPH-31428> 2
+<CJK_UNIFIED_IDEOGRAPH-31429> 2
+<CJK_UNIFIED_IDEOGRAPH-3142A> 2
+<CJK_UNIFIED_IDEOGRAPH-3142B> 2
+<CJK_UNIFIED_IDEOGRAPH-3142C> 2
+<CJK_UNIFIED_IDEOGRAPH-3142D> 2
+<CJK_UNIFIED_IDEOGRAPH-3142E> 2
+<CJK_UNIFIED_IDEOGRAPH-3142F> 2
+<CJK_UNIFIED_IDEOGRAPH-31430> 2
+<CJK_UNIFIED_IDEOGRAPH-31431> 2
+<CJK_UNIFIED_IDEOGRAPH-31432> 2
+<CJK_UNIFIED_IDEOGRAPH-31433> 2
+<CJK_UNIFIED_IDEOGRAPH-31434> 2
+<CJK_UNIFIED_IDEOGRAPH-31435> 2
+<CJK_UNIFIED_IDEOGRAPH-31436> 2
+<CJK_UNIFIED_IDEOGRAPH-31437> 2
+<CJK_UNIFIED_IDEOGRAPH-31438> 2
+<CJK_UNIFIED_IDEOGRAPH-31439> 2
+<CJK_UNIFIED_IDEOGRAPH-3143A> 2
+<CJK_UNIFIED_IDEOGRAPH-3143B> 2
+<CJK_UNIFIED_IDEOGRAPH-3143C> 2
+<CJK_UNIFIED_IDEOGRAPH-3143D> 2
+<CJK_UNIFIED_IDEOGRAPH-3143E> 2
+<CJK_UNIFIED_IDEOGRAPH-3143F> 2
+<CJK_UNIFIED_IDEOGRAPH-31440> 2
+<CJK_UNIFIED_IDEOGRAPH-31441> 2
+<CJK_UNIFIED_IDEOGRAPH-31442> 2
+<CJK_UNIFIED_IDEOGRAPH-31443> 2
+<CJK_UNIFIED_IDEOGRAPH-31444> 2
+<CJK_UNIFIED_IDEOGRAPH-31445> 2
+<CJK_UNIFIED_IDEOGRAPH-31446> 2
+<CJK_UNIFIED_IDEOGRAPH-31447> 2
+<CJK_UNIFIED_IDEOGRAPH-31448> 2
+<CJK_UNIFIED_IDEOGRAPH-31449> 2
+<CJK_UNIFIED_IDEOGRAPH-3144A> 2
+<CJK_UNIFIED_IDEOGRAPH-3144B> 2
+<CJK_UNIFIED_IDEOGRAPH-3144C> 2
+<CJK_UNIFIED_IDEOGRAPH-3144D> 2
+<CJK_UNIFIED_IDEOGRAPH-3144E> 2
+<CJK_UNIFIED_IDEOGRAPH-3144F> 2
+<CJK_UNIFIED_IDEOGRAPH-31450> 2
+<CJK_UNIFIED_IDEOGRAPH-31451> 2
+<CJK_UNIFIED_IDEOGRAPH-31452> 2
+<CJK_UNIFIED_IDEOGRAPH-31453> 2
+<CJK_UNIFIED_IDEOGRAPH-31454> 2
+<CJK_UNIFIED_IDEOGRAPH-31455> 2
+<CJK_UNIFIED_IDEOGRAPH-31456> 2
+<CJK_UNIFIED_IDEOGRAPH-31457> 2
+<CJK_UNIFIED_IDEOGRAPH-31458> 2
+<CJK_UNIFIED_IDEOGRAPH-31459> 2
+<CJK_UNIFIED_IDEOGRAPH-3145A> 2
+<CJK_UNIFIED_IDEOGRAPH-3145B> 2
+<CJK_UNIFIED_IDEOGRAPH-3145C> 2
+<CJK_UNIFIED_IDEOGRAPH-3145D> 2
+<CJK_UNIFIED_IDEOGRAPH-3145E> 2
+<CJK_UNIFIED_IDEOGRAPH-3145F> 2
+<CJK_UNIFIED_IDEOGRAPH-31460> 2
+<CJK_UNIFIED_IDEOGRAPH-31461> 2
+<CJK_UNIFIED_IDEOGRAPH-31462> 2
+<CJK_UNIFIED_IDEOGRAPH-31463> 2
+<CJK_UNIFIED_IDEOGRAPH-31464> 2
+<CJK_UNIFIED_IDEOGRAPH-31465> 2
+<CJK_UNIFIED_IDEOGRAPH-31466> 2
+<CJK_UNIFIED_IDEOGRAPH-31467> 2
+<CJK_UNIFIED_IDEOGRAPH-31468> 2
+<CJK_UNIFIED_IDEOGRAPH-31469> 2
+<CJK_UNIFIED_IDEOGRAPH-3146A> 2
+<CJK_UNIFIED_IDEOGRAPH-3146B> 2
+<CJK_UNIFIED_IDEOGRAPH-3146C> 2
+<CJK_UNIFIED_IDEOGRAPH-3146D> 2
+<CJK_UNIFIED_IDEOGRAPH-3146E> 2
+<CJK_UNIFIED_IDEOGRAPH-3146F> 2
+<CJK_UNIFIED_IDEOGRAPH-31470> 2
+<CJK_UNIFIED_IDEOGRAPH-31471> 2
+<CJK_UNIFIED_IDEOGRAPH-31472> 2
+<CJK_UNIFIED_IDEOGRAPH-31473> 2
+<CJK_UNIFIED_IDEOGRAPH-31474> 2
+<CJK_UNIFIED_IDEOGRAPH-31475> 2
+<CJK_UNIFIED_IDEOGRAPH-31476> 2
+<CJK_UNIFIED_IDEOGRAPH-31477> 2
+<CJK_UNIFIED_IDEOGRAPH-31478> 2
+<CJK_UNIFIED_IDEOGRAPH-31479> 2
+<CJK_UNIFIED_IDEOGRAPH-3147A> 2
+<CJK_UNIFIED_IDEOGRAPH-3147B> 2
+<CJK_UNIFIED_IDEOGRAPH-3147C> 2
+<CJK_UNIFIED_IDEOGRAPH-3147D> 2
+<CJK_UNIFIED_IDEOGRAPH-3147E> 2
+<CJK_UNIFIED_IDEOGRAPH-3147F> 2
+<CJK_UNIFIED_IDEOGRAPH-31480> 2
+<CJK_UNIFIED_IDEOGRAPH-31481> 2
+<CJK_UNIFIED_IDEOGRAPH-31482> 2
+<CJK_UNIFIED_IDEOGRAPH-31483> 2
+<CJK_UNIFIED_IDEOGRAPH-31484> 2
+<CJK_UNIFIED_IDEOGRAPH-31485> 2
+<CJK_UNIFIED_IDEOGRAPH-31486> 2
+<CJK_UNIFIED_IDEOGRAPH-31487> 2
+<CJK_UNIFIED_IDEOGRAPH-31488> 2
+<CJK_UNIFIED_IDEOGRAPH-31489> 2
+<CJK_UNIFIED_IDEOGRAPH-3148A> 2
+<CJK_UNIFIED_IDEOGRAPH-3148B> 2
+<CJK_UNIFIED_IDEOGRAPH-3148C> 2
+<CJK_UNIFIED_IDEOGRAPH-3148D> 2
+<CJK_UNIFIED_IDEOGRAPH-3148E> 2
+<CJK_UNIFIED_IDEOGRAPH-3148F> 2
+<CJK_UNIFIED_IDEOGRAPH-31490> 2
+<CJK_UNIFIED_IDEOGRAPH-31491> 2
+<CJK_UNIFIED_IDEOGRAPH-31492> 2
+<CJK_UNIFIED_IDEOGRAPH-31493> 2
+<CJK_UNIFIED_IDEOGRAPH-31494> 2
+<CJK_UNIFIED_IDEOGRAPH-31495> 2
+<CJK_UNIFIED_IDEOGRAPH-31496> 2
+<CJK_UNIFIED_IDEOGRAPH-31497> 2
+<CJK_UNIFIED_IDEOGRAPH-31498> 2
+<CJK_UNIFIED_IDEOGRAPH-31499> 2
+<CJK_UNIFIED_IDEOGRAPH-3149A> 2
+<CJK_UNIFIED_IDEOGRAPH-3149B> 2
+<CJK_UNIFIED_IDEOGRAPH-3149C> 2
+<CJK_UNIFIED_IDEOGRAPH-3149D> 2
+<CJK_UNIFIED_IDEOGRAPH-3149E> 2
+<CJK_UNIFIED_IDEOGRAPH-3149F> 2
+<CJK_UNIFIED_IDEOGRAPH-314A0> 2
+<CJK_UNIFIED_IDEOGRAPH-314A1> 2
+<CJK_UNIFIED_IDEOGRAPH-314A2> 2
+<CJK_UNIFIED_IDEOGRAPH-314A3> 2
+<CJK_UNIFIED_IDEOGRAPH-314A4> 2
+<CJK_UNIFIED_IDEOGRAPH-314A5> 2
+<CJK_UNIFIED_IDEOGRAPH-314A6> 2
+<CJK_UNIFIED_IDEOGRAPH-314A7> 2
+<CJK_UNIFIED_IDEOGRAPH-314A8> 2
+<CJK_UNIFIED_IDEOGRAPH-314A9> 2
+<CJK_UNIFIED_IDEOGRAPH-314AA> 2
+<CJK_UNIFIED_IDEOGRAPH-314AB> 2
+<CJK_UNIFIED_IDEOGRAPH-314AC> 2
+<CJK_UNIFIED_IDEOGRAPH-314AD> 2
+<CJK_UNIFIED_IDEOGRAPH-314AE> 2
+<CJK_UNIFIED_IDEOGRAPH-314AF> 2
+<CJK_UNIFIED_IDEOGRAPH-314B0> 2
+<CJK_UNIFIED_IDEOGRAPH-314B1> 2
+<CJK_UNIFIED_IDEOGRAPH-314B2> 2
+<CJK_UNIFIED_IDEOGRAPH-314B3> 2
+<CJK_UNIFIED_IDEOGRAPH-314B4> 2
+<CJK_UNIFIED_IDEOGRAPH-314B5> 2
+<CJK_UNIFIED_IDEOGRAPH-314B6> 2
+<CJK_UNIFIED_IDEOGRAPH-314B7> 2
+<CJK_UNIFIED_IDEOGRAPH-314B8> 2
+<CJK_UNIFIED_IDEOGRAPH-314B9> 2
+<CJK_UNIFIED_IDEOGRAPH-314BA> 2
+<CJK_UNIFIED_IDEOGRAPH-314BB> 2
+<CJK_UNIFIED_IDEOGRAPH-314BC> 2
+<CJK_UNIFIED_IDEOGRAPH-314BD> 2
+<CJK_UNIFIED_IDEOGRAPH-314BE> 2
+<CJK_UNIFIED_IDEOGRAPH-314BF> 2
+<CJK_UNIFIED_IDEOGRAPH-314C0> 2
+<CJK_UNIFIED_IDEOGRAPH-314C1> 2
+<CJK_UNIFIED_IDEOGRAPH-314C2> 2
+<CJK_UNIFIED_IDEOGRAPH-314C3> 2
+<CJK_UNIFIED_IDEOGRAPH-314C4> 2
+<CJK_UNIFIED_IDEOGRAPH-314C5> 2
+<CJK_UNIFIED_IDEOGRAPH-314C6> 2
+<CJK_UNIFIED_IDEOGRAPH-314C7> 2
+<CJK_UNIFIED_IDEOGRAPH-314C8> 2
+<CJK_UNIFIED_IDEOGRAPH-314C9> 2
+<CJK_UNIFIED_IDEOGRAPH-314CA> 2
+<CJK_UNIFIED_IDEOGRAPH-314CB> 2
+<CJK_UNIFIED_IDEOGRAPH-314CC> 2
+<CJK_UNIFIED_IDEOGRAPH-314CD> 2
+<CJK_UNIFIED_IDEOGRAPH-314CE> 2
+<CJK_UNIFIED_IDEOGRAPH-314CF> 2
+<CJK_UNIFIED_IDEOGRAPH-314D0> 2
+<CJK_UNIFIED_IDEOGRAPH-314D1> 2
+<CJK_UNIFIED_IDEOGRAPH-314D2> 2
+<CJK_UNIFIED_IDEOGRAPH-314D3> 2
+<CJK_UNIFIED_IDEOGRAPH-314D4> 2
+<CJK_UNIFIED_IDEOGRAPH-314D5> 2
+<CJK_UNIFIED_IDEOGRAPH-314D6> 2
+<CJK_UNIFIED_IDEOGRAPH-314D7> 2
+<CJK_UNIFIED_IDEOGRAPH-314D8> 2
+<CJK_UNIFIED_IDEOGRAPH-314D9> 2
+<CJK_UNIFIED_IDEOGRAPH-314DA> 2
+<CJK_UNIFIED_IDEOGRAPH-314DB> 2
+<CJK_UNIFIED_IDEOGRAPH-314DC> 2
+<CJK_UNIFIED_IDEOGRAPH-314DD> 2
+<CJK_UNIFIED_IDEOGRAPH-314DE> 2
+<CJK_UNIFIED_IDEOGRAPH-314DF> 2
+<CJK_UNIFIED_IDEOGRAPH-314E0> 2
+<CJK_UNIFIED_IDEOGRAPH-314E1> 2
+<CJK_UNIFIED_IDEOGRAPH-314E2> 2
+<CJK_UNIFIED_IDEOGRAPH-314E3> 2
+<CJK_UNIFIED_IDEOGRAPH-314E4> 2
+<CJK_UNIFIED_IDEOGRAPH-314E5> 2
+<CJK_UNIFIED_IDEOGRAPH-314E6> 2
+<CJK_UNIFIED_IDEOGRAPH-314E7> 2
+<CJK_UNIFIED_IDEOGRAPH-314E8> 2
+<CJK_UNIFIED_IDEOGRAPH-314E9> 2
+<CJK_UNIFIED_IDEOGRAPH-314EA> 2
+<CJK_UNIFIED_IDEOGRAPH-314EB> 2
+<CJK_UNIFIED_IDEOGRAPH-314EC> 2
+<CJK_UNIFIED_IDEOGRAPH-314ED> 2
+<CJK_UNIFIED_IDEOGRAPH-314EE> 2
+<CJK_UNIFIED_IDEOGRAPH-314EF> 2
+<CJK_UNIFIED_IDEOGRAPH-314F0> 2
+<CJK_UNIFIED_IDEOGRAPH-314F1> 2
+<CJK_UNIFIED_IDEOGRAPH-314F2> 2
+<CJK_UNIFIED_IDEOGRAPH-314F3> 2
+<CJK_UNIFIED_IDEOGRAPH-314F4> 2
+<CJK_UNIFIED_IDEOGRAPH-314F5> 2
+<CJK_UNIFIED_IDEOGRAPH-314F6> 2
+<CJK_UNIFIED_IDEOGRAPH-314F7> 2
+<CJK_UNIFIED_IDEOGRAPH-314F8> 2
+<CJK_UNIFIED_IDEOGRAPH-314F9> 2
+<CJK_UNIFIED_IDEOGRAPH-314FA> 2
+<CJK_UNIFIED_IDEOGRAPH-314FB> 2
+<CJK_UNIFIED_IDEOGRAPH-314FC> 2
+<CJK_UNIFIED_IDEOGRAPH-314FD> 2
+<CJK_UNIFIED_IDEOGRAPH-314FE> 2
+<CJK_UNIFIED_IDEOGRAPH-314FF> 2
+<CJK_UNIFIED_IDEOGRAPH-31500> 2
+<CJK_UNIFIED_IDEOGRAPH-31501> 2
+<CJK_UNIFIED_IDEOGRAPH-31502> 2
+<CJK_UNIFIED_IDEOGRAPH-31503> 2
+<CJK_UNIFIED_IDEOGRAPH-31504> 2
+<CJK_UNIFIED_IDEOGRAPH-31505> 2
+<CJK_UNIFIED_IDEOGRAPH-31506> 2
+<CJK_UNIFIED_IDEOGRAPH-31507> 2
+<CJK_UNIFIED_IDEOGRAPH-31508> 2
+<CJK_UNIFIED_IDEOGRAPH-31509> 2
+<CJK_UNIFIED_IDEOGRAPH-3150A> 2
+<CJK_UNIFIED_IDEOGRAPH-3150B> 2
+<CJK_UNIFIED_IDEOGRAPH-3150C> 2
+<CJK_UNIFIED_IDEOGRAPH-3150D> 2
+<CJK_UNIFIED_IDEOGRAPH-3150E> 2
+<CJK_UNIFIED_IDEOGRAPH-3150F> 2
+<CJK_UNIFIED_IDEOGRAPH-31510> 2
+<CJK_UNIFIED_IDEOGRAPH-31511> 2
+<CJK_UNIFIED_IDEOGRAPH-31512> 2
+<CJK_UNIFIED_IDEOGRAPH-31513> 2
+<CJK_UNIFIED_IDEOGRAPH-31514> 2
+<CJK_UNIFIED_IDEOGRAPH-31515> 2
+<CJK_UNIFIED_IDEOGRAPH-31516> 2
+<CJK_UNIFIED_IDEOGRAPH-31517> 2
+<CJK_UNIFIED_IDEOGRAPH-31518> 2
+<CJK_UNIFIED_IDEOGRAPH-31519> 2
+<CJK_UNIFIED_IDEOGRAPH-3151A> 2
+<CJK_UNIFIED_IDEOGRAPH-3151B> 2
+<CJK_UNIFIED_IDEOGRAPH-3151C> 2
+<CJK_UNIFIED_IDEOGRAPH-3151D> 2
+<CJK_UNIFIED_IDEOGRAPH-3151E> 2
+<CJK_UNIFIED_IDEOGRAPH-3151F> 2
+<CJK_UNIFIED_IDEOGRAPH-31520> 2
+<CJK_UNIFIED_IDEOGRAPH-31521> 2
+<CJK_UNIFIED_IDEOGRAPH-31522> 2
+<CJK_UNIFIED_IDEOGRAPH-31523> 2
+<CJK_UNIFIED_IDEOGRAPH-31524> 2
+<CJK_UNIFIED_IDEOGRAPH-31525> 2
+<CJK_UNIFIED_IDEOGRAPH-31526> 2
+<CJK_UNIFIED_IDEOGRAPH-31527> 2
+<CJK_UNIFIED_IDEOGRAPH-31528> 2
+<CJK_UNIFIED_IDEOGRAPH-31529> 2
+<CJK_UNIFIED_IDEOGRAPH-3152A> 2
+<CJK_UNIFIED_IDEOGRAPH-3152B> 2
+<CJK_UNIFIED_IDEOGRAPH-3152C> 2
+<CJK_UNIFIED_IDEOGRAPH-3152D> 2
+<CJK_UNIFIED_IDEOGRAPH-3152E> 2
+<CJK_UNIFIED_IDEOGRAPH-3152F> 2
+<CJK_UNIFIED_IDEOGRAPH-31530> 2
+<CJK_UNIFIED_IDEOGRAPH-31531> 2
+<CJK_UNIFIED_IDEOGRAPH-31532> 2
+<CJK_UNIFIED_IDEOGRAPH-31533> 2
+<CJK_UNIFIED_IDEOGRAPH-31534> 2
+<CJK_UNIFIED_IDEOGRAPH-31535> 2
+<CJK_UNIFIED_IDEOGRAPH-31536> 2
+<CJK_UNIFIED_IDEOGRAPH-31537> 2
+<CJK_UNIFIED_IDEOGRAPH-31538> 2
+<CJK_UNIFIED_IDEOGRAPH-31539> 2
+<CJK_UNIFIED_IDEOGRAPH-3153A> 2
+<CJK_UNIFIED_IDEOGRAPH-3153B> 2
+<CJK_UNIFIED_IDEOGRAPH-3153C> 2
+<CJK_UNIFIED_IDEOGRAPH-3153D> 2
+<CJK_UNIFIED_IDEOGRAPH-3153E> 2
+<CJK_UNIFIED_IDEOGRAPH-3153F> 2
+<CJK_UNIFIED_IDEOGRAPH-31540> 2
+<CJK_UNIFIED_IDEOGRAPH-31541> 2
+<CJK_UNIFIED_IDEOGRAPH-31542> 2
+<CJK_UNIFIED_IDEOGRAPH-31543> 2
+<CJK_UNIFIED_IDEOGRAPH-31544> 2
+<CJK_UNIFIED_IDEOGRAPH-31545> 2
+<CJK_UNIFIED_IDEOGRAPH-31546> 2
+<CJK_UNIFIED_IDEOGRAPH-31547> 2
+<CJK_UNIFIED_IDEOGRAPH-31548> 2
+<CJK_UNIFIED_IDEOGRAPH-31549> 2
+<CJK_UNIFIED_IDEOGRAPH-3154A> 2
+<CJK_UNIFIED_IDEOGRAPH-3154B> 2
+<CJK_UNIFIED_IDEOGRAPH-3154C> 2
+<CJK_UNIFIED_IDEOGRAPH-3154D> 2
+<CJK_UNIFIED_IDEOGRAPH-3154E> 2
+<CJK_UNIFIED_IDEOGRAPH-3154F> 2
+<CJK_UNIFIED_IDEOGRAPH-31550> 2
+<CJK_UNIFIED_IDEOGRAPH-31551> 2
+<CJK_UNIFIED_IDEOGRAPH-31552> 2
+<CJK_UNIFIED_IDEOGRAPH-31553> 2
+<CJK_UNIFIED_IDEOGRAPH-31554> 2
+<CJK_UNIFIED_IDEOGRAPH-31555> 2
+<CJK_UNIFIED_IDEOGRAPH-31556> 2
+<CJK_UNIFIED_IDEOGRAPH-31557> 2
+<CJK_UNIFIED_IDEOGRAPH-31558> 2
+<CJK_UNIFIED_IDEOGRAPH-31559> 2
+<CJK_UNIFIED_IDEOGRAPH-3155A> 2
+<CJK_UNIFIED_IDEOGRAPH-3155B> 2
+<CJK_UNIFIED_IDEOGRAPH-3155C> 2
+<CJK_UNIFIED_IDEOGRAPH-3155D> 2
+<CJK_UNIFIED_IDEOGRAPH-3155E> 2
+<CJK_UNIFIED_IDEOGRAPH-3155F> 2
+<CJK_UNIFIED_IDEOGRAPH-31560> 2
+<CJK_UNIFIED_IDEOGRAPH-31561> 2
+<CJK_UNIFIED_IDEOGRAPH-31562> 2
+<CJK_UNIFIED_IDEOGRAPH-31563> 2
+<CJK_UNIFIED_IDEOGRAPH-31564> 2
+<CJK_UNIFIED_IDEOGRAPH-31565> 2
+<CJK_UNIFIED_IDEOGRAPH-31566> 2
+<CJK_UNIFIED_IDEOGRAPH-31567> 2
+<CJK_UNIFIED_IDEOGRAPH-31568> 2
+<CJK_UNIFIED_IDEOGRAPH-31569> 2
+<CJK_UNIFIED_IDEOGRAPH-3156A> 2
+<CJK_UNIFIED_IDEOGRAPH-3156B> 2
+<CJK_UNIFIED_IDEOGRAPH-3156C> 2
+<CJK_UNIFIED_IDEOGRAPH-3156D> 2
+<CJK_UNIFIED_IDEOGRAPH-3156E> 2
+<CJK_UNIFIED_IDEOGRAPH-3156F> 2
+<CJK_UNIFIED_IDEOGRAPH-31570> 2
+<CJK_UNIFIED_IDEOGRAPH-31571> 2
+<CJK_UNIFIED_IDEOGRAPH-31572> 2
+<CJK_UNIFIED_IDEOGRAPH-31573> 2
+<CJK_UNIFIED_IDEOGRAPH-31574> 2
+<CJK_UNIFIED_IDEOGRAPH-31575> 2
+<CJK_UNIFIED_IDEOGRAPH-31576> 2
+<CJK_UNIFIED_IDEOGRAPH-31577> 2
+<CJK_UNIFIED_IDEOGRAPH-31578> 2
+<CJK_UNIFIED_IDEOGRAPH-31579> 2
+<CJK_UNIFIED_IDEOGRAPH-3157A> 2
+<CJK_UNIFIED_IDEOGRAPH-3157B> 2
+<CJK_UNIFIED_IDEOGRAPH-3157C> 2
+<CJK_UNIFIED_IDEOGRAPH-3157D> 2
+<CJK_UNIFIED_IDEOGRAPH-3157E> 2
+<CJK_UNIFIED_IDEOGRAPH-3157F> 2
+<CJK_UNIFIED_IDEOGRAPH-31580> 2
+<CJK_UNIFIED_IDEOGRAPH-31581> 2
+<CJK_UNIFIED_IDEOGRAPH-31582> 2
+<CJK_UNIFIED_IDEOGRAPH-31583> 2
+<CJK_UNIFIED_IDEOGRAPH-31584> 2
+<CJK_UNIFIED_IDEOGRAPH-31585> 2
+<CJK_UNIFIED_IDEOGRAPH-31586> 2
+<CJK_UNIFIED_IDEOGRAPH-31587> 2
+<CJK_UNIFIED_IDEOGRAPH-31588> 2
+<CJK_UNIFIED_IDEOGRAPH-31589> 2
+<CJK_UNIFIED_IDEOGRAPH-3158A> 2
+<CJK_UNIFIED_IDEOGRAPH-3158B> 2
+<CJK_UNIFIED_IDEOGRAPH-3158C> 2
+<CJK_UNIFIED_IDEOGRAPH-3158D> 2
+<CJK_UNIFIED_IDEOGRAPH-3158E> 2
+<CJK_UNIFIED_IDEOGRAPH-3158F> 2
+<CJK_UNIFIED_IDEOGRAPH-31590> 2
+<CJK_UNIFIED_IDEOGRAPH-31591> 2
+<CJK_UNIFIED_IDEOGRAPH-31592> 2
+<CJK_UNIFIED_IDEOGRAPH-31593> 2
+<CJK_UNIFIED_IDEOGRAPH-31594> 2
+<CJK_UNIFIED_IDEOGRAPH-31595> 2
+<CJK_UNIFIED_IDEOGRAPH-31596> 2
+<CJK_UNIFIED_IDEOGRAPH-31597> 2
+<CJK_UNIFIED_IDEOGRAPH-31598> 2
+<CJK_UNIFIED_IDEOGRAPH-31599> 2
+<CJK_UNIFIED_IDEOGRAPH-3159A> 2
+<CJK_UNIFIED_IDEOGRAPH-3159B> 2
+<CJK_UNIFIED_IDEOGRAPH-3159C> 2
+<CJK_UNIFIED_IDEOGRAPH-3159D> 2
+<CJK_UNIFIED_IDEOGRAPH-3159E> 2
+<CJK_UNIFIED_IDEOGRAPH-3159F> 2
+<CJK_UNIFIED_IDEOGRAPH-315A0> 2
+<CJK_UNIFIED_IDEOGRAPH-315A1> 2
+<CJK_UNIFIED_IDEOGRAPH-315A2> 2
+<CJK_UNIFIED_IDEOGRAPH-315A3> 2
+<CJK_UNIFIED_IDEOGRAPH-315A4> 2
+<CJK_UNIFIED_IDEOGRAPH-315A5> 2
+<CJK_UNIFIED_IDEOGRAPH-315A6> 2
+<CJK_UNIFIED_IDEOGRAPH-315A7> 2
+<CJK_UNIFIED_IDEOGRAPH-315A8> 2
+<CJK_UNIFIED_IDEOGRAPH-315A9> 2
+<CJK_UNIFIED_IDEOGRAPH-315AA> 2
+<CJK_UNIFIED_IDEOGRAPH-315AB> 2
+<CJK_UNIFIED_IDEOGRAPH-315AC> 2
+<CJK_UNIFIED_IDEOGRAPH-315AD> 2
+<CJK_UNIFIED_IDEOGRAPH-315AE> 2
+<CJK_UNIFIED_IDEOGRAPH-315AF> 2
+<CJK_UNIFIED_IDEOGRAPH-315B0> 2
+<CJK_UNIFIED_IDEOGRAPH-315B1> 2
+<CJK_UNIFIED_IDEOGRAPH-315B2> 2
+<CJK_UNIFIED_IDEOGRAPH-315B3> 2
+<CJK_UNIFIED_IDEOGRAPH-315B4> 2
+<CJK_UNIFIED_IDEOGRAPH-315B5> 2
+<CJK_UNIFIED_IDEOGRAPH-315B6> 2
+<CJK_UNIFIED_IDEOGRAPH-315B7> 2
+<CJK_UNIFIED_IDEOGRAPH-315B8> 2
+<CJK_UNIFIED_IDEOGRAPH-315B9> 2
+<CJK_UNIFIED_IDEOGRAPH-315BA> 2
+<CJK_UNIFIED_IDEOGRAPH-315BB> 2
+<CJK_UNIFIED_IDEOGRAPH-315BC> 2
+<CJK_UNIFIED_IDEOGRAPH-315BD> 2
+<CJK_UNIFIED_IDEOGRAPH-315BE> 2
+<CJK_UNIFIED_IDEOGRAPH-315BF> 2
+<CJK_UNIFIED_IDEOGRAPH-315C0> 2
+<CJK_UNIFIED_IDEOGRAPH-315C1> 2
+<CJK_UNIFIED_IDEOGRAPH-315C2> 2
+<CJK_UNIFIED_IDEOGRAPH-315C3> 2
+<CJK_UNIFIED_IDEOGRAPH-315C4> 2
+<CJK_UNIFIED_IDEOGRAPH-315C5> 2
+<CJK_UNIFIED_IDEOGRAPH-315C6> 2
+<CJK_UNIFIED_IDEOGRAPH-315C7> 2
+<CJK_UNIFIED_IDEOGRAPH-315C8> 2
+<CJK_UNIFIED_IDEOGRAPH-315C9> 2
+<CJK_UNIFIED_IDEOGRAPH-315CA> 2
+<CJK_UNIFIED_IDEOGRAPH-315CB> 2
+<CJK_UNIFIED_IDEOGRAPH-315CC> 2
+<CJK_UNIFIED_IDEOGRAPH-315CD> 2
+<CJK_UNIFIED_IDEOGRAPH-315CE> 2
+<CJK_UNIFIED_IDEOGRAPH-315CF> 2
+<CJK_UNIFIED_IDEOGRAPH-315D0> 2
+<CJK_UNIFIED_IDEOGRAPH-315D1> 2
+<CJK_UNIFIED_IDEOGRAPH-315D2> 2
+<CJK_UNIFIED_IDEOGRAPH-315D3> 2
+<CJK_UNIFIED_IDEOGRAPH-315D4> 2
+<CJK_UNIFIED_IDEOGRAPH-315D5> 2
+<CJK_UNIFIED_IDEOGRAPH-315D6> 2
+<CJK_UNIFIED_IDEOGRAPH-315D7> 2
+<CJK_UNIFIED_IDEOGRAPH-315D8> 2
+<CJK_UNIFIED_IDEOGRAPH-315D9> 2
+<CJK_UNIFIED_IDEOGRAPH-315DA> 2
+<CJK_UNIFIED_IDEOGRAPH-315DB> 2
+<CJK_UNIFIED_IDEOGRAPH-315DC> 2
+<CJK_UNIFIED_IDEOGRAPH-315DD> 2
+<CJK_UNIFIED_IDEOGRAPH-315DE> 2
+<CJK_UNIFIED_IDEOGRAPH-315DF> 2
+<CJK_UNIFIED_IDEOGRAPH-315E0> 2
+<CJK_UNIFIED_IDEOGRAPH-315E1> 2
+<CJK_UNIFIED_IDEOGRAPH-315E2> 2
+<CJK_UNIFIED_IDEOGRAPH-315E3> 2
+<CJK_UNIFIED_IDEOGRAPH-315E4> 2
+<CJK_UNIFIED_IDEOGRAPH-315E5> 2
+<CJK_UNIFIED_IDEOGRAPH-315E6> 2
+<CJK_UNIFIED_IDEOGRAPH-315E7> 2
+<CJK_UNIFIED_IDEOGRAPH-315E8> 2
+<CJK_UNIFIED_IDEOGRAPH-315E9> 2
+<CJK_UNIFIED_IDEOGRAPH-315EA> 2
+<CJK_UNIFIED_IDEOGRAPH-315EB> 2
+<CJK_UNIFIED_IDEOGRAPH-315EC> 2
+<CJK_UNIFIED_IDEOGRAPH-315ED> 2
+<CJK_UNIFIED_IDEOGRAPH-315EE> 2
+<CJK_UNIFIED_IDEOGRAPH-315EF> 2
+<CJK_UNIFIED_IDEOGRAPH-315F0> 2
+<CJK_UNIFIED_IDEOGRAPH-315F1> 2
+<CJK_UNIFIED_IDEOGRAPH-315F2> 2
+<CJK_UNIFIED_IDEOGRAPH-315F3> 2
+<CJK_UNIFIED_IDEOGRAPH-315F4> 2
+<CJK_UNIFIED_IDEOGRAPH-315F5> 2
+<CJK_UNIFIED_IDEOGRAPH-315F6> 2
+<CJK_UNIFIED_IDEOGRAPH-315F7> 2
+<CJK_UNIFIED_IDEOGRAPH-315F8> 2
+<CJK_UNIFIED_IDEOGRAPH-315F9> 2
+<CJK_UNIFIED_IDEOGRAPH-315FA> 2
+<CJK_UNIFIED_IDEOGRAPH-315FB> 2
+<CJK_UNIFIED_IDEOGRAPH-315FC> 2
+<CJK_UNIFIED_IDEOGRAPH-315FD> 2
+<CJK_UNIFIED_IDEOGRAPH-315FE> 2
+<CJK_UNIFIED_IDEOGRAPH-315FF> 2
+<CJK_UNIFIED_IDEOGRAPH-31600> 2
+<CJK_UNIFIED_IDEOGRAPH-31601> 2
+<CJK_UNIFIED_IDEOGRAPH-31602> 2
+<CJK_UNIFIED_IDEOGRAPH-31603> 2
+<CJK_UNIFIED_IDEOGRAPH-31604> 2
+<CJK_UNIFIED_IDEOGRAPH-31605> 2
+<CJK_UNIFIED_IDEOGRAPH-31606> 2
+<CJK_UNIFIED_IDEOGRAPH-31607> 2
+<CJK_UNIFIED_IDEOGRAPH-31608> 2
+<CJK_UNIFIED_IDEOGRAPH-31609> 2
+<CJK_UNIFIED_IDEOGRAPH-3160A> 2
+<CJK_UNIFIED_IDEOGRAPH-3160B> 2
+<CJK_UNIFIED_IDEOGRAPH-3160C> 2
+<CJK_UNIFIED_IDEOGRAPH-3160D> 2
+<CJK_UNIFIED_IDEOGRAPH-3160E> 2
+<CJK_UNIFIED_IDEOGRAPH-3160F> 2
+<CJK_UNIFIED_IDEOGRAPH-31610> 2
+<CJK_UNIFIED_IDEOGRAPH-31611> 2
+<CJK_UNIFIED_IDEOGRAPH-31612> 2
+<CJK_UNIFIED_IDEOGRAPH-31613> 2
+<CJK_UNIFIED_IDEOGRAPH-31614> 2
+<CJK_UNIFIED_IDEOGRAPH-31615> 2
+<CJK_UNIFIED_IDEOGRAPH-31616> 2
+<CJK_UNIFIED_IDEOGRAPH-31617> 2
+<CJK_UNIFIED_IDEOGRAPH-31618> 2
+<CJK_UNIFIED_IDEOGRAPH-31619> 2
+<CJK_UNIFIED_IDEOGRAPH-3161A> 2
+<CJK_UNIFIED_IDEOGRAPH-3161B> 2
+<CJK_UNIFIED_IDEOGRAPH-3161C> 2
+<CJK_UNIFIED_IDEOGRAPH-3161D> 2
+<CJK_UNIFIED_IDEOGRAPH-3161E> 2
+<CJK_UNIFIED_IDEOGRAPH-3161F> 2
+<CJK_UNIFIED_IDEOGRAPH-31620> 2
+<CJK_UNIFIED_IDEOGRAPH-31621> 2
+<CJK_UNIFIED_IDEOGRAPH-31622> 2
+<CJK_UNIFIED_IDEOGRAPH-31623> 2
+<CJK_UNIFIED_IDEOGRAPH-31624> 2
+<CJK_UNIFIED_IDEOGRAPH-31625> 2
+<CJK_UNIFIED_IDEOGRAPH-31626> 2
+<CJK_UNIFIED_IDEOGRAPH-31627> 2
+<CJK_UNIFIED_IDEOGRAPH-31628> 2
+<CJK_UNIFIED_IDEOGRAPH-31629> 2
+<CJK_UNIFIED_IDEOGRAPH-3162A> 2
+<CJK_UNIFIED_IDEOGRAPH-3162B> 2
+<CJK_UNIFIED_IDEOGRAPH-3162C> 2
+<CJK_UNIFIED_IDEOGRAPH-3162D> 2
+<CJK_UNIFIED_IDEOGRAPH-3162E> 2
+<CJK_UNIFIED_IDEOGRAPH-3162F> 2
+<CJK_UNIFIED_IDEOGRAPH-31630> 2
+<CJK_UNIFIED_IDEOGRAPH-31631> 2
+<CJK_UNIFIED_IDEOGRAPH-31632> 2
+<CJK_UNIFIED_IDEOGRAPH-31633> 2
+<CJK_UNIFIED_IDEOGRAPH-31634> 2
+<CJK_UNIFIED_IDEOGRAPH-31635> 2
+<CJK_UNIFIED_IDEOGRAPH-31636> 2
+<CJK_UNIFIED_IDEOGRAPH-31637> 2
+<CJK_UNIFIED_IDEOGRAPH-31638> 2
+<CJK_UNIFIED_IDEOGRAPH-31639> 2
+<CJK_UNIFIED_IDEOGRAPH-3163A> 2
+<CJK_UNIFIED_IDEOGRAPH-3163B> 2
+<CJK_UNIFIED_IDEOGRAPH-3163C> 2
+<CJK_UNIFIED_IDEOGRAPH-3163D> 2
+<CJK_UNIFIED_IDEOGRAPH-3163E> 2
+<CJK_UNIFIED_IDEOGRAPH-3163F> 2
+<CJK_UNIFIED_IDEOGRAPH-31640> 2
+<CJK_UNIFIED_IDEOGRAPH-31641> 2
+<CJK_UNIFIED_IDEOGRAPH-31642> 2
+<CJK_UNIFIED_IDEOGRAPH-31643> 2
+<CJK_UNIFIED_IDEOGRAPH-31644> 2
+<CJK_UNIFIED_IDEOGRAPH-31645> 2
+<CJK_UNIFIED_IDEOGRAPH-31646> 2
+<CJK_UNIFIED_IDEOGRAPH-31647> 2
+<CJK_UNIFIED_IDEOGRAPH-31648> 2
+<CJK_UNIFIED_IDEOGRAPH-31649> 2
+<CJK_UNIFIED_IDEOGRAPH-3164A> 2
+<CJK_UNIFIED_IDEOGRAPH-3164B> 2
+<CJK_UNIFIED_IDEOGRAPH-3164C> 2
+<CJK_UNIFIED_IDEOGRAPH-3164D> 2
+<CJK_UNIFIED_IDEOGRAPH-3164E> 2
+<CJK_UNIFIED_IDEOGRAPH-3164F> 2
+<CJK_UNIFIED_IDEOGRAPH-31650> 2
+<CJK_UNIFIED_IDEOGRAPH-31651> 2
+<CJK_UNIFIED_IDEOGRAPH-31652> 2
+<CJK_UNIFIED_IDEOGRAPH-31653> 2
+<CJK_UNIFIED_IDEOGRAPH-31654> 2
+<CJK_UNIFIED_IDEOGRAPH-31655> 2
+<CJK_UNIFIED_IDEOGRAPH-31656> 2
+<CJK_UNIFIED_IDEOGRAPH-31657> 2
+<CJK_UNIFIED_IDEOGRAPH-31658> 2
+<CJK_UNIFIED_IDEOGRAPH-31659> 2
+<CJK_UNIFIED_IDEOGRAPH-3165A> 2
+<CJK_UNIFIED_IDEOGRAPH-3165B> 2
+<CJK_UNIFIED_IDEOGRAPH-3165C> 2
+<CJK_UNIFIED_IDEOGRAPH-3165D> 2
+<CJK_UNIFIED_IDEOGRAPH-3165E> 2
+<CJK_UNIFIED_IDEOGRAPH-3165F> 2
+<CJK_UNIFIED_IDEOGRAPH-31660> 2
+<CJK_UNIFIED_IDEOGRAPH-31661> 2
+<CJK_UNIFIED_IDEOGRAPH-31662> 2
+<CJK_UNIFIED_IDEOGRAPH-31663> 2
+<CJK_UNIFIED_IDEOGRAPH-31664> 2
+<CJK_UNIFIED_IDEOGRAPH-31665> 2
+<CJK_UNIFIED_IDEOGRAPH-31666> 2
+<CJK_UNIFIED_IDEOGRAPH-31667> 2
+<CJK_UNIFIED_IDEOGRAPH-31668> 2
+<CJK_UNIFIED_IDEOGRAPH-31669> 2
+<CJK_UNIFIED_IDEOGRAPH-3166A> 2
+<CJK_UNIFIED_IDEOGRAPH-3166B> 2
+<CJK_UNIFIED_IDEOGRAPH-3166C> 2
+<CJK_UNIFIED_IDEOGRAPH-3166D> 2
+<CJK_UNIFIED_IDEOGRAPH-3166E> 2
+<CJK_UNIFIED_IDEOGRAPH-3166F> 2
+<CJK_UNIFIED_IDEOGRAPH-31670> 2
+<CJK_UNIFIED_IDEOGRAPH-31671> 2
+<CJK_UNIFIED_IDEOGRAPH-31672> 2
+<CJK_UNIFIED_IDEOGRAPH-31673> 2
+<CJK_UNIFIED_IDEOGRAPH-31674> 2
+<CJK_UNIFIED_IDEOGRAPH-31675> 2
+<CJK_UNIFIED_IDEOGRAPH-31676> 2
+<CJK_UNIFIED_IDEOGRAPH-31677> 2
+<CJK_UNIFIED_IDEOGRAPH-31678> 2
+<CJK_UNIFIED_IDEOGRAPH-31679> 2
+<CJK_UNIFIED_IDEOGRAPH-3167A> 2
+<CJK_UNIFIED_IDEOGRAPH-3167B> 2
+<CJK_UNIFIED_IDEOGRAPH-3167C> 2
+<CJK_UNIFIED_IDEOGRAPH-3167D> 2
+<CJK_UNIFIED_IDEOGRAPH-3167E> 2
+<CJK_UNIFIED_IDEOGRAPH-3167F> 2
+<CJK_UNIFIED_IDEOGRAPH-31680> 2
+<CJK_UNIFIED_IDEOGRAPH-31681> 2
+<CJK_UNIFIED_IDEOGRAPH-31682> 2
+<CJK_UNIFIED_IDEOGRAPH-31683> 2
+<CJK_UNIFIED_IDEOGRAPH-31684> 2
+<CJK_UNIFIED_IDEOGRAPH-31685> 2
+<CJK_UNIFIED_IDEOGRAPH-31686> 2
+<CJK_UNIFIED_IDEOGRAPH-31687> 2
+<CJK_UNIFIED_IDEOGRAPH-31688> 2
+<CJK_UNIFIED_IDEOGRAPH-31689> 2
+<CJK_UNIFIED_IDEOGRAPH-3168A> 2
+<CJK_UNIFIED_IDEOGRAPH-3168B> 2
+<CJK_UNIFIED_IDEOGRAPH-3168C> 2
+<CJK_UNIFIED_IDEOGRAPH-3168D> 2
+<CJK_UNIFIED_IDEOGRAPH-3168E> 2
+<CJK_UNIFIED_IDEOGRAPH-3168F> 2
+<CJK_UNIFIED_IDEOGRAPH-31690> 2
+<CJK_UNIFIED_IDEOGRAPH-31691> 2
+<CJK_UNIFIED_IDEOGRAPH-31692> 2
+<CJK_UNIFIED_IDEOGRAPH-31693> 2
+<CJK_UNIFIED_IDEOGRAPH-31694> 2
+<CJK_UNIFIED_IDEOGRAPH-31695> 2
+<CJK_UNIFIED_IDEOGRAPH-31696> 2
+<CJK_UNIFIED_IDEOGRAPH-31697> 2
+<CJK_UNIFIED_IDEOGRAPH-31698> 2
+<CJK_UNIFIED_IDEOGRAPH-31699> 2
+<CJK_UNIFIED_IDEOGRAPH-3169A> 2
+<CJK_UNIFIED_IDEOGRAPH-3169B> 2
+<CJK_UNIFIED_IDEOGRAPH-3169C> 2
+<CJK_UNIFIED_IDEOGRAPH-3169D> 2
+<CJK_UNIFIED_IDEOGRAPH-3169E> 2
+<CJK_UNIFIED_IDEOGRAPH-3169F> 2
+<CJK_UNIFIED_IDEOGRAPH-316A0> 2
+<CJK_UNIFIED_IDEOGRAPH-316A1> 2
+<CJK_UNIFIED_IDEOGRAPH-316A2> 2
+<CJK_UNIFIED_IDEOGRAPH-316A3> 2
+<CJK_UNIFIED_IDEOGRAPH-316A4> 2
+<CJK_UNIFIED_IDEOGRAPH-316A5> 2
+<CJK_UNIFIED_IDEOGRAPH-316A6> 2
+<CJK_UNIFIED_IDEOGRAPH-316A7> 2
+<CJK_UNIFIED_IDEOGRAPH-316A8> 2
+<CJK_UNIFIED_IDEOGRAPH-316A9> 2
+<CJK_UNIFIED_IDEOGRAPH-316AA> 2
+<CJK_UNIFIED_IDEOGRAPH-316AB> 2
+<CJK_UNIFIED_IDEOGRAPH-316AC> 2
+<CJK_UNIFIED_IDEOGRAPH-316AD> 2
+<CJK_UNIFIED_IDEOGRAPH-316AE> 2
+<CJK_UNIFIED_IDEOGRAPH-316AF> 2
+<CJK_UNIFIED_IDEOGRAPH-316B0> 2
+<CJK_UNIFIED_IDEOGRAPH-316B1> 2
+<CJK_UNIFIED_IDEOGRAPH-316B2> 2
+<CJK_UNIFIED_IDEOGRAPH-316B3> 2
+<CJK_UNIFIED_IDEOGRAPH-316B4> 2
+<CJK_UNIFIED_IDEOGRAPH-316B5> 2
+<CJK_UNIFIED_IDEOGRAPH-316B6> 2
+<CJK_UNIFIED_IDEOGRAPH-316B7> 2
+<CJK_UNIFIED_IDEOGRAPH-316B8> 2
+<CJK_UNIFIED_IDEOGRAPH-316B9> 2
+<CJK_UNIFIED_IDEOGRAPH-316BA> 2
+<CJK_UNIFIED_IDEOGRAPH-316BB> 2
+<CJK_UNIFIED_IDEOGRAPH-316BC> 2
+<CJK_UNIFIED_IDEOGRAPH-316BD> 2
+<CJK_UNIFIED_IDEOGRAPH-316BE> 2
+<CJK_UNIFIED_IDEOGRAPH-316BF> 2
+<CJK_UNIFIED_IDEOGRAPH-316C0> 2
+<CJK_UNIFIED_IDEOGRAPH-316C1> 2
+<CJK_UNIFIED_IDEOGRAPH-316C2> 2
+<CJK_UNIFIED_IDEOGRAPH-316C3> 2
+<CJK_UNIFIED_IDEOGRAPH-316C4> 2
+<CJK_UNIFIED_IDEOGRAPH-316C5> 2
+<CJK_UNIFIED_IDEOGRAPH-316C6> 2
+<CJK_UNIFIED_IDEOGRAPH-316C7> 2
+<CJK_UNIFIED_IDEOGRAPH-316C8> 2
+<CJK_UNIFIED_IDEOGRAPH-316C9> 2
+<CJK_UNIFIED_IDEOGRAPH-316CA> 2
+<CJK_UNIFIED_IDEOGRAPH-316CB> 2
+<CJK_UNIFIED_IDEOGRAPH-316CC> 2
+<CJK_UNIFIED_IDEOGRAPH-316CD> 2
+<CJK_UNIFIED_IDEOGRAPH-316CE> 2
+<CJK_UNIFIED_IDEOGRAPH-316CF> 2
+<CJK_UNIFIED_IDEOGRAPH-316D0> 2
+<CJK_UNIFIED_IDEOGRAPH-316D1> 2
+<CJK_UNIFIED_IDEOGRAPH-316D2> 2
+<CJK_UNIFIED_IDEOGRAPH-316D3> 2
+<CJK_UNIFIED_IDEOGRAPH-316D4> 2
+<CJK_UNIFIED_IDEOGRAPH-316D5> 2
+<CJK_UNIFIED_IDEOGRAPH-316D6> 2
+<CJK_UNIFIED_IDEOGRAPH-316D7> 2
+<CJK_UNIFIED_IDEOGRAPH-316D8> 2
+<CJK_UNIFIED_IDEOGRAPH-316D9> 2
+<CJK_UNIFIED_IDEOGRAPH-316DA> 2
+<CJK_UNIFIED_IDEOGRAPH-316DB> 2
+<CJK_UNIFIED_IDEOGRAPH-316DC> 2
+<CJK_UNIFIED_IDEOGRAPH-316DD> 2
+<CJK_UNIFIED_IDEOGRAPH-316DE> 2
+<CJK_UNIFIED_IDEOGRAPH-316DF> 2
+<CJK_UNIFIED_IDEOGRAPH-316E0> 2
+<CJK_UNIFIED_IDEOGRAPH-316E1> 2
+<CJK_UNIFIED_IDEOGRAPH-316E2> 2
+<CJK_UNIFIED_IDEOGRAPH-316E3> 2
+<CJK_UNIFIED_IDEOGRAPH-316E4> 2
+<CJK_UNIFIED_IDEOGRAPH-316E5> 2
+<CJK_UNIFIED_IDEOGRAPH-316E6> 2
+<CJK_UNIFIED_IDEOGRAPH-316E7> 2
+<CJK_UNIFIED_IDEOGRAPH-316E8> 2
+<CJK_UNIFIED_IDEOGRAPH-316E9> 2
+<CJK_UNIFIED_IDEOGRAPH-316EA> 2
+<CJK_UNIFIED_IDEOGRAPH-316EB> 2
+<CJK_UNIFIED_IDEOGRAPH-316EC> 2
+<CJK_UNIFIED_IDEOGRAPH-316ED> 2
+<CJK_UNIFIED_IDEOGRAPH-316EE> 2
+<CJK_UNIFIED_IDEOGRAPH-316EF> 2
+<CJK_UNIFIED_IDEOGRAPH-316F0> 2
+<CJK_UNIFIED_IDEOGRAPH-316F1> 2
+<CJK_UNIFIED_IDEOGRAPH-316F2> 2
+<CJK_UNIFIED_IDEOGRAPH-316F3> 2
+<CJK_UNIFIED_IDEOGRAPH-316F4> 2
+<CJK_UNIFIED_IDEOGRAPH-316F5> 2
+<CJK_UNIFIED_IDEOGRAPH-316F6> 2
+<CJK_UNIFIED_IDEOGRAPH-316F7> 2
+<CJK_UNIFIED_IDEOGRAPH-316F8> 2
+<CJK_UNIFIED_IDEOGRAPH-316F9> 2
+<CJK_UNIFIED_IDEOGRAPH-316FA> 2
+<CJK_UNIFIED_IDEOGRAPH-316FB> 2
+<CJK_UNIFIED_IDEOGRAPH-316FC> 2
+<CJK_UNIFIED_IDEOGRAPH-316FD> 2
+<CJK_UNIFIED_IDEOGRAPH-316FE> 2
+<CJK_UNIFIED_IDEOGRAPH-316FF> 2
+<CJK_UNIFIED_IDEOGRAPH-31700> 2
+<CJK_UNIFIED_IDEOGRAPH-31701> 2
+<CJK_UNIFIED_IDEOGRAPH-31702> 2
+<CJK_UNIFIED_IDEOGRAPH-31703> 2
+<CJK_UNIFIED_IDEOGRAPH-31704> 2
+<CJK_UNIFIED_IDEOGRAPH-31705> 2
+<CJK_UNIFIED_IDEOGRAPH-31706> 2
+<CJK_UNIFIED_IDEOGRAPH-31707> 2
+<CJK_UNIFIED_IDEOGRAPH-31708> 2
+<CJK_UNIFIED_IDEOGRAPH-31709> 2
+<CJK_UNIFIED_IDEOGRAPH-3170A> 2
+<CJK_UNIFIED_IDEOGRAPH-3170B> 2
+<CJK_UNIFIED_IDEOGRAPH-3170C> 2
+<CJK_UNIFIED_IDEOGRAPH-3170D> 2
+<CJK_UNIFIED_IDEOGRAPH-3170E> 2
+<CJK_UNIFIED_IDEOGRAPH-3170F> 2
+<CJK_UNIFIED_IDEOGRAPH-31710> 2
+<CJK_UNIFIED_IDEOGRAPH-31711> 2
+<CJK_UNIFIED_IDEOGRAPH-31712> 2
+<CJK_UNIFIED_IDEOGRAPH-31713> 2
+<CJK_UNIFIED_IDEOGRAPH-31714> 2
+<CJK_UNIFIED_IDEOGRAPH-31715> 2
+<CJK_UNIFIED_IDEOGRAPH-31716> 2
+<CJK_UNIFIED_IDEOGRAPH-31717> 2
+<CJK_UNIFIED_IDEOGRAPH-31718> 2
+<CJK_UNIFIED_IDEOGRAPH-31719> 2
+<CJK_UNIFIED_IDEOGRAPH-3171A> 2
+<CJK_UNIFIED_IDEOGRAPH-3171B> 2
+<CJK_UNIFIED_IDEOGRAPH-3171C> 2
+<CJK_UNIFIED_IDEOGRAPH-3171D> 2
+<CJK_UNIFIED_IDEOGRAPH-3171E> 2
+<CJK_UNIFIED_IDEOGRAPH-3171F> 2
+<CJK_UNIFIED_IDEOGRAPH-31720> 2
+<CJK_UNIFIED_IDEOGRAPH-31721> 2
+<CJK_UNIFIED_IDEOGRAPH-31722> 2
+<CJK_UNIFIED_IDEOGRAPH-31723> 2
+<CJK_UNIFIED_IDEOGRAPH-31724> 2
+<CJK_UNIFIED_IDEOGRAPH-31725> 2
+<CJK_UNIFIED_IDEOGRAPH-31726> 2
+<CJK_UNIFIED_IDEOGRAPH-31727> 2
+<CJK_UNIFIED_IDEOGRAPH-31728> 2
+<CJK_UNIFIED_IDEOGRAPH-31729> 2
+<CJK_UNIFIED_IDEOGRAPH-3172A> 2
+<CJK_UNIFIED_IDEOGRAPH-3172B> 2
+<CJK_UNIFIED_IDEOGRAPH-3172C> 2
+<CJK_UNIFIED_IDEOGRAPH-3172D> 2
+<CJK_UNIFIED_IDEOGRAPH-3172E> 2
+<CJK_UNIFIED_IDEOGRAPH-3172F> 2
+<CJK_UNIFIED_IDEOGRAPH-31730> 2
+<CJK_UNIFIED_IDEOGRAPH-31731> 2
+<CJK_UNIFIED_IDEOGRAPH-31732> 2
+<CJK_UNIFIED_IDEOGRAPH-31733> 2
+<CJK_UNIFIED_IDEOGRAPH-31734> 2
+<CJK_UNIFIED_IDEOGRAPH-31735> 2
+<CJK_UNIFIED_IDEOGRAPH-31736> 2
+<CJK_UNIFIED_IDEOGRAPH-31737> 2
+<CJK_UNIFIED_IDEOGRAPH-31738> 2
+<CJK_UNIFIED_IDEOGRAPH-31739> 2
+<CJK_UNIFIED_IDEOGRAPH-3173A> 2
+<CJK_UNIFIED_IDEOGRAPH-3173B> 2
+<CJK_UNIFIED_IDEOGRAPH-3173C> 2
+<CJK_UNIFIED_IDEOGRAPH-3173D> 2
+<CJK_UNIFIED_IDEOGRAPH-3173E> 2
+<CJK_UNIFIED_IDEOGRAPH-3173F> 2
+<CJK_UNIFIED_IDEOGRAPH-31740> 2
+<CJK_UNIFIED_IDEOGRAPH-31741> 2
+<CJK_UNIFIED_IDEOGRAPH-31742> 2
+<CJK_UNIFIED_IDEOGRAPH-31743> 2
+<CJK_UNIFIED_IDEOGRAPH-31744> 2
+<CJK_UNIFIED_IDEOGRAPH-31745> 2
+<CJK_UNIFIED_IDEOGRAPH-31746> 2
+<CJK_UNIFIED_IDEOGRAPH-31747> 2
+<CJK_UNIFIED_IDEOGRAPH-31748> 2
+<CJK_UNIFIED_IDEOGRAPH-31749> 2
+<CJK_UNIFIED_IDEOGRAPH-3174A> 2
+<CJK_UNIFIED_IDEOGRAPH-3174B> 2
+<CJK_UNIFIED_IDEOGRAPH-3174C> 2
+<CJK_UNIFIED_IDEOGRAPH-3174D> 2
+<CJK_UNIFIED_IDEOGRAPH-3174E> 2
+<CJK_UNIFIED_IDEOGRAPH-3174F> 2
+<CJK_UNIFIED_IDEOGRAPH-31750> 2
+<CJK_UNIFIED_IDEOGRAPH-31751> 2
+<CJK_UNIFIED_IDEOGRAPH-31752> 2
+<CJK_UNIFIED_IDEOGRAPH-31753> 2
+<CJK_UNIFIED_IDEOGRAPH-31754> 2
+<CJK_UNIFIED_IDEOGRAPH-31755> 2
+<CJK_UNIFIED_IDEOGRAPH-31756> 2
+<CJK_UNIFIED_IDEOGRAPH-31757> 2
+<CJK_UNIFIED_IDEOGRAPH-31758> 2
+<CJK_UNIFIED_IDEOGRAPH-31759> 2
+<CJK_UNIFIED_IDEOGRAPH-3175A> 2
+<CJK_UNIFIED_IDEOGRAPH-3175B> 2
+<CJK_UNIFIED_IDEOGRAPH-3175C> 2
+<CJK_UNIFIED_IDEOGRAPH-3175D> 2
+<CJK_UNIFIED_IDEOGRAPH-3175E> 2
+<CJK_UNIFIED_IDEOGRAPH-3175F> 2
+<CJK_UNIFIED_IDEOGRAPH-31760> 2
+<CJK_UNIFIED_IDEOGRAPH-31761> 2
+<CJK_UNIFIED_IDEOGRAPH-31762> 2
+<CJK_UNIFIED_IDEOGRAPH-31763> 2
+<CJK_UNIFIED_IDEOGRAPH-31764> 2
+<CJK_UNIFIED_IDEOGRAPH-31765> 2
+<CJK_UNIFIED_IDEOGRAPH-31766> 2
+<CJK_UNIFIED_IDEOGRAPH-31767> 2
+<CJK_UNIFIED_IDEOGRAPH-31768> 2
+<CJK_UNIFIED_IDEOGRAPH-31769> 2
+<CJK_UNIFIED_IDEOGRAPH-3176A> 2
+<CJK_UNIFIED_IDEOGRAPH-3176B> 2
+<CJK_UNIFIED_IDEOGRAPH-3176C> 2
+<CJK_UNIFIED_IDEOGRAPH-3176D> 2
+<CJK_UNIFIED_IDEOGRAPH-3176E> 2
+<CJK_UNIFIED_IDEOGRAPH-3176F> 2
+<CJK_UNIFIED_IDEOGRAPH-31770> 2
+<CJK_UNIFIED_IDEOGRAPH-31771> 2
+<CJK_UNIFIED_IDEOGRAPH-31772> 2
+<CJK_UNIFIED_IDEOGRAPH-31773> 2
+<CJK_UNIFIED_IDEOGRAPH-31774> 2
+<CJK_UNIFIED_IDEOGRAPH-31775> 2
+<CJK_UNIFIED_IDEOGRAPH-31776> 2
+<CJK_UNIFIED_IDEOGRAPH-31777> 2
+<CJK_UNIFIED_IDEOGRAPH-31778> 2
+<CJK_UNIFIED_IDEOGRAPH-31779> 2
+<CJK_UNIFIED_IDEOGRAPH-3177A> 2
+<CJK_UNIFIED_IDEOGRAPH-3177B> 2
+<CJK_UNIFIED_IDEOGRAPH-3177C> 2
+<CJK_UNIFIED_IDEOGRAPH-3177D> 2
+<CJK_UNIFIED_IDEOGRAPH-3177E> 2
+<CJK_UNIFIED_IDEOGRAPH-3177F> 2
+<CJK_UNIFIED_IDEOGRAPH-31780> 2
+<CJK_UNIFIED_IDEOGRAPH-31781> 2
+<CJK_UNIFIED_IDEOGRAPH-31782> 2
+<CJK_UNIFIED_IDEOGRAPH-31783> 2
+<CJK_UNIFIED_IDEOGRAPH-31784> 2
+<CJK_UNIFIED_IDEOGRAPH-31785> 2
+<CJK_UNIFIED_IDEOGRAPH-31786> 2
+<CJK_UNIFIED_IDEOGRAPH-31787> 2
+<CJK_UNIFIED_IDEOGRAPH-31788> 2
+<CJK_UNIFIED_IDEOGRAPH-31789> 2
+<CJK_UNIFIED_IDEOGRAPH-3178A> 2
+<CJK_UNIFIED_IDEOGRAPH-3178B> 2
+<CJK_UNIFIED_IDEOGRAPH-3178C> 2
+<CJK_UNIFIED_IDEOGRAPH-3178D> 2
+<CJK_UNIFIED_IDEOGRAPH-3178E> 2
+<CJK_UNIFIED_IDEOGRAPH-3178F> 2
+<CJK_UNIFIED_IDEOGRAPH-31790> 2
+<CJK_UNIFIED_IDEOGRAPH-31791> 2
+<CJK_UNIFIED_IDEOGRAPH-31792> 2
+<CJK_UNIFIED_IDEOGRAPH-31793> 2
+<CJK_UNIFIED_IDEOGRAPH-31794> 2
+<CJK_UNIFIED_IDEOGRAPH-31795> 2
+<CJK_UNIFIED_IDEOGRAPH-31796> 2
+<CJK_UNIFIED_IDEOGRAPH-31797> 2
+<CJK_UNIFIED_IDEOGRAPH-31798> 2
+<CJK_UNIFIED_IDEOGRAPH-31799> 2
+<CJK_UNIFIED_IDEOGRAPH-3179A> 2
+<CJK_UNIFIED_IDEOGRAPH-3179B> 2
+<CJK_UNIFIED_IDEOGRAPH-3179C> 2
+<CJK_UNIFIED_IDEOGRAPH-3179D> 2
+<CJK_UNIFIED_IDEOGRAPH-3179E> 2
+<CJK_UNIFIED_IDEOGRAPH-3179F> 2
+<CJK_UNIFIED_IDEOGRAPH-317A0> 2
+<CJK_UNIFIED_IDEOGRAPH-317A1> 2
+<CJK_UNIFIED_IDEOGRAPH-317A2> 2
+<CJK_UNIFIED_IDEOGRAPH-317A3> 2
+<CJK_UNIFIED_IDEOGRAPH-317A4> 2
+<CJK_UNIFIED_IDEOGRAPH-317A5> 2
+<CJK_UNIFIED_IDEOGRAPH-317A6> 2
+<CJK_UNIFIED_IDEOGRAPH-317A7> 2
+<CJK_UNIFIED_IDEOGRAPH-317A8> 2
+<CJK_UNIFIED_IDEOGRAPH-317A9> 2
+<CJK_UNIFIED_IDEOGRAPH-317AA> 2
+<CJK_UNIFIED_IDEOGRAPH-317AB> 2
+<CJK_UNIFIED_IDEOGRAPH-317AC> 2
+<CJK_UNIFIED_IDEOGRAPH-317AD> 2
+<CJK_UNIFIED_IDEOGRAPH-317AE> 2
+<CJK_UNIFIED_IDEOGRAPH-317AF> 2
+<CJK_UNIFIED_IDEOGRAPH-317B0> 2
+<CJK_UNIFIED_IDEOGRAPH-317B1> 2
+<CJK_UNIFIED_IDEOGRAPH-317B2> 2
+<CJK_UNIFIED_IDEOGRAPH-317B3> 2
+<CJK_UNIFIED_IDEOGRAPH-317B4> 2
+<CJK_UNIFIED_IDEOGRAPH-317B5> 2
+<CJK_UNIFIED_IDEOGRAPH-317B6> 2
+<CJK_UNIFIED_IDEOGRAPH-317B7> 2
+<CJK_UNIFIED_IDEOGRAPH-317B8> 2
+<CJK_UNIFIED_IDEOGRAPH-317B9> 2
+<CJK_UNIFIED_IDEOGRAPH-317BA> 2
+<CJK_UNIFIED_IDEOGRAPH-317BB> 2
+<CJK_UNIFIED_IDEOGRAPH-317BC> 2
+<CJK_UNIFIED_IDEOGRAPH-317BD> 2
+<CJK_UNIFIED_IDEOGRAPH-317BE> 2
+<CJK_UNIFIED_IDEOGRAPH-317BF> 2
+<CJK_UNIFIED_IDEOGRAPH-317C0> 2
+<CJK_UNIFIED_IDEOGRAPH-317C1> 2
+<CJK_UNIFIED_IDEOGRAPH-317C2> 2
+<CJK_UNIFIED_IDEOGRAPH-317C3> 2
+<CJK_UNIFIED_IDEOGRAPH-317C4> 2
+<CJK_UNIFIED_IDEOGRAPH-317C5> 2
+<CJK_UNIFIED_IDEOGRAPH-317C6> 2
+<CJK_UNIFIED_IDEOGRAPH-317C7> 2
+<CJK_UNIFIED_IDEOGRAPH-317C8> 2
+<CJK_UNIFIED_IDEOGRAPH-317C9> 2
+<CJK_UNIFIED_IDEOGRAPH-317CA> 2
+<CJK_UNIFIED_IDEOGRAPH-317CB> 2
+<CJK_UNIFIED_IDEOGRAPH-317CC> 2
+<CJK_UNIFIED_IDEOGRAPH-317CD> 2
+<CJK_UNIFIED_IDEOGRAPH-317CE> 2
+<CJK_UNIFIED_IDEOGRAPH-317CF> 2
+<CJK_UNIFIED_IDEOGRAPH-317D0> 2
+<CJK_UNIFIED_IDEOGRAPH-317D1> 2
+<CJK_UNIFIED_IDEOGRAPH-317D2> 2
+<CJK_UNIFIED_IDEOGRAPH-317D3> 2
+<CJK_UNIFIED_IDEOGRAPH-317D4> 2
+<CJK_UNIFIED_IDEOGRAPH-317D5> 2
+<CJK_UNIFIED_IDEOGRAPH-317D6> 2
+<CJK_UNIFIED_IDEOGRAPH-317D7> 2
+<CJK_UNIFIED_IDEOGRAPH-317D8> 2
+<CJK_UNIFIED_IDEOGRAPH-317D9> 2
+<CJK_UNIFIED_IDEOGRAPH-317DA> 2
+<CJK_UNIFIED_IDEOGRAPH-317DB> 2
+<CJK_UNIFIED_IDEOGRAPH-317DC> 2
+<CJK_UNIFIED_IDEOGRAPH-317DD> 2
+<CJK_UNIFIED_IDEOGRAPH-317DE> 2
+<CJK_UNIFIED_IDEOGRAPH-317DF> 2
+<CJK_UNIFIED_IDEOGRAPH-317E0> 2
+<CJK_UNIFIED_IDEOGRAPH-317E1> 2
+<CJK_UNIFIED_IDEOGRAPH-317E2> 2
+<CJK_UNIFIED_IDEOGRAPH-317E3> 2
+<CJK_UNIFIED_IDEOGRAPH-317E4> 2
+<CJK_UNIFIED_IDEOGRAPH-317E5> 2
+<CJK_UNIFIED_IDEOGRAPH-317E6> 2
+<CJK_UNIFIED_IDEOGRAPH-317E7> 2
+<CJK_UNIFIED_IDEOGRAPH-317E8> 2
+<CJK_UNIFIED_IDEOGRAPH-317E9> 2
+<CJK_UNIFIED_IDEOGRAPH-317EA> 2
+<CJK_UNIFIED_IDEOGRAPH-317EB> 2
+<CJK_UNIFIED_IDEOGRAPH-317EC> 2
+<CJK_UNIFIED_IDEOGRAPH-317ED> 2
+<CJK_UNIFIED_IDEOGRAPH-317EE> 2
+<CJK_UNIFIED_IDEOGRAPH-317EF> 2
+<CJK_UNIFIED_IDEOGRAPH-317F0> 2
+<CJK_UNIFIED_IDEOGRAPH-317F1> 2
+<CJK_UNIFIED_IDEOGRAPH-317F2> 2
+<CJK_UNIFIED_IDEOGRAPH-317F3> 2
+<CJK_UNIFIED_IDEOGRAPH-317F4> 2
+<CJK_UNIFIED_IDEOGRAPH-317F5> 2
+<CJK_UNIFIED_IDEOGRAPH-317F6> 2
+<CJK_UNIFIED_IDEOGRAPH-317F7> 2
+<CJK_UNIFIED_IDEOGRAPH-317F8> 2
+<CJK_UNIFIED_IDEOGRAPH-317F9> 2
+<CJK_UNIFIED_IDEOGRAPH-317FA> 2
+<CJK_UNIFIED_IDEOGRAPH-317FB> 2
+<CJK_UNIFIED_IDEOGRAPH-317FC> 2
+<CJK_UNIFIED_IDEOGRAPH-317FD> 2
+<CJK_UNIFIED_IDEOGRAPH-317FE> 2
+<CJK_UNIFIED_IDEOGRAPH-317FF> 2
+<CJK_UNIFIED_IDEOGRAPH-31800> 2
+<CJK_UNIFIED_IDEOGRAPH-31801> 2
+<CJK_UNIFIED_IDEOGRAPH-31802> 2
+<CJK_UNIFIED_IDEOGRAPH-31803> 2
+<CJK_UNIFIED_IDEOGRAPH-31804> 2
+<CJK_UNIFIED_IDEOGRAPH-31805> 2
+<CJK_UNIFIED_IDEOGRAPH-31806> 2
+<CJK_UNIFIED_IDEOGRAPH-31807> 2
+<CJK_UNIFIED_IDEOGRAPH-31808> 2
+<CJK_UNIFIED_IDEOGRAPH-31809> 2
+<CJK_UNIFIED_IDEOGRAPH-3180A> 2
+<CJK_UNIFIED_IDEOGRAPH-3180B> 2
+<CJK_UNIFIED_IDEOGRAPH-3180C> 2
+<CJK_UNIFIED_IDEOGRAPH-3180D> 2
+<CJK_UNIFIED_IDEOGRAPH-3180E> 2
+<CJK_UNIFIED_IDEOGRAPH-3180F> 2
+<CJK_UNIFIED_IDEOGRAPH-31810> 2
+<CJK_UNIFIED_IDEOGRAPH-31811> 2
+<CJK_UNIFIED_IDEOGRAPH-31812> 2
+<CJK_UNIFIED_IDEOGRAPH-31813> 2
+<CJK_UNIFIED_IDEOGRAPH-31814> 2
+<CJK_UNIFIED_IDEOGRAPH-31815> 2
+<CJK_UNIFIED_IDEOGRAPH-31816> 2
+<CJK_UNIFIED_IDEOGRAPH-31817> 2
+<CJK_UNIFIED_IDEOGRAPH-31818> 2
+<CJK_UNIFIED_IDEOGRAPH-31819> 2
+<CJK_UNIFIED_IDEOGRAPH-3181A> 2
+<CJK_UNIFIED_IDEOGRAPH-3181B> 2
+<CJK_UNIFIED_IDEOGRAPH-3181C> 2
+<CJK_UNIFIED_IDEOGRAPH-3181D> 2
+<CJK_UNIFIED_IDEOGRAPH-3181E> 2
+<CJK_UNIFIED_IDEOGRAPH-3181F> 2
+<CJK_UNIFIED_IDEOGRAPH-31820> 2
+<CJK_UNIFIED_IDEOGRAPH-31821> 2
+<CJK_UNIFIED_IDEOGRAPH-31822> 2
+<CJK_UNIFIED_IDEOGRAPH-31823> 2
+<CJK_UNIFIED_IDEOGRAPH-31824> 2
+<CJK_UNIFIED_IDEOGRAPH-31825> 2
+<CJK_UNIFIED_IDEOGRAPH-31826> 2
+<CJK_UNIFIED_IDEOGRAPH-31827> 2
+<CJK_UNIFIED_IDEOGRAPH-31828> 2
+<CJK_UNIFIED_IDEOGRAPH-31829> 2
+<CJK_UNIFIED_IDEOGRAPH-3182A> 2
+<CJK_UNIFIED_IDEOGRAPH-3182B> 2
+<CJK_UNIFIED_IDEOGRAPH-3182C> 2
+<CJK_UNIFIED_IDEOGRAPH-3182D> 2
+<CJK_UNIFIED_IDEOGRAPH-3182E> 2
+<CJK_UNIFIED_IDEOGRAPH-3182F> 2
+<CJK_UNIFIED_IDEOGRAPH-31830> 2
+<CJK_UNIFIED_IDEOGRAPH-31831> 2
+<CJK_UNIFIED_IDEOGRAPH-31832> 2
+<CJK_UNIFIED_IDEOGRAPH-31833> 2
+<CJK_UNIFIED_IDEOGRAPH-31834> 2
+<CJK_UNIFIED_IDEOGRAPH-31835> 2
+<CJK_UNIFIED_IDEOGRAPH-31836> 2
+<CJK_UNIFIED_IDEOGRAPH-31837> 2
+<CJK_UNIFIED_IDEOGRAPH-31838> 2
+<CJK_UNIFIED_IDEOGRAPH-31839> 2
+<CJK_UNIFIED_IDEOGRAPH-3183A> 2
+<CJK_UNIFIED_IDEOGRAPH-3183B> 2
+<CJK_UNIFIED_IDEOGRAPH-3183C> 2
+<CJK_UNIFIED_IDEOGRAPH-3183D> 2
+<CJK_UNIFIED_IDEOGRAPH-3183E> 2
+<CJK_UNIFIED_IDEOGRAPH-3183F> 2
+<CJK_UNIFIED_IDEOGRAPH-31840> 2
+<CJK_UNIFIED_IDEOGRAPH-31841> 2
+<CJK_UNIFIED_IDEOGRAPH-31842> 2
+<CJK_UNIFIED_IDEOGRAPH-31843> 2
+<CJK_UNIFIED_IDEOGRAPH-31844> 2
+<CJK_UNIFIED_IDEOGRAPH-31845> 2
+<CJK_UNIFIED_IDEOGRAPH-31846> 2
+<CJK_UNIFIED_IDEOGRAPH-31847> 2
+<CJK_UNIFIED_IDEOGRAPH-31848> 2
+<CJK_UNIFIED_IDEOGRAPH-31849> 2
+<CJK_UNIFIED_IDEOGRAPH-3184A> 2
+<CJK_UNIFIED_IDEOGRAPH-3184B> 2
+<CJK_UNIFIED_IDEOGRAPH-3184C> 2
+<CJK_UNIFIED_IDEOGRAPH-3184D> 2
+<CJK_UNIFIED_IDEOGRAPH-3184E> 2
+<CJK_UNIFIED_IDEOGRAPH-3184F> 2
+<CJK_UNIFIED_IDEOGRAPH-31850> 2
+<CJK_UNIFIED_IDEOGRAPH-31851> 2
+<CJK_UNIFIED_IDEOGRAPH-31852> 2
+<CJK_UNIFIED_IDEOGRAPH-31853> 2
+<CJK_UNIFIED_IDEOGRAPH-31854> 2
+<CJK_UNIFIED_IDEOGRAPH-31855> 2
+<CJK_UNIFIED_IDEOGRAPH-31856> 2
+<CJK_UNIFIED_IDEOGRAPH-31857> 2
+<CJK_UNIFIED_IDEOGRAPH-31858> 2
+<CJK_UNIFIED_IDEOGRAPH-31859> 2
+<CJK_UNIFIED_IDEOGRAPH-3185A> 2
+<CJK_UNIFIED_IDEOGRAPH-3185B> 2
+<CJK_UNIFIED_IDEOGRAPH-3185C> 2
+<CJK_UNIFIED_IDEOGRAPH-3185D> 2
+<CJK_UNIFIED_IDEOGRAPH-3185E> 2
+<CJK_UNIFIED_IDEOGRAPH-3185F> 2
+<CJK_UNIFIED_IDEOGRAPH-31860> 2
+<CJK_UNIFIED_IDEOGRAPH-31861> 2
+<CJK_UNIFIED_IDEOGRAPH-31862> 2
+<CJK_UNIFIED_IDEOGRAPH-31863> 2
+<CJK_UNIFIED_IDEOGRAPH-31864> 2
+<CJK_UNIFIED_IDEOGRAPH-31865> 2
+<CJK_UNIFIED_IDEOGRAPH-31866> 2
+<CJK_UNIFIED_IDEOGRAPH-31867> 2
+<CJK_UNIFIED_IDEOGRAPH-31868> 2
+<CJK_UNIFIED_IDEOGRAPH-31869> 2
+<CJK_UNIFIED_IDEOGRAPH-3186A> 2
+<CJK_UNIFIED_IDEOGRAPH-3186B> 2
+<CJK_UNIFIED_IDEOGRAPH-3186C> 2
+<CJK_UNIFIED_IDEOGRAPH-3186D> 2
+<CJK_UNIFIED_IDEOGRAPH-3186E> 2
+<CJK_UNIFIED_IDEOGRAPH-3186F> 2
+<CJK_UNIFIED_IDEOGRAPH-31870> 2
+<CJK_UNIFIED_IDEOGRAPH-31871> 2
+<CJK_UNIFIED_IDEOGRAPH-31872> 2
+<CJK_UNIFIED_IDEOGRAPH-31873> 2
+<CJK_UNIFIED_IDEOGRAPH-31874> 2
+<CJK_UNIFIED_IDEOGRAPH-31875> 2
+<CJK_UNIFIED_IDEOGRAPH-31876> 2
+<CJK_UNIFIED_IDEOGRAPH-31877> 2
+<CJK_UNIFIED_IDEOGRAPH-31878> 2
+<CJK_UNIFIED_IDEOGRAPH-31879> 2
+<CJK_UNIFIED_IDEOGRAPH-3187A> 2
+<CJK_UNIFIED_IDEOGRAPH-3187B> 2
+<CJK_UNIFIED_IDEOGRAPH-3187C> 2
+<CJK_UNIFIED_IDEOGRAPH-3187D> 2
+<CJK_UNIFIED_IDEOGRAPH-3187E> 2
+<CJK_UNIFIED_IDEOGRAPH-3187F> 2
+<CJK_UNIFIED_IDEOGRAPH-31880> 2
+<CJK_UNIFIED_IDEOGRAPH-31881> 2
+<CJK_UNIFIED_IDEOGRAPH-31882> 2
+<CJK_UNIFIED_IDEOGRAPH-31883> 2
+<CJK_UNIFIED_IDEOGRAPH-31884> 2
+<CJK_UNIFIED_IDEOGRAPH-31885> 2
+<CJK_UNIFIED_IDEOGRAPH-31886> 2
+<CJK_UNIFIED_IDEOGRAPH-31887> 2
+<CJK_UNIFIED_IDEOGRAPH-31888> 2
+<CJK_UNIFIED_IDEOGRAPH-31889> 2
+<CJK_UNIFIED_IDEOGRAPH-3188A> 2
+<CJK_UNIFIED_IDEOGRAPH-3188B> 2
+<CJK_UNIFIED_IDEOGRAPH-3188C> 2
+<CJK_UNIFIED_IDEOGRAPH-3188D> 2
+<CJK_UNIFIED_IDEOGRAPH-3188E> 2
+<CJK_UNIFIED_IDEOGRAPH-3188F> 2
+<CJK_UNIFIED_IDEOGRAPH-31890> 2
+<CJK_UNIFIED_IDEOGRAPH-31891> 2
+<CJK_UNIFIED_IDEOGRAPH-31892> 2
+<CJK_UNIFIED_IDEOGRAPH-31893> 2
+<CJK_UNIFIED_IDEOGRAPH-31894> 2
+<CJK_UNIFIED_IDEOGRAPH-31895> 2
+<CJK_UNIFIED_IDEOGRAPH-31896> 2
+<CJK_UNIFIED_IDEOGRAPH-31897> 2
+<CJK_UNIFIED_IDEOGRAPH-31898> 2
+<CJK_UNIFIED_IDEOGRAPH-31899> 2
+<CJK_UNIFIED_IDEOGRAPH-3189A> 2
+<CJK_UNIFIED_IDEOGRAPH-3189B> 2
+<CJK_UNIFIED_IDEOGRAPH-3189C> 2
+<CJK_UNIFIED_IDEOGRAPH-3189D> 2
+<CJK_UNIFIED_IDEOGRAPH-3189E> 2
+<CJK_UNIFIED_IDEOGRAPH-3189F> 2
+<CJK_UNIFIED_IDEOGRAPH-318A0> 2
+<CJK_UNIFIED_IDEOGRAPH-318A1> 2
+<CJK_UNIFIED_IDEOGRAPH-318A2> 2
+<CJK_UNIFIED_IDEOGRAPH-318A3> 2
+<CJK_UNIFIED_IDEOGRAPH-318A4> 2
+<CJK_UNIFIED_IDEOGRAPH-318A5> 2
+<CJK_UNIFIED_IDEOGRAPH-318A6> 2
+<CJK_UNIFIED_IDEOGRAPH-318A7> 2
+<CJK_UNIFIED_IDEOGRAPH-318A8> 2
+<CJK_UNIFIED_IDEOGRAPH-318A9> 2
+<CJK_UNIFIED_IDEOGRAPH-318AA> 2
+<CJK_UNIFIED_IDEOGRAPH-318AB> 2
+<CJK_UNIFIED_IDEOGRAPH-318AC> 2
+<CJK_UNIFIED_IDEOGRAPH-318AD> 2
+<CJK_UNIFIED_IDEOGRAPH-318AE> 2
+<CJK_UNIFIED_IDEOGRAPH-318AF> 2
+<CJK_UNIFIED_IDEOGRAPH-318B0> 2
+<CJK_UNIFIED_IDEOGRAPH-318B1> 2
+<CJK_UNIFIED_IDEOGRAPH-318B2> 2
+<CJK_UNIFIED_IDEOGRAPH-318B3> 2
+<CJK_UNIFIED_IDEOGRAPH-318B4> 2
+<CJK_UNIFIED_IDEOGRAPH-318B5> 2
+<CJK_UNIFIED_IDEOGRAPH-318B6> 2
+<CJK_UNIFIED_IDEOGRAPH-318B7> 2
+<CJK_UNIFIED_IDEOGRAPH-318B8> 2
+<CJK_UNIFIED_IDEOGRAPH-318B9> 2
+<CJK_UNIFIED_IDEOGRAPH-318BA> 2
+<CJK_UNIFIED_IDEOGRAPH-318BB> 2
+<CJK_UNIFIED_IDEOGRAPH-318BC> 2
+<CJK_UNIFIED_IDEOGRAPH-318BD> 2
+<CJK_UNIFIED_IDEOGRAPH-318BE> 2
+<CJK_UNIFIED_IDEOGRAPH-318BF> 2
+<CJK_UNIFIED_IDEOGRAPH-318C0> 2
+<CJK_UNIFIED_IDEOGRAPH-318C1> 2
+<CJK_UNIFIED_IDEOGRAPH-318C2> 2
+<CJK_UNIFIED_IDEOGRAPH-318C3> 2
+<CJK_UNIFIED_IDEOGRAPH-318C4> 2
+<CJK_UNIFIED_IDEOGRAPH-318C5> 2
+<CJK_UNIFIED_IDEOGRAPH-318C6> 2
+<CJK_UNIFIED_IDEOGRAPH-318C7> 2
+<CJK_UNIFIED_IDEOGRAPH-318C8> 2
+<CJK_UNIFIED_IDEOGRAPH-318C9> 2
+<CJK_UNIFIED_IDEOGRAPH-318CA> 2
+<CJK_UNIFIED_IDEOGRAPH-318CB> 2
+<CJK_UNIFIED_IDEOGRAPH-318CC> 2
+<CJK_UNIFIED_IDEOGRAPH-318CD> 2
+<CJK_UNIFIED_IDEOGRAPH-318CE> 2
+<CJK_UNIFIED_IDEOGRAPH-318CF> 2
+<CJK_UNIFIED_IDEOGRAPH-318D0> 2
+<CJK_UNIFIED_IDEOGRAPH-318D1> 2
+<CJK_UNIFIED_IDEOGRAPH-318D2> 2
+<CJK_UNIFIED_IDEOGRAPH-318D3> 2
+<CJK_UNIFIED_IDEOGRAPH-318D4> 2
+<CJK_UNIFIED_IDEOGRAPH-318D5> 2
+<CJK_UNIFIED_IDEOGRAPH-318D6> 2
+<CJK_UNIFIED_IDEOGRAPH-318D7> 2
+<CJK_UNIFIED_IDEOGRAPH-318D8> 2
+<CJK_UNIFIED_IDEOGRAPH-318D9> 2
+<CJK_UNIFIED_IDEOGRAPH-318DA> 2
+<CJK_UNIFIED_IDEOGRAPH-318DB> 2
+<CJK_UNIFIED_IDEOGRAPH-318DC> 2
+<CJK_UNIFIED_IDEOGRAPH-318DD> 2
+<CJK_UNIFIED_IDEOGRAPH-318DE> 2
+<CJK_UNIFIED_IDEOGRAPH-318DF> 2
+<CJK_UNIFIED_IDEOGRAPH-318E0> 2
+<CJK_UNIFIED_IDEOGRAPH-318E1> 2
+<CJK_UNIFIED_IDEOGRAPH-318E2> 2
+<CJK_UNIFIED_IDEOGRAPH-318E3> 2
+<CJK_UNIFIED_IDEOGRAPH-318E4> 2
+<CJK_UNIFIED_IDEOGRAPH-318E5> 2
+<CJK_UNIFIED_IDEOGRAPH-318E6> 2
+<CJK_UNIFIED_IDEOGRAPH-318E7> 2
+<CJK_UNIFIED_IDEOGRAPH-318E8> 2
+<CJK_UNIFIED_IDEOGRAPH-318E9> 2
+<CJK_UNIFIED_IDEOGRAPH-318EA> 2
+<CJK_UNIFIED_IDEOGRAPH-318EB> 2
+<CJK_UNIFIED_IDEOGRAPH-318EC> 2
+<CJK_UNIFIED_IDEOGRAPH-318ED> 2
+<CJK_UNIFIED_IDEOGRAPH-318EE> 2
+<CJK_UNIFIED_IDEOGRAPH-318EF> 2
+<CJK_UNIFIED_IDEOGRAPH-318F0> 2
+<CJK_UNIFIED_IDEOGRAPH-318F1> 2
+<CJK_UNIFIED_IDEOGRAPH-318F2> 2
+<CJK_UNIFIED_IDEOGRAPH-318F3> 2
+<CJK_UNIFIED_IDEOGRAPH-318F4> 2
+<CJK_UNIFIED_IDEOGRAPH-318F5> 2
+<CJK_UNIFIED_IDEOGRAPH-318F6> 2
+<CJK_UNIFIED_IDEOGRAPH-318F7> 2
+<CJK_UNIFIED_IDEOGRAPH-318F8> 2
+<CJK_UNIFIED_IDEOGRAPH-318F9> 2
+<CJK_UNIFIED_IDEOGRAPH-318FA> 2
+<CJK_UNIFIED_IDEOGRAPH-318FB> 2
+<CJK_UNIFIED_IDEOGRAPH-318FC> 2
+<CJK_UNIFIED_IDEOGRAPH-318FD> 2
+<CJK_UNIFIED_IDEOGRAPH-318FE> 2
+<CJK_UNIFIED_IDEOGRAPH-318FF> 2
+<CJK_UNIFIED_IDEOGRAPH-31900> 2
+<CJK_UNIFIED_IDEOGRAPH-31901> 2
+<CJK_UNIFIED_IDEOGRAPH-31902> 2
+<CJK_UNIFIED_IDEOGRAPH-31903> 2
+<CJK_UNIFIED_IDEOGRAPH-31904> 2
+<CJK_UNIFIED_IDEOGRAPH-31905> 2
+<CJK_UNIFIED_IDEOGRAPH-31906> 2
+<CJK_UNIFIED_IDEOGRAPH-31907> 2
+<CJK_UNIFIED_IDEOGRAPH-31908> 2
+<CJK_UNIFIED_IDEOGRAPH-31909> 2
+<CJK_UNIFIED_IDEOGRAPH-3190A> 2
+<CJK_UNIFIED_IDEOGRAPH-3190B> 2
+<CJK_UNIFIED_IDEOGRAPH-3190C> 2
+<CJK_UNIFIED_IDEOGRAPH-3190D> 2
+<CJK_UNIFIED_IDEOGRAPH-3190E> 2
+<CJK_UNIFIED_IDEOGRAPH-3190F> 2
+<CJK_UNIFIED_IDEOGRAPH-31910> 2
+<CJK_UNIFIED_IDEOGRAPH-31911> 2
+<CJK_UNIFIED_IDEOGRAPH-31912> 2
+<CJK_UNIFIED_IDEOGRAPH-31913> 2
+<CJK_UNIFIED_IDEOGRAPH-31914> 2
+<CJK_UNIFIED_IDEOGRAPH-31915> 2
+<CJK_UNIFIED_IDEOGRAPH-31916> 2
+<CJK_UNIFIED_IDEOGRAPH-31917> 2
+<CJK_UNIFIED_IDEOGRAPH-31918> 2
+<CJK_UNIFIED_IDEOGRAPH-31919> 2
+<CJK_UNIFIED_IDEOGRAPH-3191A> 2
+<CJK_UNIFIED_IDEOGRAPH-3191B> 2
+<CJK_UNIFIED_IDEOGRAPH-3191C> 2
+<CJK_UNIFIED_IDEOGRAPH-3191D> 2
+<CJK_UNIFIED_IDEOGRAPH-3191E> 2
+<CJK_UNIFIED_IDEOGRAPH-3191F> 2
+<CJK_UNIFIED_IDEOGRAPH-31920> 2
+<CJK_UNIFIED_IDEOGRAPH-31921> 2
+<CJK_UNIFIED_IDEOGRAPH-31922> 2
+<CJK_UNIFIED_IDEOGRAPH-31923> 2
+<CJK_UNIFIED_IDEOGRAPH-31924> 2
+<CJK_UNIFIED_IDEOGRAPH-31925> 2
+<CJK_UNIFIED_IDEOGRAPH-31926> 2
+<CJK_UNIFIED_IDEOGRAPH-31927> 2
+<CJK_UNIFIED_IDEOGRAPH-31928> 2
+<CJK_UNIFIED_IDEOGRAPH-31929> 2
+<CJK_UNIFIED_IDEOGRAPH-3192A> 2
+<CJK_UNIFIED_IDEOGRAPH-3192B> 2
+<CJK_UNIFIED_IDEOGRAPH-3192C> 2
+<CJK_UNIFIED_IDEOGRAPH-3192D> 2
+<CJK_UNIFIED_IDEOGRAPH-3192E> 2
+<CJK_UNIFIED_IDEOGRAPH-3192F> 2
+<CJK_UNIFIED_IDEOGRAPH-31930> 2
+<CJK_UNIFIED_IDEOGRAPH-31931> 2
+<CJK_UNIFIED_IDEOGRAPH-31932> 2
+<CJK_UNIFIED_IDEOGRAPH-31933> 2
+<CJK_UNIFIED_IDEOGRAPH-31934> 2
+<CJK_UNIFIED_IDEOGRAPH-31935> 2
+<CJK_UNIFIED_IDEOGRAPH-31936> 2
+<CJK_UNIFIED_IDEOGRAPH-31937> 2
+<CJK_UNIFIED_IDEOGRAPH-31938> 2
+<CJK_UNIFIED_IDEOGRAPH-31939> 2
+<CJK_UNIFIED_IDEOGRAPH-3193A> 2
+<CJK_UNIFIED_IDEOGRAPH-3193B> 2
+<CJK_UNIFIED_IDEOGRAPH-3193C> 2
+<CJK_UNIFIED_IDEOGRAPH-3193D> 2
+<CJK_UNIFIED_IDEOGRAPH-3193E> 2
+<CJK_UNIFIED_IDEOGRAPH-3193F> 2
+<CJK_UNIFIED_IDEOGRAPH-31940> 2
+<CJK_UNIFIED_IDEOGRAPH-31941> 2
+<CJK_UNIFIED_IDEOGRAPH-31942> 2
+<CJK_UNIFIED_IDEOGRAPH-31943> 2
+<CJK_UNIFIED_IDEOGRAPH-31944> 2
+<CJK_UNIFIED_IDEOGRAPH-31945> 2
+<CJK_UNIFIED_IDEOGRAPH-31946> 2
+<CJK_UNIFIED_IDEOGRAPH-31947> 2
+<CJK_UNIFIED_IDEOGRAPH-31948> 2
+<CJK_UNIFIED_IDEOGRAPH-31949> 2
+<CJK_UNIFIED_IDEOGRAPH-3194A> 2
+<CJK_UNIFIED_IDEOGRAPH-3194B> 2
+<CJK_UNIFIED_IDEOGRAPH-3194C> 2
+<CJK_UNIFIED_IDEOGRAPH-3194D> 2
+<CJK_UNIFIED_IDEOGRAPH-3194E> 2
+<CJK_UNIFIED_IDEOGRAPH-3194F> 2
+<CJK_UNIFIED_IDEOGRAPH-31950> 2
+<CJK_UNIFIED_IDEOGRAPH-31951> 2
+<CJK_UNIFIED_IDEOGRAPH-31952> 2
+<CJK_UNIFIED_IDEOGRAPH-31953> 2
+<CJK_UNIFIED_IDEOGRAPH-31954> 2
+<CJK_UNIFIED_IDEOGRAPH-31955> 2
+<CJK_UNIFIED_IDEOGRAPH-31956> 2
+<CJK_UNIFIED_IDEOGRAPH-31957> 2
+<CJK_UNIFIED_IDEOGRAPH-31958> 2
+<CJK_UNIFIED_IDEOGRAPH-31959> 2
+<CJK_UNIFIED_IDEOGRAPH-3195A> 2
+<CJK_UNIFIED_IDEOGRAPH-3195B> 2
+<CJK_UNIFIED_IDEOGRAPH-3195C> 2
+<CJK_UNIFIED_IDEOGRAPH-3195D> 2
+<CJK_UNIFIED_IDEOGRAPH-3195E> 2
+<CJK_UNIFIED_IDEOGRAPH-3195F> 2
+<CJK_UNIFIED_IDEOGRAPH-31960> 2
+<CJK_UNIFIED_IDEOGRAPH-31961> 2
+<CJK_UNIFIED_IDEOGRAPH-31962> 2
+<CJK_UNIFIED_IDEOGRAPH-31963> 2
+<CJK_UNIFIED_IDEOGRAPH-31964> 2
+<CJK_UNIFIED_IDEOGRAPH-31965> 2
+<CJK_UNIFIED_IDEOGRAPH-31966> 2
+<CJK_UNIFIED_IDEOGRAPH-31967> 2
+<CJK_UNIFIED_IDEOGRAPH-31968> 2
+<CJK_UNIFIED_IDEOGRAPH-31969> 2
+<CJK_UNIFIED_IDEOGRAPH-3196A> 2
+<CJK_UNIFIED_IDEOGRAPH-3196B> 2
+<CJK_UNIFIED_IDEOGRAPH-3196C> 2
+<CJK_UNIFIED_IDEOGRAPH-3196D> 2
+<CJK_UNIFIED_IDEOGRAPH-3196E> 2
+<CJK_UNIFIED_IDEOGRAPH-3196F> 2
+<CJK_UNIFIED_IDEOGRAPH-31970> 2
+<CJK_UNIFIED_IDEOGRAPH-31971> 2
+<CJK_UNIFIED_IDEOGRAPH-31972> 2
+<CJK_UNIFIED_IDEOGRAPH-31973> 2
+<CJK_UNIFIED_IDEOGRAPH-31974> 2
+<CJK_UNIFIED_IDEOGRAPH-31975> 2
+<CJK_UNIFIED_IDEOGRAPH-31976> 2
+<CJK_UNIFIED_IDEOGRAPH-31977> 2
+<CJK_UNIFIED_IDEOGRAPH-31978> 2
+<CJK_UNIFIED_IDEOGRAPH-31979> 2
+<CJK_UNIFIED_IDEOGRAPH-3197A> 2
+<CJK_UNIFIED_IDEOGRAPH-3197B> 2
+<CJK_UNIFIED_IDEOGRAPH-3197C> 2
+<CJK_UNIFIED_IDEOGRAPH-3197D> 2
+<CJK_UNIFIED_IDEOGRAPH-3197E> 2
+<CJK_UNIFIED_IDEOGRAPH-3197F> 2
+<CJK_UNIFIED_IDEOGRAPH-31980> 2
+<CJK_UNIFIED_IDEOGRAPH-31981> 2
+<CJK_UNIFIED_IDEOGRAPH-31982> 2
+<CJK_UNIFIED_IDEOGRAPH-31983> 2
+<CJK_UNIFIED_IDEOGRAPH-31984> 2
+<CJK_UNIFIED_IDEOGRAPH-31985> 2
+<CJK_UNIFIED_IDEOGRAPH-31986> 2
+<CJK_UNIFIED_IDEOGRAPH-31987> 2
+<CJK_UNIFIED_IDEOGRAPH-31988> 2
+<CJK_UNIFIED_IDEOGRAPH-31989> 2
+<CJK_UNIFIED_IDEOGRAPH-3198A> 2
+<CJK_UNIFIED_IDEOGRAPH-3198B> 2
+<CJK_UNIFIED_IDEOGRAPH-3198C> 2
+<CJK_UNIFIED_IDEOGRAPH-3198D> 2
+<CJK_UNIFIED_IDEOGRAPH-3198E> 2
+<CJK_UNIFIED_IDEOGRAPH-3198F> 2
+<CJK_UNIFIED_IDEOGRAPH-31990> 2
+<CJK_UNIFIED_IDEOGRAPH-31991> 2
+<CJK_UNIFIED_IDEOGRAPH-31992> 2
+<CJK_UNIFIED_IDEOGRAPH-31993> 2
+<CJK_UNIFIED_IDEOGRAPH-31994> 2
+<CJK_UNIFIED_IDEOGRAPH-31995> 2
+<CJK_UNIFIED_IDEOGRAPH-31996> 2
+<CJK_UNIFIED_IDEOGRAPH-31997> 2
+<CJK_UNIFIED_IDEOGRAPH-31998> 2
+<CJK_UNIFIED_IDEOGRAPH-31999> 2
+<CJK_UNIFIED_IDEOGRAPH-3199A> 2
+<CJK_UNIFIED_IDEOGRAPH-3199B> 2
+<CJK_UNIFIED_IDEOGRAPH-3199C> 2
+<CJK_UNIFIED_IDEOGRAPH-3199D> 2
+<CJK_UNIFIED_IDEOGRAPH-3199E> 2
+<CJK_UNIFIED_IDEOGRAPH-3199F> 2
+<CJK_UNIFIED_IDEOGRAPH-319A0> 2
+<CJK_UNIFIED_IDEOGRAPH-319A1> 2
+<CJK_UNIFIED_IDEOGRAPH-319A2> 2
+<CJK_UNIFIED_IDEOGRAPH-319A3> 2
+<CJK_UNIFIED_IDEOGRAPH-319A4> 2
+<CJK_UNIFIED_IDEOGRAPH-319A5> 2
+<CJK_UNIFIED_IDEOGRAPH-319A6> 2
+<CJK_UNIFIED_IDEOGRAPH-319A7> 2
+<CJK_UNIFIED_IDEOGRAPH-319A8> 2
+<CJK_UNIFIED_IDEOGRAPH-319A9> 2
+<CJK_UNIFIED_IDEOGRAPH-319AA> 2
+<CJK_UNIFIED_IDEOGRAPH-319AB> 2
+<CJK_UNIFIED_IDEOGRAPH-319AC> 2
+<CJK_UNIFIED_IDEOGRAPH-319AD> 2
+<CJK_UNIFIED_IDEOGRAPH-319AE> 2
+<CJK_UNIFIED_IDEOGRAPH-319AF> 2
+<CJK_UNIFIED_IDEOGRAPH-319B0> 2
+<CJK_UNIFIED_IDEOGRAPH-319B1> 2
+<CJK_UNIFIED_IDEOGRAPH-319B2> 2
+<CJK_UNIFIED_IDEOGRAPH-319B3> 2
+<CJK_UNIFIED_IDEOGRAPH-319B4> 2
+<CJK_UNIFIED_IDEOGRAPH-319B5> 2
+<CJK_UNIFIED_IDEOGRAPH-319B6> 2
+<CJK_UNIFIED_IDEOGRAPH-319B7> 2
+<CJK_UNIFIED_IDEOGRAPH-319B8> 2
+<CJK_UNIFIED_IDEOGRAPH-319B9> 2
+<CJK_UNIFIED_IDEOGRAPH-319BA> 2
+<CJK_UNIFIED_IDEOGRAPH-319BB> 2
+<CJK_UNIFIED_IDEOGRAPH-319BC> 2
+<CJK_UNIFIED_IDEOGRAPH-319BD> 2
+<CJK_UNIFIED_IDEOGRAPH-319BE> 2
+<CJK_UNIFIED_IDEOGRAPH-319BF> 2
+<CJK_UNIFIED_IDEOGRAPH-319C0> 2
+<CJK_UNIFIED_IDEOGRAPH-319C1> 2
+<CJK_UNIFIED_IDEOGRAPH-319C2> 2
+<CJK_UNIFIED_IDEOGRAPH-319C3> 2
+<CJK_UNIFIED_IDEOGRAPH-319C4> 2
+<CJK_UNIFIED_IDEOGRAPH-319C5> 2
+<CJK_UNIFIED_IDEOGRAPH-319C6> 2
+<CJK_UNIFIED_IDEOGRAPH-319C7> 2
+<CJK_UNIFIED_IDEOGRAPH-319C8> 2
+<CJK_UNIFIED_IDEOGRAPH-319C9> 2
+<CJK_UNIFIED_IDEOGRAPH-319CA> 2
+<CJK_UNIFIED_IDEOGRAPH-319CB> 2
+<CJK_UNIFIED_IDEOGRAPH-319CC> 2
+<CJK_UNIFIED_IDEOGRAPH-319CD> 2
+<CJK_UNIFIED_IDEOGRAPH-319CE> 2
+<CJK_UNIFIED_IDEOGRAPH-319CF> 2
+<CJK_UNIFIED_IDEOGRAPH-319D0> 2
+<CJK_UNIFIED_IDEOGRAPH-319D1> 2
+<CJK_UNIFIED_IDEOGRAPH-319D2> 2
+<CJK_UNIFIED_IDEOGRAPH-319D3> 2
+<CJK_UNIFIED_IDEOGRAPH-319D4> 2
+<CJK_UNIFIED_IDEOGRAPH-319D5> 2
+<CJK_UNIFIED_IDEOGRAPH-319D6> 2
+<CJK_UNIFIED_IDEOGRAPH-319D7> 2
+<CJK_UNIFIED_IDEOGRAPH-319D8> 2
+<CJK_UNIFIED_IDEOGRAPH-319D9> 2
+<CJK_UNIFIED_IDEOGRAPH-319DA> 2
+<CJK_UNIFIED_IDEOGRAPH-319DB> 2
+<CJK_UNIFIED_IDEOGRAPH-319DC> 2
+<CJK_UNIFIED_IDEOGRAPH-319DD> 2
+<CJK_UNIFIED_IDEOGRAPH-319DE> 2
+<CJK_UNIFIED_IDEOGRAPH-319DF> 2
+<CJK_UNIFIED_IDEOGRAPH-319E0> 2
+<CJK_UNIFIED_IDEOGRAPH-319E1> 2
+<CJK_UNIFIED_IDEOGRAPH-319E2> 2
+<CJK_UNIFIED_IDEOGRAPH-319E3> 2
+<CJK_UNIFIED_IDEOGRAPH-319E4> 2
+<CJK_UNIFIED_IDEOGRAPH-319E5> 2
+<CJK_UNIFIED_IDEOGRAPH-319E6> 2
+<CJK_UNIFIED_IDEOGRAPH-319E7> 2
+<CJK_UNIFIED_IDEOGRAPH-319E8> 2
+<CJK_UNIFIED_IDEOGRAPH-319E9> 2
+<CJK_UNIFIED_IDEOGRAPH-319EA> 2
+<CJK_UNIFIED_IDEOGRAPH-319EB> 2
+<CJK_UNIFIED_IDEOGRAPH-319EC> 2
+<CJK_UNIFIED_IDEOGRAPH-319ED> 2
+<CJK_UNIFIED_IDEOGRAPH-319EE> 2
+<CJK_UNIFIED_IDEOGRAPH-319EF> 2
+<CJK_UNIFIED_IDEOGRAPH-319F0> 2
+<CJK_UNIFIED_IDEOGRAPH-319F1> 2
+<CJK_UNIFIED_IDEOGRAPH-319F2> 2
+<CJK_UNIFIED_IDEOGRAPH-319F3> 2
+<CJK_UNIFIED_IDEOGRAPH-319F4> 2
+<CJK_UNIFIED_IDEOGRAPH-319F5> 2
+<CJK_UNIFIED_IDEOGRAPH-319F6> 2
+<CJK_UNIFIED_IDEOGRAPH-319F7> 2
+<CJK_UNIFIED_IDEOGRAPH-319F8> 2
+<CJK_UNIFIED_IDEOGRAPH-319F9> 2
+<CJK_UNIFIED_IDEOGRAPH-319FA> 2
+<CJK_UNIFIED_IDEOGRAPH-319FB> 2
+<CJK_UNIFIED_IDEOGRAPH-319FC> 2
+<CJK_UNIFIED_IDEOGRAPH-319FD> 2
+<CJK_UNIFIED_IDEOGRAPH-319FE> 2
+<CJK_UNIFIED_IDEOGRAPH-319FF> 2
+<CJK_UNIFIED_IDEOGRAPH-31A00> 2
+<CJK_UNIFIED_IDEOGRAPH-31A01> 2
+<CJK_UNIFIED_IDEOGRAPH-31A02> 2
+<CJK_UNIFIED_IDEOGRAPH-31A03> 2
+<CJK_UNIFIED_IDEOGRAPH-31A04> 2
+<CJK_UNIFIED_IDEOGRAPH-31A05> 2
+<CJK_UNIFIED_IDEOGRAPH-31A06> 2
+<CJK_UNIFIED_IDEOGRAPH-31A07> 2
+<CJK_UNIFIED_IDEOGRAPH-31A08> 2
+<CJK_UNIFIED_IDEOGRAPH-31A09> 2
+<CJK_UNIFIED_IDEOGRAPH-31A0A> 2
+<CJK_UNIFIED_IDEOGRAPH-31A0B> 2
+<CJK_UNIFIED_IDEOGRAPH-31A0C> 2
+<CJK_UNIFIED_IDEOGRAPH-31A0D> 2
+<CJK_UNIFIED_IDEOGRAPH-31A0E> 2
+<CJK_UNIFIED_IDEOGRAPH-31A0F> 2
+<CJK_UNIFIED_IDEOGRAPH-31A10> 2
+<CJK_UNIFIED_IDEOGRAPH-31A11> 2
+<CJK_UNIFIED_IDEOGRAPH-31A12> 2
+<CJK_UNIFIED_IDEOGRAPH-31A13> 2
+<CJK_UNIFIED_IDEOGRAPH-31A14> 2
+<CJK_UNIFIED_IDEOGRAPH-31A15> 2
+<CJK_UNIFIED_IDEOGRAPH-31A16> 2
+<CJK_UNIFIED_IDEOGRAPH-31A17> 2
+<CJK_UNIFIED_IDEOGRAPH-31A18> 2
+<CJK_UNIFIED_IDEOGRAPH-31A19> 2
+<CJK_UNIFIED_IDEOGRAPH-31A1A> 2
+<CJK_UNIFIED_IDEOGRAPH-31A1B> 2
+<CJK_UNIFIED_IDEOGRAPH-31A1C> 2
+<CJK_UNIFIED_IDEOGRAPH-31A1D> 2
+<CJK_UNIFIED_IDEOGRAPH-31A1E> 2
+<CJK_UNIFIED_IDEOGRAPH-31A1F> 2
+<CJK_UNIFIED_IDEOGRAPH-31A20> 2
+<CJK_UNIFIED_IDEOGRAPH-31A21> 2
+<CJK_UNIFIED_IDEOGRAPH-31A22> 2
+<CJK_UNIFIED_IDEOGRAPH-31A23> 2
+<CJK_UNIFIED_IDEOGRAPH-31A24> 2
+<CJK_UNIFIED_IDEOGRAPH-31A25> 2
+<CJK_UNIFIED_IDEOGRAPH-31A26> 2
+<CJK_UNIFIED_IDEOGRAPH-31A27> 2
+<CJK_UNIFIED_IDEOGRAPH-31A28> 2
+<CJK_UNIFIED_IDEOGRAPH-31A29> 2
+<CJK_UNIFIED_IDEOGRAPH-31A2A> 2
+<CJK_UNIFIED_IDEOGRAPH-31A2B> 2
+<CJK_UNIFIED_IDEOGRAPH-31A2C> 2
+<CJK_UNIFIED_IDEOGRAPH-31A2D> 2
+<CJK_UNIFIED_IDEOGRAPH-31A2E> 2
+<CJK_UNIFIED_IDEOGRAPH-31A2F> 2
+<CJK_UNIFIED_IDEOGRAPH-31A30> 2
+<CJK_UNIFIED_IDEOGRAPH-31A31> 2
+<CJK_UNIFIED_IDEOGRAPH-31A32> 2
+<CJK_UNIFIED_IDEOGRAPH-31A33> 2
+<CJK_UNIFIED_IDEOGRAPH-31A34> 2
+<CJK_UNIFIED_IDEOGRAPH-31A35> 2
+<CJK_UNIFIED_IDEOGRAPH-31A36> 2
+<CJK_UNIFIED_IDEOGRAPH-31A37> 2
+<CJK_UNIFIED_IDEOGRAPH-31A38> 2
+<CJK_UNIFIED_IDEOGRAPH-31A39> 2
+<CJK_UNIFIED_IDEOGRAPH-31A3A> 2
+<CJK_UNIFIED_IDEOGRAPH-31A3B> 2
+<CJK_UNIFIED_IDEOGRAPH-31A3C> 2
+<CJK_UNIFIED_IDEOGRAPH-31A3D> 2
+<CJK_UNIFIED_IDEOGRAPH-31A3E> 2
+<CJK_UNIFIED_IDEOGRAPH-31A3F> 2
+<CJK_UNIFIED_IDEOGRAPH-31A40> 2
+<CJK_UNIFIED_IDEOGRAPH-31A41> 2
+<CJK_UNIFIED_IDEOGRAPH-31A42> 2
+<CJK_UNIFIED_IDEOGRAPH-31A43> 2
+<CJK_UNIFIED_IDEOGRAPH-31A44> 2
+<CJK_UNIFIED_IDEOGRAPH-31A45> 2
+<CJK_UNIFIED_IDEOGRAPH-31A46> 2
+<CJK_UNIFIED_IDEOGRAPH-31A47> 2
+<CJK_UNIFIED_IDEOGRAPH-31A48> 2
+<CJK_UNIFIED_IDEOGRAPH-31A49> 2
+<CJK_UNIFIED_IDEOGRAPH-31A4A> 2
+<CJK_UNIFIED_IDEOGRAPH-31A4B> 2
+<CJK_UNIFIED_IDEOGRAPH-31A4C> 2
+<CJK_UNIFIED_IDEOGRAPH-31A4D> 2
+<CJK_UNIFIED_IDEOGRAPH-31A4E> 2
+<CJK_UNIFIED_IDEOGRAPH-31A4F> 2
+<CJK_UNIFIED_IDEOGRAPH-31A50> 2
+<CJK_UNIFIED_IDEOGRAPH-31A51> 2
+<CJK_UNIFIED_IDEOGRAPH-31A52> 2
+<CJK_UNIFIED_IDEOGRAPH-31A53> 2
+<CJK_UNIFIED_IDEOGRAPH-31A54> 2
+<CJK_UNIFIED_IDEOGRAPH-31A55> 2
+<CJK_UNIFIED_IDEOGRAPH-31A56> 2
+<CJK_UNIFIED_IDEOGRAPH-31A57> 2
+<CJK_UNIFIED_IDEOGRAPH-31A58> 2
+<CJK_UNIFIED_IDEOGRAPH-31A59> 2
+<CJK_UNIFIED_IDEOGRAPH-31A5A> 2
+<CJK_UNIFIED_IDEOGRAPH-31A5B> 2
+<CJK_UNIFIED_IDEOGRAPH-31A5C> 2
+<CJK_UNIFIED_IDEOGRAPH-31A5D> 2
+<CJK_UNIFIED_IDEOGRAPH-31A5E> 2
+<CJK_UNIFIED_IDEOGRAPH-31A5F> 2
+<CJK_UNIFIED_IDEOGRAPH-31A60> 2
+<CJK_UNIFIED_IDEOGRAPH-31A61> 2
+<CJK_UNIFIED_IDEOGRAPH-31A62> 2
+<CJK_UNIFIED_IDEOGRAPH-31A63> 2
+<CJK_UNIFIED_IDEOGRAPH-31A64> 2
+<CJK_UNIFIED_IDEOGRAPH-31A65> 2
+<CJK_UNIFIED_IDEOGRAPH-31A66> 2
+<CJK_UNIFIED_IDEOGRAPH-31A67> 2
+<CJK_UNIFIED_IDEOGRAPH-31A68> 2
+<CJK_UNIFIED_IDEOGRAPH-31A69> 2
+<CJK_UNIFIED_IDEOGRAPH-31A6A> 2
+<CJK_UNIFIED_IDEOGRAPH-31A6B> 2
+<CJK_UNIFIED_IDEOGRAPH-31A6C> 2
+<CJK_UNIFIED_IDEOGRAPH-31A6D> 2
+<CJK_UNIFIED_IDEOGRAPH-31A6E> 2
+<CJK_UNIFIED_IDEOGRAPH-31A6F> 2
+<CJK_UNIFIED_IDEOGRAPH-31A70> 2
+<CJK_UNIFIED_IDEOGRAPH-31A71> 2
+<CJK_UNIFIED_IDEOGRAPH-31A72> 2
+<CJK_UNIFIED_IDEOGRAPH-31A73> 2
+<CJK_UNIFIED_IDEOGRAPH-31A74> 2
+<CJK_UNIFIED_IDEOGRAPH-31A75> 2
+<CJK_UNIFIED_IDEOGRAPH-31A76> 2
+<CJK_UNIFIED_IDEOGRAPH-31A77> 2
+<CJK_UNIFIED_IDEOGRAPH-31A78> 2
+<CJK_UNIFIED_IDEOGRAPH-31A79> 2
+<CJK_UNIFIED_IDEOGRAPH-31A7A> 2
+<CJK_UNIFIED_IDEOGRAPH-31A7B> 2
+<CJK_UNIFIED_IDEOGRAPH-31A7C> 2
+<CJK_UNIFIED_IDEOGRAPH-31A7D> 2
+<CJK_UNIFIED_IDEOGRAPH-31A7E> 2
+<CJK_UNIFIED_IDEOGRAPH-31A7F> 2
+<CJK_UNIFIED_IDEOGRAPH-31A80> 2
+<CJK_UNIFIED_IDEOGRAPH-31A81> 2
+<CJK_UNIFIED_IDEOGRAPH-31A82> 2
+<CJK_UNIFIED_IDEOGRAPH-31A83> 2
+<CJK_UNIFIED_IDEOGRAPH-31A84> 2
+<CJK_UNIFIED_IDEOGRAPH-31A85> 2
+<CJK_UNIFIED_IDEOGRAPH-31A86> 2
+<CJK_UNIFIED_IDEOGRAPH-31A87> 2
+<CJK_UNIFIED_IDEOGRAPH-31A88> 2
+<CJK_UNIFIED_IDEOGRAPH-31A89> 2
+<CJK_UNIFIED_IDEOGRAPH-31A8A> 2
+<CJK_UNIFIED_IDEOGRAPH-31A8B> 2
+<CJK_UNIFIED_IDEOGRAPH-31A8C> 2
+<CJK_UNIFIED_IDEOGRAPH-31A8D> 2
+<CJK_UNIFIED_IDEOGRAPH-31A8E> 2
+<CJK_UNIFIED_IDEOGRAPH-31A8F> 2
+<CJK_UNIFIED_IDEOGRAPH-31A90> 2
+<CJK_UNIFIED_IDEOGRAPH-31A91> 2
+<CJK_UNIFIED_IDEOGRAPH-31A92> 2
+<CJK_UNIFIED_IDEOGRAPH-31A93> 2
+<CJK_UNIFIED_IDEOGRAPH-31A94> 2
+<CJK_UNIFIED_IDEOGRAPH-31A95> 2
+<CJK_UNIFIED_IDEOGRAPH-31A96> 2
+<CJK_UNIFIED_IDEOGRAPH-31A97> 2
+<CJK_UNIFIED_IDEOGRAPH-31A98> 2
+<CJK_UNIFIED_IDEOGRAPH-31A99> 2
+<CJK_UNIFIED_IDEOGRAPH-31A9A> 2
+<CJK_UNIFIED_IDEOGRAPH-31A9B> 2
+<CJK_UNIFIED_IDEOGRAPH-31A9C> 2
+<CJK_UNIFIED_IDEOGRAPH-31A9D> 2
+<CJK_UNIFIED_IDEOGRAPH-31A9E> 2
+<CJK_UNIFIED_IDEOGRAPH-31A9F> 2
+<CJK_UNIFIED_IDEOGRAPH-31AA0> 2
+<CJK_UNIFIED_IDEOGRAPH-31AA1> 2
+<CJK_UNIFIED_IDEOGRAPH-31AA2> 2
+<CJK_UNIFIED_IDEOGRAPH-31AA3> 2
+<CJK_UNIFIED_IDEOGRAPH-31AA4> 2
+<CJK_UNIFIED_IDEOGRAPH-31AA5> 2
+<CJK_UNIFIED_IDEOGRAPH-31AA6> 2
+<CJK_UNIFIED_IDEOGRAPH-31AA7> 2
+<CJK_UNIFIED_IDEOGRAPH-31AA8> 2
+<CJK_UNIFIED_IDEOGRAPH-31AA9> 2
+<CJK_UNIFIED_IDEOGRAPH-31AAA> 2
+<CJK_UNIFIED_IDEOGRAPH-31AAB> 2
+<CJK_UNIFIED_IDEOGRAPH-31AAC> 2
+<CJK_UNIFIED_IDEOGRAPH-31AAD> 2
+<CJK_UNIFIED_IDEOGRAPH-31AAE> 2
+<CJK_UNIFIED_IDEOGRAPH-31AAF> 2
+<CJK_UNIFIED_IDEOGRAPH-31AB0> 2
+<CJK_UNIFIED_IDEOGRAPH-31AB1> 2
+<CJK_UNIFIED_IDEOGRAPH-31AB2> 2
+<CJK_UNIFIED_IDEOGRAPH-31AB3> 2
+<CJK_UNIFIED_IDEOGRAPH-31AB4> 2
+<CJK_UNIFIED_IDEOGRAPH-31AB5> 2
+<CJK_UNIFIED_IDEOGRAPH-31AB6> 2
+<CJK_UNIFIED_IDEOGRAPH-31AB7> 2
+<CJK_UNIFIED_IDEOGRAPH-31AB8> 2
+<CJK_UNIFIED_IDEOGRAPH-31AB9> 2
+<CJK_UNIFIED_IDEOGRAPH-31ABA> 2
+<CJK_UNIFIED_IDEOGRAPH-31ABB> 2
+<CJK_UNIFIED_IDEOGRAPH-31ABC> 2
+<CJK_UNIFIED_IDEOGRAPH-31ABD> 2
+<CJK_UNIFIED_IDEOGRAPH-31ABE> 2
+<CJK_UNIFIED_IDEOGRAPH-31ABF> 2
+<CJK_UNIFIED_IDEOGRAPH-31AC0> 2
+<CJK_UNIFIED_IDEOGRAPH-31AC1> 2
+<CJK_UNIFIED_IDEOGRAPH-31AC2> 2
+<CJK_UNIFIED_IDEOGRAPH-31AC3> 2
+<CJK_UNIFIED_IDEOGRAPH-31AC4> 2
+<CJK_UNIFIED_IDEOGRAPH-31AC5> 2
+<CJK_UNIFIED_IDEOGRAPH-31AC6> 2
+<CJK_UNIFIED_IDEOGRAPH-31AC7> 2
+<CJK_UNIFIED_IDEOGRAPH-31AC8> 2
+<CJK_UNIFIED_IDEOGRAPH-31AC9> 2
+<CJK_UNIFIED_IDEOGRAPH-31ACA> 2
+<CJK_UNIFIED_IDEOGRAPH-31ACB> 2
+<CJK_UNIFIED_IDEOGRAPH-31ACC> 2
+<CJK_UNIFIED_IDEOGRAPH-31ACD> 2
+<CJK_UNIFIED_IDEOGRAPH-31ACE> 2
+<CJK_UNIFIED_IDEOGRAPH-31ACF> 2
+<CJK_UNIFIED_IDEOGRAPH-31AD0> 2
+<CJK_UNIFIED_IDEOGRAPH-31AD1> 2
+<CJK_UNIFIED_IDEOGRAPH-31AD2> 2
+<CJK_UNIFIED_IDEOGRAPH-31AD3> 2
+<CJK_UNIFIED_IDEOGRAPH-31AD4> 2
+<CJK_UNIFIED_IDEOGRAPH-31AD5> 2
+<CJK_UNIFIED_IDEOGRAPH-31AD6> 2
+<CJK_UNIFIED_IDEOGRAPH-31AD7> 2
+<CJK_UNIFIED_IDEOGRAPH-31AD8> 2
+<CJK_UNIFIED_IDEOGRAPH-31AD9> 2
+<CJK_UNIFIED_IDEOGRAPH-31ADA> 2
+<CJK_UNIFIED_IDEOGRAPH-31ADB> 2
+<CJK_UNIFIED_IDEOGRAPH-31ADC> 2
+<CJK_UNIFIED_IDEOGRAPH-31ADD> 2
+<CJK_UNIFIED_IDEOGRAPH-31ADE> 2
+<CJK_UNIFIED_IDEOGRAPH-31ADF> 2
+<CJK_UNIFIED_IDEOGRAPH-31AE0> 2
+<CJK_UNIFIED_IDEOGRAPH-31AE1> 2
+<CJK_UNIFIED_IDEOGRAPH-31AE2> 2
+<CJK_UNIFIED_IDEOGRAPH-31AE3> 2
+<CJK_UNIFIED_IDEOGRAPH-31AE4> 2
+<CJK_UNIFIED_IDEOGRAPH-31AE5> 2
+<CJK_UNIFIED_IDEOGRAPH-31AE6> 2
+<CJK_UNIFIED_IDEOGRAPH-31AE7> 2
+<CJK_UNIFIED_IDEOGRAPH-31AE8> 2
+<CJK_UNIFIED_IDEOGRAPH-31AE9> 2
+<CJK_UNIFIED_IDEOGRAPH-31AEA> 2
+<CJK_UNIFIED_IDEOGRAPH-31AEB> 2
+<CJK_UNIFIED_IDEOGRAPH-31AEC> 2
+<CJK_UNIFIED_IDEOGRAPH-31AED> 2
+<CJK_UNIFIED_IDEOGRAPH-31AEE> 2
+<CJK_UNIFIED_IDEOGRAPH-31AEF> 2
+<CJK_UNIFIED_IDEOGRAPH-31AF0> 2
+<CJK_UNIFIED_IDEOGRAPH-31AF1> 2
+<CJK_UNIFIED_IDEOGRAPH-31AF2> 2
+<CJK_UNIFIED_IDEOGRAPH-31AF3> 2
+<CJK_UNIFIED_IDEOGRAPH-31AF4> 2
+<CJK_UNIFIED_IDEOGRAPH-31AF5> 2
+<CJK_UNIFIED_IDEOGRAPH-31AF6> 2
+<CJK_UNIFIED_IDEOGRAPH-31AF7> 2
+<CJK_UNIFIED_IDEOGRAPH-31AF8> 2
+<CJK_UNIFIED_IDEOGRAPH-31AF9> 2
+<CJK_UNIFIED_IDEOGRAPH-31AFA> 2
+<CJK_UNIFIED_IDEOGRAPH-31AFB> 2
+<CJK_UNIFIED_IDEOGRAPH-31AFC> 2
+<CJK_UNIFIED_IDEOGRAPH-31AFD> 2
+<CJK_UNIFIED_IDEOGRAPH-31AFE> 2
+<CJK_UNIFIED_IDEOGRAPH-31AFF> 2
+<CJK_UNIFIED_IDEOGRAPH-31B00> 2
+<CJK_UNIFIED_IDEOGRAPH-31B01> 2
+<CJK_UNIFIED_IDEOGRAPH-31B02> 2
+<CJK_UNIFIED_IDEOGRAPH-31B03> 2
+<CJK_UNIFIED_IDEOGRAPH-31B04> 2
+<CJK_UNIFIED_IDEOGRAPH-31B05> 2
+<CJK_UNIFIED_IDEOGRAPH-31B06> 2
+<CJK_UNIFIED_IDEOGRAPH-31B07> 2
+<CJK_UNIFIED_IDEOGRAPH-31B08> 2
+<CJK_UNIFIED_IDEOGRAPH-31B09> 2
+<CJK_UNIFIED_IDEOGRAPH-31B0A> 2
+<CJK_UNIFIED_IDEOGRAPH-31B0B> 2
+<CJK_UNIFIED_IDEOGRAPH-31B0C> 2
+<CJK_UNIFIED_IDEOGRAPH-31B0D> 2
+<CJK_UNIFIED_IDEOGRAPH-31B0E> 2
+<CJK_UNIFIED_IDEOGRAPH-31B0F> 2
+<CJK_UNIFIED_IDEOGRAPH-31B10> 2
+<CJK_UNIFIED_IDEOGRAPH-31B11> 2
+<CJK_UNIFIED_IDEOGRAPH-31B12> 2
+<CJK_UNIFIED_IDEOGRAPH-31B13> 2
+<CJK_UNIFIED_IDEOGRAPH-31B14> 2
+<CJK_UNIFIED_IDEOGRAPH-31B15> 2
+<CJK_UNIFIED_IDEOGRAPH-31B16> 2
+<CJK_UNIFIED_IDEOGRAPH-31B17> 2
+<CJK_UNIFIED_IDEOGRAPH-31B18> 2
+<CJK_UNIFIED_IDEOGRAPH-31B19> 2
+<CJK_UNIFIED_IDEOGRAPH-31B1A> 2
+<CJK_UNIFIED_IDEOGRAPH-31B1B> 2
+<CJK_UNIFIED_IDEOGRAPH-31B1C> 2
+<CJK_UNIFIED_IDEOGRAPH-31B1D> 2
+<CJK_UNIFIED_IDEOGRAPH-31B1E> 2
+<CJK_UNIFIED_IDEOGRAPH-31B1F> 2
+<CJK_UNIFIED_IDEOGRAPH-31B20> 2
+<CJK_UNIFIED_IDEOGRAPH-31B21> 2
+<CJK_UNIFIED_IDEOGRAPH-31B22> 2
+<CJK_UNIFIED_IDEOGRAPH-31B23> 2
+<CJK_UNIFIED_IDEOGRAPH-31B24> 2
+<CJK_UNIFIED_IDEOGRAPH-31B25> 2
+<CJK_UNIFIED_IDEOGRAPH-31B26> 2
+<CJK_UNIFIED_IDEOGRAPH-31B27> 2
+<CJK_UNIFIED_IDEOGRAPH-31B28> 2
+<CJK_UNIFIED_IDEOGRAPH-31B29> 2
+<CJK_UNIFIED_IDEOGRAPH-31B2A> 2
+<CJK_UNIFIED_IDEOGRAPH-31B2B> 2
+<CJK_UNIFIED_IDEOGRAPH-31B2C> 2
+<CJK_UNIFIED_IDEOGRAPH-31B2D> 2
+<CJK_UNIFIED_IDEOGRAPH-31B2E> 2
+<CJK_UNIFIED_IDEOGRAPH-31B2F> 2
+<CJK_UNIFIED_IDEOGRAPH-31B30> 2
+<CJK_UNIFIED_IDEOGRAPH-31B31> 2
+<CJK_UNIFIED_IDEOGRAPH-31B32> 2
+<CJK_UNIFIED_IDEOGRAPH-31B33> 2
+<CJK_UNIFIED_IDEOGRAPH-31B34> 2
+<CJK_UNIFIED_IDEOGRAPH-31B35> 2
+<CJK_UNIFIED_IDEOGRAPH-31B36> 2
+<CJK_UNIFIED_IDEOGRAPH-31B37> 2
+<CJK_UNIFIED_IDEOGRAPH-31B38> 2
+<CJK_UNIFIED_IDEOGRAPH-31B39> 2
+<CJK_UNIFIED_IDEOGRAPH-31B3A> 2
+<CJK_UNIFIED_IDEOGRAPH-31B3B> 2
+<CJK_UNIFIED_IDEOGRAPH-31B3C> 2
+<CJK_UNIFIED_IDEOGRAPH-31B3D> 2
+<CJK_UNIFIED_IDEOGRAPH-31B3E> 2
+<CJK_UNIFIED_IDEOGRAPH-31B3F> 2
+<CJK_UNIFIED_IDEOGRAPH-31B40> 2
+<CJK_UNIFIED_IDEOGRAPH-31B41> 2
+<CJK_UNIFIED_IDEOGRAPH-31B42> 2
+<CJK_UNIFIED_IDEOGRAPH-31B43> 2
+<CJK_UNIFIED_IDEOGRAPH-31B44> 2
+<CJK_UNIFIED_IDEOGRAPH-31B45> 2
+<CJK_UNIFIED_IDEOGRAPH-31B46> 2
+<CJK_UNIFIED_IDEOGRAPH-31B47> 2
+<CJK_UNIFIED_IDEOGRAPH-31B48> 2
+<CJK_UNIFIED_IDEOGRAPH-31B49> 2
+<CJK_UNIFIED_IDEOGRAPH-31B4A> 2
+<CJK_UNIFIED_IDEOGRAPH-31B4B> 2
+<CJK_UNIFIED_IDEOGRAPH-31B4C> 2
+<CJK_UNIFIED_IDEOGRAPH-31B4D> 2
+<CJK_UNIFIED_IDEOGRAPH-31B4E> 2
+<CJK_UNIFIED_IDEOGRAPH-31B4F> 2
+<CJK_UNIFIED_IDEOGRAPH-31B50> 2
+<CJK_UNIFIED_IDEOGRAPH-31B51> 2
+<CJK_UNIFIED_IDEOGRAPH-31B52> 2
+<CJK_UNIFIED_IDEOGRAPH-31B53> 2
+<CJK_UNIFIED_IDEOGRAPH-31B54> 2
+<CJK_UNIFIED_IDEOGRAPH-31B55> 2
+<CJK_UNIFIED_IDEOGRAPH-31B56> 2
+<CJK_UNIFIED_IDEOGRAPH-31B57> 2
+<CJK_UNIFIED_IDEOGRAPH-31B58> 2
+<CJK_UNIFIED_IDEOGRAPH-31B59> 2
+<CJK_UNIFIED_IDEOGRAPH-31B5A> 2
+<CJK_UNIFIED_IDEOGRAPH-31B5B> 2
+<CJK_UNIFIED_IDEOGRAPH-31B5C> 2
+<CJK_UNIFIED_IDEOGRAPH-31B5D> 2
+<CJK_UNIFIED_IDEOGRAPH-31B5E> 2
+<CJK_UNIFIED_IDEOGRAPH-31B5F> 2
+<CJK_UNIFIED_IDEOGRAPH-31B60> 2
+<CJK_UNIFIED_IDEOGRAPH-31B61> 2
+<CJK_UNIFIED_IDEOGRAPH-31B62> 2
+<CJK_UNIFIED_IDEOGRAPH-31B63> 2
+<CJK_UNIFIED_IDEOGRAPH-31B64> 2
+<CJK_UNIFIED_IDEOGRAPH-31B65> 2
+<CJK_UNIFIED_IDEOGRAPH-31B66> 2
+<CJK_UNIFIED_IDEOGRAPH-31B67> 2
+<CJK_UNIFIED_IDEOGRAPH-31B68> 2
+<CJK_UNIFIED_IDEOGRAPH-31B69> 2
+<CJK_UNIFIED_IDEOGRAPH-31B6A> 2
+<CJK_UNIFIED_IDEOGRAPH-31B6B> 2
+<CJK_UNIFIED_IDEOGRAPH-31B6C> 2
+<CJK_UNIFIED_IDEOGRAPH-31B6D> 2
+<CJK_UNIFIED_IDEOGRAPH-31B6E> 2
+<CJK_UNIFIED_IDEOGRAPH-31B6F> 2
+<CJK_UNIFIED_IDEOGRAPH-31B70> 2
+<CJK_UNIFIED_IDEOGRAPH-31B71> 2
+<CJK_UNIFIED_IDEOGRAPH-31B72> 2
+<CJK_UNIFIED_IDEOGRAPH-31B73> 2
+<CJK_UNIFIED_IDEOGRAPH-31B74> 2
+<CJK_UNIFIED_IDEOGRAPH-31B75> 2
+<CJK_UNIFIED_IDEOGRAPH-31B76> 2
+<CJK_UNIFIED_IDEOGRAPH-31B77> 2
+<CJK_UNIFIED_IDEOGRAPH-31B78> 2
+<CJK_UNIFIED_IDEOGRAPH-31B79> 2
+<CJK_UNIFIED_IDEOGRAPH-31B7A> 2
+<CJK_UNIFIED_IDEOGRAPH-31B7B> 2
+<CJK_UNIFIED_IDEOGRAPH-31B7C> 2
+<CJK_UNIFIED_IDEOGRAPH-31B7D> 2
+<CJK_UNIFIED_IDEOGRAPH-31B7E> 2
+<CJK_UNIFIED_IDEOGRAPH-31B7F> 2
+<CJK_UNIFIED_IDEOGRAPH-31B80> 2
+<CJK_UNIFIED_IDEOGRAPH-31B81> 2
+<CJK_UNIFIED_IDEOGRAPH-31B82> 2
+<CJK_UNIFIED_IDEOGRAPH-31B83> 2
+<CJK_UNIFIED_IDEOGRAPH-31B84> 2
+<CJK_UNIFIED_IDEOGRAPH-31B85> 2
+<CJK_UNIFIED_IDEOGRAPH-31B86> 2
+<CJK_UNIFIED_IDEOGRAPH-31B87> 2
+<CJK_UNIFIED_IDEOGRAPH-31B88> 2
+<CJK_UNIFIED_IDEOGRAPH-31B89> 2
+<CJK_UNIFIED_IDEOGRAPH-31B8A> 2
+<CJK_UNIFIED_IDEOGRAPH-31B8B> 2
+<CJK_UNIFIED_IDEOGRAPH-31B8C> 2
+<CJK_UNIFIED_IDEOGRAPH-31B8D> 2
+<CJK_UNIFIED_IDEOGRAPH-31B8E> 2
+<CJK_UNIFIED_IDEOGRAPH-31B8F> 2
+<CJK_UNIFIED_IDEOGRAPH-31B90> 2
+<CJK_UNIFIED_IDEOGRAPH-31B91> 2
+<CJK_UNIFIED_IDEOGRAPH-31B92> 2
+<CJK_UNIFIED_IDEOGRAPH-31B93> 2
+<CJK_UNIFIED_IDEOGRAPH-31B94> 2
+<CJK_UNIFIED_IDEOGRAPH-31B95> 2
+<CJK_UNIFIED_IDEOGRAPH-31B96> 2
+<CJK_UNIFIED_IDEOGRAPH-31B97> 2
+<CJK_UNIFIED_IDEOGRAPH-31B98> 2
+<CJK_UNIFIED_IDEOGRAPH-31B99> 2
+<CJK_UNIFIED_IDEOGRAPH-31B9A> 2
+<CJK_UNIFIED_IDEOGRAPH-31B9B> 2
+<CJK_UNIFIED_IDEOGRAPH-31B9C> 2
+<CJK_UNIFIED_IDEOGRAPH-31B9D> 2
+<CJK_UNIFIED_IDEOGRAPH-31B9E> 2
+<CJK_UNIFIED_IDEOGRAPH-31B9F> 2
+<CJK_UNIFIED_IDEOGRAPH-31BA0> 2
+<CJK_UNIFIED_IDEOGRAPH-31BA1> 2
+<CJK_UNIFIED_IDEOGRAPH-31BA2> 2
+<CJK_UNIFIED_IDEOGRAPH-31BA3> 2
+<CJK_UNIFIED_IDEOGRAPH-31BA4> 2
+<CJK_UNIFIED_IDEOGRAPH-31BA5> 2
+<CJK_UNIFIED_IDEOGRAPH-31BA6> 2
+<CJK_UNIFIED_IDEOGRAPH-31BA7> 2
+<CJK_UNIFIED_IDEOGRAPH-31BA8> 2
+<CJK_UNIFIED_IDEOGRAPH-31BA9> 2
+<CJK_UNIFIED_IDEOGRAPH-31BAA> 2
+<CJK_UNIFIED_IDEOGRAPH-31BAB> 2
+<CJK_UNIFIED_IDEOGRAPH-31BAC> 2
+<CJK_UNIFIED_IDEOGRAPH-31BAD> 2
+<CJK_UNIFIED_IDEOGRAPH-31BAE> 2
+<CJK_UNIFIED_IDEOGRAPH-31BAF> 2
+<CJK_UNIFIED_IDEOGRAPH-31BB0> 2
+<CJK_UNIFIED_IDEOGRAPH-31BB1> 2
+<CJK_UNIFIED_IDEOGRAPH-31BB2> 2
+<CJK_UNIFIED_IDEOGRAPH-31BB3> 2
+<CJK_UNIFIED_IDEOGRAPH-31BB4> 2
+<CJK_UNIFIED_IDEOGRAPH-31BB5> 2
+<CJK_UNIFIED_IDEOGRAPH-31BB6> 2
+<CJK_UNIFIED_IDEOGRAPH-31BB7> 2
+<CJK_UNIFIED_IDEOGRAPH-31BB8> 2
+<CJK_UNIFIED_IDEOGRAPH-31BB9> 2
+<CJK_UNIFIED_IDEOGRAPH-31BBA> 2
+<CJK_UNIFIED_IDEOGRAPH-31BBB> 2
+<CJK_UNIFIED_IDEOGRAPH-31BBC> 2
+<CJK_UNIFIED_IDEOGRAPH-31BBD> 2
+<CJK_UNIFIED_IDEOGRAPH-31BBE> 2
+<CJK_UNIFIED_IDEOGRAPH-31BBF> 2
+<CJK_UNIFIED_IDEOGRAPH-31BC0> 2
+<CJK_UNIFIED_IDEOGRAPH-31BC1> 2
+<CJK_UNIFIED_IDEOGRAPH-31BC2> 2
+<CJK_UNIFIED_IDEOGRAPH-31BC3> 2
+<CJK_UNIFIED_IDEOGRAPH-31BC4> 2
+<CJK_UNIFIED_IDEOGRAPH-31BC5> 2
+<CJK_UNIFIED_IDEOGRAPH-31BC6> 2
+<CJK_UNIFIED_IDEOGRAPH-31BC7> 2
+<CJK_UNIFIED_IDEOGRAPH-31BC8> 2
+<CJK_UNIFIED_IDEOGRAPH-31BC9> 2
+<CJK_UNIFIED_IDEOGRAPH-31BCA> 2
+<CJK_UNIFIED_IDEOGRAPH-31BCB> 2
+<CJK_UNIFIED_IDEOGRAPH-31BCC> 2
+<CJK_UNIFIED_IDEOGRAPH-31BCD> 2
+<CJK_UNIFIED_IDEOGRAPH-31BCE> 2
+<CJK_UNIFIED_IDEOGRAPH-31BCF> 2
+<CJK_UNIFIED_IDEOGRAPH-31BD0> 2
+<CJK_UNIFIED_IDEOGRAPH-31BD1> 2
+<CJK_UNIFIED_IDEOGRAPH-31BD2> 2
+<CJK_UNIFIED_IDEOGRAPH-31BD3> 2
+<CJK_UNIFIED_IDEOGRAPH-31BD4> 2
+<CJK_UNIFIED_IDEOGRAPH-31BD5> 2
+<CJK_UNIFIED_IDEOGRAPH-31BD6> 2
+<CJK_UNIFIED_IDEOGRAPH-31BD7> 2
+<CJK_UNIFIED_IDEOGRAPH-31BD8> 2
+<CJK_UNIFIED_IDEOGRAPH-31BD9> 2
+<CJK_UNIFIED_IDEOGRAPH-31BDA> 2
+<CJK_UNIFIED_IDEOGRAPH-31BDB> 2
+<CJK_UNIFIED_IDEOGRAPH-31BDC> 2
+<CJK_UNIFIED_IDEOGRAPH-31BDD> 2
+<CJK_UNIFIED_IDEOGRAPH-31BDE> 2
+<CJK_UNIFIED_IDEOGRAPH-31BDF> 2
+<CJK_UNIFIED_IDEOGRAPH-31BE0> 2
+<CJK_UNIFIED_IDEOGRAPH-31BE1> 2
+<CJK_UNIFIED_IDEOGRAPH-31BE2> 2
+<CJK_UNIFIED_IDEOGRAPH-31BE3> 2
+<CJK_UNIFIED_IDEOGRAPH-31BE4> 2
+<CJK_UNIFIED_IDEOGRAPH-31BE5> 2
+<CJK_UNIFIED_IDEOGRAPH-31BE6> 2
+<CJK_UNIFIED_IDEOGRAPH-31BE7> 2
+<CJK_UNIFIED_IDEOGRAPH-31BE8> 2
+<CJK_UNIFIED_IDEOGRAPH-31BE9> 2
+<CJK_UNIFIED_IDEOGRAPH-31BEA> 2
+<CJK_UNIFIED_IDEOGRAPH-31BEB> 2
+<CJK_UNIFIED_IDEOGRAPH-31BEC> 2
+<CJK_UNIFIED_IDEOGRAPH-31BED> 2
+<CJK_UNIFIED_IDEOGRAPH-31BEE> 2
+<CJK_UNIFIED_IDEOGRAPH-31BEF> 2
+<CJK_UNIFIED_IDEOGRAPH-31BF0> 2
+<CJK_UNIFIED_IDEOGRAPH-31BF1> 2
+<CJK_UNIFIED_IDEOGRAPH-31BF2> 2
+<CJK_UNIFIED_IDEOGRAPH-31BF3> 2
+<CJK_UNIFIED_IDEOGRAPH-31BF4> 2
+<CJK_UNIFIED_IDEOGRAPH-31BF5> 2
+<CJK_UNIFIED_IDEOGRAPH-31BF6> 2
+<CJK_UNIFIED_IDEOGRAPH-31BF7> 2
+<CJK_UNIFIED_IDEOGRAPH-31BF8> 2
+<CJK_UNIFIED_IDEOGRAPH-31BF9> 2
+<CJK_UNIFIED_IDEOGRAPH-31BFA> 2
+<CJK_UNIFIED_IDEOGRAPH-31BFB> 2
+<CJK_UNIFIED_IDEOGRAPH-31BFC> 2
+<CJK_UNIFIED_IDEOGRAPH-31BFD> 2
+<CJK_UNIFIED_IDEOGRAPH-31BFE> 2
+<CJK_UNIFIED_IDEOGRAPH-31BFF> 2
+<CJK_UNIFIED_IDEOGRAPH-31C00> 2
+<CJK_UNIFIED_IDEOGRAPH-31C01> 2
+<CJK_UNIFIED_IDEOGRAPH-31C02> 2
+<CJK_UNIFIED_IDEOGRAPH-31C03> 2
+<CJK_UNIFIED_IDEOGRAPH-31C04> 2
+<CJK_UNIFIED_IDEOGRAPH-31C05> 2
+<CJK_UNIFIED_IDEOGRAPH-31C06> 2
+<CJK_UNIFIED_IDEOGRAPH-31C07> 2
+<CJK_UNIFIED_IDEOGRAPH-31C08> 2
+<CJK_UNIFIED_IDEOGRAPH-31C09> 2
+<CJK_UNIFIED_IDEOGRAPH-31C0A> 2
+<CJK_UNIFIED_IDEOGRAPH-31C0B> 2
+<CJK_UNIFIED_IDEOGRAPH-31C0C> 2
+<CJK_UNIFIED_IDEOGRAPH-31C0D> 2
+<CJK_UNIFIED_IDEOGRAPH-31C0E> 2
+<CJK_UNIFIED_IDEOGRAPH-31C0F> 2
+<CJK_UNIFIED_IDEOGRAPH-31C10> 2
+<CJK_UNIFIED_IDEOGRAPH-31C11> 2
+<CJK_UNIFIED_IDEOGRAPH-31C12> 2
+<CJK_UNIFIED_IDEOGRAPH-31C13> 2
+<CJK_UNIFIED_IDEOGRAPH-31C14> 2
+<CJK_UNIFIED_IDEOGRAPH-31C15> 2
+<CJK_UNIFIED_IDEOGRAPH-31C16> 2
+<CJK_UNIFIED_IDEOGRAPH-31C17> 2
+<CJK_UNIFIED_IDEOGRAPH-31C18> 2
+<CJK_UNIFIED_IDEOGRAPH-31C19> 2
+<CJK_UNIFIED_IDEOGRAPH-31C1A> 2
+<CJK_UNIFIED_IDEOGRAPH-31C1B> 2
+<CJK_UNIFIED_IDEOGRAPH-31C1C> 2
+<CJK_UNIFIED_IDEOGRAPH-31C1D> 2
+<CJK_UNIFIED_IDEOGRAPH-31C1E> 2
+<CJK_UNIFIED_IDEOGRAPH-31C1F> 2
+<CJK_UNIFIED_IDEOGRAPH-31C20> 2
+<CJK_UNIFIED_IDEOGRAPH-31C21> 2
+<CJK_UNIFIED_IDEOGRAPH-31C22> 2
+<CJK_UNIFIED_IDEOGRAPH-31C23> 2
+<CJK_UNIFIED_IDEOGRAPH-31C24> 2
+<CJK_UNIFIED_IDEOGRAPH-31C25> 2
+<CJK_UNIFIED_IDEOGRAPH-31C26> 2
+<CJK_UNIFIED_IDEOGRAPH-31C27> 2
+<CJK_UNIFIED_IDEOGRAPH-31C28> 2
+<CJK_UNIFIED_IDEOGRAPH-31C29> 2
+<CJK_UNIFIED_IDEOGRAPH-31C2A> 2
+<CJK_UNIFIED_IDEOGRAPH-31C2B> 2
+<CJK_UNIFIED_IDEOGRAPH-31C2C> 2
+<CJK_UNIFIED_IDEOGRAPH-31C2D> 2
+<CJK_UNIFIED_IDEOGRAPH-31C2E> 2
+<CJK_UNIFIED_IDEOGRAPH-31C2F> 2
+<CJK_UNIFIED_IDEOGRAPH-31C30> 2
+<CJK_UNIFIED_IDEOGRAPH-31C31> 2
+<CJK_UNIFIED_IDEOGRAPH-31C32> 2
+<CJK_UNIFIED_IDEOGRAPH-31C33> 2
+<CJK_UNIFIED_IDEOGRAPH-31C34> 2
+<CJK_UNIFIED_IDEOGRAPH-31C35> 2
+<CJK_UNIFIED_IDEOGRAPH-31C36> 2
+<CJK_UNIFIED_IDEOGRAPH-31C37> 2
+<CJK_UNIFIED_IDEOGRAPH-31C38> 2
+<CJK_UNIFIED_IDEOGRAPH-31C39> 2
+<CJK_UNIFIED_IDEOGRAPH-31C3A> 2
+<CJK_UNIFIED_IDEOGRAPH-31C3B> 2
+<CJK_UNIFIED_IDEOGRAPH-31C3C> 2
+<CJK_UNIFIED_IDEOGRAPH-31C3D> 2
+<CJK_UNIFIED_IDEOGRAPH-31C3E> 2
+<CJK_UNIFIED_IDEOGRAPH-31C3F> 2
+<CJK_UNIFIED_IDEOGRAPH-31C40> 2
+<CJK_UNIFIED_IDEOGRAPH-31C41> 2
+<CJK_UNIFIED_IDEOGRAPH-31C42> 2
+<CJK_UNIFIED_IDEOGRAPH-31C43> 2
+<CJK_UNIFIED_IDEOGRAPH-31C44> 2
+<CJK_UNIFIED_IDEOGRAPH-31C45> 2
+<CJK_UNIFIED_IDEOGRAPH-31C46> 2
+<CJK_UNIFIED_IDEOGRAPH-31C47> 2
+<CJK_UNIFIED_IDEOGRAPH-31C48> 2
+<CJK_UNIFIED_IDEOGRAPH-31C49> 2
+<CJK_UNIFIED_IDEOGRAPH-31C4A> 2
+<CJK_UNIFIED_IDEOGRAPH-31C4B> 2
+<CJK_UNIFIED_IDEOGRAPH-31C4C> 2
+<CJK_UNIFIED_IDEOGRAPH-31C4D> 2
+<CJK_UNIFIED_IDEOGRAPH-31C4E> 2
+<CJK_UNIFIED_IDEOGRAPH-31C4F> 2
+<CJK_UNIFIED_IDEOGRAPH-31C50> 2
+<CJK_UNIFIED_IDEOGRAPH-31C51> 2
+<CJK_UNIFIED_IDEOGRAPH-31C52> 2
+<CJK_UNIFIED_IDEOGRAPH-31C53> 2
+<CJK_UNIFIED_IDEOGRAPH-31C54> 2
+<CJK_UNIFIED_IDEOGRAPH-31C55> 2
+<CJK_UNIFIED_IDEOGRAPH-31C56> 2
+<CJK_UNIFIED_IDEOGRAPH-31C57> 2
+<CJK_UNIFIED_IDEOGRAPH-31C58> 2
+<CJK_UNIFIED_IDEOGRAPH-31C59> 2
+<CJK_UNIFIED_IDEOGRAPH-31C5A> 2
+<CJK_UNIFIED_IDEOGRAPH-31C5B> 2
+<CJK_UNIFIED_IDEOGRAPH-31C5C> 2
+<CJK_UNIFIED_IDEOGRAPH-31C5D> 2
+<CJK_UNIFIED_IDEOGRAPH-31C5E> 2
+<CJK_UNIFIED_IDEOGRAPH-31C5F> 2
+<CJK_UNIFIED_IDEOGRAPH-31C60> 2
+<CJK_UNIFIED_IDEOGRAPH-31C61> 2
+<CJK_UNIFIED_IDEOGRAPH-31C62> 2
+<CJK_UNIFIED_IDEOGRAPH-31C63> 2
+<CJK_UNIFIED_IDEOGRAPH-31C64> 2
+<CJK_UNIFIED_IDEOGRAPH-31C65> 2
+<CJK_UNIFIED_IDEOGRAPH-31C66> 2
+<CJK_UNIFIED_IDEOGRAPH-31C67> 2
+<CJK_UNIFIED_IDEOGRAPH-31C68> 2
+<CJK_UNIFIED_IDEOGRAPH-31C69> 2
+<CJK_UNIFIED_IDEOGRAPH-31C6A> 2
+<CJK_UNIFIED_IDEOGRAPH-31C6B> 2
+<CJK_UNIFIED_IDEOGRAPH-31C6C> 2
+<CJK_UNIFIED_IDEOGRAPH-31C6D> 2
+<CJK_UNIFIED_IDEOGRAPH-31C6E> 2
+<CJK_UNIFIED_IDEOGRAPH-31C6F> 2
+<CJK_UNIFIED_IDEOGRAPH-31C70> 2
+<CJK_UNIFIED_IDEOGRAPH-31C71> 2
+<CJK_UNIFIED_IDEOGRAPH-31C72> 2
+<CJK_UNIFIED_IDEOGRAPH-31C73> 2
+<CJK_UNIFIED_IDEOGRAPH-31C74> 2
+<CJK_UNIFIED_IDEOGRAPH-31C75> 2
+<CJK_UNIFIED_IDEOGRAPH-31C76> 2
+<CJK_UNIFIED_IDEOGRAPH-31C77> 2
+<CJK_UNIFIED_IDEOGRAPH-31C78> 2
+<CJK_UNIFIED_IDEOGRAPH-31C79> 2
+<CJK_UNIFIED_IDEOGRAPH-31C7A> 2
+<CJK_UNIFIED_IDEOGRAPH-31C7B> 2
+<CJK_UNIFIED_IDEOGRAPH-31C7C> 2
+<CJK_UNIFIED_IDEOGRAPH-31C7D> 2
+<CJK_UNIFIED_IDEOGRAPH-31C7E> 2
+<CJK_UNIFIED_IDEOGRAPH-31C7F> 2
+<CJK_UNIFIED_IDEOGRAPH-31C80> 2
+<CJK_UNIFIED_IDEOGRAPH-31C81> 2
+<CJK_UNIFIED_IDEOGRAPH-31C82> 2
+<CJK_UNIFIED_IDEOGRAPH-31C83> 2
+<CJK_UNIFIED_IDEOGRAPH-31C84> 2
+<CJK_UNIFIED_IDEOGRAPH-31C85> 2
+<CJK_UNIFIED_IDEOGRAPH-31C86> 2
+<CJK_UNIFIED_IDEOGRAPH-31C87> 2
+<CJK_UNIFIED_IDEOGRAPH-31C88> 2
+<CJK_UNIFIED_IDEOGRAPH-31C89> 2
+<CJK_UNIFIED_IDEOGRAPH-31C8A> 2
+<CJK_UNIFIED_IDEOGRAPH-31C8B> 2
+<CJK_UNIFIED_IDEOGRAPH-31C8C> 2
+<CJK_UNIFIED_IDEOGRAPH-31C8D> 2
+<CJK_UNIFIED_IDEOGRAPH-31C8E> 2
+<CJK_UNIFIED_IDEOGRAPH-31C8F> 2
+<CJK_UNIFIED_IDEOGRAPH-31C90> 2
+<CJK_UNIFIED_IDEOGRAPH-31C91> 2
+<CJK_UNIFIED_IDEOGRAPH-31C92> 2
+<CJK_UNIFIED_IDEOGRAPH-31C93> 2
+<CJK_UNIFIED_IDEOGRAPH-31C94> 2
+<CJK_UNIFIED_IDEOGRAPH-31C95> 2
+<CJK_UNIFIED_IDEOGRAPH-31C96> 2
+<CJK_UNIFIED_IDEOGRAPH-31C97> 2
+<CJK_UNIFIED_IDEOGRAPH-31C98> 2
+<CJK_UNIFIED_IDEOGRAPH-31C99> 2
+<CJK_UNIFIED_IDEOGRAPH-31C9A> 2
+<CJK_UNIFIED_IDEOGRAPH-31C9B> 2
+<CJK_UNIFIED_IDEOGRAPH-31C9C> 2
+<CJK_UNIFIED_IDEOGRAPH-31C9D> 2
+<CJK_UNIFIED_IDEOGRAPH-31C9E> 2
+<CJK_UNIFIED_IDEOGRAPH-31C9F> 2
+<CJK_UNIFIED_IDEOGRAPH-31CA0> 2
+<CJK_UNIFIED_IDEOGRAPH-31CA1> 2
+<CJK_UNIFIED_IDEOGRAPH-31CA2> 2
+<CJK_UNIFIED_IDEOGRAPH-31CA3> 2
+<CJK_UNIFIED_IDEOGRAPH-31CA4> 2
+<CJK_UNIFIED_IDEOGRAPH-31CA5> 2
+<CJK_UNIFIED_IDEOGRAPH-31CA6> 2
+<CJK_UNIFIED_IDEOGRAPH-31CA7> 2
+<CJK_UNIFIED_IDEOGRAPH-31CA8> 2
+<CJK_UNIFIED_IDEOGRAPH-31CA9> 2
+<CJK_UNIFIED_IDEOGRAPH-31CAA> 2
+<CJK_UNIFIED_IDEOGRAPH-31CAB> 2
+<CJK_UNIFIED_IDEOGRAPH-31CAC> 2
+<CJK_UNIFIED_IDEOGRAPH-31CAD> 2
+<CJK_UNIFIED_IDEOGRAPH-31CAE> 2
+<CJK_UNIFIED_IDEOGRAPH-31CAF> 2
+<CJK_UNIFIED_IDEOGRAPH-31CB0> 2
+<CJK_UNIFIED_IDEOGRAPH-31CB1> 2
+<CJK_UNIFIED_IDEOGRAPH-31CB2> 2
+<CJK_UNIFIED_IDEOGRAPH-31CB3> 2
+<CJK_UNIFIED_IDEOGRAPH-31CB4> 2
+<CJK_UNIFIED_IDEOGRAPH-31CB5> 2
+<CJK_UNIFIED_IDEOGRAPH-31CB6> 2
+<CJK_UNIFIED_IDEOGRAPH-31CB7> 2
+<CJK_UNIFIED_IDEOGRAPH-31CB8> 2
+<CJK_UNIFIED_IDEOGRAPH-31CB9> 2
+<CJK_UNIFIED_IDEOGRAPH-31CBA> 2
+<CJK_UNIFIED_IDEOGRAPH-31CBB> 2
+<CJK_UNIFIED_IDEOGRAPH-31CBC> 2
+<CJK_UNIFIED_IDEOGRAPH-31CBD> 2
+<CJK_UNIFIED_IDEOGRAPH-31CBE> 2
+<CJK_UNIFIED_IDEOGRAPH-31CBF> 2
+<CJK_UNIFIED_IDEOGRAPH-31CC0> 2
+<CJK_UNIFIED_IDEOGRAPH-31CC1> 2
+<CJK_UNIFIED_IDEOGRAPH-31CC2> 2
+<CJK_UNIFIED_IDEOGRAPH-31CC3> 2
+<CJK_UNIFIED_IDEOGRAPH-31CC4> 2
+<CJK_UNIFIED_IDEOGRAPH-31CC5> 2
+<CJK_UNIFIED_IDEOGRAPH-31CC6> 2
+<CJK_UNIFIED_IDEOGRAPH-31CC7> 2
+<CJK_UNIFIED_IDEOGRAPH-31CC8> 2
+<CJK_UNIFIED_IDEOGRAPH-31CC9> 2
+<CJK_UNIFIED_IDEOGRAPH-31CCA> 2
+<CJK_UNIFIED_IDEOGRAPH-31CCB> 2
+<CJK_UNIFIED_IDEOGRAPH-31CCC> 2
+<CJK_UNIFIED_IDEOGRAPH-31CCD> 2
+<CJK_UNIFIED_IDEOGRAPH-31CCE> 2
+<CJK_UNIFIED_IDEOGRAPH-31CCF> 2
+<CJK_UNIFIED_IDEOGRAPH-31CD0> 2
+<CJK_UNIFIED_IDEOGRAPH-31CD1> 2
+<CJK_UNIFIED_IDEOGRAPH-31CD2> 2
+<CJK_UNIFIED_IDEOGRAPH-31CD3> 2
+<CJK_UNIFIED_IDEOGRAPH-31CD4> 2
+<CJK_UNIFIED_IDEOGRAPH-31CD5> 2
+<CJK_UNIFIED_IDEOGRAPH-31CD6> 2
+<CJK_UNIFIED_IDEOGRAPH-31CD7> 2
+<CJK_UNIFIED_IDEOGRAPH-31CD8> 2
+<CJK_UNIFIED_IDEOGRAPH-31CD9> 2
+<CJK_UNIFIED_IDEOGRAPH-31CDA> 2
+<CJK_UNIFIED_IDEOGRAPH-31CDB> 2
+<CJK_UNIFIED_IDEOGRAPH-31CDC> 2
+<CJK_UNIFIED_IDEOGRAPH-31CDD> 2
+<CJK_UNIFIED_IDEOGRAPH-31CDE> 2
+<CJK_UNIFIED_IDEOGRAPH-31CDF> 2
+<CJK_UNIFIED_IDEOGRAPH-31CE0> 2
+<CJK_UNIFIED_IDEOGRAPH-31CE1> 2
+<CJK_UNIFIED_IDEOGRAPH-31CE2> 2
+<CJK_UNIFIED_IDEOGRAPH-31CE3> 2
+<CJK_UNIFIED_IDEOGRAPH-31CE4> 2
+<CJK_UNIFIED_IDEOGRAPH-31CE5> 2
+<CJK_UNIFIED_IDEOGRAPH-31CE6> 2
+<CJK_UNIFIED_IDEOGRAPH-31CE7> 2
+<CJK_UNIFIED_IDEOGRAPH-31CE8> 2
+<CJK_UNIFIED_IDEOGRAPH-31CE9> 2
+<CJK_UNIFIED_IDEOGRAPH-31CEA> 2
+<CJK_UNIFIED_IDEOGRAPH-31CEB> 2
+<CJK_UNIFIED_IDEOGRAPH-31CEC> 2
+<CJK_UNIFIED_IDEOGRAPH-31CED> 2
+<CJK_UNIFIED_IDEOGRAPH-31CEE> 2
+<CJK_UNIFIED_IDEOGRAPH-31CEF> 2
+<CJK_UNIFIED_IDEOGRAPH-31CF0> 2
+<CJK_UNIFIED_IDEOGRAPH-31CF1> 2
+<CJK_UNIFIED_IDEOGRAPH-31CF2> 2
+<CJK_UNIFIED_IDEOGRAPH-31CF3> 2
+<CJK_UNIFIED_IDEOGRAPH-31CF4> 2
+<CJK_UNIFIED_IDEOGRAPH-31CF5> 2
+<CJK_UNIFIED_IDEOGRAPH-31CF6> 2
+<CJK_UNIFIED_IDEOGRAPH-31CF7> 2
+<CJK_UNIFIED_IDEOGRAPH-31CF8> 2
+<CJK_UNIFIED_IDEOGRAPH-31CF9> 2
+<CJK_UNIFIED_IDEOGRAPH-31CFA> 2
+<CJK_UNIFIED_IDEOGRAPH-31CFB> 2
+<CJK_UNIFIED_IDEOGRAPH-31CFC> 2
+<CJK_UNIFIED_IDEOGRAPH-31CFD> 2
+<CJK_UNIFIED_IDEOGRAPH-31CFE> 2
+<CJK_UNIFIED_IDEOGRAPH-31CFF> 2
+<CJK_UNIFIED_IDEOGRAPH-31D00> 2
+<CJK_UNIFIED_IDEOGRAPH-31D01> 2
+<CJK_UNIFIED_IDEOGRAPH-31D02> 2
+<CJK_UNIFIED_IDEOGRAPH-31D03> 2
+<CJK_UNIFIED_IDEOGRAPH-31D04> 2
+<CJK_UNIFIED_IDEOGRAPH-31D05> 2
+<CJK_UNIFIED_IDEOGRAPH-31D06> 2
+<CJK_UNIFIED_IDEOGRAPH-31D07> 2
+<CJK_UNIFIED_IDEOGRAPH-31D08> 2
+<CJK_UNIFIED_IDEOGRAPH-31D09> 2
+<CJK_UNIFIED_IDEOGRAPH-31D0A> 2
+<CJK_UNIFIED_IDEOGRAPH-31D0B> 2
+<CJK_UNIFIED_IDEOGRAPH-31D0C> 2
+<CJK_UNIFIED_IDEOGRAPH-31D0D> 2
+<CJK_UNIFIED_IDEOGRAPH-31D0E> 2
+<CJK_UNIFIED_IDEOGRAPH-31D0F> 2
+<CJK_UNIFIED_IDEOGRAPH-31D10> 2
+<CJK_UNIFIED_IDEOGRAPH-31D11> 2
+<CJK_UNIFIED_IDEOGRAPH-31D12> 2
+<CJK_UNIFIED_IDEOGRAPH-31D13> 2
+<CJK_UNIFIED_IDEOGRAPH-31D14> 2
+<CJK_UNIFIED_IDEOGRAPH-31D15> 2
+<CJK_UNIFIED_IDEOGRAPH-31D16> 2
+<CJK_UNIFIED_IDEOGRAPH-31D17> 2
+<CJK_UNIFIED_IDEOGRAPH-31D18> 2
+<CJK_UNIFIED_IDEOGRAPH-31D19> 2
+<CJK_UNIFIED_IDEOGRAPH-31D1A> 2
+<CJK_UNIFIED_IDEOGRAPH-31D1B> 2
+<CJK_UNIFIED_IDEOGRAPH-31D1C> 2
+<CJK_UNIFIED_IDEOGRAPH-31D1D> 2
+<CJK_UNIFIED_IDEOGRAPH-31D1E> 2
+<CJK_UNIFIED_IDEOGRAPH-31D1F> 2
+<CJK_UNIFIED_IDEOGRAPH-31D20> 2
+<CJK_UNIFIED_IDEOGRAPH-31D21> 2
+<CJK_UNIFIED_IDEOGRAPH-31D22> 2
+<CJK_UNIFIED_IDEOGRAPH-31D23> 2
+<CJK_UNIFIED_IDEOGRAPH-31D24> 2
+<CJK_UNIFIED_IDEOGRAPH-31D25> 2
+<CJK_UNIFIED_IDEOGRAPH-31D26> 2
+<CJK_UNIFIED_IDEOGRAPH-31D27> 2
+<CJK_UNIFIED_IDEOGRAPH-31D28> 2
+<CJK_UNIFIED_IDEOGRAPH-31D29> 2
+<CJK_UNIFIED_IDEOGRAPH-31D2A> 2
+<CJK_UNIFIED_IDEOGRAPH-31D2B> 2
+<CJK_UNIFIED_IDEOGRAPH-31D2C> 2
+<CJK_UNIFIED_IDEOGRAPH-31D2D> 2
+<CJK_UNIFIED_IDEOGRAPH-31D2E> 2
+<CJK_UNIFIED_IDEOGRAPH-31D2F> 2
+<CJK_UNIFIED_IDEOGRAPH-31D30> 2
+<CJK_UNIFIED_IDEOGRAPH-31D31> 2
+<CJK_UNIFIED_IDEOGRAPH-31D32> 2
+<CJK_UNIFIED_IDEOGRAPH-31D33> 2
+<CJK_UNIFIED_IDEOGRAPH-31D34> 2
+<CJK_UNIFIED_IDEOGRAPH-31D35> 2
+<CJK_UNIFIED_IDEOGRAPH-31D36> 2
+<CJK_UNIFIED_IDEOGRAPH-31D37> 2
+<CJK_UNIFIED_IDEOGRAPH-31D38> 2
+<CJK_UNIFIED_IDEOGRAPH-31D39> 2
+<CJK_UNIFIED_IDEOGRAPH-31D3A> 2
+<CJK_UNIFIED_IDEOGRAPH-31D3B> 2
+<CJK_UNIFIED_IDEOGRAPH-31D3C> 2
+<CJK_UNIFIED_IDEOGRAPH-31D3D> 2
+<CJK_UNIFIED_IDEOGRAPH-31D3E> 2
+<CJK_UNIFIED_IDEOGRAPH-31D3F> 2
+<CJK_UNIFIED_IDEOGRAPH-31D40> 2
+<CJK_UNIFIED_IDEOGRAPH-31D41> 2
+<CJK_UNIFIED_IDEOGRAPH-31D42> 2
+<CJK_UNIFIED_IDEOGRAPH-31D43> 2
+<CJK_UNIFIED_IDEOGRAPH-31D44> 2
+<CJK_UNIFIED_IDEOGRAPH-31D45> 2
+<CJK_UNIFIED_IDEOGRAPH-31D46> 2
+<CJK_UNIFIED_IDEOGRAPH-31D47> 2
+<CJK_UNIFIED_IDEOGRAPH-31D48> 2
+<CJK_UNIFIED_IDEOGRAPH-31D49> 2
+<CJK_UNIFIED_IDEOGRAPH-31D4A> 2
+<CJK_UNIFIED_IDEOGRAPH-31D4B> 2
+<CJK_UNIFIED_IDEOGRAPH-31D4C> 2
+<CJK_UNIFIED_IDEOGRAPH-31D4D> 2
+<CJK_UNIFIED_IDEOGRAPH-31D4E> 2
+<CJK_UNIFIED_IDEOGRAPH-31D4F> 2
+<CJK_UNIFIED_IDEOGRAPH-31D50> 2
+<CJK_UNIFIED_IDEOGRAPH-31D51> 2
+<CJK_UNIFIED_IDEOGRAPH-31D52> 2
+<CJK_UNIFIED_IDEOGRAPH-31D53> 2
+<CJK_UNIFIED_IDEOGRAPH-31D54> 2
+<CJK_UNIFIED_IDEOGRAPH-31D55> 2
+<CJK_UNIFIED_IDEOGRAPH-31D56> 2
+<CJK_UNIFIED_IDEOGRAPH-31D57> 2
+<CJK_UNIFIED_IDEOGRAPH-31D58> 2
+<CJK_UNIFIED_IDEOGRAPH-31D59> 2
+<CJK_UNIFIED_IDEOGRAPH-31D5A> 2
+<CJK_UNIFIED_IDEOGRAPH-31D5B> 2
+<CJK_UNIFIED_IDEOGRAPH-31D5C> 2
+<CJK_UNIFIED_IDEOGRAPH-31D5D> 2
+<CJK_UNIFIED_IDEOGRAPH-31D5E> 2
+<CJK_UNIFIED_IDEOGRAPH-31D5F> 2
+<CJK_UNIFIED_IDEOGRAPH-31D60> 2
+<CJK_UNIFIED_IDEOGRAPH-31D61> 2
+<CJK_UNIFIED_IDEOGRAPH-31D62> 2
+<CJK_UNIFIED_IDEOGRAPH-31D63> 2
+<CJK_UNIFIED_IDEOGRAPH-31D64> 2
+<CJK_UNIFIED_IDEOGRAPH-31D65> 2
+<CJK_UNIFIED_IDEOGRAPH-31D66> 2
+<CJK_UNIFIED_IDEOGRAPH-31D67> 2
+<CJK_UNIFIED_IDEOGRAPH-31D68> 2
+<CJK_UNIFIED_IDEOGRAPH-31D69> 2
+<CJK_UNIFIED_IDEOGRAPH-31D6A> 2
+<CJK_UNIFIED_IDEOGRAPH-31D6B> 2
+<CJK_UNIFIED_IDEOGRAPH-31D6C> 2
+<CJK_UNIFIED_IDEOGRAPH-31D6D> 2
+<CJK_UNIFIED_IDEOGRAPH-31D6E> 2
+<CJK_UNIFIED_IDEOGRAPH-31D6F> 2
+<CJK_UNIFIED_IDEOGRAPH-31D70> 2
+<CJK_UNIFIED_IDEOGRAPH-31D71> 2
+<CJK_UNIFIED_IDEOGRAPH-31D72> 2
+<CJK_UNIFIED_IDEOGRAPH-31D73> 2
+<CJK_UNIFIED_IDEOGRAPH-31D74> 2
+<CJK_UNIFIED_IDEOGRAPH-31D75> 2
+<CJK_UNIFIED_IDEOGRAPH-31D76> 2
+<CJK_UNIFIED_IDEOGRAPH-31D77> 2
+<CJK_UNIFIED_IDEOGRAPH-31D78> 2
+<CJK_UNIFIED_IDEOGRAPH-31D79> 2
+<CJK_UNIFIED_IDEOGRAPH-31D7A> 2
+<CJK_UNIFIED_IDEOGRAPH-31D7B> 2
+<CJK_UNIFIED_IDEOGRAPH-31D7C> 2
+<CJK_UNIFIED_IDEOGRAPH-31D7D> 2
+<CJK_UNIFIED_IDEOGRAPH-31D7E> 2
+<CJK_UNIFIED_IDEOGRAPH-31D7F> 2
+<CJK_UNIFIED_IDEOGRAPH-31D80> 2
+<CJK_UNIFIED_IDEOGRAPH-31D81> 2
+<CJK_UNIFIED_IDEOGRAPH-31D82> 2
+<CJK_UNIFIED_IDEOGRAPH-31D83> 2
+<CJK_UNIFIED_IDEOGRAPH-31D84> 2
+<CJK_UNIFIED_IDEOGRAPH-31D85> 2
+<CJK_UNIFIED_IDEOGRAPH-31D86> 2
+<CJK_UNIFIED_IDEOGRAPH-31D87> 2
+<CJK_UNIFIED_IDEOGRAPH-31D88> 2
+<CJK_UNIFIED_IDEOGRAPH-31D89> 2
+<CJK_UNIFIED_IDEOGRAPH-31D8A> 2
+<CJK_UNIFIED_IDEOGRAPH-31D8B> 2
+<CJK_UNIFIED_IDEOGRAPH-31D8C> 2
+<CJK_UNIFIED_IDEOGRAPH-31D8D> 2
+<CJK_UNIFIED_IDEOGRAPH-31D8E> 2
+<CJK_UNIFIED_IDEOGRAPH-31D8F> 2
+<CJK_UNIFIED_IDEOGRAPH-31D90> 2
+<CJK_UNIFIED_IDEOGRAPH-31D91> 2
+<CJK_UNIFIED_IDEOGRAPH-31D92> 2
+<CJK_UNIFIED_IDEOGRAPH-31D93> 2
+<CJK_UNIFIED_IDEOGRAPH-31D94> 2
+<CJK_UNIFIED_IDEOGRAPH-31D95> 2
+<CJK_UNIFIED_IDEOGRAPH-31D96> 2
+<CJK_UNIFIED_IDEOGRAPH-31D97> 2
+<CJK_UNIFIED_IDEOGRAPH-31D98> 2
+<CJK_UNIFIED_IDEOGRAPH-31D99> 2
+<CJK_UNIFIED_IDEOGRAPH-31D9A> 2
+<CJK_UNIFIED_IDEOGRAPH-31D9B> 2
+<CJK_UNIFIED_IDEOGRAPH-31D9C> 2
+<CJK_UNIFIED_IDEOGRAPH-31D9D> 2
+<CJK_UNIFIED_IDEOGRAPH-31D9E> 2
+<CJK_UNIFIED_IDEOGRAPH-31D9F> 2
+<CJK_UNIFIED_IDEOGRAPH-31DA0> 2
+<CJK_UNIFIED_IDEOGRAPH-31DA1> 2
+<CJK_UNIFIED_IDEOGRAPH-31DA2> 2
+<CJK_UNIFIED_IDEOGRAPH-31DA3> 2
+<CJK_UNIFIED_IDEOGRAPH-31DA4> 2
+<CJK_UNIFIED_IDEOGRAPH-31DA5> 2
+<CJK_UNIFIED_IDEOGRAPH-31DA6> 2
+<CJK_UNIFIED_IDEOGRAPH-31DA7> 2
+<CJK_UNIFIED_IDEOGRAPH-31DA8> 2
+<CJK_UNIFIED_IDEOGRAPH-31DA9> 2
+<CJK_UNIFIED_IDEOGRAPH-31DAA> 2
+<CJK_UNIFIED_IDEOGRAPH-31DAB> 2
+<CJK_UNIFIED_IDEOGRAPH-31DAC> 2
+<CJK_UNIFIED_IDEOGRAPH-31DAD> 2
+<CJK_UNIFIED_IDEOGRAPH-31DAE> 2
+<CJK_UNIFIED_IDEOGRAPH-31DAF> 2
+<CJK_UNIFIED_IDEOGRAPH-31DB0> 2
+<CJK_UNIFIED_IDEOGRAPH-31DB1> 2
+<CJK_UNIFIED_IDEOGRAPH-31DB2> 2
+<CJK_UNIFIED_IDEOGRAPH-31DB3> 2
+<CJK_UNIFIED_IDEOGRAPH-31DB4> 2
+<CJK_UNIFIED_IDEOGRAPH-31DB5> 2
+<CJK_UNIFIED_IDEOGRAPH-31DB6> 2
+<CJK_UNIFIED_IDEOGRAPH-31DB7> 2
+<CJK_UNIFIED_IDEOGRAPH-31DB8> 2
+<CJK_UNIFIED_IDEOGRAPH-31DB9> 2
+<CJK_UNIFIED_IDEOGRAPH-31DBA> 2
+<CJK_UNIFIED_IDEOGRAPH-31DBB> 2
+<CJK_UNIFIED_IDEOGRAPH-31DBC> 2
+<CJK_UNIFIED_IDEOGRAPH-31DBD> 2
+<CJK_UNIFIED_IDEOGRAPH-31DBE> 2
+<CJK_UNIFIED_IDEOGRAPH-31DBF> 2
+<CJK_UNIFIED_IDEOGRAPH-31DC0> 2
+<CJK_UNIFIED_IDEOGRAPH-31DC1> 2
+<CJK_UNIFIED_IDEOGRAPH-31DC2> 2
+<CJK_UNIFIED_IDEOGRAPH-31DC3> 2
+<CJK_UNIFIED_IDEOGRAPH-31DC4> 2
+<CJK_UNIFIED_IDEOGRAPH-31DC5> 2
+<CJK_UNIFIED_IDEOGRAPH-31DC6> 2
+<CJK_UNIFIED_IDEOGRAPH-31DC7> 2
+<CJK_UNIFIED_IDEOGRAPH-31DC8> 2
+<CJK_UNIFIED_IDEOGRAPH-31DC9> 2
+<CJK_UNIFIED_IDEOGRAPH-31DCA> 2
+<CJK_UNIFIED_IDEOGRAPH-31DCB> 2
+<CJK_UNIFIED_IDEOGRAPH-31DCC> 2
+<CJK_UNIFIED_IDEOGRAPH-31DCD> 2
+<CJK_UNIFIED_IDEOGRAPH-31DCE> 2
+<CJK_UNIFIED_IDEOGRAPH-31DCF> 2
+<CJK_UNIFIED_IDEOGRAPH-31DD0> 2
+<CJK_UNIFIED_IDEOGRAPH-31DD1> 2
+<CJK_UNIFIED_IDEOGRAPH-31DD2> 2
+<CJK_UNIFIED_IDEOGRAPH-31DD3> 2
+<CJK_UNIFIED_IDEOGRAPH-31DD4> 2
+<CJK_UNIFIED_IDEOGRAPH-31DD5> 2
+<CJK_UNIFIED_IDEOGRAPH-31DD6> 2
+<CJK_UNIFIED_IDEOGRAPH-31DD7> 2
+<CJK_UNIFIED_IDEOGRAPH-31DD8> 2
+<CJK_UNIFIED_IDEOGRAPH-31DD9> 2
+<CJK_UNIFIED_IDEOGRAPH-31DDA> 2
+<CJK_UNIFIED_IDEOGRAPH-31DDB> 2
+<CJK_UNIFIED_IDEOGRAPH-31DDC> 2
+<CJK_UNIFIED_IDEOGRAPH-31DDD> 2
+<CJK_UNIFIED_IDEOGRAPH-31DDE> 2
+<CJK_UNIFIED_IDEOGRAPH-31DDF> 2
+<CJK_UNIFIED_IDEOGRAPH-31DE0> 2
+<CJK_UNIFIED_IDEOGRAPH-31DE1> 2
+<CJK_UNIFIED_IDEOGRAPH-31DE2> 2
+<CJK_UNIFIED_IDEOGRAPH-31DE3> 2
+<CJK_UNIFIED_IDEOGRAPH-31DE4> 2
+<CJK_UNIFIED_IDEOGRAPH-31DE5> 2
+<CJK_UNIFIED_IDEOGRAPH-31DE6> 2
+<CJK_UNIFIED_IDEOGRAPH-31DE7> 2
+<CJK_UNIFIED_IDEOGRAPH-31DE8> 2
+<CJK_UNIFIED_IDEOGRAPH-31DE9> 2
+<CJK_UNIFIED_IDEOGRAPH-31DEA> 2
+<CJK_UNIFIED_IDEOGRAPH-31DEB> 2
+<CJK_UNIFIED_IDEOGRAPH-31DEC> 2
+<CJK_UNIFIED_IDEOGRAPH-31DED> 2
+<CJK_UNIFIED_IDEOGRAPH-31DEE> 2
+<CJK_UNIFIED_IDEOGRAPH-31DEF> 2
+<CJK_UNIFIED_IDEOGRAPH-31DF0> 2
+<CJK_UNIFIED_IDEOGRAPH-31DF1> 2
+<CJK_UNIFIED_IDEOGRAPH-31DF2> 2
+<CJK_UNIFIED_IDEOGRAPH-31DF3> 2
+<CJK_UNIFIED_IDEOGRAPH-31DF4> 2
+<CJK_UNIFIED_IDEOGRAPH-31DF5> 2
+<CJK_UNIFIED_IDEOGRAPH-31DF6> 2
+<CJK_UNIFIED_IDEOGRAPH-31DF7> 2
+<CJK_UNIFIED_IDEOGRAPH-31DF8> 2
+<CJK_UNIFIED_IDEOGRAPH-31DF9> 2
+<CJK_UNIFIED_IDEOGRAPH-31DFA> 2
+<CJK_UNIFIED_IDEOGRAPH-31DFB> 2
+<CJK_UNIFIED_IDEOGRAPH-31DFC> 2
+<CJK_UNIFIED_IDEOGRAPH-31DFD> 2
+<CJK_UNIFIED_IDEOGRAPH-31DFE> 2
+<CJK_UNIFIED_IDEOGRAPH-31DFF> 2
+<CJK_UNIFIED_IDEOGRAPH-31E00> 2
+<CJK_UNIFIED_IDEOGRAPH-31E01> 2
+<CJK_UNIFIED_IDEOGRAPH-31E02> 2
+<CJK_UNIFIED_IDEOGRAPH-31E03> 2
+<CJK_UNIFIED_IDEOGRAPH-31E04> 2
+<CJK_UNIFIED_IDEOGRAPH-31E05> 2
+<CJK_UNIFIED_IDEOGRAPH-31E06> 2
+<CJK_UNIFIED_IDEOGRAPH-31E07> 2
+<CJK_UNIFIED_IDEOGRAPH-31E08> 2
+<CJK_UNIFIED_IDEOGRAPH-31E09> 2
+<CJK_UNIFIED_IDEOGRAPH-31E0A> 2
+<CJK_UNIFIED_IDEOGRAPH-31E0B> 2
+<CJK_UNIFIED_IDEOGRAPH-31E0C> 2
+<CJK_UNIFIED_IDEOGRAPH-31E0D> 2
+<CJK_UNIFIED_IDEOGRAPH-31E0E> 2
+<CJK_UNIFIED_IDEOGRAPH-31E0F> 2
+<CJK_UNIFIED_IDEOGRAPH-31E10> 2
+<CJK_UNIFIED_IDEOGRAPH-31E11> 2
+<CJK_UNIFIED_IDEOGRAPH-31E12> 2
+<CJK_UNIFIED_IDEOGRAPH-31E13> 2
+<CJK_UNIFIED_IDEOGRAPH-31E14> 2
+<CJK_UNIFIED_IDEOGRAPH-31E15> 2
+<CJK_UNIFIED_IDEOGRAPH-31E16> 2
+<CJK_UNIFIED_IDEOGRAPH-31E17> 2
+<CJK_UNIFIED_IDEOGRAPH-31E18> 2
+<CJK_UNIFIED_IDEOGRAPH-31E19> 2
+<CJK_UNIFIED_IDEOGRAPH-31E1A> 2
+<CJK_UNIFIED_IDEOGRAPH-31E1B> 2
+<CJK_UNIFIED_IDEOGRAPH-31E1C> 2
+<CJK_UNIFIED_IDEOGRAPH-31E1D> 2
+<CJK_UNIFIED_IDEOGRAPH-31E1E> 2
+<CJK_UNIFIED_IDEOGRAPH-31E1F> 2
+<CJK_UNIFIED_IDEOGRAPH-31E20> 2
+<CJK_UNIFIED_IDEOGRAPH-31E21> 2
+<CJK_UNIFIED_IDEOGRAPH-31E22> 2
+<CJK_UNIFIED_IDEOGRAPH-31E23> 2
+<CJK_UNIFIED_IDEOGRAPH-31E24> 2
+<CJK_UNIFIED_IDEOGRAPH-31E25> 2
+<CJK_UNIFIED_IDEOGRAPH-31E26> 2
+<CJK_UNIFIED_IDEOGRAPH-31E27> 2
+<CJK_UNIFIED_IDEOGRAPH-31E28> 2
+<CJK_UNIFIED_IDEOGRAPH-31E29> 2
+<CJK_UNIFIED_IDEOGRAPH-31E2A> 2
+<CJK_UNIFIED_IDEOGRAPH-31E2B> 2
+<CJK_UNIFIED_IDEOGRAPH-31E2C> 2
+<CJK_UNIFIED_IDEOGRAPH-31E2D> 2
+<CJK_UNIFIED_IDEOGRAPH-31E2E> 2
+<CJK_UNIFIED_IDEOGRAPH-31E2F> 2
+<CJK_UNIFIED_IDEOGRAPH-31E30> 2
+<CJK_UNIFIED_IDEOGRAPH-31E31> 2
+<CJK_UNIFIED_IDEOGRAPH-31E32> 2
+<CJK_UNIFIED_IDEOGRAPH-31E33> 2
+<CJK_UNIFIED_IDEOGRAPH-31E34> 2
+<CJK_UNIFIED_IDEOGRAPH-31E35> 2
+<CJK_UNIFIED_IDEOGRAPH-31E36> 2
+<CJK_UNIFIED_IDEOGRAPH-31E37> 2
+<CJK_UNIFIED_IDEOGRAPH-31E38> 2
+<CJK_UNIFIED_IDEOGRAPH-31E39> 2
+<CJK_UNIFIED_IDEOGRAPH-31E3A> 2
+<CJK_UNIFIED_IDEOGRAPH-31E3B> 2
+<CJK_UNIFIED_IDEOGRAPH-31E3C> 2
+<CJK_UNIFIED_IDEOGRAPH-31E3D> 2
+<CJK_UNIFIED_IDEOGRAPH-31E3E> 2
+<CJK_UNIFIED_IDEOGRAPH-31E3F> 2
+<CJK_UNIFIED_IDEOGRAPH-31E40> 2
+<CJK_UNIFIED_IDEOGRAPH-31E41> 2
+<CJK_UNIFIED_IDEOGRAPH-31E42> 2
+<CJK_UNIFIED_IDEOGRAPH-31E43> 2
+<CJK_UNIFIED_IDEOGRAPH-31E44> 2
+<CJK_UNIFIED_IDEOGRAPH-31E45> 2
+<CJK_UNIFIED_IDEOGRAPH-31E46> 2
+<CJK_UNIFIED_IDEOGRAPH-31E47> 2
+<CJK_UNIFIED_IDEOGRAPH-31E48> 2
+<CJK_UNIFIED_IDEOGRAPH-31E49> 2
+<CJK_UNIFIED_IDEOGRAPH-31E4A> 2
+<CJK_UNIFIED_IDEOGRAPH-31E4B> 2
+<CJK_UNIFIED_IDEOGRAPH-31E4C> 2
+<CJK_UNIFIED_IDEOGRAPH-31E4D> 2
+<CJK_UNIFIED_IDEOGRAPH-31E4E> 2
+<CJK_UNIFIED_IDEOGRAPH-31E4F> 2
+<CJK_UNIFIED_IDEOGRAPH-31E50> 2
+<CJK_UNIFIED_IDEOGRAPH-31E51> 2
+<CJK_UNIFIED_IDEOGRAPH-31E52> 2
+<CJK_UNIFIED_IDEOGRAPH-31E53> 2
+<CJK_UNIFIED_IDEOGRAPH-31E54> 2
+<CJK_UNIFIED_IDEOGRAPH-31E55> 2
+<CJK_UNIFIED_IDEOGRAPH-31E56> 2
+<CJK_UNIFIED_IDEOGRAPH-31E57> 2
+<CJK_UNIFIED_IDEOGRAPH-31E58> 2
+<CJK_UNIFIED_IDEOGRAPH-31E59> 2
+<CJK_UNIFIED_IDEOGRAPH-31E5A> 2
+<CJK_UNIFIED_IDEOGRAPH-31E5B> 2
+<CJK_UNIFIED_IDEOGRAPH-31E5C> 2
+<CJK_UNIFIED_IDEOGRAPH-31E5D> 2
+<CJK_UNIFIED_IDEOGRAPH-31E5E> 2
+<CJK_UNIFIED_IDEOGRAPH-31E5F> 2
+<CJK_UNIFIED_IDEOGRAPH-31E60> 2
+<CJK_UNIFIED_IDEOGRAPH-31E61> 2
+<CJK_UNIFIED_IDEOGRAPH-31E62> 2
+<CJK_UNIFIED_IDEOGRAPH-31E63> 2
+<CJK_UNIFIED_IDEOGRAPH-31E64> 2
+<CJK_UNIFIED_IDEOGRAPH-31E65> 2
+<CJK_UNIFIED_IDEOGRAPH-31E66> 2
+<CJK_UNIFIED_IDEOGRAPH-31E67> 2
+<CJK_UNIFIED_IDEOGRAPH-31E68> 2
+<CJK_UNIFIED_IDEOGRAPH-31E69> 2
+<CJK_UNIFIED_IDEOGRAPH-31E6A> 2
+<CJK_UNIFIED_IDEOGRAPH-31E6B> 2
+<CJK_UNIFIED_IDEOGRAPH-31E6C> 2
+<CJK_UNIFIED_IDEOGRAPH-31E6D> 2
+<CJK_UNIFIED_IDEOGRAPH-31E6E> 2
+<CJK_UNIFIED_IDEOGRAPH-31E6F> 2
+<CJK_UNIFIED_IDEOGRAPH-31E70> 2
+<CJK_UNIFIED_IDEOGRAPH-31E71> 2
+<CJK_UNIFIED_IDEOGRAPH-31E72> 2
+<CJK_UNIFIED_IDEOGRAPH-31E73> 2
+<CJK_UNIFIED_IDEOGRAPH-31E74> 2
+<CJK_UNIFIED_IDEOGRAPH-31E75> 2
+<CJK_UNIFIED_IDEOGRAPH-31E76> 2
+<CJK_UNIFIED_IDEOGRAPH-31E77> 2
+<CJK_UNIFIED_IDEOGRAPH-31E78> 2
+<CJK_UNIFIED_IDEOGRAPH-31E79> 2
+<CJK_UNIFIED_IDEOGRAPH-31E7A> 2
+<CJK_UNIFIED_IDEOGRAPH-31E7B> 2
+<CJK_UNIFIED_IDEOGRAPH-31E7C> 2
+<CJK_UNIFIED_IDEOGRAPH-31E7D> 2
+<CJK_UNIFIED_IDEOGRAPH-31E7E> 2
+<CJK_UNIFIED_IDEOGRAPH-31E7F> 2
+<CJK_UNIFIED_IDEOGRAPH-31E80> 2
+<CJK_UNIFIED_IDEOGRAPH-31E81> 2
+<CJK_UNIFIED_IDEOGRAPH-31E82> 2
+<CJK_UNIFIED_IDEOGRAPH-31E83> 2
+<CJK_UNIFIED_IDEOGRAPH-31E84> 2
+<CJK_UNIFIED_IDEOGRAPH-31E85> 2
+<CJK_UNIFIED_IDEOGRAPH-31E86> 2
+<CJK_UNIFIED_IDEOGRAPH-31E87> 2
+<CJK_UNIFIED_IDEOGRAPH-31E88> 2
+<CJK_UNIFIED_IDEOGRAPH-31E89> 2
+<CJK_UNIFIED_IDEOGRAPH-31E8A> 2
+<CJK_UNIFIED_IDEOGRAPH-31E8B> 2
+<CJK_UNIFIED_IDEOGRAPH-31E8C> 2
+<CJK_UNIFIED_IDEOGRAPH-31E8D> 2
+<CJK_UNIFIED_IDEOGRAPH-31E8E> 2
+<CJK_UNIFIED_IDEOGRAPH-31E8F> 2
+<CJK_UNIFIED_IDEOGRAPH-31E90> 2
+<CJK_UNIFIED_IDEOGRAPH-31E91> 2
+<CJK_UNIFIED_IDEOGRAPH-31E92> 2
+<CJK_UNIFIED_IDEOGRAPH-31E93> 2
+<CJK_UNIFIED_IDEOGRAPH-31E94> 2
+<CJK_UNIFIED_IDEOGRAPH-31E95> 2
+<CJK_UNIFIED_IDEOGRAPH-31E96> 2
+<CJK_UNIFIED_IDEOGRAPH-31E97> 2
+<CJK_UNIFIED_IDEOGRAPH-31E98> 2
+<CJK_UNIFIED_IDEOGRAPH-31E99> 2
+<CJK_UNIFIED_IDEOGRAPH-31E9A> 2
+<CJK_UNIFIED_IDEOGRAPH-31E9B> 2
+<CJK_UNIFIED_IDEOGRAPH-31E9C> 2
+<CJK_UNIFIED_IDEOGRAPH-31E9D> 2
+<CJK_UNIFIED_IDEOGRAPH-31E9E> 2
+<CJK_UNIFIED_IDEOGRAPH-31E9F> 2
+<CJK_UNIFIED_IDEOGRAPH-31EA0> 2
+<CJK_UNIFIED_IDEOGRAPH-31EA1> 2
+<CJK_UNIFIED_IDEOGRAPH-31EA2> 2
+<CJK_UNIFIED_IDEOGRAPH-31EA3> 2
+<CJK_UNIFIED_IDEOGRAPH-31EA4> 2
+<CJK_UNIFIED_IDEOGRAPH-31EA5> 2
+<CJK_UNIFIED_IDEOGRAPH-31EA6> 2
+<CJK_UNIFIED_IDEOGRAPH-31EA7> 2
+<CJK_UNIFIED_IDEOGRAPH-31EA8> 2
+<CJK_UNIFIED_IDEOGRAPH-31EA9> 2
+<CJK_UNIFIED_IDEOGRAPH-31EAA> 2
+<CJK_UNIFIED_IDEOGRAPH-31EAB> 2
+<CJK_UNIFIED_IDEOGRAPH-31EAC> 2
+<CJK_UNIFIED_IDEOGRAPH-31EAD> 2
+<CJK_UNIFIED_IDEOGRAPH-31EAE> 2
+<CJK_UNIFIED_IDEOGRAPH-31EAF> 2
+<CJK_UNIFIED_IDEOGRAPH-31EB0> 2
+<CJK_UNIFIED_IDEOGRAPH-31EB1> 2
+<CJK_UNIFIED_IDEOGRAPH-31EB2> 2
+<CJK_UNIFIED_IDEOGRAPH-31EB3> 2
+<CJK_UNIFIED_IDEOGRAPH-31EB4> 2
+<CJK_UNIFIED_IDEOGRAPH-31EB5> 2
+<CJK_UNIFIED_IDEOGRAPH-31EB6> 2
+<CJK_UNIFIED_IDEOGRAPH-31EB7> 2
+<CJK_UNIFIED_IDEOGRAPH-31EB8> 2
+<CJK_UNIFIED_IDEOGRAPH-31EB9> 2
+<CJK_UNIFIED_IDEOGRAPH-31EBA> 2
+<CJK_UNIFIED_IDEOGRAPH-31EBB> 2
+<CJK_UNIFIED_IDEOGRAPH-31EBC> 2
+<CJK_UNIFIED_IDEOGRAPH-31EBD> 2
+<CJK_UNIFIED_IDEOGRAPH-31EBE> 2
+<CJK_UNIFIED_IDEOGRAPH-31EBF> 2
+<CJK_UNIFIED_IDEOGRAPH-31EC0> 2
+<CJK_UNIFIED_IDEOGRAPH-31EC1> 2
+<CJK_UNIFIED_IDEOGRAPH-31EC2> 2
+<CJK_UNIFIED_IDEOGRAPH-31EC3> 2
+<CJK_UNIFIED_IDEOGRAPH-31EC4> 2
+<CJK_UNIFIED_IDEOGRAPH-31EC5> 2
+<CJK_UNIFIED_IDEOGRAPH-31EC6> 2
+<CJK_UNIFIED_IDEOGRAPH-31EC7> 2
+<CJK_UNIFIED_IDEOGRAPH-31EC8> 2
+<CJK_UNIFIED_IDEOGRAPH-31EC9> 2
+<CJK_UNIFIED_IDEOGRAPH-31ECA> 2
+<CJK_UNIFIED_IDEOGRAPH-31ECB> 2
+<CJK_UNIFIED_IDEOGRAPH-31ECC> 2
+<CJK_UNIFIED_IDEOGRAPH-31ECD> 2
+<CJK_UNIFIED_IDEOGRAPH-31ECE> 2
+<CJK_UNIFIED_IDEOGRAPH-31ECF> 2
+<CJK_UNIFIED_IDEOGRAPH-31ED0> 2
+<CJK_UNIFIED_IDEOGRAPH-31ED1> 2
+<CJK_UNIFIED_IDEOGRAPH-31ED2> 2
+<CJK_UNIFIED_IDEOGRAPH-31ED3> 2
+<CJK_UNIFIED_IDEOGRAPH-31ED4> 2
+<CJK_UNIFIED_IDEOGRAPH-31ED5> 2
+<CJK_UNIFIED_IDEOGRAPH-31ED6> 2
+<CJK_UNIFIED_IDEOGRAPH-31ED7> 2
+<CJK_UNIFIED_IDEOGRAPH-31ED8> 2
+<CJK_UNIFIED_IDEOGRAPH-31ED9> 2
+<CJK_UNIFIED_IDEOGRAPH-31EDA> 2
+<CJK_UNIFIED_IDEOGRAPH-31EDB> 2
+<CJK_UNIFIED_IDEOGRAPH-31EDC> 2
+<CJK_UNIFIED_IDEOGRAPH-31EDD> 2
+<CJK_UNIFIED_IDEOGRAPH-31EDE> 2
+<CJK_UNIFIED_IDEOGRAPH-31EDF> 2
+<CJK_UNIFIED_IDEOGRAPH-31EE0> 2
+<CJK_UNIFIED_IDEOGRAPH-31EE1> 2
+<CJK_UNIFIED_IDEOGRAPH-31EE2> 2
+<CJK_UNIFIED_IDEOGRAPH-31EE3> 2
+<CJK_UNIFIED_IDEOGRAPH-31EE4> 2
+<CJK_UNIFIED_IDEOGRAPH-31EE5> 2
+<CJK_UNIFIED_IDEOGRAPH-31EE6> 2
+<CJK_UNIFIED_IDEOGRAPH-31EE7> 2
+<CJK_UNIFIED_IDEOGRAPH-31EE8> 2
+<CJK_UNIFIED_IDEOGRAPH-31EE9> 2
+<CJK_UNIFIED_IDEOGRAPH-31EEA> 2
+<CJK_UNIFIED_IDEOGRAPH-31EEB> 2
+<CJK_UNIFIED_IDEOGRAPH-31EEC> 2
+<CJK_UNIFIED_IDEOGRAPH-31EED> 2
+<CJK_UNIFIED_IDEOGRAPH-31EEE> 2
+<CJK_UNIFIED_IDEOGRAPH-31EEF> 2
+<CJK_UNIFIED_IDEOGRAPH-31EF0> 2
+<CJK_UNIFIED_IDEOGRAPH-31EF1> 2
+<CJK_UNIFIED_IDEOGRAPH-31EF2> 2
+<CJK_UNIFIED_IDEOGRAPH-31EF3> 2
+<CJK_UNIFIED_IDEOGRAPH-31EF4> 2
+<CJK_UNIFIED_IDEOGRAPH-31EF5> 2
+<CJK_UNIFIED_IDEOGRAPH-31EF6> 2
+<CJK_UNIFIED_IDEOGRAPH-31EF7> 2
+<CJK_UNIFIED_IDEOGRAPH-31EF8> 2
+<CJK_UNIFIED_IDEOGRAPH-31EF9> 2
+<CJK_UNIFIED_IDEOGRAPH-31EFA> 2
+<CJK_UNIFIED_IDEOGRAPH-31EFB> 2
+<CJK_UNIFIED_IDEOGRAPH-31EFC> 2
+<CJK_UNIFIED_IDEOGRAPH-31EFD> 2
+<CJK_UNIFIED_IDEOGRAPH-31EFE> 2
+<CJK_UNIFIED_IDEOGRAPH-31EFF> 2
+<CJK_UNIFIED_IDEOGRAPH-31F00> 2
+<CJK_UNIFIED_IDEOGRAPH-31F01> 2
+<CJK_UNIFIED_IDEOGRAPH-31F02> 2
+<CJK_UNIFIED_IDEOGRAPH-31F03> 2
+<CJK_UNIFIED_IDEOGRAPH-31F04> 2
+<CJK_UNIFIED_IDEOGRAPH-31F05> 2
+<CJK_UNIFIED_IDEOGRAPH-31F06> 2
+<CJK_UNIFIED_IDEOGRAPH-31F07> 2
+<CJK_UNIFIED_IDEOGRAPH-31F08> 2
+<CJK_UNIFIED_IDEOGRAPH-31F09> 2
+<CJK_UNIFIED_IDEOGRAPH-31F0A> 2
+<CJK_UNIFIED_IDEOGRAPH-31F0B> 2
+<CJK_UNIFIED_IDEOGRAPH-31F0C> 2
+<CJK_UNIFIED_IDEOGRAPH-31F0D> 2
+<CJK_UNIFIED_IDEOGRAPH-31F0E> 2
+<CJK_UNIFIED_IDEOGRAPH-31F0F> 2
+<CJK_UNIFIED_IDEOGRAPH-31F10> 2
+<CJK_UNIFIED_IDEOGRAPH-31F11> 2
+<CJK_UNIFIED_IDEOGRAPH-31F12> 2
+<CJK_UNIFIED_IDEOGRAPH-31F13> 2
+<CJK_UNIFIED_IDEOGRAPH-31F14> 2
+<CJK_UNIFIED_IDEOGRAPH-31F15> 2
+<CJK_UNIFIED_IDEOGRAPH-31F16> 2
+<CJK_UNIFIED_IDEOGRAPH-31F17> 2
+<CJK_UNIFIED_IDEOGRAPH-31F18> 2
+<CJK_UNIFIED_IDEOGRAPH-31F19> 2
+<CJK_UNIFIED_IDEOGRAPH-31F1A> 2
+<CJK_UNIFIED_IDEOGRAPH-31F1B> 2
+<CJK_UNIFIED_IDEOGRAPH-31F1C> 2
+<CJK_UNIFIED_IDEOGRAPH-31F1D> 2
+<CJK_UNIFIED_IDEOGRAPH-31F1E> 2
+<CJK_UNIFIED_IDEOGRAPH-31F1F> 2
+<CJK_UNIFIED_IDEOGRAPH-31F20> 2
+<CJK_UNIFIED_IDEOGRAPH-31F21> 2
+<CJK_UNIFIED_IDEOGRAPH-31F22> 2
+<CJK_UNIFIED_IDEOGRAPH-31F23> 2
+<CJK_UNIFIED_IDEOGRAPH-31F24> 2
+<CJK_UNIFIED_IDEOGRAPH-31F25> 2
+<CJK_UNIFIED_IDEOGRAPH-31F26> 2
+<CJK_UNIFIED_IDEOGRAPH-31F27> 2
+<CJK_UNIFIED_IDEOGRAPH-31F28> 2
+<CJK_UNIFIED_IDEOGRAPH-31F29> 2
+<CJK_UNIFIED_IDEOGRAPH-31F2A> 2
+<CJK_UNIFIED_IDEOGRAPH-31F2B> 2
+<CJK_UNIFIED_IDEOGRAPH-31F2C> 2
+<CJK_UNIFIED_IDEOGRAPH-31F2D> 2
+<CJK_UNIFIED_IDEOGRAPH-31F2E> 2
+<CJK_UNIFIED_IDEOGRAPH-31F2F> 2
+<CJK_UNIFIED_IDEOGRAPH-31F30> 2
+<CJK_UNIFIED_IDEOGRAPH-31F31> 2
+<CJK_UNIFIED_IDEOGRAPH-31F32> 2
+<CJK_UNIFIED_IDEOGRAPH-31F33> 2
+<CJK_UNIFIED_IDEOGRAPH-31F34> 2
+<CJK_UNIFIED_IDEOGRAPH-31F35> 2
+<CJK_UNIFIED_IDEOGRAPH-31F36> 2
+<CJK_UNIFIED_IDEOGRAPH-31F37> 2
+<CJK_UNIFIED_IDEOGRAPH-31F38> 2
+<CJK_UNIFIED_IDEOGRAPH-31F39> 2
+<CJK_UNIFIED_IDEOGRAPH-31F3A> 2
+<CJK_UNIFIED_IDEOGRAPH-31F3B> 2
+<CJK_UNIFIED_IDEOGRAPH-31F3C> 2
+<CJK_UNIFIED_IDEOGRAPH-31F3D> 2
+<CJK_UNIFIED_IDEOGRAPH-31F3E> 2
+<CJK_UNIFIED_IDEOGRAPH-31F3F> 2
+<CJK_UNIFIED_IDEOGRAPH-31F40> 2
+<CJK_UNIFIED_IDEOGRAPH-31F41> 2
+<CJK_UNIFIED_IDEOGRAPH-31F42> 2
+<CJK_UNIFIED_IDEOGRAPH-31F43> 2
+<CJK_UNIFIED_IDEOGRAPH-31F44> 2
+<CJK_UNIFIED_IDEOGRAPH-31F45> 2
+<CJK_UNIFIED_IDEOGRAPH-31F46> 2
+<CJK_UNIFIED_IDEOGRAPH-31F47> 2
+<CJK_UNIFIED_IDEOGRAPH-31F48> 2
+<CJK_UNIFIED_IDEOGRAPH-31F49> 2
+<CJK_UNIFIED_IDEOGRAPH-31F4A> 2
+<CJK_UNIFIED_IDEOGRAPH-31F4B> 2
+<CJK_UNIFIED_IDEOGRAPH-31F4C> 2
+<CJK_UNIFIED_IDEOGRAPH-31F4D> 2
+<CJK_UNIFIED_IDEOGRAPH-31F4E> 2
+<CJK_UNIFIED_IDEOGRAPH-31F4F> 2
+<CJK_UNIFIED_IDEOGRAPH-31F50> 2
+<CJK_UNIFIED_IDEOGRAPH-31F51> 2
+<CJK_UNIFIED_IDEOGRAPH-31F52> 2
+<CJK_UNIFIED_IDEOGRAPH-31F53> 2
+<CJK_UNIFIED_IDEOGRAPH-31F54> 2
+<CJK_UNIFIED_IDEOGRAPH-31F55> 2
+<CJK_UNIFIED_IDEOGRAPH-31F56> 2
+<CJK_UNIFIED_IDEOGRAPH-31F57> 2
+<CJK_UNIFIED_IDEOGRAPH-31F58> 2
+<CJK_UNIFIED_IDEOGRAPH-31F59> 2
+<CJK_UNIFIED_IDEOGRAPH-31F5A> 2
+<CJK_UNIFIED_IDEOGRAPH-31F5B> 2
+<CJK_UNIFIED_IDEOGRAPH-31F5C> 2
+<CJK_UNIFIED_IDEOGRAPH-31F5D> 2
+<CJK_UNIFIED_IDEOGRAPH-31F5E> 2
+<CJK_UNIFIED_IDEOGRAPH-31F5F> 2
+<CJK_UNIFIED_IDEOGRAPH-31F60> 2
+<CJK_UNIFIED_IDEOGRAPH-31F61> 2
+<CJK_UNIFIED_IDEOGRAPH-31F62> 2
+<CJK_UNIFIED_IDEOGRAPH-31F63> 2
+<CJK_UNIFIED_IDEOGRAPH-31F64> 2
+<CJK_UNIFIED_IDEOGRAPH-31F65> 2
+<CJK_UNIFIED_IDEOGRAPH-31F66> 2
+<CJK_UNIFIED_IDEOGRAPH-31F67> 2
+<CJK_UNIFIED_IDEOGRAPH-31F68> 2
+<CJK_UNIFIED_IDEOGRAPH-31F69> 2
+<CJK_UNIFIED_IDEOGRAPH-31F6A> 2
+<CJK_UNIFIED_IDEOGRAPH-31F6B> 2
+<CJK_UNIFIED_IDEOGRAPH-31F6C> 2
+<CJK_UNIFIED_IDEOGRAPH-31F6D> 2
+<CJK_UNIFIED_IDEOGRAPH-31F6E> 2
+<CJK_UNIFIED_IDEOGRAPH-31F6F> 2
+<CJK_UNIFIED_IDEOGRAPH-31F70> 2
+<CJK_UNIFIED_IDEOGRAPH-31F71> 2
+<CJK_UNIFIED_IDEOGRAPH-31F72> 2
+<CJK_UNIFIED_IDEOGRAPH-31F73> 2
+<CJK_UNIFIED_IDEOGRAPH-31F74> 2
+<CJK_UNIFIED_IDEOGRAPH-31F75> 2
+<CJK_UNIFIED_IDEOGRAPH-31F76> 2
+<CJK_UNIFIED_IDEOGRAPH-31F77> 2
+<CJK_UNIFIED_IDEOGRAPH-31F78> 2
+<CJK_UNIFIED_IDEOGRAPH-31F79> 2
+<CJK_UNIFIED_IDEOGRAPH-31F7A> 2
+<CJK_UNIFIED_IDEOGRAPH-31F7B> 2
+<CJK_UNIFIED_IDEOGRAPH-31F7C> 2
+<CJK_UNIFIED_IDEOGRAPH-31F7D> 2
+<CJK_UNIFIED_IDEOGRAPH-31F7E> 2
+<CJK_UNIFIED_IDEOGRAPH-31F7F> 2
+<CJK_UNIFIED_IDEOGRAPH-31F80> 2
+<CJK_UNIFIED_IDEOGRAPH-31F81> 2
+<CJK_UNIFIED_IDEOGRAPH-31F82> 2
+<CJK_UNIFIED_IDEOGRAPH-31F83> 2
+<CJK_UNIFIED_IDEOGRAPH-31F84> 2
+<CJK_UNIFIED_IDEOGRAPH-31F85> 2
+<CJK_UNIFIED_IDEOGRAPH-31F86> 2
+<CJK_UNIFIED_IDEOGRAPH-31F87> 2
+<CJK_UNIFIED_IDEOGRAPH-31F88> 2
+<CJK_UNIFIED_IDEOGRAPH-31F89> 2
+<CJK_UNIFIED_IDEOGRAPH-31F8A> 2
+<CJK_UNIFIED_IDEOGRAPH-31F8B> 2
+<CJK_UNIFIED_IDEOGRAPH-31F8C> 2
+<CJK_UNIFIED_IDEOGRAPH-31F8D> 2
+<CJK_UNIFIED_IDEOGRAPH-31F8E> 2
+<CJK_UNIFIED_IDEOGRAPH-31F8F> 2
+<CJK_UNIFIED_IDEOGRAPH-31F90> 2
+<CJK_UNIFIED_IDEOGRAPH-31F91> 2
+<CJK_UNIFIED_IDEOGRAPH-31F92> 2
+<CJK_UNIFIED_IDEOGRAPH-31F93> 2
+<CJK_UNIFIED_IDEOGRAPH-31F94> 2
+<CJK_UNIFIED_IDEOGRAPH-31F95> 2
+<CJK_UNIFIED_IDEOGRAPH-31F96> 2
+<CJK_UNIFIED_IDEOGRAPH-31F97> 2
+<CJK_UNIFIED_IDEOGRAPH-31F98> 2
+<CJK_UNIFIED_IDEOGRAPH-31F99> 2
+<CJK_UNIFIED_IDEOGRAPH-31F9A> 2
+<CJK_UNIFIED_IDEOGRAPH-31F9B> 2
+<CJK_UNIFIED_IDEOGRAPH-31F9C> 2
+<CJK_UNIFIED_IDEOGRAPH-31F9D> 2
+<CJK_UNIFIED_IDEOGRAPH-31F9E> 2
+<CJK_UNIFIED_IDEOGRAPH-31F9F> 2
+<CJK_UNIFIED_IDEOGRAPH-31FA0> 2
+<CJK_UNIFIED_IDEOGRAPH-31FA1> 2
+<CJK_UNIFIED_IDEOGRAPH-31FA2> 2
+<CJK_UNIFIED_IDEOGRAPH-31FA3> 2
+<CJK_UNIFIED_IDEOGRAPH-31FA4> 2
+<CJK_UNIFIED_IDEOGRAPH-31FA5> 2
+<CJK_UNIFIED_IDEOGRAPH-31FA6> 2
+<CJK_UNIFIED_IDEOGRAPH-31FA7> 2
+<CJK_UNIFIED_IDEOGRAPH-31FA8> 2
+<CJK_UNIFIED_IDEOGRAPH-31FA9> 2
+<CJK_UNIFIED_IDEOGRAPH-31FAA> 2
+<CJK_UNIFIED_IDEOGRAPH-31FAB> 2
+<CJK_UNIFIED_IDEOGRAPH-31FAC> 2
+<CJK_UNIFIED_IDEOGRAPH-31FAD> 2
+<CJK_UNIFIED_IDEOGRAPH-31FAE> 2
+<CJK_UNIFIED_IDEOGRAPH-31FAF> 2
+<CJK_UNIFIED_IDEOGRAPH-31FB0> 2
+<CJK_UNIFIED_IDEOGRAPH-31FB1> 2
+<CJK_UNIFIED_IDEOGRAPH-31FB2> 2
+<CJK_UNIFIED_IDEOGRAPH-31FB3> 2
+<CJK_UNIFIED_IDEOGRAPH-31FB4> 2
+<CJK_UNIFIED_IDEOGRAPH-31FB5> 2
+<CJK_UNIFIED_IDEOGRAPH-31FB6> 2
+<CJK_UNIFIED_IDEOGRAPH-31FB7> 2
+<CJK_UNIFIED_IDEOGRAPH-31FB8> 2
+<CJK_UNIFIED_IDEOGRAPH-31FB9> 2
+<CJK_UNIFIED_IDEOGRAPH-31FBA> 2
+<CJK_UNIFIED_IDEOGRAPH-31FBB> 2
+<CJK_UNIFIED_IDEOGRAPH-31FBC> 2
+<CJK_UNIFIED_IDEOGRAPH-31FBD> 2
+<CJK_UNIFIED_IDEOGRAPH-31FBE> 2
+<CJK_UNIFIED_IDEOGRAPH-31FBF> 2
+<CJK_UNIFIED_IDEOGRAPH-31FC0> 2
+<CJK_UNIFIED_IDEOGRAPH-31FC1> 2
+<CJK_UNIFIED_IDEOGRAPH-31FC2> 2
+<CJK_UNIFIED_IDEOGRAPH-31FC3> 2
+<CJK_UNIFIED_IDEOGRAPH-31FC4> 2
+<CJK_UNIFIED_IDEOGRAPH-31FC5> 2
+<CJK_UNIFIED_IDEOGRAPH-31FC6> 2
+<CJK_UNIFIED_IDEOGRAPH-31FC7> 2
+<CJK_UNIFIED_IDEOGRAPH-31FC8> 2
+<CJK_UNIFIED_IDEOGRAPH-31FC9> 2
+<CJK_UNIFIED_IDEOGRAPH-31FCA> 2
+<CJK_UNIFIED_IDEOGRAPH-31FCB> 2
+<CJK_UNIFIED_IDEOGRAPH-31FCC> 2
+<CJK_UNIFIED_IDEOGRAPH-31FCD> 2
+<CJK_UNIFIED_IDEOGRAPH-31FCE> 2
+<CJK_UNIFIED_IDEOGRAPH-31FCF> 2
+<CJK_UNIFIED_IDEOGRAPH-31FD0> 2
+<CJK_UNIFIED_IDEOGRAPH-31FD1> 2
+<CJK_UNIFIED_IDEOGRAPH-31FD2> 2
+<CJK_UNIFIED_IDEOGRAPH-31FD3> 2
+<CJK_UNIFIED_IDEOGRAPH-31FD4> 2
+<CJK_UNIFIED_IDEOGRAPH-31FD5> 2
+<CJK_UNIFIED_IDEOGRAPH-31FD6> 2
+<CJK_UNIFIED_IDEOGRAPH-31FD7> 2
+<CJK_UNIFIED_IDEOGRAPH-31FD8> 2
+<CJK_UNIFIED_IDEOGRAPH-31FD9> 2
+<CJK_UNIFIED_IDEOGRAPH-31FDA> 2
+<CJK_UNIFIED_IDEOGRAPH-31FDB> 2
+<CJK_UNIFIED_IDEOGRAPH-31FDC> 2
+<CJK_UNIFIED_IDEOGRAPH-31FDD> 2
+<CJK_UNIFIED_IDEOGRAPH-31FDE> 2
+<CJK_UNIFIED_IDEOGRAPH-31FDF> 2
+<CJK_UNIFIED_IDEOGRAPH-31FE0> 2
+<CJK_UNIFIED_IDEOGRAPH-31FE1> 2
+<CJK_UNIFIED_IDEOGRAPH-31FE2> 2
+<CJK_UNIFIED_IDEOGRAPH-31FE3> 2
+<CJK_UNIFIED_IDEOGRAPH-31FE4> 2
+<CJK_UNIFIED_IDEOGRAPH-31FE5> 2
+<CJK_UNIFIED_IDEOGRAPH-31FE6> 2
+<CJK_UNIFIED_IDEOGRAPH-31FE7> 2
+<CJK_UNIFIED_IDEOGRAPH-31FE8> 2
+<CJK_UNIFIED_IDEOGRAPH-31FE9> 2
+<CJK_UNIFIED_IDEOGRAPH-31FEA> 2
+<CJK_UNIFIED_IDEOGRAPH-31FEB> 2
+<CJK_UNIFIED_IDEOGRAPH-31FEC> 2
+<CJK_UNIFIED_IDEOGRAPH-31FED> 2
+<CJK_UNIFIED_IDEOGRAPH-31FEE> 2
+<CJK_UNIFIED_IDEOGRAPH-31FEF> 2
+<CJK_UNIFIED_IDEOGRAPH-31FF0> 2
+<CJK_UNIFIED_IDEOGRAPH-31FF1> 2
+<CJK_UNIFIED_IDEOGRAPH-31FF2> 2
+<CJK_UNIFIED_IDEOGRAPH-31FF3> 2
+<CJK_UNIFIED_IDEOGRAPH-31FF4> 2
+<CJK_UNIFIED_IDEOGRAPH-31FF5> 2
+<CJK_UNIFIED_IDEOGRAPH-31FF6> 2
+<CJK_UNIFIED_IDEOGRAPH-31FF7> 2
+<CJK_UNIFIED_IDEOGRAPH-31FF8> 2
+<CJK_UNIFIED_IDEOGRAPH-31FF9> 2
+<CJK_UNIFIED_IDEOGRAPH-31FFA> 2
+<CJK_UNIFIED_IDEOGRAPH-31FFB> 2
+<CJK_UNIFIED_IDEOGRAPH-31FFC> 2
+<CJK_UNIFIED_IDEOGRAPH-31FFD> 2
+<CJK_UNIFIED_IDEOGRAPH-31FFE> 2
+<CJK_UNIFIED_IDEOGRAPH-31FFF> 2
+<CJK_UNIFIED_IDEOGRAPH-32000> 2
+<CJK_UNIFIED_IDEOGRAPH-32001> 2
+<CJK_UNIFIED_IDEOGRAPH-32002> 2
+<CJK_UNIFIED_IDEOGRAPH-32003> 2
+<CJK_UNIFIED_IDEOGRAPH-32004> 2
+<CJK_UNIFIED_IDEOGRAPH-32005> 2
+<CJK_UNIFIED_IDEOGRAPH-32006> 2
+<CJK_UNIFIED_IDEOGRAPH-32007> 2
+<CJK_UNIFIED_IDEOGRAPH-32008> 2
+<CJK_UNIFIED_IDEOGRAPH-32009> 2
+<CJK_UNIFIED_IDEOGRAPH-3200A> 2
+<CJK_UNIFIED_IDEOGRAPH-3200B> 2
+<CJK_UNIFIED_IDEOGRAPH-3200C> 2
+<CJK_UNIFIED_IDEOGRAPH-3200D> 2
+<CJK_UNIFIED_IDEOGRAPH-3200E> 2
+<CJK_UNIFIED_IDEOGRAPH-3200F> 2
+<CJK_UNIFIED_IDEOGRAPH-32010> 2
+<CJK_UNIFIED_IDEOGRAPH-32011> 2
+<CJK_UNIFIED_IDEOGRAPH-32012> 2
+<CJK_UNIFIED_IDEOGRAPH-32013> 2
+<CJK_UNIFIED_IDEOGRAPH-32014> 2
+<CJK_UNIFIED_IDEOGRAPH-32015> 2
+<CJK_UNIFIED_IDEOGRAPH-32016> 2
+<CJK_UNIFIED_IDEOGRAPH-32017> 2
+<CJK_UNIFIED_IDEOGRAPH-32018> 2
+<CJK_UNIFIED_IDEOGRAPH-32019> 2
+<CJK_UNIFIED_IDEOGRAPH-3201A> 2
+<CJK_UNIFIED_IDEOGRAPH-3201B> 2
+<CJK_UNIFIED_IDEOGRAPH-3201C> 2
+<CJK_UNIFIED_IDEOGRAPH-3201D> 2
+<CJK_UNIFIED_IDEOGRAPH-3201E> 2
+<CJK_UNIFIED_IDEOGRAPH-3201F> 2
+<CJK_UNIFIED_IDEOGRAPH-32020> 2
+<CJK_UNIFIED_IDEOGRAPH-32021> 2
+<CJK_UNIFIED_IDEOGRAPH-32022> 2
+<CJK_UNIFIED_IDEOGRAPH-32023> 2
+<CJK_UNIFIED_IDEOGRAPH-32024> 2
+<CJK_UNIFIED_IDEOGRAPH-32025> 2
+<CJK_UNIFIED_IDEOGRAPH-32026> 2
+<CJK_UNIFIED_IDEOGRAPH-32027> 2
+<CJK_UNIFIED_IDEOGRAPH-32028> 2
+<CJK_UNIFIED_IDEOGRAPH-32029> 2
+<CJK_UNIFIED_IDEOGRAPH-3202A> 2
+<CJK_UNIFIED_IDEOGRAPH-3202B> 2
+<CJK_UNIFIED_IDEOGRAPH-3202C> 2
+<CJK_UNIFIED_IDEOGRAPH-3202D> 2
+<CJK_UNIFIED_IDEOGRAPH-3202E> 2
+<CJK_UNIFIED_IDEOGRAPH-3202F> 2
+<CJK_UNIFIED_IDEOGRAPH-32030> 2
+<CJK_UNIFIED_IDEOGRAPH-32031> 2
+<CJK_UNIFIED_IDEOGRAPH-32032> 2
+<CJK_UNIFIED_IDEOGRAPH-32033> 2
+<CJK_UNIFIED_IDEOGRAPH-32034> 2
+<CJK_UNIFIED_IDEOGRAPH-32035> 2
+<CJK_UNIFIED_IDEOGRAPH-32036> 2
+<CJK_UNIFIED_IDEOGRAPH-32037> 2
+<CJK_UNIFIED_IDEOGRAPH-32038> 2
+<CJK_UNIFIED_IDEOGRAPH-32039> 2
+<CJK_UNIFIED_IDEOGRAPH-3203A> 2
+<CJK_UNIFIED_IDEOGRAPH-3203B> 2
+<CJK_UNIFIED_IDEOGRAPH-3203C> 2
+<CJK_UNIFIED_IDEOGRAPH-3203D> 2
+<CJK_UNIFIED_IDEOGRAPH-3203E> 2
+<CJK_UNIFIED_IDEOGRAPH-3203F> 2
+<CJK_UNIFIED_IDEOGRAPH-32040> 2
+<CJK_UNIFIED_IDEOGRAPH-32041> 2
+<CJK_UNIFIED_IDEOGRAPH-32042> 2
+<CJK_UNIFIED_IDEOGRAPH-32043> 2
+<CJK_UNIFIED_IDEOGRAPH-32044> 2
+<CJK_UNIFIED_IDEOGRAPH-32045> 2
+<CJK_UNIFIED_IDEOGRAPH-32046> 2
+<CJK_UNIFIED_IDEOGRAPH-32047> 2
+<CJK_UNIFIED_IDEOGRAPH-32048> 2
+<CJK_UNIFIED_IDEOGRAPH-32049> 2
+<CJK_UNIFIED_IDEOGRAPH-3204A> 2
+<CJK_UNIFIED_IDEOGRAPH-3204B> 2
+<CJK_UNIFIED_IDEOGRAPH-3204C> 2
+<CJK_UNIFIED_IDEOGRAPH-3204D> 2
+<CJK_UNIFIED_IDEOGRAPH-3204E> 2
+<CJK_UNIFIED_IDEOGRAPH-3204F> 2
+<CJK_UNIFIED_IDEOGRAPH-32050> 2
+<CJK_UNIFIED_IDEOGRAPH-32051> 2
+<CJK_UNIFIED_IDEOGRAPH-32052> 2
+<CJK_UNIFIED_IDEOGRAPH-32053> 2
+<CJK_UNIFIED_IDEOGRAPH-32054> 2
+<CJK_UNIFIED_IDEOGRAPH-32055> 2
+<CJK_UNIFIED_IDEOGRAPH-32056> 2
+<CJK_UNIFIED_IDEOGRAPH-32057> 2
+<CJK_UNIFIED_IDEOGRAPH-32058> 2
+<CJK_UNIFIED_IDEOGRAPH-32059> 2
+<CJK_UNIFIED_IDEOGRAPH-3205A> 2
+<CJK_UNIFIED_IDEOGRAPH-3205B> 2
+<CJK_UNIFIED_IDEOGRAPH-3205C> 2
+<CJK_UNIFIED_IDEOGRAPH-3205D> 2
+<CJK_UNIFIED_IDEOGRAPH-3205E> 2
+<CJK_UNIFIED_IDEOGRAPH-3205F> 2
+<CJK_UNIFIED_IDEOGRAPH-32060> 2
+<CJK_UNIFIED_IDEOGRAPH-32061> 2
+<CJK_UNIFIED_IDEOGRAPH-32062> 2
+<CJK_UNIFIED_IDEOGRAPH-32063> 2
+<CJK_UNIFIED_IDEOGRAPH-32064> 2
+<CJK_UNIFIED_IDEOGRAPH-32065> 2
+<CJK_UNIFIED_IDEOGRAPH-32066> 2
+<CJK_UNIFIED_IDEOGRAPH-32067> 2
+<CJK_UNIFIED_IDEOGRAPH-32068> 2
+<CJK_UNIFIED_IDEOGRAPH-32069> 2
+<CJK_UNIFIED_IDEOGRAPH-3206A> 2
+<CJK_UNIFIED_IDEOGRAPH-3206B> 2
+<CJK_UNIFIED_IDEOGRAPH-3206C> 2
+<CJK_UNIFIED_IDEOGRAPH-3206D> 2
+<CJK_UNIFIED_IDEOGRAPH-3206E> 2
+<CJK_UNIFIED_IDEOGRAPH-3206F> 2
+<CJK_UNIFIED_IDEOGRAPH-32070> 2
+<CJK_UNIFIED_IDEOGRAPH-32071> 2
+<CJK_UNIFIED_IDEOGRAPH-32072> 2
+<CJK_UNIFIED_IDEOGRAPH-32073> 2
+<CJK_UNIFIED_IDEOGRAPH-32074> 2
+<CJK_UNIFIED_IDEOGRAPH-32075> 2
+<CJK_UNIFIED_IDEOGRAPH-32076> 2
+<CJK_UNIFIED_IDEOGRAPH-32077> 2
+<CJK_UNIFIED_IDEOGRAPH-32078> 2
+<CJK_UNIFIED_IDEOGRAPH-32079> 2
+<CJK_UNIFIED_IDEOGRAPH-3207A> 2
+<CJK_UNIFIED_IDEOGRAPH-3207B> 2
+<CJK_UNIFIED_IDEOGRAPH-3207C> 2
+<CJK_UNIFIED_IDEOGRAPH-3207D> 2
+<CJK_UNIFIED_IDEOGRAPH-3207E> 2
+<CJK_UNIFIED_IDEOGRAPH-3207F> 2
+<CJK_UNIFIED_IDEOGRAPH-32080> 2
+<CJK_UNIFIED_IDEOGRAPH-32081> 2
+<CJK_UNIFIED_IDEOGRAPH-32082> 2
+<CJK_UNIFIED_IDEOGRAPH-32083> 2
+<CJK_UNIFIED_IDEOGRAPH-32084> 2
+<CJK_UNIFIED_IDEOGRAPH-32085> 2
+<CJK_UNIFIED_IDEOGRAPH-32086> 2
+<CJK_UNIFIED_IDEOGRAPH-32087> 2
+<CJK_UNIFIED_IDEOGRAPH-32088> 2
+<CJK_UNIFIED_IDEOGRAPH-32089> 2
+<CJK_UNIFIED_IDEOGRAPH-3208A> 2
+<CJK_UNIFIED_IDEOGRAPH-3208B> 2
+<CJK_UNIFIED_IDEOGRAPH-3208C> 2
+<CJK_UNIFIED_IDEOGRAPH-3208D> 2
+<CJK_UNIFIED_IDEOGRAPH-3208E> 2
+<CJK_UNIFIED_IDEOGRAPH-3208F> 2
+<CJK_UNIFIED_IDEOGRAPH-32090> 2
+<CJK_UNIFIED_IDEOGRAPH-32091> 2
+<CJK_UNIFIED_IDEOGRAPH-32092> 2
+<CJK_UNIFIED_IDEOGRAPH-32093> 2
+<CJK_UNIFIED_IDEOGRAPH-32094> 2
+<CJK_UNIFIED_IDEOGRAPH-32095> 2
+<CJK_UNIFIED_IDEOGRAPH-32096> 2
+<CJK_UNIFIED_IDEOGRAPH-32097> 2
+<CJK_UNIFIED_IDEOGRAPH-32098> 2
+<CJK_UNIFIED_IDEOGRAPH-32099> 2
+<CJK_UNIFIED_IDEOGRAPH-3209A> 2
+<CJK_UNIFIED_IDEOGRAPH-3209B> 2
+<CJK_UNIFIED_IDEOGRAPH-3209C> 2
+<CJK_UNIFIED_IDEOGRAPH-3209D> 2
+<CJK_UNIFIED_IDEOGRAPH-3209E> 2
+<CJK_UNIFIED_IDEOGRAPH-3209F> 2
+<CJK_UNIFIED_IDEOGRAPH-320A0> 2
+<CJK_UNIFIED_IDEOGRAPH-320A1> 2
+<CJK_UNIFIED_IDEOGRAPH-320A2> 2
+<CJK_UNIFIED_IDEOGRAPH-320A3> 2
+<CJK_UNIFIED_IDEOGRAPH-320A4> 2
+<CJK_UNIFIED_IDEOGRAPH-320A5> 2
+<CJK_UNIFIED_IDEOGRAPH-320A6> 2
+<CJK_UNIFIED_IDEOGRAPH-320A7> 2
+<CJK_UNIFIED_IDEOGRAPH-320A8> 2
+<CJK_UNIFIED_IDEOGRAPH-320A9> 2
+<CJK_UNIFIED_IDEOGRAPH-320AA> 2
+<CJK_UNIFIED_IDEOGRAPH-320AB> 2
+<CJK_UNIFIED_IDEOGRAPH-320AC> 2
+<CJK_UNIFIED_IDEOGRAPH-320AD> 2
+<CJK_UNIFIED_IDEOGRAPH-320AE> 2
+<CJK_UNIFIED_IDEOGRAPH-320AF> 2
+<CJK_UNIFIED_IDEOGRAPH-320B0> 2
+<CJK_UNIFIED_IDEOGRAPH-320B1> 2
+<CJK_UNIFIED_IDEOGRAPH-320B2> 2
+<CJK_UNIFIED_IDEOGRAPH-320B3> 2
+<CJK_UNIFIED_IDEOGRAPH-320B4> 2
+<CJK_UNIFIED_IDEOGRAPH-320B5> 2
+<CJK_UNIFIED_IDEOGRAPH-320B6> 2
+<CJK_UNIFIED_IDEOGRAPH-320B7> 2
+<CJK_UNIFIED_IDEOGRAPH-320B8> 2
+<CJK_UNIFIED_IDEOGRAPH-320B9> 2
+<CJK_UNIFIED_IDEOGRAPH-320BA> 2
+<CJK_UNIFIED_IDEOGRAPH-320BB> 2
+<CJK_UNIFIED_IDEOGRAPH-320BC> 2
+<CJK_UNIFIED_IDEOGRAPH-320BD> 2
+<CJK_UNIFIED_IDEOGRAPH-320BE> 2
+<CJK_UNIFIED_IDEOGRAPH-320BF> 2
+<CJK_UNIFIED_IDEOGRAPH-320C0> 2
+<CJK_UNIFIED_IDEOGRAPH-320C1> 2
+<CJK_UNIFIED_IDEOGRAPH-320C2> 2
+<CJK_UNIFIED_IDEOGRAPH-320C3> 2
+<CJK_UNIFIED_IDEOGRAPH-320C4> 2
+<CJK_UNIFIED_IDEOGRAPH-320C5> 2
+<CJK_UNIFIED_IDEOGRAPH-320C6> 2
+<CJK_UNIFIED_IDEOGRAPH-320C7> 2
+<CJK_UNIFIED_IDEOGRAPH-320C8> 2
+<CJK_UNIFIED_IDEOGRAPH-320C9> 2
+<CJK_UNIFIED_IDEOGRAPH-320CA> 2
+<CJK_UNIFIED_IDEOGRAPH-320CB> 2
+<CJK_UNIFIED_IDEOGRAPH-320CC> 2
+<CJK_UNIFIED_IDEOGRAPH-320CD> 2
+<CJK_UNIFIED_IDEOGRAPH-320CE> 2
+<CJK_UNIFIED_IDEOGRAPH-320CF> 2
+<CJK_UNIFIED_IDEOGRAPH-320D0> 2
+<CJK_UNIFIED_IDEOGRAPH-320D1> 2
+<CJK_UNIFIED_IDEOGRAPH-320D2> 2
+<CJK_UNIFIED_IDEOGRAPH-320D3> 2
+<CJK_UNIFIED_IDEOGRAPH-320D4> 2
+<CJK_UNIFIED_IDEOGRAPH-320D5> 2
+<CJK_UNIFIED_IDEOGRAPH-320D6> 2
+<CJK_UNIFIED_IDEOGRAPH-320D7> 2
+<CJK_UNIFIED_IDEOGRAPH-320D8> 2
+<CJK_UNIFIED_IDEOGRAPH-320D9> 2
+<CJK_UNIFIED_IDEOGRAPH-320DA> 2
+<CJK_UNIFIED_IDEOGRAPH-320DB> 2
+<CJK_UNIFIED_IDEOGRAPH-320DC> 2
+<CJK_UNIFIED_IDEOGRAPH-320DD> 2
+<CJK_UNIFIED_IDEOGRAPH-320DE> 2
+<CJK_UNIFIED_IDEOGRAPH-320DF> 2
+<CJK_UNIFIED_IDEOGRAPH-320E0> 2
+<CJK_UNIFIED_IDEOGRAPH-320E1> 2
+<CJK_UNIFIED_IDEOGRAPH-320E2> 2
+<CJK_UNIFIED_IDEOGRAPH-320E3> 2
+<CJK_UNIFIED_IDEOGRAPH-320E4> 2
+<CJK_UNIFIED_IDEOGRAPH-320E5> 2
+<CJK_UNIFIED_IDEOGRAPH-320E6> 2
+<CJK_UNIFIED_IDEOGRAPH-320E7> 2
+<CJK_UNIFIED_IDEOGRAPH-320E8> 2
+<CJK_UNIFIED_IDEOGRAPH-320E9> 2
+<CJK_UNIFIED_IDEOGRAPH-320EA> 2
+<CJK_UNIFIED_IDEOGRAPH-320EB> 2
+<CJK_UNIFIED_IDEOGRAPH-320EC> 2
+<CJK_UNIFIED_IDEOGRAPH-320ED> 2
+<CJK_UNIFIED_IDEOGRAPH-320EE> 2
+<CJK_UNIFIED_IDEOGRAPH-320EF> 2
+<CJK_UNIFIED_IDEOGRAPH-320F0> 2
+<CJK_UNIFIED_IDEOGRAPH-320F1> 2
+<CJK_UNIFIED_IDEOGRAPH-320F2> 2
+<CJK_UNIFIED_IDEOGRAPH-320F3> 2
+<CJK_UNIFIED_IDEOGRAPH-320F4> 2
+<CJK_UNIFIED_IDEOGRAPH-320F5> 2
+<CJK_UNIFIED_IDEOGRAPH-320F6> 2
+<CJK_UNIFIED_IDEOGRAPH-320F7> 2
+<CJK_UNIFIED_IDEOGRAPH-320F8> 2
+<CJK_UNIFIED_IDEOGRAPH-320F9> 2
+<CJK_UNIFIED_IDEOGRAPH-320FA> 2
+<CJK_UNIFIED_IDEOGRAPH-320FB> 2
+<CJK_UNIFIED_IDEOGRAPH-320FC> 2
+<CJK_UNIFIED_IDEOGRAPH-320FD> 2
+<CJK_UNIFIED_IDEOGRAPH-320FE> 2
+<CJK_UNIFIED_IDEOGRAPH-320FF> 2
+<CJK_UNIFIED_IDEOGRAPH-32100> 2
+<CJK_UNIFIED_IDEOGRAPH-32101> 2
+<CJK_UNIFIED_IDEOGRAPH-32102> 2
+<CJK_UNIFIED_IDEOGRAPH-32103> 2
+<CJK_UNIFIED_IDEOGRAPH-32104> 2
+<CJK_UNIFIED_IDEOGRAPH-32105> 2
+<CJK_UNIFIED_IDEOGRAPH-32106> 2
+<CJK_UNIFIED_IDEOGRAPH-32107> 2
+<CJK_UNIFIED_IDEOGRAPH-32108> 2
+<CJK_UNIFIED_IDEOGRAPH-32109> 2
+<CJK_UNIFIED_IDEOGRAPH-3210A> 2
+<CJK_UNIFIED_IDEOGRAPH-3210B> 2
+<CJK_UNIFIED_IDEOGRAPH-3210C> 2
+<CJK_UNIFIED_IDEOGRAPH-3210D> 2
+<CJK_UNIFIED_IDEOGRAPH-3210E> 2
+<CJK_UNIFIED_IDEOGRAPH-3210F> 2
+<CJK_UNIFIED_IDEOGRAPH-32110> 2
+<CJK_UNIFIED_IDEOGRAPH-32111> 2
+<CJK_UNIFIED_IDEOGRAPH-32112> 2
+<CJK_UNIFIED_IDEOGRAPH-32113> 2
+<CJK_UNIFIED_IDEOGRAPH-32114> 2
+<CJK_UNIFIED_IDEOGRAPH-32115> 2
+<CJK_UNIFIED_IDEOGRAPH-32116> 2
+<CJK_UNIFIED_IDEOGRAPH-32117> 2
+<CJK_UNIFIED_IDEOGRAPH-32118> 2
+<CJK_UNIFIED_IDEOGRAPH-32119> 2
+<CJK_UNIFIED_IDEOGRAPH-3211A> 2
+<CJK_UNIFIED_IDEOGRAPH-3211B> 2
+<CJK_UNIFIED_IDEOGRAPH-3211C> 2
+<CJK_UNIFIED_IDEOGRAPH-3211D> 2
+<CJK_UNIFIED_IDEOGRAPH-3211E> 2
+<CJK_UNIFIED_IDEOGRAPH-3211F> 2
+<CJK_UNIFIED_IDEOGRAPH-32120> 2
+<CJK_UNIFIED_IDEOGRAPH-32121> 2
+<CJK_UNIFIED_IDEOGRAPH-32122> 2
+<CJK_UNIFIED_IDEOGRAPH-32123> 2
+<CJK_UNIFIED_IDEOGRAPH-32124> 2
+<CJK_UNIFIED_IDEOGRAPH-32125> 2
+<CJK_UNIFIED_IDEOGRAPH-32126> 2
+<CJK_UNIFIED_IDEOGRAPH-32127> 2
+<CJK_UNIFIED_IDEOGRAPH-32128> 2
+<CJK_UNIFIED_IDEOGRAPH-32129> 2
+<CJK_UNIFIED_IDEOGRAPH-3212A> 2
+<CJK_UNIFIED_IDEOGRAPH-3212B> 2
+<CJK_UNIFIED_IDEOGRAPH-3212C> 2
+<CJK_UNIFIED_IDEOGRAPH-3212D> 2
+<CJK_UNIFIED_IDEOGRAPH-3212E> 2
+<CJK_UNIFIED_IDEOGRAPH-3212F> 2
+<CJK_UNIFIED_IDEOGRAPH-32130> 2
+<CJK_UNIFIED_IDEOGRAPH-32131> 2
+<CJK_UNIFIED_IDEOGRAPH-32132> 2
+<CJK_UNIFIED_IDEOGRAPH-32133> 2
+<CJK_UNIFIED_IDEOGRAPH-32134> 2
+<CJK_UNIFIED_IDEOGRAPH-32135> 2
+<CJK_UNIFIED_IDEOGRAPH-32136> 2
+<CJK_UNIFIED_IDEOGRAPH-32137> 2
+<CJK_UNIFIED_IDEOGRAPH-32138> 2
+<CJK_UNIFIED_IDEOGRAPH-32139> 2
+<CJK_UNIFIED_IDEOGRAPH-3213A> 2
+<CJK_UNIFIED_IDEOGRAPH-3213B> 2
+<CJK_UNIFIED_IDEOGRAPH-3213C> 2
+<CJK_UNIFIED_IDEOGRAPH-3213D> 2
+<CJK_UNIFIED_IDEOGRAPH-3213E> 2
+<CJK_UNIFIED_IDEOGRAPH-3213F> 2
+<CJK_UNIFIED_IDEOGRAPH-32140> 2
+<CJK_UNIFIED_IDEOGRAPH-32141> 2
+<CJK_UNIFIED_IDEOGRAPH-32142> 2
+<CJK_UNIFIED_IDEOGRAPH-32143> 2
+<CJK_UNIFIED_IDEOGRAPH-32144> 2
+<CJK_UNIFIED_IDEOGRAPH-32145> 2
+<CJK_UNIFIED_IDEOGRAPH-32146> 2
+<CJK_UNIFIED_IDEOGRAPH-32147> 2
+<CJK_UNIFIED_IDEOGRAPH-32148> 2
+<CJK_UNIFIED_IDEOGRAPH-32149> 2
+<CJK_UNIFIED_IDEOGRAPH-3214A> 2
+<CJK_UNIFIED_IDEOGRAPH-3214B> 2
+<CJK_UNIFIED_IDEOGRAPH-3214C> 2
+<CJK_UNIFIED_IDEOGRAPH-3214D> 2
+<CJK_UNIFIED_IDEOGRAPH-3214E> 2
+<CJK_UNIFIED_IDEOGRAPH-3214F> 2
+<CJK_UNIFIED_IDEOGRAPH-32150> 2
+<CJK_UNIFIED_IDEOGRAPH-32151> 2
+<CJK_UNIFIED_IDEOGRAPH-32152> 2
+<CJK_UNIFIED_IDEOGRAPH-32153> 2
+<CJK_UNIFIED_IDEOGRAPH-32154> 2
+<CJK_UNIFIED_IDEOGRAPH-32155> 2
+<CJK_UNIFIED_IDEOGRAPH-32156> 2
+<CJK_UNIFIED_IDEOGRAPH-32157> 2
+<CJK_UNIFIED_IDEOGRAPH-32158> 2
+<CJK_UNIFIED_IDEOGRAPH-32159> 2
+<CJK_UNIFIED_IDEOGRAPH-3215A> 2
+<CJK_UNIFIED_IDEOGRAPH-3215B> 2
+<CJK_UNIFIED_IDEOGRAPH-3215C> 2
+<CJK_UNIFIED_IDEOGRAPH-3215D> 2
+<CJK_UNIFIED_IDEOGRAPH-3215E> 2
+<CJK_UNIFIED_IDEOGRAPH-3215F> 2
+<CJK_UNIFIED_IDEOGRAPH-32160> 2
+<CJK_UNIFIED_IDEOGRAPH-32161> 2
+<CJK_UNIFIED_IDEOGRAPH-32162> 2
+<CJK_UNIFIED_IDEOGRAPH-32163> 2
+<CJK_UNIFIED_IDEOGRAPH-32164> 2
+<CJK_UNIFIED_IDEOGRAPH-32165> 2
+<CJK_UNIFIED_IDEOGRAPH-32166> 2
+<CJK_UNIFIED_IDEOGRAPH-32167> 2
+<CJK_UNIFIED_IDEOGRAPH-32168> 2
+<CJK_UNIFIED_IDEOGRAPH-32169> 2
+<CJK_UNIFIED_IDEOGRAPH-3216A> 2
+<CJK_UNIFIED_IDEOGRAPH-3216B> 2
+<CJK_UNIFIED_IDEOGRAPH-3216C> 2
+<CJK_UNIFIED_IDEOGRAPH-3216D> 2
+<CJK_UNIFIED_IDEOGRAPH-3216E> 2
+<CJK_UNIFIED_IDEOGRAPH-3216F> 2
+<CJK_UNIFIED_IDEOGRAPH-32170> 2
+<CJK_UNIFIED_IDEOGRAPH-32171> 2
+<CJK_UNIFIED_IDEOGRAPH-32172> 2
+<CJK_UNIFIED_IDEOGRAPH-32173> 2
+<CJK_UNIFIED_IDEOGRAPH-32174> 2
+<CJK_UNIFIED_IDEOGRAPH-32175> 2
+<CJK_UNIFIED_IDEOGRAPH-32176> 2
+<CJK_UNIFIED_IDEOGRAPH-32177> 2
+<CJK_UNIFIED_IDEOGRAPH-32178> 2
+<CJK_UNIFIED_IDEOGRAPH-32179> 2
+<CJK_UNIFIED_IDEOGRAPH-3217A> 2
+<CJK_UNIFIED_IDEOGRAPH-3217B> 2
+<CJK_UNIFIED_IDEOGRAPH-3217C> 2
+<CJK_UNIFIED_IDEOGRAPH-3217D> 2
+<CJK_UNIFIED_IDEOGRAPH-3217E> 2
+<CJK_UNIFIED_IDEOGRAPH-3217F> 2
+<CJK_UNIFIED_IDEOGRAPH-32180> 2
+<CJK_UNIFIED_IDEOGRAPH-32181> 2
+<CJK_UNIFIED_IDEOGRAPH-32182> 2
+<CJK_UNIFIED_IDEOGRAPH-32183> 2
+<CJK_UNIFIED_IDEOGRAPH-32184> 2
+<CJK_UNIFIED_IDEOGRAPH-32185> 2
+<CJK_UNIFIED_IDEOGRAPH-32186> 2
+<CJK_UNIFIED_IDEOGRAPH-32187> 2
+<CJK_UNIFIED_IDEOGRAPH-32188> 2
+<CJK_UNIFIED_IDEOGRAPH-32189> 2
+<CJK_UNIFIED_IDEOGRAPH-3218A> 2
+<CJK_UNIFIED_IDEOGRAPH-3218B> 2
+<CJK_UNIFIED_IDEOGRAPH-3218C> 2
+<CJK_UNIFIED_IDEOGRAPH-3218D> 2
+<CJK_UNIFIED_IDEOGRAPH-3218E> 2
+<CJK_UNIFIED_IDEOGRAPH-3218F> 2
+<CJK_UNIFIED_IDEOGRAPH-32190> 2
+<CJK_UNIFIED_IDEOGRAPH-32191> 2
+<CJK_UNIFIED_IDEOGRAPH-32192> 2
+<CJK_UNIFIED_IDEOGRAPH-32193> 2
+<CJK_UNIFIED_IDEOGRAPH-32194> 2
+<CJK_UNIFIED_IDEOGRAPH-32195> 2
+<CJK_UNIFIED_IDEOGRAPH-32196> 2
+<CJK_UNIFIED_IDEOGRAPH-32197> 2
+<CJK_UNIFIED_IDEOGRAPH-32198> 2
+<CJK_UNIFIED_IDEOGRAPH-32199> 2
+<CJK_UNIFIED_IDEOGRAPH-3219A> 2
+<CJK_UNIFIED_IDEOGRAPH-3219B> 2
+<CJK_UNIFIED_IDEOGRAPH-3219C> 2
+<CJK_UNIFIED_IDEOGRAPH-3219D> 2
+<CJK_UNIFIED_IDEOGRAPH-3219E> 2
+<CJK_UNIFIED_IDEOGRAPH-3219F> 2
+<CJK_UNIFIED_IDEOGRAPH-321A0> 2
+<CJK_UNIFIED_IDEOGRAPH-321A1> 2
+<CJK_UNIFIED_IDEOGRAPH-321A2> 2
+<CJK_UNIFIED_IDEOGRAPH-321A3> 2
+<CJK_UNIFIED_IDEOGRAPH-321A4> 2
+<CJK_UNIFIED_IDEOGRAPH-321A5> 2
+<CJK_UNIFIED_IDEOGRAPH-321A6> 2
+<CJK_UNIFIED_IDEOGRAPH-321A7> 2
+<CJK_UNIFIED_IDEOGRAPH-321A8> 2
+<CJK_UNIFIED_IDEOGRAPH-321A9> 2
+<CJK_UNIFIED_IDEOGRAPH-321AA> 2
+<CJK_UNIFIED_IDEOGRAPH-321AB> 2
+<CJK_UNIFIED_IDEOGRAPH-321AC> 2
+<CJK_UNIFIED_IDEOGRAPH-321AD> 2
+<CJK_UNIFIED_IDEOGRAPH-321AE> 2
+<CJK_UNIFIED_IDEOGRAPH-321AF> 2
+<CJK_UNIFIED_IDEOGRAPH-321B0> 2
+<CJK_UNIFIED_IDEOGRAPH-321B1> 2
+<CJK_UNIFIED_IDEOGRAPH-321B2> 2
+<CJK_UNIFIED_IDEOGRAPH-321B3> 2
+<CJK_UNIFIED_IDEOGRAPH-321B4> 2
+<CJK_UNIFIED_IDEOGRAPH-321B5> 2
+<CJK_UNIFIED_IDEOGRAPH-321B6> 2
+<CJK_UNIFIED_IDEOGRAPH-321B7> 2
+<CJK_UNIFIED_IDEOGRAPH-321B8> 2
+<CJK_UNIFIED_IDEOGRAPH-321B9> 2
+<CJK_UNIFIED_IDEOGRAPH-321BA> 2
+<CJK_UNIFIED_IDEOGRAPH-321BB> 2
+<CJK_UNIFIED_IDEOGRAPH-321BC> 2
+<CJK_UNIFIED_IDEOGRAPH-321BD> 2
+<CJK_UNIFIED_IDEOGRAPH-321BE> 2
+<CJK_UNIFIED_IDEOGRAPH-321BF> 2
+<CJK_UNIFIED_IDEOGRAPH-321C0> 2
+<CJK_UNIFIED_IDEOGRAPH-321C1> 2
+<CJK_UNIFIED_IDEOGRAPH-321C2> 2
+<CJK_UNIFIED_IDEOGRAPH-321C3> 2
+<CJK_UNIFIED_IDEOGRAPH-321C4> 2
+<CJK_UNIFIED_IDEOGRAPH-321C5> 2
+<CJK_UNIFIED_IDEOGRAPH-321C6> 2
+<CJK_UNIFIED_IDEOGRAPH-321C7> 2
+<CJK_UNIFIED_IDEOGRAPH-321C8> 2
+<CJK_UNIFIED_IDEOGRAPH-321C9> 2
+<CJK_UNIFIED_IDEOGRAPH-321CA> 2
+<CJK_UNIFIED_IDEOGRAPH-321CB> 2
+<CJK_UNIFIED_IDEOGRAPH-321CC> 2
+<CJK_UNIFIED_IDEOGRAPH-321CD> 2
+<CJK_UNIFIED_IDEOGRAPH-321CE> 2
+<CJK_UNIFIED_IDEOGRAPH-321CF> 2
+<CJK_UNIFIED_IDEOGRAPH-321D0> 2
+<CJK_UNIFIED_IDEOGRAPH-321D1> 2
+<CJK_UNIFIED_IDEOGRAPH-321D2> 2
+<CJK_UNIFIED_IDEOGRAPH-321D3> 2
+<CJK_UNIFIED_IDEOGRAPH-321D4> 2
+<CJK_UNIFIED_IDEOGRAPH-321D5> 2
+<CJK_UNIFIED_IDEOGRAPH-321D6> 2
+<CJK_UNIFIED_IDEOGRAPH-321D7> 2
+<CJK_UNIFIED_IDEOGRAPH-321D8> 2
+<CJK_UNIFIED_IDEOGRAPH-321D9> 2
+<CJK_UNIFIED_IDEOGRAPH-321DA> 2
+<CJK_UNIFIED_IDEOGRAPH-321DB> 2
+<CJK_UNIFIED_IDEOGRAPH-321DC> 2
+<CJK_UNIFIED_IDEOGRAPH-321DD> 2
+<CJK_UNIFIED_IDEOGRAPH-321DE> 2
+<CJK_UNIFIED_IDEOGRAPH-321DF> 2
+<CJK_UNIFIED_IDEOGRAPH-321E0> 2
+<CJK_UNIFIED_IDEOGRAPH-321E1> 2
+<CJK_UNIFIED_IDEOGRAPH-321E2> 2
+<CJK_UNIFIED_IDEOGRAPH-321E3> 2
+<CJK_UNIFIED_IDEOGRAPH-321E4> 2
+<CJK_UNIFIED_IDEOGRAPH-321E5> 2
+<CJK_UNIFIED_IDEOGRAPH-321E6> 2
+<CJK_UNIFIED_IDEOGRAPH-321E7> 2
+<CJK_UNIFIED_IDEOGRAPH-321E8> 2
+<CJK_UNIFIED_IDEOGRAPH-321E9> 2
+<CJK_UNIFIED_IDEOGRAPH-321EA> 2
+<CJK_UNIFIED_IDEOGRAPH-321EB> 2
+<CJK_UNIFIED_IDEOGRAPH-321EC> 2
+<CJK_UNIFIED_IDEOGRAPH-321ED> 2
+<CJK_UNIFIED_IDEOGRAPH-321EE> 2
+<CJK_UNIFIED_IDEOGRAPH-321EF> 2
+<CJK_UNIFIED_IDEOGRAPH-321F0> 2
+<CJK_UNIFIED_IDEOGRAPH-321F1> 2
+<CJK_UNIFIED_IDEOGRAPH-321F2> 2
+<CJK_UNIFIED_IDEOGRAPH-321F3> 2
+<CJK_UNIFIED_IDEOGRAPH-321F4> 2
+<CJK_UNIFIED_IDEOGRAPH-321F5> 2
+<CJK_UNIFIED_IDEOGRAPH-321F6> 2
+<CJK_UNIFIED_IDEOGRAPH-321F7> 2
+<CJK_UNIFIED_IDEOGRAPH-321F8> 2
+<CJK_UNIFIED_IDEOGRAPH-321F9> 2
+<CJK_UNIFIED_IDEOGRAPH-321FA> 2
+<CJK_UNIFIED_IDEOGRAPH-321FB> 2
+<CJK_UNIFIED_IDEOGRAPH-321FC> 2
+<CJK_UNIFIED_IDEOGRAPH-321FD> 2
+<CJK_UNIFIED_IDEOGRAPH-321FE> 2
+<CJK_UNIFIED_IDEOGRAPH-321FF> 2
+<CJK_UNIFIED_IDEOGRAPH-32200> 2
+<CJK_UNIFIED_IDEOGRAPH-32201> 2
+<CJK_UNIFIED_IDEOGRAPH-32202> 2
+<CJK_UNIFIED_IDEOGRAPH-32203> 2
+<CJK_UNIFIED_IDEOGRAPH-32204> 2
+<CJK_UNIFIED_IDEOGRAPH-32205> 2
+<CJK_UNIFIED_IDEOGRAPH-32206> 2
+<CJK_UNIFIED_IDEOGRAPH-32207> 2
+<CJK_UNIFIED_IDEOGRAPH-32208> 2
+<CJK_UNIFIED_IDEOGRAPH-32209> 2
+<CJK_UNIFIED_IDEOGRAPH-3220A> 2
+<CJK_UNIFIED_IDEOGRAPH-3220B> 2
+<CJK_UNIFIED_IDEOGRAPH-3220C> 2
+<CJK_UNIFIED_IDEOGRAPH-3220D> 2
+<CJK_UNIFIED_IDEOGRAPH-3220E> 2
+<CJK_UNIFIED_IDEOGRAPH-3220F> 2
+<CJK_UNIFIED_IDEOGRAPH-32210> 2
+<CJK_UNIFIED_IDEOGRAPH-32211> 2
+<CJK_UNIFIED_IDEOGRAPH-32212> 2
+<CJK_UNIFIED_IDEOGRAPH-32213> 2
+<CJK_UNIFIED_IDEOGRAPH-32214> 2
+<CJK_UNIFIED_IDEOGRAPH-32215> 2
+<CJK_UNIFIED_IDEOGRAPH-32216> 2
+<CJK_UNIFIED_IDEOGRAPH-32217> 2
+<CJK_UNIFIED_IDEOGRAPH-32218> 2
+<CJK_UNIFIED_IDEOGRAPH-32219> 2
+<CJK_UNIFIED_IDEOGRAPH-3221A> 2
+<CJK_UNIFIED_IDEOGRAPH-3221B> 2
+<CJK_UNIFIED_IDEOGRAPH-3221C> 2
+<CJK_UNIFIED_IDEOGRAPH-3221D> 2
+<CJK_UNIFIED_IDEOGRAPH-3221E> 2
+<CJK_UNIFIED_IDEOGRAPH-3221F> 2
+<CJK_UNIFIED_IDEOGRAPH-32220> 2
+<CJK_UNIFIED_IDEOGRAPH-32221> 2
+<CJK_UNIFIED_IDEOGRAPH-32222> 2
+<CJK_UNIFIED_IDEOGRAPH-32223> 2
+<CJK_UNIFIED_IDEOGRAPH-32224> 2
+<CJK_UNIFIED_IDEOGRAPH-32225> 2
+<CJK_UNIFIED_IDEOGRAPH-32226> 2
+<CJK_UNIFIED_IDEOGRAPH-32227> 2
+<CJK_UNIFIED_IDEOGRAPH-32228> 2
+<CJK_UNIFIED_IDEOGRAPH-32229> 2
+<CJK_UNIFIED_IDEOGRAPH-3222A> 2
+<CJK_UNIFIED_IDEOGRAPH-3222B> 2
+<CJK_UNIFIED_IDEOGRAPH-3222C> 2
+<CJK_UNIFIED_IDEOGRAPH-3222D> 2
+<CJK_UNIFIED_IDEOGRAPH-3222E> 2
+<CJK_UNIFIED_IDEOGRAPH-3222F> 2
+<CJK_UNIFIED_IDEOGRAPH-32230> 2
+<CJK_UNIFIED_IDEOGRAPH-32231> 2
+<CJK_UNIFIED_IDEOGRAPH-32232> 2
+<CJK_UNIFIED_IDEOGRAPH-32233> 2
+<CJK_UNIFIED_IDEOGRAPH-32234> 2
+<CJK_UNIFIED_IDEOGRAPH-32235> 2
+<CJK_UNIFIED_IDEOGRAPH-32236> 2
+<CJK_UNIFIED_IDEOGRAPH-32237> 2
+<CJK_UNIFIED_IDEOGRAPH-32238> 2
+<CJK_UNIFIED_IDEOGRAPH-32239> 2
+<CJK_UNIFIED_IDEOGRAPH-3223A> 2
+<CJK_UNIFIED_IDEOGRAPH-3223B> 2
+<CJK_UNIFIED_IDEOGRAPH-3223C> 2
+<CJK_UNIFIED_IDEOGRAPH-3223D> 2
+<CJK_UNIFIED_IDEOGRAPH-3223E> 2
+<CJK_UNIFIED_IDEOGRAPH-3223F> 2
+<CJK_UNIFIED_IDEOGRAPH-32240> 2
+<CJK_UNIFIED_IDEOGRAPH-32241> 2
+<CJK_UNIFIED_IDEOGRAPH-32242> 2
+<CJK_UNIFIED_IDEOGRAPH-32243> 2
+<CJK_UNIFIED_IDEOGRAPH-32244> 2
+<CJK_UNIFIED_IDEOGRAPH-32245> 2
+<CJK_UNIFIED_IDEOGRAPH-32246> 2
+<CJK_UNIFIED_IDEOGRAPH-32247> 2
+<CJK_UNIFIED_IDEOGRAPH-32248> 2
+<CJK_UNIFIED_IDEOGRAPH-32249> 2
+<CJK_UNIFIED_IDEOGRAPH-3224A> 2
+<CJK_UNIFIED_IDEOGRAPH-3224B> 2
+<CJK_UNIFIED_IDEOGRAPH-3224C> 2
+<CJK_UNIFIED_IDEOGRAPH-3224D> 2
+<CJK_UNIFIED_IDEOGRAPH-3224E> 2
+<CJK_UNIFIED_IDEOGRAPH-3224F> 2
+<CJK_UNIFIED_IDEOGRAPH-32250> 2
+<CJK_UNIFIED_IDEOGRAPH-32251> 2
+<CJK_UNIFIED_IDEOGRAPH-32252> 2
+<CJK_UNIFIED_IDEOGRAPH-32253> 2
+<CJK_UNIFIED_IDEOGRAPH-32254> 2
+<CJK_UNIFIED_IDEOGRAPH-32255> 2
+<CJK_UNIFIED_IDEOGRAPH-32256> 2
+<CJK_UNIFIED_IDEOGRAPH-32257> 2
+<CJK_UNIFIED_IDEOGRAPH-32258> 2
+<CJK_UNIFIED_IDEOGRAPH-32259> 2
+<CJK_UNIFIED_IDEOGRAPH-3225A> 2
+<CJK_UNIFIED_IDEOGRAPH-3225B> 2
+<CJK_UNIFIED_IDEOGRAPH-3225C> 2
+<CJK_UNIFIED_IDEOGRAPH-3225D> 2
+<CJK_UNIFIED_IDEOGRAPH-3225E> 2
+<CJK_UNIFIED_IDEOGRAPH-3225F> 2
+<CJK_UNIFIED_IDEOGRAPH-32260> 2
+<CJK_UNIFIED_IDEOGRAPH-32261> 2
+<CJK_UNIFIED_IDEOGRAPH-32262> 2
+<CJK_UNIFIED_IDEOGRAPH-32263> 2
+<CJK_UNIFIED_IDEOGRAPH-32264> 2
+<CJK_UNIFIED_IDEOGRAPH-32265> 2
+<CJK_UNIFIED_IDEOGRAPH-32266> 2
+<CJK_UNIFIED_IDEOGRAPH-32267> 2
+<CJK_UNIFIED_IDEOGRAPH-32268> 2
+<CJK_UNIFIED_IDEOGRAPH-32269> 2
+<CJK_UNIFIED_IDEOGRAPH-3226A> 2
+<CJK_UNIFIED_IDEOGRAPH-3226B> 2
+<CJK_UNIFIED_IDEOGRAPH-3226C> 2
+<CJK_UNIFIED_IDEOGRAPH-3226D> 2
+<CJK_UNIFIED_IDEOGRAPH-3226E> 2
+<CJK_UNIFIED_IDEOGRAPH-3226F> 2
+<CJK_UNIFIED_IDEOGRAPH-32270> 2
+<CJK_UNIFIED_IDEOGRAPH-32271> 2
+<CJK_UNIFIED_IDEOGRAPH-32272> 2
+<CJK_UNIFIED_IDEOGRAPH-32273> 2
+<CJK_UNIFIED_IDEOGRAPH-32274> 2
+<CJK_UNIFIED_IDEOGRAPH-32275> 2
+<CJK_UNIFIED_IDEOGRAPH-32276> 2
+<CJK_UNIFIED_IDEOGRAPH-32277> 2
+<CJK_UNIFIED_IDEOGRAPH-32278> 2
+<CJK_UNIFIED_IDEOGRAPH-32279> 2
+<CJK_UNIFIED_IDEOGRAPH-3227A> 2
+<CJK_UNIFIED_IDEOGRAPH-3227B> 2
+<CJK_UNIFIED_IDEOGRAPH-3227C> 2
+<CJK_UNIFIED_IDEOGRAPH-3227D> 2
+<CJK_UNIFIED_IDEOGRAPH-3227E> 2
+<CJK_UNIFIED_IDEOGRAPH-3227F> 2
+<CJK_UNIFIED_IDEOGRAPH-32280> 2
+<CJK_UNIFIED_IDEOGRAPH-32281> 2
+<CJK_UNIFIED_IDEOGRAPH-32282> 2
+<CJK_UNIFIED_IDEOGRAPH-32283> 2
+<CJK_UNIFIED_IDEOGRAPH-32284> 2
+<CJK_UNIFIED_IDEOGRAPH-32285> 2
+<CJK_UNIFIED_IDEOGRAPH-32286> 2
+<CJK_UNIFIED_IDEOGRAPH-32287> 2
+<CJK_UNIFIED_IDEOGRAPH-32288> 2
+<CJK_UNIFIED_IDEOGRAPH-32289> 2
+<CJK_UNIFIED_IDEOGRAPH-3228A> 2
+<CJK_UNIFIED_IDEOGRAPH-3228B> 2
+<CJK_UNIFIED_IDEOGRAPH-3228C> 2
+<CJK_UNIFIED_IDEOGRAPH-3228D> 2
+<CJK_UNIFIED_IDEOGRAPH-3228E> 2
+<CJK_UNIFIED_IDEOGRAPH-3228F> 2
+<CJK_UNIFIED_IDEOGRAPH-32290> 2
+<CJK_UNIFIED_IDEOGRAPH-32291> 2
+<CJK_UNIFIED_IDEOGRAPH-32292> 2
+<CJK_UNIFIED_IDEOGRAPH-32293> 2
+<CJK_UNIFIED_IDEOGRAPH-32294> 2
+<CJK_UNIFIED_IDEOGRAPH-32295> 2
+<CJK_UNIFIED_IDEOGRAPH-32296> 2
+<CJK_UNIFIED_IDEOGRAPH-32297> 2
+<CJK_UNIFIED_IDEOGRAPH-32298> 2
+<CJK_UNIFIED_IDEOGRAPH-32299> 2
+<CJK_UNIFIED_IDEOGRAPH-3229A> 2
+<CJK_UNIFIED_IDEOGRAPH-3229B> 2
+<CJK_UNIFIED_IDEOGRAPH-3229C> 2
+<CJK_UNIFIED_IDEOGRAPH-3229D> 2
+<CJK_UNIFIED_IDEOGRAPH-3229E> 2
+<CJK_UNIFIED_IDEOGRAPH-3229F> 2
+<CJK_UNIFIED_IDEOGRAPH-322A0> 2
+<CJK_UNIFIED_IDEOGRAPH-322A1> 2
+<CJK_UNIFIED_IDEOGRAPH-322A2> 2
+<CJK_UNIFIED_IDEOGRAPH-322A3> 2
+<CJK_UNIFIED_IDEOGRAPH-322A4> 2
+<CJK_UNIFIED_IDEOGRAPH-322A5> 2
+<CJK_UNIFIED_IDEOGRAPH-322A6> 2
+<CJK_UNIFIED_IDEOGRAPH-322A7> 2
+<CJK_UNIFIED_IDEOGRAPH-322A8> 2
+<CJK_UNIFIED_IDEOGRAPH-322A9> 2
+<CJK_UNIFIED_IDEOGRAPH-322AA> 2
+<CJK_UNIFIED_IDEOGRAPH-322AB> 2
+<CJK_UNIFIED_IDEOGRAPH-322AC> 2
+<CJK_UNIFIED_IDEOGRAPH-322AD> 2
+<CJK_UNIFIED_IDEOGRAPH-322AE> 2
+<CJK_UNIFIED_IDEOGRAPH-322AF> 2
+<CJK_UNIFIED_IDEOGRAPH-322B0> 2
+<CJK_UNIFIED_IDEOGRAPH-322B1> 2
+<CJK_UNIFIED_IDEOGRAPH-322B2> 2
+<CJK_UNIFIED_IDEOGRAPH-322B3> 2
+<CJK_UNIFIED_IDEOGRAPH-322B4> 2
+<CJK_UNIFIED_IDEOGRAPH-322B5> 2
+<CJK_UNIFIED_IDEOGRAPH-322B6> 2
+<CJK_UNIFIED_IDEOGRAPH-322B7> 2
+<CJK_UNIFIED_IDEOGRAPH-322B8> 2
+<CJK_UNIFIED_IDEOGRAPH-322B9> 2
+<CJK_UNIFIED_IDEOGRAPH-322BA> 2
+<CJK_UNIFIED_IDEOGRAPH-322BB> 2
+<CJK_UNIFIED_IDEOGRAPH-322BC> 2
+<CJK_UNIFIED_IDEOGRAPH-322BD> 2
+<CJK_UNIFIED_IDEOGRAPH-322BE> 2
+<CJK_UNIFIED_IDEOGRAPH-322BF> 2
+<CJK_UNIFIED_IDEOGRAPH-322C0> 2
+<CJK_UNIFIED_IDEOGRAPH-322C1> 2
+<CJK_UNIFIED_IDEOGRAPH-322C2> 2
+<CJK_UNIFIED_IDEOGRAPH-322C3> 2
+<CJK_UNIFIED_IDEOGRAPH-322C4> 2
+<CJK_UNIFIED_IDEOGRAPH-322C5> 2
+<CJK_UNIFIED_IDEOGRAPH-322C6> 2
+<CJK_UNIFIED_IDEOGRAPH-322C7> 2
+<CJK_UNIFIED_IDEOGRAPH-322C8> 2
+<CJK_UNIFIED_IDEOGRAPH-322C9> 2
+<CJK_UNIFIED_IDEOGRAPH-322CA> 2
+<CJK_UNIFIED_IDEOGRAPH-322CB> 2
+<CJK_UNIFIED_IDEOGRAPH-322CC> 2
+<CJK_UNIFIED_IDEOGRAPH-322CD> 2
+<CJK_UNIFIED_IDEOGRAPH-322CE> 2
+<CJK_UNIFIED_IDEOGRAPH-322CF> 2
+<CJK_UNIFIED_IDEOGRAPH-322D0> 2
+<CJK_UNIFIED_IDEOGRAPH-322D1> 2
+<CJK_UNIFIED_IDEOGRAPH-322D2> 2
+<CJK_UNIFIED_IDEOGRAPH-322D3> 2
+<CJK_UNIFIED_IDEOGRAPH-322D4> 2
+<CJK_UNIFIED_IDEOGRAPH-322D5> 2
+<CJK_UNIFIED_IDEOGRAPH-322D6> 2
+<CJK_UNIFIED_IDEOGRAPH-322D7> 2
+<CJK_UNIFIED_IDEOGRAPH-322D8> 2
+<CJK_UNIFIED_IDEOGRAPH-322D9> 2
+<CJK_UNIFIED_IDEOGRAPH-322DA> 2
+<CJK_UNIFIED_IDEOGRAPH-322DB> 2
+<CJK_UNIFIED_IDEOGRAPH-322DC> 2
+<CJK_UNIFIED_IDEOGRAPH-322DD> 2
+<CJK_UNIFIED_IDEOGRAPH-322DE> 2
+<CJK_UNIFIED_IDEOGRAPH-322DF> 2
+<CJK_UNIFIED_IDEOGRAPH-322E0> 2
+<CJK_UNIFIED_IDEOGRAPH-322E1> 2
+<CJK_UNIFIED_IDEOGRAPH-322E2> 2
+<CJK_UNIFIED_IDEOGRAPH-322E3> 2
+<CJK_UNIFIED_IDEOGRAPH-322E4> 2
+<CJK_UNIFIED_IDEOGRAPH-322E5> 2
+<CJK_UNIFIED_IDEOGRAPH-322E6> 2
+<CJK_UNIFIED_IDEOGRAPH-322E7> 2
+<CJK_UNIFIED_IDEOGRAPH-322E8> 2
+<CJK_UNIFIED_IDEOGRAPH-322E9> 2
+<CJK_UNIFIED_IDEOGRAPH-322EA> 2
+<CJK_UNIFIED_IDEOGRAPH-322EB> 2
+<CJK_UNIFIED_IDEOGRAPH-322EC> 2
+<CJK_UNIFIED_IDEOGRAPH-322ED> 2
+<CJK_UNIFIED_IDEOGRAPH-322EE> 2
+<CJK_UNIFIED_IDEOGRAPH-322EF> 2
+<CJK_UNIFIED_IDEOGRAPH-322F0> 2
+<CJK_UNIFIED_IDEOGRAPH-322F1> 2
+<CJK_UNIFIED_IDEOGRAPH-322F2> 2
+<CJK_UNIFIED_IDEOGRAPH-322F3> 2
+<CJK_UNIFIED_IDEOGRAPH-322F4> 2
+<CJK_UNIFIED_IDEOGRAPH-322F5> 2
+<CJK_UNIFIED_IDEOGRAPH-322F6> 2
+<CJK_UNIFIED_IDEOGRAPH-322F7> 2
+<CJK_UNIFIED_IDEOGRAPH-322F8> 2
+<CJK_UNIFIED_IDEOGRAPH-322F9> 2
+<CJK_UNIFIED_IDEOGRAPH-322FA> 2
+<CJK_UNIFIED_IDEOGRAPH-322FB> 2
+<CJK_UNIFIED_IDEOGRAPH-322FC> 2
+<CJK_UNIFIED_IDEOGRAPH-322FD> 2
+<CJK_UNIFIED_IDEOGRAPH-322FE> 2
+<CJK_UNIFIED_IDEOGRAPH-322FF> 2
+<CJK_UNIFIED_IDEOGRAPH-32300> 2
+<CJK_UNIFIED_IDEOGRAPH-32301> 2
+<CJK_UNIFIED_IDEOGRAPH-32302> 2
+<CJK_UNIFIED_IDEOGRAPH-32303> 2
+<CJK_UNIFIED_IDEOGRAPH-32304> 2
+<CJK_UNIFIED_IDEOGRAPH-32305> 2
+<CJK_UNIFIED_IDEOGRAPH-32306> 2
+<CJK_UNIFIED_IDEOGRAPH-32307> 2
+<CJK_UNIFIED_IDEOGRAPH-32308> 2
+<CJK_UNIFIED_IDEOGRAPH-32309> 2
+<CJK_UNIFIED_IDEOGRAPH-3230A> 2
+<CJK_UNIFIED_IDEOGRAPH-3230B> 2
+<CJK_UNIFIED_IDEOGRAPH-3230C> 2
+<CJK_UNIFIED_IDEOGRAPH-3230D> 2
+<CJK_UNIFIED_IDEOGRAPH-3230E> 2
+<CJK_UNIFIED_IDEOGRAPH-3230F> 2
+<CJK_UNIFIED_IDEOGRAPH-32310> 2
+<CJK_UNIFIED_IDEOGRAPH-32311> 2
+<CJK_UNIFIED_IDEOGRAPH-32312> 2
+<CJK_UNIFIED_IDEOGRAPH-32313> 2
+<CJK_UNIFIED_IDEOGRAPH-32314> 2
+<CJK_UNIFIED_IDEOGRAPH-32315> 2
+<CJK_UNIFIED_IDEOGRAPH-32316> 2
+<CJK_UNIFIED_IDEOGRAPH-32317> 2
+<CJK_UNIFIED_IDEOGRAPH-32318> 2
+<CJK_UNIFIED_IDEOGRAPH-32319> 2
+<CJK_UNIFIED_IDEOGRAPH-3231A> 2
+<CJK_UNIFIED_IDEOGRAPH-3231B> 2
+<CJK_UNIFIED_IDEOGRAPH-3231C> 2
+<CJK_UNIFIED_IDEOGRAPH-3231D> 2
+<CJK_UNIFIED_IDEOGRAPH-3231E> 2
+<CJK_UNIFIED_IDEOGRAPH-3231F> 2
+<CJK_UNIFIED_IDEOGRAPH-32320> 2
+<CJK_UNIFIED_IDEOGRAPH-32321> 2
+<CJK_UNIFIED_IDEOGRAPH-32322> 2
+<CJK_UNIFIED_IDEOGRAPH-32323> 2
+<CJK_UNIFIED_IDEOGRAPH-32324> 2
+<CJK_UNIFIED_IDEOGRAPH-32325> 2
+<CJK_UNIFIED_IDEOGRAPH-32326> 2
+<CJK_UNIFIED_IDEOGRAPH-32327> 2
+<CJK_UNIFIED_IDEOGRAPH-32328> 2
+<CJK_UNIFIED_IDEOGRAPH-32329> 2
+<CJK_UNIFIED_IDEOGRAPH-3232A> 2
+<CJK_UNIFIED_IDEOGRAPH-3232B> 2
+<CJK_UNIFIED_IDEOGRAPH-3232C> 2
+<CJK_UNIFIED_IDEOGRAPH-3232D> 2
+<CJK_UNIFIED_IDEOGRAPH-3232E> 2
+<CJK_UNIFIED_IDEOGRAPH-3232F> 2
+<CJK_UNIFIED_IDEOGRAPH-32330> 2
+<CJK_UNIFIED_IDEOGRAPH-32331> 2
+<CJK_UNIFIED_IDEOGRAPH-32332> 2
+<CJK_UNIFIED_IDEOGRAPH-32333> 2
+<CJK_UNIFIED_IDEOGRAPH-32334> 2
+<CJK_UNIFIED_IDEOGRAPH-32335> 2
+<CJK_UNIFIED_IDEOGRAPH-32336> 2
+<CJK_UNIFIED_IDEOGRAPH-32337> 2
+<CJK_UNIFIED_IDEOGRAPH-32338> 2
+<CJK_UNIFIED_IDEOGRAPH-32339> 2
+<CJK_UNIFIED_IDEOGRAPH-3233A> 2
+<CJK_UNIFIED_IDEOGRAPH-3233B> 2
+<CJK_UNIFIED_IDEOGRAPH-3233C> 2
+<CJK_UNIFIED_IDEOGRAPH-3233D> 2
+<CJK_UNIFIED_IDEOGRAPH-3233E> 2
+<CJK_UNIFIED_IDEOGRAPH-3233F> 2
+<CJK_UNIFIED_IDEOGRAPH-32340> 2
+<CJK_UNIFIED_IDEOGRAPH-32341> 2
+<CJK_UNIFIED_IDEOGRAPH-32342> 2
+<CJK_UNIFIED_IDEOGRAPH-32343> 2
+<CJK_UNIFIED_IDEOGRAPH-32344> 2
+<CJK_UNIFIED_IDEOGRAPH-32345> 2
+<CJK_UNIFIED_IDEOGRAPH-32346> 2
+<CJK_UNIFIED_IDEOGRAPH-32347> 2
+<CJK_UNIFIED_IDEOGRAPH-32348> 2
+<CJK_UNIFIED_IDEOGRAPH-32349> 2
+<CJK_UNIFIED_IDEOGRAPH-3234A> 2
+<CJK_UNIFIED_IDEOGRAPH-3234B> 2
+<CJK_UNIFIED_IDEOGRAPH-3234C> 2
+<CJK_UNIFIED_IDEOGRAPH-3234D> 2
+<CJK_UNIFIED_IDEOGRAPH-3234E> 2
+<CJK_UNIFIED_IDEOGRAPH-3234F> 2
+<CJK_UNIFIED_IDEOGRAPH-32350> 2
+<CJK_UNIFIED_IDEOGRAPH-32351> 2
+<CJK_UNIFIED_IDEOGRAPH-32352> 2
+<CJK_UNIFIED_IDEOGRAPH-32353> 2
+<CJK_UNIFIED_IDEOGRAPH-32354> 2
+<CJK_UNIFIED_IDEOGRAPH-32355> 2
+<CJK_UNIFIED_IDEOGRAPH-32356> 2
+<CJK_UNIFIED_IDEOGRAPH-32357> 2
+<CJK_UNIFIED_IDEOGRAPH-32358> 2
+<CJK_UNIFIED_IDEOGRAPH-32359> 2
+<CJK_UNIFIED_IDEOGRAPH-3235A> 2
+<CJK_UNIFIED_IDEOGRAPH-3235B> 2
+<CJK_UNIFIED_IDEOGRAPH-3235C> 2
+<CJK_UNIFIED_IDEOGRAPH-3235D> 2
+<CJK_UNIFIED_IDEOGRAPH-3235E> 2
+<CJK_UNIFIED_IDEOGRAPH-3235F> 2
+<CJK_UNIFIED_IDEOGRAPH-32360> 2
+<CJK_UNIFIED_IDEOGRAPH-32361> 2
+<CJK_UNIFIED_IDEOGRAPH-32362> 2
+<CJK_UNIFIED_IDEOGRAPH-32363> 2
+<CJK_UNIFIED_IDEOGRAPH-32364> 2
+<CJK_UNIFIED_IDEOGRAPH-32365> 2
+<CJK_UNIFIED_IDEOGRAPH-32366> 2
+<CJK_UNIFIED_IDEOGRAPH-32367> 2
+<CJK_UNIFIED_IDEOGRAPH-32368> 2
+<CJK_UNIFIED_IDEOGRAPH-32369> 2
+<CJK_UNIFIED_IDEOGRAPH-3236A> 2
+<CJK_UNIFIED_IDEOGRAPH-3236B> 2
+<CJK_UNIFIED_IDEOGRAPH-3236C> 2
+<CJK_UNIFIED_IDEOGRAPH-3236D> 2
+<CJK_UNIFIED_IDEOGRAPH-3236E> 2
+<CJK_UNIFIED_IDEOGRAPH-3236F> 2
+<CJK_UNIFIED_IDEOGRAPH-32370> 2
+<CJK_UNIFIED_IDEOGRAPH-32371> 2
+<CJK_UNIFIED_IDEOGRAPH-32372> 2
+<CJK_UNIFIED_IDEOGRAPH-32373> 2
+<CJK_UNIFIED_IDEOGRAPH-32374> 2
+<CJK_UNIFIED_IDEOGRAPH-32375> 2
+<CJK_UNIFIED_IDEOGRAPH-32376> 2
+<CJK_UNIFIED_IDEOGRAPH-32377> 2
+<CJK_UNIFIED_IDEOGRAPH-32378> 2
+<CJK_UNIFIED_IDEOGRAPH-32379> 2
+<CJK_UNIFIED_IDEOGRAPH-3237A> 2
+<CJK_UNIFIED_IDEOGRAPH-3237B> 2
+<CJK_UNIFIED_IDEOGRAPH-3237C> 2
+<CJK_UNIFIED_IDEOGRAPH-3237D> 2
+<CJK_UNIFIED_IDEOGRAPH-3237E> 2
+<CJK_UNIFIED_IDEOGRAPH-3237F> 2
+<CJK_UNIFIED_IDEOGRAPH-32380> 2
+<CJK_UNIFIED_IDEOGRAPH-32381> 2
+<CJK_UNIFIED_IDEOGRAPH-32382> 2
+<CJK_UNIFIED_IDEOGRAPH-32383> 2
+<CJK_UNIFIED_IDEOGRAPH-32384> 2
+<CJK_UNIFIED_IDEOGRAPH-32385> 2
+<CJK_UNIFIED_IDEOGRAPH-32386> 2
+<CJK_UNIFIED_IDEOGRAPH-32387> 2
+<CJK_UNIFIED_IDEOGRAPH-32388> 2
+<CJK_UNIFIED_IDEOGRAPH-32389> 2
+<CJK_UNIFIED_IDEOGRAPH-3238A> 2
+<CJK_UNIFIED_IDEOGRAPH-3238B> 2
+<CJK_UNIFIED_IDEOGRAPH-3238C> 2
+<CJK_UNIFIED_IDEOGRAPH-3238D> 2
+<CJK_UNIFIED_IDEOGRAPH-3238E> 2
+<CJK_UNIFIED_IDEOGRAPH-3238F> 2
+<CJK_UNIFIED_IDEOGRAPH-32390> 2
+<CJK_UNIFIED_IDEOGRAPH-32391> 2
+<CJK_UNIFIED_IDEOGRAPH-32392> 2
+<CJK_UNIFIED_IDEOGRAPH-32393> 2
+<CJK_UNIFIED_IDEOGRAPH-32394> 2
+<CJK_UNIFIED_IDEOGRAPH-32395> 2
+<CJK_UNIFIED_IDEOGRAPH-32396> 2
+<CJK_UNIFIED_IDEOGRAPH-32397> 2
+<CJK_UNIFIED_IDEOGRAPH-32398> 2
+<CJK_UNIFIED_IDEOGRAPH-32399> 2
+<CJK_UNIFIED_IDEOGRAPH-3239A> 2
+<CJK_UNIFIED_IDEOGRAPH-3239B> 2
+<CJK_UNIFIED_IDEOGRAPH-3239C> 2
+<CJK_UNIFIED_IDEOGRAPH-3239D> 2
+<CJK_UNIFIED_IDEOGRAPH-3239E> 2
+<CJK_UNIFIED_IDEOGRAPH-3239F> 2
+<CJK_UNIFIED_IDEOGRAPH-323A0> 2
+<CJK_UNIFIED_IDEOGRAPH-323A1> 2
+<CJK_UNIFIED_IDEOGRAPH-323A2> 2
+<CJK_UNIFIED_IDEOGRAPH-323A3> 2
+<CJK_UNIFIED_IDEOGRAPH-323A4> 2
+<CJK_UNIFIED_IDEOGRAPH-323A5> 2
+<CJK_UNIFIED_IDEOGRAPH-323A6> 2
+<CJK_UNIFIED_IDEOGRAPH-323A7> 2
+<CJK_UNIFIED_IDEOGRAPH-323A8> 2
+<CJK_UNIFIED_IDEOGRAPH-323A9> 2
+<CJK_UNIFIED_IDEOGRAPH-323AA> 2
+<CJK_UNIFIED_IDEOGRAPH-323AB> 2
+<CJK_UNIFIED_IDEOGRAPH-323AC> 2
+<CJK_UNIFIED_IDEOGRAPH-323AD> 2
+<CJK_UNIFIED_IDEOGRAPH-323AE> 2
+<CJK_UNIFIED_IDEOGRAPH-323AF> 2
<LANGUAGE_TAG> 0
<TAG_SPACE> 0
<TAG_EXCLAMATION_MARK> 0
diff --git a/tools/tools/locale/tools/charmaps.pm b/tools/tools/locale/tools/charmaps.pm
index 827df3bc8820..94471b3c8c97 100644
--- a/tools/tools/locale/tools/charmaps.pm
+++ b/tools/tools/locale/tools/charmaps.pm
@@ -1,6 +1,6 @@
#!/usr/local/bin/perl -w
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright 2009 Edwin Groothuis <edwin@FreeBSD.org>
#
@@ -25,7 +25,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
use strict;
diff --git a/tools/tools/locale/tools/cldr2def.pl b/tools/tools/locale/tools/cldr2def.pl
index e65ec30fa6d5..e59e6d3b13a1 100755
--- a/tools/tools/locale/tools/cldr2def.pl
+++ b/tools/tools/locale/tools/cldr2def.pl
@@ -1,6 +1,6 @@
#!/usr/local/bin/perl -wC
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright 2009 Edwin Groothuis <edwin@FreeBSD.org>
# Copyright 2015 John Marino <draco@marino.st>
@@ -27,7 +27,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
use strict;
use File::Copy;
@@ -948,7 +947,6 @@ sub make_makefile {
}
open(FOUT, ">$TYPE.draft/Makefile");
print FOUT <<EOF;
-# \$FreeBSD\$
# Warning: Do not edit. This file is automatically generated from the
# tools in /usr/src/tools/tools/locale.
diff --git a/tools/tools/locale/tools/convert_map.pl b/tools/tools/locale/tools/convert_map.pl
index 8b54ff33381b..a7e2d35b1df3 100755
--- a/tools/tools/locale/tools/convert_map.pl
+++ b/tools/tools/locale/tools/convert_map.pl
@@ -1,6 +1,5 @@
#! /usr/local/bin/perl
#
-# $FreeBSD$
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
diff --git a/tools/tools/locale/tools/extract-colldef.awk b/tools/tools/locale/tools/extract-colldef.awk
index d02f1c49a6af..3bde13be484a 100644
--- a/tools/tools/locale/tools/extract-colldef.awk
+++ b/tools/tools/locale/tools/extract-colldef.awk
@@ -1,5 +1,5 @@
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright 2016 Baptiste Daroussin <bapt@FreeBSD.org>
#
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
BEGIN {
print "# Warning: Do not edit. This is automatically extracted"
diff --git a/tools/tools/locale/tools/finalize b/tools/tools/locale/tools/finalize
index 207b97ff3cb5..23afaddafa9b 100755
--- a/tools/tools/locale/tools/finalize
+++ b/tools/tools/locale/tools/finalize
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright 2015 John Marino <draco@marino.st>
#
@@ -25,7 +25,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
# This is a helper script for the Makefile in the parent directory.
# When the localization definitions are generated in the draft area,
diff --git a/tools/tools/locale/tools/getwidths.c b/tools/tools/locale/tools/getwidths.c
index f1c7c6cc463d..2790b8031912 100644
--- a/tools/tools/locale/tools/getwidths.c
+++ b/tools/tools/locale/tools/getwidths.c
@@ -21,8 +21,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <locale.h>
diff --git a/tools/tools/locale/tools/mkwidths.pl b/tools/tools/locale/tools/mkwidths.pl
index 54cfdb59fe99..ad079196dbf2 100755
--- a/tools/tools/locale/tools/mkwidths.pl
+++ b/tools/tools/locale/tools/mkwidths.pl
@@ -1,6 +1,6 @@
#!/usr/local/bin/perl -w
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright 2009 Edwin Groothuis <edwin@FreeBSD.org>
# Copyright 2015 John Marino <draco@marino.st>
@@ -27,7 +27,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
use strict;
use Encode qw(encode decode);
diff --git a/tools/tools/locale/tools/utf8-rollup.pl b/tools/tools/locale/tools/utf8-rollup.pl
index b275828d52c9..8c4e80eb7c47 100755
--- a/tools/tools/locale/tools/utf8-rollup.pl
+++ b/tools/tools/locale/tools/utf8-rollup.pl
@@ -1,6 +1,6 @@
#!/usr/local/bin/perl -wC
-# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright 2009 Edwin Groothuis <edwin@FreeBSD.org>
# Copyright 2015 John Marino <draco@marino.st>
@@ -26,7 +26,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
use strict;
use Getopt::Long;
diff --git a/tools/tools/makeroot/Makefile b/tools/tools/makeroot/Makefile
index ebf81aee8340..218d77cf5211 100644
--- a/tools/tools/makeroot/Makefile
+++ b/tools/tools/makeroot/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SCRIPTS= makeroot.sh
MAN= makeroot.8
diff --git a/tools/tools/makeroot/Makefile.depend b/tools/tools/makeroot/Makefile.depend
index f80275d86ab1..11aba52f82cf 100644
--- a/tools/tools/makeroot/Makefile.depend
+++ b/tools/tools/makeroot/Makefile.depend
@@ -1,4 +1,3 @@
-# $FreeBSD$
# Autogenerated - do NOT edit!
DIRDEPS = \
diff --git a/tools/tools/makeroot/makeroot.8 b/tools/tools/makeroot/makeroot.8
index 0ba3fdcad05c..d3556d2c5722 100644
--- a/tools/tools/makeroot/makeroot.8
+++ b/tools/tools/makeroot/makeroot.8
@@ -26,8 +26,6 @@
.\" 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.
-.\"
-.\" $FreeBSD$
.Dd May 20, 2013
.Dt MAKEROOT 8
.Os
diff --git a/tools/tools/makeroot/makeroot.sh b/tools/tools/makeroot/makeroot.sh
index a1b450e1d836..165453cfa254 100755
--- a/tools/tools/makeroot/makeroot.sh
+++ b/tools/tools/makeroot/makeroot.sh
@@ -29,7 +29,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
usage()
{
diff --git a/tools/tools/man/README b/tools/tools/man/README
index b0fd24cf1236..b928a8f9578c 100644
--- a/tools/tools/man/README
+++ b/tools/tools/man/README
@@ -19,5 +19,3 @@ was sourced from.
There are a number of exceptions, and those should be added to the
script to skip over, e.g. `SDT_PROBE`. The last one is added because
adding the numbered args is a bit redundant.
-
-$FreeBSD$
diff --git a/tools/tools/man/checkmlinks.sh b/tools/tools/man/checkmlinks.sh
index 21ebf6ac218a..4ca1baea9820 100755
--- a/tools/tools/man/checkmlinks.sh
+++ b/tools/tools/man/checkmlinks.sh
@@ -23,7 +23,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
for i in *.[0-9]*; do
diff --git a/tools/tools/mcgrab/Makefile b/tools/tools/mcgrab/Makefile
index a470227a4a72..460c8beded1e 100644
--- a/tools/tools/mcgrab/Makefile
+++ b/tools/tools/mcgrab/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG_CXX= mcgrab
CFLAGS+= -I${.CURDIR}/../mctest
diff --git a/tools/tools/mcgrab/mcgrab.1 b/tools/tools/mcgrab/mcgrab.1
index 2c6bfa608d56..9bbdff4f85bf 100644
--- a/tools/tools/mcgrab/mcgrab.1
+++ b/tools/tools/mcgrab/mcgrab.1
@@ -22,8 +22,6 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD$
-.\"
.Dd July 9, 2008
.Dt MCGRAB 1
.Os
diff --git a/tools/tools/mcgrab/mcgrab.cc b/tools/tools/mcgrab/mcgrab.cc
index 35687b8d42ce..4b34103869ab 100644
--- a/tools/tools/mcgrab/mcgrab.cc
+++ b/tools/tools/mcgrab/mcgrab.cc
@@ -30,8 +30,6 @@
//
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
// C++ STL and other related includes
#include <stdlib.h>
#include <limits.h>
diff --git a/tools/tools/mctest/Makefile b/tools/tools/mctest/Makefile
index dc583e55a222..6ffc0bedbfc9 100644
--- a/tools/tools/mctest/Makefile
+++ b/tools/tools/mctest/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG_CXX= mctest
LIBADD= pthread
diff --git a/tools/tools/mctest/mctest.1 b/tools/tools/mctest/mctest.1
index 3cec879d4ba6..8c1fd6701e91 100644
--- a/tools/tools/mctest/mctest.1
+++ b/tools/tools/mctest/mctest.1
@@ -22,8 +22,6 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD$
-.\"
.Dd April 3, 2008
.Dt MCTEST 1
.Os
diff --git a/tools/tools/mctest/mctest.cc b/tools/tools/mctest/mctest.cc
index 6d723ba137f2..b6fdf62ed7bf 100644
--- a/tools/tools/mctest/mctest.cc
+++ b/tools/tools/mctest/mctest.cc
@@ -33,8 +33,6 @@
//
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
// C++ STL and other related includes
#include <iostream>
#include <string>
diff --git a/tools/tools/mctest/mctest.h b/tools/tools/mctest/mctest.h
index 955464c8795a..019b8b5efef7 100644
--- a/tools/tools/mctest/mctest.h
+++ b/tools/tools/mctest/mctest.h
@@ -24,7 +24,6 @@
// SUCH DAMAGE.
//
//
-// $FreeBSD$
//
const char* DEFAULT_GROUP = "239.255.255.1";
diff --git a/tools/tools/mctest/mctest_run.sh b/tools/tools/mctest/mctest_run.sh
index 0b405231fefc..8dfc5afadd42 100644
--- a/tools/tools/mctest/mctest_run.sh
+++ b/tools/tools/mctest/mctest_run.sh
@@ -2,7 +2,6 @@
#
# A program to act as a test harness for the mctest program
#
-# $FreeBSD$
#
# Defaults
size=1024
diff --git a/tools/tools/mfi/Makefile b/tools/tools/mfi/Makefile
index da8bc1b0fb96..84e11395e766 100644
--- a/tools/tools/mfi/Makefile
+++ b/tools/tools/mfi/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= mfi_checkq
MAN=
diff --git a/tools/tools/mfi/mfi_checkq.c b/tools/tools/mfi/mfi_checkq.c
index 9f860ad92d22..05d0e97e21d6 100644
--- a/tools/tools/mfi/mfi_checkq.c
+++ b/tools/tools/mfi/mfi_checkq.c
@@ -23,9 +23,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/fcntl.h>
#include <sys/ioctl.h>
diff --git a/tools/tools/mfi/runmegacli.sh b/tools/tools/mfi/runmegacli.sh
index cf1f93864619..b293622f45df 100644
--- a/tools/tools/mfi/runmegacli.sh
+++ b/tools/tools/mfi/runmegacli.sh
@@ -1,6 +1,4 @@
#!/bin/sh
-
-# $FreeBSD$
# This is a simple wrapper for running the MegaCLI tool for Linux. It assumes
# that the MegaCLI binary has been installed in /compat/linux/usr/sbin/MegaCli.
# The binary must also have been branded appropriately, and the COMPAT_LINUX,
diff --git a/tools/tools/mid/mid-build b/tools/tools/mid/mid-build
deleted file mode 100755
index 0a2d4480a5a8..000000000000
--- a/tools/tools/mid/mid-build
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) March 1998 Wolfram Schneider <wosch@FreeBSD.org>
-#
-# create a Message-ID, In-Reply-To look(1) index database
-#
-# $FreeBSD$
-
-
-TMPDIR=/var/tmp; export TMPDIR
-home=/g/www/mid
-
-dbout=$home/index
-archive=$home/archive
-
-PATH=$home/bin:/bin:/usr/bin:/usr/local/bin; export PATH
-
-
-all ()
-{
- ( cd $archive || exit 1
- find text/* -type f | mid-master-index 4 mid-index $dbout/mid
- )
-}
-
-current ()
-{
- ( cd $archive || exit 1
- find current/freebsd-* current/cvs-* -type f |
- mid-master-index 1 mid-index $dbout/mid-current
- )
-}
-
-if [ $# -le 0 ]; then
- echo "usage mid-build {current|all}"
- exit 1
-fi
-
-for db
-do
- case $db in
- current) current;;
- all) all;;
- *) echo "Huh? $db";;
- esac
-done
diff --git a/tools/tools/mid/mid-index b/tools/tools/mid/mid-index
deleted file mode 100755
index a5ec10b78f3b..000000000000
--- a/tools/tools/mid/mid-index
+++ /dev/null
@@ -1,83 +0,0 @@
-#!/usr/local/bin/perl
-#
-# create message-id / in-reply-to database
-#
-# $FreeBSD$
-
-sub usage { die "usage: mid-index name < filelist"; }
-
-sub id {
- local($name, @files) = @_;
- local($bytes, $bytes2, $headlen, $file);
- local($counter);
- local($from,$from2);
-
- $counter = 0;
- open(MID, "| sort -u -o $name.mid") || die "open sort > $name.mid: $!\n";
- open(IRT, "| sort -u -o $name.irt") || die "open sort > $name.irt: $!\n";
-
- while(<>) {
- local($/) = "\n\n";
- chop;
- $file = $_;
-
- open(R, $file) || do {
- warn "open $file:$!\n";
- next;
- };
- $bytes = 0;
-
- while(<R>) {
- $headlen = length($_);
- $from2 = substr($_, 0, 6);
- $from = substr($from2, 0, 5);
-
- # warn "xxx" . $from . "yyy\n";
- if ($from eq "From " || $from2 eq "\nFrom ") {
-
- if ($from eq "From ") {
- $bytes2 = $bytes;
- } else {
- # One bytes more for "\nFrom "
- $bytes2 = $bytes + 1;
- }
-
- $counter++;
- s/\n[ \t]+/ /g;
- if ($debug && $counter % $speedstep == 0) {
- print STDERR sprintf("\r%7d", $counter);
- }
-
- foreach (split("\n")) {
- if (/^Message-id:\s+\<([^$idsep]+)/oi) {
- print MID "$1 $file $bytes2\n";
- } elsif (/^Resent-Message-id:\s+\<([^$idsep]+)/oi) {
- print MID "$1 $file $bytes2\n";
- } elsif (/^References:\s+\<([^$idsep]+)/oi) {
- print IRT "$1 $file $bytes2\n";
- } elsif (/^In-Reply-to:\s+[^<]*\<([^$idsep]+)/oi) {
- print IRT "$1 $file $bytes2\n";
- }
- }
- }
- $bytes += $headlen;
- }
- close R;
- }
- close MID || warn "close: MID\n";
- close IRT || warn "close: IRT\n";
- print STDERR sprintf("\r%7d", $counter)
- if $debug && $counter % $speedstep != 0;
- print STDERR "\n" if $debug;
-}
-
-$idsep = '>';
-$idsep = '>@\s';
-$debug = 0;
-$speedstep = 100;
-
-&usage if $#ARGV != 0;
-$name = $ARGV[0]; shift @ARGV;
-&id($name);
-
-
diff --git a/tools/tools/mid/mid-master b/tools/tools/mid/mid-master
deleted file mode 100755
index 5ee531a11ab7..000000000000
--- a/tools/tools/mid/mid-master
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/local/bin/perl
-
-if ($#ARGV < 1) {
- die "usage master counter command comandargs ... \n";
-}
-
-$count = $ARGV[0]; shift @ARGV;
-@command = @ARGV;
-$file = pop(@command);
-undef @ARGV;
-$debug = 0;
-
-for($i = 0; $i < $count; $i ++) {
- @c = (@command, "$file.$i");
- warn "Start process: $i @c\n" if $debug;
- open("OUT$i", "| @c") || die "open @c\n";
- select("OUT$i"); $| = 1;
-}
-select(STDOUT);
-
-$n = 0;
-while(<>) {
- $o = 'OUT' . ($n % $count);
- print $o $_;
- warn "$o $_" if $debug;
- $n++
-}
-
-for($i = 0; $i < $count; $i ++) {
- warn "Close process $i\n" if $debug;
- close("OUT$i") || warn "close OUT$i: $!\n";
-}
-
diff --git a/tools/tools/mid/mid-master-index b/tools/tools/mid/mid-master-index
deleted file mode 100755
index 8b32acd66a2b..000000000000
--- a/tools/tools/mid/mid-master-index
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-if [ $# -le 2 ]; then
- echo "usage $0 parallel_processes command [comand_options]"
- exit 1
-fi
-
-count=$1; shift
-command=$1; shift
-file=$1; shift
-filelistmid=`perl -e "for(0 .. $count -1) {print qq{$file.temp.\\$_.mid }}"`
-filelistirt=`perl -e "for(0 .. $count -1) {print qq{$file.temp.\\$_.irt }}"`
-
-if mid-master $count $command $file.temp; then
- sort -u -m -o $file.temp.mid $filelistmid &&
- rm -f $filelistmid && mv $file.temp.mid $file.mid || exit 1
- sort -u -m -o $file.temp.irt $filelistirt &&
- rm -f $filelistirt && mv $file.temp.irt $file.irt || exit 1
-else
- exit 1
-fi
diff --git a/tools/tools/mtxstat/mtxratio.sh b/tools/tools/mtxstat/mtxratio.sh
index 02a66a94a246..5dc4a0ad15e5 100644
--- a/tools/tools/mtxstat/mtxratio.sh
+++ b/tools/tools/mtxstat/mtxratio.sh
@@ -1,2 +1 @@
-# $FreeBSD$
sysctl debug.mutex.prof.stats | awk '$1 ~ /[0-9]+/ { if ($3 != 0) { hld_prc = $5 / $3 * 100; lck_prc = $6 / $3 * 100 } else { hld_prc = 0; lck_prc = 0 } print $1 " " $2 " " $3 " " $4 " " $5 " " hld_prc " " $6 " " lck_prc " " substr($0, index($0, $7)); next } { print }'
diff --git a/tools/tools/mtxstat/mtxstat.pl b/tools/tools/mtxstat/mtxstat.pl
index c621389dd24d..eaf95cf1df54 100644
--- a/tools/tools/mtxstat/mtxstat.pl
+++ b/tools/tools/mtxstat/mtxstat.pl
@@ -1,6 +1,6 @@
#!/usr/bin/perl -Tw
#-
-# Copyright (c) 2002 Dag-Erling Coïdan Smørgrav
+# Copyright (c) 2002 Dag-Erling Smørgrav
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -26,7 +26,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-# $FreeBSD$
#
use strict;
diff --git a/tools/tools/mwl/Makefile b/tools/tools/mwl/Makefile
index 64161c3897cc..f3a00af70d81 100644
--- a/tools/tools/mwl/Makefile
+++ b/tools/tools/mwl/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SUBDIR= mwlstats mwldebug
diff --git a/tools/tools/mwl/mwldebug/Makefile b/tools/tools/mwl/mwldebug/Makefile
index 62514d7fd11e..cbbfdeb73617 100644
--- a/tools/tools/mwl/mwldebug/Makefile
+++ b/tools/tools/mwl/mwldebug/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= mwldebug
BINDIR= /usr/local/bin
diff --git a/tools/tools/mwl/mwldebug/mwldebug.c b/tools/tools/mwl/mwldebug/mwldebug.c
index 4080053534ca..12885c2f5c2f 100644
--- a/tools/tools/mwl/mwldebug/mwldebug.c
+++ b/tools/tools/mwl/mwldebug/mwldebug.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/tools/mwl/mwlstats/Makefile b/tools/tools/mwl/mwlstats/Makefile
index 69382b8f820a..af1833f9ea11 100644
--- a/tools/tools/mwl/mwlstats/Makefile
+++ b/tools/tools/mwl/mwlstats/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= mwlstats
BINDIR= /usr/local/bin
diff --git a/tools/tools/mwl/mwlstats/main.c b/tools/tools/mwl/mwlstats/main.c
index 025c410f5723..04e3547e5a16 100644
--- a/tools/tools/mwl/mwlstats/main.c
+++ b/tools/tools/mwl/mwlstats/main.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/tools/mwl/mwlstats/mwlstats.c b/tools/tools/mwl/mwlstats/mwlstats.c
index 00d0c75a2376..925ed62de716 100644
--- a/tools/tools/mwl/mwlstats/mwlstats.c
+++ b/tools/tools/mwl/mwlstats/mwlstats.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/tools/mwl/mwlstats/mwlstats.h b/tools/tools/mwl/mwlstats/mwlstats.h
index 7d8902e5f14e..d2201d4339de 100644
--- a/tools/tools/mwl/mwlstats/mwlstats.h
+++ b/tools/tools/mwl/mwlstats/mwlstats.h
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#ifndef _MWLSTATS_H_
diff --git a/tools/tools/nanobsd/Files/root/change_password b/tools/tools/nanobsd/Files/root/change_password
index daf4c8ca0e83..38a57100d735 100644
--- a/tools/tools/nanobsd/Files/root/change_password
+++ b/tools/tools/nanobsd/Files/root/change_password
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
set -e
diff --git a/tools/tools/nanobsd/Files/root/save_cfg b/tools/tools/nanobsd/Files/root/save_cfg
index c2611a27b971..1931e5c79923 100644
--- a/tools/tools/nanobsd/Files/root/save_cfg
+++ b/tools/tools/nanobsd/Files/root/save_cfg
@@ -25,7 +25,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
set -e
diff --git a/tools/tools/nanobsd/Files/root/save_sshkeys b/tools/tools/nanobsd/Files/root/save_sshkeys
index 03fccf4ac0a2..7d6ec0674800 100644
--- a/tools/tools/nanobsd/Files/root/save_sshkeys
+++ b/tools/tools/nanobsd/Files/root/save_sshkeys
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
set -e
diff --git a/tools/tools/nanobsd/Files/root/update b/tools/tools/nanobsd/Files/root/update
index 245479bd27e9..d495452d627e 100644
--- a/tools/tools/nanobsd/Files/root/update
+++ b/tools/tools/nanobsd/Files/root/update
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
# Script to update a NanoBSD system.
#
diff --git a/tools/tools/nanobsd/Files/root/updatep1 b/tools/tools/nanobsd/Files/root/updatep1
index 6b83de530a50..0ae9b7c857cc 100644
--- a/tools/tools/nanobsd/Files/root/updatep1
+++ b/tools/tools/nanobsd/Files/root/updatep1
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
# Script to update partition 1 on a NanoBSD system.
#
diff --git a/tools/tools/nanobsd/Files/root/updatep2 b/tools/tools/nanobsd/Files/root/updatep2
index fc5312be0c46..99d29637f904 100644
--- a/tools/tools/nanobsd/Files/root/updatep2
+++ b/tools/tools/nanobsd/Files/root/updatep2
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
# Script to update partition 2 on a NanoBSD system.
#
diff --git a/tools/tools/nanobsd/FlashDevice.sub b/tools/tools/nanobsd/FlashDevice.sub
index 90b3f6db3645..e2a3caecc810 100644
--- a/tools/tools/nanobsd/FlashDevice.sub
+++ b/tools/tools/nanobsd/FlashDevice.sub
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
# Convenience function for commonly used Flash devices.
#
diff --git a/tools/tools/nanobsd/defaults.sh b/tools/tools/nanobsd/defaults.sh
index 45d9fe44c650..165c967de807 100755
--- a/tools/tools/nanobsd/defaults.sh
+++ b/tools/tools/nanobsd/defaults.sh
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
set -e
@@ -426,7 +425,7 @@ install_kernel ( ) (
)
native_xtools ( ) (
- print 2 "Installing the optimized native build tools for cross env"
+ pprint 2 "Installing the optimized native build tools for cross env"
pprint 3 "log: ${NANO_LOG}/_.native_xtools"
(
@@ -885,7 +884,7 @@ export_var ( ) { # Don't wawnt a subshell
# Call this function to set defaults _after_ parsing options.
# dont want a subshell otherwise variable setting is thrown away.
set_defaults_and_export ( ) {
- : ${NANO_OBJ:=/usr/obj/nanobsd.${NANO_NAME}}
+ : ${NANO_OBJ:=/usr/obj/nanobsd.${NANO_NAME}${NANO_LAYOUT:+.${NANO_LAYOUT}}}
: ${MAKEOBJDIRPREFIX:=${NANO_OBJ}}
: ${NANO_DISKIMGDIR:=${NANO_OBJ}}
: ${NANO_WORLDDIR:=${NANO_OBJ}/_.w}
diff --git a/tools/tools/nanobsd/dhcpd/README b/tools/tools/nanobsd/dhcpd/README
index 35bc66e21d4f..5bc9d77f8f00 100644
--- a/tools/tools/nanobsd/dhcpd/README
+++ b/tools/tools/nanobsd/dhcpd/README
@@ -1,4 +1,3 @@
-$FreeBSD$
Example for creating many different builds (including different
arch) from a common set of files, as well as building natively
diff --git a/tools/tools/nanobsd/dhcpd/common b/tools/tools/nanobsd/dhcpd/common
index 07b3f3963d0b..f24a88aab8f3 100644
--- a/tools/tools/nanobsd/dhcpd/common
+++ b/tools/tools/nanobsd/dhcpd/common
@@ -1,4 +1,3 @@
-# $FreeBSD$
#-
# Copyright (c) 2014 M. Warner Losh <imp@FreeBSD.org>
@@ -98,10 +97,8 @@ NANO_MAKEFS="makefs -B big \
-o bsize=4096,fsize=512,density=8192,optimization=space"
export NANO_MAKEFS
-# NB: leave c++ enabled so devd can be built
CONF_BUILD="
WITHOUT_ACPI=true
-WITHOUT_ATM=true
WITHOUT_AUDIT=true
WITHOUT_BLUETOOTH=true
WITHOUT_CALENDAR=true
diff --git a/tools/tools/nanobsd/dhcpd/os-base b/tools/tools/nanobsd/dhcpd/os-base
index 4a4d0c4b8553..d57f56ce7bb7 100644
--- a/tools/tools/nanobsd/dhcpd/os-base
+++ b/tools/tools/nanobsd/dhcpd/os-base
@@ -1,4 +1,3 @@
-# $FreeBSD$
#-
# Copyright (c) 2014 M. Warner Losh <imp@FreeBSD.org>
diff --git a/tools/tools/nanobsd/embedded/README b/tools/tools/nanobsd/embedded/README
index b77d3302d861..7da368bff1a0 100644
--- a/tools/tools/nanobsd/embedded/README
+++ b/tools/tools/nanobsd/embedded/README
@@ -1,4 +1,3 @@
-$FreeBSD$
Example for creating many different builds (including different
arch) from a common set of files, as well as building natively
@@ -23,10 +22,6 @@ Config Short description
beaglebone.cfg Create a bootable beaglebone image
qemu-amd64.cfg Create a bootable amd64 image for qemu (W)
qemu-i386.cfg Create a bootable i386 image for qemu (W)
-qemu-mips.cfg Create a bootable mips malta board image for
- qemu
-qemu-mips64.cfg Create a bootable mips malta board (64-bit
- mode) image for qemu
qemu-powerpc.cfg Create a bootable 32-bit powerpc image for
qemu
qemu-powerpc64.cfg Create a bootable 64-bit IBM-flavor image for
diff --git a/tools/tools/nanobsd/embedded/beaglebone.cfg b/tools/tools/nanobsd/embedded/beaglebone.cfg
index 03f5f8ac2900..0d718cbf9665 100644
--- a/tools/tools/nanobsd/embedded/beaglebone.cfg
+++ b/tools/tools/nanobsd/embedded/beaglebone.cfg
@@ -1,4 +1,3 @@
-# $FreeBSD$
#-
# Copyright (c) 2015 M. Warner Losh <imp@FreeBSD.org>
diff --git a/tools/tools/nanobsd/embedded/common b/tools/tools/nanobsd/embedded/common
index 3b8faff5e252..17caef798af2 100644
--- a/tools/tools/nanobsd/embedded/common
+++ b/tools/tools/nanobsd/embedded/common
@@ -1,4 +1,3 @@
-# $FreeBSD$
#-
# Copyright (c) 2015 M. Warner Losh <imp@FreeBSD.org>
@@ -128,11 +127,9 @@ cust_install_machine_files ( ) (
customize_cmd cust_install_files
customize_cmd cust_install_machine_files
-# NB: leave c++ enabled so devd can be built
CONF_BUILD="
LOCAL_XTOOL_DIRS=usr.bin/mkimg
WITHOUT_ACPI=true
-WITHOUT_ATM=true
WITHOUT_AUDIT=true
WITHOUT_BLUETOOTH=true
WITHOUT_CALENDAR=true
@@ -217,7 +214,7 @@ create_diskimage_mbr ( ) (
if [ -d ${NANO_FAT_DIR} ]; then
# Need to copy files from ${NANO_FATDIR} with mtools, or use
# makefs -t msdos once that's supported
- mcopy -i ${NANO_LOG}/_.${NANO_SLICE_FAT} ${NANO_FAT_DIR}/* ::
+ mcopy -s -i ${NANO_LOG}/_.${NANO_SLICE_FAT} ${NANO_FAT_DIR}/* ::
fi
fi
@@ -452,11 +449,6 @@ dos_boot_part ( ) (
chdir $f
cp ${d}/* .
- # Also copy ubldr. u-boot will load it and it will load the kernel
- # from the ufs partition
- cp ${NANO_WORLDDIR}/boot/ubldr .
- cp ${NANO_WORLDDIR}/boot/ubldr.bin .
-
# We have to touch the saveenv file
touch uEnv.txt
@@ -529,20 +521,6 @@ std_i386 ( ) {
: ${NANO_BOOT_BSD:=${NANO_WORLDDIR}/boot/boot}
}
-std_mips ( ) {
- NANO_ENDIAN=big
-}
-
-std_mipsel ( ) {
-}
-
-std_mips64 ( ) {
- NANO_ENDIAN=big
-}
-
-std_mips64el ( ) {
-}
-
std_powerpc ( ) {
NANO_ENDIAN=big
}
@@ -552,10 +530,6 @@ std_powerpc64 ( ) {
NANO_ENDIAN=big
}
-std_sparc64 ( ) {
- NANO_ENDIAN=big
-}
-
#
# QEMU settings for the standard environments
#
diff --git a/tools/tools/nanobsd/embedded/i386.cfg b/tools/tools/nanobsd/embedded/i386.cfg
index 876cb105b116..f9809df910eb 100644
--- a/tools/tools/nanobsd/embedded/i386.cfg
+++ b/tools/tools/nanobsd/embedded/i386.cfg
@@ -1,4 +1,3 @@
-# $FreeBSD$
#-
# Copyright (c) 2015 M. Warner Losh <imp@FreeBSD.org>
diff --git a/tools/tools/nanobsd/embedded/pandaboard.cfg b/tools/tools/nanobsd/embedded/pandaboard.cfg
index 887df4f5b752..629d3298a27e 100644
--- a/tools/tools/nanobsd/embedded/pandaboard.cfg
+++ b/tools/tools/nanobsd/embedded/pandaboard.cfg
@@ -1,4 +1,3 @@
-# $FreeBSD$
#-
# Copyright (c) 2016 M. Warner Losh <imp@FreeBSD.org>
diff --git a/tools/tools/nanobsd/embedded/qemu-amd64-uefi-bios.cfg b/tools/tools/nanobsd/embedded/qemu-amd64-uefi-bios.cfg
index 98d8a49f097c..d8ae753c865f 100644
--- a/tools/tools/nanobsd/embedded/qemu-amd64-uefi-bios.cfg
+++ b/tools/tools/nanobsd/embedded/qemu-amd64-uefi-bios.cfg
@@ -1,4 +1,3 @@
-# $FreeBSD$
#-
# Copyright (c) 2015 M. Warner Losh <imp@FreeBSD.org>
diff --git a/tools/tools/nanobsd/embedded/qemu-amd64-uefi.cfg b/tools/tools/nanobsd/embedded/qemu-amd64-uefi.cfg
index d46b3fef0bda..e6c2f5e8a564 100644
--- a/tools/tools/nanobsd/embedded/qemu-amd64-uefi.cfg
+++ b/tools/tools/nanobsd/embedded/qemu-amd64-uefi.cfg
@@ -1,4 +1,3 @@
-# $FreeBSD$
#-
# Copyright (c) 2015 M. Warner Losh <imp@FreeBSD.org>
diff --git a/tools/tools/nanobsd/embedded/qemu-amd64.cfg b/tools/tools/nanobsd/embedded/qemu-amd64.cfg
index 98b9ef47cad0..4c58b6c875da 100644
--- a/tools/tools/nanobsd/embedded/qemu-amd64.cfg
+++ b/tools/tools/nanobsd/embedded/qemu-amd64.cfg
@@ -1,4 +1,3 @@
-# $FreeBSD$
#-
# Copyright (c) 2015 M. Warner Losh <imp@FreeBSD.org>
diff --git a/tools/tools/nanobsd/embedded/qemu-armv7.cfg b/tools/tools/nanobsd/embedded/qemu-armv7.cfg
index 2bf3f48114d5..aef813164d78 100644
--- a/tools/tools/nanobsd/embedded/qemu-armv7.cfg
+++ b/tools/tools/nanobsd/embedded/qemu-armv7.cfg
@@ -1,4 +1,3 @@
-# $FreeBSD$
#-
# Copyright (c) 2016 Andrew Turner. All Rights Reserved.
diff --git a/tools/tools/nanobsd/embedded/qemu-i386.cfg b/tools/tools/nanobsd/embedded/qemu-i386.cfg
index 63310a073dc1..1a709430dbd9 100644
--- a/tools/tools/nanobsd/embedded/qemu-i386.cfg
+++ b/tools/tools/nanobsd/embedded/qemu-i386.cfg
@@ -1,4 +1,3 @@
-# $FreeBSD$
#-
# Copyright (c) 2015 M. Warner Losh <imp@FreeBSD.org>
diff --git a/tools/tools/nanobsd/embedded/qemu-powerpc.cfg b/tools/tools/nanobsd/embedded/qemu-powerpc.cfg
index 2bde6e6dcec7..4a3a87ae9bba 100644
--- a/tools/tools/nanobsd/embedded/qemu-powerpc.cfg
+++ b/tools/tools/nanobsd/embedded/qemu-powerpc.cfg
@@ -1,4 +1,3 @@
-# $FreeBSD$
#-
# Copyright (c) 2015 M. Warner Losh <imp@FreeBSD.org>
diff --git a/tools/tools/nanobsd/embedded/qemu-powerpc64.cfg b/tools/tools/nanobsd/embedded/qemu-powerpc64.cfg
index e16cefdb7434..a088f46b24b4 100644
--- a/tools/tools/nanobsd/embedded/qemu-powerpc64.cfg
+++ b/tools/tools/nanobsd/embedded/qemu-powerpc64.cfg
@@ -1,4 +1,3 @@
-# $FreeBSD$
#-
# Copyright (c) 2015 M. Warner Losh <imp@FreeBSD.org>
diff --git a/tools/tools/nanobsd/embedded/rpi.cfg b/tools/tools/nanobsd/embedded/rpi.cfg
index bf367ed26201..54d2b559290b 100644
--- a/tools/tools/nanobsd/embedded/rpi.cfg
+++ b/tools/tools/nanobsd/embedded/rpi.cfg
@@ -1,4 +1,3 @@
-# $FreeBSD$
#-
# Copyright (c) 2015 M. Warner Losh <imp@FreeBSD.org>
diff --git a/tools/tools/nanobsd/embedded/rpi2.cfg b/tools/tools/nanobsd/embedded/rpi2.cfg
index 2776aec18771..aee5b4990a9a 100644
--- a/tools/tools/nanobsd/embedded/rpi2.cfg
+++ b/tools/tools/nanobsd/embedded/rpi2.cfg
@@ -1,4 +1,3 @@
-# $FreeBSD$
#-
# Copyright (c) 2015 M. Warner Losh <imp@FreeBSD.org>
diff --git a/tools/tools/nanobsd/embedded/rpi3.cfg b/tools/tools/nanobsd/embedded/rpi3.cfg
index f3804c739b14..52573a1d2741 100644
--- a/tools/tools/nanobsd/embedded/rpi3.cfg
+++ b/tools/tools/nanobsd/embedded/rpi3.cfg
@@ -1,4 +1,3 @@
-# $FreeBSD$
#-
# Copyright (c) 2015 M. Warner Losh <imp@FreeBSD.org>
diff --git a/tools/tools/nanobsd/fill_pkg.sh b/tools/tools/nanobsd/fill_pkg.sh
index 80f61429ee8f..2869122c5fbf 100644
--- a/tools/tools/nanobsd/fill_pkg.sh
+++ b/tools/tools/nanobsd/fill_pkg.sh
@@ -25,7 +25,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
# Usage:
# $0 PACKAGE_DUMP NANO_PACKAGE_DIR /usr/ports/foo/bar [package.txz]...
diff --git a/tools/tools/nanobsd/legacy.sh b/tools/tools/nanobsd/legacy.sh
index 0a966c8c127e..58288d063b4a 100644
--- a/tools/tools/nanobsd/legacy.sh
+++ b/tools/tools/nanobsd/legacy.sh
@@ -25,7 +25,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
# Media geometry, only relevant if bios doesn't understand LBA.
diff --git a/tools/tools/nanobsd/mtree-dedup.awk b/tools/tools/nanobsd/mtree-dedup.awk
index 002a51f3fab0..e30f3100b4da 100755
--- a/tools/tools/nanobsd/mtree-dedup.awk
+++ b/tools/tools/nanobsd/mtree-dedup.awk
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/tools/nanobsd/nanobsd.sh b/tools/tools/nanobsd/nanobsd.sh
index c5c680025fc7..af03d89acece 100755
--- a/tools/tools/nanobsd/nanobsd.sh
+++ b/tools/tools/nanobsd/nanobsd.sh
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
set -e
diff --git a/tools/tools/nanobsd/pcengines/ALIX_DSK b/tools/tools/nanobsd/pcengines/ALIX_DSK
index f82bbfbd85d8..9ab9d79c574c 100644
--- a/tools/tools/nanobsd/pcengines/ALIX_DSK
+++ b/tools/tools/nanobsd/pcengines/ALIX_DSK
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
cpu I586_CPU
diff --git a/tools/tools/nanobsd/pcengines/ALIX_NFS b/tools/tools/nanobsd/pcengines/ALIX_NFS
index ca7f57ba22d0..4d1fbc768e05 100644
--- a/tools/tools/nanobsd/pcengines/ALIX_NFS
+++ b/tools/tools/nanobsd/pcengines/ALIX_NFS
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
include ALIX_DSK
diff --git a/tools/tools/nanobsd/pcengines/Files/etc/rc.conf b/tools/tools/nanobsd/pcengines/Files/etc/rc.conf
index 4db828e4e552..93fd47044afa 100644
--- a/tools/tools/nanobsd/pcengines/Files/etc/rc.conf
+++ b/tools/tools/nanobsd/pcengines/Files/etc/rc.conf
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
hostname="alix"
diff --git a/tools/tools/nanobsd/pcengines/Files/etc/ttys b/tools/tools/nanobsd/pcengines/Files/etc/ttys
index 7d28bad02ee3..7158696e7c3d 100644
--- a/tools/tools/nanobsd/pcengines/Files/etc/ttys
+++ b/tools/tools/nanobsd/pcengines/Files/etc/ttys
@@ -1,7 +1,3 @@
-#
-# $FreeBSD$
-# @(#)ttys 5.1 (Berkeley) 4/17/89
-#
# This file specifies various information about terminals on the system.
# It is used by several different programs. Common entries for the
# various columns include:
@@ -50,516 +46,3 @@ ttyd2 "/usr/libexec/getty std.9600" dialup off secure
ttyd3 "/usr/libexec/getty std.9600" dialup off secure
# Dumb console
dcons "/usr/libexec/getty std.9600" vt100 off secure
-# Pseudo terminals
-ttyp0 none network
-ttyp1 none network
-ttyp2 none network
-ttyp3 none network
-ttyp4 none network
-ttyp5 none network
-ttyp6 none network
-ttyp7 none network
-ttyp8 none network
-ttyp9 none network
-ttypa none network
-ttypb none network
-ttypc none network
-ttypd none network
-ttype none network
-ttypf none network
-ttypg none network
-ttyph none network
-ttypi none network
-ttypj none network
-ttypk none network
-ttypl none network
-ttypm none network
-ttypn none network
-ttypo none network
-ttypp none network
-ttypq none network
-ttypr none network
-ttyps none network
-ttypt none network
-ttypu none network
-ttypv none network
-ttyq0 none network
-ttyq1 none network
-ttyq2 none network
-ttyq3 none network
-ttyq4 none network
-ttyq5 none network
-ttyq6 none network
-ttyq7 none network
-ttyq8 none network
-ttyq9 none network
-ttyqa none network
-ttyqb none network
-ttyqc none network
-ttyqd none network
-ttyqe none network
-ttyqf none network
-ttyqg none network
-ttyqh none network
-ttyqi none network
-ttyqj none network
-ttyqk none network
-ttyql none network
-ttyqm none network
-ttyqn none network
-ttyqo none network
-ttyqp none network
-ttyqq none network
-ttyqr none network
-ttyqs none network
-ttyqt none network
-ttyqu none network
-ttyqv none network
-ttyr0 none network
-ttyr1 none network
-ttyr2 none network
-ttyr3 none network
-ttyr4 none network
-ttyr5 none network
-ttyr6 none network
-ttyr7 none network
-ttyr8 none network
-ttyr9 none network
-ttyra none network
-ttyrb none network
-ttyrc none network
-ttyrd none network
-ttyre none network
-ttyrf none network
-ttyrg none network
-ttyrh none network
-ttyri none network
-ttyrj none network
-ttyrk none network
-ttyrl none network
-ttyrm none network
-ttyrn none network
-ttyro none network
-ttyrp none network
-ttyrq none network
-ttyrr none network
-ttyrs none network
-ttyrt none network
-ttyru none network
-ttyrv none network
-ttys0 none network
-ttys1 none network
-ttys2 none network
-ttys3 none network
-ttys4 none network
-ttys5 none network
-ttys6 none network
-ttys7 none network
-ttys8 none network
-ttys9 none network
-ttysa none network
-ttysb none network
-ttysc none network
-ttysd none network
-ttyse none network
-ttysf none network
-ttysg none network
-ttysh none network
-ttysi none network
-ttysj none network
-ttysk none network
-ttysl none network
-ttysm none network
-ttysn none network
-ttyso none network
-ttysp none network
-ttysq none network
-ttysr none network
-ttyss none network
-ttyst none network
-ttysu none network
-ttysv none network
-ttyP0 none network
-ttyP1 none network
-ttyP2 none network
-ttyP3 none network
-ttyP4 none network
-ttyP5 none network
-ttyP6 none network
-ttyP7 none network
-ttyP8 none network
-ttyP9 none network
-ttyPa none network
-ttyPb none network
-ttyPc none network
-ttyPd none network
-ttyPe none network
-ttyPf none network
-ttyPg none network
-ttyPh none network
-ttyPi none network
-ttyPj none network
-ttyPk none network
-ttyPl none network
-ttyPm none network
-ttyPn none network
-ttyPo none network
-ttyPp none network
-ttyPq none network
-ttyPr none network
-ttyPs none network
-ttyPt none network
-ttyPu none network
-ttyPv none network
-ttyQ0 none network
-ttyQ1 none network
-ttyQ2 none network
-ttyQ3 none network
-ttyQ4 none network
-ttyQ5 none network
-ttyQ6 none network
-ttyQ7 none network
-ttyQ8 none network
-ttyQ9 none network
-ttyQa none network
-ttyQb none network
-ttyQc none network
-ttyQd none network
-ttyQe none network
-ttyQf none network
-ttyQg none network
-ttyQh none network
-ttyQi none network
-ttyQj none network
-ttyQk none network
-ttyQl none network
-ttyQm none network
-ttyQn none network
-ttyQo none network
-ttyQp none network
-ttyQq none network
-ttyQr none network
-ttyQs none network
-ttyQt none network
-ttyQu none network
-ttyQv none network
-ttyR0 none network
-ttyR1 none network
-ttyR2 none network
-ttyR3 none network
-ttyR4 none network
-ttyR5 none network
-ttyR6 none network
-ttyR7 none network
-ttyR8 none network
-ttyR9 none network
-ttyRa none network
-ttyRb none network
-ttyRc none network
-ttyRd none network
-ttyRe none network
-ttyRf none network
-ttyRg none network
-ttyRh none network
-ttyRi none network
-ttyRj none network
-ttyRk none network
-ttyRl none network
-ttyRm none network
-ttyRn none network
-ttyRo none network
-ttyRp none network
-ttyRq none network
-ttyRr none network
-ttyRs none network
-ttyRt none network
-ttyRu none network
-ttyRv none network
-ttyS0 none network
-ttyS1 none network
-ttyS2 none network
-ttyS3 none network
-ttyS4 none network
-ttyS5 none network
-ttyS6 none network
-ttyS7 none network
-ttyS8 none network
-ttyS9 none network
-ttySa none network
-ttySb none network
-ttySc none network
-ttySd none network
-ttySe none network
-ttySf none network
-ttySg none network
-ttySh none network
-ttySi none network
-ttySj none network
-ttySk none network
-ttySl none network
-ttySm none network
-ttySn none network
-ttySo none network
-ttySp none network
-ttySq none network
-ttySr none network
-ttySs none network
-ttySt none network
-ttySu none network
-ttySv none network
-ttyl0 none network
-ttyl1 none network
-ttyl2 none network
-ttyl3 none network
-ttyl4 none network
-ttyl5 none network
-ttyl6 none network
-ttyl7 none network
-ttyl8 none network
-ttyl9 none network
-ttyla none network
-ttylb none network
-ttylc none network
-ttyld none network
-ttyle none network
-ttylf none network
-ttylg none network
-ttylh none network
-ttyli none network
-ttylj none network
-ttylk none network
-ttyll none network
-ttylm none network
-ttyln none network
-ttylo none network
-ttylp none network
-ttylq none network
-ttylr none network
-ttyls none network
-ttylt none network
-ttylu none network
-ttylv none network
-ttym0 none network
-ttym1 none network
-ttym2 none network
-ttym3 none network
-ttym4 none network
-ttym5 none network
-ttym6 none network
-ttym7 none network
-ttym8 none network
-ttym9 none network
-ttyma none network
-ttymb none network
-ttymc none network
-ttymd none network
-ttyme none network
-ttymf none network
-ttymg none network
-ttymh none network
-ttymi none network
-ttymj none network
-ttymk none network
-ttyml none network
-ttymm none network
-ttymn none network
-ttymo none network
-ttymp none network
-ttymq none network
-ttymr none network
-ttyms none network
-ttymt none network
-ttymu none network
-ttymv none network
-ttyn0 none network
-ttyn1 none network
-ttyn2 none network
-ttyn3 none network
-ttyn4 none network
-ttyn5 none network
-ttyn6 none network
-ttyn7 none network
-ttyn8 none network
-ttyn9 none network
-ttyna none network
-ttynb none network
-ttync none network
-ttynd none network
-ttyne none network
-ttynf none network
-ttyng none network
-ttynh none network
-ttyni none network
-ttynj none network
-ttynk none network
-ttynl none network
-ttynm none network
-ttynn none network
-ttyno none network
-ttynp none network
-ttynq none network
-ttynr none network
-ttyns none network
-ttynt none network
-ttynu none network
-ttynv none network
-ttyo0 none network
-ttyo1 none network
-ttyo2 none network
-ttyo3 none network
-ttyo4 none network
-ttyo5 none network
-ttyo6 none network
-ttyo7 none network
-ttyo8 none network
-ttyo9 none network
-ttyoa none network
-ttyob none network
-ttyoc none network
-ttyod none network
-ttyoe none network
-ttyof none network
-ttyog none network
-ttyoh none network
-ttyoi none network
-ttyoj none network
-ttyok none network
-ttyol none network
-ttyom none network
-ttyon none network
-ttyoo none network
-ttyop none network
-ttyoq none network
-ttyor none network
-ttyos none network
-ttyot none network
-ttyou none network
-ttyov none network
-ttyL0 none network
-ttyL1 none network
-ttyL2 none network
-ttyL3 none network
-ttyL4 none network
-ttyL5 none network
-ttyL6 none network
-ttyL7 none network
-ttyL8 none network
-ttyL9 none network
-ttyLa none network
-ttyLb none network
-ttyLc none network
-ttyLd none network
-ttyLe none network
-ttyLf none network
-ttyLg none network
-ttyLh none network
-ttyLi none network
-ttyLj none network
-ttyLk none network
-ttyLl none network
-ttyLm none network
-ttyLn none network
-ttyLo none network
-ttyLp none network
-ttyLq none network
-ttyLr none network
-ttyLs none network
-ttyLt none network
-ttyLu none network
-ttyLv none network
-ttyM0 none network
-ttyM1 none network
-ttyM2 none network
-ttyM3 none network
-ttyM4 none network
-ttyM5 none network
-ttyM6 none network
-ttyM7 none network
-ttyM8 none network
-ttyM9 none network
-ttyMa none network
-ttyMb none network
-ttyMc none network
-ttyMd none network
-ttyMe none network
-ttyMf none network
-ttyMg none network
-ttyMh none network
-ttyMi none network
-ttyMj none network
-ttyMk none network
-ttyMl none network
-ttyMm none network
-ttyMn none network
-ttyMo none network
-ttyMp none network
-ttyMq none network
-ttyMr none network
-ttyMs none network
-ttyMt none network
-ttyMu none network
-ttyMv none network
-ttyN0 none network
-ttyN1 none network
-ttyN2 none network
-ttyN3 none network
-ttyN4 none network
-ttyN5 none network
-ttyN6 none network
-ttyN7 none network
-ttyN8 none network
-ttyN9 none network
-ttyNa none network
-ttyNb none network
-ttyNc none network
-ttyNd none network
-ttyNe none network
-ttyNf none network
-ttyNg none network
-ttyNh none network
-ttyNi none network
-ttyNj none network
-ttyNk none network
-ttyNl none network
-ttyNm none network
-ttyNn none network
-ttyNo none network
-ttyNp none network
-ttyNq none network
-ttyNr none network
-ttyNs none network
-ttyNt none network
-ttyNu none network
-ttyNv none network
-ttyO0 none network
-ttyO1 none network
-ttyO2 none network
-ttyO3 none network
-ttyO4 none network
-ttyO5 none network
-ttyO6 none network
-ttyO7 none network
-ttyO8 none network
-ttyO9 none network
-ttyOa none network
-ttyOb none network
-ttyOc none network
-ttyOd none network
-ttyOe none network
-ttyOf none network
-ttyOg none network
-ttyOh none network
-ttyOi none network
-ttyOj none network
-ttyOk none network
-ttyOl none network
-ttyOm none network
-ttyOn none network
-ttyOo none network
-ttyOp none network
-ttyOq none network
-ttyOr none network
-ttyOs none network
-ttyOt none network
-ttyOu none network
-ttyOv none network
diff --git a/tools/tools/nanobsd/pcengines/Files/root/.cshrc b/tools/tools/nanobsd/pcengines/Files/root/.cshrc
index 9d73f34de277..136ede8a2206 100644
--- a/tools/tools/nanobsd/pcengines/Files/root/.cshrc
+++ b/tools/tools/nanobsd/pcengines/Files/root/.cshrc
@@ -1,4 +1,3 @@
-# $FreeBSD$
#
# .cshrc - csh resource script, read at beginning of execution by each shell
#
diff --git a/tools/tools/nanobsd/pcengines/Files/root/.k5login b/tools/tools/nanobsd/pcengines/Files/root/.k5login
index e01b9417fdbe..5721e640fe21 100644
--- a/tools/tools/nanobsd/pcengines/Files/root/.k5login
+++ b/tools/tools/nanobsd/pcengines/Files/root/.k5login
@@ -1,4 +1,3 @@
-# $FreeBSD$
#
# user1/root@YOUR.REALM.WHEREVER
# user2/root@YOUR.REALM.WHEREVER
diff --git a/tools/tools/nanobsd/pcengines/Files/root/.login b/tools/tools/nanobsd/pcengines/Files/root/.login
index 196a640f28e3..cf63d2bcc90a 100644
--- a/tools/tools/nanobsd/pcengines/Files/root/.login
+++ b/tools/tools/nanobsd/pcengines/Files/root/.login
@@ -1,4 +1,3 @@
-# $FreeBSD$
#
# .login - csh login script, read by login shell, after `.cshrc' at login.
#
diff --git a/tools/tools/nanobsd/pcengines/Files/root/change_password b/tools/tools/nanobsd/pcengines/Files/root/change_password
index daf4c8ca0e83..38a57100d735 100644
--- a/tools/tools/nanobsd/pcengines/Files/root/change_password
+++ b/tools/tools/nanobsd/pcengines/Files/root/change_password
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
set -e
diff --git a/tools/tools/nanobsd/pcengines/Files/root/save_cfg b/tools/tools/nanobsd/pcengines/Files/root/save_cfg
index 19f11950c0e0..fb44ae905333 100644
--- a/tools/tools/nanobsd/pcengines/Files/root/save_cfg
+++ b/tools/tools/nanobsd/pcengines/Files/root/save_cfg
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
set -e
diff --git a/tools/tools/nanobsd/pcengines/Files/root/save_sshkeys b/tools/tools/nanobsd/pcengines/Files/root/save_sshkeys
index 03fccf4ac0a2..7d6ec0674800 100644
--- a/tools/tools/nanobsd/pcengines/Files/root/save_sshkeys
+++ b/tools/tools/nanobsd/pcengines/Files/root/save_sshkeys
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
set -e
diff --git a/tools/tools/nanobsd/pcengines/Files/root/updatep1 b/tools/tools/nanobsd/pcengines/Files/root/updatep1
index 6b83de530a50..0ae9b7c857cc 100644
--- a/tools/tools/nanobsd/pcengines/Files/root/updatep1
+++ b/tools/tools/nanobsd/pcengines/Files/root/updatep1
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
# Script to update partition 1 on a NanoBSD system.
#
diff --git a/tools/tools/nanobsd/pcengines/Files/root/updatep2 b/tools/tools/nanobsd/pcengines/Files/root/updatep2
index fc5312be0c46..99d29637f904 100644
--- a/tools/tools/nanobsd/pcengines/Files/root/updatep2
+++ b/tools/tools/nanobsd/pcengines/Files/root/updatep2
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
# Script to update partition 2 on a NanoBSD system.
#
diff --git a/tools/tools/nanobsd/pcengines/alix_dsk.conf b/tools/tools/nanobsd/pcengines/alix_dsk.conf
index 559f6ab45d04..d5e6e2461567 100644
--- a/tools/tools/nanobsd/pcengines/alix_dsk.conf
+++ b/tools/tools/nanobsd/pcengines/alix_dsk.conf
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
NANO_KERNEL=ALIX_DSK
diff --git a/tools/tools/nanobsd/pcengines/alix_nfs.conf b/tools/tools/nanobsd/pcengines/alix_nfs.conf
index 745fd4bc2e1f..e69ee6f018c4 100644
--- a/tools/tools/nanobsd/pcengines/alix_nfs.conf
+++ b/tools/tools/nanobsd/pcengines/alix_nfs.conf
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
NANO_KERNEL=ALIX_NFS
diff --git a/tools/tools/nanobsd/pcengines/build.sh b/tools/tools/nanobsd/pcengines/build.sh
index 525b7ba38398..5288a4fce834 100755
--- a/tools/tools/nanobsd/pcengines/build.sh
+++ b/tools/tools/nanobsd/pcengines/build.sh
@@ -1,6 +1,5 @@
#!/bin/sh
#
-# $FreeBSD$
#
if [ -z "${1}" -o \! -f "${1}" ]; then
diff --git a/tools/tools/nanobsd/pcengines/common.conf b/tools/tools/nanobsd/pcengines/common.conf
index 632ace1841cc..2264e0b0b92c 100644
--- a/tools/tools/nanobsd/pcengines/common.conf
+++ b/tools/tools/nanobsd/pcengines/common.conf
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
NANO_SRC=$(pwd)
diff --git a/tools/tools/nanobsd/pcengines/test.sh b/tools/tools/nanobsd/pcengines/test.sh
index 9997c81f8572..fc4eabbea414 100755
--- a/tools/tools/nanobsd/pcengines/test.sh
+++ b/tools/tools/nanobsd/pcengines/test.sh
@@ -1,6 +1,5 @@
#!/bin/sh
#
-# $FreeBSD$
#
_run () {
diff --git a/tools/tools/nanobsd/rescue/Files/etc/ssh/ssh_config b/tools/tools/nanobsd/rescue/Files/etc/ssh/ssh_config
deleted file mode 100644
index 07e4086bbbbb..000000000000
--- a/tools/tools/nanobsd/rescue/Files/etc/ssh/ssh_config
+++ /dev/null
@@ -1,46 +0,0 @@
-# $OpenBSD: ssh_config,v 1.22 2006/05/29 12:56:33 dtucker Exp $
-# $FreeBSD$
-
-# This is the ssh client system-wide configuration file. See
-# ssh_config(5) for more information. This file provides defaults for
-# users, and the values can be changed in per-user configuration files
-# or on the command line.
-
-# Configuration data is parsed as follows:
-# 1. command line options
-# 2. user-specific file
-# 3. system-wide file
-# Any configuration value is only changed the first time it is set.
-# Thus, host-specific definitions should be at the beginning of the
-# configuration file, and defaults at the end.
-
-# Site-wide defaults for some commonly used options. For a comprehensive
-# list of available options, their meanings and defaults, please see the
-# ssh_config(5) man page.
-
-# Host *
-# ForwardAgent no
-# ForwardX11 no
-# RhostsRSAAuthentication no
-# RSAAuthentication yes
-# PasswordAuthentication yes
-# HostbasedAuthentication no
-# GSSAPIAuthentication no
-# GSSAPIDelegateCredentials no
-# BatchMode no
-# CheckHostIP no
-# AddressFamily any
-# ConnectTimeout 0
-# StrictHostKeyChecking ask
-# IdentityFile ~/.ssh/identity
-# IdentityFile ~/.ssh/id_rsa
-# IdentityFile ~/.ssh/id_dsa
-# Port 22
-# Protocol 2,1
-# Cipher 3des
-# Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc
-# EscapeChar ~
-# Tunnel no
-# TunnelDevice any:any
-# PermitLocalCommand no
-# VersionAddendum FreeBSD-20061110
diff --git a/tools/tools/nanobsd/rescue/Files/etc/ssh/sshd_config b/tools/tools/nanobsd/rescue/Files/etc/ssh/sshd_config
deleted file mode 100644
index 96572d967e9b..000000000000
--- a/tools/tools/nanobsd/rescue/Files/etc/ssh/sshd_config
+++ /dev/null
@@ -1,117 +0,0 @@
-# $OpenBSD: sshd_config,v 1.74 2006/07/19 13:07:10 dtucker Exp $
-# $FreeBSD$
-
-# This is the sshd server system-wide configuration file. See
-# sshd_config(5) for more information.
-
-# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
-
-# The strategy used for options in the default sshd_config shipped with
-# OpenSSH is to specify options with their default value where
-# possible, but leave them commented. Uncommented options change a
-# default value.
-
-# Note that some of FreeBSD's defaults differ from OpenBSD's, and
-# FreeBSD has a few additional options.
-
-#VersionAddendum FreeBSD-20061110
-
-#Port 22
-#Protocol 2
-#AddressFamily any
-#ListenAddress 0.0.0.0
-#ListenAddress ::
-
-# HostKey for protocol version 1
-#HostKey /etc/ssh/ssh_host_key
-# HostKeys for protocol version 2
-#HostKey /etc/ssh/ssh_host_dsa_key
-
-# Lifetime and size of ephemeral version 1 server key
-#KeyRegenerationInterval 1h
-#ServerKeyBits 768
-
-# Logging
-# obsoletes QuietMode and FascistLogging
-#SyslogFacility AUTH
-#LogLevel INFO
-
-# Authentication:
-
-#LoginGraceTime 2m
-PermitRootLogin yes
-#StrictModes yes
-#MaxAuthTries 6
-
-#RSAAuthentication yes
-#PubkeyAuthentication yes
-#AuthorizedKeysFile .ssh/authorized_keys
-
-# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
-#RhostsRSAAuthentication no
-# similar for protocol version 2
-#HostbasedAuthentication no
-# Change to yes if you don't trust ~/.ssh/known_hosts for
-# RhostsRSAAuthentication and HostbasedAuthentication
-#IgnoreUserKnownHosts no
-# Don't read the user's ~/.rhosts and ~/.shosts files
-#IgnoreRhosts yes
-
-# Change to yes to enable built-in password authentication.
-#PasswordAuthentication no
-#PermitEmptyPasswords no
-
-# Change to no to disable PAM authentication
-#ChallengeResponseAuthentication yes
-
-# Kerberos options
-#KerberosAuthentication no
-#KerberosOrLocalPasswd yes
-#KerberosTicketCleanup yes
-#KerberosGetAFSToken no
-
-# GSSAPI options
-#GSSAPIAuthentication no
-#GSSAPICleanupCredentials yes
-
-# Set this to 'no' to disable PAM authentication, account processing,
-# and session processing. If this is enabled, PAM authentication will
-# be allowed through the ChallengeResponseAuthentication and
-# PasswordAuthentication. Depending on your PAM configuration,
-# PAM authentication via ChallengeResponseAuthentication may bypass
-PermitRootLogin yes
-# If you just want the PAM account and session checks to run without
-# PAM authentication, then enable this but set PasswordAuthentication
-# and ChallengeResponseAuthentication to 'no'.
-#UsePAM yes
-
-#AllowTcpForwarding yes
-#GatewayPorts no
-#X11Forwarding yes
-#X11DisplayOffset 10
-#X11UseLocalhost yes
-#PrintMotd yes
-#PrintLastLog yes
-#TCPKeepAlive yes
-#UseLogin no
-#UsePrivilegeSeparation yes
-#PermitUserEnvironment no
-#Compression delayed
-#ClientAliveInterval 0
-#ClientAliveCountMax 3
-#UseDNS yes
-#PidFile /var/run/sshd.pid
-#MaxStartups 10
-#PermitTunnel no
-
-# no default banner path
-#Banner /some/path
-
-# override default of no subsystems
-Subsystem sftp /usr/libexec/sftp-server
-
-# Example of overriding settings on a per-user basis
-#Match User anoncvs
-# X11Forwarding no
-# AllowTcpForwarding no
-# ForceCommand cvs server
diff --git a/tools/tools/nanobsd/rescue/Files/etc/ttys b/tools/tools/nanobsd/rescue/Files/etc/ttys
index 8e72947a73c7..8bf8e51dfedb 100644
--- a/tools/tools/nanobsd/rescue/Files/etc/ttys
+++ b/tools/tools/nanobsd/rescue/Files/etc/ttys
@@ -1,7 +1,3 @@
-#
-# $FreeBSD$
-# @(#)ttys 5.1 (Berkeley) 4/17/89
-#
# This file specifies various information about terminals on the system.
# It is used by several different programs. Common entries for the
# various columns include:
@@ -45,521 +41,8 @@ ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure
# Serial terminals
# The 'dialup' keyword identifies dialin lines to login, fingerd etc.
ttyu0 "/usr/libexec/getty std.115200" xterm-color on secure
-ttyu1 "/usr/libexec/getty std.9600" dialup off secure
-ttyu2 "/usr/libexec/getty std.9600" dialup off secure
-ttyu3 "/usr/libexec/getty std.9600" dialup off secure
+ttyu1 "/usr/libexec/getty std.115200" dialup off secure
+ttyu2 "/usr/libexec/getty std.115200" dialup off secure
+ttyu3 "/usr/libexec/getty std.115200" dialup off secure
# Dumb console
-dcons "/usr/libexec/getty std.9600" vt100 off secure
-# Pseudo terminals
-ttyp0 none network
-ttyp1 none network
-ttyp2 none network
-ttyp3 none network
-ttyp4 none network
-ttyp5 none network
-ttyp6 none network
-ttyp7 none network
-ttyp8 none network
-ttyp9 none network
-ttypa none network
-ttypb none network
-ttypc none network
-ttypd none network
-ttype none network
-ttypf none network
-ttypg none network
-ttyph none network
-ttypi none network
-ttypj none network
-ttypk none network
-ttypl none network
-ttypm none network
-ttypn none network
-ttypo none network
-ttypp none network
-ttypq none network
-ttypr none network
-ttyps none network
-ttypt none network
-ttypu none network
-ttypv none network
-ttyq0 none network
-ttyq1 none network
-ttyq2 none network
-ttyq3 none network
-ttyq4 none network
-ttyq5 none network
-ttyq6 none network
-ttyq7 none network
-ttyq8 none network
-ttyq9 none network
-ttyqa none network
-ttyqb none network
-ttyqc none network
-ttyqd none network
-ttyqe none network
-ttyqf none network
-ttyqg none network
-ttyqh none network
-ttyqi none network
-ttyqj none network
-ttyqk none network
-ttyql none network
-ttyqm none network
-ttyqn none network
-ttyqo none network
-ttyqp none network
-ttyqq none network
-ttyqr none network
-ttyqs none network
-ttyqt none network
-ttyqu none network
-ttyqv none network
-ttyr0 none network
-ttyr1 none network
-ttyr2 none network
-ttyr3 none network
-ttyr4 none network
-ttyr5 none network
-ttyr6 none network
-ttyr7 none network
-ttyr8 none network
-ttyr9 none network
-ttyra none network
-ttyrb none network
-ttyrc none network
-ttyrd none network
-ttyre none network
-ttyrf none network
-ttyrg none network
-ttyrh none network
-ttyri none network
-ttyrj none network
-ttyrk none network
-ttyrl none network
-ttyrm none network
-ttyrn none network
-ttyro none network
-ttyrp none network
-ttyrq none network
-ttyrr none network
-ttyrs none network
-ttyrt none network
-ttyru none network
-ttyrv none network
-ttys0 none network
-ttys1 none network
-ttys2 none network
-ttys3 none network
-ttys4 none network
-ttys5 none network
-ttys6 none network
-ttys7 none network
-ttys8 none network
-ttys9 none network
-ttysa none network
-ttysb none network
-ttysc none network
-ttysd none network
-ttyse none network
-ttysf none network
-ttysg none network
-ttysh none network
-ttysi none network
-ttysj none network
-ttysk none network
-ttysl none network
-ttysm none network
-ttysn none network
-ttyso none network
-ttysp none network
-ttysq none network
-ttysr none network
-ttyss none network
-ttyst none network
-ttysu none network
-ttysv none network
-ttyP0 none network
-ttyP1 none network
-ttyP2 none network
-ttyP3 none network
-ttyP4 none network
-ttyP5 none network
-ttyP6 none network
-ttyP7 none network
-ttyP8 none network
-ttyP9 none network
-ttyPa none network
-ttyPb none network
-ttyPc none network
-ttyPd none network
-ttyPe none network
-ttyPf none network
-ttyPg none network
-ttyPh none network
-ttyPi none network
-ttyPj none network
-ttyPk none network
-ttyPl none network
-ttyPm none network
-ttyPn none network
-ttyPo none network
-ttyPp none network
-ttyPq none network
-ttyPr none network
-ttyPs none network
-ttyPt none network
-ttyPu none network
-ttyPv none network
-ttyQ0 none network
-ttyQ1 none network
-ttyQ2 none network
-ttyQ3 none network
-ttyQ4 none network
-ttyQ5 none network
-ttyQ6 none network
-ttyQ7 none network
-ttyQ8 none network
-ttyQ9 none network
-ttyQa none network
-ttyQb none network
-ttyQc none network
-ttyQd none network
-ttyQe none network
-ttyQf none network
-ttyQg none network
-ttyQh none network
-ttyQi none network
-ttyQj none network
-ttyQk none network
-ttyQl none network
-ttyQm none network
-ttyQn none network
-ttyQo none network
-ttyQp none network
-ttyQq none network
-ttyQr none network
-ttyQs none network
-ttyQt none network
-ttyQu none network
-ttyQv none network
-ttyR0 none network
-ttyR1 none network
-ttyR2 none network
-ttyR3 none network
-ttyR4 none network
-ttyR5 none network
-ttyR6 none network
-ttyR7 none network
-ttyR8 none network
-ttyR9 none network
-ttyRa none network
-ttyRb none network
-ttyRc none network
-ttyRd none network
-ttyRe none network
-ttyRf none network
-ttyRg none network
-ttyRh none network
-ttyRi none network
-ttyRj none network
-ttyRk none network
-ttyRl none network
-ttyRm none network
-ttyRn none network
-ttyRo none network
-ttyRp none network
-ttyRq none network
-ttyRr none network
-ttyRs none network
-ttyRt none network
-ttyRu none network
-ttyRv none network
-ttyS0 none network
-ttyS1 none network
-ttyS2 none network
-ttyS3 none network
-ttyS4 none network
-ttyS5 none network
-ttyS6 none network
-ttyS7 none network
-ttyS8 none network
-ttyS9 none network
-ttySa none network
-ttySb none network
-ttySc none network
-ttySd none network
-ttySe none network
-ttySf none network
-ttySg none network
-ttySh none network
-ttySi none network
-ttySj none network
-ttySk none network
-ttySl none network
-ttySm none network
-ttySn none network
-ttySo none network
-ttySp none network
-ttySq none network
-ttySr none network
-ttySs none network
-ttySt none network
-ttySu none network
-ttySv none network
-ttyl0 none network
-ttyl1 none network
-ttyl2 none network
-ttyl3 none network
-ttyl4 none network
-ttyl5 none network
-ttyl6 none network
-ttyl7 none network
-ttyl8 none network
-ttyl9 none network
-ttyla none network
-ttylb none network
-ttylc none network
-ttyld none network
-ttyle none network
-ttylf none network
-ttylg none network
-ttylh none network
-ttyli none network
-ttylj none network
-ttylk none network
-ttyll none network
-ttylm none network
-ttyln none network
-ttylo none network
-ttylp none network
-ttylq none network
-ttylr none network
-ttyls none network
-ttylt none network
-ttylu none network
-ttylv none network
-ttym0 none network
-ttym1 none network
-ttym2 none network
-ttym3 none network
-ttym4 none network
-ttym5 none network
-ttym6 none network
-ttym7 none network
-ttym8 none network
-ttym9 none network
-ttyma none network
-ttymb none network
-ttymc none network
-ttymd none network
-ttyme none network
-ttymf none network
-ttymg none network
-ttymh none network
-ttymi none network
-ttymj none network
-ttymk none network
-ttyml none network
-ttymm none network
-ttymn none network
-ttymo none network
-ttymp none network
-ttymq none network
-ttymr none network
-ttyms none network
-ttymt none network
-ttymu none network
-ttymv none network
-ttyn0 none network
-ttyn1 none network
-ttyn2 none network
-ttyn3 none network
-ttyn4 none network
-ttyn5 none network
-ttyn6 none network
-ttyn7 none network
-ttyn8 none network
-ttyn9 none network
-ttyna none network
-ttynb none network
-ttync none network
-ttynd none network
-ttyne none network
-ttynf none network
-ttyng none network
-ttynh none network
-ttyni none network
-ttynj none network
-ttynk none network
-ttynl none network
-ttynm none network
-ttynn none network
-ttyno none network
-ttynp none network
-ttynq none network
-ttynr none network
-ttyns none network
-ttynt none network
-ttynu none network
-ttynv none network
-ttyo0 none network
-ttyo1 none network
-ttyo2 none network
-ttyo3 none network
-ttyo4 none network
-ttyo5 none network
-ttyo6 none network
-ttyo7 none network
-ttyo8 none network
-ttyo9 none network
-ttyoa none network
-ttyob none network
-ttyoc none network
-ttyod none network
-ttyoe none network
-ttyof none network
-ttyog none network
-ttyoh none network
-ttyoi none network
-ttyoj none network
-ttyok none network
-ttyol none network
-ttyom none network
-ttyon none network
-ttyoo none network
-ttyop none network
-ttyoq none network
-ttyor none network
-ttyos none network
-ttyot none network
-ttyou none network
-ttyov none network
-ttyL0 none network
-ttyL1 none network
-ttyL2 none network
-ttyL3 none network
-ttyL4 none network
-ttyL5 none network
-ttyL6 none network
-ttyL7 none network
-ttyL8 none network
-ttyL9 none network
-ttyLa none network
-ttyLb none network
-ttyLc none network
-ttyLd none network
-ttyLe none network
-ttyLf none network
-ttyLg none network
-ttyLh none network
-ttyLi none network
-ttyLj none network
-ttyLk none network
-ttyLl none network
-ttyLm none network
-ttyLn none network
-ttyLo none network
-ttyLp none network
-ttyLq none network
-ttyLr none network
-ttyLs none network
-ttyLt none network
-ttyLu none network
-ttyLv none network
-ttyM0 none network
-ttyM1 none network
-ttyM2 none network
-ttyM3 none network
-ttyM4 none network
-ttyM5 none network
-ttyM6 none network
-ttyM7 none network
-ttyM8 none network
-ttyM9 none network
-ttyMa none network
-ttyMb none network
-ttyMc none network
-ttyMd none network
-ttyMe none network
-ttyMf none network
-ttyMg none network
-ttyMh none network
-ttyMi none network
-ttyMj none network
-ttyMk none network
-ttyMl none network
-ttyMm none network
-ttyMn none network
-ttyMo none network
-ttyMp none network
-ttyMq none network
-ttyMr none network
-ttyMs none network
-ttyMt none network
-ttyMu none network
-ttyMv none network
-ttyN0 none network
-ttyN1 none network
-ttyN2 none network
-ttyN3 none network
-ttyN4 none network
-ttyN5 none network
-ttyN6 none network
-ttyN7 none network
-ttyN8 none network
-ttyN9 none network
-ttyNa none network
-ttyNb none network
-ttyNc none network
-ttyNd none network
-ttyNe none network
-ttyNf none network
-ttyNg none network
-ttyNh none network
-ttyNi none network
-ttyNj none network
-ttyNk none network
-ttyNl none network
-ttyNm none network
-ttyNn none network
-ttyNo none network
-ttyNp none network
-ttyNq none network
-ttyNr none network
-ttyNs none network
-ttyNt none network
-ttyNu none network
-ttyNv none network
-ttyO0 none network
-ttyO1 none network
-ttyO2 none network
-ttyO3 none network
-ttyO4 none network
-ttyO5 none network
-ttyO6 none network
-ttyO7 none network
-ttyO8 none network
-ttyO9 none network
-ttyOa none network
-ttyOb none network
-ttyOc none network
-ttyOd none network
-ttyOe none network
-ttyOf none network
-ttyOg none network
-ttyOh none network
-ttyOi none network
-ttyOj none network
-ttyOk none network
-ttyOl none network
-ttyOm none network
-ttyOn none network
-ttyOo none network
-ttyOp none network
-ttyOq none network
-ttyOr none network
-ttyOs none network
-ttyOt none network
-ttyOu none network
-ttyOv none network
+dcons "/usr/libexec/getty std.115200" vt100 off secure
diff --git a/tools/tools/nanobsd/rescue/Files/root/.cshrc b/tools/tools/nanobsd/rescue/Files/root/.cshrc
index 50ab635e59c5..b09db73165e2 100644
--- a/tools/tools/nanobsd/rescue/Files/root/.cshrc
+++ b/tools/tools/nanobsd/rescue/Files/root/.cshrc
@@ -1,4 +1,3 @@
-# $FreeBSD$
#
#csh .cshrc file
diff --git a/tools/tools/nanobsd/rescue/Files/root/GPT4ZFS_Create.sh b/tools/tools/nanobsd/rescue/Files/root/GPT4ZFS_Create.sh
index e52c183dbf60..7c58f1c141ab 100755
--- a/tools/tools/nanobsd/rescue/Files/root/GPT4ZFS_Create.sh
+++ b/tools/tools/nanobsd/rescue/Files/root/GPT4ZFS_Create.sh
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
# some default sizes
align=2048
diff --git a/tools/tools/nanobsd/rescue/Files/root/ZFS_Create.txt b/tools/tools/nanobsd/rescue/Files/root/ZFS_Create.txt
index 2a33b25db30a..1f475c957c0c 100644
--- a/tools/tools/nanobsd/rescue/Files/root/ZFS_Create.txt
+++ b/tools/tools/nanobsd/rescue/Files/root/ZFS_Create.txt
@@ -1,4 +1,3 @@
-# $FreeBSD$
Some remarks for setting up a zfs boot environment
diff --git a/tools/tools/nanobsd/rescue/R32 b/tools/tools/nanobsd/rescue/R32
deleted file mode 100644
index 3c15ebee49e7..000000000000
--- a/tools/tools/nanobsd/rescue/R32
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# R32 -- Generic kernel configuration file with modifications for rescue.
-#
-# $FreeBSD$
-
-include GENERIC
-
-ident R32
-
-nooptions INVARIANTS
-nooptions INVARIANT_SUPPORT
-nooptions WITNESS
-nooptions WITNESS_SKIPSPIN
-nooptions MALLOC_DEBUG_MAXZONES
diff --git a/tools/tools/nanobsd/rescue/R64 b/tools/tools/nanobsd/rescue/R64
index 17900e2de081..b96b4865ae2e 100644
--- a/tools/tools/nanobsd/rescue/R64
+++ b/tools/tools/nanobsd/rescue/R64
@@ -1,7 +1,6 @@
#
# R64 -- Generic kernel configuration file with modifications for rescue.
#
-# $FreeBSD$
include GENERIC
diff --git a/tools/tools/nanobsd/rescue/build.sh b/tools/tools/nanobsd/rescue/build.sh
index 7d2ed80cd265..e111d3021271 100755
--- a/tools/tools/nanobsd/rescue/build.sh
+++ b/tools/tools/nanobsd/rescue/build.sh
@@ -1,6 +1,5 @@
#!/bin/sh
#
-# $FreeBSD$
#
today=`date '+%Y%m%d'`
@@ -26,14 +25,6 @@ sh ../nanobsd.sh $* -c ${CFG}
if [ \! -d /usr/obj/Rescue ]; then
mkdir -p /usr/obj/Rescue
fi
-F32="/usr/obj/Rescue/rescue_${today}_x32"
-D32="/usr/obj/nanobsd.rescue_i386"
-if [ -f "${D32}/_.disk.full" ]; then
- cp "${D32}/_.disk.full" "${F32}.img"
-fi
-if [ -f "${D32}/_.disk.iso" ]; then
- cp "${D32}/_.disk.iso" "${F32}.iso"
-fi
F64="/usr/obj/Rescue/rescue_${today}_x64"
D64="/usr/obj/nanobsd.rescue_amd64"
diff --git a/tools/tools/nanobsd/rescue/common b/tools/tools/nanobsd/rescue/common
index d14ad8b5af2b..5fcf5c19b882 100644
--- a/tools/tools/nanobsd/rescue/common
+++ b/tools/tools/nanobsd/rescue/common
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
NANO_SRC=$(pwd)
NANO_SRC=${NANO_SRC%/tools/tools/nanobsd/rescue}
@@ -10,8 +9,7 @@ NANO_RAM_TMPVARSIZE=40960
NANO_PMAKE="make -j 8"
NANO_LABEL="rescue"
NANO_RAM_TMPVARSIZE=40960
-#NANO_MEDIASIZE="3932160"
-NANO_MEDIASIZE="16384000"
+NANO_MEDIASIZE="3932160"
NANO_SECTS="63"
NANO_HEADS="16"
NANO_IMAGES="2"
@@ -31,10 +29,12 @@ CONF_INSTALL='
'
# Options to put in make.conf during both build- & installworld.
CONF_WORLD='
-#TARGET_ARCH=i386
CFLAGS=-O -pipe
-WITHOUT_TESTS=YES
-ALL_MODULES=YES
+# We do not need these for rescue
+WITHOUT_LIB32=true
+WITHOUT_TESTS=true
+WITHOUT_DEBUG_FILES=t
+WITHOUT_KERNEL_SYMBOLS=t
'
# Functions
diff --git a/tools/tools/nanobsd/rescue/merge.sh b/tools/tools/nanobsd/rescue/merge.sh
deleted file mode 100755
index afb66371fe3c..000000000000
--- a/tools/tools/nanobsd/rescue/merge.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-# $FreeBSD$
-
-today=`date '+%Y%m%d'`
-
-I32="/usr/obj/Rescue/rescue_${today}_x32.img"
-I64="/usr/obj/Rescue/rescue_${today}_x64.img"
-IAL="/usr/obj/Rescue/rescue_${today}_xal.img"
-D64="/usr/obj/nanobsd.rescue_amd64"
-MNT="/usr/obj/Rescue/_mnt"
-
-if [ \! -d "$MNT" ]; then
- mkdir "$MNT"
-fi
-
-dd if=${I32} of=${IAL} bs=128k
-MD=`mdconfig -a -t vnode -f ${IAL}`
-
-dd if=${D64}/_.disk.image of=/dev/${MD}s2 bs=128k
-tunefs -L rescues2a /dev/${MD}s2a
-mount /dev/${MD}s2a ${MNT}
-
-sed -i "" -e 's/rescues1/rescues2/' ${MNT}/conf/base/etc/fstab
-sed -i "" -e 's/rescues1/rescues2/' ${MNT}/etc/fstab
-
-umount ${MNT}
-
-mdconfig -d -u ${MD}
diff --git a/tools/tools/nanobsd/rescue/rescue_amd64.conf b/tools/tools/nanobsd/rescue/rescue_amd64.conf
index a82325fd52c0..6ea5f14821c4 100644
--- a/tools/tools/nanobsd/rescue/rescue_amd64.conf
+++ b/tools/tools/nanobsd/rescue/rescue_amd64.conf
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
NANO_KERNEL=R64
NANO_ARCH=amd64
diff --git a/tools/tools/nanobsd/rescue/rescue_i386.conf b/tools/tools/nanobsd/rescue/rescue_i386.conf
deleted file mode 100644
index 97b51d49e21d..000000000000
--- a/tools/tools/nanobsd/rescue/rescue_i386.conf
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# $FreeBSD$
-#
-NANO_KERNEL=R32
-NANO_ARCH=i386
-TARGET_ARCH=i386; export TARGET_ARCH
-#TARGET_CPUTYPE=i386; export TARGET_CPUTYPE
-NANO_NAME=rescue_i386
-
-. common
diff --git a/tools/tools/ncpus/Makefile b/tools/tools/ncpus/Makefile
index 2fea81540bc0..1b77b68b4eda 100644
--- a/tools/tools/ncpus/Makefile
+++ b/tools/tools/ncpus/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= ncpus
MAN=
diff --git a/tools/tools/ncpus/acpi.c b/tools/tools/ncpus/acpi.c
index 5366dc85abe1..8723ce0e6065 100644
--- a/tools/tools/ncpus/acpi.c
+++ b/tools/tools/ncpus/acpi.c
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
diff --git a/tools/tools/ncpus/acpidump.h b/tools/tools/ncpus/acpidump.h
index 9c2b5b6e502d..bd5ecb47170a 100644
--- a/tools/tools/ncpus/acpidump.h
+++ b/tools/tools/ncpus/acpidump.h
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
#ifndef _ACPIDUMP_H_
diff --git a/tools/tools/ncpus/biosmptable.c b/tools/tools/ncpus/biosmptable.c
index ee39e3669775..848eadf02d0f 100644
--- a/tools/tools/ncpus/biosmptable.c
+++ b/tools/tools/ncpus/biosmptable.c
@@ -30,9 +30,6 @@
* the number of cpu's identified.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <x86/mptable.h>
diff --git a/tools/tools/ncpus/ncpus.c b/tools/tools/ncpus/ncpus.c
index 0f4498f095ba..85023e11c696 100644
--- a/tools/tools/ncpus/ncpus.c
+++ b/tools/tools/ncpus/ncpus.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
#include <stdio.h>
diff --git a/tools/tools/net80211/Makefile b/tools/tools/net80211/Makefile
index c477ca22bd03..216d3bfa2d86 100644
--- a/tools/tools/net80211/Makefile
+++ b/tools/tools/net80211/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SUBDIR= stumbler w00t wesside wlaninject wlanstats wlantxtime wlanwatch wlanwds
diff --git a/tools/tools/net80211/README b/tools/tools/net80211/README
index 3f7b1c14ee99..a73f086f5589 100644
--- a/tools/tools/net80211/README
+++ b/tools/tools/net80211/README
@@ -1,4 +1,3 @@
-$FreeBSD$
This directory has various tools for use with the net80211 layer.
Some may not work depending on the capabilities of the underyling
diff --git a/tools/tools/net80211/mlme_assoc/Makefile b/tools/tools/net80211/mlme_assoc/Makefile
new file mode 100644
index 000000000000..580fb045ac52
--- /dev/null
+++ b/tools/tools/net80211/mlme_assoc/Makefile
@@ -0,0 +1,7 @@
+PROG= mlme_assoc
+BINDIR= /usr/bin
+MAN=
+
+SRCS= mlme_assoc.c
+
+.include <bsd.prog.mk>
diff --git a/tools/tools/net80211/mlme_assoc/README b/tools/tools/net80211/mlme_assoc/README
new file mode 100644
index 000000000000..fc5e754a58d6
--- /dev/null
+++ b/tools/tools/net80211/mlme_assoc/README
@@ -0,0 +1,51 @@
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2023 The FreeBSD Foundation
+#
+# This documentation was written by Björn Zeeb under sponsorship from
+# the FreeBSD Foundation.
+#
+# 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.
+#
+
+This is a simple program to drive net80211::ieee80211_sta_join1() calls from
+user space.
+
+The program optionally accepts an interface name (e.g., wlan42), or an
+interface name, an SSID and a BSSID.
+
+In the former case of no SSID/BSSID passed it will query the scan results and
+then try to join each entry from the scan with a short delay.
+
+In the lastter case giving the SSID/BSSID one can trigger the "canreassoc" case
+in ieee80211_sta_join1() or not depending on whether one passes the currently
+associated SSID/BSSID or not.
+
+The tool is useful to trigger net80211::newstate() changes while other
+newstate() changes are pending or being executed.
+
+I was specifically developed to show a problem with the LinuxKPI 802.11 compat
+code. The reason is that ieee80211_sta_join1() also calls in (*iv_update_bss)()
+swapping nodes before initiating the state changes and in LinuxKPI state is on
+the sta and not the vif causing all kinds of troubles, especially if we lose
+a state transition before the taskq is run or if the iv_bss node gets swapped
+before a task is executed.
diff --git a/tools/tools/net80211/mlme_assoc/mlme_assoc.c b/tools/tools/net80211/mlme_assoc/mlme_assoc.c
new file mode 100644
index 000000000000..c26aaa03fe87
--- /dev/null
+++ b/tools/tools/net80211/mlme_assoc/mlme_assoc.c
@@ -0,0 +1,200 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2023 The FreeBSD Foundation
+ *
+ * This software was developed by Björn Zeeb under sponsorship from
+ * the FreeBSD Foundation.
+ *
+ * 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.
+ */
+
+/*
+ * First get scan results in a hurry.
+ * Pick a random BSSID and try to assoc.
+ * Hopefully this is enough to trigger the newstate race along with the
+ * (*iv_update_bss)() logic.
+ *
+ * Alternatively pass IF SSID BSSID in and just try that.
+ */
+
+#include <err.h>
+#include <stdio.h>
+#include <string.h>
+#include <sysexits.h>
+#include <unistd.h>
+
+#include <sys/socket.h>
+#include <sys/ioctl.h>
+
+#include <net/if.h>
+#include <net/ethernet.h>
+
+#include <net80211/ieee80211.h>
+#include <net80211/ieee80211_ioctl.h>
+
+static int
+if_up(int sd, const char *ifnam)
+{
+ struct ifreq ifr;
+ int error;
+
+ memset(&ifr, 0, sizeof(ifr));
+ strlcpy(ifr.ifr_name, ifnam, sizeof(ifr.ifr_name));
+
+ error = ioctl(sd, SIOCGIFFLAGS, &ifr);
+ if (error == -1) {
+ warn("SIOCGIFFLAGS");
+ return (error);
+ }
+
+ if (ifr.ifr_flags & IFF_UP)
+ return (0);
+
+ ifr.ifr_flags |= IFF_UP;
+
+ error = ioctl(sd, SIOCSIFFLAGS, &ifr);
+ if (error == -1) {
+ warn("SIOCSIFFLAGS");
+ return (error);
+ }
+
+ return (0);
+}
+
+static int
+try_mlme_assoc(int sd, const char *ifnam, uint8_t *ssid, uint8_t ssid_len, uint8_t *bssid)
+{
+ struct ieee80211req ireq;
+ struct ieee80211req_mlme mlme;
+ int error;
+
+ memset(&mlme, 0, sizeof(mlme));
+ mlme.im_op = IEEE80211_MLME_ASSOC;
+ if (ssid != NULL)
+ memcpy(mlme.im_ssid, ssid, ssid_len);
+ mlme.im_ssid_len = ssid_len;
+ if (bssid != NULL)
+ memcpy(mlme.im_macaddr, bssid, IEEE80211_ADDR_LEN);
+
+ memset(&ireq, 0, sizeof(ireq));
+ strlcpy(ireq.i_name, ifnam, sizeof(ireq.i_name));
+ ireq.i_type = IEEE80211_IOC_MLME;
+ ireq.i_val = 0;
+ ireq.i_data = (void *)&mlme;
+ ireq.i_len = sizeof(mlme);
+
+ error = ioctl(sd, SIOCS80211, &ireq);
+ if (error == -1) {
+ warn("SIOCS80211, %#x", ireq.i_type);
+ return (error);
+ }
+
+ return (0);
+}
+
+static int
+mlme_assoc_scan_results(int sd, const char *ifnam)
+{
+ struct ieee80211req ireq;
+ struct ieee80211req_scan_result *sr;
+ uint8_t buf[32 * 1024], *p;
+ ssize_t len;
+ int error;
+
+ memset(&ireq, 0, sizeof(ireq));
+ strlcpy(ireq.i_name, ifnam, sizeof(ireq.i_name));
+ ireq.i_type = IEEE80211_IOC_SCAN_RESULTS;
+ ireq.i_data = (void *)buf;
+ ireq.i_len = sizeof(buf);
+
+ error = ioctl(sd, SIOCG80211, &ireq);
+ if (error == -1 || ireq.i_len < 0) {
+ warn("SIOCG80211, %#x", ireq.i_type);
+ return (error);
+ }
+
+ p = buf;
+ len = ireq.i_len;
+ while (len > (ssize_t)sizeof(*sr)) {
+ sr = (struct ieee80211req_scan_result *)(void *)p;
+ p += sr->isr_len;
+ len -= sr->isr_len;
+
+ error = try_mlme_assoc(sd, ifnam, (void *)(sr + 1), sr->isr_ssid_len,
+ sr->isr_bssid);
+ if (error != 0) {
+ warnx("try_mlme_assoc");
+ return (error);
+ }
+
+ usleep(100000);
+ }
+
+ return (0);
+}
+
+int
+main(int argc, char *argv[])
+{
+ const char *ifnam;
+ uint8_t *ssid, *bssid;
+ struct ether_addr ea;
+ int error, sd;
+
+ ifnam = "wlan0";
+ ssid = NULL;
+ bssid = NULL;
+
+ if (argc == 4) {
+ ifnam = argv[1];
+ ssid = (uint8_t *)argv[2];
+ bssid = (uint8_t *)ether_aton_r(argv[3], &ea);
+ if (bssid == NULL)
+ warnx("ether_aton_r, ignoring BSSID");
+ } else if (argc == 2) {
+ ifnam = argv[1];
+ }
+
+ sd = socket(AF_LOCAL, SOCK_DGRAM, 0);
+ if (sd == -1)
+ errx(EX_UNAVAILABLE, "socket");
+
+ error = if_up(sd, ifnam);
+ if (error != 0)
+ errx(EX_UNAVAILABLE, "if_up");
+
+ if (argc == 4) {
+ error = try_mlme_assoc(sd, ifnam, ssid, strlen((const char *)ssid), bssid);
+ if (error != 0)
+ errx(EX_UNAVAILABLE, "try_mlme_assoc");
+
+ } else {
+ error = mlme_assoc_scan_results(sd, ifnam);
+ if (error != 0)
+ errx(EX_UNAVAILABLE, "mlme_assoc_scan_results");
+ }
+
+ close(sd);
+
+ return (0);
+}
diff --git a/tools/tools/net80211/scripts/config b/tools/tools/net80211/scripts/config
index aa502e14d32d..21bc0a9858da 100644
--- a/tools/tools/net80211/scripts/config
+++ b/tools/tools/net80211/scripts/config
@@ -1,7 +1,6 @@
#
# Common configuration settings for vap test scripts.
#
-# $FreeBSD$
#
media_type()
diff --git a/tools/tools/net80211/scripts/mesh/common b/tools/tools/net80211/scripts/mesh/common
index a8816a2cf190..e640234283ec 100644
--- a/tools/tools/net80211/scripts/mesh/common
+++ b/tools/tools/net80211/scripts/mesh/common
@@ -2,7 +2,6 @@
#
# Common setup.
#
-# $FreeBSD$
#
PATH=../:.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/mesh/config.mesh b/tools/tools/net80211/scripts/mesh/config.mesh
index c144218c0668..0ccdfc1f72b0 100644
--- a/tools/tools/net80211/scripts/mesh/config.mesh
+++ b/tools/tools/net80211/scripts/mesh/config.mesh
@@ -1,7 +1,6 @@
#
# Common configuration settings for mesh test scripts.
#
-# $FreeBSD$
#
NODE1_IP=10.0.1.100
diff --git a/tools/tools/net80211/scripts/mesh/setup.simple b/tools/tools/net80211/scripts/mesh/setup.simple
index ee7b56e06763..cf32d0304834 100644
--- a/tools/tools/net80211/scripts/mesh/setup.simple
+++ b/tools/tools/net80211/scripts/mesh/setup.simple
@@ -3,7 +3,6 @@
# Script for creating a simple Mesh Point.
# Topology is fully connected if every node is a neighbor of each other.
#
-# $FreeBSD$
#
PATH=../:.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/mesh/topology.line b/tools/tools/net80211/scripts/mesh/topology.line
index 695f8bdc11d0..1b7d18cf92b0 100644
--- a/tools/tools/net80211/scripts/mesh/topology.line
+++ b/tools/tools/net80211/scripts/mesh/topology.line
@@ -4,7 +4,6 @@
#
# node1 <-> node2 <-> node3 <-> node4 <-> node5
#
-# $FreeBSD$
#
PATH=../:.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/mesh/topology.ring b/tools/tools/net80211/scripts/mesh/topology.ring
index 1810f3c05495..58d5619617e0 100644
--- a/tools/tools/net80211/scripts/mesh/topology.ring
+++ b/tools/tools/net80211/scripts/mesh/topology.ring
@@ -6,7 +6,6 @@
# ^ |
# \-------------------------------
#
-# $FreeBSD$
#
PATH=../:.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/mesh/topology.star b/tools/tools/net80211/scripts/mesh/topology.star
index a7396a0b31b3..0f190fd9f225 100644
--- a/tools/tools/net80211/scripts/mesh/topology.star
+++ b/tools/tools/net80211/scripts/mesh/topology.star
@@ -3,7 +3,6 @@
# Script for creating a mesh in star topology.
# Node 3 will be the center.
#
-# $FreeBSD$
#
PATH=../:.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/mesh/topology.tree b/tools/tools/net80211/scripts/mesh/topology.tree
index 9a2ed326d844..3183b2901395 100644
--- a/tools/tools/net80211/scripts/mesh/topology.tree
+++ b/tools/tools/net80211/scripts/mesh/topology.tree
@@ -13,7 +13,6 @@
# v v
# node4 node5
#
-# $FreeBSD$
#
PATH=../:.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.dfs b/tools/tools/net80211/scripts/setup.dfs
index 67546e91932b..1b784e3d814a 100644
--- a/tools/tools/net80211/scripts/setup.dfs
+++ b/tools/tools/net80211/scripts/setup.dfs
@@ -3,7 +3,6 @@
# Script for testing DFS; setup an AP vap on a DFS channel
# then simulate a radar event and verify operation.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.fixed b/tools/tools/net80211/scripts/setup.fixed
index d0008002dc90..96dfd66170f5 100644
--- a/tools/tools/net80211/scripts/setup.fixed
+++ b/tools/tools/net80211/scripts/setup.fixed
@@ -2,7 +2,6 @@
#
# Script for testing fixed xmit rate handling.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.local b/tools/tools/net80211/scripts/setup.local
index f56e9d585339..eb8afceea740 100644
--- a/tools/tools/net80211/scripts/setup.local
+++ b/tools/tools/net80211/scripts/setup.local
@@ -2,7 +2,6 @@
#
# Script for testing traffic to the local host (as opposed to bridged).
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.mixed b/tools/tools/net80211/scripts/setup.mixed
index 423c5342e7dd..73c5e225d439 100644
--- a/tools/tools/net80211/scripts/setup.mixed
+++ b/tools/tools/net80211/scripts/setup.mixed
@@ -2,7 +2,6 @@
#
# Script for testing multi-bss open+WPA1+WPA2.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.simple b/tools/tools/net80211/scripts/setup.simple
index 57c661aa3c46..fc8fe3fb3066 100644
--- a/tools/tools/net80211/scripts/setup.simple
+++ b/tools/tools/net80211/scripts/setup.simple
@@ -2,7 +2,6 @@
#
# Script for testing simple (single bss) ap operation.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.simple2 b/tools/tools/net80211/scripts/setup.simple2
index 7b030a9162aa..b29349c33fc6 100644
--- a/tools/tools/net80211/scripts/setup.simple2
+++ b/tools/tools/net80211/scripts/setup.simple2
@@ -2,7 +2,6 @@
#
# Script for testing multi-bss ap operation.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.sta b/tools/tools/net80211/scripts/setup.sta
index 570aaa551fb7..d511609be2d0 100644
--- a/tools/tools/net80211/scripts/setup.sta
+++ b/tools/tools/net80211/scripts/setup.sta
@@ -2,7 +2,6 @@
#
# Script for testing simple station mode operation.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.tdma-master b/tools/tools/net80211/scripts/setup.tdma-master
index f89f4caeda12..769b38b07ae9 100644
--- a/tools/tools/net80211/scripts/setup.tdma-master
+++ b/tools/tools/net80211/scripts/setup.tdma-master
@@ -2,7 +2,6 @@
#
# Setup a TDMA master and bridge it to a wired NIC.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.tdma-slave b/tools/tools/net80211/scripts/setup.tdma-slave
index 22607c2f842f..3a804e0b35b4 100644
--- a/tools/tools/net80211/scripts/setup.tdma-slave
+++ b/tools/tools/net80211/scripts/setup.tdma-slave
@@ -2,7 +2,6 @@
#
# Setup a TDMA slave and hook it into a bridge.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.tsn b/tools/tools/net80211/scripts/setup.tsn
index c5b906381fb1..fe7b61556169 100644
--- a/tools/tools/net80211/scripts/setup.tsn
+++ b/tools/tools/net80211/scripts/setup.tsn
@@ -2,7 +2,6 @@
#
# Script for testing TSN support.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.updown b/tools/tools/net80211/scripts/setup.updown
index 72a2970af329..16c9dcfc986a 100644
--- a/tools/tools/net80211/scripts/setup.updown
+++ b/tools/tools/net80211/scripts/setup.updown
@@ -3,7 +3,6 @@
# Script for test vap create+destroy. Also used to verify
# resources are reclaimed properly on destroy.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.updown.wpa b/tools/tools/net80211/scripts/setup.updown.wpa
index 36580b56e22f..3538c87c1e4f 100644
--- a/tools/tools/net80211/scripts/setup.updown.wpa
+++ b/tools/tools/net80211/scripts/setup.updown.wpa
@@ -4,7 +4,6 @@
# Also used to verify resources are reclaimed properly
# on vap destroy.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.wds b/tools/tools/net80211/scripts/setup.wds
index 6df8059baba6..5a5e3bcbc23f 100644
--- a/tools/tools/net80211/scripts/setup.wds
+++ b/tools/tools/net80211/scripts/setup.wds
@@ -4,7 +4,6 @@
# Assumes an ap vap is already setup.
# Can be run multiple times to create multiple WDS vaps.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.wdsmain b/tools/tools/net80211/scripts/setup.wdsmain
index c25e06fb8a74..d2f9371e1269 100644
--- a/tools/tools/net80211/scripts/setup.wdsmain
+++ b/tools/tools/net80211/scripts/setup.wdsmain
@@ -22,7 +22,6 @@
# VAP on a physical interface, which shares the MAC address of
# the physical NIC.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.wdsrelay b/tools/tools/net80211/scripts/setup.wdsrelay
index d44870e81c21..fe31f027d724 100644
--- a/tools/tools/net80211/scripts/setup.wdsrelay
+++ b/tools/tools/net80211/scripts/setup.wdsrelay
@@ -6,7 +6,6 @@
# traffic from stations associated to the (local) ap. The sta
# will follow it's peer ap, dragging the ap vap with it.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.wep b/tools/tools/net80211/scripts/setup.wep
index 8045431a39b5..089bbb8d3b7c 100644
--- a/tools/tools/net80211/scripts/setup.wep
+++ b/tools/tools/net80211/scripts/setup.wep
@@ -2,7 +2,6 @@
#
# Script for testing ap mode w/ WEP.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.wpa b/tools/tools/net80211/scripts/setup.wpa
index 8cbc7724e344..d8cf2006a14e 100644
--- a/tools/tools/net80211/scripts/setup.wpa
+++ b/tools/tools/net80211/scripts/setup.wpa
@@ -2,7 +2,6 @@
#
# Script for testing single-bss WPA1+WPA2.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.wpa1.aes b/tools/tools/net80211/scripts/setup.wpa1.aes
index f25c683c086f..b999a2a41763 100644
--- a/tools/tools/net80211/scripts/setup.wpa1.aes
+++ b/tools/tools/net80211/scripts/setup.wpa1.aes
@@ -2,7 +2,6 @@
#
# Script for testing WPA1 w/ AES.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.wpa1.tkip b/tools/tools/net80211/scripts/setup.wpa1.tkip
index 35f78e2f04ed..9c7b7a6df8c6 100644
--- a/tools/tools/net80211/scripts/setup.wpa1.tkip
+++ b/tools/tools/net80211/scripts/setup.wpa1.tkip
@@ -2,7 +2,6 @@
#
# Script for testing WPA1 w/ TKIP.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.wpa2 b/tools/tools/net80211/scripts/setup.wpa2
index ba92a9bc1c45..2d978b779c6e 100644
--- a/tools/tools/net80211/scripts/setup.wpa2
+++ b/tools/tools/net80211/scripts/setup.wpa2
@@ -2,7 +2,6 @@
#
# Script for testing WPA2 w/ AES.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/scripts/setup.wpa2.tkip b/tools/tools/net80211/scripts/setup.wpa2.tkip
index 8e542cad669d..f181b19fefc7 100644
--- a/tools/tools/net80211/scripts/setup.wpa2.tkip
+++ b/tools/tools/net80211/scripts/setup.wpa2.tkip
@@ -2,7 +2,6 @@
#
# Script for testing WPA2 w/ TKIP.
#
-# $FreeBSD$
#
PATH=.:$PATH
. config
diff --git a/tools/tools/net80211/stumbler/Makefile b/tools/tools/net80211/stumbler/Makefile
index 614fc6064cb8..ad553e006d2d 100644
--- a/tools/tools/net80211/stumbler/Makefile
+++ b/tools/tools/net80211/stumbler/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= stumbler
BINDIR= /usr/local/bin
diff --git a/tools/tools/net80211/stumbler/stumbler.c b/tools/tools/net80211/stumbler/stumbler.c
index 0e8d8be693a5..13d981de80a7 100644
--- a/tools/tools/net80211/stumbler/stumbler.c
+++ b/tools/tools/net80211/stumbler/stumbler.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
#include <sys/socket.h>
diff --git a/tools/tools/net80211/w00t/Makefile b/tools/tools/net80211/w00t/Makefile
index 1aecd6937a0e..04a165de9bc5 100644
--- a/tools/tools/net80211/w00t/Makefile
+++ b/tools/tools/net80211/w00t/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SUBDIR= libw00t ap assoc expand prga redir
diff --git a/tools/tools/net80211/w00t/Makefile.inc b/tools/tools/net80211/w00t/Makefile.inc
index 34eddd9206d8..d5596cc580bf 100644
--- a/tools/tools/net80211/w00t/Makefile.inc
+++ b/tools/tools/net80211/w00t/Makefile.inc
@@ -1,4 +1,3 @@
-# $FreeBSD$
W00T= ../libw00t
# NB: we get crc32 from -lz
diff --git a/tools/tools/net80211/w00t/README b/tools/tools/net80211/w00t/README
index 58e4fc1277a8..768dd5919fa5 100644
--- a/tools/tools/net80211/w00t/README
+++ b/tools/tools/net80211/w00t/README
@@ -1,4 +1,3 @@
-$FreeBSD$
This is a collection of tools that use raw 802.11 packet injection.
None of the tools configure the interface, so be sure to run something
diff --git a/tools/tools/net80211/w00t/ap/Makefile b/tools/tools/net80211/w00t/ap/Makefile
index 96fe419fb68a..178470c5ca2f 100644
--- a/tools/tools/net80211/w00t/ap/Makefile
+++ b/tools/tools/net80211/w00t/ap/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.include <../Makefile.inc>
diff --git a/tools/tools/net80211/w00t/ap/ap.c b/tools/tools/net80211/w00t/ap/ap.c
index 712eef07f156..6f5baf30ec5c 100644
--- a/tools/tools/net80211/w00t/ap/ap.c
+++ b/tools/tools/net80211/w00t/ap/ap.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
#include <sys/select.h>
diff --git a/tools/tools/net80211/w00t/assoc/Makefile b/tools/tools/net80211/w00t/assoc/Makefile
index 23271a3a253b..d5ed3ebae4c9 100644
--- a/tools/tools/net80211/w00t/assoc/Makefile
+++ b/tools/tools/net80211/w00t/assoc/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.include <../Makefile.inc>
diff --git a/tools/tools/net80211/w00t/assoc/assoc.c b/tools/tools/net80211/w00t/assoc/assoc.c
index 345c31570474..ace3076b2c67 100644
--- a/tools/tools/net80211/w00t/assoc/assoc.c
+++ b/tools/tools/net80211/w00t/assoc/assoc.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/time.h>
#include <stdlib.h>
diff --git a/tools/tools/net80211/w00t/expand/Makefile b/tools/tools/net80211/w00t/expand/Makefile
index ffa1334c515a..d413af5fdb2a 100644
--- a/tools/tools/net80211/w00t/expand/Makefile
+++ b/tools/tools/net80211/w00t/expand/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.include <../Makefile.inc>
diff --git a/tools/tools/net80211/w00t/expand/expand.c b/tools/tools/net80211/w00t/expand/expand.c
index 64bff9990cbc..9c5fab555332 100644
--- a/tools/tools/net80211/w00t/expand/expand.c
+++ b/tools/tools/net80211/w00t/expand/expand.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/time.h>
#include <sys/types.h>
diff --git a/tools/tools/net80211/w00t/libw00t/Makefile b/tools/tools/net80211/w00t/libw00t/Makefile
index 64dc51d549cc..2146da5a9e33 100644
--- a/tools/tools/net80211/w00t/libw00t/Makefile
+++ b/tools/tools/net80211/w00t/libw00t/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
LIB= w00t
SRCS= w00t.c
diff --git a/tools/tools/net80211/w00t/libw00t/w00t.c b/tools/tools/net80211/w00t/libw00t/w00t.c
index ce4a357b4a1d..3a943ee857f9 100644
--- a/tools/tools/net80211/w00t/libw00t/w00t.c
+++ b/tools/tools/net80211/w00t/libw00t/w00t.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <stdio.h>
#include <assert.h>
diff --git a/tools/tools/net80211/w00t/libw00t/w00t.h b/tools/tools/net80211/w00t/libw00t/w00t.h
index 2164119b16e8..a982ae2b3303 100644
--- a/tools/tools/net80211/w00t/libw00t/w00t.h
+++ b/tools/tools/net80211/w00t/libw00t/w00t.h
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#ifndef __W00T_H__
#define __W00T_H__
diff --git a/tools/tools/net80211/w00t/prga/Makefile b/tools/tools/net80211/w00t/prga/Makefile
index c4d00b680c1c..9d4a2395c2dd 100644
--- a/tools/tools/net80211/w00t/prga/Makefile
+++ b/tools/tools/net80211/w00t/prga/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.include <../Makefile.inc>
diff --git a/tools/tools/net80211/w00t/prga/prga.c b/tools/tools/net80211/w00t/prga/prga.c
index c75d20f94f6a..45a74c439dff 100644
--- a/tools/tools/net80211/w00t/prga/prga.c
+++ b/tools/tools/net80211/w00t/prga/prga.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/endian.h>
#include <sys/time.h>
diff --git a/tools/tools/net80211/w00t/redir/Makefile b/tools/tools/net80211/w00t/redir/Makefile
index 231819640b0c..0bc0729de5a4 100644
--- a/tools/tools/net80211/w00t/redir/Makefile
+++ b/tools/tools/net80211/w00t/redir/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.include <../Makefile.inc>
diff --git a/tools/tools/net80211/w00t/redir/buddy.c b/tools/tools/net80211/w00t/redir/buddy.c
index 02107eca23ac..49b7662aa481 100644
--- a/tools/tools/net80211/w00t/redir/buddy.c
+++ b/tools/tools/net80211/w00t/redir/buddy.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/uio.h>
#include <sys/types.h>
diff --git a/tools/tools/net80211/w00t/redir/redir.c b/tools/tools/net80211/w00t/redir/redir.c
index ad574ea9a251..c34aed24cf0d 100644
--- a/tools/tools/net80211/w00t/redir/redir.c
+++ b/tools/tools/net80211/w00t/redir/redir.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/time.h>
#include <sys/types.h>
diff --git a/tools/tools/net80211/wesside/Makefile b/tools/tools/net80211/wesside/Makefile
index 5b20fa43b0d5..8badc634353a 100644
--- a/tools/tools/net80211/wesside/Makefile
+++ b/tools/tools/net80211/wesside/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SUBDIR= dics udps wesside
diff --git a/tools/tools/net80211/wesside/README b/tools/tools/net80211/wesside/README
index 559348de803d..c3be377d9b47 100644
--- a/tools/tools/net80211/wesside/README
+++ b/tools/tools/net80211/wesside/README
@@ -1,4 +1,3 @@
-$FreeBSD$
This is an implementation of the frag attack described in:
http://tapir.cs.ucl.ac.uk/bittau-wep.pdf
diff --git a/tools/tools/net80211/wesside/dics/Makefile b/tools/tools/net80211/wesside/dics/Makefile
index 96583cfac8da..ec94e0dc9889 100644
--- a/tools/tools/net80211/wesside/dics/Makefile
+++ b/tools/tools/net80211/wesside/dics/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= dics
BINDIR= /usr/local/bin
diff --git a/tools/tools/net80211/wesside/dics/dics.c b/tools/tools/net80211/wesside/dics/dics.c
index cbdff0c0fcf3..32d5f29567fe 100644
--- a/tools/tools/net80211/wesside/dics/dics.c
+++ b/tools/tools/net80211/wesside/dics/dics.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
#include <sys/socket.h>
diff --git a/tools/tools/net80211/wesside/udps/Makefile b/tools/tools/net80211/wesside/udps/Makefile
index b4dd203dd253..40177a533c2e 100644
--- a/tools/tools/net80211/wesside/udps/Makefile
+++ b/tools/tools/net80211/wesside/udps/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= udps
BINDIR= /usr/local/bin
diff --git a/tools/tools/net80211/wesside/udps/udps.c b/tools/tools/net80211/wesside/udps/udps.c
index 8ffd1f02609c..1f6ee628c436 100644
--- a/tools/tools/net80211/wesside/udps/udps.c
+++ b/tools/tools/net80211/wesside/udps/udps.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
#include <sys/socket.h>
diff --git a/tools/tools/net80211/wesside/wesside/Makefile b/tools/tools/net80211/wesside/wesside/Makefile
index 65942e5352fd..0c2bb0f42b23 100644
--- a/tools/tools/net80211/wesside/wesside/Makefile
+++ b/tools/tools/net80211/wesside/wesside/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= wesside
BINDIR= /usr/local/bin
diff --git a/tools/tools/net80211/wesside/wesside/aircrack-ptw-lib.c b/tools/tools/net80211/wesside/wesside/aircrack-ptw-lib.c
index fde09fd5f17b..a84f6f3914e4 100644
--- a/tools/tools/net80211/wesside/wesside/aircrack-ptw-lib.c
+++ b/tools/tools/net80211/wesside/wesside/aircrack-ptw-lib.c
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <string.h>
#include <stdio.h>
diff --git a/tools/tools/net80211/wesside/wesside/aircrack-ptw-lib.h b/tools/tools/net80211/wesside/wesside/aircrack-ptw-lib.h
index 3769a94ae2d0..d0c049fe25cd 100644
--- a/tools/tools/net80211/wesside/wesside/aircrack-ptw-lib.h
+++ b/tools/tools/net80211/wesside/wesside/aircrack-ptw-lib.h
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <stdint.h>
diff --git a/tools/tools/net80211/wesside/wesside/wesside.c b/tools/tools/net80211/wesside/wesside/wesside.c
index d1e6fd8fe6d7..84dde560da57 100644
--- a/tools/tools/net80211/wesside/wesside/wesside.c
+++ b/tools/tools/net80211/wesside/wesside/wesside.c
@@ -4,8 +4,6 @@
*
* XXX GENERAL: I DON'T CHECK FOR PACKET LENGTHS AND STUFF LIKE THAT and buffer
* overflows. this whole thing is experimental n e way.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/tools/net80211/wlaninject/Makefile b/tools/tools/net80211/wlaninject/Makefile
index b6bbeb5ab701..c072ef10e3b8 100644
--- a/tools/tools/net80211/wlaninject/Makefile
+++ b/tools/tools/net80211/wlaninject/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= wlaninject
BINDIR= /usr/local/bin
diff --git a/tools/tools/net80211/wlaninject/README b/tools/tools/net80211/wlaninject/README
index 16caa0148799..fd504a8036f5 100644
--- a/tools/tools/net80211/wlaninject/README
+++ b/tools/tools/net80211/wlaninject/README
@@ -1,4 +1,3 @@
-$FreeBSD$
This tool generates raw 802.11 frames. The resulting frame will
depend on the capabilities of the hardware. Some hardware mangles
diff --git a/tools/tools/net80211/wlaninject/wlaninject.c b/tools/tools/net80211/wlaninject/wlaninject.c
index 215182a95c7b..d5c98f0e3ee0 100644
--- a/tools/tools/net80211/wlaninject/wlaninject.c
+++ b/tools/tools/net80211/wlaninject/wlaninject.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <stdlib.h>
#include <stdio.h>
diff --git a/tools/tools/net80211/wlanstats/Makefile b/tools/tools/net80211/wlanstats/Makefile
index f4384c6d0709..dec8e84e1255 100644
--- a/tools/tools/net80211/wlanstats/Makefile
+++ b/tools/tools/net80211/wlanstats/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.include <bsd.compiler.mk>
diff --git a/tools/tools/net80211/wlanstats/main.c b/tools/tools/net80211/wlanstats/main.c
index 36da5c6b8e51..ac100a70622e 100644
--- a/tools/tools/net80211/wlanstats/main.c
+++ b/tools/tools/net80211/wlanstats/main.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
/*
@@ -170,18 +168,26 @@ main(int argc, char *argv[])
struct ether_addr *ea;
const uint8_t *mac = NULL;
const char *ifname;
+#if 0
int allnodes = 0;
+#endif
int c, mode;
ifname = getenv("WLAN");
if (ifname == NULL)
ifname = "wlan0";
wf = wlanstats_new(ifname, getfmt("default"));
+#if 0
while ((c = getopt(argc, argv, "ahi:lm:o:")) != -1) {
+#else
+ while ((c = getopt(argc, argv, "hi:lm:o:")) != -1) {
+#endif
switch (c) {
+#if 0
case 'a':
allnodes++;
break;
+#endif
case 'h':
usage();
exit(0);
diff --git a/tools/tools/net80211/wlanstats/wlanstats.c b/tools/tools/net80211/wlanstats/wlanstats.c
index 2f362a60a836..74b1e7ffc989 100644
--- a/tools/tools/net80211/wlanstats/wlanstats.c
+++ b/tools/tools/net80211/wlanstats/wlanstats.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/tools/net80211/wlanstats/wlanstats.h b/tools/tools/net80211/wlanstats/wlanstats.h
index d6ee97e23abb..8ab3c0558fd6 100644
--- a/tools/tools/net80211/wlanstats/wlanstats.h
+++ b/tools/tools/net80211/wlanstats/wlanstats.h
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#ifndef _WLANSTATS_H_
diff --git a/tools/tools/net80211/wlantxtime/Makefile b/tools/tools/net80211/wlantxtime/Makefile
index 87a852e4bd40..4948d818f466 100644
--- a/tools/tools/net80211/wlantxtime/Makefile
+++ b/tools/tools/net80211/wlantxtime/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= wlantxtime
BINDIR= /usr/local/bin
diff --git a/tools/tools/net80211/wlantxtime/wlantxtime.c b/tools/tools/net80211/wlantxtime/wlantxtime.c
index 90c5c8f60769..edcb4403cf88 100644
--- a/tools/tools/net80211/wlantxtime/wlantxtime.c
+++ b/tools/tools/net80211/wlantxtime/wlantxtime.c
@@ -24,8 +24,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
/*
* IEEE 802.11 PHY-related support.
*/
diff --git a/tools/tools/net80211/wlanwatch/Makefile b/tools/tools/net80211/wlanwatch/Makefile
index 7cd0550071b4..28a13096f450 100644
--- a/tools/tools/net80211/wlanwatch/Makefile
+++ b/tools/tools/net80211/wlanwatch/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= wlanwatch
BINDIR= /usr/local/bin
diff --git a/tools/tools/net80211/wlanwatch/wlanwatch.c b/tools/tools/net80211/wlanwatch/wlanwatch.c
index 7ff81cc1253a..6e3bfd798c2d 100644
--- a/tools/tools/net80211/wlanwatch/wlanwatch.c
+++ b/tools/tools/net80211/wlanwatch/wlanwatch.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
/*
@@ -195,9 +193,6 @@ routename(struct sockaddr *sa)
{
struct sockaddr_in6 sin6; /* use static var for safety */
int niflags = 0;
-#ifdef NI_WITHSCOPEID
- niflags = NI_WITHSCOPEID;
-#endif
memset(&sin6, 0, sizeof(sin6));
memcpy(&sin6, sa, sa->sa_len);
diff --git a/tools/tools/net80211/wlanwds/Makefile b/tools/tools/net80211/wlanwds/Makefile
index 7a011a980b13..0a2ab16381c7 100644
--- a/tools/tools/net80211/wlanwds/Makefile
+++ b/tools/tools/net80211/wlanwds/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= wlanwds
BINDIR= /usr/local/bin
diff --git a/tools/tools/net80211/wlanwds/wlanwds.c b/tools/tools/net80211/wlanwds/wlanwds.c
index cf1335663388..a9ca89e4d5b1 100644
--- a/tools/tools/net80211/wlanwds/wlanwds.c
+++ b/tools/tools/net80211/wlanwds/wlanwds.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/tools/netmap/Makefile b/tools/tools/netmap/Makefile
index acc52fd57557..c1346149310c 100644
--- a/tools/tools/netmap/Makefile
+++ b/tools/tools/netmap/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# For multiple programs using a single source file each,
# we can just define 'progs' and create custom targets.
diff --git a/tools/tools/netmap/README b/tools/tools/netmap/README
index ff84b11f2fcb..dfb194065d6f 100644
--- a/tools/tools/netmap/README
+++ b/tools/tools/netmap/README
@@ -1,4 +1,3 @@
-$FreeBSD$
This directory contains applications that use the netmap API
diff --git a/tools/tools/netmap/bridge.8 b/tools/tools/netmap/bridge.8
index b6314ece6664..d3720ff45a59 100644
--- a/tools/tools/netmap/bridge.8
+++ b/tools/tools/netmap/bridge.8
@@ -21,8 +21,6 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD$
-.\"
.Dd November 21, 2020
.Dt BRIDGE 8
.Os
diff --git a/tools/tools/netmap/bridge.c b/tools/tools/netmap/bridge.c
index 0c8f56265ff4..b8c6e786a3bf 100644
--- a/tools/tools/netmap/bridge.c
+++ b/tools/tools/netmap/bridge.c
@@ -5,8 +5,6 @@
*
* A netmap application to bridge two network interfaces,
* or one interface and the host stack.
- *
- * $FreeBSD$
*/
#include <libnetmap.h>
@@ -206,8 +204,6 @@ main(int argc, char **argv)
int loopback = 0;
int ch;
- fprintf(stderr, "%s built %s %s\n\n", argv[0], __DATE__, __TIME__);
-
while ((ch = getopt(argc, argv, "hb:ci:vw:L")) != -1) {
switch (ch) {
default:
diff --git a/tools/tools/netmap/ctrs.h b/tools/tools/netmap/ctrs.h
index eb4c4c9d4bfd..29e054442db0 100644
--- a/tools/tools/netmap/ctrs.h
+++ b/tools/tools/netmap/ctrs.h
@@ -1,7 +1,6 @@
#ifndef CTRS_H_
#define CTRS_H_
-/* $FreeBSD$ */
#include <sys/time.h>
diff --git a/tools/tools/netmap/lb.8 b/tools/tools/netmap/lb.8
index 15153e6ffbbe..1c08c03edb16 100644
--- a/tools/tools/netmap/lb.8
+++ b/tools/tools/netmap/lb.8
@@ -22,8 +22,6 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD$
-.\"
.Dd October 26, 2019
.Dt LB 8
.Os
diff --git a/tools/tools/netmap/lb.c b/tools/tools/netmap/lb.c
index 778360d9ed6a..b45e5274553c 100644
--- a/tools/tools/netmap/lb.c
+++ b/tools/tools/netmap/lb.c
@@ -22,7 +22,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-/* $FreeBSD$ */
#include <ctype.h>
#include <errno.h>
#include <inttypes.h>
@@ -388,7 +387,8 @@ static void sigint_h(int sig)
signal(SIGINT, SIG_DFL);
}
-static void usage()
+static void
+usage(void)
{
printf("usage: lb [options]\n");
printf("where options are:\n");
@@ -617,7 +617,6 @@ int main(int argc, char **argv)
int ch;
uint32_t i;
int rv;
- unsigned int iter = 0;
int poll_timeout = 10; /* default */
glob_arg.ifname[0] = '\0';
@@ -897,7 +896,6 @@ run:
while (!do_abort) {
u_int polli = 0;
- iter++;
for (i = 0; i < npipes; ++i) {
struct netmap_ring *ring = ports[i].ring;
diff --git a/tools/tools/netmap/nmreplay.8 b/tools/tools/netmap/nmreplay.8
index 8b7ffae5a3d9..5307ec6f7f92 100644
--- a/tools/tools/netmap/nmreplay.8
+++ b/tools/tools/netmap/nmreplay.8
@@ -22,8 +22,6 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD$
-.\"
.Dd December 21, 2018
.Dt NMREPLAY 8
.Os
diff --git a/tools/tools/netmap/nmreplay.c b/tools/tools/netmap/nmreplay.c
index e0a9e2146119..257157c48945 100644
--- a/tools/tools/netmap/nmreplay.c
+++ b/tools/tools/netmap/nmreplay.c
@@ -21,8 +21,6 @@
* 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.
- *
- * $FreeBSD$
*/
@@ -1249,6 +1247,8 @@ main(int argc, char **argv)
err += cmd_apply(delay_cfg, d[i], qs, &qs->c_delay);
err += cmd_apply(bw_cfg, b[i], qs, &qs->c_bw);
err += cmd_apply(loss_cfg, l[i], qs, &qs->c_loss);
+ if (err != 0)
+ exit(1);
}
pthread_create(&bp[0].cons_tid, NULL, nmreplay_main, (void*)&bp[0]);
@@ -1538,8 +1538,7 @@ uniform_delay_run(struct _qs *q, struct _cfg *arg)
{
uint64_t x = my_random24();
q->cur_delay = arg->d[0] + ((arg->d[2] * x) >> 24);
-#if 0 /* COMPUTE_STATS */
-#endif /* COMPUTE_STATS */
+
return 0;
}
diff --git a/tools/tools/netmap/pkt-gen.8 b/tools/tools/netmap/pkt-gen.8
index c3f0330e46ba..83643d749b4d 100644
--- a/tools/tools/netmap/pkt-gen.8
+++ b/tools/tools/netmap/pkt-gen.8
@@ -23,9 +23,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $FreeBSD$
-.\"
-.Dd November 21, 2020
+.Dd April 21, 2023
.Dt PKT-GEN 8
.Os
.Sh NAME
@@ -150,7 +148,7 @@ mode), a single RX ring (in
mode), or a TX/RX ring pair.
The number of
.Ar threads
-must be less than or equal to the number of TX (or RX) ring available
+must be less than or equal to the number of TX (or RX) rings available
in the device specified by
.Ar interface .
.It Fl T Ar report_ms
@@ -288,7 +286,8 @@ length of 128 bytes.
You must set the destination MAC address for
packets to be received by the target host.
.Bd -literal -offset indent
-pkt-gen -i netmap:ncxl0 -f tx -s 172.16.0.1:53 -d 172.16.1.3:53 -D 00:07:43:29:2a:e0
+pkt-gen -i netmap:ncxl0 -f tx -s 172.16.0.1:53 -d 172.16.1.3:53 \e
+-D 00:07:43:29:2a:e0
.Ed
.Sh SEE ALSO
.Xr netmap 4 ,
diff --git a/tools/tools/netmap/pkt-gen.c b/tools/tools/netmap/pkt-gen.c
index f43469cf7ad6..c17579a142b9 100644
--- a/tools/tools/netmap/pkt-gen.c
+++ b/tools/tools/netmap/pkt-gen.c
@@ -25,7 +25,6 @@
*/
/*
- * $FreeBSD$
* $Id: pkt-gen.c 12346 2013-06-12 17:36:25Z luigi $
*
* Example program to show how to build a multithreaded packet
@@ -283,6 +282,7 @@ struct glob_arg {
#define OPT_RANDOM_SRC 512
#define OPT_RANDOM_DST 1024
#define OPT_PPS_STATS 2048
+#define OPT_UPDATE_CSUM 4096
int dev_type;
#ifndef NO_PCAP
pcap_t *p;
@@ -684,6 +684,10 @@ source_hwaddr(const char *ifname, char *buf)
return (-1);
}
+ /* remove 'netmap:' prefix before comparing interfaces */
+ if (!strncmp(ifname, "netmap:", 7))
+ ifname = &ifname[7];
+
for (ifap = ifaphead; ifap; ifap = ifap->ifa_next) {
struct sockaddr_dl *sdl =
(struct sockaddr_dl *)ifap->ifa_addr;
@@ -1001,6 +1005,85 @@ update_addresses(struct pkt *pkt, struct targ *t)
else
update_ip6(pkt, t);
}
+
+static void
+update_ip_size(struct pkt *pkt, int size)
+{
+ struct ip ip;
+ struct udphdr udp;
+ uint16_t oiplen, niplen;
+ uint16_t nudplen;
+ uint16_t ip_sum = 0;
+
+ memcpy(&ip, &pkt->ipv4.ip, sizeof(ip));
+ memcpy(&udp, &pkt->ipv4.udp, sizeof(udp));
+
+ oiplen = ntohs(ip.ip_len);
+ niplen = size - sizeof(struct ether_header);
+ ip.ip_len = htons(niplen);
+ nudplen = niplen - sizeof(struct ip);
+ udp.uh_ulen = htons(nudplen);
+ ip_sum = new_udp_sum(ip_sum, oiplen, niplen);
+
+ /* update checksums */
+ if (ip_sum != 0)
+ ip.ip_sum = ~cksum_add(~ip.ip_sum, htons(ip_sum));
+
+ udp.uh_sum = 0;
+ /* Magic: taken from sbin/dhclient/packet.c */
+ udp.uh_sum = wrapsum(
+ checksum(&udp, sizeof(udp), /* udp header */
+ checksum(pkt->ipv4.body, /* udp payload */
+ nudplen - sizeof(udp),
+ checksum(&ip.ip_src, /* pseudo header */
+ 2 * sizeof(ip.ip_src),
+ IPPROTO_UDP + (u_int32_t)ntohs(udp.uh_ulen)))));
+
+ memcpy(&pkt->ipv4.ip, &ip, sizeof(ip));
+ memcpy(&pkt->ipv4.udp, &udp, sizeof(udp));
+}
+
+static void
+update_ip6_size(struct pkt *pkt, int size)
+{
+ struct ip6_hdr ip6;
+ struct udphdr udp;
+ uint16_t niplen, nudplen;
+ uint32_t csum;
+
+ memcpy(&ip6, &pkt->ipv6.ip, sizeof(ip6));
+ memcpy(&udp, &pkt->ipv6.udp, sizeof(udp));
+
+ nudplen = niplen = size - sizeof(struct ether_header) - sizeof(ip6);
+ ip6.ip6_plen = htons(niplen);
+ udp.uh_ulen = htons(nudplen);
+
+ /* Save part of pseudo header checksum into csum */
+ udp.uh_sum = 0;
+ csum = IPPROTO_UDP << 24;
+ csum = checksum(&csum, sizeof(csum), nudplen);
+ udp.uh_sum = wrapsum(
+ checksum(&udp, sizeof(udp), /* udp header */
+ checksum(pkt->ipv6.body, /* udp payload */
+ nudplen - sizeof(udp),
+ checksum(&pkt->ipv6.ip.ip6_src, /* pseudo header */
+ 2 * sizeof(pkt->ipv6.ip.ip6_src), csum))));
+
+ memcpy(&pkt->ipv6.ip, &ip6, sizeof(ip6));
+ memcpy(&pkt->ipv6.udp, &udp, sizeof(udp));
+}
+
+static void
+update_size(struct pkt *pkt, struct targ *t, int size)
+{
+ if (t->g->options & OPT_UPDATE_CSUM) {
+ if (t->g->af == AF_INET)
+ update_ip_size(pkt, size);
+ else
+ update_ip6_size(pkt, size);
+ }
+}
+
/*
* initialize one packet and prepare for the next one.
* The copy could be done better instead of repeating it each time.
@@ -1302,7 +1385,7 @@ ping_body(void *data)
struct targ *targ = (struct targ *) data;
struct pollfd pfd = { .fd = targ->fd, .events = POLLIN };
struct netmap_if *nifp = targ->nmd->nifp;
- int i, m, rx = 0;
+ int i, m;
void *frame;
int size;
struct timespec ts, now, last_print;
@@ -1322,6 +1405,10 @@ ping_body(void *data)
return NULL;
}
+ if (targ->g->af == AF_INET6) {
+ D("Warning: ping-pong with IPv6 not supported");
+ }
+
bzero(&buckets, sizeof(buckets));
clock_gettime(CLOCK_REALTIME_PRECISE, &last_print);
now = last_print;
@@ -1391,7 +1478,9 @@ ping_body(void *data)
}
#endif /* BUSYWAIT */
/* see what we got back */
- rx = 0;
+#ifdef BUSYWAIT
+ int rx = 0;
+#endif
for (i = targ->nmd->first_rx_ring;
i <= targ->nmd->last_rx_ring; i++) {
ring = NETMAP_RXRING(nifp, i);
@@ -1426,7 +1515,9 @@ ping_body(void *data)
buckets[pos]++;
/* now store it in a bucket */
ring->head = ring->cur = nm_ring_next(ring, ring->head);
+#ifdef BUSYWAIT
rx++;
+#endif
}
}
//D("tx %d rx %d", sent, rx);
@@ -1494,7 +1585,7 @@ pong_body(void *data)
struct pollfd pfd = { .fd = targ->fd, .events = POLLIN };
struct netmap_if *nifp = targ->nmd->nifp;
struct netmap_ring *txring, *rxring;
- int i, rx = 0;
+ int i;
uint64_t sent = 0, n = targ->g->npackets;
if (targ->g->nthreads > 1) {
@@ -1504,6 +1595,11 @@ pong_body(void *data)
if (n > 0)
D("understood ponger %llu but don't know how to do it",
(unsigned long long)n);
+
+ if (targ->g->af == AF_INET6) {
+ D("Warning: ping-pong with IPv6 not supported");
+ }
+
while (!targ->cancel && (n == 0 || sent < n)) {
uint32_t txhead, txavail;
//#define BUSYWAIT
@@ -1531,7 +1627,6 @@ pong_body(void *data)
src = NETMAP_BUF(rxring, slot->buf_idx);
//D("got pkt %p of size %d", src, slot->len);
rxring->head = rxring->cur = nm_ring_next(rxring, head);
- rx++;
if (txavail == 0)
continue;
dst = NETMAP_BUF(txring,
@@ -1547,7 +1642,15 @@ pong_body(void *data)
dpkt[3] = spkt[0];
dpkt[4] = spkt[1];
dpkt[5] = spkt[2];
+ /* swap source and destination IPv4 */
+ if (spkt[6] == htons(ETHERTYPE_IP)) {
+ dpkt[13] = spkt[15];
+ dpkt[14] = spkt[16];
+ dpkt[15] = spkt[13];
+ dpkt[16] = spkt[14];
+ }
txring->slot[txhead].len = slot->len;
+ //dump_payload(dst, slot->len, txring, txhead);
txhead = nm_ring_next(txring, txhead);
txavail--;
sent++;
@@ -1558,7 +1661,6 @@ pong_body(void *data)
#ifdef BUSYWAIT
ioctl(pfd.fd, NIOCTXSYNC, NULL);
#endif
- //D("tx %d rx %d", sent, rx);
}
targ->completed = 1;
@@ -1581,7 +1683,7 @@ sender_body(void *data)
uint64_t n = targ->g->npackets / targ->g->nthreads;
uint64_t sent = 0;
uint64_t event = 0;
- int options = targ->g->options | OPT_COPY;
+ int options = targ->g->options;
struct timespec nexttime = { 0, 0}; // XXX silence compiler
int rate_limit = targ->g->tx_rate;
struct pkt *pkt = &targ->pkt;
@@ -1655,6 +1757,19 @@ sender_body(void *data)
targ->frags++;
}
D("frags %u frag_size %u", targ->frags, targ->frag_size);
+
+ /* mark all slots of all rings as changed so initial copy will be done */
+ for (i = targ->nmd->first_tx_ring; i <= targ->nmd->last_tx_ring; i++) {
+ uint32_t j;
+ struct netmap_slot *slot;
+
+ txring = NETMAP_TXRING(nifp, i);
+ for (j = 0; j < txring->num_slots; j++) {
+ slot = &txring->slot[j];
+ slot->flags = NS_BUF_CHANGED;
+ }
+ }
+
while (!targ->cancel && (n == 0 || sent < n)) {
int rv;
@@ -1691,10 +1806,6 @@ sender_body(void *data)
/*
* scan our queues and send on those with room
*/
- if (options & OPT_COPY && sent > 100000 && !(targ->g->options & OPT_COPY) ) {
- D("drop copy");
- options &= ~OPT_COPY;
- }
for (i = targ->nmd->first_tx_ring; i <= targ->nmd->last_tx_ring; i++) {
int m;
uint64_t limit = rate_limit ? tosend : targ->g->burst;
@@ -1712,6 +1823,7 @@ sender_body(void *data)
size = nrand48(targ->seed) %
(targ->g->pkt_size - targ->g->pkt_min_size) +
targ->g->pkt_min_size;
+ update_size(pkt, targ, size);
}
m = send_packets(txring, pkt, frame, size, targ,
limit, options);
@@ -2496,6 +2608,7 @@ usage(int errcode)
" OPT_RANDOM_SRC 512\n"
" OPT_RANDOM_DST 1024\n"
" OPT_PPS_STATS 2048\n"
+" OPT_UPDATE_CSUM 4096\n"
"",
cmd);
exit(errcode);
@@ -2792,7 +2905,7 @@ tap_alloc(char *dev)
/* try to create the device */
if( (err = ioctl(fd, TUNSETIFF, (void *) &ifr)) < 0 ) {
- D("failed to to a TUNSETIFF: %s", strerror(errno));
+ D("failed to do a TUNSETIFF: %s", strerror(errno));
close(fd);
return err;
}
@@ -3252,8 +3365,8 @@ out:
g.tx_period.tv_nsec = g.tx_period.tv_nsec % 1000000000;
}
if (g.td_type == TD_TYPE_SENDER)
- D("Sending %d packets every %ld.%09ld s",
- g.burst, g.tx_period.tv_sec, g.tx_period.tv_nsec);
+ D("Sending %d packets every %jd.%09ld s",
+ g.burst, (intmax_t)g.tx_period.tv_sec, g.tx_period.tv_nsec);
/* Install ^C handler. */
global_nthreads = g.nthreads;
sigemptyset(&ss);
diff --git a/tools/tools/netmap/pkt_hash.c b/tools/tools/netmap/pkt_hash.c
index eb9704fd2058..0016544f9090 100644
--- a/tools/tools/netmap/pkt_hash.c
+++ b/tools/tools/netmap/pkt_hash.c
@@ -25,7 +25,6 @@
** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
** POSSIBILITY OF SUCH DAMAGE.
**/
-/* $FreeBSD$ */
/* for func prototypes */
#include "pkt_hash.h"
diff --git a/tools/tools/netmap/pkt_hash.h b/tools/tools/netmap/pkt_hash.h
index 7371f074079f..1f73ff97ecb0 100644
--- a/tools/tools/netmap/pkt_hash.h
+++ b/tools/tools/netmap/pkt_hash.h
@@ -25,7 +25,6 @@
** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
** POSSIBILITY OF SUCH DAMAGE.
**/
-/* $FreeBSD$ */
#ifndef LB_PKT_HASH_H
#define LB_PKT_HASH_H
/*---------------------------------------------------------------------*/
diff --git a/tools/tools/netrate/Makefile b/tools/tools/netrate/Makefile
index 8fbd75e21976..095383506ef2 100644
--- a/tools/tools/netrate/Makefile
+++ b/tools/tools/netrate/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
SUBDIR= netreceive netsend netblast
diff --git a/tools/tools/netrate/Makefile.inc b/tools/tools/netrate/Makefile.inc
index 3b1228c2879a..59704fbd89de 100644
--- a/tools/tools/netrate/Makefile.inc
+++ b/tools/tools/netrate/Makefile.inc
@@ -1,4 +1,3 @@
-# $FreeBSD$
WARNS?= 5
WFORMAT?= 2
diff --git a/tools/tools/netrate/README b/tools/tools/netrate/README
index ff249621c5d0..8fc4765fd114 100644
--- a/tools/tools/netrate/README
+++ b/tools/tools/netrate/README
@@ -53,5 +53,3 @@ license:
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-
-$FreeBSD$
diff --git a/tools/tools/netrate/http/Makefile b/tools/tools/netrate/http/Makefile
index f73058794bc5..cfdea3e09753 100644
--- a/tools/tools/netrate/http/Makefile
+++ b/tools/tools/netrate/http/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= http
MAN=
diff --git a/tools/tools/netrate/http/http.c b/tools/tools/netrate/http/http.c
index f70c8dd2e0d0..07fdcc992772 100644
--- a/tools/tools/netrate/http/http.c
+++ b/tools/tools/netrate/http/http.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/tools/netrate/httpd/Makefile b/tools/tools/netrate/httpd/Makefile
index 6acbe64ecb59..5282df918de6 100644
--- a/tools/tools/netrate/httpd/Makefile
+++ b/tools/tools/netrate/httpd/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= httpd
MAN=
diff --git a/tools/tools/netrate/httpd/httpd.c b/tools/tools/netrate/httpd/httpd.c
index 3e7a67212c20..3034c5c7f590 100644
--- a/tools/tools/netrate/httpd/httpd.c
+++ b/tools/tools/netrate/httpd/httpd.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/tools/netrate/juggle/Makefile b/tools/tools/netrate/juggle/Makefile
index f7b7afdf36d0..7b624d7e4e74 100644
--- a/tools/tools/netrate/juggle/Makefile
+++ b/tools/tools/netrate/juggle/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= juggle
MAN=
diff --git a/tools/tools/netrate/juggle/juggle.c b/tools/tools/netrate/juggle/juggle.c
index 226f34ad301a..c3c1e21c3b15 100644
--- a/tools/tools/netrate/juggle/juggle.c
+++ b/tools/tools/netrate/juggle/juggle.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/tools/netrate/netblast/Makefile b/tools/tools/netrate/netblast/Makefile
index 5911183355c3..0b1b6eb4bf71 100644
--- a/tools/tools/netrate/netblast/Makefile
+++ b/tools/tools/netrate/netblast/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= netblast
diff --git a/tools/tools/netrate/netblast/netblast.c b/tools/tools/netrate/netblast/netblast.c
index bf1f3ae67604..bf31317a0d57 100644
--- a/tools/tools/netrate/netblast/netblast.c
+++ b/tools/tools/netrate/netblast/netblast.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/endian.h>
diff --git a/tools/tools/netrate/netreceive/Makefile b/tools/tools/netrate/netreceive/Makefile
index 43489e572242..d4a421b557f5 100644
--- a/tools/tools/netrate/netreceive/Makefile
+++ b/tools/tools/netrate/netreceive/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= netreceive
diff --git a/tools/tools/netrate/netreceive/netreceive.c b/tools/tools/netrate/netreceive/netreceive.c
index a82cefcf920a..adef8aeaa255 100644
--- a/tools/tools/netrate/netreceive/netreceive.c
+++ b/tools/tools/netrate/netreceive/netreceive.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/tools/netrate/netsend/Makefile b/tools/tools/netrate/netsend/Makefile
index 5f11f837b37b..a4c4ec187b8b 100644
--- a/tools/tools/netrate/netsend/Makefile
+++ b/tools/tools/netrate/netsend/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
CFLAGS+= -Wall
diff --git a/tools/tools/netrate/netsend/netsend.c b/tools/tools/netrate/netsend/netsend.c
index 683c82304bc0..07c20145320c 100644
--- a/tools/tools/netrate/netsend/netsend.c
+++ b/tools/tools/netrate/netsend/netsend.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/endian.h>
diff --git a/tools/tools/netrate/tcpconnect/Makefile b/tools/tools/netrate/tcpconnect/Makefile
index 59375428c6e0..3686c823d89c 100644
--- a/tools/tools/netrate/tcpconnect/Makefile
+++ b/tools/tools/netrate/tcpconnect/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= tcpconnect
MAN=
diff --git a/tools/tools/netrate/tcpconnect/tcpconnect.c b/tools/tools/netrate/tcpconnect/tcpconnect.c
index 13d32421129b..d5d9ac3e1140 100644
--- a/tools/tools/netrate/tcpconnect/tcpconnect.c
+++ b/tools/tools/netrate/tcpconnect/tcpconnect.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/tools/netrate/tcpp/Makefile b/tools/tools/netrate/tcpp/Makefile
index 828e799ecebf..79ee56b8f7cf 100644
--- a/tools/tools/netrate/tcpp/Makefile
+++ b/tools/tools/netrate/tcpp/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= tcpp
INCS= tcpp.h
diff --git a/tools/tools/netrate/tcpp/README b/tools/tools/netrate/tcpp/README
index 3c088c0a3b79..6817bdf8ca25 100644
--- a/tools/tools/netrate/tcpp/README
+++ b/tools/tools/netrate/tcpp/README
@@ -103,6 +103,3 @@ kldload if_cxgb
# Consider turning off TSO and/or adjusting the MTU for some scenarios:
ifconfig cxgb0 -tso
ifconfig cxgb0 mtu 1500
-
-
-$FreeBSD$
diff --git a/tools/tools/netrate/tcpp/parallelism.csh b/tools/tools/netrate/tcpp/parallelism.csh
index 2534b01b5a0f..00440eada6d4 100644
--- a/tools/tools/netrate/tcpp/parallelism.csh
+++ b/tools/tools/netrate/tcpp/parallelism.csh
@@ -1,6 +1,5 @@
#!/bin/csh
#
-# $FreeBSD$
#
# Run tcpp -s -p 8 on the server, then this on the client.
#
diff --git a/tools/tools/netrate/tcpp/runit.pl b/tools/tools/netrate/tcpp/runit.pl
index d0d52277f8ab..8664e0aca1f2 100755
--- a/tools/tools/netrate/tcpp/runit.pl
+++ b/tools/tools/netrate/tcpp/runit.pl
@@ -1,6 +1,5 @@
#!/usr/bin/perl
#
-# $FreeBSD$
#
if ($#ARGV != 0) {
diff --git a/tools/tools/netrate/tcpp/tcpp.c b/tools/tools/netrate/tcpp/tcpp.c
index a194c3d77fdb..dfd9c62b309f 100644
--- a/tools/tools/netrate/tcpp/tcpp.c
+++ b/tools/tools/netrate/tcpp/tcpp.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/tools/netrate/tcpp/tcpp.h b/tools/tools/netrate/tcpp/tcpp.h
index ccb4e6f3ece9..81112761d627 100644
--- a/tools/tools/netrate/tcpp/tcpp.h
+++ b/tools/tools/netrate/tcpp/tcpp.h
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#ifndef TCPP_H
diff --git a/tools/tools/netrate/tcpp/tcpp_client.c b/tools/tools/netrate/tcpp/tcpp_client.c
index e88976bedf8b..bf12f194e2b2 100644
--- a/tools/tools/netrate/tcpp/tcpp_client.c
+++ b/tools/tools/netrate/tcpp/tcpp_client.c
@@ -26,8 +26,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/tools/netrate/tcpp/tcpp_server.c b/tools/tools/netrate/tcpp/tcpp_server.c
index 0a79fbba5e30..7c35b94160ac 100644
--- a/tools/tools/netrate/tcpp/tcpp_server.c
+++ b/tools/tools/netrate/tcpp/tcpp_server.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
@@ -54,7 +52,7 @@
* Server side -- create a pool of processes, each listening on its own TCP
* port number for new connections. The first 8 bytes of each connection
* will be a network byte order length, then there will be that number of
- * bytes of data. We use non-blocking sockets with kqueue to to avoid the
+ * bytes of data. We use non-blocking sockets with kqueue to avoid the
* overhead of threading or more than one process per processor, which makes
* things a bit awkward when dealing with data we care about. As such, we
* read into a small character buffer which we then convert to a length once
diff --git a/tools/tools/netrate/tcpp/tcpp_util.c b/tools/tools/netrate/tcpp/tcpp_util.c
index 92bfc75d05cb..426bc6ffbdca 100644
--- a/tools/tools/netrate/tcpp/tcpp_util.c
+++ b/tools/tools/netrate/tcpp/tcpp_util.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/tools/netrate/tcpreceive/Makefile b/tools/tools/netrate/tcpreceive/Makefile
index 8142a2dea97e..1564bd5a41ec 100644
--- a/tools/tools/netrate/tcpreceive/Makefile
+++ b/tools/tools/netrate/tcpreceive/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= tcpreceive
MAN=
diff --git a/tools/tools/netrate/tcpreceive/tcpreceive.c b/tools/tools/netrate/tcpreceive/tcpreceive.c
index 09e60a306de2..45841cc1141a 100644
--- a/tools/tools/netrate/tcpreceive/tcpreceive.c
+++ b/tools/tools/netrate/tcpreceive/tcpreceive.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/tools/notescheck/Makefile b/tools/tools/notescheck/Makefile
index 8899a0abd96b..c86b2ee41bc1 100644
--- a/tools/tools/notescheck/Makefile
+++ b/tools/tools/notescheck/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SCRIPTS= notescheck.py
diff --git a/tools/tools/notescheck/notescheck.py b/tools/tools/notescheck/notescheck.py
index 8e233870b261..98190149438d 100644
--- a/tools/tools/notescheck/notescheck.py
+++ b/tools/tools/notescheck/notescheck.py
@@ -5,7 +5,6 @@
# such as options or devices that are not specified in any NOTES files
# or MI devices specified in MD NOTES files.
#
-# $FreeBSD$
from __future__ import print_function
diff --git a/tools/tools/npe/Makefile b/tools/tools/npe/Makefile
index 4551a4b90d33..67634bf343f6 100644
--- a/tools/tools/npe/Makefile
+++ b/tools/tools/npe/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SUBDIR= npestats
diff --git a/tools/tools/npe/npestats/Makefile b/tools/tools/npe/npestats/Makefile
index 740d3594cdcf..3c1cca48f903 100644
--- a/tools/tools/npe/npestats/Makefile
+++ b/tools/tools/npe/npestats/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= npestats
SRCS= main.c npestats.c
diff --git a/tools/tools/npe/npestats/main.c b/tools/tools/npe/npestats/main.c
index 8ffcbc320cf2..c80ce7ecf1da 100644
--- a/tools/tools/npe/npestats/main.c
+++ b/tools/tools/npe/npestats/main.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
diff --git a/tools/tools/npe/npestats/npestats.c b/tools/tools/npe/npestats/npestats.c
index 8fb5bc5d8f24..6ecb12f42f37 100644
--- a/tools/tools/npe/npestats/npestats.c
+++ b/tools/tools/npe/npestats/npestats.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/tools/npe/npestats/npestats.h b/tools/tools/npe/npestats/npestats.h
index 192a5f65477f..c6120b548a1c 100644
--- a/tools/tools/npe/npestats/npestats.h
+++ b/tools/tools/npe/npestats/npestats.h
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#ifndef _NPESTATS_H_
diff --git a/tools/tools/pciroms/Makefile b/tools/tools/pciroms/Makefile
index b317c4a72df9..87cc16d01055 100644
--- a/tools/tools/pciroms/Makefile
+++ b/tools/tools/pciroms/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= pciroms
diff --git a/tools/tools/pciroms/pciroms.c b/tools/tools/pciroms/pciroms.c
index 9919c2087961..48bd7be75eef 100644
--- a/tools/tools/pciroms/pciroms.c
+++ b/tools/tools/pciroms/pciroms.c
@@ -24,9 +24,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/pciio.h>
diff --git a/tools/tools/perforce/awkdiff b/tools/tools/perforce/awkdiff
deleted file mode 100755
index 380d6fa26f93..000000000000
--- a/tools/tools/perforce/awkdiff
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/awk -f
-#
-# $FreeBSD$
-#
-
-BEGIN {
- #parentpath = "//depot/vendor/freebsd/src/sys/"
- #childpath = "//depot/projects/opencrypto/"
-}
-$1 == "====" {
- last_line = $0
- last_filename = $2
- #gsub(parentpath, "", last_filename)
- gsub(/#[0-9]*$/, "", last_filename)
- did_sub = 0
-}
-$1 == "====" && $2 == "<none>" {
- new_file = $4
- gsub(childpath, "", new_file)
- gsub(/#[0-9]*$/, "", new_file)
- cmd = "p4 print \"" $4 "\" | sed '/^\\/\\/depot/d' | diff -u /dev/null /dev/stdin | sed s@/dev/stdin@" new_file "@"
- #print "x" cmd "x"
- system(cmd)
-}
-$1 == "====" && $4 == "<none>" {
- del_file = $2
- gsub(parentpath, "", del_file)
- gsub(/#[0-9]*$/, "", del_file)
- cmd = "p4 print \"" $2 "\" | sed '/^\\/\\/depot/d' | diff -u /dev/stdin /dev/null | sed s@/dev/stdin@" del_file "@"
- #print "x" cmd "x"
- system(cmd)
-}
-$1 != "====" {
- if (!did_sub && (($1 == "***************") || ($1 == "@@"))) {
- print "--- ", last_filename ".orig"
- print "+++ ", last_filename
- print $0
- did_sub = 1
- } else {
- print $0
- }
-}
diff --git a/tools/tools/perforce/p4diffbranch b/tools/tools/perforce/p4diffbranch
deleted file mode 100755
index 9d29f23c5019..000000000000
--- a/tools/tools/perforce/p4diffbranch
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh -
-#
-# $FreeBSD$
-#
-
-if [ x"$#" != x"2" ]; then
- echo "Usage: $0 <branch> <changesetnum>"
- exit 1
-fi
-
-basescript="$(realpath "$0")"
-awkdiff="${basescript%/*}/awkdiff"
-
-branch="$1"
-changenum="$2"
-
-p4 branch -o "$branch" |
- awk ' /^View:/ { doview = 1; next; } /^[^ ]/ {doview = 0; next; } $1 && $2 && doview == 1 { system("p4 diff2 -du " $1 "@" changenum " " $2) }' changenum="$changenum" |
- "$awkdiff"
diff --git a/tools/tools/pirtool/Makefile b/tools/tools/pirtool/Makefile
index 7346d2c6a319..df60b2d9ce8c 100644
--- a/tools/tools/pirtool/Makefile
+++ b/tools/tools/pirtool/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= pirtool
SRCS= pirtool.c
diff --git a/tools/tools/pirtool/pirtable.h b/tools/tools/pirtool/pirtable.h
index 6435531a3937..5f02653a0574 100644
--- a/tools/tools/pirtool/pirtable.h
+++ b/tools/tools/pirtool/pirtable.h
@@ -27,8 +27,6 @@
* 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.
- *
- * $FreeBSD$
*/
/*
diff --git a/tools/tools/pirtool/pirtool.c b/tools/tools/pirtool/pirtool.c
index 3484eb5663cc..03659dbb56dd 100644
--- a/tools/tools/pirtool/pirtool.c
+++ b/tools/tools/pirtool/pirtool.c
@@ -29,8 +29,6 @@
* POSSIBILITY OF SUCH DAMAGE.
*
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
#include <sys/types.h>
#include <sys/ioctl.h>
diff --git a/tools/tools/portsinfo/portsinfo.sh b/tools/tools/portsinfo/portsinfo.sh
deleted file mode 100644
index a5e700b50efe..000000000000
--- a/tools/tools/portsinfo/portsinfo.sh
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/bin/sh
-# Copyright (c) April 1997 Wolfram Schneider <wosch@FreeBSD.org>, Berlin.
-#
-# portsinfo - Generate list of new ports for last two weeks.
-#
-# $FreeBSD$
-
-PATH=/bin:/usr/bin:/usr/local/bin:$PATH; export PATH
-
-host=https://www.freebsd.org
-url=$host/cgi/ports.cgi
-time='?type=new&time=2+week+ago&sektion=all'
-time2='?type=changed&time=2+week+ago&sektion=all'
-info=yes
-
-if [ x"$info" = xyes ]; then
-
-cat <<'EOF'
-Introduction
-------------
-
-The FreeBSD Ports Collection offers a simple way for users and
-administrators to install applications. Each "port" listed here
-contains any patches necessary to make the original application source
-code compile and run on FreeBSD. Installing an application is as
-simple as downloading the port, unpacking it and typing make in the
-port directory. The Makefile automatically fetches the application
-source code, either from a local disk or via ftp, unpacks it on your
-system, applies the patches, and compiles. If all goes well, simply
-type make install to install the application.
-
-For more information about using ports, see the ports collection
-
- https://www.freebsd.org/handbook/ports.html
-and
- https://www.freebsd.org/ports/
-
-EOF
-
- lynx -dump $host/ports/ |
- perl -ne '/^[ ]*There are currently/ && s/^\s+// && print && exit'
-
-cat <<EOF
-
-
-New ports added last two weeks
-------------------------------
-
-EOF
-
-
-fi
-
-
-lynx -nolist -dump -reload -nostatus "$url$time" |
- grep -v "Description :" |
-perl -ne 'print if (/^\s*Category/ .. /__________________/)' |
- grep -v ________ |
-perl -ne 'if (/^\s*Category/) {
- print; for(1..50) {print "="}; print "\n";
- } else { print}'
-
-cat <<EOF
-
-
-Updated ports last two weeks
------------------------------------
-
-EOF
-
-lynx -nolist -dump -reload -nostatus "$url$time2" |
- grep -v "Description :" |
-perl -ne 's/\[INLINE\]\s*//g; print if (/Category/ .. /XXXXYYYYZZZZ/)' |
-perl -ne 'if (/^\s*Category/) {
- print; for(1..50) {print "="}; print "\n";
- } else { print}'
-
-cat <<EOF
-
-This information was produced by
- $url
-
-EOF
-
diff --git a/tools/tools/qrndtest/Makefile b/tools/tools/qrndtest/Makefile
index 741414439641..5490be244c6a 100644
--- a/tools/tools/qrndtest/Makefile
+++ b/tools/tools/qrndtest/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG = qrndtest
diff --git a/tools/tools/qrndtest/r.c b/tools/tools/qrndtest/r.c
index edfafa778015..3afcd94efaa3 100644
--- a/tools/tools/qrndtest/r.c
+++ b/tools/tools/qrndtest/r.c
@@ -23,8 +23,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD$
- *
*/
#include <stdint.h>
diff --git a/tools/tools/release/chk_dokern.sh_and_drivers.conf b/tools/tools/release/chk_dokern.sh_and_drivers.conf
index a47c700e152b..3b5427a757ec 100644
--- a/tools/tools/release/chk_dokern.sh_and_drivers.conf
+++ b/tools/tools/release/chk_dokern.sh_and_drivers.conf
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
echo Checking */drivers.conf ...
for f in */drivers.conf; do
diff --git a/tools/tools/scsi-defects/scsi-defects.pl b/tools/tools/scsi-defects/scsi-defects.pl
index 0827182d6e5f..6b11b8cf94b6 100755
--- a/tools/tools/scsi-defects/scsi-defects.pl
+++ b/tools/tools/scsi-defects/scsi-defects.pl
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
#
diff --git a/tools/tools/shlib-compat/Makefile.sysfake b/tools/tools/shlib-compat/Makefile.sysfake
index bbd869715fa4..9ef5a3a752da 100644
--- a/tools/tools/shlib-compat/Makefile.sysfake
+++ b/tools/tools/shlib-compat/Makefile.sysfake
@@ -1,4 +1,3 @@
-# $FreeBSD$
SRCS+= sysfake.c
CLEANFILES+= sysfake.c
diff --git a/tools/tools/shlib-compat/makesyscalls-fake.sh b/tools/tools/shlib-compat/makesyscalls-fake.sh
index 1d073dabb1b7..7e2a12a661ac 100755
--- a/tools/tools/shlib-compat/makesyscalls-fake.sh
+++ b/tools/tools/shlib-compat/makesyscalls-fake.sh
@@ -1,6 +1,5 @@
#! /bin/sh -
#
-# $FreeBSD$
set -e
@@ -82,7 +81,7 @@ s/\$//g
printf "struct msqid_ds_old;\n"
printf "struct shmid_ds_old;\n"
# TODO
- printf "struct ucontext4;\n"
+ printf "struct freebsd4_ucontext;\n"
printf "struct sctp_sndrcvinfo;\n"
printf "\n"
}
diff --git a/tools/tools/shlib-compat/shlib-compat-dirs.sh b/tools/tools/shlib-compat/shlib-compat-dirs.sh
index 21ff309874a5..0b33b9df7a9d 100755
--- a/tools/tools/shlib-compat/shlib-compat-dirs.sh
+++ b/tools/tools/shlib-compat/shlib-compat-dirs.sh
@@ -1,6 +1,5 @@
#!/bin/sh -e
#
-# $FreeBSD$
SHLIB_COMPAT=$(dirname $0)/shlib-compat.py
diff --git a/tools/tools/shlib-compat/shlib-compat.py b/tools/tools/shlib-compat/shlib-compat.py
index 5df55244c74e..ba506f6c0c24 100755
--- a/tools/tools/shlib-compat/shlib-compat.py
+++ b/tools/tools/shlib-compat/shlib-compat.py
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
from __future__ import print_function
import os
diff --git a/tools/tools/shlib-compat/test/Makefile b/tools/tools/shlib-compat/test/Makefile
index f4a354826b10..6af16f2f9e61 100644
--- a/tools/tools/shlib-compat/test/Makefile
+++ b/tools/tools/shlib-compat/test/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SUBDIR= libtest1 \
libtest2 \
diff --git a/tools/tools/shlib-compat/test/Makefile.inc b/tools/tools/shlib-compat/test/Makefile.inc
index e1a0719a89f4..6417cdc826fb 100644
--- a/tools/tools/shlib-compat/test/Makefile.inc
+++ b/tools/tools/shlib-compat/test/Makefile.inc
@@ -1,4 +1,3 @@
-# $FreeBSD$
LIB= test${TESTNUM}
SHLIB_MAJOR= 0
diff --git a/tools/tools/shlib-compat/test/Versions.def b/tools/tools/shlib-compat/test/Versions.def
index 0f46445cc124..94126e488a9a 100644
--- a/tools/tools/shlib-compat/test/Versions.def
+++ b/tools/tools/shlib-compat/test/Versions.def
@@ -1,4 +1,3 @@
-# $FreeBSD$
TEST_1.0 {
};
diff --git a/tools/tools/shlib-compat/test/libtest1/Makefile b/tools/tools/shlib-compat/test/libtest1/Makefile
index 32d77d4f31e1..36b4e7024397 100644
--- a/tools/tools/shlib-compat/test/libtest1/Makefile
+++ b/tools/tools/shlib-compat/test/libtest1/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
TESTNUM= 1
diff --git a/tools/tools/shlib-compat/test/libtest1/Symbol.map b/tools/tools/shlib-compat/test/libtest1/Symbol.map
index 67649ae01868..5b5bcec8853f 100644
--- a/tools/tools/shlib-compat/test/libtest1/Symbol.map
+++ b/tools/tools/shlib-compat/test/libtest1/Symbol.map
@@ -1,5 +1,4 @@
/*
- * $FreeBSD$
*/
TEST_1.0 {
diff --git a/tools/tools/shlib-compat/test/libtest1/test.c b/tools/tools/shlib-compat/test/libtest1/test.c
index dc3a561d6782..73789bdb67ba 100644
--- a/tools/tools/shlib-compat/test/libtest1/test.c
+++ b/tools/tools/shlib-compat/test/libtest1/test.c
@@ -1,5 +1,4 @@
/*
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/tools/shlib-compat/test/libtest2/Makefile b/tools/tools/shlib-compat/test/libtest2/Makefile
index f1c277d96c80..a205258710a0 100644
--- a/tools/tools/shlib-compat/test/libtest2/Makefile
+++ b/tools/tools/shlib-compat/test/libtest2/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
TESTNUM= 2
diff --git a/tools/tools/shlib-compat/test/libtest2/Symbol.map b/tools/tools/shlib-compat/test/libtest2/Symbol.map
index d4b7826913d0..11ffa7b08be4 100644
--- a/tools/tools/shlib-compat/test/libtest2/Symbol.map
+++ b/tools/tools/shlib-compat/test/libtest2/Symbol.map
@@ -1,5 +1,4 @@
/*
- * $FreeBSD$
*/
TEST_1.0 {
diff --git a/tools/tools/shlib-compat/test/libtest2/test.c b/tools/tools/shlib-compat/test/libtest2/test.c
index c26935cec33e..2731a60836f2 100644
--- a/tools/tools/shlib-compat/test/libtest2/test.c
+++ b/tools/tools/shlib-compat/test/libtest2/test.c
@@ -1,5 +1,4 @@
/*
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/tools/shlib-compat/test/libtest3/Makefile b/tools/tools/shlib-compat/test/libtest3/Makefile
index 9f8970fd6aee..232da97d2555 100644
--- a/tools/tools/shlib-compat/test/libtest3/Makefile
+++ b/tools/tools/shlib-compat/test/libtest3/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
TESTNUM= 3
diff --git a/tools/tools/shlib-compat/test/libtest3/Symbol.map b/tools/tools/shlib-compat/test/libtest3/Symbol.map
index 67649ae01868..5b5bcec8853f 100644
--- a/tools/tools/shlib-compat/test/libtest3/Symbol.map
+++ b/tools/tools/shlib-compat/test/libtest3/Symbol.map
@@ -1,5 +1,4 @@
/*
- * $FreeBSD$
*/
TEST_1.0 {
diff --git a/tools/tools/shlib-compat/test/libtest3/test.c b/tools/tools/shlib-compat/test/libtest3/test.c
index 95a169c68236..27d3fd989197 100644
--- a/tools/tools/shlib-compat/test/libtest3/test.c
+++ b/tools/tools/shlib-compat/test/libtest3/test.c
@@ -1,5 +1,4 @@
/*
- * $FreeBSD$
*/
#include <sys/types.h>
diff --git a/tools/tools/shlib-compat/test/libtestsys/Makefile b/tools/tools/shlib-compat/test/libtestsys/Makefile
index 837cfc3b3520..8bf88e27430d 100644
--- a/tools/tools/shlib-compat/test/libtestsys/Makefile
+++ b/tools/tools/shlib-compat/test/libtestsys/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
TESTNUM= sys
diff --git a/tools/tools/shlib-compat/test/libtestsys/Symbol.map b/tools/tools/shlib-compat/test/libtestsys/Symbol.map
index d596923bf077..5f4c2477b037 100644
--- a/tools/tools/shlib-compat/test/libtestsys/Symbol.map
+++ b/tools/tools/shlib-compat/test/libtestsys/Symbol.map
@@ -1,5 +1,4 @@
/*
- * $FreeBSD$
*/
TEST_1.0 {
diff --git a/tools/tools/shlib-compat/test/regress.m4 b/tools/tools/shlib-compat/test/regress.m4
index 35e2ab958f00..dd725d403af4 100644
--- a/tools/tools/shlib-compat/test/regress.m4
+++ b/tools/tools/shlib-compat/test/regress.m4
@@ -1,4 +1,3 @@
-# $FreeBSD$
dnl A library of routines for doing regression tests for userland utilities.
diff --git a/tools/tools/shlib-compat/test/regress.sh b/tools/tools/shlib-compat/test/regress.sh
index 0789fa8b3cf7..36a963b57433 100755
--- a/tools/tools/shlib-compat/test/regress.sh
+++ b/tools/tools/shlib-compat/test/regress.sh
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
run() { ../shlib-compat.py --no-dump -vv libtest$1/libtest$1.so.0.full libtest$2/libtest$2.so.0.full; }
echo 1..9
diff --git a/tools/tools/shlib-compat/test/regress.t b/tools/tools/shlib-compat/test/regress.t
index 35feb209a0e5..8263b14297bc 100644
--- a/tools/tools/shlib-compat/test/regress.t
+++ b/tools/tools/shlib-compat/test/regress.t
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
cd `dirname $0`
diff --git a/tools/tools/sortbench/Makefile b/tools/tools/sortbench/Makefile
index 8beab3177334..a3a6dc410af1 100644
--- a/tools/tools/sortbench/Makefile
+++ b/tools/tools/sortbench/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= sort_bench
MAN=
diff --git a/tools/tools/sortbench/README b/tools/tools/sortbench/README
index 9fbee3715319..7ad57ca3863c 100644
--- a/tools/tools/sortbench/README
+++ b/tools/tools/sortbench/README
@@ -1,4 +1,3 @@
-$FreeBSD$
Running:
1. Compile mergesort_bench.c into mergesort_bench
diff --git a/tools/tools/sortbench/bench.py b/tools/tools/sortbench/bench.py
index 82e3639d3f5c..73d5bb005964 100755
--- a/tools/tools/sortbench/bench.py
+++ b/tools/tools/sortbench/bench.py
@@ -23,8 +23,6 @@ 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.
-
- $FreeBSD$
"""
from time import time
diff --git a/tools/tools/sortbench/sort_bench.c b/tools/tools/sortbench/sort_bench.c
index 3eeb745b9c5b..da6df996ba02 100644
--- a/tools/tools/sortbench/sort_bench.c
+++ b/tools/tools/sortbench/sort_bench.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include <math.h>
diff --git a/tools/tools/switch_tls/Makefile b/tools/tools/switch_tls/Makefile
index be50ebd654e9..796b9c5c9c3f 100644
--- a/tools/tools/switch_tls/Makefile
+++ b/tools/tools/switch_tls/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= switch_tls
MAN=
diff --git a/tools/tools/switch_tls/switch_tls.c b/tools/tools/switch_tls/switch_tls.c
index 788926bfb92a..e79cba5a30f8 100644
--- a/tools/tools/switch_tls/switch_tls.c
+++ b/tools/tools/switch_tls/switch_tls.c
@@ -17,9 +17,6 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/param.h>
#include <sys/types.h>
#include <sys/socket.h>
@@ -61,7 +58,7 @@ static bool tcpswitchall(const char *, int);
static bool tcpswitchbyname(const char *, const char *, const char *,
const char *, int);
static bool tcpswitchconn(const struct in_conninfo *, int);
-static void usage(void);
+static void usage(void) __dead2;
/*
* Switch a tcp connection.
diff --git a/tools/tools/sysbuild/README b/tools/tools/sysbuild/README
index a1fa5f4e080a..b8d865415c4f 100644
--- a/tools/tools/sysbuild/README
+++ b/tools/tools/sysbuild/README
@@ -1,4 +1,3 @@
-$FreeBSD$
About sysbuild.sh
=================
diff --git a/tools/tools/sysbuild/sysbuild.sh b/tools/tools/sysbuild/sysbuild.sh
index 3b4502014642..7c3e21c98736 100644
--- a/tools/tools/sysbuild/sysbuild.sh
+++ b/tools/tools/sysbuild/sysbuild.sh
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
set -e
diff --git a/tools/tools/syscall_timing/Makefile b/tools/tools/syscall_timing/Makefile
index 1aeafb632ce6..e33148eee2e9 100644
--- a/tools/tools/syscall_timing/Makefile
+++ b/tools/tools/syscall_timing/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
PROG= syscall_timing
diff --git a/tools/tools/syscall_timing/syscall_timing.c b/tools/tools/syscall_timing/syscall_timing.c
index e8f7d28776a8..ce77073830dc 100644
--- a/tools/tools/syscall_timing/syscall_timing.c
+++ b/tools/tools/syscall_timing/syscall_timing.c
@@ -25,8 +25,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
diff --git a/tools/tools/sysdoc/Makefile b/tools/tools/sysdoc/Makefile
index 724d62cf2f39..2dec25afb9a2 100644
--- a/tools/tools/sysdoc/Makefile
+++ b/tools/tools/sysdoc/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
sysctl.5:
sh ${.CURDIR}/sysdoc.sh -k /boot/kernel
diff --git a/tools/tools/sysdoc/sysctl.sh b/tools/tools/sysdoc/sysctl.sh
index 8dcaf62f3576..6539c9576eea 100644
--- a/tools/tools/sysdoc/sysctl.sh
+++ b/tools/tools/sysdoc/sysctl.sh
@@ -1,6 +1,5 @@
#!/bin/sh
#
-# $FreeBSD$
#
# For each sysctl, repeat:
# if it has a short description
diff --git a/tools/tools/sysdoc/sysdoc.sh b/tools/tools/sysdoc/sysdoc.sh
index 66d26632f8e7..61fc304495df 100644
--- a/tools/tools/sysdoc/sysdoc.sh
+++ b/tools/tools/sysdoc/sysdoc.sh
@@ -1,6 +1,5 @@
#!/bin/sh
#
-# $FreeBSD$
#
#################################################################
# Missing Features:
diff --git a/tools/tools/sysdoc/tunables.mdoc b/tools/tools/sysdoc/tunables.mdoc
index 0926c2556c81..54f6920a22c0 100644
--- a/tools/tools/sysdoc/tunables.mdoc
+++ b/tools/tools/sysdoc/tunables.mdoc
@@ -1,4 +1,3 @@
-# $FreeBSD$
---
debug.disablecwd
bool
@@ -1395,56 +1394,9 @@ net.inet.tcp.getcred
net.inet.tcp.icmp_may_rst
---
-net.inet.tcp.inflight_debug
-bool
-
-Control debugging for the
-.Va net.inet.tcp.inflight_enable
-.Nm .
-Please see the
-.Xr tuning 7
-man page for more information.
-
----
-net.inet.tcp.inflight_enable
-bool
-
-Turns on bandwidth delay product limiting for all
-TCP connections. Please see the
-.Xr tuning 7
-man page for more information.
-
----
-net.inet.tcp.inflight_max
-bool
-
-.Em double check
-The maximum amount of data that may be queued for
-bandwidth delay product limiting.
-
----
-net.inet.tcp.inflight_min
-bool
-
-.Em double check
-The minimum amount of data that may be queued for
-bandwidth delay product limiting.
-
----
-net.inet.tcp.inflight_stab
-bool
-
-This parameter represents the maximal packets
-added to the bandwidth delay product window
-calculation. Changing this is not recommended.
-
----
net.inet.tcp.isn_reseed_interval
---
-net.inet.tcp.local_slowstart_flightsize
-
----
net.inet.tcp.log_in_vain
bool
diff --git a/tools/tools/termcap/termcap.pl b/tools/tools/termcap/termcap.pl
index f6d4dc6ef51d..c00574b99705 100755
--- a/tools/tools/termcap/termcap.pl
+++ b/tools/tools/termcap/termcap.pl
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
use strict;
diff --git a/tools/tools/tinybsd/CHANGES b/tools/tools/tinybsd/CHANGES
deleted file mode 100644
index b409fd67fbd2..000000000000
--- a/tools/tools/tinybsd/CHANGES
+++ /dev/null
@@ -1,43 +0,0 @@
-# $FreeBSD$
-
-0.9:
-- Added function personal_directories, you can create on conf dir your custom
-personal directories with your custom files inside of them and it will be copied
-to your image.
-Thanks to Marcus Grando <mnag@FreeBSD.org> for the patch.
-
-0.8:
-- Now FreeBSD 6.X is the default configuration on TinyBSD files.
-- TinyBSD no longer use bootmanager, so fstab device was changed to ad0a.
-- Added an example configuration to WRAP motherboards. Just use 'wrap' as argument on build to use it.
-
-0.7:
-- Revision on Makefile to respect non-standard LOCALBASE/X11BASE on FreeBSD.
-Thanks to Florent Thoumie <flz@FreeBSD.org>.
-
-0.6:
-- fix script problem on symlinks creation.
-- added debug information on tinybsd build process with "====>".
-
-0.5:
-- fix script problem when the kernel is not build, it's not should process
-an image without kernel :) Thanks to Marten <info@martenvijn.nl> for the patch.
-
-0.4:
-- added pre configured images to build tinybsd: default, bridge, minimal, vpn,
-firewall and wireless.
-- added etc/ on each image directory to the user copy your custom etc
-configuration.
-
-0.3:
-- fix named directory missing on etc build.
-
-0.2:
-- added "device ath_rate_onoe" on kernel config file to be compiled on
-FreeBSD 6.
-- added on tinybsd script a line to clean up kernel build directory
-- added on tinybsd script a for function to copy correct pam depends.
-
-0.1:
-- TinyBSD released
-
diff --git a/tools/tools/tinybsd/README b/tools/tools/tinybsd/README
deleted file mode 100644
index ff1bf28b3afa..000000000000
--- a/tools/tools/tinybsd/README
+++ /dev/null
@@ -1,259 +0,0 @@
-# $FreeBSD$
-
-- TinyBSD
-
-You must read this to know how to build embedded systems with TinyBSD.
-
-- TinyBSD files
-
-TinyBSD's creation conf files are available under /usr/src/tools/tools/tinybsd/conf
-and the script are available under /usr/src/tools/tools/tinybsd/tinybsd.
-
-The system has been entirely based on the ease of image customization from
-PicoBSD, and the compilation script based on NanoBSD's.
-
-# ls /usr/src/tools/tools/tinybsd/conf
-bridge/ default/ firewall/ minimal/ vpn/ wireless/ wrap/
-
-We have these six pre configured images to build. On each directory we have 3
-main files in there. Let's see what each of them are:
-
-# ls /usr/src/tools/tools/tinybsd/conf/default
-TINYBSD etc/ tinybsd.basefiles
-
-TINYBSD: Just like PicoBSD had its kernel previously compiled, we call ours
-TINYBSD.
-
-# more TINYBSD
-
-machine i386
-cpu I486_CPU
-cpu I586_CPU
-cpu I686_CPU
-ident TINYBSD
-
-#To statically compile in device wiring instead of /boot/device.hints
-#hints "GENERIC.hints" #Default places to look for devices.
-...
-
-As you can see, it's a kernel file identical to your system's, leaving only
-the task of enabling or disabling options, according to your needs.
-
-tinybsd.basefiles: Just like PicoBSD had its crunch.conf file to define which
-files we'd want the new system to have, in this one we'll have all files to be
-put into our embedded system, already having all available files for running
-the system well. Put in or take out the files you need according to your
-needs. Let's see it:
-
-# more tinybsd.basefiles
-# contents of ${WORKDIR}/boot
-boot/boot0
-boot/boot1
-boot/boot2
-boot/defaults/loader.conf
-boot/device.hints
-...
-# contents of ${WORKDIR}/bin
-bin/[:bin/test
-bin/cat
-bin/chflags
-bin/chio
-bin/chmod
-...
-
-And so on. In case you'd want to add the binary "setkey", sitting on
-/usr/sbin, you'd only need to add the following line inside the /usr/sbin part
-of the file, like this:
-
-usr/sbin/pw
-usr/sbin/pwd_mkdb
-usr/sbin/setkey
-
-tinybsd.ports: Here you can add the applications from the FreeBSD Ports Collection
-which you want TinyBSD ports system to install in your embedded system. You whould
-list one application per line, mentioning its category and name, like the examples:
-www/mini_httpd
-net-mgmt/rate
-
-etc/: This is the directory where you can put your custom /etc configuration.
-
-# ls /usr/src/tools/tools/tinybsd/tinybsd
-tinybsd
-
-tinybsd: This is the script that builds the entire system. You'll hardly
-need to modify it at all. The idea is for it to create a temporary work
-directory for it to create the entire system tree. Once done, it'll copy all
-files listed in tinybsd.basefiles to this tree, then it'll compile a new
-kernel using the definitions in the TINYBSD file, and finally copy the library
-dependencies the binaries will have. We'll then populate /etc on that
-temporary tree and put in a few important default configurations inside on
-/usr/src/tools/tools/tinybsd/conf/YOURCHOICE/etc/ like rc.conf, fstab and others.
-
-Finally, we create an empty image, according to your media's specifications,
-passed on to the script on the command line, and copy the entire temporary
-work tree into the image mounted on /mnt.
-
-- Running TinyBSD
-
-Now that we know how it works, it's time for us to build our own image. Let's
-do that step-by-step.
-
-1) Choose what pre-configured image you want.
-
-2) Edit the TINYBSD kernel file and add/remove all options you'll need.
-
-3) Edit the tinybsd.basefiles file and add/remove all binaries you'll need on
-your system.
-
-4) Copy all your /etc configuration which you want to conf/YOURIMAGE/etc/.
-
-5) Gather the right information on your destination media. To do that, plug in
-the device on the system and fetch the information using diskinfo(8):
-
-# diskinfo -v /dev/ad2
-ad2
- 512 # sectorsize
- 20060135424 # mediasize in bytes (19G)
- 39179952 # mediasize in sectors
- 38869 # Cylinders according to firmware.
- 16 # Heads according to firmware.
- 63 # Sectors according to firmware.
-
-To create my image, I'll need to know the media size in sectors, Heads
-according to firmware and Sectors according to firmware. Optionally, you may
-define the name of the generated image's file, but if you don't, it'll be
-named tinybsd.bin. Now that we have gathered these informations through
-diskinfo, all we need to do is run tinybsd. Remember that it has 3
-parameters plus 1 optional, and if you don't pass on the required ones, the
-script will warn you about it:
-
-# /usr/src/tools/tools/tinybsd/tinybsd
-Woops!
- Usage: tinybsd <mediasize in sectors> <heads according to firmware>
- <sectors according to firmware> <conf> [<tinybsd image name>]
-
- Example: tinybsd 62592 4 32
-
- or
-
- /usr/src/tools/tools/tinybsd/tinybsd 62592 4 32 wireless
-
- Run diskinfo(8) -v against your CF device to get correct information
- about your disk.
-
-Passing on the parameters correctly:
-
-# /usr/src/tools/tools/tinybsd/tinybsd 39179952 16 63 wireless
-Creating directory hierarchy...
-./bin missing (created)
-./boot missing (created)
-./boot/defaults missing (created)
-./boot/kernel missing (created)
-./boot/modules missing (created)
-./dev missing (created)
-./etc missing (created)
-...
-
-In the end, we have the generated tinybsd.bin image. Now we have to copy it to
-its final destination:
-
-# dd if=/usr/src/tools/tools/tinybsd/tinybsd.bin of=/dev/ad2
-
-Boot up your new embedded system and log on it. If you're ever going to modify
-it, you must first remount the root slice as read-write, as it operates by
-default on read-only mode, saving disk writes and preventing data-loss in case
-of power failures. To mount it for read-write, use mount:
-
-# mount -u -o rw /
-
-Once you're done, return it to read-only mode:
-
-# mount -u -o ro /
-
-The first thing you need to do after logging for the first time, is to set a
-root password. By default, it's created with no root password.
-
-If you run df(1), you'll see the following partitions:
-
-# df
-Filesystem 1K-blocks Used Avail Capacity Mounted on
-/dev/ad0a 29359 19446 7565 72% /
-devfs 1 1 0 100% /dev
-procfs 4 4 0 100% /proc
-/dev/md0 3694 114 3286 3% /var
-/dev/md1 19566 6 17996 0% /tmp
-
-As you can see, /var and /tmp are mounted on /dev/md0 and /dev/md1
-respectively, using memory disk devices. That's because both /var and /tmp are
-write-intensive, and as our system works mostly on read-only mode, we'd suffer
-with writing problems there, so the memory disk approach works fine. On the
-other hand, whenever you reboot the system, those directories' contents
-(including logs on /var/log) will be lost. If you need to keep the contents of
-those directories, I suggest you to always upload them to another box.
-
-The configuration line that fires up the system script to create /var as a
-memory disk partition is "varmfs="YES"", inside
-/etc/rc.conf. Besides mounting /var as a memory disk device, it also populates
-its tree with the necessary subdirectories. Initially, /var is created on
-memory using only 32MB of space, and that's usually enough. Although, if you
-find it necessary to tweak that configuration, you may edit this line of
-/etc/rc.conf:
-
-varsize="32m"
-
-Change 32m to whatever value you see fit (in MBytes). Take care of not using
-your entire memory for /var.
-
-- Ports and TinyBSD
-
-You can also install ports on the new system via ports. For that, you'll need
-to set the PREFIX environment variable to the image's destination path. Let's
-assume you want to install apache on the newly-created image. For that, I'd do
-this:
-
-# mdconfig -a -t vnode -f /usr/src/tools/tools/tinybsd/tinybsd.bin -u 0
-
-That uses mdconfig to enable the memory disk 0.
-
-# mount /dev/md0a /mnt
-
-Now we've mounted the image on the temporary directory /mnt. Let's then
-install apache via ports:
-
-# cd /usr/ports/www/apache13
-# make install PREFIX=/mnt/usr/local
-===> Vulnerability check disabled
->> apache_1.3.31.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
->> Attempting to fetch from http://www.apache.org/dist/httpd/.
-...
- This port has installed the following startup scripts which may cause
- these network services to be started at boot time.
-/mnt/usr/local/etc/rc.d/apache.sh
-....
-
-Once the install is finished, let's verify that apache has indeed been
-properly installed under our /mnt directory:
-
-# cd /mnt/usr/local/sbin
-# ls -lga httpd
--rwxr-xr-x 1 root wheel 252439 Jul 14 15:31 httpd
-
-Our software has been successfully installed. You must notice that at the end
-of the install, it shows the full path for the PREFIX variable we passed it.
-The problem with that is that at boot-time, your system is going to look for
-it under /mnt instead of /usr. So we need to edit apache's initialization
-script under /usr/local/etc/rc.d (apache.sh) and remove all instances of
-"/mnt" in it.
-
-WARNING: A very important thing to care about are dependencies. Before
-installing anything, check to see if it has any dependencies, and that you'll
-have enough disk space on the destination system for both the application
-you're installing and its dependencies.
-
-- Script download
-
-TinyBSD is still a project under heavy development, both the script itself and
-its documentation.
-
-In case you'd like to try or use the BETA version of the script, feel free to
-download it from the project's official site at http://code.google.com/p/tinybsd/.
diff --git a/tools/tools/tinybsd/conf/bridge/TINYBSD b/tools/tools/tinybsd/conf/bridge/TINYBSD
deleted file mode 100644
index fe6bed93ba6f..000000000000
--- a/tools/tools/tinybsd/conf/bridge/TINYBSD
+++ /dev/null
@@ -1,155 +0,0 @@
-# $FreeBSD$
-
-machine i386
-cpu I486_CPU
-cpu I586_CPU
-cpu I686_CPU
-ident TINYBSD
-
-# To statically compile in device wiring instead of /boot/device.hints
-#hints "GENERIC.hints" # Default places to look for devices.
-
-options SCHED_4BSD # 4BSD scheduler
-options INET # InterNETworking
-options FFS # Berkeley Fast Filesystem
-options SOFTUPDATES # Enable FFS soft updates support
-options UFS_DIRHASH # Improve performance on big directories
-options MD_ROOT # MD is a potential root device
-options PROCFS # Process filesystem (requires PSEUDOFS)
-options PSEUDOFS # Pseudo-filesystem framework
-options GEOM_PART_GPT # GUID Partition Tables.
-options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]
-options COMPAT_FREEBSD4 # Compatible with FreeBSD4
-options SYSVSHM # SYSV-style shared memory
-options SYSVMSG # SYSV-style message queues
-options SYSVSEM # SYSV-style semaphores
-options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
-options KBD_INSTALL_CDEV # install a CDEV entry in /dev
-options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~128k to driver.
-options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~215k to driver.
-options ADAPTIVE_GIANT # Giant mutex is adaptive.
-
-device apic # I/O APIC
-
-device eisa
-device pci
-
-# Floppy drives
-#device fdc
-
-# ATA and ATAPI devices
-device ata
-device atadisk # ATA disk drives
-options ATA_STATIC_ID # Static device numbering
-
-# atkbdc0 controls both the keyboard and the PS/2 mouse
-device atkbdc # AT keyboard controller
-device atkbd # AT keyboard
-device psm # PS/2 mouse
-
-device vga # VGA video card driver
-
-#device splash # Splash screen and screen saver support
-
-# syscons is the default console driver, resembling an SCO console
-device sc
-
-# Enable this for the pcvt (VT220 compatible) console driver
-#device vt
-#options XSERVER # support for X server on a vt console
-#options FAT_CURSOR # start with block cursor
-
-device agp # support several AGP chipsets
-
-# PCCARD (PCMCIA) support
-# PCMCIA and cardbus bridge support
-device cbb # cardbus (yenta) bridge
-device pccard # PC Card (16-bit) bus
-device cardbus # CardBus (32-bit) bus
-
-# Serial (COM) ports
-device sio # 8250, 16[45]50 based serial ports
-
-# PCI Ethernet NICs.
-device de # DEC/Intel DC21x4x (``Tulip'')
-device em # Intel PRO/1000 adapter Gigabit Ethernet Card
-device txp # 3Com 3cR990 (``Typhoon'')
-device vx # 3Com 3c590, 3c595 (``Vortex'')
-
-# PCI Ethernet NICs that use the common MII bus controller code.
-# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
-device miibus # MII bus support
-device bfe # Broadcom BCM440x 10/100 Ethernet
-device bge # Broadcom BCM570xx Gigabit Ethernet
-device dc # DEC/Intel 21143 and various workalikes
-device fxp # Intel EtherExpress PRO/100B (82557, 82558)
-device lge # Level 1 LXT1001 gigabit ethernet
-device nge # NatSemi DP83820 gigabit ethernet
-device pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc')
-device re # RealTek 8139C+/8169/8169S/8110S
-device rl # RealTek 8129/8139
-device sf # Adaptec AIC-6915 (``Starfire'')
-device sis # Silicon Integrated Systems SiS 900/SiS 7016
-device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
-device ste # Sundance ST201 (D-Link DFE-550TX)
-device ti # Alteon Networks Tigon I/II gigabit Ethernet
-device tl # Texas Instruments ThunderLAN
-device tx # SMC EtherPower II (83c170 ``EPIC'')
-device vge # VIA VT612x gigabit ethernet
-device vr # VIA Rhine, Rhine II
-device wb # Winbond W89C840F
-device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')
-
-# ISA Ethernet NICs. pccard NICs included.
-device cs # Crystal Semiconductor CS89x0 NIC
-# 'device ed' requires 'device miibus'
-device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
-device ex # Intel EtherExpress Pro/10 and Pro/10+
-device ep # Etherlink III based cards
-device fe # Fujitsu MB8696x based cards
-device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc.
-device sn # SMC's 9000 series of Ethernet chips
-device xe # Xircom pccard Ethernet
-
-# ISA devices that use the old ISA shims
-#device le
-
-# Wireless NIC cards
-device wlan # 802.11 support
-device an # Aironet 4500/4800 802.11 wireless NICs.
-device awi # BayStack 660 and others
-device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
-#device wl # Older non 802.11 Wavelan wireless NIC.
-
-# Pseudo devices.
-device loop # Network loopback
-device ether # Ethernet support
-device pty # Pseudo-ttys (telnet etc)
-device md # Memory "disks"
-
-# The `bpf' device enables the Berkeley Packet Filter.
-# Be aware of the administrative consequences of enabling this!
-# Note that 'bpf' is required for DHCP.
-device bpf # Berkeley packet filter
-
-options IPFIREWALL
-options IPFIREWALL_DEFAULT_TO_ACCEPT
-
-device ath
-device ath_hal
-device ath_rate_sample
-
-device if_bridge #Bridge interface
-
-# CLK_USE_I8254_CALIBRATION causes the calibrated frequency of the i8254
-# clock to actually be used.
-options CLK_USE_I8254_CALIBRATION
-
-# CPU_ELAN enables support for AMDs ElanSC520 CPU.
-options CPU_ELAN
-options CPU_SOEKRIS
-options CPU_ELAN_XTAL=32768000
-options CPU_ELAN_PPS
-
diff --git a/tools/tools/tinybsd/conf/bridge/etc/fstab b/tools/tools/tinybsd/conf/bridge/etc/fstab
deleted file mode 100644
index 16ada11d7790..000000000000
--- a/tools/tools/tinybsd/conf/bridge/etc/fstab
+++ /dev/null
@@ -1,2 +0,0 @@
-# $FreeBSD$
-/dev/ad0a / ufs ro 1 1
diff --git a/tools/tools/tinybsd/conf/bridge/etc/rc.conf b/tools/tools/tinybsd/conf/bridge/etc/rc.conf
deleted file mode 100644
index a3e638e5efd5..000000000000
--- a/tools/tools/tinybsd/conf/bridge/etc/rc.conf
+++ /dev/null
@@ -1,17 +0,0 @@
-# $FreeBSD$
-hostname="tinybsd.freebsd.org"
-sendmail_enable="NONE"
-sshd_enable="YES"
-usbd_enable="NO"
-inetd_enable="NO"
-portmap_enable="NO"
-update_motd="NO"
-varmfs="YES"
-populate_var="YES"
-varsize="8192"
-tmpmfs="YES"
-
-# Bridge configuration
-# Replace both ath0 and xl1 by your bridge interfaces
-cloned_interfaces="bridge0"
-ifconfig_bridge0="addm ath0 addm xl1 up"
diff --git a/tools/tools/tinybsd/conf/bridge/etc/sysctl.conf b/tools/tools/tinybsd/conf/bridge/etc/sysctl.conf
deleted file mode 100644
index cb7084679fae..000000000000
--- a/tools/tools/tinybsd/conf/bridge/etc/sysctl.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-# $FreeBSD$
-
-# BRIDGE Options
-net.link.bridge.ipfw=1
-net.link.bridge.pfil_onlyip=1
diff --git a/tools/tools/tinybsd/conf/bridge/tinybsd.basefiles b/tools/tools/tinybsd/conf/bridge/tinybsd.basefiles
deleted file mode 100644
index 63a860e5b8f7..000000000000
--- a/tools/tools/tinybsd/conf/bridge/tinybsd.basefiles
+++ /dev/null
@@ -1,236 +0,0 @@
-# $FreeBSD$
-# contents of ${WORKDIR}/boot
-boot/boot0
-boot/boot1
-boot/boot2
-boot/defaults/loader.conf
-boot/device.hints
-boot/loader
-boot/loader.4th
-boot/loader.help
-boot/loader.rc
-boot/mbr
-boot/support.4th
-
-# contents of ${WORKDIR}/libexec
-libexec/ld-elf.so.1:usr/libexec/ld-elf.so.1
-
-# contents of ${WORKDIR}/bin
-bin/[:bin/test
-bin/cat
-bin/chflags
-bin/chio
-bin/chmod
-bin/cp
-bin/csh:bin/tcsh
-bin/date
-bin/dd
-bin/df
-bin/domainname
-bin/echo
-bin/ed:bin/red
-bin/expr
-bin/hostname
-bin/kenv
-bin/kill
-bin/ln:bin/link
-bin/ls
-bin/mkdir
-bin/mv
-bin/pax
-bin/ps
-bin/pwd
-bin/realpath
-bin/rm:bin/unlink
-bin/rmdir
-bin/sh
-bin/sleep
-bin/stty
-bin/sync
-
-# contents of ${WORKDIR}/sbin
-sbin/adjkerntz
-sbin/comcontrol
-sbin/disklabel
-sbin/dmesg
-sbin/fastboot:sbin/reboot
-sbin/fasthalt:sbin/halt
-sbin/fsck
-sbin/fsck_ufs:sbin/fsck_ffs
-sbin/fsck_ufs:sbin/fsck_4.2bsd
-sbin/ifconfig
-sbin/init
-sbin/ipfw
-sbin/kldconfig
-sbin/kldload
-sbin/kldstat
-sbin/kldunload
-sbin/ldconfig
-sbin/md5
-sbin/mdconfig
-sbin/mknod
-sbin/mdmfs
-sbin/mount
-sbin/mount_nfs
-sbin/mount_nullfs
-sbin/mount_unionfs
-sbin/newfs
-sbin/nextboot
-sbin/nologin
-sbin/nos-tun
-sbin/ping
-sbin/rcorder
-sbin/route
-sbin/shutdown
-sbin/slattach
-sbin/swapon
-sbin/sysctl
-sbin/umount
-
-# contents of ${WORKDIR}/usr/sbin
-usr/bin/at:usr/bin/atq
-usr/bin/at:usr/bin/atrm
-usr/bin/at:usr/bin/batch
-usr/bin/awk
-usr/bin/basename
-usr/bin/bunzip2:usr/bin/bzcat
-usr/bin/bunzip2:usr/bin/bzip2
-usr/bin/chat
-usr/bin/chfn:usr/bin/chpass
-usr/bin/chfn:usr/bin/chsh
-usr/bin/chgrp
-usr/bin/cksum
-usr/bin/clear
-usr/bin/cmp
-usr/bin/compress:usr/bin/uncompress
-usr/bin/cpio
-usr/bin/crontab
-usr/bin/cu
-usr/bin/dig
-usr/bin/dirname
-usr/bin/du
-usr/bin/ee
-usr/bin/egrep:usr/bin/fgrep
-usr/bin/egrep:usr/bin/grep
-usr/bin/env
-usr/bin/false
-usr/bin/fetch
-usr/bin/find
-usr/bin/finger
-usr/bin/fstat
-usr/bin/fsync
-usr/bin/ftp
-usr/bin/gunzip:usr/bin/gzcat
-usr/bin/gunzip:usr/bin/gzip
-usr/bin/gzexe
-usr/bin/head
-usr/bin/hexdump
-usr/bin/id:usr/bin/whoami
-usr/bin/ident
-usr/bin/killall
-usr/bin/last
-usr/bin/less:usr/bin/more
-usr/bin/limits
-usr/bin/lock
-usr/bin/lockf
-usr/bin/logger
-usr/bin/login
-usr/bin/logname
-usr/bin/mesg
-usr/bin/minigzip
-usr/bin/mkfifo
-usr/bin/mktemp
-usr/bin/msgs
-usr/bin/netstat
-usr/bin/nfsstat
-usr/bin/nice
-usr/bin/nslookup
-usr/bin/nsupdate
-usr/bin/nohup
-usr/bin/objformat
-usr/bin/openssl
-usr/bin/passwd
-usr/bin/printf
-usr/bin/renice
-usr/bin/reset:usr/sbin/tset
-usr/bin/scp
-usr/bin/script
-usr/bin/sed
-usr/bin/sftp
-usr/bin/shar
-usr/bin/slogin:usr/bin/ssh
-usr/bin/sort
-usr/bin/split
-usr/bin/ssh-keygen
-usr/bin/su
-usr/bin/tail
-usr/bin/tar
-usr/bin/tee
-usr/bin/telnet
-usr/bin/tftp
-usr/bin/time
-usr/bin/top
-usr/bin/touch
-usr/bin/tput
-usr/bin/tr
-usr/bin/true
-usr/bin/tty
-usr/bin/uname
-usr/bin/uptime:usr/bin/w
-usr/bin/users
-usr/bin/uudecode
-usr/bin/uuencode
-usr/bin/vi
-usr/bin/vmstat
-usr/bin/wall
-usr/bin/who
-usr/bin/whois
-usr/bin/write
-usr/bin/yes
-
-# contents of ${WORKDIR}/usr/sbin
-usr/sbin/arp
-usr/sbin/boot0cfg
-usr/sbin/chown
-usr/sbin/chroot
-usr/sbin/cron
-usr/sbin/idprio:usr/sbin/rtprio
-usr/sbin/inetd
-usr/sbin/iostat
-usr/sbin/kbdcontrol
-usr/sbin/lastlogin
-usr/sbin/memcontrol
-usr/sbin/mountd
-usr/sbin/mtree
-usr/sbin/newsyslog
-usr/sbin/ngctl
-usr/sbin/nghook
-usr/sbin/ntpdate
-usr/sbin/pciconf
-usr/sbin/pw
-usr/sbin/pwd_mkdb
-usr/sbin/slstat
-usr/sbin/sshd
-usr/sbin/syslogd
-usr/sbin/tcpdchk
-usr/sbin/tcpdmatch
-usr/sbin/tcpdump
-usr/sbin/traceroute
-usr/sbin/vidcontrol
-usr/sbin/vipw
-usr/sbin/vnconfig
-usr/sbin/watch
-usr/sbin/pccardc
-usr/sbin/pccardd
-
-# contents of ${WORKDIR}/usr/libexec
-usr/libexec/atrun
-usr/libexec/ftpd
-usr/libexec/getty
-usr/libexec/sftp-server
-usr/libexec/telnetd
-usr/libexec/tftpd
-
-# contents of ${WORKDIR}/usr/share
-usr/share/misc/termcap
-
diff --git a/tools/tools/tinybsd/conf/bridge/tinybsd.ports b/tools/tools/tinybsd/conf/bridge/tinybsd.ports
deleted file mode 100644
index 49bb52175241..000000000000
--- a/tools/tools/tinybsd/conf/bridge/tinybsd.ports
+++ /dev/null
@@ -1,9 +0,0 @@
-# $FreeBSD$
-# Here you can add the applications from the FreeBSD Ports Collection which you
-# want TinyBSD ports system to install in your embedded system. You whould list
-# one application per line, mentioning its category and name, like the examples:
-#
-# www/mini_httpd
-# net-mgmt/rate
-#
-# Make sure you have enough space to add it.
diff --git a/tools/tools/tinybsd/conf/default/TINYBSD b/tools/tools/tinybsd/conf/default/TINYBSD
deleted file mode 100644
index 64b8f13a3629..000000000000
--- a/tools/tools/tinybsd/conf/default/TINYBSD
+++ /dev/null
@@ -1,170 +0,0 @@
-# $FreeBSD$
-
-machine i386
-cpu I486_CPU
-cpu I586_CPU
-cpu I686_CPU
-ident TINYBSD
-
-# To statically compile in device wiring instead of /boot/device.hints
-#hints "GENERIC.hints" # Default places to look for devices.
-
-options SCHED_4BSD # 4BSD scheduler
-options INET # InterNETworking
-options FFS # Berkeley Fast Filesystem
-options SOFTUPDATES # Enable FFS soft updates support
-options UFS_ACL # Support for access control lists
-options UFS_DIRHASH # Improve performance on big directories
-options MD_ROOT # MD is a potential root device
-options NFSCLIENT # Network Filesystem Client
-options NFSSERVER # Network Filesystem Server
-options NFS_ROOT # NFS usable as /, requires NFSCLIENT
-options MSDOSFS # MSDOS Filesystem
-options CD9660 # ISO 9660 Filesystem
-options PROCFS # Process filesystem (requires PSEUDOFS)
-options PSEUDOFS # Pseudo-filesystem framework
-options GEOM_PART_GPT # GUID Partition Tables.
-options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]
-options COMPAT_FREEBSD4 # Compatible with FreeBSD4
-options SYSVSHM # SYSV-style shared memory
-options SYSVMSG # SYSV-style message queues
-options SYSVSEM # SYSV-style semaphores
-options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
-options KBD_INSTALL_CDEV # install a CDEV entry in /dev
-options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~128k to driver.
-options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~215k to driver.
-options ADAPTIVE_GIANT # Giant mutex is adaptive.
-
-device apic # I/O APIC
-
-device eisa
-device pci
-
-# Floppy drives
-#device fdc
-
-# ATA and ATAPI devices
-device ata
-device atadisk # ATA disk drives
-#device ataraid # ATA RAID drives
-#device atapicd # ATAPI CDROM drives
-#device atapifd # ATAPI floppy drives
-device atapist # ATAPI tape drives
-options ATA_STATIC_ID # Static device numbering
-
-# atkbdc0 controls both the keyboard and the PS/2 mouse
-device atkbdc # AT keyboard controller
-device atkbd # AT keyboard
-device psm # PS/2 mouse
-
-device vga # VGA video card driver
-
-#device splash # Splash screen and screen saver support
-
-# syscons is the default console driver, resembling an SCO console
-device sc
-
-# Enable this for the pcvt (VT220 compatible) console driver
-#device vt
-#options XSERVER # support for X server on a vt console
-#options FAT_CURSOR # start with block cursor
-
-device agp # support several AGP chipsets
-
-# PCCARD (PCMCIA) support
-# PCMCIA and cardbus bridge support
-device cbb # cardbus (yenta) bridge
-device pccard # PC Card (16-bit) bus
-device cardbus # CardBus (32-bit) bus
-
-# Serial (COM) ports
-device sio # 8250, 16[45]50 based serial ports
-
-# PCI Ethernet NICs.
-device de # DEC/Intel DC21x4x (``Tulip'')
-device em # Intel PRO/1000 adapter Gigabit Ethernet Card
-device txp # 3Com 3cR990 (``Typhoon'')
-device vx # 3Com 3c590, 3c595 (``Vortex'')
-
-# PCI Ethernet NICs that use the common MII bus controller code.
-# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
-device miibus # MII bus support
-device bfe # Broadcom BCM440x 10/100 Ethernet
-device bge # Broadcom BCM570xx Gigabit Ethernet
-device dc # DEC/Intel 21143 and various workalikes
-device fxp # Intel EtherExpress PRO/100B (82557, 82558)
-device lge # Level 1 LXT1001 gigabit ethernet
-device nge # NatSemi DP83820 gigabit ethernet
-device pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc')
-device re # RealTek 8139C+/8169/8169S/8110S
-device rl # RealTek 8129/8139
-device sf # Adaptec AIC-6915 (``Starfire'')
-device sis # Silicon Integrated Systems SiS 900/SiS 7016
-device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
-device ste # Sundance ST201 (D-Link DFE-550TX)
-device ti # Alteon Networks Tigon I/II gigabit Ethernet
-device tl # Texas Instruments ThunderLAN
-device tx # SMC EtherPower II (83c170 ``EPIC'')
-device vge # VIA VT612x gigabit ethernet
-device vr # VIA Rhine, Rhine II
-device wb # Winbond W89C840F
-device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')
-
-# ISA Ethernet NICs. pccard NICs included.
-device cs # Crystal Semiconductor CS89x0 NIC
-# 'device ed' requires 'device miibus'
-device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
-device ex # Intel EtherExpress Pro/10 and Pro/10+
-device ep # Etherlink III based cards
-device fe # Fujitsu MB8696x based cards
-device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc.
-device sn # SMC's 9000 series of Ethernet chips
-device xe # Xircom pccard Ethernet
-
-# ISA devices that use the old ISA shims
-#device le
-
-# Wireless NIC cards
-device wlan # 802.11 support
-device an # Aironet 4500/4800 802.11 wireless NICs.
-device awi # BayStack 660 and others
-device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
-#device wl # Older non 802.11 Wavelan wireless NIC.
-
-# Pseudo devices.
-device loop # Network loopback
-device ether # Ethernet support
-device ppp # Kernel PPP
-device tun # Packet tunnel.
-device pty # Pseudo-ttys (telnet etc)
-device md # Memory "disks"
-device gif # IPv6 and IPv4 tunneling
-
-# The `bpf' device enables the Berkeley Packet Filter.
-# Be aware of the administrative consequences of enabling this!
-# Note that 'bpf' is required for DHCP.
-device bpf # Berkeley packet filter
-
-options IPFIREWALL
-options IPFIREWALL_DEFAULT_TO_ACCEPT
-options IPDIVERT
-options DUMMYNET
-
-device ath
-device ath_hal
-device ath_rate_sample
-
-device if_bridge #Bridge interface
-
-# CLK_USE_I8254_CALIBRATION causes the calibrated frequency of the i8254
-# clock to actually be used.
-options CLK_USE_I8254_CALIBRATION
-
-# CPU_ELAN enables support for AMDs ElanSC520 CPU.
-options CPU_ELAN
-options CPU_SOEKRIS
-options CPU_ELAN_XTAL=32768000
-options CPU_ELAN_PPS
-
diff --git a/tools/tools/tinybsd/conf/default/etc/fstab b/tools/tools/tinybsd/conf/default/etc/fstab
deleted file mode 100644
index 16ada11d7790..000000000000
--- a/tools/tools/tinybsd/conf/default/etc/fstab
+++ /dev/null
@@ -1,2 +0,0 @@
-# $FreeBSD$
-/dev/ad0a / ufs ro 1 1
diff --git a/tools/tools/tinybsd/conf/default/etc/rc.conf b/tools/tools/tinybsd/conf/default/etc/rc.conf
deleted file mode 100644
index a21476241081..000000000000
--- a/tools/tools/tinybsd/conf/default/etc/rc.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-# $FreeBSD$
-hostname="tinybsd.freebsd.org"
-sendmail_enable="NONE"
-sshd_enable="YES"
-usbd_enable="NO"
-inetd_enable="NO"
-portmap_enable="NO"
-update_motd="NO"
-varmfs="YES"
-populate_var="YES"
-varsize="8192"
-tmpmfs="YES"
diff --git a/tools/tools/tinybsd/conf/default/tinybsd.basefiles b/tools/tools/tinybsd/conf/default/tinybsd.basefiles
deleted file mode 100644
index 4db705f95557..000000000000
--- a/tools/tools/tinybsd/conf/default/tinybsd.basefiles
+++ /dev/null
@@ -1,247 +0,0 @@
-# $FreeBSD$
-# contents of ${WORKDIR}/boot
-boot/boot0
-boot/boot1
-boot/boot2
-boot/defaults/loader.conf
-boot/device.hints
-boot/loader
-boot/loader.4th
-boot/loader.help
-boot/loader.rc
-boot/mbr
-boot/support.4th
-
-# contents of ${WORKDIR}/libexec
-libexec/ld-elf.so.1:usr/libexec/ld-elf.so.1
-
-# contents of ${WORKDIR}/bin
-bin/[:bin/test
-bin/cat
-bin/chflags
-bin/chio
-bin/chmod
-bin/cp
-bin/csh:bin/tcsh
-bin/date
-bin/dd
-bin/df
-bin/domainname
-bin/echo
-bin/ed:bin/red
-bin/expr
-bin/hostname
-bin/kenv
-bin/kill
-bin/ln:bin/link
-bin/ls
-bin/mkdir
-bin/mv
-bin/pax
-bin/ps
-bin/pwd
-bin/realpath
-bin/rm:bin/unlink
-bin/rmdir
-bin/sh
-bin/sleep
-bin/stty
-bin/sync
-
-# contents of ${WORKDIR}/sbin
-sbin/adjkerntz
-sbin/comcontrol
-sbin/dhclient
-sbin/dhclient-script
-sbin/disklabel
-sbin/dmesg
-sbin/fastboot:sbin/reboot
-sbin/fasthalt:sbin/halt
-sbin/fsck
-sbin/fsck_ufs:sbin/fsck_ffs
-sbin/fsck_ufs:sbin/fsck_4.2bsd
-sbin/ifconfig
-sbin/init
-sbin/ipfw
-sbin/kldconfig
-sbin/kldload
-sbin/kldstat
-sbin/kldunload
-sbin/ldconfig
-sbin/md5
-sbin/mdconfig
-sbin/mknod
-sbin/mdmfs
-sbin/mount
-sbin/mount_nfs
-sbin/mount_nullfs
-sbin/mount_unionfs
-sbin/natd
-sbin/nfsiod
-sbin/newfs
-sbin/nextboot
-sbin/nologin
-sbin/nos-tun
-sbin/ping
-sbin/rcorder
-sbin/route
-sbin/shutdown
-sbin/slattach
-sbin/swapon
-sbin/sysctl
-sbin/umount
-
-# contents of ${WORKDIR}/usr/sbin
-usr/bin/at:usr/bin/atq
-usr/bin/at:usr/bin/atrm
-usr/bin/at:usr/bin/batch
-usr/bin/awk
-usr/bin/basename
-usr/bin/bunzip2:usr/bin/bzcat
-usr/bin/bunzip2:usr/bin/bzip2
-usr/bin/chat
-usr/bin/chfn:usr/bin/chpass
-usr/bin/chfn:usr/bin/chsh
-usr/bin/chgrp
-usr/bin/cksum
-usr/bin/clear
-usr/bin/cmp
-usr/bin/compress:usr/bin/uncompress
-usr/bin/cpio
-usr/bin/crontab
-usr/bin/cu
-usr/bin/dig
-usr/bin/dirname
-usr/bin/du
-usr/bin/ee
-usr/bin/egrep:usr/bin/fgrep
-usr/bin/egrep:usr/bin/grep
-usr/bin/env
-usr/bin/false
-usr/bin/fetch
-usr/bin/find
-usr/bin/finger
-usr/bin/fstat
-usr/bin/fsync
-usr/bin/ftp
-usr/bin/gunzip:usr/bin/gzcat
-usr/bin/gunzip:usr/bin/gzip
-usr/bin/gzexe
-usr/bin/head
-usr/bin/hexdump
-usr/bin/id:usr/bin/whoami
-usr/bin/ident
-usr/bin/killall
-usr/bin/last
-usr/bin/less:usr/bin/more
-usr/bin/limits
-usr/bin/lock
-usr/bin/lockf
-usr/bin/logger
-usr/bin/login
-usr/bin/logname
-usr/bin/mesg
-usr/bin/minigzip
-usr/bin/mkfifo
-usr/bin/mktemp
-usr/bin/msgs
-usr/bin/netstat
-usr/bin/nfsstat
-usr/bin/nice
-usr/bin/nslookup
-usr/bin/nsupdate
-usr/bin/nohup
-usr/bin/objformat
-usr/bin/openssl
-usr/bin/passwd
-usr/bin/printf
-usr/bin/renice
-usr/bin/reset:usr/sbin/tset
-usr/bin/scp
-usr/bin/script
-usr/bin/sed
-usr/bin/sftp
-usr/bin/shar
-usr/bin/slogin:usr/bin/ssh
-usr/bin/sort
-usr/bin/split
-usr/bin/ssh-keygen
-usr/bin/su
-usr/bin/tail
-usr/bin/tar
-usr/bin/tee
-usr/bin/telnet
-usr/bin/tftp
-usr/bin/time
-usr/bin/top
-usr/bin/touch
-usr/bin/tput
-usr/bin/tr
-usr/bin/true
-usr/bin/tty
-usr/bin/uname
-usr/bin/uptime:usr/bin/w
-usr/bin/users
-usr/bin/uudecode
-usr/bin/uuencode
-usr/bin/vi
-usr/bin/vmstat
-usr/bin/wall
-usr/bin/who
-usr/bin/whois
-usr/bin/write
-usr/bin/yes
-
-# contents of ${WORKDIR}/usr/sbin
-usr/sbin/arp
-usr/sbin/boot0cfg
-usr/sbin/chown
-usr/sbin/chroot
-usr/sbin/cron
-usr/sbin/idprio:usr/sbin/rtprio
-usr/sbin/inetd
-usr/sbin/iostat
-usr/sbin/kbdcontrol
-usr/sbin/lastlogin
-usr/sbin/memcontrol
-usr/sbin/mountd
-usr/sbin/mtree
-usr/sbin/named
-usr/sbin/named.reload
-usr/sbin/newsyslog
-usr/sbin/nfsd
-usr/sbin/ngctl
-usr/sbin/nghook
-usr/sbin/ntpdate
-usr/sbin/pciconf
-usr/sbin/ppp
-usr/sbin/pppctl
-usr/sbin/pppstats
-usr/sbin/pw
-usr/sbin/pwd_mkdb
-usr/sbin/rpcbind
-usr/sbin/slstat
-usr/sbin/sshd
-usr/sbin/syslogd
-usr/sbin/tcpdchk
-usr/sbin/tcpdmatch
-usr/sbin/tcpdump
-usr/sbin/traceroute
-usr/sbin/vidcontrol
-usr/sbin/vipw
-usr/sbin/vnconfig
-usr/sbin/watch
-usr/sbin/pccardc
-usr/sbin/pccardd
-
-# contents of ${WORKDIR}/usr/libexec
-usr/libexec/atrun
-usr/libexec/ftpd
-usr/libexec/getty
-usr/libexec/sftp-server
-usr/libexec/telnetd
-usr/libexec/tftpd
-
-# contents of ${WORKDIR}/usr/share
-usr/share/misc/termcap
-
diff --git a/tools/tools/tinybsd/conf/default/tinybsd.ports b/tools/tools/tinybsd/conf/default/tinybsd.ports
deleted file mode 100644
index 49bb52175241..000000000000
--- a/tools/tools/tinybsd/conf/default/tinybsd.ports
+++ /dev/null
@@ -1,9 +0,0 @@
-# $FreeBSD$
-# Here you can add the applications from the FreeBSD Ports Collection which you
-# want TinyBSD ports system to install in your embedded system. You whould list
-# one application per line, mentioning its category and name, like the examples:
-#
-# www/mini_httpd
-# net-mgmt/rate
-#
-# Make sure you have enough space to add it.
diff --git a/tools/tools/tinybsd/conf/firewall/TINYBSD b/tools/tools/tinybsd/conf/firewall/TINYBSD
deleted file mode 100644
index a91f1ee22085..000000000000
--- a/tools/tools/tinybsd/conf/firewall/TINYBSD
+++ /dev/null
@@ -1,168 +0,0 @@
-# $FreeBSD$
-machine i386
-cpu I486_CPU
-cpu I586_CPU
-cpu I686_CPU
-ident TINYBSD
-
-# To statically compile in device wiring instead of /boot/device.hints
-#hints "GENERIC.hints" # Default places to look for devices.
-
-options SCHED_4BSD # 4BSD scheduler
-options INET # InterNETworking
-options FFS # Berkeley Fast Filesystem
-options SOFTUPDATES # Enable FFS soft updates support
-options UFS_DIRHASH # Improve performance on big directories
-options MD_ROOT # MD is a potential root device
-options PROCFS # Process filesystem (requires PSEUDOFS)
-options PSEUDOFS # Pseudo-filesystem framework
-options GEOM_PART_GPT # GUID Partition Tables.
-options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]
-options COMPAT_FREEBSD4 # Compatible with FreeBSD4
-options SYSVSHM # SYSV-style shared memory
-options SYSVMSG # SYSV-style message queues
-options SYSVSEM # SYSV-style semaphores
-options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
-options KBD_INSTALL_CDEV # install a CDEV entry in /dev
-options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~128k to driver.
-options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~215k to driver.
-options ADAPTIVE_GIANT # Giant mutex is adaptive.
-
-device apic # I/O APIC
-
-device eisa
-device pci
-
-# Floppy drives
-#device fdc
-
-# ATA and ATAPI devices
-device ata
-device atadisk # ATA disk drives
-options ATA_STATIC_ID # Static device numbering
-
-# atkbdc0 controls both the keyboard and the PS/2 mouse
-device atkbdc # AT keyboard controller
-device atkbd # AT keyboard
-device psm # PS/2 mouse
-
-device vga # VGA video card driver
-
-#device splash # Splash screen and screen saver support
-
-# syscons is the default console driver, resembling an SCO console
-device sc
-
-# Enable this for the pcvt (VT220 compatible) console driver
-#device vt
-#options XSERVER # support for X server on a vt console
-#options FAT_CURSOR # start with block cursor
-
-device agp # support several AGP chipsets
-
-# PCCARD (PCMCIA) support
-# PCMCIA and cardbus bridge support
-#device cbb # cardbus (yenta) bridge
-#device pccard # PC Card (16-bit) bus
-#device cardbus # CardBus (32-bit) bus
-
-# Serial (COM) ports
-device sio # 8250, 16[45]50 based serial ports
-
-# PCI Ethernet NICs.
-device de # DEC/Intel DC21x4x (``Tulip'')
-device em # Intel PRO/1000 adapter Gigabit Ethernet Card
-device txp # 3Com 3cR990 (``Typhoon'')
-device vx # 3Com 3c590, 3c595 (``Vortex'')
-
-# PCI Ethernet NICs that use the common MII bus controller code.
-# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
-device miibus # MII bus support
-device bfe # Broadcom BCM440x 10/100 Ethernet
-device bge # Broadcom BCM570xx Gigabit Ethernet
-device dc # DEC/Intel 21143 and various workalikes
-device fxp # Intel EtherExpress PRO/100B (82557, 82558)
-device lge # Level 1 LXT1001 gigabit ethernet
-device nge # NatSemi DP83820 gigabit ethernet
-device pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc')
-device re # RealTek 8139C+/8169/8169S/8110S
-device rl # RealTek 8129/8139
-device sf # Adaptec AIC-6915 (``Starfire'')
-device sis # Silicon Integrated Systems SiS 900/SiS 7016
-device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
-device ste # Sundance ST201 (D-Link DFE-550TX)
-device ti # Alteon Networks Tigon I/II gigabit Ethernet
-device tl # Texas Instruments ThunderLAN
-device tx # SMC EtherPower II (83c170 ``EPIC'')
-device vge # VIA VT612x gigabit ethernet
-device vr # VIA Rhine, Rhine II
-device wb # Winbond W89C840F
-device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')
-
-# ISA Ethernet NICs. pccard NICs included.
-device cs # Crystal Semiconductor CS89x0 NIC
-# 'device ed' requires 'device miibus'
-device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
-device ex # Intel EtherExpress Pro/10 and Pro/10+
-device ep # Etherlink III based cards
-device fe # Fujitsu MB8696x based cards
-device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc.
-device sn # SMC's 9000 series of Ethernet chips
-device xe # Xircom pccard Ethernet
-
-# ISA devices that use the old ISA shims
-#device le
-
-# Wireless NIC cards
-device wlan # 802.11 support
-#device an # Aironet 4500/4800 802.11 wireless NICs.
-#device awi # BayStack 660 and others
-#device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
-#device wl # Older non 802.11 Wavelan wireless NIC.
-
-# Pseudo devices.
-device loop # Network loopback
-device ether # Ethernet support
-device pty # Pseudo-ttys (telnet etc)
-device md # Memory "disks"
-
-# The `bpf' device enables the Berkeley Packet Filter.
-# Be aware of the administrative consequences of enabling this!
-# Note that 'bpf' is required for DHCP.
-device bpf # Berkeley packet filter
-
-options IPFIREWALL
-options IPFIREWALL_DEFAULT_TO_ACCEPT
-options IPDIVERT
-options DUMMYNET
-
-device pf #PF OpenBSD packet-filter firewall
-device pflog #logging support interface for PF
-device pfsync #synchronization interface for PF
-device carp #Common Address Redundancy Protocol
-
-options ALTQ
-options ALTQ_CBQ # Class Based Queueing
-options ALTQ_RED # Random Early Detection
-options ALTQ_RIO # RED In/Out
-options ALTQ_HFSC # Hierarchical Packet Scheduler
-options ALTQ_CDNR # Traffic conditioner
-options ALTQ_PRIQ # Priority Queueing
-options ALTQ_NOPCC # Required for SMP build
-
-device ath
-device ath_hal
-device ath_rate_sample
-
-# CLK_USE_I8254_CALIBRATION causes the calibrated frequency of the i8254
-# clock to actually be used.
-options CLK_USE_I8254_CALIBRATION
-
-# CPU_ELAN enables support for AMDs ElanSC520 CPU.
-options CPU_ELAN
-options CPU_SOEKRIS
-options CPU_ELAN_XTAL=32768000
-options CPU_ELAN_PPS
-
diff --git a/tools/tools/tinybsd/conf/firewall/etc/authpf/authpf.rules b/tools/tools/tinybsd/conf/firewall/etc/authpf/authpf.rules
deleted file mode 100644
index e8c0da7a1d7e..000000000000
--- a/tools/tools/tinybsd/conf/firewall/etc/authpf/authpf.rules
+++ /dev/null
@@ -1 +0,0 @@
-# $FreeBSD$
diff --git a/tools/tools/tinybsd/conf/firewall/etc/fstab b/tools/tools/tinybsd/conf/firewall/etc/fstab
deleted file mode 100644
index 16ada11d7790..000000000000
--- a/tools/tools/tinybsd/conf/firewall/etc/fstab
+++ /dev/null
@@ -1,2 +0,0 @@
-# $FreeBSD$
-/dev/ad0a / ufs ro 1 1
diff --git a/tools/tools/tinybsd/conf/firewall/etc/natd.conf b/tools/tools/tinybsd/conf/firewall/etc/natd.conf
deleted file mode 100644
index e8c0da7a1d7e..000000000000
--- a/tools/tools/tinybsd/conf/firewall/etc/natd.conf
+++ /dev/null
@@ -1 +0,0 @@
-# $FreeBSD$
diff --git a/tools/tools/tinybsd/conf/firewall/etc/pf.conf b/tools/tools/tinybsd/conf/firewall/etc/pf.conf
deleted file mode 100644
index 9acf363030a2..000000000000
--- a/tools/tools/tinybsd/conf/firewall/etc/pf.conf
+++ /dev/null
@@ -1,78 +0,0 @@
-# $FreeBSD$
-#
-# See pf.conf(5) and /usr/share/examples/pf for syntax and examples.
-# Required order: options, normalization, queueing, translation, filtering.
-# Macros and tables may be defined and used anywhere.
-# Note that translation rules are first match while filter rules are last match.
-
-# Macros: define common values, so they can be referenced and changed easily.
-#ext_if="ext0" # replace with actual external interface name i.e., dc0
-#int_if="int0" # replace with actual internal interface name i.e., dc1
-#internal_net="10.1.1.1/8"
-#external_addr="192.168.1.1"
-
-# Tables: similar to macros, but more flexible for many addresses.
-#table <foo> { 10.0.0.0/8, !10.1.0.0/16, 192.168.0.0/24, 192.168.1.18 }
-
-# Options: tune the behavior of pf, default values are given.
-#set timeout { interval 10, frag 30 }
-#set timeout { tcp.first 120, tcp.opening 30, tcp.established 86400 }
-#set timeout { tcp.closing 900, tcp.finwait 45, tcp.closed 90 }
-#set timeout { udp.first 60, udp.single 30, udp.multiple 60 }
-#set timeout { icmp.first 20, icmp.error 10 }
-#set timeout { other.first 60, other.single 30, other.multiple 60 }
-#set timeout { adaptive.start 0, adaptive.end 0 }
-#set limit { states 10000, frags 5000 }
-#set loginterface none
-#set optimization normal
-#set block-policy drop
-#set require-order yes
-#set fingerprints "/etc/pf.os"
-
-# Normalization: reassemble fragments and resolve or reduce traffic ambiguities.
-#scrub in all
-
-# Queueing: rule-based bandwidth control.
-#altq on $ext_if bandwidth 2Mb cbq queue { dflt, developers, marketing }
-#queue dflt bandwidth 5% cbq(default)
-#queue developers bandwidth 80%
-#queue marketing bandwidth 15%
-
-# Translation: specify how addresses are to be mapped or redirected.
-# nat: packets going out through $ext_if with source address $internal_net will
-# get translated as coming from the address of $ext_if, a state is created for
-# such packets, and incoming packets will be redirected to the internal address.
-#nat on $ext_if from $internal_net to any -> ($ext_if)
-
-# rdr: packets coming in on $ext_if with destination $external_addr:1234 will
-# be redirected to 10.1.1.1:5678. A state is created for such packets, and
-# outgoing packets will be translated as coming from the external address.
-#rdr on $ext_if proto tcp from any to $external_addr/32 port 1234 -> 10.1.1.1 port 5678
-
-# rdr outgoing FTP requests to the ftp-proxy
-#rdr on $int_if proto tcp from any to any port ftp -> 127.0.0.1 port 8021
-
-# spamd-setup puts addresses to be redirected into table <spamd>.
-#table <spamd> persist
-#no rdr on { lo0, lo1 } from any to any
-#rdr inet proto tcp from <spamd> to any port smtp -> 127.0.0.1 port 8025
-
-# Filtering: the implicit first two rules are
-#pass in all
-#pass out all
-
-# block all incoming packets but allow ssh, pass all outgoing tcp and udp
-# connections and keep state, logging blocked packets.
-#block in log all
-#pass in on $ext_if proto tcp from any to $ext_if port 22 keep state
-#pass out on $ext_if proto { tcp, udp } all keep state
-
-# pass incoming packets destined to the addresses given in table <foo>.
-#pass in on $ext_if proto { tcp, udp } from any to <foo> port 80 keep state
-
-# pass incoming ports for ftp-proxy
-#pass in on $ext_if inet proto tcp from any to $ext_if user proxy keep state
-
-# assign packets to a queue.
-#pass out on $ext_if from 192.168.0.0/24 to any keep state queue developers
-#pass out on $ext_if from 192.168.1.0/24 to any keep state queue marketing
diff --git a/tools/tools/tinybsd/conf/firewall/etc/pf.os b/tools/tools/tinybsd/conf/firewall/etc/pf.os
deleted file mode 100644
index 2a64809bcfa9..000000000000
--- a/tools/tools/tinybsd/conf/firewall/etc/pf.os
+++ /dev/null
@@ -1,549 +0,0 @@
-# $FreeBSD$
-# passive OS fingerprinting
-# -------------------------
-#
-# SYN signatures. Those signatures work for SYN packets only (duh!).
-#
-# (C) Copyright 2000-2003 by Michal Zalewski <lcamtuf@coredump.cx>
-# (C) Copyright 2003 by Mike Frantzen <frantzen@w4g.org>
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-#
-# This fingerprint database is adapted from Michal Zalewski's p0f passive
-# operating system package.
-#
-#
-# Each line in this file specifies a single fingerprint. Please read the
-# information below carefully before attempting to append any signatures
-# reported as UNKNOWN to this file to avoid mistakes.
-#
-# We use the following set metrics for fingerprinting:
-#
-# - Window size (WSS) - a highly OS dependent setting used for TCP/IP
-# performance control (max. amount of data to be sent without ACK).
-# Some systems use a fixed value for initial packets. On other
-# systems, it is a multiple of MSS or MTU (MSS+40). In some rare
-# cases, the value is just arbitrary.
-#
-# NEW SIGNATURE: if p0f reported a special value of 'Snn', the number
-# appears to be a multiple of MSS (MSS*nn); a special value of 'Tnn'
-# means it is a multiple of MTU ((MSS+40)*nn). Unless you notice the
-# value of nn is not fixed (unlikely), just copy the Snn or Tnn token
-# literally. If you know this device has a simple stack and a fixed
-# MTU, you can however multiply S value by MSS, or T value by MSS+40,
-# and put it instead of Snn or Tnn.
-#
-# If WSS otherwise looks like a fixed value (for example a multiple
-# of two), or if you can confirm the value is fixed, please quote
-# it literally. If there's no apparent pattern in WSS chosen, you
-# should consider wildcarding this value.
-#
-# - Overall packet size - a function of all IP and TCP options and bugs.
-#
-# NEW SIGNATURE: Copy this value literally.
-#
-# - Initial TTL - We check the actual TTL of a received packet. It can't
-# be higher than the initial TTL, and also shouldn't be dramatically
-# lower (maximum distance is defined as 40 hops).
-#
-# NEW SIGNATURE: *Never* copy TTL from a p0f-reported signature literally.
-# You need to determine the initial TTL. The best way to do it is to
-# check the documentation for a remote system, or check its settings.
-# A fairly good method is to simply round the observed TTL up to
-# 32, 64, 128, or 255, but it should be noted that some obscure devices
-# might not use round TTLs (in particular, some shoddy appliances use
-# "original" initial TTL settings). If not sure, you can see how many
-# hops you're away from the remote party with traceroute or mtr.
-#
-# - Don't fragment flag (DF) - some modern OSes set this to implement PMTU
-# discovery. Others do not bother.
-#
-# NEW SIGNATURE: Copy this value literally.
-#
-# - Maximum segment size (MSS) - this setting is usually link-dependent. P0f
-# uses it to determine link type of the remote host.
-#
-# NEW SIGNATURE: Always wildcard this value, except for rare cases when
-# you have an appliance with a fixed value, know the system supports only
-# a very limited number of network interface types, or know the system
-# is using a value it pulled out of nowhere. Specific unique MSS
-# can be used to tell Google crawlbots from the rest of the population.
-#
-# - Window scaling (WSCALE) - this feature is used to scale WSS.
-# It extends the size of a TCP/IP window to 32 bits. Some modern
-# systems implement this feature.
-#
-# NEW SIGNATURE: Observe several signatures. Initial WSCALE is often set
-# to zero or other low value. There's usually no need to wildcard this
-# parameter.
-#
-# - Timestamp - some systems that implement timestamps set them to
-# zero in the initial SYN. This case is detected and handled appropriately.
-#
-# - Selective ACK permitted - a flag set by systems that implement
-# selective ACK functionality.
-#
-# - The sequence of TCP all options (MSS, window scaling, selective ACK
-# permitted, timestamp, NOP). Other than the options previously
-# discussed, p0f also checks for timestamp option (a silly
-# extension to broadcast your uptime ;-), NOP options (used for
-# header padding) and sackOK option (selective ACK feature).
-#
-# NEW SIGNATURE: Copy the sequence literally.
-#
-# To wildcard any value (except for initial TTL or TCP options), replace
-# it with '*'. You can also use a modulo operator to match any values
-# that divide by nnn - '%nnn'.
-#
-# Fingerprint entry format:
-#
-# wwww:ttt:D:ss:OOO...:OS:Version:Subtype:Details
-#
-# wwww - window size (can be *, %nnn, Snn or Tnn). The special values
-# "S" and "T" which are a multiple of MSS or a multiple of MTU
-# respectively.
-# ttt - initial TTL
-# D - don't fragment bit (0 - not set, 1 - set)
-# ss - overall SYN packet size
-# OOO - option value and order specification (see below)
-# OS - OS genre (Linux, Solaris, Windows)
-# Version - OS Version (2.0.27 on x86, etc)
-# Subtype - OS subtype or patchlevel (SP3, lo0)
-# details - Generic OS details
-#
-# If OS genre starts with '*', p0f will not show distance, link type
-# and timestamp data. It is useful for userland TCP/IP stacks of
-# network scanners and so on, where many settings are randomized or
-# bogus.
-#
-# If OS genre starts with @, it denotes an approximate hit for a group
-# of operating systems (signature reporting still enabled in this case).
-# Use this feature at the end of this file to catch cases for which
-# you don't have a precise match, but can tell it's Windows or FreeBSD
-# or whatnot by looking at, say, flag layout alone.
-#
-# Option block description is a list of comma or space separated
-# options in the order they appear in the packet:
-#
-# N - NOP option
-# Wnnn - window scaling option, value nnn (or * or %nnn)
-# Mnnn - maximum segment size option, value nnn (or * or %nnn)
-# S - selective ACK OK
-# T - timestamp
-# T0 - timestamp with a zero value
-#
-# To denote no TCP options, use a single '.'.
-#
-# Please report any additions to this file, or any inaccuracies or
-# problems spotted, to the maintainers: lcamtuf@coredump.cx,
-# frantzen@openbsd.org and bugs@openbsd.org with a tcpdump packet
-# capture of the relevant SYN packet(s)
-#
-# WARNING WARNING WARNING
-# -----------------------
-#
-# Do not add a system X as OS Y just because NMAP says so. It is often
-# the case that X is a NAT firewall. While nmap is talking to the
-# device itself, p0f is fingerprinting the guy behind the firewall
-# instead.
-#
-# When in doubt, use common sense, don't add something that looks like
-# a completely different system as Linux or FreeBSD or LinkSys router.
-# Check DNS name, establish a connection to the remote host and look
-# at SYN+ACK - does it look similar?
-#
-# Some users tweak their TCP/IP settings - enable or disable RFC1323
-# functionality, enable or disable timestamps or selective ACK,
-# disable PMTU discovery, change MTU and so on. Always compare a new rule
-# to other fingerprints for this system, and verify the system isn't
-# "customized" before adding it. It is OK to add signature variants
-# caused by a commonly used software (personal firewalls, security
-# packages, etc), but it makes no sense to try to add every single
-# possible /proc/sys/net/ipv4 tweak on Linux or so.
-#
-# KEEP IN MIND: Some packet firewalls configured to normalize outgoing
-# traffic (OpenBSD pf with "scrub" enabled, for example) will, well,
-# normalize packets. Signatures will not correspond to the originating
-# system (and probably not quite to the firewall either).
-#
-# NOTE: Try to keep this file in some reasonable order, from most to
-# least likely systems. This will speed up operation. Also keep most
-# generic and broad rules near the end.
-#
-
-##########################
-# Standard OS signatures #
-##########################
-
-# ----------------- AIX ---------------------
-
-# AIX is first because its signatures are close to NetBSD, MacOS X and
-# Linux 2.0, but it uses a fairly rare MSSes, at least sometimes...
-# This is a shoddy hack, though.
-
-16384:64:0:44:M512: AIX:4.3:2-3:AIX 4.3.2 and earlier
-
-16384:64:0:60:M512,N,W%2,N,N,T: AIX:4.3:3:AIX 4.3.3-5.2
-16384:64:0:60:M512,N,W%2,N,N,T: AIX:5.1-5.2::AIX 4.3.3-5.2
-32768:64:0:60:M512,N,W%2,N,N,T: AIX:4.3:3:AIX 4.3.3-5.2
-32768:64:0:60:M512,N,W%2,N,N,T: AIX:5.1-5.2::AIX 4.3.3-5.2
-65535:64:0:60:M512,N,W%2,N,N,T: AIX:4.3:3:AIX 4.3.3-5.2
-65535:64:0:60:M512,N,W%2,N,N,T: AIX:5.1-5.2::AIX 4.3.3-5.2
-65535:64:0:64:M*,N,W1,N,N,T,N,N,S: AIX:5.3:ML1:AIX 5.3 ML1
-
-# ----------------- Linux -------------------
-
-512:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x
-16384:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x
-
-# Endian snafu! Nelson says "ha-ha":
-2:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x (MkLinux) on Mac
-64:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x (MkLinux) on Mac
-
-
-S4:64:1:60:M1360,S,T,N,W0: Linux:google::Linux (Google crawlbot)
-
-S2:64:1:60:M*,S,T,N,W0: Linux:2.4::Linux 2.4 (big boy)
-S3:64:1:60:M*,S,T,N,W0: Linux:2.4:18-21:Linux 2.4.18 and newer
-S4:64:1:60:M*,S,T,N,W0: Linux:2.4::Linux 2.4/2.6
-S4:64:1:60:M*,S,T,N,W0: Linux:2.6::Linux 2.4/2.6
-
-S3:64:1:60:M*,S,T,N,W1: Linux:2.5::Linux 2.5
-S4:64:1:60:M*,S,T,N,W1: Linux:2.5-2.6::Linux 2.5/2.6
-
-S20:64:1:60:M*,S,T,N,W0: Linux:2.2:20-25:Linux 2.2.20 and newer
-S22:64:1:60:M*,S,T,N,W0: Linux:2.2::Linux 2.2
-S11:64:1:60:M*,S,T,N,W0: Linux:2.2::Linux 2.2
-
-# Popular cluster config scripts disable timestamps and
-# selective ACK:
-S4:64:1:48:M1460,N,W0: Linux:2.4:cluster:Linux 2.4 in cluster
-
-# This needs to be investigated. On some systems, WSS
-# is selected as a multiple of MTU instead of MSS. I got
-# many submissions for this for many late versions of 2.4:
-T4:64:1:60:M1412,S,T,N,W0: Linux:2.4::Linux 2.4 (late, uncommon)
-
-# This happens only over loopback, but let's make folks happy:
-32767:64:1:60:M16396,S,T,N,W0: Linux:2.4:lo0:Linux 2.4 (local)
-S8:64:1:60:M3884,S,T,N,W0: Linux:2.2:lo0:Linux 2.2 (local)
-
-# Opera visitors:
-16384:64:1:60:M*,S,T,N,W0: Linux:2.2:Opera:Linux 2.2 (Opera?)
-32767:64:1:60:M*,S,T,N,W0: Linux:2.4:Opera:Linux 2.4 (Opera?)
-
-# Some fairly common mods:
-S4:64:1:52:M*,N,N,S,N,W0: Linux:2.4:ts:Linux 2.4 w/o timestamps
-S22:64:1:52:M*,N,N,S,N,W0: Linux:2.2:ts:Linux 2.2 w/o timestamps
-
-
-# ----------------- FreeBSD -----------------
-
-16384:64:1:44:M*: FreeBSD:2.0-2.2::FreeBSD 2.0-4.1
-16384:64:1:44:M*: FreeBSD:3.0-3.5::FreeBSD 2.0-4.1
-16384:64:1:44:M*: FreeBSD:4.0-4.1::FreeBSD 2.0-4.1
-16384:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.4::FreeBSD 4.4
-
-1024:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.4::FreeBSD 4.4
-
-57344:64:1:44:M*: FreeBSD:4.6-4.8:noRFC1323:FreeBSD 4.6-4.8 (no RFC1323)
-57344:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.6-4.8::FreeBSD 4.6-4.8
-
-32768:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.8-4.9::FreeBSD 4.8-5.1 (or MacOS X)
-32768:64:1:60:M*,N,W0,N,N,T: FreeBSD:5.0-5.1::FreeBSD 4.8-5.1 (or MacOS X)
-65535:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.8-4.9::FreeBSD 4.8-5.1 (or MacOS X)
-65535:64:1:60:M*,N,W0,N,N,T: FreeBSD:5.0-5.1::FreeBSD 4.8-5.1 (or MacOS X)
-65535:64:1:60:M*,N,W1,N,N,T: FreeBSD:4.7-4.9::FreeBSD 4.7-5.1
-65535:64:1:60:M*,N,W1,N,N,T: FreeBSD:5.0-5.1::FreeBSD 4.7-5.1
-
-# 16384:64:1:60:M*,N,N,N,N,N,N,T:FreeBSD:4.4:noTS:FreeBSD 4.4 (w/o timestamps)
-
-# ----------------- NetBSD ------------------
-
-65535:64:0:60:M*,N,W0,N,N,T0: NetBSD:1.6:opera:NetBSD 1.6 (Opera)
-16384:64:0:60:M*,N,W0,N,N,T0: NetBSD:1.6::NetBSD 1.6
-16384:64:1:60:M*,N,W0,N,N,T0: NetBSD:1.6:df:NetBSD 1.6 (DF)
-16384:64:0:60:M*,N,W0,N,N,T: NetBSD:1.3::NetBSD 1.3
-65535:64:1:60:M*,N,W1,N,N,T0: NetBSD:1.6::NetBSD 1.6W-current (DF)
-
-# ----------------- OpenBSD -----------------
-
-16384:64:0:60:M*,N,W0,N,N,T: OpenBSD:2.6::NetBSD 1.3 (or OpenBSD 2.6)
-16384:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-3.4::OpenBSD 3.0-3.4
-16384:64:0:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-3.4:no-df:OpenBSD 3.0-3.4 (scrub no-df)
-57344:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.3-3.4::OpenBSD 3.3-3.4
-57344:64:0:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.3-3.4:no-df:OpenBSD 3.3-3.4 (scrub no-df)
-
-65535:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-3.4:opera:OpenBSD 3.0-3.4 (Opera)
-
-# ----------------- Solaris -----------------
-
-S17:64:1:64:N,W3,N,N,T0,N,N,S,M*: Solaris:8:RFC1323:Solaris 8 RFC1323
-S17:64:1:48:N,N,S,M*: Solaris:8::Solaris 8
-S17:255:1:44:M*: Solaris:2.5-2.7::Solaris 2.5 to 7
-
-S6:255:1:44:M*: Solaris:2.6-2.7::Solaris 2.6 to 7
-S23:255:1:44:M*: Solaris:2.5:1:Solaris 2.5.1
-S34:64:1:48:M*,N,N,S: Solaris:2.9::Solaris 9
-S44:255:1:44:M*: Solaris:2.7::Solaris 7
-
-# ----------------- IRIX --------------------
-
-49152:64:0:44:M*: IRIX:6.4::IRIX 6.4
-61440:64:0:44:M*: IRIX:6.2-6.5::IRIX 6.2-6.5
-49152:64:0:52:M*,N,W2,N,N,S: IRIX:6.5:RFC1323:IRIX 6.5 (RFC1323)
-49152:64:0:52:M*,N,W3,N,N,S: IRIX:6.5:RFC1323:IRIX 6.5 (RFC1323)
-
-61440:64:0:48:M*,N,N,S: IRIX:6.5:12-21:IRIX 6.5.12 - 6.5.21
-49152:64:0:48:M*,N,N,S: IRIX:6.5:15-21:IRIX 6.5.15 - 6.5.21
-
-# ----------------- Tru64 -------------------
-
-32768:64:1:48:M*,N,W0: Tru64:4.0::Tru64 4.0
-32768:64:0:48:M*,N,W0: Tru64:5.0::Tru64 5.0
-8192:64:0:44:M1460: Tru64:5.1:noRFC1323:Tru64 6.1 (no RFC1323) (or QNX 6)
-
-# This looks awfully Linuxish :/
-# S22:64:0:60:M*,S,T,N,W0: Tru64:5.0:a:Tru64 5.0a
-
-61440:64:0:48:M*,N,W0: Tru64:5.1a:JP4:Tru64 v5.1a JP4 (or OpenVMS 7.x on Compaq 5.x stack)
-
-
-# ----------------- OpenVMS -----------------
-
-6144:64:1:60:M*,N,W0,N,N,T: OpenVMS:7.2::OpenVMS 7.2 (Multinet 4.4 stack)
-
-# ----------------- MacOS -------------------
-
-16616:255:1:48:M*,W0: MacOS:7.3-7.6:OTTCP:MacOS 7.3-8.6 (OTTCP)
-16616:255:1:48:M*,W0: MacOS:8.0-8.6:OTTCP:MacOS 7.3-8.6 (OTTCP)
-32768:255:1:48:M*,W0,N: MacOS:9.1-9.2::MacOS 9.1/9.2
-32768:64:0:60:M*,N,W0,N,N,T: MacOS:X:10.2:MacOS X 10.2
-
-# ----------------- Windows -----------------
-
-# Windows 95 - need more:
-
-8192:32:1:44:M*: Windows:95::Windows 95 (low TTL)
-
-# Windows 98 - plenty of silly signatures:
-S44:32:1:48:M*,N,N,S: Windows:98::Windows 98 (low TTL)
-8192:32:1:48:M*,N,N,S: Windows:98::Windows 98 (low TTL)
-
-%8192:64:1:48:M*,N,N,S: Windows:98::Windows 98 (or newer XP/2000 with tweaked TTL)
-S4:64:1:48:M*,N,N,S: Windows:98::Windows 98
-S6:64:1:48:M*,N,N,S: Windows:98::Windows 98
-S12:64:1:48:M*,N,N,S: Windows:98::Windows 98
-32767:64:1:48:M*,N,N,S: Windows:98::Windows 98
-37300:64:1:48:M*,N,N,S: Windows:98::Windows 98
-46080:64:1:52:M*,N,W3,N,N,S: Windows:98:RFC1323:Windows 98 (RFC1323)
-65535:64:1:44:M*: Windows:98:noSACK:Windows 98 (no sack)
-
-S16:128:1:48:M*,N,N,S: Windows:98::Windows 98
-S16:128:1:64:M*,N,W0,N,N,T0,N,N,S: Windows:98::Windows 98
-S26:128:1:48:M*,N,N,S: Windows:98::Windows 98
-T30:128:1:48:M*,N,N,S: Windows:98::Windows 98
-32767:128:1:52:M*,N,W0,N,N,S: Windows:98::Windows 98
-60352:128:1:48:M*,N,N,S: Windows:98::Windows 98
-60352:128:1:64:M*,N,W2,N,N,T0,N,N,S: Windows:98::Windows 98
-
-# Windows NT 4.0 - need more:
-
-64512:128:1:44:M1414: Windows:NT:4.0:Windows NT 4.0 SP6a
-8192:128:1:44:M*: Windows:NT:4.0:Windows NT 4.0 (older)
-6144:128:1:52:M*,W0,N,S,N,N: Windows:NT:4.0:Windows NT 4.0 (RFC1323)
-
-# Windows XP and 2000. Most of the signatures that were
-# either dubious or non-specific (no service pack data)
-# were deleted and replaced with generics at the end.
-
-65535:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows 2000 SP4, XP SP1
-%8192:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows 2000 SP4, XP SP1
-S45:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows 2000 SP4
-S6:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows XP SP1, 2000 SP4
-S44:128:1:48:M*,N,N,S: Windows:2000:SP3:Windows XP Pro SP1, 2000 SP3
-
-S6:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows XP SP1, 2000 SP4
-S44:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows XP Pro SP1, 2000 SP3
-64512:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows XP SP1
-32767:128:1:48:M1452,N,N,S: Windows:XP:SP1:Windows XP SP1
-65535:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows 2000 SP4, XP SP1
-%8192:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows 2000 SP4, XP SP1
-
-# Odds, ends, mods:
-
-S52:128:1:48:M1260,N,N,S: Windows:XP:Cisco:Windows XP/2000 via Cisco
-S52:128:1:48:M1260,N,N,S: Windows:2000:Cisco:Windows XP/2000 via Cisco
-
-# HUNT DOWN:
-# *:128:1:48:M*,N,N,S:U:@Windows:XP (leak) (PLEASE REPORT)
-
-# ----------------- HP/UX -------------------
-
-32768:64:1:44:M*: HP-UX:B.10.20::HP-UX B.10.20
-32768:64:0:48:M*,W0,N: HP-UX:11.0::HP-UX 11.0
-32768:64:1:48:M*,W0,N: HP-UX:11.10::HP-UX 11.0 or 11.11
-32768:64:1:48:M*,W0,N: HP-UX:11.11::HP-UX 11.0 or 11.11
-
-# Whoa. Hardcore WSS.
-0:64:0:48:M*,W0,N: HP-UX:B.11.00:A:HP-UX B.11.00 A (RFC1323)
-
-
-# ----------------- RiscOS ------------------
-
-# We don't yet support the ?12 TCP option
-#16384:64:1:68:M1460,N,W0,N,N,T,N,N,?12: RISCOS:3.70-4.36::RISC OS 3.70-4.36
-
-# ----------------- BSD/OS ------------------
-
-# Once again, power of two WSS is also shared by MacOS X with DF set
-8192:64:1:60:M1460,N,W0,N,N,T: BSD/OS:3.1::BSD/OS 3.1-4.3 (or MacOS X 10.2 w/DF)
-8192:64:1:60:M1460,N,W0,N,N,T: BSD/OS:4.0-4.3::BSD/OS 3.1-4.3 (or MacOS X 10.2)
-
-
-# ---------------- NewtonOS -----------------
-
-4096:64:0:44:M1420: NewtonOS:2.1::NewtonOS 2.1
-
-# ---------------- NeXTSTEP -----------------
-
-S8:64:0:44:M512: NeXTSTEP:3.3::NeXTSTEP 3.3
-
-# ------------------ BeOS -------------------
-
-1024:255:0:48:M*,N,W0: BeOS:5.0-5.1::BeOS 5.0-5.1
-12288:255:0:44:M1402: BeOS:5.0::BeOS 5.0.x
-
-# ------------------ OS/400 -----------------
-
-8192:64:1:60:M1440,N,W0,N,N,T: OS/400:VR4::OS/400 VR4/R5
-8192:64:1:60:M1440,N,W0,N,N,T: OS/400:VR5::OS/400 VR4/R5
-4096:64:1:60:M1440,N,W0,N,N,T: OS/400:V4R5:CF67032:OS/400 V4R5 + CF67032
-
-
-# ------------------ ULTRIX -----------------
-
-16384:64:0:40:.: ULTRIX:4.5::ULTRIX 4.5
-
-# ------------------- QNX -------------------
-
-S16:64:0:44:M512: QNX:::QNX demodisk
-
-# ------------------ Novell -----------------
-
-16384:128:1:44:M1460: Novell:NetWare:5.0:Novel Netware 5.0
-6144:128:1:44:M1460: Novell:IntranetWare:4.11:Novell IntranetWare 4.11
-
-# ----------------- SCO ------------------
-S17:64:1:44:M1460: SCO:Unixware:7.0:SCO Unixware 7.0.0 or OpenServer 5.0.4-5.06
-S17:64:1:44:M1460: SCO:OpenServer:5.0:SCO Unixware 7.0.0 or OpenServer 5.0.4-5.06
-S3:64:1:60:M1460,N,W0,N,N,T: SCO:UnixWare:7.1:SCO UnixWare 7.1
-
-# ------------------- DOS -------------------
-
-2048:255:0:44:M536: DOS:WATTCP:1.05:DOS Arachne via WATTCP/1.05
-
-###########################################
-# Appliance / embedded / other signatures #
-###########################################
-
-# ---------- Firewalls / routers ------------
-
-S12:64:1:44:M1460: @Checkpoint:::Checkpoint (unknown 1)
-S12:64:1:48:N,N,S,M1460: @Checkpoint:::Checkpoint (unknown 2)
-4096:32:0:44:M1460: ExtremeWare:4.x::ExtremeWare 4.x
-60352:64:0:52:M1460,N,W2,N,N,S: Clavister:7::Clavister firewall 7.x
-
-# ------- Switches and other stuff ----------
-
-4128:255:0:44:M*: Cisco:::Cisco Catalyst 3500, 7500 etc
-S8:255:0:44:M*: Cisco:12008::Cisco 12008
-60352:128:1:64:M1460,N,W2,N,N,T,N,N,S: Alteon:ACEswitch::Alteon ACEswitch
-64512:128:1:44:M1370: Nortel:Contivity Client::Nortel Conectivity Client
-
-
-# ---------- Caches and whatnots ------------
-
-S4:64:1:52:M1460,N,N,S,N,W0: AOL:web cache::AOL web cache
-
-32850:64:1:64:N,W1,N,N,T,N,N,S,M*: NetApp:5.x::NetApp Data OnTap 5.x
-16384:64:1:64:M1460,N,N,S,N,W0,N: NetApp:5.3:1:NetApp 5.3.1
-65535:64:0:64:M1460,N,N,S,N,W3,N,N,T: NetApp:5.3:1:NetApp 5.3.1
-65535:64:0:60:M1460,N,W0,N,N,T: NetApp:CacheFlow::NetApp CacheFlow
-8192:64:1:64:M1460,N,N,S,N,W0,N,N,T: NetApp:5.2:1:NetApp NetCache 5.2.1
-
-S4:64:0:48:M1460,N,N,S: Cisco:Content Engine::Cisco Content Engine
-
-27085:128:0:40:.: Dell:PowerApp cache::Dell PowerApp (Linux-based)
-
-65535:255:1:48:N,W1,M1460: Inktomi:crawler::Inktomi crawler
-S1:255:1:60:M1460,S,T,N,W0: LookSmart:ZyBorg::LookSmart ZyBorg
-
-
-16384:255:0:40:.: Proxyblocker:::Proxyblocker (what's this?)
-
-# ----------- Embedded systems --------------
-
-S9:255:0:44:M536: PalmOS:Tungsten:C:PalmOS Tungsten C
-S5:255:0:44:M536: PalmOS:3::PalmOS 3/4
-S5:255:0:44:M536: PalmOS:4::PalmOS 3/4
-S4:255:0:44:M536: PalmOS:3:5:PalmOS 3.5
-2948:255:0:44:M536: PalmOS:3:5:PalmOS 3.5.3 (Handera)
-
-S23:64:1:64:N,W1,N,N,T,N,N,S,M1460: SymbianOS:7::SymbianOS 7
-8192:255:0:44:M1460: SymbianOS:6048::SymbianOS 6048 (on Nokia 7650?)
-8192:255:0:44:M536: SymbianOS:::SymbianOS (on Nokia 9210?)
-
-
-# Perhaps S4?
-5840:64:1:60:M1452,S,T,N,W1: Zaurus:3.10::Zaurus 3.10
-
-32768:128:1:64:M1460,N,W0,N,N,T0,N,N,S: PocketPC:2002::PocketPC 2002
-
-S1:255:0:44:M346: Contiki:1.1:rc0:Contiki 1.1-rc0
-
-4096:128:0:44:M1460: Sega:Dreamcast:3.0:Sega Dreamcast Dreamkey 3.0
-
-S12:64:0:44:M1452: AXIS:5600:v5.64:AXIS Printer Server 5600 v5.64
-
-
-
-####################
-# Fancy signatures #
-####################
-
-1024:64:0:40:.: *NMAP:syn scan:1:NMAP syn scan (1)
-2048:64:0:40:.: *NMAP:syn scan:2:NMAP syn scan (2)
-3072:64:0:40:.: *NMAP:syn scan:3:NMAP syn scan (3)
-4096:64:0:40:.: *NMAP:syn scan:4:NMAP syn scan (4)
-
-1024:64:0:60:W10,N,M265,T: *NMAP:OS:1:NMAP OS detection probe (1)
-2048:64:0:60:W10,N,M265,T: *NMAP:OS:2:NMAP OS detection probe (2)
-3072:64:0:60:W10,N,M265,T: *NMAP:OS:3:NMAP OS detection probe (3)
-4096:64:0:60:W10,N,M265,T: *NMAP:OS:4:NMAP OS detection probe (4)
-
-#####################################
-# Generic signatures - just in case #
-#####################################
-
-#*:64:1:60:M*,N,W*,N,N,T: @FreeBSD:4.0-4.9::FreeBSD 4.x/5.x
-#*:64:1:60:M*,N,W*,N,N,T: @FreeBSD:5.0-5.1::FreeBSD 4.x/5.x
-
-*:128:1:52:M*,N,W0,N,N,S: @Windows:XP:RFC1323:Windows XP/2000 (RFC1323 no tstamp)
-*:128:1:52:M*,N,W0,N,N,S: @Windows:2000:RFC1323:Windows XP/2000 (RFC1323 no tstamp)
-*:128:1:64:M*,N,W0,N,N,T0,N,N,S: @Windows:XP:RFC1323:Windows XP/2000 (RFC1323)
-*:128:1:64:M*,N,W0,N,N,T0,N,N,S: @Windows:2000:RFC1323:Windows XP/2000 (RFC1323)
-*:128:1:64:M*,N,W*,N,N,T0,N,N,S: @Windows:XP:RFC1323:Windows XP (RFC1323, w+)
-*:128:1:48:M*,N,N,S: @Windows:XP::Windows XP/2000
-*:128:1:48:M*,N,N,S: @Windows:2000::Windows XP/2000
diff --git a/tools/tools/tinybsd/conf/firewall/etc/rc.conf b/tools/tools/tinybsd/conf/firewall/etc/rc.conf
deleted file mode 100644
index d00fe837797f..000000000000
--- a/tools/tools/tinybsd/conf/firewall/etc/rc.conf
+++ /dev/null
@@ -1,41 +0,0 @@
-# $FreeBSD$
-hostname="tinybsd.freebsd.org"
-sendmail_enable="NONE"
-sshd_enable="YES"
-usbd_enable="NO"
-inetd_enable="NO"
-portmap_enable="NO"
-update_motd="NO"
-varmfs="YES"
-populate_var="YES"
-varsize="8192"
-tmpmfs="YES"
-
-# IPFW
-firewall_enable="YES"
-firewall_script="/etc/rc.firewall"
-firewall_type="closed"
-
-# NAT
-natd_enable="NO"
-natd_interface=""
-natd_flags=""
-
-# PF
-pf_enable="NO"
-pf_rules="/etc/pf.conf"
-pf_program="/sbin/pfctl"
-pf_flags=""
-pflog_enable="NO"
-pflog_logfile="/var/log/pflog"
-pflog_program="/sbin/pflogd"
-pflog_flags=""
-
-# CARP Example
-#cloned_interfaces="carp0"
-#ifconfig_carp0="vhid 1 pass xalala 192.168.1.1/24"
-
-
-
-
-
diff --git a/tools/tools/tinybsd/conf/firewall/etc/rc.firewall b/tools/tools/tinybsd/conf/firewall/etc/rc.firewall
deleted file mode 100644
index bda2ff62a155..000000000000
--- a/tools/tools/tinybsd/conf/firewall/etc/rc.firewall
+++ /dev/null
@@ -1,302 +0,0 @@
-#!/bin/sh -
-# Copyright (c) 1996 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.
-#
-# $FreeBSD$
-#
-
-#
-# Setup system for firewall service.
-#
-
-# Suck in the configuration variables.
-if [ -z "${source_rc_confs_defined}" ]; then
- if [ -r /etc/defaults/rc.conf ]; then
- . /etc/defaults/rc.conf
- source_rc_confs
- elif [ -r /etc/rc.conf ]; then
- . /etc/rc.conf
- fi
-fi
-
-############
-# Define the firewall type in /etc/rc.conf. Valid values are:
-# open - will allow anyone in
-# client - will try to protect just this machine
-# simple - will try to protect a whole network
-# closed - totally disables IP services except via lo0 interface
-# UNKNOWN - disables the loading of firewall rules.
-# filename - will load the rules in the given filename (full path required)
-#
-# For ``client'' and ``simple'' the entries below should be customized
-# appropriately.
-
-############
-#
-# If you don't know enough about packet filtering, we suggest that you
-# take time to read this book:
-#
-# Building Internet Firewalls, 2nd Edition
-# Brent Chapman and Elizabeth Zwicky
-#
-# O'Reilly & Associates, Inc
-# ISBN 1-56592-871-7
-# http://www.ora.com/
-# http://www.oreilly.com/catalog/fire2/
-#
-# For a more advanced treatment of Internet Security read:
-#
-# Firewalls & Internet Security
-# Repelling the wily hacker
-# William R. Cheswick, Steven M. Bellowin
-#
-# Addison-Wesley
-# ISBN 0-201-63357-4
-# http://www.awl.com/
-# http://www.awlonline.com/product/0%2C2627%2C0201633574%2C00.html
-#
-
-setup_loopback () {
- ############
- # Only in rare cases do you want to change these rules
- #
- ${fwcmd} add 100 pass all from any to any via lo0
- ${fwcmd} add 200 deny all from any to 127.0.0.0/8
- ${fwcmd} add 300 deny ip from 127.0.0.0/8 to any
-}
-
-if [ -n "${1}" ]; then
- firewall_type="${1}"
-fi
-
-############
-# Set quiet mode if requested
-#
-case ${firewall_quiet} in
-[Yy][Ee][Ss])
- fwcmd="/sbin/ipfw -q"
- ;;
-*)
- fwcmd="/sbin/ipfw"
- ;;
-esac
-
-############
-# Flush out the list before we begin.
-#
-${fwcmd} -f flush
-
-############
-# Network Address Translation. All packets are passed to natd(8)
-# before they encounter your remaining rules. The firewall rules
-# will then be run again on each packet after translation by natd
-# starting at the rule number following the divert rule.
-#
-# For ``simple'' firewall type the divert rule should be put to a
-# different place to not interfere with address-checking rules.
-#
-case ${firewall_type} in
-[Oo][Pp][Ee][Nn]|[Cc][Ll][Ii][Ee][Nn][Tt])
- case ${natd_enable} in
- [Yy][Ee][Ss])
- if [ -n "${natd_interface}" ]; then
- ${fwcmd} add 50 divert natd all from any to any via ${natd_interface}
- fi
- ;;
- esac
-esac
-
-############
-# If you just configured ipfw in the kernel as a tool to solve network
-# problems or you just want to disallow some particular kinds of traffic
-# then you will want to change the default policy to open. You can also
-# do this as your only action by setting the firewall_type to ``open''.
-#
-# ${fwcmd} add 65000 pass all from any to any
-
-
-# Prototype setups.
-#
-case ${firewall_type} in
-[Oo][Pp][Ee][Nn])
- setup_loopback
- ${fwcmd} add 65000 pass all from any to any
- ;;
-
-[Cc][Ll][Ii][Ee][Nn][Tt])
- ############
- # This is a prototype setup that will protect your system somewhat
- # against people from outside your own network.
- ############
-
- # set these to your network and netmask and ip
- net="192.0.2.0"
- mask="255.255.255.0"
- ip="192.0.2.1"
-
- setup_loopback
-
- # Allow any traffic to or from my own net.
- ${fwcmd} add pass all from ${ip} to ${net}:${mask}
- ${fwcmd} add pass all from ${net}:${mask} to ${ip}
-
- # Allow TCP through if setup succeeded
- ${fwcmd} add pass tcp from any to any established
-
- # Allow IP fragments to pass through
- ${fwcmd} add pass all from any to any frag
-
- # Allow setup of incoming email
- ${fwcmd} add pass tcp from any to ${ip} 25 setup
-
- # Allow setup of outgoing TCP connections only
- ${fwcmd} add pass tcp from ${ip} to any setup
-
- # Disallow setup of all other TCP connections
- ${fwcmd} add deny tcp from any to any setup
-
- # Allow DNS queries out in the world
- ${fwcmd} add pass udp from ${ip} to any 53 keep-state
-
- # Allow NTP queries out in the world
- ${fwcmd} add pass udp from ${ip} to any 123 keep-state
-
- # Everything else is denied by default, unless the
- # IPFIREWALL_DEFAULT_TO_ACCEPT option is set in your kernel
- # config file.
- ;;
-
-[Ss][Ii][Mm][Pp][Ll][Ee])
- ############
- # This is a prototype setup for a simple firewall. Configure this
- # machine as a DNS and NTP server, and point all the machines
- # on the inside at this machine for those services.
- ############
-
- # set these to your outside interface network and netmask and ip
- oif="em0"
- onet="192.0.2.0"
- omask="255.255.255.240"
- oip="192.0.2.1"
-
- # set these to your inside interface network and netmask and ip
- iif="em1"
- inet="192.0.2.16"
- imask="255.255.255.240"
- iip="192.0.2.17"
-
- setup_loopback
-
- # Stop spoofing
- ${fwcmd} add deny all from ${inet}:${imask} to any in via ${oif}
- ${fwcmd} add deny all from ${onet}:${omask} to any in via ${iif}
-
- # Stop RFC1918 nets on the outside interface
- ${fwcmd} add deny all from any to 10.0.0.0/8 via ${oif}
- ${fwcmd} add deny all from any to 172.16.0.0/12 via ${oif}
- ${fwcmd} add deny all from any to 192.168.0.0/16 via ${oif}
-
- # Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1,
- # DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E)
- # on the outside interface
- ${fwcmd} add deny all from any to 0.0.0.0/8 via ${oif}
- ${fwcmd} add deny all from any to 169.254.0.0/16 via ${oif}
- ${fwcmd} add deny all from any to 192.0.2.0/24 via ${oif}
- ${fwcmd} add deny all from any to 224.0.0.0/4 via ${oif}
- ${fwcmd} add deny all from any to 240.0.0.0/4 via ${oif}
-
- # Network Address Translation. This rule is placed here deliberately
- # so that it does not interfere with the surrounding address-checking
- # rules. If for example one of your internal LAN machines had its IP
- # address set to 192.0.2.1 then an incoming packet for it after being
- # translated by natd(8) would match the `deny' rule above. Similarly
- # an outgoing packet originated from it before being translated would
- # match the `deny' rule below.
- case ${natd_enable} in
- [Yy][Ee][Ss])
- if [ -n "${natd_interface}" ]; then
- ${fwcmd} add divert natd all from any to any via ${natd_interface}
- fi
- ;;
- esac
-
- # Stop RFC1918 nets on the outside interface
- ${fwcmd} add deny all from 10.0.0.0/8 to any via ${oif}
- ${fwcmd} add deny all from 172.16.0.0/12 to any via ${oif}
- ${fwcmd} add deny all from 192.168.0.0/16 to any via ${oif}
-
- # Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1,
- # DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E)
- # on the outside interface
- ${fwcmd} add deny all from 0.0.0.0/8 to any via ${oif}
- ${fwcmd} add deny all from 169.254.0.0/16 to any via ${oif}
- ${fwcmd} add deny all from 192.0.2.0/24 to any via ${oif}
- ${fwcmd} add deny all from 224.0.0.0/4 to any via ${oif}
- ${fwcmd} add deny all from 240.0.0.0/4 to any via ${oif}
-
- # Allow TCP through if setup succeeded
- ${fwcmd} add pass tcp from any to any established
-
- # Allow IP fragments to pass through
- ${fwcmd} add pass all from any to any frag
-
- # Allow setup of incoming email
- ${fwcmd} add pass tcp from any to ${oip} 25 setup
-
- # Allow access to our DNS
- ${fwcmd} add pass tcp from any to ${oip} 53 setup
- ${fwcmd} add pass udp from any to ${oip} 53
- ${fwcmd} add pass udp from ${oip} 53 to any
-
- # Allow access to our WWW
- ${fwcmd} add pass tcp from any to ${oip} 80 setup
-
- # Reject&Log all setup of incoming connections from the outside
- ${fwcmd} add deny log tcp from any to any in via ${oif} setup
-
- # Allow setup of any other TCP connection
- ${fwcmd} add pass tcp from any to any setup
-
- # Allow DNS queries out in the world
- ${fwcmd} add pass udp from ${oip} to any 53 keep-state
-
- # Allow NTP queries out in the world
- ${fwcmd} add pass udp from ${oip} to any 123 keep-state
-
- # Everything else is denied by default, unless the
- # IPFIREWALL_DEFAULT_TO_ACCEPT option is set in your kernel
- # config file.
- ;;
-
-[Cc][Ll][Oo][Ss][Ee][Dd])
- setup_loopback
- ;;
-[Uu][Nn][Kk][Nn][Oo][Ww][Nn])
- ;;
-*)
- if [ -r "${firewall_type}" ]; then
- ${fwcmd} ${firewall_flags} ${firewall_type}
- fi
- ;;
-esac
diff --git a/tools/tools/tinybsd/conf/firewall/etc/sysctl.conf b/tools/tools/tinybsd/conf/firewall/etc/sysctl.conf
deleted file mode 100644
index f9e09ff620d0..000000000000
--- a/tools/tools/tinybsd/conf/firewall/etc/sysctl.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-# $FreeBSD$
-# CARP Options
-#net.inet.carp.preempt=1
-#net.inet.carp.arpbalance=1
-
diff --git a/tools/tools/tinybsd/conf/firewall/tinybsd.basefiles b/tools/tools/tinybsd/conf/firewall/tinybsd.basefiles
deleted file mode 100644
index ad76d0b758a3..000000000000
--- a/tools/tools/tinybsd/conf/firewall/tinybsd.basefiles
+++ /dev/null
@@ -1,240 +0,0 @@
-# $FreeBSD$
-# contents of ${WORKDIR}/boot
-boot/boot0
-boot/boot1
-boot/boot2
-boot/defaults/loader.conf
-boot/device.hints
-boot/loader
-boot/loader.4th
-boot/loader.help
-boot/loader.rc
-boot/mbr
-boot/support.4th
-
-# contents of ${WORKDIR}/libexec
-libexec/ld-elf.so.1:usr/libexec/ld-elf.so.1
-
-# contents of ${WORKDIR}/bin
-bin/[:bin/test
-bin/cat
-bin/chflags
-bin/chio
-bin/chmod
-bin/cp
-bin/csh:bin/tcsh
-bin/date
-bin/dd
-bin/df
-bin/domainname
-bin/echo
-bin/ed:bin/red
-bin/expr
-bin/hostname
-bin/kenv
-bin/kill
-bin/ln:bin/link
-bin/ls
-bin/mkdir
-bin/mv
-bin/pax
-bin/ps
-bin/pwd
-bin/realpath
-bin/rm:bin/unlink
-bin/rmdir
-bin/sh
-bin/sleep
-bin/stty
-bin/sync
-
-# contents of ${WORKDIR}/sbin
-sbin/adjkerntz
-sbin/comcontrol
-sbin/disklabel
-sbin/dmesg
-sbin/fastboot:sbin/reboot
-sbin/fasthalt:sbin/halt
-sbin/fsck
-sbin/fsck_ufs:sbin/fsck_ffs
-sbin/fsck_ufs:sbin/fsck_4.2bsd
-sbin/ifconfig
-sbin/init
-sbin/ipfw
-sbin/kldconfig
-sbin/kldload
-sbin/kldstat
-sbin/kldunload
-sbin/ldconfig
-sbin/md5
-sbin/mdconfig
-sbin/mknod
-sbin/mdmfs
-sbin/mount
-sbin/mount_nfs
-sbin/mount_nullfs
-sbin/mount_unionfs
-sbin/natd
-sbin/newfs
-sbin/nextboot
-sbin/nologin
-sbin/nos-tun
-sbin/pfctl
-sbin/pflogd
-sbin/ping
-sbin/rcorder
-sbin/route
-sbin/shutdown
-sbin/slattach
-sbin/swapon
-sbin/sysctl
-sbin/umount
-
-# contents of ${WORKDIR}/usr/sbin
-usr/bin/at:usr/bin/atq
-usr/bin/at:usr/bin/atrm
-usr/bin/at:usr/bin/batch
-usr/bin/awk
-usr/bin/basename
-usr/bin/bunzip2:usr/bin/bzcat
-usr/bin/bunzip2:usr/bin/bzip2
-usr/bin/chat
-usr/bin/chfn:usr/bin/chpass
-usr/bin/chfn:usr/bin/chsh
-usr/bin/chgrp
-usr/bin/cksum
-usr/bin/clear
-usr/bin/cmp
-usr/bin/compress:usr/bin/uncompress
-usr/bin/cpio
-usr/bin/crontab
-usr/bin/cu
-usr/bin/dig
-usr/bin/dirname
-usr/bin/du
-usr/bin/ee
-usr/bin/egrep:usr/bin/fgrep
-usr/bin/egrep:usr/bin/grep
-usr/bin/env
-usr/bin/false
-usr/bin/fetch
-usr/bin/find
-usr/bin/finger
-usr/bin/fstat
-usr/bin/fsync
-usr/bin/ftp
-usr/bin/gunzip:usr/bin/gzcat
-usr/bin/gunzip:usr/bin/gzip
-usr/bin/gzexe
-usr/bin/head
-usr/bin/hexdump
-usr/bin/id:usr/bin/whoami
-usr/bin/ident
-usr/bin/killall
-usr/bin/last
-usr/bin/less:usr/bin/more
-usr/bin/limits
-usr/bin/lock
-usr/bin/lockf
-usr/bin/logger
-usr/bin/login
-usr/bin/logname
-usr/bin/mesg
-usr/bin/minigzip
-usr/bin/mkfifo
-usr/bin/mktemp
-usr/bin/msgs
-usr/bin/netstat
-usr/bin/nfsstat
-usr/bin/nice
-usr/bin/nslookup
-usr/bin/nsupdate
-usr/bin/nohup
-usr/bin/objformat
-usr/bin/openssl
-usr/bin/passwd
-usr/bin/printf
-usr/bin/renice
-usr/bin/reset:usr/sbin/tset
-usr/bin/scp
-usr/bin/script
-usr/bin/sed
-usr/bin/sftp
-usr/bin/shar
-usr/bin/slogin:usr/bin/ssh
-usr/bin/sort
-usr/bin/split
-usr/bin/ssh-keygen
-usr/bin/su
-usr/bin/tail
-usr/bin/tar
-usr/bin/tee
-usr/bin/telnet
-usr/bin/tftp
-usr/bin/time
-usr/bin/top
-usr/bin/touch
-usr/bin/tput
-usr/bin/tr
-usr/bin/true
-usr/bin/tty
-usr/bin/uname
-usr/bin/uptime:usr/bin/w
-usr/bin/users
-usr/bin/uudecode
-usr/bin/uuencode
-usr/bin/vi
-usr/bin/vmstat
-usr/bin/wall
-usr/bin/who
-usr/bin/whois
-usr/bin/write
-usr/bin/yes
-
-# contents of ${WORKDIR}/usr/sbin
-usr/sbin/arp
-usr/sbin/authpf
-usr/sbin/boot0cfg
-usr/sbin/chown
-usr/sbin/chroot
-usr/sbin/cron
-usr/sbin/idprio:usr/sbin/rtprio
-usr/sbin/inetd
-usr/sbin/iostat
-usr/sbin/kbdcontrol
-usr/sbin/lastlogin
-usr/sbin/memcontrol
-usr/sbin/mountd
-usr/sbin/mtree
-usr/sbin/named
-usr/sbin/named.reload
-usr/sbin/newsyslog
-usr/sbin/ngctl
-usr/sbin/nghook
-usr/sbin/ntpdate
-usr/sbin/pciconf
-usr/sbin/pw
-usr/sbin/pwd_mkdb
-usr/sbin/slstat
-usr/sbin/sshd
-usr/sbin/syslogd
-usr/sbin/tcpdchk
-usr/sbin/tcpdmatch
-usr/sbin/tcpdump
-usr/sbin/traceroute
-usr/sbin/vidcontrol
-usr/sbin/vipw
-usr/sbin/vnconfig
-usr/sbin/watch
-
-# contents of ${WORKDIR}/usr/libexec
-usr/libexec/atrun
-usr/libexec/ftpd
-usr/libexec/getty
-usr/libexec/sftp-server
-usr/libexec/telnetd
-usr/libexec/tftpd
-
-# contents of ${WORKDIR}/usr/share
-usr/share/misc/termcap
-
diff --git a/tools/tools/tinybsd/conf/firewall/tinybsd.ports b/tools/tools/tinybsd/conf/firewall/tinybsd.ports
deleted file mode 100644
index 49bb52175241..000000000000
--- a/tools/tools/tinybsd/conf/firewall/tinybsd.ports
+++ /dev/null
@@ -1,9 +0,0 @@
-# $FreeBSD$
-# Here you can add the applications from the FreeBSD Ports Collection which you
-# want TinyBSD ports system to install in your embedded system. You whould list
-# one application per line, mentioning its category and name, like the examples:
-#
-# www/mini_httpd
-# net-mgmt/rate
-#
-# Make sure you have enough space to add it.
diff --git a/tools/tools/tinybsd/conf/minimal/TINYBSD b/tools/tools/tinybsd/conf/minimal/TINYBSD
deleted file mode 100644
index 7052e6a22f58..000000000000
--- a/tools/tools/tinybsd/conf/minimal/TINYBSD
+++ /dev/null
@@ -1,77 +0,0 @@
-# $FreeBSD$
-machine i386
-cpu I486_CPU
-cpu I586_CPU
-cpu I686_CPU
-ident TINYBSD
-
-# To statically compile in device wiring instead of /boot/device.hints
-#hints "GENERIC.hints" # Default places to look for devices.
-
-options SCHED_4BSD # 4BSD scheduler
-options INET # InterNETworking
-options FFS # Berkeley Fast Filesystem
-options SOFTUPDATES # Enable FFS soft updates support
-options UFS_DIRHASH # Improve performance on big directories
-options MD_ROOT # MD is a potential root device
-options PROCFS # Process filesystem (requires PSEUDOFS)
-options PSEUDOFS # Pseudo-filesystem framework
-options GEOM_PART_GPT # GUID Partition Tables.
-options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]
-options COMPAT_FREEBSD4 # Compatible with FreeBSD4
-options SYSVSHM # SYSV-style shared memory
-options SYSVMSG # SYSV-style message queues
-options SYSVSEM # SYSV-style semaphores
-options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
-options KBD_INSTALL_CDEV # install a CDEV entry in /dev
-options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~128k to driver.
-options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~215k to driver.
-options ADAPTIVE_GIANT # Giant mutex is adaptive.
-
-device apic # I/O APIC
-
-device pci
-
-# ATA and ATAPI devices
-device ata
-device atadisk # ATA disk drives
-options ATA_STATIC_ID # Static device numbering
-
-# atkbdc0 controls both the keyboard and the PS/2 mouse
-device atkbdc # AT keyboard controller
-device atkbd # AT keyboard
-device psm # PS/2 mouse
-
-device vga # VGA video card driver
-
-#device splash # Splash screen and screen saver support
-
-# syscons is the default console driver, resembling an SCO console
-device sc
-
-# Enable this for the pcvt (VT220 compatible) console driver
-#device vt
-#options XSERVER # support for X server on a vt console
-#options FAT_CURSOR # start with block cursor
-
-device agp # support several AGP chipsets
-
-# Pseudo devices.
-device loop # Network loopback
-device ether # Ethernet support
-device pty # Pseudo-ttys (telnet etc)
-device md # Memory "disks"
-
-# CLK_USE_I8254_CALIBRATION causes the calibrated frequency of the i8254
-# clock to actually be used.
-options CLK_USE_I8254_CALIBRATION
-
-# CPU_ELAN enables support for AMDs ElanSC520 CPU.
-options CPU_ELAN
-options CPU_SOEKRIS
-options CPU_ELAN_XTAL=32768000
-options CPU_ELAN_PPS
-
-device bpf
diff --git a/tools/tools/tinybsd/conf/minimal/etc/fstab b/tools/tools/tinybsd/conf/minimal/etc/fstab
deleted file mode 100644
index 16ada11d7790..000000000000
--- a/tools/tools/tinybsd/conf/minimal/etc/fstab
+++ /dev/null
@@ -1,2 +0,0 @@
-# $FreeBSD$
-/dev/ad0a / ufs ro 1 1
diff --git a/tools/tools/tinybsd/conf/minimal/etc/rc.conf b/tools/tools/tinybsd/conf/minimal/etc/rc.conf
deleted file mode 100644
index a21476241081..000000000000
--- a/tools/tools/tinybsd/conf/minimal/etc/rc.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-# $FreeBSD$
-hostname="tinybsd.freebsd.org"
-sendmail_enable="NONE"
-sshd_enable="YES"
-usbd_enable="NO"
-inetd_enable="NO"
-portmap_enable="NO"
-update_motd="NO"
-varmfs="YES"
-populate_var="YES"
-varsize="8192"
-tmpmfs="YES"
diff --git a/tools/tools/tinybsd/conf/minimal/tinybsd.basefiles b/tools/tools/tinybsd/conf/minimal/tinybsd.basefiles
deleted file mode 100644
index 446ef1f2afea..000000000000
--- a/tools/tools/tinybsd/conf/minimal/tinybsd.basefiles
+++ /dev/null
@@ -1,167 +0,0 @@
-# $FreeBSD$
-# contents of ${WORKDIR}/boot
-boot/boot0
-boot/boot1
-boot/boot2
-boot/defaults/loader.conf
-boot/device.hints
-boot/loader
-boot/loader.4th
-boot/loader.help
-boot/loader.rc
-boot/mbr
-boot/support.4th
-
-# contents of ${WORKDIR}/libexec
-libexec/ld-elf.so.1:usr/libexec/ld-elf.so.1
-
-# contents of ${WORKDIR}/bin
-bin/[:bin/test
-bin/cat
-bin/chflags
-bin/chio
-bin/chmod
-bin/cp
-bin/csh:bin/tcsh
-bin/date
-bin/df
-bin/domainname
-bin/echo
-bin/ed:bin/red
-bin/expr
-bin/hostname
-bin/kenv
-bin/kill
-bin/ln:bin/link
-bin/ls
-bin/mkdir
-bin/mv
-bin/pax
-bin/ps
-bin/pwd
-bin/realpath
-bin/rm:bin/unlink
-bin/rmdir
-bin/sh
-bin/sleep
-bin/stty
-bin/sync
-
-# contents of ${WORKDIR}/sbin
-sbin/adjkerntz
-sbin/disklabel
-sbin/dmesg
-sbin/fastboot:sbin/reboot
-sbin/fasthalt:sbin/halt
-sbin/fsck
-sbin/fsck_ufs:sbin/fsck_ffs
-sbin/fsck_ufs:sbin/fsck_4.2bsd
-sbin/ifconfig
-sbin/init
-sbin/kldconfig
-sbin/kldload
-sbin/kldstat
-sbin/kldunload
-sbin/ldconfig
-sbin/mdconfig
-sbin/mknod
-sbin/mdmfs
-sbin/mount
-sbin/mount_nullfs
-sbin/mount_unionfs
-sbin/newfs
-sbin/nextboot
-sbin/nologin
-sbin/rcorder
-sbin/shutdown
-sbin/swapon
-sbin/sysctl
-sbin/umount
-
-# contents of ${WORKDIR}/usr/sbin
-usr/bin/at:usr/bin/atq
-usr/bin/at:usr/bin/atrm
-usr/bin/at:usr/bin/batch
-usr/bin/awk
-usr/bin/basename
-usr/bin/bunzip2:usr/bin/bzcat
-usr/bin/bunzip2:usr/bin/bzip2
-usr/bin/chfn:usr/bin/chpass
-usr/bin/chfn:usr/bin/chsh
-usr/bin/chgrp
-usr/bin/cksum
-usr/bin/clear
-usr/bin/compress:usr/bin/uncompress
-usr/bin/crontab
-usr/bin/ee
-usr/bin/egrep:usr/bin/fgrep
-usr/bin/egrep:usr/bin/grep
-usr/bin/env
-usr/bin/false
-usr/bin/fstat
-usr/bin/fsync
-usr/bin/gunzip:usr/bin/gzcat
-usr/bin/gunzip:usr/bin/gzip
-usr/bin/head
-usr/bin/hexdump
-usr/bin/id:usr/bin/whoami
-usr/bin/killall
-usr/bin/last
-usr/bin/less:usr/bin/more
-usr/bin/logger
-usr/bin/login
-usr/bin/logname
-usr/bin/mesg
-usr/bin/minigzip
-usr/bin/mkfifo
-usr/bin/mktemp
-usr/bin/msgs
-usr/bin/nice
-usr/bin/nohup
-usr/bin/objformat
-usr/bin/passwd
-usr/bin/printf
-usr/bin/reset:usr/sbin/tset
-usr/bin/scp
-usr/bin/sed
-usr/bin/slogin:usr/bin/ssh
-usr/bin/su
-usr/bin/tail
-usr/bin/tar
-usr/bin/tee
-usr/bin/time
-usr/bin/top
-usr/bin/touch
-usr/bin/true
-usr/bin/tty
-usr/bin/uname
-usr/bin/uptime:usr/bin/w
-usr/bin/users
-usr/bin/uudecode
-usr/bin/uuencode
-usr/bin/vmstat
-usr/bin/who
-usr/bin/whois
-
-# contents of ${WORKDIR}/usr/sbin
-usr/sbin/boot0cfg
-usr/sbin/chown
-usr/sbin/cron
-usr/sbin/idprio:usr/sbin/rtprio
-usr/sbin/lastlogin
-usr/sbin/memcontrol
-usr/sbin/mtree
-usr/sbin/newsyslog
-usr/sbin/pw
-usr/sbin/pwd_mkdb
-usr/sbin/syslogd
-usr/sbin/vidcontrol
-usr/sbin/vipw
-
-# contents of ${WORKDIR}/usr/libexec
-usr/libexec/atrun
-usr/libexec/getty
-
-# contents of ${WORKDIR}/usr/share
-usr/share/misc/termcap
-
diff --git a/tools/tools/tinybsd/conf/minimal/tinybsd.ports b/tools/tools/tinybsd/conf/minimal/tinybsd.ports
deleted file mode 100644
index 49bb52175241..000000000000
--- a/tools/tools/tinybsd/conf/minimal/tinybsd.ports
+++ /dev/null
@@ -1,9 +0,0 @@
-# $FreeBSD$
-# Here you can add the applications from the FreeBSD Ports Collection which you
-# want TinyBSD ports system to install in your embedded system. You whould list
-# one application per line, mentioning its category and name, like the examples:
-#
-# www/mini_httpd
-# net-mgmt/rate
-#
-# Make sure you have enough space to add it.
diff --git a/tools/tools/tinybsd/conf/vpn/TINYBSD b/tools/tools/tinybsd/conf/vpn/TINYBSD
deleted file mode 100644
index 25848510f598..000000000000
--- a/tools/tools/tinybsd/conf/vpn/TINYBSD
+++ /dev/null
@@ -1,153 +0,0 @@
-# $FreeBSD$
-machine i386
-cpu I486_CPU
-cpu I586_CPU
-cpu I686_CPU
-ident TINYBSD
-
-# To statically compile in device wiring instead of /boot/device.hints
-#hints "GENERIC.hints" # Default places to look for devices.
-
-options SCHED_4BSD # 4BSD scheduler
-options INET # InterNETworking
-options FFS # Berkeley Fast Filesystem
-options SOFTUPDATES # Enable FFS soft updates support
-options UFS_DIRHASH # Improve performance on big directories
-options MD_ROOT # MD is a potential root device
-options PROCFS # Process filesystem (requires PSEUDOFS)
-options PSEUDOFS # Pseudo-filesystem framework
-options GEOM_PART_GPT # GUID Partition Tables.
-options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]
-options COMPAT_FREEBSD4 # Compatible with FreeBSD4
-options SYSVSHM # SYSV-style shared memory
-options SYSVMSG # SYSV-style message queues
-options SYSVSEM # SYSV-style semaphores
-options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
-options KBD_INSTALL_CDEV # install a CDEV entry in /dev
-options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~128k to driver.
-options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~215k to driver.
-options ADAPTIVE_GIANT # Giant mutex is adaptive.
-
-device apic # I/O APIC
-
-device eisa
-device pci
-
-# Floppy drives
-#device fdc
-
-# ATA and ATAPI devices
-device ata
-device atadisk # ATA disk drives
-device atapist # ATAPI tape drives
-options ATA_STATIC_ID # Static device numbering
-
-# atkbdc0 controls both the keyboard and the PS/2 mouse
-device atkbdc # AT keyboard controller
-device atkbd # AT keyboard
-device psm # PS/2 mouse
-
-device vga # VGA video card driver
-
-#device splash # Splash screen and screen saver support
-
-# syscons is the default console driver, resembling an SCO console
-device sc
-
-# Enable this for the pcvt (VT220 compatible) console driver
-#device vt
-#options XSERVER # support for X server on a vt console
-#options FAT_CURSOR # start with block cursor
-
-device agp # support several AGP chipsets
-
-# PCCARD (PCMCIA) support
-# PCMCIA and cardbus bridge support
-#device cbb # cardbus (yenta) bridge
-#device pccard # PC Card (16-bit) bus
-#device cardbus # CardBus (32-bit) bus
-
-# Serial (COM) ports
-device sio # 8250, 16[45]50 based serial ports
-
-# PCI Ethernet NICs.
-device de # DEC/Intel DC21x4x (``Tulip'')
-device em # Intel PRO/1000 adapter Gigabit Ethernet Card
-device txp # 3Com 3cR990 (``Typhoon'')
-device vx # 3Com 3c590, 3c595 (``Vortex'')
-
-# PCI Ethernet NICs that use the common MII bus controller code.
-# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
-device miibus # MII bus support
-device bfe # Broadcom BCM440x 10/100 Ethernet
-device bge # Broadcom BCM570xx Gigabit Ethernet
-device dc # DEC/Intel 21143 and various workalikes
-device fxp # Intel EtherExpress PRO/100B (82557, 82558)
-device lge # Level 1 LXT1001 gigabit ethernet
-device nge # NatSemi DP83820 gigabit ethernet
-device pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc')
-device re # RealTek 8139C+/8169/8169S/8110S
-device rl # RealTek 8129/8139
-device sf # Adaptec AIC-6915 (``Starfire'')
-device sis # Silicon Integrated Systems SiS 900/SiS 7016
-device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
-device ste # Sundance ST201 (D-Link DFE-550TX)
-device ti # Alteon Networks Tigon I/II gigabit Ethernet
-device tl # Texas Instruments ThunderLAN
-device tx # SMC EtherPower II (83c170 ``EPIC'')
-device vge # VIA VT612x gigabit ethernet
-device vr # VIA Rhine, Rhine II
-device wb # Winbond W89C840F
-device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')
-
-# ISA Ethernet NICs. pccard NICs included.
-device cs # Crystal Semiconductor CS89x0 NIC
-# 'device ed' requires 'device miibus'
-device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
-device ex # Intel EtherExpress Pro/10 and Pro/10+
-device ep # Etherlink III based cards
-device fe # Fujitsu MB8696x based cards
-device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc.
-device sn # SMC's 9000 series of Ethernet chips
-device xe # Xircom pccard Ethernet
-
-# ISA devices that use the old ISA shims
-#device le
-
-# Wireless NIC cards
-#device wlan # 802.11 support
-#device an # Aironet 4500/4800 802.11 wireless NICs.
-#device awi # BayStack 660 and others
-#device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
-#device wl # Older non 802.11 Wavelan wireless NIC.
-
-# Pseudo devices.
-device loop # Network loopback
-device ether # Ethernet support
-device ppp # Kernel PPP
-device tun # Packet tunnel.
-device pty # Pseudo-ttys (telnet etc)
-device md # Memory "disks"
-device gif # IPv6 and IPv4 tunneling
-
-# The `bpf' device enables the Berkeley Packet Filter.
-# Be aware of the administrative consequences of enabling this!
-# Note that 'bpf' is required for DHCP.
-device bpf # Berkeley packet filter
-
-# CLK_USE_I8254_CALIBRATION causes the calibrated frequency of the i8254
-# clock to actually be used.
-options CLK_USE_I8254_CALIBRATION
-
-# CPU_ELAN enables support for AMDs ElanSC520 CPU.
-options CPU_ELAN
-options CPU_SOEKRIS
-options CPU_ELAN_XTAL=32768000
-options CPU_ELAN_PPS
-
-# IPSEC
-options IPSEC
-options IPSEC_ESP
-
diff --git a/tools/tools/tinybsd/conf/vpn/etc/fstab b/tools/tools/tinybsd/conf/vpn/etc/fstab
deleted file mode 100644
index 16ada11d7790..000000000000
--- a/tools/tools/tinybsd/conf/vpn/etc/fstab
+++ /dev/null
@@ -1,2 +0,0 @@
-# $FreeBSD$
-/dev/ad0a / ufs ro 1 1
diff --git a/tools/tools/tinybsd/conf/vpn/etc/rc.conf b/tools/tools/tinybsd/conf/vpn/etc/rc.conf
deleted file mode 100644
index cb0af9ffa6c8..000000000000
--- a/tools/tools/tinybsd/conf/vpn/etc/rc.conf
+++ /dev/null
@@ -1,22 +0,0 @@
-# $FreeBSD$
-hostname="tinybsd.freebsd.org"
-sendmail_enable="NONE"
-sshd_enable="YES"
-usbd_enable="NO"
-inetd_enable="NO"
-portmap_enable="NO"
-update_motd="NO"
-varmfs="YES"
-populate_var="YES"
-varsize="8192"
-tmpmfs="YES"
-
-# VPN
-ipsec_enable="YES"
-ipsec_file="/etc/ipsec.conf"
-
-# Set here your VPN configuration
-gif_interfaces="gif0"
-ifconfig_gif0="inet 192.168.1.1 192.168.2.1 netmask 0xffffffff"
-static_routes="vpn"
-route_vpn="192.168.2.0 192.168.2.1 netmask 0xffffff00"
diff --git a/tools/tools/tinybsd/conf/vpn/etc/setkey.conf b/tools/tools/tinybsd/conf/vpn/etc/setkey.conf
deleted file mode 100644
index e8c0da7a1d7e..000000000000
--- a/tools/tools/tinybsd/conf/vpn/etc/setkey.conf
+++ /dev/null
@@ -1 +0,0 @@
-# $FreeBSD$
diff --git a/tools/tools/tinybsd/conf/vpn/tinybsd.basefiles b/tools/tools/tinybsd/conf/vpn/tinybsd.basefiles
deleted file mode 100644
index eba1a11493fa..000000000000
--- a/tools/tools/tinybsd/conf/vpn/tinybsd.basefiles
+++ /dev/null
@@ -1,222 +0,0 @@
-# $FreeBSD$
-# contents of ${WORKDIR}/boot
-boot/boot0
-boot/boot1
-boot/boot2
-boot/defaults/loader.conf
-boot/device.hints
-boot/loader
-boot/loader.4th
-boot/loader.help
-boot/loader.rc
-boot/mbr
-boot/support.4th
-
-# contents of ${WORKDIR}/libexec
-libexec/ld-elf.so.1:usr/libexec/ld-elf.so.1
-
-# contents of ${WORKDIR}/bin
-bin/[:bin/test
-bin/cat
-bin/chflags
-bin/chio
-bin/chmod
-bin/cp
-bin/csh:bin/tcsh
-bin/date
-bin/df
-bin/domainname
-bin/echo
-bin/ed:bin/red
-bin/expr
-bin/hostname
-bin/kenv
-bin/kill
-bin/ln:bin/link
-bin/ls
-bin/mkdir
-bin/mv
-bin/pax
-bin/ps
-bin/pwd
-bin/realpath
-bin/rm:bin/unlink
-bin/rmdir
-bin/sh
-bin/sleep
-bin/stty
-bin/sync
-
-# contents of ${WORKDIR}/sbin
-sbin/adjkerntz
-sbin/comcontrol
-sbin/disklabel
-sbin/dmesg
-sbin/fastboot:sbin/reboot
-sbin/fasthalt:sbin/halt
-sbin/fsck
-sbin/fsck_ufs:sbin/fsck_ffs
-sbin/fsck_ufs:sbin/fsck_4.2bsd
-sbin/ifconfig
-sbin/init
-sbin/ipfw
-sbin/kldconfig
-sbin/kldload
-sbin/kldstat
-sbin/kldunload
-sbin/ldconfig
-sbin/md5
-sbin/mdconfig
-sbin/mknod
-sbin/mdmfs
-sbin/mount
-sbin/mount_nullfs
-sbin/mount_unionfs
-sbin/newfs
-sbin/nextboot
-sbin/nologin
-sbin/nos-tun
-sbin/ping
-sbin/rcorder
-sbin/route
-sbin/setkey
-sbin/shutdown
-sbin/slattach
-sbin/swapon
-sbin/sysctl
-sbin/umount
-
-# contents of ${WORKDIR}/usr/sbin
-usr/bin/at:usr/bin/atq
-usr/bin/at:usr/bin/atrm
-usr/bin/at:usr/bin/batch
-usr/bin/awk
-usr/bin/basename
-usr/bin/bunzip2:usr/bin/bzcat
-usr/bin/bunzip2:usr/bin/bzip2
-usr/bin/chat
-usr/bin/chfn:usr/bin/chpass
-usr/bin/chfn:usr/bin/chsh
-usr/bin/chgrp
-usr/bin/cksum
-usr/bin/clear
-usr/bin/cmp
-usr/bin/compress:usr/bin/uncompress
-usr/bin/cpio
-usr/bin/crontab
-usr/bin/cu
-usr/bin/dig
-usr/bin/dirname
-usr/bin/du
-usr/bin/ee
-usr/bin/egrep:usr/bin/fgrep
-usr/bin/egrep:usr/bin/grep
-usr/bin/env
-usr/bin/false
-usr/bin/fetch
-usr/bin/find
-usr/bin/fstat
-usr/bin/fsync
-usr/bin/ftp
-usr/bin/gunzip:usr/bin/gzcat
-usr/bin/gunzip:usr/bin/gzip
-usr/bin/gzexe
-usr/bin/head
-usr/bin/hexdump
-usr/bin/id:usr/bin/whoami
-usr/bin/ident
-usr/bin/killall
-usr/bin/last
-usr/bin/less:usr/bin/more
-usr/bin/limits
-usr/bin/lock
-usr/bin/lockf
-usr/bin/logger
-usr/bin/login
-usr/bin/logname
-usr/bin/mesg
-usr/bin/minigzip
-usr/bin/mkfifo
-usr/bin/mktemp
-usr/bin/msgs
-usr/bin/netstat
-usr/bin/nfsstat
-usr/bin/nice
-usr/bin/nslookup
-usr/bin/nsupdate
-usr/bin/nohup
-usr/bin/objformat
-usr/bin/openssl
-usr/bin/passwd
-usr/bin/printf
-usr/bin/renice
-usr/bin/reset:usr/sbin/tset
-usr/bin/scp
-usr/bin/script
-usr/bin/sed
-usr/bin/sftp
-usr/bin/shar
-usr/bin/slogin:usr/bin/ssh
-usr/bin/sort
-usr/bin/split
-usr/bin/ssh-keygen
-usr/bin/su
-usr/bin/tail
-usr/bin/tar
-usr/bin/tee
-usr/bin/telnet
-usr/bin/time
-usr/bin/top
-usr/bin/touch
-usr/bin/tput
-usr/bin/tr
-usr/bin/true
-usr/bin/tty
-usr/bin/uname
-usr/bin/uptime:usr/bin/w
-usr/bin/users
-usr/bin/uudecode
-usr/bin/uuencode
-usr/bin/vi
-usr/bin/vmstat
-usr/bin/wall
-usr/bin/who
-usr/bin/whois
-usr/bin/write
-usr/bin/yes
-
-# contents of ${WORKDIR}/usr/sbin
-usr/sbin/boot0cfg
-usr/sbin/chown
-usr/sbin/cron
-usr/sbin/idprio:usr/sbin/rtprio
-usr/sbin/iostat
-usr/sbin/kbdcontrol
-usr/sbin/lastlogin
-usr/sbin/memcontrol
-usr/sbin/mtree
-usr/sbin/newsyslog
-usr/sbin/ntpdate
-usr/sbin/pciconf
-usr/sbin/pw
-usr/sbin/pwd_mkdb
-usr/sbin/slstat
-usr/sbin/sshd
-usr/sbin/syslogd
-usr/sbin/tcpdchk
-usr/sbin/tcpdmatch
-usr/sbin/tcpdump
-usr/sbin/traceroute
-usr/sbin/vidcontrol
-usr/sbin/vipw
-usr/sbin/vnconfig
-usr/sbin/watch
-
-# contents of ${WORKDIR}/usr/libexec
-usr/libexec/atrun
-usr/libexec/getty
-usr/libexec/sftp-server
-
-# contents of ${WORKDIR}/usr/share
-usr/share/misc/termcap
-
diff --git a/tools/tools/tinybsd/conf/vpn/tinybsd.ports b/tools/tools/tinybsd/conf/vpn/tinybsd.ports
deleted file mode 100644
index 49bb52175241..000000000000
--- a/tools/tools/tinybsd/conf/vpn/tinybsd.ports
+++ /dev/null
@@ -1,9 +0,0 @@
-# $FreeBSD$
-# Here you can add the applications from the FreeBSD Ports Collection which you
-# want TinyBSD ports system to install in your embedded system. You whould list
-# one application per line, mentioning its category and name, like the examples:
-#
-# www/mini_httpd
-# net-mgmt/rate
-#
-# Make sure you have enough space to add it.
diff --git a/tools/tools/tinybsd/conf/wireless/TINYBSD b/tools/tools/tinybsd/conf/wireless/TINYBSD
deleted file mode 100644
index 9477f08e1dba..000000000000
--- a/tools/tools/tinybsd/conf/wireless/TINYBSD
+++ /dev/null
@@ -1,167 +0,0 @@
-# $FreeBSD$
-machine i386
-cpu I486_CPU
-cpu I586_CPU
-cpu I686_CPU
-ident TINYBSD
-
-# To statically compile in device wiring instead of /boot/device.hints
-#hints "GENERIC.hints" # Default places to look for devices.
-
-options SCHED_4BSD # 4BSD scheduler
-options INET # InterNETworking
-options FFS # Berkeley Fast Filesystem
-options SOFTUPDATES # Enable FFS soft updates support
-options UFS_DIRHASH # Improve performance on big directories
-options MD_ROOT # MD is a potential root device
-options PROCFS # Process filesystem (requires PSEUDOFS)
-options PSEUDOFS # Pseudo-filesystem framework
-options GEOM_PART_GPT # GUID Partition Tables.
-options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]
-options COMPAT_FREEBSD4 # Compatible with FreeBSD4
-options SYSVSHM # SYSV-style shared memory
-options SYSVMSG # SYSV-style message queues
-options SYSVSEM # SYSV-style semaphores
-options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
-options KBD_INSTALL_CDEV # install a CDEV entry in /dev
-options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~128k to driver.
-options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~215k to driver.
-options ADAPTIVE_GIANT # Giant mutex is adaptive.
-
-device apic # I/O APIC
-
-device eisa
-device pci
-
-# Floppy drives
-#device fdc
-
-# ATA and ATAPI devices
-device ata
-device atadisk # ATA disk drives
-device atapist # ATAPI tape drives
-options ATA_STATIC_ID # Static device numbering
-
-# atkbdc0 controls both the keyboard and the PS/2 mouse
-device atkbdc # AT keyboard controller
-device atkbd # AT keyboard
-device psm # PS/2 mouse
-
-device vga # VGA video card driver
-
-#device splash # Splash screen and screen saver support
-
-# syscons is the default console driver, resembling an SCO console
-device sc
-
-# Enable this for the pcvt (VT220 compatible) console driver
-#device vt
-#options XSERVER # support for X server on a vt console
-#options FAT_CURSOR # start with block cursor
-
-device agp # support several AGP chipsets
-
-# PCCARD (PCMCIA) support
-# PCMCIA and cardbus bridge support
-device cbb # cardbus (yenta) bridge
-device pccard # PC Card (16-bit) bus
-device cardbus # CardBus (32-bit) bus
-
-# Serial (COM) ports
-device sio # 8250, 16[45]50 based serial ports
-
-# PCI Ethernet NICs.
-#device de # DEC/Intel DC21x4x (``Tulip'')
-#device em # Intel PRO/1000 adapter Gigabit Ethernet Card
-#device txp # 3Com 3cR990 (``Typhoon'')
-#device vx # 3Com 3c590, 3c595 (``Vortex'')
-
-# PCI Ethernet NICs that use the common MII bus controller code.
-# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
-#device miibus # MII bus support
-#device bfe # Broadcom BCM440x 10/100 Ethernet
-#device bge # Broadcom BCM570xx Gigabit Ethernet
-#device dc # DEC/Intel 21143 and various workalikes
-#device fxp # Intel EtherExpress PRO/100B (82557, 82558)
-#device lge # Level 1 LXT1001 gigabit ethernet
-#device nge # NatSemi DP83820 gigabit ethernet
-#device pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc')
-#device re # RealTek 8139C+/8169/8169S/8110S
-#device rl # RealTek 8129/8139
-#device sf # Adaptec AIC-6915 (``Starfire'')
-#device sis # Silicon Integrated Systems SiS 900/SiS 7016
-#device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
-#device ste # Sundance ST201 (D-Link DFE-550TX)
-#device ti # Alteon Networks Tigon I/II gigabit Ethernet
-#device tl # Texas Instruments ThunderLAN
-#device tx # SMC EtherPower II (83c170 ``EPIC'')
-#device vge # VIA VT612x gigabit ethernet
-#device vr # VIA Rhine, Rhine II
-#device wb # Winbond W89C840F
-#device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')
-
-# ISA Ethernet NICs. pccard NICs included.
-#device cs # Crystal Semiconductor CS89x0 NIC
-# 'device ed' requires 'device miibus'
-#device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
-#device ex # Intel EtherExpress Pro/10 and Pro/10+
-#device ep # Etherlink III based cards
-#device fe # Fujitsu MB8696x based cards
-#device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc.
-#device lnc # NE2100, NE32-VL Lance Ethernet cards
-#device sn # SMC's 9000 series of Ethernet chips
-#device xe # Xircom pccard Ethernet
-
-# ISA devices that use the old ISA shims
-#device le
-
-# Wireless NIC cards
-device wlan # 802.11 support
-device wlan_wep #802.11 WEP support
-device wlan_ccmp #802.11 CCMP support
-device wlan_tkip #802.11 TKIP support
-device wlan_xauth #802.11 external authenticator support
-device wlan_acl #802.11 MAC ACL support
-device an # Aironet 4500/4800 802.11 wireless NICs.
-device awi # BayStack 660 and others
-device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
-#device wl # Older non 802.11 Wavelan wireless NIC.
-
-# Pseudo devices.
-device loop # Network loopback
-device ether # Ethernet support
-device pty # Pseudo-ttys (telnet etc)
-device md # Memory "disks"
-
-# The `bpf' device enables the Berkeley Packet Filter.
-# Be aware of the administrative consequences of enabling this!
-# Note that 'bpf' is required for DHCP.
-device bpf # Berkeley packet filter
-
-options IPFIREWALL
-options IPFIREWALL_DEFAULT_TO_ACCEPT
-options IPDIVERT
-options DUMMYNET
-
-device pf #PF OpenBSD packet-filter firewall
-device pflog #logging support interface for PF
-device pfsync #synchronization interface for PF
-
-device ath
-device ath_hal
-device ath_rate_sample
-
-device if_bridge
-
-# CLK_USE_I8254_CALIBRATION causes the calibrated frequency of the i8254
-# clock to actually be used.
-options CLK_USE_I8254_CALIBRATION
-
-# CPU_ELAN enables support for AMDs ElanSC520 CPU.
-options CPU_ELAN
-options CPU_SOEKRIS
-options CPU_ELAN_XTAL=32768000
-options CPU_ELAN_PPS
-
diff --git a/tools/tools/tinybsd/conf/wireless/etc/authpf/authpf.rules b/tools/tools/tinybsd/conf/wireless/etc/authpf/authpf.rules
deleted file mode 100644
index e8c0da7a1d7e..000000000000
--- a/tools/tools/tinybsd/conf/wireless/etc/authpf/authpf.rules
+++ /dev/null
@@ -1 +0,0 @@
-# $FreeBSD$
diff --git a/tools/tools/tinybsd/conf/wireless/etc/fstab b/tools/tools/tinybsd/conf/wireless/etc/fstab
deleted file mode 100644
index 16ada11d7790..000000000000
--- a/tools/tools/tinybsd/conf/wireless/etc/fstab
+++ /dev/null
@@ -1,2 +0,0 @@
-# $FreeBSD$
-/dev/ad0a / ufs ro 1 1
diff --git a/tools/tools/tinybsd/conf/wireless/etc/natd.conf b/tools/tools/tinybsd/conf/wireless/etc/natd.conf
deleted file mode 100644
index e8c0da7a1d7e..000000000000
--- a/tools/tools/tinybsd/conf/wireless/etc/natd.conf
+++ /dev/null
@@ -1 +0,0 @@
-# $FreeBSD$
diff --git a/tools/tools/tinybsd/conf/wireless/etc/pf.conf b/tools/tools/tinybsd/conf/wireless/etc/pf.conf
deleted file mode 100644
index 9acf363030a2..000000000000
--- a/tools/tools/tinybsd/conf/wireless/etc/pf.conf
+++ /dev/null
@@ -1,78 +0,0 @@
-# $FreeBSD$
-#
-# See pf.conf(5) and /usr/share/examples/pf for syntax and examples.
-# Required order: options, normalization, queueing, translation, filtering.
-# Macros and tables may be defined and used anywhere.
-# Note that translation rules are first match while filter rules are last match.
-
-# Macros: define common values, so they can be referenced and changed easily.
-#ext_if="ext0" # replace with actual external interface name i.e., dc0
-#int_if="int0" # replace with actual internal interface name i.e., dc1
-#internal_net="10.1.1.1/8"
-#external_addr="192.168.1.1"
-
-# Tables: similar to macros, but more flexible for many addresses.
-#table <foo> { 10.0.0.0/8, !10.1.0.0/16, 192.168.0.0/24, 192.168.1.18 }
-
-# Options: tune the behavior of pf, default values are given.
-#set timeout { interval 10, frag 30 }
-#set timeout { tcp.first 120, tcp.opening 30, tcp.established 86400 }
-#set timeout { tcp.closing 900, tcp.finwait 45, tcp.closed 90 }
-#set timeout { udp.first 60, udp.single 30, udp.multiple 60 }
-#set timeout { icmp.first 20, icmp.error 10 }
-#set timeout { other.first 60, other.single 30, other.multiple 60 }
-#set timeout { adaptive.start 0, adaptive.end 0 }
-#set limit { states 10000, frags 5000 }
-#set loginterface none
-#set optimization normal
-#set block-policy drop
-#set require-order yes
-#set fingerprints "/etc/pf.os"
-
-# Normalization: reassemble fragments and resolve or reduce traffic ambiguities.
-#scrub in all
-
-# Queueing: rule-based bandwidth control.
-#altq on $ext_if bandwidth 2Mb cbq queue { dflt, developers, marketing }
-#queue dflt bandwidth 5% cbq(default)
-#queue developers bandwidth 80%
-#queue marketing bandwidth 15%
-
-# Translation: specify how addresses are to be mapped or redirected.
-# nat: packets going out through $ext_if with source address $internal_net will
-# get translated as coming from the address of $ext_if, a state is created for
-# such packets, and incoming packets will be redirected to the internal address.
-#nat on $ext_if from $internal_net to any -> ($ext_if)
-
-# rdr: packets coming in on $ext_if with destination $external_addr:1234 will
-# be redirected to 10.1.1.1:5678. A state is created for such packets, and
-# outgoing packets will be translated as coming from the external address.
-#rdr on $ext_if proto tcp from any to $external_addr/32 port 1234 -> 10.1.1.1 port 5678
-
-# rdr outgoing FTP requests to the ftp-proxy
-#rdr on $int_if proto tcp from any to any port ftp -> 127.0.0.1 port 8021
-
-# spamd-setup puts addresses to be redirected into table <spamd>.
-#table <spamd> persist
-#no rdr on { lo0, lo1 } from any to any
-#rdr inet proto tcp from <spamd> to any port smtp -> 127.0.0.1 port 8025
-
-# Filtering: the implicit first two rules are
-#pass in all
-#pass out all
-
-# block all incoming packets but allow ssh, pass all outgoing tcp and udp
-# connections and keep state, logging blocked packets.
-#block in log all
-#pass in on $ext_if proto tcp from any to $ext_if port 22 keep state
-#pass out on $ext_if proto { tcp, udp } all keep state
-
-# pass incoming packets destined to the addresses given in table <foo>.
-#pass in on $ext_if proto { tcp, udp } from any to <foo> port 80 keep state
-
-# pass incoming ports for ftp-proxy
-#pass in on $ext_if inet proto tcp from any to $ext_if user proxy keep state
-
-# assign packets to a queue.
-#pass out on $ext_if from 192.168.0.0/24 to any keep state queue developers
-#pass out on $ext_if from 192.168.1.0/24 to any keep state queue marketing
diff --git a/tools/tools/tinybsd/conf/wireless/etc/pf.os b/tools/tools/tinybsd/conf/wireless/etc/pf.os
deleted file mode 100644
index 2a64809bcfa9..000000000000
--- a/tools/tools/tinybsd/conf/wireless/etc/pf.os
+++ /dev/null
@@ -1,549 +0,0 @@
-# $FreeBSD$
-# passive OS fingerprinting
-# -------------------------
-#
-# SYN signatures. Those signatures work for SYN packets only (duh!).
-#
-# (C) Copyright 2000-2003 by Michal Zalewski <lcamtuf@coredump.cx>
-# (C) Copyright 2003 by Mike Frantzen <frantzen@w4g.org>
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-#
-# This fingerprint database is adapted from Michal Zalewski's p0f passive
-# operating system package.
-#
-#
-# Each line in this file specifies a single fingerprint. Please read the
-# information below carefully before attempting to append any signatures
-# reported as UNKNOWN to this file to avoid mistakes.
-#
-# We use the following set metrics for fingerprinting:
-#
-# - Window size (WSS) - a highly OS dependent setting used for TCP/IP
-# performance control (max. amount of data to be sent without ACK).
-# Some systems use a fixed value for initial packets. On other
-# systems, it is a multiple of MSS or MTU (MSS+40). In some rare
-# cases, the value is just arbitrary.
-#
-# NEW SIGNATURE: if p0f reported a special value of 'Snn', the number
-# appears to be a multiple of MSS (MSS*nn); a special value of 'Tnn'
-# means it is a multiple of MTU ((MSS+40)*nn). Unless you notice the
-# value of nn is not fixed (unlikely), just copy the Snn or Tnn token
-# literally. If you know this device has a simple stack and a fixed
-# MTU, you can however multiply S value by MSS, or T value by MSS+40,
-# and put it instead of Snn or Tnn.
-#
-# If WSS otherwise looks like a fixed value (for example a multiple
-# of two), or if you can confirm the value is fixed, please quote
-# it literally. If there's no apparent pattern in WSS chosen, you
-# should consider wildcarding this value.
-#
-# - Overall packet size - a function of all IP and TCP options and bugs.
-#
-# NEW SIGNATURE: Copy this value literally.
-#
-# - Initial TTL - We check the actual TTL of a received packet. It can't
-# be higher than the initial TTL, and also shouldn't be dramatically
-# lower (maximum distance is defined as 40 hops).
-#
-# NEW SIGNATURE: *Never* copy TTL from a p0f-reported signature literally.
-# You need to determine the initial TTL. The best way to do it is to
-# check the documentation for a remote system, or check its settings.
-# A fairly good method is to simply round the observed TTL up to
-# 32, 64, 128, or 255, but it should be noted that some obscure devices
-# might not use round TTLs (in particular, some shoddy appliances use
-# "original" initial TTL settings). If not sure, you can see how many
-# hops you're away from the remote party with traceroute or mtr.
-#
-# - Don't fragment flag (DF) - some modern OSes set this to implement PMTU
-# discovery. Others do not bother.
-#
-# NEW SIGNATURE: Copy this value literally.
-#
-# - Maximum segment size (MSS) - this setting is usually link-dependent. P0f
-# uses it to determine link type of the remote host.
-#
-# NEW SIGNATURE: Always wildcard this value, except for rare cases when
-# you have an appliance with a fixed value, know the system supports only
-# a very limited number of network interface types, or know the system
-# is using a value it pulled out of nowhere. Specific unique MSS
-# can be used to tell Google crawlbots from the rest of the population.
-#
-# - Window scaling (WSCALE) - this feature is used to scale WSS.
-# It extends the size of a TCP/IP window to 32 bits. Some modern
-# systems implement this feature.
-#
-# NEW SIGNATURE: Observe several signatures. Initial WSCALE is often set
-# to zero or other low value. There's usually no need to wildcard this
-# parameter.
-#
-# - Timestamp - some systems that implement timestamps set them to
-# zero in the initial SYN. This case is detected and handled appropriately.
-#
-# - Selective ACK permitted - a flag set by systems that implement
-# selective ACK functionality.
-#
-# - The sequence of TCP all options (MSS, window scaling, selective ACK
-# permitted, timestamp, NOP). Other than the options previously
-# discussed, p0f also checks for timestamp option (a silly
-# extension to broadcast your uptime ;-), NOP options (used for
-# header padding) and sackOK option (selective ACK feature).
-#
-# NEW SIGNATURE: Copy the sequence literally.
-#
-# To wildcard any value (except for initial TTL or TCP options), replace
-# it with '*'. You can also use a modulo operator to match any values
-# that divide by nnn - '%nnn'.
-#
-# Fingerprint entry format:
-#
-# wwww:ttt:D:ss:OOO...:OS:Version:Subtype:Details
-#
-# wwww - window size (can be *, %nnn, Snn or Tnn). The special values
-# "S" and "T" which are a multiple of MSS or a multiple of MTU
-# respectively.
-# ttt - initial TTL
-# D - don't fragment bit (0 - not set, 1 - set)
-# ss - overall SYN packet size
-# OOO - option value and order specification (see below)
-# OS - OS genre (Linux, Solaris, Windows)
-# Version - OS Version (2.0.27 on x86, etc)
-# Subtype - OS subtype or patchlevel (SP3, lo0)
-# details - Generic OS details
-#
-# If OS genre starts with '*', p0f will not show distance, link type
-# and timestamp data. It is useful for userland TCP/IP stacks of
-# network scanners and so on, where many settings are randomized or
-# bogus.
-#
-# If OS genre starts with @, it denotes an approximate hit for a group
-# of operating systems (signature reporting still enabled in this case).
-# Use this feature at the end of this file to catch cases for which
-# you don't have a precise match, but can tell it's Windows or FreeBSD
-# or whatnot by looking at, say, flag layout alone.
-#
-# Option block description is a list of comma or space separated
-# options in the order they appear in the packet:
-#
-# N - NOP option
-# Wnnn - window scaling option, value nnn (or * or %nnn)
-# Mnnn - maximum segment size option, value nnn (or * or %nnn)
-# S - selective ACK OK
-# T - timestamp
-# T0 - timestamp with a zero value
-#
-# To denote no TCP options, use a single '.'.
-#
-# Please report any additions to this file, or any inaccuracies or
-# problems spotted, to the maintainers: lcamtuf@coredump.cx,
-# frantzen@openbsd.org and bugs@openbsd.org with a tcpdump packet
-# capture of the relevant SYN packet(s)
-#
-# WARNING WARNING WARNING
-# -----------------------
-#
-# Do not add a system X as OS Y just because NMAP says so. It is often
-# the case that X is a NAT firewall. While nmap is talking to the
-# device itself, p0f is fingerprinting the guy behind the firewall
-# instead.
-#
-# When in doubt, use common sense, don't add something that looks like
-# a completely different system as Linux or FreeBSD or LinkSys router.
-# Check DNS name, establish a connection to the remote host and look
-# at SYN+ACK - does it look similar?
-#
-# Some users tweak their TCP/IP settings - enable or disable RFC1323
-# functionality, enable or disable timestamps or selective ACK,
-# disable PMTU discovery, change MTU and so on. Always compare a new rule
-# to other fingerprints for this system, and verify the system isn't
-# "customized" before adding it. It is OK to add signature variants
-# caused by a commonly used software (personal firewalls, security
-# packages, etc), but it makes no sense to try to add every single
-# possible /proc/sys/net/ipv4 tweak on Linux or so.
-#
-# KEEP IN MIND: Some packet firewalls configured to normalize outgoing
-# traffic (OpenBSD pf with "scrub" enabled, for example) will, well,
-# normalize packets. Signatures will not correspond to the originating
-# system (and probably not quite to the firewall either).
-#
-# NOTE: Try to keep this file in some reasonable order, from most to
-# least likely systems. This will speed up operation. Also keep most
-# generic and broad rules near the end.
-#
-
-##########################
-# Standard OS signatures #
-##########################
-
-# ----------------- AIX ---------------------
-
-# AIX is first because its signatures are close to NetBSD, MacOS X and
-# Linux 2.0, but it uses a fairly rare MSSes, at least sometimes...
-# This is a shoddy hack, though.
-
-16384:64:0:44:M512: AIX:4.3:2-3:AIX 4.3.2 and earlier
-
-16384:64:0:60:M512,N,W%2,N,N,T: AIX:4.3:3:AIX 4.3.3-5.2
-16384:64:0:60:M512,N,W%2,N,N,T: AIX:5.1-5.2::AIX 4.3.3-5.2
-32768:64:0:60:M512,N,W%2,N,N,T: AIX:4.3:3:AIX 4.3.3-5.2
-32768:64:0:60:M512,N,W%2,N,N,T: AIX:5.1-5.2::AIX 4.3.3-5.2
-65535:64:0:60:M512,N,W%2,N,N,T: AIX:4.3:3:AIX 4.3.3-5.2
-65535:64:0:60:M512,N,W%2,N,N,T: AIX:5.1-5.2::AIX 4.3.3-5.2
-65535:64:0:64:M*,N,W1,N,N,T,N,N,S: AIX:5.3:ML1:AIX 5.3 ML1
-
-# ----------------- Linux -------------------
-
-512:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x
-16384:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x
-
-# Endian snafu! Nelson says "ha-ha":
-2:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x (MkLinux) on Mac
-64:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x (MkLinux) on Mac
-
-
-S4:64:1:60:M1360,S,T,N,W0: Linux:google::Linux (Google crawlbot)
-
-S2:64:1:60:M*,S,T,N,W0: Linux:2.4::Linux 2.4 (big boy)
-S3:64:1:60:M*,S,T,N,W0: Linux:2.4:18-21:Linux 2.4.18 and newer
-S4:64:1:60:M*,S,T,N,W0: Linux:2.4::Linux 2.4/2.6
-S4:64:1:60:M*,S,T,N,W0: Linux:2.6::Linux 2.4/2.6
-
-S3:64:1:60:M*,S,T,N,W1: Linux:2.5::Linux 2.5
-S4:64:1:60:M*,S,T,N,W1: Linux:2.5-2.6::Linux 2.5/2.6
-
-S20:64:1:60:M*,S,T,N,W0: Linux:2.2:20-25:Linux 2.2.20 and newer
-S22:64:1:60:M*,S,T,N,W0: Linux:2.2::Linux 2.2
-S11:64:1:60:M*,S,T,N,W0: Linux:2.2::Linux 2.2
-
-# Popular cluster config scripts disable timestamps and
-# selective ACK:
-S4:64:1:48:M1460,N,W0: Linux:2.4:cluster:Linux 2.4 in cluster
-
-# This needs to be investigated. On some systems, WSS
-# is selected as a multiple of MTU instead of MSS. I got
-# many submissions for this for many late versions of 2.4:
-T4:64:1:60:M1412,S,T,N,W0: Linux:2.4::Linux 2.4 (late, uncommon)
-
-# This happens only over loopback, but let's make folks happy:
-32767:64:1:60:M16396,S,T,N,W0: Linux:2.4:lo0:Linux 2.4 (local)
-S8:64:1:60:M3884,S,T,N,W0: Linux:2.2:lo0:Linux 2.2 (local)
-
-# Opera visitors:
-16384:64:1:60:M*,S,T,N,W0: Linux:2.2:Opera:Linux 2.2 (Opera?)
-32767:64:1:60:M*,S,T,N,W0: Linux:2.4:Opera:Linux 2.4 (Opera?)
-
-# Some fairly common mods:
-S4:64:1:52:M*,N,N,S,N,W0: Linux:2.4:ts:Linux 2.4 w/o timestamps
-S22:64:1:52:M*,N,N,S,N,W0: Linux:2.2:ts:Linux 2.2 w/o timestamps
-
-
-# ----------------- FreeBSD -----------------
-
-16384:64:1:44:M*: FreeBSD:2.0-2.2::FreeBSD 2.0-4.1
-16384:64:1:44:M*: FreeBSD:3.0-3.5::FreeBSD 2.0-4.1
-16384:64:1:44:M*: FreeBSD:4.0-4.1::FreeBSD 2.0-4.1
-16384:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.4::FreeBSD 4.4
-
-1024:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.4::FreeBSD 4.4
-
-57344:64:1:44:M*: FreeBSD:4.6-4.8:noRFC1323:FreeBSD 4.6-4.8 (no RFC1323)
-57344:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.6-4.8::FreeBSD 4.6-4.8
-
-32768:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.8-4.9::FreeBSD 4.8-5.1 (or MacOS X)
-32768:64:1:60:M*,N,W0,N,N,T: FreeBSD:5.0-5.1::FreeBSD 4.8-5.1 (or MacOS X)
-65535:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.8-4.9::FreeBSD 4.8-5.1 (or MacOS X)
-65535:64:1:60:M*,N,W0,N,N,T: FreeBSD:5.0-5.1::FreeBSD 4.8-5.1 (or MacOS X)
-65535:64:1:60:M*,N,W1,N,N,T: FreeBSD:4.7-4.9::FreeBSD 4.7-5.1
-65535:64:1:60:M*,N,W1,N,N,T: FreeBSD:5.0-5.1::FreeBSD 4.7-5.1
-
-# 16384:64:1:60:M*,N,N,N,N,N,N,T:FreeBSD:4.4:noTS:FreeBSD 4.4 (w/o timestamps)
-
-# ----------------- NetBSD ------------------
-
-65535:64:0:60:M*,N,W0,N,N,T0: NetBSD:1.6:opera:NetBSD 1.6 (Opera)
-16384:64:0:60:M*,N,W0,N,N,T0: NetBSD:1.6::NetBSD 1.6
-16384:64:1:60:M*,N,W0,N,N,T0: NetBSD:1.6:df:NetBSD 1.6 (DF)
-16384:64:0:60:M*,N,W0,N,N,T: NetBSD:1.3::NetBSD 1.3
-65535:64:1:60:M*,N,W1,N,N,T0: NetBSD:1.6::NetBSD 1.6W-current (DF)
-
-# ----------------- OpenBSD -----------------
-
-16384:64:0:60:M*,N,W0,N,N,T: OpenBSD:2.6::NetBSD 1.3 (or OpenBSD 2.6)
-16384:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-3.4::OpenBSD 3.0-3.4
-16384:64:0:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-3.4:no-df:OpenBSD 3.0-3.4 (scrub no-df)
-57344:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.3-3.4::OpenBSD 3.3-3.4
-57344:64:0:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.3-3.4:no-df:OpenBSD 3.3-3.4 (scrub no-df)
-
-65535:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-3.4:opera:OpenBSD 3.0-3.4 (Opera)
-
-# ----------------- Solaris -----------------
-
-S17:64:1:64:N,W3,N,N,T0,N,N,S,M*: Solaris:8:RFC1323:Solaris 8 RFC1323
-S17:64:1:48:N,N,S,M*: Solaris:8::Solaris 8
-S17:255:1:44:M*: Solaris:2.5-2.7::Solaris 2.5 to 7
-
-S6:255:1:44:M*: Solaris:2.6-2.7::Solaris 2.6 to 7
-S23:255:1:44:M*: Solaris:2.5:1:Solaris 2.5.1
-S34:64:1:48:M*,N,N,S: Solaris:2.9::Solaris 9
-S44:255:1:44:M*: Solaris:2.7::Solaris 7
-
-# ----------------- IRIX --------------------
-
-49152:64:0:44:M*: IRIX:6.4::IRIX 6.4
-61440:64:0:44:M*: IRIX:6.2-6.5::IRIX 6.2-6.5
-49152:64:0:52:M*,N,W2,N,N,S: IRIX:6.5:RFC1323:IRIX 6.5 (RFC1323)
-49152:64:0:52:M*,N,W3,N,N,S: IRIX:6.5:RFC1323:IRIX 6.5 (RFC1323)
-
-61440:64:0:48:M*,N,N,S: IRIX:6.5:12-21:IRIX 6.5.12 - 6.5.21
-49152:64:0:48:M*,N,N,S: IRIX:6.5:15-21:IRIX 6.5.15 - 6.5.21
-
-# ----------------- Tru64 -------------------
-
-32768:64:1:48:M*,N,W0: Tru64:4.0::Tru64 4.0
-32768:64:0:48:M*,N,W0: Tru64:5.0::Tru64 5.0
-8192:64:0:44:M1460: Tru64:5.1:noRFC1323:Tru64 6.1 (no RFC1323) (or QNX 6)
-
-# This looks awfully Linuxish :/
-# S22:64:0:60:M*,S,T,N,W0: Tru64:5.0:a:Tru64 5.0a
-
-61440:64:0:48:M*,N,W0: Tru64:5.1a:JP4:Tru64 v5.1a JP4 (or OpenVMS 7.x on Compaq 5.x stack)
-
-
-# ----------------- OpenVMS -----------------
-
-6144:64:1:60:M*,N,W0,N,N,T: OpenVMS:7.2::OpenVMS 7.2 (Multinet 4.4 stack)
-
-# ----------------- MacOS -------------------
-
-16616:255:1:48:M*,W0: MacOS:7.3-7.6:OTTCP:MacOS 7.3-8.6 (OTTCP)
-16616:255:1:48:M*,W0: MacOS:8.0-8.6:OTTCP:MacOS 7.3-8.6 (OTTCP)
-32768:255:1:48:M*,W0,N: MacOS:9.1-9.2::MacOS 9.1/9.2
-32768:64:0:60:M*,N,W0,N,N,T: MacOS:X:10.2:MacOS X 10.2
-
-# ----------------- Windows -----------------
-
-# Windows 95 - need more:
-
-8192:32:1:44:M*: Windows:95::Windows 95 (low TTL)
-
-# Windows 98 - plenty of silly signatures:
-S44:32:1:48:M*,N,N,S: Windows:98::Windows 98 (low TTL)
-8192:32:1:48:M*,N,N,S: Windows:98::Windows 98 (low TTL)
-
-%8192:64:1:48:M*,N,N,S: Windows:98::Windows 98 (or newer XP/2000 with tweaked TTL)
-S4:64:1:48:M*,N,N,S: Windows:98::Windows 98
-S6:64:1:48:M*,N,N,S: Windows:98::Windows 98
-S12:64:1:48:M*,N,N,S: Windows:98::Windows 98
-32767:64:1:48:M*,N,N,S: Windows:98::Windows 98
-37300:64:1:48:M*,N,N,S: Windows:98::Windows 98
-46080:64:1:52:M*,N,W3,N,N,S: Windows:98:RFC1323:Windows 98 (RFC1323)
-65535:64:1:44:M*: Windows:98:noSACK:Windows 98 (no sack)
-
-S16:128:1:48:M*,N,N,S: Windows:98::Windows 98
-S16:128:1:64:M*,N,W0,N,N,T0,N,N,S: Windows:98::Windows 98
-S26:128:1:48:M*,N,N,S: Windows:98::Windows 98
-T30:128:1:48:M*,N,N,S: Windows:98::Windows 98
-32767:128:1:52:M*,N,W0,N,N,S: Windows:98::Windows 98
-60352:128:1:48:M*,N,N,S: Windows:98::Windows 98
-60352:128:1:64:M*,N,W2,N,N,T0,N,N,S: Windows:98::Windows 98
-
-# Windows NT 4.0 - need more:
-
-64512:128:1:44:M1414: Windows:NT:4.0:Windows NT 4.0 SP6a
-8192:128:1:44:M*: Windows:NT:4.0:Windows NT 4.0 (older)
-6144:128:1:52:M*,W0,N,S,N,N: Windows:NT:4.0:Windows NT 4.0 (RFC1323)
-
-# Windows XP and 2000. Most of the signatures that were
-# either dubious or non-specific (no service pack data)
-# were deleted and replaced with generics at the end.
-
-65535:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows 2000 SP4, XP SP1
-%8192:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows 2000 SP4, XP SP1
-S45:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows 2000 SP4
-S6:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows XP SP1, 2000 SP4
-S44:128:1:48:M*,N,N,S: Windows:2000:SP3:Windows XP Pro SP1, 2000 SP3
-
-S6:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows XP SP1, 2000 SP4
-S44:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows XP Pro SP1, 2000 SP3
-64512:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows XP SP1
-32767:128:1:48:M1452,N,N,S: Windows:XP:SP1:Windows XP SP1
-65535:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows 2000 SP4, XP SP1
-%8192:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows 2000 SP4, XP SP1
-
-# Odds, ends, mods:
-
-S52:128:1:48:M1260,N,N,S: Windows:XP:Cisco:Windows XP/2000 via Cisco
-S52:128:1:48:M1260,N,N,S: Windows:2000:Cisco:Windows XP/2000 via Cisco
-
-# HUNT DOWN:
-# *:128:1:48:M*,N,N,S:U:@Windows:XP (leak) (PLEASE REPORT)
-
-# ----------------- HP/UX -------------------
-
-32768:64:1:44:M*: HP-UX:B.10.20::HP-UX B.10.20
-32768:64:0:48:M*,W0,N: HP-UX:11.0::HP-UX 11.0
-32768:64:1:48:M*,W0,N: HP-UX:11.10::HP-UX 11.0 or 11.11
-32768:64:1:48:M*,W0,N: HP-UX:11.11::HP-UX 11.0 or 11.11
-
-# Whoa. Hardcore WSS.
-0:64:0:48:M*,W0,N: HP-UX:B.11.00:A:HP-UX B.11.00 A (RFC1323)
-
-
-# ----------------- RiscOS ------------------
-
-# We don't yet support the ?12 TCP option
-#16384:64:1:68:M1460,N,W0,N,N,T,N,N,?12: RISCOS:3.70-4.36::RISC OS 3.70-4.36
-
-# ----------------- BSD/OS ------------------
-
-# Once again, power of two WSS is also shared by MacOS X with DF set
-8192:64:1:60:M1460,N,W0,N,N,T: BSD/OS:3.1::BSD/OS 3.1-4.3 (or MacOS X 10.2 w/DF)
-8192:64:1:60:M1460,N,W0,N,N,T: BSD/OS:4.0-4.3::BSD/OS 3.1-4.3 (or MacOS X 10.2)
-
-
-# ---------------- NewtonOS -----------------
-
-4096:64:0:44:M1420: NewtonOS:2.1::NewtonOS 2.1
-
-# ---------------- NeXTSTEP -----------------
-
-S8:64:0:44:M512: NeXTSTEP:3.3::NeXTSTEP 3.3
-
-# ------------------ BeOS -------------------
-
-1024:255:0:48:M*,N,W0: BeOS:5.0-5.1::BeOS 5.0-5.1
-12288:255:0:44:M1402: BeOS:5.0::BeOS 5.0.x
-
-# ------------------ OS/400 -----------------
-
-8192:64:1:60:M1440,N,W0,N,N,T: OS/400:VR4::OS/400 VR4/R5
-8192:64:1:60:M1440,N,W0,N,N,T: OS/400:VR5::OS/400 VR4/R5
-4096:64:1:60:M1440,N,W0,N,N,T: OS/400:V4R5:CF67032:OS/400 V4R5 + CF67032
-
-
-# ------------------ ULTRIX -----------------
-
-16384:64:0:40:.: ULTRIX:4.5::ULTRIX 4.5
-
-# ------------------- QNX -------------------
-
-S16:64:0:44:M512: QNX:::QNX demodisk
-
-# ------------------ Novell -----------------
-
-16384:128:1:44:M1460: Novell:NetWare:5.0:Novel Netware 5.0
-6144:128:1:44:M1460: Novell:IntranetWare:4.11:Novell IntranetWare 4.11
-
-# ----------------- SCO ------------------
-S17:64:1:44:M1460: SCO:Unixware:7.0:SCO Unixware 7.0.0 or OpenServer 5.0.4-5.06
-S17:64:1:44:M1460: SCO:OpenServer:5.0:SCO Unixware 7.0.0 or OpenServer 5.0.4-5.06
-S3:64:1:60:M1460,N,W0,N,N,T: SCO:UnixWare:7.1:SCO UnixWare 7.1
-
-# ------------------- DOS -------------------
-
-2048:255:0:44:M536: DOS:WATTCP:1.05:DOS Arachne via WATTCP/1.05
-
-###########################################
-# Appliance / embedded / other signatures #
-###########################################
-
-# ---------- Firewalls / routers ------------
-
-S12:64:1:44:M1460: @Checkpoint:::Checkpoint (unknown 1)
-S12:64:1:48:N,N,S,M1460: @Checkpoint:::Checkpoint (unknown 2)
-4096:32:0:44:M1460: ExtremeWare:4.x::ExtremeWare 4.x
-60352:64:0:52:M1460,N,W2,N,N,S: Clavister:7::Clavister firewall 7.x
-
-# ------- Switches and other stuff ----------
-
-4128:255:0:44:M*: Cisco:::Cisco Catalyst 3500, 7500 etc
-S8:255:0:44:M*: Cisco:12008::Cisco 12008
-60352:128:1:64:M1460,N,W2,N,N,T,N,N,S: Alteon:ACEswitch::Alteon ACEswitch
-64512:128:1:44:M1370: Nortel:Contivity Client::Nortel Conectivity Client
-
-
-# ---------- Caches and whatnots ------------
-
-S4:64:1:52:M1460,N,N,S,N,W0: AOL:web cache::AOL web cache
-
-32850:64:1:64:N,W1,N,N,T,N,N,S,M*: NetApp:5.x::NetApp Data OnTap 5.x
-16384:64:1:64:M1460,N,N,S,N,W0,N: NetApp:5.3:1:NetApp 5.3.1
-65535:64:0:64:M1460,N,N,S,N,W3,N,N,T: NetApp:5.3:1:NetApp 5.3.1
-65535:64:0:60:M1460,N,W0,N,N,T: NetApp:CacheFlow::NetApp CacheFlow
-8192:64:1:64:M1460,N,N,S,N,W0,N,N,T: NetApp:5.2:1:NetApp NetCache 5.2.1
-
-S4:64:0:48:M1460,N,N,S: Cisco:Content Engine::Cisco Content Engine
-
-27085:128:0:40:.: Dell:PowerApp cache::Dell PowerApp (Linux-based)
-
-65535:255:1:48:N,W1,M1460: Inktomi:crawler::Inktomi crawler
-S1:255:1:60:M1460,S,T,N,W0: LookSmart:ZyBorg::LookSmart ZyBorg
-
-
-16384:255:0:40:.: Proxyblocker:::Proxyblocker (what's this?)
-
-# ----------- Embedded systems --------------
-
-S9:255:0:44:M536: PalmOS:Tungsten:C:PalmOS Tungsten C
-S5:255:0:44:M536: PalmOS:3::PalmOS 3/4
-S5:255:0:44:M536: PalmOS:4::PalmOS 3/4
-S4:255:0:44:M536: PalmOS:3:5:PalmOS 3.5
-2948:255:0:44:M536: PalmOS:3:5:PalmOS 3.5.3 (Handera)
-
-S23:64:1:64:N,W1,N,N,T,N,N,S,M1460: SymbianOS:7::SymbianOS 7
-8192:255:0:44:M1460: SymbianOS:6048::SymbianOS 6048 (on Nokia 7650?)
-8192:255:0:44:M536: SymbianOS:::SymbianOS (on Nokia 9210?)
-
-
-# Perhaps S4?
-5840:64:1:60:M1452,S,T,N,W1: Zaurus:3.10::Zaurus 3.10
-
-32768:128:1:64:M1460,N,W0,N,N,T0,N,N,S: PocketPC:2002::PocketPC 2002
-
-S1:255:0:44:M346: Contiki:1.1:rc0:Contiki 1.1-rc0
-
-4096:128:0:44:M1460: Sega:Dreamcast:3.0:Sega Dreamcast Dreamkey 3.0
-
-S12:64:0:44:M1452: AXIS:5600:v5.64:AXIS Printer Server 5600 v5.64
-
-
-
-####################
-# Fancy signatures #
-####################
-
-1024:64:0:40:.: *NMAP:syn scan:1:NMAP syn scan (1)
-2048:64:0:40:.: *NMAP:syn scan:2:NMAP syn scan (2)
-3072:64:0:40:.: *NMAP:syn scan:3:NMAP syn scan (3)
-4096:64:0:40:.: *NMAP:syn scan:4:NMAP syn scan (4)
-
-1024:64:0:60:W10,N,M265,T: *NMAP:OS:1:NMAP OS detection probe (1)
-2048:64:0:60:W10,N,M265,T: *NMAP:OS:2:NMAP OS detection probe (2)
-3072:64:0:60:W10,N,M265,T: *NMAP:OS:3:NMAP OS detection probe (3)
-4096:64:0:60:W10,N,M265,T: *NMAP:OS:4:NMAP OS detection probe (4)
-
-#####################################
-# Generic signatures - just in case #
-#####################################
-
-#*:64:1:60:M*,N,W*,N,N,T: @FreeBSD:4.0-4.9::FreeBSD 4.x/5.x
-#*:64:1:60:M*,N,W*,N,N,T: @FreeBSD:5.0-5.1::FreeBSD 4.x/5.x
-
-*:128:1:52:M*,N,W0,N,N,S: @Windows:XP:RFC1323:Windows XP/2000 (RFC1323 no tstamp)
-*:128:1:52:M*,N,W0,N,N,S: @Windows:2000:RFC1323:Windows XP/2000 (RFC1323 no tstamp)
-*:128:1:64:M*,N,W0,N,N,T0,N,N,S: @Windows:XP:RFC1323:Windows XP/2000 (RFC1323)
-*:128:1:64:M*,N,W0,N,N,T0,N,N,S: @Windows:2000:RFC1323:Windows XP/2000 (RFC1323)
-*:128:1:64:M*,N,W*,N,N,T0,N,N,S: @Windows:XP:RFC1323:Windows XP (RFC1323, w+)
-*:128:1:48:M*,N,N,S: @Windows:XP::Windows XP/2000
-*:128:1:48:M*,N,N,S: @Windows:2000::Windows XP/2000
diff --git a/tools/tools/tinybsd/conf/wireless/etc/rc.conf b/tools/tools/tinybsd/conf/wireless/etc/rc.conf
deleted file mode 100644
index 18c3586b38ac..000000000000
--- a/tools/tools/tinybsd/conf/wireless/etc/rc.conf
+++ /dev/null
@@ -1,32 +0,0 @@
-# $FreeBSD$
-hostname="tinybsd.freebsd.org"
-sendmail_enable="NONE"
-sshd_enable="YES"
-usbd_enable="NO"
-inetd_enable="NO"
-portmap_enable="NO"
-update_motd="NO"
-varmfs="YES"
-populate_var="YES"
-varsize="8192"
-tmpmfs="YES"
-
-# IPFW
-firewall_enable="YES"
-firewall_script="/etc/rc.firewall"
-firewall_type="closed"
-
-# NAT
-natd_enable="NO"
-natd_interface=""
-natd_flags=""
-
-# PF
-pf_enable="NO"
-pf_rules="/etc/pf.conf"
-pf_program="/sbin/pfctl"
-pf_flags=""
-pflog_enable="NO"
-pflog_logfile="/var/log/pflog"
-pflog_program="/sbin/pflogd"
-pflog_flags=""
diff --git a/tools/tools/tinybsd/conf/wireless/etc/rc.firewall b/tools/tools/tinybsd/conf/wireless/etc/rc.firewall
deleted file mode 100644
index 05a1a6aaec95..000000000000
--- a/tools/tools/tinybsd/conf/wireless/etc/rc.firewall
+++ /dev/null
@@ -1,302 +0,0 @@
-#!/bin/sh -
-# Copyright (c) 1996 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.
-#
-# $FreeBSD$
-#
-
-#
-# Setup system for firewall service.
-#
-
-# Suck in the configuration variables.
-if [ -z "${source_rc_confs_defined}" ]; then
- if [ -r /etc/defaults/rc.conf ]; then
- . /etc/defaults/rc.conf
- source_rc_confs
- elif [ -r /etc/rc.conf ]; then
- . /etc/rc.conf
- fi
-fi
-
-############
-# Define the firewall type in /etc/rc.conf. Valid values are:
-# open - will allow anyone in
-# client - will try to protect just this machine
-# simple - will try to protect a whole network
-# closed - totally disables IP services except via lo0 interface
-# UNKNOWN - disables the loading of firewall rules.
-# filename - will load the rules in the given filename (full path required)
-#
-# For ``client'' and ``simple'' the entries below should be customized
-# appropriately.
-
-############
-#
-# If you don't know enough about packet filtering, we suggest that you
-# take time to read this book:
-#
-# Building Internet Firewalls, 2nd Edition
-# Brent Chapman and Elizabeth Zwicky
-#
-# O'Reilly & Associates, Inc
-# ISBN 1-56592-871-7
-# http://www.ora.com/
-# http://www.oreilly.com/catalog/fire2/
-#
-# For a more advanced treatment of Internet Security read:
-#
-# Firewalls & Internet Security
-# Repelling the wily hacker
-# William R. Cheswick, Steven M. Bellowin
-#
-# Addison-Wesley
-# ISBN 0-201-63357-4
-# http://www.awl.com/
-# http://www.awlonline.com/product/0%2C2627%2C0201633574%2C00.html
-#
-
-setup_loopback () {
- ############
- # Only in rare cases do you want to change these rules
- #
- ${fwcmd} add 100 pass all from any to any via lo0
- ${fwcmd} add 200 deny all from any to 127.0.0.0/8
- ${fwcmd} add 300 deny ip from 127.0.0.0/8 to any
-}
-
-if [ -n "${1}" ]; then
- firewall_type="${1}"
-fi
-
-############
-# Set quiet mode if requested
-#
-case ${firewall_quiet} in
-[Yy][Ee][Ss])
- fwcmd="/sbin/ipfw -q"
- ;;
-*)
- fwcmd="/sbin/ipfw"
- ;;
-esac
-
-############
-# Flush out the list before we begin.
-#
-${fwcmd} -f flush
-
-############
-# Network Address Translation. All packets are passed to natd(8)
-# before they encounter your remaining rules. The firewall rules
-# will then be run again on each packet after translation by natd
-# starting at the rule number following the divert rule.
-#
-# For ``simple'' firewall type the divert rule should be put to a
-# different place to not interfere with address-checking rules.
-#
-case ${firewall_type} in
-[Oo][Pp][Ee][Nn]|[Cc][Ll][Ii][Ee][Nn][Tt])
- case ${natd_enable} in
- [Yy][Ee][Ss])
- if [ -n "${natd_interface}" ]; then
- ${fwcmd} add 50 divert natd all from any to any via ${natd_interface}
- fi
- ;;
- esac
-esac
-
-############
-# If you just configured ipfw in the kernel as a tool to solve network
-# problems or you just want to disallow some particular kinds of traffic
-# then you will want to change the default policy to open. You can also
-# do this as your only action by setting the firewall_type to ``open''.
-#
-# ${fwcmd} add 65000 pass all from any to any
-
-
-# Prototype setups.
-#
-case ${firewall_type} in
-[Oo][Pp][Ee][Nn])
- setup_loopback
- ${fwcmd} add 65000 pass all from any to any
- ;;
-
-[Cc][Ll][Ii][Ee][Nn][Tt])
- ############
- # This is a prototype setup that will protect your system somewhat
- # against people from outside your own network.
- ############
-
- # set these to your network and netmask and ip
- net="192.0.2.0"
- mask="255.255.255.0"
- ip="192.0.2.1"
-
- setup_loopback
-
- # Allow any traffic to or from my own net.
- ${fwcmd} add pass all from ${ip} to ${net}:${mask}
- ${fwcmd} add pass all from ${net}:${mask} to ${ip}
-
- # Allow TCP through if setup succeeded
- ${fwcmd} add pass tcp from any to any established
-
- # Allow IP fragments to pass through
- ${fwcmd} add pass all from any to any frag
-
- # Allow setup of incoming email
- ${fwcmd} add pass tcp from any to ${ip} 25 setup
-
- # Allow setup of outgoing TCP connections only
- ${fwcmd} add pass tcp from ${ip} to any setup
-
- # Disallow setup of all other TCP connections
- ${fwcmd} add deny tcp from any to any setup
-
- # Allow DNS queries out in the world
- ${fwcmd} add pass udp from ${ip} to any 53 keep-state
-
- # Allow NTP queries out in the world
- ${fwcmd} add pass udp from ${ip} to any 123 keep-state
-
- # Everything else is denied by default, unless the
- # IPFIREWALL_DEFAULT_TO_ACCEPT option is set in your kernel
- # config file.
- ;;
-
-[Ss][Ii][Mm][Pp][Ll][Ee])
- ############
- # This is a prototype setup for a simple firewall. Configure this
- # machine as a DNS and NTP server, and point all the machines
- # on the inside at this machine for those services.
- ############
-
- # set these to your outside interface network and netmask and ip
- oif="ed0"
- onet="192.0.2.0"
- omask="255.255.255.240"
- oip="192.0.2.1"
-
- # set these to your inside interface network and netmask and ip
- iif="ed1"
- inet="192.0.2.16"
- imask="255.255.255.240"
- iip="192.0.2.17"
-
- setup_loopback
-
- # Stop spoofing
- ${fwcmd} add deny all from ${inet}:${imask} to any in via ${oif}
- ${fwcmd} add deny all from ${onet}:${omask} to any in via ${iif}
-
- # Stop RFC1918 nets on the outside interface
- ${fwcmd} add deny all from any to 10.0.0.0/8 via ${oif}
- ${fwcmd} add deny all from any to 172.16.0.0/12 via ${oif}
- ${fwcmd} add deny all from any to 192.168.0.0/16 via ${oif}
-
- # Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1,
- # DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E)
- # on the outside interface
- ${fwcmd} add deny all from any to 0.0.0.0/8 via ${oif}
- ${fwcmd} add deny all from any to 169.254.0.0/16 via ${oif}
- ${fwcmd} add deny all from any to 192.0.2.0/24 via ${oif}
- ${fwcmd} add deny all from any to 224.0.0.0/4 via ${oif}
- ${fwcmd} add deny all from any to 240.0.0.0/4 via ${oif}
-
- # Network Address Translation. This rule is placed here deliberately
- # so that it does not interfere with the surrounding address-checking
- # rules. If for example one of your internal LAN machines had its IP
- # address set to 192.0.2.1 then an incoming packet for it after being
- # translated by natd(8) would match the `deny' rule above. Similarly
- # an outgoing packet originated from it before being translated would
- # match the `deny' rule below.
- case ${natd_enable} in
- [Yy][Ee][Ss])
- if [ -n "${natd_interface}" ]; then
- ${fwcmd} add divert natd all from any to any via ${natd_interface}
- fi
- ;;
- esac
-
- # Stop RFC1918 nets on the outside interface
- ${fwcmd} add deny all from 10.0.0.0/8 to any via ${oif}
- ${fwcmd} add deny all from 172.16.0.0/12 to any via ${oif}
- ${fwcmd} add deny all from 192.168.0.0/16 to any via ${oif}
-
- # Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1,
- # DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E)
- # on the outside interface
- ${fwcmd} add deny all from 0.0.0.0/8 to any via ${oif}
- ${fwcmd} add deny all from 169.254.0.0/16 to any via ${oif}
- ${fwcmd} add deny all from 192.0.2.0/24 to any via ${oif}
- ${fwcmd} add deny all from 224.0.0.0/4 to any via ${oif}
- ${fwcmd} add deny all from 240.0.0.0/4 to any via ${oif}
-
- # Allow TCP through if setup succeeded
- ${fwcmd} add pass tcp from any to any established
-
- # Allow IP fragments to pass through
- ${fwcmd} add pass all from any to any frag
-
- # Allow setup of incoming email
- ${fwcmd} add pass tcp from any to ${oip} 25 setup
-
- # Allow access to our DNS
- ${fwcmd} add pass tcp from any to ${oip} 53 setup
- ${fwcmd} add pass udp from any to ${oip} 53
- ${fwcmd} add pass udp from ${oip} 53 to any
-
- # Allow access to our WWW
- ${fwcmd} add pass tcp from any to ${oip} 80 setup
-
- # Reject&Log all setup of incoming connections from the outside
- ${fwcmd} add deny log tcp from any to any in via ${oif} setup
-
- # Allow setup of any other TCP connection
- ${fwcmd} add pass tcp from any to any setup
-
- # Allow DNS queries out in the world
- ${fwcmd} add pass udp from ${oip} to any 53 keep-state
-
- # Allow NTP queries out in the world
- ${fwcmd} add pass udp from ${oip} to any 123 keep-state
-
- # Everything else is denied by default, unless the
- # IPFIREWALL_DEFAULT_TO_ACCEPT option is set in your kernel
- # config file.
- ;;
-
-[Cc][Ll][Oo][Ss][Ee][Dd])
- setup_loopback
- ;;
-[Uu][Nn][Kk][Nn][Oo][Ww][Nn])
- ;;
-*)
- if [ -r "${firewall_type}" ]; then
- ${fwcmd} ${firewall_flags} ${firewall_type}
- fi
- ;;
-esac
diff --git a/tools/tools/tinybsd/conf/wireless/tinybsd.basefiles b/tools/tools/tinybsd/conf/wireless/tinybsd.basefiles
deleted file mode 100644
index e37dade3acd3..000000000000
--- a/tools/tools/tinybsd/conf/wireless/tinybsd.basefiles
+++ /dev/null
@@ -1,232 +0,0 @@
-# $FreeBSD$
-# contents of ${WORKDIR}/boot
-boot/boot0
-boot/boot1
-boot/boot2
-boot/defaults/loader.conf
-boot/device.hints
-boot/loader
-boot/loader.4th
-boot/loader.help
-boot/loader.rc
-boot/mbr
-boot/support.4th
-
-# contents of ${WORKDIR}/libexec
-libexec/ld-elf.so.1:usr/libexec/ld-elf.so.1
-
-# contents of ${WORKDIR}/bin
-bin/[:bin/test
-bin/cat
-bin/chflags
-bin/chio
-bin/chmod
-bin/cp
-bin/csh:bin/tcsh
-bin/date
-bin/dd
-bin/df
-bin/domainname
-bin/echo
-bin/ed:bin/red
-bin/expr
-bin/hostname
-bin/kenv
-bin/kill
-bin/ln:bin/link
-bin/ls
-bin/mkdir
-bin/mv
-bin/pax
-bin/ps
-bin/pwd
-bin/realpath
-bin/rm:bin/unlink
-bin/rmdir
-bin/sh
-bin/sleep
-bin/stty
-bin/sync
-
-# contents of ${WORKDIR}/sbin
-sbin/adjkerntz
-sbin/comcontrol
-sbin/disklabel
-sbin/dmesg
-sbin/fastboot:sbin/reboot
-sbin/fasthalt:sbin/halt
-sbin/fsck
-sbin/fsck_ufs:sbin/fsck_ffs
-sbin/fsck_ufs:sbin/fsck_4.2bsd
-sbin/ifconfig
-sbin/init
-sbin/ipfw
-sbin/kldconfig
-sbin/kldload
-sbin/kldstat
-sbin/kldunload
-sbin/ldconfig
-sbin/md5
-sbin/mdconfig
-sbin/mknod
-sbin/mdmfs
-sbin/mount
-sbin/mount_nullfs
-sbin/mount_unionfs
-sbin/natd
-sbin/newfs
-sbin/nextboot
-sbin/nologin
-sbin/nos-tun
-sbin/pfctl
-sbin/pflogd
-sbin/ping
-sbin/rcorder
-sbin/route
-sbin/shutdown
-sbin/slattach
-sbin/swapon
-sbin/sysctl
-sbin/umount
-
-# contents of ${WORKDIR}/usr/sbin
-usr/bin/at:usr/bin/atq
-usr/bin/at:usr/bin/atrm
-usr/bin/at:usr/bin/batch
-usr/bin/awk
-usr/bin/basename
-usr/bin/bunzip2:usr/bin/bzcat
-usr/bin/bunzip2:usr/bin/bzip2
-usr/bin/chat
-usr/bin/chfn:usr/bin/chpass
-usr/bin/chfn:usr/bin/chsh
-usr/bin/chgrp
-usr/bin/cksum
-usr/bin/clear
-usr/bin/cmp
-usr/bin/compress:usr/bin/uncompress
-usr/bin/cpio
-usr/bin/crontab
-usr/bin/cu
-usr/bin/dig
-usr/bin/dirname
-usr/bin/du
-usr/bin/ee
-usr/bin/egrep:usr/bin/fgrep
-usr/bin/egrep:usr/bin/grep
-usr/bin/env
-usr/bin/false
-usr/bin/fetch
-usr/bin/find
-usr/bin/finger
-usr/bin/fstat
-usr/bin/fsync
-usr/bin/ftp
-usr/bin/gunzip:usr/bin/gzcat
-usr/bin/gunzip:usr/bin/gzip
-usr/bin/gzexe
-usr/bin/head
-usr/bin/hexdump
-usr/bin/id:usr/bin/whoami
-usr/bin/ident
-usr/bin/killall
-usr/bin/last
-usr/bin/less:usr/bin/more
-usr/bin/limits
-usr/bin/lock
-usr/bin/lockf
-usr/bin/logger
-usr/bin/login
-usr/bin/logname
-usr/bin/mesg
-usr/bin/minigzip
-usr/bin/mkfifo
-usr/bin/mktemp
-usr/bin/msgs
-usr/bin/netstat
-usr/bin/nfsstat
-usr/bin/nice
-usr/bin/nslookup
-usr/bin/nsupdate
-usr/bin/nohup
-usr/bin/objformat
-usr/bin/openssl
-usr/bin/passwd
-usr/bin/printf
-usr/bin/renice
-usr/bin/reset:usr/sbin/tset
-usr/bin/scp
-usr/bin/script
-usr/bin/sed
-usr/bin/sftp
-usr/bin/shar
-usr/bin/slogin:usr/bin/ssh
-usr/bin/sort
-usr/bin/split
-usr/bin/ssh-keygen
-usr/bin/su
-usr/bin/tail
-usr/bin/tar
-usr/bin/tee
-usr/bin/telnet
-usr/bin/time
-usr/bin/top
-usr/bin/touch
-usr/bin/tput
-usr/bin/tr
-usr/bin/true
-usr/bin/tty
-usr/bin/uname
-usr/bin/uptime:usr/bin/w
-usr/bin/users
-usr/bin/uudecode
-usr/bin/uuencode
-usr/bin/vi
-usr/bin/vmstat
-usr/bin/wall
-usr/bin/who
-usr/bin/whois
-usr/bin/write
-usr/bin/yes
-
-# contents of ${WORKDIR}/usr/sbin
-usr/sbin/arp
-usr/sbin/authpf
-usr/sbin/boot0cfg
-usr/sbin/chown
-usr/sbin/cron
-usr/sbin/idprio:usr/sbin/rtprio
-usr/sbin/inetd
-usr/sbin/iostat
-usr/sbin/kbdcontrol
-usr/sbin/lastlogin
-usr/sbin/memcontrol
-usr/sbin/mtree
-usr/sbin/newsyslog
-usr/sbin/ntpdate
-usr/sbin/pciconf
-usr/sbin/pw
-usr/sbin/pwd_mkdb
-usr/sbin/slstat
-usr/sbin/sshd
-usr/sbin/syslogd
-usr/sbin/tcpdchk
-usr/sbin/tcpdmatch
-usr/sbin/tcpdump
-usr/sbin/traceroute
-usr/sbin/vidcontrol
-usr/sbin/vipw
-usr/sbin/vnconfig
-usr/sbin/watch
-usr/sbin/pccardc
-usr/sbin/pccardd
-
-# contents of ${WORKDIR}/usr/libexec
-usr/libexec/atrun
-usr/libexec/ftpd
-usr/libexec/getty
-usr/libexec/sftp-server
-
-# contents of ${WORKDIR}/usr/share
-usr/share/misc/termcap
-
diff --git a/tools/tools/tinybsd/conf/wireless/tinybsd.ports b/tools/tools/tinybsd/conf/wireless/tinybsd.ports
deleted file mode 100644
index 49bb52175241..000000000000
--- a/tools/tools/tinybsd/conf/wireless/tinybsd.ports
+++ /dev/null
@@ -1,9 +0,0 @@
-# $FreeBSD$
-# Here you can add the applications from the FreeBSD Ports Collection which you
-# want TinyBSD ports system to install in your embedded system. You whould list
-# one application per line, mentioning its category and name, like the examples:
-#
-# www/mini_httpd
-# net-mgmt/rate
-#
-# Make sure you have enough space to add it.
diff --git a/tools/tools/tinybsd/conf/wrap/TINYBSD b/tools/tools/tinybsd/conf/wrap/TINYBSD
deleted file mode 100644
index 2ef7c6742cbd..000000000000
--- a/tools/tools/tinybsd/conf/wrap/TINYBSD
+++ /dev/null
@@ -1,138 +0,0 @@
-# $FreeBSD$
-machine i386
-cpu I586_CPU
-ident TINYBSD
-maxusers 8
-options CPU_GEODE
-
-# To statically compile in device wiring instead of /boot/device.hints
-#hints "GENERIC.hints" # Default places to look for devices.
-options SCHED_4BSD # 4BSD scheduler
-options INET # InterNETworking
-options FFS # Berkeley Fast Filesystem
-options SOFTUPDATES # Enable FFS soft updates support
-options UFS_ACL # Support for access control lists
-options UFS_DIRHASH # Improve performance on big directories
-options MD_ROOT # MD is a potential root device
-options NFSCLIENT # Network Filesystem Client
-options NFSSERVER # Network Filesystem Server
-options NFS_ROOT # NFS usable as /, requires NFSCLIENT
-options PROCFS # Process filesystem (requires PSEUDOFS)
-options PSEUDOFS # Pseudo-filesystem framework
-options GEOM_PART_GPT # GUID Partition Tables.
-options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]
-options COMPAT_FREEBSD4 # Compatible with FreeBSD4
-options SYSVSHM # SYSV-style shared memory
-options SYSVMSG # SYSV-style message queues
-options SYSVSEM # SYSV-style semaphores
-options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
-options KBD_INSTALL_CDEV # install a CDEV entry in /dev
-options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~128k to driver.
-options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~215k to driver.
-options ADAPTIVE_GIANT # Giant mutex is adaptive.
-
-#device apic # I/O APIC
-
-device pci
-
-# ATA and ATAPI devices
-device ata
-device atadisk # ATA disk drives
-options ATA_STATIC_ID # Static device numbering
-
-# Serial (COM) ports
-device sio # 8250, 16[45]50 based serial ports
-
-# PCI Ethernet NICs.
-device de # DEC/Intel DC21x4x (``Tulip'')
-device em # Intel PRO/1000 adapter Gigabit Ethernet Card
-device txp # 3Com 3cR990 (``Typhoon'')
-device vx # 3Com 3c590, 3c595 (``Vortex'')
-
-# PCI Ethernet NICs that use the common MII bus controller code.
-# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
-device miibus # MII bus support
-device bfe # Broadcom BCM440x 10/100 Ethernet
-device bge # Broadcom BCM570xx Gigabit Ethernet
-device dc # DEC/Intel 21143 and various workalikes
-device fxp # Intel EtherExpress PRO/100B (82557, 82558)
-device lge # Level 1 LXT1001 gigabit ethernet
-device nge # NatSemi DP83820 gigabit ethernet
-device pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc')
-device re # RealTek 8139C+/8169/8169S/8110S
-device rl # RealTek 8129/8139
-device sf # Adaptec AIC-6915 (``Starfire'')
-device sis # Silicon Integrated Systems SiS 900/SiS 7016
-device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
-device ste # Sundance ST201 (D-Link DFE-550TX)
-device ti # Alteon Networks Tigon I/II gigabit Ethernet
-device tl # Texas Instruments ThunderLAN
-device tx # SMC EtherPower II (83c170 ``EPIC'')
-device vge # VIA VT612x gigabit ethernet
-device vr # VIA Rhine, Rhine II
-device wb # Winbond W89C840F
-device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')
-
-# ISA Ethernet NICs. pccard NICs included.
-device cs # Crystal Semiconductor CS89x0 NIC
-# 'device ed' requires 'device miibus'
-device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
-device ex # Intel EtherExpress Pro/10 and Pro/10+
-device ep # Etherlink III based cards
-device fe # Fujitsu MB8696x based cards
-device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc.
-device sn # SMC's 9000 series of Ethernet chips
-device xe # Xircom pccard Ethernet
-
-# Wireless NIC cards
-device wlan # 802.11 support
-device wlan_wep #802.11 WEP support
-device wlan_ccmp #802.11 CCMP support
-device wlan_tkip #802.11 TKIP support
-device wlan_xauth #802.11 external authenticator support
-device wlan_acl #802.11 MAC ACL support
-device an # Aironet 4500/4800 802.11 wireless NICs.
-device awi # BayStack 660 and others
-device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
-device ath
-device ath_hal
-device ath_rate_sample
-
-# Pseudo devices.
-device loop # Network loopback
-device ether # Ethernet support
-device ppp # Kernel PPP
-device tun # Packet tunnel.
-device pty # Pseudo-ttys (telnet etc)
-device md # Memory "disks"
-device gif # IPv6 and IPv4 tunneling
-
-# The `bpf' device enables the Berkeley Packet Filter.
-# Be aware of the administrative consequences of enabling this!
-# Note that 'bpf' is required for DHCP.
-device bpf # Berkeley packet filter
-
-options INCLUDE_CONFIG_FILE
-
-options IPFIREWALL
-options IPFIREWALL_DEFAULT_TO_ACCEPT
-options IPDIVERT
-options DUMMYNET
-
-options ALTQ
-options ALTQ_CBQ
-options ALTQ_RED
-options ALTQ_RIO
-options ALTQ_HFSC
-options ALTQ_CDNR
-options ALTQ_PRIQ
-
-device pf
-device pflog
-device pfsync
-device carp
-device if_bridge
-
-options DEVICE_POLLING
diff --git a/tools/tools/tinybsd/conf/wrap/etc/fstab b/tools/tools/tinybsd/conf/wrap/etc/fstab
deleted file mode 100644
index 16ada11d7790..000000000000
--- a/tools/tools/tinybsd/conf/wrap/etc/fstab
+++ /dev/null
@@ -1,2 +0,0 @@
-# $FreeBSD$
-/dev/ad0a / ufs ro 1 1
diff --git a/tools/tools/tinybsd/conf/wrap/etc/rc.conf b/tools/tools/tinybsd/conf/wrap/etc/rc.conf
deleted file mode 100644
index a21476241081..000000000000
--- a/tools/tools/tinybsd/conf/wrap/etc/rc.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-# $FreeBSD$
-hostname="tinybsd.freebsd.org"
-sendmail_enable="NONE"
-sshd_enable="YES"
-usbd_enable="NO"
-inetd_enable="NO"
-portmap_enable="NO"
-update_motd="NO"
-varmfs="YES"
-populate_var="YES"
-varsize="8192"
-tmpmfs="YES"
diff --git a/tools/tools/tinybsd/conf/wrap/etc/ttys b/tools/tools/tinybsd/conf/wrap/etc/ttys
deleted file mode 100644
index 919bceaa3403..000000000000
--- a/tools/tools/tinybsd/conf/wrap/etc/ttys
+++ /dev/null
@@ -1,308 +0,0 @@
-#
-# $FreeBSD$
-#
-# This file specifies various information about terminals on the system.
-# It is used by several different programs. Common entries for the
-# various columns include:
-#
-# name The name of the terminal device.
-#
-# getty The program to start running on the terminal. Typically a
-# getty program, as the name implies. Other common entries
-# include none, when no getty is needed, and xdm, to start the
-# X Window System.
-#
-# type The initial terminal type for this port. For hardwired
-# terminal lines, this will contain the type of terminal used.
-# For virtual consoles, the correct type is typically xterm, but
-# vt220 will work better if you need interoperability with other
-# systems like Solaris or GNU/Linux.
-# Other common values include network for network connections on
-# pseudo-terminals, dialup for incoming modem ports, and unknown
-# when the terminal type cannot be predetermined.
-#
-# status Must be on or off. If on, init will run the getty program on
-# the specified port. If the word "secure" appears, this tty
-# allows root login.
-#
-# name getty type status comments
-#
-# If console is marked "insecure", then init will ask for the root password
-# when going to single-user mode.
-console none unknown off secure
-#
-ttyv0 "/usr/libexec/getty Pc" xterm off secure
-# Virtual terminals
-ttyv1 "/usr/libexec/getty Pc" xterm off secure
-ttyv2 "/usr/libexec/getty Pc" xterm off secure
-ttyv3 "/usr/libexec/getty Pc" xterm off secure
-ttyv4 "/usr/libexec/getty Pc" xterm off secure
-ttyv5 "/usr/libexec/getty Pc" xterm off secure
-ttyv6 "/usr/libexec/getty Pc" xterm off secure
-ttyv7 "/usr/libexec/getty Pc" xterm off secure
-ttyv8 "/usr/local/bin/xdm -nodaemoff" xterm off secure
-# Serial terminals
-# The 'dialup' keyword identifies dialin lines to login, fingerd etc.
-ttyu0 "/usr/libexec/getty std.9600" dialup on secure
-ttyu1 "/usr/libexec/getty std.9600" dialup off secure
-ttyu2 "/usr/libexec/getty std.9600" dialup off secure
-ttyu3 "/usr/libexec/getty std.9600" dialup off secure
-# Dumb console
-dcons "/usr/libexec/getty std.9600" vt100 off secure
-# Pseudo terminals
-ttyp0 none network
-ttyp1 none network
-ttyp2 none network
-ttyp3 none network
-ttyp4 none network
-ttyp5 none network
-ttyp6 none network
-ttyp7 none network
-ttyp8 none network
-ttyp9 none network
-ttypa none network
-ttypb none network
-ttypc none network
-ttypd none network
-ttype none network
-ttypf none network
-ttypg none network
-ttyph none network
-ttypi none network
-ttypj none network
-ttypk none network
-ttypl none network
-ttypm none network
-ttypn none network
-ttypo none network
-ttypp none network
-ttypq none network
-ttypr none network
-ttyps none network
-ttypt none network
-ttypu none network
-ttypv none network
-ttyq0 none network
-ttyq1 none network
-ttyq2 none network
-ttyq3 none network
-ttyq4 none network
-ttyq5 none network
-ttyq6 none network
-ttyq7 none network
-ttyq8 none network
-ttyq9 none network
-ttyqa none network
-ttyqb none network
-ttyqc none network
-ttyqd none network
-ttyqe none network
-ttyqf none network
-ttyqg none network
-ttyqh none network
-ttyqi none network
-ttyqj none network
-ttyqk none network
-ttyql none network
-ttyqm none network
-ttyqn none network
-ttyqo none network
-ttyqp none network
-ttyqq none network
-ttyqr none network
-ttyqs none network
-ttyqt none network
-ttyqu none network
-ttyqv none network
-ttyr0 none network
-ttyr1 none network
-ttyr2 none network
-ttyr3 none network
-ttyr4 none network
-ttyr5 none network
-ttyr6 none network
-ttyr7 none network
-ttyr8 none network
-ttyr9 none network
-ttyra none network
-ttyrb none network
-ttyrc none network
-ttyrd none network
-ttyre none network
-ttyrf none network
-ttyrg none network
-ttyrh none network
-ttyri none network
-ttyrj none network
-ttyrk none network
-ttyrl none network
-ttyrm none network
-ttyrn none network
-ttyro none network
-ttyrp none network
-ttyrq none network
-ttyrr none network
-ttyrs none network
-ttyrt none network
-ttyru none network
-ttyrv none network
-ttys0 none network
-ttys1 none network
-ttys2 none network
-ttys3 none network
-ttys4 none network
-ttys5 none network
-ttys6 none network
-ttys7 none network
-ttys8 none network
-ttys9 none network
-ttysa none network
-ttysb none network
-ttysc none network
-ttysd none network
-ttyse none network
-ttysf none network
-ttysg none network
-ttysh none network
-ttysi none network
-ttysj none network
-ttysk none network
-ttysl none network
-ttysm none network
-ttysn none network
-ttyso none network
-ttysp none network
-ttysq none network
-ttysr none network
-ttyss none network
-ttyst none network
-ttysu none network
-ttysv none network
-ttyP0 none network
-ttyP1 none network
-ttyP2 none network
-ttyP3 none network
-ttyP4 none network
-ttyP5 none network
-ttyP6 none network
-ttyP7 none network
-ttyP8 none network
-ttyP9 none network
-ttyPa none network
-ttyPb none network
-ttyPc none network
-ttyPd none network
-ttyPe none network
-ttyPf none network
-ttyPg none network
-ttyPh none network
-ttyPi none network
-ttyPj none network
-ttyPk none network
-ttyPl none network
-ttyPm none network
-ttyPn none network
-ttyPo none network
-ttyPp none network
-ttyPq none network
-ttyPr none network
-ttyPs none network
-ttyPt none network
-ttyPu none network
-ttyPv none network
-ttyQ0 none network
-ttyQ1 none network
-ttyQ2 none network
-ttyQ3 none network
-ttyQ4 none network
-ttyQ5 none network
-ttyQ6 none network
-ttyQ7 none network
-ttyQ8 none network
-ttyQ9 none network
-ttyQa none network
-ttyQb none network
-ttyQc none network
-ttyQd none network
-ttyQe none network
-ttyQf none network
-ttyQg none network
-ttyQh none network
-ttyQi none network
-ttyQj none network
-ttyQk none network
-ttyQl none network
-ttyQm none network
-ttyQn none network
-ttyQo none network
-ttyQp none network
-ttyQq none network
-ttyQr none network
-ttyQs none network
-ttyQt none network
-ttyQu none network
-ttyQv none network
-ttyR0 none network
-ttyR1 none network
-ttyR2 none network
-ttyR3 none network
-ttyR4 none network
-ttyR5 none network
-ttyR6 none network
-ttyR7 none network
-ttyR8 none network
-ttyR9 none network
-ttyRa none network
-ttyRb none network
-ttyRc none network
-ttyRd none network
-ttyRe none network
-ttyRf none network
-ttyRg none network
-ttyRh none network
-ttyRi none network
-ttyRj none network
-ttyRk none network
-ttyRl none network
-ttyRm none network
-ttyRn none network
-ttyRo none network
-ttyRp none network
-ttyRq none network
-ttyRr none network
-ttyRs none network
-ttyRt none network
-ttyRu none network
-ttyRv none network
-ttyS0 none network
-ttyS1 none network
-ttyS2 none network
-ttyS3 none network
-ttyS4 none network
-ttyS5 none network
-ttyS6 none network
-ttyS7 none network
-ttyS8 none network
-ttyS9 none network
-ttySa none network
-ttySb none network
-ttySc none network
-ttySd none network
-ttySe none network
-ttySf none network
-ttySg none network
-ttySh none network
-ttySi none network
-ttySj none network
-ttySk none network
-ttySl none network
-ttySm none network
-ttySn none network
-ttySo none network
-ttySp none network
-ttySq none network
-ttySr none network
-ttySs none network
-ttySt none network
-ttySu none network
-ttySv none network
diff --git a/tools/tools/tinybsd/conf/wrap/tinybsd.basefiles b/tools/tools/tinybsd/conf/wrap/tinybsd.basefiles
deleted file mode 100644
index e37dade3acd3..000000000000
--- a/tools/tools/tinybsd/conf/wrap/tinybsd.basefiles
+++ /dev/null
@@ -1,232 +0,0 @@
-# $FreeBSD$
-# contents of ${WORKDIR}/boot
-boot/boot0
-boot/boot1
-boot/boot2
-boot/defaults/loader.conf
-boot/device.hints
-boot/loader
-boot/loader.4th
-boot/loader.help
-boot/loader.rc
-boot/mbr
-boot/support.4th
-
-# contents of ${WORKDIR}/libexec
-libexec/ld-elf.so.1:usr/libexec/ld-elf.so.1
-
-# contents of ${WORKDIR}/bin
-bin/[:bin/test
-bin/cat
-bin/chflags
-bin/chio
-bin/chmod
-bin/cp
-bin/csh:bin/tcsh
-bin/date
-bin/dd
-bin/df
-bin/domainname
-bin/echo
-bin/ed:bin/red
-bin/expr
-bin/hostname
-bin/kenv
-bin/kill
-bin/ln:bin/link
-bin/ls
-bin/mkdir
-bin/mv
-bin/pax
-bin/ps
-bin/pwd
-bin/realpath
-bin/rm:bin/unlink
-bin/rmdir
-bin/sh
-bin/sleep
-bin/stty
-bin/sync
-
-# contents of ${WORKDIR}/sbin
-sbin/adjkerntz
-sbin/comcontrol
-sbin/disklabel
-sbin/dmesg
-sbin/fastboot:sbin/reboot
-sbin/fasthalt:sbin/halt
-sbin/fsck
-sbin/fsck_ufs:sbin/fsck_ffs
-sbin/fsck_ufs:sbin/fsck_4.2bsd
-sbin/ifconfig
-sbin/init
-sbin/ipfw
-sbin/kldconfig
-sbin/kldload
-sbin/kldstat
-sbin/kldunload
-sbin/ldconfig
-sbin/md5
-sbin/mdconfig
-sbin/mknod
-sbin/mdmfs
-sbin/mount
-sbin/mount_nullfs
-sbin/mount_unionfs
-sbin/natd
-sbin/newfs
-sbin/nextboot
-sbin/nologin
-sbin/nos-tun
-sbin/pfctl
-sbin/pflogd
-sbin/ping
-sbin/rcorder
-sbin/route
-sbin/shutdown
-sbin/slattach
-sbin/swapon
-sbin/sysctl
-sbin/umount
-
-# contents of ${WORKDIR}/usr/sbin
-usr/bin/at:usr/bin/atq
-usr/bin/at:usr/bin/atrm
-usr/bin/at:usr/bin/batch
-usr/bin/awk
-usr/bin/basename
-usr/bin/bunzip2:usr/bin/bzcat
-usr/bin/bunzip2:usr/bin/bzip2
-usr/bin/chat
-usr/bin/chfn:usr/bin/chpass
-usr/bin/chfn:usr/bin/chsh
-usr/bin/chgrp
-usr/bin/cksum
-usr/bin/clear
-usr/bin/cmp
-usr/bin/compress:usr/bin/uncompress
-usr/bin/cpio
-usr/bin/crontab
-usr/bin/cu
-usr/bin/dig
-usr/bin/dirname
-usr/bin/du
-usr/bin/ee
-usr/bin/egrep:usr/bin/fgrep
-usr/bin/egrep:usr/bin/grep
-usr/bin/env
-usr/bin/false
-usr/bin/fetch
-usr/bin/find
-usr/bin/finger
-usr/bin/fstat
-usr/bin/fsync
-usr/bin/ftp
-usr/bin/gunzip:usr/bin/gzcat
-usr/bin/gunzip:usr/bin/gzip
-usr/bin/gzexe
-usr/bin/head
-usr/bin/hexdump
-usr/bin/id:usr/bin/whoami
-usr/bin/ident
-usr/bin/killall
-usr/bin/last
-usr/bin/less:usr/bin/more
-usr/bin/limits
-usr/bin/lock
-usr/bin/lockf
-usr/bin/logger
-usr/bin/login
-usr/bin/logname
-usr/bin/mesg
-usr/bin/minigzip
-usr/bin/mkfifo
-usr/bin/mktemp
-usr/bin/msgs
-usr/bin/netstat
-usr/bin/nfsstat
-usr/bin/nice
-usr/bin/nslookup
-usr/bin/nsupdate
-usr/bin/nohup
-usr/bin/objformat
-usr/bin/openssl
-usr/bin/passwd
-usr/bin/printf
-usr/bin/renice
-usr/bin/reset:usr/sbin/tset
-usr/bin/scp
-usr/bin/script
-usr/bin/sed
-usr/bin/sftp
-usr/bin/shar
-usr/bin/slogin:usr/bin/ssh
-usr/bin/sort
-usr/bin/split
-usr/bin/ssh-keygen
-usr/bin/su
-usr/bin/tail
-usr/bin/tar
-usr/bin/tee
-usr/bin/telnet
-usr/bin/time
-usr/bin/top
-usr/bin/touch
-usr/bin/tput
-usr/bin/tr
-usr/bin/true
-usr/bin/tty
-usr/bin/uname
-usr/bin/uptime:usr/bin/w
-usr/bin/users
-usr/bin/uudecode
-usr/bin/uuencode
-usr/bin/vi
-usr/bin/vmstat
-usr/bin/wall
-usr/bin/who
-usr/bin/whois
-usr/bin/write
-usr/bin/yes
-
-# contents of ${WORKDIR}/usr/sbin
-usr/sbin/arp
-usr/sbin/authpf
-usr/sbin/boot0cfg
-usr/sbin/chown
-usr/sbin/cron
-usr/sbin/idprio:usr/sbin/rtprio
-usr/sbin/inetd
-usr/sbin/iostat
-usr/sbin/kbdcontrol
-usr/sbin/lastlogin
-usr/sbin/memcontrol
-usr/sbin/mtree
-usr/sbin/newsyslog
-usr/sbin/ntpdate
-usr/sbin/pciconf
-usr/sbin/pw
-usr/sbin/pwd_mkdb
-usr/sbin/slstat
-usr/sbin/sshd
-usr/sbin/syslogd
-usr/sbin/tcpdchk
-usr/sbin/tcpdmatch
-usr/sbin/tcpdump
-usr/sbin/traceroute
-usr/sbin/vidcontrol
-usr/sbin/vipw
-usr/sbin/vnconfig
-usr/sbin/watch
-usr/sbin/pccardc
-usr/sbin/pccardd
-
-# contents of ${WORKDIR}/usr/libexec
-usr/libexec/atrun
-usr/libexec/ftpd
-usr/libexec/getty
-usr/libexec/sftp-server
-
-# contents of ${WORKDIR}/usr/share
-usr/share/misc/termcap
-
diff --git a/tools/tools/tinybsd/conf/wrap/tinybsd.ports b/tools/tools/tinybsd/conf/wrap/tinybsd.ports
deleted file mode 100644
index 49bb52175241..000000000000
--- a/tools/tools/tinybsd/conf/wrap/tinybsd.ports
+++ /dev/null
@@ -1,9 +0,0 @@
-# $FreeBSD$
-# Here you can add the applications from the FreeBSD Ports Collection which you
-# want TinyBSD ports system to install in your embedded system. You whould list
-# one application per line, mentioning its category and name, like the examples:
-#
-# www/mini_httpd
-# net-mgmt/rate
-#
-# Make sure you have enough space to add it.
diff --git a/tools/tools/tinybsd/tinybsd b/tools/tools/tinybsd/tinybsd
deleted file mode 100755
index 1675b09f2a52..000000000000
--- a/tools/tools/tinybsd/tinybsd
+++ /dev/null
@@ -1,526 +0,0 @@
-#!/bin/sh -
-# Copyright (c) 2006 Jean Milanez Melo <jmelo@freebsdbrasil.com.br>
-# <jmelo@FreeBSD.org>
-# Patrick Tracanelli <eksffa@freebsdbrasil.com.br>
-#
-# $FreeBSD$
-#set -xv
-CURRENTDIR=/usr/src/tools/tools/tinybsd
-if [ ! -d $CURRENTDIR ]
-then
- CURRENTDIR=`pwd`
-else
- cd $CURRENTDIR
-fi
-
-WORKDIR=/usr/obj/tinybsdbuild
-KERNCONF=TINYBSD
-BASEFILE="tinybsd.basefiles"
-PORTSFILE="tinybsd.ports"
-PORTSDIR=/usr/ports
-DEFINSTARGS="-o 0 -g 0 -m 555"
-TINYARCH=$(uname -p)
-
-TS="=====>"
-
-splitarg1 () {
- local IFS
- IFS='='
- set $1
- echo $1
-}
-
-splitarg2 () {
- local IFS
- IFS='='
- set $1
- echo $2
-}
-
-getargs () {
- ARGS="$*"
- for arg in $*
- do
- ARG=`splitarg1 $arg`
- VAL=`splitarg2 $arg`
- case $ARG in
- sectors)
- SECTUNIT=$VAL
- ;;
- heads)
- TRACKCYL=$VAL
- ;;
- spt)
- SECTRACK=$VAL
- ;;
- conf)
- CONF=$VAL
- ;;
- mfsroot)
- MFSROOT=$VAL
- ;;
- image)
- IMG=$VAL
- ;;
- batch)
- NO_PROMPTS="YES"
- ;;
- new)
- NO_READ="YES"
- ;;
- *)
- usage
- ;;
- esac
- done
-}
-
-usage () {
- echo "Woops
- Usage: $0 sectors=<size of media> [80000]
- heads=<heads according to firmware> [4]
- spt=<sectors per track according to firmware> [32]
- conf=<configuration name> (see conf/name) [default]
- mfsroot[=<yes|no>] [no]
- image=<tinybsd image name> [tinybsd.bin]
- batch[=<anything>] (do not ask interactively)
- new[=<anything>] (do not read previous values)
-
- Examples:
- $0 sectors=65536 heads=8 spt=16 conf=wireless mfsroot=yes image=myimage.img batch
-
- Default values are set in the program.
- Environment values override defaults.
- Previous values override environment values but can be disabled.
- Command arguments override previous values.
- Interactive values override command arguments but can be disabled.
-
- Run diskinfo(8) -v against your CF device to get correct information
- about your disk. USB keys do not need any specific geometry"
- exit 1
-}
-
-########
-# Load variables from stdin (could be a file)
-# Look for lines that match foo=bar
-# do not run the file.. that is asking for trouble
-########
-loadvars () {
- while :
- do
- OIFS=$IFS
- IFS="="
- if read PART1 PART2
- then
- IFS="$OIFS"
- case "$PART1" in
- \#*)
- ;;
- "")
- ;;
- *)
- set "${PART1}"
- if [ $# = "1" ]
- then
- eval "${PART1}='${PART2}'"
- fi
- ;;
- esac
- else
- IFS="$OIFS"
- return 0
- fi
- done
-}
-
-########
-# get values from the user
-########
-confirm_action(){
- local ANSWER
- local MESSAGE
- ANSWER=$1
- MESSAGE=$2
- if [ "$NO_PROMPTS" != "YES" ]
- then
- echo -n "$MESSAGE [$ANSWER] " > /dev/tty
- read result
- [ "$result" != "" ] && ANSWER=$result
- fi
-
- ANSWER=`eval "echo $ANSWER"`
- echo $ANSWER
-}
-
-########
-# These are only used the VERY first time you run the program (on this machine)
-########
-setdefaults () {
- NO_PROMPTS=${NO_PROMPTS:-NO}
- NO_READ=${NO_READ:-NO}
- SECTUNIT=${SECTUNIT:-80000}; export SECTUNIT
- TRACKCYL=${TRACKCYL:-4}; export TRACKCYL
- SECTRACK=${SECTRACK:-32}; export SECTRACK
- CONF=${CONF:-default}; export CONF
- MFSROOT=${MFSROOT:-NO}; export MFSROOT
- IMG=${IMG:-tinybsd.bin}; export IMG
-
-}
-
-#######
-# get ourselves set up.
-# Partly by reading config files and partly from asking questions.
-#######
-loadconfig () {
- if [ "${NO_READ}" = "YES" ]
- then
- return
- fi
-
- HOSTNAME=`hostname`
- HOSTPART=${HOSTNAME%%.*}
- FILENAME=".tinybsd.${HOSTPART}.${USER}"
- FULLFILENAME=$HOME/$FILENAME
-
- if [ -f ${FULLFILENAME} ]
- then
- loadvars <${FULLFILENAME}
- fi
-
- SECTUNIT=`confirm_action "$SECTUNIT" "512 byte sectors per unit?"`
- TRACKCYL=`confirm_action "$TRACKCYL" "Tracks per cylinder?"`
- SECTRACK=`confirm_action "$SECTRACK" "Sectors per track?"`
- while :
- do
- echo "The following configurations exist:"
- ls -l conf|awk '/^d/{print " ",$9}'|grep -v CVS
- CONF=`confirm_action "$CONF" "Configuration name?"`
- if [ ! -d "${CURRENTDIR}/conf/$CONF" ]
- then
- echo "${TS} Error: Could not find config (${CONF})"
- if [ "$NO_PROMPTS" = "YES" ]
- then
- exit 1
- fi
- else
- break
- fi
- done
- MFSROOT=`confirm_action "$MFSROOT" "Use an MFSROOT? (yes/no)"`
- IMG=`confirm_action "$IMG" "Image file to generate?"`
-
-# example of formatted value (NNN in this case)
-# #condition and format the number
-# if [ -z "${BUILDNUM}" ]
-# then
-# echo "Starting with build 001"
-# BUILDNUM="001"
-# else
-# BUILDNUM=`printf "%03d\n" $(($BUILDNUM))`
-# fi
-
-
-}
-
-saveconfig () {
- HOSTNAME=`hostname`
- HOSTPART=${HOSTNAME%%.*}
- FILENAME=".tinybsd.${HOSTPART}.${USER}"
- FULLFILENAME=$HOME/$FILENAME
- (
- echo "# written by tinybsd" `date`
- echo "SECTUNIT=${SECTUNIT}"
- echo "TRACKCYL=${TRACKCYL}"
- echo "SECTRACK=${SECTRACK}"
- echo "CONF=${CONF}"
- echo "MFSROOT=${MFSROOT:-NO}"
- echo "IMG=${IMG}"
- ) >${FULLFILENAME}
-}
-
-check_alt_imgname() {
- if [ ${IMG} = 'tinybsd.bin' ]
- then
- echo "${TS} Alternative image name not set; defaulting to 'tinybsd.bin'"
- fi
-}
-
-rotate_buidlog() {
- mv -f ${HOME}/tinybsd.log ${HOME}/tinybsd.log.old
-}
-
-remove_workdir() {
- # Before removing check if there is not a mount under $WORKDIR anymore
- MOUNT_CHECK=`mount|egrep "on ${WORKDIR}"`
-
- if [ ! -z "${MOUNT_CHECK}" ]; then
- echo "There are mounts under the workdir (${WORKDIR}). Please umount them before running this script"
- exit 1
- else
- chflags -R noschg ${WORKDIR}
- echo "${TS} Removing "${WORKDIR}
- rm -rf ${WORKDIR}
- echo "${TS} Removing Build Kernel Directory"
- rm -rf /usr/obj/usr/src/sys/${KERNCONF}
- echo "${TS} done."
- fi
-}
-
-
-prework() {
- remove_workdir
- mkdir -p ${WORKDIR}
-}
-
-
-create_tree() {
- echo "${TS} Creating directory hierarchy... "
- mtree -deU -f /etc/mtree/BSD.root.dist -p ${WORKDIR}
- mtree -deU -f /etc/mtree/BIND.chroot.dist -p ${WORKDIR}
- mtree -deU -f /etc/mtree/BSD.usr.dist -p ${WORKDIR}/usr
- mtree -deU -f /etc/mtree/BSD.local.dist -p ${WORKDIR}/usr/local
- mtree -deU -f /etc/mtree/BSD.var.dist -p ${WORKDIR}/var
-}
-
-copy_binaries() {
- cd ${CURRENTDIR}/conf/${CONF}
-
- for file in `cat ${CURRENTDIR}/conf/${CONF}/${BASEFILE} | grep -v "#" | \
- cut -f1 -d":" | sort | uniq` ; do
- echo "${TS} Copying "/${file}" to "${WORKDIR}/${file}
- cp -fp /${file} ${WORKDIR}/${file} ;
- done
-}
-
-install_ports() {
- for portname in `cat ${CURRENTDIR}/conf/${CONF}/${PORTSFILE} | grep -v '#'` ; do
- if [ ! -d "${WORKDIR}/usr/ports" ]; then
- mkdir -p "${WORKDIR}/usr/ports"
- fi
-
- PNAME=`/usr/bin/basename "${portname}"`
- PORT_OPTION_FILE="/var/db/ports/${PNAME}/options"
-
- if [ -f "${PORT_OPTION_FILE}" ]; then
- mkdir -p "${WORKDIR}/var/db/ports/${PNAME}"
- cp "${PORT_OPTION_FILE}" "${WORKDIR}/var/db/ports/${PNAME}/"
- fi
-
- mount_nullfs /lib "${WORKDIR}/lib"
- mount_nullfs /usr/bin "${WORKDIR}/usr/bin"
- mount_nullfs /usr/sbin "${WORKDIR}/usr/sbin"
- mount_nullfs /usr/ports "${WORKDIR}/usr/ports"
- mount_nullfs /usr/share "${WORKDIR}/usr/share"
- mount_nullfs /usr/libexec "${WORKDIR}/usr/libexec"
- mount_nullfs /usr/lib "${WORKDIR}/usr/lib"
- mount_nullfs /usr/include "${WORKDIR}/usr/include"
-
- cd ${PORTSDIR}/${portname}
- make fetch-recursive
- make DESTDIR_ENV_LIST=PATH DESTDIR="${WORKDIR}" install
- make clean
-
- umount "${WORKDIR}/lib"
- umount "${WORKDIR}/usr/ports"
- umount "${WORKDIR}/usr/bin"
- umount "${WORKDIR}/usr/sbin"
- umount "${WORKDIR}/usr/share"
- umount "${WORKDIR}/usr/libexec"
- umount "${WORKDIR}/usr/lib"
- umount "${WORKDIR}/usr/include"
- done
-}
-
-make_kernel() {
- echo "${TS} Building customized tiny beastie kernel... "
- cp -p ${CURRENTDIR}/conf/${CONF}/${KERNCONF} /usr/src/sys/${TINYARCH}/conf
- cd /usr/src
- make buildkernel KERNCONF=${KERNCONF} || exit 1
- gzip -9 /usr/obj/usr/src/sys/${KERNCONF}/kernel
- install ${DEFINSTARGS} /usr/obj/usr/src/sys/${KERNCONF}/kernel.gz ${WORKDIR}/boot/kernel/
- install ${DEFINSTARGS} \
- /usr/obj/usr/src/sys/${KERNCONF}/modules/usr/src/sys/modules/acpi/acpi/acpi.ko \
- ${WORKDIR}/boot/kernel
- install -o 0 -g 0 -m 444 /sys/${TINYARCH}/conf/GENERIC.hints ${WORKDIR}/boot/device.hints
-}
-
-copy_libraries() {
- TDEPFILE="`mktemp -t deps`"
- TDEPFILES="`mktemp -t depsymlnk`"
-
- find "${WORKDIR}" -type f |while read file; do
- ldd -f "%p\n" ${file} >> ${TDEPFILE} ; # don't worry on progs been "not dynamic"
- done
-
- for libdeplib in `cat ${TDEPFILE} | sort | uniq`; do
- ldd -f "%p\n" /${libdeplib} >> ${TDEPFILE} ;
- done
-
- for pamdep in `ls -1 /usr/lib/pam*`; do
- echo $pamdep >> ${TDEPFILE} ;
- ldd -f "%p\n" /${pamdep} >> ${TDEPFILE} ;
- done
-
- for lib in `cat ${TDEPFILE} | sort | uniq`; do
- echo "${TS} Copying "${lib}" to "${WORKDIR}${lib}
- cp -fp ${lib} ${WORKDIR}${lib} ;
- done
-
- for depsymlink in `cat ${TDEPFILE}`; do
- echo "${TS} Checking if ${depsymlink} is a symbolic link"
- /bin/ls -l $depsymlink | grep "\->" | awk '{print $11":"$9}' >> ${TDEPFILES}
- done
-
- for i in `cat ${TDEPFILES}`; do
- SOURCE_FILE=`echo $i | awk -F ":" '{print $1}'`
- TARGET_FILE=`echo $i | awk -F ":" '{print $2}'`
-
- echo "${TS} Unlinking ${WORKDIR}${TARGET_FILE}"
- chroot ${WORKDIR} /bin/chflags 0 ${TARGET_FILE}
- chroot ${WORKDIR} /bin/rm -f ${TARGET_FILE}
-
- echo "${TS} Symlinking ${SOURCE_FILE} to ${TARGET_FILE}"
- chroot ${WORKDIR} /bin/ln -s ${SOURCE_FILE} ${TARGET_FILE}
- done
-
- echo -n "${TS} Unlinking "
- rm -fv ${TDEPFILE} ${TDEPFILES}
-}
-
-create_etc() {
- cd /usr/src/etc/sendmail/
- make freebsd.cf freebsd.submit.cf
-
- cd /usr/src/etc/
- mkdir -p ${WORKDIR}/var/named/etc/namedb
- make distribution DESTDIR=${WORKDIR} || exit 1
-}
-
-create_ssh_keys() {
- echo "Creating ssh keys..."
- ssh-keygen -t rsa1 -b 1024 -f ${WORKDIR}/etc/ssh/ssh_host_key -N ''
- ssh-keygen -t dsa -f ${WORKDIR}/etc/ssh/ssh_host_dsa_key -N ''
- ssh-keygen -t rsa -f ${WORKDIR}/etc/ssh/ssh_host_rsa_key -N ''
-}
-
-personal_conf() {
- echo "${TS} Copying your custom configuration on conf/ ..."
- for custom in `find ${CURRENTDIR}/conf/${CONF}/ -type d -depth 1 \! -name CVS`; do
- cp -Rp ${custom}/* ${WORKDIR}/${custom#${CURRENTDIR}/conf/${CONF}/}/
- done
-
- if [ -f ${CURRENTDIR}/conf/${CONF}/boot.config ]; then
- cp ${CURRENTDIR}/conf/${CONF}/boot.config ${WORKDIR}/boot.config
- fi
-}
-
-symlinks() {
-#set -xv
- for i in `cat ${CURRENTDIR}/conf/${CONF}/${BASEFILE}| grep -v "#" | grep ":"`; do
- SOURCE_FILE=`echo $i | awk -F ":" {'print $1'}`
- TARGET_FILE=`echo $i | awk -F ":" {'print $2'}`
- chroot ${WORKDIR} /bin/ln -vs /${SOURCE_FILE} ${TARGET_FILE}
- done
-#set +xv
-}
-
-
-create_image() {
- VNODEFILE=`mktemp -t tinybsd`
- IMGMNT=`mktemp -d -t tinybsd`
-
- dd if=/dev/zero of=${VNODEFILE} count=${SECTUNIT}
-
- MD=`mdconfig -a -t vnode -f ${VNODEFILE} -x ${SECTRACK} -y ${TRACKCYL}`
-
- diskinfo -v /dev/${MD}
-
- fdisk -I /dev/${MD}
- fdisk /dev/${MD}
-
- cp -p /boot/boot0 ${WORKDIR}/boot/boot0
- bsdlabel -w -B /dev/${MD}
- newfs -O2 -U /dev/${MD}a
-
- mount /dev/${MD}a ${IMGMNT}
-
- if [ ${MFSROOT} = 'yes' ]
- then
- echo "${TS} Creating MFS root..."
- # Update is not done yet
- #mkdir -p ${WORKDIR}/usr/local/bin/
- #cp -p ${CURRENTDIR}/update/update ${WORKDIR}/usr/local/bin/
- rm ${WORKDIR}/etc/fstab
- cd ${WORKDIR} && find . -print | sed '/kernel/ d' | cpio -dump ${IMGMNT} || true
- umount ${IMGMNT}
- dd if=/dev/${MD} of=${CURRENTDIR}/mfsroot.img
- gzip -9 < ${CURRENTDIR}/mfsroot.img > ${CURRENTDIR}/mfsroot.gz
- rm ${CURRENTDIR}/mfsroot.img
- mount /dev/${MD}a ${IMGMNT}
- rm -rf ${IMGMNT}/*
- cp -rp ${WORKDIR}/boot ${IMGMNT}
- rm ${IMGMNT}/boot/device.hints
- ( \
- echo 'set vfs.root.mountfrom="ufs:/dev/md0a"' ; \
- echo 'set bootfile="/boot/kernel/kernel"' ; \
- sed -e '/^#/ d' -e 's/^/set /' < ${WORKDIR}/boot/device.hints ; \
- echo 'load /boot/kernel/kernel' ; \
- echo 'echo Loading mfsroot' ; \
- echo 'load -t mfs_root /mfsroot' ;\
- echo 'boot' ; \
- ) > ${IMGMNT}/boot/loader.rc
- mv ${CURRENTDIR}/mfsroot.gz ${IMGMNT}
- else
- ( cd ${WORKDIR} && find . -print | cpio -dump ${IMGMNT} ) || true
- fi
-
- df ${IMGMNT}
- sleep 1
- umount ${IMGMNT}
-
- dd if=/dev/${MD} of=${CURRENTDIR}/${IMG} bs=64k
-
- rm -vf ${VNODEFILE}
- rm -rvf ${IMGMNT}
- mdconfig -d -u ${MD}
- echo ""
- echo "${TS} Done!"
- echo "${TS} Your configuration options were saved in ${FULLFILENAME}"
- echo "${TS} You can see your build log in ${HOME}/tinybsd.log"
- echo "${TS} Your final image is in ${CURRENTDIR}/${IMG}"
- echo "${TS} Now use dd(1) to write it."
-}
-
-##########################
-# run things
-
-##########################################
-## The actual program
-##########################################
-getargs $*
-setdefaults
-# Load as many of the configuration options as we can
-loadconfig
-saveconfig
-
-# Rotate build log
-rotate_buidlog
-
-# Now start logging.
-(
- # Do the build
- prework
- check_alt_imgname
- create_tree
- copy_binaries
- create_etc
- install_ports
- make_kernel
- copy_libraries
- symlinks
- create_ssh_keys
- personal_conf
- create_image
-#set +xv
-) 2>&1 |tee -a ${HOME}/tinybsd.log
-
diff --git a/tools/tools/tionxcl/Makefile b/tools/tools/tionxcl/Makefile
index 1f23d67c9529..0bb9f733d227 100644
--- a/tools/tools/tionxcl/Makefile
+++ b/tools/tools/tionxcl/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= tionxcl
MAN=
diff --git a/tools/tools/tionxcl/tionxcl.c b/tools/tools/tionxcl/tionxcl.c
index cac02cd7887f..138bcceee3ea 100644
--- a/tools/tools/tionxcl/tionxcl.c
+++ b/tools/tools/tionxcl/tionxcl.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
diff --git a/tools/tools/track/Makefile b/tools/tools/track/Makefile
index 3d44baae2b83..c494c7375a49 100644
--- a/tools/tools/track/Makefile
+++ b/tools/tools/track/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PREFIX?= /usr/local
BINDIR?= ${PREFIX}/bin
diff --git a/tools/tools/track/track.sh b/tools/tools/track/track.sh
index f4674a96c698..31e93166cef2 100644
--- a/tools/tools/track/track.sh
+++ b/tools/tools/track/track.sh
@@ -1,6 +1,6 @@
#!/bin/sh
#-
-# Copyright (c) 2008 Dag-Erling Coïdan Smørgrav
+# Copyright (c) 2008 Dag-Erling Smørgrav
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
#
tail -10000 -F "$@" |
diff --git a/tools/tools/tscdrift/Makefile b/tools/tools/tscdrift/Makefile
index d235972fb53a..190bb4ecee3d 100644
--- a/tools/tools/tscdrift/Makefile
+++ b/tools/tools/tscdrift/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= tscdrift
MAN=
diff --git a/tools/tools/tscdrift/tscdrift.c b/tools/tools/tscdrift/tscdrift.c
index 13e754ef6776..cf20993bd1ee 100644
--- a/tools/tools/tscdrift/tscdrift.c
+++ b/tools/tools/tscdrift/tscdrift.c
@@ -25,10 +25,6 @@
* SUCH DAMAGE.
*/
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/param.h>
#include <sys/cpuset.h>
#include <machine/atomic.h>
diff --git a/tools/tools/umastat/Makefile b/tools/tools/umastat/Makefile
index 92cd50e8ae3b..97ac4cdb32ce 100644
--- a/tools/tools/umastat/Makefile
+++ b/tools/tools/umastat/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= umastat
MAN=
diff --git a/tools/tools/umastat/umastat.c b/tools/tools/umastat/umastat.c
index 16a0b9d2c97c..ac72a17d0f46 100644
--- a/tools/tools/umastat/umastat.c
+++ b/tools/tools/umastat/umastat.c
@@ -22,8 +22,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
diff --git a/tools/tools/usb/print-usb-if-vids.sh b/tools/tools/usb/print-usb-if-vids.sh
index 17d8e050d181..58e2397eb825 100644
--- a/tools/tools/usb/print-usb-if-vids.sh
+++ b/tools/tools/usb/print-usb-if-vids.sh
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
fetch -o /tmp/usb.if http://www.usb.org/developers/tools/comp_dump/
diff --git a/tools/tools/usbtest/Makefile b/tools/tools/usbtest/Makefile
index b535f5227f10..723a2804269f 100644
--- a/tools/tools/usbtest/Makefile
+++ b/tools/tools/usbtest/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
# Copyright (c) 2013 Hans Petter Selasky. All rights reserved.
#
diff --git a/tools/tools/usbtest/Makefile.depend b/tools/tools/usbtest/Makefile.depend
index 6b278b826fd0..34fbfadfcfb6 100644
--- a/tools/tools/usbtest/Makefile.depend
+++ b/tools/tools/usbtest/Makefile.depend
@@ -1,4 +1,3 @@
-# $FreeBSD$
# Autogenerated - do NOT edit!
DIRDEPS = \
diff --git a/tools/tools/usbtest/usb_control_ep_test.c b/tools/tools/usbtest/usb_control_ep_test.c
index 87c5fc16a83c..1ffb89e42728 100644
--- a/tools/tools/usbtest/usb_control_ep_test.c
+++ b/tools/tools/usbtest/usb_control_ep_test.c
@@ -1,6 +1,5 @@
-/* $FreeBSD$ */
/*-
- * Copyright (c) 2007-2010 Hans Petter Selasky. All rights reserved.
+ * Copyright (c) 2007-2022 Hans Petter Selasky
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -75,7 +74,7 @@ emissing:
}
void
-usb_control_ep_error_test(uint16_t vid, uint16_t pid)
+usb_control_ep_error_test(struct uaddr uaddr)
{
struct LIBUSB20_CONTROL_SETUP_DECODED req;
struct libusb20_device *pdev;
@@ -86,7 +85,7 @@ usb_control_ep_error_test(uint16_t vid, uint16_t pid)
int dev;
int cfg;
- pdev = find_usb_device(vid, pid);
+ pdev = find_usb_device(uaddr);
if (pdev == NULL) {
printf("USB device not found\n");
return;
@@ -161,7 +160,7 @@ usb_control_ep_error_test(uint16_t vid, uint16_t pid)
}
void
-usb_get_string_desc_test(uint16_t vid, uint16_t pid)
+usb_get_string_desc_test(struct uaddr uaddr)
{
struct libusb20_device *pdev;
uint32_t x;
@@ -170,7 +169,7 @@ usb_get_string_desc_test(uint16_t vid, uint16_t pid)
uint8_t *buf;
int error;
- pdev = find_usb_device(vid, pid);
+ pdev = find_usb_device(uaddr);
if (pdev == NULL) {
printf("USB device not found\n");
return;
@@ -190,7 +189,7 @@ usb_get_string_desc_test(uint16_t vid, uint16_t pid)
valid = 0;
printf("Starting string descriptor test for "
- "VID=0x%04x PID=0x%04x\n", vid, pid);
+ "VID=0x%04x PID=0x%04x\n", uaddr.vid, uaddr.pid);
for (x = 0; x != 256; x++) {
@@ -236,7 +235,7 @@ usb_get_string_desc_test(uint16_t vid, uint16_t pid)
}
void
-usb_port_reset_test(uint16_t vid, uint16_t pid, uint32_t duration)
+usb_port_reset_test(struct uaddr uaddr, uint32_t duration)
{
struct timeval sub_tv;
struct timeval ref_tv;
@@ -252,7 +251,7 @@ usb_port_reset_test(uint16_t vid, uint16_t pid, uint32_t duration)
/* sysctl() - no set config */
- pdev = find_usb_device(vid, pid);
+ pdev = find_usb_device(uaddr);
if (pdev == NULL) {
printf("USB device not found\n");
return;
@@ -306,7 +305,7 @@ usb_port_reset_test(uint16_t vid, uint16_t pid, uint32_t duration)
}
void
-usb_set_config_test(uint16_t vid, uint16_t pid, uint32_t duration)
+usb_set_config_test(struct uaddr uaddr, uint32_t duration)
{
struct libusb20_device *pdev;
struct LIBUSB20_DEVICE_DESC_DECODED *ddesc;
@@ -315,7 +314,7 @@ usb_set_config_test(uint16_t vid, uint16_t pid, uint32_t duration)
int failed;
int exp;
- pdev = find_usb_device(vid, pid);
+ pdev = find_usb_device(uaddr);
if (pdev == NULL) {
printf("USB device not found\n");
return;
@@ -329,7 +328,7 @@ usb_set_config_test(uint16_t vid, uint16_t pid, uint32_t duration)
failed = 0;
printf("Starting set config test for "
- "VID=0x%04x PID=0x%04x\n", vid, pid);
+ "VID=0x%04x PID=0x%04x\n", uaddr.vid, uaddr.pid);
for (x = 255; x > -1; x--) {
@@ -365,11 +364,11 @@ usb_set_config_test(uint16_t vid, uint16_t pid, uint32_t duration)
}
void
-usb_get_descriptor_test(uint16_t vid, uint16_t pid, uint32_t duration)
+usb_get_descriptor_test(struct uaddr uaddr, uint32_t duration)
{
struct libusb20_device *pdev;
- pdev = find_usb_device(vid, pid);
+ pdev = find_usb_device(uaddr);
if (pdev == NULL) {
printf("USB device not found\n");
return;
@@ -378,7 +377,7 @@ usb_get_descriptor_test(uint16_t vid, uint16_t pid, uint32_t duration)
}
void
-usb_suspend_resume_test(uint16_t vid, uint16_t pid, uint32_t duration)
+usb_suspend_resume_test(struct uaddr uaddr, uint32_t duration)
{
struct timeval sub_tv;
struct timeval ref_tv;
@@ -403,7 +402,7 @@ usb_suspend_resume_test(uint16_t vid, uint16_t pid, uint32_t duration)
printf("WARNING: Could not set power "
"timeout to 1 (error=%d) \n", errno);
}
- pdev = find_usb_device(vid, pid);
+ pdev = find_usb_device(uaddr);
if (pdev == NULL) {
printf("USB device not found\n");
return;
@@ -417,7 +416,7 @@ usb_suspend_resume_test(uint16_t vid, uint16_t pid, uint32_t duration)
power_old = libusb20_dev_get_power_mode(pdev);
printf("Starting suspend and resume "
- "test for VID=0x%04x PID=0x%04x\n", vid, pid);
+ "test for VID=0x%04x PID=0x%04x\n", uaddr.vid, uaddr.pid);
iter = 0;
errcnt = 0;
@@ -468,7 +467,7 @@ usb_suspend_resume_test(uint16_t vid, uint16_t pid, uint32_t duration)
}
void
-usb_set_and_clear_stall_test(uint16_t vid, uint16_t pid)
+usb_set_and_clear_stall_test(struct uaddr uaddr)
{
struct libusb20_device *pdev;
struct libusb20_transfer *pxfer;
@@ -478,7 +477,7 @@ usb_set_and_clear_stall_test(uint16_t vid, uint16_t pid)
int errcnt;
int ep;
- pdev = find_usb_device(vid, pid);
+ pdev = find_usb_device(uaddr);
if (pdev == NULL) {
printf("USB device not found\n");
return;
@@ -490,7 +489,7 @@ usb_set_and_clear_stall_test(uint16_t vid, uint16_t pid)
return;
}
printf("Starting set and clear stall test "
- "for VID=0x%04x PID=0x%04x\n", vid, pid);
+ "for VID=0x%04x PID=0x%04x\n", uaddr.vid, uaddr.pid);
iter = 0;
errcnt = 0;
@@ -604,7 +603,7 @@ usb_set_and_clear_stall_test(uint16_t vid, uint16_t pid)
}
void
-usb_set_alt_interface_test(uint16_t vid, uint16_t pid)
+usb_set_alt_interface_test(struct uaddr uaddr)
{
struct libusb20_device *pdev;
struct libusb20_config *config;
@@ -615,13 +614,13 @@ usb_set_alt_interface_test(uint16_t vid, uint16_t pid)
int n;
int m;
- pdev = find_usb_device(vid, pid);
+ pdev = find_usb_device(uaddr);
if (pdev == NULL) {
printf("USB device not found\n");
return;
}
printf("Starting set alternate setting test "
- "for VID=0x%04x PID=0x%04x\n", vid, pid);
+ "for VID=0x%04x PID=0x%04x\n", uaddr.vid, uaddr.pid);
config = libusb20_dev_alloc_config(pdev,
libusb20_dev_get_config_index(pdev));
diff --git a/tools/tools/usbtest/usb_modem_test.c b/tools/tools/usbtest/usb_modem_test.c
index 74406fc6b218..eb264df7dfed 100644
--- a/tools/tools/usbtest/usb_modem_test.c
+++ b/tools/tools/usbtest/usb_modem_test.c
@@ -1,6 +1,5 @@
-/* $FreeBSD$ */
/*-
- * Copyright (c) 2007-2010 Hans Petter Selasky. All rights reserved.
+ * Copyright (c) 2007-2022 Hans Petter Selasky
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -428,7 +427,7 @@ fail:
}
static void
-exec_host_modem_test(struct modem *p, uint16_t vid, uint16_t pid)
+exec_host_modem_test(struct modem *p, struct uaddr uaddr)
{
struct libusb20_device *pdev;
@@ -440,7 +439,7 @@ exec_host_modem_test(struct modem *p, uint16_t vid, uint16_t pid)
int error;
- pdev = find_usb_device(vid, pid);
+ pdev = find_usb_device(uaddr);
if (pdev == NULL) {
printf("USB device not found\n");
return;
@@ -513,7 +512,7 @@ exec_host_modem_test(struct modem *p, uint16_t vid, uint16_t pid)
}
void
-show_host_modem_test(uint8_t level, uint16_t vid, uint16_t pid, uint32_t duration)
+show_host_modem_test(uint8_t level, struct uaddr uaddr, uint32_t duration)
{
uint8_t retval;
@@ -542,7 +541,7 @@ show_host_modem_test(uint8_t level, uint16_t vid, uint16_t pid, uint32_t duratio
(modem.use_vendor_specific ? "YES" : "NO"),
(modem.loop_data ? "YES" : "NO"),
(int)(modem.duration),
- (int)vid, (int)pid);
+ (int)uaddr.vid, (int)uaddr.pid);
switch (retval) {
case 0:
@@ -573,10 +572,10 @@ show_host_modem_test(uint8_t level, uint16_t vid, uint16_t pid, uint32_t duratio
set_defaults(&modem);
break;
case 30:
- exec_host_modem_test(&modem, vid, pid);
+ exec_host_modem_test(&modem, uaddr);
break;
case 40:
- show_host_device_selection(level + 1, &vid, &pid);
+ show_host_device_selection(level + 1, &uaddr);
break;
default:
return;
diff --git a/tools/tools/usbtest/usb_msc_test.c b/tools/tools/usbtest/usb_msc_test.c
index db2ab257baab..713da381820e 100644
--- a/tools/tools/usbtest/usb_msc_test.c
+++ b/tools/tools/usbtest/usb_msc_test.c
@@ -1,6 +1,5 @@
-/* $FreeBSD$ */
/*-
- * Copyright (c) 2007-2012 Hans Petter Selasky. All rights reserved.
+ * Copyright (c) 2007-2022 Hans Petter Selasky
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -857,14 +856,13 @@ fail:
}
void
-show_host_device_selection(uint8_t level, uint16_t *pvid, uint16_t *ppid)
+show_host_device_selection(uint8_t level, struct uaddr *puaddr)
{
struct libusb20_backend *pbe;
struct libusb20_device *pdev;
struct LIBUSB20_DEVICE_DESC_DECODED *ddesc;
- uint16_t vid[USB_DEVICES_MAX];
- uint16_t pid[USB_DEVICES_MAX];
+ struct uaddr uaddr[USB_DEVICES_MAX];
int index;
int sel;
@@ -887,8 +885,10 @@ top:
ddesc = libusb20_dev_get_device_desc(pdev);
ptr = libusb20_dev_get_desc(pdev);
printf("%s%d) %s\n", indent[level], index, ptr);
- vid[index] = ddesc->idVendor;
- pid[index] = ddesc->idProduct;
+ uaddr[index].vid = ddesc->idVendor;
+ uaddr[index].pid = ddesc->idProduct;
+ uaddr[index].bus = libusb20_dev_get_bus_number(pdev);
+ uaddr[index].addr = libusb20_dev_get_address(pdev);
index++;
} else {
break;
@@ -907,16 +907,14 @@ top:
goto top;
if ((sel < 0) || (sel >= index)) {
- *pvid = 0;
- *ppid = 0;
- return;
+ memset(puaddr, 0, sizeof(*puaddr));
+ } else {
+ *puaddr = uaddr[sel];
}
- *pvid = vid[sel];
- *ppid = pid[sel];
}
struct libusb20_device *
-find_usb_device(uint16_t vid, uint16_t pid)
+find_usb_device(struct uaddr uaddr)
{
struct libusb20_backend *pbe = libusb20_be_alloc_default();
struct libusb20_device *pdev = NULL;
@@ -929,8 +927,11 @@ find_usb_device(uint16_t vid, uint16_t pid)
ddesc = libusb20_dev_get_device_desc(pdev);
- if ((vid == ddesc->idVendor) &&
- (pid == ddesc->idProduct)) {
+ if ((uaddr.vid == ddesc->idVendor) &&
+ (uaddr.pid == ddesc->idProduct) &&
+ (uaddr.addr == 0 ||
+ (uaddr.addr == libusb20_dev_get_address(pdev) &&
+ uaddr.bus == libusb20_dev_get_bus_number(pdev)))) {
libusb20_be_dequeue_device(pbe, pdev);
break;
}
@@ -1004,7 +1005,7 @@ find_usb_endpoints(struct libusb20_device *pdev, uint8_t class,
}
static void
-exec_host_msc_test(struct usb_msc_params *p, uint16_t vid, uint16_t pid)
+exec_host_msc_test(struct usb_msc_params *p, struct uaddr uaddr)
{
struct libusb20_device *pdev;
@@ -1019,7 +1020,7 @@ exec_host_msc_test(struct usb_msc_params *p, uint16_t vid, uint16_t pid)
xfer_current_id = 0;
xfer_wrapper_sig = CBWSIGNATURE;
- pdev = find_usb_device(vid, pid);
+ pdev = find_usb_device(uaddr);
if (pdev == NULL) {
printf("USB device not found\n");
return;
@@ -1199,8 +1200,7 @@ get_io_area(const struct usb_msc_params *p)
}
void
-show_host_msc_test(uint8_t level, uint16_t vid,
- uint16_t pid, uint32_t duration)
+show_host_msc_test(uint8_t level, struct uaddr uaddr, uint32_t duration)
{
struct usb_msc_params params;
uint8_t retval;
@@ -1251,7 +1251,7 @@ show_host_msc_test(uint8_t level, uint16_t vid,
(params.try_sense_on_error ? "YES" : "NO"),
(params.try_all_lun ? "YES" : "NO"),
(params.try_shorter_wrapper_block ? "YES" : "NO"),
- vid, pid);
+ uaddr.vid, uaddr.pid);
switch (retval) {
case 0:
break;
@@ -1317,10 +1317,10 @@ show_host_msc_test(uint8_t level, uint16_t vid,
set_defaults(&params);
break;
case 30:
- exec_host_msc_test(&params, vid, pid);
+ exec_host_msc_test(&params, uaddr);
break;
case 40:
- show_host_device_selection(level + 1, &vid, &pid);
+ show_host_device_selection(level + 1, &uaddr);
break;
default:
return;
diff --git a/tools/tools/usbtest/usb_msc_test.h b/tools/tools/usbtest/usb_msc_test.h
index 4c6a4c4bcf5b..5718e6cd513f 100644
--- a/tools/tools/usbtest/usb_msc_test.h
+++ b/tools/tools/usbtest/usb_msc_test.h
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
/*-
* Copyright (c) 2010 Hans Petter Selasky. All rights reserved.
*
diff --git a/tools/tools/usbtest/usbtest.c b/tools/tools/usbtest/usbtest.c
index 725b9ead9718..adb46ef44b34 100644
--- a/tools/tools/usbtest/usbtest.c
+++ b/tools/tools/usbtest/usbtest.c
@@ -1,6 +1,5 @@
-/* $FreeBSD$ */
/*-
- * Copyright (c) 2010 Hans Petter Selasky. All rights reserved.
+ * Copyright (c) 2010-2022 Hans Petter Selasky
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -688,8 +687,8 @@ show_host_select(uint8_t level)
int error;
uint32_t duration = 60;
- uint16_t dev_vid = 0;
- uint16_t dev_pid = 0;
+ struct uaddr uaddr = {};
+
uint8_t retval;
while (1) {
@@ -702,7 +701,7 @@ show_host_select(uint8_t level)
"to %d (error=%d)\n", force_fs, errno);
}
retval = usb_ts_show_menu(level, "Select Host Mode Test (via LibUSB)",
- " 1) Select USB device (VID=0x%04x, PID=0x%04x)\n"
+ " 1) Select USB device (VID=0x%04x, PID=0x%04x, ugen%u.%u)\n"
" 2) Manually enter USB vendor and product ID\n"
" 3) Force FULL speed operation: <%s>\n"
" 4) Mass Storage (UMASS)\n"
@@ -717,7 +716,7 @@ show_host_select(uint8_t level)
"17) Start Invalid Control Request Test\n"
"30) Duration: <%d> seconds\n"
"x) Return to previous menu\n",
- dev_vid, dev_pid,
+ uaddr.vid, uaddr.pid, uaddr.bus, uaddr.addr,
force_fs ? "YES" : "NO",
(int)duration);
@@ -725,44 +724,47 @@ show_host_select(uint8_t level)
case 0:
break;
case 1:
- show_host_device_selection(level + 1, &dev_vid, &dev_pid);
+ show_host_device_selection(level + 1, &uaddr);
break;
case 2:
- dev_vid = get_integer() & 0xFFFF;
- dev_pid = get_integer() & 0xFFFF;
+ /* only match VID and PID */
+ uaddr.vid = get_integer() & 0xFFFF;
+ uaddr.pid = get_integer() & 0xFFFF;
+ uaddr.bus = 0;
+ uaddr.addr = 0;
break;
case 3:
force_fs ^= 1;
break;
case 4:
- show_host_msc_test(level + 1, dev_vid, dev_pid, duration);
+ show_host_msc_test(level + 1, uaddr, duration);
break;
case 5:
- show_host_modem_test(level + 1, dev_vid, dev_pid, duration);
+ show_host_modem_test(level + 1, uaddr, duration);
break;
case 10:
- usb_get_string_desc_test(dev_vid, dev_pid);
+ usb_get_string_desc_test(uaddr);
break;
case 11:
- usb_port_reset_test(dev_vid, dev_pid, duration);
+ usb_port_reset_test(uaddr, duration);
break;
case 12:
- usb_set_config_test(dev_vid, dev_pid, duration);
+ usb_set_config_test(uaddr, duration);
break;
case 13:
- usb_get_descriptor_test(dev_vid, dev_pid, duration);
+ usb_get_descriptor_test(uaddr, duration);
break;
case 14:
- usb_suspend_resume_test(dev_vid, dev_pid, duration);
+ usb_suspend_resume_test(uaddr, duration);
break;
case 15:
- usb_set_and_clear_stall_test(dev_vid, dev_pid);
+ usb_set_and_clear_stall_test(uaddr);
break;
case 16:
- usb_set_alt_interface_test(dev_vid, dev_pid);
+ usb_set_alt_interface_test(uaddr);
break;
case 17:
- usb_control_ep_error_test(dev_vid, dev_pid);
+ usb_control_ep_error_test(uaddr);
break;
case 30:
duration = get_integer();
diff --git a/tools/tools/usbtest/usbtest.h b/tools/tools/usbtest/usbtest.h
index 3d6643cd58f7..efe484bc7d37 100644
--- a/tools/tools/usbtest/usbtest.h
+++ b/tools/tools/usbtest/usbtest.h
@@ -1,6 +1,5 @@
-/* $FreeBSD$ */
/*-
- * Copyright (c) 2010 Hans Petter Selasky. All rights reserved.
+ * Copyright (c) 2010-2022 Hans Petter Selasky
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -37,21 +36,28 @@ struct bps {
time_t time;
};
-extern void usb_get_string_desc_test(uint16_t, uint16_t);
-extern void usb_port_reset_test(uint16_t, uint16_t, uint32_t);
-extern void usb_set_config_test(uint16_t, uint16_t, uint32_t);
-extern void usb_get_descriptor_test(uint16_t, uint16_t, uint32_t);
-extern void usb_control_ep_error_test(uint16_t, uint16_t);
-extern void usb_set_and_clear_stall_test(uint16_t, uint16_t);
-extern void usb_set_alt_interface_test(uint16_t, uint16_t);
+struct uaddr {
+ uint16_t vid;
+ uint16_t pid;
+ uint8_t bus;
+ uint8_t addr;
+};
+
+extern void usb_get_string_desc_test(struct uaddr);
+extern void usb_port_reset_test(struct uaddr, uint32_t);
+extern void usb_set_config_test(struct uaddr, uint32_t);
+extern void usb_get_descriptor_test(struct uaddr, uint32_t);
+extern void usb_control_ep_error_test(struct uaddr);
+extern void usb_set_and_clear_stall_test(struct uaddr);
+extern void usb_set_alt_interface_test(struct uaddr);
-extern void usb_suspend_resume_test(uint16_t, uint16_t, uint32_t);
+extern void usb_suspend_resume_test(struct uaddr, uint32_t);
extern void do_bps(const char *, struct bps *, uint32_t len);
extern const char *indent[USB_TS_MAX_LEVELS];
-extern void show_host_msc_test(uint8_t, uint16_t, uint16_t, uint32_t);
-extern void show_host_modem_test(uint8_t, uint16_t, uint16_t, uint32_t);
-extern void show_host_device_selection(uint8_t, uint16_t *, uint16_t *);
-extern struct libusb20_device *find_usb_device(uint16_t, uint16_t);
+extern void show_host_msc_test(uint8_t, struct uaddr, uint32_t);
+extern void show_host_modem_test(uint8_t, struct uaddr, uint32_t);
+extern void show_host_device_selection(uint8_t, struct uaddr *);
+extern struct libusb20_device *find_usb_device(struct uaddr);
extern void find_usb_endpoints(struct libusb20_device *, uint8_t, uint8_t,
uint8_t, uint8_t, uint8_t *, uint8_t *, uint8_t *, uint8_t);
extern void get_string(char *, int);
diff --git a/tools/tools/vhba/Makefile b/tools/tools/vhba/Makefile
index 72191d7179c7..d3c57fef44b9 100644
--- a/tools/tools/vhba/Makefile
+++ b/tools/tools/vhba/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
#
# Copyright (c) 2010 by Panasas Inc
# All rights reserved.
diff --git a/tools/tools/vhba/README b/tools/tools/vhba/README
index ced0b5db46f7..14de926ed58b 100644
--- a/tools/tools/vhba/README
+++ b/tools/tools/vhba/README
@@ -1,4 +1,3 @@
-$FreeBSD$
Tue Jun 8 15:02:02 PDT 2010
This packages is a testbed for a number of purposes and consists
diff --git a/tools/tools/vhba/faulty/Makefile b/tools/tools/vhba/faulty/Makefile
index bbbb158b4102..e1fb9abf5d62 100644
--- a/tools/tools/vhba/faulty/Makefile
+++ b/tools/tools/vhba/faulty/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
KMOD= vfaulty
SRCS= vhba_faulty.c vhba.c
CFLAGS += -I${.CURDIR}/.. -DVHBA_MOD=\"vfaulty\"
diff --git a/tools/tools/vhba/faulty/vhba_faulty.c b/tools/tools/vhba/faulty/vhba_faulty.c
index 49cbb4b1065e..28d0dffecc8d 100644
--- a/tools/tools/vhba/faulty/vhba_faulty.c
+++ b/tools/tools/vhba/faulty/vhba_faulty.c
@@ -23,7 +23,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-/* $FreeBSD$ */
/*
* "Faulty" Device. Victimize random commands with a Selection Timeout.
*/
diff --git a/tools/tools/vhba/lots/Makefile b/tools/tools/vhba/lots/Makefile
index 37c05c234c37..f4a94f4eeee3 100644
--- a/tools/tools/vhba/lots/Makefile
+++ b/tools/tools/vhba/lots/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
KMOD= vlots
SRCS= vhba_lots.c vhba.c
CFLAGS += -I${.CURDIR}/.. -DVHBA_MOD=\"vlots\"
diff --git a/tools/tools/vhba/lots/vhba_lots.c b/tools/tools/vhba/lots/vhba_lots.c
index 07126663c42d..24d336c75d63 100644
--- a/tools/tools/vhba/lots/vhba_lots.c
+++ b/tools/tools/vhba/lots/vhba_lots.c
@@ -23,7 +23,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-/* $FreeBSD$ */
/*
* VHBA device that just reate boatloads of devices.
*/
diff --git a/tools/tools/vhba/medium/Makefile b/tools/tools/vhba/medium/Makefile
index 091e1399aa3a..787e9560d300 100644
--- a/tools/tools/vhba/medium/Makefile
+++ b/tools/tools/vhba/medium/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
KMOD= vmedium
SRCS= vhba_medium.c vhba.c
CFLAGS += -I${.CURDIR}/.. -DVHBA_MOD=\"vmedium\"
diff --git a/tools/tools/vhba/medium/vhba_medium.c b/tools/tools/vhba/medium/vhba_medium.c
index 2fc9f926af78..2a1f61dc6861 100644
--- a/tools/tools/vhba/medium/vhba_medium.c
+++ b/tools/tools/vhba/medium/vhba_medium.c
@@ -23,7 +23,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-/* $FreeBSD$ */
/*
* A VHBA device that has a medium number of device.
*/
diff --git a/tools/tools/vhba/mptest/Makefile b/tools/tools/vhba/mptest/Makefile
index 8e80e45e58f6..fe18f246c616 100644
--- a/tools/tools/vhba/mptest/Makefile
+++ b/tools/tools/vhba/mptest/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
#
# Copyright (c) 2010 by Panasas Inc
# All rights reserved.
diff --git a/tools/tools/vhba/mptest/vhba_mptest.c b/tools/tools/vhba/mptest/vhba_mptest.c
index 9a2ec850e509..44e59c4d2008 100644
--- a/tools/tools/vhba/mptest/vhba_mptest.c
+++ b/tools/tools/vhba/mptest/vhba_mptest.c
@@ -23,7 +23,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-/* $FreeBSD$ */
/*
* "Faulty" Multipath Device. Creates to devices to be set up as multipath,
* makes one or both of them non existent (or re existent) on demand.
diff --git a/tools/tools/vhba/opt_cam.h b/tools/tools/vhba/opt_cam.h
index da23dbe43a4f..e69de29bb2d1 100644
--- a/tools/tools/vhba/opt_cam.h
+++ b/tools/tools/vhba/opt_cam.h
@@ -1 +0,0 @@
-/* $FreeBSD$ */
diff --git a/tools/tools/vhba/rptluns/Makefile b/tools/tools/vhba/rptluns/Makefile
index a7d81fbc07d8..4ea5821f193e 100644
--- a/tools/tools/vhba/rptluns/Makefile
+++ b/tools/tools/vhba/rptluns/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
KMOD= vrptluns
SRCS= vhba_rptluns.c vhba.c
CFLAGS += -I${.CURDIR}/.. -DVHBA_MOD=\"vrptluns\"
diff --git a/tools/tools/vhba/rptluns/vhba_rptluns.c b/tools/tools/vhba/rptluns/vhba_rptluns.c
index 28424c4facd3..8af132d7087b 100644
--- a/tools/tools/vhba/rptluns/vhba_rptluns.c
+++ b/tools/tools/vhba/rptluns/vhba_rptluns.c
@@ -23,7 +23,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-/* $FreeBSD$ */
/*
* A VHBA device to test REPORT LUN functionality.
*/
diff --git a/tools/tools/vhba/simple/Makefile b/tools/tools/vhba/simple/Makefile
index 5aa9950a6e60..b6f20f7f7b37 100644
--- a/tools/tools/vhba/simple/Makefile
+++ b/tools/tools/vhba/simple/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
KMOD= vsimple
SRCS= vhba_simple.c vhba.c
CFLAGS += -I${.CURDIR}/.. -DVHBA_MOD=\"vsimple\"
diff --git a/tools/tools/vhba/simple/vhba_simple.c b/tools/tools/vhba/simple/vhba_simple.c
index bc40bea77f8d..0a87dc811341 100644
--- a/tools/tools/vhba/simple/vhba_simple.c
+++ b/tools/tools/vhba/simple/vhba_simple.c
@@ -23,7 +23,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-/* $FreeBSD$ */
/*
* "Simple" VHBA device
*/
diff --git a/tools/tools/vhba/vhba.c b/tools/tools/vhba/vhba.c
index 3fdfe355d9c7..fcb4ffc002b1 100644
--- a/tools/tools/vhba/vhba.c
+++ b/tools/tools/vhba/vhba.c
@@ -23,7 +23,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-/* $FreeBSD$ */
/*
* Virtual HBA infrastructure, to be used for testing as well as other cute hacks.
*/
diff --git a/tools/tools/vhba/vhba.h b/tools/tools/vhba/vhba.h
index c09bd000de3e..d6b32b10b56d 100644
--- a/tools/tools/vhba/vhba.h
+++ b/tools/tools/vhba/vhba.h
@@ -23,11 +23,10 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-/* $FreeBSD$ */
/*
* Virtual HBA defines
*/
-#include <sys/cdefs.h>
+
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/endian.h>
diff --git a/tools/tools/vimage/Makefile b/tools/tools/vimage/Makefile
index 262e3c68209b..a52562abfd60 100644
--- a/tools/tools/vimage/Makefile
+++ b/tools/tools/vimage/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= vimage
LIBADD= jail
diff --git a/tools/tools/vimage/vimage.8 b/tools/tools/vimage/vimage.8
index accb9d6400bb..60c70de2d90d 100644
--- a/tools/tools/vimage/vimage.8
+++ b/tools/tools/vimage/vimage.8
@@ -25,8 +25,6 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD$
-.\"
.Dd August 25, 2009
.Dt VIMAGE 8
.Os
@@ -70,7 +68,7 @@ Every process, socket and network interface present in the system is always
attached to one, and only one, virtual network stack instance (vnet).
During system bootup sequence a default vnet is created to which all the configured
interfaces and user processes are initially attached.
-Assuming that enough system resources are are available, a user with sufficient
+Assuming that enough system resources are available, a user with sufficient
privileges can create and manage a hierarchy of subordinated virtual images.
The
.Nm
diff --git a/tools/tools/vimage/vimage.c b/tools/tools/vimage/vimage.c
index e6655999c50b..cc1c522dd5a5 100644
--- a/tools/tools/vimage/vimage.c
+++ b/tools/tools/vimage/vimage.c
@@ -23,8 +23,6 @@
* 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.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
diff --git a/tools/tools/vop_table/vop_table.pl b/tools/tools/vop_table/vop_table.pl
index 5ac979d7e1ed..464836cf59cd 100644
--- a/tools/tools/vop_table/vop_table.pl
+++ b/tools/tools/vop_table/vop_table.pl
@@ -7,7 +7,6 @@
# (c) 2004 Andrew R. Reiter <arr@watson.org>
# All Rights Reserved.
#
-# $FreeBSD$
# XXX todo: Make $src_dir modificationable
diff --git a/tools/tools/vop_table/vop_table.tcl b/tools/tools/vop_table/vop_table.tcl
index 1b76d18bae0d..f8a3ed7b27a1 100644
--- a/tools/tools/vop_table/vop_table.tcl
+++ b/tools/tools/vop_table/vop_table.tcl
@@ -1,5 +1,4 @@
#!/usr/local/bin/tclsh8.3
-# $FreeBSD$
set fo [open _.html w]
diff --git a/tools/tools/vt/fontcvt/terminus.sh b/tools/tools/vt/fontcvt/terminus.sh
index d186e3e30a4b..d05865903122 100644
--- a/tools/tools/vt/fontcvt/terminus.sh
+++ b/tools/tools/vt/fontcvt/terminus.sh
@@ -1,5 +1,4 @@
#!/bin/sh
-# $FreeBSD$
for i in 6:12 8:14 8:16 10:18 10:20 11:22 12:24 14:28 16:32
do
diff --git a/tools/tools/vt/keymaps/KBDFILES.map b/tools/tools/vt/keymaps/KBDFILES.map
index 7964570b9a85..1e775f1878a5 100644
--- a/tools/tools/vt/keymaps/KBDFILES.map
+++ b/tools/tools/vt/keymaps/KBDFILES.map
@@ -1,4 +1,3 @@
-# $FreeBSD$
#
# The Files are converted by "convert-keymaps.pl" from the given encoding to UCS.
#
diff --git a/tools/tools/vt/keymaps/LANG.map b/tools/tools/vt/keymaps/LANG.map
index 29ecbe8da5a7..643b373f6820 100644
--- a/tools/tools/vt/keymaps/LANG.map
+++ b/tools/tools/vt/keymaps/LANG.map
@@ -1,4 +1,3 @@
-# $FreeBSD$
bg bg ISO8859-5
cs cs ISO8859-2
da da ISO8859-15
diff --git a/tools/tools/vt/keymaps/convert-INDEX.pl b/tools/tools/vt/keymaps/convert-INDEX.pl
index ec88fc338620..d987d0b51128 100755
--- a/tools/tools/vt/keymaps/convert-INDEX.pl
+++ b/tools/tools/vt/keymaps/convert-INDEX.pl
@@ -1,5 +1,4 @@
#!/usr/local/bin/perl
-# $FreeBSD$
use Text::Iconv;
use Encode;
diff --git a/tools/tools/vt/keymaps/convert-keymap.pl b/tools/tools/vt/keymaps/convert-keymap.pl
index 4783fe66bca7..3bffda028dc4 100755
--- a/tools/tools/vt/keymaps/convert-keymap.pl
+++ b/tools/tools/vt/keymaps/convert-keymap.pl
@@ -1,5 +1,4 @@
#!/usr/bin/perl
-# $FreeBSD$
use Text::Iconv;
use Encode;
diff --git a/tools/tools/vt/keymaps/convert-keymaps.pl b/tools/tools/vt/keymaps/convert-keymaps.pl
index ea8fbc2b09c3..3b96a04e599b 100755
--- a/tools/tools/vt/keymaps/convert-keymaps.pl
+++ b/tools/tools/vt/keymaps/convert-keymaps.pl
@@ -1,5 +1,4 @@
#!/usr/local/bin/perl
-# $FreeBSD$
use Text::Iconv;
use Encode;
diff --git a/tools/tools/vt/mkkfont/Makefile b/tools/tools/vt/mkkfont/Makefile
index 8e8c2fb33643..3044eff66c36 100644
--- a/tools/tools/vt/mkkfont/Makefile
+++ b/tools/tools/vt/mkkfont/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
PROG= mkkfont
MAN1=
diff --git a/tools/tools/vt/mkkfont/mkkfont.c b/tools/tools/vt/mkkfont/mkkfont.c
index ebfead14e342..3f92f926c029 100644
--- a/tools/tools/vt/mkkfont/mkkfont.c
+++ b/tools/tools/vt/mkkfont/mkkfont.c
@@ -28,8 +28,6 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#include <sys/endian.h>
#include <sys/param.h>
#include <sys/font.h>
diff --git a/tools/tools/whereintheworld/Makefile b/tools/tools/whereintheworld/Makefile
index 876a318c3f44..374a2196df11 100644
--- a/tools/tools/whereintheworld/Makefile
+++ b/tools/tools/whereintheworld/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SCRIPTS= whereintheworld.pl
diff --git a/tools/tools/whereintheworld/whereintheworld.pl b/tools/tools/whereintheworld/whereintheworld.pl
index 6e358cfa6734..368c74aaa6fe 100644
--- a/tools/tools/whereintheworld/whereintheworld.pl
+++ b/tools/tools/whereintheworld/whereintheworld.pl
@@ -7,7 +7,6 @@
# Dag-Erling Smørgrav <des@freebsd.org> 09 January 2003
#
# $Id: whereintheworld,v 1.3 2000/01/28 00:42:32 fenner Exp $
-# $FreeBSD$
#
use strict;
diff --git a/tools/tools/wtap/Makefile b/tools/tools/wtap/Makefile
index 79531bf2f931..e34cb2e325a1 100644
--- a/tools/tools/wtap/Makefile
+++ b/tools/tools/wtap/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
SUBDIR= wtap vis_map
diff --git a/tools/tools/wtap/vis_map/Makefile b/tools/tools/wtap/vis_map/Makefile
index 1e9884f71c68..41c1c643754b 100644
--- a/tools/tools/wtap/vis_map/Makefile
+++ b/tools/tools/wtap/vis_map/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
BINDIR?= /usr/local/bin/
PROG= vis_map
diff --git a/tools/tools/wtap/vis_map/vis_map.c b/tools/tools/wtap/vis_map/vis_map.c
index afba7d185eef..fa5c71e0af2f 100644
--- a/tools/tools/wtap/vis_map/vis_map.c
+++ b/tools/tools/wtap/vis_map/vis_map.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include <stdio.h>
#include <stdlib.h>
diff --git a/tools/tools/wtap/wtap/Makefile b/tools/tools/wtap/wtap/Makefile
index 85b584b871bf..9cc83c77d04d 100644
--- a/tools/tools/wtap/wtap/Makefile
+++ b/tools/tools/wtap/wtap/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
BINDIR?= /usr/local/bin
PROG= wtap
diff --git a/tools/tools/wtap/wtap/wtap.c b/tools/tools/wtap/wtap/wtap.c
index 0bc9233a7517..0c7a3292554c 100644
--- a/tools/tools/wtap/wtap/wtap.c
+++ b/tools/tools/wtap/wtap/wtap.c
@@ -25,8 +25,6 @@
* 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 DAMAGES.
- *
- * $FreeBSD$
*/
#include <stdio.h>
#include <stdlib.h>
diff --git a/tools/tools/zfsboottest/Makefile b/tools/tools/zfsboottest/Makefile
index acb510de70a9..cc8f0ab78606 100644
--- a/tools/tools/zfsboottest/Makefile
+++ b/tools/tools/zfsboottest/Makefile
@@ -1,4 +1,3 @@
-# $FreeBSD$
.PATH: ${SRCTOP}/stand/zfs ${SRCTOP}/sys/cddl/boot/zfs
diff --git a/tools/tools/zfsboottest/zfsboottest.c b/tools/tools/zfsboottest/zfsboottest.c
index 88f946e9d3fe..5ee239789b57 100644
--- a/tools/tools/zfsboottest/zfsboottest.c
+++ b/tools/tools/zfsboottest/zfsboottest.c
@@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-/* $FreeBSD$ */
#include <sys/param.h>
#include <sys/disk.h>
diff --git a/tools/tools/zfsboottest/zfsboottest.sh b/tools/tools/zfsboottest/zfsboottest.sh
index 1aea755e185f..a86c55794925 100755
--- a/tools/tools/zfsboottest/zfsboottest.sh
+++ b/tools/tools/zfsboottest/zfsboottest.sh
@@ -24,7 +24,6 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD$
if [ $# -ne 1 ]; then
echo "usage: zfsboottest.sh <pool>" >&2
diff --git a/tools/uma/smrstress/Makefile b/tools/uma/smrstress/Makefile
index 800e7ef4bfbe..41b6a8eb7ba0 100644
--- a/tools/uma/smrstress/Makefile
+++ b/tools/uma/smrstress/Makefile
@@ -1,5 +1,4 @@
#
-# $FreeBSD$
#
KMOD= smrstress
diff --git a/tools/uma/smrstress/smrstress.c b/tools/uma/smrstress/smrstress.c
index 7e7ee4ea065c..2d6566c6e6dc 100644
--- a/tools/uma/smrstress/smrstress.c
+++ b/tools/uma/smrstress/smrstress.c
@@ -1,5 +1,5 @@
/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ * SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (c) 2020 Jeffrey Roberson <jeff@FreeBSD.org>
*
@@ -24,8 +24,6 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD$
- *
*/
#include <sys/param.h>
#include <sys/systm.h>
@@ -123,6 +121,7 @@ smrs_thread(void *arg)
else
smrs_read();
atomic_add_int(&smrs_completed, 1);
+ kthread_exit();
}
static void